From 68b975af7ef47a9d28f21f4c93431f35777a5109 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 23 Dec 2014 15:54:51 +0100 Subject: [PATCH] Add generated files. --- bfd/doc/aoutx.texi | 213 + bfd/doc/archive.texi | 105 + bfd/doc/archures.texi | 720 + bfd/doc/bfd.info | 13716 +++++++++++++++ bfd/doc/bfdio.texi | 95 + bfd/doc/bfdt.texi | 896 + bfd/doc/bfdver.texi | 4 + bfd/doc/bfdwin.texi | 2 + bfd/doc/cache.texi | 65 + bfd/doc/coffcode.texi | 693 + bfd/doc/core.texi | 70 + bfd/doc/elf.texi | 9 + bfd/doc/elfcode.texi | 0 bfd/doc/format.texi | 112 + bfd/doc/hash.texi | 247 + bfd/doc/init.texi | 16 + bfd/doc/libbfd.texi | 179 + bfd/doc/linker.texi | 420 + bfd/doc/mmo.texi | 369 + bfd/doc/opncls.texi | 456 + bfd/doc/reloc.texi | 4104 +++++ bfd/doc/section.texi | 1062 ++ bfd/doc/syms.texi | 480 + bfd/doc/targets.texi | 614 + bfd/po/da.gmo | Bin 0 -> 134131 bytes bfd/po/es.gmo | Bin 0 -> 150305 bytes bfd/po/fi.gmo | Bin 0 -> 162650 bytes bfd/po/fr.gmo | Bin 0 -> 151850 bytes bfd/po/id.gmo | Bin 0 -> 105891 bytes bfd/po/ja.gmo | Bin 0 -> 134623 bytes bfd/po/ro.gmo | Bin 0 -> 69038 bytes bfd/po/ru.gmo | Bin 0 -> 186835 bytes bfd/po/rw.gmo | Bin 0 -> 429 bytes bfd/po/sv.gmo | Bin 0 -> 67266 bytes bfd/po/tr.gmo | Bin 0 -> 69529 bytes bfd/po/uk.gmo | Bin 0 -> 190915 bytes bfd/po/vi.gmo | Bin 0 -> 159371 bytes bfd/po/zh_CN.gmo | Bin 0 -> 28121 bytes binutils/arlex.c | 2035 +++ binutils/arparse.c | 1769 ++ binutils/arparse.h | 102 + binutils/deflex.c | 2064 +++ binutils/defparse.c | 2141 +++ binutils/defparse.h | 124 + binutils/doc/addr2line.1 | 315 + binutils/doc/ar.1 | 471 + binutils/doc/binutils.info | 4957 ++++++ binutils/doc/cxxfilt.man | 345 + binutils/doc/dlltool.1 | 538 + binutils/doc/elfedit.1 | 242 + binutils/doc/nlmconv.1 | 251 + binutils/doc/nm.1 | 539 + binutils/doc/objcopy.1 | 1033 ++ binutils/doc/objdump.1 | 859 + binutils/doc/ranlib.1 | 227 + binutils/doc/readelf.1 | 457 + binutils/doc/size.1 | 275 + binutils/doc/strings.1 | 304 + binutils/doc/strip.1 | 436 + binutils/doc/windmc.1 | 360 + binutils/doc/windres.1 | 368 + binutils/mcparse.c | 2155 +++ binutils/mcparse.h | 103 + binutils/nlmheader.c | 2697 +++ binutils/nlmheader.h | 135 + binutils/po/bg.gmo | Bin 0 -> 113540 bytes binutils/po/da.gmo | Bin 0 -> 69960 bytes binutils/po/es.gmo | Bin 0 -> 199631 bytes binutils/po/fi.gmo | Bin 0 -> 211009 bytes binutils/po/fr.gmo | Bin 0 -> 217397 bytes binutils/po/hr.gmo | Bin 0 -> 21549 bytes binutils/po/id.gmo | Bin 0 -> 153153 bytes binutils/po/it.gmo | Bin 0 -> 192727 bytes binutils/po/ja.gmo | Bin 0 -> 205175 bytes binutils/po/ro.gmo | Bin 0 -> 20265 bytes binutils/po/ru.gmo | Bin 0 -> 235992 bytes binutils/po/rw.gmo | Bin 0 -> 615 bytes binutils/po/sk.gmo | Bin 0 -> 149635 bytes binutils/po/sr.gmo | Bin 0 -> 258169 bytes binutils/po/sv.gmo | Bin 0 -> 204326 bytes binutils/po/tr.gmo | Bin 0 -> 129842 bytes binutils/po/uk.gmo | Bin 0 -> 237105 bytes binutils/po/vi.gmo | Bin 0 -> 208072 bytes binutils/po/zh_CN.gmo | Bin 0 -> 75892 bytes binutils/po/zh_TW.gmo | Bin 0 -> 121475 bytes binutils/rcparse.c | 4662 +++++ binutils/rcparse.h | 298 + binutils/sysinfo.c | 1962 +++ binutils/sysinfo.h | 77 + binutils/syslex.c | 1906 ++ etc/config.log | 153 + gas/bfin-lex.c | 3559 ++++ gas/bfin-parse.c | 7953 +++++++++ gas/bfin-parse.h | 414 + gas/doc/as.1 | 1844 ++ gas/doc/as.info | 26762 +++++++++++++++++++++++++++++ gas/doc/asconfig.texi | 106 + gas/itbl-lex.c | 1924 +++ gas/itbl-parse.c | 2006 +++ gas/itbl-parse.h | 87 + gas/m68k-parse.c | 2863 +++ gas/po/es.gmo | Bin 0 -> 438926 bytes gas/po/fi.gmo | Bin 0 -> 442741 bytes gas/po/fr.gmo | Bin 0 -> 442390 bytes gas/po/id.gmo | Bin 0 -> 389863 bytes gas/po/ja.gmo | Bin 0 -> 23726 bytes gas/po/ru.gmo | Bin 0 -> 23024 bytes gas/po/rw.gmo | Bin 0 -> 396 bytes gas/po/tr.gmo | Bin 0 -> 220920 bytes gas/po/uk.gmo | Bin 0 -> 574250 bytes gas/rl78-parse.c | 4716 +++++ gas/rl78-parse.h | 299 + gas/rx-parse.c | 4256 +++++ gas/rx-parse.h | 289 + gdb/gcore | 103 + gdb/testsuite/gdb.guile/Makefile | 17 + gdb/testsuite/gdb.perf/Makefile | 15 + gold/po/es.gmo | Bin 0 -> 51373 bytes gold/po/fi.gmo | Bin 0 -> 50651 bytes gold/po/id.gmo | Bin 0 -> 38664 bytes gold/po/it.gmo | Bin 0 -> 50879 bytes gold/po/vi.gmo | Bin 0 -> 55950 bytes gprof/bsd_callg_bl.c | 125 + gprof/config.texi | 1 + gprof/flat_bl.c | 45 + gprof/fsf_callg_bl.c | 100 + gprof/gprof.1 | 772 + gprof/gprof.info | 2478 +++ gprof/po/bg.gmo | Bin 0 -> 12825 bytes gprof/po/da.gmo | Bin 0 -> 10329 bytes gprof/po/de.gmo | Bin 0 -> 10545 bytes gprof/po/eo.gmo | Bin 0 -> 10469 bytes gprof/po/es.gmo | Bin 0 -> 10865 bytes gprof/po/fi.gmo | Bin 0 -> 11200 bytes gprof/po/fr.gmo | Bin 0 -> 11206 bytes gprof/po/ga.gmo | Bin 0 -> 10440 bytes gprof/po/hu.gmo | Bin 0 -> 10991 bytes gprof/po/id.gmo | Bin 0 -> 10448 bytes gprof/po/it.gmo | Bin 0 -> 10691 bytes gprof/po/ja.gmo | Bin 0 -> 3004 bytes gprof/po/ms.gmo | Bin 0 -> 10360 bytes gprof/po/nl.gmo | Bin 0 -> 10712 bytes gprof/po/pt_BR.gmo | Bin 0 -> 9984 bytes gprof/po/ro.gmo | Bin 0 -> 9898 bytes gprof/po/ru.gmo | Bin 0 -> 12808 bytes gprof/po/rw.gmo | Bin 0 -> 486 bytes gprof/po/sr.gmo | Bin 0 -> 12971 bytes gprof/po/sv.gmo | Bin 0 -> 10367 bytes gprof/po/tr.gmo | Bin 0 -> 11331 bytes gprof/po/uk.gmo | Bin 0 -> 13049 bytes gprof/po/vi.gmo | Bin 0 -> 12463 bytes ld/configdoc.texi | 33 + ld/deffilep.c | 3424 ++++ ld/deffilep.h | 124 + ld/ld.1 | 2545 +++ ld/ld.info | 8299 +++++++++ ld/ldgram.c | 4728 +++++ ld/ldgram.h | 347 + ld/ldlex.c | 4408 +++++ ld/po/bg.gmo | Bin 0 -> 74041 bytes ld/po/da.gmo | Bin 0 -> 34929 bytes ld/po/es.gmo | Bin 0 -> 58358 bytes ld/po/fi.gmo | Bin 0 -> 57750 bytes ld/po/fr.gmo | Bin 0 -> 59912 bytes ld/po/ga.gmo | Bin 0 -> 48922 bytes ld/po/id.gmo | Bin 0 -> 53562 bytes ld/po/it.gmo | Bin 0 -> 57987 bytes ld/po/ja.gmo | Bin 0 -> 64029 bytes ld/po/sv.gmo | Bin 0 -> 43131 bytes ld/po/tr.gmo | Bin 0 -> 41339 bytes ld/po/uk.gmo | Bin 0 -> 75243 bytes ld/po/vi.gmo | Bin 0 -> 61550 bytes ld/po/zh_CN.gmo | Bin 0 -> 24785 bytes ld/po/zh_TW.gmo | Bin 0 -> 44839 bytes opcodes/po/da.gmo | Bin 0 -> 17528 bytes opcodes/po/de.gmo | Bin 0 -> 31404 bytes opcodes/po/es.gmo | Bin 0 -> 27203 bytes opcodes/po/fi.gmo | Bin 0 -> 31197 bytes opcodes/po/fr.gmo | Bin 0 -> 25313 bytes opcodes/po/ga.gmo | Bin 0 -> 24028 bytes opcodes/po/id.gmo | Bin 0 -> 25350 bytes opcodes/po/it.gmo | Bin 0 -> 26326 bytes opcodes/po/nl.gmo | Bin 0 -> 25236 bytes opcodes/po/pt_BR.gmo | Bin 0 -> 8467 bytes opcodes/po/ro.gmo | Bin 0 -> 15986 bytes opcodes/po/sv.gmo | Bin 0 -> 16004 bytes opcodes/po/tr.gmo | Bin 0 -> 16094 bytes opcodes/po/uk.gmo | Bin 0 -> 35303 bytes opcodes/po/vi.gmo | Bin 0 -> 28874 bytes opcodes/po/zh_CN.gmo | Bin 0 -> 9039 bytes 190 files changed, 143649 insertions(+) create mode 100644 bfd/doc/aoutx.texi create mode 100644 bfd/doc/archive.texi create mode 100644 bfd/doc/archures.texi create mode 100644 bfd/doc/bfd.info create mode 100644 bfd/doc/bfdio.texi create mode 100644 bfd/doc/bfdt.texi create mode 100644 bfd/doc/bfdver.texi create mode 100644 bfd/doc/bfdwin.texi create mode 100644 bfd/doc/cache.texi create mode 100644 bfd/doc/coffcode.texi create mode 100644 bfd/doc/core.texi create mode 100644 bfd/doc/elf.texi create mode 100644 bfd/doc/elfcode.texi create mode 100644 bfd/doc/format.texi create mode 100644 bfd/doc/hash.texi create mode 100644 bfd/doc/init.texi create mode 100644 bfd/doc/libbfd.texi create mode 100644 bfd/doc/linker.texi create mode 100644 bfd/doc/mmo.texi create mode 100644 bfd/doc/opncls.texi create mode 100644 bfd/doc/reloc.texi create mode 100644 bfd/doc/section.texi create mode 100644 bfd/doc/syms.texi create mode 100644 bfd/doc/targets.texi create mode 100644 bfd/po/da.gmo create mode 100644 bfd/po/es.gmo create mode 100644 bfd/po/fi.gmo create mode 100644 bfd/po/fr.gmo create mode 100644 bfd/po/id.gmo create mode 100644 bfd/po/ja.gmo create mode 100644 bfd/po/ro.gmo create mode 100644 bfd/po/ru.gmo create mode 100644 bfd/po/rw.gmo create mode 100644 bfd/po/sv.gmo create mode 100644 bfd/po/tr.gmo create mode 100644 bfd/po/uk.gmo create mode 100644 bfd/po/vi.gmo create mode 100644 bfd/po/zh_CN.gmo create mode 100644 binutils/arlex.c create mode 100644 binutils/arparse.c create mode 100644 binutils/arparse.h create mode 100644 binutils/deflex.c create mode 100644 binutils/defparse.c create mode 100644 binutils/defparse.h create mode 100644 binutils/doc/addr2line.1 create mode 100644 binutils/doc/ar.1 create mode 100644 binutils/doc/binutils.info create mode 100644 binutils/doc/cxxfilt.man create mode 100644 binutils/doc/dlltool.1 create mode 100644 binutils/doc/elfedit.1 create mode 100644 binutils/doc/nlmconv.1 create mode 100644 binutils/doc/nm.1 create mode 100644 binutils/doc/objcopy.1 create mode 100644 binutils/doc/objdump.1 create mode 100644 binutils/doc/ranlib.1 create mode 100644 binutils/doc/readelf.1 create mode 100644 binutils/doc/size.1 create mode 100644 binutils/doc/strings.1 create mode 100644 binutils/doc/strip.1 create mode 100644 binutils/doc/windmc.1 create mode 100644 binutils/doc/windres.1 create mode 100644 binutils/mcparse.c create mode 100644 binutils/mcparse.h create mode 100644 binutils/nlmheader.c create mode 100644 binutils/nlmheader.h create mode 100644 binutils/po/bg.gmo create mode 100644 binutils/po/da.gmo create mode 100644 binutils/po/es.gmo create mode 100644 binutils/po/fi.gmo create mode 100644 binutils/po/fr.gmo create mode 100644 binutils/po/hr.gmo create mode 100644 binutils/po/id.gmo create mode 100644 binutils/po/it.gmo create mode 100644 binutils/po/ja.gmo create mode 100644 binutils/po/ro.gmo create mode 100644 binutils/po/ru.gmo create mode 100644 binutils/po/rw.gmo create mode 100644 binutils/po/sk.gmo create mode 100644 binutils/po/sr.gmo create mode 100644 binutils/po/sv.gmo create mode 100644 binutils/po/tr.gmo create mode 100644 binutils/po/uk.gmo create mode 100644 binutils/po/vi.gmo create mode 100644 binutils/po/zh_CN.gmo create mode 100644 binutils/po/zh_TW.gmo create mode 100644 binutils/rcparse.c create mode 100644 binutils/rcparse.h create mode 100644 binutils/sysinfo.c create mode 100644 binutils/sysinfo.h create mode 100644 binutils/syslex.c create mode 100644 etc/config.log create mode 100644 gas/bfin-lex.c create mode 100644 gas/bfin-parse.c create mode 100644 gas/bfin-parse.h create mode 100644 gas/doc/as.1 create mode 100644 gas/doc/as.info create mode 100644 gas/doc/asconfig.texi create mode 100644 gas/itbl-lex.c create mode 100644 gas/itbl-parse.c create mode 100644 gas/itbl-parse.h create mode 100644 gas/m68k-parse.c create mode 100644 gas/po/es.gmo create mode 100644 gas/po/fi.gmo create mode 100644 gas/po/fr.gmo create mode 100644 gas/po/id.gmo create mode 100644 gas/po/ja.gmo create mode 100644 gas/po/ru.gmo create mode 100644 gas/po/rw.gmo create mode 100644 gas/po/tr.gmo create mode 100644 gas/po/uk.gmo create mode 100644 gas/rl78-parse.c create mode 100644 gas/rl78-parse.h create mode 100644 gas/rx-parse.c create mode 100644 gas/rx-parse.h create mode 100755 gdb/gcore create mode 100644 gdb/testsuite/gdb.guile/Makefile create mode 100644 gdb/testsuite/gdb.perf/Makefile create mode 100644 gold/po/es.gmo create mode 100644 gold/po/fi.gmo create mode 100644 gold/po/id.gmo create mode 100644 gold/po/it.gmo create mode 100644 gold/po/vi.gmo create mode 100644 gprof/bsd_callg_bl.c create mode 100644 gprof/config.texi create mode 100644 gprof/flat_bl.c create mode 100644 gprof/fsf_callg_bl.c create mode 100644 gprof/gprof.1 create mode 100644 gprof/gprof.info create mode 100644 gprof/po/bg.gmo create mode 100644 gprof/po/da.gmo create mode 100644 gprof/po/de.gmo create mode 100644 gprof/po/eo.gmo create mode 100644 gprof/po/es.gmo create mode 100644 gprof/po/fi.gmo create mode 100644 gprof/po/fr.gmo create mode 100644 gprof/po/ga.gmo create mode 100644 gprof/po/hu.gmo create mode 100644 gprof/po/id.gmo create mode 100644 gprof/po/it.gmo create mode 100644 gprof/po/ja.gmo create mode 100644 gprof/po/ms.gmo create mode 100644 gprof/po/nl.gmo create mode 100644 gprof/po/pt_BR.gmo create mode 100644 gprof/po/ro.gmo create mode 100644 gprof/po/ru.gmo create mode 100644 gprof/po/rw.gmo create mode 100644 gprof/po/sr.gmo create mode 100644 gprof/po/sv.gmo create mode 100644 gprof/po/tr.gmo create mode 100644 gprof/po/uk.gmo create mode 100644 gprof/po/vi.gmo create mode 100644 ld/configdoc.texi create mode 100644 ld/deffilep.c create mode 100644 ld/deffilep.h create mode 100644 ld/ld.1 create mode 100644 ld/ld.info create mode 100644 ld/ldgram.c create mode 100644 ld/ldgram.h create mode 100644 ld/ldlex.c create mode 100644 ld/po/bg.gmo create mode 100644 ld/po/da.gmo create mode 100644 ld/po/es.gmo create mode 100644 ld/po/fi.gmo create mode 100644 ld/po/fr.gmo create mode 100644 ld/po/ga.gmo create mode 100644 ld/po/id.gmo create mode 100644 ld/po/it.gmo create mode 100644 ld/po/ja.gmo create mode 100644 ld/po/sv.gmo create mode 100644 ld/po/tr.gmo create mode 100644 ld/po/uk.gmo create mode 100644 ld/po/vi.gmo create mode 100644 ld/po/zh_CN.gmo create mode 100644 ld/po/zh_TW.gmo create mode 100644 opcodes/po/da.gmo create mode 100644 opcodes/po/de.gmo create mode 100644 opcodes/po/es.gmo create mode 100644 opcodes/po/fi.gmo create mode 100644 opcodes/po/fr.gmo create mode 100644 opcodes/po/ga.gmo create mode 100644 opcodes/po/id.gmo create mode 100644 opcodes/po/it.gmo create mode 100644 opcodes/po/nl.gmo create mode 100644 opcodes/po/pt_BR.gmo create mode 100644 opcodes/po/ro.gmo create mode 100644 opcodes/po/sv.gmo create mode 100644 opcodes/po/tr.gmo create mode 100644 opcodes/po/uk.gmo create mode 100644 opcodes/po/vi.gmo create mode 100644 opcodes/po/zh_CN.gmo diff --git a/bfd/doc/aoutx.texi b/bfd/doc/aoutx.texi new file mode 100644 index 00000000000..2afe59dd6f0 --- /dev/null +++ b/bfd/doc/aoutx.texi @@ -0,0 +1,213 @@ +@section a.out backends + + +@strong{Description}@* +BFD supports a number of different flavours of a.out format, +though the major differences are only the sizes of the +structures on disk, and the shape of the relocation +information. + +The support is split into a basic support file @file{aoutx.h} +and other files which derive functions from the base. One +derivation file is @file{aoutf1.h} (for a.out flavour 1), and +adds to the basic a.out functions support for sun3, sun4, 386 +and 29k a.out files, to create a target jump vector for a +specific target. + +This information is further split out into more specific files +for each machine, including @file{sunos.c} for sun3 and sun4, +@file{newsos3.c} for the Sony NEWS, and @file{demo64.c} for a +demonstration of a 64 bit a.out format. + +The base file @file{aoutx.h} defines general mechanisms for +reading and writing records to and from disk and various +other methods which BFD requires. It is included by +@file{aout32.c} and @file{aout64.c} to form the names +@code{aout_32_swap_exec_header_in}, @code{aout_64_swap_exec_header_in}, etc. + +As an example, this is what goes on to make the back end for a +sun4, from @file{aout32.c}: + +@example + #define ARCH_SIZE 32 + #include "aoutx.h" +@end example + +Which exports names: + +@example + ... + aout_32_canonicalize_reloc + aout_32_find_nearest_line + aout_32_get_lineno + aout_32_get_reloc_upper_bound + ... +@end example + +from @file{sunos.c}: + +@example + #define TARGET_NAME "a.out-sunos-big" + #define VECNAME sparc_aout_sunos_be_vec + #include "aoutf1.h" +@end example + +requires all the names from @file{aout32.c}, and produces the jump vector + +@example + sparc_aout_sunos_be_vec +@end example + +The file @file{host-aout.c} is a special case. It is for a large set +of hosts that use ``more or less standard'' a.out files, and +for which cross-debugging is not interesting. It uses the +standard 32-bit a.out support routines, but determines the +file offsets and addresses of the text, data, and BSS +sections, the machine architecture and machine type, and the +entry point address, in a host-dependent manner. Once these +values have been determined, generic code is used to handle +the object file. + +When porting it to run on a new system, you must supply: + +@example + HOST_PAGE_SIZE + HOST_SEGMENT_SIZE + HOST_MACHINE_ARCH (optional) + HOST_MACHINE_MACHINE (optional) + HOST_TEXT_START_ADDR + HOST_STACK_END_ADDR +@end example + +in the file @file{../include/sys/h-@var{XXX}.h} (for your host). These +values, plus the structures and macros defined in @file{a.out.h} on +your host system, will produce a BFD target that will access +ordinary a.out files on your host. To configure a new machine +to use @file{host-aout.c}, specify: + +@example + TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec + TDEPFILES= host-aout.o trad-core.o +@end example + +in the @file{config/@var{XXX}.mt} file, and modify @file{configure.ac} +to use the +@file{@var{XXX}.mt} file (by setting "@code{bfd_target=XXX}") when your +configuration is selected. + +@subsection Relocations + + +@strong{Description}@* +The file @file{aoutx.h} provides for both the @emph{standard} +and @emph{extended} forms of a.out relocation records. + +The standard records contain only an +address, a symbol index, and a type field. The extended records +(used on 29ks and sparcs) also have a full integer for an +addend. + +@subsection Internal entry points + + +@strong{Description}@* +@file{aoutx.h} exports several routines for accessing the +contents of an a.out file, which are gathered and exported in +turn by various format specific files (eg sunos.c). + +@findex aout_@var{size}_swap_exec_header_in +@subsubsection @code{aout_@var{size}_swap_exec_header_in} +@strong{Synopsis} +@example +void aout_@var{size}_swap_exec_header_in, + (bfd *abfd, + struct external_exec *bytes, + struct internal_exec *execp); +@end example +@strong{Description}@* +Swap the information in an executable header @var{raw_bytes} taken +from a raw byte stream memory image into the internal exec header +structure @var{execp}. + +@findex aout_@var{size}_swap_exec_header_out +@subsubsection @code{aout_@var{size}_swap_exec_header_out} +@strong{Synopsis} +@example +void aout_@var{size}_swap_exec_header_out + (bfd *abfd, + struct internal_exec *execp, + struct external_exec *raw_bytes); +@end example +@strong{Description}@* +Swap the information in an internal exec header structure +@var{execp} into the buffer @var{raw_bytes} ready for writing to disk. + +@findex aout_@var{size}_some_aout_object_p +@subsubsection @code{aout_@var{size}_some_aout_object_p} +@strong{Synopsis} +@example +const bfd_target *aout_@var{size}_some_aout_object_p + (bfd *abfd, + struct internal_exec *execp, + const bfd_target *(*callback_to_real_object_p) (bfd *)); +@end example +@strong{Description}@* +Some a.out variant thinks that the file open in @var{abfd} +checking is an a.out file. Do some more checking, and set up +for access if it really is. Call back to the calling +environment's "finish up" function just before returning, to +handle any last-minute setup. + +@findex aout_@var{size}_mkobject +@subsubsection @code{aout_@var{size}_mkobject} +@strong{Synopsis} +@example +bfd_boolean aout_@var{size}_mkobject, (bfd *abfd); +@end example +@strong{Description}@* +Initialize BFD @var{abfd} for use with a.out files. + +@findex aout_@var{size}_machine_type +@subsubsection @code{aout_@var{size}_machine_type} +@strong{Synopsis} +@example +enum machine_type aout_@var{size}_machine_type + (enum bfd_architecture arch, + unsigned long machine, + bfd_boolean *unknown); +@end example +@strong{Description}@* +Keep track of machine architecture and machine type for +a.out's. Return the @code{machine_type} for a particular +architecture and machine, or @code{M_UNKNOWN} if that exact architecture +and machine can't be represented in a.out format. + +If the architecture is understood, machine type 0 (default) +is always understood. + +@findex aout_@var{size}_set_arch_mach +@subsubsection @code{aout_@var{size}_set_arch_mach} +@strong{Synopsis} +@example +bfd_boolean aout_@var{size}_set_arch_mach, + (bfd *, + enum bfd_architecture arch, + unsigned long machine); +@end example +@strong{Description}@* +Set the architecture and the machine of the BFD @var{abfd} to the +values @var{arch} and @var{machine}. Verify that @var{abfd}'s format +can support the architecture required. + +@findex aout_@var{size}_new_section_hook +@subsubsection @code{aout_@var{size}_new_section_hook} +@strong{Synopsis} +@example +bfd_boolean aout_@var{size}_new_section_hook, + (bfd *abfd, + asection *newsect); +@end example +@strong{Description}@* +Called by the BFD in response to a @code{bfd_make_section} +request. + diff --git a/bfd/doc/archive.texi b/bfd/doc/archive.texi new file mode 100644 index 00000000000..cfb391cec67 --- /dev/null +++ b/bfd/doc/archive.texi @@ -0,0 +1,105 @@ +@section Archives + + +@strong{Description}@* +An archive (or library) is just another BFD. It has a symbol +table, although there's not much a user program will do with it. + +The big difference between an archive BFD and an ordinary BFD +is that the archive doesn't have sections. Instead it has a +chain of BFDs that are considered its contents. These BFDs can +be manipulated like any other. The BFDs contained in an +archive opened for reading will all be opened for reading. You +may put either input or output BFDs into an archive opened for +output; they will be handled correctly when the archive is closed. + +Use @code{bfd_openr_next_archived_file} to step through +the contents of an archive opened for input. You don't +have to read the entire archive if you don't want +to! Read it until you find what you want. + +A BFD returned by @code{bfd_openr_next_archived_file} can be +closed manually with @code{bfd_close}. If you do not close it, +then a second iteration through the members of an archive may +return the same BFD. If you close the archive BFD, then all +the member BFDs will automatically be closed as well. + +Archive contents of output BFDs are chained through the +@code{archive_next} pointer in a BFD. The first one is findable +through the @code{archive_head} slot of the archive. Set it with +@code{bfd_set_archive_head} (q.v.). A given BFD may be in only +one open output archive at a time. + +As expected, the BFD archive code is more general than the +archive code of any given environment. BFD archives may +contain files of different formats (e.g., a.out and coff) and +even different architectures. You may even place archives +recursively into archives! + +This can cause unexpected confusion, since some archive +formats are more expressive than others. For instance, Intel +COFF archives can preserve long filenames; SunOS a.out archives +cannot. If you move a file from the first to the second +format and back again, the filename may be truncated. +Likewise, different a.out environments have different +conventions as to how they truncate filenames, whether they +preserve directory names in filenames, etc. When +interoperating with native tools, be sure your files are +homogeneous. + +Beware: most of these formats do not react well to the +presence of spaces in filenames. We do the best we can, but +can't always handle this case due to restrictions in the format of +archives. Many Unix utilities are braindead in regards to +spaces and such in filenames anyway, so this shouldn't be much +of a restriction. + +Archives are supported in BFD in @code{archive.c}. + +@subsection Archive functions + + +@findex bfd_get_next_mapent +@subsubsection @code{bfd_get_next_mapent} +@strong{Synopsis} +@example +symindex bfd_get_next_mapent + (bfd *abfd, symindex previous, carsym **sym); +@end example +@strong{Description}@* +Step through archive @var{abfd}'s symbol table (if it +has one). Successively update @var{sym} with the next symbol's +information, returning that symbol's (internal) index into the +symbol table. + +Supply @code{BFD_NO_MORE_SYMBOLS} as the @var{previous} entry to get +the first one; returns @code{BFD_NO_MORE_SYMBOLS} when you've already +got the last one. + +A @code{carsym} is a canonical archive symbol. The only +user-visible element is its name, a null-terminated string. + +@findex bfd_set_archive_head +@subsubsection @code{bfd_set_archive_head} +@strong{Synopsis} +@example +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head); +@end example +@strong{Description}@* +Set the head of the chain of +BFDs contained in the archive @var{output} to @var{new_head}. + +@findex bfd_openr_next_archived_file +@subsubsection @code{bfd_openr_next_archived_file} +@strong{Synopsis} +@example +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); +@end example +@strong{Description}@* +Provided a BFD, @var{archive}, containing an archive and NULL, open +an input BFD on the first contained element and returns that. +Subsequent calls should pass +the archive and the previous return value to return a created +BFD to the next contained element. NULL is returned when there +are no more. + diff --git a/bfd/doc/archures.texi b/bfd/doc/archures.texi new file mode 100644 index 00000000000..3157e502287 --- /dev/null +++ b/bfd/doc/archures.texi @@ -0,0 +1,720 @@ +@section Architectures +BFD keeps one atom in a BFD describing the +architecture of the data attached to the BFD: a pointer to a +@code{bfd_arch_info_type}. + +Pointers to structures can be requested independently of a BFD +so that an architecture's information can be interrogated +without access to an open BFD. + +The architecture information is provided by each architecture package. +The set of default architectures is selected by the macro +@code{SELECT_ARCHITECTURES}. This is normally set up in the +@file{config/@var{target}.mt} file of your choice. If the name is not +defined, then all the architectures supported are included. + +When BFD starts up, all the architectures are called with an +initialize method. It is up to the architecture back end to +insert as many items into the list of architectures as it wants to; +generally this would be one for each machine and one for the +default case (an item with a machine field of 0). + +BFD's idea of an architecture is implemented in @file{archures.c}. + +@subsection bfd_architecture + + +@strong{Description}@* +This enum gives the object file's CPU architecture, in a +global sense---i.e., what processor family does it belong to? +Another field indicates which processor within +the family is in use. The machine gives a number which +distinguishes different versions of the architecture, +containing, for example, 2 and 3 for Intel i960 KA and i960 KB, +and 68020 and 68030 for Motorola 68020 and 68030. +@example +enum bfd_architecture +@{ + bfd_arch_unknown, /* File arch not known. */ + bfd_arch_obscure, /* Arch known, not one of these. */ + bfd_arch_m68k, /* Motorola 68xxx */ +#define bfd_mach_m68000 1 +#define bfd_mach_m68008 2 +#define bfd_mach_m68010 3 +#define bfd_mach_m68020 4 +#define bfd_mach_m68030 5 +#define bfd_mach_m68040 6 +#define bfd_mach_m68060 7 +#define bfd_mach_cpu32 8 +#define bfd_mach_fido 9 +#define bfd_mach_mcf_isa_a_nodiv 10 +#define bfd_mach_mcf_isa_a 11 +#define bfd_mach_mcf_isa_a_mac 12 +#define bfd_mach_mcf_isa_a_emac 13 +#define bfd_mach_mcf_isa_aplus 14 +#define bfd_mach_mcf_isa_aplus_mac 15 +#define bfd_mach_mcf_isa_aplus_emac 16 +#define bfd_mach_mcf_isa_b_nousp 17 +#define bfd_mach_mcf_isa_b_nousp_mac 18 +#define bfd_mach_mcf_isa_b_nousp_emac 19 +#define bfd_mach_mcf_isa_b 20 +#define bfd_mach_mcf_isa_b_mac 21 +#define bfd_mach_mcf_isa_b_emac 22 +#define bfd_mach_mcf_isa_b_float 23 +#define bfd_mach_mcf_isa_b_float_mac 24 +#define bfd_mach_mcf_isa_b_float_emac 25 +#define bfd_mach_mcf_isa_c 26 +#define bfd_mach_mcf_isa_c_mac 27 +#define bfd_mach_mcf_isa_c_emac 28 +#define bfd_mach_mcf_isa_c_nodiv 29 +#define bfd_mach_mcf_isa_c_nodiv_mac 30 +#define bfd_mach_mcf_isa_c_nodiv_emac 31 + bfd_arch_vax, /* DEC Vax */ + bfd_arch_i960, /* Intel 960 */ + /* The order of the following is important. + lower number indicates a machine type that + only accepts a subset of the instructions + available to machines with higher numbers. + The exception is the "ca", which is + incompatible with all other machines except + "core". */ + +#define bfd_mach_i960_core 1 +#define bfd_mach_i960_ka_sa 2 +#define bfd_mach_i960_kb_sb 3 +#define bfd_mach_i960_mc 4 +#define bfd_mach_i960_xa 5 +#define bfd_mach_i960_ca 6 +#define bfd_mach_i960_jx 7 +#define bfd_mach_i960_hx 8 + + bfd_arch_or1k, /* OpenRISC 1000 */ +#define bfd_mach_or1k 1 +#define bfd_mach_or1knd 2 + + bfd_arch_sparc, /* SPARC */ +#define bfd_mach_sparc 1 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ +#define bfd_mach_sparc_sparclet 2 +#define bfd_mach_sparc_sparclite 3 +#define bfd_mach_sparc_v8plus 4 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ +#define bfd_mach_sparc_sparclite_le 6 +#define bfd_mach_sparc_v9 7 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ +/* Nonzero if MACH has the v9 instruction set. */ +#define bfd_mach_sparc_v9_p(mach) \ + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ + && (mach) != bfd_mach_sparc_sparclite_le) +/* Nonzero if MACH is a 64 bit sparc architecture. */ +#define bfd_mach_sparc_64bit_p(mach) \ + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb) + bfd_arch_spu, /* PowerPC SPU */ +#define bfd_mach_spu 256 + bfd_arch_mips, /* MIPS Rxxxx */ +#define bfd_mach_mips3000 3000 +#define bfd_mach_mips3900 3900 +#define bfd_mach_mips4000 4000 +#define bfd_mach_mips4010 4010 +#define bfd_mach_mips4100 4100 +#define bfd_mach_mips4111 4111 +#define bfd_mach_mips4120 4120 +#define bfd_mach_mips4300 4300 +#define bfd_mach_mips4400 4400 +#define bfd_mach_mips4600 4600 +#define bfd_mach_mips4650 4650 +#define bfd_mach_mips5000 5000 +#define bfd_mach_mips5400 5400 +#define bfd_mach_mips5500 5500 +#define bfd_mach_mips5900 5900 +#define bfd_mach_mips6000 6000 +#define bfd_mach_mips7000 7000 +#define bfd_mach_mips8000 8000 +#define bfd_mach_mips9000 9000 +#define bfd_mach_mips10000 10000 +#define bfd_mach_mips12000 12000 +#define bfd_mach_mips14000 14000 +#define bfd_mach_mips16000 16000 +#define bfd_mach_mips16 16 +#define bfd_mach_mips5 5 +#define bfd_mach_mips_loongson_2e 3001 +#define bfd_mach_mips_loongson_2f 3002 +#define bfd_mach_mips_loongson_3a 3003 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ +#define bfd_mach_mips_octeon 6501 +#define bfd_mach_mips_octeonp 6601 +#define bfd_mach_mips_octeon2 6502 +#define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ +#define bfd_mach_mipsisa32 32 +#define bfd_mach_mipsisa32r2 33 +#define bfd_mach_mipsisa32r3 34 +#define bfd_mach_mipsisa32r5 36 +#define bfd_mach_mipsisa32r6 37 +#define bfd_mach_mipsisa64 64 +#define bfd_mach_mipsisa64r2 65 +#define bfd_mach_mipsisa64r3 66 +#define bfd_mach_mipsisa64r5 68 +#define bfd_mach_mipsisa64r6 69 +#define bfd_mach_mips_micromips 96 + bfd_arch_i386, /* Intel 386 */ +#define bfd_mach_i386_intel_syntax (1 << 0) +#define bfd_mach_i386_i8086 (1 << 1) +#define bfd_mach_i386_i386 (1 << 2) +#define bfd_mach_x86_64 (1 << 3) +#define bfd_mach_x64_32 (1 << 4) +#define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax) +#define bfd_mach_x86_64_intel_syntax (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax) +#define bfd_mach_x64_32_intel_syntax (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax) + bfd_arch_l1om, /* Intel L1OM */ +#define bfd_mach_l1om (1 << 5) +#define bfd_mach_l1om_intel_syntax (bfd_mach_l1om | bfd_mach_i386_intel_syntax) + bfd_arch_k1om, /* Intel K1OM */ +#define bfd_mach_k1om (1 << 6) +#define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax) +#define bfd_mach_i386_nacl (1 << 7) +#define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) +#define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) +#define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) + bfd_arch_we32k, /* AT&T WE32xxx */ + bfd_arch_tahoe, /* CCI/Harris Tahoe */ + bfd_arch_i860, /* Intel 860 */ + bfd_arch_i370, /* IBM 360/370 Mainframes */ + bfd_arch_romp, /* IBM ROMP PC/RT */ + bfd_arch_convex, /* Convex */ + bfd_arch_m88k, /* Motorola 88xxx */ + bfd_arch_m98k, /* Motorola 98xxx */ + bfd_arch_pyramid, /* Pyramid Technology */ + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */ +#define bfd_mach_h8300 1 +#define bfd_mach_h8300h 2 +#define bfd_mach_h8300s 3 +#define bfd_mach_h8300hn 4 +#define bfd_mach_h8300sn 5 +#define bfd_mach_h8300sx 6 +#define bfd_mach_h8300sxn 7 + bfd_arch_pdp11, /* DEC PDP-11 */ + bfd_arch_plugin, + bfd_arch_powerpc, /* PowerPC */ +#define bfd_mach_ppc 32 +#define bfd_mach_ppc64 64 +#define bfd_mach_ppc_403 403 +#define bfd_mach_ppc_403gc 4030 +#define bfd_mach_ppc_405 405 +#define bfd_mach_ppc_505 505 +#define bfd_mach_ppc_601 601 +#define bfd_mach_ppc_602 602 +#define bfd_mach_ppc_603 603 +#define bfd_mach_ppc_ec603e 6031 +#define bfd_mach_ppc_604 604 +#define bfd_mach_ppc_620 620 +#define bfd_mach_ppc_630 630 +#define bfd_mach_ppc_750 750 +#define bfd_mach_ppc_860 860 +#define bfd_mach_ppc_a35 35 +#define bfd_mach_ppc_rs64ii 642 +#define bfd_mach_ppc_rs64iii 643 +#define bfd_mach_ppc_7400 7400 +#define bfd_mach_ppc_e500 500 +#define bfd_mach_ppc_e500mc 5001 +#define bfd_mach_ppc_e500mc64 5005 +#define bfd_mach_ppc_e5500 5006 +#define bfd_mach_ppc_e6500 5007 +#define bfd_mach_ppc_titan 83 +#define bfd_mach_ppc_vle 84 + bfd_arch_rs6000, /* IBM RS/6000 */ +#define bfd_mach_rs6k 6000 +#define bfd_mach_rs6k_rs1 6001 +#define bfd_mach_rs6k_rsc 6003 +#define bfd_mach_rs6k_rs2 6002 + bfd_arch_hppa, /* HP PA RISC */ +#define bfd_mach_hppa10 10 +#define bfd_mach_hppa11 11 +#define bfd_mach_hppa20 20 +#define bfd_mach_hppa20w 25 + bfd_arch_d10v, /* Mitsubishi D10V */ +#define bfd_mach_d10v 1 +#define bfd_mach_d10v_ts2 2 +#define bfd_mach_d10v_ts3 3 + bfd_arch_d30v, /* Mitsubishi D30V */ + bfd_arch_dlx, /* DLX */ + bfd_arch_m68hc11, /* Motorola 68HC11 */ + bfd_arch_m68hc12, /* Motorola 68HC12 */ +#define bfd_mach_m6812_default 0 +#define bfd_mach_m6812 1 +#define bfd_mach_m6812s 2 + bfd_arch_m9s12x, /* Freescale S12X */ + bfd_arch_m9s12xg, /* Freescale XGATE */ + bfd_arch_z8k, /* Zilog Z8000 */ +#define bfd_mach_z8001 1 +#define bfd_mach_z8002 2 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */ + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */ +#define bfd_mach_sh 1 +#define bfd_mach_sh2 0x20 +#define bfd_mach_sh_dsp 0x2d +#define bfd_mach_sh2a 0x2a +#define bfd_mach_sh2a_nofpu 0x2b +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 +#define bfd_mach_sh2a_or_sh4 0x2a3 +#define bfd_mach_sh2a_or_sh3e 0x2a4 +#define bfd_mach_sh2e 0x2e +#define bfd_mach_sh3 0x30 +#define bfd_mach_sh3_nommu 0x31 +#define bfd_mach_sh3_dsp 0x3d +#define bfd_mach_sh3e 0x3e +#define bfd_mach_sh4 0x40 +#define bfd_mach_sh4_nofpu 0x41 +#define bfd_mach_sh4_nommu_nofpu 0x42 +#define bfd_mach_sh4a 0x4a +#define bfd_mach_sh4a_nofpu 0x4b +#define bfd_mach_sh4al_dsp 0x4d +#define bfd_mach_sh5 0x50 + bfd_arch_alpha, /* Dec Alpha */ +#define bfd_mach_alpha_ev4 0x10 +#define bfd_mach_alpha_ev5 0x20 +#define bfd_mach_alpha_ev6 0x30 + bfd_arch_arm, /* Advanced Risc Machines ARM. */ +#define bfd_mach_arm_unknown 0 +#define bfd_mach_arm_2 1 +#define bfd_mach_arm_2a 2 +#define bfd_mach_arm_3 3 +#define bfd_mach_arm_3M 4 +#define bfd_mach_arm_4 5 +#define bfd_mach_arm_4T 6 +#define bfd_mach_arm_5 7 +#define bfd_mach_arm_5T 8 +#define bfd_mach_arm_5TE 9 +#define bfd_mach_arm_XScale 10 +#define bfd_mach_arm_ep9312 11 +#define bfd_mach_arm_iWMMXt 12 +#define bfd_mach_arm_iWMMXt2 13 + bfd_arch_nds32, /* Andes NDS32 */ +#define bfd_mach_n1 1 +#define bfd_mach_n1h 2 +#define bfd_mach_n1h_v2 3 +#define bfd_mach_n1h_v3 4 +#define bfd_mach_n1h_v3m 5 + bfd_arch_ns32k, /* National Semiconductors ns32000 */ + bfd_arch_w65, /* WDC 65816 */ + bfd_arch_tic30, /* Texas Instruments TMS320C30 */ + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */ +#define bfd_mach_tic3x 30 +#define bfd_mach_tic4x 40 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ + bfd_arch_tic80, /* TI TMS320c80 (MVP) */ + bfd_arch_v850, /* NEC V850 */ + bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */ +#define bfd_mach_v850 1 +#define bfd_mach_v850e 'E' +#define bfd_mach_v850e1 '1' +#define bfd_mach_v850e2 0x4532 +#define bfd_mach_v850e2v3 0x45325633 +#define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5') */ + bfd_arch_arc, /* ARC Cores */ +#define bfd_mach_arc_5 5 +#define bfd_mach_arc_6 6 +#define bfd_mach_arc_7 7 +#define bfd_mach_arc_8 8 + bfd_arch_m32c, /* Renesas M16C/M32C. */ +#define bfd_mach_m16c 0x75 +#define bfd_mach_m32c 0x78 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */ +#define bfd_mach_m32r 1 /* For backwards compatibility. */ +#define bfd_mach_m32rx 'x' +#define bfd_mach_m32r2 '2' + bfd_arch_mn10200, /* Matsushita MN10200 */ + bfd_arch_mn10300, /* Matsushita MN10300 */ +#define bfd_mach_mn10300 300 +#define bfd_mach_am33 330 +#define bfd_mach_am33_2 332 + bfd_arch_fr30, +#define bfd_mach_fr30 0x46523330 + bfd_arch_frv, +#define bfd_mach_frv 1 +#define bfd_mach_frvsimple 2 +#define bfd_mach_fr300 300 +#define bfd_mach_fr400 400 +#define bfd_mach_fr450 450 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */ +#define bfd_mach_fr500 500 +#define bfd_mach_fr550 550 + bfd_arch_moxie, /* The moxie processor */ +#define bfd_mach_moxie 1 + bfd_arch_mcore, + bfd_arch_mep, +#define bfd_mach_mep 1 +#define bfd_mach_mep_h1 0x6831 +#define bfd_mach_mep_c5 0x6335 + bfd_arch_metag, +#define bfd_mach_metag 1 + bfd_arch_ia64, /* HP/Intel ia64 */ +#define bfd_mach_ia64_elf64 64 +#define bfd_mach_ia64_elf32 32 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */ +#define bfd_mach_ip2022 1 +#define bfd_mach_ip2022ext 2 + bfd_arch_iq2000, /* Vitesse IQ2000. */ +#define bfd_mach_iq2000 1 +#define bfd_mach_iq10 2 + bfd_arch_epiphany, /* Adapteva EPIPHANY */ +#define bfd_mach_epiphany16 1 +#define bfd_mach_epiphany32 2 + bfd_arch_mt, +#define bfd_mach_ms1 1 +#define bfd_mach_mrisc2 2 +#define bfd_mach_ms2 3 + bfd_arch_pj, + bfd_arch_avr, /* Atmel AVR microcontrollers. */ +#define bfd_mach_avr1 1 +#define bfd_mach_avr2 2 +#define bfd_mach_avr25 25 +#define bfd_mach_avr3 3 +#define bfd_mach_avr31 31 +#define bfd_mach_avr35 35 +#define bfd_mach_avr4 4 +#define bfd_mach_avr5 5 +#define bfd_mach_avr51 51 +#define bfd_mach_avr6 6 +#define bfd_mach_avrtiny 100 +#define bfd_mach_avrxmega1 101 +#define bfd_mach_avrxmega2 102 +#define bfd_mach_avrxmega3 103 +#define bfd_mach_avrxmega4 104 +#define bfd_mach_avrxmega5 105 +#define bfd_mach_avrxmega6 106 +#define bfd_mach_avrxmega7 107 + bfd_arch_bfin, /* ADI Blackfin */ +#define bfd_mach_bfin 1 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ +#define bfd_mach_cr16 1 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ +#define bfd_mach_cr16c 1 + bfd_arch_crx, /* National Semiconductor CRX. */ +#define bfd_mach_crx 1 + bfd_arch_cris, /* Axis CRIS */ +#define bfd_mach_cris_v0_v10 255 +#define bfd_mach_cris_v32 32 +#define bfd_mach_cris_v10_v32 1032 + bfd_arch_rl78, +#define bfd_mach_rl78 0x75 + bfd_arch_rx, /* Renesas RX. */ +#define bfd_mach_rx 0x75 + bfd_arch_s390, /* IBM s390 */ +#define bfd_mach_s390_31 31 +#define bfd_mach_s390_64 64 + bfd_arch_score, /* Sunplus score */ +#define bfd_mach_score3 3 +#define bfd_mach_score7 7 + bfd_arch_mmix, /* Donald Knuth's educational processor. */ + bfd_arch_xstormy16, +#define bfd_mach_xstormy16 1 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */ +#define bfd_mach_msp11 11 +#define bfd_mach_msp110 110 +#define bfd_mach_msp12 12 +#define bfd_mach_msp13 13 +#define bfd_mach_msp14 14 +#define bfd_mach_msp15 15 +#define bfd_mach_msp16 16 +#define bfd_mach_msp20 20 +#define bfd_mach_msp21 21 +#define bfd_mach_msp22 22 +#define bfd_mach_msp23 23 +#define bfd_mach_msp24 24 +#define bfd_mach_msp26 26 +#define bfd_mach_msp31 31 +#define bfd_mach_msp32 32 +#define bfd_mach_msp33 33 +#define bfd_mach_msp41 41 +#define bfd_mach_msp42 42 +#define bfd_mach_msp43 43 +#define bfd_mach_msp44 44 +#define bfd_mach_msp430x 45 +#define bfd_mach_msp46 46 +#define bfd_mach_msp47 47 +#define bfd_mach_msp54 54 + bfd_arch_xc16x, /* Infineon's XC16X Series. */ +#define bfd_mach_xc16x 1 +#define bfd_mach_xc16xl 2 +#define bfd_mach_xc16xs 3 + bfd_arch_xgate, /* Freescale XGATE */ +#define bfd_mach_xgate 1 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ +#define bfd_mach_xtensa 1 + bfd_arch_z80, +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */ +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ +#define bfd_mach_z80full 7 /* All undocumented instructions. */ +#define bfd_mach_r800 11 /* R800: successor with multiplication. */ + bfd_arch_lm32, /* Lattice Mico32 */ +#define bfd_mach_lm32 1 + bfd_arch_microblaze,/* Xilinx MicroBlaze. */ + bfd_arch_tilepro, /* Tilera TILEPro */ + bfd_arch_tilegx, /* Tilera TILE-Gx */ +#define bfd_mach_tilepro 1 +#define bfd_mach_tilegx 1 +#define bfd_mach_tilegx32 2 + bfd_arch_aarch64, /* AArch64 */ +#define bfd_mach_aarch64 0 +#define bfd_mach_aarch64_ilp32 32 + bfd_arch_nios2, +#define bfd_mach_nios2 0 + bfd_arch_last + @}; +@end example + +@subsection bfd_arch_info + + +@strong{Description}@* +This structure contains information on architectures for use +within BFD. +@example + +typedef struct bfd_arch_info +@{ + int bits_per_word; + int bits_per_address; + int bits_per_byte; + enum bfd_architecture arch; + unsigned long mach; + const char *arch_name; + const char *printable_name; + unsigned int section_align_power; + /* TRUE if this is the default machine for the architecture. + The default arch should be the first entry for an arch so that + all the entries for that arch can be accessed via @code{next}. */ + bfd_boolean the_default; + const struct bfd_arch_info * (*compatible) + (const struct bfd_arch_info *a, const struct bfd_arch_info *b); + + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); + + /* Allocate via bfd_malloc and return a fill buffer of size COUNT. If + IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is + TRUE, the buffer contains code. */ + void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian, + bfd_boolean code); + + const struct bfd_arch_info *next; +@} +bfd_arch_info_type; + +@end example + +@findex bfd_printable_name +@subsubsection @code{bfd_printable_name} +@strong{Synopsis} +@example +const char *bfd_printable_name (bfd *abfd); +@end example +@strong{Description}@* +Return a printable string representing the architecture and machine +from the pointer to the architecture info structure. + +@findex bfd_scan_arch +@subsubsection @code{bfd_scan_arch} +@strong{Synopsis} +@example +const bfd_arch_info_type *bfd_scan_arch (const char *string); +@end example +@strong{Description}@* +Figure out if BFD supports any cpu which could be described with +the name @var{string}. Return a pointer to an @code{arch_info} +structure if a machine is found, otherwise NULL. + +@findex bfd_arch_list +@subsubsection @code{bfd_arch_list} +@strong{Synopsis} +@example +const char **bfd_arch_list (void); +@end example +@strong{Description}@* +Return a freshly malloced NULL-terminated vector of the names +of all the valid BFD architectures. Do not modify the names. + +@findex bfd_arch_get_compatible +@subsubsection @code{bfd_arch_get_compatible} +@strong{Synopsis} +@example +const bfd_arch_info_type *bfd_arch_get_compatible + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); +@end example +@strong{Description}@* +Determine whether two BFDs' architectures and machine types +are compatible. Calculates the lowest common denominator +between the two architectures and machine types implied by +the BFDs and returns a pointer to an @code{arch_info} structure +describing the compatible machine. + +@findex bfd_default_arch_struct +@subsubsection @code{bfd_default_arch_struct} +@strong{Description}@* +The @code{bfd_default_arch_struct} is an item of +@code{bfd_arch_info_type} which has been initialized to a fairly +generic state. A BFD starts life by pointing to this +structure, until the correct back end has determined the real +architecture of the file. +@example +extern const bfd_arch_info_type bfd_default_arch_struct; +@end example + +@findex bfd_set_arch_info +@subsubsection @code{bfd_set_arch_info} +@strong{Synopsis} +@example +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); +@end example +@strong{Description}@* +Set the architecture info of @var{abfd} to @var{arg}. + +@findex bfd_default_set_arch_mach +@subsubsection @code{bfd_default_set_arch_mach} +@strong{Synopsis} +@example +bfd_boolean bfd_default_set_arch_mach + (bfd *abfd, enum bfd_architecture arch, unsigned long mach); +@end example +@strong{Description}@* +Set the architecture and machine type in BFD @var{abfd} +to @var{arch} and @var{mach}. Find the correct +pointer to a structure and insert it into the @code{arch_info} +pointer. + +@findex bfd_get_arch +@subsubsection @code{bfd_get_arch} +@strong{Synopsis} +@example +enum bfd_architecture bfd_get_arch (bfd *abfd); +@end example +@strong{Description}@* +Return the enumerated type which describes the BFD @var{abfd}'s +architecture. + +@findex bfd_get_mach +@subsubsection @code{bfd_get_mach} +@strong{Synopsis} +@example +unsigned long bfd_get_mach (bfd *abfd); +@end example +@strong{Description}@* +Return the long type which describes the BFD @var{abfd}'s +machine. + +@findex bfd_arch_bits_per_byte +@subsubsection @code{bfd_arch_bits_per_byte} +@strong{Synopsis} +@example +unsigned int bfd_arch_bits_per_byte (bfd *abfd); +@end example +@strong{Description}@* +Return the number of bits in one of the BFD @var{abfd}'s +architecture's bytes. + +@findex bfd_arch_bits_per_address +@subsubsection @code{bfd_arch_bits_per_address} +@strong{Synopsis} +@example +unsigned int bfd_arch_bits_per_address (bfd *abfd); +@end example +@strong{Description}@* +Return the number of bits in one of the BFD @var{abfd}'s +architecture's addresses. + +@findex bfd_default_compatible +@subsubsection @code{bfd_default_compatible} +@strong{Synopsis} +@example +const bfd_arch_info_type *bfd_default_compatible + (const bfd_arch_info_type *a, const bfd_arch_info_type *b); +@end example +@strong{Description}@* +The default function for testing for compatibility. + +@findex bfd_default_scan +@subsubsection @code{bfd_default_scan} +@strong{Synopsis} +@example +bfd_boolean bfd_default_scan + (const struct bfd_arch_info *info, const char *string); +@end example +@strong{Description}@* +The default function for working out whether this is an +architecture hit and a machine hit. + +@findex bfd_get_arch_info +@subsubsection @code{bfd_get_arch_info} +@strong{Synopsis} +@example +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); +@end example +@strong{Description}@* +Return the architecture info struct in @var{abfd}. + +@findex bfd_lookup_arch +@subsubsection @code{bfd_lookup_arch} +@strong{Synopsis} +@example +const bfd_arch_info_type *bfd_lookup_arch + (enum bfd_architecture arch, unsigned long machine); +@end example +@strong{Description}@* +Look for the architecture info structure which matches the +arguments @var{arch} and @var{machine}. A machine of 0 matches the +machine/architecture structure which marks itself as the +default. + +@findex bfd_printable_arch_mach +@subsubsection @code{bfd_printable_arch_mach} +@strong{Synopsis} +@example +const char *bfd_printable_arch_mach + (enum bfd_architecture arch, unsigned long machine); +@end example +@strong{Description}@* +Return a printable string representing the architecture and +machine type. + +This routine is depreciated. + +@findex bfd_octets_per_byte +@subsubsection @code{bfd_octets_per_byte} +@strong{Synopsis} +@example +unsigned int bfd_octets_per_byte (bfd *abfd); +@end example +@strong{Description}@* +Return the number of octets (8-bit quantities) per target byte +(minimum addressable unit). In most cases, this will be one, but some +DSP targets have 16, 32, or even 48 bits per byte. + +@findex bfd_arch_mach_octets_per_byte +@subsubsection @code{bfd_arch_mach_octets_per_byte} +@strong{Synopsis} +@example +unsigned int bfd_arch_mach_octets_per_byte + (enum bfd_architecture arch, unsigned long machine); +@end example +@strong{Description}@* +See bfd_octets_per_byte. + +This routine is provided for those cases where a bfd * is not +available + +@findex bfd_arch_default_fill +@subsubsection @code{bfd_arch_default_fill} +@strong{Synopsis} +@example +void *bfd_arch_default_fill (bfd_size_type count, + bfd_boolean is_bigendian, + bfd_boolean code); +@end example +@strong{Description}@* +Allocate via bfd_malloc and return a fill buffer of size COUNT. +If IS_BIGENDIAN is TRUE, the order of bytes is big endian. If +CODE is TRUE, the buffer contains code. + diff --git a/bfd/doc/bfd.info b/bfd/doc/bfd.info new file mode 100644 index 00000000000..2b46faaf5eb --- /dev/null +++ b/bfd/doc/bfd.info @@ -0,0 +1,13716 @@ +This is bfd.info, produced by makeinfo version 4.8 from bfd.texinfo. + +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Bfd: (bfd). The Binary File Descriptor library. +END-INFO-DIR-ENTRY + + This file documents the BFD library. + + Copyright (C) 1991-2014 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with the +Invariant Sections being "GNU General Public License" and "Funding Free +Software", the Front-Cover texts being (a) (see below), and with the +Back-Cover Texts being (b) (see below). A copy of the license is +included in the section entitled "GNU Free Documentation License". + + (a) The FSF's Front-Cover Text is: + + A GNU Manual + + (b) The FSF's Back-Cover Text is: + + You have freedom to copy and modify this GNU Manual, like GNU +software. Copies published by the Free Software Foundation raise +funds for GNU development. + + +File: bfd.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) + + This file documents the binary file descriptor library libbfd. + +* Menu: + +* Overview:: Overview of BFD +* BFD front end:: BFD front end +* BFD back ends:: BFD back ends +* GNU Free Documentation License:: GNU Free Documentation License +* BFD Index:: BFD Index + + +File: bfd.info, Node: Overview, Next: BFD front end, Prev: Top, Up: Top + +1 Introduction +************** + +BFD is a package which allows applications to use the same routines to +operate on object files whatever the object file format. A new object +file format can be supported simply by creating a new BFD back end and +adding it to the library. + + BFD is split into two parts: the front end, and the back ends (one +for each object file format). + * The front end of BFD provides the interface to the user. It manages + memory and various canonical data structures. The front end also + decides which back end to use and when to call back end routines. + + * The back ends provide BFD its view of the real world. Each back + end provides a set of calls which the BFD front end can use to + maintain its canonical form. The back ends also may keep around + information for their own use, for greater efficiency. + +* Menu: + +* History:: History +* How It Works:: How It Works +* What BFD Version 2 Can Do:: What BFD Version 2 Can Do + + +File: bfd.info, Node: History, Next: How It Works, Prev: Overview, Up: Overview + +1.1 History +=========== + +One spur behind BFD was the desire, on the part of the GNU 960 team at +Intel Oregon, for interoperability of applications on their COFF and +b.out file formats. Cygnus was providing GNU support for the team, and +was contracted to provide the required functionality. + + The name came from a conversation David Wallace was having with +Richard Stallman about the library: RMS said that it would be quite +hard--David said "BFD". Stallman was right, but the name stuck. + + At the same time, Ready Systems wanted much the same thing, but for +different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k +coff. + + BFD was first implemented by members of Cygnus Support; Steve +Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K. +Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace +(`gumby@cygnus.com'). + + +File: bfd.info, Node: How It Works, Next: What BFD Version 2 Can Do, Prev: History, Up: Overview + +1.2 How To Use BFD +================== + +To use the library, include `bfd.h' and link with `libbfd.a'. + + BFD provides a common interface to the parts of an object file for a +calling application. + + When an application successfully opens a target file (object, +archive, or whatever), a pointer to an internal structure is returned. +This pointer points to a structure called `bfd', described in `bfd.h'. +Our convention is to call this pointer a BFD, and instances of it +within code `abfd'. All operations on the target object file are +applied as methods to the BFD. The mapping is defined within `bfd.h' +in a set of macros, all beginning with `bfd_' to reduce namespace +pollution. + + For example, this sequence does what you would probably expect: +return the number of sections in an object file attached to a BFD +`abfd'. + + #include "bfd.h" + + unsigned int number_of_sections (abfd) + bfd *abfd; + { + return bfd_count_sections (abfd); + } + + The abstraction used within BFD is that an object file has: + + * a header, + + * a number of sections containing raw data (*note Sections::), + + * a set of relocations (*note Relocations::), and + + * some symbol information (*note Symbols::). + Also, BFDs opened for archives have the additional attribute of an +index and contain subordinate BFDs. This approach is fine for a.out and +coff, but loses efficiency when applied to formats such as S-records and +IEEE-695. + + +File: bfd.info, Node: What BFD Version 2 Can Do, Prev: How It Works, Up: Overview + +1.3 What BFD Version 2 Can Do +============================= + +When an object file is opened, BFD subroutines automatically determine +the format of the input object file. They then build a descriptor in +memory with pointers to routines that will be used to access elements of +the object file's data structures. + + As different information from the object files is required, BFD +reads from different sections of the file and processes them. For +example, a very common operation for the linker is processing symbol +tables. Each BFD back end provides a routine for converting between +the object file's representation of symbols and an internal canonical +format. When the linker asks for the symbol table of an object file, it +calls through a memory pointer to the routine from the relevant BFD +back end which reads and converts the table into a canonical form. The +linker then operates upon the canonical form. When the link is finished +and the linker writes the output file's symbol table, another BFD back +end routine is called to take the newly created symbol table and +convert it into the chosen output format. + +* Menu: + +* BFD information loss:: Information Loss +* Canonical format:: The BFD canonical object-file format + + +File: bfd.info, Node: BFD information loss, Next: Canonical format, Up: What BFD Version 2 Can Do + +1.3.1 Information Loss +---------------------- + +_Information can be lost during output._ The output formats supported +by BFD do not provide identical facilities, and information which can +be described in one form has nowhere to go in another format. One +example of this is alignment information in `b.out'. There is nowhere +in an `a.out' format file to store alignment information on the +contained data, so when a file is linked from `b.out' and an `a.out' +image is produced, alignment information will not propagate to the +output file. (The linker will still use the alignment information +internally, so the link is performed correctly). + + Another example is COFF section names. COFF files may contain an +unlimited number of sections, each one with a textual section name. If +the target of the link is a format which does not have many sections +(e.g., `a.out') or has sections without names (e.g., the Oasys format), +the link cannot be done simply. You can circumvent this problem by +describing the desired input-to-output section mapping with the linker +command language. + + _Information can be lost during canonicalization._ The BFD internal +canonical form of the external formats is not exhaustive; there are +structures in input formats for which there is no direct representation +internally. This means that the BFD back ends cannot maintain all +possible data richness through the transformation between external to +internal and back to external formats. + + This limitation is only a problem when an application reads one +format and writes another. Each BFD back end is responsible for +maintaining as much data as possible, and the internal BFD canonical +form has structures which are opaque to the BFD core, and exported only +to the back ends. When a file is read in one format, the canonical form +is generated for BFD and the application. At the same time, the back +end saves away any information which may otherwise be lost. If the data +is then written back in the same format, the back end routine will be +able to use the canonical form provided by the BFD core as well as the +information it prepared earlier. Since there is a great deal of +commonality between back ends, there is no information lost when +linking or copying big endian COFF to little endian COFF, or `a.out' to +`b.out'. When a mixture of formats is linked, the information is only +lost from the files whose format differs from the destination. + + +File: bfd.info, Node: Canonical format, Prev: BFD information loss, Up: What BFD Version 2 Can Do + +1.3.2 The BFD canonical object-file format +------------------------------------------ + +The greatest potential for loss of information occurs when there is the +least overlap between the information provided by the source format, +that stored by the canonical format, and that needed by the destination +format. A brief description of the canonical form may help you +understand which kinds of data you can count on preserving across +conversions. + +_files_ + Information stored on a per-file basis includes target machine + architecture, particular implementation format type, a demand + pageable bit, and a write protected bit. Information like Unix + magic numbers is not stored here--only the magic numbers' meaning, + so a `ZMAGIC' file would have both the demand pageable bit and the + write protected text bit set. The byte order of the target is + stored on a per-file basis, so that big- and little-endian object + files may be used with one another. + +_sections_ + Each section in the input file contains the name of the section, + the section's original address in the object file, size and + alignment information, various flags, and pointers into other BFD + data structures. + +_symbols_ + Each symbol contains a pointer to the information for the object + file which originally defined it, its name, its value, and various + flag bits. When a BFD back end reads in a symbol table, it + relocates all symbols to make them relative to the base of the + section where they were defined. Doing this ensures that each + symbol points to its containing section. Each symbol also has a + varying amount of hidden private data for the BFD back end. Since + the symbol points to the original file, the private data format + for that symbol is accessible. `ld' can operate on a collection + of symbols of wildly different formats without problems. + + Normal global and simple local symbols are maintained on output, + so an output file (no matter its format) will retain symbols + pointing to functions and to global, static, and common variables. + Some symbol information is not worth retaining; in `a.out', type + information is stored in the symbol table as long symbol names. + This information would be useless to most COFF debuggers; the + linker has command line switches to allow users to throw it away. + + There is one word of type information within the symbol, so if the + format supports symbol type information within symbols (for + example, COFF, IEEE, Oasys) and the type is simple enough to fit + within one word (nearly everything but aggregates), the + information will be preserved. + +_relocation level_ + Each canonical BFD relocation record contains a pointer to the + symbol to relocate to, the offset of the data to relocate, the + section the data is in, and a pointer to a relocation type + descriptor. Relocation is performed by passing messages through + the relocation type descriptor and the symbol pointer. Therefore, + relocations can be performed on output data using a relocation + method that is only available in one of the input formats. For + instance, Oasys provides a byte relocation format. A relocation + record requesting this relocation type would point indirectly to a + routine to perform this, so the relocation may be performed on a + byte being written to a 68k COFF file, even though 68k COFF has no + such relocation type. + +_line numbers_ + Object formats can contain, for debugging purposes, some form of + mapping between symbols, source line numbers, and addresses in the + output file. These addresses have to be relocated along with the + symbol information. Each symbol with an associated list of line + number records points to the first record of the list. The head + of a line number list consists of a pointer to the symbol, which + allows finding out the address of the function whose line number + is being described. The rest of the list is made up of pairs: + offsets into the section and line numbers. Any format which can + simply derive this information can pass it successfully between + formats (COFF, IEEE and Oasys). + + +File: bfd.info, Node: BFD front end, Next: BFD back ends, Prev: Overview, Up: Top + +2 BFD Front End +*************** + +* Menu: + +* typedef bfd:: +* Error reporting:: +* Miscellaneous:: +* Memory Usage:: +* Initialization:: +* Sections:: +* Symbols:: +* Archives:: +* Formats:: +* Relocations:: +* Core Files:: +* Targets:: +* Architectures:: +* Opening and Closing:: +* Internal:: +* File Caching:: +* Linker Functions:: +* Hash Tables:: + + +File: bfd.info, Node: typedef bfd, Next: Error reporting, Prev: BFD front end, Up: BFD front end + +2.1 `typedef bfd' +================= + +A BFD has type `bfd'; objects of this type are the cornerstone of any +application using BFD. Using BFD consists of making references though +the BFD and to data in the BFD. + + Here is the structure that defines the type `bfd'. It contains the +major data about the file and pointers to the rest of the data. + + + enum bfd_direction + { + no_direction = 0, + read_direction = 1, + write_direction = 2, + both_direction = 3 + }; + + struct bfd + { + /* The filename the application opened the BFD with. */ + const char *filename; + + /* A pointer to the target jump table. */ + const struct bfd_target *xvec; + + /* The IOSTREAM, and corresponding IO vector that provide access + to the file backing the BFD. */ + void *iostream; + const struct bfd_iovec *iovec; + + /* The caching routines use these to maintain a + least-recently-used list of BFDs. */ + struct bfd *lru_prev, *lru_next; + + /* When a file is closed by the caching routines, BFD retains + state information on the file here... */ + ufile_ptr where; + + /* File modified time, if mtime_set is TRUE. */ + long mtime; + + /* A unique identifier of the BFD */ + unsigned int id; + + /* The format which belongs to the BFD. (object, core, etc.) */ + ENUM_BITFIELD (bfd_format) format : 3; + + /* The direction with which the BFD was opened. */ + ENUM_BITFIELD (bfd_direction) direction : 2; + + /* Format_specific flags. */ + flagword flags : 17; + + /* Values that may appear in the flags field of a BFD. These also + appear in the object_flags field of the bfd_target structure, where + they indicate the set of flags used by that backend (not all flags + are meaningful for all object file formats) (FIXME: at the moment, + the object_flags values have mostly just been copied from backend + to another, and are not necessarily correct). */ + + #define BFD_NO_FLAGS 0x00 + + /* BFD contains relocation entries. */ + #define HAS_RELOC 0x01 + + /* BFD is directly executable. */ + #define EXEC_P 0x02 + + /* BFD has line number information (basically used for F_LNNO in a + COFF header). */ + #define HAS_LINENO 0x04 + + /* BFD has debugging information. */ + #define HAS_DEBUG 0x08 + + /* BFD has symbols. */ + #define HAS_SYMS 0x10 + + /* BFD has local symbols (basically used for F_LSYMS in a COFF + header). */ + #define HAS_LOCALS 0x20 + + /* BFD is a dynamic object. */ + #define DYNAMIC 0x40 + + /* Text section is write protected (if D_PAGED is not set, this is + like an a.out NMAGIC file) (the linker sets this by default, but + clears it for -r or -N). */ + #define WP_TEXT 0x80 + + /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the + linker sets this by default, but clears it for -r or -n or -N). */ + #define D_PAGED 0x100 + + /* BFD is relaxable (this means that bfd_relax_section may be able to + do something) (sometimes bfd_relax_section can do something even if + this is not set). */ + #define BFD_IS_RELAXABLE 0x200 + + /* This may be set before writing out a BFD to request using a + traditional format. For example, this is used to request that when + writing out an a.out object the symbols not be hashed to eliminate + duplicates. */ + #define BFD_TRADITIONAL_FORMAT 0x400 + + /* This flag indicates that the BFD contents are actually cached + in memory. If this is set, iostream points to a bfd_in_memory + struct. */ + #define BFD_IN_MEMORY 0x800 + + /* This BFD has been created by the linker and doesn't correspond + to any input file. */ + #define BFD_LINKER_CREATED 0x1000 + + /* This may be set before writing out a BFD to request that it + be written using values for UIDs, GIDs, timestamps, etc. that + will be consistent from run to run. */ + #define BFD_DETERMINISTIC_OUTPUT 0x2000 + + /* Compress sections in this BFD. */ + #define BFD_COMPRESS 0x4000 + + /* Decompress sections in this BFD. */ + #define BFD_DECOMPRESS 0x8000 + + /* BFD is a dummy, for plugins. */ + #define BFD_PLUGIN 0x10000 + + /* Flags bits to be saved in bfd_preserve_save. */ + #define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) + + /* Flags bits which are for BFD use only. */ + #define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + + /* Is the file descriptor being cached? That is, can it be closed as + needed, and re-opened when accessed later? */ + unsigned int cacheable : 1; + + /* Marks whether there was a default target specified when the + BFD was opened. This is used to select which matching algorithm + to use to choose the back end. */ + unsigned int target_defaulted : 1; + + /* ... and here: (``once'' means at least once). */ + unsigned int opened_once : 1; + + /* Set if we have a locally maintained mtime value, rather than + getting it from the file each time. */ + unsigned int mtime_set : 1; + + /* Flag set if symbols from this BFD should not be exported. */ + unsigned int no_export : 1; + + /* Remember when output has begun, to stop strange things + from happening. */ + unsigned int output_has_begun : 1; + + /* Have archive map. */ + unsigned int has_armap : 1; + + /* Set if this is a thin archive. */ + unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; + + /* Set if this is the linker output BFD. */ + unsigned int is_linker_output : 1; + + /* Currently my_archive is tested before adding origin to + anything. I believe that this can become always an add of + origin, with origin set to 0 for non archive files. */ + ufile_ptr origin; + + /* The origin in the archive of the proxy entry. This will + normally be the same as origin, except for thin archives, + when it will contain the current offset of the proxy in the + thin archive rather than the offset of the bfd in its actual + container. */ + ufile_ptr proxy_origin; + + /* A hash table for section names. */ + struct bfd_hash_table section_htab; + + /* Pointer to linked list of sections. */ + struct bfd_section *sections; + + /* The last section on the section list. */ + struct bfd_section *section_last; + + /* The number of sections. */ + unsigned int section_count; + + /* A field used by _bfd_generic_link_add_archive_symbols. This will + be used only for archive elements. */ + int archive_pass; + + /* Stuff only useful for object files: + The start address. */ + bfd_vma start_address; + + /* Symbol table for output BFD (with symcount entries). + Also used by the linker to cache input BFD symbols. */ + struct bfd_symbol **outsymbols; + + /* Used for input and output. */ + unsigned int symcount; + + /* Used for slurped dynamic symbol tables. */ + unsigned int dynsymcount; + + /* Pointer to structure which contains architecture information. */ + const struct bfd_arch_info *arch_info; + + /* Stuff only useful for archives. */ + void *arelt_data; + struct bfd *my_archive; /* The containing archive BFD. */ + struct bfd *archive_next; /* The next BFD in the archive. */ + struct bfd *archive_head; /* The first BFD in the archive. */ + struct bfd *nested_archives; /* List of nested archive in a flattened + thin archive. */ + + union { + /* For input BFDs, a chain of BFDs involved in a link. */ + struct bfd *next; + /* For output BFD, the linker hash table. */ + struct bfd_link_hash_table *hash; + } link; + + /* Used by the back end to hold private data. */ + union + { + struct aout_data_struct *aout_data; + struct artdata *aout_ar_data; + struct _oasys_data *oasys_obj_data; + struct _oasys_ar_data *oasys_ar_data; + struct coff_tdata *coff_obj_data; + struct pe_tdata *pe_obj_data; + struct xcoff_tdata *xcoff_obj_data; + struct ecoff_tdata *ecoff_obj_data; + struct ieee_data_struct *ieee_data; + struct ieee_ar_data_struct *ieee_ar_data; + struct srec_data_struct *srec_data; + struct verilog_data_struct *verilog_data; + struct ihex_data_struct *ihex_data; + struct tekhex_data_struct *tekhex_data; + struct elf_obj_tdata *elf_obj_data; + struct nlm_obj_tdata *nlm_obj_data; + struct bout_data_struct *bout_data; + struct mmo_data_struct *mmo_data; + struct sun_core_struct *sun_core_data; + struct sco5_core_struct *sco5_core_data; + struct trad_core_struct *trad_core_data; + struct som_data_struct *som_data; + struct hpux_core_struct *hpux_core_data; + struct hppabsd_core_struct *hppabsd_core_data; + struct sgi_core_struct *sgi_core_data; + struct lynx_core_struct *lynx_core_data; + struct osf_core_struct *osf_core_data; + struct cisco_core_struct *cisco_core_data; + struct versados_data_struct *versados_data; + struct netbsd_core_struct *netbsd_core_data; + struct mach_o_data_struct *mach_o_data; + struct mach_o_fat_data_struct *mach_o_fat_data; + struct plugin_data_struct *plugin_data; + struct bfd_pef_data_struct *pef_data; + struct bfd_pef_xlib_data_struct *pef_xlib_data; + struct bfd_sym_data_struct *sym_data; + void *any; + } + tdata; + + /* Used by the application to hold private data. */ + void *usrdata; + + /* Where all the allocated stuff under this BFD goes. This is a + struct objalloc *, but we use void * to avoid requiring the inclusion + of objalloc.h. */ + void *memory; + }; + + /* See note beside bfd_set_section_userdata. */ + static inline bfd_boolean + bfd_set_cacheable (bfd * abfd, bfd_boolean val) + { + abfd->cacheable = val; + return TRUE; + } + + +File: bfd.info, Node: Error reporting, Next: Miscellaneous, Prev: typedef bfd, Up: BFD front end + +2.2 Error reporting +=================== + +Most BFD functions return nonzero on success (check their individual +documentation for precise semantics). On an error, they call +`bfd_set_error' to set an error condition that callers can check by +calling `bfd_get_error'. If that returns `bfd_error_system_call', then +check `errno'. + + The easiest way to report a BFD error to the user is to use +`bfd_perror'. + +2.2.1 Type `bfd_error_type' +--------------------------- + +The values returned by `bfd_get_error' are defined by the enumerated +type `bfd_error_type'. + + + typedef enum bfd_error + { + bfd_error_no_error = 0, + bfd_error_system_call, + bfd_error_invalid_target, + bfd_error_wrong_format, + bfd_error_wrong_object_format, + bfd_error_invalid_operation, + bfd_error_no_memory, + bfd_error_no_symbols, + bfd_error_no_armap, + bfd_error_no_more_archived_files, + bfd_error_malformed_archive, + bfd_error_missing_dso, + bfd_error_file_not_recognized, + bfd_error_file_ambiguously_recognized, + bfd_error_no_contents, + bfd_error_nonrepresentable_section, + bfd_error_no_debug_section, + bfd_error_bad_value, + bfd_error_file_truncated, + bfd_error_file_too_big, + bfd_error_on_input, + bfd_error_invalid_error_code + } + bfd_error_type; + +2.2.1.1 `bfd_get_error' +....................... + +*Synopsis* + bfd_error_type bfd_get_error (void); + *Description* +Return the current BFD error condition. + +2.2.1.2 `bfd_set_error' +....................... + +*Synopsis* + void bfd_set_error (bfd_error_type error_tag, ...); + *Description* +Set the BFD error condition to be ERROR_TAG. If ERROR_TAG is +bfd_error_on_input, then this function takes two more parameters, the +input bfd where the error occurred, and the bfd_error_type error. + +2.2.1.3 `bfd_errmsg' +.................... + +*Synopsis* + const char *bfd_errmsg (bfd_error_type error_tag); + *Description* +Return a string describing the error ERROR_TAG, or the system error if +ERROR_TAG is `bfd_error_system_call'. + +2.2.1.4 `bfd_perror' +.................... + +*Synopsis* + void bfd_perror (const char *message); + *Description* +Print to the standard error stream a string describing the last BFD +error that occurred, or the last system error if the last BFD error was +a system call failure. If MESSAGE is non-NULL and non-empty, the error +string printed is preceded by MESSAGE, a colon, and a space. It is +followed by a newline. + +2.2.2 BFD error handler +----------------------- + +Some BFD functions want to print messages describing the problem. They +call a BFD error handler function. This function may be overridden by +the program. + + The BFD error handler acts like printf. + + + typedef void (*bfd_error_handler_type) (const char *, ...); + +2.2.2.1 `bfd_set_error_handler' +............................... + +*Synopsis* + bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); + *Description* +Set the BFD error handler function. Returns the previous function. + +2.2.2.2 `bfd_set_error_program_name' +.................................... + +*Synopsis* + void bfd_set_error_program_name (const char *); + *Description* +Set the program name to use when printing a BFD error. This is printed +before the error message followed by a colon and space. The string +must not be changed after it is passed to this function. + +2.2.2.3 `bfd_get_error_handler' +............................... + +*Synopsis* + bfd_error_handler_type bfd_get_error_handler (void); + *Description* +Return the BFD error handler function. + +2.2.3 BFD assert handler +------------------------ + +If BFD finds an internal inconsistency, the bfd assert handler is +called with information on the BFD version, BFD source file and line. +If this happens, most programs linked against BFD are expected to want +to exit with an error, or mark the current BFD operation as failed, so +it is recommended to override the default handler, which just calls +_bfd_error_handler and continues. + + + typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg, + const char *bfd_version, + const char *bfd_file, + int bfd_line); + +2.2.3.1 `bfd_set_assert_handler' +................................ + +*Synopsis* + bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type); + *Description* +Set the BFD assert handler function. Returns the previous function. + +2.2.3.2 `bfd_get_assert_handler' +................................ + +*Synopsis* + bfd_assert_handler_type bfd_get_assert_handler (void); + *Description* +Return the BFD assert handler function. + + +File: bfd.info, Node: Miscellaneous, Next: Memory Usage, Prev: Error reporting, Up: BFD front end + +2.3 Miscellaneous +================= + +2.3.1 Miscellaneous functions +----------------------------- + +2.3.1.1 `bfd_get_reloc_upper_bound' +................................... + +*Synopsis* + long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); + *Description* +Return the number of bytes required to store the relocation information +associated with section SECT attached to bfd ABFD. If an error occurs, +return -1. + +2.3.1.2 `bfd_canonicalize_reloc' +................................ + +*Synopsis* + long bfd_canonicalize_reloc + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); + *Description* +Call the back end associated with the open BFD ABFD and translate the +external form of the relocation information attached to SEC into the +internal canonical form. Place the table into memory at LOC, which has +been preallocated, usually by a call to `bfd_get_reloc_upper_bound'. +Returns the number of relocs, or -1 on error. + + The SYMS table is also needed for horrible internal magic reasons. + +2.3.1.3 `bfd_set_reloc' +....................... + +*Synopsis* + void bfd_set_reloc + (bfd *abfd, asection *sec, arelent **rel, unsigned int count); + *Description* +Set the relocation pointer and count within section SEC to the values +REL and COUNT. The argument ABFD is ignored. + +2.3.1.4 `bfd_set_file_flags' +............................ + +*Synopsis* + bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags); + *Description* +Set the flag word in the BFD ABFD to the value FLAGS. + + Possible errors are: + * `bfd_error_wrong_format' - The target bfd was not of object format. + + * `bfd_error_invalid_operation' - The target bfd was open for + reading. + + * `bfd_error_invalid_operation' - The flag word contained a bit + which was not applicable to the type of file. E.g., an attempt + was made to set the `D_PAGED' bit on a BFD format which does not + support demand paging. + +2.3.1.5 `bfd_get_arch_size' +........................... + +*Synopsis* + int bfd_get_arch_size (bfd *abfd); + *Description* +Returns the normalized architecture address size, in bits, as +determined by the object file's format. By normalized, we mean either +32 or 64. For ELF, this information is included in the header. Use +bfd_arch_bits_per_address for number of bits in the architecture +address. + + *Returns* +Returns the arch size in bits if known, `-1' otherwise. + +2.3.1.6 `bfd_get_sign_extend_vma' +................................. + +*Synopsis* + int bfd_get_sign_extend_vma (bfd *abfd); + *Description* +Indicates if the target architecture "naturally" sign extends an +address. Some architectures implicitly sign extend address values when +they are converted to types larger than the size of an address. For +instance, bfd_get_start_address() will return an address sign extended +to fill a bfd_vma when this is the case. + + *Returns* +Returns `1' if the target architecture is known to sign extend +addresses, `0' if the target architecture is known to not sign extend +addresses, and `-1' otherwise. + +2.3.1.7 `bfd_set_start_address' +............................... + +*Synopsis* + bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma); + *Description* +Make VMA the entry point of output BFD ABFD. + + *Returns* +Returns `TRUE' on success, `FALSE' otherwise. + +2.3.1.8 `bfd_get_gp_size' +......................... + +*Synopsis* + unsigned int bfd_get_gp_size (bfd *abfd); + *Description* +Return the maximum size of objects to be optimized using the GP +register under MIPS ECOFF. This is typically set by the `-G' argument +to the compiler, assembler or linker. + +2.3.1.9 `bfd_set_gp_size' +......................... + +*Synopsis* + void bfd_set_gp_size (bfd *abfd, unsigned int i); + *Description* +Set the maximum size of objects to be optimized using the GP register +under ECOFF or MIPS ELF. This is typically set by the `-G' argument to +the compiler, assembler or linker. + +2.3.1.10 `bfd_scan_vma' +....................... + +*Synopsis* + bfd_vma bfd_scan_vma (const char *string, const char **end, int base); + *Description* +Convert, like `strtoul', a numerical expression STRING into a `bfd_vma' +integer, and return that integer. (Though without as many bells and +whistles as `strtoul'.) The expression is assumed to be unsigned +(i.e., positive). If given a BASE, it is used as the base for +conversion. A base of 0 causes the function to interpret the string in +hex if a leading "0x" or "0X" is found, otherwise in octal if a leading +zero is found, otherwise in decimal. + + If the value would overflow, the maximum `bfd_vma' value is returned. + +2.3.1.11 `bfd_copy_private_header_data' +....................................... + +*Synopsis* + bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); + *Description* +Copy private BFD header information from the BFD IBFD to the the BFD +OBFD. This copies information that may require sections to exist, but +does not require symbol tables. Return `true' on success, `false' on +error. Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OBFD. + + #define bfd_copy_private_header_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_header_data, \ + (ibfd, obfd)) + +2.3.1.12 `bfd_copy_private_bfd_data' +.................................... + +*Synopsis* + bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); + *Description* +Copy private BFD information from the BFD IBFD to the the BFD OBFD. +Return `TRUE' on success, `FALSE' on error. Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OBFD. + + #define bfd_copy_private_bfd_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ + (ibfd, obfd)) + +2.3.1.13 `bfd_merge_private_bfd_data' +..................................... + +*Synopsis* + bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd); + *Description* +Merge private BFD information from the BFD IBFD to the the output file +BFD OBFD when linking. Return `TRUE' on success, `FALSE' on error. +Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OBFD. + + #define bfd_merge_private_bfd_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ + (ibfd, obfd)) + +2.3.1.14 `bfd_set_private_flags' +................................ + +*Synopsis* + bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags); + *Description* +Set private BFD flag information in the BFD ABFD. Return `TRUE' on +success, `FALSE' on error. Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OBFD. + + #define bfd_set_private_flags(abfd, flags) \ + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags)) + +2.3.1.15 `Other functions' +.......................... + +*Description* +The following functions exist but have not yet been documented. + #define bfd_sizeof_headers(abfd, info) \ + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info)) + + #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, NULL)) + + #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \ + line, disc) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, disc)) + + #define bfd_find_line(abfd, syms, sym, file, line) \ + BFD_SEND (abfd, _bfd_find_line, \ + (abfd, syms, sym, file, line)) + + #define bfd_find_inliner_info(abfd, file, func, line) \ + BFD_SEND (abfd, _bfd_find_inliner_info, \ + (abfd, file, func, line)) + + #define bfd_debug_info_start(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) + + #define bfd_debug_info_end(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) + + #define bfd_debug_info_accumulate(abfd, section) \ + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) + + #define bfd_stat_arch_elt(abfd, stat) \ + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) + + #define bfd_update_armap_timestamp(abfd) \ + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) + + #define bfd_set_arch_mach(abfd, arch, mach)\ + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) + + #define bfd_relax_section(abfd, section, link_info, again) \ + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) + + #define bfd_gc_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info)) + + #define bfd_lookup_section_flags(link_info, flag_info, section) \ + BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section)) + + #define bfd_merge_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info)) + + #define bfd_is_group_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec)) + + #define bfd_discard_group(abfd, sec) \ + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec)) + + #define bfd_link_hash_table_create(abfd) \ + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) + + #define bfd_link_add_symbols(abfd, info) \ + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) + + #define bfd_link_just_syms(abfd, sec, info) \ + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) + + #define bfd_final_link(abfd, info) \ + BFD_SEND (abfd, _bfd_final_link, (abfd, info)) + + #define bfd_free_cached_info(abfd) \ + BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) + + #define bfd_get_dynamic_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) + + #define bfd_print_private_bfd_data(abfd, file)\ + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) + + #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) + + #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ + dyncount, dynsyms, ret)) + + #define bfd_get_dynamic_reloc_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) + + #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) + + extern bfd_byte *bfd_get_relocated_section_contents + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, + bfd_boolean, asymbol **); + +2.3.1.16 `bfd_alt_mach_code' +............................ + +*Synopsis* + bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative); + *Description* +When more than one machine code number is available for the same +machine type, this function can be used to switch between the preferred +one (alternative == 0) and any others. Currently, only ELF supports +this feature, with up to two alternate machine codes. + +2.3.1.17 `bfd_emul_get_maxpagesize' +................................... + +*Synopsis* + bfd_vma bfd_emul_get_maxpagesize (const char *); + *Description* +Returns the maximum page size, in bytes, as determined by emulation. + + *Returns* +Returns the maximum page size in bytes for ELF, 0 otherwise. + +2.3.1.18 `bfd_emul_set_maxpagesize' +................................... + +*Synopsis* + void bfd_emul_set_maxpagesize (const char *, bfd_vma); + *Description* +For ELF, set the maximum page size for the emulation. It is a no-op +for other formats. + +2.3.1.19 `bfd_emul_get_commonpagesize' +...................................... + +*Synopsis* + bfd_vma bfd_emul_get_commonpagesize (const char *); + *Description* +Returns the common page size, in bytes, as determined by emulation. + + *Returns* +Returns the common page size in bytes for ELF, 0 otherwise. + +2.3.1.20 `bfd_emul_set_commonpagesize' +...................................... + +*Synopsis* + void bfd_emul_set_commonpagesize (const char *, bfd_vma); + *Description* +For ELF, set the common page size for the emulation. It is a no-op for +other formats. + +2.3.1.21 `bfd_demangle' +....................... + +*Synopsis* + char *bfd_demangle (bfd *, const char *, int); + *Description* +Wrapper around cplus_demangle. Strips leading underscores and other +such chars that would otherwise confuse the demangler. If passed a g++ +v3 ABI mangled name, returns a buffer allocated with malloc holding the +demangled name. Returns NULL otherwise and on memory alloc failure. + +2.3.1.22 `struct bfd_iovec' +........................... + +*Description* +The `struct bfd_iovec' contains the internal file I/O class. Each +`BFD' has an instance of this class and all file I/O is routed through +it (it is assumed that the instance implements all methods listed +below). + struct bfd_iovec + { + /* To avoid problems with macros, a "b" rather than "f" + prefix is prepended to each method name. */ + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching + bytes starting at PTR. Return the number of bytes actually + transfered (a read past end-of-file returns less than NBYTES), + or -1 (setting `bfd_error') if an error occurs. */ + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes); + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr, + file_ptr nbytes); + /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error' + if an error occurs. */ + file_ptr (*btell) (struct bfd *abfd); + /* For the following, on successful completion a value of 0 is returned. + Otherwise, a value of -1 is returned (and `bfd_error' is set). */ + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence); + int (*bclose) (struct bfd *abfd); + int (*bflush) (struct bfd *abfd); + int (*bstat) (struct bfd *abfd, struct stat *sb); + /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual + mmap parameter, except that LEN and OFFSET do not need to be page + aligned. Returns (void *)-1 on failure, mmapped address on success. + Also write in MAP_ADDR the address of the page aligned buffer and in + MAP_LEN the size mapped (a page multiple). Use unmap with MAP_ADDR and + MAP_LEN to unmap. */ + void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); + }; + extern const struct bfd_iovec _bfd_memory_iovec; + +2.3.1.23 `bfd_get_mtime' +........................ + +*Synopsis* + long bfd_get_mtime (bfd *abfd); + *Description* +Return the file modification time (as read from the file system, or +from the archive header for archive members). + +2.3.1.24 `bfd_get_size' +....................... + +*Synopsis* + file_ptr bfd_get_size (bfd *abfd); + *Description* +Return the file size (as read from file system) for the file associated +with BFD ABFD. + + The initial motivation for, and use of, this routine is not so we +can get the exact size of the object the BFD applies to, since that +might not be generally possible (archive members for example). It +would be ideal if someone could eventually modify it so that such +results were guaranteed. + + Instead, we want to ask questions like "is this NNN byte sized +object I'm about to try read from file offset YYY reasonable?" As as +example of where we might do this, some object formats use string +tables for which the first `sizeof (long)' bytes of the table contain +the size of the table itself, including the size bytes. If an +application tries to read what it thinks is one of these string tables, +without some way to validate the size, and for some reason the size is +wrong (byte swapping error, wrong location for the string table, etc.), +the only clue is likely to be a read error when it tries to read the +table, or a "virtual memory exhausted" error when it tries to allocate +15 bazillon bytes of space for the 15 bazillon byte table it is about +to read. This function at least allows us to answer the question, "is +the size reasonable?". + +2.3.1.25 `bfd_mmap' +................... + +*Synopsis* + void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); + *Description* +Return mmap()ed region of the file, if possible and implemented. LEN +and OFFSET do not need to be page aligned. The page aligned address +and length are written to MAP_ADDR and MAP_LEN. + + +File: bfd.info, Node: Memory Usage, Next: Initialization, Prev: Miscellaneous, Up: BFD front end + +2.4 Memory Usage +================ + +BFD keeps all of its internal structures in obstacks. There is one +obstack per open BFD file, into which the current state is stored. When +a BFD is closed, the obstack is deleted, and so everything which has +been allocated by BFD for the closing file is thrown away. + + BFD does not free anything created by an application, but pointers +into `bfd' structures become invalid on a `bfd_close'; for example, +after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is +still around, since it has been allocated by the application, but the +data that it pointed to are lost. + + The general rule is to not close a BFD until all operations dependent +upon data from the BFD have been completed, or all the data from within +the file has been copied. To help with the management of memory, there +is a function (`bfd_alloc_size') which returns the number of bytes in +obstacks associated with the supplied BFD. This could be used to select +the greediest open BFD, close it to reclaim the memory, perform some +operation and reopen the BFD again, to get a fresh copy of the data +structures. + + +File: bfd.info, Node: Initialization, Next: Sections, Prev: Memory Usage, Up: BFD front end + +2.5 Initialization +================== + +2.5.1 Initialization functions +------------------------------ + +These are the functions that handle initializing a BFD. + +2.5.1.1 `bfd_init' +.................. + +*Synopsis* + void bfd_init (void); + *Description* +This routine must be called before any other BFD function to initialize +magical internal data structures. + + +File: bfd.info, Node: Sections, Next: Symbols, Prev: Initialization, Up: BFD front end + +2.6 Sections +============ + +The raw data contained within a BFD is maintained through the section +abstraction. A single BFD may have any number of sections. It keeps +hold of them by pointing to the first; each one points to the next in +the list. + + Sections are supported in BFD in `section.c'. + +* Menu: + +* Section Input:: +* Section Output:: +* typedef asection:: +* section prototypes:: + + +File: bfd.info, Node: Section Input, Next: Section Output, Prev: Sections, Up: Sections + +2.6.1 Section input +------------------- + +When a BFD is opened for reading, the section structures are created +and attached to the BFD. + + Each section has a name which describes the section in the outside +world--for example, `a.out' would contain at least three sections, +called `.text', `.data' and `.bss'. + + Names need not be unique; for example a COFF file may have several +sections named `.data'. + + Sometimes a BFD will contain more than the "natural" number of +sections. A back end may attach other sections containing constructor +data, or an application may add a section (using `bfd_make_section') to +the sections attached to an already open BFD. For example, the linker +creates an extra section `COMMON' for each input file's BFD to hold +information about common storage. + + The raw data is not necessarily read in when the section descriptor +is created. Some targets may leave the data in place until a +`bfd_get_section_contents' call is made. Other back ends may read in +all the data at once. For example, an S-record file has to be read +once to determine the size of the data. An IEEE-695 file doesn't +contain raw data in sections, but data and relocation expressions +intermixed, so the data area has to be parsed to get out the data and +relocations. + + +File: bfd.info, Node: Section Output, Next: typedef asection, Prev: Section Input, Up: Sections + +2.6.2 Section output +-------------------- + +To write a new object style BFD, the various sections to be written +have to be created. They are attached to the BFD in the same way as +input sections; data is written to the sections using +`bfd_set_section_contents'. + + Any program that creates or combines sections (e.g., the assembler +and linker) must use the `asection' fields `output_section' and +`output_offset' to indicate the file sections to which each section +must be written. (If the section is being created from scratch, +`output_section' should probably point to the section itself and +`output_offset' should probably be zero.) + + The data to be written comes from input sections attached (via +`output_section' pointers) to the output sections. The output section +structure can be considered a filter for the input section: the output +section determines the vma of the output data and the name, but the +input section determines the offset into the output section of the data +to be written. + + E.g., to create a section "O", starting at 0x100, 0x123 long, +containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and +"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would +look like: + + section name "A" + output_offset 0x00 + size 0x20 + output_section -----------> section name "O" + | vma 0x100 + section name "B" | size 0x123 + output_offset 0x20 | + size 0x103 | + output_section --------| + +2.6.3 Link orders +----------------- + +The data within a section is stored in a "link_order". These are much +like the fixups in `gas'. The link_order abstraction allows a section +to grow and shrink within itself. + + A link_order knows how big it is, and which is the next link_order +and where the raw data for it is; it also points to a list of +relocations which apply to it. + + The link_order is used by the linker to perform relaxing on final +code. The compiler creates code which is as big as necessary to make +it work without relaxing, and the user can select whether to relax. +Sometimes relaxing takes a lot of time. The linker runs around the +relocations to see if any are attached to data which can be shrunk, if +so it does it on a link_order by link_order basis. + + +File: bfd.info, Node: typedef asection, Next: section prototypes, Prev: Section Output, Up: Sections + +2.6.4 typedef asection +---------------------- + +Here is the section structure: + + + typedef struct bfd_section + { + /* The name of the section; the name isn't a copy, the pointer is + the same as that passed to bfd_make_section. */ + const char *name; + + /* A unique sequence number. */ + int id; + + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ + int index; + + /* The next section in the list belonging to the BFD, or NULL. */ + struct bfd_section *next; + + /* The previous section in the list belonging to the BFD, or NULL. */ + struct bfd_section *prev; + + /* The field flags contains attributes of the section. Some + flags are read in from the object file, and some are + synthesized from other information. */ + flagword flags; + + #define SEC_NO_FLAGS 0x000 + + /* Tells the OS to allocate space for this section when loading. + This is clear for a section containing debug information only. */ + #define SEC_ALLOC 0x001 + + /* Tells the OS to load the section from the file when loading. + This is clear for a .bss section. */ + #define SEC_LOAD 0x002 + + /* The section contains data still to be relocated, so there is + some relocation information too. */ + #define SEC_RELOC 0x004 + + /* A signal to the OS that the section contains read only data. */ + #define SEC_READONLY 0x008 + + /* The section contains code only. */ + #define SEC_CODE 0x010 + + /* The section contains data only. */ + #define SEC_DATA 0x020 + + /* The section will reside in ROM. */ + #define SEC_ROM 0x040 + + /* The section contains constructor information. This section + type is used by the linker to create lists of constructors and + destructors used by `g++'. When a back end sees a symbol + which should be used in a constructor list, it creates a new + section for the type of name (e.g., `__CTOR_LIST__'), attaches + the symbol to it, and builds a relocation. To build the lists + of constructors, all the linker has to do is catenate all the + sections called `__CTOR_LIST__' and relocate the data + contained within - exactly the operations it would peform on + standard data. */ + #define SEC_CONSTRUCTOR 0x080 + + /* The section has contents - a data section could be + `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be + `SEC_HAS_CONTENTS' */ + #define SEC_HAS_CONTENTS 0x100 + + /* An instruction to the linker to not output the section + even if it has information which would normally be written. */ + #define SEC_NEVER_LOAD 0x200 + + /* The section contains thread local data. */ + #define SEC_THREAD_LOCAL 0x400 + + /* The section has GOT references. This flag is only for the + linker, and is currently only used by the elf32-hppa back end. + It will be set if global offset table references were detected + in this section, which indicate to the linker that the section + contains PIC code, and must be handled specially when doing a + static link. */ + #define SEC_HAS_GOT_REF 0x800 + + /* The section contains common symbols (symbols may be defined + multiple times, the value of a symbol is the amount of + space it requires, and the largest symbol value is the one + used). Most targets have exactly one of these (which we + translate to bfd_com_section_ptr), but ECOFF has two. */ + #define SEC_IS_COMMON 0x1000 + + /* The section contains only debugging information. For + example, this is set for ELF .debug and .stab sections. + strip tests this flag to see if a section can be + discarded. */ + #define SEC_DEBUGGING 0x2000 + + /* The contents of this section are held in memory pointed to + by the contents field. This is checked by bfd_get_section_contents, + and the data is retrieved from memory if appropriate. */ + #define SEC_IN_MEMORY 0x4000 + + /* The contents of this section are to be excluded by the + linker for executable and shared objects unless those + objects are to be further relocated. */ + #define SEC_EXCLUDE 0x8000 + + /* The contents of this section are to be sorted based on the sum of + the symbol and addend values specified by the associated relocation + entries. Entries without associated relocation entries will be + appended to the end of the section in an unspecified order. */ + #define SEC_SORT_ENTRIES 0x10000 + + /* When linking, duplicate sections of the same name should be + discarded, rather than being combined into a single section as + is usually done. This is similar to how common symbols are + handled. See SEC_LINK_DUPLICATES below. */ + #define SEC_LINK_ONCE 0x20000 + + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker + should handle duplicate sections. */ + #define SEC_LINK_DUPLICATES 0xc0000 + + /* This value for SEC_LINK_DUPLICATES means that duplicate + sections with the same name should simply be discarded. */ + #define SEC_LINK_DUPLICATES_DISCARD 0x0 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if there are any duplicate sections, although + it should still only link one copy. */ + #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections are a different size. */ + #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections contain different + contents. */ + #define SEC_LINK_DUPLICATES_SAME_CONTENTS \ + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE) + + /* This section was created by the linker as part of dynamic + relocation or other arcane processing. It is skipped when + going through the first-pass output, trusting that someone + else up the line will take care of it later. */ + #define SEC_LINKER_CREATED 0x100000 + + /* This section should not be subject to garbage collection. + Also set to inform the linker that this section should not be + listed in the link map as discarded. */ + #define SEC_KEEP 0x200000 + + /* This section contains "short" data, and should be placed + "near" the GP. */ + #define SEC_SMALL_DATA 0x400000 + + /* Attempt to merge identical entities in the section. + Entity size is given in the entsize field. */ + #define SEC_MERGE 0x800000 + + /* If given with SEC_MERGE, entities to merge are zero terminated + strings where entsize specifies character size instead of fixed + size entries. */ + #define SEC_STRINGS 0x1000000 + + /* This section contains data about section groups. */ + #define SEC_GROUP 0x2000000 + + /* The section is a COFF shared library section. This flag is + only for the linker. If this type of section appears in + the input file, the linker must copy it to the output file + without changing the vma or size. FIXME: Although this + was originally intended to be general, it really is COFF + specific (and the flag was renamed to indicate this). It + might be cleaner to have some more general mechanism to + allow the back end to control what the linker does with + sections. */ + #define SEC_COFF_SHARED_LIBRARY 0x4000000 + + /* This input section should be copied to output in reverse order + as an array of pointers. This is for ELF linker internal use + only. */ + #define SEC_ELF_REVERSE_COPY 0x4000000 + + /* This section contains data which may be shared with other + executables or shared objects. This is for COFF only. */ + #define SEC_COFF_SHARED 0x8000000 + + /* When a section with this flag is being linked, then if the size of + the input section is less than a page, it should not cross a page + boundary. If the size of the input section is one page or more, + it should be aligned on a page boundary. This is for TI + TMS320C54X only. */ + #define SEC_TIC54X_BLOCK 0x10000000 + + /* Conditionally link this section; do not link if there are no + references found to any symbol in the section. This is for TI + TMS320C54X only. */ + #define SEC_TIC54X_CLINK 0x20000000 + + /* Indicate that section has the no read flag set. This happens + when memory read flag isn't set. */ + #define SEC_COFF_NOREAD 0x40000000 + + /* End of section flags. */ + + /* Some internal packed boolean fields. */ + + /* See the vma field. */ + unsigned int user_set_vma : 1; + + /* A mark flag used by some of the linker backends. */ + unsigned int linker_mark : 1; + + /* Another mark flag used by some of the linker backends. Set for + output sections that have an input section. */ + unsigned int linker_has_input : 1; + + /* Mark flag used by some linker backends for garbage collection. */ + unsigned int gc_mark : 1; + + /* Section compression status. */ + unsigned int compress_status : 2; + #define COMPRESS_SECTION_NONE 0 + #define COMPRESS_SECTION_DONE 1 + #define DECOMPRESS_SECTION_SIZED 2 + + /* The following flags are used by the ELF linker. */ + + /* Mark sections which have been allocated to segments. */ + unsigned int segment_mark : 1; + + /* Type of sec_info information. */ + unsigned int sec_info_type:3; + #define SEC_INFO_TYPE_NONE 0 + #define SEC_INFO_TYPE_STABS 1 + #define SEC_INFO_TYPE_MERGE 2 + #define SEC_INFO_TYPE_EH_FRAME 3 + #define SEC_INFO_TYPE_JUST_SYMS 4 + #define SEC_INFO_TYPE_TARGET 5 + + /* Nonzero if this section uses RELA relocations, rather than REL. */ + unsigned int use_rela_p:1; + + /* Bits used by various backends. The generic code doesn't touch + these fields. */ + + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; + + /* End of internal packed boolean fields. */ + + /* The virtual memory address of the section - where it will be + at run time. The symbols are relocated against this. The + user_set_vma flag is maintained by bfd; if it's not set, the + backend can assign addresses (for example, in `a.out', where + the default address for `.data' is dependent on the specific + target and various flags). */ + bfd_vma vma; + + /* The load address of the section - where it would be in a + rom image; really only used for writing section header + information. */ + bfd_vma lma; + + /* The size of the section in octets, as it will be output. + Contains a value even if the section has no contents (e.g., the + size of `.bss'). */ + bfd_size_type size; + + /* For input sections, the original size on disk of the section, in + octets. This field should be set for any section whose size is + changed by linker relaxation. It is required for sections where + the linker relaxation scheme doesn't cache altered section and + reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing + targets), and thus the original size needs to be kept to read the + section multiple times. For output sections, rawsize holds the + section size calculated on a previous linker relaxation pass. */ + bfd_size_type rawsize; + + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + + /* Relaxation table. */ + struct relax_table *relax; + + /* Count of used relaxation table entries. */ + int relax_count; + + + /* If this section is going to be output, then this value is the + offset in *bytes* into the output section of the first byte in the + input section (byte ==> smallest addressable unit on the + target). In most cases, if this was going to start at the + 100th octet (8-bit quantity) in the output section, this value + would be 100. However, if the target byte size is 16 bits + (bfd_octets_per_byte is "2"), this value would be 50. */ + bfd_vma output_offset; + + /* The output section through which to map on output. */ + struct bfd_section *output_section; + + /* The alignment requirement of the section, as an exponent of 2 - + e.g., 3 aligns to 2^3 (or 8). */ + unsigned int alignment_power; + + /* If an input section, a pointer to a vector of relocation + records for the data in this section. */ + struct reloc_cache_entry *relocation; + + /* If an output section, a pointer to a vector of pointers to + relocation records for the data in this section. */ + struct reloc_cache_entry **orelocation; + + /* The number of relocation records in one of the above. */ + unsigned reloc_count; + + /* Information below is back end specific - and not always used + or updated. */ + + /* File position of section data. */ + file_ptr filepos; + + /* File position of relocation info. */ + file_ptr rel_filepos; + + /* File position of line data. */ + file_ptr line_filepos; + + /* Pointer to data for applications. */ + void *userdata; + + /* If the SEC_IN_MEMORY flag is set, this points to the actual + contents. */ + unsigned char *contents; + + /* Attached line number information. */ + alent *lineno; + + /* Number of line number records. */ + unsigned int lineno_count; + + /* Entity size for merging purposes. */ + unsigned int entsize; + + /* Points to the kept section if this section is a link-once section, + and is discarded. */ + struct bfd_section *kept_section; + + /* When a section is being output, this value changes as more + linenumbers are written out. */ + file_ptr moving_line_filepos; + + /* What the section number is in the target world. */ + int target_index; + + void *used_by_bfd; + + /* If this is a constructor section then here is a list of the + relocations created to relocate items within it. */ + struct relent_chain *constructor_chain; + + /* The BFD which owns the section. */ + bfd *owner; + + /* A symbol which points at this section only. */ + struct bfd_symbol *symbol; + struct bfd_symbol **symbol_ptr_ptr; + + /* Early in the link process, map_head and map_tail are used to build + a list of input sections attached to an output section. Later, + output sections use these fields for a list of bfd_link_order + structs. */ + union { + struct bfd_link_order *link_order; + struct bfd_section *s; + } map_head, map_tail; + } asection; + + /* Relax table contains information about instructions which can + be removed by relaxation -- replacing a long address with a + short address. */ + struct relax_table { + /* Address where bytes may be deleted. */ + bfd_vma addr; + + /* Number of bytes to be deleted. */ + int size; + }; + + /* Note: the following are provided as inline functions rather than macros + because not all callers use the return value. A macro implementation + would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some + compilers will complain about comma expressions that have no effect. */ + static inline bfd_boolean + bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val) + { + ptr->userdata = val; + return TRUE; + } + + static inline bfd_boolean + bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val) + { + ptr->vma = ptr->lma = val; + ptr->user_set_vma = TRUE; + return TRUE; + } + + static inline bfd_boolean + bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val) + { + ptr->alignment_power = val; + return TRUE; + } + + /* These sections are global, and are managed by BFD. The application + and target back end are not permitted to change the values in + these sections. */ + extern asection _bfd_std_section[4]; + + #define BFD_ABS_SECTION_NAME "*ABS*" + #define BFD_UND_SECTION_NAME "*UND*" + #define BFD_COM_SECTION_NAME "*COM*" + #define BFD_IND_SECTION_NAME "*IND*" + + /* Pointer to the common section. */ + #define bfd_com_section_ptr (&_bfd_std_section[0]) + /* Pointer to the undefined section. */ + #define bfd_und_section_ptr (&_bfd_std_section[1]) + /* Pointer to the absolute section. */ + #define bfd_abs_section_ptr (&_bfd_std_section[2]) + /* Pointer to the indirect section. */ + #define bfd_ind_section_ptr (&_bfd_std_section[3]) + + #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) + #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) + #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) + + #define bfd_is_const_section(SEC) \ + ( ((SEC) == bfd_abs_section_ptr) \ + || ((SEC) == bfd_und_section_ptr) \ + || ((SEC) == bfd_com_section_ptr) \ + || ((SEC) == bfd_ind_section_ptr)) + + /* Macros to handle insertion and deletion of a bfd's sections. These + only handle the list pointers, ie. do not adjust section_count, + target_index etc. */ + #define bfd_section_list_remove(ABFD, S) \ + do \ + { \ + asection *_s = S; \ + asection *_next = _s->next; \ + asection *_prev = _s->prev; \ + if (_prev) \ + _prev->next = _next; \ + else \ + (ABFD)->sections = _next; \ + if (_next) \ + _next->prev = _prev; \ + else \ + (ABFD)->section_last = _prev; \ + } \ + while (0) + #define bfd_section_list_append(ABFD, S) \ + do \ + { \ + asection *_s = S; \ + bfd *_abfd = ABFD; \ + _s->next = NULL; \ + if (_abfd->section_last) \ + { \ + _s->prev = _abfd->section_last; \ + _abfd->section_last->next = _s; \ + } \ + else \ + { \ + _s->prev = NULL; \ + _abfd->sections = _s; \ + } \ + _abfd->section_last = _s; \ + } \ + while (0) + #define bfd_section_list_prepend(ABFD, S) \ + do \ + { \ + asection *_s = S; \ + bfd *_abfd = ABFD; \ + _s->prev = NULL; \ + if (_abfd->sections) \ + { \ + _s->next = _abfd->sections; \ + _abfd->sections->prev = _s; \ + } \ + else \ + { \ + _s->next = NULL; \ + _abfd->section_last = _s; \ + } \ + _abfd->sections = _s; \ + } \ + while (0) + #define bfd_section_list_insert_after(ABFD, A, S) \ + do \ + { \ + asection *_a = A; \ + asection *_s = S; \ + asection *_next = _a->next; \ + _s->next = _next; \ + _s->prev = _a; \ + _a->next = _s; \ + if (_next) \ + _next->prev = _s; \ + else \ + (ABFD)->section_last = _s; \ + } \ + while (0) + #define bfd_section_list_insert_before(ABFD, B, S) \ + do \ + { \ + asection *_b = B; \ + asection *_s = S; \ + asection *_prev = _b->prev; \ + _s->prev = _prev; \ + _s->next = _b; \ + _b->prev = _s; \ + if (_prev) \ + _prev->next = _s; \ + else \ + (ABFD)->sections = _s; \ + } \ + while (0) + #define bfd_section_removed_from_list(ABFD, S) \ + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) + + #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ + /* name, id, index, next, prev, flags, user_set_vma, */ \ + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ + \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ + \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ + \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ + \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ + \ + /* output_offset, output_section, alignment_power, */ \ + 0, &SEC, 0, \ + \ + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ + NULL, NULL, 0, 0, 0, \ + \ + /* line_filepos, userdata, contents, lineno, lineno_count, */ \ + 0, NULL, NULL, NULL, 0, \ + \ + /* entsize, kept_section, moving_line_filepos, */ \ + 0, NULL, 0, \ + \ + /* target_index, used_by_bfd, constructor_chain, owner, */ \ + 0, NULL, NULL, NULL, \ + \ + /* symbol, symbol_ptr_ptr, */ \ + (struct bfd_symbol *) SYM, &SEC.symbol, \ + \ + /* map_head, map_tail */ \ + { NULL }, { NULL } \ + } + + +File: bfd.info, Node: section prototypes, Prev: typedef asection, Up: Sections + +2.6.5 Section prototypes +------------------------ + +These are the functions exported by the section handling part of BFD. + +2.6.5.1 `bfd_section_list_clear' +................................ + +*Synopsis* + void bfd_section_list_clear (bfd *); + *Description* +Clears the section list, and also resets the section count and hash +table entries. + +2.6.5.2 `bfd_get_section_by_name' +................................. + +*Synopsis* + asection *bfd_get_section_by_name (bfd *abfd, const char *name); + *Description* +Return the most recently created section attached to ABFD named NAME. +Return NULL if no such section exists. + +2.6.5.3 `bfd_get_next_section_by_name' +...................................... + +*Synopsis* + asection *bfd_get_next_section_by_name (asection *sec); + *Description* +Given SEC is a section returned by `bfd_get_section_by_name', return +the next most recently created section attached to the same BFD with +the same name. Return NULL if no such section exists. + +2.6.5.4 `bfd_get_linker_section' +................................ + +*Synopsis* + asection *bfd_get_linker_section (bfd *abfd, const char *name); + *Description* +Return the linker created section attached to ABFD named NAME. Return +NULL if no such section exists. + +2.6.5.5 `bfd_get_section_by_name_if' +.................................... + +*Synopsis* + asection *bfd_get_section_by_name_if + (bfd *abfd, + const char *name, + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); + *Description* +Call the provided function FUNC for each section attached to the BFD +ABFD whose name matches NAME, passing OBJ as an argument. The function +will be called as if by + + func (abfd, the_section, obj); + + It returns the first section for which FUNC returns true, otherwise +`NULL'. + +2.6.5.6 `bfd_get_unique_section_name' +..................................... + +*Synopsis* + char *bfd_get_unique_section_name + (bfd *abfd, const char *templat, int *count); + *Description* +Invent a section name that is unique in ABFD by tacking a dot and a +digit suffix onto the original TEMPLAT. If COUNT is non-NULL, then it +specifies the first number tried as a suffix to generate a unique name. +The value pointed to by COUNT will be incremented in this case. + +2.6.5.7 `bfd_make_section_old_way' +.................................. + +*Synopsis* + asection *bfd_make_section_old_way (bfd *abfd, const char *name); + *Description* +Create a new empty section called NAME and attach it to the end of the +chain of sections for the BFD ABFD. An attempt to create a section with +a name which is already in use returns its pointer without changing the +section chain. + + It has the funny name since this is the way it used to be before it +was rewritten.... + + Possible errors are: + * `bfd_error_invalid_operation' - If output has already started for + this BFD. + + * `bfd_error_no_memory' - If memory allocation fails. + +2.6.5.8 `bfd_make_section_anyway_with_flags' +............................................ + +*Synopsis* + asection *bfd_make_section_anyway_with_flags + (bfd *abfd, const char *name, flagword flags); + *Description* +Create a new empty section called NAME and attach it to the end of the +chain of sections for ABFD. Create a new section even if there is +already a section with that name. Also set the attributes of the new +section to the value FLAGS. + + Return `NULL' and set `bfd_error' on error; possible errors are: + * `bfd_error_invalid_operation' - If output has already started for + ABFD. + + * `bfd_error_no_memory' - If memory allocation fails. + +2.6.5.9 `bfd_make_section_anyway' +................................. + +*Synopsis* + asection *bfd_make_section_anyway (bfd *abfd, const char *name); + *Description* +Create a new empty section called NAME and attach it to the end of the +chain of sections for ABFD. Create a new section even if there is +already a section with that name. + + Return `NULL' and set `bfd_error' on error; possible errors are: + * `bfd_error_invalid_operation' - If output has already started for + ABFD. + + * `bfd_error_no_memory' - If memory allocation fails. + +2.6.5.10 `bfd_make_section_with_flags' +...................................... + +*Synopsis* + asection *bfd_make_section_with_flags + (bfd *, const char *name, flagword flags); + *Description* +Like `bfd_make_section_anyway', but return `NULL' (without calling +bfd_set_error ()) without changing the section chain if there is +already a section named NAME. Also set the attributes of the new +section to the value FLAGS. If there is an error, return `NULL' and set +`bfd_error'. + +2.6.5.11 `bfd_make_section' +........................... + +*Synopsis* + asection *bfd_make_section (bfd *, const char *name); + *Description* +Like `bfd_make_section_anyway', but return `NULL' (without calling +bfd_set_error ()) without changing the section chain if there is +already a section named NAME. If there is an error, return `NULL' and +set `bfd_error'. + +2.6.5.12 `bfd_set_section_flags' +................................ + +*Synopsis* + bfd_boolean bfd_set_section_flags + (bfd *abfd, asection *sec, flagword flags); + *Description* +Set the attributes of the section SEC in the BFD ABFD to the value +FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error +returns are: + + * `bfd_error_invalid_operation' - The section cannot have one or + more of the attributes requested. For example, a .bss section in + `a.out' may not have the `SEC_HAS_CONTENTS' field set. + +2.6.5.13 `bfd_rename_section' +............................. + +*Synopsis* + void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); + *Description* +Rename section SEC in ABFD to NEWNAME. + +2.6.5.14 `bfd_map_over_sections' +................................ + +*Synopsis* + void bfd_map_over_sections + (bfd *abfd, + void (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); + *Description* +Call the provided function FUNC for each section attached to the BFD +ABFD, passing OBJ as an argument. The function will be called as if by + + func (abfd, the_section, obj); + + This is the preferred method for iterating over sections; an +alternative would be to use a loop: + + asection *p; + for (p = abfd->sections; p != NULL; p = p->next) + func (abfd, p, ...) + +2.6.5.15 `bfd_sections_find_if' +............................... + +*Synopsis* + asection *bfd_sections_find_if + (bfd *abfd, + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj), + void *obj); + *Description* +Call the provided function OPERATION for each section attached to the +BFD ABFD, passing OBJ as an argument. The function will be called as if +by + + operation (abfd, the_section, obj); + + It returns the first section for which OPERATION returns true. + +2.6.5.16 `bfd_set_section_size' +............................... + +*Synopsis* + bfd_boolean bfd_set_section_size + (bfd *abfd, asection *sec, bfd_size_type val); + *Description* +Set SEC to the size VAL. If the operation is ok, then `TRUE' is +returned, else `FALSE'. + + Possible error returns: + * `bfd_error_invalid_operation' - Writing has started to the BFD, so + setting the size is invalid. + +2.6.5.17 `bfd_set_section_contents' +................................... + +*Synopsis* + bfd_boolean bfd_set_section_contents + (bfd *abfd, asection *section, const void *data, + file_ptr offset, bfd_size_type count); + *Description* +Sets the contents of the section SECTION in BFD ABFD to the data +starting in memory at DATA. The data is written to the output section +starting at offset OFFSET for COUNT octets. + + Normally `TRUE' is returned, else `FALSE'. Possible error returns +are: + * `bfd_error_no_contents' - The output section does not have the + `SEC_HAS_CONTENTS' attribute, so nothing can be written to it. + + * and some more too + This routine is front end to the back end function +`_bfd_set_section_contents'. + +2.6.5.18 `bfd_get_section_contents' +................................... + +*Synopsis* + bfd_boolean bfd_get_section_contents + (bfd *abfd, asection *section, void *location, file_ptr offset, + bfd_size_type count); + *Description* +Read data from SECTION in BFD ABFD into memory starting at LOCATION. +The data is read at an offset of OFFSET from the start of the input +section, and is read for COUNT bytes. + + If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set +are requested or if the section does not have the `SEC_HAS_CONTENTS' +flag set, then the LOCATION is filled with zeroes. If no errors occur, +`TRUE' is returned, else `FALSE'. + +2.6.5.19 `bfd_malloc_and_get_section' +..................................... + +*Synopsis* + bfd_boolean bfd_malloc_and_get_section + (bfd *abfd, asection *section, bfd_byte **buf); + *Description* +Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by +this function. + +2.6.5.20 `bfd_copy_private_section_data' +........................................ + +*Synopsis* + bfd_boolean bfd_copy_private_section_data + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); + *Description* +Copy private section information from ISEC in the BFD IBFD to the +section OSEC in the BFD OBFD. Return `TRUE' on success, `FALSE' on +error. Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OSEC. + + #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ + BFD_SEND (obfd, _bfd_copy_private_section_data, \ + (ibfd, isection, obfd, osection)) + +2.6.5.21 `bfd_generic_is_group_section' +....................................... + +*Synopsis* + bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); + *Description* +Returns TRUE if SEC is a member of a group. + +2.6.5.22 `bfd_generic_discard_group' +.................................... + +*Synopsis* + bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group); + *Description* +Remove all members of GROUP from the output. + + +File: bfd.info, Node: Symbols, Next: Archives, Prev: Sections, Up: BFD front end + +2.7 Symbols +=========== + +BFD tries to maintain as much symbol information as it can when it +moves information from file to file. BFD passes information to +applications though the `asymbol' structure. When the application +requests the symbol table, BFD reads the table in the native form and +translates parts of it into the internal format. To maintain more than +the information passed to applications, some targets keep some +information "behind the scenes" in a structure only the particular back +end knows about. For example, the coff back end keeps the original +symbol table structure as well as the canonical structure when a BFD is +read in. On output, the coff back end can reconstruct the output symbol +table so that no information is lost, even information unique to coff +which BFD doesn't know or understand. If a coff symbol table were read, +but were written through an a.out back end, all the coff specific +information would be lost. The symbol table of a BFD is not necessarily +read in until a canonicalize request is made. Then the BFD back end +fills in a table provided by the application with pointers to the +canonical information. To output symbols, the application provides BFD +with a table of pointers to pointers to `asymbol's. This allows +applications like the linker to output a symbol as it was read, since +the "behind the scenes" information will be still available. + +* Menu: + +* Reading Symbols:: +* Writing Symbols:: +* Mini Symbols:: +* typedef asymbol:: +* symbol handling functions:: + + +File: bfd.info, Node: Reading Symbols, Next: Writing Symbols, Prev: Symbols, Up: Symbols + +2.7.1 Reading symbols +--------------------- + +There are two stages to reading a symbol table from a BFD: allocating +storage, and the actual reading process. This is an excerpt from an +application which reads the symbol table: + + long storage_needed; + asymbol **symbol_table; + long number_of_symbols; + long i; + + storage_needed = bfd_get_symtab_upper_bound (abfd); + + if (storage_needed < 0) + FAIL + + if (storage_needed == 0) + return; + + symbol_table = xmalloc (storage_needed); + ... + number_of_symbols = + bfd_canonicalize_symtab (abfd, symbol_table); + + if (number_of_symbols < 0) + FAIL + + for (i = 0; i < number_of_symbols; i++) + process_symbol (symbol_table[i]); + + All storage for the symbols themselves is in an objalloc connected +to the BFD; it is freed when the BFD is closed. + + +File: bfd.info, Node: Writing Symbols, Next: Mini Symbols, Prev: Reading Symbols, Up: Symbols + +2.7.2 Writing symbols +--------------------- + +Writing of a symbol table is automatic when a BFD open for writing is +closed. The application attaches a vector of pointers to pointers to +symbols to the BFD being written, and fills in the symbol count. The +close and cleanup code reads through the table provided and performs +all the necessary operations. The BFD output code must always be +provided with an "owned" symbol: one which has come from another BFD, +or one which has been created using `bfd_make_empty_symbol'. Here is an +example showing the creation of a symbol table with only one element: + + #include "sysdep.h" + #include "bfd.h" + int main (void) + { + bfd *abfd; + asymbol *ptrs[2]; + asymbol *new; + + abfd = bfd_openw ("foo","a.out-sunos-big"); + bfd_set_format (abfd, bfd_object); + new = bfd_make_empty_symbol (abfd); + new->name = "dummy_symbol"; + new->section = bfd_make_section_old_way (abfd, ".text"); + new->flags = BSF_GLOBAL; + new->value = 0x12345; + + ptrs[0] = new; + ptrs[1] = 0; + + bfd_set_symtab (abfd, ptrs, 1); + bfd_close (abfd); + return 0; + } + + ./makesym + nm foo + 00012345 A dummy_symbol + + Many formats cannot represent arbitrary symbol information; for +instance, the `a.out' object format does not allow an arbitrary number +of sections. A symbol pointing to a section which is not one of +`.text', `.data' or `.bss' cannot be described. + + +File: bfd.info, Node: Mini Symbols, Next: typedef asymbol, Prev: Writing Symbols, Up: Symbols + +2.7.3 Mini Symbols +------------------ + +Mini symbols provide read-only access to the symbol table. They use +less memory space, but require more time to access. They can be useful +for tools like nm or objdump, which may have to handle symbol tables of +extremely large executables. + + The `bfd_read_minisymbols' function will read the symbols into +memory in an internal form. It will return a `void *' pointer to a +block of memory, a symbol count, and the size of each symbol. The +pointer is allocated using `malloc', and should be freed by the caller +when it is no longer needed. + + The function `bfd_minisymbol_to_symbol' will take a pointer to a +minisymbol, and a pointer to a structure returned by +`bfd_make_empty_symbol', and return a `asymbol' structure. The return +value may or may not be the same as the value from +`bfd_make_empty_symbol' which was passed in. + + +File: bfd.info, Node: typedef asymbol, Next: symbol handling functions, Prev: Mini Symbols, Up: Symbols + +2.7.4 typedef asymbol +--------------------- + +An `asymbol' has the form: + + + typedef struct bfd_symbol + { + /* A pointer to the BFD which owns the symbol. This information + is necessary so that a back end can work out what additional + information (invisible to the application writer) is carried + with the symbol. + + This field is *almost* redundant, since you can use section->owner + instead, except that some symbols point to the global sections + bfd_{abs,com,und}_section. This could be fixed by making + these globals be per-bfd (or per-target-flavor). FIXME. */ + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ + + /* The text of the symbol. The name is left alone, and not copied; the + application may not alter it. */ + const char *name; + + /* The value of the symbol. This really should be a union of a + numeric value with a pointer, since some flags indicate that + a pointer to another symbol is stored here. */ + symvalue value; + + /* Attributes of a symbol. */ + #define BSF_NO_FLAGS 0x00 + + /* The symbol has local scope; `static' in `C'. The value + is the offset into the section of the data. */ + #define BSF_LOCAL (1 << 0) + + /* The symbol has global scope; initialized data in `C'. The + value is the offset into the section of the data. */ + #define BSF_GLOBAL (1 << 1) + + /* The symbol has global scope and is exported. The value is + the offset into the section of the data. */ + #define BSF_EXPORT BSF_GLOBAL /* No real difference. */ + + /* A normal C symbol would be one of: + `BSF_LOCAL', `BSF_COMMON', `BSF_UNDEFINED' or + `BSF_GLOBAL'. */ + + /* The symbol is a debugging record. The value has an arbitrary + meaning, unless BSF_DEBUGGING_RELOC is also set. */ + #define BSF_DEBUGGING (1 << 2) + + /* The symbol denotes a function entry point. Used in ELF, + perhaps others someday. */ + #define BSF_FUNCTION (1 << 3) + + /* Used by the linker. */ + #define BSF_KEEP (1 << 5) + #define BSF_KEEP_G (1 << 6) + + /* A weak global symbol, overridable without warnings by + a regular global symbol of the same name. */ + #define BSF_WEAK (1 << 7) + + /* This symbol was created to point to a section, e.g. ELF's + STT_SECTION symbols. */ + #define BSF_SECTION_SYM (1 << 8) + + /* The symbol used to be a common symbol, but now it is + allocated. */ + #define BSF_OLD_COMMON (1 << 9) + + /* In some files the type of a symbol sometimes alters its + location in an output file - ie in coff a `ISFCN' symbol + which is also `C_EXT' symbol appears where it was + declared and not at the end of a section. This bit is set + by the target BFD part to convey this information. */ + #define BSF_NOT_AT_END (1 << 10) + + /* Signal that the symbol is the label of constructor section. */ + #define BSF_CONSTRUCTOR (1 << 11) + + /* Signal that the symbol is a warning symbol. The name is a + warning. The name of the next symbol is the one to warn about; + if a reference is made to a symbol with the same name as the next + symbol, a warning is issued by the linker. */ + #define BSF_WARNING (1 << 12) + + /* Signal that the symbol is indirect. This symbol is an indirect + pointer to the symbol with the same name as the next symbol. */ + #define BSF_INDIRECT (1 << 13) + + /* BSF_FILE marks symbols that contain a file name. This is used + for ELF STT_FILE symbols. */ + #define BSF_FILE (1 << 14) + + /* Symbol is from dynamic linking information. */ + #define BSF_DYNAMIC (1 << 15) + + /* The symbol denotes a data object. Used in ELF, and perhaps + others someday. */ + #define BSF_OBJECT (1 << 16) + + /* This symbol is a debugging symbol. The value is the offset + into the section of the data. BSF_DEBUGGING should be set + as well. */ + #define BSF_DEBUGGING_RELOC (1 << 17) + + /* This symbol is thread local. Used in ELF. */ + #define BSF_THREAD_LOCAL (1 << 18) + + /* This symbol represents a complex relocation expression, + with the expression tree serialized in the symbol name. */ + #define BSF_RELC (1 << 19) + + /* This symbol represents a signed complex relocation expression, + with the expression tree serialized in the symbol name. */ + #define BSF_SRELC (1 << 20) + + /* This symbol was created by bfd_get_synthetic_symtab. */ + #define BSF_SYNTHETIC (1 << 21) + + /* This symbol is an indirect code object. Unrelated to BSF_INDIRECT. + The dynamic linker will compute the value of this symbol by + calling the function that it points to. BSF_FUNCTION must + also be also set. */ + #define BSF_GNU_INDIRECT_FUNCTION (1 << 22) + /* This symbol is a globally unique data object. The dynamic linker + will make sure that in the entire process there is just one symbol + with this name and type in use. BSF_OBJECT must also be set. */ + #define BSF_GNU_UNIQUE (1 << 23) + + flagword flags; + + /* A pointer to the section to which this symbol is + relative. This will always be non NULL, there are special + sections for undefined and absolute symbols. */ + struct bfd_section *section; + + /* Back end special data. */ + union + { + void *p; + bfd_vma i; + } + udata; + } + asymbol; + + +File: bfd.info, Node: symbol handling functions, Prev: typedef asymbol, Up: Symbols + +2.7.5 Symbol handling functions +------------------------------- + +2.7.5.1 `bfd_get_symtab_upper_bound' +.................................... + +*Description* +Return the number of bytes required to store a vector of pointers to +`asymbols' for all the symbols in the BFD ABFD, including a terminal +NULL pointer. If there are no symbols in the BFD, then return 0. If an +error occurs, return -1. + #define bfd_get_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) + +2.7.5.2 `bfd_is_local_label' +............................ + +*Synopsis* + bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym); + *Description* +Return TRUE if the given symbol SYM in the BFD ABFD is a compiler +generated local label, else return FALSE. + +2.7.5.3 `bfd_is_local_label_name' +................................. + +*Synopsis* + bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name); + *Description* +Return TRUE if a symbol with the name NAME in the BFD ABFD is a +compiler generated local label, else return FALSE. This just checks +whether the name has the form of a local label. + #define bfd_is_local_label_name(abfd, name) \ + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) + +2.7.5.4 `bfd_is_target_special_symbol' +...................................... + +*Synopsis* + bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); + *Description* +Return TRUE iff a symbol SYM in the BFD ABFD is something special to +the particular target represented by the BFD. Such symbols should +normally not be mentioned to the user. + #define bfd_is_target_special_symbol(abfd, sym) \ + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym)) + +2.7.5.5 `bfd_canonicalize_symtab' +................................. + +*Description* +Read the symbols from the BFD ABFD, and fills in the vector LOCATION +with pointers to the symbols and a trailing NULL. Return the actual +number of symbol pointers, not including the NULL. + #define bfd_canonicalize_symtab(abfd, location) \ + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location)) + +2.7.5.6 `bfd_set_symtab' +........................ + +*Synopsis* + bfd_boolean bfd_set_symtab + (bfd *abfd, asymbol **location, unsigned int count); + *Description* +Arrange that when the output BFD ABFD is closed, the table LOCATION of +COUNT pointers to symbols will be written. + +2.7.5.7 `bfd_print_symbol_vandf' +................................ + +*Synopsis* + void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); + *Description* +Print the value and flags of the SYMBOL supplied to the stream FILE. + +2.7.5.8 `bfd_make_empty_symbol' +............................... + +*Description* +Create a new `asymbol' structure for the BFD ABFD and return a pointer +to it. + + This routine is necessary because each back end has private +information surrounding the `asymbol'. Building your own `asymbol' and +pointing to it will not create the private information, and will cause +problems later on. + #define bfd_make_empty_symbol(abfd) \ + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) + +2.7.5.9 `_bfd_generic_make_empty_symbol' +........................................ + +*Synopsis* + asymbol *_bfd_generic_make_empty_symbol (bfd *); + *Description* +Create a new `asymbol' structure for the BFD ABFD and return a pointer +to it. Used by core file routines, binary back-end and anywhere else +where no private info is needed. + +2.7.5.10 `bfd_make_debug_symbol' +................................ + +*Description* +Create a new `asymbol' structure for the BFD ABFD, to be used as a +debugging symbol. Further details of its use have yet to be worked out. + #define bfd_make_debug_symbol(abfd,ptr,size) \ + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) + +2.7.5.11 `bfd_decode_symclass' +.............................. + +*Description* +Return a character corresponding to the symbol class of SYMBOL, or '?' +for an unknown class. + + *Synopsis* + int bfd_decode_symclass (asymbol *symbol); + +2.7.5.12 `bfd_is_undefined_symclass' +.................................... + +*Description* +Returns non-zero if the class symbol returned by bfd_decode_symclass +represents an undefined symbol. Returns zero otherwise. + + *Synopsis* + bfd_boolean bfd_is_undefined_symclass (int symclass); + +2.7.5.13 `bfd_symbol_info' +.......................... + +*Description* +Fill in the basic info about symbol that nm needs. Additional info may +be added by the back-ends after calling this function. + + *Synopsis* + void bfd_symbol_info (asymbol *symbol, symbol_info *ret); + +2.7.5.14 `bfd_copy_private_symbol_data' +....................................... + +*Synopsis* + bfd_boolean bfd_copy_private_symbol_data + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); + *Description* +Copy private symbol information from ISYM in the BFD IBFD to the symbol +OSYM in the BFD OBFD. Return `TRUE' on success, `FALSE' on error. +Possible error returns are: + + * `bfd_error_no_memory' - Not enough memory exists to create private + data for OSEC. + + #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ + (ibfd, isymbol, obfd, osymbol)) + + +File: bfd.info, Node: Archives, Next: Formats, Prev: Symbols, Up: BFD front end + +2.8 Archives +============ + +*Description* +An archive (or library) is just another BFD. It has a symbol table, +although there's not much a user program will do with it. + + The big difference between an archive BFD and an ordinary BFD is +that the archive doesn't have sections. Instead it has a chain of BFDs +that are considered its contents. These BFDs can be manipulated like +any other. The BFDs contained in an archive opened for reading will +all be opened for reading. You may put either input or output BFDs +into an archive opened for output; they will be handled correctly when +the archive is closed. + + Use `bfd_openr_next_archived_file' to step through the contents of +an archive opened for input. You don't have to read the entire archive +if you don't want to! Read it until you find what you want. + + A BFD returned by `bfd_openr_next_archived_file' can be closed +manually with `bfd_close'. If you do not close it, then a second +iteration through the members of an archive may return the same BFD. +If you close the archive BFD, then all the member BFDs will +automatically be closed as well. + + Archive contents of output BFDs are chained through the +`archive_next' pointer in a BFD. The first one is findable through the +`archive_head' slot of the archive. Set it with `bfd_set_archive_head' +(q.v.). A given BFD may be in only one open output archive at a time. + + As expected, the BFD archive code is more general than the archive +code of any given environment. BFD archives may contain files of +different formats (e.g., a.out and coff) and even different +architectures. You may even place archives recursively into archives! + + This can cause unexpected confusion, since some archive formats are +more expressive than others. For instance, Intel COFF archives can +preserve long filenames; SunOS a.out archives cannot. If you move a +file from the first to the second format and back again, the filename +may be truncated. Likewise, different a.out environments have different +conventions as to how they truncate filenames, whether they preserve +directory names in filenames, etc. When interoperating with native +tools, be sure your files are homogeneous. + + Beware: most of these formats do not react well to the presence of +spaces in filenames. We do the best we can, but can't always handle +this case due to restrictions in the format of archives. Many Unix +utilities are braindead in regards to spaces and such in filenames +anyway, so this shouldn't be much of a restriction. + + Archives are supported in BFD in `archive.c'. + +2.8.1 Archive functions +----------------------- + +2.8.1.1 `bfd_get_next_mapent' +............................. + +*Synopsis* + symindex bfd_get_next_mapent + (bfd *abfd, symindex previous, carsym **sym); + *Description* +Step through archive ABFD's symbol table (if it has one). Successively +update SYM with the next symbol's information, returning that symbol's +(internal) index into the symbol table. + + Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first +one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one. + + A `carsym' is a canonical archive symbol. The only user-visible +element is its name, a null-terminated string. + +2.8.1.2 `bfd_set_archive_head' +.............................. + +*Synopsis* + bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head); + *Description* +Set the head of the chain of BFDs contained in the archive OUTPUT to +NEW_HEAD. + +2.8.1.3 `bfd_openr_next_archived_file' +...................................... + +*Synopsis* + bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); + *Description* +Provided a BFD, ARCHIVE, containing an archive and NULL, open an input +BFD on the first contained element and returns that. Subsequent calls +should pass the archive and the previous return value to return a +created BFD to the next contained element. NULL is returned when there +are no more. + + +File: bfd.info, Node: Formats, Next: Relocations, Prev: Archives, Up: BFD front end + +2.9 File formats +================ + +A format is a BFD concept of high level file contents type. The formats +supported by BFD are: + + * `bfd_object' + The BFD may contain data, symbols, relocations and debug info. + + * `bfd_archive' + The BFD contains other BFDs and an optional index. + + * `bfd_core' + The BFD contains the result of an executable core dump. + +2.9.1 File format functions +--------------------------- + +2.9.1.1 `bfd_check_format' +.......................... + +*Synopsis* + bfd_boolean bfd_check_format (bfd *abfd, bfd_format format); + *Description* +Verify if the file attached to the BFD ABFD is compatible with the +format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core'). + + If the BFD has been set to a specific target before the call, only +the named target and format combination is checked. If the target has +not been set, or has been set to `default', then all the known target +backends is interrogated to determine a match. If the default target +matches, it is used. If not, exactly one target must recognize the +file, or an error results. + + The function returns `TRUE' on success, otherwise `FALSE' with one +of the following error codes: + + * `bfd_error_invalid_operation' - if `format' is not one of + `bfd_object', `bfd_archive' or `bfd_core'. + + * `bfd_error_system_call' - if an error occured during a read - even + some file mismatches can cause bfd_error_system_calls. + + * `file_not_recognised' - none of the backends recognised the file + format. + + * `bfd_error_file_ambiguously_recognized' - more than one backend + recognised the file format. + +2.9.1.2 `bfd_check_format_matches' +.................................. + +*Synopsis* + bfd_boolean bfd_check_format_matches + (bfd *abfd, bfd_format format, char ***matching); + *Description* +Like `bfd_check_format', except when it returns FALSE with `bfd_errno' +set to `bfd_error_file_ambiguously_recognized'. In that case, if +MATCHING is not NULL, it will be filled in with a NULL-terminated list +of the names of the formats that matched, allocated with `malloc'. +Then the user may choose a format and try again. + + When done with the list that MATCHING points to, the caller should +free it. + +2.9.1.3 `bfd_set_format' +........................ + +*Synopsis* + bfd_boolean bfd_set_format (bfd *abfd, bfd_format format); + *Description* +This function sets the file format of the BFD ABFD to the format +FORMAT. If the target set in the BFD does not support the format +requested, the format is invalid, or the BFD is not open for writing, +then an error occurs. + +2.9.1.4 `bfd_format_string' +........................... + +*Synopsis* + const char *bfd_format_string (bfd_format format); + *Description* +Return a pointer to a const string `invalid', `object', `archive', +`core', or `unknown', depending upon the value of FORMAT. + + +File: bfd.info, Node: Relocations, Next: Core Files, Prev: Formats, Up: BFD front end + +2.10 Relocations +================ + +BFD maintains relocations in much the same way it maintains symbols: +they are left alone until required, then read in en-masse and +translated into an internal form. A common routine +`bfd_perform_relocation' acts upon the canonical form to do the fixup. + + Relocations are maintained on a per section basis, while symbols are +maintained on a per BFD basis. + + All that a back end has to do to fit the BFD interface is to create +a `struct reloc_cache_entry' for each relocation in a particular +section, and fill in the right bits of the structures. + +* Menu: + +* typedef arelent:: +* howto manager:: + + +File: bfd.info, Node: typedef arelent, Next: howto manager, Prev: Relocations, Up: Relocations + +2.10.1 typedef arelent +---------------------- + +This is the structure of a relocation entry: + + + typedef enum bfd_reloc_status + { + /* No errors detected. */ + bfd_reloc_ok, + + /* The relocation was performed, but there was an overflow. */ + bfd_reloc_overflow, + + /* The address to relocate was not within the section supplied. */ + bfd_reloc_outofrange, + + /* Used by special functions. */ + bfd_reloc_continue, + + /* Unsupported relocation size requested. */ + bfd_reloc_notsupported, + + /* Unused. */ + bfd_reloc_other, + + /* The symbol to relocate against was undefined. */ + bfd_reloc_undefined, + + /* The relocation was performed, but may not be ok - presently + generated only when linking i960 coff files with i960 b.out + symbols. If this type is returned, the error_message argument + to bfd_perform_relocation will be set. */ + bfd_reloc_dangerous + } + bfd_reloc_status_type; + + + typedef struct reloc_cache_entry + { + /* A pointer into the canonical table of pointers. */ + struct bfd_symbol **sym_ptr_ptr; + + /* offset in section. */ + bfd_size_type address; + + /* addend for relocation value. */ + bfd_vma addend; + + /* Pointer to how to perform the required relocation. */ + reloc_howto_type *howto; + + } + arelent; + *Description* +Here is a description of each of the fields within an `arelent': + + * `sym_ptr_ptr' + The symbol table pointer points to a pointer to the symbol +associated with the relocation request. It is the pointer into the +table returned by the back end's `canonicalize_symtab' action. *Note +Symbols::. The symbol is referenced through a pointer to a pointer so +that tools like the linker can fix up all the symbols of the same name +by modifying only one pointer. The relocation routine looks in the +symbol and uses the base of the section the symbol is attached to and +the value of the symbol as the initial relocation offset. If the symbol +pointer is zero, then the section provided is looked up. + + * `address' + The `address' field gives the offset in bytes from the base of the +section data which owns the relocation record to the first byte of +relocatable information. The actual data relocated will be relative to +this point; for example, a relocation type which modifies the bottom +two bytes of a four byte word would not touch the first byte pointed to +in a big endian world. + + * `addend' + The `addend' is a value provided by the back end to be added (!) to +the relocation offset. Its interpretation is dependent upon the howto. +For example, on the 68k the code: + + char foo[]; + main() + { + return foo[0x12345678]; + } + + Could be compiled into: + + linkw fp,#-4 + moveb @#12345678,d0 + extbl d0 + unlk fp + rts + + This could create a reloc pointing to `foo', but leave the offset in +the data, something like: + + RELOCATION RECORDS FOR [.text]: + offset type value + 00000006 32 _foo + + 00000000 4e56 fffc ; linkw fp,#-4 + 00000004 1039 1234 5678 ; moveb @#12345678,d0 + 0000000a 49c0 ; extbl d0 + 0000000c 4e5e ; unlk fp + 0000000e 4e75 ; rts + + Using coff and an 88k, some instructions don't have enough space in +them to represent the full address range, and pointers have to be +loaded in two parts. So you'd get something like: + + or.u r13,r0,hi16(_foo+0x12345678) + ld.b r2,r13,lo16(_foo+0x12345678) + jmp r1 + + This should create two relocs, both pointing to `_foo', and with +0x12340000 in their addend field. The data would consist of: + + RELOCATION RECORDS FOR [.text]: + offset type value + 00000002 HVRT16 _foo+0x12340000 + 00000006 LVRT16 _foo+0x12340000 + + 00000000 5da05678 ; or.u r13,r0,0x5678 + 00000004 1c4d5678 ; ld.b r2,r13,0x5678 + 00000008 f400c001 ; jmp r1 + + The relocation routine digs out the value from the data, adds it to +the addend to get the original offset, and then adds the value of +`_foo'. Note that all 32 bits have to be kept around somewhere, to cope +with carry from bit 15 to bit 16. + + One further example is the sparc and the a.out format. The sparc has +a similar problem to the 88k, in that some instructions don't have room +for an entire offset, but on the sparc the parts are created in odd +sized lumps. The designers of the a.out format chose to not use the +data within the section for storing part of the offset; all the offset +is kept within the reloc. Anything in the data should be ignored. + + save %sp,-112,%sp + sethi %hi(_foo+0x12345678),%g2 + ldsb [%g2+%lo(_foo+0x12345678)],%i0 + ret + restore + + Both relocs contain a pointer to `foo', and the offsets contain junk. + + RELOCATION RECORDS FOR [.text]: + offset type value + 00000004 HI22 _foo+0x12345678 + 00000008 LO10 _foo+0x12345678 + + 00000000 9de3bf90 ; save %sp,-112,%sp + 00000004 05000000 ; sethi %hi(_foo+0),%g2 + 00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0 + 0000000c 81c7e008 ; ret + 00000010 81e80000 ; restore + + * `howto' + The `howto' field can be imagined as a relocation instruction. It is +a pointer to a structure which contains information on what to do with +all of the other information in the reloc record and data section. A +back end would normally have a relocation instruction set and turn +relocations into pointers to the correct structure on input - but it +would be possible to create each howto field on demand. + +2.10.1.1 `enum complain_overflow' +................................. + +Indicates what sort of overflow checking should be done when performing +a relocation. + + + enum complain_overflow + { + /* Do not complain on overflow. */ + complain_overflow_dont, + + /* Complain if the value overflows when considered as a signed + number one bit larger than the field. ie. A bitfield of N bits + is allowed to represent -2**n to 2**n-1. */ + complain_overflow_bitfield, + + /* Complain if the value overflows when considered as a signed + number. */ + complain_overflow_signed, + + /* Complain if the value overflows when considered as an + unsigned number. */ + complain_overflow_unsigned + }; + +2.10.1.2 `reloc_howto_type' +........................... + +The `reloc_howto_type' is a structure which contains all the +information that libbfd needs to know to tie up a back end's data. + + struct bfd_symbol; /* Forward declaration. */ + + struct reloc_howto_struct + { + /* The type field has mainly a documentary use - the back end can + do what it wants with it, though normally the back end's + external idea of what a reloc number is stored + in this field. For example, a PC relative word relocation + in a coff environment has the type 023 - because that's + what the outside world calls a R_PCRWORD reloc. */ + unsigned int type; + + /* The value the final relocation is shifted right by. This drops + unwanted data from the relocation. */ + unsigned int rightshift; + + /* The size of the item to be relocated. This is *not* a + power-of-two measure. To get the number of bytes operated + on by a type of relocation, use bfd_get_reloc_size. */ + int size; + + /* The number of bits in the item to be relocated. This is used + when doing overflow checking. */ + unsigned int bitsize; + + /* The relocation is relative to the field being relocated. */ + bfd_boolean pc_relative; + + /* The bit position of the reloc value in the destination. + The relocated value is left shifted by this amount. */ + unsigned int bitpos; + + /* What type of overflow error should be checked for when + relocating. */ + enum complain_overflow complain_on_overflow; + + /* If this field is non null, then the supplied function is + called rather than the normal function. This allows really + strange relocation methods to be accommodated (e.g., i960 callj + instructions). */ + bfd_reloc_status_type (*special_function) + (bfd *, arelent *, struct bfd_symbol *, void *, asection *, + bfd *, char **); + + /* The textual name of the relocation type. */ + char *name; + + /* Some formats record a relocation addend in the section contents + rather than with the relocation. For ELF formats this is the + distinction between USE_REL and USE_RELA (though the code checks + for USE_REL == 1/0). The value of this field is TRUE if the + addend is recorded with the section contents; when performing a + partial link (ld -r) the section contents (the data) will be + modified. The value of this field is FALSE if addends are + recorded with the relocation (in arelent.addend); when performing + a partial link the relocation will be modified. + All relocations for all ELF USE_RELA targets should set this field + to FALSE (values of TRUE should be looked on with suspicion). + However, the converse is not true: not all relocations of all ELF + USE_REL targets set this field to TRUE. Why this is so is peculiar + to each particular target. For relocs that aren't used in partial + links (e.g. GOT stuff) it doesn't matter what this is set to. */ + bfd_boolean partial_inplace; + + /* src_mask selects the part of the instruction (or data) to be used + in the relocation sum. If the target relocations don't have an + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal + dst_mask to extract the addend from the section contents. If + relocations do have an addend in the reloc, eg. ELF USE_RELA, this + field should be zero. Non-zero values for ELF USE_RELA targets are + bogus as in those cases the value in the dst_mask part of the + section contents should be treated as garbage. */ + bfd_vma src_mask; + + /* dst_mask selects which parts of the instruction (or data) are + replaced with a relocated value. */ + bfd_vma dst_mask; + + /* When some formats create PC relative instructions, they leave + the value of the pc of the place being relocated in the offset + slot of the instruction, so that a PC relative relocation can + be made just by adding in an ordinary offset (e.g., sun3 a.out). + Some formats leave the displacement part of an instruction + empty (e.g., m88k bcs); this flag signals the fact. */ + bfd_boolean pcrel_offset; + }; + +2.10.1.3 `The HOWTO Macro' +.......................... + +*Description* +The HOWTO define is horrible and will go away. + #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC } + + *Description* +And will be replaced with the totally magic way. But for the moment, we +are compatible, so do it this way. + #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \ + NAME, FALSE, 0, 0, IN) + + *Description* +This is used to fill in an empty howto entry in an array. + #define EMPTY_HOWTO(C) \ + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ + NULL, FALSE, 0, 0, FALSE) + + *Description* +Helper routine to turn a symbol into a relocation value. + #define HOWTO_PREPARE(relocation, symbol) \ + { \ + if (symbol != NULL) \ + { \ + if (bfd_is_com_section (symbol->section)) \ + { \ + relocation = 0; \ + } \ + else \ + { \ + relocation = symbol->value; \ + } \ + } \ + } + +2.10.1.4 `bfd_get_reloc_size' +............................. + +*Synopsis* + unsigned int bfd_get_reloc_size (reloc_howto_type *); + *Description* +For a reloc_howto_type that operates on a fixed number of bytes, this +returns the number of bytes operated on. + +2.10.1.5 `arelent_chain' +........................ + +*Description* +How relocs are tied together in an `asection': + typedef struct relent_chain + { + arelent relent; + struct relent_chain *next; + } + arelent_chain; + +2.10.1.6 `bfd_check_overflow' +............................. + +*Synopsis* + bfd_reloc_status_type bfd_check_overflow + (enum complain_overflow how, + unsigned int bitsize, + unsigned int rightshift, + unsigned int addrsize, + bfd_vma relocation); + *Description* +Perform overflow checking on RELOCATION which has BITSIZE significant +bits and will be shifted right by RIGHTSHIFT bits, on a machine with +addresses containing ADDRSIZE significant bits. The result is either of +`bfd_reloc_ok' or `bfd_reloc_overflow'. + +2.10.1.7 `bfd_perform_relocation' +................................. + +*Synopsis* + bfd_reloc_status_type bfd_perform_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, + asection *input_section, + bfd *output_bfd, + char **error_message); + *Description* +If OUTPUT_BFD is supplied to this function, the generated image will be +relocatable; the relocations are copied to the output file after they +have been changed to reflect the new state of the world. There are two +ways of reflecting the results of partial linkage in an output file: by +modifying the output data in place, and by modifying the relocation +record. Some native formats (e.g., basic a.out and basic coff) have no +way of specifying an addend in the relocation type, so the addend has +to go in the output data. This is no big deal since in these formats +the output data slot will always be big enough for the addend. Complex +reloc types with addends were invented to solve just this problem. The +ERROR_MESSAGE argument is set to an error message if this return +`bfd_reloc_dangerous'. + +2.10.1.8 `bfd_install_relocation' +................................. + +*Synopsis* + bfd_reloc_status_type bfd_install_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, bfd_vma data_start, + asection *input_section, + char **error_message); + *Description* +This looks remarkably like `bfd_perform_relocation', except it does not +expect that the section contents have been filled in. I.e., it's +suitable for use when creating, rather than applying a relocation. + + For now, this function should be considered reserved for the +assembler. + + +File: bfd.info, Node: howto manager, Prev: typedef arelent, Up: Relocations + +2.10.2 The howto manager +------------------------ + +When an application wants to create a relocation, but doesn't know what +the target machine might call it, it can find out by using this bit of +code. + +2.10.2.1 `bfd_reloc_code_type' +.............................. + +*Description* +The insides of a reloc code. The idea is that, eventually, there will +be one enumerator for every type of relocation we ever do. Pass one of +these values to `bfd_reloc_type_lookup', and it'll return a howto +pointer. + + This does mean that the application must determine the correct +enumerator value; you can't get a howto pointer from a random set of +attributes. + + Here are the possible values for `enum bfd_reloc_code_real': + + -- : BFD_RELOC_64 + -- : BFD_RELOC_32 + -- : BFD_RELOC_26 + -- : BFD_RELOC_24 + -- : BFD_RELOC_16 + -- : BFD_RELOC_14 + -- : BFD_RELOC_8 + Basic absolute relocations of N bits. + + -- : BFD_RELOC_64_PCREL + -- : BFD_RELOC_32_PCREL + -- : BFD_RELOC_24_PCREL + -- : BFD_RELOC_16_PCREL + -- : BFD_RELOC_12_PCREL + -- : BFD_RELOC_8_PCREL + PC-relative relocations. Sometimes these are relative to the + address of the relocation itself; sometimes they are relative to + the start of the section containing the relocation. It depends on + the specific target. + + The 24-bit relocation is used in some Intel 960 configurations. + + -- : BFD_RELOC_32_SECREL + Section relative relocations. Some targets need this for DWARF2. + + -- : BFD_RELOC_32_GOT_PCREL + -- : BFD_RELOC_16_GOT_PCREL + -- : BFD_RELOC_8_GOT_PCREL + -- : BFD_RELOC_32_GOTOFF + -- : BFD_RELOC_16_GOTOFF + -- : BFD_RELOC_LO16_GOTOFF + -- : BFD_RELOC_HI16_GOTOFF + -- : BFD_RELOC_HI16_S_GOTOFF + -- : BFD_RELOC_8_GOTOFF + -- : BFD_RELOC_64_PLT_PCREL + -- : BFD_RELOC_32_PLT_PCREL + -- : BFD_RELOC_24_PLT_PCREL + -- : BFD_RELOC_16_PLT_PCREL + -- : BFD_RELOC_8_PLT_PCREL + -- : BFD_RELOC_64_PLTOFF + -- : BFD_RELOC_32_PLTOFF + -- : BFD_RELOC_16_PLTOFF + -- : BFD_RELOC_LO16_PLTOFF + -- : BFD_RELOC_HI16_PLTOFF + -- : BFD_RELOC_HI16_S_PLTOFF + -- : BFD_RELOC_8_PLTOFF + For ELF. + + -- : BFD_RELOC_SIZE32 + -- : BFD_RELOC_SIZE64 + Size relocations. + + -- : BFD_RELOC_68K_GLOB_DAT + -- : BFD_RELOC_68K_JMP_SLOT + -- : BFD_RELOC_68K_RELATIVE + -- : BFD_RELOC_68K_TLS_GD32 + -- : BFD_RELOC_68K_TLS_GD16 + -- : BFD_RELOC_68K_TLS_GD8 + -- : BFD_RELOC_68K_TLS_LDM32 + -- : BFD_RELOC_68K_TLS_LDM16 + -- : BFD_RELOC_68K_TLS_LDM8 + -- : BFD_RELOC_68K_TLS_LDO32 + -- : BFD_RELOC_68K_TLS_LDO16 + -- : BFD_RELOC_68K_TLS_LDO8 + -- : BFD_RELOC_68K_TLS_IE32 + -- : BFD_RELOC_68K_TLS_IE16 + -- : BFD_RELOC_68K_TLS_IE8 + -- : BFD_RELOC_68K_TLS_LE32 + -- : BFD_RELOC_68K_TLS_LE16 + -- : BFD_RELOC_68K_TLS_LE8 + Relocations used by 68K ELF. + + -- : BFD_RELOC_32_BASEREL + -- : BFD_RELOC_16_BASEREL + -- : BFD_RELOC_LO16_BASEREL + -- : BFD_RELOC_HI16_BASEREL + -- : BFD_RELOC_HI16_S_BASEREL + -- : BFD_RELOC_8_BASEREL + -- : BFD_RELOC_RVA + Linkage-table relative. + + -- : BFD_RELOC_8_FFnn + Absolute 8-bit relocation, but used to form an address like 0xFFnn. + + -- : BFD_RELOC_32_PCREL_S2 + -- : BFD_RELOC_16_PCREL_S2 + -- : BFD_RELOC_23_PCREL_S2 + These PC-relative relocations are stored as word displacements - + i.e., byte displacements shifted right two bits. The 30-bit word + displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the + SPARC. (SPARC tools generally refer to this as <>.) The + signed 16-bit displacement is used on the MIPS, and the 23-bit + displacement is used on the Alpha. + + -- : BFD_RELOC_HI22 + -- : BFD_RELOC_LO10 + High 22 bits and low 10 bits of 32-bit value, placed into lower + bits of the target word. These are used on the SPARC. + + -- : BFD_RELOC_GPREL16 + -- : BFD_RELOC_GPREL32 + For systems that allocate a Global Pointer register, these are + displacements off that register. These relocation types are + handled specially, because the value the register will have is + decided relatively late. + + -- : BFD_RELOC_I960_CALLJ + Reloc types used for i960/b.out. + + -- : BFD_RELOC_NONE + -- : BFD_RELOC_SPARC_WDISP22 + -- : BFD_RELOC_SPARC22 + -- : BFD_RELOC_SPARC13 + -- : BFD_RELOC_SPARC_GOT10 + -- : BFD_RELOC_SPARC_GOT13 + -- : BFD_RELOC_SPARC_GOT22 + -- : BFD_RELOC_SPARC_PC10 + -- : BFD_RELOC_SPARC_PC22 + -- : BFD_RELOC_SPARC_WPLT30 + -- : BFD_RELOC_SPARC_COPY + -- : BFD_RELOC_SPARC_GLOB_DAT + -- : BFD_RELOC_SPARC_JMP_SLOT + -- : BFD_RELOC_SPARC_RELATIVE + -- : BFD_RELOC_SPARC_UA16 + -- : BFD_RELOC_SPARC_UA32 + -- : BFD_RELOC_SPARC_UA64 + -- : BFD_RELOC_SPARC_GOTDATA_HIX22 + -- : BFD_RELOC_SPARC_GOTDATA_LOX10 + -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22 + -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10 + -- : BFD_RELOC_SPARC_GOTDATA_OP + -- : BFD_RELOC_SPARC_JMP_IREL + -- : BFD_RELOC_SPARC_IRELATIVE + SPARC ELF relocations. There is probably some overlap with other + relocation types already defined. + + -- : BFD_RELOC_SPARC_BASE13 + -- : BFD_RELOC_SPARC_BASE22 + I think these are specific to SPARC a.out (e.g., Sun 4). + + -- : BFD_RELOC_SPARC_64 + -- : BFD_RELOC_SPARC_10 + -- : BFD_RELOC_SPARC_11 + -- : BFD_RELOC_SPARC_OLO10 + -- : BFD_RELOC_SPARC_HH22 + -- : BFD_RELOC_SPARC_HM10 + -- : BFD_RELOC_SPARC_LM22 + -- : BFD_RELOC_SPARC_PC_HH22 + -- : BFD_RELOC_SPARC_PC_HM10 + -- : BFD_RELOC_SPARC_PC_LM22 + -- : BFD_RELOC_SPARC_WDISP16 + -- : BFD_RELOC_SPARC_WDISP19 + -- : BFD_RELOC_SPARC_7 + -- : BFD_RELOC_SPARC_6 + -- : BFD_RELOC_SPARC_5 + -- : BFD_RELOC_SPARC_DISP64 + -- : BFD_RELOC_SPARC_PLT32 + -- : BFD_RELOC_SPARC_PLT64 + -- : BFD_RELOC_SPARC_HIX22 + -- : BFD_RELOC_SPARC_LOX10 + -- : BFD_RELOC_SPARC_H44 + -- : BFD_RELOC_SPARC_M44 + -- : BFD_RELOC_SPARC_L44 + -- : BFD_RELOC_SPARC_REGISTER + -- : BFD_RELOC_SPARC_H34 + -- : BFD_RELOC_SPARC_SIZE32 + -- : BFD_RELOC_SPARC_SIZE64 + -- : BFD_RELOC_SPARC_WDISP10 + SPARC64 relocations + + -- : BFD_RELOC_SPARC_REV32 + SPARC little endian relocation + + -- : BFD_RELOC_SPARC_TLS_GD_HI22 + -- : BFD_RELOC_SPARC_TLS_GD_LO10 + -- : BFD_RELOC_SPARC_TLS_GD_ADD + -- : BFD_RELOC_SPARC_TLS_GD_CALL + -- : BFD_RELOC_SPARC_TLS_LDM_HI22 + -- : BFD_RELOC_SPARC_TLS_LDM_LO10 + -- : BFD_RELOC_SPARC_TLS_LDM_ADD + -- : BFD_RELOC_SPARC_TLS_LDM_CALL + -- : BFD_RELOC_SPARC_TLS_LDO_HIX22 + -- : BFD_RELOC_SPARC_TLS_LDO_LOX10 + -- : BFD_RELOC_SPARC_TLS_LDO_ADD + -- : BFD_RELOC_SPARC_TLS_IE_HI22 + -- : BFD_RELOC_SPARC_TLS_IE_LO10 + -- : BFD_RELOC_SPARC_TLS_IE_LD + -- : BFD_RELOC_SPARC_TLS_IE_LDX + -- : BFD_RELOC_SPARC_TLS_IE_ADD + -- : BFD_RELOC_SPARC_TLS_LE_HIX22 + -- : BFD_RELOC_SPARC_TLS_LE_LOX10 + -- : BFD_RELOC_SPARC_TLS_DTPMOD32 + -- : BFD_RELOC_SPARC_TLS_DTPMOD64 + -- : BFD_RELOC_SPARC_TLS_DTPOFF32 + -- : BFD_RELOC_SPARC_TLS_DTPOFF64 + -- : BFD_RELOC_SPARC_TLS_TPOFF32 + -- : BFD_RELOC_SPARC_TLS_TPOFF64 + SPARC TLS relocations + + -- : BFD_RELOC_SPU_IMM7 + -- : BFD_RELOC_SPU_IMM8 + -- : BFD_RELOC_SPU_IMM10 + -- : BFD_RELOC_SPU_IMM10W + -- : BFD_RELOC_SPU_IMM16 + -- : BFD_RELOC_SPU_IMM16W + -- : BFD_RELOC_SPU_IMM18 + -- : BFD_RELOC_SPU_PCREL9a + -- : BFD_RELOC_SPU_PCREL9b + -- : BFD_RELOC_SPU_PCREL16 + -- : BFD_RELOC_SPU_LO16 + -- : BFD_RELOC_SPU_HI16 + -- : BFD_RELOC_SPU_PPU32 + -- : BFD_RELOC_SPU_PPU64 + -- : BFD_RELOC_SPU_ADD_PIC + SPU Relocations. + + -- : BFD_RELOC_ALPHA_GPDISP_HI16 + Alpha ECOFF and ELF relocations. Some of these treat the symbol or + "addend" in some special way. For GPDISP_HI16 ("gpdisp") + relocations, the symbol is ignored when writing; when reading, it + will be the absolute section symbol. The addend is the + displacement in bytes of the "lda" instruction from the "ldah" + instruction (which is at the address of this reloc). + + -- : BFD_RELOC_ALPHA_GPDISP_LO16 + For GPDISP_LO16 ("ignore") relocations, the symbol is handled as + with GPDISP_HI16 relocs. The addend is ignored when writing the + relocations out, and is filled in with the file's GP value on + reading, for convenience. + + -- : BFD_RELOC_ALPHA_GPDISP + The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 + relocation except that there is no accompanying GPDISP_LO16 + relocation. + + -- : BFD_RELOC_ALPHA_LITERAL + -- : BFD_RELOC_ALPHA_ELF_LITERAL + -- : BFD_RELOC_ALPHA_LITUSE + The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; + the assembler turns it into a LDQ instruction to load the address + of the symbol, and then fills in a register in the real + instruction. + + The LITERAL reloc, at the LDQ instruction, refers to the .lita + section symbol. The addend is ignored when writing, but is filled + in with the file's GP value on reading, for convenience, as with + the GPDISP_LO16 reloc. + + The ELF_LITERAL reloc is somewhere between 16_GOTOFF and + GPDISP_LO16. It should refer to the symbol to be referenced, as + with 16_GOTOFF, but it generates output not based on the position + within the .got section, but relative to the GP value chosen for + the file during the final link stage. + + The LITUSE reloc, on the instruction using the loaded address, + gives information to the linker that it might be able to use to + optimize away some literal section references. The symbol is + ignored (read as the absolute section symbol), and the "addend" + indicates the type of instruction using the register: 1 - "memory" + fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target + of branch) + + -- : BFD_RELOC_ALPHA_HINT + The HINT relocation indicates a value that should be filled into + the "hint" field of a jmp/jsr/ret instruction, for possible branch- + prediction logic which may be provided on some processors. + + -- : BFD_RELOC_ALPHA_LINKAGE + The LINKAGE relocation outputs a linkage pair in the object file, + which is filled by the linker. + + -- : BFD_RELOC_ALPHA_CODEADDR + The CODEADDR relocation outputs a STO_CA in the object file, which + is filled by the linker. + + -- : BFD_RELOC_ALPHA_GPREL_HI16 + -- : BFD_RELOC_ALPHA_GPREL_LO16 + The GPREL_HI/LO relocations together form a 32-bit offset from the + GP register. + + -- : BFD_RELOC_ALPHA_BRSGP + Like BFD_RELOC_23_PCREL_S2, except that the source and target must + share a common GP, and the target address is adjusted for + STO_ALPHA_STD_GPLOAD. + + -- : BFD_RELOC_ALPHA_NOP + The NOP relocation outputs a NOP if the longword displacement + between two procedure entry points is < 2^21. + + -- : BFD_RELOC_ALPHA_BSR + The BSR relocation outputs a BSR if the longword displacement + between two procedure entry points is < 2^21. + + -- : BFD_RELOC_ALPHA_LDA + The LDA relocation outputs a LDA if the longword displacement + between two procedure entry points is < 2^16. + + -- : BFD_RELOC_ALPHA_BOH + The BOH relocation outputs a BSR if the longword displacement + between two procedure entry points is < 2^21, or else a hint. + + -- : BFD_RELOC_ALPHA_TLSGD + -- : BFD_RELOC_ALPHA_TLSLDM + -- : BFD_RELOC_ALPHA_DTPMOD64 + -- : BFD_RELOC_ALPHA_GOTDTPREL16 + -- : BFD_RELOC_ALPHA_DTPREL64 + -- : BFD_RELOC_ALPHA_DTPREL_HI16 + -- : BFD_RELOC_ALPHA_DTPREL_LO16 + -- : BFD_RELOC_ALPHA_DTPREL16 + -- : BFD_RELOC_ALPHA_GOTTPREL16 + -- : BFD_RELOC_ALPHA_TPREL64 + -- : BFD_RELOC_ALPHA_TPREL_HI16 + -- : BFD_RELOC_ALPHA_TPREL_LO16 + -- : BFD_RELOC_ALPHA_TPREL16 + Alpha thread-local storage relocations. + + -- : BFD_RELOC_MIPS_JMP + -- : BFD_RELOC_MICROMIPS_JMP + The MIPS jump instruction. + + -- : BFD_RELOC_MIPS16_JMP + The MIPS16 jump instruction. + + -- : BFD_RELOC_MIPS16_GPREL + MIPS16 GP relative reloc. + + -- : BFD_RELOC_HI16 + High 16 bits of 32-bit value; simple reloc. + + -- : BFD_RELOC_HI16_S + High 16 bits of 32-bit value but the low 16 bits will be sign + extended and added to form the final result. If the low 16 bits + form a negative number, we need to add one to the high value to + compensate for the borrow when the low bits are added. + + -- : BFD_RELOC_LO16 + Low 16 bits. + + -- : BFD_RELOC_HI16_PCREL + High 16 bits of 32-bit pc-relative value + + -- : BFD_RELOC_HI16_S_PCREL + High 16 bits of 32-bit pc-relative value, adjusted + + -- : BFD_RELOC_LO16_PCREL + Low 16 bits of pc-relative value + + -- : BFD_RELOC_MIPS16_GOT16 + -- : BFD_RELOC_MIPS16_CALL16 + Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of + 16-bit immediate fields + + -- : BFD_RELOC_MIPS16_HI16 + MIPS16 high 16 bits of 32-bit value. + + -- : BFD_RELOC_MIPS16_HI16_S + MIPS16 high 16 bits of 32-bit value but the low 16 bits will be + sign extended and added to form the final result. If the low 16 + bits form a negative number, we need to add one to the high value + to compensate for the borrow when the low bits are added. + + -- : BFD_RELOC_MIPS16_LO16 + MIPS16 low 16 bits. + + -- : BFD_RELOC_MIPS16_TLS_GD + -- : BFD_RELOC_MIPS16_TLS_LDM + -- : BFD_RELOC_MIPS16_TLS_DTPREL_HI16 + -- : BFD_RELOC_MIPS16_TLS_DTPREL_LO16 + -- : BFD_RELOC_MIPS16_TLS_GOTTPREL + -- : BFD_RELOC_MIPS16_TLS_TPREL_HI16 + -- : BFD_RELOC_MIPS16_TLS_TPREL_LO16 + MIPS16 TLS relocations + + -- : BFD_RELOC_MIPS_LITERAL + -- : BFD_RELOC_MICROMIPS_LITERAL + Relocation against a MIPS literal section. + + -- : BFD_RELOC_MICROMIPS_7_PCREL_S1 + -- : BFD_RELOC_MICROMIPS_10_PCREL_S1 + -- : BFD_RELOC_MICROMIPS_16_PCREL_S1 + microMIPS PC-relative relocations. + + -- : BFD_RELOC_MIPS_21_PCREL_S2 + -- : BFD_RELOC_MIPS_26_PCREL_S2 + -- : BFD_RELOC_MIPS_18_PCREL_S3 + -- : BFD_RELOC_MIPS_19_PCREL_S2 + MIPS PC-relative relocations. + + -- : BFD_RELOC_MICROMIPS_GPREL16 + -- : BFD_RELOC_MICROMIPS_HI16 + -- : BFD_RELOC_MICROMIPS_HI16_S + -- : BFD_RELOC_MICROMIPS_LO16 + microMIPS versions of generic BFD relocs. + + -- : BFD_RELOC_MIPS_GOT16 + -- : BFD_RELOC_MICROMIPS_GOT16 + -- : BFD_RELOC_MIPS_CALL16 + -- : BFD_RELOC_MICROMIPS_CALL16 + -- : BFD_RELOC_MIPS_GOT_HI16 + -- : BFD_RELOC_MICROMIPS_GOT_HI16 + -- : BFD_RELOC_MIPS_GOT_LO16 + -- : BFD_RELOC_MICROMIPS_GOT_LO16 + -- : BFD_RELOC_MIPS_CALL_HI16 + -- : BFD_RELOC_MICROMIPS_CALL_HI16 + -- : BFD_RELOC_MIPS_CALL_LO16 + -- : BFD_RELOC_MICROMIPS_CALL_LO16 + -- : BFD_RELOC_MIPS_SUB + -- : BFD_RELOC_MICROMIPS_SUB + -- : BFD_RELOC_MIPS_GOT_PAGE + -- : BFD_RELOC_MICROMIPS_GOT_PAGE + -- : BFD_RELOC_MIPS_GOT_OFST + -- : BFD_RELOC_MICROMIPS_GOT_OFST + -- : BFD_RELOC_MIPS_GOT_DISP + -- : BFD_RELOC_MICROMIPS_GOT_DISP + -- : BFD_RELOC_MIPS_SHIFT5 + -- : BFD_RELOC_MIPS_SHIFT6 + -- : BFD_RELOC_MIPS_INSERT_A + -- : BFD_RELOC_MIPS_INSERT_B + -- : BFD_RELOC_MIPS_DELETE + -- : BFD_RELOC_MIPS_HIGHEST + -- : BFD_RELOC_MICROMIPS_HIGHEST + -- : BFD_RELOC_MIPS_HIGHER + -- : BFD_RELOC_MICROMIPS_HIGHER + -- : BFD_RELOC_MIPS_SCN_DISP + -- : BFD_RELOC_MICROMIPS_SCN_DISP + -- : BFD_RELOC_MIPS_REL16 + -- : BFD_RELOC_MIPS_RELGOT + -- : BFD_RELOC_MIPS_JALR + -- : BFD_RELOC_MICROMIPS_JALR + -- : BFD_RELOC_MIPS_TLS_DTPMOD32 + -- : BFD_RELOC_MIPS_TLS_DTPREL32 + -- : BFD_RELOC_MIPS_TLS_DTPMOD64 + -- : BFD_RELOC_MIPS_TLS_DTPREL64 + -- : BFD_RELOC_MIPS_TLS_GD + -- : BFD_RELOC_MICROMIPS_TLS_GD + -- : BFD_RELOC_MIPS_TLS_LDM + -- : BFD_RELOC_MICROMIPS_TLS_LDM + -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16 + -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16 + -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16 + -- : BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16 + -- : BFD_RELOC_MIPS_TLS_GOTTPREL + -- : BFD_RELOC_MICROMIPS_TLS_GOTTPREL + -- : BFD_RELOC_MIPS_TLS_TPREL32 + -- : BFD_RELOC_MIPS_TLS_TPREL64 + -- : BFD_RELOC_MIPS_TLS_TPREL_HI16 + -- : BFD_RELOC_MICROMIPS_TLS_TPREL_HI16 + -- : BFD_RELOC_MIPS_TLS_TPREL_LO16 + -- : BFD_RELOC_MICROMIPS_TLS_TPREL_LO16 + -- : BFD_RELOC_MIPS_EH + MIPS ELF relocations. + + -- : BFD_RELOC_MIPS_COPY + -- : BFD_RELOC_MIPS_JUMP_SLOT + MIPS ELF relocations (VxWorks and PLT extensions). + + -- : BFD_RELOC_MOXIE_10_PCREL + Moxie ELF relocations. + + -- : BFD_RELOC_FRV_LABEL16 + -- : BFD_RELOC_FRV_LABEL24 + -- : BFD_RELOC_FRV_LO16 + -- : BFD_RELOC_FRV_HI16 + -- : BFD_RELOC_FRV_GPREL12 + -- : BFD_RELOC_FRV_GPRELU12 + -- : BFD_RELOC_FRV_GPREL32 + -- : BFD_RELOC_FRV_GPRELHI + -- : BFD_RELOC_FRV_GPRELLO + -- : BFD_RELOC_FRV_GOT12 + -- : BFD_RELOC_FRV_GOTHI + -- : BFD_RELOC_FRV_GOTLO + -- : BFD_RELOC_FRV_FUNCDESC + -- : BFD_RELOC_FRV_FUNCDESC_GOT12 + -- : BFD_RELOC_FRV_FUNCDESC_GOTHI + -- : BFD_RELOC_FRV_FUNCDESC_GOTLO + -- : BFD_RELOC_FRV_FUNCDESC_VALUE + -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12 + -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI + -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO + -- : BFD_RELOC_FRV_GOTOFF12 + -- : BFD_RELOC_FRV_GOTOFFHI + -- : BFD_RELOC_FRV_GOTOFFLO + -- : BFD_RELOC_FRV_GETTLSOFF + -- : BFD_RELOC_FRV_TLSDESC_VALUE + -- : BFD_RELOC_FRV_GOTTLSDESC12 + -- : BFD_RELOC_FRV_GOTTLSDESCHI + -- : BFD_RELOC_FRV_GOTTLSDESCLO + -- : BFD_RELOC_FRV_TLSMOFF12 + -- : BFD_RELOC_FRV_TLSMOFFHI + -- : BFD_RELOC_FRV_TLSMOFFLO + -- : BFD_RELOC_FRV_GOTTLSOFF12 + -- : BFD_RELOC_FRV_GOTTLSOFFHI + -- : BFD_RELOC_FRV_GOTTLSOFFLO + -- : BFD_RELOC_FRV_TLSOFF + -- : BFD_RELOC_FRV_TLSDESC_RELAX + -- : BFD_RELOC_FRV_GETTLSOFF_RELAX + -- : BFD_RELOC_FRV_TLSOFF_RELAX + -- : BFD_RELOC_FRV_TLSMOFF + Fujitsu Frv Relocations. + + -- : BFD_RELOC_MN10300_GOTOFF24 + This is a 24bit GOT-relative reloc for the mn10300. + + -- : BFD_RELOC_MN10300_GOT32 + This is a 32bit GOT-relative reloc for the mn10300, offset by two + bytes in the instruction. + + -- : BFD_RELOC_MN10300_GOT24 + This is a 24bit GOT-relative reloc for the mn10300, offset by two + bytes in the instruction. + + -- : BFD_RELOC_MN10300_GOT16 + This is a 16bit GOT-relative reloc for the mn10300, offset by two + bytes in the instruction. + + -- : BFD_RELOC_MN10300_COPY + Copy symbol at runtime. + + -- : BFD_RELOC_MN10300_GLOB_DAT + Create GOT entry. + + -- : BFD_RELOC_MN10300_JMP_SLOT + Create PLT entry. + + -- : BFD_RELOC_MN10300_RELATIVE + Adjust by program base. + + -- : BFD_RELOC_MN10300_SYM_DIFF + Together with another reloc targeted at the same location, allows + for a value that is the difference of two symbols in the same + section. + + -- : BFD_RELOC_MN10300_ALIGN + The addend of this reloc is an alignment power that must be + honoured at the offset's location, regardless of linker relaxation. + + -- : BFD_RELOC_MN10300_TLS_GD + -- : BFD_RELOC_MN10300_TLS_LD + -- : BFD_RELOC_MN10300_TLS_LDO + -- : BFD_RELOC_MN10300_TLS_GOTIE + -- : BFD_RELOC_MN10300_TLS_IE + -- : BFD_RELOC_MN10300_TLS_LE + -- : BFD_RELOC_MN10300_TLS_DTPMOD + -- : BFD_RELOC_MN10300_TLS_DTPOFF + -- : BFD_RELOC_MN10300_TLS_TPOFF + Various TLS-related relocations. + + -- : BFD_RELOC_MN10300_32_PCREL + This is a 32bit pcrel reloc for the mn10300, offset by two bytes + in the instruction. + + -- : BFD_RELOC_MN10300_16_PCREL + This is a 16bit pcrel reloc for the mn10300, offset by two bytes + in the instruction. + + -- : BFD_RELOC_386_GOT32 + -- : BFD_RELOC_386_PLT32 + -- : BFD_RELOC_386_COPY + -- : BFD_RELOC_386_GLOB_DAT + -- : BFD_RELOC_386_JUMP_SLOT + -- : BFD_RELOC_386_RELATIVE + -- : BFD_RELOC_386_GOTOFF + -- : BFD_RELOC_386_GOTPC + -- : BFD_RELOC_386_TLS_TPOFF + -- : BFD_RELOC_386_TLS_IE + -- : BFD_RELOC_386_TLS_GOTIE + -- : BFD_RELOC_386_TLS_LE + -- : BFD_RELOC_386_TLS_GD + -- : BFD_RELOC_386_TLS_LDM + -- : BFD_RELOC_386_TLS_LDO_32 + -- : BFD_RELOC_386_TLS_IE_32 + -- : BFD_RELOC_386_TLS_LE_32 + -- : BFD_RELOC_386_TLS_DTPMOD32 + -- : BFD_RELOC_386_TLS_DTPOFF32 + -- : BFD_RELOC_386_TLS_TPOFF32 + -- : BFD_RELOC_386_TLS_GOTDESC + -- : BFD_RELOC_386_TLS_DESC_CALL + -- : BFD_RELOC_386_TLS_DESC + -- : BFD_RELOC_386_IRELATIVE + i386/elf relocations + + -- : BFD_RELOC_X86_64_GOT32 + -- : BFD_RELOC_X86_64_PLT32 + -- : BFD_RELOC_X86_64_COPY + -- : BFD_RELOC_X86_64_GLOB_DAT + -- : BFD_RELOC_X86_64_JUMP_SLOT + -- : BFD_RELOC_X86_64_RELATIVE + -- : BFD_RELOC_X86_64_GOTPCREL + -- : BFD_RELOC_X86_64_32S + -- : BFD_RELOC_X86_64_DTPMOD64 + -- : BFD_RELOC_X86_64_DTPOFF64 + -- : BFD_RELOC_X86_64_TPOFF64 + -- : BFD_RELOC_X86_64_TLSGD + -- : BFD_RELOC_X86_64_TLSLD + -- : BFD_RELOC_X86_64_DTPOFF32 + -- : BFD_RELOC_X86_64_GOTTPOFF + -- : BFD_RELOC_X86_64_TPOFF32 + -- : BFD_RELOC_X86_64_GOTOFF64 + -- : BFD_RELOC_X86_64_GOTPC32 + -- : BFD_RELOC_X86_64_GOT64 + -- : BFD_RELOC_X86_64_GOTPCREL64 + -- : BFD_RELOC_X86_64_GOTPC64 + -- : BFD_RELOC_X86_64_GOTPLT64 + -- : BFD_RELOC_X86_64_PLTOFF64 + -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC + -- : BFD_RELOC_X86_64_TLSDESC_CALL + -- : BFD_RELOC_X86_64_TLSDESC + -- : BFD_RELOC_X86_64_IRELATIVE + -- : BFD_RELOC_X86_64_PC32_BND + -- : BFD_RELOC_X86_64_PLT32_BND + x86-64/elf relocations + + -- : BFD_RELOC_NS32K_IMM_8 + -- : BFD_RELOC_NS32K_IMM_16 + -- : BFD_RELOC_NS32K_IMM_32 + -- : BFD_RELOC_NS32K_IMM_8_PCREL + -- : BFD_RELOC_NS32K_IMM_16_PCREL + -- : BFD_RELOC_NS32K_IMM_32_PCREL + -- : BFD_RELOC_NS32K_DISP_8 + -- : BFD_RELOC_NS32K_DISP_16 + -- : BFD_RELOC_NS32K_DISP_32 + -- : BFD_RELOC_NS32K_DISP_8_PCREL + -- : BFD_RELOC_NS32K_DISP_16_PCREL + -- : BFD_RELOC_NS32K_DISP_32_PCREL + ns32k relocations + + -- : BFD_RELOC_PDP11_DISP_8_PCREL + -- : BFD_RELOC_PDP11_DISP_6_PCREL + PDP11 relocations + + -- : BFD_RELOC_PJ_CODE_HI16 + -- : BFD_RELOC_PJ_CODE_LO16 + -- : BFD_RELOC_PJ_CODE_DIR16 + -- : BFD_RELOC_PJ_CODE_DIR32 + -- : BFD_RELOC_PJ_CODE_REL16 + -- : BFD_RELOC_PJ_CODE_REL32 + Picojava relocs. Not all of these appear in object files. + + -- : BFD_RELOC_PPC_B26 + -- : BFD_RELOC_PPC_BA26 + -- : BFD_RELOC_PPC_TOC16 + -- : BFD_RELOC_PPC_B16 + -- : BFD_RELOC_PPC_B16_BRTAKEN + -- : BFD_RELOC_PPC_B16_BRNTAKEN + -- : BFD_RELOC_PPC_BA16 + -- : BFD_RELOC_PPC_BA16_BRTAKEN + -- : BFD_RELOC_PPC_BA16_BRNTAKEN + -- : BFD_RELOC_PPC_COPY + -- : BFD_RELOC_PPC_GLOB_DAT + -- : BFD_RELOC_PPC_JMP_SLOT + -- : BFD_RELOC_PPC_RELATIVE + -- : BFD_RELOC_PPC_LOCAL24PC + -- : BFD_RELOC_PPC_EMB_NADDR32 + -- : BFD_RELOC_PPC_EMB_NADDR16 + -- : BFD_RELOC_PPC_EMB_NADDR16_LO + -- : BFD_RELOC_PPC_EMB_NADDR16_HI + -- : BFD_RELOC_PPC_EMB_NADDR16_HA + -- : BFD_RELOC_PPC_EMB_SDAI16 + -- : BFD_RELOC_PPC_EMB_SDA2I16 + -- : BFD_RELOC_PPC_EMB_SDA2REL + -- : BFD_RELOC_PPC_EMB_SDA21 + -- : BFD_RELOC_PPC_EMB_MRKREF + -- : BFD_RELOC_PPC_EMB_RELSEC16 + -- : BFD_RELOC_PPC_EMB_RELST_LO + -- : BFD_RELOC_PPC_EMB_RELST_HI + -- : BFD_RELOC_PPC_EMB_RELST_HA + -- : BFD_RELOC_PPC_EMB_BIT_FLD + -- : BFD_RELOC_PPC_EMB_RELSDA + -- : BFD_RELOC_PPC_VLE_REL8 + -- : BFD_RELOC_PPC_VLE_REL15 + -- : BFD_RELOC_PPC_VLE_REL24 + -- : BFD_RELOC_PPC_VLE_LO16A + -- : BFD_RELOC_PPC_VLE_LO16D + -- : BFD_RELOC_PPC_VLE_HI16A + -- : BFD_RELOC_PPC_VLE_HI16D + -- : BFD_RELOC_PPC_VLE_HA16A + -- : BFD_RELOC_PPC_VLE_HA16D + -- : BFD_RELOC_PPC_VLE_SDA21 + -- : BFD_RELOC_PPC_VLE_SDA21_LO + -- : BFD_RELOC_PPC_VLE_SDAREL_LO16A + -- : BFD_RELOC_PPC_VLE_SDAREL_LO16D + -- : BFD_RELOC_PPC_VLE_SDAREL_HI16A + -- : BFD_RELOC_PPC_VLE_SDAREL_HI16D + -- : BFD_RELOC_PPC_VLE_SDAREL_HA16A + -- : BFD_RELOC_PPC_VLE_SDAREL_HA16D + -- : BFD_RELOC_PPC64_HIGHER + -- : BFD_RELOC_PPC64_HIGHER_S + -- : BFD_RELOC_PPC64_HIGHEST + -- : BFD_RELOC_PPC64_HIGHEST_S + -- : BFD_RELOC_PPC64_TOC16_LO + -- : BFD_RELOC_PPC64_TOC16_HI + -- : BFD_RELOC_PPC64_TOC16_HA + -- : BFD_RELOC_PPC64_TOC + -- : BFD_RELOC_PPC64_PLTGOT16 + -- : BFD_RELOC_PPC64_PLTGOT16_LO + -- : BFD_RELOC_PPC64_PLTGOT16_HI + -- : BFD_RELOC_PPC64_PLTGOT16_HA + -- : BFD_RELOC_PPC64_ADDR16_DS + -- : BFD_RELOC_PPC64_ADDR16_LO_DS + -- : BFD_RELOC_PPC64_GOT16_DS + -- : BFD_RELOC_PPC64_GOT16_LO_DS + -- : BFD_RELOC_PPC64_PLT16_LO_DS + -- : BFD_RELOC_PPC64_SECTOFF_DS + -- : BFD_RELOC_PPC64_SECTOFF_LO_DS + -- : BFD_RELOC_PPC64_TOC16_DS + -- : BFD_RELOC_PPC64_TOC16_LO_DS + -- : BFD_RELOC_PPC64_PLTGOT16_DS + -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS + -- : BFD_RELOC_PPC64_ADDR16_HIGH + -- : BFD_RELOC_PPC64_ADDR16_HIGHA + -- : BFD_RELOC_PPC64_ADDR64_LOCAL + Power(rs6000) and PowerPC relocations. + + -- : BFD_RELOC_PPC_TLS + -- : BFD_RELOC_PPC_TLSGD + -- : BFD_RELOC_PPC_TLSLD + -- : BFD_RELOC_PPC_DTPMOD + -- : BFD_RELOC_PPC_TPREL16 + -- : BFD_RELOC_PPC_TPREL16_LO + -- : BFD_RELOC_PPC_TPREL16_HI + -- : BFD_RELOC_PPC_TPREL16_HA + -- : BFD_RELOC_PPC_TPREL + -- : BFD_RELOC_PPC_DTPREL16 + -- : BFD_RELOC_PPC_DTPREL16_LO + -- : BFD_RELOC_PPC_DTPREL16_HI + -- : BFD_RELOC_PPC_DTPREL16_HA + -- : BFD_RELOC_PPC_DTPREL + -- : BFD_RELOC_PPC_GOT_TLSGD16 + -- : BFD_RELOC_PPC_GOT_TLSGD16_LO + -- : BFD_RELOC_PPC_GOT_TLSGD16_HI + -- : BFD_RELOC_PPC_GOT_TLSGD16_HA + -- : BFD_RELOC_PPC_GOT_TLSLD16 + -- : BFD_RELOC_PPC_GOT_TLSLD16_LO + -- : BFD_RELOC_PPC_GOT_TLSLD16_HI + -- : BFD_RELOC_PPC_GOT_TLSLD16_HA + -- : BFD_RELOC_PPC_GOT_TPREL16 + -- : BFD_RELOC_PPC_GOT_TPREL16_LO + -- : BFD_RELOC_PPC_GOT_TPREL16_HI + -- : BFD_RELOC_PPC_GOT_TPREL16_HA + -- : BFD_RELOC_PPC_GOT_DTPREL16 + -- : BFD_RELOC_PPC_GOT_DTPREL16_LO + -- : BFD_RELOC_PPC_GOT_DTPREL16_HI + -- : BFD_RELOC_PPC_GOT_DTPREL16_HA + -- : BFD_RELOC_PPC64_TPREL16_DS + -- : BFD_RELOC_PPC64_TPREL16_LO_DS + -- : BFD_RELOC_PPC64_TPREL16_HIGHER + -- : BFD_RELOC_PPC64_TPREL16_HIGHERA + -- : BFD_RELOC_PPC64_TPREL16_HIGHEST + -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA + -- : BFD_RELOC_PPC64_DTPREL16_DS + -- : BFD_RELOC_PPC64_DTPREL16_LO_DS + -- : BFD_RELOC_PPC64_DTPREL16_HIGHER + -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA + -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST + -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA + -- : BFD_RELOC_PPC64_TPREL16_HIGH + -- : BFD_RELOC_PPC64_TPREL16_HIGHA + -- : BFD_RELOC_PPC64_DTPREL16_HIGH + -- : BFD_RELOC_PPC64_DTPREL16_HIGHA + PowerPC and PowerPC64 thread-local storage relocations. + + -- : BFD_RELOC_I370_D12 + IBM 370/390 relocations + + -- : BFD_RELOC_CTOR + The type of reloc used to build a constructor table - at the moment + probably a 32 bit wide absolute relocation, but the target can + choose. It generally does map to one of the other relocation + types. + + -- : BFD_RELOC_ARM_PCREL_BRANCH + ARM 26 bit pc-relative branch. The lowest two bits must be zero + and are not stored in the instruction. + + -- : BFD_RELOC_ARM_PCREL_BLX + ARM 26 bit pc-relative branch. The lowest bit must be zero and is + not stored in the instruction. The 2nd lowest bit comes from a 1 + bit field in the instruction. + + -- : BFD_RELOC_THUMB_PCREL_BLX + Thumb 22 bit pc-relative branch. The lowest bit must be zero and + is not stored in the instruction. The 2nd lowest bit comes from a + 1 bit field in the instruction. + + -- : BFD_RELOC_ARM_PCREL_CALL + ARM 26-bit pc-relative branch for an unconditional BL or BLX + instruction. + + -- : BFD_RELOC_ARM_PCREL_JUMP + ARM 26-bit pc-relative branch for B or conditional BL instruction. + + -- : BFD_RELOC_THUMB_PCREL_BRANCH7 + -- : BFD_RELOC_THUMB_PCREL_BRANCH9 + -- : BFD_RELOC_THUMB_PCREL_BRANCH12 + -- : BFD_RELOC_THUMB_PCREL_BRANCH20 + -- : BFD_RELOC_THUMB_PCREL_BRANCH23 + -- : BFD_RELOC_THUMB_PCREL_BRANCH25 + Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. The + lowest bit must be zero and is not stored in the instruction. + Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an + "nn" one smaller in all cases. Note further that BRANCH23 + corresponds to R_ARM_THM_CALL. + + -- : BFD_RELOC_ARM_OFFSET_IMM + 12-bit immediate offset, used in ARM-format ldr and str + instructions. + + -- : BFD_RELOC_ARM_THUMB_OFFSET + 5-bit immediate offset, used in Thumb-format ldr and str + instructions. + + -- : BFD_RELOC_ARM_TARGET1 + Pc-relative or absolute relocation depending on target. Used for + entries in .init_array sections. + + -- : BFD_RELOC_ARM_ROSEGREL32 + Read-only segment base relative address. + + -- : BFD_RELOC_ARM_SBREL32 + Data segment base relative address. + + -- : BFD_RELOC_ARM_TARGET2 + This reloc is used for references to RTTI data from exception + handling tables. The actual definition depends on the target. It + may be a pc-relative or some form of GOT-indirect relocation. + + -- : BFD_RELOC_ARM_PREL31 + 31-bit PC relative address. + + -- : BFD_RELOC_ARM_MOVW + -- : BFD_RELOC_ARM_MOVT + -- : BFD_RELOC_ARM_MOVW_PCREL + -- : BFD_RELOC_ARM_MOVT_PCREL + -- : BFD_RELOC_ARM_THUMB_MOVW + -- : BFD_RELOC_ARM_THUMB_MOVT + -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL + -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL + Low and High halfword relocations for MOVW and MOVT instructions. + + -- : BFD_RELOC_ARM_JUMP_SLOT + -- : BFD_RELOC_ARM_GLOB_DAT + -- : BFD_RELOC_ARM_GOT32 + -- : BFD_RELOC_ARM_PLT32 + -- : BFD_RELOC_ARM_RELATIVE + -- : BFD_RELOC_ARM_GOTOFF + -- : BFD_RELOC_ARM_GOTPC + -- : BFD_RELOC_ARM_GOT_PREL + Relocations for setting up GOTs and PLTs for shared libraries. + + -- : BFD_RELOC_ARM_TLS_GD32 + -- : BFD_RELOC_ARM_TLS_LDO32 + -- : BFD_RELOC_ARM_TLS_LDM32 + -- : BFD_RELOC_ARM_TLS_DTPOFF32 + -- : BFD_RELOC_ARM_TLS_DTPMOD32 + -- : BFD_RELOC_ARM_TLS_TPOFF32 + -- : BFD_RELOC_ARM_TLS_IE32 + -- : BFD_RELOC_ARM_TLS_LE32 + -- : BFD_RELOC_ARM_TLS_GOTDESC + -- : BFD_RELOC_ARM_TLS_CALL + -- : BFD_RELOC_ARM_THM_TLS_CALL + -- : BFD_RELOC_ARM_TLS_DESCSEQ + -- : BFD_RELOC_ARM_THM_TLS_DESCSEQ + -- : BFD_RELOC_ARM_TLS_DESC + ARM thread-local storage relocations. + + -- : BFD_RELOC_ARM_ALU_PC_G0_NC + -- : BFD_RELOC_ARM_ALU_PC_G0 + -- : BFD_RELOC_ARM_ALU_PC_G1_NC + -- : BFD_RELOC_ARM_ALU_PC_G1 + -- : BFD_RELOC_ARM_ALU_PC_G2 + -- : BFD_RELOC_ARM_LDR_PC_G0 + -- : BFD_RELOC_ARM_LDR_PC_G1 + -- : BFD_RELOC_ARM_LDR_PC_G2 + -- : BFD_RELOC_ARM_LDRS_PC_G0 + -- : BFD_RELOC_ARM_LDRS_PC_G1 + -- : BFD_RELOC_ARM_LDRS_PC_G2 + -- : BFD_RELOC_ARM_LDC_PC_G0 + -- : BFD_RELOC_ARM_LDC_PC_G1 + -- : BFD_RELOC_ARM_LDC_PC_G2 + -- : BFD_RELOC_ARM_ALU_SB_G0_NC + -- : BFD_RELOC_ARM_ALU_SB_G0 + -- : BFD_RELOC_ARM_ALU_SB_G1_NC + -- : BFD_RELOC_ARM_ALU_SB_G1 + -- : BFD_RELOC_ARM_ALU_SB_G2 + -- : BFD_RELOC_ARM_LDR_SB_G0 + -- : BFD_RELOC_ARM_LDR_SB_G1 + -- : BFD_RELOC_ARM_LDR_SB_G2 + -- : BFD_RELOC_ARM_LDRS_SB_G0 + -- : BFD_RELOC_ARM_LDRS_SB_G1 + -- : BFD_RELOC_ARM_LDRS_SB_G2 + -- : BFD_RELOC_ARM_LDC_SB_G0 + -- : BFD_RELOC_ARM_LDC_SB_G1 + -- : BFD_RELOC_ARM_LDC_SB_G2 + ARM group relocations. + + -- : BFD_RELOC_ARM_V4BX + Annotation of BX instructions. + + -- : BFD_RELOC_ARM_IRELATIVE + ARM support for STT_GNU_IFUNC. + + -- : BFD_RELOC_ARM_IMMEDIATE + -- : BFD_RELOC_ARM_ADRL_IMMEDIATE + -- : BFD_RELOC_ARM_T32_IMMEDIATE + -- : BFD_RELOC_ARM_T32_ADD_IMM + -- : BFD_RELOC_ARM_T32_IMM12 + -- : BFD_RELOC_ARM_T32_ADD_PC12 + -- : BFD_RELOC_ARM_SHIFT_IMM + -- : BFD_RELOC_ARM_SMC + -- : BFD_RELOC_ARM_HVC + -- : BFD_RELOC_ARM_SWI + -- : BFD_RELOC_ARM_MULTI + -- : BFD_RELOC_ARM_CP_OFF_IMM + -- : BFD_RELOC_ARM_CP_OFF_IMM_S2 + -- : BFD_RELOC_ARM_T32_CP_OFF_IMM + -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2 + -- : BFD_RELOC_ARM_ADR_IMM + -- : BFD_RELOC_ARM_LDR_IMM + -- : BFD_RELOC_ARM_LITERAL + -- : BFD_RELOC_ARM_IN_POOL + -- : BFD_RELOC_ARM_OFFSET_IMM8 + -- : BFD_RELOC_ARM_T32_OFFSET_U8 + -- : BFD_RELOC_ARM_T32_OFFSET_IMM + -- : BFD_RELOC_ARM_HWLITERAL + -- : BFD_RELOC_ARM_THUMB_ADD + -- : BFD_RELOC_ARM_THUMB_IMM + -- : BFD_RELOC_ARM_THUMB_SHIFT + These relocs are only used within the ARM assembler. They are not + (at present) written to any object files. + + -- : BFD_RELOC_SH_PCDISP8BY2 + -- : BFD_RELOC_SH_PCDISP12BY2 + -- : BFD_RELOC_SH_IMM3 + -- : BFD_RELOC_SH_IMM3U + -- : BFD_RELOC_SH_DISP12 + -- : BFD_RELOC_SH_DISP12BY2 + -- : BFD_RELOC_SH_DISP12BY4 + -- : BFD_RELOC_SH_DISP12BY8 + -- : BFD_RELOC_SH_DISP20 + -- : BFD_RELOC_SH_DISP20BY8 + -- : BFD_RELOC_SH_IMM4 + -- : BFD_RELOC_SH_IMM4BY2 + -- : BFD_RELOC_SH_IMM4BY4 + -- : BFD_RELOC_SH_IMM8 + -- : BFD_RELOC_SH_IMM8BY2 + -- : BFD_RELOC_SH_IMM8BY4 + -- : BFD_RELOC_SH_PCRELIMM8BY2 + -- : BFD_RELOC_SH_PCRELIMM8BY4 + -- : BFD_RELOC_SH_SWITCH16 + -- : BFD_RELOC_SH_SWITCH32 + -- : BFD_RELOC_SH_USES + -- : BFD_RELOC_SH_COUNT + -- : BFD_RELOC_SH_ALIGN + -- : BFD_RELOC_SH_CODE + -- : BFD_RELOC_SH_DATA + -- : BFD_RELOC_SH_LABEL + -- : BFD_RELOC_SH_LOOP_START + -- : BFD_RELOC_SH_LOOP_END + -- : BFD_RELOC_SH_COPY + -- : BFD_RELOC_SH_GLOB_DAT + -- : BFD_RELOC_SH_JMP_SLOT + -- : BFD_RELOC_SH_RELATIVE + -- : BFD_RELOC_SH_GOTPC + -- : BFD_RELOC_SH_GOT_LOW16 + -- : BFD_RELOC_SH_GOT_MEDLOW16 + -- : BFD_RELOC_SH_GOT_MEDHI16 + -- : BFD_RELOC_SH_GOT_HI16 + -- : BFD_RELOC_SH_GOTPLT_LOW16 + -- : BFD_RELOC_SH_GOTPLT_MEDLOW16 + -- : BFD_RELOC_SH_GOTPLT_MEDHI16 + -- : BFD_RELOC_SH_GOTPLT_HI16 + -- : BFD_RELOC_SH_PLT_LOW16 + -- : BFD_RELOC_SH_PLT_MEDLOW16 + -- : BFD_RELOC_SH_PLT_MEDHI16 + -- : BFD_RELOC_SH_PLT_HI16 + -- : BFD_RELOC_SH_GOTOFF_LOW16 + -- : BFD_RELOC_SH_GOTOFF_MEDLOW16 + -- : BFD_RELOC_SH_GOTOFF_MEDHI16 + -- : BFD_RELOC_SH_GOTOFF_HI16 + -- : BFD_RELOC_SH_GOTPC_LOW16 + -- : BFD_RELOC_SH_GOTPC_MEDLOW16 + -- : BFD_RELOC_SH_GOTPC_MEDHI16 + -- : BFD_RELOC_SH_GOTPC_HI16 + -- : BFD_RELOC_SH_COPY64 + -- : BFD_RELOC_SH_GLOB_DAT64 + -- : BFD_RELOC_SH_JMP_SLOT64 + -- : BFD_RELOC_SH_RELATIVE64 + -- : BFD_RELOC_SH_GOT10BY4 + -- : BFD_RELOC_SH_GOT10BY8 + -- : BFD_RELOC_SH_GOTPLT10BY4 + -- : BFD_RELOC_SH_GOTPLT10BY8 + -- : BFD_RELOC_SH_GOTPLT32 + -- : BFD_RELOC_SH_SHMEDIA_CODE + -- : BFD_RELOC_SH_IMMU5 + -- : BFD_RELOC_SH_IMMS6 + -- : BFD_RELOC_SH_IMMS6BY32 + -- : BFD_RELOC_SH_IMMU6 + -- : BFD_RELOC_SH_IMMS10 + -- : BFD_RELOC_SH_IMMS10BY2 + -- : BFD_RELOC_SH_IMMS10BY4 + -- : BFD_RELOC_SH_IMMS10BY8 + -- : BFD_RELOC_SH_IMMS16 + -- : BFD_RELOC_SH_IMMU16 + -- : BFD_RELOC_SH_IMM_LOW16 + -- : BFD_RELOC_SH_IMM_LOW16_PCREL + -- : BFD_RELOC_SH_IMM_MEDLOW16 + -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL + -- : BFD_RELOC_SH_IMM_MEDHI16 + -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL + -- : BFD_RELOC_SH_IMM_HI16 + -- : BFD_RELOC_SH_IMM_HI16_PCREL + -- : BFD_RELOC_SH_PT_16 + -- : BFD_RELOC_SH_TLS_GD_32 + -- : BFD_RELOC_SH_TLS_LD_32 + -- : BFD_RELOC_SH_TLS_LDO_32 + -- : BFD_RELOC_SH_TLS_IE_32 + -- : BFD_RELOC_SH_TLS_LE_32 + -- : BFD_RELOC_SH_TLS_DTPMOD32 + -- : BFD_RELOC_SH_TLS_DTPOFF32 + -- : BFD_RELOC_SH_TLS_TPOFF32 + -- : BFD_RELOC_SH_GOT20 + -- : BFD_RELOC_SH_GOTOFF20 + -- : BFD_RELOC_SH_GOTFUNCDESC + -- : BFD_RELOC_SH_GOTFUNCDESC20 + -- : BFD_RELOC_SH_GOTOFFFUNCDESC + -- : BFD_RELOC_SH_GOTOFFFUNCDESC20 + -- : BFD_RELOC_SH_FUNCDESC + Renesas / SuperH SH relocs. Not all of these appear in object + files. + + -- : BFD_RELOC_ARC_B22_PCREL + ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two + bits must be zero and are not stored in the instruction. The high + 20 bits are installed in bits 26 through 7 of the instruction. + + -- : BFD_RELOC_ARC_B26 + ARC 26 bit absolute branch. The lowest two bits must be zero and + are not stored in the instruction. The high 24 bits are installed + in bits 23 through 0. + + -- : BFD_RELOC_BFIN_16_IMM + ADI Blackfin 16 bit immediate absolute reloc. + + -- : BFD_RELOC_BFIN_16_HIGH + ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. + + -- : BFD_RELOC_BFIN_4_PCREL + ADI Blackfin 'a' part of LSETUP. + + -- : BFD_RELOC_BFIN_5_PCREL + ADI Blackfin. + + -- : BFD_RELOC_BFIN_16_LOW + ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. + + -- : BFD_RELOC_BFIN_10_PCREL + ADI Blackfin. + + -- : BFD_RELOC_BFIN_11_PCREL + ADI Blackfin 'b' part of LSETUP. + + -- : BFD_RELOC_BFIN_12_PCREL_JUMP + ADI Blackfin. + + -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S + ADI Blackfin Short jump, pcrel. + + -- : BFD_RELOC_BFIN_24_PCREL_CALL_X + ADI Blackfin Call.x not implemented. + + -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L + ADI Blackfin Long Jump pcrel. + + -- : BFD_RELOC_BFIN_GOT17M4 + -- : BFD_RELOC_BFIN_GOTHI + -- : BFD_RELOC_BFIN_GOTLO + -- : BFD_RELOC_BFIN_FUNCDESC + -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4 + -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI + -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO + -- : BFD_RELOC_BFIN_FUNCDESC_VALUE + -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4 + -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI + -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO + -- : BFD_RELOC_BFIN_GOTOFF17M4 + -- : BFD_RELOC_BFIN_GOTOFFHI + -- : BFD_RELOC_BFIN_GOTOFFLO + ADI Blackfin FD-PIC relocations. + + -- : BFD_RELOC_BFIN_GOT + ADI Blackfin GOT relocation. + + -- : BFD_RELOC_BFIN_PLTPC + ADI Blackfin PLTPC relocation. + + -- : BFD_ARELOC_BFIN_PUSH + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_CONST + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_ADD + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_SUB + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_MULT + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_DIV + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_MOD + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_LSHIFT + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_RSHIFT + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_AND + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_OR + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_XOR + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_LAND + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_LOR + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_LEN + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_NEG + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_COMP + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_PAGE + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_HWPAGE + ADI Blackfin arithmetic relocation. + + -- : BFD_ARELOC_BFIN_ADDR + ADI Blackfin arithmetic relocation. + + -- : BFD_RELOC_D10V_10_PCREL_R + Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 + bits assumed to be 0. + + -- : BFD_RELOC_D10V_10_PCREL_L + Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 + bits assumed to be 0. This is the same as the previous reloc + except it is in the left container, i.e., shifted left 15 bits. + + -- : BFD_RELOC_D10V_18 + This is an 18-bit reloc with the right 2 bits assumed to be 0. + + -- : BFD_RELOC_D10V_18_PCREL + This is an 18-bit reloc with the right 2 bits assumed to be 0. + + -- : BFD_RELOC_D30V_6 + Mitsubishi D30V relocs. This is a 6-bit absolute reloc. + + -- : BFD_RELOC_D30V_9_PCREL + This is a 6-bit pc-relative reloc with the right 3 bits assumed to + be 0. + + -- : BFD_RELOC_D30V_9_PCREL_R + This is a 6-bit pc-relative reloc with the right 3 bits assumed to + be 0. Same as the previous reloc but on the right side of the + container. + + -- : BFD_RELOC_D30V_15 + This is a 12-bit absolute reloc with the right 3 bitsassumed to be + 0. + + -- : BFD_RELOC_D30V_15_PCREL + This is a 12-bit pc-relative reloc with the right 3 bits assumed + to be 0. + + -- : BFD_RELOC_D30V_15_PCREL_R + This is a 12-bit pc-relative reloc with the right 3 bits assumed + to be 0. Same as the previous reloc but on the right side of the + container. + + -- : BFD_RELOC_D30V_21 + This is an 18-bit absolute reloc with the right 3 bits assumed to + be 0. + + -- : BFD_RELOC_D30V_21_PCREL + This is an 18-bit pc-relative reloc with the right 3 bits assumed + to be 0. + + -- : BFD_RELOC_D30V_21_PCREL_R + This is an 18-bit pc-relative reloc with the right 3 bits assumed + to be 0. Same as the previous reloc but on the right side of the + container. + + -- : BFD_RELOC_D30V_32 + This is a 32-bit absolute reloc. + + -- : BFD_RELOC_D30V_32_PCREL + This is a 32-bit pc-relative reloc. + + -- : BFD_RELOC_DLX_HI16_S + DLX relocs + + -- : BFD_RELOC_DLX_LO16 + DLX relocs + + -- : BFD_RELOC_DLX_JMP26 + DLX relocs + + -- : BFD_RELOC_M32C_HI8 + -- : BFD_RELOC_M32C_RL_JUMP + -- : BFD_RELOC_M32C_RL_1ADDR + -- : BFD_RELOC_M32C_RL_2ADDR + Renesas M16C/M32C Relocations. + + -- : BFD_RELOC_M32R_24 + Renesas M32R (formerly Mitsubishi M32R) relocs. This is a 24 bit + absolute address. + + -- : BFD_RELOC_M32R_10_PCREL + This is a 10-bit pc-relative reloc with the right 2 bits assumed + to be 0. + + -- : BFD_RELOC_M32R_18_PCREL + This is an 18-bit reloc with the right 2 bits assumed to be 0. + + -- : BFD_RELOC_M32R_26_PCREL + This is a 26-bit reloc with the right 2 bits assumed to be 0. + + -- : BFD_RELOC_M32R_HI16_ULO + This is a 16-bit reloc containing the high 16 bits of an address + used when the lower 16 bits are treated as unsigned. + + -- : BFD_RELOC_M32R_HI16_SLO + This is a 16-bit reloc containing the high 16 bits of an address + used when the lower 16 bits are treated as signed. + + -- : BFD_RELOC_M32R_LO16 + This is a 16-bit reloc containing the lower 16 bits of an address. + + -- : BFD_RELOC_M32R_SDA16 + This is a 16-bit reloc containing the small data area offset for + use in add3, load, and store instructions. + + -- : BFD_RELOC_M32R_GOT24 + -- : BFD_RELOC_M32R_26_PLTREL + -- : BFD_RELOC_M32R_COPY + -- : BFD_RELOC_M32R_GLOB_DAT + -- : BFD_RELOC_M32R_JMP_SLOT + -- : BFD_RELOC_M32R_RELATIVE + -- : BFD_RELOC_M32R_GOTOFF + -- : BFD_RELOC_M32R_GOTOFF_HI_ULO + -- : BFD_RELOC_M32R_GOTOFF_HI_SLO + -- : BFD_RELOC_M32R_GOTOFF_LO + -- : BFD_RELOC_M32R_GOTPC24 + -- : BFD_RELOC_M32R_GOT16_HI_ULO + -- : BFD_RELOC_M32R_GOT16_HI_SLO + -- : BFD_RELOC_M32R_GOT16_LO + -- : BFD_RELOC_M32R_GOTPC_HI_ULO + -- : BFD_RELOC_M32R_GOTPC_HI_SLO + -- : BFD_RELOC_M32R_GOTPC_LO + For PIC. + + -- : BFD_RELOC_NDS32_20 + NDS32 relocs. This is a 20 bit absolute address. + + -- : BFD_RELOC_NDS32_9_PCREL + This is a 9-bit pc-relative reloc with the right 1 bit assumed to + be 0. + + -- : BFD_RELOC_NDS32_WORD_9_PCREL + This is a 9-bit pc-relative reloc with the right 1 bit assumed to + be 0. + + -- : BFD_RELOC_NDS32_15_PCREL + This is an 15-bit reloc with the right 1 bit assumed to be 0. + + -- : BFD_RELOC_NDS32_17_PCREL + This is an 17-bit reloc with the right 1 bit assumed to be 0. + + -- : BFD_RELOC_NDS32_25_PCREL + This is a 25-bit reloc with the right 1 bit assumed to be 0. + + -- : BFD_RELOC_NDS32_HI20 + This is a 20-bit reloc containing the high 20 bits of an address + used with the lower 12 bits + + -- : BFD_RELOC_NDS32_LO12S3 + This is a 12-bit reloc containing the lower 12 bits of an address + then shift right by 3. This is used with ldi,sdi... + + -- : BFD_RELOC_NDS32_LO12S2 + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 2. This is used with lwi,swi... + + -- : BFD_RELOC_NDS32_LO12S1 + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 1. This is used with lhi,shi... + + -- : BFD_RELOC_NDS32_LO12S0 + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 0. This is used with lbisbi... + + -- : BFD_RELOC_NDS32_LO12S0_ORI + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 0. This is only used with branch relaxations + + -- : BFD_RELOC_NDS32_SDA15S3 + This is a 15-bit reloc containing the small data area 18-bit + signed offset and shift left by 3 for use in ldi, sdi... + + -- : BFD_RELOC_NDS32_SDA15S2 + This is a 15-bit reloc containing the small data area 17-bit + signed offset and shift left by 2 for use in lwi, swi... + + -- : BFD_RELOC_NDS32_SDA15S1 + This is a 15-bit reloc containing the small data area 16-bit + signed offset and shift left by 1 for use in lhi, shi... + + -- : BFD_RELOC_NDS32_SDA15S0 + This is a 15-bit reloc containing the small data area 15-bit + signed offset and shift left by 0 for use in lbi, sbi... + + -- : BFD_RELOC_NDS32_SDA16S3 + This is a 16-bit reloc containing the small data area 16-bit + signed offset and shift left by 3 + + -- : BFD_RELOC_NDS32_SDA17S2 + This is a 17-bit reloc containing the small data area 17-bit + signed offset and shift left by 2 for use in lwi.gp, swi.gp... + + -- : BFD_RELOC_NDS32_SDA18S1 + This is a 18-bit reloc containing the small data area 18-bit + signed offset and shift left by 1 for use in lhi.gp, shi.gp... + + -- : BFD_RELOC_NDS32_SDA19S0 + This is a 19-bit reloc containing the small data area 19-bit + signed offset and shift left by 0 for use in lbi.gp, sbi.gp... + + -- : BFD_RELOC_NDS32_GOT20 + -- : BFD_RELOC_NDS32_9_PLTREL + -- : BFD_RELOC_NDS32_25_PLTREL + -- : BFD_RELOC_NDS32_COPY + -- : BFD_RELOC_NDS32_GLOB_DAT + -- : BFD_RELOC_NDS32_JMP_SLOT + -- : BFD_RELOC_NDS32_RELATIVE + -- : BFD_RELOC_NDS32_GOTOFF + -- : BFD_RELOC_NDS32_GOTOFF_HI20 + -- : BFD_RELOC_NDS32_GOTOFF_LO12 + -- : BFD_RELOC_NDS32_GOTPC20 + -- : BFD_RELOC_NDS32_GOT_HI20 + -- : BFD_RELOC_NDS32_GOT_LO12 + -- : BFD_RELOC_NDS32_GOTPC_HI20 + -- : BFD_RELOC_NDS32_GOTPC_LO12 + for PIC + + -- : BFD_RELOC_NDS32_INSN16 + -- : BFD_RELOC_NDS32_LABEL + -- : BFD_RELOC_NDS32_LONGCALL1 + -- : BFD_RELOC_NDS32_LONGCALL2 + -- : BFD_RELOC_NDS32_LONGCALL3 + -- : BFD_RELOC_NDS32_LONGJUMP1 + -- : BFD_RELOC_NDS32_LONGJUMP2 + -- : BFD_RELOC_NDS32_LONGJUMP3 + -- : BFD_RELOC_NDS32_LOADSTORE + -- : BFD_RELOC_NDS32_9_FIXED + -- : BFD_RELOC_NDS32_15_FIXED + -- : BFD_RELOC_NDS32_17_FIXED + -- : BFD_RELOC_NDS32_25_FIXED + -- : BFD_RELOC_NDS32_LONGCALL4 + -- : BFD_RELOC_NDS32_LONGCALL5 + -- : BFD_RELOC_NDS32_LONGCALL6 + -- : BFD_RELOC_NDS32_LONGJUMP4 + -- : BFD_RELOC_NDS32_LONGJUMP5 + -- : BFD_RELOC_NDS32_LONGJUMP6 + -- : BFD_RELOC_NDS32_LONGJUMP7 + for relax + + -- : BFD_RELOC_NDS32_PLTREL_HI20 + -- : BFD_RELOC_NDS32_PLTREL_LO12 + -- : BFD_RELOC_NDS32_PLT_GOTREL_HI20 + -- : BFD_RELOC_NDS32_PLT_GOTREL_LO12 + for PIC + + -- : BFD_RELOC_NDS32_SDA12S2_DP + -- : BFD_RELOC_NDS32_SDA12S2_SP + -- : BFD_RELOC_NDS32_LO12S2_DP + -- : BFD_RELOC_NDS32_LO12S2_SP + for floating point + + -- : BFD_RELOC_NDS32_DWARF2_OP1 + -- : BFD_RELOC_NDS32_DWARF2_OP2 + -- : BFD_RELOC_NDS32_DWARF2_LEB + for dwarf2 debug_line. + + -- : BFD_RELOC_NDS32_UPDATE_TA + for eliminate 16-bit instructions + + -- : BFD_RELOC_NDS32_PLT_GOTREL_LO20 + -- : BFD_RELOC_NDS32_PLT_GOTREL_LO15 + -- : BFD_RELOC_NDS32_PLT_GOTREL_LO19 + -- : BFD_RELOC_NDS32_GOT_LO15 + -- : BFD_RELOC_NDS32_GOT_LO19 + -- : BFD_RELOC_NDS32_GOTOFF_LO15 + -- : BFD_RELOC_NDS32_GOTOFF_LO19 + -- : BFD_RELOC_NDS32_GOT15S2 + -- : BFD_RELOC_NDS32_GOT17S2 + for PIC object relaxation + + -- : BFD_RELOC_NDS32_5 + NDS32 relocs. This is a 5 bit absolute address. + + -- : BFD_RELOC_NDS32_10_UPCREL + This is a 10-bit unsigned pc-relative reloc with the right 1 bit + assumed to be 0. + + -- : BFD_RELOC_NDS32_SDA_FP7U2_RELA + If fp were omitted, fp can used as another gp. + + -- : BFD_RELOC_NDS32_RELAX_ENTRY + -- : BFD_RELOC_NDS32_GOT_SUFF + -- : BFD_RELOC_NDS32_GOTOFF_SUFF + -- : BFD_RELOC_NDS32_PLT_GOT_SUFF + -- : BFD_RELOC_NDS32_MULCALL_SUFF + -- : BFD_RELOC_NDS32_PTR + -- : BFD_RELOC_NDS32_PTR_COUNT + -- : BFD_RELOC_NDS32_PTR_RESOLVED + -- : BFD_RELOC_NDS32_PLTBLOCK + -- : BFD_RELOC_NDS32_RELAX_REGION_BEGIN + -- : BFD_RELOC_NDS32_RELAX_REGION_END + -- : BFD_RELOC_NDS32_MINUEND + -- : BFD_RELOC_NDS32_SUBTRAHEND + -- : BFD_RELOC_NDS32_DIFF8 + -- : BFD_RELOC_NDS32_DIFF16 + -- : BFD_RELOC_NDS32_DIFF32 + -- : BFD_RELOC_NDS32_DIFF_ULEB128 + -- : BFD_RELOC_NDS32_EMPTY + relaxation relative relocation types + + -- : BFD_RELOC_NDS32_25_ABS + This is a 25 bit absolute address. + + -- : BFD_RELOC_NDS32_DATA + -- : BFD_RELOC_NDS32_TRAN + -- : BFD_RELOC_NDS32_17IFC_PCREL + -- : BFD_RELOC_NDS32_10IFCU_PCREL + For ex9 and ifc using. + + -- : BFD_RELOC_NDS32_TPOFF + -- : BFD_RELOC_NDS32_TLS_LE_HI20 + -- : BFD_RELOC_NDS32_TLS_LE_LO12 + -- : BFD_RELOC_NDS32_TLS_LE_ADD + -- : BFD_RELOC_NDS32_TLS_LE_LS + -- : BFD_RELOC_NDS32_GOTTPOFF + -- : BFD_RELOC_NDS32_TLS_IE_HI20 + -- : BFD_RELOC_NDS32_TLS_IE_LO12S2 + -- : BFD_RELOC_NDS32_TLS_TPOFF + -- : BFD_RELOC_NDS32_TLS_LE_20 + -- : BFD_RELOC_NDS32_TLS_LE_15S0 + -- : BFD_RELOC_NDS32_TLS_LE_15S1 + -- : BFD_RELOC_NDS32_TLS_LE_15S2 + For TLS. + + -- : BFD_RELOC_V850_9_PCREL + This is a 9-bit reloc + + -- : BFD_RELOC_V850_22_PCREL + This is a 22-bit reloc + + -- : BFD_RELOC_V850_SDA_16_16_OFFSET + This is a 16 bit offset from the short data area pointer. + + -- : BFD_RELOC_V850_SDA_15_16_OFFSET + This is a 16 bit offset (of which only 15 bits are used) from the + short data area pointer. + + -- : BFD_RELOC_V850_ZDA_16_16_OFFSET + This is a 16 bit offset from the zero data area pointer. + + -- : BFD_RELOC_V850_ZDA_15_16_OFFSET + This is a 16 bit offset (of which only 15 bits are used) from the + zero data area pointer. + + -- : BFD_RELOC_V850_TDA_6_8_OFFSET + This is an 8 bit offset (of which only 6 bits are used) from the + tiny data area pointer. + + -- : BFD_RELOC_V850_TDA_7_8_OFFSET + This is an 8bit offset (of which only 7 bits are used) from the + tiny data area pointer. + + -- : BFD_RELOC_V850_TDA_7_7_OFFSET + This is a 7 bit offset from the tiny data area pointer. + + -- : BFD_RELOC_V850_TDA_16_16_OFFSET + This is a 16 bit offset from the tiny data area pointer. + + -- : BFD_RELOC_V850_TDA_4_5_OFFSET + This is a 5 bit offset (of which only 4 bits are used) from the + tiny data area pointer. + + -- : BFD_RELOC_V850_TDA_4_4_OFFSET + This is a 4 bit offset from the tiny data area pointer. + + -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET + This is a 16 bit offset from the short data area pointer, with the + bits placed non-contiguously in the instruction. + + -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET + This is a 16 bit offset from the zero data area pointer, with the + bits placed non-contiguously in the instruction. + + -- : BFD_RELOC_V850_CALLT_6_7_OFFSET + This is a 6 bit offset from the call table base pointer. + + -- : BFD_RELOC_V850_CALLT_16_16_OFFSET + This is a 16 bit offset from the call table base pointer. + + -- : BFD_RELOC_V850_LONGCALL + Used for relaxing indirect function calls. + + -- : BFD_RELOC_V850_LONGJUMP + Used for relaxing indirect jumps. + + -- : BFD_RELOC_V850_ALIGN + Used to maintain alignment whilst relaxing. + + -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET + This is a variation of BFD_RELOC_LO16 that can be used in v850e + ld.bu instructions. + + -- : BFD_RELOC_V850_16_PCREL + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_17_PCREL + This is a 17-bit reloc. + + -- : BFD_RELOC_V850_23 + This is a 23-bit reloc. + + -- : BFD_RELOC_V850_32_PCREL + This is a 32-bit reloc. + + -- : BFD_RELOC_V850_32_ABS + This is a 32-bit reloc. + + -- : BFD_RELOC_V850_16_SPLIT_OFFSET + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_16_S1 + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_LO16_S1 + Low 16 bits. 16 bit shifted by 1. + + -- : BFD_RELOC_V850_CALLT_15_16_OFFSET + This is a 16 bit offset from the call table base pointer. + + -- : BFD_RELOC_V850_32_GOTPCREL + DSO relocations. + + -- : BFD_RELOC_V850_16_GOT + DSO relocations. + + -- : BFD_RELOC_V850_32_GOT + DSO relocations. + + -- : BFD_RELOC_V850_22_PLT_PCREL + DSO relocations. + + -- : BFD_RELOC_V850_32_PLT_PCREL + DSO relocations. + + -- : BFD_RELOC_V850_COPY + DSO relocations. + + -- : BFD_RELOC_V850_GLOB_DAT + DSO relocations. + + -- : BFD_RELOC_V850_JMP_SLOT + DSO relocations. + + -- : BFD_RELOC_V850_RELATIVE + DSO relocations. + + -- : BFD_RELOC_V850_16_GOTOFF + DSO relocations. + + -- : BFD_RELOC_V850_32_GOTOFF + DSO relocations. + + -- : BFD_RELOC_V850_CODE + start code. + + -- : BFD_RELOC_V850_DATA + start data in text. + + -- : BFD_RELOC_TIC30_LDP + This is a 8bit DP reloc for the tms320c30, where the most + significant 8 bits of a 24 bit word are placed into the least + significant 8 bits of the opcode. + + -- : BFD_RELOC_TIC54X_PARTLS7 + This is a 7bit reloc for the tms320c54x, where the least + significant 7 bits of a 16 bit word are placed into the least + significant 7 bits of the opcode. + + -- : BFD_RELOC_TIC54X_PARTMS9 + This is a 9bit DP reloc for the tms320c54x, where the most + significant 9 bits of a 16 bit word are placed into the least + significant 9 bits of the opcode. + + -- : BFD_RELOC_TIC54X_23 + This is an extended address 23-bit reloc for the tms320c54x. + + -- : BFD_RELOC_TIC54X_16_OF_23 + This is a 16-bit reloc for the tms320c54x, where the least + significant 16 bits of a 23-bit extended address are placed into + the opcode. + + -- : BFD_RELOC_TIC54X_MS7_OF_23 + This is a reloc for the tms320c54x, where the most significant 7 + bits of a 23-bit extended address are placed into the opcode. + + -- : BFD_RELOC_C6000_PCR_S21 + -- : BFD_RELOC_C6000_PCR_S12 + -- : BFD_RELOC_C6000_PCR_S10 + -- : BFD_RELOC_C6000_PCR_S7 + -- : BFD_RELOC_C6000_ABS_S16 + -- : BFD_RELOC_C6000_ABS_L16 + -- : BFD_RELOC_C6000_ABS_H16 + -- : BFD_RELOC_C6000_SBR_U15_B + -- : BFD_RELOC_C6000_SBR_U15_H + -- : BFD_RELOC_C6000_SBR_U15_W + -- : BFD_RELOC_C6000_SBR_S16 + -- : BFD_RELOC_C6000_SBR_L16_B + -- : BFD_RELOC_C6000_SBR_L16_H + -- : BFD_RELOC_C6000_SBR_L16_W + -- : BFD_RELOC_C6000_SBR_H16_B + -- : BFD_RELOC_C6000_SBR_H16_H + -- : BFD_RELOC_C6000_SBR_H16_W + -- : BFD_RELOC_C6000_SBR_GOT_U15_W + -- : BFD_RELOC_C6000_SBR_GOT_L16_W + -- : BFD_RELOC_C6000_SBR_GOT_H16_W + -- : BFD_RELOC_C6000_DSBT_INDEX + -- : BFD_RELOC_C6000_PREL31 + -- : BFD_RELOC_C6000_COPY + -- : BFD_RELOC_C6000_JUMP_SLOT + -- : BFD_RELOC_C6000_EHTYPE + -- : BFD_RELOC_C6000_PCR_H16 + -- : BFD_RELOC_C6000_PCR_L16 + -- : BFD_RELOC_C6000_ALIGN + -- : BFD_RELOC_C6000_FPHEAD + -- : BFD_RELOC_C6000_NOCMP + TMS320C6000 relocations. + + -- : BFD_RELOC_FR30_48 + This is a 48 bit reloc for the FR30 that stores 32 bits. + + -- : BFD_RELOC_FR30_20 + This is a 32 bit reloc for the FR30 that stores 20 bits split up + into two sections. + + -- : BFD_RELOC_FR30_6_IN_4 + This is a 16 bit reloc for the FR30 that stores a 6 bit word + offset in 4 bits. + + -- : BFD_RELOC_FR30_8_IN_8 + This is a 16 bit reloc for the FR30 that stores an 8 bit byte + offset into 8 bits. + + -- : BFD_RELOC_FR30_9_IN_8 + This is a 16 bit reloc for the FR30 that stores a 9 bit short + offset into 8 bits. + + -- : BFD_RELOC_FR30_10_IN_8 + This is a 16 bit reloc for the FR30 that stores a 10 bit word + offset into 8 bits. + + -- : BFD_RELOC_FR30_9_PCREL + This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative + short offset into 8 bits. + + -- : BFD_RELOC_FR30_12_PCREL + This is a 16 bit reloc for the FR30 that stores a 12 bit pc + relative short offset into 11 bits. + + -- : BFD_RELOC_MCORE_PCREL_IMM8BY4 + -- : BFD_RELOC_MCORE_PCREL_IMM11BY2 + -- : BFD_RELOC_MCORE_PCREL_IMM4BY2 + -- : BFD_RELOC_MCORE_PCREL_32 + -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2 + -- : BFD_RELOC_MCORE_RVA + Motorola Mcore relocations. + + -- : BFD_RELOC_MEP_8 + -- : BFD_RELOC_MEP_16 + -- : BFD_RELOC_MEP_32 + -- : BFD_RELOC_MEP_PCREL8A2 + -- : BFD_RELOC_MEP_PCREL12A2 + -- : BFD_RELOC_MEP_PCREL17A2 + -- : BFD_RELOC_MEP_PCREL24A2 + -- : BFD_RELOC_MEP_PCABS24A2 + -- : BFD_RELOC_MEP_LOW16 + -- : BFD_RELOC_MEP_HI16U + -- : BFD_RELOC_MEP_HI16S + -- : BFD_RELOC_MEP_GPREL + -- : BFD_RELOC_MEP_TPREL + -- : BFD_RELOC_MEP_TPREL7 + -- : BFD_RELOC_MEP_TPREL7A2 + -- : BFD_RELOC_MEP_TPREL7A4 + -- : BFD_RELOC_MEP_UIMM24 + -- : BFD_RELOC_MEP_ADDR24A4 + -- : BFD_RELOC_MEP_GNU_VTINHERIT + -- : BFD_RELOC_MEP_GNU_VTENTRY + Toshiba Media Processor Relocations. + + -- : BFD_RELOC_METAG_HIADDR16 + -- : BFD_RELOC_METAG_LOADDR16 + -- : BFD_RELOC_METAG_RELBRANCH + -- : BFD_RELOC_METAG_GETSETOFF + -- : BFD_RELOC_METAG_HIOG + -- : BFD_RELOC_METAG_LOOG + -- : BFD_RELOC_METAG_REL8 + -- : BFD_RELOC_METAG_REL16 + -- : BFD_RELOC_METAG_HI16_GOTOFF + -- : BFD_RELOC_METAG_LO16_GOTOFF + -- : BFD_RELOC_METAG_GETSET_GOTOFF + -- : BFD_RELOC_METAG_GETSET_GOT + -- : BFD_RELOC_METAG_HI16_GOTPC + -- : BFD_RELOC_METAG_LO16_GOTPC + -- : BFD_RELOC_METAG_HI16_PLT + -- : BFD_RELOC_METAG_LO16_PLT + -- : BFD_RELOC_METAG_RELBRANCH_PLT + -- : BFD_RELOC_METAG_GOTOFF + -- : BFD_RELOC_METAG_PLT + -- : BFD_RELOC_METAG_COPY + -- : BFD_RELOC_METAG_JMP_SLOT + -- : BFD_RELOC_METAG_RELATIVE + -- : BFD_RELOC_METAG_GLOB_DAT + -- : BFD_RELOC_METAG_TLS_GD + -- : BFD_RELOC_METAG_TLS_LDM + -- : BFD_RELOC_METAG_TLS_LDO_HI16 + -- : BFD_RELOC_METAG_TLS_LDO_LO16 + -- : BFD_RELOC_METAG_TLS_LDO + -- : BFD_RELOC_METAG_TLS_IE + -- : BFD_RELOC_METAG_TLS_IENONPIC + -- : BFD_RELOC_METAG_TLS_IENONPIC_HI16 + -- : BFD_RELOC_METAG_TLS_IENONPIC_LO16 + -- : BFD_RELOC_METAG_TLS_TPOFF + -- : BFD_RELOC_METAG_TLS_DTPMOD + -- : BFD_RELOC_METAG_TLS_DTPOFF + -- : BFD_RELOC_METAG_TLS_LE + -- : BFD_RELOC_METAG_TLS_LE_HI16 + -- : BFD_RELOC_METAG_TLS_LE_LO16 + Imagination Technologies Meta relocations. + + -- : BFD_RELOC_MMIX_GETA + -- : BFD_RELOC_MMIX_GETA_1 + -- : BFD_RELOC_MMIX_GETA_2 + -- : BFD_RELOC_MMIX_GETA_3 + These are relocations for the GETA instruction. + + -- : BFD_RELOC_MMIX_CBRANCH + -- : BFD_RELOC_MMIX_CBRANCH_J + -- : BFD_RELOC_MMIX_CBRANCH_1 + -- : BFD_RELOC_MMIX_CBRANCH_2 + -- : BFD_RELOC_MMIX_CBRANCH_3 + These are relocations for a conditional branch instruction. + + -- : BFD_RELOC_MMIX_PUSHJ + -- : BFD_RELOC_MMIX_PUSHJ_1 + -- : BFD_RELOC_MMIX_PUSHJ_2 + -- : BFD_RELOC_MMIX_PUSHJ_3 + -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE + These are relocations for the PUSHJ instruction. + + -- : BFD_RELOC_MMIX_JMP + -- : BFD_RELOC_MMIX_JMP_1 + -- : BFD_RELOC_MMIX_JMP_2 + -- : BFD_RELOC_MMIX_JMP_3 + These are relocations for the JMP instruction. + + -- : BFD_RELOC_MMIX_ADDR19 + This is a relocation for a relative address as in a GETA + instruction or a branch. + + -- : BFD_RELOC_MMIX_ADDR27 + This is a relocation for a relative address as in a JMP + instruction. + + -- : BFD_RELOC_MMIX_REG_OR_BYTE + This is a relocation for an instruction field that may be a general + register or a value 0..255. + + -- : BFD_RELOC_MMIX_REG + This is a relocation for an instruction field that may be a general + register. + + -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET + This is a relocation for two instruction fields holding a register + and an offset, the equivalent of the relocation. + + -- : BFD_RELOC_MMIX_LOCAL + This relocation is an assertion that the expression is not + allocated as a global register. It does not modify contents. + + -- : BFD_RELOC_AVR_7_PCREL + This is a 16 bit reloc for the AVR that stores 8 bit pc relative + short offset into 7 bits. + + -- : BFD_RELOC_AVR_13_PCREL + This is a 16 bit reloc for the AVR that stores 13 bit pc relative + short offset into 12 bits. + + -- : BFD_RELOC_AVR_16_PM + This is a 16 bit reloc for the AVR that stores 17 bit value + (usually program memory address) into 16 bits. + + -- : BFD_RELOC_AVR_LO8_LDI + This is a 16 bit reloc for the AVR that stores 8 bit value (usually + data memory address) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_HI8_LDI + This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 + bit of data memory address) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_HH8_LDI + This is a 16 bit reloc for the AVR that stores 8 bit value (most + high 8 bit of program memory address) into 8 bit immediate value + of LDI insn. + + -- : BFD_RELOC_AVR_MS8_LDI + This is a 16 bit reloc for the AVR that stores 8 bit value (most + high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_LO8_LDI_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (usually data memory address) into 8 bit immediate value of SUBI + insn. + + -- : BFD_RELOC_AVR_HI8_LDI_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (high 8 bit of data memory address) into 8 bit immediate value of + SUBI insn. + + -- : BFD_RELOC_AVR_HH8_LDI_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (most high 8 bit of program memory address) into 8 bit immediate + value of LDI or SUBI insn. + + -- : BFD_RELOC_AVR_MS8_LDI_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (msb of 32 bit value) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_LO8_LDI_PM + This is a 16 bit reloc for the AVR that stores 8 bit value (usually + command address) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_LO8_LDI_GS + This is a 16 bit reloc for the AVR that stores 8 bit value + (command address) into 8 bit immediate value of LDI insn. If the + address is beyond the 128k boundary, the linker inserts a jump + stub for this reloc in the lower 128k. + + -- : BFD_RELOC_AVR_HI8_LDI_PM + This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 + bit of command address) into 8 bit immediate value of LDI insn. + + -- : BFD_RELOC_AVR_HI8_LDI_GS + This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 + bit of command address) into 8 bit immediate value of LDI insn. + If the address is beyond the 128k boundary, the linker inserts a + jump stub for this reloc below 128k. + + -- : BFD_RELOC_AVR_HH8_LDI_PM + This is a 16 bit reloc for the AVR that stores 8 bit value (most + high 8 bit of command address) into 8 bit immediate value of LDI + insn. + + -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (usually command address) into 8 bit immediate value of SUBI insn. + + -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (high 8 bit of 16 bit command address) into 8 bit immediate value + of SUBI insn. + + -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG + This is a 16 bit reloc for the AVR that stores negated 8 bit value + (high 6 bit of 22 bit command address) into 8 bit immediate value + of SUBI insn. + + -- : BFD_RELOC_AVR_CALL + This is a 32 bit reloc for the AVR that stores 23 bit value into + 22 bits. + + -- : BFD_RELOC_AVR_LDI + This is a 16 bit reloc for the AVR that stores all needed bits for + absolute addressing with ldi with overflow check to linktime + + -- : BFD_RELOC_AVR_6 + This is a 6 bit reloc for the AVR that stores offset for ldd/std + instructions + + -- : BFD_RELOC_AVR_6_ADIW + This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw + instructions + + -- : BFD_RELOC_AVR_8_LO + This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol + in .byte lo8(symbol) + + -- : BFD_RELOC_AVR_8_HI + This is a 8 bit reloc for the AVR that stores bits 8..15 of a + symbol in .byte hi8(symbol) + + -- : BFD_RELOC_AVR_8_HLO + This is a 8 bit reloc for the AVR that stores bits 16..23 of a + symbol in .byte hlo8(symbol) + + -- : BFD_RELOC_AVR_DIFF8 + -- : BFD_RELOC_AVR_DIFF16 + -- : BFD_RELOC_AVR_DIFF32 + AVR relocations to mark the difference of two local symbols. + These are only needed to support linker relaxation and can be + ignored when not relaxing. The field is set to the value of the + difference assuming no relaxation. The relocation encodes the + position of the second symbol so the linker can determine whether + to adjust the field value. + + -- : BFD_RELOC_AVR_LDS_STS_16 + This is a 7 bit reloc for the AVR that stores SRAM address for + 16bit lds and sts instructions supported only tiny core. + + -- : BFD_RELOC_AVR_PORT6 + This is a 6 bit reloc for the AVR that stores an I/O register + number for the IN and OUT instructions + + -- : BFD_RELOC_AVR_PORT5 + This is a 5 bit reloc for the AVR that stores an I/O register + number for the SBIC, SBIS, SBI and CBI instructions + + -- : BFD_RELOC_RL78_NEG8 + -- : BFD_RELOC_RL78_NEG16 + -- : BFD_RELOC_RL78_NEG24 + -- : BFD_RELOC_RL78_NEG32 + -- : BFD_RELOC_RL78_16_OP + -- : BFD_RELOC_RL78_24_OP + -- : BFD_RELOC_RL78_32_OP + -- : BFD_RELOC_RL78_8U + -- : BFD_RELOC_RL78_16U + -- : BFD_RELOC_RL78_24U + -- : BFD_RELOC_RL78_DIR3U_PCREL + -- : BFD_RELOC_RL78_DIFF + -- : BFD_RELOC_RL78_GPRELB + -- : BFD_RELOC_RL78_GPRELW + -- : BFD_RELOC_RL78_GPRELL + -- : BFD_RELOC_RL78_SYM + -- : BFD_RELOC_RL78_OP_SUBTRACT + -- : BFD_RELOC_RL78_OP_NEG + -- : BFD_RELOC_RL78_OP_AND + -- : BFD_RELOC_RL78_OP_SHRA + -- : BFD_RELOC_RL78_ABS8 + -- : BFD_RELOC_RL78_ABS16 + -- : BFD_RELOC_RL78_ABS16_REV + -- : BFD_RELOC_RL78_ABS32 + -- : BFD_RELOC_RL78_ABS32_REV + -- : BFD_RELOC_RL78_ABS16U + -- : BFD_RELOC_RL78_ABS16UW + -- : BFD_RELOC_RL78_ABS16UL + -- : BFD_RELOC_RL78_RELAX + -- : BFD_RELOC_RL78_HI16 + -- : BFD_RELOC_RL78_HI8 + -- : BFD_RELOC_RL78_LO16 + -- : BFD_RELOC_RL78_CODE + Renesas RL78 Relocations. + + -- : BFD_RELOC_RX_NEG8 + -- : BFD_RELOC_RX_NEG16 + -- : BFD_RELOC_RX_NEG24 + -- : BFD_RELOC_RX_NEG32 + -- : BFD_RELOC_RX_16_OP + -- : BFD_RELOC_RX_24_OP + -- : BFD_RELOC_RX_32_OP + -- : BFD_RELOC_RX_8U + -- : BFD_RELOC_RX_16U + -- : BFD_RELOC_RX_24U + -- : BFD_RELOC_RX_DIR3U_PCREL + -- : BFD_RELOC_RX_DIFF + -- : BFD_RELOC_RX_GPRELB + -- : BFD_RELOC_RX_GPRELW + -- : BFD_RELOC_RX_GPRELL + -- : BFD_RELOC_RX_SYM + -- : BFD_RELOC_RX_OP_SUBTRACT + -- : BFD_RELOC_RX_OP_NEG + -- : BFD_RELOC_RX_ABS8 + -- : BFD_RELOC_RX_ABS16 + -- : BFD_RELOC_RX_ABS16_REV + -- : BFD_RELOC_RX_ABS32 + -- : BFD_RELOC_RX_ABS32_REV + -- : BFD_RELOC_RX_ABS16U + -- : BFD_RELOC_RX_ABS16UW + -- : BFD_RELOC_RX_ABS16UL + -- : BFD_RELOC_RX_RELAX + Renesas RX Relocations. + + -- : BFD_RELOC_390_12 + Direct 12 bit. + + -- : BFD_RELOC_390_GOT12 + 12 bit GOT offset. + + -- : BFD_RELOC_390_PLT32 + 32 bit PC relative PLT address. + + -- : BFD_RELOC_390_COPY + Copy symbol at runtime. + + -- : BFD_RELOC_390_GLOB_DAT + Create GOT entry. + + -- : BFD_RELOC_390_JMP_SLOT + Create PLT entry. + + -- : BFD_RELOC_390_RELATIVE + Adjust by program base. + + -- : BFD_RELOC_390_GOTPC + 32 bit PC relative offset to GOT. + + -- : BFD_RELOC_390_GOT16 + 16 bit GOT offset. + + -- : BFD_RELOC_390_PC12DBL + PC relative 12 bit shifted by 1. + + -- : BFD_RELOC_390_PLT12DBL + 12 bit PC rel. PLT shifted by 1. + + -- : BFD_RELOC_390_PC16DBL + PC relative 16 bit shifted by 1. + + -- : BFD_RELOC_390_PLT16DBL + 16 bit PC rel. PLT shifted by 1. + + -- : BFD_RELOC_390_PC24DBL + PC relative 24 bit shifted by 1. + + -- : BFD_RELOC_390_PLT24DBL + 24 bit PC rel. PLT shifted by 1. + + -- : BFD_RELOC_390_PC32DBL + PC relative 32 bit shifted by 1. + + -- : BFD_RELOC_390_PLT32DBL + 32 bit PC rel. PLT shifted by 1. + + -- : BFD_RELOC_390_GOTPCDBL + 32 bit PC rel. GOT shifted by 1. + + -- : BFD_RELOC_390_GOT64 + 64 bit GOT offset. + + -- : BFD_RELOC_390_PLT64 + 64 bit PC relative PLT address. + + -- : BFD_RELOC_390_GOTENT + 32 bit rel. offset to GOT entry. + + -- : BFD_RELOC_390_GOTOFF64 + 64 bit offset to GOT. + + -- : BFD_RELOC_390_GOTPLT12 + 12-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_390_GOTPLT16 + 16-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_390_GOTPLT32 + 32-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_390_GOTPLT64 + 64-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_390_GOTPLTENT + 32-bit rel. offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_390_PLTOFF16 + 16-bit rel. offset from the GOT to a PLT entry. + + -- : BFD_RELOC_390_PLTOFF32 + 32-bit rel. offset from the GOT to a PLT entry. + + -- : BFD_RELOC_390_PLTOFF64 + 64-bit rel. offset from the GOT to a PLT entry. + + -- : BFD_RELOC_390_TLS_LOAD + -- : BFD_RELOC_390_TLS_GDCALL + -- : BFD_RELOC_390_TLS_LDCALL + -- : BFD_RELOC_390_TLS_GD32 + -- : BFD_RELOC_390_TLS_GD64 + -- : BFD_RELOC_390_TLS_GOTIE12 + -- : BFD_RELOC_390_TLS_GOTIE32 + -- : BFD_RELOC_390_TLS_GOTIE64 + -- : BFD_RELOC_390_TLS_LDM32 + -- : BFD_RELOC_390_TLS_LDM64 + -- : BFD_RELOC_390_TLS_IE32 + -- : BFD_RELOC_390_TLS_IE64 + -- : BFD_RELOC_390_TLS_IEENT + -- : BFD_RELOC_390_TLS_LE32 + -- : BFD_RELOC_390_TLS_LE64 + -- : BFD_RELOC_390_TLS_LDO32 + -- : BFD_RELOC_390_TLS_LDO64 + -- : BFD_RELOC_390_TLS_DTPMOD + -- : BFD_RELOC_390_TLS_DTPOFF + -- : BFD_RELOC_390_TLS_TPOFF + s390 tls relocations. + + -- : BFD_RELOC_390_20 + -- : BFD_RELOC_390_GOT20 + -- : BFD_RELOC_390_GOTPLT20 + -- : BFD_RELOC_390_TLS_GOTIE20 + Long displacement extension. + + -- : BFD_RELOC_390_IRELATIVE + STT_GNU_IFUNC relocation. + + -- : BFD_RELOC_SCORE_GPREL15 + Score relocations Low 16 bit for load/store + + -- : BFD_RELOC_SCORE_DUMMY2 + -- : BFD_RELOC_SCORE_JMP + This is a 24-bit reloc with the right 1 bit assumed to be 0 + + -- : BFD_RELOC_SCORE_BRANCH + This is a 19-bit reloc with the right 1 bit assumed to be 0 + + -- : BFD_RELOC_SCORE_IMM30 + This is a 32-bit reloc for 48-bit instructions. + + -- : BFD_RELOC_SCORE_IMM32 + This is a 32-bit reloc for 48-bit instructions. + + -- : BFD_RELOC_SCORE16_JMP + This is a 11-bit reloc with the right 1 bit assumed to be 0 + + -- : BFD_RELOC_SCORE16_BRANCH + This is a 8-bit reloc with the right 1 bit assumed to be 0 + + -- : BFD_RELOC_SCORE_BCMP + This is a 9-bit reloc with the right 1 bit assumed to be 0 + + -- : BFD_RELOC_SCORE_GOT15 + -- : BFD_RELOC_SCORE_GOT_LO16 + -- : BFD_RELOC_SCORE_CALL15 + -- : BFD_RELOC_SCORE_DUMMY_HI16 + Undocumented Score relocs + + -- : BFD_RELOC_IP2K_FR9 + Scenix IP2K - 9-bit register number / data address + + -- : BFD_RELOC_IP2K_BANK + Scenix IP2K - 4-bit register/data bank number + + -- : BFD_RELOC_IP2K_ADDR16CJP + Scenix IP2K - low 13 bits of instruction word address + + -- : BFD_RELOC_IP2K_PAGE3 + Scenix IP2K - high 3 bits of instruction word address + + -- : BFD_RELOC_IP2K_LO8DATA + -- : BFD_RELOC_IP2K_HI8DATA + -- : BFD_RELOC_IP2K_EX8DATA + Scenix IP2K - ext/low/high 8 bits of data address + + -- : BFD_RELOC_IP2K_LO8INSN + -- : BFD_RELOC_IP2K_HI8INSN + Scenix IP2K - low/high 8 bits of instruction word address + + -- : BFD_RELOC_IP2K_PC_SKIP + Scenix IP2K - even/odd PC modifier to modify snb pcl.0 + + -- : BFD_RELOC_IP2K_TEXT + Scenix IP2K - 16 bit word address in text section. + + -- : BFD_RELOC_IP2K_FR_OFFSET + Scenix IP2K - 7-bit sp or dp offset + + -- : BFD_RELOC_VPE4KMATH_DATA + -- : BFD_RELOC_VPE4KMATH_INSN + Scenix VPE4K coprocessor - data/insn-space addressing + + -- : BFD_RELOC_VTABLE_INHERIT + -- : BFD_RELOC_VTABLE_ENTRY + These two relocations are used by the linker to determine which of + the entries in a C++ virtual function table are actually used. + When the -gc-sections option is given, the linker will zero out + the entries that are not used, so that the code for those + functions need not be included in the output. + + VTABLE_INHERIT is a zero-space relocation used to describe to the + linker the inheritance tree of a C++ virtual function table. The + relocation's symbol should be the parent class' vtable, and the + relocation should be located at the child vtable. + + VTABLE_ENTRY is a zero-space relocation that describes the use of a + virtual function table entry. The reloc's symbol should refer to + the table of the class mentioned in the code. Off of that base, + an offset describes the entry that is being used. For Rela hosts, + this offset is stored in the reloc's addend. For Rel hosts, we + are forced to put this offset in the reloc's section offset. + + -- : BFD_RELOC_IA64_IMM14 + -- : BFD_RELOC_IA64_IMM22 + -- : BFD_RELOC_IA64_IMM64 + -- : BFD_RELOC_IA64_DIR32MSB + -- : BFD_RELOC_IA64_DIR32LSB + -- : BFD_RELOC_IA64_DIR64MSB + -- : BFD_RELOC_IA64_DIR64LSB + -- : BFD_RELOC_IA64_GPREL22 + -- : BFD_RELOC_IA64_GPREL64I + -- : BFD_RELOC_IA64_GPREL32MSB + -- : BFD_RELOC_IA64_GPREL32LSB + -- : BFD_RELOC_IA64_GPREL64MSB + -- : BFD_RELOC_IA64_GPREL64LSB + -- : BFD_RELOC_IA64_LTOFF22 + -- : BFD_RELOC_IA64_LTOFF64I + -- : BFD_RELOC_IA64_PLTOFF22 + -- : BFD_RELOC_IA64_PLTOFF64I + -- : BFD_RELOC_IA64_PLTOFF64MSB + -- : BFD_RELOC_IA64_PLTOFF64LSB + -- : BFD_RELOC_IA64_FPTR64I + -- : BFD_RELOC_IA64_FPTR32MSB + -- : BFD_RELOC_IA64_FPTR32LSB + -- : BFD_RELOC_IA64_FPTR64MSB + -- : BFD_RELOC_IA64_FPTR64LSB + -- : BFD_RELOC_IA64_PCREL21B + -- : BFD_RELOC_IA64_PCREL21BI + -- : BFD_RELOC_IA64_PCREL21M + -- : BFD_RELOC_IA64_PCREL21F + -- : BFD_RELOC_IA64_PCREL22 + -- : BFD_RELOC_IA64_PCREL60B + -- : BFD_RELOC_IA64_PCREL64I + -- : BFD_RELOC_IA64_PCREL32MSB + -- : BFD_RELOC_IA64_PCREL32LSB + -- : BFD_RELOC_IA64_PCREL64MSB + -- : BFD_RELOC_IA64_PCREL64LSB + -- : BFD_RELOC_IA64_LTOFF_FPTR22 + -- : BFD_RELOC_IA64_LTOFF_FPTR64I + -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB + -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB + -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB + -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB + -- : BFD_RELOC_IA64_SEGREL32MSB + -- : BFD_RELOC_IA64_SEGREL32LSB + -- : BFD_RELOC_IA64_SEGREL64MSB + -- : BFD_RELOC_IA64_SEGREL64LSB + -- : BFD_RELOC_IA64_SECREL32MSB + -- : BFD_RELOC_IA64_SECREL32LSB + -- : BFD_RELOC_IA64_SECREL64MSB + -- : BFD_RELOC_IA64_SECREL64LSB + -- : BFD_RELOC_IA64_REL32MSB + -- : BFD_RELOC_IA64_REL32LSB + -- : BFD_RELOC_IA64_REL64MSB + -- : BFD_RELOC_IA64_REL64LSB + -- : BFD_RELOC_IA64_LTV32MSB + -- : BFD_RELOC_IA64_LTV32LSB + -- : BFD_RELOC_IA64_LTV64MSB + -- : BFD_RELOC_IA64_LTV64LSB + -- : BFD_RELOC_IA64_IPLTMSB + -- : BFD_RELOC_IA64_IPLTLSB + -- : BFD_RELOC_IA64_COPY + -- : BFD_RELOC_IA64_LTOFF22X + -- : BFD_RELOC_IA64_LDXMOV + -- : BFD_RELOC_IA64_TPREL14 + -- : BFD_RELOC_IA64_TPREL22 + -- : BFD_RELOC_IA64_TPREL64I + -- : BFD_RELOC_IA64_TPREL64MSB + -- : BFD_RELOC_IA64_TPREL64LSB + -- : BFD_RELOC_IA64_LTOFF_TPREL22 + -- : BFD_RELOC_IA64_DTPMOD64MSB + -- : BFD_RELOC_IA64_DTPMOD64LSB + -- : BFD_RELOC_IA64_LTOFF_DTPMOD22 + -- : BFD_RELOC_IA64_DTPREL14 + -- : BFD_RELOC_IA64_DTPREL22 + -- : BFD_RELOC_IA64_DTPREL64I + -- : BFD_RELOC_IA64_DTPREL32MSB + -- : BFD_RELOC_IA64_DTPREL32LSB + -- : BFD_RELOC_IA64_DTPREL64MSB + -- : BFD_RELOC_IA64_DTPREL64LSB + -- : BFD_RELOC_IA64_LTOFF_DTPREL22 + Intel IA64 Relocations. + + -- : BFD_RELOC_M68HC11_HI8 + Motorola 68HC11 reloc. This is the 8 bit high part of an absolute + address. + + -- : BFD_RELOC_M68HC11_LO8 + Motorola 68HC11 reloc. This is the 8 bit low part of an absolute + address. + + -- : BFD_RELOC_M68HC11_3B + Motorola 68HC11 reloc. This is the 3 bit of a value. + + -- : BFD_RELOC_M68HC11_RL_JUMP + Motorola 68HC11 reloc. This reloc marks the beginning of a + jump/call instruction. It is used for linker relaxation to + correctly identify beginning of instruction and change some + branches to use PC-relative addressing mode. + + -- : BFD_RELOC_M68HC11_RL_GROUP + Motorola 68HC11 reloc. This reloc marks a group of several + instructions that gcc generates and for which the linker + relaxation pass can modify and/or remove some of them. + + -- : BFD_RELOC_M68HC11_LO16 + Motorola 68HC11 reloc. This is the 16-bit lower part of an + address. It is used for 'call' instruction to specify the symbol + address without any special transformation (due to memory bank + window). + + -- : BFD_RELOC_M68HC11_PAGE + Motorola 68HC11 reloc. This is a 8-bit reloc that specifies the + page number of an address. It is used by 'call' instruction to + specify the page number of the symbol. + + -- : BFD_RELOC_M68HC11_24 + Motorola 68HC11 reloc. This is a 24-bit reloc that represents the + address with a 16-bit value and a 8-bit page number. The symbol + address is transformed to follow the 16K memory bank of 68HC12 + (seen as mapped in the window). + + -- : BFD_RELOC_M68HC12_5B + Motorola 68HC12 reloc. This is the 5 bits of a value. + + -- : BFD_RELOC_XGATE_RL_JUMP + Freescale XGATE reloc. This reloc marks the beginning of a + bra/jal instruction. + + -- : BFD_RELOC_XGATE_RL_GROUP + Freescale XGATE reloc. This reloc marks a group of several + instructions that gcc generates and for which the linker + relaxation pass can modify and/or remove some of them. + + -- : BFD_RELOC_XGATE_LO16 + Freescale XGATE reloc. This is the 16-bit lower part of an + address. It is used for the '16-bit' instructions. + + -- : BFD_RELOC_XGATE_GPAGE + Freescale XGATE reloc. + + -- : BFD_RELOC_XGATE_24 + Freescale XGATE reloc. + + -- : BFD_RELOC_XGATE_PCREL_9 + Freescale XGATE reloc. This is a 9-bit pc-relative reloc. + + -- : BFD_RELOC_XGATE_PCREL_10 + Freescale XGATE reloc. This is a 10-bit pc-relative reloc. + + -- : BFD_RELOC_XGATE_IMM8_LO + Freescale XGATE reloc. This is the 16-bit lower part of an + address. It is used for the '16-bit' instructions. + + -- : BFD_RELOC_XGATE_IMM8_HI + Freescale XGATE reloc. This is the 16-bit higher part of an + address. It is used for the '16-bit' instructions. + + -- : BFD_RELOC_XGATE_IMM3 + Freescale XGATE reloc. This is a 3-bit pc-relative reloc. + + -- : BFD_RELOC_XGATE_IMM4 + Freescale XGATE reloc. This is a 4-bit pc-relative reloc. + + -- : BFD_RELOC_XGATE_IMM5 + Freescale XGATE reloc. This is a 5-bit pc-relative reloc. + + -- : BFD_RELOC_M68HC12_9B + Motorola 68HC12 reloc. This is the 9 bits of a value. + + -- : BFD_RELOC_M68HC12_16B + Motorola 68HC12 reloc. This is the 16 bits of a value. + + -- : BFD_RELOC_M68HC12_9_PCREL + Motorola 68HC12/XGATE reloc. This is a PCREL9 branch. + + -- : BFD_RELOC_M68HC12_10_PCREL + Motorola 68HC12/XGATE reloc. This is a PCREL10 branch. + + -- : BFD_RELOC_M68HC12_LO8XG + Motorola 68HC12/XGATE reloc. This is the 8 bit low part of an + absolute address and immediately precedes a matching HI8XG part. + + -- : BFD_RELOC_M68HC12_HI8XG + Motorola 68HC12/XGATE reloc. This is the 8 bit high part of an + absolute address and immediately follows a matching LO8XG part. + + -- : BFD_RELOC_16C_NUM08 + -- : BFD_RELOC_16C_NUM08_C + -- : BFD_RELOC_16C_NUM16 + -- : BFD_RELOC_16C_NUM16_C + -- : BFD_RELOC_16C_NUM32 + -- : BFD_RELOC_16C_NUM32_C + -- : BFD_RELOC_16C_DISP04 + -- : BFD_RELOC_16C_DISP04_C + -- : BFD_RELOC_16C_DISP08 + -- : BFD_RELOC_16C_DISP08_C + -- : BFD_RELOC_16C_DISP16 + -- : BFD_RELOC_16C_DISP16_C + -- : BFD_RELOC_16C_DISP24 + -- : BFD_RELOC_16C_DISP24_C + -- : BFD_RELOC_16C_DISP24a + -- : BFD_RELOC_16C_DISP24a_C + -- : BFD_RELOC_16C_REG04 + -- : BFD_RELOC_16C_REG04_C + -- : BFD_RELOC_16C_REG04a + -- : BFD_RELOC_16C_REG04a_C + -- : BFD_RELOC_16C_REG14 + -- : BFD_RELOC_16C_REG14_C + -- : BFD_RELOC_16C_REG16 + -- : BFD_RELOC_16C_REG16_C + -- : BFD_RELOC_16C_REG20 + -- : BFD_RELOC_16C_REG20_C + -- : BFD_RELOC_16C_ABS20 + -- : BFD_RELOC_16C_ABS20_C + -- : BFD_RELOC_16C_ABS24 + -- : BFD_RELOC_16C_ABS24_C + -- : BFD_RELOC_16C_IMM04 + -- : BFD_RELOC_16C_IMM04_C + -- : BFD_RELOC_16C_IMM16 + -- : BFD_RELOC_16C_IMM16_C + -- : BFD_RELOC_16C_IMM20 + -- : BFD_RELOC_16C_IMM20_C + -- : BFD_RELOC_16C_IMM24 + -- : BFD_RELOC_16C_IMM24_C + -- : BFD_RELOC_16C_IMM32 + -- : BFD_RELOC_16C_IMM32_C + NS CR16C Relocations. + + -- : BFD_RELOC_CR16_NUM8 + -- : BFD_RELOC_CR16_NUM16 + -- : BFD_RELOC_CR16_NUM32 + -- : BFD_RELOC_CR16_NUM32a + -- : BFD_RELOC_CR16_REGREL0 + -- : BFD_RELOC_CR16_REGREL4 + -- : BFD_RELOC_CR16_REGREL4a + -- : BFD_RELOC_CR16_REGREL14 + -- : BFD_RELOC_CR16_REGREL14a + -- : BFD_RELOC_CR16_REGREL16 + -- : BFD_RELOC_CR16_REGREL20 + -- : BFD_RELOC_CR16_REGREL20a + -- : BFD_RELOC_CR16_ABS20 + -- : BFD_RELOC_CR16_ABS24 + -- : BFD_RELOC_CR16_IMM4 + -- : BFD_RELOC_CR16_IMM8 + -- : BFD_RELOC_CR16_IMM16 + -- : BFD_RELOC_CR16_IMM20 + -- : BFD_RELOC_CR16_IMM24 + -- : BFD_RELOC_CR16_IMM32 + -- : BFD_RELOC_CR16_IMM32a + -- : BFD_RELOC_CR16_DISP4 + -- : BFD_RELOC_CR16_DISP8 + -- : BFD_RELOC_CR16_DISP16 + -- : BFD_RELOC_CR16_DISP20 + -- : BFD_RELOC_CR16_DISP24 + -- : BFD_RELOC_CR16_DISP24a + -- : BFD_RELOC_CR16_SWITCH8 + -- : BFD_RELOC_CR16_SWITCH16 + -- : BFD_RELOC_CR16_SWITCH32 + -- : BFD_RELOC_CR16_GOT_REGREL20 + -- : BFD_RELOC_CR16_GOTC_REGREL20 + -- : BFD_RELOC_CR16_GLOB_DAT + NS CR16 Relocations. + + -- : BFD_RELOC_CRX_REL4 + -- : BFD_RELOC_CRX_REL8 + -- : BFD_RELOC_CRX_REL8_CMP + -- : BFD_RELOC_CRX_REL16 + -- : BFD_RELOC_CRX_REL24 + -- : BFD_RELOC_CRX_REL32 + -- : BFD_RELOC_CRX_REGREL12 + -- : BFD_RELOC_CRX_REGREL22 + -- : BFD_RELOC_CRX_REGREL28 + -- : BFD_RELOC_CRX_REGREL32 + -- : BFD_RELOC_CRX_ABS16 + -- : BFD_RELOC_CRX_ABS32 + -- : BFD_RELOC_CRX_NUM8 + -- : BFD_RELOC_CRX_NUM16 + -- : BFD_RELOC_CRX_NUM32 + -- : BFD_RELOC_CRX_IMM16 + -- : BFD_RELOC_CRX_IMM32 + -- : BFD_RELOC_CRX_SWITCH8 + -- : BFD_RELOC_CRX_SWITCH16 + -- : BFD_RELOC_CRX_SWITCH32 + NS CRX Relocations. + + -- : BFD_RELOC_CRIS_BDISP8 + -- : BFD_RELOC_CRIS_UNSIGNED_5 + -- : BFD_RELOC_CRIS_SIGNED_6 + -- : BFD_RELOC_CRIS_UNSIGNED_6 + -- : BFD_RELOC_CRIS_SIGNED_8 + -- : BFD_RELOC_CRIS_UNSIGNED_8 + -- : BFD_RELOC_CRIS_SIGNED_16 + -- : BFD_RELOC_CRIS_UNSIGNED_16 + -- : BFD_RELOC_CRIS_LAPCQ_OFFSET + -- : BFD_RELOC_CRIS_UNSIGNED_4 + These relocs are only used within the CRIS assembler. They are not + (at present) written to any object files. + + -- : BFD_RELOC_CRIS_COPY + -- : BFD_RELOC_CRIS_GLOB_DAT + -- : BFD_RELOC_CRIS_JUMP_SLOT + -- : BFD_RELOC_CRIS_RELATIVE + Relocs used in ELF shared libraries for CRIS. + + -- : BFD_RELOC_CRIS_32_GOT + 32-bit offset to symbol-entry within GOT. + + -- : BFD_RELOC_CRIS_16_GOT + 16-bit offset to symbol-entry within GOT. + + -- : BFD_RELOC_CRIS_32_GOTPLT + 32-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_CRIS_16_GOTPLT + 16-bit offset to symbol-entry within GOT, with PLT handling. + + -- : BFD_RELOC_CRIS_32_GOTREL + 32-bit offset to symbol, relative to GOT. + + -- : BFD_RELOC_CRIS_32_PLT_GOTREL + 32-bit offset to symbol with PLT entry, relative to GOT. + + -- : BFD_RELOC_CRIS_32_PLT_PCREL + 32-bit offset to symbol with PLT entry, relative to this + relocation. + + -- : BFD_RELOC_CRIS_32_GOT_GD + -- : BFD_RELOC_CRIS_16_GOT_GD + -- : BFD_RELOC_CRIS_32_GD + -- : BFD_RELOC_CRIS_DTP + -- : BFD_RELOC_CRIS_32_DTPREL + -- : BFD_RELOC_CRIS_16_DTPREL + -- : BFD_RELOC_CRIS_32_GOT_TPREL + -- : BFD_RELOC_CRIS_16_GOT_TPREL + -- : BFD_RELOC_CRIS_32_TPREL + -- : BFD_RELOC_CRIS_16_TPREL + -- : BFD_RELOC_CRIS_DTPMOD + -- : BFD_RELOC_CRIS_32_IE + Relocs used in TLS code for CRIS. + + -- : BFD_RELOC_860_COPY + -- : BFD_RELOC_860_GLOB_DAT + -- : BFD_RELOC_860_JUMP_SLOT + -- : BFD_RELOC_860_RELATIVE + -- : BFD_RELOC_860_PC26 + -- : BFD_RELOC_860_PLT26 + -- : BFD_RELOC_860_PC16 + -- : BFD_RELOC_860_LOW0 + -- : BFD_RELOC_860_SPLIT0 + -- : BFD_RELOC_860_LOW1 + -- : BFD_RELOC_860_SPLIT1 + -- : BFD_RELOC_860_LOW2 + -- : BFD_RELOC_860_SPLIT2 + -- : BFD_RELOC_860_LOW3 + -- : BFD_RELOC_860_LOGOT0 + -- : BFD_RELOC_860_SPGOT0 + -- : BFD_RELOC_860_LOGOT1 + -- : BFD_RELOC_860_SPGOT1 + -- : BFD_RELOC_860_LOGOTOFF0 + -- : BFD_RELOC_860_SPGOTOFF0 + -- : BFD_RELOC_860_LOGOTOFF1 + -- : BFD_RELOC_860_SPGOTOFF1 + -- : BFD_RELOC_860_LOGOTOFF2 + -- : BFD_RELOC_860_LOGOTOFF3 + -- : BFD_RELOC_860_LOPC + -- : BFD_RELOC_860_HIGHADJ + -- : BFD_RELOC_860_HAGOT + -- : BFD_RELOC_860_HAGOTOFF + -- : BFD_RELOC_860_HAPC + -- : BFD_RELOC_860_HIGH + -- : BFD_RELOC_860_HIGOT + -- : BFD_RELOC_860_HIGOTOFF + Intel i860 Relocations. + + -- : BFD_RELOC_OR1K_REL_26 + -- : BFD_RELOC_OR1K_GOTPC_HI16 + -- : BFD_RELOC_OR1K_GOTPC_LO16 + -- : BFD_RELOC_OR1K_GOT16 + -- : BFD_RELOC_OR1K_PLT26 + -- : BFD_RELOC_OR1K_GOTOFF_HI16 + -- : BFD_RELOC_OR1K_GOTOFF_LO16 + -- : BFD_RELOC_OR1K_COPY + -- : BFD_RELOC_OR1K_GLOB_DAT + -- : BFD_RELOC_OR1K_JMP_SLOT + -- : BFD_RELOC_OR1K_RELATIVE + -- : BFD_RELOC_OR1K_TLS_GD_HI16 + -- : BFD_RELOC_OR1K_TLS_GD_LO16 + -- : BFD_RELOC_OR1K_TLS_LDM_HI16 + -- : BFD_RELOC_OR1K_TLS_LDM_LO16 + -- : BFD_RELOC_OR1K_TLS_LDO_HI16 + -- : BFD_RELOC_OR1K_TLS_LDO_LO16 + -- : BFD_RELOC_OR1K_TLS_IE_HI16 + -- : BFD_RELOC_OR1K_TLS_IE_LO16 + -- : BFD_RELOC_OR1K_TLS_LE_HI16 + -- : BFD_RELOC_OR1K_TLS_LE_LO16 + -- : BFD_RELOC_OR1K_TLS_TPOFF + -- : BFD_RELOC_OR1K_TLS_DTPOFF + -- : BFD_RELOC_OR1K_TLS_DTPMOD + OpenRISC 1000 Relocations. + + -- : BFD_RELOC_H8_DIR16A8 + -- : BFD_RELOC_H8_DIR16R8 + -- : BFD_RELOC_H8_DIR24A8 + -- : BFD_RELOC_H8_DIR24R8 + -- : BFD_RELOC_H8_DIR32A16 + -- : BFD_RELOC_H8_DISP32A16 + H8 elf Relocations. + + -- : BFD_RELOC_XSTORMY16_REL_12 + -- : BFD_RELOC_XSTORMY16_12 + -- : BFD_RELOC_XSTORMY16_24 + -- : BFD_RELOC_XSTORMY16_FPTR16 + Sony Xstormy16 Relocations. + + -- : BFD_RELOC_RELC + Self-describing complex relocations. + + -- : BFD_RELOC_XC16X_PAG + -- : BFD_RELOC_XC16X_POF + -- : BFD_RELOC_XC16X_SEG + -- : BFD_RELOC_XC16X_SOF + Infineon Relocations. + + -- : BFD_RELOC_VAX_GLOB_DAT + -- : BFD_RELOC_VAX_JMP_SLOT + -- : BFD_RELOC_VAX_RELATIVE + Relocations used by VAX ELF. + + -- : BFD_RELOC_MT_PC16 + Morpho MT - 16 bit immediate relocation. + + -- : BFD_RELOC_MT_HI16 + Morpho MT - Hi 16 bits of an address. + + -- : BFD_RELOC_MT_LO16 + Morpho MT - Low 16 bits of an address. + + -- : BFD_RELOC_MT_GNU_VTINHERIT + Morpho MT - Used to tell the linker which vtable entries are used. + + -- : BFD_RELOC_MT_GNU_VTENTRY + Morpho MT - Used to tell the linker which vtable entries are used. + + -- : BFD_RELOC_MT_PCINSN8 + Morpho MT - 8 bit immediate relocation. + + -- : BFD_RELOC_MSP430_10_PCREL + -- : BFD_RELOC_MSP430_16_PCREL + -- : BFD_RELOC_MSP430_16 + -- : BFD_RELOC_MSP430_16_PCREL_BYTE + -- : BFD_RELOC_MSP430_16_BYTE + -- : BFD_RELOC_MSP430_2X_PCREL + -- : BFD_RELOC_MSP430_RL_PCREL + -- : BFD_RELOC_MSP430_ABS8 + -- : BFD_RELOC_MSP430X_PCR20_EXT_SRC + -- : BFD_RELOC_MSP430X_PCR20_EXT_DST + -- : BFD_RELOC_MSP430X_PCR20_EXT_ODST + -- : BFD_RELOC_MSP430X_ABS20_EXT_SRC + -- : BFD_RELOC_MSP430X_ABS20_EXT_DST + -- : BFD_RELOC_MSP430X_ABS20_EXT_ODST + -- : BFD_RELOC_MSP430X_ABS20_ADR_SRC + -- : BFD_RELOC_MSP430X_ABS20_ADR_DST + -- : BFD_RELOC_MSP430X_PCR16 + -- : BFD_RELOC_MSP430X_PCR20_CALL + -- : BFD_RELOC_MSP430X_ABS16 + -- : BFD_RELOC_MSP430_ABS_HI16 + -- : BFD_RELOC_MSP430_PREL31 + -- : BFD_RELOC_MSP430_SYM_DIFF + msp430 specific relocation codes + + -- : BFD_RELOC_NIOS2_S16 + -- : BFD_RELOC_NIOS2_U16 + -- : BFD_RELOC_NIOS2_CALL26 + -- : BFD_RELOC_NIOS2_IMM5 + -- : BFD_RELOC_NIOS2_CACHE_OPX + -- : BFD_RELOC_NIOS2_IMM6 + -- : BFD_RELOC_NIOS2_IMM8 + -- : BFD_RELOC_NIOS2_HI16 + -- : BFD_RELOC_NIOS2_LO16 + -- : BFD_RELOC_NIOS2_HIADJ16 + -- : BFD_RELOC_NIOS2_GPREL + -- : BFD_RELOC_NIOS2_UJMP + -- : BFD_RELOC_NIOS2_CJMP + -- : BFD_RELOC_NIOS2_CALLR + -- : BFD_RELOC_NIOS2_ALIGN + -- : BFD_RELOC_NIOS2_GOT16 + -- : BFD_RELOC_NIOS2_CALL16 + -- : BFD_RELOC_NIOS2_GOTOFF_LO + -- : BFD_RELOC_NIOS2_GOTOFF_HA + -- : BFD_RELOC_NIOS2_PCREL_LO + -- : BFD_RELOC_NIOS2_PCREL_HA + -- : BFD_RELOC_NIOS2_TLS_GD16 + -- : BFD_RELOC_NIOS2_TLS_LDM16 + -- : BFD_RELOC_NIOS2_TLS_LDO16 + -- : BFD_RELOC_NIOS2_TLS_IE16 + -- : BFD_RELOC_NIOS2_TLS_LE16 + -- : BFD_RELOC_NIOS2_TLS_DTPMOD + -- : BFD_RELOC_NIOS2_TLS_DTPREL + -- : BFD_RELOC_NIOS2_TLS_TPREL + -- : BFD_RELOC_NIOS2_COPY + -- : BFD_RELOC_NIOS2_GLOB_DAT + -- : BFD_RELOC_NIOS2_JUMP_SLOT + -- : BFD_RELOC_NIOS2_RELATIVE + -- : BFD_RELOC_NIOS2_GOTOFF + -- : BFD_RELOC_NIOS2_CALL26_NOAT + -- : BFD_RELOC_NIOS2_GOT_LO + -- : BFD_RELOC_NIOS2_GOT_HA + -- : BFD_RELOC_NIOS2_CALL_LO + -- : BFD_RELOC_NIOS2_CALL_HA + Relocations used by the Altera Nios II core. + + -- : BFD_RELOC_IQ2000_OFFSET_16 + -- : BFD_RELOC_IQ2000_OFFSET_21 + -- : BFD_RELOC_IQ2000_UHI16 + IQ2000 Relocations. + + -- : BFD_RELOC_XTENSA_RTLD + Special Xtensa relocation used only by PLT entries in ELF shared + objects to indicate that the runtime linker should set the value + to one of its own internal functions or data structures. + + -- : BFD_RELOC_XTENSA_GLOB_DAT + -- : BFD_RELOC_XTENSA_JMP_SLOT + -- : BFD_RELOC_XTENSA_RELATIVE + Xtensa relocations for ELF shared objects. + + -- : BFD_RELOC_XTENSA_PLT + Xtensa relocation used in ELF object files for symbols that may + require PLT entries. Otherwise, this is just a generic 32-bit + relocation. + + -- : BFD_RELOC_XTENSA_DIFF8 + -- : BFD_RELOC_XTENSA_DIFF16 + -- : BFD_RELOC_XTENSA_DIFF32 + Xtensa relocations to mark the difference of two local symbols. + These are only needed to support linker relaxation and can be + ignored when not relaxing. The field is set to the value of the + difference assuming no relaxation. The relocation encodes the + position of the first symbol so the linker can determine whether + to adjust the field value. + + -- : BFD_RELOC_XTENSA_SLOT0_OP + -- : BFD_RELOC_XTENSA_SLOT1_OP + -- : BFD_RELOC_XTENSA_SLOT2_OP + -- : BFD_RELOC_XTENSA_SLOT3_OP + -- : BFD_RELOC_XTENSA_SLOT4_OP + -- : BFD_RELOC_XTENSA_SLOT5_OP + -- : BFD_RELOC_XTENSA_SLOT6_OP + -- : BFD_RELOC_XTENSA_SLOT7_OP + -- : BFD_RELOC_XTENSA_SLOT8_OP + -- : BFD_RELOC_XTENSA_SLOT9_OP + -- : BFD_RELOC_XTENSA_SLOT10_OP + -- : BFD_RELOC_XTENSA_SLOT11_OP + -- : BFD_RELOC_XTENSA_SLOT12_OP + -- : BFD_RELOC_XTENSA_SLOT13_OP + -- : BFD_RELOC_XTENSA_SLOT14_OP + Generic Xtensa relocations for instruction operands. Only the slot + number is encoded in the relocation. The relocation applies to the + last PC-relative immediate operand, or if there are no PC-relative + immediates, to the last immediate operand. + + -- : BFD_RELOC_XTENSA_SLOT0_ALT + -- : BFD_RELOC_XTENSA_SLOT1_ALT + -- : BFD_RELOC_XTENSA_SLOT2_ALT + -- : BFD_RELOC_XTENSA_SLOT3_ALT + -- : BFD_RELOC_XTENSA_SLOT4_ALT + -- : BFD_RELOC_XTENSA_SLOT5_ALT + -- : BFD_RELOC_XTENSA_SLOT6_ALT + -- : BFD_RELOC_XTENSA_SLOT7_ALT + -- : BFD_RELOC_XTENSA_SLOT8_ALT + -- : BFD_RELOC_XTENSA_SLOT9_ALT + -- : BFD_RELOC_XTENSA_SLOT10_ALT + -- : BFD_RELOC_XTENSA_SLOT11_ALT + -- : BFD_RELOC_XTENSA_SLOT12_ALT + -- : BFD_RELOC_XTENSA_SLOT13_ALT + -- : BFD_RELOC_XTENSA_SLOT14_ALT + Alternate Xtensa relocations. Only the slot is encoded in the + relocation. The meaning of these relocations is opcode-specific. + + -- : BFD_RELOC_XTENSA_OP0 + -- : BFD_RELOC_XTENSA_OP1 + -- : BFD_RELOC_XTENSA_OP2 + Xtensa relocations for backward compatibility. These have all been + replaced by BFD_RELOC_XTENSA_SLOT0_OP. + + -- : BFD_RELOC_XTENSA_ASM_EXPAND + Xtensa relocation to mark that the assembler expanded the + instructions from an original target. The expansion size is + encoded in the reloc size. + + -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY + Xtensa relocation to mark that the linker should simplify + assembler-expanded instructions. This is commonly used internally + by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND. + + -- : BFD_RELOC_XTENSA_TLSDESC_FN + -- : BFD_RELOC_XTENSA_TLSDESC_ARG + -- : BFD_RELOC_XTENSA_TLS_DTPOFF + -- : BFD_RELOC_XTENSA_TLS_TPOFF + -- : BFD_RELOC_XTENSA_TLS_FUNC + -- : BFD_RELOC_XTENSA_TLS_ARG + -- : BFD_RELOC_XTENSA_TLS_CALL + Xtensa TLS relocations. + + -- : BFD_RELOC_Z80_DISP8 + 8 bit signed offset in (ix+d) or (iy+d). + + -- : BFD_RELOC_Z8K_DISP7 + DJNZ offset. + + -- : BFD_RELOC_Z8K_CALLR + CALR offset. + + -- : BFD_RELOC_Z8K_IMM4L + 4 bit value. + + -- : BFD_RELOC_LM32_CALL + -- : BFD_RELOC_LM32_BRANCH + -- : BFD_RELOC_LM32_16_GOT + -- : BFD_RELOC_LM32_GOTOFF_HI16 + -- : BFD_RELOC_LM32_GOTOFF_LO16 + -- : BFD_RELOC_LM32_COPY + -- : BFD_RELOC_LM32_GLOB_DAT + -- : BFD_RELOC_LM32_JMP_SLOT + -- : BFD_RELOC_LM32_RELATIVE + Lattice Mico32 relocations. + + -- : BFD_RELOC_MACH_O_SECTDIFF + Difference between two section addreses. Must be followed by a + BFD_RELOC_MACH_O_PAIR. + + -- : BFD_RELOC_MACH_O_LOCAL_SECTDIFF + Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. + + -- : BFD_RELOC_MACH_O_PAIR + Pair of relocation. Contains the first symbol. + + -- : BFD_RELOC_MACH_O_X86_64_BRANCH32 + -- : BFD_RELOC_MACH_O_X86_64_BRANCH8 + PCREL relocations. They are marked as branch to create PLT entry + if required. + + -- : BFD_RELOC_MACH_O_X86_64_GOT + Used when referencing a GOT entry. + + -- : BFD_RELOC_MACH_O_X86_64_GOT_LOAD + Used when loading a GOT entry with movq. It is specially marked + so that the linker could optimize the movq to a leaq if possible. + + -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + + -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_1 + Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_2 + Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_4 + Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. + + -- : BFD_RELOC_MICROBLAZE_32_LO + This is a 32 bit reloc for the microblaze that stores the low 16 + bits of a value + + -- : BFD_RELOC_MICROBLAZE_32_LO_PCREL + This is a 32 bit pc-relative reloc for the microblaze that stores + the low 16 bits of a value + + -- : BFD_RELOC_MICROBLAZE_32_ROSDA + This is a 32 bit reloc for the microblaze that stores a value + relative to the read-only small data area anchor + + -- : BFD_RELOC_MICROBLAZE_32_RWSDA + This is a 32 bit reloc for the microblaze that stores a value + relative to the read-write small data area anchor + + -- : BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM + This is a 32 bit reloc for the microblaze to handle expressions of + the form "Symbol Op Symbol" + + -- : BFD_RELOC_MICROBLAZE_64_NONE + This is a 64 bit reloc that stores the 32 bit pc relative value in + two words (with an imm instruction). No relocation is done here - + only used for relaxing + + -- : BFD_RELOC_MICROBLAZE_64_GOTPC + This is a 64 bit reloc that stores the 32 bit pc relative value in + two words (with an imm instruction). The relocation is + PC-relative GOT offset + + -- : BFD_RELOC_MICROBLAZE_64_GOT + This is a 64 bit reloc that stores the 32 bit pc relative value in + two words (with an imm instruction). The relocation is GOT offset + + -- : BFD_RELOC_MICROBLAZE_64_PLT + This is a 64 bit reloc that stores the 32 bit pc relative value in + two words (with an imm instruction). The relocation is + PC-relative offset into PLT + + -- : BFD_RELOC_MICROBLAZE_64_GOTOFF + This is a 64 bit reloc that stores the 32 bit GOT relative value + in two words (with an imm instruction). The relocation is + relative offset from _GLOBAL_OFFSET_TABLE_ + + -- : BFD_RELOC_MICROBLAZE_32_GOTOFF + This is a 32 bit reloc that stores the 32 bit GOT relative value + in a word. The relocation is relative offset from + + -- : BFD_RELOC_MICROBLAZE_COPY + This is used to tell the dynamic linker to copy the value out of + the dynamic object into the runtime process image. + + -- : BFD_RELOC_MICROBLAZE_64_TLS + Unused Reloc + + -- : BFD_RELOC_MICROBLAZE_64_TLSGD + This is a 64 bit reloc that stores the 32 bit GOT relative value + of the GOT TLS GD info entry in two words (with an imm + instruction). The relocation is GOT offset. + + -- : BFD_RELOC_MICROBLAZE_64_TLSLD + This is a 64 bit reloc that stores the 32 bit GOT relative value + of the GOT TLS LD info entry in two words (with an imm + instruction). The relocation is GOT offset. + + -- : BFD_RELOC_MICROBLAZE_32_TLSDTPMOD + This is a 32 bit reloc that stores the Module ID to GOT(n). + + -- : BFD_RELOC_MICROBLAZE_32_TLSDTPREL + This is a 32 bit reloc that stores TLS offset to GOT(n+1). + + -- : BFD_RELOC_MICROBLAZE_64_TLSDTPREL + This is a 32 bit reloc for storing TLS offset to two words (uses + imm instruction) + + -- : BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL + This is a 64 bit reloc that stores 32-bit thread pointer relative + offset to two words (uses imm instruction). + + -- : BFD_RELOC_MICROBLAZE_64_TLSTPREL + This is a 64 bit reloc that stores 32-bit thread pointer relative + offset to two words (uses imm instruction). + + -- : BFD_RELOC_AARCH64_RELOC_START + AArch64 pseudo relocation code to mark the start of the AArch64 + relocation enumerators. N.B. the order of the enumerators is + important as several tables in the AArch64 bfd backend are indexed + by these enumerators; make sure they are all synced. + + -- : BFD_RELOC_AARCH64_NONE + AArch64 null relocation code. + + -- : BFD_RELOC_AARCH64_64 + -- : BFD_RELOC_AARCH64_32 + -- : BFD_RELOC_AARCH64_16 + Basic absolute relocations of N bits. These are equivalent to + BFD_RELOC_N and they were added to assist the indexing of the howto + table. + + -- : BFD_RELOC_AARCH64_64_PCREL + -- : BFD_RELOC_AARCH64_32_PCREL + -- : BFD_RELOC_AARCH64_16_PCREL + PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL + and they were added to assist the indexing of the howto table. + + -- : BFD_RELOC_AARCH64_MOVW_G0 + AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of + an unsigned address/value. + + -- : BFD_RELOC_AARCH64_MOVW_G0_NC + AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of + an address/value. No overflow checking. + + -- : BFD_RELOC_AARCH64_MOVW_G1 + AArch64 MOV[NZK] instruction with most significant bits 16 to 31 + of an unsigned address/value. + + -- : BFD_RELOC_AARCH64_MOVW_G1_NC + AArch64 MOV[NZK] instruction with less significant bits 16 to 31 + of an address/value. No overflow checking. + + -- : BFD_RELOC_AARCH64_MOVW_G2 + AArch64 MOV[NZK] instruction with most significant bits 32 to 47 + of an unsigned address/value. + + -- : BFD_RELOC_AARCH64_MOVW_G2_NC + AArch64 MOV[NZK] instruction with less significant bits 32 to 47 + of an address/value. No overflow checking. + + -- : BFD_RELOC_AARCH64_MOVW_G3 + AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of + a signed or unsigned address/value. + + -- : BFD_RELOC_AARCH64_MOVW_G0_S + AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of + a signed value. Changes instruction to MOVZ or MOVN depending on + the value's sign. + + -- : BFD_RELOC_AARCH64_MOVW_G1_S + AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of + a signed value. Changes instruction to MOVZ or MOVN depending on + the value's sign. + + -- : BFD_RELOC_AARCH64_MOVW_G2_S + AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of + a signed value. Changes instruction to MOVZ or MOVN depending on + the value's sign. + + -- : BFD_RELOC_AARCH64_LD_LO19_PCREL + AArch64 Load Literal instruction, holding a 19 bit pc-relative word + offset. The lowest two bits must be zero and are not stored in the + instruction, giving a 21 bit signed byte offset. + + -- : BFD_RELOC_AARCH64_ADR_LO21_PCREL + AArch64 ADR instruction, holding a simple 21 bit pc-relative byte + offset. + + -- : BFD_RELOC_AARCH64_ADR_HI21_PCREL + AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page + offset, giving a 4KB aligned page base address. + + -- : BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL + AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page + offset, giving a 4KB aligned page base address, but with no + overflow checking. + + -- : BFD_RELOC_AARCH64_ADD_LO12 + AArch64 ADD immediate instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_LDST8_LO12 + AArch64 8-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_TSTBR14 + AArch64 14 bit pc-relative test bit and branch. The lowest two + bits must be zero and are not stored in the instruction, giving a + 16 bit signed byte offset. + + -- : BFD_RELOC_AARCH64_BRANCH19 + AArch64 19 bit pc-relative conditional branch and compare & branch. + The lowest two bits must be zero and are not stored in the + instruction, giving a 21 bit signed byte offset. + + -- : BFD_RELOC_AARCH64_JUMP26 + AArch64 26 bit pc-relative unconditional branch. The lowest two + bits must be zero and are not stored in the instruction, giving a + 28 bit signed byte offset. + + -- : BFD_RELOC_AARCH64_CALL26 + AArch64 26 bit pc-relative unconditional branch and link. The + lowest two bits must be zero and are not stored in the instruction, + giving a 28 bit signed byte offset. + + -- : BFD_RELOC_AARCH64_LDST16_LO12 + AArch64 16-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_LDST32_LO12 + AArch64 32-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_LDST64_LO12 + AArch64 64-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_LDST128_LO12 + AArch64 128-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_GOT_LD_PREL19 + AArch64 Load Literal instruction, holding a 19 bit PC relative word + offset of the global offset table entry for a symbol. The lowest + two bits must be zero and are not stored in the instruction, + giving a 21 bit signed byte offset. This relocation type requires + signed overflow checking. + + -- : BFD_RELOC_AARCH64_ADR_GOT_PAGE + Get to the page base of the global offset table entry for a symbol + as part of an ADRP instruction using a 21 bit PC relative + value.Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. + + -- : BFD_RELOC_AARCH64_LD64_GOT_LO12_NC + Unsigned 12 bit byte offset for 64 bit load/store from the page of + the GOT entry for this symbol. Used in conjunction with + BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only. + + -- : BFD_RELOC_AARCH64_LD32_GOT_LO12_NC + Unsigned 12 bit byte offset for 32 bit load/store from the page of + the GOT entry for this symbol. Used in conjunction with + BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. + + -- : BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 + Get to the page base of the global offset table entry for a symbols + tls_index structure as part of an adrp instruction using a 21 bit + PC relative value. Used in conjunction with + BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. + + -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC + Unsigned 12 bit byte offset to global offset table entry for a + symbols tls_index structure. Used in conjunction with + BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. + + -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19 + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2 + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0 + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12 + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12 + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC + AArch64 TLS LOCAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_LD_PREL19 + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21 + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G1 + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_LDR + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_ADD + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC_CALL + AArch64 TLS DESC relocation. + + -- : BFD_RELOC_AARCH64_COPY + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_GLOB_DAT + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_JUMP_SLOT + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_RELATIVE + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_TLS_DTPMOD + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_TLS_DTPREL + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_TLS_TPREL + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_TLSDESC + AArch64 TLS relocation. + + -- : BFD_RELOC_AARCH64_IRELATIVE + AArch64 support for STT_GNU_IFUNC. + + -- : BFD_RELOC_AARCH64_RELOC_END + AArch64 pseudo relocation code to mark the end of the AArch64 + relocation enumerators that have direct mapping to ELF reloc codes. + There are a few more enumerators after this one; those are mainly + used by the AArch64 assembler for the internal fixup or to select + one of the above enumerators. + + -- : BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. + + -- : BFD_RELOC_AARCH64_LDST_LO12 + AArch64 unspecified load/store instruction, holding bits 0 to 11 + of the address. Used in conjunction with + BFD_RELOC_AARCH64_ADR_HI21_PCREL. + + -- : BFD_RELOC_AARCH64_LD_GOT_LO12_NC + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. + + -- : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. + + -- : BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. + + -- : BFD_RELOC_TILEPRO_COPY + -- : BFD_RELOC_TILEPRO_GLOB_DAT + -- : BFD_RELOC_TILEPRO_JMP_SLOT + -- : BFD_RELOC_TILEPRO_RELATIVE + -- : BFD_RELOC_TILEPRO_BROFF_X1 + -- : BFD_RELOC_TILEPRO_JOFFLONG_X1 + -- : BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT + -- : BFD_RELOC_TILEPRO_IMM8_X0 + -- : BFD_RELOC_TILEPRO_IMM8_Y0 + -- : BFD_RELOC_TILEPRO_IMM8_X1 + -- : BFD_RELOC_TILEPRO_IMM8_Y1 + -- : BFD_RELOC_TILEPRO_DEST_IMM8_X1 + -- : BFD_RELOC_TILEPRO_MT_IMM15_X1 + -- : BFD_RELOC_TILEPRO_MF_IMM15_X1 + -- : BFD_RELOC_TILEPRO_IMM16_X0 + -- : BFD_RELOC_TILEPRO_IMM16_X1 + -- : BFD_RELOC_TILEPRO_IMM16_X0_LO + -- : BFD_RELOC_TILEPRO_IMM16_X1_LO + -- : BFD_RELOC_TILEPRO_IMM16_X0_HI + -- : BFD_RELOC_TILEPRO_IMM16_X1_HI + -- : BFD_RELOC_TILEPRO_IMM16_X0_HA + -- : BFD_RELOC_TILEPRO_IMM16_X1_HA + -- : BFD_RELOC_TILEPRO_IMM16_X0_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X1_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL + -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT + -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT + -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO + -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO + -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI + -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI + -- : BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA + -- : BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA + -- : BFD_RELOC_TILEPRO_MMSTART_X0 + -- : BFD_RELOC_TILEPRO_MMEND_X0 + -- : BFD_RELOC_TILEPRO_MMSTART_X1 + -- : BFD_RELOC_TILEPRO_MMEND_X1 + -- : BFD_RELOC_TILEPRO_SHAMT_X0 + -- : BFD_RELOC_TILEPRO_SHAMT_X1 + -- : BFD_RELOC_TILEPRO_SHAMT_Y0 + -- : BFD_RELOC_TILEPRO_SHAMT_Y1 + -- : BFD_RELOC_TILEPRO_TLS_GD_CALL + -- : BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD + -- : BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD + -- : BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD + -- : BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD + -- : BFD_RELOC_TILEPRO_TLS_IE_LOAD + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA + -- : BFD_RELOC_TILEPRO_TLS_DTPMOD32 + -- : BFD_RELOC_TILEPRO_TLS_DTPOFF32 + -- : BFD_RELOC_TILEPRO_TLS_TPOFF32 + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI + -- : BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA + -- : BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA + Tilera TILEPro Relocations. + + -- : BFD_RELOC_TILEGX_HW0 + -- : BFD_RELOC_TILEGX_HW1 + -- : BFD_RELOC_TILEGX_HW2 + -- : BFD_RELOC_TILEGX_HW3 + -- : BFD_RELOC_TILEGX_HW0_LAST + -- : BFD_RELOC_TILEGX_HW1_LAST + -- : BFD_RELOC_TILEGX_HW2_LAST + -- : BFD_RELOC_TILEGX_COPY + -- : BFD_RELOC_TILEGX_GLOB_DAT + -- : BFD_RELOC_TILEGX_JMP_SLOT + -- : BFD_RELOC_TILEGX_RELATIVE + -- : BFD_RELOC_TILEGX_BROFF_X1 + -- : BFD_RELOC_TILEGX_JUMPOFF_X1 + -- : BFD_RELOC_TILEGX_JUMPOFF_X1_PLT + -- : BFD_RELOC_TILEGX_IMM8_X0 + -- : BFD_RELOC_TILEGX_IMM8_Y0 + -- : BFD_RELOC_TILEGX_IMM8_X1 + -- : BFD_RELOC_TILEGX_IMM8_Y1 + -- : BFD_RELOC_TILEGX_DEST_IMM8_X1 + -- : BFD_RELOC_TILEGX_MT_IMM14_X1 + -- : BFD_RELOC_TILEGX_MF_IMM14_X1 + -- : BFD_RELOC_TILEGX_MMSTART_X0 + -- : BFD_RELOC_TILEGX_MMEND_X0 + -- : BFD_RELOC_TILEGX_SHAMT_X0 + -- : BFD_RELOC_TILEGX_SHAMT_X1 + -- : BFD_RELOC_TILEGX_SHAMT_Y0 + -- : BFD_RELOC_TILEGX_SHAMT_Y1 + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0 + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0 + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1 + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1 + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2 + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2 + -- : BFD_RELOC_TILEGX_IMM16_X0_HW3 + -- : BFD_RELOC_TILEGX_IMM16_X1_HW3 + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT + -- : BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL + -- : BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE + -- : BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE + -- : BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE + -- : BFD_RELOC_TILEGX_TLS_DTPMOD64 + -- : BFD_RELOC_TILEGX_TLS_DTPOFF64 + -- : BFD_RELOC_TILEGX_TLS_TPOFF64 + -- : BFD_RELOC_TILEGX_TLS_DTPMOD32 + -- : BFD_RELOC_TILEGX_TLS_DTPOFF32 + -- : BFD_RELOC_TILEGX_TLS_TPOFF32 + -- : BFD_RELOC_TILEGX_TLS_GD_CALL + -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD + -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD + -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD + -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD + -- : BFD_RELOC_TILEGX_TLS_IE_LOAD + -- : BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD + -- : BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD + -- : BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD + -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD + Tilera TILE-Gx Relocations. + + -- : BFD_RELOC_EPIPHANY_SIMM8 + Adapteva EPIPHANY - 8 bit signed pc-relative displacement + + -- : BFD_RELOC_EPIPHANY_SIMM24 + Adapteva EPIPHANY - 24 bit signed pc-relative displacement + + -- : BFD_RELOC_EPIPHANY_HIGH + Adapteva EPIPHANY - 16 most-significant bits of absolute address + + -- : BFD_RELOC_EPIPHANY_LOW + Adapteva EPIPHANY - 16 least-significant bits of absolute address + + -- : BFD_RELOC_EPIPHANY_SIMM11 + Adapteva EPIPHANY - 11 bit signed number - add/sub immediate + + -- : BFD_RELOC_EPIPHANY_IMM11 + Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st + displacement) + + -- : BFD_RELOC_EPIPHANY_IMM8 + Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. + + + typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; + +2.10.2.2 `bfd_reloc_type_lookup' +................................ + +*Synopsis* + reloc_howto_type *bfd_reloc_type_lookup + (bfd *abfd, bfd_reloc_code_real_type code); + reloc_howto_type *bfd_reloc_name_lookup + (bfd *abfd, const char *reloc_name); + *Description* +Return a pointer to a howto structure which, when invoked, will perform +the relocation CODE on data from the architecture noted. + +2.10.2.3 `bfd_default_reloc_type_lookup' +........................................ + +*Synopsis* + reloc_howto_type *bfd_default_reloc_type_lookup + (bfd *abfd, bfd_reloc_code_real_type code); + *Description* +Provides a default relocation lookup routine for any architecture. + +2.10.2.4 `bfd_get_reloc_code_name' +.................................. + +*Synopsis* + const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); + *Description* +Provides a printable name for the supplied relocation code. Useful +mainly for printing error messages. + +2.10.2.5 `bfd_generic_relax_section' +.................................... + +*Synopsis* + bfd_boolean bfd_generic_relax_section + (bfd *abfd, + asection *section, + struct bfd_link_info *, + bfd_boolean *); + *Description* +Provides default handling for relaxing for back ends which don't do +relaxing. + +2.10.2.6 `bfd_generic_gc_sections' +.................................. + +*Synopsis* + bfd_boolean bfd_generic_gc_sections + (bfd *, struct bfd_link_info *); + *Description* +Provides default handling for relaxing for back ends which don't do +section gc - i.e., does nothing. + +2.10.2.7 `bfd_generic_lookup_section_flags' +........................................... + +*Synopsis* + bfd_boolean bfd_generic_lookup_section_flags + (struct bfd_link_info *, struct flag_info *, asection *); + *Description* +Provides default handling for section flags lookup - i.e., does nothing. +Returns FALSE if the section should be omitted, otherwise TRUE. + +2.10.2.8 `bfd_generic_merge_sections' +..................................... + +*Synopsis* + bfd_boolean bfd_generic_merge_sections + (bfd *, struct bfd_link_info *); + *Description* +Provides default handling for SEC_MERGE section merging for back ends +which don't have SEC_MERGE support - i.e., does nothing. + +2.10.2.9 `bfd_generic_get_relocated_section_contents' +..................................................... + +*Synopsis* + bfd_byte *bfd_generic_get_relocated_section_contents + (bfd *abfd, + struct bfd_link_info *link_info, + struct bfd_link_order *link_order, + bfd_byte *data, + bfd_boolean relocatable, + asymbol **symbols); + *Description* +Provides default handling of relocation effort for back ends which +can't be bothered to do it efficiently. + + +File: bfd.info, Node: Core Files, Next: Targets, Prev: Relocations, Up: BFD front end + +2.11 Core files +=============== + +2.11.1 Core file functions +-------------------------- + +*Description* +These are functions pertaining to core files. + +2.11.1.1 `bfd_core_file_failing_command' +........................................ + +*Synopsis* + const char *bfd_core_file_failing_command (bfd *abfd); + *Description* +Return a read-only string explaining which program was running when it +failed and produced the core file ABFD. + +2.11.1.2 `bfd_core_file_failing_signal' +....................................... + +*Synopsis* + int bfd_core_file_failing_signal (bfd *abfd); + *Description* +Returns the signal number which caused the core dump which generated +the file the BFD ABFD is attached to. + +2.11.1.3 `bfd_core_file_pid' +............................ + +*Synopsis* + int bfd_core_file_pid (bfd *abfd); + *Description* +Returns the PID of the process the core dump the BFD ABFD is attached +to was generated from. + +2.11.1.4 `core_file_matches_executable_p' +......................................... + +*Synopsis* + bfd_boolean core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); + *Description* +Return `TRUE' if the core file attached to CORE_BFD was generated by a +run of the executable file attached to EXEC_BFD, `FALSE' otherwise. + +2.11.1.5 `generic_core_file_matches_executable_p' +................................................. + +*Synopsis* + bfd_boolean generic_core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); + *Description* +Return TRUE if the core file attached to CORE_BFD was generated by a +run of the executable file attached to EXEC_BFD. The match is based on +executable basenames only. + + Note: When not able to determine the core file failing command or +the executable name, we still return TRUE even though we're not sure +that core file and executable match. This is to avoid generating a +false warning in situations where we really don't know whether they +match or not. + + +File: bfd.info, Node: Targets, Next: Architectures, Prev: Core Files, Up: BFD front end + +2.12 Targets +============ + +*Description* +Each port of BFD to a different machine requires the creation of a +target back end. All the back end provides to the root part of BFD is a +structure containing pointers to functions which perform certain low +level operations on files. BFD translates the applications's requests +through a pointer into calls to the back end routines. + + When a file is opened with `bfd_openr', its format and target are +unknown. BFD uses various mechanisms to determine how to interpret the +file. The operations performed are: + + * Create a BFD by calling the internal routine `_bfd_new_bfd', then + call `bfd_find_target' with the target string supplied to + `bfd_openr' and the new BFD pointer. + + * If a null target string was provided to `bfd_find_target', look up + the environment variable `GNUTARGET' and use that as the target + string. + + * If the target string is still `NULL', or the target string is + `default', then use the first item in the target vector as the + target type, and set `target_defaulted' in the BFD to cause + `bfd_check_format' to loop through all the targets. *Note + bfd_target::. *Note Formats::. + + * Otherwise, inspect the elements in the target vector one by one, + until a match on target name is found. When found, use it. + + * Otherwise return the error `bfd_error_invalid_target' to + `bfd_openr'. + + * `bfd_openr' attempts to open the file using `bfd_open_file', and + returns the BFD. + Once the BFD has been opened and the target selected, the file +format may be determined. This is done by calling `bfd_check_format' on +the BFD with a suggested format. If `target_defaulted' has been set, +each possible target type is tried to see if it recognizes the +specified format. `bfd_check_format' returns `TRUE' when the caller +guesses right. + +* Menu: + +* bfd_target:: + + +File: bfd.info, Node: bfd_target, Prev: Targets, Up: Targets + +2.12.1 bfd_target +----------------- + +*Description* +This structure contains everything that BFD knows about a target. It +includes things like its byte order, name, and which routines to call +to do various operations. + + Every BFD points to a target structure with its `xvec' member. + + The macros below are used to dispatch to functions through the +`bfd_target' vector. They are used in a number of macros further down +in `bfd.h', and are also used when calling various routines by hand +inside the BFD implementation. The ARGLIST argument must be +parenthesized; it contains all the arguments to the called function. + + They make the documentation (more) unpleasant to read, so if someone +wants to fix this and not break the above, please do. + #define BFD_SEND(bfd, message, arglist) \ + ((*((bfd)->xvec->message)) arglist) + + #ifdef DEBUG_BFD_SEND + #undef BFD_SEND + #define BFD_SEND(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + ((*((bfd)->xvec->message)) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) + #endif + For operations which index on the BFD format: + #define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) + + #ifdef DEBUG_BFD_SEND + #undef BFD_SEND_FMT + #define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) + #endif + This is the structure which defines the type of BFD this is. The +`xvec' member of the struct `bfd' itself points here. Each module that +implements access to a different target under BFD, defines one of these. + + FIXME, these names should be rationalised with the names of the +entry points which call them. Too bad we can't have one macro to define +them both! + enum bfd_flavour + { + bfd_target_unknown_flavour, + bfd_target_aout_flavour, + bfd_target_coff_flavour, + bfd_target_ecoff_flavour, + bfd_target_xcoff_flavour, + bfd_target_elf_flavour, + bfd_target_ieee_flavour, + bfd_target_nlm_flavour, + bfd_target_oasys_flavour, + bfd_target_tekhex_flavour, + bfd_target_srec_flavour, + bfd_target_verilog_flavour, + bfd_target_ihex_flavour, + bfd_target_som_flavour, + bfd_target_os9k_flavour, + bfd_target_versados_flavour, + bfd_target_msdos_flavour, + bfd_target_ovax_flavour, + bfd_target_evax_flavour, + bfd_target_mmo_flavour, + bfd_target_mach_o_flavour, + bfd_target_pef_flavour, + bfd_target_pef_xlib_flavour, + bfd_target_sym_flavour + }; + + enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; + + /* Forward declaration. */ + typedef struct bfd_link_info _bfd_link_info; + + /* Forward declaration. */ + typedef struct flag_info flag_info; + + typedef struct bfd_target + { + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ + char *name; + + /* The "flavour" of a back end is a general indication about + the contents of a file. */ + enum bfd_flavour flavour; + + /* The order of bytes within the data area of a file. */ + enum bfd_endian byteorder; + + /* The order of bytes within the header parts of a file. */ + enum bfd_endian header_byteorder; + + /* A mask of all the flags which an executable may have set - + from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'. */ + flagword object_flags; + + /* A mask of all the flags which a section may have set - from + the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'. */ + flagword section_flags; + + /* The character normally found at the front of a symbol. + (if any), perhaps `_'. */ + char symbol_leading_char; + + /* The pad character for file names within an archive header. */ + char ar_pad_char; + + /* The maximum number of characters in an archive header. */ + unsigned char ar_max_namelen; + + /* How well this target matches, used to select between various + possible targets when more than one target matches. */ + unsigned char match_priority; + + /* Entries for byte swapping for data. These are different from the + other entry points, since they don't take a BFD as the first argument. + Certain other handlers could do the same. */ + bfd_uint64_t (*bfd_getx64) (const void *); + bfd_int64_t (*bfd_getx_signed_64) (const void *); + void (*bfd_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_getx32) (const void *); + bfd_signed_vma (*bfd_getx_signed_32) (const void *); + void (*bfd_putx32) (bfd_vma, void *); + bfd_vma (*bfd_getx16) (const void *); + bfd_signed_vma (*bfd_getx_signed_16) (const void *); + void (*bfd_putx16) (bfd_vma, void *); + + /* Byte swapping for the headers. */ + bfd_uint64_t (*bfd_h_getx64) (const void *); + bfd_int64_t (*bfd_h_getx_signed_64) (const void *); + void (*bfd_h_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_h_getx32) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *); + void (*bfd_h_putx32) (bfd_vma, void *); + bfd_vma (*bfd_h_getx16) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *); + void (*bfd_h_putx16) (bfd_vma, void *); + + /* Format dependent routines: these are vectors of entry points + within the target vector structure, one for each format to check. */ + + /* Check the format of a file being read. Return a `bfd_target *' or zero. */ + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *); + + /* Set the format of a file being written. */ + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *); + + /* Write cached information into a file being written, at `bfd_close'. */ + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *); + The general target vector. These vectors are initialized using the +BFD_JUMP_TABLE macros. + + /* Generic entry points. */ + #define BFD_JUMP_TABLE_GENERIC(NAME) \ + NAME##_close_and_cleanup, \ + NAME##_bfd_free_cached_info, \ + NAME##_new_section_hook, \ + NAME##_get_section_contents, \ + NAME##_get_section_contents_in_window + + /* Called when the BFD is being closed to do any necessary cleanup. */ + bfd_boolean (*_close_and_cleanup) (bfd *); + /* Ask the BFD to free all cached information. */ + bfd_boolean (*_bfd_free_cached_info) (bfd *); + /* Called when a new section is created. */ + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr); + /* Read the contents of a section. */ + bfd_boolean (*_bfd_get_section_contents) + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); + bfd_boolean (*_bfd_get_section_contents_in_window) + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type); + + /* Entry points to copy private data. */ + #define BFD_JUMP_TABLE_COPY(NAME) \ + NAME##_bfd_copy_private_bfd_data, \ + NAME##_bfd_merge_private_bfd_data, \ + _bfd_generic_init_private_section_data, \ + NAME##_bfd_copy_private_section_data, \ + NAME##_bfd_copy_private_symbol_data, \ + NAME##_bfd_copy_private_header_data, \ + NAME##_bfd_set_private_flags, \ + NAME##_bfd_print_private_bfd_data + + /* Called to copy BFD general private data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *); + /* Called to merge BFD general private data from one object file + to a common output file when linking. */ + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *); + /* Called to initialize BFD private section data from one object file + to another. */ + #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info)) + bfd_boolean (*_bfd_init_private_section_data) + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *); + /* Called to copy BFD private section data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_section_data) + (bfd *, sec_ptr, bfd *, sec_ptr); + /* Called to copy BFD private symbol data from one symbol + to another. */ + bfd_boolean (*_bfd_copy_private_symbol_data) + (bfd *, asymbol *, bfd *, asymbol *); + /* Called to copy BFD private header data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_header_data) + (bfd *, bfd *); + /* Called to set private backend flags. */ + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword); + + /* Called to print private BFD data. */ + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *); + + /* Core file entry points. */ + #define BFD_JUMP_TABLE_CORE(NAME) \ + NAME##_core_file_failing_command, \ + NAME##_core_file_failing_signal, \ + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid + + char * (*_core_file_failing_command) (bfd *); + int (*_core_file_failing_signal) (bfd *); + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); + + /* Archive entry points. */ + #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ + NAME##_slurp_armap, \ + NAME##_slurp_extended_name_table, \ + NAME##_construct_extended_name_table, \ + NAME##_truncate_arname, \ + NAME##_write_armap, \ + NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ + NAME##_openr_next_archived_file, \ + NAME##_get_elt_at_index, \ + NAME##_generic_stat_arch_elt, \ + NAME##_update_armap_timestamp + + bfd_boolean (*_bfd_slurp_armap) (bfd *); + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *); + bfd_boolean (*_bfd_construct_extended_name_table) + (bfd *, char **, bfd_size_type *, const char **); + void (*_bfd_truncate_arname) (bfd *, const char *, char *); + bfd_boolean (*write_armap) + (bfd *, unsigned int, struct orl *, unsigned int, int); + void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); + bfd * (*openr_next_archived_file) (bfd *, bfd *); + #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); + int (*_bfd_stat_arch_elt) (bfd *, struct stat *); + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *); + + /* Entry points used for symbols. */ + #define BFD_JUMP_TABLE_SYMBOLS(NAME) \ + NAME##_get_symtab_upper_bound, \ + NAME##_canonicalize_symtab, \ + NAME##_make_empty_symbol, \ + NAME##_print_symbol, \ + NAME##_get_symbol_info, \ + NAME##_bfd_is_local_label_name, \ + NAME##_bfd_is_target_special_symbol, \ + NAME##_get_lineno, \ + NAME##_find_nearest_line, \ + NAME##_find_line, \ + NAME##_find_inliner_info, \ + NAME##_bfd_make_debug_symbol, \ + NAME##_read_minisymbols, \ + NAME##_minisymbol_to_symbol + + long (*_bfd_get_symtab_upper_bound) (bfd *); + long (*_bfd_canonicalize_symtab) + (bfd *, struct bfd_symbol **); + struct bfd_symbol * + (*_bfd_make_empty_symbol) (bfd *); + void (*_bfd_print_symbol) + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); + #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) + void (*_bfd_get_symbol_info) + (bfd *, struct bfd_symbol *, symbol_info *); + #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *); + alent * (*_get_lineno) (bfd *, struct bfd_symbol *); + bfd_boolean (*_bfd_find_nearest_line) + (bfd *, struct bfd_symbol **, struct bfd_section *, bfd_vma, + const char **, const char **, unsigned int *, unsigned int *); + bfd_boolean (*_bfd_find_line) + (bfd *, struct bfd_symbol **, struct bfd_symbol *, + const char **, unsigned int *); + bfd_boolean (*_bfd_find_inliner_info) + (bfd *, const char **, const char **, unsigned int *); + /* Back-door to allow format-aware applications to create debug symbols + while using BFD for everything else. Currently used by the assembler + when creating COFF files. */ + asymbol * (*_bfd_make_debug_symbol) + (bfd *, void *, unsigned long size); + #define bfd_read_minisymbols(b, d, m, s) \ + BFD_SEND (b, _read_minisymbols, (b, d, m, s)) + long (*_read_minisymbols) + (bfd *, bfd_boolean, void **, unsigned int *); + #define bfd_minisymbol_to_symbol(b, d, m, f) \ + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) + asymbol * (*_minisymbol_to_symbol) + (bfd *, bfd_boolean, const void *, asymbol *); + + /* Routines for relocs. */ + #define BFD_JUMP_TABLE_RELOCS(NAME) \ + NAME##_get_reloc_upper_bound, \ + NAME##_canonicalize_reloc, \ + NAME##_bfd_reloc_type_lookup, \ + NAME##_bfd_reloc_name_lookup + + long (*_get_reloc_upper_bound) (bfd *, sec_ptr); + long (*_bfd_canonicalize_reloc) + (bfd *, sec_ptr, arelent **, struct bfd_symbol **); + /* See documentation on reloc types. */ + reloc_howto_type * + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); + reloc_howto_type * + (*reloc_name_lookup) (bfd *, const char *); + + + /* Routines used when writing an object file. */ + #define BFD_JUMP_TABLE_WRITE(NAME) \ + NAME##_set_arch_mach, \ + NAME##_set_section_contents + + bfd_boolean (*_bfd_set_arch_mach) + (bfd *, enum bfd_architecture, unsigned long); + bfd_boolean (*_bfd_set_section_contents) + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); + + /* Routines used by the linker. */ + #define BFD_JUMP_TABLE_LINK(NAME) \ + NAME##_sizeof_headers, \ + NAME##_bfd_get_relocated_section_contents, \ + NAME##_bfd_relax_section, \ + NAME##_bfd_link_hash_table_create, \ + NAME##_bfd_link_add_symbols, \ + NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ + NAME##_bfd_final_link, \ + NAME##_bfd_link_split_section, \ + NAME##_bfd_gc_sections, \ + NAME##_bfd_lookup_section_flags, \ + NAME##_bfd_merge_sections, \ + NAME##_bfd_is_group_section, \ + NAME##_bfd_discard_group, \ + NAME##_section_already_linked, \ + NAME##_bfd_define_common_symbol + + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); + bfd_byte * (*_bfd_get_relocated_section_contents) + (bfd *, struct bfd_link_info *, struct bfd_link_order *, + bfd_byte *, bfd_boolean, struct bfd_symbol **); + + bfd_boolean (*_bfd_relax_section) + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); + + /* Create a hash table for the linker. Different backends store + different information in this table. */ + struct bfd_link_hash_table * + (*_bfd_link_hash_table_create) (bfd *); + + /* Add symbols from this object file into the hash table. */ + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *); + + /* Indicate that we are only retrieving symbol values from this section. */ + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + + /* Copy the symbol type and other attributes for a linker script + assignment of one symbol to another. */ + #define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + + /* Do a link based on the link_order structures attached to each + section of the BFD. */ + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); + + /* Should this section be split up into smaller pieces during linking. */ + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *); + + /* Remove sections that are not referenced from the output. */ + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *); + + /* Sets the bitmask of allowed and disallowed section flags. */ + bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *, + struct flag_info *, + asection *); + + /* Attempt to merge SEC_MERGE sections. */ + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *); + + /* Is this section a member of a group? */ + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *); + + /* Discard members of a group. */ + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *); + + /* Check if SEC has been already linked during a reloceatable or + final link. */ + bfd_boolean (*_section_already_linked) (bfd *, asection *, + struct bfd_link_info *); + + /* Define a common symbol. */ + bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *, + struct bfd_link_hash_entry *); + + /* Routines to handle dynamic symbols and relocs. */ + #define BFD_JUMP_TABLE_DYNAMIC(NAME) \ + NAME##_get_dynamic_symtab_upper_bound, \ + NAME##_canonicalize_dynamic_symtab, \ + NAME##_get_synthetic_symtab, \ + NAME##_get_dynamic_reloc_upper_bound, \ + NAME##_canonicalize_dynamic_reloc + + /* Get the amount of memory required to hold the dynamic symbols. */ + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); + /* Read in the dynamic symbols. */ + long (*_bfd_canonicalize_dynamic_symtab) + (bfd *, struct bfd_symbol **); + /* Create synthetized symbols. */ + long (*_bfd_get_synthetic_symtab) + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **, + struct bfd_symbol **); + /* Get the amount of memory required to hold the dynamic relocs. */ + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); + /* Read in the dynamic relocs. */ + long (*_bfd_canonicalize_dynamic_reloc) + (bfd *, arelent **, struct bfd_symbol **); + A pointer to an alternative bfd_target in case the current one is not +satisfactory. This can happen when the target cpu supports both big +and little endian code, and target chosen by the linker has the wrong +endianness. The function open_output() in ld/ldlang.c uses this field +to find an alternative output format that is suitable. + /* Opposite endian version of this target. */ + const struct bfd_target * alternative_target; + + /* Data for use by back-end routines, which isn't + generic enough to belong in this structure. */ + const void *backend_data; + + } bfd_target; + +2.12.1.1 `bfd_set_default_target' +................................. + +*Synopsis* + bfd_boolean bfd_set_default_target (const char *name); + *Description* +Set the default target vector to use when recognizing a BFD. This +takes the name of the target, which may be a BFD target name or a +configuration triplet. + +2.12.1.2 `bfd_find_target' +.......................... + +*Synopsis* + const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); + *Description* +Return a pointer to the transfer vector for the object target named +TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the +environment variable `GNUTARGET'; if that is null or not defined, then +choose the first entry in the target list. Passing in the string +"default" or setting the environment variable to "default" will cause +the first entry in the target list to be returned, and +"target_defaulted" will be set in the BFD if ABFD isn't `NULL'. This +causes `bfd_check_format' to loop over all the targets to find the one +that matches the file being read. + +2.12.1.3 `bfd_get_target_info' +.............................. + +*Synopsis* + const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); + *Description* +Return a pointer to the transfer vector for the object target named +TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the +environment variable `GNUTARGET'; if that is null or not defined, then +choose the first entry in the target list. Passing in the string +"default" or setting the environment variable to "default" will cause +the first entry in the target list to be returned, and +"target_defaulted" will be set in the BFD if ABFD isn't `NULL'. This +causes `bfd_check_format' to loop over all the targets to find the one +that matches the file being read. If IS_BIGENDIAN is not `NULL', then +set this value to target's endian mode. True for big-endian, FALSE for +little-endian or for invalid target. If UNDERSCORING is not `NULL', +then set this value to target's underscoring mode. Zero for +none-underscoring, -1 for invalid target, else the value of target +vector's symbol underscoring. If DEF_TARGET_ARCH is not `NULL', then +set it to the architecture string specified by the target_name. + +2.12.1.4 `bfd_target_list' +.......................... + +*Synopsis* + const char ** bfd_target_list (void); + *Description* +Return a freshly malloced NULL-terminated vector of the names of all +the valid BFD targets. Do not modify the names. + +2.12.1.5 `bfd_seach_for_target' +............................... + +*Synopsis* + const bfd_target *bfd_search_for_target + (int (*search_func) (const bfd_target *, void *), + void *); + *Description* +Return a pointer to the first transfer vector in the list of transfer +vectors maintained by BFD that produces a non-zero result when passed +to the function SEARCH_FUNC. The parameter DATA is passed, unexamined, +to the search function. + + +File: bfd.info, Node: Architectures, Next: Opening and Closing, Prev: Targets, Up: BFD front end + +2.13 Architectures +================== + +BFD keeps one atom in a BFD describing the architecture of the data +attached to the BFD: a pointer to a `bfd_arch_info_type'. + + Pointers to structures can be requested independently of a BFD so +that an architecture's information can be interrogated without access +to an open BFD. + + The architecture information is provided by each architecture +package. The set of default architectures is selected by the macro +`SELECT_ARCHITECTURES'. This is normally set up in the +`config/TARGET.mt' file of your choice. If the name is not defined, +then all the architectures supported are included. + + When BFD starts up, all the architectures are called with an +initialize method. It is up to the architecture back end to insert as +many items into the list of architectures as it wants to; generally +this would be one for each machine and one for the default case (an +item with a machine field of 0). + + BFD's idea of an architecture is implemented in `archures.c'. + +2.13.1 bfd_architecture +----------------------- + +*Description* +This enum gives the object file's CPU architecture, in a global +sense--i.e., what processor family does it belong to? Another field +indicates which processor within the family is in use. The machine +gives a number which distinguishes different versions of the +architecture, containing, for example, 2 and 3 for Intel i960 KA and +i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. + enum bfd_architecture + { + bfd_arch_unknown, /* File arch not known. */ + bfd_arch_obscure, /* Arch known, not one of these. */ + bfd_arch_m68k, /* Motorola 68xxx */ + #define bfd_mach_m68000 1 + #define bfd_mach_m68008 2 + #define bfd_mach_m68010 3 + #define bfd_mach_m68020 4 + #define bfd_mach_m68030 5 + #define bfd_mach_m68040 6 + #define bfd_mach_m68060 7 + #define bfd_mach_cpu32 8 + #define bfd_mach_fido 9 + #define bfd_mach_mcf_isa_a_nodiv 10 + #define bfd_mach_mcf_isa_a 11 + #define bfd_mach_mcf_isa_a_mac 12 + #define bfd_mach_mcf_isa_a_emac 13 + #define bfd_mach_mcf_isa_aplus 14 + #define bfd_mach_mcf_isa_aplus_mac 15 + #define bfd_mach_mcf_isa_aplus_emac 16 + #define bfd_mach_mcf_isa_b_nousp 17 + #define bfd_mach_mcf_isa_b_nousp_mac 18 + #define bfd_mach_mcf_isa_b_nousp_emac 19 + #define bfd_mach_mcf_isa_b 20 + #define bfd_mach_mcf_isa_b_mac 21 + #define bfd_mach_mcf_isa_b_emac 22 + #define bfd_mach_mcf_isa_b_float 23 + #define bfd_mach_mcf_isa_b_float_mac 24 + #define bfd_mach_mcf_isa_b_float_emac 25 + #define bfd_mach_mcf_isa_c 26 + #define bfd_mach_mcf_isa_c_mac 27 + #define bfd_mach_mcf_isa_c_emac 28 + #define bfd_mach_mcf_isa_c_nodiv 29 + #define bfd_mach_mcf_isa_c_nodiv_mac 30 + #define bfd_mach_mcf_isa_c_nodiv_emac 31 + bfd_arch_vax, /* DEC Vax */ + bfd_arch_i960, /* Intel 960 */ + /* The order of the following is important. + lower number indicates a machine type that + only accepts a subset of the instructions + available to machines with higher numbers. + The exception is the "ca", which is + incompatible with all other machines except + "core". */ + + #define bfd_mach_i960_core 1 + #define bfd_mach_i960_ka_sa 2 + #define bfd_mach_i960_kb_sb 3 + #define bfd_mach_i960_mc 4 + #define bfd_mach_i960_xa 5 + #define bfd_mach_i960_ca 6 + #define bfd_mach_i960_jx 7 + #define bfd_mach_i960_hx 8 + + bfd_arch_or1k, /* OpenRISC 1000 */ + #define bfd_mach_or1k 1 + #define bfd_mach_or1knd 2 + + bfd_arch_sparc, /* SPARC */ + #define bfd_mach_sparc 1 + /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ + #define bfd_mach_sparc_sparclet 2 + #define bfd_mach_sparc_sparclite 3 + #define bfd_mach_sparc_v8plus 4 + #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ + #define bfd_mach_sparc_sparclite_le 6 + #define bfd_mach_sparc_v9 7 + #define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ + #define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ + #define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ + /* Nonzero if MACH has the v9 instruction set. */ + #define bfd_mach_sparc_v9_p(mach) \ + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ + && (mach) != bfd_mach_sparc_sparclite_le) + /* Nonzero if MACH is a 64 bit sparc architecture. */ + #define bfd_mach_sparc_64bit_p(mach) \ + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb) + bfd_arch_spu, /* PowerPC SPU */ + #define bfd_mach_spu 256 + bfd_arch_mips, /* MIPS Rxxxx */ + #define bfd_mach_mips3000 3000 + #define bfd_mach_mips3900 3900 + #define bfd_mach_mips4000 4000 + #define bfd_mach_mips4010 4010 + #define bfd_mach_mips4100 4100 + #define bfd_mach_mips4111 4111 + #define bfd_mach_mips4120 4120 + #define bfd_mach_mips4300 4300 + #define bfd_mach_mips4400 4400 + #define bfd_mach_mips4600 4600 + #define bfd_mach_mips4650 4650 + #define bfd_mach_mips5000 5000 + #define bfd_mach_mips5400 5400 + #define bfd_mach_mips5500 5500 + #define bfd_mach_mips5900 5900 + #define bfd_mach_mips6000 6000 + #define bfd_mach_mips7000 7000 + #define bfd_mach_mips8000 8000 + #define bfd_mach_mips9000 9000 + #define bfd_mach_mips10000 10000 + #define bfd_mach_mips12000 12000 + #define bfd_mach_mips14000 14000 + #define bfd_mach_mips16000 16000 + #define bfd_mach_mips16 16 + #define bfd_mach_mips5 5 + #define bfd_mach_mips_loongson_2e 3001 + #define bfd_mach_mips_loongson_2f 3002 + #define bfd_mach_mips_loongson_3a 3003 + #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ + #define bfd_mach_mips_octeon 6501 + #define bfd_mach_mips_octeonp 6601 + #define bfd_mach_mips_octeon2 6502 + #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ + #define bfd_mach_mipsisa32 32 + #define bfd_mach_mipsisa32r2 33 + #define bfd_mach_mipsisa32r3 34 + #define bfd_mach_mipsisa32r5 36 + #define bfd_mach_mipsisa32r6 37 + #define bfd_mach_mipsisa64 64 + #define bfd_mach_mipsisa64r2 65 + #define bfd_mach_mipsisa64r3 66 + #define bfd_mach_mipsisa64r5 68 + #define bfd_mach_mipsisa64r6 69 + #define bfd_mach_mips_micromips 96 + bfd_arch_i386, /* Intel 386 */ + #define bfd_mach_i386_intel_syntax (1 << 0) + #define bfd_mach_i386_i8086 (1 << 1) + #define bfd_mach_i386_i386 (1 << 2) + #define bfd_mach_x86_64 (1 << 3) + #define bfd_mach_x64_32 (1 << 4) + #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax) + #define bfd_mach_x86_64_intel_syntax (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax) + #define bfd_mach_x64_32_intel_syntax (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax) + bfd_arch_l1om, /* Intel L1OM */ + #define bfd_mach_l1om (1 << 5) + #define bfd_mach_l1om_intel_syntax (bfd_mach_l1om | bfd_mach_i386_intel_syntax) + bfd_arch_k1om, /* Intel K1OM */ + #define bfd_mach_k1om (1 << 6) + #define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax) + #define bfd_mach_i386_nacl (1 << 7) + #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) + #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) + #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) + bfd_arch_we32k, /* AT&T WE32xxx */ + bfd_arch_tahoe, /* CCI/Harris Tahoe */ + bfd_arch_i860, /* Intel 860 */ + bfd_arch_i370, /* IBM 360/370 Mainframes */ + bfd_arch_romp, /* IBM ROMP PC/RT */ + bfd_arch_convex, /* Convex */ + bfd_arch_m88k, /* Motorola 88xxx */ + bfd_arch_m98k, /* Motorola 98xxx */ + bfd_arch_pyramid, /* Pyramid Technology */ + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */ + #define bfd_mach_h8300 1 + #define bfd_mach_h8300h 2 + #define bfd_mach_h8300s 3 + #define bfd_mach_h8300hn 4 + #define bfd_mach_h8300sn 5 + #define bfd_mach_h8300sx 6 + #define bfd_mach_h8300sxn 7 + bfd_arch_pdp11, /* DEC PDP-11 */ + bfd_arch_plugin, + bfd_arch_powerpc, /* PowerPC */ + #define bfd_mach_ppc 32 + #define bfd_mach_ppc64 64 + #define bfd_mach_ppc_403 403 + #define bfd_mach_ppc_403gc 4030 + #define bfd_mach_ppc_405 405 + #define bfd_mach_ppc_505 505 + #define bfd_mach_ppc_601 601 + #define bfd_mach_ppc_602 602 + #define bfd_mach_ppc_603 603 + #define bfd_mach_ppc_ec603e 6031 + #define bfd_mach_ppc_604 604 + #define bfd_mach_ppc_620 620 + #define bfd_mach_ppc_630 630 + #define bfd_mach_ppc_750 750 + #define bfd_mach_ppc_860 860 + #define bfd_mach_ppc_a35 35 + #define bfd_mach_ppc_rs64ii 642 + #define bfd_mach_ppc_rs64iii 643 + #define bfd_mach_ppc_7400 7400 + #define bfd_mach_ppc_e500 500 + #define bfd_mach_ppc_e500mc 5001 + #define bfd_mach_ppc_e500mc64 5005 + #define bfd_mach_ppc_e5500 5006 + #define bfd_mach_ppc_e6500 5007 + #define bfd_mach_ppc_titan 83 + #define bfd_mach_ppc_vle 84 + bfd_arch_rs6000, /* IBM RS/6000 */ + #define bfd_mach_rs6k 6000 + #define bfd_mach_rs6k_rs1 6001 + #define bfd_mach_rs6k_rsc 6003 + #define bfd_mach_rs6k_rs2 6002 + bfd_arch_hppa, /* HP PA RISC */ + #define bfd_mach_hppa10 10 + #define bfd_mach_hppa11 11 + #define bfd_mach_hppa20 20 + #define bfd_mach_hppa20w 25 + bfd_arch_d10v, /* Mitsubishi D10V */ + #define bfd_mach_d10v 1 + #define bfd_mach_d10v_ts2 2 + #define bfd_mach_d10v_ts3 3 + bfd_arch_d30v, /* Mitsubishi D30V */ + bfd_arch_dlx, /* DLX */ + bfd_arch_m68hc11, /* Motorola 68HC11 */ + bfd_arch_m68hc12, /* Motorola 68HC12 */ + #define bfd_mach_m6812_default 0 + #define bfd_mach_m6812 1 + #define bfd_mach_m6812s 2 + bfd_arch_m9s12x, /* Freescale S12X */ + bfd_arch_m9s12xg, /* Freescale XGATE */ + bfd_arch_z8k, /* Zilog Z8000 */ + #define bfd_mach_z8001 1 + #define bfd_mach_z8002 2 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */ + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */ + #define bfd_mach_sh 1 + #define bfd_mach_sh2 0x20 + #define bfd_mach_sh_dsp 0x2d + #define bfd_mach_sh2a 0x2a + #define bfd_mach_sh2a_nofpu 0x2b + #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 + #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 + #define bfd_mach_sh2a_or_sh4 0x2a3 + #define bfd_mach_sh2a_or_sh3e 0x2a4 + #define bfd_mach_sh2e 0x2e + #define bfd_mach_sh3 0x30 + #define bfd_mach_sh3_nommu 0x31 + #define bfd_mach_sh3_dsp 0x3d + #define bfd_mach_sh3e 0x3e + #define bfd_mach_sh4 0x40 + #define bfd_mach_sh4_nofpu 0x41 + #define bfd_mach_sh4_nommu_nofpu 0x42 + #define bfd_mach_sh4a 0x4a + #define bfd_mach_sh4a_nofpu 0x4b + #define bfd_mach_sh4al_dsp 0x4d + #define bfd_mach_sh5 0x50 + bfd_arch_alpha, /* Dec Alpha */ + #define bfd_mach_alpha_ev4 0x10 + #define bfd_mach_alpha_ev5 0x20 + #define bfd_mach_alpha_ev6 0x30 + bfd_arch_arm, /* Advanced Risc Machines ARM. */ + #define bfd_mach_arm_unknown 0 + #define bfd_mach_arm_2 1 + #define bfd_mach_arm_2a 2 + #define bfd_mach_arm_3 3 + #define bfd_mach_arm_3M 4 + #define bfd_mach_arm_4 5 + #define bfd_mach_arm_4T 6 + #define bfd_mach_arm_5 7 + #define bfd_mach_arm_5T 8 + #define bfd_mach_arm_5TE 9 + #define bfd_mach_arm_XScale 10 + #define bfd_mach_arm_ep9312 11 + #define bfd_mach_arm_iWMMXt 12 + #define bfd_mach_arm_iWMMXt2 13 + bfd_arch_nds32, /* Andes NDS32 */ + #define bfd_mach_n1 1 + #define bfd_mach_n1h 2 + #define bfd_mach_n1h_v2 3 + #define bfd_mach_n1h_v3 4 + #define bfd_mach_n1h_v3m 5 + bfd_arch_ns32k, /* National Semiconductors ns32000 */ + bfd_arch_w65, /* WDC 65816 */ + bfd_arch_tic30, /* Texas Instruments TMS320C30 */ + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */ + #define bfd_mach_tic3x 30 + #define bfd_mach_tic4x 40 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ + bfd_arch_tic80, /* TI TMS320c80 (MVP) */ + bfd_arch_v850, /* NEC V850 */ + bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */ + #define bfd_mach_v850 1 + #define bfd_mach_v850e 'E' + #define bfd_mach_v850e1 '1' + #define bfd_mach_v850e2 0x4532 + #define bfd_mach_v850e2v3 0x45325633 + #define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5') */ + bfd_arch_arc, /* ARC Cores */ + #define bfd_mach_arc_5 5 + #define bfd_mach_arc_6 6 + #define bfd_mach_arc_7 7 + #define bfd_mach_arc_8 8 + bfd_arch_m32c, /* Renesas M16C/M32C. */ + #define bfd_mach_m16c 0x75 + #define bfd_mach_m32c 0x78 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */ + #define bfd_mach_m32r 1 /* For backwards compatibility. */ + #define bfd_mach_m32rx 'x' + #define bfd_mach_m32r2 '2' + bfd_arch_mn10200, /* Matsushita MN10200 */ + bfd_arch_mn10300, /* Matsushita MN10300 */ + #define bfd_mach_mn10300 300 + #define bfd_mach_am33 330 + #define bfd_mach_am33_2 332 + bfd_arch_fr30, + #define bfd_mach_fr30 0x46523330 + bfd_arch_frv, + #define bfd_mach_frv 1 + #define bfd_mach_frvsimple 2 + #define bfd_mach_fr300 300 + #define bfd_mach_fr400 400 + #define bfd_mach_fr450 450 + #define bfd_mach_frvtomcat 499 /* fr500 prototype */ + #define bfd_mach_fr500 500 + #define bfd_mach_fr550 550 + bfd_arch_moxie, /* The moxie processor */ + #define bfd_mach_moxie 1 + bfd_arch_mcore, + bfd_arch_mep, + #define bfd_mach_mep 1 + #define bfd_mach_mep_h1 0x6831 + #define bfd_mach_mep_c5 0x6335 + bfd_arch_metag, + #define bfd_mach_metag 1 + bfd_arch_ia64, /* HP/Intel ia64 */ + #define bfd_mach_ia64_elf64 64 + #define bfd_mach_ia64_elf32 32 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */ + #define bfd_mach_ip2022 1 + #define bfd_mach_ip2022ext 2 + bfd_arch_iq2000, /* Vitesse IQ2000. */ + #define bfd_mach_iq2000 1 + #define bfd_mach_iq10 2 + bfd_arch_epiphany, /* Adapteva EPIPHANY */ + #define bfd_mach_epiphany16 1 + #define bfd_mach_epiphany32 2 + bfd_arch_mt, + #define bfd_mach_ms1 1 + #define bfd_mach_mrisc2 2 + #define bfd_mach_ms2 3 + bfd_arch_pj, + bfd_arch_avr, /* Atmel AVR microcontrollers. */ + #define bfd_mach_avr1 1 + #define bfd_mach_avr2 2 + #define bfd_mach_avr25 25 + #define bfd_mach_avr3 3 + #define bfd_mach_avr31 31 + #define bfd_mach_avr35 35 + #define bfd_mach_avr4 4 + #define bfd_mach_avr5 5 + #define bfd_mach_avr51 51 + #define bfd_mach_avr6 6 + #define bfd_mach_avrtiny 100 + #define bfd_mach_avrxmega1 101 + #define bfd_mach_avrxmega2 102 + #define bfd_mach_avrxmega3 103 + #define bfd_mach_avrxmega4 104 + #define bfd_mach_avrxmega5 105 + #define bfd_mach_avrxmega6 106 + #define bfd_mach_avrxmega7 107 + bfd_arch_bfin, /* ADI Blackfin */ + #define bfd_mach_bfin 1 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ + #define bfd_mach_cr16 1 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ + #define bfd_mach_cr16c 1 + bfd_arch_crx, /* National Semiconductor CRX. */ + #define bfd_mach_crx 1 + bfd_arch_cris, /* Axis CRIS */ + #define bfd_mach_cris_v0_v10 255 + #define bfd_mach_cris_v32 32 + #define bfd_mach_cris_v10_v32 1032 + bfd_arch_rl78, + #define bfd_mach_rl78 0x75 + bfd_arch_rx, /* Renesas RX. */ + #define bfd_mach_rx 0x75 + bfd_arch_s390, /* IBM s390 */ + #define bfd_mach_s390_31 31 + #define bfd_mach_s390_64 64 + bfd_arch_score, /* Sunplus score */ + #define bfd_mach_score3 3 + #define bfd_mach_score7 7 + bfd_arch_mmix, /* Donald Knuth's educational processor. */ + bfd_arch_xstormy16, + #define bfd_mach_xstormy16 1 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */ + #define bfd_mach_msp11 11 + #define bfd_mach_msp110 110 + #define bfd_mach_msp12 12 + #define bfd_mach_msp13 13 + #define bfd_mach_msp14 14 + #define bfd_mach_msp15 15 + #define bfd_mach_msp16 16 + #define bfd_mach_msp20 20 + #define bfd_mach_msp21 21 + #define bfd_mach_msp22 22 + #define bfd_mach_msp23 23 + #define bfd_mach_msp24 24 + #define bfd_mach_msp26 26 + #define bfd_mach_msp31 31 + #define bfd_mach_msp32 32 + #define bfd_mach_msp33 33 + #define bfd_mach_msp41 41 + #define bfd_mach_msp42 42 + #define bfd_mach_msp43 43 + #define bfd_mach_msp44 44 + #define bfd_mach_msp430x 45 + #define bfd_mach_msp46 46 + #define bfd_mach_msp47 47 + #define bfd_mach_msp54 54 + bfd_arch_xc16x, /* Infineon's XC16X Series. */ + #define bfd_mach_xc16x 1 + #define bfd_mach_xc16xl 2 + #define bfd_mach_xc16xs 3 + bfd_arch_xgate, /* Freescale XGATE */ + #define bfd_mach_xgate 1 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ + #define bfd_mach_xtensa 1 + bfd_arch_z80, + #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ + #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ + #define bfd_mach_z80full 7 /* All undocumented instructions. */ + #define bfd_mach_r800 11 /* R800: successor with multiplication. */ + bfd_arch_lm32, /* Lattice Mico32 */ + #define bfd_mach_lm32 1 + bfd_arch_microblaze,/* Xilinx MicroBlaze. */ + bfd_arch_tilepro, /* Tilera TILEPro */ + bfd_arch_tilegx, /* Tilera TILE-Gx */ + #define bfd_mach_tilepro 1 + #define bfd_mach_tilegx 1 + #define bfd_mach_tilegx32 2 + bfd_arch_aarch64, /* AArch64 */ + #define bfd_mach_aarch64 0 + #define bfd_mach_aarch64_ilp32 32 + bfd_arch_nios2, + #define bfd_mach_nios2 0 + bfd_arch_last + }; + +2.13.2 bfd_arch_info +-------------------- + +*Description* +This structure contains information on architectures for use within BFD. + + typedef struct bfd_arch_info + { + int bits_per_word; + int bits_per_address; + int bits_per_byte; + enum bfd_architecture arch; + unsigned long mach; + const char *arch_name; + const char *printable_name; + unsigned int section_align_power; + /* TRUE if this is the default machine for the architecture. + The default arch should be the first entry for an arch so that + all the entries for that arch can be accessed via `next'. */ + bfd_boolean the_default; + const struct bfd_arch_info * (*compatible) + (const struct bfd_arch_info *a, const struct bfd_arch_info *b); + + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); + + /* Allocate via bfd_malloc and return a fill buffer of size COUNT. If + IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is + TRUE, the buffer contains code. */ + void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian, + bfd_boolean code); + + const struct bfd_arch_info *next; + } + bfd_arch_info_type; + +2.13.2.1 `bfd_printable_name' +............................. + +*Synopsis* + const char *bfd_printable_name (bfd *abfd); + *Description* +Return a printable string representing the architecture and machine +from the pointer to the architecture info structure. + +2.13.2.2 `bfd_scan_arch' +........................ + +*Synopsis* + const bfd_arch_info_type *bfd_scan_arch (const char *string); + *Description* +Figure out if BFD supports any cpu which could be described with the +name STRING. Return a pointer to an `arch_info' structure if a machine +is found, otherwise NULL. + +2.13.2.3 `bfd_arch_list' +........................ + +*Synopsis* + const char **bfd_arch_list (void); + *Description* +Return a freshly malloced NULL-terminated vector of the names of all +the valid BFD architectures. Do not modify the names. + +2.13.2.4 `bfd_arch_get_compatible' +.................................. + +*Synopsis* + const bfd_arch_info_type *bfd_arch_get_compatible + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); + *Description* +Determine whether two BFDs' architectures and machine types are +compatible. Calculates the lowest common denominator between the two +architectures and machine types implied by the BFDs and returns a +pointer to an `arch_info' structure describing the compatible machine. + +2.13.2.5 `bfd_default_arch_struct' +.................................. + +*Description* +The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which +has been initialized to a fairly generic state. A BFD starts life by +pointing to this structure, until the correct back end has determined +the real architecture of the file. + extern const bfd_arch_info_type bfd_default_arch_struct; + +2.13.2.6 `bfd_set_arch_info' +............................ + +*Synopsis* + void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); + *Description* +Set the architecture info of ABFD to ARG. + +2.13.2.7 `bfd_default_set_arch_mach' +.................................... + +*Synopsis* + bfd_boolean bfd_default_set_arch_mach + (bfd *abfd, enum bfd_architecture arch, unsigned long mach); + *Description* +Set the architecture and machine type in BFD ABFD to ARCH and MACH. +Find the correct pointer to a structure and insert it into the +`arch_info' pointer. + +2.13.2.8 `bfd_get_arch' +....................... + +*Synopsis* + enum bfd_architecture bfd_get_arch (bfd *abfd); + *Description* +Return the enumerated type which describes the BFD ABFD's architecture. + +2.13.2.9 `bfd_get_mach' +....................... + +*Synopsis* + unsigned long bfd_get_mach (bfd *abfd); + *Description* +Return the long type which describes the BFD ABFD's machine. + +2.13.2.10 `bfd_arch_bits_per_byte' +.................................. + +*Synopsis* + unsigned int bfd_arch_bits_per_byte (bfd *abfd); + *Description* +Return the number of bits in one of the BFD ABFD's architecture's bytes. + +2.13.2.11 `bfd_arch_bits_per_address' +..................................... + +*Synopsis* + unsigned int bfd_arch_bits_per_address (bfd *abfd); + *Description* +Return the number of bits in one of the BFD ABFD's architecture's +addresses. + +2.13.2.12 `bfd_default_compatible' +.................................. + +*Synopsis* + const bfd_arch_info_type *bfd_default_compatible + (const bfd_arch_info_type *a, const bfd_arch_info_type *b); + *Description* +The default function for testing for compatibility. + +2.13.2.13 `bfd_default_scan' +............................ + +*Synopsis* + bfd_boolean bfd_default_scan + (const struct bfd_arch_info *info, const char *string); + *Description* +The default function for working out whether this is an architecture +hit and a machine hit. + +2.13.2.14 `bfd_get_arch_info' +............................. + +*Synopsis* + const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); + *Description* +Return the architecture info struct in ABFD. + +2.13.2.15 `bfd_lookup_arch' +........................... + +*Synopsis* + const bfd_arch_info_type *bfd_lookup_arch + (enum bfd_architecture arch, unsigned long machine); + *Description* +Look for the architecture info structure which matches the arguments +ARCH and MACHINE. A machine of 0 matches the machine/architecture +structure which marks itself as the default. + +2.13.2.16 `bfd_printable_arch_mach' +................................... + +*Synopsis* + const char *bfd_printable_arch_mach + (enum bfd_architecture arch, unsigned long machine); + *Description* +Return a printable string representing the architecture and machine +type. + + This routine is depreciated. + +2.13.2.17 `bfd_octets_per_byte' +............................... + +*Synopsis* + unsigned int bfd_octets_per_byte (bfd *abfd); + *Description* +Return the number of octets (8-bit quantities) per target byte (minimum +addressable unit). In most cases, this will be one, but some DSP +targets have 16, 32, or even 48 bits per byte. + +2.13.2.18 `bfd_arch_mach_octets_per_byte' +......................................... + +*Synopsis* + unsigned int bfd_arch_mach_octets_per_byte + (enum bfd_architecture arch, unsigned long machine); + *Description* +See bfd_octets_per_byte. + + This routine is provided for those cases where a bfd * is not +available + +2.13.2.19 `bfd_arch_default_fill' +................................. + +*Synopsis* + void *bfd_arch_default_fill (bfd_size_type count, + bfd_boolean is_bigendian, + bfd_boolean code); + *Description* +Allocate via bfd_malloc and return a fill buffer of size COUNT. If +IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is +TRUE, the buffer contains code. + + +File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end + + /* Set to N to open the next N BFDs using an alternate id space. */ + extern unsigned int bfd_use_reserved_id; + +2.14 Opening and closing BFDs +============================= + +2.14.1 Functions for opening and closing +---------------------------------------- + +2.14.1.1 `bfd_fopen' +.................... + +*Synopsis* + bfd *bfd_fopen (const char *filename, const char *target, + const char *mode, int fd); + *Description* +Open the file FILENAME with the target TARGET. Return a pointer to the +created BFD. If FD is not -1, then `fdopen' is used to open the file; +otherwise, `fopen' is used. MODE is passed directly to `fopen' or +`fdopen'. + + Calls `bfd_find_target', so TARGET is interpreted as by that +function. + + The new BFD is marked as cacheable iff FD is -1. + + If `NULL' is returned then an error has occured. Possible errors +are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call' +error. + + On error, FD is always closed. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.2 `bfd_openr' +.................... + +*Synopsis* + bfd *bfd_openr (const char *filename, const char *target); + *Description* +Open the file FILENAME (using `fopen') with the target TARGET. Return +a pointer to the created BFD. + + Calls `bfd_find_target', so TARGET is interpreted as by that +function. + + If `NULL' is returned then an error has occured. Possible errors +are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call' +error. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.3 `bfd_fdopenr' +...................... + +*Synopsis* + bfd *bfd_fdopenr (const char *filename, const char *target, int fd); + *Description* +`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'. It +opens a BFD on a file already described by the FD supplied. + + When the file is later `bfd_close'd, the file descriptor will be +closed. If the caller desires that this file descriptor be cached by +BFD (opened as needed, closed as needed to free descriptors for other +opens), with the supplied FD used as an initial file descriptor (but +subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the +returned BFD. The default is to assume no caching; the file descriptor +will remain open until `bfd_close', and will not be affected by BFD +operations on other files. + + Possible errors are `bfd_error_no_memory', +`bfd_error_invalid_target' and `bfd_error_system_call'. + + On error, FD is closed. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.4 `bfd_openstreamr' +.......................... + +*Synopsis* + bfd *bfd_openstreamr (const char * filename, const char * target, void * stream); + *Description* +Open a BFD for read access on an existing stdio stream. When the BFD +is passed to `bfd_close', the stream will be closed. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.5 `bfd_openr_iovec' +.......................... + +*Synopsis* + bfd *bfd_openr_iovec (const char *filename, const char *target, + void *(*open_func) (struct bfd *nbfd, + void *open_closure), + void *open_closure, + file_ptr (*pread_func) (struct bfd *nbfd, + void *stream, + void *buf, + file_ptr nbytes, + file_ptr offset), + int (*close_func) (struct bfd *nbfd, + void *stream), + int (*stat_func) (struct bfd *abfd, + void *stream, + struct stat *sb)); + *Description* +Create and return a BFD backed by a read-only STREAM. The STREAM is +created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using +CLOSE_FUNC. + + Calls `bfd_find_target', so TARGET is interpreted as by that +function. + + Calls OPEN_FUNC (which can call `bfd_zalloc' and `bfd_get_filename') +to obtain the read-only stream backing the BFD. OPEN_FUNC either +succeeds returning the non-`NULL' STREAM, or fails returning `NULL' +(setting `bfd_error'). + + Calls PREAD_FUNC to request NBYTES of data from STREAM starting at +OFFSET (e.g., via a call to `bfd_read'). PREAD_FUNC either succeeds +returning the number of bytes read (which can be less than NBYTES when +end-of-file), or fails returning -1 (setting `bfd_error'). + + Calls CLOSE_FUNC when the BFD is later closed using `bfd_close'. +CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting +`bfd_error'). + + Calls STAT_FUNC to fill in a stat structure for bfd_stat, +bfd_get_size, and bfd_get_mtime calls. STAT_FUNC returns 0 on success, +or returns -1 on failure (setting `bfd_error'). + + If `bfd_openr_iovec' returns `NULL' then an error has occurred. +Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target' +and `bfd_error_system_call'. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.6 `bfd_openw' +.................... + +*Synopsis* + bfd *bfd_openw (const char *filename, const char *target); + *Description* +Create a BFD, associated with file FILENAME, using the file format +TARGET, and return a pointer to it. + + Possible errors are `bfd_error_system_call', `bfd_error_no_memory', +`bfd_error_invalid_target'. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.7 `bfd_close' +.................... + +*Synopsis* + bfd_boolean bfd_close (bfd *abfd); + *Description* +Close a BFD. If the BFD was open for writing, then pending operations +are completed and the file written out and closed. If the created file +is executable, then `chmod' is called to mark it as such. + + All memory attached to the BFD is released. + + The file descriptor associated with the BFD is closed (even if it +was passed in to BFD by `bfd_fdopenr'). + + *Returns* +`TRUE' is returned if all is ok, otherwise `FALSE'. + +2.14.1.8 `bfd_close_all_done' +............................. + +*Synopsis* + bfd_boolean bfd_close_all_done (bfd *); + *Description* +Close a BFD. Differs from `bfd_close' since it does not complete any +pending operations. This routine would be used if the application had +just used BFD for swapping and didn't want to use any of the writing +code. + + If the created file is executable, then `chmod' is called to mark it +as such. + + All memory attached to the BFD is released. + + *Returns* +`TRUE' is returned if all is ok, otherwise `FALSE'. + +2.14.1.9 `bfd_create' +..................... + +*Synopsis* + bfd *bfd_create (const char *filename, bfd *templ); + *Description* +Create a new BFD in the manner of `bfd_openw', but without opening a +file. The new BFD takes the target from the target used by TEMPL. The +format is always set to `bfd_object'. + + A copy of the FILENAME argument is stored in the newly created BFD. +It can be accessed via the bfd_get_filename() macro. + +2.14.1.10 `bfd_make_writable' +............................. + +*Synopsis* + bfd_boolean bfd_make_writable (bfd *abfd); + *Description* +Takes a BFD as created by `bfd_create' and converts it into one like as +returned by `bfd_openw'. It does this by converting the BFD to +BFD_IN_MEMORY. It's assumed that you will call `bfd_make_readable' on +this bfd later. + + *Returns* +`TRUE' is returned if all is ok, otherwise `FALSE'. + +2.14.1.11 `bfd_make_readable' +............................. + +*Synopsis* + bfd_boolean bfd_make_readable (bfd *abfd); + *Description* +Takes a BFD as created by `bfd_create' and `bfd_make_writable' and +converts it into one like as returned by `bfd_openr'. It does this by +writing the contents out to the memory buffer, then reversing the +direction. + + *Returns* +`TRUE' is returned if all is ok, otherwise `FALSE'. + +2.14.1.12 `bfd_alloc' +..................... + +*Synopsis* + void *bfd_alloc (bfd *abfd, bfd_size_type wanted); + *Description* +Allocate a block of WANTED bytes of memory attached to `abfd' and +return a pointer to it. + +2.14.1.13 `bfd_alloc2' +...................... + +*Synopsis* + void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); + *Description* +Allocate a block of NMEMB elements of SIZE bytes each of memory +attached to `abfd' and return a pointer to it. + +2.14.1.14 `bfd_zalloc' +...................... + +*Synopsis* + void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); + *Description* +Allocate a block of WANTED bytes of zeroed memory attached to `abfd' +and return a pointer to it. + +2.14.1.15 `bfd_zalloc2' +....................... + +*Synopsis* + void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); + *Description* +Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory +attached to `abfd' and return a pointer to it. + +2.14.1.16 `bfd_calc_gnu_debuglink_crc32' +........................................ + +*Synopsis* + unsigned long bfd_calc_gnu_debuglink_crc32 + (unsigned long crc, const unsigned char *buf, bfd_size_type len); + *Description* +Computes a CRC value as used in the .gnu_debuglink section. Advances +the previously computed CRC value by computing and adding in the crc32 +for LEN bytes of BUF. + + *Returns* +Return the updated CRC32 value. + +2.14.1.17 `bfd_get_debug_link_info' +................................... + +*Synopsis* + char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out); + *Description* +Fetch the filename and CRC32 value for any separate debuginfo +associated with ABFD. Return NULL if no such info found, otherwise +return filename and update CRC32_OUT. The returned filename is +allocated with `malloc'; freeing it is the responsibility of the caller. + +2.14.1.18 `bfd_get_alt_debug_link_info' +....................................... + +*Synopsis* + char *bfd_get_alt_debug_link_info (bfd * abfd, + bfd_size_type *buildid_len, + bfd_byte **buildid_out); + *Description* +Fetch the filename and BuildID value for any alternate debuginfo +associated with ABFD. Return NULL if no such info found, otherwise +return filename and update BUILDID_LEN and BUILDID_OUT. The returned +filename and build_id are allocated with `malloc'; freeing them is the +responsibility of the caller. + +2.14.1.19 `separate_debug_file_exists' +...................................... + +*Synopsis* + bfd_boolean separate_debug_file_exists + (char *name, unsigned long crc32); + *Description* +Checks to see if NAME is a file and if its contents match CRC32. + +2.14.1.20 `separate_alt_debug_file_exists' +.......................................... + +*Synopsis* + bfd_boolean separate_alt_debug_file_exists + (char *name, unsigned long crc32); + *Description* +Checks to see if NAME is a file and if its BuildID matches BUILDID. + +2.14.1.21 `find_separate_debug_file' +.................................... + +*Synopsis* + char *find_separate_debug_file (bfd *abfd); + *Description* +Searches ABFD for a section called SECTION_NAME which is expected to +contain a reference to a file containing separate debugging +information. The function scans various locations in the filesystem, +including the file tree rooted at DEBUG_FILE_DIRECTORY, and returns the +first matching filename that it finds. If CHECK_CRC is TRUE then the +contents of the file must also match the CRC value contained in +SECTION_NAME. Returns NULL if no valid file could be found. + +2.14.1.22 `bfd_follow_gnu_debuglink' +.................................... + +*Synopsis* + char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); + *Description* +Takes a BFD and searches it for a .gnu_debuglink section. If this +section is found, it examines the section for the name and checksum of +a '.debug' file containing auxiliary debugging information. It then +searches the filesystem for this .debug file in some standard +locations, including the directory tree rooted at DIR, and if found +returns the full filename. + + If DIR is NULL, it will search a default path configured into libbfd +at build time. [XXX this feature is not currently implemented]. + + *Returns* +`NULL' on any errors or failure to locate the .debug file, otherwise a +pointer to a heap-allocated string containing the filename. The caller +is responsible for freeing this string. + +2.14.1.23 `bfd_follow_gnu_debugaltlink' +....................................... + +*Synopsis* + char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir); + *Description* +Takes a BFD and searches it for a .gnu_debugaltlink section. If this +section is found, it examines the section for the name of a file +containing auxiliary debugging information. It then searches the +filesystem for this file in a set of standard locations, including the +directory tree rooted at DIR, and if found returns the full filename. + + If DIR is NULL, it will search a default path configured into libbfd +at build time. [FIXME: This feature is not currently implemented]. + + *Returns* +`NULL' on any errors or failure to locate the debug file, otherwise a +pointer to a heap-allocated string containing the filename. The caller +is responsible for freeing this string. + +2.14.1.24 `bfd_create_gnu_debuglink_section' +............................................ + +*Synopsis* + struct bfd_section *bfd_create_gnu_debuglink_section + (bfd *abfd, const char *filename); + *Description* +Takes a BFD and adds a .gnu_debuglink section to it. The section is +sized to be big enough to contain a link to the specified FILENAME. + + *Returns* +A pointer to the new section is returned if all is ok. Otherwise +`NULL' is returned and bfd_error is set. + +2.14.1.25 `bfd_fill_in_gnu_debuglink_section' +............................................. + +*Synopsis* + bfd_boolean bfd_fill_in_gnu_debuglink_section + (bfd *abfd, struct bfd_section *sect, const char *filename); + *Description* +Takes a BFD and containing a .gnu_debuglink section SECT and fills in +the contents of the section to contain a link to the specified +FILENAME. The filename should be relative to the current directory. + + *Returns* +`TRUE' is returned if all is ok. Otherwise `FALSE' is returned and +bfd_error is set. + + +File: bfd.info, Node: Internal, Next: File Caching, Prev: Opening and Closing, Up: BFD front end + +2.15 Implementation details +=========================== + +2.15.1 Internal functions +------------------------- + +*Description* +These routines are used within BFD. They are not intended for export, +but are documented here for completeness. + +2.15.1.1 `bfd_write_bigendian_4byte_int' +........................................ + +*Synopsis* + bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int); + *Description* +Write a 4 byte integer I to the output BFD ABFD, in big endian order +regardless of what else is going on. This is useful in archives. + +2.15.1.2 `bfd_put_size' +....................... + +2.15.1.3 `bfd_get_size' +....................... + +*Description* +These macros as used for reading and writing raw data in sections; each +access (except for bytes) is vectored through the target format of the +BFD and mangled accordingly. The mangling performs any necessary endian +translations and removes alignment restrictions. Note that types +accepted and returned by these macros are identical so they can be +swapped around in macros--for example, `libaout.h' defines `GET_WORD' +to either `bfd_get_32' or `bfd_get_64'. + + In the put routines, VAL must be a `bfd_vma'. If we are on a system +without prototypes, the caller is responsible for making sure that is +true, with a cast if necessary. We don't cast them in the macro +definitions because that would prevent `lint' or `gcc -Wall' from +detecting sins such as passing a pointer. To detect calling these with +less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit +`bfd_vma''s. + + /* Byte swapping macros for user section data. */ + + #define bfd_put_8(abfd, val, ptr) \ + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff)) + #define bfd_put_signed_8 \ + bfd_put_8 + #define bfd_get_8(abfd, ptr) \ + (*(const unsigned char *) (ptr) & 0xff) + #define bfd_get_signed_8(abfd, ptr) \ + (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80) + + #define bfd_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx16, ((val),(ptr))) + #define bfd_put_signed_16 \ + bfd_put_16 + #define bfd_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx16, (ptr)) + #define bfd_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) + + #define bfd_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx32, ((val),(ptr))) + #define bfd_put_signed_32 \ + bfd_put_32 + #define bfd_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx32, (ptr)) + #define bfd_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_32, (ptr)) + + #define bfd_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx64, ((val), (ptr))) + #define bfd_put_signed_64 \ + bfd_put_64 + #define bfd_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx64, (ptr)) + #define bfd_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_64, (ptr)) + + #define bfd_get(bits, abfd, ptr) \ + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \ + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \ + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \ + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \ + : (abort (), (bfd_vma) - 1)) + + #define bfd_put(bits, abfd, val, ptr) \ + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \ + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \ + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \ + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \ + : (abort (), (void) 0)) + +2.15.1.4 `bfd_h_put_size' +......................... + +*Description* +These macros have the same function as their `bfd_get_x' brethren, +except that they are used for removing information for the header +records of object files. Believe it or not, some object files keep +their header records in big endian order and their data in little +endian order. + + /* Byte swapping macros for file header data. */ + + #define bfd_h_put_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) + #define bfd_h_put_signed_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) + #define bfd_h_get_8(abfd, ptr) \ + bfd_get_8 (abfd, ptr) + #define bfd_h_get_signed_8(abfd, ptr) \ + bfd_get_signed_8 (abfd, ptr) + + #define bfd_h_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx16, (val, ptr)) + #define bfd_h_put_signed_16 \ + bfd_h_put_16 + #define bfd_h_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx16, (ptr)) + #define bfd_h_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr)) + + #define bfd_h_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx32, (val, ptr)) + #define bfd_h_put_signed_32 \ + bfd_h_put_32 + #define bfd_h_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx32, (ptr)) + #define bfd_h_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr)) + + #define bfd_h_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx64, (val, ptr)) + #define bfd_h_put_signed_64 \ + bfd_h_put_64 + #define bfd_h_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx64, (ptr)) + #define bfd_h_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr)) + + /* Aliases for the above, which should eventually go away. */ + + #define H_PUT_64 bfd_h_put_64 + #define H_PUT_32 bfd_h_put_32 + #define H_PUT_16 bfd_h_put_16 + #define H_PUT_8 bfd_h_put_8 + #define H_PUT_S64 bfd_h_put_signed_64 + #define H_PUT_S32 bfd_h_put_signed_32 + #define H_PUT_S16 bfd_h_put_signed_16 + #define H_PUT_S8 bfd_h_put_signed_8 + #define H_GET_64 bfd_h_get_64 + #define H_GET_32 bfd_h_get_32 + #define H_GET_16 bfd_h_get_16 + #define H_GET_8 bfd_h_get_8 + #define H_GET_S64 bfd_h_get_signed_64 + #define H_GET_S32 bfd_h_get_signed_32 + #define H_GET_S16 bfd_h_get_signed_16 + #define H_GET_S8 bfd_h_get_signed_8 + +2.15.1.5 `bfd_log2' +................... + +*Synopsis* + unsigned int bfd_log2 (bfd_vma x); + *Description* +Return the log base 2 of the value supplied, rounded up. E.g., an X of +1025 returns 11. A X of 0 returns 0. + + +File: bfd.info, Node: File Caching, Next: Linker Functions, Prev: Internal, Up: BFD front end + +2.16 File caching +================= + +The file caching mechanism is embedded within BFD and allows the +application to open as many BFDs as it wants without regard to the +underlying operating system's file descriptor limit (often as low as 20 +open files). The module in `cache.c' maintains a least recently used +list of `bfd_cache_max_open' files, and exports the name +`bfd_cache_lookup', which runs around and makes sure that the required +BFD is open. If not, then it chooses a file to close, closes it and +opens the one wanted, returning its file handle. + +2.16.1 Caching functions +------------------------ + +2.16.1.1 `bfd_cache_init' +......................... + +*Synopsis* + bfd_boolean bfd_cache_init (bfd *abfd); + *Description* +Add a newly opened BFD to the cache. + +2.16.1.2 `bfd_cache_close' +.......................... + +*Synopsis* + bfd_boolean bfd_cache_close (bfd *abfd); + *Description* +Remove the BFD ABFD from the cache. If the attached file is open, then +close it too. + + *Returns* +`FALSE' is returned if closing the file fails, `TRUE' is returned if +all is well. + +2.16.1.3 `bfd_cache_close_all' +.............................. + +*Synopsis* + bfd_boolean bfd_cache_close_all (void); + *Description* +Remove all BFDs from the cache. If the attached file is open, then +close it too. + + *Returns* +`FALSE' is returned if closing one of the file fails, `TRUE' is +returned if all is well. + +2.16.1.4 `bfd_open_file' +........................ + +*Synopsis* + FILE* bfd_open_file (bfd *abfd); + *Description* +Call the OS to open a file for ABFD. Return the `FILE *' (possibly +`NULL') that results from this operation. Set up the BFD so that +future accesses know the file is open. If the `FILE *' returned is +`NULL', then it won't have been put in the cache, so it won't have to +be removed from it. + + +File: bfd.info, Node: Linker Functions, Next: Hash Tables, Prev: File Caching, Up: BFD front end + +2.17 Linker Functions +===================== + +The linker uses three special entry points in the BFD target vector. +It is not necessary to write special routines for these entry points +when creating a new BFD back end, since generic versions are provided. +However, writing them can speed up linking and make it use +significantly less runtime memory. + + The first routine creates a hash table used by the other routines. +The second routine adds the symbols from an object file to the hash +table. The third routine takes all the object files and links them +together to create the output file. These routines are designed so +that the linker proper does not need to know anything about the symbols +in the object files that it is linking. The linker merely arranges the +sections as directed by the linker script and lets BFD handle the +details of symbols and relocs. + + The second routine and third routines are passed a pointer to a +`struct bfd_link_info' structure (defined in `bfdlink.h') which holds +information relevant to the link, including the linker hash table +(which was created by the first routine) and a set of callback +functions to the linker proper. + + The generic linker routines are in `linker.c', and use the header +file `genlink.h'. As of this writing, the only back ends which have +implemented versions of these routines are a.out (in `aoutx.h') and +ECOFF (in `ecoff.c'). The a.out routines are used as examples +throughout this section. + +* Menu: + +* Creating a Linker Hash Table:: +* Adding Symbols to the Hash Table:: +* Performing the Final Link:: + + +File: bfd.info, Node: Creating a Linker Hash Table, Next: Adding Symbols to the Hash Table, Prev: Linker Functions, Up: Linker Functions + +2.17.1 Creating a linker hash table +----------------------------------- + +The linker routines must create a hash table, which must be derived +from `struct bfd_link_hash_table' described in `bfdlink.c'. *Note Hash +Tables::, for information on how to create a derived hash table. This +entry point is called using the target vector of the linker output file. + + The `_bfd_link_hash_table_create' entry point must allocate and +initialize an instance of the desired hash table. If the back end does +not require any additional information to be stored with the entries in +the hash table, the entry point may simply create a `struct +bfd_link_hash_table'. Most likely, however, some additional +information will be needed. + + For example, with each entry in the hash table the a.out linker +keeps the index the symbol has in the final output file (this index +number is used so that when doing a relocatable link the symbol index +used in the output file can be quickly filled in when copying over a +reloc). The a.out linker code defines the required structures and +functions for a hash table derived from `struct bfd_link_hash_table'. +The a.out linker hash table is created by the function +`NAME(aout,link_hash_table_create)'; it simply allocates space for the +hash table, initializes it, and returns a pointer to it. + + When writing the linker routines for a new back end, you will +generally not know exactly which fields will be required until you have +finished. You should simply create a new hash table which defines no +additional fields, and then simply add fields as they become necessary. + + +File: bfd.info, Node: Adding Symbols to the Hash Table, Next: Performing the Final Link, Prev: Creating a Linker Hash Table, Up: Linker Functions + +2.17.2 Adding symbols to the hash table +--------------------------------------- + +The linker proper will call the `_bfd_link_add_symbols' entry point for +each object file or archive which is to be linked (typically these are +the files named on the command line, but some may also come from the +linker script). The entry point is responsible for examining the file. +For an object file, BFD must add any relevant symbol information to +the hash table. For an archive, BFD must determine which elements of +the archive should be used and adding them to the link. + + The a.out version of this entry point is +`NAME(aout,link_add_symbols)'. + +* Menu: + +* Differing file formats:: +* Adding symbols from an object file:: +* Adding symbols from an archive:: + + +File: bfd.info, Node: Differing file formats, Next: Adding symbols from an object file, Prev: Adding Symbols to the Hash Table, Up: Adding Symbols to the Hash Table + +2.17.2.1 Differing file formats +............................... + +Normally all the files involved in a link will be of the same format, +but it is also possible to link together different format object files, +and the back end must support that. The `_bfd_link_add_symbols' entry +point is called via the target vector of the file to be added. This +has an important consequence: the function may not assume that the hash +table is the type created by the corresponding +`_bfd_link_hash_table_create' vector. All the `_bfd_link_add_symbols' +function can assume about the hash table is that it is derived from +`struct bfd_link_hash_table'. + + Sometimes the `_bfd_link_add_symbols' function must store some +information in the hash table entry to be used by the `_bfd_final_link' +function. In such a case the output bfd xvec must be checked to make +sure that the hash table was created by an object file of the same +format. + + The `_bfd_final_link' routine must be prepared to handle a hash +entry without any extra information added by the +`_bfd_link_add_symbols' function. A hash entry without extra +information will also occur when the linker script directs the linker +to create a symbol. Note that, regardless of how a hash table entry is +added, all the fields will be initialized to some sort of null value by +the hash table entry initialization function. + + See `ecoff_link_add_externals' for an example of how to check the +output bfd before saving information (in this case, the ECOFF external +symbol debugging information) in a hash table entry. + + +File: bfd.info, Node: Adding symbols from an object file, Next: Adding symbols from an archive, Prev: Differing file formats, Up: Adding Symbols to the Hash Table + +2.17.2.2 Adding symbols from an object file +........................................... + +When the `_bfd_link_add_symbols' routine is passed an object file, it +must add all externally visible symbols in that object file to the hash +table. The actual work of adding the symbol to the hash table is +normally handled by the function `_bfd_generic_link_add_one_symbol'. +The `_bfd_link_add_symbols' routine is responsible for reading all the +symbols from the object file and passing the correct information to +`_bfd_generic_link_add_one_symbol'. + + The `_bfd_link_add_symbols' routine should not use +`bfd_canonicalize_symtab' to read the symbols. The point of providing +this routine is to avoid the overhead of converting the symbols into +generic `asymbol' structures. + + `_bfd_generic_link_add_one_symbol' handles the details of combining +common symbols, warning about multiple definitions, and so forth. It +takes arguments which describe the symbol to add, notably symbol flags, +a section, and an offset. The symbol flags include such things as +`BSF_WEAK' or `BSF_INDIRECT'. The section is a section in the object +file, or something like `bfd_und_section_ptr' for an undefined symbol +or `bfd_com_section_ptr' for a common symbol. + + If the `_bfd_final_link' routine is also going to need to read the +symbol information, the `_bfd_link_add_symbols' routine should save it +somewhere attached to the object file BFD. However, the information +should only be saved if the `keep_memory' field of the `info' argument +is TRUE, so that the `-no-keep-memory' linker switch is effective. + + The a.out function which adds symbols from an object file is +`aout_link_add_object_symbols', and most of the interesting work is in +`aout_link_add_symbols'. The latter saves pointers to the hash tables +entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol +number, so that the `_bfd_final_link' routine does not have to call the +hash table lookup routine to locate the entry. + + +File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table + +2.17.2.3 Adding symbols from an archive +....................................... + +When the `_bfd_link_add_symbols' routine is passed an archive, it must +look through the symbols defined by the archive and decide which +elements of the archive should be included in the link. For each such +element it must call the `add_archive_element' linker callback, and it +must add the symbols from the object file to the linker hash table. +(The callback may in fact indicate that a replacement BFD should be +used, in which case the symbols from that BFD should be added to the +linker hash table instead.) + + In most cases the work of looking through the symbols in the archive +should be done by the `_bfd_generic_link_add_archive_symbols' function. +`_bfd_generic_link_add_archive_symbols' is passed a function to call to +make the final decision about adding an archive element to the link and +to do the actual work of adding the symbols to the linker hash table. +If the element is to be included, the `add_archive_element' linker +callback routine must be called with the element as an argument, and +the element's symbols must be added to the linker hash table just as +though the element had itself been passed to the +`_bfd_link_add_symbols' function. + + When the a.out `_bfd_link_add_symbols' function receives an archive, +it calls `_bfd_generic_link_add_archive_symbols' passing +`aout_link_check_archive_element' as the function argument. +`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'. +If the latter decides to add the element (an element is only added if +it provides a real, non-common, definition for a previously undefined +or common symbol) it calls the `add_archive_element' callback and then +`aout_link_check_archive_element' calls `aout_link_add_symbols' to +actually add the symbols to the linker hash table - possibly those of a +substitute BFD, if the `add_archive_element' callback avails itself of +that option. + + The ECOFF back end is unusual in that it does not normally call +`_bfd_generic_link_add_archive_symbols', because ECOFF archives already +contain a hash table of symbols. The ECOFF back end searches the +archive itself to avoid the overhead of creating a new hash table. + + +File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions + +2.17.3 Performing the final link +-------------------------------- + +When all the input files have been processed, the linker calls the +`_bfd_final_link' entry point of the output BFD. This routine is +responsible for producing the final output file, which has several +aspects. It must relocate the contents of the input sections and copy +the data into the output sections. It must build an output symbol +table including any local symbols from the input files and the global +symbols from the hash table. When producing relocatable output, it must +modify the input relocs and write them into the output file. There may +also be object format dependent work to be done. + + The linker will also call the `write_object_contents' entry point +when the BFD is closed. The two entry points must work together in +order to produce the correct output file. + + The details of how this works are inevitably dependent upon the +specific object file format. The a.out `_bfd_final_link' routine is +`NAME(aout,final_link)'. + +* Menu: + +* Information provided by the linker:: +* Relocating the section contents:: +* Writing the symbol table:: + + +File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link + +2.17.3.1 Information provided by the linker +........................................... + +Before the linker calls the `_bfd_final_link' entry point, it sets up +some data structures for the function to use. + + The `input_bfds' field of the `bfd_link_info' structure will point +to a list of all the input files included in the link. These files are +linked through the `link.next' field of the `bfd' structure. + + Each section in the output file will have a list of `link_order' +structures attached to the `map_head.link_order' field (the +`link_order' structure is defined in `bfdlink.h'). These structures +describe how to create the contents of the output section in terms of +the contents of various input sections, fill constants, and, +eventually, other types of information. They also describe relocs that +must be created by the BFD backend, but do not correspond to any input +file; this is used to support -Ur, which builds constructors while +generating a relocatable object file. + + +File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link + +2.17.3.2 Relocating the section contents +........................................ + +The `_bfd_final_link' function should look through the `link_order' +structures attached to each section of the output file. Each +`link_order' structure should either be handled specially, or it should +be passed to the function `_bfd_default_link_order' which will do the +right thing (`_bfd_default_link_order' is defined in `linker.c'). + + For efficiency, a `link_order' of type `bfd_indirect_link_order' +whose associated section belongs to a BFD of the same format as the +output BFD must be handled specially. This type of `link_order' +describes part of an output section in terms of a section belonging to +one of the input files. The `_bfd_final_link' function should read the +contents of the section and any associated relocs, apply the relocs to +the section contents, and write out the modified section contents. If +performing a relocatable link, the relocs themselves must also be +modified and written out. + + The functions `_bfd_relocate_contents' and +`_bfd_final_link_relocate' provide some general support for performing +the actual relocations, notably overflow checking. Their arguments +include information about the symbol the relocation is against and a +`reloc_howto_type' argument which describes the relocation to perform. +These functions are defined in `reloc.c'. + + The a.out function which handles reading, relocating, and writing +section contents is `aout_link_input_section'. The actual relocation +is done in `aout_link_input_section_std' and +`aout_link_input_section_ext'. + + +File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link + +2.17.3.3 Writing the symbol table +................................. + +The `_bfd_final_link' function must gather all the symbols in the input +files and write them out. It must also write out all the symbols in +the global hash table. This must be controlled by the `strip' and +`discard' fields of the `bfd_link_info' structure. + + The local symbols of the input files will not have been entered into +the linker hash table. The `_bfd_final_link' routine must consider +each input file and include the symbols in the output file. It may be +convenient to do this when looking through the `link_order' structures, +or it may be done by stepping through the `input_bfds' list. + + The `_bfd_final_link' routine must also traverse the global hash +table to gather all the externally visible symbols. It is possible +that most of the externally visible symbols may be written out when +considering the symbols of each input file, but it is still necessary +to traverse the hash table since the linker script may have defined +some symbols that are not in any of the input files. + + The `strip' field of the `bfd_link_info' structure controls which +symbols are written out. The possible values are listed in +`bfdlink.h'. If the value is `strip_some', then the `keep_hash' field +of the `bfd_link_info' structure is a hash table of symbols to keep; +each symbol should be looked up in this hash table, and only symbols +which are present should be included in the output file. + + If the `strip' field of the `bfd_link_info' structure permits local +symbols to be written out, the `discard' field is used to further +controls which local symbols are included in the output file. If the +value is `discard_l', then all local symbols which begin with a certain +prefix are discarded; this is controlled by the +`bfd_is_local_label_name' entry point. + + The a.out backend handles symbols by calling +`aout_link_write_symbols' on each input BFD and then traversing the +global hash table with the function `aout_link_write_other_symbol'. It +builds a string table while writing out the symbols, which is written +to the output file at the end of `NAME(aout,final_link)'. + +2.17.3.4 `bfd_link_split_section' +................................. + +*Synopsis* + bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec); + *Description* +Return nonzero if SEC should be split during a reloceatable or final +link. + #define bfd_link_split_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) + +2.17.3.5 `bfd_section_already_linked' +..................................... + +*Synopsis* + bfd_boolean bfd_section_already_linked (bfd *abfd, + asection *sec, + struct bfd_link_info *info); + *Description* +Check if DATA has been already linked during a reloceatable or final +link. Return TRUE if it has. + #define bfd_section_already_linked(abfd, sec, info) \ + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info)) + +2.17.3.6 `bfd_generic_define_common_symbol' +........................................... + +*Synopsis* + bfd_boolean bfd_generic_define_common_symbol + (bfd *output_bfd, struct bfd_link_info *info, + struct bfd_link_hash_entry *h); + *Description* +Convert common symbol H into a defined symbol. Return TRUE on success +and FALSE on failure. + #define bfd_define_common_symbol(output_bfd, info, h) \ + BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h)) + +2.17.3.7 `bfd_find_version_for_sym' +................................... + +*Synopsis* + struct bfd_elf_version_tree * bfd_find_version_for_sym + (struct bfd_elf_version_tree *verdefs, + const char *sym_name, bfd_boolean *hide); + *Description* +Search an elf version script tree for symbol versioning info and export +/ don't-export status for a given symbol. Return non-NULL on success +and NULL on failure; also sets the output `hide' boolean parameter. + +2.17.3.8 `bfd_hide_sym_by_version' +.................................. + +*Synopsis* + bfd_boolean bfd_hide_sym_by_version + (struct bfd_elf_version_tree *verdefs, const char *sym_name); + *Description* +Search an elf version script tree for symbol versioning info for a +given symbol. Return TRUE if the symbol is hidden. + + +File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end + +2.18 Hash Tables +================ + +BFD provides a simple set of hash table functions. Routines are +provided to initialize a hash table, to free a hash table, to look up a +string in a hash table and optionally create an entry for it, and to +traverse a hash table. There is currently no routine to delete an +string from a hash table. + + The basic hash table does not permit any data to be stored with a +string. However, a hash table is designed to present a base class from +which other types of hash tables may be derived. These derived types +may store additional information with the string. Hash tables were +implemented in this way, rather than simply providing a data pointer in +a hash table entry, because they were designed for use by the linker +back ends. The linker may create thousands of hash table entries, and +the overhead of allocating private data and storing and following +pointers becomes noticeable. + + The basic hash table code is in `hash.c'. + +* Menu: + +* Creating and Freeing a Hash Table:: +* Looking Up or Entering a String:: +* Traversing a Hash Table:: +* Deriving a New Hash Table Type:: + + +File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables + +2.18.1 Creating and freeing a hash table +---------------------------------------- + +To create a hash table, create an instance of a `struct bfd_hash_table' +(defined in `bfd.h') and call `bfd_hash_table_init' (if you know +approximately how many entries you will need, the function +`bfd_hash_table_init_n', which takes a SIZE argument, may be used). +`bfd_hash_table_init' returns `FALSE' if some sort of error occurs. + + The function `bfd_hash_table_init' take as an argument a function to +use to create new entries. For a basic hash table, use the function +`bfd_hash_newfunc'. *Note Deriving a New Hash Table Type::, for why +you would want to use a different value for this argument. + + `bfd_hash_table_init' will create an objalloc which will be used to +allocate new entries. You may allocate memory on this objalloc using +`bfd_hash_allocate'. + + Use `bfd_hash_table_free' to free up all the memory that has been +allocated for a hash table. This will not free up the `struct +bfd_hash_table' itself, which you must provide. + + Use `bfd_hash_set_default_size' to set the default size of hash +table to use. + + +File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables + +2.18.2 Looking up or entering a string +-------------------------------------- + +The function `bfd_hash_lookup' is used both to look up a string in the +hash table and to create a new entry. + + If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a +string. If the string is found, it will returns a pointer to a `struct +bfd_hash_entry'. If the string is not found in the table +`bfd_hash_lookup' will return `NULL'. You should not modify any of the +fields in the returns `struct bfd_hash_entry'. + + If the CREATE argument is `TRUE', the string will be entered into +the hash table if it is not already there. Either way a pointer to a +`struct bfd_hash_entry' will be returned, either to the existing +structure or to a newly created one. In this case, a `NULL' return +means that an error occurred. + + If the CREATE argument is `TRUE', and a new entry is created, the +COPY argument is used to decide whether to copy the string onto the +hash table objalloc or not. If COPY is passed as `FALSE', you must be +careful not to deallocate or modify the string as long as the hash table +exists. + + +File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables + +2.18.3 Traversing a hash table +------------------------------ + +The function `bfd_hash_traverse' may be used to traverse a hash table, +calling a function on each element. The traversal is done in a random +order. + + `bfd_hash_traverse' takes as arguments a function and a generic +`void *' pointer. The function is called with a hash table entry (a +`struct bfd_hash_entry *') and the generic pointer passed to +`bfd_hash_traverse'. The function must return a `boolean' value, which +indicates whether to continue traversing the hash table. If the +function returns `FALSE', `bfd_hash_traverse' will stop the traversal +and return immediately. + + +File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables + +2.18.4 Deriving a new hash table type +------------------------------------- + +Many uses of hash tables want to store additional information which +each entry in the hash table. Some also find it convenient to store +additional information with the hash table itself. This may be done +using a derived hash table. + + Since C is not an object oriented language, creating a derived hash +table requires sticking together some boilerplate routines with a few +differences specific to the type of hash table you want to create. + + An example of a derived hash table is the linker hash table. The +structures for this are defined in `bfdlink.h'. The functions are in +`linker.c'. + + You may also derive a hash table from an already derived hash table. +For example, the a.out linker backend code uses a hash table derived +from the linker hash table. + +* Menu: + +* Define the Derived Structures:: +* Write the Derived Creation Routine:: +* Write Other Derived Routines:: + + +File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type + +2.18.4.1 Define the derived structures +...................................... + +You must define a structure for an entry in the hash table, and a +structure for the hash table itself. + + The first field in the structure for an entry in the hash table must +be of the type used for an entry in the hash table you are deriving +from. If you are deriving from a basic hash table this is `struct +bfd_hash_entry', which is defined in `bfd.h'. The first field in the +structure for the hash table itself must be of the type of the hash +table you are deriving from itself. If you are deriving from a basic +hash table, this is `struct bfd_hash_table'. + + For example, the linker hash table defines `struct +bfd_link_hash_entry' (in `bfdlink.h'). The first field, `root', is of +type `struct bfd_hash_entry'. Similarly, the first field in `struct +bfd_link_hash_table', `table', is of type `struct bfd_hash_table'. + + +File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type + +2.18.4.2 Write the derived creation routine +........................................... + +You must write a routine which will create and initialize an entry in +the hash table. This routine is passed as the function argument to +`bfd_hash_table_init'. + + In order to permit other hash tables to be derived from the hash +table you are creating, this routine must be written in a standard way. + + The first argument to the creation routine is a pointer to a hash +table entry. This may be `NULL', in which case the routine should +allocate the right amount of space. Otherwise the space has already +been allocated by a hash table type derived from this one. + + After allocating space, the creation routine must call the creation +routine of the hash table type it is derived from, passing in a pointer +to the space it just allocated. This will initialize any fields used +by the base hash table. + + Finally the creation routine must initialize any local fields for +the new hash table type. + + Here is a boilerplate example of a creation routine. FUNCTION_NAME +is the name of the routine. ENTRY_TYPE is the type of an entry in the +hash table you are creating. BASE_NEWFUNC is the name of the creation +routine of the hash table type your hash table is derived from. + + struct bfd_hash_entry * + FUNCTION_NAME (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) + { + struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry; + + /* Allocate the structure if it has not already been allocated by a + derived class. */ + if (ret == NULL) + { + ret = bfd_hash_allocate (table, sizeof (* ret)); + if (ret == NULL) + return NULL; + } + + /* Call the allocation method of the base class. */ + ret = ((ENTRY_TYPE *) + BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string)); + + /* Initialize the local fields here. */ + + return (struct bfd_hash_entry *) ret; + } + *Description* +The creation routine for the linker hash table, which is in `linker.c', +looks just like this example. FUNCTION_NAME is +`_bfd_link_hash_newfunc'. ENTRY_TYPE is `struct bfd_link_hash_entry'. +BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic +hash table. + + `_bfd_link_hash_newfunc' also initializes the local fields in a +linker hash table entry: `type', `written' and `next'. + + +File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type + +2.18.4.3 Write other derived routines +..................................... + +You will want to write other routines for your new hash table, as well. + + You will want an initialization routine which calls the +initialization routine of the hash table you are deriving from and +initializes any other local fields. For the linker hash table, this is +`_bfd_link_hash_table_init' in `linker.c'. + + You will want a lookup routine which calls the lookup routine of the +hash table you are deriving from and casts the result. The linker hash +table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an +additional argument which it uses to decide how to return the looked up +value). + + You may want a traversal routine. This should just call the +traversal routine of the hash table you are deriving from with +appropriate casts. The linker hash table uses `bfd_link_hash_traverse' +in `linker.c'. + + These routines may simply be defined as macros. For example, the +a.out backend linker hash table, which is derived from the linker hash +table, uses macros for the lookup and traversal routines. These are +`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h. + + +File: bfd.info, Node: BFD back ends, Next: GNU Free Documentation License, Prev: BFD front end, Up: Top + +3 BFD back ends +*************** + +* Menu: + +* What to Put Where:: +* aout :: a.out backends +* coff :: coff backends +* elf :: elf backends +* mmo :: mmo backend + + +File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends + +3.1 What to Put Where +===================== + +All of BFD lives in one directory. + + +File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends + +3.2 a.out backends +================== + +*Description* +BFD supports a number of different flavours of a.out format, though the +major differences are only the sizes of the structures on disk, and the +shape of the relocation information. + + The support is split into a basic support file `aoutx.h' and other +files which derive functions from the base. One derivation file is +`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions +support for sun3, sun4, 386 and 29k a.out files, to create a target +jump vector for a specific target. + + This information is further split out into more specific files for +each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for +the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out +format. + + The base file `aoutx.h' defines general mechanisms for reading and +writing records to and from disk and various other methods which BFD +requires. It is included by `aout32.c' and `aout64.c' to form the names +`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc. + + As an example, this is what goes on to make the back end for a sun4, +from `aout32.c': + + #define ARCH_SIZE 32 + #include "aoutx.h" + + Which exports names: + + ... + aout_32_canonicalize_reloc + aout_32_find_nearest_line + aout_32_get_lineno + aout_32_get_reloc_upper_bound + ... + + from `sunos.c': + + #define TARGET_NAME "a.out-sunos-big" + #define VECNAME sparc_aout_sunos_be_vec + #include "aoutf1.h" + + requires all the names from `aout32.c', and produces the jump vector + + sparc_aout_sunos_be_vec + + The file `host-aout.c' is a special case. It is for a large set of +hosts that use "more or less standard" a.out files, and for which +cross-debugging is not interesting. It uses the standard 32-bit a.out +support routines, but determines the file offsets and addresses of the +text, data, and BSS sections, the machine architecture and machine +type, and the entry point address, in a host-dependent manner. Once +these values have been determined, generic code is used to handle the +object file. + + When porting it to run on a new system, you must supply: + + HOST_PAGE_SIZE + HOST_SEGMENT_SIZE + HOST_MACHINE_ARCH (optional) + HOST_MACHINE_MACHINE (optional) + HOST_TEXT_START_ADDR + HOST_STACK_END_ADDR + + in the file `../include/sys/h-XXX.h' (for your host). These values, +plus the structures and macros defined in `a.out.h' on your host +system, will produce a BFD target that will access ordinary a.out files +on your host. To configure a new machine to use `host-aout.c', specify: + + TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec + TDEPFILES= host-aout.o trad-core.o + + in the `config/XXX.mt' file, and modify `configure.ac' to use the +`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration +is selected. + +3.2.1 Relocations +----------------- + +*Description* +The file `aoutx.h' provides for both the _standard_ and _extended_ +forms of a.out relocation records. + + The standard records contain only an address, a symbol index, and a +type field. The extended records (used on 29ks and sparcs) also have a +full integer for an addend. + +3.2.2 Internal entry points +--------------------------- + +*Description* +`aoutx.h' exports several routines for accessing the contents of an +a.out file, which are gathered and exported in turn by various format +specific files (eg sunos.c). + +3.2.2.1 `aout_SIZE_swap_exec_header_in' +....................................... + +*Synopsis* + void aout_SIZE_swap_exec_header_in, + (bfd *abfd, + struct external_exec *bytes, + struct internal_exec *execp); + *Description* +Swap the information in an executable header RAW_BYTES taken from a raw +byte stream memory image into the internal exec header structure EXECP. + +3.2.2.2 `aout_SIZE_swap_exec_header_out' +........................................ + +*Synopsis* + void aout_SIZE_swap_exec_header_out + (bfd *abfd, + struct internal_exec *execp, + struct external_exec *raw_bytes); + *Description* +Swap the information in an internal exec header structure EXECP into +the buffer RAW_BYTES ready for writing to disk. + +3.2.2.3 `aout_SIZE_some_aout_object_p' +...................................... + +*Synopsis* + const bfd_target *aout_SIZE_some_aout_object_p + (bfd *abfd, + struct internal_exec *execp, + const bfd_target *(*callback_to_real_object_p) (bfd *)); + *Description* +Some a.out variant thinks that the file open in ABFD checking is an +a.out file. Do some more checking, and set up for access if it really +is. Call back to the calling environment's "finish up" function just +before returning, to handle any last-minute setup. + +3.2.2.4 `aout_SIZE_mkobject' +............................ + +*Synopsis* + bfd_boolean aout_SIZE_mkobject, (bfd *abfd); + *Description* +Initialize BFD ABFD for use with a.out files. + +3.2.2.5 `aout_SIZE_machine_type' +................................ + +*Synopsis* + enum machine_type aout_SIZE_machine_type + (enum bfd_architecture arch, + unsigned long machine, + bfd_boolean *unknown); + *Description* +Keep track of machine architecture and machine type for a.out's. Return +the `machine_type' for a particular architecture and machine, or +`M_UNKNOWN' if that exact architecture and machine can't be represented +in a.out format. + + If the architecture is understood, machine type 0 (default) is +always understood. + +3.2.2.6 `aout_SIZE_set_arch_mach' +................................. + +*Synopsis* + bfd_boolean aout_SIZE_set_arch_mach, + (bfd *, + enum bfd_architecture arch, + unsigned long machine); + *Description* +Set the architecture and the machine of the BFD ABFD to the values ARCH +and MACHINE. Verify that ABFD's format can support the architecture +required. + +3.2.2.7 `aout_SIZE_new_section_hook' +.................................... + +*Synopsis* + bfd_boolean aout_SIZE_new_section_hook, + (bfd *abfd, + asection *newsect); + *Description* +Called by the BFD in response to a `bfd_make_section' request. + + +File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends + +3.3 coff backends +================= + +BFD supports a number of different flavours of coff format. The major +differences between formats are the sizes and alignments of fields in +structures on disk, and the occasional extra field. + + Coff in all its varieties is implemented with a few common files and +a number of implementation specific files. For example, The 88k bcs +coff format is implemented in the file `coff-m88k.c'. This file +`#include's `coff/m88k.h' which defines the external structure of the +coff format for the 88k, and `coff/internal.h' which defines the +internal structure. `coff-m88k.c' also defines the relocations used by +the 88k format *Note Relocations::. + + The Intel i960 processor version of coff is implemented in +`coff-i960.c'. This file has the same structure as `coff-m88k.c', +except that it includes `coff/i960.h' rather than `coff-m88k.h'. + +3.3.1 Porting to a new version of coff +-------------------------------------- + +The recommended method is to select from the existing implementations +the version of coff which is most like the one you want to use. For +example, we'll say that i386 coff is the one you select, and that your +coff flavour is called foo. Copy `i386coff.c' to `foocoff.c', copy +`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines +to `targets.c' and `Makefile.in' so that your new back end is used. +Alter the shapes of the structures in `../include/coff/foo.h' so that +they match what you need. You will probably also have to add `#ifdef's +to the code in `coff/internal.h' and `coffcode.h' if your version of +coff is too wild. + + You can verify that your new BFD backend works quite simply by +building `objdump' from the `binutils' directory, and making sure that +its version of what's going on and your host system's idea (assuming it +has the pretty standard coff dump utility, usually called `att-dump' or +just `dump') are the same. Then clean up your code, and send what +you've done to Cygnus. Then your stuff will be in the next release, and +you won't have to keep integrating it. + +3.3.2 How the coff backend works +-------------------------------- + +3.3.2.1 File layout +................... + +The Coff backend is split into generic routines that are applicable to +any Coff target and routines that are specific to a particular target. +The target-specific routines are further split into ones which are +basically the same for all Coff targets except that they use the +external symbol format or use different values for certain constants. + + The generic routines are in `coffgen.c'. These routines work for +any Coff target. They use some hooks into the target specific code; +the hooks are in a `bfd_coff_backend_data' structure, one of which +exists for each target. + + The essentially similar target-specific routines are in +`coffcode.h'. This header file includes executable C code. The +various Coff targets first include the appropriate Coff header file, +make any special defines that are needed, and then include `coffcode.h'. + + Some of the Coff targets then also have additional routines in the +target source file itself. + + For example, `coff-i960.c' includes `coff/internal.h' and +`coff/i960.h'. It then defines a few constants, such as `I960', and +includes `coffcode.h'. Since the i960 has complex relocation types, +`coff-i960.c' also includes some code to manipulate the i960 relocs. +This code is not in `coffcode.h' because it would not be used by any +other target. + +3.3.2.2 Coff long section names +............................... + +In the standard Coff object format, section names are limited to the +eight bytes available in the `s_name' field of the `SCNHDR' section +header structure. The format requires the field to be NUL-padded, but +not necessarily NUL-terminated, so the longest section names permitted +are a full eight characters. + + The Microsoft PE variants of the Coff object file format add an +extension to support the use of long section names. This extension is +defined in section 4 of the Microsoft PE/COFF specification (rev 8.1). +If a section name is too long to fit into the section header's `s_name' +field, it is instead placed into the string table, and the `s_name' +field is filled with a slash ("/") followed by the ASCII decimal +representation of the offset of the full name relative to the string +table base. + + Note that this implies that the extension can only be used in object +files, as executables do not contain a string table. The standard +specifies that long section names from objects emitted into executable +images are to be truncated. + + However, as a GNU extension, BFD can generate executable images that +contain a string table and long section names. This would appear to be +technically valid, as the standard only says that Coff debugging +information is deprecated, not forbidden, and in practice it works, +although some tools that parse PE files expecting the MS standard +format may become confused; `PEview' is one known example. + + The functionality is supported in BFD by code implemented under the +control of the macro `COFF_LONG_SECTION_NAMES'. If not defined, the +format does not support long section names in any way. If defined, it +is used to initialise a flag, `_bfd_coff_long_section_names', and a +hook function pointer, `_bfd_coff_set_long_section_names', in the Coff +backend data structure. The flag controls the generation of long +section names in output BFDs at runtime; if it is false, as it will be +by default when generating an executable image, long section names are +truncated; if true, the long section names extension is employed. The +hook points to a function that allows the value of the flag to be +altered at runtime, on formats that support long section names at all; +on other formats it points to a stub that returns an error indication. + + With input BFDs, the flag is set according to whether any long +section names are detected while reading the section headers. For a +completely new BFD, the flag is set to the default for the target +format. This information can be used by a client of the BFD library +when deciding what output format to generate, and means that a BFD that +is opened for read and subsequently converted to a writeable BFD and +modified in-place will retain whatever format it had on input. + + If `COFF_LONG_SECTION_NAMES' is simply defined (blank), or is +defined to the value "1", then long section names are enabled by +default; if it is defined to the value zero, they are disabled by +default (but still accepted in input BFDs). The header `coffcode.h' +defines a macro, `COFF_DEFAULT_LONG_SECTION_NAMES', which is used in +the backends to initialise the backend data structure fields +appropriately; see the comments for further detail. + +3.3.2.3 Bit twiddling +..................... + +Each flavour of coff supported in BFD has its own header file +describing the external layout of the structures. There is also an +internal description of the coff layout, in `coff/internal.h'. A major +function of the coff backend is swapping the bytes and twiddling the +bits to translate the external form of the structures into the normal +internal form. This is all performed in the `bfd_swap'_thing_direction +routines. Some elements are different sizes between different versions +of coff; it is the duty of the coff version specific include file to +override the definitions of various packing routines in `coffcode.h'. +E.g., the size of line number entry in coff is sometimes 16 bits, and +sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO' +will select the correct one. No doubt, some day someone will find a +version of coff which has a varying field size not catered to at the +moment. To port BFD, that person will have to add more `#defines'. +Three of the bit twiddling routines are exported to `gdb'; +`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB' +reads the symbol table on its own, but uses BFD to fix things up. More +of the bit twiddlers are exported for `gas'; `coff_swap_aux_out', +`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out', +`coff_swap_filehdr_out', `coff_swap_aouthdr_out', +`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol +table and reloc drudgery itself, thereby saving the internal BFD +overhead, but uses BFD to swap things on the way out, making cross +ports much safer. Doing so also allows BFD (and thus the linker) to +use the same header files as `gas', which makes one avenue to disaster +disappear. + +3.3.2.4 Symbol reading +...................... + +The simple canonical form for symbols used by BFD is not rich enough to +keep all the information available in a coff symbol table. The back end +gets around this problem by keeping the original symbol table around, +"behind the scenes". + + When a symbol table is requested (through a call to +`bfd_canonicalize_symtab'), a request gets through to +`coff_get_normalized_symtab'. This reads the symbol table from the coff +file and swaps all the structures inside into the internal form. It +also fixes up all the pointers in the table (represented in the file by +offsets from the first symbol in the table) into physical pointers to +elements in the new internal table. This involves some work since the +meanings of fields change depending upon context: a field that is a +pointer to another structure in the symbol table at one moment may be +the size in bytes of a structure at the next. Another pass is made +over the table. All symbols which mark file names (`C_FILE' symbols) +are modified so that the internal string points to the value in the +auxent (the real filename) rather than the normal text associated with +the symbol (`".file"'). + + At this time the symbol names are moved around. Coff stores all +symbols less than nine characters long physically within the symbol +table; longer strings are kept at the end of the file in the string +table. This pass moves all strings into memory and replaces them with +pointers to the strings. + + The symbol table is massaged once again, this time to create the +canonical table used by the BFD application. Each symbol is inspected +in turn, and a decision made (using the `sclass' field) about the +various flags to set in the `asymbol'. *Note Symbols::. The generated +canonical table shares strings with the hidden internal symbol table. + + Any linenumbers are read from the coff file too, and attached to the +symbols which own the functions the linenumbers belong to. + +3.3.2.5 Symbol writing +...................... + +Writing a symbol to a coff file which didn't come from a coff file will +lose any debugging information. The `asymbol' structure remembers the +BFD from which the symbol was taken, and on output the back end makes +sure that the same destination target as source target is present. + + When the symbols have come from a coff file then all the debugging +information is preserved. + + Symbol tables are provided for writing to the back end in a vector +of pointers to pointers. This allows applications like the linker to +accumulate and output large symbol tables without having to do too much +byte copying. + + This function runs through the provided symbol table and patches +each symbol marked as a file place holder (`C_FILE') to point to the +next file place holder in the list. It also marks each `offset' field +in the list with the offset from the first symbol of the current symbol. + + Another function of this procedure is to turn the canonical value +form of BFD into the form used by coff. Internally, BFD expects symbol +values to be offsets from a section base; so a symbol physically at +0x120, but in a section starting at 0x100, would have the value 0x20. +Coff expects symbols to contain their final value, so symbols have +their values changed at this point to reflect their sum with their +owning section. This transformation uses the `output_section' field of +the `asymbol''s `asection' *Note Sections::. + + * `coff_mangle_symbols' + This routine runs though the provided symbol table and uses the +offsets generated by the previous pass and the pointers generated when +the symbol table was read in to create the structured hierarchy +required by coff. It changes each pointer to a symbol into the index +into the symbol table of the asymbol. + + * `coff_write_symbols' + This routine runs through the symbol table and patches up the +symbols from their internal form into the coff way, calls the bit +twiddlers, and writes out the table to the file. + +3.3.2.6 `coff_symbol_type' +.......................... + +*Description* +The hidden information for an `asymbol' is described in a +`combined_entry_type': + + + typedef struct coff_ptr_struct + { + /* Remembers the offset from the first symbol in the file for + this symbol. Generated by coff_renumber_symbols. */ + unsigned int offset; + + /* Should the value of this symbol be renumbered. Used for + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */ + unsigned int fix_value : 1; + + /* Should the tag field of this symbol be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_tag : 1; + + /* Should the endidx field of this symbol be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_end : 1; + + /* Should the x_csect.x_scnlen field be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_scnlen : 1; + + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the + index into the line number entries. Set by coff_slurp_symbol_table. */ + unsigned int fix_line : 1; + + /* The container for the symbol structure as read and translated + from the file. */ + union + { + union internal_auxent auxent; + struct internal_syment syment; + } u; + + /* Selector for the union above. */ + bfd_boolean is_sym; + } combined_entry_type; + + + /* Each canonical asymbol really looks like this: */ + + typedef struct coff_symbol_struct + { + /* The actual symbol which the rest of BFD works with */ + asymbol symbol; + + /* A pointer to the hidden information for this symbol */ + combined_entry_type *native; + + /* A pointer to the linenumber information for this symbol */ + struct lineno_cache_entry *lineno; + + /* Have the line numbers been relocated yet ? */ + bfd_boolean done_lineno; + } coff_symbol_type; + +3.3.2.7 `bfd_coff_backend_data' +............................... + + /* COFF symbol classifications. */ + + enum coff_symbol_classification + { + /* Global symbol. */ + COFF_SYMBOL_GLOBAL, + /* Common symbol. */ + COFF_SYMBOL_COMMON, + /* Undefined symbol. */ + COFF_SYMBOL_UNDEFINED, + /* Local symbol. */ + COFF_SYMBOL_LOCAL, + /* PE section symbol. */ + COFF_SYMBOL_PE_SECTION + }; +Special entry points for gdb to swap in coff symbol table parts: + typedef struct + { + void (*_bfd_coff_swap_aux_in) + (bfd *, void *, int, int, int, int, void *); + + void (*_bfd_coff_swap_sym_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_lineno_in) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_aux_out) + (bfd *, void *, int, int, int, int, void *); + + unsigned int (*_bfd_coff_swap_sym_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_lineno_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_reloc_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_filehdr_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_aouthdr_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_scnhdr_out) + (bfd *, void *, void *); + + unsigned int _bfd_filhsz; + unsigned int _bfd_aoutsz; + unsigned int _bfd_scnhsz; + unsigned int _bfd_symesz; + unsigned int _bfd_auxesz; + unsigned int _bfd_relsz; + unsigned int _bfd_linesz; + unsigned int _bfd_filnmlen; + bfd_boolean _bfd_coff_long_filenames; + + bfd_boolean _bfd_coff_long_section_names; + bfd_boolean (*_bfd_coff_set_long_section_names) + (bfd *, int); + + unsigned int _bfd_coff_default_section_alignment_power; + bfd_boolean _bfd_coff_force_symnames_in_strings; + unsigned int _bfd_coff_debug_string_prefix_length; + unsigned int _bfd_coff_max_nscns; + + void (*_bfd_coff_swap_filehdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_aouthdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_scnhdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_reloc_in) + (bfd *abfd, void *, void *); + + bfd_boolean (*_bfd_coff_bad_format_hook) + (bfd *, void *); + + bfd_boolean (*_bfd_coff_set_arch_mach_hook) + (bfd *, void *); + + void * (*_bfd_coff_mkobject_hook) + (bfd *, void *, void *); + + bfd_boolean (*_bfd_styp_to_sec_flags_hook) + (bfd *, void *, const char *, asection *, flagword *); + + void (*_bfd_set_alignment_hook) + (bfd *, asection *, void *); + + bfd_boolean (*_bfd_coff_slurp_symbol_table) + (bfd *); + + bfd_boolean (*_bfd_coff_symname_in_debug) + (bfd *, struct internal_syment *); + + bfd_boolean (*_bfd_coff_pointerize_aux_hook) + (bfd *, combined_entry_type *, combined_entry_type *, + unsigned int, combined_entry_type *); + + bfd_boolean (*_bfd_coff_print_aux) + (bfd *, FILE *, combined_entry_type *, combined_entry_type *, + combined_entry_type *, unsigned int); + + void (*_bfd_coff_reloc16_extra_cases) + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *, + bfd_byte *, unsigned int *, unsigned int *); + + int (*_bfd_coff_reloc16_estimate) + (bfd *, asection *, arelent *, unsigned int, + struct bfd_link_info *); + + enum coff_symbol_classification (*_bfd_coff_classify_symbol) + (bfd *, struct internal_syment *); + + bfd_boolean (*_bfd_coff_compute_section_file_positions) + (bfd *); + + bfd_boolean (*_bfd_coff_start_final_link) + (bfd *, struct bfd_link_info *); + + bfd_boolean (*_bfd_coff_relocate_section) + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + struct internal_reloc *, struct internal_syment *, asection **); + + reloc_howto_type *(*_bfd_coff_rtype_to_howto) + (bfd *, asection *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *, + bfd_vma *); + + bfd_boolean (*_bfd_coff_adjust_symndx) + (bfd *, struct bfd_link_info *, bfd *, asection *, + struct internal_reloc *, bfd_boolean *); + + bfd_boolean (*_bfd_coff_link_add_one_symbol) + (struct bfd_link_info *, bfd *, const char *, flagword, + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean, + struct bfd_link_hash_entry **); + + bfd_boolean (*_bfd_coff_link_output_has_begun) + (bfd *, struct coff_final_link_info *); + + bfd_boolean (*_bfd_coff_final_link_postscript) + (bfd *, struct coff_final_link_info *); + + bfd_boolean (*_bfd_coff_print_pdata) + (bfd *, void *); + + } bfd_coff_backend_data; + + #define coff_backend_info(abfd) \ + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) + + #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) + + #define bfd_coff_swap_sym_in(a,e,i) \ + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) + + #define bfd_coff_swap_lineno_in(a,e,i) \ + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) + + #define bfd_coff_swap_reloc_out(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) + + #define bfd_coff_swap_lineno_out(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) + + #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) + + #define bfd_coff_swap_sym_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) + + #define bfd_coff_swap_scnhdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) + + #define bfd_coff_swap_filehdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) + + #define bfd_coff_swap_aouthdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) + + #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) + #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) + #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) + #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) + #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) + #define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) + #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) + #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen) + #define bfd_coff_long_filenames(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_long_filenames) + #define bfd_coff_long_section_names(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_long_section_names) + #define bfd_coff_set_long_section_names(abfd, enable) \ + ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable)) + #define bfd_coff_default_section_alignment_power(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) + #define bfd_coff_max_nscns(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_max_nscns) + + #define bfd_coff_swap_filehdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) + + #define bfd_coff_swap_aouthdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) + + #define bfd_coff_swap_scnhdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) + + #define bfd_coff_swap_reloc_in(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) + + #define bfd_coff_bad_format_hook(abfd, filehdr) \ + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) + + #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) + #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\ + (abfd, filehdr, aouthdr)) + + #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\ + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\ + (abfd, scnhdr, name, section, flags_ptr)) + + #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) + + #define bfd_coff_slurp_symbol_table(abfd)\ + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) + + #define bfd_coff_symname_in_debug(abfd, sym)\ + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) + + #define bfd_coff_force_symnames_in_strings(abfd)\ + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings) + + #define bfd_coff_debug_string_prefix_length(abfd)\ + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length) + + #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ + (abfd, file, base, symbol, aux, indaux)) + + #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\ + reloc, data, src_ptr, dst_ptr)\ + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) + + #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ + (abfd, section, reloc, shrink, link_info)) + + #define bfd_coff_classify_symbol(abfd, sym)\ + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\ + (abfd, sym)) + + #define bfd_coff_compute_section_file_positions(abfd)\ + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ + (abfd)) + + #define bfd_coff_start_final_link(obfd, info)\ + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ + (obfd, info)) + #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ + (obfd, info, ibfd, o, con, rel, isyms, secs)) + #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ + (abfd, sec, rel, h, sym, addendp)) + #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ + (obfd, info, ibfd, sec, rel, adjustedp)) + #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ + value, string, cp, coll, hashp)\ + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ + (info, abfd, name, flags, section, value, string, cp, coll, hashp)) + + #define bfd_coff_link_output_has_begun(a,p) \ + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) + #define bfd_coff_final_link_postscript(a,p) \ + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p)) + + #define bfd_coff_have_print_pdata(a) \ + (coff_backend_info (a)->_bfd_coff_print_pdata) + #define bfd_coff_print_pdata(a,p) \ + ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p)) + + /* Macro: Returns true if the bfd is a PE executable as opposed to a + PE object file. */ + #define bfd_pei_p(abfd) \ + (CONST_STRNEQ ((abfd)->xvec->name, "pei-")) + +3.3.2.8 Writing relocations +........................... + +To write relocations, the back end steps though the canonical +relocation table and create an `internal_reloc'. The symbol index to +use is removed from the `offset' field in the symbol table supplied. +The address comes directly from the sum of the section base address and +the relocation offset; the type is dug directly from the howto field. +Then the `internal_reloc' is swapped into the shape of an +`external_reloc' and written out to disk. + +3.3.2.9 Reading linenumbers +........................... + +Creating the linenumber table is done by reading in the entire coff +linenumber table, and creating another table for internal use. + + A coff linenumber table is structured so that each function is +marked as having a line number of 0. Each line within the function is +an offset from the first line in the function. The base of the line +number information for the table is stored in the symbol associated +with the function. + + Note: The PE format uses line number 0 for a flag indicating a new +source file. + + The information is copied from the external to the internal table, +and each symbol which marks a function is marked by pointing its... + + How does this work ? + +3.3.2.10 Reading relocations +............................ + +Coff relocations are easily transformed into the internal BFD form +(`arelent'). + + Reading a coff relocation table is done in the following stages: + + * Read the entire coff relocation table into memory. + + * Process each relocation in turn; first swap it from the external + to the internal form. + + * Turn the symbol referenced in the relocation's symbol index into a + pointer into the canonical symbol table. This table is the same + as the one returned by a call to `bfd_canonicalize_symtab'. The + back end will call that routine and save the result if a + canonicalization hasn't been done. + + * The reloc index is turned into a pointer to a howto structure, in + a back end specific way. For instance, the 386 and 960 use the + `r_type' to directly produce an index into a howto table vector; + the 88k subtracts a number from the `r_type' field and creates an + addend field. + + +File: bfd.info, Node: elf, Next: mmo, Prev: coff, Up: BFD back ends + +3.4 ELF backends +================ + +BFD support for ELF formats is being worked on. Currently, the best +supported back ends are for sparc and i386 (running svr4 or Solaris 2). + + Documentation of the internals of the support code still needs to be +written. The code is changing quickly enough that we haven't bothered +yet. + + +File: bfd.info, Node: mmo, Prev: elf, Up: BFD back ends + +3.5 mmo backend +=============== + +The mmo object format is used exclusively together with Professor +Donald E. Knuth's educational 64-bit processor MMIX. The simulator +`mmix' which is available at `http://mmix.cs.hm.edu/src/index.html' +understands this format. That package also includes a combined +assembler and linker called `mmixal'. The mmo format has no advantages +feature-wise compared to e.g. ELF. It is a simple non-relocatable +object format with no support for archives or debugging information, +except for symbol value information and line numbers (which is not yet +implemented in BFD). See `http://mmix.cs.hm.edu/' for more information +about MMIX. The ELF format is used for intermediate object files in +the BFD implementation. + +* Menu: + +* File layout:: +* Symbol-table:: +* mmo section mapping:: + + +File: bfd.info, Node: File layout, Next: Symbol-table, Prev: mmo, Up: mmo + +3.5.1 File layout +----------------- + +The mmo file contents is not partitioned into named sections as with +e.g. ELF. Memory areas is formed by specifying the location of the +data that follows. Only the memory area `0x0000...00' to `0x01ff...ff' +is executable, so it is used for code (and constants) and the area +`0x2000...00' to `0x20ff...ff' is used for writable data. *Note mmo +section mapping::. + + There is provision for specifying "special data" of 65536 different +types. We use type 80 (decimal), arbitrarily chosen the same as the +ELF `e_machine' number for MMIX, filling it with section information +normally found in ELF objects. *Note mmo section mapping::. + + Contents is entered as 32-bit words, xor:ed over previous contents, +always zero-initialized. A word that starts with the byte `0x98' forms +a command called a `lopcode', where the next byte distinguished between +the thirteen lopcodes. The two remaining bytes, called the `Y' and `Z' +fields, or the `YZ' field (a 16-bit big-endian number), are used for +various purposes different for each lopcode. As documented in +`http://mmix.cs.hm.edu/doc/mmixal.pdf', the lopcodes are: + +`lop_quote' + 0x98000001. The next word is contents, regardless of whether it + starts with 0x98 or not. + +`lop_loc' + 0x9801YYZZ, where `Z' is 1 or 2. This is a location directive, + setting the location for the next data to the next 32-bit word + (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56. Normally + `Y' is 0 for the text segment and 2 for the data segment. Beware + that the low bits of non- tetrabyte-aligned values are silently + discarded when being automatically incremented and when storing + contents (in contrast to e.g. its use as current location when + followed by lop_fixo et al before the next possibly-quoted + tetrabyte contents). + +`lop_skip' + 0x9802YYZZ. Increase the current location by `YZ' bytes. + +`lop_fixo' + 0x9803YYZZ, where `Z' is 1 or 2. Store the current location as 64 + bits into the location pointed to by the next 32-bit (Z = 1) or + 64-bit (Z = 2) word, plus Y * 2^56. + +`lop_fixr' + 0x9804YYZZ. `YZ' is stored into the current location plus 2 - 4 * + YZ. + +`lop_fixrx' + 0x980500ZZ. `Z' is 16 or 24. A value `L' derived from the + following 32-bit word are used in a manner similar to `YZ' in + lop_fixr: it is xor:ed into the current location minus 4 * L. The + first byte of the word is 0 or 1. If it is 1, then L = (LOWEST 24 + BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD). + +`lop_file' + 0x9806YYZZ. `Y' is the file number, `Z' is count of 32-bit words. + Set the file number to `Y' and the line counter to 0. The next Z + * 4 bytes contain the file name, padded with zeros if the count is + not a multiple of four. The same `Y' may occur multiple times, + but `Z' must be 0 for all but the first occurrence. + +`lop_line' + 0x9807YYZZ. `YZ' is the line number. Together with lop_file, it + forms the source location for the next 32-bit word. Note that for + each non-lopcode 32-bit word, line numbers are assumed incremented + by one. + +`lop_spec' + 0x9808YYZZ. `YZ' is the type number. Data until the next lopcode + other than lop_quote forms special data of type `YZ'. *Note mmo + section mapping::. + + Other types than 80, (or type 80 with a content that does not + parse) is stored in sections named `.MMIX.spec_data.N' where N is + the `YZ'-type. The flags for such a sections say not to allocate + or load the data. The vma is 0. Contents of multiple occurrences + of special data N is concatenated to the data of the previous + lop_spec Ns. The location in data or code at which the lop_spec + occurred is lost. + +`lop_pre' + 0x980901ZZ. The first lopcode in a file. The `Z' field forms the + length of header information in 32-bit words, where the first word + tells the time in seconds since `00:00:00 GMT Jan 1 1970'. + +`lop_post' + 0x980a00ZZ. Z > 32. This lopcode follows after all + content-generating lopcodes in a program. The `Z' field denotes + the value of `rG' at the beginning of the program. The following + 256 - Z big-endian 64-bit words are loaded into global registers + `$G' ... `$255'. + +`lop_stab' + 0x980b0000. The next-to-last lopcode in a program. Must follow + immediately after the lop_post lopcode and its data. After this + lopcode follows all symbols in a compressed format (*note + Symbol-table::). + +`lop_end' + 0x980cYYZZ. The last lopcode in a program. It must follow the + lop_stab lopcode and its data. The `YZ' field contains the number + of 32-bit words of symbol table information after the preceding + lop_stab lopcode. + + Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and +`lop_fixo' are not generated by BFD, but are handled. They are +generated by `mmixal'. + + This trivial one-label, one-instruction file: + + :Main TRAP 1,2,3 + + can be represented this way in mmo: + + 0x98090101 - lop_pre, one 32-bit word with timestamp. + + 0x98010002 - lop_loc, text segment, using a 64-bit address. + Note that mmixal does not emit this for the file above. + 0x00000000 - Address, high 32 bits. + 0x00000000 - Address, low 32 bits. + 0x98060002 - lop_file, 2 32-bit words for file-name. + 0x74657374 - "test" + 0x2e730000 - ".s\0\0" + 0x98070001 - lop_line, line 1. + 0x00010203 - TRAP 1,2,3 + 0x980a00ff - lop_post, setting $255 to 0. + 0x00000000 + 0x00000000 + 0x980b0000 - lop_stab for ":Main" = 0, serial 1. + 0x203a4040 *Note Symbol-table::. + 0x10404020 + 0x4d206120 + 0x69016e00 + 0x81000000 + 0x980c0005 - lop_end; symbol table contained five 32-bit words. + + +File: bfd.info, Node: Symbol-table, Next: mmo section mapping, Prev: File layout, Up: mmo + +3.5.2 Symbol table format +------------------------- + +From mmixal.w (or really, the generated mmixal.tex) in the MMIXware +package which also contains the `mmix' simulator: "Symbols are stored +and retrieved by means of a `ternary search trie', following ideas of +Bentley and Sedgewick. (See ACM-SIAM Symp. on Discrete Algorithms `8' +(1997), 360-369; R.Sedgewick, `Algorithms in C' (Reading, Mass. +Addison-Wesley, 1998), `15.4'.) Each trie node stores a character, and +there are branches to subtries for the cases where a given character is +less than, equal to, or greater than the character in the trie. There +also is a pointer to a symbol table entry if a symbol ends at the +current node." + + So it's a tree encoded as a stream of bytes. The stream of bytes +acts on a single virtual global symbol, adding and removing characters +and signalling complete symbol points. Here, we read the stream and +create symbols at the completion points. + + First, there's a control byte `m'. If any of the listed bits in `m' +is nonzero, we execute what stands at the right, in the listed order: + + (MMO3_LEFT) + 0x40 - Traverse left trie. + (Read a new command byte and recurse.) + + (MMO3_SYMBITS) + 0x2f - Read the next byte as a character and store it in the + current character position; increment character position. + Test the bits of `m': + + (MMO3_WCHAR) + 0x80 - The character is 16-bit (so read another byte, + merge into current character. + + (MMO3_TYPEBITS) + 0xf - We have a complete symbol; parse the type, value + and serial number and do what should be done + with a symbol. The type and length information + is in j = (m & 0xf). + + (MMO3_REGQUAL_BITS) + j == 0xf: A register variable. The following + byte tells which register. + j <= 8: An absolute symbol. Read j bytes as the + big-endian number the symbol equals. + A j = 2 with two zero bytes denotes an + unknown symbol. + j > 8: As with j <= 8, but add (0x20 << 56) + to the value in the following j - 8 + bytes. + + Then comes the serial number, as a variant of + uleb128, but better named ubeb128: + Read bytes and shift the previous value left 7 + (multiply by 128). Add in the new byte, repeat + until a byte has bit 7 set. The serial number + is the computed value minus 128. + + (MMO3_MIDDLE) + 0x20 - Traverse middle trie. (Read a new command byte + and recurse.) Decrement character position. + + (MMO3_RIGHT) + 0x10 - Traverse right trie. (Read a new command byte and + recurse.) + + Let's look again at the `lop_stab' for the trivial file (*note File +layout::). + + 0x980b0000 - lop_stab for ":Main" = 0, serial 1. + 0x203a4040 + 0x10404020 + 0x4d206120 + 0x69016e00 + 0x81000000 + + This forms the trivial trie (note that the path between ":" and "M" +is redundant): + + 203a ":" + 40 / + 40 / + 10 \ + 40 / + 40 / + 204d "M" + 2061 "a" + 2069 "i" + 016e "n" is the last character in a full symbol, and + with a value represented in one byte. + 00 The value is 0. + 81 The serial number is 1. + + +File: bfd.info, Node: mmo section mapping, Prev: Symbol-table, Up: mmo + +3.5.3 mmo section mapping +------------------------- + +The implementation in BFD uses special data type 80 (decimal) to +encapsulate and describe named sections, containing e.g. debug +information. If needed, any datum in the encapsulation will be quoted +using lop_quote. First comes a 32-bit word holding the number of +32-bit words containing the zero-terminated zero-padded segment name. +After the name there's a 32-bit word holding flags describing the +section type. Then comes a 64-bit big-endian word with the section +length (in bytes), then another with the section start address. +Depending on the type of section, the contents might follow, +zero-padded to 32-bit boundary. For a loadable section (such as data +or code), the contents might follow at some later point, not +necessarily immediately, as a lop_loc with the same start address as in +the section description, followed by the contents. This in effect +forms a descriptor that must be emitted before the actual contents. +Sections described this way must not overlap. + + For areas that don't have such descriptors, synthetic sections are +formed by BFD. Consecutive contents in the two memory areas +`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are +entered in sections named `.text' and `.data' respectively. If an area +is not otherwise described, but would together with a neighboring lower +area be less than `0x40000000' bytes long, it is joined with the lower +area and the gap is zero-filled. For other cases, a new section is +formed, named `.MMIX.sec.N'. Here, N is a number, a running count +through the mmo file, starting at 0. + + A loadable section specified as: + + .section secname,"ax" + TETRA 1,2,3,4,-1,-2009 + BYTE 80 + + and linked to address `0x4', is represented by the sequence: + + 0x98080050 - lop_spec 80 + 0x00000002 - two 32-bit words for the section name + 0x7365636e - "secn" + 0x616d6500 - "ame\0" + 0x00000033 - flags CODE, READONLY, LOAD, ALLOC + 0x00000000 - high 32 bits of section length + 0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits + 0x00000000 - high 32 bits of section address + 0x00000004 - section address is 4 + 0x98010002 - 64 bits with address of following data + 0x00000000 - high 32 bits of address + 0x00000004 - low 32 bits: data starts at address 4 + 0x00000001 - 1 + 0x00000002 - 2 + 0x00000003 - 3 + 0x00000004 - 4 + 0xffffffff - -1 + 0xfffff827 - -2009 + 0x50000000 - 80 as a byte, padded with zeros. + + Note that the lop_spec wrapping does not include the section +contents. Compare this to a non-loaded section specified as: + + .section thirdsec + TETRA 200001,100002 + BYTE 38,40 + + This, when linked to address `0x200000000000001c', is represented by: + + 0x98080050 - lop_spec 80 + 0x00000002 - two 32-bit words for the section name + 0x7365636e - "thir" + 0x616d6500 - "dsec" + 0x00000010 - flag READONLY + 0x00000000 - high 32 bits of section length + 0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits + 0x20000000 - high 32 bits of address + 0x0000001c - low 32 bits of address 0x200000000000001c + 0x00030d41 - 200001 + 0x000186a2 - 100002 + 0x26280000 - 38, 40 as bytes, padded with zeros + + For the latter example, the section contents must not be loaded in +memory, and is therefore specified as part of the special data. The +address is usually unimportant but might provide information for e.g. +the DWARF 2 debugging format. + + +File: bfd.info, Node: GNU Free Documentation License, Next: BFD Index, Prev: BFD back ends, Up: Top + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + `http://fsf.org/' + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + 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 + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + 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 + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + 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 + 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 + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + 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 + replace the old one, on explicit permission from the previous + publisher that added the old one. + + 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 + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + 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 + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + 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 + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly + and finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from + you under this License. If your rights have been terminated and + not permanently reinstated, receipt of a copy of some or all of + the same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents +==================================================== + +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 +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + 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 + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + + +File: bfd.info, Node: BFD Index, Prev: GNU Free Documentation License, Up: Top + +BFD Index +********* + +[index] +* Menu: + +* _bfd_final_link_relocate: Relocating the section contents. + (line 22) +* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive. + (line 15) +* _bfd_generic_link_add_one_symbol: Adding symbols from an object file. + (line 19) +* _bfd_generic_make_empty_symbol: symbol handling functions. + (line 92) +* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table. + (line 6) +* _bfd_link_final_link in target vector: Performing the Final Link. + (line 6) +* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table. + (line 6) +* _bfd_relocate_contents: Relocating the section contents. + (line 22) +* aout_SIZE_machine_type: aout. (line 147) +* aout_SIZE_mkobject: aout. (line 139) +* aout_SIZE_new_section_hook: aout. (line 177) +* aout_SIZE_set_arch_mach: aout. (line 164) +* aout_SIZE_some_aout_object_p: aout. (line 125) +* aout_SIZE_swap_exec_header_in: aout. (line 101) +* aout_SIZE_swap_exec_header_out: aout. (line 113) +* arelent_chain: typedef arelent. (line 336) +* BFD: Overview. (line 6) +* BFD canonical format: Canonical format. (line 11) +* bfd_alloc: Opening and Closing. + (line 239) +* bfd_alloc2: Opening and Closing. + (line 248) +* bfd_alt_mach_code: Miscellaneous. (line 307) +* bfd_arch_bits_per_address: Architectures. (line 598) +* bfd_arch_bits_per_byte: Architectures. (line 590) +* bfd_arch_default_fill: Architectures. (line 679) +* bfd_arch_get_compatible: Architectures. (line 533) +* bfd_arch_list: Architectures. (line 524) +* bfd_arch_mach_octets_per_byte: Architectures. (line 667) +* BFD_ARELOC_BFIN_ADD: howto manager. (line 1127) +* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1178) +* BFD_ARELOC_BFIN_AND: howto manager. (line 1148) +* BFD_ARELOC_BFIN_COMP: howto manager. (line 1169) +* BFD_ARELOC_BFIN_CONST: howto manager. (line 1124) +* BFD_ARELOC_BFIN_DIV: howto manager. (line 1136) +* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1175) +* BFD_ARELOC_BFIN_LAND: howto manager. (line 1157) +* BFD_ARELOC_BFIN_LEN: howto manager. (line 1163) +* BFD_ARELOC_BFIN_LOR: howto manager. (line 1160) +* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1142) +* BFD_ARELOC_BFIN_MOD: howto manager. (line 1139) +* BFD_ARELOC_BFIN_MULT: howto manager. (line 1133) +* BFD_ARELOC_BFIN_NEG: howto manager. (line 1166) +* BFD_ARELOC_BFIN_OR: howto manager. (line 1151) +* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1172) +* BFD_ARELOC_BFIN_PUSH: howto manager. (line 1121) +* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1145) +* BFD_ARELOC_BFIN_SUB: howto manager. (line 1130) +* BFD_ARELOC_BFIN_XOR: howto manager. (line 1154) +* bfd_cache_close: File Caching. (line 26) +* bfd_cache_close_all: File Caching. (line 39) +* bfd_cache_init: File Caching. (line 18) +* bfd_calc_gnu_debuglink_crc32: Opening and Closing. + (line 275) +* bfd_canonicalize_reloc: Miscellaneous. (line 19) +* bfd_canonicalize_symtab: symbol handling functions. + (line 50) +* bfd_check_format: Formats. (line 21) +* bfd_check_format_matches: Formats. (line 52) +* bfd_check_overflow: typedef arelent. (line 348) +* bfd_close: Opening and Closing. + (line 161) +* bfd_close_all_done: Opening and Closing. + (line 179) +* bfd_coff_backend_data: coff. (line 308) +* bfd_copy_private_bfd_data: Miscellaneous. (line 160) +* bfd_copy_private_header_data: Miscellaneous. (line 142) +* bfd_copy_private_section_data: section prototypes. (line 278) +* bfd_copy_private_symbol_data: symbol handling functions. + (line 140) +* bfd_core_file_failing_command: Core Files. (line 12) +* bfd_core_file_failing_signal: Core Files. (line 21) +* bfd_core_file_pid: Core Files. (line 30) +* bfd_create: Opening and Closing. + (line 198) +* bfd_create_gnu_debuglink_section: Opening and Closing. + (line 387) +* bfd_decode_symclass: symbol handling functions. + (line 111) +* bfd_default_arch_struct: Architectures. (line 545) +* bfd_default_compatible: Architectures. (line 607) +* bfd_default_reloc_type_lookup: howto manager. (line 3524) +* bfd_default_scan: Architectures. (line 616) +* bfd_default_set_arch_mach: Architectures. (line 563) +* bfd_demangle: Miscellaneous. (line 358) +* bfd_emul_get_commonpagesize: Miscellaneous. (line 338) +* bfd_emul_get_maxpagesize: Miscellaneous. (line 318) +* bfd_emul_set_commonpagesize: Miscellaneous. (line 349) +* bfd_emul_set_maxpagesize: Miscellaneous. (line 329) +* bfd_errmsg: Error reporting. (line 67) +* bfd_fdopenr: Opening and Closing. + (line 57) +* bfd_fill_in_gnu_debuglink_section: Opening and Closing. + (line 401) +* bfd_find_target: bfd_target. (line 466) +* bfd_find_version_for_sym: Writing the symbol table. + (line 81) +* bfd_follow_gnu_debugaltlink: Opening and Closing. + (line 367) +* bfd_follow_gnu_debuglink: Opening and Closing. + (line 346) +* bfd_fopen: Opening and Closing. + (line 12) +* bfd_format_string: Formats. (line 79) +* bfd_generic_define_common_symbol: Writing the symbol table. + (line 68) +* bfd_generic_discard_group: section prototypes. (line 304) +* bfd_generic_gc_sections: howto manager. (line 3555) +* bfd_generic_get_relocated_section_contents: howto manager. (line 3585) +* bfd_generic_is_group_section: section prototypes. (line 296) +* bfd_generic_lookup_section_flags: howto manager. (line 3565) +* bfd_generic_merge_sections: howto manager. (line 3575) +* bfd_generic_relax_section: howto manager. (line 3542) +* bfd_get_alt_debug_link_info: Opening and Closing. + (line 300) +* bfd_get_arch: Architectures. (line 574) +* bfd_get_arch_info: Architectures. (line 626) +* bfd_get_arch_size: Miscellaneous. (line 63) +* bfd_get_assert_handler: Error reporting. (line 150) +* bfd_get_debug_link_info: Opening and Closing. + (line 289) +* bfd_get_error: Error reporting. (line 48) +* bfd_get_error_handler: Error reporting. (line 118) +* bfd_get_gp_size: Miscellaneous. (line 106) +* bfd_get_linker_section: section prototypes. (line 36) +* bfd_get_mach: Architectures. (line 582) +* bfd_get_mtime: Miscellaneous. (line 409) +* bfd_get_next_mapent: Archives. (line 58) +* bfd_get_next_section_by_name: section prototypes. (line 26) +* bfd_get_reloc_code_name: howto manager. (line 3533) +* bfd_get_reloc_size: typedef arelent. (line 327) +* bfd_get_reloc_upper_bound: Miscellaneous. (line 9) +* bfd_get_section_by_name: section prototypes. (line 17) +* bfd_get_section_by_name_if: section prototypes. (line 45) +* bfd_get_section_contents: section prototypes. (line 251) +* bfd_get_sign_extend_vma: Miscellaneous. (line 78) +* bfd_get_size <1>: Internal. (line 25) +* bfd_get_size: Miscellaneous. (line 418) +* bfd_get_symtab_upper_bound: symbol handling functions. + (line 6) +* bfd_get_target_info: bfd_target. (line 482) +* bfd_get_unique_section_name: section prototypes. (line 64) +* bfd_h_put_size: Internal. (line 97) +* bfd_hash_allocate: Creating and Freeing a Hash Table. + (line 17) +* bfd_hash_lookup: Looking Up or Entering a String. + (line 6) +* bfd_hash_newfunc: Creating and Freeing a Hash Table. + (line 12) +* bfd_hash_set_default_size: Creating and Freeing a Hash Table. + (line 25) +* bfd_hash_table_free: Creating and Freeing a Hash Table. + (line 21) +* bfd_hash_table_init: Creating and Freeing a Hash Table. + (line 6) +* bfd_hash_table_init_n: Creating and Freeing a Hash Table. + (line 6) +* bfd_hash_traverse: Traversing a Hash Table. + (line 6) +* bfd_hide_sym_by_version: Writing the symbol table. + (line 93) +* bfd_init: Initialization. (line 11) +* bfd_install_relocation: typedef arelent. (line 389) +* bfd_is_local_label: symbol handling functions. + (line 17) +* bfd_is_local_label_name: symbol handling functions. + (line 26) +* bfd_is_target_special_symbol: symbol handling functions. + (line 38) +* bfd_is_undefined_symclass: symbol handling functions. + (line 120) +* bfd_link_split_section: Writing the symbol table. + (line 44) +* bfd_log2: Internal. (line 164) +* bfd_lookup_arch: Architectures. (line 634) +* bfd_make_debug_symbol: symbol handling functions. + (line 102) +* bfd_make_empty_symbol: symbol handling functions. + (line 78) +* bfd_make_readable: Opening and Closing. + (line 225) +* bfd_make_section: section prototypes. (line 143) +* bfd_make_section_anyway: section prototypes. (line 114) +* bfd_make_section_anyway_with_flags: section prototypes. (line 96) +* bfd_make_section_old_way: section prototypes. (line 76) +* bfd_make_section_with_flags: section prototypes. (line 130) +* bfd_make_writable: Opening and Closing. + (line 211) +* bfd_malloc_and_get_section: section prototypes. (line 268) +* bfd_map_over_sections: section prototypes. (line 178) +* bfd_merge_private_bfd_data: Miscellaneous. (line 176) +* bfd_mmap: Miscellaneous. (line 447) +* bfd_octets_per_byte: Architectures. (line 657) +* bfd_open_file: File Caching. (line 52) +* bfd_openr: Opening and Closing. + (line 38) +* bfd_openr_iovec: Opening and Closing. + (line 95) +* bfd_openr_next_archived_file: Archives. (line 84) +* bfd_openstreamr: Opening and Closing. + (line 83) +* bfd_openw: Opening and Closing. + (line 146) +* bfd_perform_relocation: typedef arelent. (line 364) +* bfd_perror: Error reporting. (line 76) +* bfd_print_symbol_vandf: symbol handling functions. + (line 70) +* bfd_printable_arch_mach: Architectures. (line 645) +* bfd_printable_name: Architectures. (line 505) +* bfd_put_size: Internal. (line 22) +* BFD_RELOC_12_PCREL: howto manager. (line 39) +* BFD_RELOC_14: howto manager. (line 31) +* BFD_RELOC_16: howto manager. (line 30) +* BFD_RELOC_16_BASEREL: howto manager. (line 99) +* BFD_RELOC_16_GOT_PCREL: howto manager. (line 52) +* BFD_RELOC_16_GOTOFF: howto manager. (line 55) +* BFD_RELOC_16_PCREL: howto manager. (line 38) +* BFD_RELOC_16_PCREL_S2: howto manager. (line 111) +* BFD_RELOC_16_PLT_PCREL: howto manager. (line 63) +* BFD_RELOC_16_PLTOFF: howto manager. (line 67) +* BFD_RELOC_16C_ABS20: howto manager. (line 2465) +* BFD_RELOC_16C_ABS20_C: howto manager. (line 2466) +* BFD_RELOC_16C_ABS24: howto manager. (line 2467) +* BFD_RELOC_16C_ABS24_C: howto manager. (line 2468) +* BFD_RELOC_16C_DISP04: howto manager. (line 2445) +* BFD_RELOC_16C_DISP04_C: howto manager. (line 2446) +* BFD_RELOC_16C_DISP08: howto manager. (line 2447) +* BFD_RELOC_16C_DISP08_C: howto manager. (line 2448) +* BFD_RELOC_16C_DISP16: howto manager. (line 2449) +* BFD_RELOC_16C_DISP16_C: howto manager. (line 2450) +* BFD_RELOC_16C_DISP24: howto manager. (line 2451) +* BFD_RELOC_16C_DISP24_C: howto manager. (line 2452) +* BFD_RELOC_16C_DISP24a: howto manager. (line 2453) +* BFD_RELOC_16C_DISP24a_C: howto manager. (line 2454) +* BFD_RELOC_16C_IMM04: howto manager. (line 2469) +* BFD_RELOC_16C_IMM04_C: howto manager. (line 2470) +* BFD_RELOC_16C_IMM16: howto manager. (line 2471) +* BFD_RELOC_16C_IMM16_C: howto manager. (line 2472) +* BFD_RELOC_16C_IMM20: howto manager. (line 2473) +* BFD_RELOC_16C_IMM20_C: howto manager. (line 2474) +* BFD_RELOC_16C_IMM24: howto manager. (line 2475) +* BFD_RELOC_16C_IMM24_C: howto manager. (line 2476) +* BFD_RELOC_16C_IMM32: howto manager. (line 2477) +* BFD_RELOC_16C_IMM32_C: howto manager. (line 2478) +* BFD_RELOC_16C_NUM08: howto manager. (line 2439) +* BFD_RELOC_16C_NUM08_C: howto manager. (line 2440) +* BFD_RELOC_16C_NUM16: howto manager. (line 2441) +* BFD_RELOC_16C_NUM16_C: howto manager. (line 2442) +* BFD_RELOC_16C_NUM32: howto manager. (line 2443) +* BFD_RELOC_16C_NUM32_C: howto manager. (line 2444) +* BFD_RELOC_16C_REG04: howto manager. (line 2455) +* BFD_RELOC_16C_REG04_C: howto manager. (line 2456) +* BFD_RELOC_16C_REG04a: howto manager. (line 2457) +* BFD_RELOC_16C_REG04a_C: howto manager. (line 2458) +* BFD_RELOC_16C_REG14: howto manager. (line 2459) +* BFD_RELOC_16C_REG14_C: howto manager. (line 2460) +* BFD_RELOC_16C_REG16: howto manager. (line 2461) +* BFD_RELOC_16C_REG16_C: howto manager. (line 2462) +* BFD_RELOC_16C_REG20: howto manager. (line 2463) +* BFD_RELOC_16C_REG20_C: howto manager. (line 2464) +* BFD_RELOC_23_PCREL_S2: howto manager. (line 112) +* BFD_RELOC_24: howto manager. (line 29) +* BFD_RELOC_24_PCREL: howto manager. (line 37) +* BFD_RELOC_24_PLT_PCREL: howto manager. (line 62) +* BFD_RELOC_26: howto manager. (line 28) +* BFD_RELOC_32: howto manager. (line 27) +* BFD_RELOC_32_BASEREL: howto manager. (line 98) +* BFD_RELOC_32_GOT_PCREL: howto manager. (line 51) +* BFD_RELOC_32_GOTOFF: howto manager. (line 54) +* BFD_RELOC_32_PCREL: howto manager. (line 36) +* BFD_RELOC_32_PCREL_S2: howto manager. (line 110) +* BFD_RELOC_32_PLT_PCREL: howto manager. (line 61) +* BFD_RELOC_32_PLTOFF: howto manager. (line 66) +* BFD_RELOC_32_SECREL: howto manager. (line 48) +* BFD_RELOC_386_COPY: howto manager. (line 583) +* BFD_RELOC_386_GLOB_DAT: howto manager. (line 584) +* BFD_RELOC_386_GOT32: howto manager. (line 581) +* BFD_RELOC_386_GOTOFF: howto manager. (line 587) +* BFD_RELOC_386_GOTPC: howto manager. (line 588) +* BFD_RELOC_386_IRELATIVE: howto manager. (line 604) +* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 585) +* BFD_RELOC_386_PLT32: howto manager. (line 582) +* BFD_RELOC_386_RELATIVE: howto manager. (line 586) +* BFD_RELOC_386_TLS_DESC: howto manager. (line 603) +* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 602) +* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 598) +* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 599) +* BFD_RELOC_386_TLS_GD: howto manager. (line 593) +* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 601) +* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 591) +* BFD_RELOC_386_TLS_IE: howto manager. (line 590) +* BFD_RELOC_386_TLS_IE_32: howto manager. (line 596) +* BFD_RELOC_386_TLS_LDM: howto manager. (line 594) +* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 595) +* BFD_RELOC_386_TLS_LE: howto manager. (line 592) +* BFD_RELOC_386_TLS_LE_32: howto manager. (line 597) +* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 589) +* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 600) +* BFD_RELOC_390_12: howto manager. (line 2048) +* BFD_RELOC_390_20: howto manager. (line 2160) +* BFD_RELOC_390_COPY: howto manager. (line 2057) +* BFD_RELOC_390_GLOB_DAT: howto manager. (line 2060) +* BFD_RELOC_390_GOT12: howto manager. (line 2051) +* BFD_RELOC_390_GOT16: howto manager. (line 2072) +* BFD_RELOC_390_GOT20: howto manager. (line 2161) +* BFD_RELOC_390_GOT64: howto manager. (line 2102) +* BFD_RELOC_390_GOTENT: howto manager. (line 2108) +* BFD_RELOC_390_GOTOFF64: howto manager. (line 2111) +* BFD_RELOC_390_GOTPC: howto manager. (line 2069) +* BFD_RELOC_390_GOTPCDBL: howto manager. (line 2099) +* BFD_RELOC_390_GOTPLT12: howto manager. (line 2114) +* BFD_RELOC_390_GOTPLT16: howto manager. (line 2117) +* BFD_RELOC_390_GOTPLT20: howto manager. (line 2162) +* BFD_RELOC_390_GOTPLT32: howto manager. (line 2120) +* BFD_RELOC_390_GOTPLT64: howto manager. (line 2123) +* BFD_RELOC_390_GOTPLTENT: howto manager. (line 2126) +* BFD_RELOC_390_IRELATIVE: howto manager. (line 2166) +* BFD_RELOC_390_JMP_SLOT: howto manager. (line 2063) +* BFD_RELOC_390_PC12DBL: howto manager. (line 2075) +* BFD_RELOC_390_PC16DBL: howto manager. (line 2081) +* BFD_RELOC_390_PC24DBL: howto manager. (line 2087) +* BFD_RELOC_390_PC32DBL: howto manager. (line 2093) +* BFD_RELOC_390_PLT12DBL: howto manager. (line 2078) +* BFD_RELOC_390_PLT16DBL: howto manager. (line 2084) +* BFD_RELOC_390_PLT24DBL: howto manager. (line 2090) +* BFD_RELOC_390_PLT32: howto manager. (line 2054) +* BFD_RELOC_390_PLT32DBL: howto manager. (line 2096) +* BFD_RELOC_390_PLT64: howto manager. (line 2105) +* BFD_RELOC_390_PLTOFF16: howto manager. (line 2129) +* BFD_RELOC_390_PLTOFF32: howto manager. (line 2132) +* BFD_RELOC_390_PLTOFF64: howto manager. (line 2135) +* BFD_RELOC_390_RELATIVE: howto manager. (line 2066) +* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 2155) +* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 2156) +* BFD_RELOC_390_TLS_GD32: howto manager. (line 2141) +* BFD_RELOC_390_TLS_GD64: howto manager. (line 2142) +* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 2139) +* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 2143) +* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 2163) +* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 2144) +* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 2145) +* BFD_RELOC_390_TLS_IE32: howto manager. (line 2148) +* BFD_RELOC_390_TLS_IE64: howto manager. (line 2149) +* BFD_RELOC_390_TLS_IEENT: howto manager. (line 2150) +* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 2140) +* BFD_RELOC_390_TLS_LDM32: howto manager. (line 2146) +* BFD_RELOC_390_TLS_LDM64: howto manager. (line 2147) +* BFD_RELOC_390_TLS_LDO32: howto manager. (line 2153) +* BFD_RELOC_390_TLS_LDO64: howto manager. (line 2154) +* BFD_RELOC_390_TLS_LE32: howto manager. (line 2151) +* BFD_RELOC_390_TLS_LE64: howto manager. (line 2152) +* BFD_RELOC_390_TLS_LOAD: howto manager. (line 2138) +* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 2157) +* BFD_RELOC_64: howto manager. (line 26) +* BFD_RELOC_64_PCREL: howto manager. (line 35) +* BFD_RELOC_64_PLT_PCREL: howto manager. (line 60) +* BFD_RELOC_64_PLTOFF: howto manager. (line 65) +* BFD_RELOC_68K_GLOB_DAT: howto manager. (line 78) +* BFD_RELOC_68K_JMP_SLOT: howto manager. (line 79) +* BFD_RELOC_68K_RELATIVE: howto manager. (line 80) +* BFD_RELOC_68K_TLS_GD16: howto manager. (line 82) +* BFD_RELOC_68K_TLS_GD32: howto manager. (line 81) +* BFD_RELOC_68K_TLS_GD8: howto manager. (line 83) +* BFD_RELOC_68K_TLS_IE16: howto manager. (line 91) +* BFD_RELOC_68K_TLS_IE32: howto manager. (line 90) +* BFD_RELOC_68K_TLS_IE8: howto manager. (line 92) +* BFD_RELOC_68K_TLS_LDM16: howto manager. (line 85) +* BFD_RELOC_68K_TLS_LDM32: howto manager. (line 84) +* BFD_RELOC_68K_TLS_LDM8: howto manager. (line 86) +* BFD_RELOC_68K_TLS_LDO16: howto manager. (line 88) +* BFD_RELOC_68K_TLS_LDO32: howto manager. (line 87) +* BFD_RELOC_68K_TLS_LDO8: howto manager. (line 89) +* BFD_RELOC_68K_TLS_LE16: howto manager. (line 94) +* BFD_RELOC_68K_TLS_LE32: howto manager. (line 93) +* BFD_RELOC_68K_TLS_LE8: howto manager. (line 95) +* BFD_RELOC_8: howto manager. (line 32) +* BFD_RELOC_860_COPY: howto manager. (line 2593) +* BFD_RELOC_860_GLOB_DAT: howto manager. (line 2594) +* BFD_RELOC_860_HAGOT: howto manager. (line 2619) +* BFD_RELOC_860_HAGOTOFF: howto manager. (line 2620) +* BFD_RELOC_860_HAPC: howto manager. (line 2621) +* BFD_RELOC_860_HIGH: howto manager. (line 2622) +* BFD_RELOC_860_HIGHADJ: howto manager. (line 2618) +* BFD_RELOC_860_HIGOT: howto manager. (line 2623) +* BFD_RELOC_860_HIGOTOFF: howto manager. (line 2624) +* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 2595) +* BFD_RELOC_860_LOGOT0: howto manager. (line 2607) +* BFD_RELOC_860_LOGOT1: howto manager. (line 2609) +* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 2611) +* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 2613) +* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 2615) +* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 2616) +* BFD_RELOC_860_LOPC: howto manager. (line 2617) +* BFD_RELOC_860_LOW0: howto manager. (line 2600) +* BFD_RELOC_860_LOW1: howto manager. (line 2602) +* BFD_RELOC_860_LOW2: howto manager. (line 2604) +* BFD_RELOC_860_LOW3: howto manager. (line 2606) +* BFD_RELOC_860_PC16: howto manager. (line 2599) +* BFD_RELOC_860_PC26: howto manager. (line 2597) +* BFD_RELOC_860_PLT26: howto manager. (line 2598) +* BFD_RELOC_860_RELATIVE: howto manager. (line 2596) +* BFD_RELOC_860_SPGOT0: howto manager. (line 2608) +* BFD_RELOC_860_SPGOT1: howto manager. (line 2610) +* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 2612) +* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 2614) +* BFD_RELOC_860_SPLIT0: howto manager. (line 2601) +* BFD_RELOC_860_SPLIT1: howto manager. (line 2603) +* BFD_RELOC_860_SPLIT2: howto manager. (line 2605) +* BFD_RELOC_8_BASEREL: howto manager. (line 103) +* BFD_RELOC_8_FFnn: howto manager. (line 107) +* BFD_RELOC_8_GOT_PCREL: howto manager. (line 53) +* BFD_RELOC_8_GOTOFF: howto manager. (line 59) +* BFD_RELOC_8_PCREL: howto manager. (line 40) +* BFD_RELOC_8_PLT_PCREL: howto manager. (line 64) +* BFD_RELOC_8_PLTOFF: howto manager. (line 71) +* BFD_RELOC_AARCH64_16: howto manager. (line 3011) +* BFD_RELOC_AARCH64_16_PCREL: howto manager. (line 3018) +* BFD_RELOC_AARCH64_32: howto manager. (line 3010) +* BFD_RELOC_AARCH64_32_PCREL: howto manager. (line 3017) +* BFD_RELOC_AARCH64_64: howto manager. (line 3009) +* BFD_RELOC_AARCH64_64_PCREL: howto manager. (line 3016) +* BFD_RELOC_AARCH64_ADD_LO12: howto manager. (line 3083) +* BFD_RELOC_AARCH64_ADR_GOT_PAGE: howto manager. (line 3140) +* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL: howto manager. (line 3078) +* BFD_RELOC_AARCH64_ADR_HI21_PCREL: howto manager. (line 3074) +* BFD_RELOC_AARCH64_ADR_LO21_PCREL: howto manager. (line 3070) +* BFD_RELOC_AARCH64_BRANCH19: howto manager. (line 3098) +* BFD_RELOC_AARCH64_CALL26: howto manager. (line 3108) +* BFD_RELOC_AARCH64_COPY: howto manager. (line 3241) +* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP: howto manager. (line 3275) +* BFD_RELOC_AARCH64_GLOB_DAT: howto manager. (line 3244) +* BFD_RELOC_AARCH64_GOT_LD_PREL19: howto manager. (line 3133) +* BFD_RELOC_AARCH64_IRELATIVE: howto manager. (line 3265) +* BFD_RELOC_AARCH64_JUMP26: howto manager. (line 3103) +* BFD_RELOC_AARCH64_JUMP_SLOT: howto manager. (line 3247) +* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC: howto manager. (line 3150) +* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: howto manager. (line 3145) +* BFD_RELOC_AARCH64_LD_GOT_LO12_NC: howto manager. (line 3284) +* BFD_RELOC_AARCH64_LD_LO19_PCREL: howto manager. (line 3065) +* BFD_RELOC_AARCH64_LDST128_LO12: howto manager. (line 3128) +* BFD_RELOC_AARCH64_LDST16_LO12: howto manager. (line 3113) +* BFD_RELOC_AARCH64_LDST32_LO12: howto manager. (line 3118) +* BFD_RELOC_AARCH64_LDST64_LO12: howto manager. (line 3123) +* BFD_RELOC_AARCH64_LDST8_LO12: howto manager. (line 3088) +* BFD_RELOC_AARCH64_LDST_LO12: howto manager. (line 3279) +* BFD_RELOC_AARCH64_MOVW_G0: howto manager. (line 3022) +* BFD_RELOC_AARCH64_MOVW_G0_NC: howto manager. (line 3026) +* BFD_RELOC_AARCH64_MOVW_G0_S: howto manager. (line 3050) +* BFD_RELOC_AARCH64_MOVW_G1: howto manager. (line 3030) +* BFD_RELOC_AARCH64_MOVW_G1_NC: howto manager. (line 3034) +* BFD_RELOC_AARCH64_MOVW_G1_S: howto manager. (line 3055) +* BFD_RELOC_AARCH64_MOVW_G2: howto manager. (line 3038) +* BFD_RELOC_AARCH64_MOVW_G2_NC: howto manager. (line 3042) +* BFD_RELOC_AARCH64_MOVW_G2_S: howto manager. (line 3060) +* BFD_RELOC_AARCH64_MOVW_G3: howto manager. (line 3046) +* BFD_RELOC_AARCH64_NONE: howto manager. (line 3006) +* BFD_RELOC_AARCH64_RELATIVE: howto manager. (line 3250) +* BFD_RELOC_AARCH64_RELOC_END: howto manager. (line 3268) +* BFD_RELOC_AARCH64_RELOC_START: howto manager. (line 3000) +* BFD_RELOC_AARCH64_TLS_DTPMOD: howto manager. (line 3253) +* BFD_RELOC_AARCH64_TLS_DTPREL: howto manager. (line 3256) +* BFD_RELOC_AARCH64_TLS_TPREL: howto manager. (line 3259) +* BFD_RELOC_AARCH64_TLSDESC: howto manager. (line 3262) +* BFD_RELOC_AARCH64_TLSDESC_ADD: howto manager. (line 3235) +* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager. (line 3223) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: howto manager. (line 3214) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: howto manager. (line 3211) +* BFD_RELOC_AARCH64_TLSDESC_CALL: howto manager. (line 3238) +* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager. (line 3220) +* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager. (line 3217) +* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC: howto manager. (line 3292) +* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19: howto manager. (line 3208) +* BFD_RELOC_AARCH64_TLSDESC_LDR: howto manager. (line 3232) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC: howto manager. (line 3229) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G1: howto manager. (line 3226) +* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: howto manager. (line 3161) +* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21: howto manager. (line 3155) +* BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager. + (line 3172) +* BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager. + (line 3178) +* BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager. + (line 3175) +* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager. + (line 3288) +* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 3181) +* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager. + (line 3169) +* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager. (line 3166) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager. (line 3199) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager. (line 3202) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager. (line 3205) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager. (line 3193) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager. (line 3196) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager. (line 3187) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager. (line 3190) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager. (line 3184) +* BFD_RELOC_AARCH64_TSTBR14: howto manager. (line 3093) +* BFD_RELOC_ALPHA_BOH: howto manager. (line 323) +* BFD_RELOC_ALPHA_BRSGP: howto manager. (line 306) +* BFD_RELOC_ALPHA_BSR: howto manager. (line 315) +* BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 297) +* BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 329) +* BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 334) +* BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 331) +* BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 332) +* BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 333) +* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 262) +* BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 330) +* BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 335) +* BFD_RELOC_ALPHA_GPDISP: howto manager. (line 256) +* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 242) +* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 250) +* BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 301) +* BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 302) +* BFD_RELOC_ALPHA_HINT: howto manager. (line 288) +* BFD_RELOC_ALPHA_LDA: howto manager. (line 319) +* BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 293) +* BFD_RELOC_ALPHA_LITERAL: howto manager. (line 261) +* BFD_RELOC_ALPHA_LITUSE: howto manager. (line 263) +* BFD_RELOC_ALPHA_NOP: howto manager. (line 311) +* BFD_RELOC_ALPHA_TLSGD: howto manager. (line 327) +* BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 328) +* BFD_RELOC_ALPHA_TPREL16: howto manager. (line 339) +* BFD_RELOC_ALPHA_TPREL64: howto manager. (line 336) +* BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 337) +* BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 338) +* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 1056) +* BFD_RELOC_ARC_B26: howto manager. (line 1061) +* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 942) +* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 928) +* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 892) +* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 891) +* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 894) +* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 893) +* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 895) +* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 906) +* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 905) +* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 908) +* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 907) +* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 909) +* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 938) +* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 939) +* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 866) +* BFD_RELOC_ARM_GOT32: howto manager. (line 867) +* BFD_RELOC_ARM_GOT_PREL: howto manager. (line 872) +* BFD_RELOC_ARM_GOTOFF: howto manager. (line 870) +* BFD_RELOC_ARM_GOTPC: howto manager. (line 871) +* BFD_RELOC_ARM_HVC: howto manager. (line 935) +* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 949) +* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 927) +* BFD_RELOC_ARM_IN_POOL: howto manager. (line 945) +* BFD_RELOC_ARM_IRELATIVE: howto manager. (line 924) +* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 865) +* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 902) +* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 903) +* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 904) +* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 916) +* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 917) +* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 918) +* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 943) +* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 896) +* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 897) +* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 898) +* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 910) +* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 911) +* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 912) +* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 899) +* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 900) +* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 901) +* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 913) +* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 914) +* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 915) +* BFD_RELOC_ARM_LITERAL: howto manager. (line 944) +* BFD_RELOC_ARM_MOVT: howto manager. (line 856) +* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 858) +* BFD_RELOC_ARM_MOVW: howto manager. (line 855) +* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 857) +* BFD_RELOC_ARM_MULTI: howto manager. (line 937) +* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 829) +* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 946) +* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 800) +* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 796) +* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 810) +* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 814) +* BFD_RELOC_ARM_PLT32: howto manager. (line 868) +* BFD_RELOC_ARM_PREL31: howto manager. (line 852) +* BFD_RELOC_ARM_RELATIVE: howto manager. (line 869) +* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 841) +* BFD_RELOC_ARM_SBREL32: howto manager. (line 844) +* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 933) +* BFD_RELOC_ARM_SMC: howto manager. (line 934) +* BFD_RELOC_ARM_SWI: howto manager. (line 936) +* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 930) +* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 932) +* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 940) +* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 941) +* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 931) +* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 929) +* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 948) +* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 947) +* BFD_RELOC_ARM_TARGET1: howto manager. (line 837) +* BFD_RELOC_ARM_TARGET2: howto manager. (line 847) +* BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 885) +* BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 887) +* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 950) +* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 951) +* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 860) +* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 862) +* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 859) +* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 861) +* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 833) +* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 952) +* BFD_RELOC_ARM_TLS_CALL: howto manager. (line 884) +* BFD_RELOC_ARM_TLS_DESC: howto manager. (line 888) +* BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 886) +* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 879) +* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 878) +* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 875) +* BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 883) +* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 881) +* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 877) +* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 876) +* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 882) +* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 880) +* BFD_RELOC_ARM_V4BX: howto manager. (line 921) +* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1851) +* BFD_RELOC_AVR_16_PM: howto manager. (line 1855) +* BFD_RELOC_AVR_6: howto manager. (line 1942) +* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1946) +* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1847) +* BFD_RELOC_AVR_8_HI: howto manager. (line 1954) +* BFD_RELOC_AVR_8_HLO: howto manager. (line 1958) +* BFD_RELOC_AVR_8_LO: howto manager. (line 1950) +* BFD_RELOC_AVR_CALL: howto manager. (line 1934) +* BFD_RELOC_AVR_DIFF16: howto manager. (line 1963) +* BFD_RELOC_AVR_DIFF32: howto manager. (line 1964) +* BFD_RELOC_AVR_DIFF8: howto manager. (line 1962) +* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1867) +* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1886) +* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1915) +* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1929) +* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1863) +* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1909) +* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1881) +* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1905) +* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1924) +* BFD_RELOC_AVR_LDI: howto manager. (line 1938) +* BFD_RELOC_AVR_LDS_STS_16: howto manager. (line 1972) +* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1859) +* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1899) +* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1876) +* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1895) +* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1920) +* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1872) +* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1891) +* BFD_RELOC_AVR_PORT5: howto manager. (line 1980) +* BFD_RELOC_AVR_PORT6: howto manager. (line 1976) +* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 1081) +* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 1084) +* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 1087) +* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 1090) +* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 1069) +* BFD_RELOC_BFIN_16_IMM: howto manager. (line 1066) +* BFD_RELOC_BFIN_16_LOW: howto manager. (line 1078) +* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 1093) +* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 1096) +* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 1072) +* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 1075) +* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 1102) +* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 1103) +* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 1104) +* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 1105) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 1107) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 1108) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 1109) +* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 1106) +* BFD_RELOC_BFIN_GOT: howto manager. (line 1115) +* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 1099) +* BFD_RELOC_BFIN_GOTHI: howto manager. (line 1100) +* BFD_RELOC_BFIN_GOTLO: howto manager. (line 1101) +* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 1110) +* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1111) +* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1112) +* BFD_RELOC_BFIN_PLTPC: howto manager. (line 1118) +* BFD_RELOC_C6000_ABS_H16: howto manager. (line 1670) +* BFD_RELOC_C6000_ABS_L16: howto manager. (line 1669) +* BFD_RELOC_C6000_ABS_S16: howto manager. (line 1668) +* BFD_RELOC_C6000_ALIGN: howto manager. (line 1691) +* BFD_RELOC_C6000_COPY: howto manager. (line 1686) +* BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1684) +* BFD_RELOC_C6000_EHTYPE: howto manager. (line 1688) +* BFD_RELOC_C6000_FPHEAD: howto manager. (line 1692) +* BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1687) +* BFD_RELOC_C6000_NOCMP: howto manager. (line 1693) +* BFD_RELOC_C6000_PCR_H16: howto manager. (line 1689) +* BFD_RELOC_C6000_PCR_L16: howto manager. (line 1690) +* BFD_RELOC_C6000_PCR_S10: howto manager. (line 1666) +* BFD_RELOC_C6000_PCR_S12: howto manager. (line 1665) +* BFD_RELOC_C6000_PCR_S21: howto manager. (line 1664) +* BFD_RELOC_C6000_PCR_S7: howto manager. (line 1667) +* BFD_RELOC_C6000_PREL31: howto manager. (line 1685) +* BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1683) +* BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1682) +* BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1681) +* BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1678) +* BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1679) +* BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1680) +* BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1675) +* BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1676) +* BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1677) +* BFD_RELOC_C6000_SBR_S16: howto manager. (line 1674) +* BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1671) +* BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1672) +* BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1673) +* bfd_reloc_code_type: howto manager. (line 10) +* BFD_RELOC_CR16_ABS20: howto manager. (line 2493) +* BFD_RELOC_CR16_ABS24: howto manager. (line 2494) +* BFD_RELOC_CR16_DISP16: howto manager. (line 2504) +* BFD_RELOC_CR16_DISP20: howto manager. (line 2505) +* BFD_RELOC_CR16_DISP24: howto manager. (line 2506) +* BFD_RELOC_CR16_DISP24a: howto manager. (line 2507) +* BFD_RELOC_CR16_DISP4: howto manager. (line 2502) +* BFD_RELOC_CR16_DISP8: howto manager. (line 2503) +* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2513) +* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2511) +* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2512) +* BFD_RELOC_CR16_IMM16: howto manager. (line 2497) +* BFD_RELOC_CR16_IMM20: howto manager. (line 2498) +* BFD_RELOC_CR16_IMM24: howto manager. (line 2499) +* BFD_RELOC_CR16_IMM32: howto manager. (line 2500) +* BFD_RELOC_CR16_IMM32a: howto manager. (line 2501) +* BFD_RELOC_CR16_IMM4: howto manager. (line 2495) +* BFD_RELOC_CR16_IMM8: howto manager. (line 2496) +* BFD_RELOC_CR16_NUM16: howto manager. (line 2482) +* BFD_RELOC_CR16_NUM32: howto manager. (line 2483) +* BFD_RELOC_CR16_NUM32a: howto manager. (line 2484) +* BFD_RELOC_CR16_NUM8: howto manager. (line 2481) +* BFD_RELOC_CR16_REGREL0: howto manager. (line 2485) +* BFD_RELOC_CR16_REGREL14: howto manager. (line 2488) +* BFD_RELOC_CR16_REGREL14a: howto manager. (line 2489) +* BFD_RELOC_CR16_REGREL16: howto manager. (line 2490) +* BFD_RELOC_CR16_REGREL20: howto manager. (line 2491) +* BFD_RELOC_CR16_REGREL20a: howto manager. (line 2492) +* BFD_RELOC_CR16_REGREL4: howto manager. (line 2486) +* BFD_RELOC_CR16_REGREL4a: howto manager. (line 2487) +* BFD_RELOC_CR16_SWITCH16: howto manager. (line 2509) +* BFD_RELOC_CR16_SWITCH32: howto manager. (line 2510) +* BFD_RELOC_CR16_SWITCH8: howto manager. (line 2508) +* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2584) +* BFD_RELOC_CRIS_16_GOT: howto manager. (line 2560) +* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2580) +* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2586) +* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2566) +* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2588) +* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2583) +* BFD_RELOC_CRIS_32_GD: howto manager. (line 2581) +* BFD_RELOC_CRIS_32_GOT: howto manager. (line 2557) +* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2579) +* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2585) +* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2563) +* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2569) +* BFD_RELOC_CRIS_32_IE: howto manager. (line 2590) +* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2572) +* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2575) +* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2587) +* BFD_RELOC_CRIS_BDISP8: howto manager. (line 2538) +* BFD_RELOC_CRIS_COPY: howto manager. (line 2551) +* BFD_RELOC_CRIS_DTP: howto manager. (line 2582) +* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2589) +* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2552) +* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2553) +* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2546) +* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2554) +* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2544) +* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2540) +* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2542) +* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2545) +* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2547) +* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2539) +* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2541) +* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2543) +* BFD_RELOC_CRX_ABS16: howto manager. (line 2526) +* BFD_RELOC_CRX_ABS32: howto manager. (line 2527) +* BFD_RELOC_CRX_IMM16: howto manager. (line 2531) +* BFD_RELOC_CRX_IMM32: howto manager. (line 2532) +* BFD_RELOC_CRX_NUM16: howto manager. (line 2529) +* BFD_RELOC_CRX_NUM32: howto manager. (line 2530) +* BFD_RELOC_CRX_NUM8: howto manager. (line 2528) +* BFD_RELOC_CRX_REGREL12: howto manager. (line 2522) +* BFD_RELOC_CRX_REGREL22: howto manager. (line 2523) +* BFD_RELOC_CRX_REGREL28: howto manager. (line 2524) +* BFD_RELOC_CRX_REGREL32: howto manager. (line 2525) +* BFD_RELOC_CRX_REL16: howto manager. (line 2519) +* BFD_RELOC_CRX_REL24: howto manager. (line 2520) +* BFD_RELOC_CRX_REL32: howto manager. (line 2521) +* BFD_RELOC_CRX_REL4: howto manager. (line 2516) +* BFD_RELOC_CRX_REL8: howto manager. (line 2517) +* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2518) +* BFD_RELOC_CRX_SWITCH16: howto manager. (line 2534) +* BFD_RELOC_CRX_SWITCH32: howto manager. (line 2535) +* BFD_RELOC_CRX_SWITCH8: howto manager. (line 2533) +* BFD_RELOC_CTOR: howto manager. (line 790) +* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1185) +* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1181) +* BFD_RELOC_D10V_18: howto manager. (line 1190) +* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1193) +* BFD_RELOC_D30V_15: howto manager. (line 1208) +* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1212) +* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1216) +* BFD_RELOC_D30V_21: howto manager. (line 1221) +* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1225) +* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1229) +* BFD_RELOC_D30V_32: howto manager. (line 1234) +* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1237) +* BFD_RELOC_D30V_6: howto manager. (line 1196) +* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1199) +* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1203) +* BFD_RELOC_DLX_HI16_S: howto manager. (line 1240) +* BFD_RELOC_DLX_JMP26: howto manager. (line 1246) +* BFD_RELOC_DLX_LO16: howto manager. (line 1243) +* BFD_RELOC_EPIPHANY_HIGH: howto manager. (line 3494) +* BFD_RELOC_EPIPHANY_IMM11: howto manager. (line 3503) +* BFD_RELOC_EPIPHANY_IMM8: howto manager. (line 3507) +* BFD_RELOC_EPIPHANY_LOW: howto manager. (line 3497) +* BFD_RELOC_EPIPHANY_SIMM11: howto manager. (line 3500) +* BFD_RELOC_EPIPHANY_SIMM24: howto manager. (line 3491) +* BFD_RELOC_EPIPHANY_SIMM8: howto manager. (line 3488) +* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1715) +* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1723) +* BFD_RELOC_FR30_20: howto manager. (line 1699) +* BFD_RELOC_FR30_48: howto manager. (line 1696) +* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1703) +* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1707) +* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1711) +* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1719) +* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 497) +* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 498) +* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 499) +* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 500) +* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 502) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 503) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 504) +* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 501) +* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 508) +* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 521) +* BFD_RELOC_FRV_GOT12: howto manager. (line 494) +* BFD_RELOC_FRV_GOTHI: howto manager. (line 495) +* BFD_RELOC_FRV_GOTLO: howto manager. (line 496) +* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 505) +* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 506) +* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 507) +* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 510) +* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 511) +* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 512) +* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 516) +* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 517) +* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 518) +* BFD_RELOC_FRV_GPREL12: howto manager. (line 489) +* BFD_RELOC_FRV_GPREL32: howto manager. (line 491) +* BFD_RELOC_FRV_GPRELHI: howto manager. (line 492) +* BFD_RELOC_FRV_GPRELLO: howto manager. (line 493) +* BFD_RELOC_FRV_GPRELU12: howto manager. (line 490) +* BFD_RELOC_FRV_HI16: howto manager. (line 488) +* BFD_RELOC_FRV_LABEL16: howto manager. (line 485) +* BFD_RELOC_FRV_LABEL24: howto manager. (line 486) +* BFD_RELOC_FRV_LO16: howto manager. (line 487) +* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 520) +* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 509) +* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 523) +* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 513) +* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 514) +* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 515) +* BFD_RELOC_FRV_TLSOFF: howto manager. (line 519) +* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 522) +* BFD_RELOC_GPREL16: howto manager. (line 125) +* BFD_RELOC_GPREL32: howto manager. (line 126) +* BFD_RELOC_H8_DIR16A8: howto manager. (line 2653) +* BFD_RELOC_H8_DIR16R8: howto manager. (line 2654) +* BFD_RELOC_H8_DIR24A8: howto manager. (line 2655) +* BFD_RELOC_H8_DIR24R8: howto manager. (line 2656) +* BFD_RELOC_H8_DIR32A16: howto manager. (line 2657) +* BFD_RELOC_H8_DISP32A16: howto manager. (line 2658) +* BFD_RELOC_HI16: howto manager. (line 352) +* BFD_RELOC_HI16_BASEREL: howto manager. (line 101) +* BFD_RELOC_HI16_GOTOFF: howto manager. (line 57) +* BFD_RELOC_HI16_PCREL: howto manager. (line 364) +* BFD_RELOC_HI16_PLTOFF: howto manager. (line 69) +* BFD_RELOC_HI16_S: howto manager. (line 355) +* BFD_RELOC_HI16_S_BASEREL: howto manager. (line 102) +* BFD_RELOC_HI16_S_GOTOFF: howto manager. (line 58) +* BFD_RELOC_HI16_S_PCREL: howto manager. (line 367) +* BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 70) +* BFD_RELOC_HI22: howto manager. (line 120) +* BFD_RELOC_I370_D12: howto manager. (line 787) +* BFD_RELOC_I960_CALLJ: howto manager. (line 132) +* BFD_RELOC_IA64_COPY: howto manager. (line 2313) +* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 2258) +* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 2257) +* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 2260) +* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 2259) +* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 2323) +* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 2322) +* BFD_RELOC_IA64_DTPREL14: howto manager. (line 2325) +* BFD_RELOC_IA64_DTPREL22: howto manager. (line 2326) +* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 2329) +* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 2328) +* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 2327) +* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 2331) +* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 2330) +* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 2275) +* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 2274) +* BFD_RELOC_IA64_FPTR64I: howto manager. (line 2273) +* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 2277) +* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 2276) +* BFD_RELOC_IA64_GPREL22: howto manager. (line 2261) +* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 2264) +* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 2263) +* BFD_RELOC_IA64_GPREL64I: howto manager. (line 2262) +* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 2266) +* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 2265) +* BFD_RELOC_IA64_IMM14: howto manager. (line 2254) +* BFD_RELOC_IA64_IMM22: howto manager. (line 2255) +* BFD_RELOC_IA64_IMM64: howto manager. (line 2256) +* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 2312) +* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 2311) +* BFD_RELOC_IA64_LDXMOV: howto manager. (line 2315) +* BFD_RELOC_IA64_LTOFF22: howto manager. (line 2267) +* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 2314) +* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 2268) +* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 2324) +* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 2332) +* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 2289) +* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 2292) +* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 2291) +* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 2290) +* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 2294) +* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 2293) +* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 2321) +* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 2308) +* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 2307) +* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 2310) +* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 2309) +* BFD_RELOC_IA64_PCREL21B: howto manager. (line 2278) +* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 2279) +* BFD_RELOC_IA64_PCREL21F: howto manager. (line 2281) +* BFD_RELOC_IA64_PCREL21M: howto manager. (line 2280) +* BFD_RELOC_IA64_PCREL22: howto manager. (line 2282) +* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 2286) +* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 2285) +* BFD_RELOC_IA64_PCREL60B: howto manager. (line 2283) +* BFD_RELOC_IA64_PCREL64I: howto manager. (line 2284) +* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 2288) +* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 2287) +* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 2269) +* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 2270) +* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 2272) +* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 2271) +* BFD_RELOC_IA64_REL32LSB: howto manager. (line 2304) +* BFD_RELOC_IA64_REL32MSB: howto manager. (line 2303) +* BFD_RELOC_IA64_REL64LSB: howto manager. (line 2306) +* BFD_RELOC_IA64_REL64MSB: howto manager. (line 2305) +* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 2300) +* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 2299) +* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 2302) +* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 2301) +* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 2296) +* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 2295) +* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 2298) +* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 2297) +* BFD_RELOC_IA64_TPREL14: howto manager. (line 2316) +* BFD_RELOC_IA64_TPREL22: howto manager. (line 2317) +* BFD_RELOC_IA64_TPREL64I: howto manager. (line 2318) +* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 2320) +* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 2319) +* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 2206) +* BFD_RELOC_IP2K_BANK: howto manager. (line 2203) +* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 2214) +* BFD_RELOC_IP2K_FR9: howto manager. (line 2200) +* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 2227) +* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 2213) +* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 2218) +* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 2212) +* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 2217) +* BFD_RELOC_IP2K_PAGE3: howto manager. (line 2209) +* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 2221) +* BFD_RELOC_IP2K_TEXT: howto manager. (line 2224) +* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2764) +* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2765) +* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2766) +* BFD_RELOC_LM32_16_GOT: howto manager. (line 2871) +* BFD_RELOC_LM32_BRANCH: howto manager. (line 2870) +* BFD_RELOC_LM32_CALL: howto manager. (line 2869) +* BFD_RELOC_LM32_COPY: howto manager. (line 2874) +* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2875) +* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2872) +* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2873) +* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2876) +* BFD_RELOC_LM32_RELATIVE: howto manager. (line 2877) +* BFD_RELOC_LO10: howto manager. (line 121) +* BFD_RELOC_LO16: howto manager. (line 361) +* BFD_RELOC_LO16_BASEREL: howto manager. (line 100) +* BFD_RELOC_LO16_GOTOFF: howto manager. (line 56) +* BFD_RELOC_LO16_PCREL: howto manager. (line 370) +* BFD_RELOC_LO16_PLTOFF: howto manager. (line 68) +* BFD_RELOC_M32C_HI8: howto manager. (line 1249) +* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1251) +* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1252) +* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1250) +* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1259) +* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1263) +* BFD_RELOC_M32R_24: howto manager. (line 1255) +* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1266) +* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1285) +* BFD_RELOC_M32R_COPY: howto manager. (line 1286) +* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1287) +* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1296) +* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1295) +* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1297) +* BFD_RELOC_M32R_GOT24: howto manager. (line 1284) +* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1290) +* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1292) +* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1291) +* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1293) +* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1294) +* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1299) +* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1298) +* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1300) +* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1273) +* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1269) +* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1288) +* BFD_RELOC_M32R_LO16: howto manager. (line 1277) +* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1289) +* BFD_RELOC_M32R_SDA16: howto manager. (line 1280) +* BFD_RELOC_M68HC11_24: howto manager. (line 2368) +* BFD_RELOC_M68HC11_3B: howto manager. (line 2343) +* BFD_RELOC_M68HC11_HI8: howto manager. (line 2335) +* BFD_RELOC_M68HC11_LO16: howto manager. (line 2357) +* BFD_RELOC_M68HC11_LO8: howto manager. (line 2339) +* BFD_RELOC_M68HC11_PAGE: howto manager. (line 2363) +* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 2352) +* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 2346) +* BFD_RELOC_M68HC12_10_PCREL: howto manager. (line 2428) +* BFD_RELOC_M68HC12_16B: howto manager. (line 2422) +* BFD_RELOC_M68HC12_5B: howto manager. (line 2374) +* BFD_RELOC_M68HC12_9_PCREL: howto manager. (line 2425) +* BFD_RELOC_M68HC12_9B: howto manager. (line 2419) +* BFD_RELOC_M68HC12_HI8XG: howto manager. (line 2435) +* BFD_RELOC_M68HC12_LO8XG: howto manager. (line 2431) +* BFD_RELOC_MACH_O_LOCAL_SECTDIFF: howto manager. (line 2884) +* BFD_RELOC_MACH_O_PAIR: howto manager. (line 2887) +* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2880) +* BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 2890) +* BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 2891) +* BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 2895) +* BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 2898) +* BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 2908) +* BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 2911) +* BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 2914) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32: howto manager. (line 2902) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64: howto manager. (line 2905) +* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1730) +* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1728) +* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1729) +* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1727) +* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1731) +* BFD_RELOC_MCORE_RVA: howto manager. (line 1732) +* BFD_RELOC_MEP_16: howto manager. (line 1736) +* BFD_RELOC_MEP_32: howto manager. (line 1737) +* BFD_RELOC_MEP_8: howto manager. (line 1735) +* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1752) +* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1754) +* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1753) +* BFD_RELOC_MEP_GPREL: howto manager. (line 1746) +* BFD_RELOC_MEP_HI16S: howto manager. (line 1745) +* BFD_RELOC_MEP_HI16U: howto manager. (line 1744) +* BFD_RELOC_MEP_LOW16: howto manager. (line 1743) +* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1742) +* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1739) +* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1740) +* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1741) +* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1738) +* BFD_RELOC_MEP_TPREL: howto manager. (line 1747) +* BFD_RELOC_MEP_TPREL7: howto manager. (line 1748) +* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1749) +* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1750) +* BFD_RELOC_MEP_UIMM24: howto manager. (line 1751) +* BFD_RELOC_METAG_COPY: howto manager. (line 1776) +* BFD_RELOC_METAG_GETSET_GOT: howto manager. (line 1768) +* BFD_RELOC_METAG_GETSET_GOTOFF: howto manager. (line 1767) +* BFD_RELOC_METAG_GETSETOFF: howto manager. (line 1760) +* BFD_RELOC_METAG_GLOB_DAT: howto manager. (line 1779) +* BFD_RELOC_METAG_GOTOFF: howto manager. (line 1774) +* BFD_RELOC_METAG_HI16_GOTOFF: howto manager. (line 1765) +* BFD_RELOC_METAG_HI16_GOTPC: howto manager. (line 1769) +* BFD_RELOC_METAG_HI16_PLT: howto manager. (line 1771) +* BFD_RELOC_METAG_HIADDR16: howto manager. (line 1757) +* BFD_RELOC_METAG_HIOG: howto manager. (line 1761) +* BFD_RELOC_METAG_JMP_SLOT: howto manager. (line 1777) +* BFD_RELOC_METAG_LO16_GOTOFF: howto manager. (line 1766) +* BFD_RELOC_METAG_LO16_GOTPC: howto manager. (line 1770) +* BFD_RELOC_METAG_LO16_PLT: howto manager. (line 1772) +* BFD_RELOC_METAG_LOADDR16: howto manager. (line 1758) +* BFD_RELOC_METAG_LOOG: howto manager. (line 1762) +* BFD_RELOC_METAG_PLT: howto manager. (line 1775) +* BFD_RELOC_METAG_REL16: howto manager. (line 1764) +* BFD_RELOC_METAG_REL8: howto manager. (line 1763) +* BFD_RELOC_METAG_RELATIVE: howto manager. (line 1778) +* BFD_RELOC_METAG_RELBRANCH: howto manager. (line 1759) +* BFD_RELOC_METAG_RELBRANCH_PLT: howto manager. (line 1773) +* BFD_RELOC_METAG_TLS_DTPMOD: howto manager. (line 1790) +* BFD_RELOC_METAG_TLS_DTPOFF: howto manager. (line 1791) +* BFD_RELOC_METAG_TLS_GD: howto manager. (line 1780) +* BFD_RELOC_METAG_TLS_IE: howto manager. (line 1785) +* BFD_RELOC_METAG_TLS_IENONPIC: howto manager. (line 1786) +* BFD_RELOC_METAG_TLS_IENONPIC_HI16: howto manager. (line 1787) +* BFD_RELOC_METAG_TLS_IENONPIC_LO16: howto manager. (line 1788) +* BFD_RELOC_METAG_TLS_LDM: howto manager. (line 1781) +* BFD_RELOC_METAG_TLS_LDO: howto manager. (line 1784) +* BFD_RELOC_METAG_TLS_LDO_HI16: howto manager. (line 1782) +* BFD_RELOC_METAG_TLS_LDO_LO16: howto manager. (line 1783) +* BFD_RELOC_METAG_TLS_LE: howto manager. (line 1792) +* BFD_RELOC_METAG_TLS_LE_HI16: howto manager. (line 1793) +* BFD_RELOC_METAG_TLS_LE_LO16: howto manager. (line 1794) +* BFD_RELOC_METAG_TLS_TPOFF: howto manager. (line 1789) +* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2961) +* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2917) +* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2921) +* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2925) +* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2929) +* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2933) +* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD: howto manager. (line 2982) +* BFD_RELOC_MICROBLAZE_32_TLSDTPREL: howto manager. (line 2985) +* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2947) +* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2956) +* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2942) +* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2937) +* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2951) +* BFD_RELOC_MICROBLAZE_64_TLS: howto manager. (line 2969) +* BFD_RELOC_MICROBLAZE_64_TLSDTPREL: howto manager. (line 2988) +* BFD_RELOC_MICROBLAZE_64_TLSGD: howto manager. (line 2972) +* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL: howto manager. (line 2992) +* BFD_RELOC_MICROBLAZE_64_TLSLD: howto manager. (line 2977) +* BFD_RELOC_MICROBLAZE_64_TLSTPREL: howto manager. (line 2996) +* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2965) +* BFD_RELOC_MICROMIPS_10_PCREL_S1: howto manager. (line 404) +* BFD_RELOC_MICROMIPS_16_PCREL_S1: howto manager. (line 405) +* BFD_RELOC_MICROMIPS_7_PCREL_S1: howto manager. (line 403) +* BFD_RELOC_MICROMIPS_CALL16: howto manager. (line 423) +* BFD_RELOC_MICROMIPS_CALL_HI16: howto manager. (line 429) +* BFD_RELOC_MICROMIPS_CALL_LO16: howto manager. (line 431) +* BFD_RELOC_MICROMIPS_GOT16: howto manager. (line 421) +* BFD_RELOC_MICROMIPS_GOT_DISP: howto manager. (line 439) +* BFD_RELOC_MICROMIPS_GOT_HI16: howto manager. (line 425) +* BFD_RELOC_MICROMIPS_GOT_LO16: howto manager. (line 427) +* BFD_RELOC_MICROMIPS_GOT_OFST: howto manager. (line 437) +* BFD_RELOC_MICROMIPS_GOT_PAGE: howto manager. (line 435) +* BFD_RELOC_MICROMIPS_GPREL16: howto manager. (line 414) +* BFD_RELOC_MICROMIPS_HI16: howto manager. (line 415) +* BFD_RELOC_MICROMIPS_HI16_S: howto manager. (line 416) +* BFD_RELOC_MICROMIPS_HIGHER: howto manager. (line 448) +* BFD_RELOC_MICROMIPS_HIGHEST: howto manager. (line 446) +* BFD_RELOC_MICROMIPS_JALR: howto manager. (line 454) +* BFD_RELOC_MICROMIPS_JMP: howto manager. (line 343) +* BFD_RELOC_MICROMIPS_LITERAL: howto manager. (line 400) +* BFD_RELOC_MICROMIPS_LO16: howto manager. (line 417) +* BFD_RELOC_MICROMIPS_SCN_DISP: howto manager. (line 450) +* BFD_RELOC_MICROMIPS_SUB: howto manager. (line 433) +* BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16: howto manager. (line 464) +* BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16: howto manager. (line 466) +* BFD_RELOC_MICROMIPS_TLS_GD: howto manager. (line 460) +* BFD_RELOC_MICROMIPS_TLS_GOTTPREL: howto manager. (line 468) +* BFD_RELOC_MICROMIPS_TLS_LDM: howto manager. (line 462) +* BFD_RELOC_MICROMIPS_TLS_TPREL_HI16: howto manager. (line 472) +* BFD_RELOC_MICROMIPS_TLS_TPREL_LO16: howto manager. (line 474) +* BFD_RELOC_MIPS16_CALL16: howto manager. (line 374) +* BFD_RELOC_MIPS16_GOT16: howto manager. (line 373) +* BFD_RELOC_MIPS16_GPREL: howto manager. (line 349) +* BFD_RELOC_MIPS16_HI16: howto manager. (line 378) +* BFD_RELOC_MIPS16_HI16_S: howto manager. (line 381) +* BFD_RELOC_MIPS16_JMP: howto manager. (line 346) +* BFD_RELOC_MIPS16_LO16: howto manager. (line 387) +* BFD_RELOC_MIPS16_TLS_DTPREL_HI16: howto manager. (line 392) +* BFD_RELOC_MIPS16_TLS_DTPREL_LO16: howto manager. (line 393) +* BFD_RELOC_MIPS16_TLS_GD: howto manager. (line 390) +* BFD_RELOC_MIPS16_TLS_GOTTPREL: howto manager. (line 394) +* BFD_RELOC_MIPS16_TLS_LDM: howto manager. (line 391) +* BFD_RELOC_MIPS16_TLS_TPREL_HI16: howto manager. (line 395) +* BFD_RELOC_MIPS16_TLS_TPREL_LO16: howto manager. (line 396) +* BFD_RELOC_MIPS_18_PCREL_S3: howto manager. (line 410) +* BFD_RELOC_MIPS_19_PCREL_S2: howto manager. (line 411) +* BFD_RELOC_MIPS_21_PCREL_S2: howto manager. (line 408) +* BFD_RELOC_MIPS_26_PCREL_S2: howto manager. (line 409) +* BFD_RELOC_MIPS_CALL16: howto manager. (line 422) +* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 428) +* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 430) +* BFD_RELOC_MIPS_COPY: howto manager. (line 478) +* BFD_RELOC_MIPS_DELETE: howto manager. (line 444) +* BFD_RELOC_MIPS_EH: howto manager. (line 475) +* BFD_RELOC_MIPS_GOT16: howto manager. (line 420) +* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 438) +* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 424) +* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 426) +* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 436) +* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 434) +* BFD_RELOC_MIPS_HIGHER: howto manager. (line 447) +* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 445) +* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 442) +* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 443) +* BFD_RELOC_MIPS_JALR: howto manager. (line 453) +* BFD_RELOC_MIPS_JMP: howto manager. (line 342) +* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 479) +* BFD_RELOC_MIPS_LITERAL: howto manager. (line 399) +* BFD_RELOC_MIPS_REL16: howto manager. (line 451) +* BFD_RELOC_MIPS_RELGOT: howto manager. (line 452) +* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 449) +* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 440) +* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 441) +* BFD_RELOC_MIPS_SUB: howto manager. (line 432) +* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 455) +* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 457) +* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 456) +* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 458) +* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 463) +* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 465) +* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 459) +* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 467) +* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 461) +* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 469) +* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 470) +* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 471) +* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 473) +* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1823) +* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1827) +* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1839) +* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1803) +* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1805) +* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1806) +* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1807) +* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1804) +* BFD_RELOC_MMIX_GETA: howto manager. (line 1797) +* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1798) +* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1799) +* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1800) +* BFD_RELOC_MMIX_JMP: howto manager. (line 1817) +* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1818) +* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1819) +* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1820) +* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1843) +* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1810) +* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1811) +* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1812) +* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1813) +* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1814) +* BFD_RELOC_MMIX_REG: howto manager. (line 1835) +* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1831) +* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 577) +* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 573) +* BFD_RELOC_MN10300_ALIGN: howto manager. (line 558) +* BFD_RELOC_MN10300_COPY: howto manager. (line 541) +* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 544) +* BFD_RELOC_MN10300_GOT16: howto manager. (line 537) +* BFD_RELOC_MN10300_GOT24: howto manager. (line 533) +* BFD_RELOC_MN10300_GOT32: howto manager. (line 529) +* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 526) +* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 547) +* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 550) +* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 553) +* BFD_RELOC_MN10300_TLS_DTPMOD: howto manager. (line 568) +* BFD_RELOC_MN10300_TLS_DTPOFF: howto manager. (line 569) +* BFD_RELOC_MN10300_TLS_GD: howto manager. (line 562) +* BFD_RELOC_MN10300_TLS_GOTIE: howto manager. (line 565) +* BFD_RELOC_MN10300_TLS_IE: howto manager. (line 566) +* BFD_RELOC_MN10300_TLS_LD: howto manager. (line 563) +* BFD_RELOC_MN10300_TLS_LDO: howto manager. (line 564) +* BFD_RELOC_MN10300_TLS_LE: howto manager. (line 567) +* BFD_RELOC_MN10300_TLS_TPOFF: howto manager. (line 570) +* BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 482) +* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2699) +* BFD_RELOC_MSP430_16: howto manager. (line 2701) +* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2703) +* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2700) +* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2702) +* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2704) +* BFD_RELOC_MSP430_ABS8: howto manager. (line 2706) +* BFD_RELOC_MSP430_ABS_HI16: howto manager. (line 2718) +* BFD_RELOC_MSP430_PREL31: howto manager. (line 2719) +* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2705) +* BFD_RELOC_MSP430_SYM_DIFF: howto manager. (line 2720) +* BFD_RELOC_MSP430X_ABS16: howto manager. (line 2717) +* BFD_RELOC_MSP430X_ABS20_ADR_DST: howto manager. (line 2714) +* BFD_RELOC_MSP430X_ABS20_ADR_SRC: howto manager. (line 2713) +* BFD_RELOC_MSP430X_ABS20_EXT_DST: howto manager. (line 2711) +* BFD_RELOC_MSP430X_ABS20_EXT_ODST: howto manager. (line 2712) +* BFD_RELOC_MSP430X_ABS20_EXT_SRC: howto manager. (line 2710) +* BFD_RELOC_MSP430X_PCR16: howto manager. (line 2715) +* BFD_RELOC_MSP430X_PCR20_CALL: howto manager. (line 2716) +* BFD_RELOC_MSP430X_PCR20_EXT_DST: howto manager. (line 2708) +* BFD_RELOC_MSP430X_PCR20_EXT_ODST: howto manager. (line 2709) +* BFD_RELOC_MSP430X_PCR20_EXT_SRC: howto manager. (line 2707) +* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2693) +* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2690) +* BFD_RELOC_MT_HI16: howto manager. (line 2684) +* BFD_RELOC_MT_LO16: howto manager. (line 2687) +* BFD_RELOC_MT_PC16: howto manager. (line 2681) +* BFD_RELOC_MT_PCINSN8: howto manager. (line 2696) +* BFD_RELOC_NDS32_10_UPCREL: howto manager. (line 1452) +* BFD_RELOC_NDS32_10IFCU_PCREL: howto manager. (line 1485) +* BFD_RELOC_NDS32_15_FIXED: howto manager. (line 1406) +* BFD_RELOC_NDS32_15_PCREL: howto manager. (line 1314) +* BFD_RELOC_NDS32_17_FIXED: howto manager. (line 1407) +* BFD_RELOC_NDS32_17_PCREL: howto manager. (line 1317) +* BFD_RELOC_NDS32_17IFC_PCREL: howto manager. (line 1484) +* BFD_RELOC_NDS32_20: howto manager. (line 1303) +* BFD_RELOC_NDS32_25_ABS: howto manager. (line 1479) +* BFD_RELOC_NDS32_25_FIXED: howto manager. (line 1408) +* BFD_RELOC_NDS32_25_PCREL: howto manager. (line 1320) +* BFD_RELOC_NDS32_25_PLTREL: howto manager. (line 1381) +* BFD_RELOC_NDS32_5: howto manager. (line 1449) +* BFD_RELOC_NDS32_9_FIXED: howto manager. (line 1405) +* BFD_RELOC_NDS32_9_PCREL: howto manager. (line 1306) +* BFD_RELOC_NDS32_9_PLTREL: howto manager. (line 1380) +* BFD_RELOC_NDS32_COPY: howto manager. (line 1382) +* BFD_RELOC_NDS32_DATA: howto manager. (line 1482) +* BFD_RELOC_NDS32_DIFF16: howto manager. (line 1473) +* BFD_RELOC_NDS32_DIFF32: howto manager. (line 1474) +* BFD_RELOC_NDS32_DIFF8: howto manager. (line 1472) +* BFD_RELOC_NDS32_DIFF_ULEB128: howto manager. (line 1475) +* BFD_RELOC_NDS32_DWARF2_LEB: howto manager. (line 1432) +* BFD_RELOC_NDS32_DWARF2_OP1: howto manager. (line 1430) +* BFD_RELOC_NDS32_DWARF2_OP2: howto manager. (line 1431) +* BFD_RELOC_NDS32_EMPTY: howto manager. (line 1476) +* BFD_RELOC_NDS32_GLOB_DAT: howto manager. (line 1383) +* BFD_RELOC_NDS32_GOT15S2: howto manager. (line 1445) +* BFD_RELOC_NDS32_GOT17S2: howto manager. (line 1446) +* BFD_RELOC_NDS32_GOT20: howto manager. (line 1379) +* BFD_RELOC_NDS32_GOT_HI20: howto manager. (line 1390) +* BFD_RELOC_NDS32_GOT_LO12: howto manager. (line 1391) +* BFD_RELOC_NDS32_GOT_LO15: howto manager. (line 1441) +* BFD_RELOC_NDS32_GOT_LO19: howto manager. (line 1442) +* BFD_RELOC_NDS32_GOT_SUFF: howto manager. (line 1460) +* BFD_RELOC_NDS32_GOTOFF: howto manager. (line 1386) +* BFD_RELOC_NDS32_GOTOFF_HI20: howto manager. (line 1387) +* BFD_RELOC_NDS32_GOTOFF_LO12: howto manager. (line 1388) +* BFD_RELOC_NDS32_GOTOFF_LO15: howto manager. (line 1443) +* BFD_RELOC_NDS32_GOTOFF_LO19: howto manager. (line 1444) +* BFD_RELOC_NDS32_GOTOFF_SUFF: howto manager. (line 1461) +* BFD_RELOC_NDS32_GOTPC20: howto manager. (line 1389) +* BFD_RELOC_NDS32_GOTPC_HI20: howto manager. (line 1392) +* BFD_RELOC_NDS32_GOTPC_LO12: howto manager. (line 1393) +* BFD_RELOC_NDS32_GOTTPOFF: howto manager. (line 1493) +* BFD_RELOC_NDS32_HI20: howto manager. (line 1323) +* BFD_RELOC_NDS32_INSN16: howto manager. (line 1396) +* BFD_RELOC_NDS32_JMP_SLOT: howto manager. (line 1384) +* BFD_RELOC_NDS32_LABEL: howto manager. (line 1397) +* BFD_RELOC_NDS32_LO12S0: howto manager. (line 1339) +* BFD_RELOC_NDS32_LO12S0_ORI: howto manager. (line 1343) +* BFD_RELOC_NDS32_LO12S1: howto manager. (line 1335) +* BFD_RELOC_NDS32_LO12S2: howto manager. (line 1331) +* BFD_RELOC_NDS32_LO12S2_DP: howto manager. (line 1426) +* BFD_RELOC_NDS32_LO12S2_SP: howto manager. (line 1427) +* BFD_RELOC_NDS32_LO12S3: howto manager. (line 1327) +* BFD_RELOC_NDS32_LOADSTORE: howto manager. (line 1404) +* BFD_RELOC_NDS32_LONGCALL1: howto manager. (line 1398) +* BFD_RELOC_NDS32_LONGCALL2: howto manager. (line 1399) +* BFD_RELOC_NDS32_LONGCALL3: howto manager. (line 1400) +* BFD_RELOC_NDS32_LONGCALL4: howto manager. (line 1409) +* BFD_RELOC_NDS32_LONGCALL5: howto manager. (line 1410) +* BFD_RELOC_NDS32_LONGCALL6: howto manager. (line 1411) +* BFD_RELOC_NDS32_LONGJUMP1: howto manager. (line 1401) +* BFD_RELOC_NDS32_LONGJUMP2: howto manager. (line 1402) +* BFD_RELOC_NDS32_LONGJUMP3: howto manager. (line 1403) +* BFD_RELOC_NDS32_LONGJUMP4: howto manager. (line 1412) +* BFD_RELOC_NDS32_LONGJUMP5: howto manager. (line 1413) +* BFD_RELOC_NDS32_LONGJUMP6: howto manager. (line 1414) +* BFD_RELOC_NDS32_LONGJUMP7: howto manager. (line 1415) +* BFD_RELOC_NDS32_MINUEND: howto manager. (line 1470) +* BFD_RELOC_NDS32_MULCALL_SUFF: howto manager. (line 1463) +* BFD_RELOC_NDS32_PLT_GOT_SUFF: howto manager. (line 1462) +* BFD_RELOC_NDS32_PLT_GOTREL_HI20: howto manager. (line 1420) +* BFD_RELOC_NDS32_PLT_GOTREL_LO12: howto manager. (line 1421) +* BFD_RELOC_NDS32_PLT_GOTREL_LO15: howto manager. (line 1439) +* BFD_RELOC_NDS32_PLT_GOTREL_LO19: howto manager. (line 1440) +* BFD_RELOC_NDS32_PLT_GOTREL_LO20: howto manager. (line 1438) +* BFD_RELOC_NDS32_PLTBLOCK: howto manager. (line 1467) +* BFD_RELOC_NDS32_PLTREL_HI20: howto manager. (line 1418) +* BFD_RELOC_NDS32_PLTREL_LO12: howto manager. (line 1419) +* BFD_RELOC_NDS32_PTR: howto manager. (line 1464) +* BFD_RELOC_NDS32_PTR_COUNT: howto manager. (line 1465) +* BFD_RELOC_NDS32_PTR_RESOLVED: howto manager. (line 1466) +* BFD_RELOC_NDS32_RELATIVE: howto manager. (line 1385) +* BFD_RELOC_NDS32_RELAX_ENTRY: howto manager. (line 1459) +* BFD_RELOC_NDS32_RELAX_REGION_BEGIN: howto manager. (line 1468) +* BFD_RELOC_NDS32_RELAX_REGION_END: howto manager. (line 1469) +* BFD_RELOC_NDS32_SDA12S2_DP: howto manager. (line 1424) +* BFD_RELOC_NDS32_SDA12S2_SP: howto manager. (line 1425) +* BFD_RELOC_NDS32_SDA15S0: howto manager. (line 1359) +* BFD_RELOC_NDS32_SDA15S1: howto manager. (line 1355) +* BFD_RELOC_NDS32_SDA15S2: howto manager. (line 1351) +* BFD_RELOC_NDS32_SDA15S3: howto manager. (line 1347) +* BFD_RELOC_NDS32_SDA16S3: howto manager. (line 1363) +* BFD_RELOC_NDS32_SDA17S2: howto manager. (line 1367) +* BFD_RELOC_NDS32_SDA18S1: howto manager. (line 1371) +* BFD_RELOC_NDS32_SDA19S0: howto manager. (line 1375) +* BFD_RELOC_NDS32_SDA_FP7U2_RELA: howto manager. (line 1456) +* BFD_RELOC_NDS32_SUBTRAHEND: howto manager. (line 1471) +* BFD_RELOC_NDS32_TLS_IE_HI20: howto manager. (line 1494) +* BFD_RELOC_NDS32_TLS_IE_LO12S2: howto manager. (line 1495) +* BFD_RELOC_NDS32_TLS_LE_15S0: howto manager. (line 1498) +* BFD_RELOC_NDS32_TLS_LE_15S1: howto manager. (line 1499) +* BFD_RELOC_NDS32_TLS_LE_15S2: howto manager. (line 1500) +* BFD_RELOC_NDS32_TLS_LE_20: howto manager. (line 1497) +* BFD_RELOC_NDS32_TLS_LE_ADD: howto manager. (line 1491) +* BFD_RELOC_NDS32_TLS_LE_HI20: howto manager. (line 1489) +* BFD_RELOC_NDS32_TLS_LE_LO12: howto manager. (line 1490) +* BFD_RELOC_NDS32_TLS_LE_LS: howto manager. (line 1492) +* BFD_RELOC_NDS32_TLS_TPOFF: howto manager. (line 1496) +* BFD_RELOC_NDS32_TPOFF: howto manager. (line 1488) +* BFD_RELOC_NDS32_TRAN: howto manager. (line 1483) +* BFD_RELOC_NDS32_UPDATE_TA: howto manager. (line 1435) +* BFD_RELOC_NDS32_WORD_9_PCREL: howto manager. (line 1310) +* BFD_RELOC_NIOS2_ALIGN: howto manager. (line 2737) +* BFD_RELOC_NIOS2_CACHE_OPX: howto manager. (line 2727) +* BFD_RELOC_NIOS2_CALL16: howto manager. (line 2739) +* BFD_RELOC_NIOS2_CALL26: howto manager. (line 2725) +* BFD_RELOC_NIOS2_CALL26_NOAT: howto manager. (line 2757) +* BFD_RELOC_NIOS2_CALL_HA: howto manager. (line 2761) +* BFD_RELOC_NIOS2_CALL_LO: howto manager. (line 2760) +* BFD_RELOC_NIOS2_CALLR: howto manager. (line 2736) +* BFD_RELOC_NIOS2_CJMP: howto manager. (line 2735) +* BFD_RELOC_NIOS2_COPY: howto manager. (line 2752) +* BFD_RELOC_NIOS2_GLOB_DAT: howto manager. (line 2753) +* BFD_RELOC_NIOS2_GOT16: howto manager. (line 2738) +* BFD_RELOC_NIOS2_GOT_HA: howto manager. (line 2759) +* BFD_RELOC_NIOS2_GOT_LO: howto manager. (line 2758) +* BFD_RELOC_NIOS2_GOTOFF: howto manager. (line 2756) +* BFD_RELOC_NIOS2_GOTOFF_HA: howto manager. (line 2741) +* BFD_RELOC_NIOS2_GOTOFF_LO: howto manager. (line 2740) +* BFD_RELOC_NIOS2_GPREL: howto manager. (line 2733) +* BFD_RELOC_NIOS2_HI16: howto manager. (line 2730) +* BFD_RELOC_NIOS2_HIADJ16: howto manager. (line 2732) +* BFD_RELOC_NIOS2_IMM5: howto manager. (line 2726) +* BFD_RELOC_NIOS2_IMM6: howto manager. (line 2728) +* BFD_RELOC_NIOS2_IMM8: howto manager. (line 2729) +* BFD_RELOC_NIOS2_JUMP_SLOT: howto manager. (line 2754) +* BFD_RELOC_NIOS2_LO16: howto manager. (line 2731) +* BFD_RELOC_NIOS2_PCREL_HA: howto manager. (line 2743) +* BFD_RELOC_NIOS2_PCREL_LO: howto manager. (line 2742) +* BFD_RELOC_NIOS2_RELATIVE: howto manager. (line 2755) +* BFD_RELOC_NIOS2_S16: howto manager. (line 2723) +* BFD_RELOC_NIOS2_TLS_DTPMOD: howto manager. (line 2749) +* BFD_RELOC_NIOS2_TLS_DTPREL: howto manager. (line 2750) +* BFD_RELOC_NIOS2_TLS_GD16: howto manager. (line 2744) +* BFD_RELOC_NIOS2_TLS_IE16: howto manager. (line 2747) +* BFD_RELOC_NIOS2_TLS_LDM16: howto manager. (line 2745) +* BFD_RELOC_NIOS2_TLS_LDO16: howto manager. (line 2746) +* BFD_RELOC_NIOS2_TLS_LE16: howto manager. (line 2748) +* BFD_RELOC_NIOS2_TLS_TPREL: howto manager. (line 2751) +* BFD_RELOC_NIOS2_U16: howto manager. (line 2724) +* BFD_RELOC_NIOS2_UJMP: howto manager. (line 2734) +* BFD_RELOC_NONE: howto manager. (line 135) +* BFD_RELOC_NS32K_DISP_16: howto manager. (line 645) +* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 648) +* BFD_RELOC_NS32K_DISP_32: howto manager. (line 646) +* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 649) +* BFD_RELOC_NS32K_DISP_8: howto manager. (line 644) +* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 647) +* BFD_RELOC_NS32K_IMM_16: howto manager. (line 639) +* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 642) +* BFD_RELOC_NS32K_IMM_32: howto manager. (line 640) +* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 643) +* BFD_RELOC_NS32K_IMM_8: howto manager. (line 638) +* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 641) +* BFD_RELOC_OR1K_COPY: howto manager. (line 2634) +* BFD_RELOC_OR1K_GLOB_DAT: howto manager. (line 2635) +* BFD_RELOC_OR1K_GOT16: howto manager. (line 2630) +* BFD_RELOC_OR1K_GOTOFF_HI16: howto manager. (line 2632) +* BFD_RELOC_OR1K_GOTOFF_LO16: howto manager. (line 2633) +* BFD_RELOC_OR1K_GOTPC_HI16: howto manager. (line 2628) +* BFD_RELOC_OR1K_GOTPC_LO16: howto manager. (line 2629) +* BFD_RELOC_OR1K_JMP_SLOT: howto manager. (line 2636) +* BFD_RELOC_OR1K_PLT26: howto manager. (line 2631) +* BFD_RELOC_OR1K_REL_26: howto manager. (line 2627) +* BFD_RELOC_OR1K_RELATIVE: howto manager. (line 2637) +* BFD_RELOC_OR1K_TLS_DTPMOD: howto manager. (line 2650) +* BFD_RELOC_OR1K_TLS_DTPOFF: howto manager. (line 2649) +* BFD_RELOC_OR1K_TLS_GD_HI16: howto manager. (line 2638) +* BFD_RELOC_OR1K_TLS_GD_LO16: howto manager. (line 2639) +* BFD_RELOC_OR1K_TLS_IE_HI16: howto manager. (line 2644) +* BFD_RELOC_OR1K_TLS_IE_LO16: howto manager. (line 2645) +* BFD_RELOC_OR1K_TLS_LDM_HI16: howto manager. (line 2640) +* BFD_RELOC_OR1K_TLS_LDM_LO16: howto manager. (line 2641) +* BFD_RELOC_OR1K_TLS_LDO_HI16: howto manager. (line 2642) +* BFD_RELOC_OR1K_TLS_LDO_LO16: howto manager. (line 2643) +* BFD_RELOC_OR1K_TLS_LE_HI16: howto manager. (line 2646) +* BFD_RELOC_OR1K_TLS_LE_LO16: howto manager. (line 2647) +* BFD_RELOC_OR1K_TLS_TPOFF: howto manager. (line 2648) +* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 653) +* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 652) +* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 658) +* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 659) +* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 656) +* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 657) +* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 660) +* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 661) +* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 723) +* BFD_RELOC_PPC64_ADDR16_HIGH: howto manager. (line 734) +* BFD_RELOC_PPC64_ADDR16_HIGHA: howto manager. (line 735) +* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 724) +* BFD_RELOC_PPC64_ADDR64_LOCAL: howto manager. (line 736) +* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 775) +* BFD_RELOC_PPC64_DTPREL16_HIGH: howto manager. (line 783) +* BFD_RELOC_PPC64_DTPREL16_HIGHA: howto manager. (line 784) +* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 777) +* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 778) +* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 779) +* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 780) +* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 776) +* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 725) +* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 726) +* BFD_RELOC_PPC64_HIGHER: howto manager. (line 711) +* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 712) +* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 713) +* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 714) +* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 727) +* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 719) +* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 732) +* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 722) +* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 721) +* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 720) +* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 733) +* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 728) +* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 729) +* BFD_RELOC_PPC64_TOC: howto manager. (line 718) +* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 730) +* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 717) +* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 716) +* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 715) +* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 731) +* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 769) +* BFD_RELOC_PPC64_TPREL16_HIGH: howto manager. (line 781) +* BFD_RELOC_PPC64_TPREL16_HIGHA: howto manager. (line 782) +* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 771) +* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 772) +* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 773) +* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 774) +* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 770) +* BFD_RELOC_PPC_B16: howto manager. (line 667) +* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 669) +* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 668) +* BFD_RELOC_PPC_B26: howto manager. (line 664) +* BFD_RELOC_PPC_BA16: howto manager. (line 670) +* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 672) +* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 671) +* BFD_RELOC_PPC_BA26: howto manager. (line 665) +* BFD_RELOC_PPC_COPY: howto manager. (line 673) +* BFD_RELOC_PPC_DTPMOD: howto manager. (line 742) +* BFD_RELOC_PPC_DTPREL: howto manager. (line 752) +* BFD_RELOC_PPC_DTPREL16: howto manager. (line 748) +* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 751) +* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 750) +* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 749) +* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 692) +* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 687) +* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 679) +* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 682) +* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 681) +* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 680) +* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 678) +* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 693) +* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 688) +* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 691) +* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 690) +* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 689) +* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 686) +* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 684) +* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 685) +* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 683) +* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 674) +* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 765) +* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 768) +* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 767) +* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 766) +* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 753) +* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 756) +* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 755) +* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 754) +* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 757) +* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 760) +* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 759) +* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 758) +* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 761) +* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 764) +* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 763) +* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 762) +* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 675) +* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 677) +* BFD_RELOC_PPC_RELATIVE: howto manager. (line 676) +* BFD_RELOC_PPC_TLS: howto manager. (line 739) +* BFD_RELOC_PPC_TLSGD: howto manager. (line 740) +* BFD_RELOC_PPC_TLSLD: howto manager. (line 741) +* BFD_RELOC_PPC_TOC16: howto manager. (line 666) +* BFD_RELOC_PPC_TPREL: howto manager. (line 747) +* BFD_RELOC_PPC_TPREL16: howto manager. (line 743) +* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 746) +* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 745) +* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 744) +* BFD_RELOC_PPC_VLE_HA16A: howto manager. (line 701) +* BFD_RELOC_PPC_VLE_HA16D: howto manager. (line 702) +* BFD_RELOC_PPC_VLE_HI16A: howto manager. (line 699) +* BFD_RELOC_PPC_VLE_HI16D: howto manager. (line 700) +* BFD_RELOC_PPC_VLE_LO16A: howto manager. (line 697) +* BFD_RELOC_PPC_VLE_LO16D: howto manager. (line 698) +* BFD_RELOC_PPC_VLE_REL15: howto manager. (line 695) +* BFD_RELOC_PPC_VLE_REL24: howto manager. (line 696) +* BFD_RELOC_PPC_VLE_REL8: howto manager. (line 694) +* BFD_RELOC_PPC_VLE_SDA21: howto manager. (line 703) +* BFD_RELOC_PPC_VLE_SDA21_LO: howto manager. (line 704) +* BFD_RELOC_PPC_VLE_SDAREL_HA16A: howto manager. (line 709) +* BFD_RELOC_PPC_VLE_SDAREL_HA16D: howto manager. (line 710) +* BFD_RELOC_PPC_VLE_SDAREL_HI16A: howto manager. (line 707) +* BFD_RELOC_PPC_VLE_SDAREL_HI16D: howto manager. (line 708) +* BFD_RELOC_PPC_VLE_SDAREL_LO16A: howto manager. (line 705) +* BFD_RELOC_PPC_VLE_SDAREL_LO16D: howto manager. (line 706) +* BFD_RELOC_RELC: howto manager. (line 2667) +* BFD_RELOC_RL78_16_OP: howto manager. (line 1988) +* BFD_RELOC_RL78_16U: howto manager. (line 1992) +* BFD_RELOC_RL78_24_OP: howto manager. (line 1989) +* BFD_RELOC_RL78_24U: howto manager. (line 1993) +* BFD_RELOC_RL78_32_OP: howto manager. (line 1990) +* BFD_RELOC_RL78_8U: howto manager. (line 1991) +* BFD_RELOC_RL78_ABS16: howto manager. (line 2005) +* BFD_RELOC_RL78_ABS16_REV: howto manager. (line 2006) +* BFD_RELOC_RL78_ABS16U: howto manager. (line 2009) +* BFD_RELOC_RL78_ABS16UL: howto manager. (line 2011) +* BFD_RELOC_RL78_ABS16UW: howto manager. (line 2010) +* BFD_RELOC_RL78_ABS32: howto manager. (line 2007) +* BFD_RELOC_RL78_ABS32_REV: howto manager. (line 2008) +* BFD_RELOC_RL78_ABS8: howto manager. (line 2004) +* BFD_RELOC_RL78_CODE: howto manager. (line 2016) +* BFD_RELOC_RL78_DIFF: howto manager. (line 1995) +* BFD_RELOC_RL78_DIR3U_PCREL: howto manager. (line 1994) +* BFD_RELOC_RL78_GPRELB: howto manager. (line 1996) +* BFD_RELOC_RL78_GPRELL: howto manager. (line 1998) +* BFD_RELOC_RL78_GPRELW: howto manager. (line 1997) +* BFD_RELOC_RL78_HI16: howto manager. (line 2013) +* BFD_RELOC_RL78_HI8: howto manager. (line 2014) +* BFD_RELOC_RL78_LO16: howto manager. (line 2015) +* BFD_RELOC_RL78_NEG16: howto manager. (line 1985) +* BFD_RELOC_RL78_NEG24: howto manager. (line 1986) +* BFD_RELOC_RL78_NEG32: howto manager. (line 1987) +* BFD_RELOC_RL78_NEG8: howto manager. (line 1984) +* BFD_RELOC_RL78_OP_AND: howto manager. (line 2002) +* BFD_RELOC_RL78_OP_NEG: howto manager. (line 2001) +* BFD_RELOC_RL78_OP_SHRA: howto manager. (line 2003) +* BFD_RELOC_RL78_OP_SUBTRACT: howto manager. (line 2000) +* BFD_RELOC_RL78_RELAX: howto manager. (line 2012) +* BFD_RELOC_RL78_SYM: howto manager. (line 1999) +* BFD_RELOC_RVA: howto manager. (line 104) +* BFD_RELOC_RX_16_OP: howto manager. (line 2023) +* BFD_RELOC_RX_16U: howto manager. (line 2027) +* BFD_RELOC_RX_24_OP: howto manager. (line 2024) +* BFD_RELOC_RX_24U: howto manager. (line 2028) +* BFD_RELOC_RX_32_OP: howto manager. (line 2025) +* BFD_RELOC_RX_8U: howto manager. (line 2026) +* BFD_RELOC_RX_ABS16: howto manager. (line 2038) +* BFD_RELOC_RX_ABS16_REV: howto manager. (line 2039) +* BFD_RELOC_RX_ABS16U: howto manager. (line 2042) +* BFD_RELOC_RX_ABS16UL: howto manager. (line 2044) +* BFD_RELOC_RX_ABS16UW: howto manager. (line 2043) +* BFD_RELOC_RX_ABS32: howto manager. (line 2040) +* BFD_RELOC_RX_ABS32_REV: howto manager. (line 2041) +* BFD_RELOC_RX_ABS8: howto manager. (line 2037) +* BFD_RELOC_RX_DIFF: howto manager. (line 2030) +* BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 2029) +* BFD_RELOC_RX_GPRELB: howto manager. (line 2031) +* BFD_RELOC_RX_GPRELL: howto manager. (line 2033) +* BFD_RELOC_RX_GPRELW: howto manager. (line 2032) +* BFD_RELOC_RX_NEG16: howto manager. (line 2020) +* BFD_RELOC_RX_NEG24: howto manager. (line 2021) +* BFD_RELOC_RX_NEG32: howto manager. (line 2022) +* BFD_RELOC_RX_NEG8: howto manager. (line 2019) +* BFD_RELOC_RX_OP_NEG: howto manager. (line 2036) +* BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 2035) +* BFD_RELOC_RX_RELAX: howto manager. (line 2045) +* BFD_RELOC_RX_SYM: howto manager. (line 2034) +* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 2188) +* BFD_RELOC_SCORE16_JMP: howto manager. (line 2185) +* BFD_RELOC_SCORE_BCMP: howto manager. (line 2191) +* BFD_RELOC_SCORE_BRANCH: howto manager. (line 2176) +* BFD_RELOC_SCORE_CALL15: howto manager. (line 2196) +* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 2172) +* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 2197) +* BFD_RELOC_SCORE_GOT15: howto manager. (line 2194) +* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 2195) +* BFD_RELOC_SCORE_GPREL15: howto manager. (line 2169) +* BFD_RELOC_SCORE_IMM30: howto manager. (line 2179) +* BFD_RELOC_SCORE_IMM32: howto manager. (line 2182) +* BFD_RELOC_SCORE_JMP: howto manager. (line 2173) +* BFD_RELOC_SH_ALIGN: howto manager. (line 978) +* BFD_RELOC_SH_CODE: howto manager. (line 979) +* BFD_RELOC_SH_COPY: howto manager. (line 984) +* BFD_RELOC_SH_COPY64: howto manager. (line 1009) +* BFD_RELOC_SH_COUNT: howto manager. (line 977) +* BFD_RELOC_SH_DATA: howto manager. (line 980) +* BFD_RELOC_SH_DISP12: howto manager. (line 960) +* BFD_RELOC_SH_DISP12BY2: howto manager. (line 961) +* BFD_RELOC_SH_DISP12BY4: howto manager. (line 962) +* BFD_RELOC_SH_DISP12BY8: howto manager. (line 963) +* BFD_RELOC_SH_DISP20: howto manager. (line 964) +* BFD_RELOC_SH_DISP20BY8: howto manager. (line 965) +* BFD_RELOC_SH_FUNCDESC: howto manager. (line 1052) +* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 985) +* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 1010) +* BFD_RELOC_SH_GOT10BY4: howto manager. (line 1013) +* BFD_RELOC_SH_GOT10BY8: howto manager. (line 1014) +* BFD_RELOC_SH_GOT20: howto manager. (line 1046) +* BFD_RELOC_SH_GOT_HI16: howto manager. (line 992) +* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 989) +* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 991) +* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 990) +* BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 1048) +* BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 1049) +* BFD_RELOC_SH_GOTOFF20: howto manager. (line 1047) +* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 1004) +* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 1001) +* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 1003) +* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 1002) +* BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 1050) +* BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 1051) +* BFD_RELOC_SH_GOTPC: howto manager. (line 988) +* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 1008) +* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 1005) +* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 1007) +* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 1006) +* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 1015) +* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 1016) +* BFD_RELOC_SH_GOTPLT32: howto manager. (line 1017) +* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 996) +* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 993) +* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 995) +* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 994) +* BFD_RELOC_SH_IMM3: howto manager. (line 958) +* BFD_RELOC_SH_IMM3U: howto manager. (line 959) +* BFD_RELOC_SH_IMM4: howto manager. (line 966) +* BFD_RELOC_SH_IMM4BY2: howto manager. (line 967) +* BFD_RELOC_SH_IMM4BY4: howto manager. (line 968) +* BFD_RELOC_SH_IMM8: howto manager. (line 969) +* BFD_RELOC_SH_IMM8BY2: howto manager. (line 970) +* BFD_RELOC_SH_IMM8BY4: howto manager. (line 971) +* BFD_RELOC_SH_IMM_HI16: howto manager. (line 1035) +* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 1036) +* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 1029) +* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 1030) +* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 1033) +* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 1034) +* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 1031) +* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 1032) +* BFD_RELOC_SH_IMMS10: howto manager. (line 1023) +* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 1024) +* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 1025) +* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 1026) +* BFD_RELOC_SH_IMMS16: howto manager. (line 1027) +* BFD_RELOC_SH_IMMS6: howto manager. (line 1020) +* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 1021) +* BFD_RELOC_SH_IMMU16: howto manager. (line 1028) +* BFD_RELOC_SH_IMMU5: howto manager. (line 1019) +* BFD_RELOC_SH_IMMU6: howto manager. (line 1022) +* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 986) +* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 1011) +* BFD_RELOC_SH_LABEL: howto manager. (line 981) +* BFD_RELOC_SH_LOOP_END: howto manager. (line 983) +* BFD_RELOC_SH_LOOP_START: howto manager. (line 982) +* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 957) +* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 956) +* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 972) +* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 973) +* BFD_RELOC_SH_PLT_HI16: howto manager. (line 1000) +* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 997) +* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 999) +* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 998) +* BFD_RELOC_SH_PT_16: howto manager. (line 1037) +* BFD_RELOC_SH_RELATIVE: howto manager. (line 987) +* BFD_RELOC_SH_RELATIVE64: howto manager. (line 1012) +* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 1018) +* BFD_RELOC_SH_SWITCH16: howto manager. (line 974) +* BFD_RELOC_SH_SWITCH32: howto manager. (line 975) +* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 1043) +* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 1044) +* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 1038) +* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 1041) +* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 1039) +* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 1040) +* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 1042) +* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 1045) +* BFD_RELOC_SH_USES: howto manager. (line 976) +* BFD_RELOC_SIZE32: howto manager. (line 74) +* BFD_RELOC_SIZE64: howto manager. (line 75) +* BFD_RELOC_SPARC13: howto manager. (line 138) +* BFD_RELOC_SPARC22: howto manager. (line 137) +* BFD_RELOC_SPARC_10: howto manager. (line 167) +* BFD_RELOC_SPARC_11: howto manager. (line 168) +* BFD_RELOC_SPARC_5: howto manager. (line 180) +* BFD_RELOC_SPARC_6: howto manager. (line 179) +* BFD_RELOC_SPARC_64: howto manager. (line 166) +* BFD_RELOC_SPARC_7: howto manager. (line 178) +* BFD_RELOC_SPARC_BASE13: howto manager. (line 162) +* BFD_RELOC_SPARC_BASE22: howto manager. (line 163) +* BFD_RELOC_SPARC_COPY: howto manager. (line 145) +* BFD_RELOC_SPARC_DISP64: howto manager. (line 181) +* BFD_RELOC_SPARC_GLOB_DAT: howto manager. (line 146) +* BFD_RELOC_SPARC_GOT10: howto manager. (line 139) +* BFD_RELOC_SPARC_GOT13: howto manager. (line 140) +* BFD_RELOC_SPARC_GOT22: howto manager. (line 141) +* BFD_RELOC_SPARC_GOTDATA_HIX22: howto manager. (line 152) +* BFD_RELOC_SPARC_GOTDATA_LOX10: howto manager. (line 153) +* BFD_RELOC_SPARC_GOTDATA_OP: howto manager. (line 156) +* BFD_RELOC_SPARC_GOTDATA_OP_HIX22: howto manager. (line 154) +* BFD_RELOC_SPARC_GOTDATA_OP_LOX10: howto manager. (line 155) +* BFD_RELOC_SPARC_H34: howto manager. (line 190) +* BFD_RELOC_SPARC_H44: howto manager. (line 186) +* BFD_RELOC_SPARC_HH22: howto manager. (line 170) +* BFD_RELOC_SPARC_HIX22: howto manager. (line 184) +* BFD_RELOC_SPARC_HM10: howto manager. (line 171) +* BFD_RELOC_SPARC_IRELATIVE: howto manager. (line 158) +* BFD_RELOC_SPARC_JMP_IREL: howto manager. (line 157) +* BFD_RELOC_SPARC_JMP_SLOT: howto manager. (line 147) +* BFD_RELOC_SPARC_L44: howto manager. (line 188) +* BFD_RELOC_SPARC_LM22: howto manager. (line 172) +* BFD_RELOC_SPARC_LOX10: howto manager. (line 185) +* BFD_RELOC_SPARC_M44: howto manager. (line 187) +* BFD_RELOC_SPARC_OLO10: howto manager. (line 169) +* BFD_RELOC_SPARC_PC10: howto manager. (line 142) +* BFD_RELOC_SPARC_PC22: howto manager. (line 143) +* BFD_RELOC_SPARC_PC_HH22: howto manager. (line 173) +* BFD_RELOC_SPARC_PC_HM10: howto manager. (line 174) +* BFD_RELOC_SPARC_PC_LM22: howto manager. (line 175) +* BFD_RELOC_SPARC_PLT32: howto manager. (line 182) +* BFD_RELOC_SPARC_PLT64: howto manager. (line 183) +* BFD_RELOC_SPARC_REGISTER: howto manager. (line 189) +* BFD_RELOC_SPARC_RELATIVE: howto manager. (line 148) +* BFD_RELOC_SPARC_REV32: howto manager. (line 196) +* BFD_RELOC_SPARC_SIZE32: howto manager. (line 191) +* BFD_RELOC_SPARC_SIZE64: howto manager. (line 192) +* BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 217) +* BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 218) +* BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 219) +* BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 220) +* BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 201) +* BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 202) +* BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 199) +* BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 200) +* BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 214) +* BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 210) +* BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 212) +* BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 213) +* BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 211) +* BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 205) +* BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 206) +* BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 203) +* BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 204) +* BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 209) +* BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 207) +* BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 208) +* BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 215) +* BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 216) +* BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 221) +* BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 222) +* BFD_RELOC_SPARC_UA16: howto manager. (line 149) +* BFD_RELOC_SPARC_UA32: howto manager. (line 150) +* BFD_RELOC_SPARC_UA64: howto manager. (line 151) +* BFD_RELOC_SPARC_WDISP10: howto manager. (line 193) +* BFD_RELOC_SPARC_WDISP16: howto manager. (line 176) +* BFD_RELOC_SPARC_WDISP19: howto manager. (line 177) +* BFD_RELOC_SPARC_WDISP22: howto manager. (line 136) +* BFD_RELOC_SPARC_WPLT30: howto manager. (line 144) +* BFD_RELOC_SPU_ADD_PIC: howto manager. (line 239) +* BFD_RELOC_SPU_HI16: howto manager. (line 236) +* BFD_RELOC_SPU_IMM10: howto manager. (line 227) +* BFD_RELOC_SPU_IMM10W: howto manager. (line 228) +* BFD_RELOC_SPU_IMM16: howto manager. (line 229) +* BFD_RELOC_SPU_IMM16W: howto manager. (line 230) +* BFD_RELOC_SPU_IMM18: howto manager. (line 231) +* BFD_RELOC_SPU_IMM7: howto manager. (line 225) +* BFD_RELOC_SPU_IMM8: howto manager. (line 226) +* BFD_RELOC_SPU_LO16: howto manager. (line 235) +* BFD_RELOC_SPU_PCREL16: howto manager. (line 234) +* BFD_RELOC_SPU_PCREL9a: howto manager. (line 232) +* BFD_RELOC_SPU_PCREL9b: howto manager. (line 233) +* BFD_RELOC_SPU_PPU32: howto manager. (line 237) +* BFD_RELOC_SPU_PPU64: howto manager. (line 238) +* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 805) +* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 819) +* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 820) +* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 821) +* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 822) +* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 817) +* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 818) +* BFD_RELOC_TIC30_LDP: howto manager. (line 1637) +* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1655) +* BFD_RELOC_TIC54X_23: howto manager. (line 1652) +* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1660) +* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1642) +* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1647) +* BFD_RELOC_TILEGX_BROFF_X1: howto manager. (line 3388) +* BFD_RELOC_TILEGX_COPY: howto manager. (line 3384) +* BFD_RELOC_TILEGX_DEST_IMM8_X1: howto manager. (line 3395) +* BFD_RELOC_TILEGX_GLOB_DAT: howto manager. (line 3385) +* BFD_RELOC_TILEGX_HW0: howto manager. (line 3377) +* BFD_RELOC_TILEGX_HW0_LAST: howto manager. (line 3381) +* BFD_RELOC_TILEGX_HW1: howto manager. (line 3378) +* BFD_RELOC_TILEGX_HW1_LAST: howto manager. (line 3382) +* BFD_RELOC_TILEGX_HW2: howto manager. (line 3379) +* BFD_RELOC_TILEGX_HW2_LAST: howto manager. (line 3383) +* BFD_RELOC_TILEGX_HW3: howto manager. (line 3380) +* BFD_RELOC_TILEGX_IMM16_X0_HW0: howto manager. (line 3404) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT: howto manager. (line 3432) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST: howto manager. (line 3412) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager. (line 3440) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager. (line 3426) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager. + (line 3460) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager. (line 3454) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager. (line 3466) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager. (line 3450) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL: howto manager. (line 3418) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager. (line 3434) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: howto manager. (line 3446) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: howto manager. (line 3458) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: howto manager. (line 3448) +* BFD_RELOC_TILEGX_IMM16_X0_HW1: howto manager. (line 3406) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST: howto manager. (line 3414) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager. (line 3442) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager. (line 3428) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager. + (line 3462) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager. (line 3456) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager. (line 3468) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager. (line 3452) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL: howto manager. (line 3420) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager. (line 3436) +* BFD_RELOC_TILEGX_IMM16_X0_HW2: howto manager. (line 3408) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST: howto manager. (line 3416) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager. (line 3430) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager. + (line 3464) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL: howto manager. (line 3422) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager. (line 3438) +* BFD_RELOC_TILEGX_IMM16_X0_HW3: howto manager. (line 3410) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL: howto manager. (line 3424) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager. (line 3444) +* BFD_RELOC_TILEGX_IMM16_X1_HW0: howto manager. (line 3405) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT: howto manager. (line 3433) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST: howto manager. (line 3413) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager. (line 3441) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager. (line 3427) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager. + (line 3461) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager. (line 3455) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager. (line 3467) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager. (line 3451) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL: howto manager. (line 3419) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager. (line 3435) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: howto manager. (line 3447) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: howto manager. (line 3459) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: howto manager. (line 3449) +* BFD_RELOC_TILEGX_IMM16_X1_HW1: howto manager. (line 3407) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST: howto manager. (line 3415) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager. (line 3443) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager. (line 3429) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager. + (line 3463) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager. (line 3457) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager. (line 3469) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager. (line 3453) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL: howto manager. (line 3421) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager. (line 3437) +* BFD_RELOC_TILEGX_IMM16_X1_HW2: howto manager. (line 3409) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST: howto manager. (line 3417) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager. (line 3431) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager. + (line 3465) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL: howto manager. (line 3423) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager. (line 3439) +* BFD_RELOC_TILEGX_IMM16_X1_HW3: howto manager. (line 3411) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL: howto manager. (line 3425) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager. (line 3445) +* BFD_RELOC_TILEGX_IMM8_X0: howto manager. (line 3391) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: howto manager. (line 3482) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: howto manager. (line 3477) +* BFD_RELOC_TILEGX_IMM8_X1: howto manager. (line 3393) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: howto manager. (line 3483) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: howto manager. (line 3478) +* BFD_RELOC_TILEGX_IMM8_Y0: howto manager. (line 3392) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: howto manager. (line 3484) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3479) +* BFD_RELOC_TILEGX_IMM8_Y1: howto manager. (line 3394) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: howto manager. (line 3485) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3480) +* BFD_RELOC_TILEGX_JMP_SLOT: howto manager. (line 3386) +* BFD_RELOC_TILEGX_JUMPOFF_X1: howto manager. (line 3389) +* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT: howto manager. (line 3390) +* BFD_RELOC_TILEGX_MF_IMM14_X1: howto manager. (line 3397) +* BFD_RELOC_TILEGX_MMEND_X0: howto manager. (line 3399) +* BFD_RELOC_TILEGX_MMSTART_X0: howto manager. (line 3398) +* BFD_RELOC_TILEGX_MT_IMM14_X1: howto manager. (line 3396) +* BFD_RELOC_TILEGX_RELATIVE: howto manager. (line 3387) +* BFD_RELOC_TILEGX_SHAMT_X0: howto manager. (line 3400) +* BFD_RELOC_TILEGX_SHAMT_X1: howto manager. (line 3401) +* BFD_RELOC_TILEGX_SHAMT_Y0: howto manager. (line 3402) +* BFD_RELOC_TILEGX_SHAMT_Y1: howto manager. (line 3403) +* BFD_RELOC_TILEGX_TLS_DTPMOD32: howto manager. (line 3473) +* BFD_RELOC_TILEGX_TLS_DTPMOD64: howto manager. (line 3470) +* BFD_RELOC_TILEGX_TLS_DTPOFF32: howto manager. (line 3474) +* BFD_RELOC_TILEGX_TLS_DTPOFF64: howto manager. (line 3471) +* BFD_RELOC_TILEGX_TLS_GD_CALL: howto manager. (line 3476) +* BFD_RELOC_TILEGX_TLS_IE_LOAD: howto manager. (line 3481) +* BFD_RELOC_TILEGX_TLS_TPOFF32: howto manager. (line 3475) +* BFD_RELOC_TILEGX_TLS_TPOFF64: howto manager. (line 3472) +* BFD_RELOC_TILEPRO_BROFF_X1: howto manager. (line 3300) +* BFD_RELOC_TILEPRO_COPY: howto manager. (line 3296) +* BFD_RELOC_TILEPRO_DEST_IMM8_X1: howto manager. (line 3307) +* BFD_RELOC_TILEPRO_GLOB_DAT: howto manager. (line 3297) +* BFD_RELOC_TILEPRO_IMM16_X0: howto manager. (line 3310) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT: howto manager. (line 3326) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA: howto manager. (line 3332) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI: howto manager. (line 3330) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO: howto manager. (line 3328) +* BFD_RELOC_TILEPRO_IMM16_X0_HA: howto manager. (line 3316) +* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL: howto manager. (line 3324) +* BFD_RELOC_TILEPRO_IMM16_X0_HI: howto manager. (line 3314) +* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL: howto manager. (line 3322) +* BFD_RELOC_TILEPRO_IMM16_X0_LO: howto manager. (line 3312) +* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL: howto manager. (line 3320) +* BFD_RELOC_TILEPRO_IMM16_X0_PCREL: howto manager. (line 3318) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: howto manager. (line 3348) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: howto manager. (line 3354) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: howto manager. (line 3352) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: howto manager. (line 3350) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: howto manager. (line 3356) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: howto manager. (line 3362) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: howto manager. (line 3360) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: howto manager. (line 3358) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: howto manager. (line 3367) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: howto manager. (line 3373) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: howto manager. (line 3371) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: howto manager. (line 3369) +* BFD_RELOC_TILEPRO_IMM16_X1: howto manager. (line 3311) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT: howto manager. (line 3327) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA: howto manager. (line 3333) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI: howto manager. (line 3331) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO: howto manager. (line 3329) +* BFD_RELOC_TILEPRO_IMM16_X1_HA: howto manager. (line 3317) +* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL: howto manager. (line 3325) +* BFD_RELOC_TILEPRO_IMM16_X1_HI: howto manager. (line 3315) +* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL: howto manager. (line 3323) +* BFD_RELOC_TILEPRO_IMM16_X1_LO: howto manager. (line 3313) +* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL: howto manager. (line 3321) +* BFD_RELOC_TILEPRO_IMM16_X1_PCREL: howto manager. (line 3319) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: howto manager. (line 3349) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: howto manager. (line 3355) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: howto manager. (line 3353) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: howto manager. (line 3351) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: howto manager. (line 3357) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: howto manager. (line 3363) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: howto manager. (line 3361) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: howto manager. (line 3359) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: howto manager. (line 3368) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: howto manager. (line 3374) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: howto manager. (line 3372) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: howto manager. (line 3370) +* BFD_RELOC_TILEPRO_IMM8_X0: howto manager. (line 3303) +* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: howto manager. (line 3343) +* BFD_RELOC_TILEPRO_IMM8_X1: howto manager. (line 3305) +* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: howto manager. (line 3344) +* BFD_RELOC_TILEPRO_IMM8_Y0: howto manager. (line 3304) +* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3345) +* BFD_RELOC_TILEPRO_IMM8_Y1: howto manager. (line 3306) +* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3346) +* BFD_RELOC_TILEPRO_JMP_SLOT: howto manager. (line 3298) +* BFD_RELOC_TILEPRO_JOFFLONG_X1: howto manager. (line 3301) +* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT: howto manager. (line 3302) +* BFD_RELOC_TILEPRO_MF_IMM15_X1: howto manager. (line 3309) +* BFD_RELOC_TILEPRO_MMEND_X0: howto manager. (line 3335) +* BFD_RELOC_TILEPRO_MMEND_X1: howto manager. (line 3337) +* BFD_RELOC_TILEPRO_MMSTART_X0: howto manager. (line 3334) +* BFD_RELOC_TILEPRO_MMSTART_X1: howto manager. (line 3336) +* BFD_RELOC_TILEPRO_MT_IMM15_X1: howto manager. (line 3308) +* BFD_RELOC_TILEPRO_RELATIVE: howto manager. (line 3299) +* BFD_RELOC_TILEPRO_SHAMT_X0: howto manager. (line 3338) +* BFD_RELOC_TILEPRO_SHAMT_X1: howto manager. (line 3339) +* BFD_RELOC_TILEPRO_SHAMT_Y0: howto manager. (line 3340) +* BFD_RELOC_TILEPRO_SHAMT_Y1: howto manager. (line 3341) +* BFD_RELOC_TILEPRO_TLS_DTPMOD32: howto manager. (line 3364) +* BFD_RELOC_TILEPRO_TLS_DTPOFF32: howto manager. (line 3365) +* BFD_RELOC_TILEPRO_TLS_GD_CALL: howto manager. (line 3342) +* BFD_RELOC_TILEPRO_TLS_IE_LOAD: howto manager. (line 3347) +* BFD_RELOC_TILEPRO_TLS_TPOFF32: howto manager. (line 3366) +* bfd_reloc_type_lookup: howto manager. (line 3511) +* BFD_RELOC_V850_16_GOT: howto manager. (line 1601) +* BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1625) +* BFD_RELOC_V850_16_PCREL: howto manager. (line 1571) +* BFD_RELOC_V850_16_S1: howto manager. (line 1589) +* BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1586) +* BFD_RELOC_V850_17_PCREL: howto manager. (line 1574) +* BFD_RELOC_V850_22_PCREL: howto manager. (line 1506) +* BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1607) +* BFD_RELOC_V850_23: howto manager. (line 1577) +* BFD_RELOC_V850_32_ABS: howto manager. (line 1583) +* BFD_RELOC_V850_32_GOT: howto manager. (line 1604) +* BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1628) +* BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1598) +* BFD_RELOC_V850_32_PCREL: howto manager. (line 1580) +* BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1610) +* BFD_RELOC_V850_9_PCREL: howto manager. (line 1503) +* BFD_RELOC_V850_ALIGN: howto manager. (line 1564) +* BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1595) +* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1555) +* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1552) +* BFD_RELOC_V850_CODE: howto manager. (line 1631) +* BFD_RELOC_V850_COPY: howto manager. (line 1613) +* BFD_RELOC_V850_DATA: howto manager. (line 1634) +* BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1616) +* BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1619) +* BFD_RELOC_V850_LO16_S1: howto manager. (line 1592) +* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1567) +* BFD_RELOC_V850_LONGCALL: howto manager. (line 1558) +* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1561) +* BFD_RELOC_V850_RELATIVE: howto manager. (line 1622) +* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1512) +* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1509) +* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1544) +* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1534) +* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1541) +* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1537) +* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1523) +* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1531) +* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1527) +* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1519) +* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1516) +* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1548) +* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2676) +* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2677) +* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2678) +* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 2230) +* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 2231) +* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 2235) +* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 2234) +* BFD_RELOC_X86_64_32S: howto manager. (line 614) +* BFD_RELOC_X86_64_COPY: howto manager. (line 609) +* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 615) +* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 620) +* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 616) +* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 610) +* BFD_RELOC_X86_64_GOT32: howto manager. (line 607) +* BFD_RELOC_X86_64_GOT64: howto manager. (line 625) +* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 623) +* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 624) +* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 630) +* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 627) +* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 613) +* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 626) +* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 628) +* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 621) +* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 633) +* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 611) +* BFD_RELOC_X86_64_PC32_BND: howto manager. (line 634) +* BFD_RELOC_X86_64_PLT32: howto manager. (line 608) +* BFD_RELOC_X86_64_PLT32_BND: howto manager. (line 635) +* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 629) +* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 612) +* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 632) +* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 631) +* BFD_RELOC_X86_64_TLSGD: howto manager. (line 618) +* BFD_RELOC_X86_64_TLSLD: howto manager. (line 619) +* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 622) +* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 617) +* BFD_RELOC_XC16X_PAG: howto manager. (line 2670) +* BFD_RELOC_XC16X_POF: howto manager. (line 2671) +* BFD_RELOC_XC16X_SEG: howto manager. (line 2672) +* BFD_RELOC_XC16X_SOF: howto manager. (line 2673) +* BFD_RELOC_XGATE_24: howto manager. (line 2393) +* BFD_RELOC_XGATE_GPAGE: howto manager. (line 2390) +* BFD_RELOC_XGATE_IMM3: howto manager. (line 2410) +* BFD_RELOC_XGATE_IMM4: howto manager. (line 2413) +* BFD_RELOC_XGATE_IMM5: howto manager. (line 2416) +* BFD_RELOC_XGATE_IMM8_HI: howto manager. (line 2406) +* BFD_RELOC_XGATE_IMM8_LO: howto manager. (line 2402) +* BFD_RELOC_XGATE_LO16: howto manager. (line 2386) +* BFD_RELOC_XGATE_PCREL_10: howto manager. (line 2399) +* BFD_RELOC_XGATE_PCREL_9: howto manager. (line 2396) +* BFD_RELOC_XGATE_RL_GROUP: howto manager. (line 2381) +* BFD_RELOC_XGATE_RL_JUMP: howto manager. (line 2377) +* BFD_RELOC_XSTORMY16_12: howto manager. (line 2662) +* BFD_RELOC_XSTORMY16_24: howto manager. (line 2663) +* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2664) +* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2661) +* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2838) +* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2843) +* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2785) +* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2786) +* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2784) +* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2774) +* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2775) +* BFD_RELOC_XTENSA_OP0: howto manager. (line 2832) +* BFD_RELOC_XTENSA_OP1: howto manager. (line 2833) +* BFD_RELOC_XTENSA_OP2: howto manager. (line 2834) +* BFD_RELOC_XTENSA_PLT: howto manager. (line 2779) +* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2776) +* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2769) +* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2814) +* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2794) +* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2824) +* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2804) +* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2825) +* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2805) +* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2826) +* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2806) +* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2827) +* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2807) +* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2828) +* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2808) +* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2815) +* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2795) +* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2816) +* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2796) +* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2817) +* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2797) +* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2818) +* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2798) +* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2819) +* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2799) +* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2820) +* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2800) +* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2821) +* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2801) +* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2822) +* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2802) +* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2823) +* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2803) +* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2853) +* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2854) +* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2850) +* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2852) +* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2851) +* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2849) +* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2848) +* BFD_RELOC_Z80_DISP8: howto manager. (line 2857) +* BFD_RELOC_Z8K_CALLR: howto manager. (line 2863) +* BFD_RELOC_Z8K_DISP7: howto manager. (line 2860) +* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2866) +* bfd_rename_section: section prototypes. (line 169) +* bfd_scan_arch: Architectures. (line 514) +* bfd_scan_vma: Miscellaneous. (line 126) +* bfd_seach_for_target: bfd_target. (line 517) +* bfd_section_already_linked: Writing the symbol table. + (line 55) +* bfd_section_list_clear: section prototypes. (line 8) +* bfd_sections_find_if: section prototypes. (line 199) +* bfd_set_arch_info: Architectures. (line 555) +* bfd_set_archive_head: Archives. (line 75) +* bfd_set_assert_handler: Error reporting. (line 141) +* bfd_set_default_target: bfd_target. (line 456) +* bfd_set_error: Error reporting. (line 57) +* bfd_set_error_handler: Error reporting. (line 99) +* bfd_set_error_program_name: Error reporting. (line 108) +* bfd_set_file_flags: Miscellaneous. (line 44) +* bfd_set_format: Formats. (line 68) +* bfd_set_gp_size: Miscellaneous. (line 116) +* bfd_set_private_flags: Miscellaneous. (line 193) +* bfd_set_reloc: Miscellaneous. (line 34) +* bfd_set_section_contents: section prototypes. (line 230) +* bfd_set_section_flags: section prototypes. (line 154) +* bfd_set_section_size: section prototypes. (line 216) +* bfd_set_start_address: Miscellaneous. (line 95) +* bfd_set_symtab: symbol handling functions. + (line 60) +* bfd_symbol_info: symbol handling functions. + (line 130) +* bfd_target_list: bfd_target. (line 508) +* bfd_write_bigendian_4byte_int: Internal. (line 13) +* bfd_zalloc: Opening and Closing. + (line 257) +* bfd_zalloc2: Opening and Closing. + (line 266) +* coff_symbol_type: coff. (line 245) +* core_file_matches_executable_p: Core Files. (line 39) +* find_separate_debug_file: Opening and Closing. + (line 332) +* generic_core_file_matches_executable_p: Core Files. (line 49) +* Hash tables: Hash Tables. (line 6) +* internal object-file format: Canonical format. (line 11) +* Linker: Linker Functions. (line 6) +* Other functions: Miscellaneous. (line 208) +* separate_alt_debug_file_exists: Opening and Closing. + (line 323) +* separate_debug_file_exists: Opening and Closing. + (line 314) +* struct bfd_iovec: Miscellaneous. (line 369) +* target vector (_bfd_final_link): Performing the Final Link. + (line 6) +* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. + (line 6) +* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table. + (line 6) +* The HOWTO Macro: typedef arelent. (line 288) +* what is it?: Overview. (line 6) + + + +Tag Table: +Node: Top1058 +Node: Overview1397 +Node: History2448 +Node: How It Works3394 +Node: What BFD Version 2 Can Do4937 +Node: BFD information loss6252 +Node: Canonical format8784 +Node: BFD front end13156 +Node: typedef bfd13580 +Node: Error reporting24586 +Node: Miscellaneous29453 +Node: Memory Usage46603 +Node: Initialization47831 +Node: Sections48290 +Node: Section Input48773 +Node: Section Output50138 +Node: typedef asection52624 +Node: section prototypes78807 +Node: Symbols89064 +Node: Reading Symbols90659 +Node: Writing Symbols91766 +Node: Mini Symbols93507 +Node: typedef asymbol94481 +Node: symbol handling functions100540 +Node: Archives105882 +Node: Formats109911 +Node: Relocations112859 +Node: typedef arelent113586 +Node: howto manager129222 +Node: Core Files244197 +Node: Targets246235 +Node: bfd_target248205 +Node: Architectures271043 +Node: Opening and Closing298508 +Node: Internal312830 +Node: File Caching319175 +Node: Linker Functions321089 +Node: Creating a Linker Hash Table322762 +Node: Adding Symbols to the Hash Table324500 +Node: Differing file formats325400 +Node: Adding symbols from an object file327125 +Node: Adding symbols from an archive329276 +Node: Performing the Final Link331622 +Node: Information provided by the linker332864 +Node: Relocating the section contents334018 +Node: Writing the symbol table335769 +Node: Hash Tables340153 +Node: Creating and Freeing a Hash Table341351 +Node: Looking Up or Entering a String342601 +Node: Traversing a Hash Table343854 +Node: Deriving a New Hash Table Type344643 +Node: Define the Derived Structures345709 +Node: Write the Derived Creation Routine346790 +Node: Write Other Derived Routines349414 +Node: BFD back ends350729 +Node: What to Put Where350999 +Node: aout351179 +Node: coff357517 +Node: elf386166 +Node: mmo386567 +Node: File layout387440 +Node: Symbol-table393367 +Node: mmo section mapping397131 +Node: GNU Free Documentation License400783 +Node: BFD Index425866 + +End Tag Table diff --git a/bfd/doc/bfdio.texi b/bfd/doc/bfdio.texi new file mode 100644 index 00000000000..ff8275fcb08 --- /dev/null +++ b/bfd/doc/bfdio.texi @@ -0,0 +1,95 @@ +@findex struct bfd_iovec +@subsubsection @code{struct bfd_iovec} +@strong{Description}@* +The @code{struct bfd_iovec} contains the internal file I/O class. +Each @code{BFD} has an instance of this class and all file I/O is +routed through it (it is assumed that the instance implements +all methods listed below). +@example +struct bfd_iovec +@{ + /* To avoid problems with macros, a "b" rather than "f" + prefix is prepended to each method name. */ + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching + bytes starting at PTR. Return the number of bytes actually + transfered (a read past end-of-file returns less than NBYTES), + or -1 (setting @code{bfd_error}) if an error occurs. */ + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes); + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr, + file_ptr nbytes); + /* Return the current IOSTREAM file offset, or -1 (setting @code{bfd_error} + if an error occurs. */ + file_ptr (*btell) (struct bfd *abfd); + /* For the following, on successful completion a value of 0 is returned. + Otherwise, a value of -1 is returned (and @code{bfd_error} is set). */ + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence); + int (*bclose) (struct bfd *abfd); + int (*bflush) (struct bfd *abfd); + int (*bstat) (struct bfd *abfd, struct stat *sb); + /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual + mmap parameter, except that LEN and OFFSET do not need to be page + aligned. Returns (void *)-1 on failure, mmapped address on success. + Also write in MAP_ADDR the address of the page aligned buffer and in + MAP_LEN the size mapped (a page multiple). Use unmap with MAP_ADDR and + MAP_LEN to unmap. */ + void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); +@}; +extern const struct bfd_iovec _bfd_memory_iovec; +@end example + +@findex bfd_get_mtime +@subsubsection @code{bfd_get_mtime} +@strong{Synopsis} +@example +long bfd_get_mtime (bfd *abfd); +@end example +@strong{Description}@* +Return the file modification time (as read from the file system, or +from the archive header for archive members). + +@findex bfd_get_size +@subsubsection @code{bfd_get_size} +@strong{Synopsis} +@example +file_ptr bfd_get_size (bfd *abfd); +@end example +@strong{Description}@* +Return the file size (as read from file system) for the file +associated with BFD @var{abfd}. + +The initial motivation for, and use of, this routine is not +so we can get the exact size of the object the BFD applies to, since +that might not be generally possible (archive members for example). +It would be ideal if someone could eventually modify +it so that such results were guaranteed. + +Instead, we want to ask questions like "is this NNN byte sized +object I'm about to try read from file offset YYY reasonable?" +As as example of where we might do this, some object formats +use string tables for which the first @code{sizeof (long)} bytes of the +table contain the size of the table itself, including the size bytes. +If an application tries to read what it thinks is one of these +string tables, without some way to validate the size, and for +some reason the size is wrong (byte swapping error, wrong location +for the string table, etc.), the only clue is likely to be a read +error when it tries to read the table, or a "virtual memory +exhausted" error when it tries to allocate 15 bazillon bytes +of space for the 15 bazillon byte table it is about to read. +This function at least allows us to answer the question, "is the +size reasonable?". + +@findex bfd_mmap +@subsubsection @code{bfd_mmap} +@strong{Synopsis} +@example +void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); +@end example +@strong{Description}@* +Return mmap()ed region of the file, if possible and implemented. +LEN and OFFSET do not need to be page aligned. The page aligned +address and length are written to MAP_ADDR and MAP_LEN. + diff --git a/bfd/doc/bfdt.texi b/bfd/doc/bfdt.texi new file mode 100644 index 00000000000..3d8f1041290 --- /dev/null +++ b/bfd/doc/bfdt.texi @@ -0,0 +1,896 @@ +@node typedef bfd, Error reporting, BFD front end, BFD front end +@section @code{typedef bfd} +A BFD has type @code{bfd}; objects of this type are the +cornerstone of any application using BFD. Using BFD +consists of making references though the BFD and to data in the BFD. + +Here is the structure that defines the type @code{bfd}. It +contains the major data about the file and pointers +to the rest of the data. + + +@example + +enum bfd_direction + @{ + no_direction = 0, + read_direction = 1, + write_direction = 2, + both_direction = 3 + @}; + +struct bfd +@{ + /* The filename the application opened the BFD with. */ + const char *filename; + + /* A pointer to the target jump table. */ + const struct bfd_target *xvec; + + /* The IOSTREAM, and corresponding IO vector that provide access + to the file backing the BFD. */ + void *iostream; + const struct bfd_iovec *iovec; + + /* The caching routines use these to maintain a + least-recently-used list of BFDs. */ + struct bfd *lru_prev, *lru_next; + + /* When a file is closed by the caching routines, BFD retains + state information on the file here... */ + ufile_ptr where; + + /* File modified time, if mtime_set is TRUE. */ + long mtime; + + /* A unique identifier of the BFD */ + unsigned int id; + + /* The format which belongs to the BFD. (object, core, etc.) */ + ENUM_BITFIELD (bfd_format) format : 3; + + /* The direction with which the BFD was opened. */ + ENUM_BITFIELD (bfd_direction) direction : 2; + + /* Format_specific flags. */ + flagword flags : 17; + + /* Values that may appear in the flags field of a BFD. These also + appear in the object_flags field of the bfd_target structure, where + they indicate the set of flags used by that backend (not all flags + are meaningful for all object file formats) (FIXME: at the moment, + the object_flags values have mostly just been copied from backend + to another, and are not necessarily correct). */ + +#define BFD_NO_FLAGS 0x00 + + /* BFD contains relocation entries. */ +#define HAS_RELOC 0x01 + + /* BFD is directly executable. */ +#define EXEC_P 0x02 + + /* BFD has line number information (basically used for F_LNNO in a + COFF header). */ +#define HAS_LINENO 0x04 + + /* BFD has debugging information. */ +#define HAS_DEBUG 0x08 + + /* BFD has symbols. */ +#define HAS_SYMS 0x10 + + /* BFD has local symbols (basically used for F_LSYMS in a COFF + header). */ +#define HAS_LOCALS 0x20 + + /* BFD is a dynamic object. */ +#define DYNAMIC 0x40 + + /* Text section is write protected (if D_PAGED is not set, this is + like an a.out NMAGIC file) (the linker sets this by default, but + clears it for -r or -N). */ +#define WP_TEXT 0x80 + + /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the + linker sets this by default, but clears it for -r or -n or -N). */ +#define D_PAGED 0x100 + + /* BFD is relaxable (this means that bfd_relax_section may be able to + do something) (sometimes bfd_relax_section can do something even if + this is not set). */ +#define BFD_IS_RELAXABLE 0x200 + + /* This may be set before writing out a BFD to request using a + traditional format. For example, this is used to request that when + writing out an a.out object the symbols not be hashed to eliminate + duplicates. */ +#define BFD_TRADITIONAL_FORMAT 0x400 + + /* This flag indicates that the BFD contents are actually cached + in memory. If this is set, iostream points to a bfd_in_memory + struct. */ +#define BFD_IN_MEMORY 0x800 + + /* This BFD has been created by the linker and doesn't correspond + to any input file. */ +#define BFD_LINKER_CREATED 0x1000 + + /* This may be set before writing out a BFD to request that it + be written using values for UIDs, GIDs, timestamps, etc. that + will be consistent from run to run. */ +#define BFD_DETERMINISTIC_OUTPUT 0x2000 + + /* Compress sections in this BFD. */ +#define BFD_COMPRESS 0x4000 + + /* Decompress sections in this BFD. */ +#define BFD_DECOMPRESS 0x8000 + + /* BFD is a dummy, for plugins. */ +#define BFD_PLUGIN 0x10000 + + /* Flags bits to be saved in bfd_preserve_save. */ +#define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) + + /* Flags bits which are for BFD use only. */ +#define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + + /* Is the file descriptor being cached? That is, can it be closed as + needed, and re-opened when accessed later? */ + unsigned int cacheable : 1; + + /* Marks whether there was a default target specified when the + BFD was opened. This is used to select which matching algorithm + to use to choose the back end. */ + unsigned int target_defaulted : 1; + + /* ... and here: (``once'' means at least once). */ + unsigned int opened_once : 1; + + /* Set if we have a locally maintained mtime value, rather than + getting it from the file each time. */ + unsigned int mtime_set : 1; + + /* Flag set if symbols from this BFD should not be exported. */ + unsigned int no_export : 1; + + /* Remember when output has begun, to stop strange things + from happening. */ + unsigned int output_has_begun : 1; + + /* Have archive map. */ + unsigned int has_armap : 1; + + /* Set if this is a thin archive. */ + unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; + + /* Set if this is the linker output BFD. */ + unsigned int is_linker_output : 1; + + /* Currently my_archive is tested before adding origin to + anything. I believe that this can become always an add of + origin, with origin set to 0 for non archive files. */ + ufile_ptr origin; + + /* The origin in the archive of the proxy entry. This will + normally be the same as origin, except for thin archives, + when it will contain the current offset of the proxy in the + thin archive rather than the offset of the bfd in its actual + container. */ + ufile_ptr proxy_origin; + + /* A hash table for section names. */ + struct bfd_hash_table section_htab; + + /* Pointer to linked list of sections. */ + struct bfd_section *sections; + + /* The last section on the section list. */ + struct bfd_section *section_last; + + /* The number of sections. */ + unsigned int section_count; + + /* A field used by _bfd_generic_link_add_archive_symbols. This will + be used only for archive elements. */ + int archive_pass; + + /* Stuff only useful for object files: + The start address. */ + bfd_vma start_address; + + /* Symbol table for output BFD (with symcount entries). + Also used by the linker to cache input BFD symbols. */ + struct bfd_symbol **outsymbols; + + /* Used for input and output. */ + unsigned int symcount; + + /* Used for slurped dynamic symbol tables. */ + unsigned int dynsymcount; + + /* Pointer to structure which contains architecture information. */ + const struct bfd_arch_info *arch_info; + + /* Stuff only useful for archives. */ + void *arelt_data; + struct bfd *my_archive; /* The containing archive BFD. */ + struct bfd *archive_next; /* The next BFD in the archive. */ + struct bfd *archive_head; /* The first BFD in the archive. */ + struct bfd *nested_archives; /* List of nested archive in a flattened + thin archive. */ + + union @{ + /* For input BFDs, a chain of BFDs involved in a link. */ + struct bfd *next; + /* For output BFD, the linker hash table. */ + struct bfd_link_hash_table *hash; + @} link; + + /* Used by the back end to hold private data. */ + union + @{ + struct aout_data_struct *aout_data; + struct artdata *aout_ar_data; + struct _oasys_data *oasys_obj_data; + struct _oasys_ar_data *oasys_ar_data; + struct coff_tdata *coff_obj_data; + struct pe_tdata *pe_obj_data; + struct xcoff_tdata *xcoff_obj_data; + struct ecoff_tdata *ecoff_obj_data; + struct ieee_data_struct *ieee_data; + struct ieee_ar_data_struct *ieee_ar_data; + struct srec_data_struct *srec_data; + struct verilog_data_struct *verilog_data; + struct ihex_data_struct *ihex_data; + struct tekhex_data_struct *tekhex_data; + struct elf_obj_tdata *elf_obj_data; + struct nlm_obj_tdata *nlm_obj_data; + struct bout_data_struct *bout_data; + struct mmo_data_struct *mmo_data; + struct sun_core_struct *sun_core_data; + struct sco5_core_struct *sco5_core_data; + struct trad_core_struct *trad_core_data; + struct som_data_struct *som_data; + struct hpux_core_struct *hpux_core_data; + struct hppabsd_core_struct *hppabsd_core_data; + struct sgi_core_struct *sgi_core_data; + struct lynx_core_struct *lynx_core_data; + struct osf_core_struct *osf_core_data; + struct cisco_core_struct *cisco_core_data; + struct versados_data_struct *versados_data; + struct netbsd_core_struct *netbsd_core_data; + struct mach_o_data_struct *mach_o_data; + struct mach_o_fat_data_struct *mach_o_fat_data; + struct plugin_data_struct *plugin_data; + struct bfd_pef_data_struct *pef_data; + struct bfd_pef_xlib_data_struct *pef_xlib_data; + struct bfd_sym_data_struct *sym_data; + void *any; + @} + tdata; + + /* Used by the application to hold private data. */ + void *usrdata; + + /* Where all the allocated stuff under this BFD goes. This is a + struct objalloc *, but we use void * to avoid requiring the inclusion + of objalloc.h. */ + void *memory; +@}; + +/* See note beside bfd_set_section_userdata. */ +static inline bfd_boolean +bfd_set_cacheable (bfd * abfd, bfd_boolean val) +@{ + abfd->cacheable = val; + return TRUE; +@} + +@end example +@node Error reporting, Miscellaneous, typedef bfd, BFD front end +@section Error reporting +Most BFD functions return nonzero on success (check their +individual documentation for precise semantics). On an error, +they call @code{bfd_set_error} to set an error condition that callers +can check by calling @code{bfd_get_error}. +If that returns @code{bfd_error_system_call}, then check +@code{errno}. + +The easiest way to report a BFD error to the user is to +use @code{bfd_perror}. + +@subsection Type @code{bfd_error_type} +The values returned by @code{bfd_get_error} are defined by the +enumerated type @code{bfd_error_type}. + + +@example + +typedef enum bfd_error +@{ + bfd_error_no_error = 0, + bfd_error_system_call, + bfd_error_invalid_target, + bfd_error_wrong_format, + bfd_error_wrong_object_format, + bfd_error_invalid_operation, + bfd_error_no_memory, + bfd_error_no_symbols, + bfd_error_no_armap, + bfd_error_no_more_archived_files, + bfd_error_malformed_archive, + bfd_error_missing_dso, + bfd_error_file_not_recognized, + bfd_error_file_ambiguously_recognized, + bfd_error_no_contents, + bfd_error_nonrepresentable_section, + bfd_error_no_debug_section, + bfd_error_bad_value, + bfd_error_file_truncated, + bfd_error_file_too_big, + bfd_error_on_input, + bfd_error_invalid_error_code +@} +bfd_error_type; + +@end example +@findex bfd_get_error +@subsubsection @code{bfd_get_error} +@strong{Synopsis} +@example +bfd_error_type bfd_get_error (void); +@end example +@strong{Description}@* +Return the current BFD error condition. + +@findex bfd_set_error +@subsubsection @code{bfd_set_error} +@strong{Synopsis} +@example +void bfd_set_error (bfd_error_type error_tag, ...); +@end example +@strong{Description}@* +Set the BFD error condition to be @var{error_tag}. +If @var{error_tag} is bfd_error_on_input, then this function +takes two more parameters, the input bfd where the error +occurred, and the bfd_error_type error. + +@findex bfd_errmsg +@subsubsection @code{bfd_errmsg} +@strong{Synopsis} +@example +const char *bfd_errmsg (bfd_error_type error_tag); +@end example +@strong{Description}@* +Return a string describing the error @var{error_tag}, or +the system error if @var{error_tag} is @code{bfd_error_system_call}. + +@findex bfd_perror +@subsubsection @code{bfd_perror} +@strong{Synopsis} +@example +void bfd_perror (const char *message); +@end example +@strong{Description}@* +Print to the standard error stream a string describing the +last BFD error that occurred, or the last system error if +the last BFD error was a system call failure. If @var{message} +is non-NULL and non-empty, the error string printed is preceded +by @var{message}, a colon, and a space. It is followed by a newline. + +@subsection BFD error handler +Some BFD functions want to print messages describing the +problem. They call a BFD error handler function. This +function may be overridden by the program. + +The BFD error handler acts like printf. + + +@example + +typedef void (*bfd_error_handler_type) (const char *, ...); + +@end example +@findex bfd_set_error_handler +@subsubsection @code{bfd_set_error_handler} +@strong{Synopsis} +@example +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); +@end example +@strong{Description}@* +Set the BFD error handler function. Returns the previous +function. + +@findex bfd_set_error_program_name +@subsubsection @code{bfd_set_error_program_name} +@strong{Synopsis} +@example +void bfd_set_error_program_name (const char *); +@end example +@strong{Description}@* +Set the program name to use when printing a BFD error. This +is printed before the error message followed by a colon and +space. The string must not be changed after it is passed to +this function. + +@findex bfd_get_error_handler +@subsubsection @code{bfd_get_error_handler} +@strong{Synopsis} +@example +bfd_error_handler_type bfd_get_error_handler (void); +@end example +@strong{Description}@* +Return the BFD error handler function. + +@subsection BFD assert handler +If BFD finds an internal inconsistency, the bfd assert +handler is called with information on the BFD version, BFD +source file and line. If this happens, most programs linked +against BFD are expected to want to exit with an error, or mark +the current BFD operation as failed, so it is recommended to +override the default handler, which just calls +_bfd_error_handler and continues. + + +@example + +typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg, + const char *bfd_version, + const char *bfd_file, + int bfd_line); + +@end example +@findex bfd_set_assert_handler +@subsubsection @code{bfd_set_assert_handler} +@strong{Synopsis} +@example +bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type); +@end example +@strong{Description}@* +Set the BFD assert handler function. Returns the previous +function. + +@findex bfd_get_assert_handler +@subsubsection @code{bfd_get_assert_handler} +@strong{Synopsis} +@example +bfd_assert_handler_type bfd_get_assert_handler (void); +@end example +@strong{Description}@* +Return the BFD assert handler function. + +@node Miscellaneous, Memory Usage, Error reporting, BFD front end +@section Miscellaneous + + +@subsection Miscellaneous functions + + +@findex bfd_get_reloc_upper_bound +@subsubsection @code{bfd_get_reloc_upper_bound} +@strong{Synopsis} +@example +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); +@end example +@strong{Description}@* +Return the number of bytes required to store the +relocation information associated with section @var{sect} +attached to bfd @var{abfd}. If an error occurs, return -1. + +@findex bfd_canonicalize_reloc +@subsubsection @code{bfd_canonicalize_reloc} +@strong{Synopsis} +@example +long bfd_canonicalize_reloc + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); +@end example +@strong{Description}@* +Call the back end associated with the open BFD +@var{abfd} and translate the external form of the relocation +information attached to @var{sec} into the internal canonical +form. Place the table into memory at @var{loc}, which has +been preallocated, usually by a call to +@code{bfd_get_reloc_upper_bound}. Returns the number of relocs, or +-1 on error. + +The @var{syms} table is also needed for horrible internal magic +reasons. + +@findex bfd_set_reloc +@subsubsection @code{bfd_set_reloc} +@strong{Synopsis} +@example +void bfd_set_reloc + (bfd *abfd, asection *sec, arelent **rel, unsigned int count); +@end example +@strong{Description}@* +Set the relocation pointer and count within +section @var{sec} to the values @var{rel} and @var{count}. +The argument @var{abfd} is ignored. + +@findex bfd_set_file_flags +@subsubsection @code{bfd_set_file_flags} +@strong{Synopsis} +@example +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags); +@end example +@strong{Description}@* +Set the flag word in the BFD @var{abfd} to the value @var{flags}. + +Possible errors are: +@itemize @bullet + +@item +@code{bfd_error_wrong_format} - The target bfd was not of object format. +@item +@code{bfd_error_invalid_operation} - The target bfd was open for reading. +@item +@code{bfd_error_invalid_operation} - +The flag word contained a bit which was not applicable to the +type of file. E.g., an attempt was made to set the @code{D_PAGED} bit +on a BFD format which does not support demand paging. +@end itemize + +@findex bfd_get_arch_size +@subsubsection @code{bfd_get_arch_size} +@strong{Synopsis} +@example +int bfd_get_arch_size (bfd *abfd); +@end example +@strong{Description}@* +Returns the normalized architecture address size, in bits, as +determined by the object file's format. By normalized, we mean +either 32 or 64. For ELF, this information is included in the +header. Use bfd_arch_bits_per_address for number of bits in +the architecture address. + +@strong{Returns}@* +Returns the arch size in bits if known, @code{-1} otherwise. + +@findex bfd_get_sign_extend_vma +@subsubsection @code{bfd_get_sign_extend_vma} +@strong{Synopsis} +@example +int bfd_get_sign_extend_vma (bfd *abfd); +@end example +@strong{Description}@* +Indicates if the target architecture "naturally" sign extends +an address. Some architectures implicitly sign extend address +values when they are converted to types larger than the size +of an address. For instance, bfd_get_start_address() will +return an address sign extended to fill a bfd_vma when this is +the case. + +@strong{Returns}@* +Returns @code{1} if the target architecture is known to sign +extend addresses, @code{0} if the target architecture is known to +not sign extend addresses, and @code{-1} otherwise. + +@findex bfd_set_start_address +@subsubsection @code{bfd_set_start_address} +@strong{Synopsis} +@example +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma); +@end example +@strong{Description}@* +Make @var{vma} the entry point of output BFD @var{abfd}. + +@strong{Returns}@* +Returns @code{TRUE} on success, @code{FALSE} otherwise. + +@findex bfd_get_gp_size +@subsubsection @code{bfd_get_gp_size} +@strong{Synopsis} +@example +unsigned int bfd_get_gp_size (bfd *abfd); +@end example +@strong{Description}@* +Return the maximum size of objects to be optimized using the GP +register under MIPS ECOFF. This is typically set by the @code{-G} +argument to the compiler, assembler or linker. + +@findex bfd_set_gp_size +@subsubsection @code{bfd_set_gp_size} +@strong{Synopsis} +@example +void bfd_set_gp_size (bfd *abfd, unsigned int i); +@end example +@strong{Description}@* +Set the maximum size of objects to be optimized using the GP +register under ECOFF or MIPS ELF. This is typically set by +the @code{-G} argument to the compiler, assembler or linker. + +@findex bfd_scan_vma +@subsubsection @code{bfd_scan_vma} +@strong{Synopsis} +@example +bfd_vma bfd_scan_vma (const char *string, const char **end, int base); +@end example +@strong{Description}@* +Convert, like @code{strtoul}, a numerical expression +@var{string} into a @code{bfd_vma} integer, and return that integer. +(Though without as many bells and whistles as @code{strtoul}.) +The expression is assumed to be unsigned (i.e., positive). +If given a @var{base}, it is used as the base for conversion. +A base of 0 causes the function to interpret the string +in hex if a leading "0x" or "0X" is found, otherwise +in octal if a leading zero is found, otherwise in decimal. + +If the value would overflow, the maximum @code{bfd_vma} value is +returned. + +@findex bfd_copy_private_header_data +@subsubsection @code{bfd_copy_private_header_data} +@strong{Synopsis} +@example +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); +@end example +@strong{Description}@* +Copy private BFD header information from the BFD @var{ibfd} to the +the BFD @var{obfd}. This copies information that may require +sections to exist, but does not require symbol tables. Return +@code{true} on success, @code{false} on error. +Possible error returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{obfd}. +@end itemize +@example +#define bfd_copy_private_header_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_header_data, \ + (ibfd, obfd)) +@end example + +@findex bfd_copy_private_bfd_data +@subsubsection @code{bfd_copy_private_bfd_data} +@strong{Synopsis} +@example +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); +@end example +@strong{Description}@* +Copy private BFD information from the BFD @var{ibfd} to the +the BFD @var{obfd}. Return @code{TRUE} on success, @code{FALSE} on error. +Possible error returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{obfd}. +@end itemize +@example +#define bfd_copy_private_bfd_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ + (ibfd, obfd)) +@end example + +@findex bfd_merge_private_bfd_data +@subsubsection @code{bfd_merge_private_bfd_data} +@strong{Synopsis} +@example +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd); +@end example +@strong{Description}@* +Merge private BFD information from the BFD @var{ibfd} to the +the output file BFD @var{obfd} when linking. Return @code{TRUE} +on success, @code{FALSE} on error. Possible error returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{obfd}. +@end itemize +@example +#define bfd_merge_private_bfd_data(ibfd, obfd) \ + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ + (ibfd, obfd)) +@end example + +@findex bfd_set_private_flags +@subsubsection @code{bfd_set_private_flags} +@strong{Synopsis} +@example +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags); +@end example +@strong{Description}@* +Set private BFD flag information in the BFD @var{abfd}. +Return @code{TRUE} on success, @code{FALSE} on error. Possible error +returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{obfd}. +@end itemize +@example +#define bfd_set_private_flags(abfd, flags) \ + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags)) +@end example + +@findex Other functions +@subsubsection @code{Other functions} +@strong{Description}@* +The following functions exist but have not yet been documented. +@example +#define bfd_sizeof_headers(abfd, info) \ + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info)) + +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, NULL)) + +#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \ + line, disc) \ + BFD_SEND (abfd, _bfd_find_nearest_line, \ + (abfd, syms, sec, off, file, func, line, disc)) + +#define bfd_find_line(abfd, syms, sym, file, line) \ + BFD_SEND (abfd, _bfd_find_line, \ + (abfd, syms, sym, file, line)) + +#define bfd_find_inliner_info(abfd, file, func, line) \ + BFD_SEND (abfd, _bfd_find_inliner_info, \ + (abfd, file, func, line)) + +#define bfd_debug_info_start(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) + +#define bfd_debug_info_end(abfd) \ + BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) + +#define bfd_debug_info_accumulate(abfd, section) \ + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) + +#define bfd_stat_arch_elt(abfd, stat) \ + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) + +#define bfd_update_armap_timestamp(abfd) \ + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) + +#define bfd_set_arch_mach(abfd, arch, mach)\ + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) + +#define bfd_relax_section(abfd, section, link_info, again) \ + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) + +#define bfd_gc_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info)) + +#define bfd_lookup_section_flags(link_info, flag_info, section) \ + BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section)) + +#define bfd_merge_sections(abfd, link_info) \ + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info)) + +#define bfd_is_group_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec)) + +#define bfd_discard_group(abfd, sec) \ + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec)) + +#define bfd_link_hash_table_create(abfd) \ + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) + +#define bfd_link_add_symbols(abfd, info) \ + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) + +#define bfd_link_just_syms(abfd, sec, info) \ + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) + +#define bfd_final_link(abfd, info) \ + BFD_SEND (abfd, _bfd_final_link, (abfd, info)) + +#define bfd_free_cached_info(abfd) \ + BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) + +#define bfd_get_dynamic_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) + +#define bfd_print_private_bfd_data(abfd, file)\ + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) + +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) + +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ + dyncount, dynsyms, ret)) + +#define bfd_get_dynamic_reloc_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) + +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) + +extern bfd_byte *bfd_get_relocated_section_contents + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, + bfd_boolean, asymbol **); + +@end example + +@findex bfd_alt_mach_code +@subsubsection @code{bfd_alt_mach_code} +@strong{Synopsis} +@example +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative); +@end example +@strong{Description}@* +When more than one machine code number is available for the +same machine type, this function can be used to switch between +the preferred one (alternative == 0) and any others. Currently, +only ELF supports this feature, with up to two alternate +machine codes. + +@findex bfd_emul_get_maxpagesize +@subsubsection @code{bfd_emul_get_maxpagesize} +@strong{Synopsis} +@example +bfd_vma bfd_emul_get_maxpagesize (const char *); +@end example +@strong{Description}@* +Returns the maximum page size, in bytes, as determined by +emulation. + +@strong{Returns}@* +Returns the maximum page size in bytes for ELF, 0 otherwise. + +@findex bfd_emul_set_maxpagesize +@subsubsection @code{bfd_emul_set_maxpagesize} +@strong{Synopsis} +@example +void bfd_emul_set_maxpagesize (const char *, bfd_vma); +@end example +@strong{Description}@* +For ELF, set the maximum page size for the emulation. It is +a no-op for other formats. + +@findex bfd_emul_get_commonpagesize +@subsubsection @code{bfd_emul_get_commonpagesize} +@strong{Synopsis} +@example +bfd_vma bfd_emul_get_commonpagesize (const char *); +@end example +@strong{Description}@* +Returns the common page size, in bytes, as determined by +emulation. + +@strong{Returns}@* +Returns the common page size in bytes for ELF, 0 otherwise. + +@findex bfd_emul_set_commonpagesize +@subsubsection @code{bfd_emul_set_commonpagesize} +@strong{Synopsis} +@example +void bfd_emul_set_commonpagesize (const char *, bfd_vma); +@end example +@strong{Description}@* +For ELF, set the common page size for the emulation. It is +a no-op for other formats. + +@findex bfd_demangle +@subsubsection @code{bfd_demangle} +@strong{Synopsis} +@example +char *bfd_demangle (bfd *, const char *, int); +@end example +@strong{Description}@* +Wrapper around cplus_demangle. Strips leading underscores and +other such chars that would otherwise confuse the demangler. +If passed a g++ v3 ABI mangled name, returns a buffer allocated +with malloc holding the demangled name. Returns NULL otherwise +and on memory alloc failure. + diff --git a/bfd/doc/bfdver.texi b/bfd/doc/bfdver.texi new file mode 100644 index 00000000000..e854b407d3e --- /dev/null +++ b/bfd/doc/bfdver.texi @@ -0,0 +1,4 @@ +@set VERSION 2.25 +@set VERSION_PACKAGE (GNU Binutils) +@set UPDATED December 2014 +@set BUGURL @uref{http://www.sourceware.org/bugzilla/} diff --git a/bfd/doc/bfdwin.texi b/bfd/doc/bfdwin.texi new file mode 100644 index 00000000000..b1fd7d5bed6 --- /dev/null +++ b/bfd/doc/bfdwin.texi @@ -0,0 +1,2 @@ +@findex +@subsubsection @code{} diff --git a/bfd/doc/cache.texi b/bfd/doc/cache.texi new file mode 100644 index 00000000000..05b627e6ff9 --- /dev/null +++ b/bfd/doc/cache.texi @@ -0,0 +1,65 @@ +@section File caching +The file caching mechanism is embedded within BFD and allows +the application to open as many BFDs as it wants without +regard to the underlying operating system's file descriptor +limit (often as low as 20 open files). The module in +@code{cache.c} maintains a least recently used list of +@code{bfd_cache_max_open} files, and exports the name +@code{bfd_cache_lookup}, which runs around and makes sure that +the required BFD is open. If not, then it chooses a file to +close, closes it and opens the one wanted, returning its file +handle. + +@subsection Caching functions + + +@findex bfd_cache_init +@subsubsection @code{bfd_cache_init} +@strong{Synopsis} +@example +bfd_boolean bfd_cache_init (bfd *abfd); +@end example +@strong{Description}@* +Add a newly opened BFD to the cache. + +@findex bfd_cache_close +@subsubsection @code{bfd_cache_close} +@strong{Synopsis} +@example +bfd_boolean bfd_cache_close (bfd *abfd); +@end example +@strong{Description}@* +Remove the BFD @var{abfd} from the cache. If the attached file is open, +then close it too. + +@strong{Returns}@* +@code{FALSE} is returned if closing the file fails, @code{TRUE} is +returned if all is well. + +@findex bfd_cache_close_all +@subsubsection @code{bfd_cache_close_all} +@strong{Synopsis} +@example +bfd_boolean bfd_cache_close_all (void); +@end example +@strong{Description}@* +Remove all BFDs from the cache. If the attached file is open, +then close it too. + +@strong{Returns}@* +@code{FALSE} is returned if closing one of the file fails, @code{TRUE} is +returned if all is well. + +@findex bfd_open_file +@subsubsection @code{bfd_open_file} +@strong{Synopsis} +@example +FILE* bfd_open_file (bfd *abfd); +@end example +@strong{Description}@* +Call the OS to open a file for @var{abfd}. Return the @code{FILE *} +(possibly @code{NULL}) that results from this operation. Set up the +BFD so that future accesses know the file is open. If the @code{FILE *} +returned is @code{NULL}, then it won't have been put in the +cache, so it won't have to be removed from it. + diff --git a/bfd/doc/coffcode.texi b/bfd/doc/coffcode.texi new file mode 100644 index 00000000000..bbf04699b1a --- /dev/null +++ b/bfd/doc/coffcode.texi @@ -0,0 +1,693 @@ +@section coff backends +BFD supports a number of different flavours of coff format. +The major differences between formats are the sizes and +alignments of fields in structures on disk, and the occasional +extra field. + +Coff in all its varieties is implemented with a few common +files and a number of implementation specific files. For +example, The 88k bcs coff format is implemented in the file +@file{coff-m88k.c}. This file @code{#include}s +@file{coff/m88k.h} which defines the external structure of the +coff format for the 88k, and @file{coff/internal.h} which +defines the internal structure. @file{coff-m88k.c} also +defines the relocations used by the 88k format +@xref{Relocations}. + +The Intel i960 processor version of coff is implemented in +@file{coff-i960.c}. This file has the same structure as +@file{coff-m88k.c}, except that it includes @file{coff/i960.h} +rather than @file{coff-m88k.h}. + +@subsection Porting to a new version of coff +The recommended method is to select from the existing +implementations the version of coff which is most like the one +you want to use. For example, we'll say that i386 coff is +the one you select, and that your coff flavour is called foo. +Copy @file{i386coff.c} to @file{foocoff.c}, copy +@file{../include/coff/i386.h} to @file{../include/coff/foo.h}, +and add the lines to @file{targets.c} and @file{Makefile.in} +so that your new back end is used. Alter the shapes of the +structures in @file{../include/coff/foo.h} so that they match +what you need. You will probably also have to add +@code{#ifdef}s to the code in @file{coff/internal.h} and +@file{coffcode.h} if your version of coff is too wild. + +You can verify that your new BFD backend works quite simply by +building @file{objdump} from the @file{binutils} directory, +and making sure that its version of what's going on and your +host system's idea (assuming it has the pretty standard coff +dump utility, usually called @code{att-dump} or just +@code{dump}) are the same. Then clean up your code, and send +what you've done to Cygnus. Then your stuff will be in the +next release, and you won't have to keep integrating it. + +@subsection How the coff backend works + + +@subsubsection File layout +The Coff backend is split into generic routines that are +applicable to any Coff target and routines that are specific +to a particular target. The target-specific routines are +further split into ones which are basically the same for all +Coff targets except that they use the external symbol format +or use different values for certain constants. + +The generic routines are in @file{coffgen.c}. These routines +work for any Coff target. They use some hooks into the target +specific code; the hooks are in a @code{bfd_coff_backend_data} +structure, one of which exists for each target. + +The essentially similar target-specific routines are in +@file{coffcode.h}. This header file includes executable C code. +The various Coff targets first include the appropriate Coff +header file, make any special defines that are needed, and +then include @file{coffcode.h}. + +Some of the Coff targets then also have additional routines in +the target source file itself. + +For example, @file{coff-i960.c} includes +@file{coff/internal.h} and @file{coff/i960.h}. It then +defines a few constants, such as @code{I960}, and includes +@file{coffcode.h}. Since the i960 has complex relocation +types, @file{coff-i960.c} also includes some code to +manipulate the i960 relocs. This code is not in +@file{coffcode.h} because it would not be used by any other +target. + +@subsubsection Coff long section names +In the standard Coff object format, section names are limited to +the eight bytes available in the @code{s_name} field of the +@code{SCNHDR} section header structure. The format requires the +field to be NUL-padded, but not necessarily NUL-terminated, so +the longest section names permitted are a full eight characters. + +The Microsoft PE variants of the Coff object file format add +an extension to support the use of long section names. This +extension is defined in section 4 of the Microsoft PE/COFF +specification (rev 8.1). If a section name is too long to fit +into the section header's @code{s_name} field, it is instead +placed into the string table, and the @code{s_name} field is +filled with a slash ("/") followed by the ASCII decimal +representation of the offset of the full name relative to the +string table base. + +Note that this implies that the extension can only be used in object +files, as executables do not contain a string table. The standard +specifies that long section names from objects emitted into executable +images are to be truncated. + +However, as a GNU extension, BFD can generate executable images +that contain a string table and long section names. This +would appear to be technically valid, as the standard only says +that Coff debugging information is deprecated, not forbidden, +and in practice it works, although some tools that parse PE files +expecting the MS standard format may become confused; @file{PEview} is +one known example. + +The functionality is supported in BFD by code implemented under +the control of the macro @code{COFF_LONG_SECTION_NAMES}. If not +defined, the format does not support long section names in any way. +If defined, it is used to initialise a flag, +@code{_bfd_coff_long_section_names}, and a hook function pointer, +@code{_bfd_coff_set_long_section_names}, in the Coff backend data +structure. The flag controls the generation of long section names +in output BFDs at runtime; if it is false, as it will be by default +when generating an executable image, long section names are truncated; +if true, the long section names extension is employed. The hook +points to a function that allows the value of the flag to be altered +at runtime, on formats that support long section names at all; on +other formats it points to a stub that returns an error indication. + +With input BFDs, the flag is set according to whether any long section +names are detected while reading the section headers. For a completely +new BFD, the flag is set to the default for the target format. This +information can be used by a client of the BFD library when deciding +what output format to generate, and means that a BFD that is opened +for read and subsequently converted to a writeable BFD and modified +in-place will retain whatever format it had on input. + +If @code{COFF_LONG_SECTION_NAMES} is simply defined (blank), or is +defined to the value "1", then long section names are enabled by +default; if it is defined to the value zero, they are disabled by +default (but still accepted in input BFDs). The header @file{coffcode.h} +defines a macro, @code{COFF_DEFAULT_LONG_SECTION_NAMES}, which is +used in the backends to initialise the backend data structure fields +appropriately; see the comments for further detail. + +@subsubsection Bit twiddling +Each flavour of coff supported in BFD has its own header file +describing the external layout of the structures. There is also +an internal description of the coff layout, in +@file{coff/internal.h}. A major function of the +coff backend is swapping the bytes and twiddling the bits to +translate the external form of the structures into the normal +internal form. This is all performed in the +@code{bfd_swap}_@i{thing}_@i{direction} routines. Some +elements are different sizes between different versions of +coff; it is the duty of the coff version specific include file +to override the definitions of various packing routines in +@file{coffcode.h}. E.g., the size of line number entry in coff is +sometimes 16 bits, and sometimes 32 bits. @code{#define}ing +@code{PUT_LNSZ_LNNO} and @code{GET_LNSZ_LNNO} will select the +correct one. No doubt, some day someone will find a version of +coff which has a varying field size not catered to at the +moment. To port BFD, that person will have to add more @code{#defines}. +Three of the bit twiddling routines are exported to +@code{gdb}; @code{coff_swap_aux_in}, @code{coff_swap_sym_in} +and @code{coff_swap_lineno_in}. @code{GDB} reads the symbol +table on its own, but uses BFD to fix things up. More of the +bit twiddlers are exported for @code{gas}; +@code{coff_swap_aux_out}, @code{coff_swap_sym_out}, +@code{coff_swap_lineno_out}, @code{coff_swap_reloc_out}, +@code{coff_swap_filehdr_out}, @code{coff_swap_aouthdr_out}, +@code{coff_swap_scnhdr_out}. @code{Gas} currently keeps track +of all the symbol table and reloc drudgery itself, thereby +saving the internal BFD overhead, but uses BFD to swap things +on the way out, making cross ports much safer. Doing so also +allows BFD (and thus the linker) to use the same header files +as @code{gas}, which makes one avenue to disaster disappear. + +@subsubsection Symbol reading +The simple canonical form for symbols used by BFD is not rich +enough to keep all the information available in a coff symbol +table. The back end gets around this problem by keeping the original +symbol table around, "behind the scenes". + +When a symbol table is requested (through a call to +@code{bfd_canonicalize_symtab}), a request gets through to +@code{coff_get_normalized_symtab}. This reads the symbol table from +the coff file and swaps all the structures inside into the +internal form. It also fixes up all the pointers in the table +(represented in the file by offsets from the first symbol in +the table) into physical pointers to elements in the new +internal table. This involves some work since the meanings of +fields change depending upon context: a field that is a +pointer to another structure in the symbol table at one moment +may be the size in bytes of a structure at the next. Another +pass is made over the table. All symbols which mark file names +(@code{C_FILE} symbols) are modified so that the internal +string points to the value in the auxent (the real filename) +rather than the normal text associated with the symbol +(@code{".file"}). + +At this time the symbol names are moved around. Coff stores +all symbols less than nine characters long physically +within the symbol table; longer strings are kept at the end of +the file in the string table. This pass moves all strings +into memory and replaces them with pointers to the strings. + +The symbol table is massaged once again, this time to create +the canonical table used by the BFD application. Each symbol +is inspected in turn, and a decision made (using the +@code{sclass} field) about the various flags to set in the +@code{asymbol}. @xref{Symbols}. The generated canonical table +shares strings with the hidden internal symbol table. + +Any linenumbers are read from the coff file too, and attached +to the symbols which own the functions the linenumbers belong to. + +@subsubsection Symbol writing +Writing a symbol to a coff file which didn't come from a coff +file will lose any debugging information. The @code{asymbol} +structure remembers the BFD from which the symbol was taken, and on +output the back end makes sure that the same destination target as +source target is present. + +When the symbols have come from a coff file then all the +debugging information is preserved. + +Symbol tables are provided for writing to the back end in a +vector of pointers to pointers. This allows applications like +the linker to accumulate and output large symbol tables +without having to do too much byte copying. + +This function runs through the provided symbol table and +patches each symbol marked as a file place holder +(@code{C_FILE}) to point to the next file place holder in the +list. It also marks each @code{offset} field in the list with +the offset from the first symbol of the current symbol. + +Another function of this procedure is to turn the canonical +value form of BFD into the form used by coff. Internally, BFD +expects symbol values to be offsets from a section base; so a +symbol physically at 0x120, but in a section starting at +0x100, would have the value 0x20. Coff expects symbols to +contain their final value, so symbols have their values +changed at this point to reflect their sum with their owning +section. This transformation uses the +@code{output_section} field of the @code{asymbol}'s +@code{asection} @xref{Sections}. + +@itemize @bullet + +@item +@code{coff_mangle_symbols} +@end itemize +This routine runs though the provided symbol table and uses +the offsets generated by the previous pass and the pointers +generated when the symbol table was read in to create the +structured hierarchy required by coff. It changes each pointer +to a symbol into the index into the symbol table of the asymbol. + +@itemize @bullet + +@item +@code{coff_write_symbols} +@end itemize +This routine runs through the symbol table and patches up the +symbols from their internal form into the coff way, calls the +bit twiddlers, and writes out the table to the file. + +@findex coff_symbol_type +@subsubsection @code{coff_symbol_type} +@strong{Description}@* +The hidden information for an @code{asymbol} is described in a +@code{combined_entry_type}: + + +@example + +typedef struct coff_ptr_struct +@{ + /* Remembers the offset from the first symbol in the file for + this symbol. Generated by coff_renumber_symbols. */ + unsigned int offset; + + /* Should the value of this symbol be renumbered. Used for + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */ + unsigned int fix_value : 1; + + /* Should the tag field of this symbol be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_tag : 1; + + /* Should the endidx field of this symbol be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_end : 1; + + /* Should the x_csect.x_scnlen field be renumbered. + Created by coff_pointerize_aux. */ + unsigned int fix_scnlen : 1; + + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the + index into the line number entries. Set by coff_slurp_symbol_table. */ + unsigned int fix_line : 1; + + /* The container for the symbol structure as read and translated + from the file. */ + union + @{ + union internal_auxent auxent; + struct internal_syment syment; + @} u; + + /* Selector for the union above. */ + bfd_boolean is_sym; +@} combined_entry_type; + + +/* Each canonical asymbol really looks like this: */ + +typedef struct coff_symbol_struct +@{ + /* The actual symbol which the rest of BFD works with */ + asymbol symbol; + + /* A pointer to the hidden information for this symbol */ + combined_entry_type *native; + + /* A pointer to the linenumber information for this symbol */ + struct lineno_cache_entry *lineno; + + /* Have the line numbers been relocated yet ? */ + bfd_boolean done_lineno; +@} coff_symbol_type; +@end example +@findex bfd_coff_backend_data +@subsubsection @code{bfd_coff_backend_data} + +@example +/* COFF symbol classifications. */ + +enum coff_symbol_classification +@{ + /* Global symbol. */ + COFF_SYMBOL_GLOBAL, + /* Common symbol. */ + COFF_SYMBOL_COMMON, + /* Undefined symbol. */ + COFF_SYMBOL_UNDEFINED, + /* Local symbol. */ + COFF_SYMBOL_LOCAL, + /* PE section symbol. */ + COFF_SYMBOL_PE_SECTION +@}; + +@end example +Special entry points for gdb to swap in coff symbol table parts: +@example +typedef struct +@{ + void (*_bfd_coff_swap_aux_in) + (bfd *, void *, int, int, int, int, void *); + + void (*_bfd_coff_swap_sym_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_lineno_in) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_aux_out) + (bfd *, void *, int, int, int, int, void *); + + unsigned int (*_bfd_coff_swap_sym_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_lineno_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_reloc_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_filehdr_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_aouthdr_out) + (bfd *, void *, void *); + + unsigned int (*_bfd_coff_swap_scnhdr_out) + (bfd *, void *, void *); + + unsigned int _bfd_filhsz; + unsigned int _bfd_aoutsz; + unsigned int _bfd_scnhsz; + unsigned int _bfd_symesz; + unsigned int _bfd_auxesz; + unsigned int _bfd_relsz; + unsigned int _bfd_linesz; + unsigned int _bfd_filnmlen; + bfd_boolean _bfd_coff_long_filenames; + + bfd_boolean _bfd_coff_long_section_names; + bfd_boolean (*_bfd_coff_set_long_section_names) + (bfd *, int); + + unsigned int _bfd_coff_default_section_alignment_power; + bfd_boolean _bfd_coff_force_symnames_in_strings; + unsigned int _bfd_coff_debug_string_prefix_length; + unsigned int _bfd_coff_max_nscns; + + void (*_bfd_coff_swap_filehdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_aouthdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_scnhdr_in) + (bfd *, void *, void *); + + void (*_bfd_coff_swap_reloc_in) + (bfd *abfd, void *, void *); + + bfd_boolean (*_bfd_coff_bad_format_hook) + (bfd *, void *); + + bfd_boolean (*_bfd_coff_set_arch_mach_hook) + (bfd *, void *); + + void * (*_bfd_coff_mkobject_hook) + (bfd *, void *, void *); + + bfd_boolean (*_bfd_styp_to_sec_flags_hook) + (bfd *, void *, const char *, asection *, flagword *); + + void (*_bfd_set_alignment_hook) + (bfd *, asection *, void *); + + bfd_boolean (*_bfd_coff_slurp_symbol_table) + (bfd *); + + bfd_boolean (*_bfd_coff_symname_in_debug) + (bfd *, struct internal_syment *); + + bfd_boolean (*_bfd_coff_pointerize_aux_hook) + (bfd *, combined_entry_type *, combined_entry_type *, + unsigned int, combined_entry_type *); + + bfd_boolean (*_bfd_coff_print_aux) + (bfd *, FILE *, combined_entry_type *, combined_entry_type *, + combined_entry_type *, unsigned int); + + void (*_bfd_coff_reloc16_extra_cases) + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *, + bfd_byte *, unsigned int *, unsigned int *); + + int (*_bfd_coff_reloc16_estimate) + (bfd *, asection *, arelent *, unsigned int, + struct bfd_link_info *); + + enum coff_symbol_classification (*_bfd_coff_classify_symbol) + (bfd *, struct internal_syment *); + + bfd_boolean (*_bfd_coff_compute_section_file_positions) + (bfd *); + + bfd_boolean (*_bfd_coff_start_final_link) + (bfd *, struct bfd_link_info *); + + bfd_boolean (*_bfd_coff_relocate_section) + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + struct internal_reloc *, struct internal_syment *, asection **); + + reloc_howto_type *(*_bfd_coff_rtype_to_howto) + (bfd *, asection *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *, + bfd_vma *); + + bfd_boolean (*_bfd_coff_adjust_symndx) + (bfd *, struct bfd_link_info *, bfd *, asection *, + struct internal_reloc *, bfd_boolean *); + + bfd_boolean (*_bfd_coff_link_add_one_symbol) + (struct bfd_link_info *, bfd *, const char *, flagword, + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean, + struct bfd_link_hash_entry **); + + bfd_boolean (*_bfd_coff_link_output_has_begun) + (bfd *, struct coff_final_link_info *); + + bfd_boolean (*_bfd_coff_final_link_postscript) + (bfd *, struct coff_final_link_info *); + + bfd_boolean (*_bfd_coff_print_pdata) + (bfd *, void *); + +@} bfd_coff_backend_data; + +#define coff_backend_info(abfd) \ + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) + +#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) + +#define bfd_coff_swap_sym_in(a,e,i) \ + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) + +#define bfd_coff_swap_lineno_in(a,e,i) \ + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) + +#define bfd_coff_swap_reloc_out(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) + +#define bfd_coff_swap_lineno_out(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) + +#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) + +#define bfd_coff_swap_sym_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) + +#define bfd_coff_swap_scnhdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) + +#define bfd_coff_swap_filehdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) + +#define bfd_coff_swap_aouthdr_out(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) + +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) +#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) +#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen) +#define bfd_coff_long_filenames(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_long_filenames) +#define bfd_coff_long_section_names(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_long_section_names) +#define bfd_coff_set_long_section_names(abfd, enable) \ + ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable)) +#define bfd_coff_default_section_alignment_power(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) +#define bfd_coff_max_nscns(abfd) \ + (coff_backend_info (abfd)->_bfd_coff_max_nscns) + +#define bfd_coff_swap_filehdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) + +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) + +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) + +#define bfd_coff_swap_reloc_in(abfd, i, o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) + +#define bfd_coff_bad_format_hook(abfd, filehdr) \ + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) + +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) +#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\ + (abfd, filehdr, aouthdr)) + +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\ + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\ + (abfd, scnhdr, name, section, flags_ptr)) + +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) + +#define bfd_coff_slurp_symbol_table(abfd)\ + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) + +#define bfd_coff_symname_in_debug(abfd, sym)\ + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) + +#define bfd_coff_force_symnames_in_strings(abfd)\ + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings) + +#define bfd_coff_debug_string_prefix_length(abfd)\ + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length) + +#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ + (abfd, file, base, symbol, aux, indaux)) + +#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\ + reloc, data, src_ptr, dst_ptr)\ + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) + +#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ + (abfd, section, reloc, shrink, link_info)) + +#define bfd_coff_classify_symbol(abfd, sym)\ + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\ + (abfd, sym)) + +#define bfd_coff_compute_section_file_positions(abfd)\ + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ + (abfd)) + +#define bfd_coff_start_final_link(obfd, info)\ + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ + (obfd, info)) +#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ + (obfd, info, ibfd, o, con, rel, isyms, secs)) +#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ + (abfd, sec, rel, h, sym, addendp)) +#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ + (obfd, info, ibfd, sec, rel, adjustedp)) +#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ + value, string, cp, coll, hashp)\ + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ + (info, abfd, name, flags, section, value, string, cp, coll, hashp)) + +#define bfd_coff_link_output_has_begun(a,p) \ + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) +#define bfd_coff_final_link_postscript(a,p) \ + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p)) + +#define bfd_coff_have_print_pdata(a) \ + (coff_backend_info (a)->_bfd_coff_print_pdata) +#define bfd_coff_print_pdata(a,p) \ + ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p)) + +/* Macro: Returns true if the bfd is a PE executable as opposed to a + PE object file. */ +#define bfd_pei_p(abfd) \ + (CONST_STRNEQ ((abfd)->xvec->name, "pei-")) +@end example +@subsubsection Writing relocations +To write relocations, the back end steps though the +canonical relocation table and create an +@code{internal_reloc}. The symbol index to use is removed from +the @code{offset} field in the symbol table supplied. The +address comes directly from the sum of the section base +address and the relocation offset; the type is dug directly +from the howto field. Then the @code{internal_reloc} is +swapped into the shape of an @code{external_reloc} and written +out to disk. + +@subsubsection Reading linenumbers +Creating the linenumber table is done by reading in the entire +coff linenumber table, and creating another table for internal use. + +A coff linenumber table is structured so that each function +is marked as having a line number of 0. Each line within the +function is an offset from the first line in the function. The +base of the line number information for the table is stored in +the symbol associated with the function. + +Note: The PE format uses line number 0 for a flag indicating a +new source file. + +The information is copied from the external to the internal +table, and each symbol which marks a function is marked by +pointing its... + +How does this work ? + +@subsubsection Reading relocations +Coff relocations are easily transformed into the internal BFD form +(@code{arelent}). + +Reading a coff relocation table is done in the following stages: + +@itemize @bullet + +@item +Read the entire coff relocation table into memory. + +@item +Process each relocation in turn; first swap it from the +external to the internal form. + +@item +Turn the symbol referenced in the relocation's symbol index +into a pointer into the canonical symbol table. +This table is the same as the one returned by a call to +@code{bfd_canonicalize_symtab}. The back end will call that +routine and save the result if a canonicalization hasn't been done. + +@item +The reloc index is turned into a pointer to a howto +structure, in a back end specific way. For instance, the 386 +and 960 use the @code{r_type} to directly produce an index +into a howto table vector; the 88k subtracts a number from the +@code{r_type} field and creates an addend field. +@end itemize + diff --git a/bfd/doc/core.texi b/bfd/doc/core.texi new file mode 100644 index 00000000000..cd98c4ac403 --- /dev/null +++ b/bfd/doc/core.texi @@ -0,0 +1,70 @@ +@section Core files + + +@subsection Core file functions + + +@strong{Description}@* +These are functions pertaining to core files. + +@findex bfd_core_file_failing_command +@subsubsection @code{bfd_core_file_failing_command} +@strong{Synopsis} +@example +const char *bfd_core_file_failing_command (bfd *abfd); +@end example +@strong{Description}@* +Return a read-only string explaining which program was running +when it failed and produced the core file @var{abfd}. + +@findex bfd_core_file_failing_signal +@subsubsection @code{bfd_core_file_failing_signal} +@strong{Synopsis} +@example +int bfd_core_file_failing_signal (bfd *abfd); +@end example +@strong{Description}@* +Returns the signal number which caused the core dump which +generated the file the BFD @var{abfd} is attached to. + +@findex bfd_core_file_pid +@subsubsection @code{bfd_core_file_pid} +@strong{Synopsis} +@example +int bfd_core_file_pid (bfd *abfd); +@end example +@strong{Description}@* +Returns the PID of the process the core dump the BFD +@var{abfd} is attached to was generated from. + +@findex core_file_matches_executable_p +@subsubsection @code{core_file_matches_executable_p} +@strong{Synopsis} +@example +bfd_boolean core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); +@end example +@strong{Description}@* +Return @code{TRUE} if the core file attached to @var{core_bfd} +was generated by a run of the executable file attached to +@var{exec_bfd}, @code{FALSE} otherwise. + +@findex generic_core_file_matches_executable_p +@subsubsection @code{generic_core_file_matches_executable_p} +@strong{Synopsis} +@example +bfd_boolean generic_core_file_matches_executable_p + (bfd *core_bfd, bfd *exec_bfd); +@end example +@strong{Description}@* +Return TRUE if the core file attached to @var{core_bfd} +was generated by a run of the executable file attached +to @var{exec_bfd}. The match is based on executable +basenames only. + +Note: When not able to determine the core file failing +command or the executable name, we still return TRUE even +though we're not sure that core file and executable match. +This is to avoid generating a false warning in situations +where we really don't know whether they match or not. + diff --git a/bfd/doc/elf.texi b/bfd/doc/elf.texi new file mode 100644 index 00000000000..40533860c85 --- /dev/null +++ b/bfd/doc/elf.texi @@ -0,0 +1,9 @@ +@section ELF backends +BFD support for ELF formats is being worked on. +Currently, the best supported back ends are for sparc and i386 +(running svr4 or Solaris 2). + +Documentation of the internals of the support code still needs +to be written. The code is changing quickly enough that we +haven't bothered yet. + diff --git a/bfd/doc/elfcode.texi b/bfd/doc/elfcode.texi new file mode 100644 index 00000000000..e69de29bb2d diff --git a/bfd/doc/format.texi b/bfd/doc/format.texi new file mode 100644 index 00000000000..9674acff440 --- /dev/null +++ b/bfd/doc/format.texi @@ -0,0 +1,112 @@ +@section File formats +A format is a BFD concept of high level file contents type. The +formats supported by BFD are: + +@itemize @bullet + +@item +@code{bfd_object} +@end itemize +The BFD may contain data, symbols, relocations and debug info. + +@itemize @bullet + +@item +@code{bfd_archive} +@end itemize +The BFD contains other BFDs and an optional index. + +@itemize @bullet + +@item +@code{bfd_core} +@end itemize +The BFD contains the result of an executable core dump. + +@subsection File format functions + + +@findex bfd_check_format +@subsubsection @code{bfd_check_format} +@strong{Synopsis} +@example +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format); +@end example +@strong{Description}@* +Verify if the file attached to the BFD @var{abfd} is compatible +with the format @var{format} (i.e., one of @code{bfd_object}, +@code{bfd_archive} or @code{bfd_core}). + +If the BFD has been set to a specific target before the +call, only the named target and format combination is +checked. If the target has not been set, or has been set to +@code{default}, then all the known target backends is +interrogated to determine a match. If the default target +matches, it is used. If not, exactly one target must recognize +the file, or an error results. + +The function returns @code{TRUE} on success, otherwise @code{FALSE} +with one of the following error codes: + +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - +if @code{format} is not one of @code{bfd_object}, @code{bfd_archive} or +@code{bfd_core}. + +@item +@code{bfd_error_system_call} - +if an error occured during a read - even some file mismatches +can cause bfd_error_system_calls. + +@item +@code{file_not_recognised} - +none of the backends recognised the file format. + +@item +@code{bfd_error_file_ambiguously_recognized} - +more than one backend recognised the file format. +@end itemize + +@findex bfd_check_format_matches +@subsubsection @code{bfd_check_format_matches} +@strong{Synopsis} +@example +bfd_boolean bfd_check_format_matches + (bfd *abfd, bfd_format format, char ***matching); +@end example +@strong{Description}@* +Like @code{bfd_check_format}, except when it returns FALSE with +@code{bfd_errno} set to @code{bfd_error_file_ambiguously_recognized}. In that +case, if @var{matching} is not NULL, it will be filled in with +a NULL-terminated list of the names of the formats that matched, +allocated with @code{malloc}. +Then the user may choose a format and try again. + +When done with the list that @var{matching} points to, the caller +should free it. + +@findex bfd_set_format +@subsubsection @code{bfd_set_format} +@strong{Synopsis} +@example +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format); +@end example +@strong{Description}@* +This function sets the file format of the BFD @var{abfd} to the +format @var{format}. If the target set in the BFD does not +support the format requested, the format is invalid, or the BFD +is not open for writing, then an error occurs. + +@findex bfd_format_string +@subsubsection @code{bfd_format_string} +@strong{Synopsis} +@example +const char *bfd_format_string (bfd_format format); +@end example +@strong{Description}@* +Return a pointer to a const string +@code{invalid}, @code{object}, @code{archive}, @code{core}, or @code{unknown}, +depending upon the value of @var{format}. + diff --git a/bfd/doc/hash.texi b/bfd/doc/hash.texi new file mode 100644 index 00000000000..88d9585cc40 --- /dev/null +++ b/bfd/doc/hash.texi @@ -0,0 +1,247 @@ +@section Hash Tables +@cindex Hash tables +BFD provides a simple set of hash table functions. Routines +are provided to initialize a hash table, to free a hash table, +to look up a string in a hash table and optionally create an +entry for it, and to traverse a hash table. There is +currently no routine to delete an string from a hash table. + +The basic hash table does not permit any data to be stored +with a string. However, a hash table is designed to present a +base class from which other types of hash tables may be +derived. These derived types may store additional information +with the string. Hash tables were implemented in this way, +rather than simply providing a data pointer in a hash table +entry, because they were designed for use by the linker back +ends. The linker may create thousands of hash table entries, +and the overhead of allocating private data and storing and +following pointers becomes noticeable. + +The basic hash table code is in @code{hash.c}. + +@menu +* Creating and Freeing a Hash Table:: +* Looking Up or Entering a String:: +* Traversing a Hash Table:: +* Deriving a New Hash Table Type:: +@end menu + +@node Creating and Freeing a Hash Table, Looking Up or Entering a String, Hash Tables, Hash Tables +@subsection Creating and freeing a hash table +@findex bfd_hash_table_init +@findex bfd_hash_table_init_n +To create a hash table, create an instance of a @code{struct +bfd_hash_table} (defined in @code{bfd.h}) and call +@code{bfd_hash_table_init} (if you know approximately how many +entries you will need, the function @code{bfd_hash_table_init_n}, +which takes a @var{size} argument, may be used). +@code{bfd_hash_table_init} returns @code{FALSE} if some sort of +error occurs. + +@findex bfd_hash_newfunc +The function @code{bfd_hash_table_init} take as an argument a +function to use to create new entries. For a basic hash +table, use the function @code{bfd_hash_newfunc}. @xref{Deriving +a New Hash Table Type}, for why you would want to use a +different value for this argument. + +@findex bfd_hash_allocate +@code{bfd_hash_table_init} will create an objalloc which will be +used to allocate new entries. You may allocate memory on this +objalloc using @code{bfd_hash_allocate}. + +@findex bfd_hash_table_free +Use @code{bfd_hash_table_free} to free up all the memory that has +been allocated for a hash table. This will not free up the +@code{struct bfd_hash_table} itself, which you must provide. + +@findex bfd_hash_set_default_size +Use @code{bfd_hash_set_default_size} to set the default size of +hash table to use. + +@node Looking Up or Entering a String, Traversing a Hash Table, Creating and Freeing a Hash Table, Hash Tables +@subsection Looking up or entering a string +@findex bfd_hash_lookup +The function @code{bfd_hash_lookup} is used both to look up a +string in the hash table and to create a new entry. + +If the @var{create} argument is @code{FALSE}, @code{bfd_hash_lookup} +will look up a string. If the string is found, it will +returns a pointer to a @code{struct bfd_hash_entry}. If the +string is not found in the table @code{bfd_hash_lookup} will +return @code{NULL}. You should not modify any of the fields in +the returns @code{struct bfd_hash_entry}. + +If the @var{create} argument is @code{TRUE}, the string will be +entered into the hash table if it is not already there. +Either way a pointer to a @code{struct bfd_hash_entry} will be +returned, either to the existing structure or to a newly +created one. In this case, a @code{NULL} return means that an +error occurred. + +If the @var{create} argument is @code{TRUE}, and a new entry is +created, the @var{copy} argument is used to decide whether to +copy the string onto the hash table objalloc or not. If +@var{copy} is passed as @code{FALSE}, you must be careful not to +deallocate or modify the string as long as the hash table +exists. + +@node Traversing a Hash Table, Deriving a New Hash Table Type, Looking Up or Entering a String, Hash Tables +@subsection Traversing a hash table +@findex bfd_hash_traverse +The function @code{bfd_hash_traverse} may be used to traverse a +hash table, calling a function on each element. The traversal +is done in a random order. + +@code{bfd_hash_traverse} takes as arguments a function and a +generic @code{void *} pointer. The function is called with a +hash table entry (a @code{struct bfd_hash_entry *}) and the +generic pointer passed to @code{bfd_hash_traverse}. The function +must return a @code{boolean} value, which indicates whether to +continue traversing the hash table. If the function returns +@code{FALSE}, @code{bfd_hash_traverse} will stop the traversal and +return immediately. + +@node Deriving a New Hash Table Type, , Traversing a Hash Table, Hash Tables +@subsection Deriving a new hash table type +Many uses of hash tables want to store additional information +which each entry in the hash table. Some also find it +convenient to store additional information with the hash table +itself. This may be done using a derived hash table. + +Since C is not an object oriented language, creating a derived +hash table requires sticking together some boilerplate +routines with a few differences specific to the type of hash +table you want to create. + +An example of a derived hash table is the linker hash table. +The structures for this are defined in @code{bfdlink.h}. The +functions are in @code{linker.c}. + +You may also derive a hash table from an already derived hash +table. For example, the a.out linker backend code uses a hash +table derived from the linker hash table. + +@menu +* Define the Derived Structures:: +* Write the Derived Creation Routine:: +* Write Other Derived Routines:: +@end menu + +@node Define the Derived Structures, Write the Derived Creation Routine, Deriving a New Hash Table Type, Deriving a New Hash Table Type +@subsubsection Define the derived structures +You must define a structure for an entry in the hash table, +and a structure for the hash table itself. + +The first field in the structure for an entry in the hash +table must be of the type used for an entry in the hash table +you are deriving from. If you are deriving from a basic hash +table this is @code{struct bfd_hash_entry}, which is defined in +@code{bfd.h}. The first field in the structure for the hash +table itself must be of the type of the hash table you are +deriving from itself. If you are deriving from a basic hash +table, this is @code{struct bfd_hash_table}. + +For example, the linker hash table defines @code{struct +bfd_link_hash_entry} (in @code{bfdlink.h}). The first field, +@code{root}, is of type @code{struct bfd_hash_entry}. Similarly, +the first field in @code{struct bfd_link_hash_table}, @code{table}, +is of type @code{struct bfd_hash_table}. + +@node Write the Derived Creation Routine, Write Other Derived Routines, Define the Derived Structures, Deriving a New Hash Table Type +@subsubsection Write the derived creation routine +You must write a routine which will create and initialize an +entry in the hash table. This routine is passed as the +function argument to @code{bfd_hash_table_init}. + +In order to permit other hash tables to be derived from the +hash table you are creating, this routine must be written in a +standard way. + +The first argument to the creation routine is a pointer to a +hash table entry. This may be @code{NULL}, in which case the +routine should allocate the right amount of space. Otherwise +the space has already been allocated by a hash table type +derived from this one. + +After allocating space, the creation routine must call the +creation routine of the hash table type it is derived from, +passing in a pointer to the space it just allocated. This +will initialize any fields used by the base hash table. + +Finally the creation routine must initialize any local fields +for the new hash table type. + +Here is a boilerplate example of a creation routine. +@var{function_name} is the name of the routine. +@var{entry_type} is the type of an entry in the hash table you +are creating. @var{base_newfunc} is the name of the creation +routine of the hash table type your hash table is derived +from. + + +@example +struct bfd_hash_entry * +@var{function_name} (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) +@{ + struct @var{entry_type} *ret = (@var{entry_type} *) entry; + + /* Allocate the structure if it has not already been allocated by a + derived class. */ + if (ret == NULL) + @{ + ret = bfd_hash_allocate (table, sizeof (* ret)); + if (ret == NULL) + return NULL; + @} + + /* Call the allocation method of the base class. */ + ret = ((@var{entry_type} *) + @var{base_newfunc} ((struct bfd_hash_entry *) ret, table, string)); + + /* Initialize the local fields here. */ + + return (struct bfd_hash_entry *) ret; +@} +@end example +@strong{Description}@* +The creation routine for the linker hash table, which is in +@code{linker.c}, looks just like this example. +@var{function_name} is @code{_bfd_link_hash_newfunc}. +@var{entry_type} is @code{struct bfd_link_hash_entry}. +@var{base_newfunc} is @code{bfd_hash_newfunc}, the creation +routine for a basic hash table. + +@code{_bfd_link_hash_newfunc} also initializes the local fields +in a linker hash table entry: @code{type}, @code{written} and +@code{next}. + +@node Write Other Derived Routines, , Write the Derived Creation Routine, Deriving a New Hash Table Type +@subsubsection Write other derived routines +You will want to write other routines for your new hash table, +as well. + +You will want an initialization routine which calls the +initialization routine of the hash table you are deriving from +and initializes any other local fields. For the linker hash +table, this is @code{_bfd_link_hash_table_init} in @code{linker.c}. + +You will want a lookup routine which calls the lookup routine +of the hash table you are deriving from and casts the result. +The linker hash table uses @code{bfd_link_hash_lookup} in +@code{linker.c} (this actually takes an additional argument which +it uses to decide how to return the looked up value). + +You may want a traversal routine. This should just call the +traversal routine of the hash table you are deriving from with +appropriate casts. The linker hash table uses +@code{bfd_link_hash_traverse} in @code{linker.c}. + +These routines may simply be defined as macros. For example, +the a.out backend linker hash table, which is derived from the +linker hash table, uses macros for the lookup and traversal +routines. These are @code{aout_link_hash_lookup} and +@code{aout_link_hash_traverse} in aoutx.h. + diff --git a/bfd/doc/init.texi b/bfd/doc/init.texi new file mode 100644 index 00000000000..ab735f8e986 --- /dev/null +++ b/bfd/doc/init.texi @@ -0,0 +1,16 @@ +@section Initialization + + +@subsection Initialization functions +These are the functions that handle initializing a BFD. + +@findex bfd_init +@subsubsection @code{bfd_init} +@strong{Synopsis} +@example +void bfd_init (void); +@end example +@strong{Description}@* +This routine must be called before any other BFD function to +initialize magical internal data structures. + diff --git a/bfd/doc/libbfd.texi b/bfd/doc/libbfd.texi new file mode 100644 index 00000000000..b0b03003a6b --- /dev/null +++ b/bfd/doc/libbfd.texi @@ -0,0 +1,179 @@ +@section Implementation details + + +@subsection Internal functions + + +@strong{Description}@* +These routines are used within BFD. +They are not intended for export, but are documented here for +completeness. + +@findex bfd_write_bigendian_4byte_int +@subsubsection @code{bfd_write_bigendian_4byte_int} +@strong{Synopsis} +@example +bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int); +@end example +@strong{Description}@* +Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big +endian order regardless of what else is going on. This is useful in +archives. + +@findex bfd_put_size +@subsubsection @code{bfd_put_size} +@findex bfd_get_size +@subsubsection @code{bfd_get_size} +@strong{Description}@* +These macros as used for reading and writing raw data in +sections; each access (except for bytes) is vectored through +the target format of the BFD and mangled accordingly. The +mangling performs any necessary endian translations and +removes alignment restrictions. Note that types accepted and +returned by these macros are identical so they can be swapped +around in macros---for example, @file{libaout.h} defines @code{GET_WORD} +to either @code{bfd_get_32} or @code{bfd_get_64}. + +In the put routines, @var{val} must be a @code{bfd_vma}. If we are on a +system without prototypes, the caller is responsible for making +sure that is true, with a cast if necessary. We don't cast +them in the macro definitions because that would prevent @code{lint} +or @code{gcc -Wall} from detecting sins such as passing a pointer. +To detect calling these with less than a @code{bfd_vma}, use +@code{gcc -Wconversion} on a host with 64 bit @code{bfd_vma}'s. +@example + +/* Byte swapping macros for user section data. */ + +#define bfd_put_8(abfd, val, ptr) \ + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff)) +#define bfd_put_signed_8 \ + bfd_put_8 +#define bfd_get_8(abfd, ptr) \ + (*(const unsigned char *) (ptr) & 0xff) +#define bfd_get_signed_8(abfd, ptr) \ + (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80) + +#define bfd_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx16, ((val),(ptr))) +#define bfd_put_signed_16 \ + bfd_put_16 +#define bfd_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx16, (ptr)) +#define bfd_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) + +#define bfd_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx32, ((val),(ptr))) +#define bfd_put_signed_32 \ + bfd_put_32 +#define bfd_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx32, (ptr)) +#define bfd_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_32, (ptr)) + +#define bfd_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_putx64, ((val), (ptr))) +#define bfd_put_signed_64 \ + bfd_put_64 +#define bfd_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx64, (ptr)) +#define bfd_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_getx_signed_64, (ptr)) + +#define bfd_get(bits, abfd, ptr) \ + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \ + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \ + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \ + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \ + : (abort (), (bfd_vma) - 1)) + +#define bfd_put(bits, abfd, val, ptr) \ + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \ + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \ + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \ + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \ + : (abort (), (void) 0)) + +@end example + +@findex bfd_h_put_size +@subsubsection @code{bfd_h_put_size} +@strong{Description}@* +These macros have the same function as their @code{bfd_get_x} +brethren, except that they are used for removing information +for the header records of object files. Believe it or not, +some object files keep their header records in big endian +order and their data in little endian order. +@example + +/* Byte swapping macros for file header data. */ + +#define bfd_h_put_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) +#define bfd_h_put_signed_8(abfd, val, ptr) \ + bfd_put_8 (abfd, val, ptr) +#define bfd_h_get_8(abfd, ptr) \ + bfd_get_8 (abfd, ptr) +#define bfd_h_get_signed_8(abfd, ptr) \ + bfd_get_signed_8 (abfd, ptr) + +#define bfd_h_put_16(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx16, (val, ptr)) +#define bfd_h_put_signed_16 \ + bfd_h_put_16 +#define bfd_h_get_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx16, (ptr)) +#define bfd_h_get_signed_16(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr)) + +#define bfd_h_put_32(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx32, (val, ptr)) +#define bfd_h_put_signed_32 \ + bfd_h_put_32 +#define bfd_h_get_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx32, (ptr)) +#define bfd_h_get_signed_32(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr)) + +#define bfd_h_put_64(abfd, val, ptr) \ + BFD_SEND (abfd, bfd_h_putx64, (val, ptr)) +#define bfd_h_put_signed_64 \ + bfd_h_put_64 +#define bfd_h_get_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx64, (ptr)) +#define bfd_h_get_signed_64(abfd, ptr) \ + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr)) + +/* Aliases for the above, which should eventually go away. */ + +#define H_PUT_64 bfd_h_put_64 +#define H_PUT_32 bfd_h_put_32 +#define H_PUT_16 bfd_h_put_16 +#define H_PUT_8 bfd_h_put_8 +#define H_PUT_S64 bfd_h_put_signed_64 +#define H_PUT_S32 bfd_h_put_signed_32 +#define H_PUT_S16 bfd_h_put_signed_16 +#define H_PUT_S8 bfd_h_put_signed_8 +#define H_GET_64 bfd_h_get_64 +#define H_GET_32 bfd_h_get_32 +#define H_GET_16 bfd_h_get_16 +#define H_GET_8 bfd_h_get_8 +#define H_GET_S64 bfd_h_get_signed_64 +#define H_GET_S32 bfd_h_get_signed_32 +#define H_GET_S16 bfd_h_get_signed_16 +#define H_GET_S8 bfd_h_get_signed_8 + + +@end example + +@findex bfd_log2 +@subsubsection @code{bfd_log2} +@strong{Synopsis} +@example +unsigned int bfd_log2 (bfd_vma x); +@end example +@strong{Description}@* +Return the log base 2 of the value supplied, rounded up. E.g., an +@var{x} of 1025 returns 11. A @var{x} of 0 returns 0. + diff --git a/bfd/doc/linker.texi b/bfd/doc/linker.texi new file mode 100644 index 00000000000..81c208b3b08 --- /dev/null +++ b/bfd/doc/linker.texi @@ -0,0 +1,420 @@ +@section Linker Functions +@cindex Linker +The linker uses three special entry points in the BFD target +vector. It is not necessary to write special routines for +these entry points when creating a new BFD back end, since +generic versions are provided. However, writing them can +speed up linking and make it use significantly less runtime +memory. + +The first routine creates a hash table used by the other +routines. The second routine adds the symbols from an object +file to the hash table. The third routine takes all the +object files and links them together to create the output +file. These routines are designed so that the linker proper +does not need to know anything about the symbols in the object +files that it is linking. The linker merely arranges the +sections as directed by the linker script and lets BFD handle +the details of symbols and relocs. + +The second routine and third routines are passed a pointer to +a @code{struct bfd_link_info} structure (defined in +@code{bfdlink.h}) which holds information relevant to the link, +including the linker hash table (which was created by the +first routine) and a set of callback functions to the linker +proper. + +The generic linker routines are in @code{linker.c}, and use the +header file @code{genlink.h}. As of this writing, the only back +ends which have implemented versions of these routines are +a.out (in @code{aoutx.h}) and ECOFF (in @code{ecoff.c}). The a.out +routines are used as examples throughout this section. + +@menu +* Creating a Linker Hash Table:: +* Adding Symbols to the Hash Table:: +* Performing the Final Link:: +@end menu + +@node Creating a Linker Hash Table, Adding Symbols to the Hash Table, Linker Functions, Linker Functions +@subsection Creating a linker hash table +@cindex _bfd_link_hash_table_create in target vector +@cindex target vector (_bfd_link_hash_table_create) +The linker routines must create a hash table, which must be +derived from @code{struct bfd_link_hash_table} described in +@code{bfdlink.c}. @xref{Hash Tables}, for information on how to +create a derived hash table. This entry point is called using +the target vector of the linker output file. + +The @code{_bfd_link_hash_table_create} entry point must allocate +and initialize an instance of the desired hash table. If the +back end does not require any additional information to be +stored with the entries in the hash table, the entry point may +simply create a @code{struct bfd_link_hash_table}. Most likely, +however, some additional information will be needed. + +For example, with each entry in the hash table the a.out +linker keeps the index the symbol has in the final output file +(this index number is used so that when doing a relocatable +link the symbol index used in the output file can be quickly +filled in when copying over a reloc). The a.out linker code +defines the required structures and functions for a hash table +derived from @code{struct bfd_link_hash_table}. The a.out linker +hash table is created by the function +@code{NAME(aout,link_hash_table_create)}; it simply allocates +space for the hash table, initializes it, and returns a +pointer to it. + +When writing the linker routines for a new back end, you will +generally not know exactly which fields will be required until +you have finished. You should simply create a new hash table +which defines no additional fields, and then simply add fields +as they become necessary. + +@node Adding Symbols to the Hash Table, Performing the Final Link, Creating a Linker Hash Table, Linker Functions +@subsection Adding symbols to the hash table +@cindex _bfd_link_add_symbols in target vector +@cindex target vector (_bfd_link_add_symbols) +The linker proper will call the @code{_bfd_link_add_symbols} +entry point for each object file or archive which is to be +linked (typically these are the files named on the command +line, but some may also come from the linker script). The +entry point is responsible for examining the file. For an +object file, BFD must add any relevant symbol information to +the hash table. For an archive, BFD must determine which +elements of the archive should be used and adding them to the +link. + +The a.out version of this entry point is +@code{NAME(aout,link_add_symbols)}. + +@menu +* Differing file formats:: +* Adding symbols from an object file:: +* Adding symbols from an archive:: +@end menu + +@node Differing file formats, Adding symbols from an object file, Adding Symbols to the Hash Table, Adding Symbols to the Hash Table +@subsubsection Differing file formats +Normally all the files involved in a link will be of the same +format, but it is also possible to link together different +format object files, and the back end must support that. The +@code{_bfd_link_add_symbols} entry point is called via the target +vector of the file to be added. This has an important +consequence: the function may not assume that the hash table +is the type created by the corresponding +@code{_bfd_link_hash_table_create} vector. All the +@code{_bfd_link_add_symbols} function can assume about the hash +table is that it is derived from @code{struct +bfd_link_hash_table}. + +Sometimes the @code{_bfd_link_add_symbols} function must store +some information in the hash table entry to be used by the +@code{_bfd_final_link} function. In such a case the output bfd +xvec must be checked to make sure that the hash table was +created by an object file of the same format. + +The @code{_bfd_final_link} routine must be prepared to handle a +hash entry without any extra information added by the +@code{_bfd_link_add_symbols} function. A hash entry without +extra information will also occur when the linker script +directs the linker to create a symbol. Note that, regardless +of how a hash table entry is added, all the fields will be +initialized to some sort of null value by the hash table entry +initialization function. + +See @code{ecoff_link_add_externals} for an example of how to +check the output bfd before saving information (in this +case, the ECOFF external symbol debugging information) in a +hash table entry. + +@node Adding symbols from an object file, Adding symbols from an archive, Differing file formats, Adding Symbols to the Hash Table +@subsubsection Adding symbols from an object file +When the @code{_bfd_link_add_symbols} routine is passed an object +file, it must add all externally visible symbols in that +object file to the hash table. The actual work of adding the +symbol to the hash table is normally handled by the function +@code{_bfd_generic_link_add_one_symbol}. The +@code{_bfd_link_add_symbols} routine is responsible for reading +all the symbols from the object file and passing the correct +information to @code{_bfd_generic_link_add_one_symbol}. + +The @code{_bfd_link_add_symbols} routine should not use +@code{bfd_canonicalize_symtab} to read the symbols. The point of +providing this routine is to avoid the overhead of converting +the symbols into generic @code{asymbol} structures. + +@findex _bfd_generic_link_add_one_symbol +@code{_bfd_generic_link_add_one_symbol} handles the details of +combining common symbols, warning about multiple definitions, +and so forth. It takes arguments which describe the symbol to +add, notably symbol flags, a section, and an offset. The +symbol flags include such things as @code{BSF_WEAK} or +@code{BSF_INDIRECT}. The section is a section in the object +file, or something like @code{bfd_und_section_ptr} for an undefined +symbol or @code{bfd_com_section_ptr} for a common symbol. + +If the @code{_bfd_final_link} routine is also going to need to +read the symbol information, the @code{_bfd_link_add_symbols} +routine should save it somewhere attached to the object file +BFD. However, the information should only be saved if the +@code{keep_memory} field of the @code{info} argument is TRUE, so +that the @code{-no-keep-memory} linker switch is effective. + +The a.out function which adds symbols from an object file is +@code{aout_link_add_object_symbols}, and most of the interesting +work is in @code{aout_link_add_symbols}. The latter saves +pointers to the hash tables entries created by +@code{_bfd_generic_link_add_one_symbol} indexed by symbol number, +so that the @code{_bfd_final_link} routine does not have to call +the hash table lookup routine to locate the entry. + +@node Adding symbols from an archive, , Adding symbols from an object file, Adding Symbols to the Hash Table +@subsubsection Adding symbols from an archive +When the @code{_bfd_link_add_symbols} routine is passed an +archive, it must look through the symbols defined by the +archive and decide which elements of the archive should be +included in the link. For each such element it must call the +@code{add_archive_element} linker callback, and it must add the +symbols from the object file to the linker hash table. (The +callback may in fact indicate that a replacement BFD should be +used, in which case the symbols from that BFD should be added +to the linker hash table instead.) + +@findex _bfd_generic_link_add_archive_symbols +In most cases the work of looking through the symbols in the +archive should be done by the +@code{_bfd_generic_link_add_archive_symbols} function. +@code{_bfd_generic_link_add_archive_symbols} is passed a function +to call to make the final decision about adding an archive +element to the link and to do the actual work of adding the +symbols to the linker hash table. If the element is to +be included, the @code{add_archive_element} linker callback +routine must be called with the element as an argument, and +the element's symbols must be added to the linker hash table +just as though the element had itself been passed to the +@code{_bfd_link_add_symbols} function. + +When the a.out @code{_bfd_link_add_symbols} function receives an +archive, it calls @code{_bfd_generic_link_add_archive_symbols} +passing @code{aout_link_check_archive_element} as the function +argument. @code{aout_link_check_archive_element} calls +@code{aout_link_check_ar_symbols}. If the latter decides to add +the element (an element is only added if it provides a real, +non-common, definition for a previously undefined or common +symbol) it calls the @code{add_archive_element} callback and then +@code{aout_link_check_archive_element} calls +@code{aout_link_add_symbols} to actually add the symbols to the +linker hash table - possibly those of a substitute BFD, if the +@code{add_archive_element} callback avails itself of that option. + +The ECOFF back end is unusual in that it does not normally +call @code{_bfd_generic_link_add_archive_symbols}, because ECOFF +archives already contain a hash table of symbols. The ECOFF +back end searches the archive itself to avoid the overhead of +creating a new hash table. + +@node Performing the Final Link, , Adding Symbols to the Hash Table, Linker Functions +@subsection Performing the final link +@cindex _bfd_link_final_link in target vector +@cindex target vector (_bfd_final_link) +When all the input files have been processed, the linker calls +the @code{_bfd_final_link} entry point of the output BFD. This +routine is responsible for producing the final output file, +which has several aspects. It must relocate the contents of +the input sections and copy the data into the output sections. +It must build an output symbol table including any local +symbols from the input files and the global symbols from the +hash table. When producing relocatable output, it must +modify the input relocs and write them into the output file. +There may also be object format dependent work to be done. + +The linker will also call the @code{write_object_contents} entry +point when the BFD is closed. The two entry points must work +together in order to produce the correct output file. + +The details of how this works are inevitably dependent upon +the specific object file format. The a.out +@code{_bfd_final_link} routine is @code{NAME(aout,final_link)}. + +@menu +* Information provided by the linker:: +* Relocating the section contents:: +* Writing the symbol table:: +@end menu + +@node Information provided by the linker, Relocating the section contents, Performing the Final Link, Performing the Final Link +@subsubsection Information provided by the linker +Before the linker calls the @code{_bfd_final_link} entry point, +it sets up some data structures for the function to use. + +The @code{input_bfds} field of the @code{bfd_link_info} structure +will point to a list of all the input files included in the +link. These files are linked through the @code{link.next} field +of the @code{bfd} structure. + +Each section in the output file will have a list of +@code{link_order} structures attached to the @code{map_head.link_order} +field (the @code{link_order} structure is defined in +@code{bfdlink.h}). These structures describe how to create the +contents of the output section in terms of the contents of +various input sections, fill constants, and, eventually, other +types of information. They also describe relocs that must be +created by the BFD backend, but do not correspond to any input +file; this is used to support -Ur, which builds constructors +while generating a relocatable object file. + +@node Relocating the section contents, Writing the symbol table, Information provided by the linker, Performing the Final Link +@subsubsection Relocating the section contents +The @code{_bfd_final_link} function should look through the +@code{link_order} structures attached to each section of the +output file. Each @code{link_order} structure should either be +handled specially, or it should be passed to the function +@code{_bfd_default_link_order} which will do the right thing +(@code{_bfd_default_link_order} is defined in @code{linker.c}). + +For efficiency, a @code{link_order} of type +@code{bfd_indirect_link_order} whose associated section belongs +to a BFD of the same format as the output BFD must be handled +specially. This type of @code{link_order} describes part of an +output section in terms of a section belonging to one of the +input files. The @code{_bfd_final_link} function should read the +contents of the section and any associated relocs, apply the +relocs to the section contents, and write out the modified +section contents. If performing a relocatable link, the +relocs themselves must also be modified and written out. + +@findex _bfd_relocate_contents +@findex _bfd_final_link_relocate +The functions @code{_bfd_relocate_contents} and +@code{_bfd_final_link_relocate} provide some general support for +performing the actual relocations, notably overflow checking. +Their arguments include information about the symbol the +relocation is against and a @code{reloc_howto_type} argument +which describes the relocation to perform. These functions +are defined in @code{reloc.c}. + +The a.out function which handles reading, relocating, and +writing section contents is @code{aout_link_input_section}. The +actual relocation is done in @code{aout_link_input_section_std} +and @code{aout_link_input_section_ext}. + +@node Writing the symbol table, , Relocating the section contents, Performing the Final Link +@subsubsection Writing the symbol table +The @code{_bfd_final_link} function must gather all the symbols +in the input files and write them out. It must also write out +all the symbols in the global hash table. This must be +controlled by the @code{strip} and @code{discard} fields of the +@code{bfd_link_info} structure. + +The local symbols of the input files will not have been +entered into the linker hash table. The @code{_bfd_final_link} +routine must consider each input file and include the symbols +in the output file. It may be convenient to do this when +looking through the @code{link_order} structures, or it may be +done by stepping through the @code{input_bfds} list. + +The @code{_bfd_final_link} routine must also traverse the global +hash table to gather all the externally visible symbols. It +is possible that most of the externally visible symbols may be +written out when considering the symbols of each input file, +but it is still necessary to traverse the hash table since the +linker script may have defined some symbols that are not in +any of the input files. + +The @code{strip} field of the @code{bfd_link_info} structure +controls which symbols are written out. The possible values +are listed in @code{bfdlink.h}. If the value is @code{strip_some}, +then the @code{keep_hash} field of the @code{bfd_link_info} +structure is a hash table of symbols to keep; each symbol +should be looked up in this hash table, and only symbols which +are present should be included in the output file. + +If the @code{strip} field of the @code{bfd_link_info} structure +permits local symbols to be written out, the @code{discard} field +is used to further controls which local symbols are included +in the output file. If the value is @code{discard_l}, then all +local symbols which begin with a certain prefix are discarded; +this is controlled by the @code{bfd_is_local_label_name} entry point. + +The a.out backend handles symbols by calling +@code{aout_link_write_symbols} on each input BFD and then +traversing the global hash table with the function +@code{aout_link_write_other_symbol}. It builds a string table +while writing out the symbols, which is written to the output +file at the end of @code{NAME(aout,final_link)}. + +@findex bfd_link_split_section +@subsubsection @code{bfd_link_split_section} +@strong{Synopsis} +@example +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec); +@end example +@strong{Description}@* +Return nonzero if @var{sec} should be split during a +reloceatable or final link. +@example +#define bfd_link_split_section(abfd, sec) \ + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) + +@end example + +@findex bfd_section_already_linked +@subsubsection @code{bfd_section_already_linked} +@strong{Synopsis} +@example +bfd_boolean bfd_section_already_linked (bfd *abfd, + asection *sec, + struct bfd_link_info *info); +@end example +@strong{Description}@* +Check if @var{data} has been already linked during a reloceatable +or final link. Return TRUE if it has. +@example +#define bfd_section_already_linked(abfd, sec, info) \ + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info)) + +@end example + +@findex bfd_generic_define_common_symbol +@subsubsection @code{bfd_generic_define_common_symbol} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_define_common_symbol + (bfd *output_bfd, struct bfd_link_info *info, + struct bfd_link_hash_entry *h); +@end example +@strong{Description}@* +Convert common symbol @var{h} into a defined symbol. +Return TRUE on success and FALSE on failure. +@example +#define bfd_define_common_symbol(output_bfd, info, h) \ + BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h)) + +@end example + +@findex bfd_find_version_for_sym +@subsubsection @code{bfd_find_version_for_sym} +@strong{Synopsis} +@example +struct bfd_elf_version_tree * bfd_find_version_for_sym + (struct bfd_elf_version_tree *verdefs, + const char *sym_name, bfd_boolean *hide); +@end example +@strong{Description}@* +Search an elf version script tree for symbol versioning +info and export / don't-export status for a given symbol. +Return non-NULL on success and NULL on failure; also sets +the output @samp{hide} boolean parameter. + +@findex bfd_hide_sym_by_version +@subsubsection @code{bfd_hide_sym_by_version} +@strong{Synopsis} +@example +bfd_boolean bfd_hide_sym_by_version + (struct bfd_elf_version_tree *verdefs, const char *sym_name); +@end example +@strong{Description}@* +Search an elf version script tree for symbol versioning +info for a given symbol. Return TRUE if the symbol is hidden. + diff --git a/bfd/doc/mmo.texi b/bfd/doc/mmo.texi new file mode 100644 index 00000000000..f9c23582d6e --- /dev/null +++ b/bfd/doc/mmo.texi @@ -0,0 +1,369 @@ +@section mmo backend +The mmo object format is used exclusively together with Professor +Donald E.@: Knuth's educational 64-bit processor MMIX. The simulator +@command{mmix} which is available at +@url{http://mmix.cs.hm.edu/src/index.html} +understands this format. That package also includes a combined +assembler and linker called @command{mmixal}. The mmo format has +no advantages feature-wise compared to e.g. ELF. It is a simple +non-relocatable object format with no support for archives or +debugging information, except for symbol value information and +line numbers (which is not yet implemented in BFD). See +@url{http://mmix.cs.hm.edu/} for more +information about MMIX. The ELF format is used for intermediate +object files in the BFD implementation. + +@c We want to xref the symbol table node. A feature in "chew" +@c requires that "commands" do not contain spaces in the +@c arguments. Hence the hyphen in "Symbol-table". +@menu +* File layout:: +* Symbol-table:: +* mmo section mapping:: +@end menu + +@node File layout, Symbol-table, mmo, mmo +@subsection File layout +The mmo file contents is not partitioned into named sections as +with e.g.@: ELF. Memory areas is formed by specifying the +location of the data that follows. Only the memory area +@samp{0x0000@dots{}00} to @samp{0x01ff@dots{}ff} is executable, so +it is used for code (and constants) and the area +@samp{0x2000@dots{}00} to @samp{0x20ff@dots{}ff} is used for +writable data. @xref{mmo section mapping}. + +There is provision for specifying ``special data'' of 65536 +different types. We use type 80 (decimal), arbitrarily chosen the +same as the ELF @code{e_machine} number for MMIX, filling it with +section information normally found in ELF objects. @xref{mmo +section mapping}. + +Contents is entered as 32-bit words, xor:ed over previous +contents, always zero-initialized. A word that starts with the +byte @samp{0x98} forms a command called a @samp{lopcode}, where +the next byte distinguished between the thirteen lopcodes. The +two remaining bytes, called the @samp{Y} and @samp{Z} fields, or +the @samp{YZ} field (a 16-bit big-endian number), are used for +various purposes different for each lopcode. As documented in +@url{http://mmix.cs.hm.edu/doc/mmixal.pdf}, +the lopcodes are: + +@table @code +@item lop_quote +0x98000001. The next word is contents, regardless of whether it +starts with 0x98 or not. + +@item lop_loc +0x9801YYZZ, where @samp{Z} is 1 or 2. This is a location +directive, setting the location for the next data to the next +32-bit word (for @math{Z = 1}) or 64-bit word (for @math{Z = 2}), +plus @math{Y * 2^56}. Normally @samp{Y} is 0 for the text segment +and 2 for the data segment. Beware that the low bits of non- +tetrabyte-aligned values are silently discarded when being +automatically incremented and when storing contents (in contrast +to e.g. its use as current location when followed by lop_fixo +et al before the next possibly-quoted tetrabyte contents). + +@item lop_skip +0x9802YYZZ. Increase the current location by @samp{YZ} bytes. + +@item lop_fixo +0x9803YYZZ, where @samp{Z} is 1 or 2. Store the current location +as 64 bits into the location pointed to by the next 32-bit +(@math{Z = 1}) or 64-bit (@math{Z = 2}) word, plus @math{Y * +2^56}. + +@item lop_fixr +0x9804YYZZ. @samp{YZ} is stored into the current location plus +@math{2 - 4 * YZ}. + +@item lop_fixrx +0x980500ZZ. @samp{Z} is 16 or 24. A value @samp{L} derived from +the following 32-bit word are used in a manner similar to +@samp{YZ} in lop_fixr: it is xor:ed into the current location +minus @math{4 * L}. The first byte of the word is 0 or 1. If it +is 1, then @math{L = (@var{lowest 24 bits of word}) - 2^Z}, if 0, +then @math{L = (@var{lowest 24 bits of word})}. + +@item lop_file +0x9806YYZZ. @samp{Y} is the file number, @samp{Z} is count of +32-bit words. Set the file number to @samp{Y} and the line +counter to 0. The next @math{Z * 4} bytes contain the file name, +padded with zeros if the count is not a multiple of four. The +same @samp{Y} may occur multiple times, but @samp{Z} must be 0 for +all but the first occurrence. + +@item lop_line +0x9807YYZZ. @samp{YZ} is the line number. Together with +lop_file, it forms the source location for the next 32-bit word. +Note that for each non-lopcode 32-bit word, line numbers are +assumed incremented by one. + +@item lop_spec +0x9808YYZZ. @samp{YZ} is the type number. Data until the next +lopcode other than lop_quote forms special data of type @samp{YZ}. +@xref{mmo section mapping}. + +Other types than 80, (or type 80 with a content that does not +parse) is stored in sections named @code{.MMIX.spec_data.@var{n}} +where @var{n} is the @samp{YZ}-type. The flags for such a +sections say not to allocate or load the data. The vma is 0. +Contents of multiple occurrences of special data @var{n} is +concatenated to the data of the previous lop_spec @var{n}s. The +location in data or code at which the lop_spec occurred is lost. + +@item lop_pre +0x980901ZZ. The first lopcode in a file. The @samp{Z} field forms the +length of header information in 32-bit words, where the first word +tells the time in seconds since @samp{00:00:00 GMT Jan 1 1970}. + +@item lop_post +0x980a00ZZ. @math{Z > 32}. This lopcode follows after all +content-generating lopcodes in a program. The @samp{Z} field +denotes the value of @samp{rG} at the beginning of the program. +The following @math{256 - Z} big-endian 64-bit words are loaded +into global registers @samp{$G} @dots{} @samp{$255}. + +@item lop_stab +0x980b0000. The next-to-last lopcode in a program. Must follow +immediately after the lop_post lopcode and its data. After this +lopcode follows all symbols in a compressed format +(@pxref{Symbol-table}). + +@item lop_end +0x980cYYZZ. The last lopcode in a program. It must follow the +lop_stab lopcode and its data. The @samp{YZ} field contains the +number of 32-bit words of symbol table information after the +preceding lop_stab lopcode. +@end table + +Note that the lopcode "fixups"; @code{lop_fixr}, @code{lop_fixrx} and +@code{lop_fixo} are not generated by BFD, but are handled. They are +generated by @code{mmixal}. + +This trivial one-label, one-instruction file: + +@example + :Main TRAP 1,2,3 +@end example + +can be represented this way in mmo: + +@example + 0x98090101 - lop_pre, one 32-bit word with timestamp. + + 0x98010002 - lop_loc, text segment, using a 64-bit address. + Note that mmixal does not emit this for the file above. + 0x00000000 - Address, high 32 bits. + 0x00000000 - Address, low 32 bits. + 0x98060002 - lop_file, 2 32-bit words for file-name. + 0x74657374 - "test" + 0x2e730000 - ".s\0\0" + 0x98070001 - lop_line, line 1. + 0x00010203 - TRAP 1,2,3 + 0x980a00ff - lop_post, setting $255 to 0. + 0x00000000 + 0x00000000 + 0x980b0000 - lop_stab for ":Main" = 0, serial 1. + 0x203a4040 @xref{Symbol-table}. + 0x10404020 + 0x4d206120 + 0x69016e00 + 0x81000000 + 0x980c0005 - lop_end; symbol table contained five 32-bit words. +@end example +@node Symbol-table, mmo section mapping, File layout, mmo +@subsection Symbol table format +From mmixal.w (or really, the generated mmixal.tex) in the +MMIXware package which also contains the @command{mmix} simulator: +``Symbols are stored and retrieved by means of a @samp{ternary +search trie}, following ideas of Bentley and Sedgewick. (See +ACM--SIAM Symp.@: on Discrete Algorithms @samp{8} (1997), 360--369; +R.@:Sedgewick, @samp{Algorithms in C} (Reading, Mass.@: +Addison--Wesley, 1998), @samp{15.4}.) Each trie node stores a +character, and there are branches to subtries for the cases where +a given character is less than, equal to, or greater than the +character in the trie. There also is a pointer to a symbol table +entry if a symbol ends at the current node.'' + +So it's a tree encoded as a stream of bytes. The stream of bytes +acts on a single virtual global symbol, adding and removing +characters and signalling complete symbol points. Here, we read +the stream and create symbols at the completion points. + +First, there's a control byte @code{m}. If any of the listed bits +in @code{m} is nonzero, we execute what stands at the right, in +the listed order: + +@example + (MMO3_LEFT) + 0x40 - Traverse left trie. + (Read a new command byte and recurse.) + + (MMO3_SYMBITS) + 0x2f - Read the next byte as a character and store it in the + current character position; increment character position. + Test the bits of @code{m}: + + (MMO3_WCHAR) + 0x80 - The character is 16-bit (so read another byte, + merge into current character. + + (MMO3_TYPEBITS) + 0xf - We have a complete symbol; parse the type, value + and serial number and do what should be done + with a symbol. The type and length information + is in j = (m & 0xf). + + (MMO3_REGQUAL_BITS) + j == 0xf: A register variable. The following + byte tells which register. + j <= 8: An absolute symbol. Read j bytes as the + big-endian number the symbol equals. + A j = 2 with two zero bytes denotes an + unknown symbol. + j > 8: As with j <= 8, but add (0x20 << 56) + to the value in the following j - 8 + bytes. + + Then comes the serial number, as a variant of + uleb128, but better named ubeb128: + Read bytes and shift the previous value left 7 + (multiply by 128). Add in the new byte, repeat + until a byte has bit 7 set. The serial number + is the computed value minus 128. + + (MMO3_MIDDLE) + 0x20 - Traverse middle trie. (Read a new command byte + and recurse.) Decrement character position. + + (MMO3_RIGHT) + 0x10 - Traverse right trie. (Read a new command byte and + recurse.) +@end example + +Let's look again at the @code{lop_stab} for the trivial file +(@pxref{File layout}). + +@example + 0x980b0000 - lop_stab for ":Main" = 0, serial 1. + 0x203a4040 + 0x10404020 + 0x4d206120 + 0x69016e00 + 0x81000000 +@end example + +This forms the trivial trie (note that the path between ``:'' and +``M'' is redundant): + +@example + 203a ":" + 40 / + 40 / + 10 \ + 40 / + 40 / + 204d "M" + 2061 "a" + 2069 "i" + 016e "n" is the last character in a full symbol, and + with a value represented in one byte. + 00 The value is 0. + 81 The serial number is 1. +@end example + +@node mmo section mapping, , Symbol-table, mmo +@subsection mmo section mapping +The implementation in BFD uses special data type 80 (decimal) to +encapsulate and describe named sections, containing e.g.@: debug +information. If needed, any datum in the encapsulation will be +quoted using lop_quote. First comes a 32-bit word holding the +number of 32-bit words containing the zero-terminated zero-padded +segment name. After the name there's a 32-bit word holding flags +describing the section type. Then comes a 64-bit big-endian word +with the section length (in bytes), then another with the section +start address. Depending on the type of section, the contents +might follow, zero-padded to 32-bit boundary. For a loadable +section (such as data or code), the contents might follow at some +later point, not necessarily immediately, as a lop_loc with the +same start address as in the section description, followed by the +contents. This in effect forms a descriptor that must be emitted +before the actual contents. Sections described this way must not +overlap. + +For areas that don't have such descriptors, synthetic sections are +formed by BFD. Consecutive contents in the two memory areas +@samp{0x0000@dots{}00} to @samp{0x01ff@dots{}ff} and +@samp{0x2000@dots{}00} to @samp{0x20ff@dots{}ff} are entered in +sections named @code{.text} and @code{.data} respectively. If an area +is not otherwise described, but would together with a neighboring +lower area be less than @samp{0x40000000} bytes long, it is joined +with the lower area and the gap is zero-filled. For other cases, +a new section is formed, named @code{.MMIX.sec.@var{n}}. Here, +@var{n} is a number, a running count through the mmo file, +starting at 0. + +A loadable section specified as: + +@example + .section secname,"ax" + TETRA 1,2,3,4,-1,-2009 + BYTE 80 +@end example + +and linked to address @samp{0x4}, is represented by the sequence: + +@example + 0x98080050 - lop_spec 80 + 0x00000002 - two 32-bit words for the section name + 0x7365636e - "secn" + 0x616d6500 - "ame\0" + 0x00000033 - flags CODE, READONLY, LOAD, ALLOC + 0x00000000 - high 32 bits of section length + 0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits + 0x00000000 - high 32 bits of section address + 0x00000004 - section address is 4 + 0x98010002 - 64 bits with address of following data + 0x00000000 - high 32 bits of address + 0x00000004 - low 32 bits: data starts at address 4 + 0x00000001 - 1 + 0x00000002 - 2 + 0x00000003 - 3 + 0x00000004 - 4 + 0xffffffff - -1 + 0xfffff827 - -2009 + 0x50000000 - 80 as a byte, padded with zeros. +@end example + +Note that the lop_spec wrapping does not include the section +contents. Compare this to a non-loaded section specified as: + +@example + .section thirdsec + TETRA 200001,100002 + BYTE 38,40 +@end example + +This, when linked to address @samp{0x200000000000001c}, is +represented by: + +@example + 0x98080050 - lop_spec 80 + 0x00000002 - two 32-bit words for the section name + 0x7365636e - "thir" + 0x616d6500 - "dsec" + 0x00000010 - flag READONLY + 0x00000000 - high 32 bits of section length + 0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits + 0x20000000 - high 32 bits of address + 0x0000001c - low 32 bits of address 0x200000000000001c + 0x00030d41 - 200001 + 0x000186a2 - 100002 + 0x26280000 - 38, 40 as bytes, padded with zeros +@end example + +For the latter example, the section contents must not be +loaded in memory, and is therefore specified as part of the +special data. The address is usually unimportant but might +provide information for e.g.@: the DWARF 2 debugging format. diff --git a/bfd/doc/opncls.texi b/bfd/doc/opncls.texi new file mode 100644 index 00000000000..a7a57a607ea --- /dev/null +++ b/bfd/doc/opncls.texi @@ -0,0 +1,456 @@ + +@example +/* Set to N to open the next N BFDs using an alternate id space. */ +extern unsigned int bfd_use_reserved_id; +@end example +@section Opening and closing BFDs + + +@subsection Functions for opening and closing + + +@findex bfd_fopen +@subsubsection @code{bfd_fopen} +@strong{Synopsis} +@example +bfd *bfd_fopen (const char *filename, const char *target, + const char *mode, int fd); +@end example +@strong{Description}@* +Open the file @var{filename} with the target @var{target}. +Return a pointer to the created BFD. If @var{fd} is not -1, +then @code{fdopen} is used to open the file; otherwise, @code{fopen} +is used. @var{mode} is passed directly to @code{fopen} or +@code{fdopen}. + +Calls @code{bfd_find_target}, so @var{target} is interpreted as by +that function. + +The new BFD is marked as cacheable iff @var{fd} is -1. + +If @code{NULL} is returned then an error has occured. Possible errors +are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or +@code{system_call} error. + +On error, @var{fd} is always closed. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_openr +@subsubsection @code{bfd_openr} +@strong{Synopsis} +@example +bfd *bfd_openr (const char *filename, const char *target); +@end example +@strong{Description}@* +Open the file @var{filename} (using @code{fopen}) with the target +@var{target}. Return a pointer to the created BFD. + +Calls @code{bfd_find_target}, so @var{target} is interpreted as by +that function. + +If @code{NULL} is returned then an error has occured. Possible errors +are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or +@code{system_call} error. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_fdopenr +@subsubsection @code{bfd_fdopenr} +@strong{Synopsis} +@example +bfd *bfd_fdopenr (const char *filename, const char *target, int fd); +@end example +@strong{Description}@* +@code{bfd_fdopenr} is to @code{bfd_fopenr} much like @code{fdopen} is to +@code{fopen}. It opens a BFD on a file already described by the +@var{fd} supplied. + +When the file is later @code{bfd_close}d, the file descriptor will +be closed. If the caller desires that this file descriptor be +cached by BFD (opened as needed, closed as needed to free +descriptors for other opens), with the supplied @var{fd} used as +an initial file descriptor (but subject to closure at any time), +call bfd_set_cacheable(bfd, 1) on the returned BFD. The default +is to assume no caching; the file descriptor will remain open +until @code{bfd_close}, and will not be affected by BFD operations +on other files. + +Possible errors are @code{bfd_error_no_memory}, +@code{bfd_error_invalid_target} and @code{bfd_error_system_call}. + +On error, @var{fd} is closed. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_openstreamr +@subsubsection @code{bfd_openstreamr} +@strong{Synopsis} +@example +bfd *bfd_openstreamr (const char * filename, const char * target, void * stream); +@end example +@strong{Description}@* +Open a BFD for read access on an existing stdio stream. When +the BFD is passed to @code{bfd_close}, the stream will be closed. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_openr_iovec +@subsubsection @code{bfd_openr_iovec} +@strong{Synopsis} +@example +bfd *bfd_openr_iovec (const char *filename, const char *target, + void *(*open_func) (struct bfd *nbfd, + void *open_closure), + void *open_closure, + file_ptr (*pread_func) (struct bfd *nbfd, + void *stream, + void *buf, + file_ptr nbytes, + file_ptr offset), + int (*close_func) (struct bfd *nbfd, + void *stream), + int (*stat_func) (struct bfd *abfd, + void *stream, + struct stat *sb)); +@end example +@strong{Description}@* +Create and return a BFD backed by a read-only @var{stream}. +The @var{stream} is created using @var{open_func}, accessed using +@var{pread_func} and destroyed using @var{close_func}. + +Calls @code{bfd_find_target}, so @var{target} is interpreted as by +that function. + +Calls @var{open_func} (which can call @code{bfd_zalloc} and +@code{bfd_get_filename}) to obtain the read-only stream backing +the BFD. @var{open_func} either succeeds returning the +non-@code{NULL} @var{stream}, or fails returning @code{NULL} +(setting @code{bfd_error}). + +Calls @var{pread_func} to request @var{nbytes} of data from +@var{stream} starting at @var{offset} (e.g., via a call to +@code{bfd_read}). @var{pread_func} either succeeds returning the +number of bytes read (which can be less than @var{nbytes} when +end-of-file), or fails returning -1 (setting @code{bfd_error}). + +Calls @var{close_func} when the BFD is later closed using +@code{bfd_close}. @var{close_func} either succeeds returning 0, or +fails returning -1 (setting @code{bfd_error}). + +Calls @var{stat_func} to fill in a stat structure for bfd_stat, +bfd_get_size, and bfd_get_mtime calls. @var{stat_func} returns 0 +on success, or returns -1 on failure (setting @code{bfd_error}). + +If @code{bfd_openr_iovec} returns @code{NULL} then an error has +occurred. Possible errors are @code{bfd_error_no_memory}, +@code{bfd_error_invalid_target} and @code{bfd_error_system_call}. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_openw +@subsubsection @code{bfd_openw} +@strong{Synopsis} +@example +bfd *bfd_openw (const char *filename, const char *target); +@end example +@strong{Description}@* +Create a BFD, associated with file @var{filename}, using the +file format @var{target}, and return a pointer to it. + +Possible errors are @code{bfd_error_system_call}, @code{bfd_error_no_memory}, +@code{bfd_error_invalid_target}. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_close +@subsubsection @code{bfd_close} +@strong{Synopsis} +@example +bfd_boolean bfd_close (bfd *abfd); +@end example +@strong{Description}@* +Close a BFD. If the BFD was open for writing, then pending +operations are completed and the file written out and closed. +If the created file is executable, then @code{chmod} is called +to mark it as such. + +All memory attached to the BFD is released. + +The file descriptor associated with the BFD is closed (even +if it was passed in to BFD by @code{bfd_fdopenr}). + +@strong{Returns}@* +@code{TRUE} is returned if all is ok, otherwise @code{FALSE}. + +@findex bfd_close_all_done +@subsubsection @code{bfd_close_all_done} +@strong{Synopsis} +@example +bfd_boolean bfd_close_all_done (bfd *); +@end example +@strong{Description}@* +Close a BFD. Differs from @code{bfd_close} since it does not +complete any pending operations. This routine would be used +if the application had just used BFD for swapping and didn't +want to use any of the writing code. + +If the created file is executable, then @code{chmod} is called +to mark it as such. + +All memory attached to the BFD is released. + +@strong{Returns}@* +@code{TRUE} is returned if all is ok, otherwise @code{FALSE}. + +@findex bfd_create +@subsubsection @code{bfd_create} +@strong{Synopsis} +@example +bfd *bfd_create (const char *filename, bfd *templ); +@end example +@strong{Description}@* +Create a new BFD in the manner of @code{bfd_openw}, but without +opening a file. The new BFD takes the target from the target +used by @var{templ}. The format is always set to @code{bfd_object}. + +A copy of the @var{filename} argument is stored in the newly created +BFD. It can be accessed via the bfd_get_filename() macro. + +@findex bfd_make_writable +@subsubsection @code{bfd_make_writable} +@strong{Synopsis} +@example +bfd_boolean bfd_make_writable (bfd *abfd); +@end example +@strong{Description}@* +Takes a BFD as created by @code{bfd_create} and converts it +into one like as returned by @code{bfd_openw}. It does this +by converting the BFD to BFD_IN_MEMORY. It's assumed that +you will call @code{bfd_make_readable} on this bfd later. + +@strong{Returns}@* +@code{TRUE} is returned if all is ok, otherwise @code{FALSE}. + +@findex bfd_make_readable +@subsubsection @code{bfd_make_readable} +@strong{Synopsis} +@example +bfd_boolean bfd_make_readable (bfd *abfd); +@end example +@strong{Description}@* +Takes a BFD as created by @code{bfd_create} and +@code{bfd_make_writable} and converts it into one like as +returned by @code{bfd_openr}. It does this by writing the +contents out to the memory buffer, then reversing the +direction. + +@strong{Returns}@* +@code{TRUE} is returned if all is ok, otherwise @code{FALSE}. + +@findex bfd_alloc +@subsubsection @code{bfd_alloc} +@strong{Synopsis} +@example +void *bfd_alloc (bfd *abfd, bfd_size_type wanted); +@end example +@strong{Description}@* +Allocate a block of @var{wanted} bytes of memory attached to +@code{abfd} and return a pointer to it. + +@findex bfd_alloc2 +@subsubsection @code{bfd_alloc2} +@strong{Synopsis} +@example +void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); +@end example +@strong{Description}@* +Allocate a block of @var{nmemb} elements of @var{size} bytes each +of memory attached to @code{abfd} and return a pointer to it. + +@findex bfd_zalloc +@subsubsection @code{bfd_zalloc} +@strong{Synopsis} +@example +void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); +@end example +@strong{Description}@* +Allocate a block of @var{wanted} bytes of zeroed memory +attached to @code{abfd} and return a pointer to it. + +@findex bfd_zalloc2 +@subsubsection @code{bfd_zalloc2} +@strong{Synopsis} +@example +void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); +@end example +@strong{Description}@* +Allocate a block of @var{nmemb} elements of @var{size} bytes each +of zeroed memory attached to @code{abfd} and return a pointer to it. + +@findex bfd_calc_gnu_debuglink_crc32 +@subsubsection @code{bfd_calc_gnu_debuglink_crc32} +@strong{Synopsis} +@example +unsigned long bfd_calc_gnu_debuglink_crc32 + (unsigned long crc, const unsigned char *buf, bfd_size_type len); +@end example +@strong{Description}@* +Computes a CRC value as used in the .gnu_debuglink section. +Advances the previously computed @var{crc} value by computing +and adding in the crc32 for @var{len} bytes of @var{buf}. + +@strong{Returns}@* +Return the updated CRC32 value. + +@findex bfd_get_debug_link_info +@subsubsection @code{bfd_get_debug_link_info} +@strong{Synopsis} +@example +char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out); +@end example +@strong{Description}@* +Fetch the filename and CRC32 value for any separate debuginfo +associated with @var{abfd}. Return NULL if no such info found, +otherwise return filename and update @var{crc32_out}. The +returned filename is allocated with @code{malloc}; freeing it +is the responsibility of the caller. + +@findex bfd_get_alt_debug_link_info +@subsubsection @code{bfd_get_alt_debug_link_info} +@strong{Synopsis} +@example +char *bfd_get_alt_debug_link_info (bfd * abfd, + bfd_size_type *buildid_len, + bfd_byte **buildid_out); +@end example +@strong{Description}@* +Fetch the filename and BuildID value for any alternate debuginfo +associated with @var{abfd}. Return NULL if no such info found, +otherwise return filename and update @var{buildid_len} and +@var{buildid_out}. The returned filename and build_id are +allocated with @code{malloc}; freeing them is the +responsibility of the caller. + +@findex separate_debug_file_exists +@subsubsection @code{separate_debug_file_exists} +@strong{Synopsis} +@example +bfd_boolean separate_debug_file_exists + (char *name, unsigned long crc32); +@end example +@strong{Description}@* +Checks to see if @var{name} is a file and if its contents +match @var{crc32}. + +@findex separate_alt_debug_file_exists +@subsubsection @code{separate_alt_debug_file_exists} +@strong{Synopsis} +@example +bfd_boolean separate_alt_debug_file_exists + (char *name, unsigned long crc32); +@end example +@strong{Description}@* +Checks to see if @var{name} is a file and if its BuildID +matches @var{buildid}. + +@findex find_separate_debug_file +@subsubsection @code{find_separate_debug_file} +@strong{Synopsis} +@example +char *find_separate_debug_file (bfd *abfd); +@end example +@strong{Description}@* +Searches @var{abfd} for a section called @var{section_name} which +is expected to contain a reference to a file containing separate +debugging information. The function scans various locations in +the filesystem, including the file tree rooted at +@var{debug_file_directory}, and returns the first matching +filename that it finds. If @var{check_crc} is TRUE then the +contents of the file must also match the CRC value contained in +@var{section_name}. Returns NULL if no valid file could be found. + +@findex bfd_follow_gnu_debuglink +@subsubsection @code{bfd_follow_gnu_debuglink} +@strong{Synopsis} +@example +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); +@end example +@strong{Description}@* +Takes a BFD and searches it for a .gnu_debuglink section. If this +section is found, it examines the section for the name and checksum +of a '.debug' file containing auxiliary debugging information. It +then searches the filesystem for this .debug file in some standard +locations, including the directory tree rooted at @var{dir}, and if +found returns the full filename. + +If @var{dir} is NULL, it will search a default path configured into +libbfd at build time. [XXX this feature is not currently +implemented]. + +@strong{Returns}@* +@code{NULL} on any errors or failure to locate the .debug file, +otherwise a pointer to a heap-allocated string containing the +filename. The caller is responsible for freeing this string. + +@findex bfd_follow_gnu_debugaltlink +@subsubsection @code{bfd_follow_gnu_debugaltlink} +@strong{Synopsis} +@example +char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir); +@end example +@strong{Description}@* +Takes a BFD and searches it for a .gnu_debugaltlink section. If this +section is found, it examines the section for the name of a file +containing auxiliary debugging information. It then searches the +filesystem for this file in a set of standard locations, including +the directory tree rooted at @var{dir}, and if found returns the +full filename. + +If @var{dir} is NULL, it will search a default path configured into +libbfd at build time. [FIXME: This feature is not currently +implemented]. + +@strong{Returns}@* +@code{NULL} on any errors or failure to locate the debug file, +otherwise a pointer to a heap-allocated string containing the +filename. The caller is responsible for freeing this string. + +@findex bfd_create_gnu_debuglink_section +@subsubsection @code{bfd_create_gnu_debuglink_section} +@strong{Synopsis} +@example +struct bfd_section *bfd_create_gnu_debuglink_section + (bfd *abfd, const char *filename); +@end example +@strong{Description}@* +Takes a @var{BFD} and adds a .gnu_debuglink section to it. The section is sized +to be big enough to contain a link to the specified @var{filename}. + +@strong{Returns}@* +A pointer to the new section is returned if all is ok. Otherwise @code{NULL} is +returned and bfd_error is set. + +@findex bfd_fill_in_gnu_debuglink_section +@subsubsection @code{bfd_fill_in_gnu_debuglink_section} +@strong{Synopsis} +@example +bfd_boolean bfd_fill_in_gnu_debuglink_section + (bfd *abfd, struct bfd_section *sect, const char *filename); +@end example +@strong{Description}@* +Takes a @var{BFD} and containing a .gnu_debuglink section @var{SECT} +and fills in the contents of the section to contain a link to the +specified @var{filename}. The filename should be relative to the +current directory. + +@strong{Returns}@* +@code{TRUE} is returned if all is ok. Otherwise @code{FALSE} is returned +and bfd_error is set. + diff --git a/bfd/doc/reloc.texi b/bfd/doc/reloc.texi new file mode 100644 index 00000000000..92b5cf5c4b9 --- /dev/null +++ b/bfd/doc/reloc.texi @@ -0,0 +1,4104 @@ +@section Relocations +BFD maintains relocations in much the same way it maintains +symbols: they are left alone until required, then read in +en-masse and translated into an internal form. A common +routine @code{bfd_perform_relocation} acts upon the +canonical form to do the fixup. + +Relocations are maintained on a per section basis, +while symbols are maintained on a per BFD basis. + +All that a back end has to do to fit the BFD interface is to create +a @code{struct reloc_cache_entry} for each relocation +in a particular section, and fill in the right bits of the structures. + +@menu +* typedef arelent:: +* howto manager:: +@end menu + + +@node typedef arelent, howto manager, Relocations, Relocations +@subsection typedef arelent +This is the structure of a relocation entry: + + +@example + +typedef enum bfd_reloc_status +@{ + /* No errors detected. */ + bfd_reloc_ok, + + /* The relocation was performed, but there was an overflow. */ + bfd_reloc_overflow, + + /* The address to relocate was not within the section supplied. */ + bfd_reloc_outofrange, + + /* Used by special functions. */ + bfd_reloc_continue, + + /* Unsupported relocation size requested. */ + bfd_reloc_notsupported, + + /* Unused. */ + bfd_reloc_other, + + /* The symbol to relocate against was undefined. */ + bfd_reloc_undefined, + + /* The relocation was performed, but may not be ok - presently + generated only when linking i960 coff files with i960 b.out + symbols. If this type is returned, the error_message argument + to bfd_perform_relocation will be set. */ + bfd_reloc_dangerous + @} + bfd_reloc_status_type; + + +typedef struct reloc_cache_entry +@{ + /* A pointer into the canonical table of pointers. */ + struct bfd_symbol **sym_ptr_ptr; + + /* offset in section. */ + bfd_size_type address; + + /* addend for relocation value. */ + bfd_vma addend; + + /* Pointer to how to perform the required relocation. */ + reloc_howto_type *howto; + +@} +arelent; + +@end example +@strong{Description}@* +Here is a description of each of the fields within an @code{arelent}: + +@itemize @bullet + +@item +@code{sym_ptr_ptr} +@end itemize +The symbol table pointer points to a pointer to the symbol +associated with the relocation request. It is the pointer +into the table returned by the back end's +@code{canonicalize_symtab} action. @xref{Symbols}. The symbol is +referenced through a pointer to a pointer so that tools like +the linker can fix up all the symbols of the same name by +modifying only one pointer. The relocation routine looks in +the symbol and uses the base of the section the symbol is +attached to and the value of the symbol as the initial +relocation offset. If the symbol pointer is zero, then the +section provided is looked up. + +@itemize @bullet + +@item +@code{address} +@end itemize +The @code{address} field gives the offset in bytes from the base of +the section data which owns the relocation record to the first +byte of relocatable information. The actual data relocated +will be relative to this point; for example, a relocation +type which modifies the bottom two bytes of a four byte word +would not touch the first byte pointed to in a big endian +world. + +@itemize @bullet + +@item +@code{addend} +@end itemize +The @code{addend} is a value provided by the back end to be added (!) +to the relocation offset. Its interpretation is dependent upon +the howto. For example, on the 68k the code: + +@example + char foo[]; + main() + @{ + return foo[0x12345678]; + @} +@end example + +Could be compiled into: + +@example + linkw fp,#-4 + moveb @@#12345678,d0 + extbl d0 + unlk fp + rts +@end example + +This could create a reloc pointing to @code{foo}, but leave the +offset in the data, something like: + +@example +RELOCATION RECORDS FOR [.text]: +offset type value +00000006 32 _foo + +00000000 4e56 fffc ; linkw fp,#-4 +00000004 1039 1234 5678 ; moveb @@#12345678,d0 +0000000a 49c0 ; extbl d0 +0000000c 4e5e ; unlk fp +0000000e 4e75 ; rts +@end example + +Using coff and an 88k, some instructions don't have enough +space in them to represent the full address range, and +pointers have to be loaded in two parts. So you'd get something like: + +@example + or.u r13,r0,hi16(_foo+0x12345678) + ld.b r2,r13,lo16(_foo+0x12345678) + jmp r1 +@end example + +This should create two relocs, both pointing to @code{_foo}, and with +0x12340000 in their addend field. The data would consist of: + +@example +RELOCATION RECORDS FOR [.text]: +offset type value +00000002 HVRT16 _foo+0x12340000 +00000006 LVRT16 _foo+0x12340000 + +00000000 5da05678 ; or.u r13,r0,0x5678 +00000004 1c4d5678 ; ld.b r2,r13,0x5678 +00000008 f400c001 ; jmp r1 +@end example + +The relocation routine digs out the value from the data, adds +it to the addend to get the original offset, and then adds the +value of @code{_foo}. Note that all 32 bits have to be kept around +somewhere, to cope with carry from bit 15 to bit 16. + +One further example is the sparc and the a.out format. The +sparc has a similar problem to the 88k, in that some +instructions don't have room for an entire offset, but on the +sparc the parts are created in odd sized lumps. The designers of +the a.out format chose to not use the data within the section +for storing part of the offset; all the offset is kept within +the reloc. Anything in the data should be ignored. + +@example + save %sp,-112,%sp + sethi %hi(_foo+0x12345678),%g2 + ldsb [%g2+%lo(_foo+0x12345678)],%i0 + ret + restore +@end example + +Both relocs contain a pointer to @code{foo}, and the offsets +contain junk. + +@example +RELOCATION RECORDS FOR [.text]: +offset type value +00000004 HI22 _foo+0x12345678 +00000008 LO10 _foo+0x12345678 + +00000000 9de3bf90 ; save %sp,-112,%sp +00000004 05000000 ; sethi %hi(_foo+0),%g2 +00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0 +0000000c 81c7e008 ; ret +00000010 81e80000 ; restore +@end example + +@itemize @bullet + +@item +@code{howto} +@end itemize +The @code{howto} field can be imagined as a +relocation instruction. It is a pointer to a structure which +contains information on what to do with all of the other +information in the reloc record and data section. A back end +would normally have a relocation instruction set and turn +relocations into pointers to the correct structure on input - +but it would be possible to create each howto field on demand. + +@subsubsection @code{enum complain_overflow} +Indicates what sort of overflow checking should be done when +performing a relocation. + + +@example + +enum complain_overflow +@{ + /* Do not complain on overflow. */ + complain_overflow_dont, + + /* Complain if the value overflows when considered as a signed + number one bit larger than the field. ie. A bitfield of N bits + is allowed to represent -2**n to 2**n-1. */ + complain_overflow_bitfield, + + /* Complain if the value overflows when considered as a signed + number. */ + complain_overflow_signed, + + /* Complain if the value overflows when considered as an + unsigned number. */ + complain_overflow_unsigned +@}; +@end example +@subsubsection @code{reloc_howto_type} +The @code{reloc_howto_type} is a structure which contains all the +information that libbfd needs to know to tie up a back end's data. + + +@example +struct bfd_symbol; /* Forward declaration. */ + +struct reloc_howto_struct +@{ + /* The type field has mainly a documentary use - the back end can + do what it wants with it, though normally the back end's + external idea of what a reloc number is stored + in this field. For example, a PC relative word relocation + in a coff environment has the type 023 - because that's + what the outside world calls a R_PCRWORD reloc. */ + unsigned int type; + + /* The value the final relocation is shifted right by. This drops + unwanted data from the relocation. */ + unsigned int rightshift; + + /* The size of the item to be relocated. This is *not* a + power-of-two measure. To get the number of bytes operated + on by a type of relocation, use bfd_get_reloc_size. */ + int size; + + /* The number of bits in the item to be relocated. This is used + when doing overflow checking. */ + unsigned int bitsize; + + /* The relocation is relative to the field being relocated. */ + bfd_boolean pc_relative; + + /* The bit position of the reloc value in the destination. + The relocated value is left shifted by this amount. */ + unsigned int bitpos; + + /* What type of overflow error should be checked for when + relocating. */ + enum complain_overflow complain_on_overflow; + + /* If this field is non null, then the supplied function is + called rather than the normal function. This allows really + strange relocation methods to be accommodated (e.g., i960 callj + instructions). */ + bfd_reloc_status_type (*special_function) + (bfd *, arelent *, struct bfd_symbol *, void *, asection *, + bfd *, char **); + + /* The textual name of the relocation type. */ + char *name; + + /* Some formats record a relocation addend in the section contents + rather than with the relocation. For ELF formats this is the + distinction between USE_REL and USE_RELA (though the code checks + for USE_REL == 1/0). The value of this field is TRUE if the + addend is recorded with the section contents; when performing a + partial link (ld -r) the section contents (the data) will be + modified. The value of this field is FALSE if addends are + recorded with the relocation (in arelent.addend); when performing + a partial link the relocation will be modified. + All relocations for all ELF USE_RELA targets should set this field + to FALSE (values of TRUE should be looked on with suspicion). + However, the converse is not true: not all relocations of all ELF + USE_REL targets set this field to TRUE. Why this is so is peculiar + to each particular target. For relocs that aren't used in partial + links (e.g. GOT stuff) it doesn't matter what this is set to. */ + bfd_boolean partial_inplace; + + /* src_mask selects the part of the instruction (or data) to be used + in the relocation sum. If the target relocations don't have an + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal + dst_mask to extract the addend from the section contents. If + relocations do have an addend in the reloc, eg. ELF USE_RELA, this + field should be zero. Non-zero values for ELF USE_RELA targets are + bogus as in those cases the value in the dst_mask part of the + section contents should be treated as garbage. */ + bfd_vma src_mask; + + /* dst_mask selects which parts of the instruction (or data) are + replaced with a relocated value. */ + bfd_vma dst_mask; + + /* When some formats create PC relative instructions, they leave + the value of the pc of the place being relocated in the offset + slot of the instruction, so that a PC relative relocation can + be made just by adding in an ordinary offset (e.g., sun3 a.out). + Some formats leave the displacement part of an instruction + empty (e.g., m88k bcs); this flag signals the fact. */ + bfd_boolean pcrel_offset; +@}; + +@end example +@findex The HOWTO Macro +@subsubsection @code{The HOWTO Macro} +@strong{Description}@* +The HOWTO define is horrible and will go away. +@example +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ + @{ (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC @} +@end example + +@strong{Description}@* +And will be replaced with the totally magic way. But for the +moment, we are compatible, so do it this way. +@example +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \ + NAME, FALSE, 0, 0, IN) + +@end example + +@strong{Description}@* +This is used to fill in an empty howto entry in an array. +@example +#define EMPTY_HOWTO(C) \ + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ + NULL, FALSE, 0, 0, FALSE) + +@end example + +@strong{Description}@* +Helper routine to turn a symbol into a relocation value. +@example +#define HOWTO_PREPARE(relocation, symbol) \ + @{ \ + if (symbol != NULL) \ + @{ \ + if (bfd_is_com_section (symbol->section)) \ + @{ \ + relocation = 0; \ + @} \ + else \ + @{ \ + relocation = symbol->value; \ + @} \ + @} \ + @} + +@end example + +@findex bfd_get_reloc_size +@subsubsection @code{bfd_get_reloc_size} +@strong{Synopsis} +@example +unsigned int bfd_get_reloc_size (reloc_howto_type *); +@end example +@strong{Description}@* +For a reloc_howto_type that operates on a fixed number of bytes, +this returns the number of bytes operated on. + +@findex arelent_chain +@subsubsection @code{arelent_chain} +@strong{Description}@* +How relocs are tied together in an @code{asection}: +@example +typedef struct relent_chain +@{ + arelent relent; + struct relent_chain *next; +@} +arelent_chain; + +@end example + +@findex bfd_check_overflow +@subsubsection @code{bfd_check_overflow} +@strong{Synopsis} +@example +bfd_reloc_status_type bfd_check_overflow + (enum complain_overflow how, + unsigned int bitsize, + unsigned int rightshift, + unsigned int addrsize, + bfd_vma relocation); +@end example +@strong{Description}@* +Perform overflow checking on @var{relocation} which has +@var{bitsize} significant bits and will be shifted right by +@var{rightshift} bits, on a machine with addresses containing +@var{addrsize} significant bits. The result is either of +@code{bfd_reloc_ok} or @code{bfd_reloc_overflow}. + +@findex bfd_perform_relocation +@subsubsection @code{bfd_perform_relocation} +@strong{Synopsis} +@example +bfd_reloc_status_type bfd_perform_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, + asection *input_section, + bfd *output_bfd, + char **error_message); +@end example +@strong{Description}@* +If @var{output_bfd} is supplied to this function, the +generated image will be relocatable; the relocations are +copied to the output file after they have been changed to +reflect the new state of the world. There are two ways of +reflecting the results of partial linkage in an output file: +by modifying the output data in place, and by modifying the +relocation record. Some native formats (e.g., basic a.out and +basic coff) have no way of specifying an addend in the +relocation type, so the addend has to go in the output data. +This is no big deal since in these formats the output data +slot will always be big enough for the addend. Complex reloc +types with addends were invented to solve just this problem. +The @var{error_message} argument is set to an error message if +this return @code{bfd_reloc_dangerous}. + +@findex bfd_install_relocation +@subsubsection @code{bfd_install_relocation} +@strong{Synopsis} +@example +bfd_reloc_status_type bfd_install_relocation + (bfd *abfd, + arelent *reloc_entry, + void *data, bfd_vma data_start, + asection *input_section, + char **error_message); +@end example +@strong{Description}@* +This looks remarkably like @code{bfd_perform_relocation}, except it +does not expect that the section contents have been filled in. +I.e., it's suitable for use when creating, rather than applying +a relocation. + +For now, this function should be considered reserved for the +assembler. + + +@node howto manager, , typedef arelent, Relocations +@subsection The howto manager +When an application wants to create a relocation, but doesn't +know what the target machine might call it, it can find out by +using this bit of code. + +@findex bfd_reloc_code_type +@subsubsection @code{bfd_reloc_code_type} +@strong{Description}@* +The insides of a reloc code. The idea is that, eventually, there +will be one enumerator for every type of relocation we ever do. +Pass one of these values to @code{bfd_reloc_type_lookup}, and it'll +return a howto pointer. + +This does mean that the application must determine the correct +enumerator value; you can't get a howto pointer from a random set +of attributes. + +Here are the possible values for @code{enum bfd_reloc_code_real}: + +@deffn {} BFD_RELOC_64 +@deffnx {} BFD_RELOC_32 +@deffnx {} BFD_RELOC_26 +@deffnx {} BFD_RELOC_24 +@deffnx {} BFD_RELOC_16 +@deffnx {} BFD_RELOC_14 +@deffnx {} BFD_RELOC_8 +Basic absolute relocations of N bits. +@end deffn +@deffn {} BFD_RELOC_64_PCREL +@deffnx {} BFD_RELOC_32_PCREL +@deffnx {} BFD_RELOC_24_PCREL +@deffnx {} BFD_RELOC_16_PCREL +@deffnx {} BFD_RELOC_12_PCREL +@deffnx {} BFD_RELOC_8_PCREL +PC-relative relocations. Sometimes these are relative to the address +of the relocation itself; sometimes they are relative to the start of +the section containing the relocation. It depends on the specific target. + +The 24-bit relocation is used in some Intel 960 configurations. +@end deffn +@deffn {} BFD_RELOC_32_SECREL +Section relative relocations. Some targets need this for DWARF2. +@end deffn +@deffn {} BFD_RELOC_32_GOT_PCREL +@deffnx {} BFD_RELOC_16_GOT_PCREL +@deffnx {} BFD_RELOC_8_GOT_PCREL +@deffnx {} BFD_RELOC_32_GOTOFF +@deffnx {} BFD_RELOC_16_GOTOFF +@deffnx {} BFD_RELOC_LO16_GOTOFF +@deffnx {} BFD_RELOC_HI16_GOTOFF +@deffnx {} BFD_RELOC_HI16_S_GOTOFF +@deffnx {} BFD_RELOC_8_GOTOFF +@deffnx {} BFD_RELOC_64_PLT_PCREL +@deffnx {} BFD_RELOC_32_PLT_PCREL +@deffnx {} BFD_RELOC_24_PLT_PCREL +@deffnx {} BFD_RELOC_16_PLT_PCREL +@deffnx {} BFD_RELOC_8_PLT_PCREL +@deffnx {} BFD_RELOC_64_PLTOFF +@deffnx {} BFD_RELOC_32_PLTOFF +@deffnx {} BFD_RELOC_16_PLTOFF +@deffnx {} BFD_RELOC_LO16_PLTOFF +@deffnx {} BFD_RELOC_HI16_PLTOFF +@deffnx {} BFD_RELOC_HI16_S_PLTOFF +@deffnx {} BFD_RELOC_8_PLTOFF +For ELF. +@end deffn +@deffn {} BFD_RELOC_SIZE32 +@deffnx {} BFD_RELOC_SIZE64 +Size relocations. +@end deffn +@deffn {} BFD_RELOC_68K_GLOB_DAT +@deffnx {} BFD_RELOC_68K_JMP_SLOT +@deffnx {} BFD_RELOC_68K_RELATIVE +@deffnx {} BFD_RELOC_68K_TLS_GD32 +@deffnx {} BFD_RELOC_68K_TLS_GD16 +@deffnx {} BFD_RELOC_68K_TLS_GD8 +@deffnx {} BFD_RELOC_68K_TLS_LDM32 +@deffnx {} BFD_RELOC_68K_TLS_LDM16 +@deffnx {} BFD_RELOC_68K_TLS_LDM8 +@deffnx {} BFD_RELOC_68K_TLS_LDO32 +@deffnx {} BFD_RELOC_68K_TLS_LDO16 +@deffnx {} BFD_RELOC_68K_TLS_LDO8 +@deffnx {} BFD_RELOC_68K_TLS_IE32 +@deffnx {} BFD_RELOC_68K_TLS_IE16 +@deffnx {} BFD_RELOC_68K_TLS_IE8 +@deffnx {} BFD_RELOC_68K_TLS_LE32 +@deffnx {} BFD_RELOC_68K_TLS_LE16 +@deffnx {} BFD_RELOC_68K_TLS_LE8 +Relocations used by 68K ELF. +@end deffn +@deffn {} BFD_RELOC_32_BASEREL +@deffnx {} BFD_RELOC_16_BASEREL +@deffnx {} BFD_RELOC_LO16_BASEREL +@deffnx {} BFD_RELOC_HI16_BASEREL +@deffnx {} BFD_RELOC_HI16_S_BASEREL +@deffnx {} BFD_RELOC_8_BASEREL +@deffnx {} BFD_RELOC_RVA +Linkage-table relative. +@end deffn +@deffn {} BFD_RELOC_8_FFnn +Absolute 8-bit relocation, but used to form an address like 0xFFnn. +@end deffn +@deffn {} BFD_RELOC_32_PCREL_S2 +@deffnx {} BFD_RELOC_16_PCREL_S2 +@deffnx {} BFD_RELOC_23_PCREL_S2 +These PC-relative relocations are stored as word displacements -- +i.e., byte displacements shifted right two bits. The 30-bit word +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the +SPARC. (SPARC tools generally refer to this as <>.) The +signed 16-bit displacement is used on the MIPS, and the 23-bit +displacement is used on the Alpha. +@end deffn +@deffn {} BFD_RELOC_HI22 +@deffnx {} BFD_RELOC_LO10 +High 22 bits and low 10 bits of 32-bit value, placed into lower bits of +the target word. These are used on the SPARC. +@end deffn +@deffn {} BFD_RELOC_GPREL16 +@deffnx {} BFD_RELOC_GPREL32 +For systems that allocate a Global Pointer register, these are +displacements off that register. These relocation types are +handled specially, because the value the register will have is +decided relatively late. +@end deffn +@deffn {} BFD_RELOC_I960_CALLJ +Reloc types used for i960/b.out. +@end deffn +@deffn {} BFD_RELOC_NONE +@deffnx {} BFD_RELOC_SPARC_WDISP22 +@deffnx {} BFD_RELOC_SPARC22 +@deffnx {} BFD_RELOC_SPARC13 +@deffnx {} BFD_RELOC_SPARC_GOT10 +@deffnx {} BFD_RELOC_SPARC_GOT13 +@deffnx {} BFD_RELOC_SPARC_GOT22 +@deffnx {} BFD_RELOC_SPARC_PC10 +@deffnx {} BFD_RELOC_SPARC_PC22 +@deffnx {} BFD_RELOC_SPARC_WPLT30 +@deffnx {} BFD_RELOC_SPARC_COPY +@deffnx {} BFD_RELOC_SPARC_GLOB_DAT +@deffnx {} BFD_RELOC_SPARC_JMP_SLOT +@deffnx {} BFD_RELOC_SPARC_RELATIVE +@deffnx {} BFD_RELOC_SPARC_UA16 +@deffnx {} BFD_RELOC_SPARC_UA32 +@deffnx {} BFD_RELOC_SPARC_UA64 +@deffnx {} BFD_RELOC_SPARC_GOTDATA_HIX22 +@deffnx {} BFD_RELOC_SPARC_GOTDATA_LOX10 +@deffnx {} BFD_RELOC_SPARC_GOTDATA_OP_HIX22 +@deffnx {} BFD_RELOC_SPARC_GOTDATA_OP_LOX10 +@deffnx {} BFD_RELOC_SPARC_GOTDATA_OP +@deffnx {} BFD_RELOC_SPARC_JMP_IREL +@deffnx {} BFD_RELOC_SPARC_IRELATIVE +SPARC ELF relocations. There is probably some overlap with other +relocation types already defined. +@end deffn +@deffn {} BFD_RELOC_SPARC_BASE13 +@deffnx {} BFD_RELOC_SPARC_BASE22 +I think these are specific to SPARC a.out (e.g., Sun 4). +@end deffn +@deffn {} BFD_RELOC_SPARC_64 +@deffnx {} BFD_RELOC_SPARC_10 +@deffnx {} BFD_RELOC_SPARC_11 +@deffnx {} BFD_RELOC_SPARC_OLO10 +@deffnx {} BFD_RELOC_SPARC_HH22 +@deffnx {} BFD_RELOC_SPARC_HM10 +@deffnx {} BFD_RELOC_SPARC_LM22 +@deffnx {} BFD_RELOC_SPARC_PC_HH22 +@deffnx {} BFD_RELOC_SPARC_PC_HM10 +@deffnx {} BFD_RELOC_SPARC_PC_LM22 +@deffnx {} BFD_RELOC_SPARC_WDISP16 +@deffnx {} BFD_RELOC_SPARC_WDISP19 +@deffnx {} BFD_RELOC_SPARC_7 +@deffnx {} BFD_RELOC_SPARC_6 +@deffnx {} BFD_RELOC_SPARC_5 +@deffnx {} BFD_RELOC_SPARC_DISP64 +@deffnx {} BFD_RELOC_SPARC_PLT32 +@deffnx {} BFD_RELOC_SPARC_PLT64 +@deffnx {} BFD_RELOC_SPARC_HIX22 +@deffnx {} BFD_RELOC_SPARC_LOX10 +@deffnx {} BFD_RELOC_SPARC_H44 +@deffnx {} BFD_RELOC_SPARC_M44 +@deffnx {} BFD_RELOC_SPARC_L44 +@deffnx {} BFD_RELOC_SPARC_REGISTER +@deffnx {} BFD_RELOC_SPARC_H34 +@deffnx {} BFD_RELOC_SPARC_SIZE32 +@deffnx {} BFD_RELOC_SPARC_SIZE64 +@deffnx {} BFD_RELOC_SPARC_WDISP10 +SPARC64 relocations +@end deffn +@deffn {} BFD_RELOC_SPARC_REV32 +SPARC little endian relocation +@end deffn +@deffn {} BFD_RELOC_SPARC_TLS_GD_HI22 +@deffnx {} BFD_RELOC_SPARC_TLS_GD_LO10 +@deffnx {} BFD_RELOC_SPARC_TLS_GD_ADD +@deffnx {} BFD_RELOC_SPARC_TLS_GD_CALL +@deffnx {} BFD_RELOC_SPARC_TLS_LDM_HI22 +@deffnx {} BFD_RELOC_SPARC_TLS_LDM_LO10 +@deffnx {} BFD_RELOC_SPARC_TLS_LDM_ADD +@deffnx {} BFD_RELOC_SPARC_TLS_LDM_CALL +@deffnx {} BFD_RELOC_SPARC_TLS_LDO_HIX22 +@deffnx {} BFD_RELOC_SPARC_TLS_LDO_LOX10 +@deffnx {} BFD_RELOC_SPARC_TLS_LDO_ADD +@deffnx {} BFD_RELOC_SPARC_TLS_IE_HI22 +@deffnx {} BFD_RELOC_SPARC_TLS_IE_LO10 +@deffnx {} BFD_RELOC_SPARC_TLS_IE_LD +@deffnx {} BFD_RELOC_SPARC_TLS_IE_LDX +@deffnx {} BFD_RELOC_SPARC_TLS_IE_ADD +@deffnx {} BFD_RELOC_SPARC_TLS_LE_HIX22 +@deffnx {} BFD_RELOC_SPARC_TLS_LE_LOX10 +@deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD64 +@deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF64 +@deffnx {} BFD_RELOC_SPARC_TLS_TPOFF32 +@deffnx {} BFD_RELOC_SPARC_TLS_TPOFF64 +SPARC TLS relocations +@end deffn +@deffn {} BFD_RELOC_SPU_IMM7 +@deffnx {} BFD_RELOC_SPU_IMM8 +@deffnx {} BFD_RELOC_SPU_IMM10 +@deffnx {} BFD_RELOC_SPU_IMM10W +@deffnx {} BFD_RELOC_SPU_IMM16 +@deffnx {} BFD_RELOC_SPU_IMM16W +@deffnx {} BFD_RELOC_SPU_IMM18 +@deffnx {} BFD_RELOC_SPU_PCREL9a +@deffnx {} BFD_RELOC_SPU_PCREL9b +@deffnx {} BFD_RELOC_SPU_PCREL16 +@deffnx {} BFD_RELOC_SPU_LO16 +@deffnx {} BFD_RELOC_SPU_HI16 +@deffnx {} BFD_RELOC_SPU_PPU32 +@deffnx {} BFD_RELOC_SPU_PPU64 +@deffnx {} BFD_RELOC_SPU_ADD_PIC +SPU Relocations. +@end deffn +@deffn {} BFD_RELOC_ALPHA_GPDISP_HI16 +Alpha ECOFF and ELF relocations. Some of these treat the symbol or +"addend" in some special way. +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when +writing; when reading, it will be the absolute section symbol. The +addend is the displacement in bytes of the "lda" instruction from +the "ldah" instruction (which is at the address of this reloc). +@end deffn +@deffn {} BFD_RELOC_ALPHA_GPDISP_LO16 +For GPDISP_LO16 ("ignore") relocations, the symbol is handled as +with GPDISP_HI16 relocs. The addend is ignored when writing the +relocations out, and is filled in with the file's GP value on +reading, for convenience. +@end deffn +@deffn {} BFD_RELOC_ALPHA_GPDISP +The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 +relocation except that there is no accompanying GPDISP_LO16 +relocation. +@end deffn +@deffn {} BFD_RELOC_ALPHA_LITERAL +@deffnx {} BFD_RELOC_ALPHA_ELF_LITERAL +@deffnx {} BFD_RELOC_ALPHA_LITUSE +The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; +the assembler turns it into a LDQ instruction to load the address of +the symbol, and then fills in a register in the real instruction. + +The LITERAL reloc, at the LDQ instruction, refers to the .lita +section symbol. The addend is ignored when writing, but is filled +in with the file's GP value on reading, for convenience, as with the +GPDISP_LO16 reloc. + +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16. +It should refer to the symbol to be referenced, as with 16_GOTOFF, +but it generates output not based on the position within the .got +section, but relative to the GP value chosen for the file during the +final link stage. + +The LITUSE reloc, on the instruction using the loaded address, gives +information to the linker that it might be able to use to optimize +away some literal section references. The symbol is ignored (read +as the absolute section symbol), and the "addend" indicates the type +of instruction using the register: +1 - "memory" fmt insn +2 - byte-manipulation (byte offset reg) +3 - jsr (target of branch) +@end deffn +@deffn {} BFD_RELOC_ALPHA_HINT +The HINT relocation indicates a value that should be filled into the +"hint" field of a jmp/jsr/ret instruction, for possible branch- +prediction logic which may be provided on some processors. +@end deffn +@deffn {} BFD_RELOC_ALPHA_LINKAGE +The LINKAGE relocation outputs a linkage pair in the object file, +which is filled by the linker. +@end deffn +@deffn {} BFD_RELOC_ALPHA_CODEADDR +The CODEADDR relocation outputs a STO_CA in the object file, +which is filled by the linker. +@end deffn +@deffn {} BFD_RELOC_ALPHA_GPREL_HI16 +@deffnx {} BFD_RELOC_ALPHA_GPREL_LO16 +The GPREL_HI/LO relocations together form a 32-bit offset from the +GP register. +@end deffn +@deffn {} BFD_RELOC_ALPHA_BRSGP +Like BFD_RELOC_23_PCREL_S2, except that the source and target must +share a common GP, and the target address is adjusted for +STO_ALPHA_STD_GPLOAD. +@end deffn +@deffn {} BFD_RELOC_ALPHA_NOP +The NOP relocation outputs a NOP if the longword displacement +between two procedure entry points is < 2^21. +@end deffn +@deffn {} BFD_RELOC_ALPHA_BSR +The BSR relocation outputs a BSR if the longword displacement +between two procedure entry points is < 2^21. +@end deffn +@deffn {} BFD_RELOC_ALPHA_LDA +The LDA relocation outputs a LDA if the longword displacement +between two procedure entry points is < 2^16. +@end deffn +@deffn {} BFD_RELOC_ALPHA_BOH +The BOH relocation outputs a BSR if the longword displacement +between two procedure entry points is < 2^21, or else a hint. +@end deffn +@deffn {} BFD_RELOC_ALPHA_TLSGD +@deffnx {} BFD_RELOC_ALPHA_TLSLDM +@deffnx {} BFD_RELOC_ALPHA_DTPMOD64 +@deffnx {} BFD_RELOC_ALPHA_GOTDTPREL16 +@deffnx {} BFD_RELOC_ALPHA_DTPREL64 +@deffnx {} BFD_RELOC_ALPHA_DTPREL_HI16 +@deffnx {} BFD_RELOC_ALPHA_DTPREL_LO16 +@deffnx {} BFD_RELOC_ALPHA_DTPREL16 +@deffnx {} BFD_RELOC_ALPHA_GOTTPREL16 +@deffnx {} BFD_RELOC_ALPHA_TPREL64 +@deffnx {} BFD_RELOC_ALPHA_TPREL_HI16 +@deffnx {} BFD_RELOC_ALPHA_TPREL_LO16 +@deffnx {} BFD_RELOC_ALPHA_TPREL16 +Alpha thread-local storage relocations. +@end deffn +@deffn {} BFD_RELOC_MIPS_JMP +@deffnx {} BFD_RELOC_MICROMIPS_JMP +The MIPS jump instruction. +@end deffn +@deffn {} BFD_RELOC_MIPS16_JMP +The MIPS16 jump instruction. +@end deffn +@deffn {} BFD_RELOC_MIPS16_GPREL +MIPS16 GP relative reloc. +@end deffn +@deffn {} BFD_RELOC_HI16 +High 16 bits of 32-bit value; simple reloc. +@end deffn +@deffn {} BFD_RELOC_HI16_S +High 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. +@end deffn +@deffn {} BFD_RELOC_LO16 +Low 16 bits. +@end deffn +@deffn {} BFD_RELOC_HI16_PCREL +High 16 bits of 32-bit pc-relative value +@end deffn +@deffn {} BFD_RELOC_HI16_S_PCREL +High 16 bits of 32-bit pc-relative value, adjusted +@end deffn +@deffn {} BFD_RELOC_LO16_PCREL +Low 16 bits of pc-relative value +@end deffn +@deffn {} BFD_RELOC_MIPS16_GOT16 +@deffnx {} BFD_RELOC_MIPS16_CALL16 +Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of +16-bit immediate fields +@end deffn +@deffn {} BFD_RELOC_MIPS16_HI16 +MIPS16 high 16 bits of 32-bit value. +@end deffn +@deffn {} BFD_RELOC_MIPS16_HI16_S +MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. +@end deffn +@deffn {} BFD_RELOC_MIPS16_LO16 +MIPS16 low 16 bits. +@end deffn +@deffn {} BFD_RELOC_MIPS16_TLS_GD +@deffnx {} BFD_RELOC_MIPS16_TLS_LDM +@deffnx {} BFD_RELOC_MIPS16_TLS_DTPREL_HI16 +@deffnx {} BFD_RELOC_MIPS16_TLS_DTPREL_LO16 +@deffnx {} BFD_RELOC_MIPS16_TLS_GOTTPREL +@deffnx {} BFD_RELOC_MIPS16_TLS_TPREL_HI16 +@deffnx {} BFD_RELOC_MIPS16_TLS_TPREL_LO16 +MIPS16 TLS relocations +@end deffn +@deffn {} BFD_RELOC_MIPS_LITERAL +@deffnx {} BFD_RELOC_MICROMIPS_LITERAL +Relocation against a MIPS literal section. +@end deffn +@deffn {} BFD_RELOC_MICROMIPS_7_PCREL_S1 +@deffnx {} BFD_RELOC_MICROMIPS_10_PCREL_S1 +@deffnx {} BFD_RELOC_MICROMIPS_16_PCREL_S1 +microMIPS PC-relative relocations. +@end deffn +@deffn {} BFD_RELOC_MIPS_21_PCREL_S2 +@deffnx {} BFD_RELOC_MIPS_26_PCREL_S2 +@deffnx {} BFD_RELOC_MIPS_18_PCREL_S3 +@deffnx {} BFD_RELOC_MIPS_19_PCREL_S2 +MIPS PC-relative relocations. +@end deffn +@deffn {} BFD_RELOC_MICROMIPS_GPREL16 +@deffnx {} BFD_RELOC_MICROMIPS_HI16 +@deffnx {} BFD_RELOC_MICROMIPS_HI16_S +@deffnx {} BFD_RELOC_MICROMIPS_LO16 +microMIPS versions of generic BFD relocs. +@end deffn +@deffn {} BFD_RELOC_MIPS_GOT16 +@deffnx {} BFD_RELOC_MICROMIPS_GOT16 +@deffnx {} BFD_RELOC_MIPS_CALL16 +@deffnx {} BFD_RELOC_MICROMIPS_CALL16 +@deffnx {} BFD_RELOC_MIPS_GOT_HI16 +@deffnx {} BFD_RELOC_MICROMIPS_GOT_HI16 +@deffnx {} BFD_RELOC_MIPS_GOT_LO16 +@deffnx {} BFD_RELOC_MICROMIPS_GOT_LO16 +@deffnx {} BFD_RELOC_MIPS_CALL_HI16 +@deffnx {} BFD_RELOC_MICROMIPS_CALL_HI16 +@deffnx {} BFD_RELOC_MIPS_CALL_LO16 +@deffnx {} BFD_RELOC_MICROMIPS_CALL_LO16 +@deffnx {} BFD_RELOC_MIPS_SUB +@deffnx {} BFD_RELOC_MICROMIPS_SUB +@deffnx {} BFD_RELOC_MIPS_GOT_PAGE +@deffnx {} BFD_RELOC_MICROMIPS_GOT_PAGE +@deffnx {} BFD_RELOC_MIPS_GOT_OFST +@deffnx {} BFD_RELOC_MICROMIPS_GOT_OFST +@deffnx {} BFD_RELOC_MIPS_GOT_DISP +@deffnx {} BFD_RELOC_MICROMIPS_GOT_DISP +@deffnx {} BFD_RELOC_MIPS_SHIFT5 +@deffnx {} BFD_RELOC_MIPS_SHIFT6 +@deffnx {} BFD_RELOC_MIPS_INSERT_A +@deffnx {} BFD_RELOC_MIPS_INSERT_B +@deffnx {} BFD_RELOC_MIPS_DELETE +@deffnx {} BFD_RELOC_MIPS_HIGHEST +@deffnx {} BFD_RELOC_MICROMIPS_HIGHEST +@deffnx {} BFD_RELOC_MIPS_HIGHER +@deffnx {} BFD_RELOC_MICROMIPS_HIGHER +@deffnx {} BFD_RELOC_MIPS_SCN_DISP +@deffnx {} BFD_RELOC_MICROMIPS_SCN_DISP +@deffnx {} BFD_RELOC_MIPS_REL16 +@deffnx {} BFD_RELOC_MIPS_RELGOT +@deffnx {} BFD_RELOC_MIPS_JALR +@deffnx {} BFD_RELOC_MICROMIPS_JALR +@deffnx {} BFD_RELOC_MIPS_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_MIPS_TLS_DTPREL32 +@deffnx {} BFD_RELOC_MIPS_TLS_DTPMOD64 +@deffnx {} BFD_RELOC_MIPS_TLS_DTPREL64 +@deffnx {} BFD_RELOC_MIPS_TLS_GD +@deffnx {} BFD_RELOC_MICROMIPS_TLS_GD +@deffnx {} BFD_RELOC_MIPS_TLS_LDM +@deffnx {} BFD_RELOC_MICROMIPS_TLS_LDM +@deffnx {} BFD_RELOC_MIPS_TLS_DTPREL_HI16 +@deffnx {} BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16 +@deffnx {} BFD_RELOC_MIPS_TLS_DTPREL_LO16 +@deffnx {} BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16 +@deffnx {} BFD_RELOC_MIPS_TLS_GOTTPREL +@deffnx {} BFD_RELOC_MICROMIPS_TLS_GOTTPREL +@deffnx {} BFD_RELOC_MIPS_TLS_TPREL32 +@deffnx {} BFD_RELOC_MIPS_TLS_TPREL64 +@deffnx {} BFD_RELOC_MIPS_TLS_TPREL_HI16 +@deffnx {} BFD_RELOC_MICROMIPS_TLS_TPREL_HI16 +@deffnx {} BFD_RELOC_MIPS_TLS_TPREL_LO16 +@deffnx {} BFD_RELOC_MICROMIPS_TLS_TPREL_LO16 +@deffnx {} BFD_RELOC_MIPS_EH +MIPS ELF relocations. +@end deffn +@deffn {} BFD_RELOC_MIPS_COPY +@deffnx {} BFD_RELOC_MIPS_JUMP_SLOT +MIPS ELF relocations (VxWorks and PLT extensions). +@end deffn +@deffn {} BFD_RELOC_MOXIE_10_PCREL +Moxie ELF relocations. +@end deffn +@deffn {} BFD_RELOC_FRV_LABEL16 +@deffnx {} BFD_RELOC_FRV_LABEL24 +@deffnx {} BFD_RELOC_FRV_LO16 +@deffnx {} BFD_RELOC_FRV_HI16 +@deffnx {} BFD_RELOC_FRV_GPREL12 +@deffnx {} BFD_RELOC_FRV_GPRELU12 +@deffnx {} BFD_RELOC_FRV_GPREL32 +@deffnx {} BFD_RELOC_FRV_GPRELHI +@deffnx {} BFD_RELOC_FRV_GPRELLO +@deffnx {} BFD_RELOC_FRV_GOT12 +@deffnx {} BFD_RELOC_FRV_GOTHI +@deffnx {} BFD_RELOC_FRV_GOTLO +@deffnx {} BFD_RELOC_FRV_FUNCDESC +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOT12 +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTHI +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTLO +@deffnx {} BFD_RELOC_FRV_FUNCDESC_VALUE +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFF12 +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFHI +@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFLO +@deffnx {} BFD_RELOC_FRV_GOTOFF12 +@deffnx {} BFD_RELOC_FRV_GOTOFFHI +@deffnx {} BFD_RELOC_FRV_GOTOFFLO +@deffnx {} BFD_RELOC_FRV_GETTLSOFF +@deffnx {} BFD_RELOC_FRV_TLSDESC_VALUE +@deffnx {} BFD_RELOC_FRV_GOTTLSDESC12 +@deffnx {} BFD_RELOC_FRV_GOTTLSDESCHI +@deffnx {} BFD_RELOC_FRV_GOTTLSDESCLO +@deffnx {} BFD_RELOC_FRV_TLSMOFF12 +@deffnx {} BFD_RELOC_FRV_TLSMOFFHI +@deffnx {} BFD_RELOC_FRV_TLSMOFFLO +@deffnx {} BFD_RELOC_FRV_GOTTLSOFF12 +@deffnx {} BFD_RELOC_FRV_GOTTLSOFFHI +@deffnx {} BFD_RELOC_FRV_GOTTLSOFFLO +@deffnx {} BFD_RELOC_FRV_TLSOFF +@deffnx {} BFD_RELOC_FRV_TLSDESC_RELAX +@deffnx {} BFD_RELOC_FRV_GETTLSOFF_RELAX +@deffnx {} BFD_RELOC_FRV_TLSOFF_RELAX +@deffnx {} BFD_RELOC_FRV_TLSMOFF +Fujitsu Frv Relocations. +@end deffn +@deffn {} BFD_RELOC_MN10300_GOTOFF24 +This is a 24bit GOT-relative reloc for the mn10300. +@end deffn +@deffn {} BFD_RELOC_MN10300_GOT32 +This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +@end deffn +@deffn {} BFD_RELOC_MN10300_GOT24 +This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +@end deffn +@deffn {} BFD_RELOC_MN10300_GOT16 +This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +@end deffn +@deffn {} BFD_RELOC_MN10300_COPY +Copy symbol at runtime. +@end deffn +@deffn {} BFD_RELOC_MN10300_GLOB_DAT +Create GOT entry. +@end deffn +@deffn {} BFD_RELOC_MN10300_JMP_SLOT +Create PLT entry. +@end deffn +@deffn {} BFD_RELOC_MN10300_RELATIVE +Adjust by program base. +@end deffn +@deffn {} BFD_RELOC_MN10300_SYM_DIFF +Together with another reloc targeted at the same location, +allows for a value that is the difference of two symbols +in the same section. +@end deffn +@deffn {} BFD_RELOC_MN10300_ALIGN +The addend of this reloc is an alignment power that must +be honoured at the offset's location, regardless of linker +relaxation. +@end deffn +@deffn {} BFD_RELOC_MN10300_TLS_GD +@deffnx {} BFD_RELOC_MN10300_TLS_LD +@deffnx {} BFD_RELOC_MN10300_TLS_LDO +@deffnx {} BFD_RELOC_MN10300_TLS_GOTIE +@deffnx {} BFD_RELOC_MN10300_TLS_IE +@deffnx {} BFD_RELOC_MN10300_TLS_LE +@deffnx {} BFD_RELOC_MN10300_TLS_DTPMOD +@deffnx {} BFD_RELOC_MN10300_TLS_DTPOFF +@deffnx {} BFD_RELOC_MN10300_TLS_TPOFF +Various TLS-related relocations. +@end deffn +@deffn {} BFD_RELOC_MN10300_32_PCREL +This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. +@end deffn +@deffn {} BFD_RELOC_MN10300_16_PCREL +This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. +@end deffn +@deffn {} BFD_RELOC_386_GOT32 +@deffnx {} BFD_RELOC_386_PLT32 +@deffnx {} BFD_RELOC_386_COPY +@deffnx {} BFD_RELOC_386_GLOB_DAT +@deffnx {} BFD_RELOC_386_JUMP_SLOT +@deffnx {} BFD_RELOC_386_RELATIVE +@deffnx {} BFD_RELOC_386_GOTOFF +@deffnx {} BFD_RELOC_386_GOTPC +@deffnx {} BFD_RELOC_386_TLS_TPOFF +@deffnx {} BFD_RELOC_386_TLS_IE +@deffnx {} BFD_RELOC_386_TLS_GOTIE +@deffnx {} BFD_RELOC_386_TLS_LE +@deffnx {} BFD_RELOC_386_TLS_GD +@deffnx {} BFD_RELOC_386_TLS_LDM +@deffnx {} BFD_RELOC_386_TLS_LDO_32 +@deffnx {} BFD_RELOC_386_TLS_IE_32 +@deffnx {} BFD_RELOC_386_TLS_LE_32 +@deffnx {} BFD_RELOC_386_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_386_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_386_TLS_TPOFF32 +@deffnx {} BFD_RELOC_386_TLS_GOTDESC +@deffnx {} BFD_RELOC_386_TLS_DESC_CALL +@deffnx {} BFD_RELOC_386_TLS_DESC +@deffnx {} BFD_RELOC_386_IRELATIVE +i386/elf relocations +@end deffn +@deffn {} BFD_RELOC_X86_64_GOT32 +@deffnx {} BFD_RELOC_X86_64_PLT32 +@deffnx {} BFD_RELOC_X86_64_COPY +@deffnx {} BFD_RELOC_X86_64_GLOB_DAT +@deffnx {} BFD_RELOC_X86_64_JUMP_SLOT +@deffnx {} BFD_RELOC_X86_64_RELATIVE +@deffnx {} BFD_RELOC_X86_64_GOTPCREL +@deffnx {} BFD_RELOC_X86_64_32S +@deffnx {} BFD_RELOC_X86_64_DTPMOD64 +@deffnx {} BFD_RELOC_X86_64_DTPOFF64 +@deffnx {} BFD_RELOC_X86_64_TPOFF64 +@deffnx {} BFD_RELOC_X86_64_TLSGD +@deffnx {} BFD_RELOC_X86_64_TLSLD +@deffnx {} BFD_RELOC_X86_64_DTPOFF32 +@deffnx {} BFD_RELOC_X86_64_GOTTPOFF +@deffnx {} BFD_RELOC_X86_64_TPOFF32 +@deffnx {} BFD_RELOC_X86_64_GOTOFF64 +@deffnx {} BFD_RELOC_X86_64_GOTPC32 +@deffnx {} BFD_RELOC_X86_64_GOT64 +@deffnx {} BFD_RELOC_X86_64_GOTPCREL64 +@deffnx {} BFD_RELOC_X86_64_GOTPC64 +@deffnx {} BFD_RELOC_X86_64_GOTPLT64 +@deffnx {} BFD_RELOC_X86_64_PLTOFF64 +@deffnx {} BFD_RELOC_X86_64_GOTPC32_TLSDESC +@deffnx {} BFD_RELOC_X86_64_TLSDESC_CALL +@deffnx {} BFD_RELOC_X86_64_TLSDESC +@deffnx {} BFD_RELOC_X86_64_IRELATIVE +@deffnx {} BFD_RELOC_X86_64_PC32_BND +@deffnx {} BFD_RELOC_X86_64_PLT32_BND +x86-64/elf relocations +@end deffn +@deffn {} BFD_RELOC_NS32K_IMM_8 +@deffnx {} BFD_RELOC_NS32K_IMM_16 +@deffnx {} BFD_RELOC_NS32K_IMM_32 +@deffnx {} BFD_RELOC_NS32K_IMM_8_PCREL +@deffnx {} BFD_RELOC_NS32K_IMM_16_PCREL +@deffnx {} BFD_RELOC_NS32K_IMM_32_PCREL +@deffnx {} BFD_RELOC_NS32K_DISP_8 +@deffnx {} BFD_RELOC_NS32K_DISP_16 +@deffnx {} BFD_RELOC_NS32K_DISP_32 +@deffnx {} BFD_RELOC_NS32K_DISP_8_PCREL +@deffnx {} BFD_RELOC_NS32K_DISP_16_PCREL +@deffnx {} BFD_RELOC_NS32K_DISP_32_PCREL +ns32k relocations +@end deffn +@deffn {} BFD_RELOC_PDP11_DISP_8_PCREL +@deffnx {} BFD_RELOC_PDP11_DISP_6_PCREL +PDP11 relocations +@end deffn +@deffn {} BFD_RELOC_PJ_CODE_HI16 +@deffnx {} BFD_RELOC_PJ_CODE_LO16 +@deffnx {} BFD_RELOC_PJ_CODE_DIR16 +@deffnx {} BFD_RELOC_PJ_CODE_DIR32 +@deffnx {} BFD_RELOC_PJ_CODE_REL16 +@deffnx {} BFD_RELOC_PJ_CODE_REL32 +Picojava relocs. Not all of these appear in object files. +@end deffn +@deffn {} BFD_RELOC_PPC_B26 +@deffnx {} BFD_RELOC_PPC_BA26 +@deffnx {} BFD_RELOC_PPC_TOC16 +@deffnx {} BFD_RELOC_PPC_B16 +@deffnx {} BFD_RELOC_PPC_B16_BRTAKEN +@deffnx {} BFD_RELOC_PPC_B16_BRNTAKEN +@deffnx {} BFD_RELOC_PPC_BA16 +@deffnx {} BFD_RELOC_PPC_BA16_BRTAKEN +@deffnx {} BFD_RELOC_PPC_BA16_BRNTAKEN +@deffnx {} BFD_RELOC_PPC_COPY +@deffnx {} BFD_RELOC_PPC_GLOB_DAT +@deffnx {} BFD_RELOC_PPC_JMP_SLOT +@deffnx {} BFD_RELOC_PPC_RELATIVE +@deffnx {} BFD_RELOC_PPC_LOCAL24PC +@deffnx {} BFD_RELOC_PPC_EMB_NADDR32 +@deffnx {} BFD_RELOC_PPC_EMB_NADDR16 +@deffnx {} BFD_RELOC_PPC_EMB_NADDR16_LO +@deffnx {} BFD_RELOC_PPC_EMB_NADDR16_HI +@deffnx {} BFD_RELOC_PPC_EMB_NADDR16_HA +@deffnx {} BFD_RELOC_PPC_EMB_SDAI16 +@deffnx {} BFD_RELOC_PPC_EMB_SDA2I16 +@deffnx {} BFD_RELOC_PPC_EMB_SDA2REL +@deffnx {} BFD_RELOC_PPC_EMB_SDA21 +@deffnx {} BFD_RELOC_PPC_EMB_MRKREF +@deffnx {} BFD_RELOC_PPC_EMB_RELSEC16 +@deffnx {} BFD_RELOC_PPC_EMB_RELST_LO +@deffnx {} BFD_RELOC_PPC_EMB_RELST_HI +@deffnx {} BFD_RELOC_PPC_EMB_RELST_HA +@deffnx {} BFD_RELOC_PPC_EMB_BIT_FLD +@deffnx {} BFD_RELOC_PPC_EMB_RELSDA +@deffnx {} BFD_RELOC_PPC_VLE_REL8 +@deffnx {} BFD_RELOC_PPC_VLE_REL15 +@deffnx {} BFD_RELOC_PPC_VLE_REL24 +@deffnx {} BFD_RELOC_PPC_VLE_LO16A +@deffnx {} BFD_RELOC_PPC_VLE_LO16D +@deffnx {} BFD_RELOC_PPC_VLE_HI16A +@deffnx {} BFD_RELOC_PPC_VLE_HI16D +@deffnx {} BFD_RELOC_PPC_VLE_HA16A +@deffnx {} BFD_RELOC_PPC_VLE_HA16D +@deffnx {} BFD_RELOC_PPC_VLE_SDA21 +@deffnx {} BFD_RELOC_PPC_VLE_SDA21_LO +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_LO16A +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_LO16D +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_HI16A +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_HI16D +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_HA16A +@deffnx {} BFD_RELOC_PPC_VLE_SDAREL_HA16D +@deffnx {} BFD_RELOC_PPC64_HIGHER +@deffnx {} BFD_RELOC_PPC64_HIGHER_S +@deffnx {} BFD_RELOC_PPC64_HIGHEST +@deffnx {} BFD_RELOC_PPC64_HIGHEST_S +@deffnx {} BFD_RELOC_PPC64_TOC16_LO +@deffnx {} BFD_RELOC_PPC64_TOC16_HI +@deffnx {} BFD_RELOC_PPC64_TOC16_HA +@deffnx {} BFD_RELOC_PPC64_TOC +@deffnx {} BFD_RELOC_PPC64_PLTGOT16 +@deffnx {} BFD_RELOC_PPC64_PLTGOT16_LO +@deffnx {} BFD_RELOC_PPC64_PLTGOT16_HI +@deffnx {} BFD_RELOC_PPC64_PLTGOT16_HA +@deffnx {} BFD_RELOC_PPC64_ADDR16_DS +@deffnx {} BFD_RELOC_PPC64_ADDR16_LO_DS +@deffnx {} BFD_RELOC_PPC64_GOT16_DS +@deffnx {} BFD_RELOC_PPC64_GOT16_LO_DS +@deffnx {} BFD_RELOC_PPC64_PLT16_LO_DS +@deffnx {} BFD_RELOC_PPC64_SECTOFF_DS +@deffnx {} BFD_RELOC_PPC64_SECTOFF_LO_DS +@deffnx {} BFD_RELOC_PPC64_TOC16_DS +@deffnx {} BFD_RELOC_PPC64_TOC16_LO_DS +@deffnx {} BFD_RELOC_PPC64_PLTGOT16_DS +@deffnx {} BFD_RELOC_PPC64_PLTGOT16_LO_DS +@deffnx {} BFD_RELOC_PPC64_ADDR16_HIGH +@deffnx {} BFD_RELOC_PPC64_ADDR16_HIGHA +@deffnx {} BFD_RELOC_PPC64_ADDR64_LOCAL +Power(rs6000) and PowerPC relocations. +@end deffn +@deffn {} BFD_RELOC_PPC_TLS +@deffnx {} BFD_RELOC_PPC_TLSGD +@deffnx {} BFD_RELOC_PPC_TLSLD +@deffnx {} BFD_RELOC_PPC_DTPMOD +@deffnx {} BFD_RELOC_PPC_TPREL16 +@deffnx {} BFD_RELOC_PPC_TPREL16_LO +@deffnx {} BFD_RELOC_PPC_TPREL16_HI +@deffnx {} BFD_RELOC_PPC_TPREL16_HA +@deffnx {} BFD_RELOC_PPC_TPREL +@deffnx {} BFD_RELOC_PPC_DTPREL16 +@deffnx {} BFD_RELOC_PPC_DTPREL16_LO +@deffnx {} BFD_RELOC_PPC_DTPREL16_HI +@deffnx {} BFD_RELOC_PPC_DTPREL16_HA +@deffnx {} BFD_RELOC_PPC_DTPREL +@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16 +@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_LO +@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HI +@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HA +@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16 +@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_LO +@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HI +@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HA +@deffnx {} BFD_RELOC_PPC_GOT_TPREL16 +@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_LO +@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HI +@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HA +@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16 +@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_LO +@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HI +@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HA +@deffnx {} BFD_RELOC_PPC64_TPREL16_DS +@deffnx {} BFD_RELOC_PPC64_TPREL16_LO_DS +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHER +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHERA +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHEST +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHESTA +@deffnx {} BFD_RELOC_PPC64_DTPREL16_DS +@deffnx {} BFD_RELOC_PPC64_DTPREL16_LO_DS +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHER +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHERA +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHEST +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHESTA +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGH +@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHA +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGH +@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHA +PowerPC and PowerPC64 thread-local storage relocations. +@end deffn +@deffn {} BFD_RELOC_I370_D12 +IBM 370/390 relocations +@end deffn +@deffn {} BFD_RELOC_CTOR +The type of reloc used to build a constructor table - at the moment +probably a 32 bit wide absolute relocation, but the target can choose. +It generally does map to one of the other relocation types. +@end deffn +@deffn {} BFD_RELOC_ARM_PCREL_BRANCH +ARM 26 bit pc-relative branch. The lowest two bits must be zero and are +not stored in the instruction. +@end deffn +@deffn {} BFD_RELOC_ARM_PCREL_BLX +ARM 26 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. +@end deffn +@deffn {} BFD_RELOC_THUMB_PCREL_BLX +Thumb 22 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. +@end deffn +@deffn {} BFD_RELOC_ARM_PCREL_CALL +ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. +@end deffn +@deffn {} BFD_RELOC_ARM_PCREL_JUMP +ARM 26-bit pc-relative branch for B or conditional BL instruction. +@end deffn +@deffn {} BFD_RELOC_THUMB_PCREL_BRANCH7 +@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH9 +@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH12 +@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH20 +@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH23 +@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH25 +Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. +The lowest bit must be zero and is not stored in the instruction. +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an +"nn" one smaller in all cases. Note further that BRANCH23 +corresponds to R_ARM_THM_CALL. +@end deffn +@deffn {} BFD_RELOC_ARM_OFFSET_IMM +12-bit immediate offset, used in ARM-format ldr and str instructions. +@end deffn +@deffn {} BFD_RELOC_ARM_THUMB_OFFSET +5-bit immediate offset, used in Thumb-format ldr and str instructions. +@end deffn +@deffn {} BFD_RELOC_ARM_TARGET1 +Pc-relative or absolute relocation depending on target. Used for +entries in .init_array sections. +@end deffn +@deffn {} BFD_RELOC_ARM_ROSEGREL32 +Read-only segment base relative address. +@end deffn +@deffn {} BFD_RELOC_ARM_SBREL32 +Data segment base relative address. +@end deffn +@deffn {} BFD_RELOC_ARM_TARGET2 +This reloc is used for references to RTTI data from exception handling +tables. The actual definition depends on the target. It may be a +pc-relative or some form of GOT-indirect relocation. +@end deffn +@deffn {} BFD_RELOC_ARM_PREL31 +31-bit PC relative address. +@end deffn +@deffn {} BFD_RELOC_ARM_MOVW +@deffnx {} BFD_RELOC_ARM_MOVT +@deffnx {} BFD_RELOC_ARM_MOVW_PCREL +@deffnx {} BFD_RELOC_ARM_MOVT_PCREL +@deffnx {} BFD_RELOC_ARM_THUMB_MOVW +@deffnx {} BFD_RELOC_ARM_THUMB_MOVT +@deffnx {} BFD_RELOC_ARM_THUMB_MOVW_PCREL +@deffnx {} BFD_RELOC_ARM_THUMB_MOVT_PCREL +Low and High halfword relocations for MOVW and MOVT instructions. +@end deffn +@deffn {} BFD_RELOC_ARM_JUMP_SLOT +@deffnx {} BFD_RELOC_ARM_GLOB_DAT +@deffnx {} BFD_RELOC_ARM_GOT32 +@deffnx {} BFD_RELOC_ARM_PLT32 +@deffnx {} BFD_RELOC_ARM_RELATIVE +@deffnx {} BFD_RELOC_ARM_GOTOFF +@deffnx {} BFD_RELOC_ARM_GOTPC +@deffnx {} BFD_RELOC_ARM_GOT_PREL +Relocations for setting up GOTs and PLTs for shared libraries. +@end deffn +@deffn {} BFD_RELOC_ARM_TLS_GD32 +@deffnx {} BFD_RELOC_ARM_TLS_LDO32 +@deffnx {} BFD_RELOC_ARM_TLS_LDM32 +@deffnx {} BFD_RELOC_ARM_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_ARM_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_ARM_TLS_TPOFF32 +@deffnx {} BFD_RELOC_ARM_TLS_IE32 +@deffnx {} BFD_RELOC_ARM_TLS_LE32 +@deffnx {} BFD_RELOC_ARM_TLS_GOTDESC +@deffnx {} BFD_RELOC_ARM_TLS_CALL +@deffnx {} BFD_RELOC_ARM_THM_TLS_CALL +@deffnx {} BFD_RELOC_ARM_TLS_DESCSEQ +@deffnx {} BFD_RELOC_ARM_THM_TLS_DESCSEQ +@deffnx {} BFD_RELOC_ARM_TLS_DESC +ARM thread-local storage relocations. +@end deffn +@deffn {} BFD_RELOC_ARM_ALU_PC_G0_NC +@deffnx {} BFD_RELOC_ARM_ALU_PC_G0 +@deffnx {} BFD_RELOC_ARM_ALU_PC_G1_NC +@deffnx {} BFD_RELOC_ARM_ALU_PC_G1 +@deffnx {} BFD_RELOC_ARM_ALU_PC_G2 +@deffnx {} BFD_RELOC_ARM_LDR_PC_G0 +@deffnx {} BFD_RELOC_ARM_LDR_PC_G1 +@deffnx {} BFD_RELOC_ARM_LDR_PC_G2 +@deffnx {} BFD_RELOC_ARM_LDRS_PC_G0 +@deffnx {} BFD_RELOC_ARM_LDRS_PC_G1 +@deffnx {} BFD_RELOC_ARM_LDRS_PC_G2 +@deffnx {} BFD_RELOC_ARM_LDC_PC_G0 +@deffnx {} BFD_RELOC_ARM_LDC_PC_G1 +@deffnx {} BFD_RELOC_ARM_LDC_PC_G2 +@deffnx {} BFD_RELOC_ARM_ALU_SB_G0_NC +@deffnx {} BFD_RELOC_ARM_ALU_SB_G0 +@deffnx {} BFD_RELOC_ARM_ALU_SB_G1_NC +@deffnx {} BFD_RELOC_ARM_ALU_SB_G1 +@deffnx {} BFD_RELOC_ARM_ALU_SB_G2 +@deffnx {} BFD_RELOC_ARM_LDR_SB_G0 +@deffnx {} BFD_RELOC_ARM_LDR_SB_G1 +@deffnx {} BFD_RELOC_ARM_LDR_SB_G2 +@deffnx {} BFD_RELOC_ARM_LDRS_SB_G0 +@deffnx {} BFD_RELOC_ARM_LDRS_SB_G1 +@deffnx {} BFD_RELOC_ARM_LDRS_SB_G2 +@deffnx {} BFD_RELOC_ARM_LDC_SB_G0 +@deffnx {} BFD_RELOC_ARM_LDC_SB_G1 +@deffnx {} BFD_RELOC_ARM_LDC_SB_G2 +ARM group relocations. +@end deffn +@deffn {} BFD_RELOC_ARM_V4BX +Annotation of BX instructions. +@end deffn +@deffn {} BFD_RELOC_ARM_IRELATIVE +ARM support for STT_GNU_IFUNC. +@end deffn +@deffn {} BFD_RELOC_ARM_IMMEDIATE +@deffnx {} BFD_RELOC_ARM_ADRL_IMMEDIATE +@deffnx {} BFD_RELOC_ARM_T32_IMMEDIATE +@deffnx {} BFD_RELOC_ARM_T32_ADD_IMM +@deffnx {} BFD_RELOC_ARM_T32_IMM12 +@deffnx {} BFD_RELOC_ARM_T32_ADD_PC12 +@deffnx {} BFD_RELOC_ARM_SHIFT_IMM +@deffnx {} BFD_RELOC_ARM_SMC +@deffnx {} BFD_RELOC_ARM_HVC +@deffnx {} BFD_RELOC_ARM_SWI +@deffnx {} BFD_RELOC_ARM_MULTI +@deffnx {} BFD_RELOC_ARM_CP_OFF_IMM +@deffnx {} BFD_RELOC_ARM_CP_OFF_IMM_S2 +@deffnx {} BFD_RELOC_ARM_T32_CP_OFF_IMM +@deffnx {} BFD_RELOC_ARM_T32_CP_OFF_IMM_S2 +@deffnx {} BFD_RELOC_ARM_ADR_IMM +@deffnx {} BFD_RELOC_ARM_LDR_IMM +@deffnx {} BFD_RELOC_ARM_LITERAL +@deffnx {} BFD_RELOC_ARM_IN_POOL +@deffnx {} BFD_RELOC_ARM_OFFSET_IMM8 +@deffnx {} BFD_RELOC_ARM_T32_OFFSET_U8 +@deffnx {} BFD_RELOC_ARM_T32_OFFSET_IMM +@deffnx {} BFD_RELOC_ARM_HWLITERAL +@deffnx {} BFD_RELOC_ARM_THUMB_ADD +@deffnx {} BFD_RELOC_ARM_THUMB_IMM +@deffnx {} BFD_RELOC_ARM_THUMB_SHIFT +These relocs are only used within the ARM assembler. They are not +(at present) written to any object files. +@end deffn +@deffn {} BFD_RELOC_SH_PCDISP8BY2 +@deffnx {} BFD_RELOC_SH_PCDISP12BY2 +@deffnx {} BFD_RELOC_SH_IMM3 +@deffnx {} BFD_RELOC_SH_IMM3U +@deffnx {} BFD_RELOC_SH_DISP12 +@deffnx {} BFD_RELOC_SH_DISP12BY2 +@deffnx {} BFD_RELOC_SH_DISP12BY4 +@deffnx {} BFD_RELOC_SH_DISP12BY8 +@deffnx {} BFD_RELOC_SH_DISP20 +@deffnx {} BFD_RELOC_SH_DISP20BY8 +@deffnx {} BFD_RELOC_SH_IMM4 +@deffnx {} BFD_RELOC_SH_IMM4BY2 +@deffnx {} BFD_RELOC_SH_IMM4BY4 +@deffnx {} BFD_RELOC_SH_IMM8 +@deffnx {} BFD_RELOC_SH_IMM8BY2 +@deffnx {} BFD_RELOC_SH_IMM8BY4 +@deffnx {} BFD_RELOC_SH_PCRELIMM8BY2 +@deffnx {} BFD_RELOC_SH_PCRELIMM8BY4 +@deffnx {} BFD_RELOC_SH_SWITCH16 +@deffnx {} BFD_RELOC_SH_SWITCH32 +@deffnx {} BFD_RELOC_SH_USES +@deffnx {} BFD_RELOC_SH_COUNT +@deffnx {} BFD_RELOC_SH_ALIGN +@deffnx {} BFD_RELOC_SH_CODE +@deffnx {} BFD_RELOC_SH_DATA +@deffnx {} BFD_RELOC_SH_LABEL +@deffnx {} BFD_RELOC_SH_LOOP_START +@deffnx {} BFD_RELOC_SH_LOOP_END +@deffnx {} BFD_RELOC_SH_COPY +@deffnx {} BFD_RELOC_SH_GLOB_DAT +@deffnx {} BFD_RELOC_SH_JMP_SLOT +@deffnx {} BFD_RELOC_SH_RELATIVE +@deffnx {} BFD_RELOC_SH_GOTPC +@deffnx {} BFD_RELOC_SH_GOT_LOW16 +@deffnx {} BFD_RELOC_SH_GOT_MEDLOW16 +@deffnx {} BFD_RELOC_SH_GOT_MEDHI16 +@deffnx {} BFD_RELOC_SH_GOT_HI16 +@deffnx {} BFD_RELOC_SH_GOTPLT_LOW16 +@deffnx {} BFD_RELOC_SH_GOTPLT_MEDLOW16 +@deffnx {} BFD_RELOC_SH_GOTPLT_MEDHI16 +@deffnx {} BFD_RELOC_SH_GOTPLT_HI16 +@deffnx {} BFD_RELOC_SH_PLT_LOW16 +@deffnx {} BFD_RELOC_SH_PLT_MEDLOW16 +@deffnx {} BFD_RELOC_SH_PLT_MEDHI16 +@deffnx {} BFD_RELOC_SH_PLT_HI16 +@deffnx {} BFD_RELOC_SH_GOTOFF_LOW16 +@deffnx {} BFD_RELOC_SH_GOTOFF_MEDLOW16 +@deffnx {} BFD_RELOC_SH_GOTOFF_MEDHI16 +@deffnx {} BFD_RELOC_SH_GOTOFF_HI16 +@deffnx {} BFD_RELOC_SH_GOTPC_LOW16 +@deffnx {} BFD_RELOC_SH_GOTPC_MEDLOW16 +@deffnx {} BFD_RELOC_SH_GOTPC_MEDHI16 +@deffnx {} BFD_RELOC_SH_GOTPC_HI16 +@deffnx {} BFD_RELOC_SH_COPY64 +@deffnx {} BFD_RELOC_SH_GLOB_DAT64 +@deffnx {} BFD_RELOC_SH_JMP_SLOT64 +@deffnx {} BFD_RELOC_SH_RELATIVE64 +@deffnx {} BFD_RELOC_SH_GOT10BY4 +@deffnx {} BFD_RELOC_SH_GOT10BY8 +@deffnx {} BFD_RELOC_SH_GOTPLT10BY4 +@deffnx {} BFD_RELOC_SH_GOTPLT10BY8 +@deffnx {} BFD_RELOC_SH_GOTPLT32 +@deffnx {} BFD_RELOC_SH_SHMEDIA_CODE +@deffnx {} BFD_RELOC_SH_IMMU5 +@deffnx {} BFD_RELOC_SH_IMMS6 +@deffnx {} BFD_RELOC_SH_IMMS6BY32 +@deffnx {} BFD_RELOC_SH_IMMU6 +@deffnx {} BFD_RELOC_SH_IMMS10 +@deffnx {} BFD_RELOC_SH_IMMS10BY2 +@deffnx {} BFD_RELOC_SH_IMMS10BY4 +@deffnx {} BFD_RELOC_SH_IMMS10BY8 +@deffnx {} BFD_RELOC_SH_IMMS16 +@deffnx {} BFD_RELOC_SH_IMMU16 +@deffnx {} BFD_RELOC_SH_IMM_LOW16 +@deffnx {} BFD_RELOC_SH_IMM_LOW16_PCREL +@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16 +@deffnx {} BFD_RELOC_SH_IMM_MEDLOW16_PCREL +@deffnx {} BFD_RELOC_SH_IMM_MEDHI16 +@deffnx {} BFD_RELOC_SH_IMM_MEDHI16_PCREL +@deffnx {} BFD_RELOC_SH_IMM_HI16 +@deffnx {} BFD_RELOC_SH_IMM_HI16_PCREL +@deffnx {} BFD_RELOC_SH_PT_16 +@deffnx {} BFD_RELOC_SH_TLS_GD_32 +@deffnx {} BFD_RELOC_SH_TLS_LD_32 +@deffnx {} BFD_RELOC_SH_TLS_LDO_32 +@deffnx {} BFD_RELOC_SH_TLS_IE_32 +@deffnx {} BFD_RELOC_SH_TLS_LE_32 +@deffnx {} BFD_RELOC_SH_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_SH_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_SH_TLS_TPOFF32 +@deffnx {} BFD_RELOC_SH_GOT20 +@deffnx {} BFD_RELOC_SH_GOTOFF20 +@deffnx {} BFD_RELOC_SH_GOTFUNCDESC +@deffnx {} BFD_RELOC_SH_GOTFUNCDESC20 +@deffnx {} BFD_RELOC_SH_GOTOFFFUNCDESC +@deffnx {} BFD_RELOC_SH_GOTOFFFUNCDESC20 +@deffnx {} BFD_RELOC_SH_FUNCDESC +Renesas / SuperH SH relocs. Not all of these appear in object files. +@end deffn +@deffn {} BFD_RELOC_ARC_B22_PCREL +ARC Cores relocs. +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are +not stored in the instruction. The high 20 bits are installed in bits 26 +through 7 of the instruction. +@end deffn +@deffn {} BFD_RELOC_ARC_B26 +ARC 26 bit absolute branch. The lowest two bits must be zero and are not +stored in the instruction. The high 24 bits are installed in bits 23 +through 0. +@end deffn +@deffn {} BFD_RELOC_BFIN_16_IMM +ADI Blackfin 16 bit immediate absolute reloc. +@end deffn +@deffn {} BFD_RELOC_BFIN_16_HIGH +ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. +@end deffn +@deffn {} BFD_RELOC_BFIN_4_PCREL +ADI Blackfin 'a' part of LSETUP. +@end deffn +@deffn {} BFD_RELOC_BFIN_5_PCREL +ADI Blackfin. +@end deffn +@deffn {} BFD_RELOC_BFIN_16_LOW +ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. +@end deffn +@deffn {} BFD_RELOC_BFIN_10_PCREL +ADI Blackfin. +@end deffn +@deffn {} BFD_RELOC_BFIN_11_PCREL +ADI Blackfin 'b' part of LSETUP. +@end deffn +@deffn {} BFD_RELOC_BFIN_12_PCREL_JUMP +ADI Blackfin. +@end deffn +@deffn {} BFD_RELOC_BFIN_12_PCREL_JUMP_S +ADI Blackfin Short jump, pcrel. +@end deffn +@deffn {} BFD_RELOC_BFIN_24_PCREL_CALL_X +ADI Blackfin Call.x not implemented. +@end deffn +@deffn {} BFD_RELOC_BFIN_24_PCREL_JUMP_L +ADI Blackfin Long Jump pcrel. +@end deffn +@deffn {} BFD_RELOC_BFIN_GOT17M4 +@deffnx {} BFD_RELOC_BFIN_GOTHI +@deffnx {} BFD_RELOC_BFIN_GOTLO +@deffnx {} BFD_RELOC_BFIN_FUNCDESC +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOT17M4 +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTHI +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTLO +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_VALUE +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4 +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI +@deffnx {} BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO +@deffnx {} BFD_RELOC_BFIN_GOTOFF17M4 +@deffnx {} BFD_RELOC_BFIN_GOTOFFHI +@deffnx {} BFD_RELOC_BFIN_GOTOFFLO +ADI Blackfin FD-PIC relocations. +@end deffn +@deffn {} BFD_RELOC_BFIN_GOT +ADI Blackfin GOT relocation. +@end deffn +@deffn {} BFD_RELOC_BFIN_PLTPC +ADI Blackfin PLTPC relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_PUSH +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_CONST +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_ADD +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_SUB +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_MULT +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_DIV +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_MOD +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_LSHIFT +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_RSHIFT +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_AND +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_OR +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_XOR +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_LAND +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_LOR +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_LEN +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_NEG +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_COMP +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_PAGE +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_HWPAGE +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_ARELOC_BFIN_ADDR +ADI Blackfin arithmetic relocation. +@end deffn +@deffn {} BFD_RELOC_D10V_10_PCREL_R +Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D10V_10_PCREL_L +Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. This is the same as the previous reloc +except it is in the left container, i.e., +shifted left 15 bits. +@end deffn +@deffn {} BFD_RELOC_D10V_18 +This is an 18-bit reloc with the right 2 bits +assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D10V_18_PCREL +This is an 18-bit reloc with the right 2 bits +assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_6 +Mitsubishi D30V relocs. +This is a 6-bit absolute reloc. +@end deffn +@deffn {} BFD_RELOC_D30V_9_PCREL +This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_9_PCREL_R +This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +@end deffn +@deffn {} BFD_RELOC_D30V_15 +This is a 12-bit absolute reloc with the +right 3 bitsassumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_15_PCREL +This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_15_PCREL_R +This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +@end deffn +@deffn {} BFD_RELOC_D30V_21 +This is an 18-bit absolute reloc with +the right 3 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_21_PCREL +This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_D30V_21_PCREL_R +This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +@end deffn +@deffn {} BFD_RELOC_D30V_32 +This is a 32-bit absolute reloc. +@end deffn +@deffn {} BFD_RELOC_D30V_32_PCREL +This is a 32-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_DLX_HI16_S +DLX relocs +@end deffn +@deffn {} BFD_RELOC_DLX_LO16 +DLX relocs +@end deffn +@deffn {} BFD_RELOC_DLX_JMP26 +DLX relocs +@end deffn +@deffn {} BFD_RELOC_M32C_HI8 +@deffnx {} BFD_RELOC_M32C_RL_JUMP +@deffnx {} BFD_RELOC_M32C_RL_1ADDR +@deffnx {} BFD_RELOC_M32C_RL_2ADDR +Renesas M16C/M32C Relocations. +@end deffn +@deffn {} BFD_RELOC_M32R_24 +Renesas M32R (formerly Mitsubishi M32R) relocs. +This is a 24 bit absolute address. +@end deffn +@deffn {} BFD_RELOC_M32R_10_PCREL +This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_M32R_18_PCREL +This is an 18-bit reloc with the right 2 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_M32R_26_PCREL +This is a 26-bit reloc with the right 2 bits assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_M32R_HI16_ULO +This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as unsigned. +@end deffn +@deffn {} BFD_RELOC_M32R_HI16_SLO +This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as signed. +@end deffn +@deffn {} BFD_RELOC_M32R_LO16 +This is a 16-bit reloc containing the lower 16 bits of an address. +@end deffn +@deffn {} BFD_RELOC_M32R_SDA16 +This is a 16-bit reloc containing the small data area offset for use in +add3, load, and store instructions. +@end deffn +@deffn {} BFD_RELOC_M32R_GOT24 +@deffnx {} BFD_RELOC_M32R_26_PLTREL +@deffnx {} BFD_RELOC_M32R_COPY +@deffnx {} BFD_RELOC_M32R_GLOB_DAT +@deffnx {} BFD_RELOC_M32R_JMP_SLOT +@deffnx {} BFD_RELOC_M32R_RELATIVE +@deffnx {} BFD_RELOC_M32R_GOTOFF +@deffnx {} BFD_RELOC_M32R_GOTOFF_HI_ULO +@deffnx {} BFD_RELOC_M32R_GOTOFF_HI_SLO +@deffnx {} BFD_RELOC_M32R_GOTOFF_LO +@deffnx {} BFD_RELOC_M32R_GOTPC24 +@deffnx {} BFD_RELOC_M32R_GOT16_HI_ULO +@deffnx {} BFD_RELOC_M32R_GOT16_HI_SLO +@deffnx {} BFD_RELOC_M32R_GOT16_LO +@deffnx {} BFD_RELOC_M32R_GOTPC_HI_ULO +@deffnx {} BFD_RELOC_M32R_GOTPC_HI_SLO +@deffnx {} BFD_RELOC_M32R_GOTPC_LO +For PIC. +@end deffn +@deffn {} BFD_RELOC_NDS32_20 +NDS32 relocs. +This is a 20 bit absolute address. +@end deffn +@deffn {} BFD_RELOC_NDS32_9_PCREL +This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_WORD_9_PCREL +This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_15_PCREL +This is an 15-bit reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_17_PCREL +This is an 17-bit reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_25_PCREL +This is a 25-bit reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_HI20 +This is a 20-bit reloc containing the high 20 bits of an address +used with the lower 12 bits +@end deffn +@deffn {} BFD_RELOC_NDS32_LO12S3 +This is a 12-bit reloc containing the lower 12 bits of an address +then shift right by 3. This is used with ldi,sdi... +@end deffn +@deffn {} BFD_RELOC_NDS32_LO12S2 +This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 2. This is used with lwi,swi... +@end deffn +@deffn {} BFD_RELOC_NDS32_LO12S1 +This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 1. This is used with lhi,shi... +@end deffn +@deffn {} BFD_RELOC_NDS32_LO12S0 +This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 0. This is used with lbisbi... +@end deffn +@deffn {} BFD_RELOC_NDS32_LO12S0_ORI +This is a 12-bit reloc containing the lower 12 bits of an address +then shift left by 0. This is only used with branch relaxations +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA15S3 +This is a 15-bit reloc containing the small data area 18-bit signed offset +and shift left by 3 for use in ldi, sdi... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA15S2 +This is a 15-bit reloc containing the small data area 17-bit signed offset +and shift left by 2 for use in lwi, swi... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA15S1 +This is a 15-bit reloc containing the small data area 16-bit signed offset +and shift left by 1 for use in lhi, shi... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA15S0 +This is a 15-bit reloc containing the small data area 15-bit signed offset +and shift left by 0 for use in lbi, sbi... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA16S3 +This is a 16-bit reloc containing the small data area 16-bit signed offset +and shift left by 3 +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA17S2 +This is a 17-bit reloc containing the small data area 17-bit signed offset +and shift left by 2 for use in lwi.gp, swi.gp... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA18S1 +This is a 18-bit reloc containing the small data area 18-bit signed offset +and shift left by 1 for use in lhi.gp, shi.gp... +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA19S0 +This is a 19-bit reloc containing the small data area 19-bit signed offset +and shift left by 0 for use in lbi.gp, sbi.gp... +@end deffn +@deffn {} BFD_RELOC_NDS32_GOT20 +@deffnx {} BFD_RELOC_NDS32_9_PLTREL +@deffnx {} BFD_RELOC_NDS32_25_PLTREL +@deffnx {} BFD_RELOC_NDS32_COPY +@deffnx {} BFD_RELOC_NDS32_GLOB_DAT +@deffnx {} BFD_RELOC_NDS32_JMP_SLOT +@deffnx {} BFD_RELOC_NDS32_RELATIVE +@deffnx {} BFD_RELOC_NDS32_GOTOFF +@deffnx {} BFD_RELOC_NDS32_GOTOFF_HI20 +@deffnx {} BFD_RELOC_NDS32_GOTOFF_LO12 +@deffnx {} BFD_RELOC_NDS32_GOTPC20 +@deffnx {} BFD_RELOC_NDS32_GOT_HI20 +@deffnx {} BFD_RELOC_NDS32_GOT_LO12 +@deffnx {} BFD_RELOC_NDS32_GOTPC_HI20 +@deffnx {} BFD_RELOC_NDS32_GOTPC_LO12 +for PIC +@end deffn +@deffn {} BFD_RELOC_NDS32_INSN16 +@deffnx {} BFD_RELOC_NDS32_LABEL +@deffnx {} BFD_RELOC_NDS32_LONGCALL1 +@deffnx {} BFD_RELOC_NDS32_LONGCALL2 +@deffnx {} BFD_RELOC_NDS32_LONGCALL3 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP1 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP2 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP3 +@deffnx {} BFD_RELOC_NDS32_LOADSTORE +@deffnx {} BFD_RELOC_NDS32_9_FIXED +@deffnx {} BFD_RELOC_NDS32_15_FIXED +@deffnx {} BFD_RELOC_NDS32_17_FIXED +@deffnx {} BFD_RELOC_NDS32_25_FIXED +@deffnx {} BFD_RELOC_NDS32_LONGCALL4 +@deffnx {} BFD_RELOC_NDS32_LONGCALL5 +@deffnx {} BFD_RELOC_NDS32_LONGCALL6 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP4 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP5 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP6 +@deffnx {} BFD_RELOC_NDS32_LONGJUMP7 +for relax +@end deffn +@deffn {} BFD_RELOC_NDS32_PLTREL_HI20 +@deffnx {} BFD_RELOC_NDS32_PLTREL_LO12 +@deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_HI20 +@deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_LO12 +for PIC +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA12S2_DP +@deffnx {} BFD_RELOC_NDS32_SDA12S2_SP +@deffnx {} BFD_RELOC_NDS32_LO12S2_DP +@deffnx {} BFD_RELOC_NDS32_LO12S2_SP +for floating point +@end deffn +@deffn {} BFD_RELOC_NDS32_DWARF2_OP1 +@deffnx {} BFD_RELOC_NDS32_DWARF2_OP2 +@deffnx {} BFD_RELOC_NDS32_DWARF2_LEB +for dwarf2 debug_line. +@end deffn +@deffn {} BFD_RELOC_NDS32_UPDATE_TA +for eliminate 16-bit instructions +@end deffn +@deffn {} BFD_RELOC_NDS32_PLT_GOTREL_LO20 +@deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_LO15 +@deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_LO19 +@deffnx {} BFD_RELOC_NDS32_GOT_LO15 +@deffnx {} BFD_RELOC_NDS32_GOT_LO19 +@deffnx {} BFD_RELOC_NDS32_GOTOFF_LO15 +@deffnx {} BFD_RELOC_NDS32_GOTOFF_LO19 +@deffnx {} BFD_RELOC_NDS32_GOT15S2 +@deffnx {} BFD_RELOC_NDS32_GOT17S2 +for PIC object relaxation +@end deffn +@deffn {} BFD_RELOC_NDS32_5 +NDS32 relocs. +This is a 5 bit absolute address. +@end deffn +@deffn {} BFD_RELOC_NDS32_10_UPCREL +This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0. +@end deffn +@deffn {} BFD_RELOC_NDS32_SDA_FP7U2_RELA +If fp were omitted, fp can used as another gp. +@end deffn +@deffn {} BFD_RELOC_NDS32_RELAX_ENTRY +@deffnx {} BFD_RELOC_NDS32_GOT_SUFF +@deffnx {} BFD_RELOC_NDS32_GOTOFF_SUFF +@deffnx {} BFD_RELOC_NDS32_PLT_GOT_SUFF +@deffnx {} BFD_RELOC_NDS32_MULCALL_SUFF +@deffnx {} BFD_RELOC_NDS32_PTR +@deffnx {} BFD_RELOC_NDS32_PTR_COUNT +@deffnx {} BFD_RELOC_NDS32_PTR_RESOLVED +@deffnx {} BFD_RELOC_NDS32_PLTBLOCK +@deffnx {} BFD_RELOC_NDS32_RELAX_REGION_BEGIN +@deffnx {} BFD_RELOC_NDS32_RELAX_REGION_END +@deffnx {} BFD_RELOC_NDS32_MINUEND +@deffnx {} BFD_RELOC_NDS32_SUBTRAHEND +@deffnx {} BFD_RELOC_NDS32_DIFF8 +@deffnx {} BFD_RELOC_NDS32_DIFF16 +@deffnx {} BFD_RELOC_NDS32_DIFF32 +@deffnx {} BFD_RELOC_NDS32_DIFF_ULEB128 +@deffnx {} BFD_RELOC_NDS32_EMPTY +relaxation relative relocation types +@end deffn +@deffn {} BFD_RELOC_NDS32_25_ABS +This is a 25 bit absolute address. +@end deffn +@deffn {} BFD_RELOC_NDS32_DATA +@deffnx {} BFD_RELOC_NDS32_TRAN +@deffnx {} BFD_RELOC_NDS32_17IFC_PCREL +@deffnx {} BFD_RELOC_NDS32_10IFCU_PCREL +For ex9 and ifc using. +@end deffn +@deffn {} BFD_RELOC_NDS32_TPOFF +@deffnx {} BFD_RELOC_NDS32_TLS_LE_HI20 +@deffnx {} BFD_RELOC_NDS32_TLS_LE_LO12 +@deffnx {} BFD_RELOC_NDS32_TLS_LE_ADD +@deffnx {} BFD_RELOC_NDS32_TLS_LE_LS +@deffnx {} BFD_RELOC_NDS32_GOTTPOFF +@deffnx {} BFD_RELOC_NDS32_TLS_IE_HI20 +@deffnx {} BFD_RELOC_NDS32_TLS_IE_LO12S2 +@deffnx {} BFD_RELOC_NDS32_TLS_TPOFF +@deffnx {} BFD_RELOC_NDS32_TLS_LE_20 +@deffnx {} BFD_RELOC_NDS32_TLS_LE_15S0 +@deffnx {} BFD_RELOC_NDS32_TLS_LE_15S1 +@deffnx {} BFD_RELOC_NDS32_TLS_LE_15S2 +For TLS. +@end deffn +@deffn {} BFD_RELOC_V850_9_PCREL +This is a 9-bit reloc +@end deffn +@deffn {} BFD_RELOC_V850_22_PCREL +This is a 22-bit reloc +@end deffn +@deffn {} BFD_RELOC_V850_SDA_16_16_OFFSET +This is a 16 bit offset from the short data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_SDA_15_16_OFFSET +This is a 16 bit offset (of which only 15 bits are used) from the +short data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_ZDA_16_16_OFFSET +This is a 16 bit offset from the zero data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_ZDA_15_16_OFFSET +This is a 16 bit offset (of which only 15 bits are used) from the +zero data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_6_8_OFFSET +This is an 8 bit offset (of which only 6 bits are used) from the +tiny data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_7_8_OFFSET +This is an 8bit offset (of which only 7 bits are used) from the tiny +data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_7_7_OFFSET +This is a 7 bit offset from the tiny data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_16_16_OFFSET +This is a 16 bit offset from the tiny data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_4_5_OFFSET +This is a 5 bit offset (of which only 4 bits are used) from the tiny +data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_TDA_4_4_OFFSET +This is a 4 bit offset from the tiny data area pointer. +@end deffn +@deffn {} BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET +This is a 16 bit offset from the short data area pointer, with the +bits placed non-contiguously in the instruction. +@end deffn +@deffn {} BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET +This is a 16 bit offset from the zero data area pointer, with the +bits placed non-contiguously in the instruction. +@end deffn +@deffn {} BFD_RELOC_V850_CALLT_6_7_OFFSET +This is a 6 bit offset from the call table base pointer. +@end deffn +@deffn {} BFD_RELOC_V850_CALLT_16_16_OFFSET +This is a 16 bit offset from the call table base pointer. +@end deffn +@deffn {} BFD_RELOC_V850_LONGCALL +Used for relaxing indirect function calls. +@end deffn +@deffn {} BFD_RELOC_V850_LONGJUMP +Used for relaxing indirect jumps. +@end deffn +@deffn {} BFD_RELOC_V850_ALIGN +Used to maintain alignment whilst relaxing. +@end deffn +@deffn {} BFD_RELOC_V850_LO16_SPLIT_OFFSET +This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu +instructions. +@end deffn +@deffn {} BFD_RELOC_V850_16_PCREL +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_17_PCREL +This is a 17-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_23 +This is a 23-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_32_PCREL +This is a 32-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_32_ABS +This is a 32-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_16_SPLIT_OFFSET +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_16_S1 +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_LO16_S1 +Low 16 bits. 16 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_V850_CALLT_15_16_OFFSET +This is a 16 bit offset from the call table base pointer. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOTPCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_16_GOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_22_PLT_PCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_PLT_PCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_COPY +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_GLOB_DAT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_JMP_SLOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_RELATIVE +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_16_GOTOFF +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOTOFF +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_CODE +start code. +@end deffn +@deffn {} BFD_RELOC_V850_DATA +start data in text. +@end deffn +@deffn {} BFD_RELOC_TIC30_LDP +This is a 8bit DP reloc for the tms320c30, where the most +significant 8 bits of a 24 bit word are placed into the least +significant 8 bits of the opcode. +@end deffn +@deffn {} BFD_RELOC_TIC54X_PARTLS7 +This is a 7bit reloc for the tms320c54x, where the least +significant 7 bits of a 16 bit word are placed into the least +significant 7 bits of the opcode. +@end deffn +@deffn {} BFD_RELOC_TIC54X_PARTMS9 +This is a 9bit DP reloc for the tms320c54x, where the most +significant 9 bits of a 16 bit word are placed into the least +significant 9 bits of the opcode. +@end deffn +@deffn {} BFD_RELOC_TIC54X_23 +This is an extended address 23-bit reloc for the tms320c54x. +@end deffn +@deffn {} BFD_RELOC_TIC54X_16_OF_23 +This is a 16-bit reloc for the tms320c54x, where the least +significant 16 bits of a 23-bit extended address are placed into +the opcode. +@end deffn +@deffn {} BFD_RELOC_TIC54X_MS7_OF_23 +This is a reloc for the tms320c54x, where the most +significant 7 bits of a 23-bit extended address are placed into +the opcode. +@end deffn +@deffn {} BFD_RELOC_C6000_PCR_S21 +@deffnx {} BFD_RELOC_C6000_PCR_S12 +@deffnx {} BFD_RELOC_C6000_PCR_S10 +@deffnx {} BFD_RELOC_C6000_PCR_S7 +@deffnx {} BFD_RELOC_C6000_ABS_S16 +@deffnx {} BFD_RELOC_C6000_ABS_L16 +@deffnx {} BFD_RELOC_C6000_ABS_H16 +@deffnx {} BFD_RELOC_C6000_SBR_U15_B +@deffnx {} BFD_RELOC_C6000_SBR_U15_H +@deffnx {} BFD_RELOC_C6000_SBR_U15_W +@deffnx {} BFD_RELOC_C6000_SBR_S16 +@deffnx {} BFD_RELOC_C6000_SBR_L16_B +@deffnx {} BFD_RELOC_C6000_SBR_L16_H +@deffnx {} BFD_RELOC_C6000_SBR_L16_W +@deffnx {} BFD_RELOC_C6000_SBR_H16_B +@deffnx {} BFD_RELOC_C6000_SBR_H16_H +@deffnx {} BFD_RELOC_C6000_SBR_H16_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_U15_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_L16_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_H16_W +@deffnx {} BFD_RELOC_C6000_DSBT_INDEX +@deffnx {} BFD_RELOC_C6000_PREL31 +@deffnx {} BFD_RELOC_C6000_COPY +@deffnx {} BFD_RELOC_C6000_JUMP_SLOT +@deffnx {} BFD_RELOC_C6000_EHTYPE +@deffnx {} BFD_RELOC_C6000_PCR_H16 +@deffnx {} BFD_RELOC_C6000_PCR_L16 +@deffnx {} BFD_RELOC_C6000_ALIGN +@deffnx {} BFD_RELOC_C6000_FPHEAD +@deffnx {} BFD_RELOC_C6000_NOCMP +TMS320C6000 relocations. +@end deffn +@deffn {} BFD_RELOC_FR30_48 +This is a 48 bit reloc for the FR30 that stores 32 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_20 +This is a 32 bit reloc for the FR30 that stores 20 bits split up into +two sections. +@end deffn +@deffn {} BFD_RELOC_FR30_6_IN_4 +This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in +4 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_8_IN_8 +This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset +into 8 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_9_IN_8 +This is a 16 bit reloc for the FR30 that stores a 9 bit short offset +into 8 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_10_IN_8 +This is a 16 bit reloc for the FR30 that stores a 10 bit word offset +into 8 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_9_PCREL +This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative +short offset into 8 bits. +@end deffn +@deffn {} BFD_RELOC_FR30_12_PCREL +This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative +short offset into 11 bits. +@end deffn +@deffn {} BFD_RELOC_MCORE_PCREL_IMM8BY4 +@deffnx {} BFD_RELOC_MCORE_PCREL_IMM11BY2 +@deffnx {} BFD_RELOC_MCORE_PCREL_IMM4BY2 +@deffnx {} BFD_RELOC_MCORE_PCREL_32 +@deffnx {} BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2 +@deffnx {} BFD_RELOC_MCORE_RVA +Motorola Mcore relocations. +@end deffn +@deffn {} BFD_RELOC_MEP_8 +@deffnx {} BFD_RELOC_MEP_16 +@deffnx {} BFD_RELOC_MEP_32 +@deffnx {} BFD_RELOC_MEP_PCREL8A2 +@deffnx {} BFD_RELOC_MEP_PCREL12A2 +@deffnx {} BFD_RELOC_MEP_PCREL17A2 +@deffnx {} BFD_RELOC_MEP_PCREL24A2 +@deffnx {} BFD_RELOC_MEP_PCABS24A2 +@deffnx {} BFD_RELOC_MEP_LOW16 +@deffnx {} BFD_RELOC_MEP_HI16U +@deffnx {} BFD_RELOC_MEP_HI16S +@deffnx {} BFD_RELOC_MEP_GPREL +@deffnx {} BFD_RELOC_MEP_TPREL +@deffnx {} BFD_RELOC_MEP_TPREL7 +@deffnx {} BFD_RELOC_MEP_TPREL7A2 +@deffnx {} BFD_RELOC_MEP_TPREL7A4 +@deffnx {} BFD_RELOC_MEP_UIMM24 +@deffnx {} BFD_RELOC_MEP_ADDR24A4 +@deffnx {} BFD_RELOC_MEP_GNU_VTINHERIT +@deffnx {} BFD_RELOC_MEP_GNU_VTENTRY +Toshiba Media Processor Relocations. +@end deffn +@deffn {} BFD_RELOC_METAG_HIADDR16 +@deffnx {} BFD_RELOC_METAG_LOADDR16 +@deffnx {} BFD_RELOC_METAG_RELBRANCH +@deffnx {} BFD_RELOC_METAG_GETSETOFF +@deffnx {} BFD_RELOC_METAG_HIOG +@deffnx {} BFD_RELOC_METAG_LOOG +@deffnx {} BFD_RELOC_METAG_REL8 +@deffnx {} BFD_RELOC_METAG_REL16 +@deffnx {} BFD_RELOC_METAG_HI16_GOTOFF +@deffnx {} BFD_RELOC_METAG_LO16_GOTOFF +@deffnx {} BFD_RELOC_METAG_GETSET_GOTOFF +@deffnx {} BFD_RELOC_METAG_GETSET_GOT +@deffnx {} BFD_RELOC_METAG_HI16_GOTPC +@deffnx {} BFD_RELOC_METAG_LO16_GOTPC +@deffnx {} BFD_RELOC_METAG_HI16_PLT +@deffnx {} BFD_RELOC_METAG_LO16_PLT +@deffnx {} BFD_RELOC_METAG_RELBRANCH_PLT +@deffnx {} BFD_RELOC_METAG_GOTOFF +@deffnx {} BFD_RELOC_METAG_PLT +@deffnx {} BFD_RELOC_METAG_COPY +@deffnx {} BFD_RELOC_METAG_JMP_SLOT +@deffnx {} BFD_RELOC_METAG_RELATIVE +@deffnx {} BFD_RELOC_METAG_GLOB_DAT +@deffnx {} BFD_RELOC_METAG_TLS_GD +@deffnx {} BFD_RELOC_METAG_TLS_LDM +@deffnx {} BFD_RELOC_METAG_TLS_LDO_HI16 +@deffnx {} BFD_RELOC_METAG_TLS_LDO_LO16 +@deffnx {} BFD_RELOC_METAG_TLS_LDO +@deffnx {} BFD_RELOC_METAG_TLS_IE +@deffnx {} BFD_RELOC_METAG_TLS_IENONPIC +@deffnx {} BFD_RELOC_METAG_TLS_IENONPIC_HI16 +@deffnx {} BFD_RELOC_METAG_TLS_IENONPIC_LO16 +@deffnx {} BFD_RELOC_METAG_TLS_TPOFF +@deffnx {} BFD_RELOC_METAG_TLS_DTPMOD +@deffnx {} BFD_RELOC_METAG_TLS_DTPOFF +@deffnx {} BFD_RELOC_METAG_TLS_LE +@deffnx {} BFD_RELOC_METAG_TLS_LE_HI16 +@deffnx {} BFD_RELOC_METAG_TLS_LE_LO16 +Imagination Technologies Meta relocations. +@end deffn +@deffn {} BFD_RELOC_MMIX_GETA +@deffnx {} BFD_RELOC_MMIX_GETA_1 +@deffnx {} BFD_RELOC_MMIX_GETA_2 +@deffnx {} BFD_RELOC_MMIX_GETA_3 +These are relocations for the GETA instruction. +@end deffn +@deffn {} BFD_RELOC_MMIX_CBRANCH +@deffnx {} BFD_RELOC_MMIX_CBRANCH_J +@deffnx {} BFD_RELOC_MMIX_CBRANCH_1 +@deffnx {} BFD_RELOC_MMIX_CBRANCH_2 +@deffnx {} BFD_RELOC_MMIX_CBRANCH_3 +These are relocations for a conditional branch instruction. +@end deffn +@deffn {} BFD_RELOC_MMIX_PUSHJ +@deffnx {} BFD_RELOC_MMIX_PUSHJ_1 +@deffnx {} BFD_RELOC_MMIX_PUSHJ_2 +@deffnx {} BFD_RELOC_MMIX_PUSHJ_3 +@deffnx {} BFD_RELOC_MMIX_PUSHJ_STUBBABLE +These are relocations for the PUSHJ instruction. +@end deffn +@deffn {} BFD_RELOC_MMIX_JMP +@deffnx {} BFD_RELOC_MMIX_JMP_1 +@deffnx {} BFD_RELOC_MMIX_JMP_2 +@deffnx {} BFD_RELOC_MMIX_JMP_3 +These are relocations for the JMP instruction. +@end deffn +@deffn {} BFD_RELOC_MMIX_ADDR19 +This is a relocation for a relative address as in a GETA instruction or +a branch. +@end deffn +@deffn {} BFD_RELOC_MMIX_ADDR27 +This is a relocation for a relative address as in a JMP instruction. +@end deffn +@deffn {} BFD_RELOC_MMIX_REG_OR_BYTE +This is a relocation for an instruction field that may be a general +register or a value 0..255. +@end deffn +@deffn {} BFD_RELOC_MMIX_REG +This is a relocation for an instruction field that may be a general +register. +@end deffn +@deffn {} BFD_RELOC_MMIX_BASE_PLUS_OFFSET +This is a relocation for two instruction fields holding a register and +an offset, the equivalent of the relocation. +@end deffn +@deffn {} BFD_RELOC_MMIX_LOCAL +This relocation is an assertion that the expression is not allocated as +a global register. It does not modify contents. +@end deffn +@deffn {} BFD_RELOC_AVR_7_PCREL +This is a 16 bit reloc for the AVR that stores 8 bit pc relative +short offset into 7 bits. +@end deffn +@deffn {} BFD_RELOC_AVR_13_PCREL +This is a 16 bit reloc for the AVR that stores 13 bit pc relative +short offset into 12 bits. +@end deffn +@deffn {} BFD_RELOC_AVR_16_PM +This is a 16 bit reloc for the AVR that stores 17 bit value (usually +program memory address) into 16 bits. +@end deffn +@deffn {} BFD_RELOC_AVR_LO8_LDI +This is a 16 bit reloc for the AVR that stores 8 bit value (usually +data memory address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HI8_LDI +This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of data memory address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HH8_LDI +This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of program memory address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_MS8_LDI +This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of 32 bit value) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_LO8_LDI_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually data memory address) into 8 bit immediate value of SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HI8_LDI_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of data memory address) into 8 bit immediate value of +SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HH8_LDI_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(most high 8 bit of program memory address) into 8 bit immediate value +of LDI or SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_MS8_LDI_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb +of 32 bit value) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_LO8_LDI_PM +This is a 16 bit reloc for the AVR that stores 8 bit value (usually +command address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_LO8_LDI_GS +This is a 16 bit reloc for the AVR that stores 8 bit value +(command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +in the lower 128k. +@end deffn +@deffn {} BFD_RELOC_AVR_HI8_LDI_PM +This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HI8_LDI_GS +This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +below 128k. +@end deffn +@deffn {} BFD_RELOC_AVR_HH8_LDI_PM +This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of command address) into 8 bit immediate value of LDI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_LO8_LDI_PM_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually command address) into 8 bit immediate value of SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HI8_LDI_PM_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of 16 bit command address) into 8 bit immediate value +of SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_HH8_LDI_PM_NEG +This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 6 bit of 22 bit command address) into 8 bit immediate +value of SUBI insn. +@end deffn +@deffn {} BFD_RELOC_AVR_CALL +This is a 32 bit reloc for the AVR that stores 23 bit value +into 22 bits. +@end deffn +@deffn {} BFD_RELOC_AVR_LDI +This is a 16 bit reloc for the AVR that stores all needed bits +for absolute addressing with ldi with overflow check to linktime +@end deffn +@deffn {} BFD_RELOC_AVR_6 +This is a 6 bit reloc for the AVR that stores offset for ldd/std +instructions +@end deffn +@deffn {} BFD_RELOC_AVR_6_ADIW +This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw +instructions +@end deffn +@deffn {} BFD_RELOC_AVR_8_LO +This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol +in .byte lo8(symbol) +@end deffn +@deffn {} BFD_RELOC_AVR_8_HI +This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol +in .byte hi8(symbol) +@end deffn +@deffn {} BFD_RELOC_AVR_8_HLO +This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol +in .byte hlo8(symbol) +@end deffn +@deffn {} BFD_RELOC_AVR_DIFF8 +@deffnx {} BFD_RELOC_AVR_DIFF16 +@deffnx {} BFD_RELOC_AVR_DIFF32 +AVR relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +second symbol so the linker can determine whether to adjust the field +value. +@end deffn +@deffn {} BFD_RELOC_AVR_LDS_STS_16 +This is a 7 bit reloc for the AVR that stores SRAM address for 16bit +lds and sts instructions supported only tiny core. +@end deffn +@deffn {} BFD_RELOC_AVR_PORT6 +This is a 6 bit reloc for the AVR that stores an I/O register +number for the IN and OUT instructions +@end deffn +@deffn {} BFD_RELOC_AVR_PORT5 +This is a 5 bit reloc for the AVR that stores an I/O register +number for the SBIC, SBIS, SBI and CBI instructions +@end deffn +@deffn {} BFD_RELOC_RL78_NEG8 +@deffnx {} BFD_RELOC_RL78_NEG16 +@deffnx {} BFD_RELOC_RL78_NEG24 +@deffnx {} BFD_RELOC_RL78_NEG32 +@deffnx {} BFD_RELOC_RL78_16_OP +@deffnx {} BFD_RELOC_RL78_24_OP +@deffnx {} BFD_RELOC_RL78_32_OP +@deffnx {} BFD_RELOC_RL78_8U +@deffnx {} BFD_RELOC_RL78_16U +@deffnx {} BFD_RELOC_RL78_24U +@deffnx {} BFD_RELOC_RL78_DIR3U_PCREL +@deffnx {} BFD_RELOC_RL78_DIFF +@deffnx {} BFD_RELOC_RL78_GPRELB +@deffnx {} BFD_RELOC_RL78_GPRELW +@deffnx {} BFD_RELOC_RL78_GPRELL +@deffnx {} BFD_RELOC_RL78_SYM +@deffnx {} BFD_RELOC_RL78_OP_SUBTRACT +@deffnx {} BFD_RELOC_RL78_OP_NEG +@deffnx {} BFD_RELOC_RL78_OP_AND +@deffnx {} BFD_RELOC_RL78_OP_SHRA +@deffnx {} BFD_RELOC_RL78_ABS8 +@deffnx {} BFD_RELOC_RL78_ABS16 +@deffnx {} BFD_RELOC_RL78_ABS16_REV +@deffnx {} BFD_RELOC_RL78_ABS32 +@deffnx {} BFD_RELOC_RL78_ABS32_REV +@deffnx {} BFD_RELOC_RL78_ABS16U +@deffnx {} BFD_RELOC_RL78_ABS16UW +@deffnx {} BFD_RELOC_RL78_ABS16UL +@deffnx {} BFD_RELOC_RL78_RELAX +@deffnx {} BFD_RELOC_RL78_HI16 +@deffnx {} BFD_RELOC_RL78_HI8 +@deffnx {} BFD_RELOC_RL78_LO16 +@deffnx {} BFD_RELOC_RL78_CODE +Renesas RL78 Relocations. +@end deffn +@deffn {} BFD_RELOC_RX_NEG8 +@deffnx {} BFD_RELOC_RX_NEG16 +@deffnx {} BFD_RELOC_RX_NEG24 +@deffnx {} BFD_RELOC_RX_NEG32 +@deffnx {} BFD_RELOC_RX_16_OP +@deffnx {} BFD_RELOC_RX_24_OP +@deffnx {} BFD_RELOC_RX_32_OP +@deffnx {} BFD_RELOC_RX_8U +@deffnx {} BFD_RELOC_RX_16U +@deffnx {} BFD_RELOC_RX_24U +@deffnx {} BFD_RELOC_RX_DIR3U_PCREL +@deffnx {} BFD_RELOC_RX_DIFF +@deffnx {} BFD_RELOC_RX_GPRELB +@deffnx {} BFD_RELOC_RX_GPRELW +@deffnx {} BFD_RELOC_RX_GPRELL +@deffnx {} BFD_RELOC_RX_SYM +@deffnx {} BFD_RELOC_RX_OP_SUBTRACT +@deffnx {} BFD_RELOC_RX_OP_NEG +@deffnx {} BFD_RELOC_RX_ABS8 +@deffnx {} BFD_RELOC_RX_ABS16 +@deffnx {} BFD_RELOC_RX_ABS16_REV +@deffnx {} BFD_RELOC_RX_ABS32 +@deffnx {} BFD_RELOC_RX_ABS32_REV +@deffnx {} BFD_RELOC_RX_ABS16U +@deffnx {} BFD_RELOC_RX_ABS16UW +@deffnx {} BFD_RELOC_RX_ABS16UL +@deffnx {} BFD_RELOC_RX_RELAX +Renesas RX Relocations. +@end deffn +@deffn {} BFD_RELOC_390_12 +Direct 12 bit. +@end deffn +@deffn {} BFD_RELOC_390_GOT12 +12 bit GOT offset. +@end deffn +@deffn {} BFD_RELOC_390_PLT32 +32 bit PC relative PLT address. +@end deffn +@deffn {} BFD_RELOC_390_COPY +Copy symbol at runtime. +@end deffn +@deffn {} BFD_RELOC_390_GLOB_DAT +Create GOT entry. +@end deffn +@deffn {} BFD_RELOC_390_JMP_SLOT +Create PLT entry. +@end deffn +@deffn {} BFD_RELOC_390_RELATIVE +Adjust by program base. +@end deffn +@deffn {} BFD_RELOC_390_GOTPC +32 bit PC relative offset to GOT. +@end deffn +@deffn {} BFD_RELOC_390_GOT16 +16 bit GOT offset. +@end deffn +@deffn {} BFD_RELOC_390_PC12DBL +PC relative 12 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PLT12DBL +12 bit PC rel. PLT shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PC16DBL +PC relative 16 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PLT16DBL +16 bit PC rel. PLT shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PC24DBL +PC relative 24 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PLT24DBL +24 bit PC rel. PLT shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PC32DBL +PC relative 32 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_PLT32DBL +32 bit PC rel. PLT shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_GOTPCDBL +32 bit PC rel. GOT shifted by 1. +@end deffn +@deffn {} BFD_RELOC_390_GOT64 +64 bit GOT offset. +@end deffn +@deffn {} BFD_RELOC_390_PLT64 +64 bit PC relative PLT address. +@end deffn +@deffn {} BFD_RELOC_390_GOTENT +32 bit rel. offset to GOT entry. +@end deffn +@deffn {} BFD_RELOC_390_GOTOFF64 +64 bit offset to GOT. +@end deffn +@deffn {} BFD_RELOC_390_GOTPLT12 +12-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_390_GOTPLT16 +16-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_390_GOTPLT32 +32-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_390_GOTPLT64 +64-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_390_GOTPLTENT +32-bit rel. offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_390_PLTOFF16 +16-bit rel. offset from the GOT to a PLT entry. +@end deffn +@deffn {} BFD_RELOC_390_PLTOFF32 +32-bit rel. offset from the GOT to a PLT entry. +@end deffn +@deffn {} BFD_RELOC_390_PLTOFF64 +64-bit rel. offset from the GOT to a PLT entry. +@end deffn +@deffn {} BFD_RELOC_390_TLS_LOAD +@deffnx {} BFD_RELOC_390_TLS_GDCALL +@deffnx {} BFD_RELOC_390_TLS_LDCALL +@deffnx {} BFD_RELOC_390_TLS_GD32 +@deffnx {} BFD_RELOC_390_TLS_GD64 +@deffnx {} BFD_RELOC_390_TLS_GOTIE12 +@deffnx {} BFD_RELOC_390_TLS_GOTIE32 +@deffnx {} BFD_RELOC_390_TLS_GOTIE64 +@deffnx {} BFD_RELOC_390_TLS_LDM32 +@deffnx {} BFD_RELOC_390_TLS_LDM64 +@deffnx {} BFD_RELOC_390_TLS_IE32 +@deffnx {} BFD_RELOC_390_TLS_IE64 +@deffnx {} BFD_RELOC_390_TLS_IEENT +@deffnx {} BFD_RELOC_390_TLS_LE32 +@deffnx {} BFD_RELOC_390_TLS_LE64 +@deffnx {} BFD_RELOC_390_TLS_LDO32 +@deffnx {} BFD_RELOC_390_TLS_LDO64 +@deffnx {} BFD_RELOC_390_TLS_DTPMOD +@deffnx {} BFD_RELOC_390_TLS_DTPOFF +@deffnx {} BFD_RELOC_390_TLS_TPOFF +s390 tls relocations. +@end deffn +@deffn {} BFD_RELOC_390_20 +@deffnx {} BFD_RELOC_390_GOT20 +@deffnx {} BFD_RELOC_390_GOTPLT20 +@deffnx {} BFD_RELOC_390_TLS_GOTIE20 +Long displacement extension. +@end deffn +@deffn {} BFD_RELOC_390_IRELATIVE +STT_GNU_IFUNC relocation. +@end deffn +@deffn {} BFD_RELOC_SCORE_GPREL15 +Score relocations +Low 16 bit for load/store +@end deffn +@deffn {} BFD_RELOC_SCORE_DUMMY2 +@deffnx {} BFD_RELOC_SCORE_JMP +This is a 24-bit reloc with the right 1 bit assumed to be 0 +@end deffn +@deffn {} BFD_RELOC_SCORE_BRANCH +This is a 19-bit reloc with the right 1 bit assumed to be 0 +@end deffn +@deffn {} BFD_RELOC_SCORE_IMM30 +This is a 32-bit reloc for 48-bit instructions. +@end deffn +@deffn {} BFD_RELOC_SCORE_IMM32 +This is a 32-bit reloc for 48-bit instructions. +@end deffn +@deffn {} BFD_RELOC_SCORE16_JMP +This is a 11-bit reloc with the right 1 bit assumed to be 0 +@end deffn +@deffn {} BFD_RELOC_SCORE16_BRANCH +This is a 8-bit reloc with the right 1 bit assumed to be 0 +@end deffn +@deffn {} BFD_RELOC_SCORE_BCMP +This is a 9-bit reloc with the right 1 bit assumed to be 0 +@end deffn +@deffn {} BFD_RELOC_SCORE_GOT15 +@deffnx {} BFD_RELOC_SCORE_GOT_LO16 +@deffnx {} BFD_RELOC_SCORE_CALL15 +@deffnx {} BFD_RELOC_SCORE_DUMMY_HI16 +Undocumented Score relocs +@end deffn +@deffn {} BFD_RELOC_IP2K_FR9 +Scenix IP2K - 9-bit register number / data address +@end deffn +@deffn {} BFD_RELOC_IP2K_BANK +Scenix IP2K - 4-bit register/data bank number +@end deffn +@deffn {} BFD_RELOC_IP2K_ADDR16CJP +Scenix IP2K - low 13 bits of instruction word address +@end deffn +@deffn {} BFD_RELOC_IP2K_PAGE3 +Scenix IP2K - high 3 bits of instruction word address +@end deffn +@deffn {} BFD_RELOC_IP2K_LO8DATA +@deffnx {} BFD_RELOC_IP2K_HI8DATA +@deffnx {} BFD_RELOC_IP2K_EX8DATA +Scenix IP2K - ext/low/high 8 bits of data address +@end deffn +@deffn {} BFD_RELOC_IP2K_LO8INSN +@deffnx {} BFD_RELOC_IP2K_HI8INSN +Scenix IP2K - low/high 8 bits of instruction word address +@end deffn +@deffn {} BFD_RELOC_IP2K_PC_SKIP +Scenix IP2K - even/odd PC modifier to modify snb pcl.0 +@end deffn +@deffn {} BFD_RELOC_IP2K_TEXT +Scenix IP2K - 16 bit word address in text section. +@end deffn +@deffn {} BFD_RELOC_IP2K_FR_OFFSET +Scenix IP2K - 7-bit sp or dp offset +@end deffn +@deffn {} BFD_RELOC_VPE4KMATH_DATA +@deffnx {} BFD_RELOC_VPE4KMATH_INSN +Scenix VPE4K coprocessor - data/insn-space addressing +@end deffn +@deffn {} BFD_RELOC_VTABLE_INHERIT +@deffnx {} BFD_RELOC_VTABLE_ENTRY +These two relocations are used by the linker to determine which of +the entries in a C++ virtual function table are actually used. When +the --gc-sections option is given, the linker will zero out the entries +that are not used, so that the code for those functions need not be +included in the output. + +VTABLE_INHERIT is a zero-space relocation used to describe to the +linker the inheritance tree of a C++ virtual function table. The +relocation's symbol should be the parent class' vtable, and the +relocation should be located at the child vtable. + +VTABLE_ENTRY is a zero-space relocation that describes the use of a +virtual function table entry. The reloc's symbol should refer to the +table of the class mentioned in the code. Off of that base, an offset +describes the entry that is being used. For Rela hosts, this offset +is stored in the reloc's addend. For Rel hosts, we are forced to put +this offset in the reloc's section offset. +@end deffn +@deffn {} BFD_RELOC_IA64_IMM14 +@deffnx {} BFD_RELOC_IA64_IMM22 +@deffnx {} BFD_RELOC_IA64_IMM64 +@deffnx {} BFD_RELOC_IA64_DIR32MSB +@deffnx {} BFD_RELOC_IA64_DIR32LSB +@deffnx {} BFD_RELOC_IA64_DIR64MSB +@deffnx {} BFD_RELOC_IA64_DIR64LSB +@deffnx {} BFD_RELOC_IA64_GPREL22 +@deffnx {} BFD_RELOC_IA64_GPREL64I +@deffnx {} BFD_RELOC_IA64_GPREL32MSB +@deffnx {} BFD_RELOC_IA64_GPREL32LSB +@deffnx {} BFD_RELOC_IA64_GPREL64MSB +@deffnx {} BFD_RELOC_IA64_GPREL64LSB +@deffnx {} BFD_RELOC_IA64_LTOFF22 +@deffnx {} BFD_RELOC_IA64_LTOFF64I +@deffnx {} BFD_RELOC_IA64_PLTOFF22 +@deffnx {} BFD_RELOC_IA64_PLTOFF64I +@deffnx {} BFD_RELOC_IA64_PLTOFF64MSB +@deffnx {} BFD_RELOC_IA64_PLTOFF64LSB +@deffnx {} BFD_RELOC_IA64_FPTR64I +@deffnx {} BFD_RELOC_IA64_FPTR32MSB +@deffnx {} BFD_RELOC_IA64_FPTR32LSB +@deffnx {} BFD_RELOC_IA64_FPTR64MSB +@deffnx {} BFD_RELOC_IA64_FPTR64LSB +@deffnx {} BFD_RELOC_IA64_PCREL21B +@deffnx {} BFD_RELOC_IA64_PCREL21BI +@deffnx {} BFD_RELOC_IA64_PCREL21M +@deffnx {} BFD_RELOC_IA64_PCREL21F +@deffnx {} BFD_RELOC_IA64_PCREL22 +@deffnx {} BFD_RELOC_IA64_PCREL60B +@deffnx {} BFD_RELOC_IA64_PCREL64I +@deffnx {} BFD_RELOC_IA64_PCREL32MSB +@deffnx {} BFD_RELOC_IA64_PCREL32LSB +@deffnx {} BFD_RELOC_IA64_PCREL64MSB +@deffnx {} BFD_RELOC_IA64_PCREL64LSB +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR22 +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64I +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR32MSB +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR32LSB +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64MSB +@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64LSB +@deffnx {} BFD_RELOC_IA64_SEGREL32MSB +@deffnx {} BFD_RELOC_IA64_SEGREL32LSB +@deffnx {} BFD_RELOC_IA64_SEGREL64MSB +@deffnx {} BFD_RELOC_IA64_SEGREL64LSB +@deffnx {} BFD_RELOC_IA64_SECREL32MSB +@deffnx {} BFD_RELOC_IA64_SECREL32LSB +@deffnx {} BFD_RELOC_IA64_SECREL64MSB +@deffnx {} BFD_RELOC_IA64_SECREL64LSB +@deffnx {} BFD_RELOC_IA64_REL32MSB +@deffnx {} BFD_RELOC_IA64_REL32LSB +@deffnx {} BFD_RELOC_IA64_REL64MSB +@deffnx {} BFD_RELOC_IA64_REL64LSB +@deffnx {} BFD_RELOC_IA64_LTV32MSB +@deffnx {} BFD_RELOC_IA64_LTV32LSB +@deffnx {} BFD_RELOC_IA64_LTV64MSB +@deffnx {} BFD_RELOC_IA64_LTV64LSB +@deffnx {} BFD_RELOC_IA64_IPLTMSB +@deffnx {} BFD_RELOC_IA64_IPLTLSB +@deffnx {} BFD_RELOC_IA64_COPY +@deffnx {} BFD_RELOC_IA64_LTOFF22X +@deffnx {} BFD_RELOC_IA64_LDXMOV +@deffnx {} BFD_RELOC_IA64_TPREL14 +@deffnx {} BFD_RELOC_IA64_TPREL22 +@deffnx {} BFD_RELOC_IA64_TPREL64I +@deffnx {} BFD_RELOC_IA64_TPREL64MSB +@deffnx {} BFD_RELOC_IA64_TPREL64LSB +@deffnx {} BFD_RELOC_IA64_LTOFF_TPREL22 +@deffnx {} BFD_RELOC_IA64_DTPMOD64MSB +@deffnx {} BFD_RELOC_IA64_DTPMOD64LSB +@deffnx {} BFD_RELOC_IA64_LTOFF_DTPMOD22 +@deffnx {} BFD_RELOC_IA64_DTPREL14 +@deffnx {} BFD_RELOC_IA64_DTPREL22 +@deffnx {} BFD_RELOC_IA64_DTPREL64I +@deffnx {} BFD_RELOC_IA64_DTPREL32MSB +@deffnx {} BFD_RELOC_IA64_DTPREL32LSB +@deffnx {} BFD_RELOC_IA64_DTPREL64MSB +@deffnx {} BFD_RELOC_IA64_DTPREL64LSB +@deffnx {} BFD_RELOC_IA64_LTOFF_DTPREL22 +Intel IA64 Relocations. +@end deffn +@deffn {} BFD_RELOC_M68HC11_HI8 +Motorola 68HC11 reloc. +This is the 8 bit high part of an absolute address. +@end deffn +@deffn {} BFD_RELOC_M68HC11_LO8 +Motorola 68HC11 reloc. +This is the 8 bit low part of an absolute address. +@end deffn +@deffn {} BFD_RELOC_M68HC11_3B +Motorola 68HC11 reloc. +This is the 3 bit of a value. +@end deffn +@deffn {} BFD_RELOC_M68HC11_RL_JUMP +Motorola 68HC11 reloc. +This reloc marks the beginning of a jump/call instruction. +It is used for linker relaxation to correctly identify beginning +of instruction and change some branches to use PC-relative +addressing mode. +@end deffn +@deffn {} BFD_RELOC_M68HC11_RL_GROUP +Motorola 68HC11 reloc. +This reloc marks a group of several instructions that gcc generates +and for which the linker relaxation pass can modify and/or remove +some of them. +@end deffn +@deffn {} BFD_RELOC_M68HC11_LO16 +Motorola 68HC11 reloc. +This is the 16-bit lower part of an address. It is used for 'call' +instruction to specify the symbol address without any special +transformation (due to memory bank window). +@end deffn +@deffn {} BFD_RELOC_M68HC11_PAGE +Motorola 68HC11 reloc. +This is a 8-bit reloc that specifies the page number of an address. +It is used by 'call' instruction to specify the page number of +the symbol. +@end deffn +@deffn {} BFD_RELOC_M68HC11_24 +Motorola 68HC11 reloc. +This is a 24-bit reloc that represents the address with a 16-bit +value and a 8-bit page number. The symbol address is transformed +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). +@end deffn +@deffn {} BFD_RELOC_M68HC12_5B +Motorola 68HC12 reloc. +This is the 5 bits of a value. +@end deffn +@deffn {} BFD_RELOC_XGATE_RL_JUMP +Freescale XGATE reloc. +This reloc marks the beginning of a bra/jal instruction. +@end deffn +@deffn {} BFD_RELOC_XGATE_RL_GROUP +Freescale XGATE reloc. +This reloc marks a group of several instructions that gcc generates +and for which the linker relaxation pass can modify and/or remove +some of them. +@end deffn +@deffn {} BFD_RELOC_XGATE_LO16 +Freescale XGATE reloc. +This is the 16-bit lower part of an address. It is used for the '16-bit' +instructions. +@end deffn +@deffn {} BFD_RELOC_XGATE_GPAGE +Freescale XGATE reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_24 +Freescale XGATE reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_PCREL_9 +Freescale XGATE reloc. +This is a 9-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_PCREL_10 +Freescale XGATE reloc. +This is a 10-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_IMM8_LO +Freescale XGATE reloc. +This is the 16-bit lower part of an address. It is used for the '16-bit' +instructions. +@end deffn +@deffn {} BFD_RELOC_XGATE_IMM8_HI +Freescale XGATE reloc. +This is the 16-bit higher part of an address. It is used for the '16-bit' +instructions. +@end deffn +@deffn {} BFD_RELOC_XGATE_IMM3 +Freescale XGATE reloc. +This is a 3-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_IMM4 +Freescale XGATE reloc. +This is a 4-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_XGATE_IMM5 +Freescale XGATE reloc. +This is a 5-bit pc-relative reloc. +@end deffn +@deffn {} BFD_RELOC_M68HC12_9B +Motorola 68HC12 reloc. +This is the 9 bits of a value. +@end deffn +@deffn {} BFD_RELOC_M68HC12_16B +Motorola 68HC12 reloc. +This is the 16 bits of a value. +@end deffn +@deffn {} BFD_RELOC_M68HC12_9_PCREL +Motorola 68HC12/XGATE reloc. +This is a PCREL9 branch. +@end deffn +@deffn {} BFD_RELOC_M68HC12_10_PCREL +Motorola 68HC12/XGATE reloc. +This is a PCREL10 branch. +@end deffn +@deffn {} BFD_RELOC_M68HC12_LO8XG +Motorola 68HC12/XGATE reloc. +This is the 8 bit low part of an absolute address and immediately precedes +a matching HI8XG part. +@end deffn +@deffn {} BFD_RELOC_M68HC12_HI8XG +Motorola 68HC12/XGATE reloc. +This is the 8 bit high part of an absolute address and immediately follows +a matching LO8XG part. +@end deffn +@deffn {} BFD_RELOC_16C_NUM08 +@deffnx {} BFD_RELOC_16C_NUM08_C +@deffnx {} BFD_RELOC_16C_NUM16 +@deffnx {} BFD_RELOC_16C_NUM16_C +@deffnx {} BFD_RELOC_16C_NUM32 +@deffnx {} BFD_RELOC_16C_NUM32_C +@deffnx {} BFD_RELOC_16C_DISP04 +@deffnx {} BFD_RELOC_16C_DISP04_C +@deffnx {} BFD_RELOC_16C_DISP08 +@deffnx {} BFD_RELOC_16C_DISP08_C +@deffnx {} BFD_RELOC_16C_DISP16 +@deffnx {} BFD_RELOC_16C_DISP16_C +@deffnx {} BFD_RELOC_16C_DISP24 +@deffnx {} BFD_RELOC_16C_DISP24_C +@deffnx {} BFD_RELOC_16C_DISP24a +@deffnx {} BFD_RELOC_16C_DISP24a_C +@deffnx {} BFD_RELOC_16C_REG04 +@deffnx {} BFD_RELOC_16C_REG04_C +@deffnx {} BFD_RELOC_16C_REG04a +@deffnx {} BFD_RELOC_16C_REG04a_C +@deffnx {} BFD_RELOC_16C_REG14 +@deffnx {} BFD_RELOC_16C_REG14_C +@deffnx {} BFD_RELOC_16C_REG16 +@deffnx {} BFD_RELOC_16C_REG16_C +@deffnx {} BFD_RELOC_16C_REG20 +@deffnx {} BFD_RELOC_16C_REG20_C +@deffnx {} BFD_RELOC_16C_ABS20 +@deffnx {} BFD_RELOC_16C_ABS20_C +@deffnx {} BFD_RELOC_16C_ABS24 +@deffnx {} BFD_RELOC_16C_ABS24_C +@deffnx {} BFD_RELOC_16C_IMM04 +@deffnx {} BFD_RELOC_16C_IMM04_C +@deffnx {} BFD_RELOC_16C_IMM16 +@deffnx {} BFD_RELOC_16C_IMM16_C +@deffnx {} BFD_RELOC_16C_IMM20 +@deffnx {} BFD_RELOC_16C_IMM20_C +@deffnx {} BFD_RELOC_16C_IMM24 +@deffnx {} BFD_RELOC_16C_IMM24_C +@deffnx {} BFD_RELOC_16C_IMM32 +@deffnx {} BFD_RELOC_16C_IMM32_C +NS CR16C Relocations. +@end deffn +@deffn {} BFD_RELOC_CR16_NUM8 +@deffnx {} BFD_RELOC_CR16_NUM16 +@deffnx {} BFD_RELOC_CR16_NUM32 +@deffnx {} BFD_RELOC_CR16_NUM32a +@deffnx {} BFD_RELOC_CR16_REGREL0 +@deffnx {} BFD_RELOC_CR16_REGREL4 +@deffnx {} BFD_RELOC_CR16_REGREL4a +@deffnx {} BFD_RELOC_CR16_REGREL14 +@deffnx {} BFD_RELOC_CR16_REGREL14a +@deffnx {} BFD_RELOC_CR16_REGREL16 +@deffnx {} BFD_RELOC_CR16_REGREL20 +@deffnx {} BFD_RELOC_CR16_REGREL20a +@deffnx {} BFD_RELOC_CR16_ABS20 +@deffnx {} BFD_RELOC_CR16_ABS24 +@deffnx {} BFD_RELOC_CR16_IMM4 +@deffnx {} BFD_RELOC_CR16_IMM8 +@deffnx {} BFD_RELOC_CR16_IMM16 +@deffnx {} BFD_RELOC_CR16_IMM20 +@deffnx {} BFD_RELOC_CR16_IMM24 +@deffnx {} BFD_RELOC_CR16_IMM32 +@deffnx {} BFD_RELOC_CR16_IMM32a +@deffnx {} BFD_RELOC_CR16_DISP4 +@deffnx {} BFD_RELOC_CR16_DISP8 +@deffnx {} BFD_RELOC_CR16_DISP16 +@deffnx {} BFD_RELOC_CR16_DISP20 +@deffnx {} BFD_RELOC_CR16_DISP24 +@deffnx {} BFD_RELOC_CR16_DISP24a +@deffnx {} BFD_RELOC_CR16_SWITCH8 +@deffnx {} BFD_RELOC_CR16_SWITCH16 +@deffnx {} BFD_RELOC_CR16_SWITCH32 +@deffnx {} BFD_RELOC_CR16_GOT_REGREL20 +@deffnx {} BFD_RELOC_CR16_GOTC_REGREL20 +@deffnx {} BFD_RELOC_CR16_GLOB_DAT +NS CR16 Relocations. +@end deffn +@deffn {} BFD_RELOC_CRX_REL4 +@deffnx {} BFD_RELOC_CRX_REL8 +@deffnx {} BFD_RELOC_CRX_REL8_CMP +@deffnx {} BFD_RELOC_CRX_REL16 +@deffnx {} BFD_RELOC_CRX_REL24 +@deffnx {} BFD_RELOC_CRX_REL32 +@deffnx {} BFD_RELOC_CRX_REGREL12 +@deffnx {} BFD_RELOC_CRX_REGREL22 +@deffnx {} BFD_RELOC_CRX_REGREL28 +@deffnx {} BFD_RELOC_CRX_REGREL32 +@deffnx {} BFD_RELOC_CRX_ABS16 +@deffnx {} BFD_RELOC_CRX_ABS32 +@deffnx {} BFD_RELOC_CRX_NUM8 +@deffnx {} BFD_RELOC_CRX_NUM16 +@deffnx {} BFD_RELOC_CRX_NUM32 +@deffnx {} BFD_RELOC_CRX_IMM16 +@deffnx {} BFD_RELOC_CRX_IMM32 +@deffnx {} BFD_RELOC_CRX_SWITCH8 +@deffnx {} BFD_RELOC_CRX_SWITCH16 +@deffnx {} BFD_RELOC_CRX_SWITCH32 +NS CRX Relocations. +@end deffn +@deffn {} BFD_RELOC_CRIS_BDISP8 +@deffnx {} BFD_RELOC_CRIS_UNSIGNED_5 +@deffnx {} BFD_RELOC_CRIS_SIGNED_6 +@deffnx {} BFD_RELOC_CRIS_UNSIGNED_6 +@deffnx {} BFD_RELOC_CRIS_SIGNED_8 +@deffnx {} BFD_RELOC_CRIS_UNSIGNED_8 +@deffnx {} BFD_RELOC_CRIS_SIGNED_16 +@deffnx {} BFD_RELOC_CRIS_UNSIGNED_16 +@deffnx {} BFD_RELOC_CRIS_LAPCQ_OFFSET +@deffnx {} BFD_RELOC_CRIS_UNSIGNED_4 +These relocs are only used within the CRIS assembler. They are not +(at present) written to any object files. +@end deffn +@deffn {} BFD_RELOC_CRIS_COPY +@deffnx {} BFD_RELOC_CRIS_GLOB_DAT +@deffnx {} BFD_RELOC_CRIS_JUMP_SLOT +@deffnx {} BFD_RELOC_CRIS_RELATIVE +Relocs used in ELF shared libraries for CRIS. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_GOT +32-bit offset to symbol-entry within GOT. +@end deffn +@deffn {} BFD_RELOC_CRIS_16_GOT +16-bit offset to symbol-entry within GOT. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_GOTPLT +32-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_CRIS_16_GOTPLT +16-bit offset to symbol-entry within GOT, with PLT handling. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_GOTREL +32-bit offset to symbol, relative to GOT. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_PLT_GOTREL +32-bit offset to symbol with PLT entry, relative to GOT. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_PLT_PCREL +32-bit offset to symbol with PLT entry, relative to this relocation. +@end deffn +@deffn {} BFD_RELOC_CRIS_32_GOT_GD +@deffnx {} BFD_RELOC_CRIS_16_GOT_GD +@deffnx {} BFD_RELOC_CRIS_32_GD +@deffnx {} BFD_RELOC_CRIS_DTP +@deffnx {} BFD_RELOC_CRIS_32_DTPREL +@deffnx {} BFD_RELOC_CRIS_16_DTPREL +@deffnx {} BFD_RELOC_CRIS_32_GOT_TPREL +@deffnx {} BFD_RELOC_CRIS_16_GOT_TPREL +@deffnx {} BFD_RELOC_CRIS_32_TPREL +@deffnx {} BFD_RELOC_CRIS_16_TPREL +@deffnx {} BFD_RELOC_CRIS_DTPMOD +@deffnx {} BFD_RELOC_CRIS_32_IE +Relocs used in TLS code for CRIS. +@end deffn +@deffn {} BFD_RELOC_860_COPY +@deffnx {} BFD_RELOC_860_GLOB_DAT +@deffnx {} BFD_RELOC_860_JUMP_SLOT +@deffnx {} BFD_RELOC_860_RELATIVE +@deffnx {} BFD_RELOC_860_PC26 +@deffnx {} BFD_RELOC_860_PLT26 +@deffnx {} BFD_RELOC_860_PC16 +@deffnx {} BFD_RELOC_860_LOW0 +@deffnx {} BFD_RELOC_860_SPLIT0 +@deffnx {} BFD_RELOC_860_LOW1 +@deffnx {} BFD_RELOC_860_SPLIT1 +@deffnx {} BFD_RELOC_860_LOW2 +@deffnx {} BFD_RELOC_860_SPLIT2 +@deffnx {} BFD_RELOC_860_LOW3 +@deffnx {} BFD_RELOC_860_LOGOT0 +@deffnx {} BFD_RELOC_860_SPGOT0 +@deffnx {} BFD_RELOC_860_LOGOT1 +@deffnx {} BFD_RELOC_860_SPGOT1 +@deffnx {} BFD_RELOC_860_LOGOTOFF0 +@deffnx {} BFD_RELOC_860_SPGOTOFF0 +@deffnx {} BFD_RELOC_860_LOGOTOFF1 +@deffnx {} BFD_RELOC_860_SPGOTOFF1 +@deffnx {} BFD_RELOC_860_LOGOTOFF2 +@deffnx {} BFD_RELOC_860_LOGOTOFF3 +@deffnx {} BFD_RELOC_860_LOPC +@deffnx {} BFD_RELOC_860_HIGHADJ +@deffnx {} BFD_RELOC_860_HAGOT +@deffnx {} BFD_RELOC_860_HAGOTOFF +@deffnx {} BFD_RELOC_860_HAPC +@deffnx {} BFD_RELOC_860_HIGH +@deffnx {} BFD_RELOC_860_HIGOT +@deffnx {} BFD_RELOC_860_HIGOTOFF +Intel i860 Relocations. +@end deffn +@deffn {} BFD_RELOC_OR1K_REL_26 +@deffnx {} BFD_RELOC_OR1K_GOTPC_HI16 +@deffnx {} BFD_RELOC_OR1K_GOTPC_LO16 +@deffnx {} BFD_RELOC_OR1K_GOT16 +@deffnx {} BFD_RELOC_OR1K_PLT26 +@deffnx {} BFD_RELOC_OR1K_GOTOFF_HI16 +@deffnx {} BFD_RELOC_OR1K_GOTOFF_LO16 +@deffnx {} BFD_RELOC_OR1K_COPY +@deffnx {} BFD_RELOC_OR1K_GLOB_DAT +@deffnx {} BFD_RELOC_OR1K_JMP_SLOT +@deffnx {} BFD_RELOC_OR1K_RELATIVE +@deffnx {} BFD_RELOC_OR1K_TLS_GD_HI16 +@deffnx {} BFD_RELOC_OR1K_TLS_GD_LO16 +@deffnx {} BFD_RELOC_OR1K_TLS_LDM_HI16 +@deffnx {} BFD_RELOC_OR1K_TLS_LDM_LO16 +@deffnx {} BFD_RELOC_OR1K_TLS_LDO_HI16 +@deffnx {} BFD_RELOC_OR1K_TLS_LDO_LO16 +@deffnx {} BFD_RELOC_OR1K_TLS_IE_HI16 +@deffnx {} BFD_RELOC_OR1K_TLS_IE_LO16 +@deffnx {} BFD_RELOC_OR1K_TLS_LE_HI16 +@deffnx {} BFD_RELOC_OR1K_TLS_LE_LO16 +@deffnx {} BFD_RELOC_OR1K_TLS_TPOFF +@deffnx {} BFD_RELOC_OR1K_TLS_DTPOFF +@deffnx {} BFD_RELOC_OR1K_TLS_DTPMOD +OpenRISC 1000 Relocations. +@end deffn +@deffn {} BFD_RELOC_H8_DIR16A8 +@deffnx {} BFD_RELOC_H8_DIR16R8 +@deffnx {} BFD_RELOC_H8_DIR24A8 +@deffnx {} BFD_RELOC_H8_DIR24R8 +@deffnx {} BFD_RELOC_H8_DIR32A16 +@deffnx {} BFD_RELOC_H8_DISP32A16 +H8 elf Relocations. +@end deffn +@deffn {} BFD_RELOC_XSTORMY16_REL_12 +@deffnx {} BFD_RELOC_XSTORMY16_12 +@deffnx {} BFD_RELOC_XSTORMY16_24 +@deffnx {} BFD_RELOC_XSTORMY16_FPTR16 +Sony Xstormy16 Relocations. +@end deffn +@deffn {} BFD_RELOC_RELC +Self-describing complex relocations. +@end deffn +@deffn {} BFD_RELOC_XC16X_PAG +@deffnx {} BFD_RELOC_XC16X_POF +@deffnx {} BFD_RELOC_XC16X_SEG +@deffnx {} BFD_RELOC_XC16X_SOF +Infineon Relocations. +@end deffn +@deffn {} BFD_RELOC_VAX_GLOB_DAT +@deffnx {} BFD_RELOC_VAX_JMP_SLOT +@deffnx {} BFD_RELOC_VAX_RELATIVE +Relocations used by VAX ELF. +@end deffn +@deffn {} BFD_RELOC_MT_PC16 +Morpho MT - 16 bit immediate relocation. +@end deffn +@deffn {} BFD_RELOC_MT_HI16 +Morpho MT - Hi 16 bits of an address. +@end deffn +@deffn {} BFD_RELOC_MT_LO16 +Morpho MT - Low 16 bits of an address. +@end deffn +@deffn {} BFD_RELOC_MT_GNU_VTINHERIT +Morpho MT - Used to tell the linker which vtable entries are used. +@end deffn +@deffn {} BFD_RELOC_MT_GNU_VTENTRY +Morpho MT - Used to tell the linker which vtable entries are used. +@end deffn +@deffn {} BFD_RELOC_MT_PCINSN8 +Morpho MT - 8 bit immediate relocation. +@end deffn +@deffn {} BFD_RELOC_MSP430_10_PCREL +@deffnx {} BFD_RELOC_MSP430_16_PCREL +@deffnx {} BFD_RELOC_MSP430_16 +@deffnx {} BFD_RELOC_MSP430_16_PCREL_BYTE +@deffnx {} BFD_RELOC_MSP430_16_BYTE +@deffnx {} BFD_RELOC_MSP430_2X_PCREL +@deffnx {} BFD_RELOC_MSP430_RL_PCREL +@deffnx {} BFD_RELOC_MSP430_ABS8 +@deffnx {} BFD_RELOC_MSP430X_PCR20_EXT_SRC +@deffnx {} BFD_RELOC_MSP430X_PCR20_EXT_DST +@deffnx {} BFD_RELOC_MSP430X_PCR20_EXT_ODST +@deffnx {} BFD_RELOC_MSP430X_ABS20_EXT_SRC +@deffnx {} BFD_RELOC_MSP430X_ABS20_EXT_DST +@deffnx {} BFD_RELOC_MSP430X_ABS20_EXT_ODST +@deffnx {} BFD_RELOC_MSP430X_ABS20_ADR_SRC +@deffnx {} BFD_RELOC_MSP430X_ABS20_ADR_DST +@deffnx {} BFD_RELOC_MSP430X_PCR16 +@deffnx {} BFD_RELOC_MSP430X_PCR20_CALL +@deffnx {} BFD_RELOC_MSP430X_ABS16 +@deffnx {} BFD_RELOC_MSP430_ABS_HI16 +@deffnx {} BFD_RELOC_MSP430_PREL31 +@deffnx {} BFD_RELOC_MSP430_SYM_DIFF +msp430 specific relocation codes +@end deffn +@deffn {} BFD_RELOC_NIOS2_S16 +@deffnx {} BFD_RELOC_NIOS2_U16 +@deffnx {} BFD_RELOC_NIOS2_CALL26 +@deffnx {} BFD_RELOC_NIOS2_IMM5 +@deffnx {} BFD_RELOC_NIOS2_CACHE_OPX +@deffnx {} BFD_RELOC_NIOS2_IMM6 +@deffnx {} BFD_RELOC_NIOS2_IMM8 +@deffnx {} BFD_RELOC_NIOS2_HI16 +@deffnx {} BFD_RELOC_NIOS2_LO16 +@deffnx {} BFD_RELOC_NIOS2_HIADJ16 +@deffnx {} BFD_RELOC_NIOS2_GPREL +@deffnx {} BFD_RELOC_NIOS2_UJMP +@deffnx {} BFD_RELOC_NIOS2_CJMP +@deffnx {} BFD_RELOC_NIOS2_CALLR +@deffnx {} BFD_RELOC_NIOS2_ALIGN +@deffnx {} BFD_RELOC_NIOS2_GOT16 +@deffnx {} BFD_RELOC_NIOS2_CALL16 +@deffnx {} BFD_RELOC_NIOS2_GOTOFF_LO +@deffnx {} BFD_RELOC_NIOS2_GOTOFF_HA +@deffnx {} BFD_RELOC_NIOS2_PCREL_LO +@deffnx {} BFD_RELOC_NIOS2_PCREL_HA +@deffnx {} BFD_RELOC_NIOS2_TLS_GD16 +@deffnx {} BFD_RELOC_NIOS2_TLS_LDM16 +@deffnx {} BFD_RELOC_NIOS2_TLS_LDO16 +@deffnx {} BFD_RELOC_NIOS2_TLS_IE16 +@deffnx {} BFD_RELOC_NIOS2_TLS_LE16 +@deffnx {} BFD_RELOC_NIOS2_TLS_DTPMOD +@deffnx {} BFD_RELOC_NIOS2_TLS_DTPREL +@deffnx {} BFD_RELOC_NIOS2_TLS_TPREL +@deffnx {} BFD_RELOC_NIOS2_COPY +@deffnx {} BFD_RELOC_NIOS2_GLOB_DAT +@deffnx {} BFD_RELOC_NIOS2_JUMP_SLOT +@deffnx {} BFD_RELOC_NIOS2_RELATIVE +@deffnx {} BFD_RELOC_NIOS2_GOTOFF +@deffnx {} BFD_RELOC_NIOS2_CALL26_NOAT +@deffnx {} BFD_RELOC_NIOS2_GOT_LO +@deffnx {} BFD_RELOC_NIOS2_GOT_HA +@deffnx {} BFD_RELOC_NIOS2_CALL_LO +@deffnx {} BFD_RELOC_NIOS2_CALL_HA +Relocations used by the Altera Nios II core. +@end deffn +@deffn {} BFD_RELOC_IQ2000_OFFSET_16 +@deffnx {} BFD_RELOC_IQ2000_OFFSET_21 +@deffnx {} BFD_RELOC_IQ2000_UHI16 +IQ2000 Relocations. +@end deffn +@deffn {} BFD_RELOC_XTENSA_RTLD +Special Xtensa relocation used only by PLT entries in ELF shared +objects to indicate that the runtime linker should set the value +to one of its own internal functions or data structures. +@end deffn +@deffn {} BFD_RELOC_XTENSA_GLOB_DAT +@deffnx {} BFD_RELOC_XTENSA_JMP_SLOT +@deffnx {} BFD_RELOC_XTENSA_RELATIVE +Xtensa relocations for ELF shared objects. +@end deffn +@deffn {} BFD_RELOC_XTENSA_PLT +Xtensa relocation used in ELF object files for symbols that may require +PLT entries. Otherwise, this is just a generic 32-bit relocation. +@end deffn +@deffn {} BFD_RELOC_XTENSA_DIFF8 +@deffnx {} BFD_RELOC_XTENSA_DIFF16 +@deffnx {} BFD_RELOC_XTENSA_DIFF32 +Xtensa relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +first symbol so the linker can determine whether to adjust the field +value. +@end deffn +@deffn {} BFD_RELOC_XTENSA_SLOT0_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT1_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT2_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT3_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT4_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT5_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT6_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT7_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT8_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT9_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT10_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT11_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT12_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT13_OP +@deffnx {} BFD_RELOC_XTENSA_SLOT14_OP +Generic Xtensa relocations for instruction operands. Only the slot +number is encoded in the relocation. The relocation applies to the +last PC-relative immediate operand, or if there are no PC-relative +immediates, to the last immediate operand. +@end deffn +@deffn {} BFD_RELOC_XTENSA_SLOT0_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT1_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT2_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT3_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT4_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT5_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT6_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT7_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT8_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT9_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT10_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT11_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT12_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT13_ALT +@deffnx {} BFD_RELOC_XTENSA_SLOT14_ALT +Alternate Xtensa relocations. Only the slot is encoded in the +relocation. The meaning of these relocations is opcode-specific. +@end deffn +@deffn {} BFD_RELOC_XTENSA_OP0 +@deffnx {} BFD_RELOC_XTENSA_OP1 +@deffnx {} BFD_RELOC_XTENSA_OP2 +Xtensa relocations for backward compatibility. These have all been +replaced by BFD_RELOC_XTENSA_SLOT0_OP. +@end deffn +@deffn {} BFD_RELOC_XTENSA_ASM_EXPAND +Xtensa relocation to mark that the assembler expanded the +instructions from an original target. The expansion size is +encoded in the reloc size. +@end deffn +@deffn {} BFD_RELOC_XTENSA_ASM_SIMPLIFY +Xtensa relocation to mark that the linker should simplify +assembler-expanded instructions. This is commonly used +internally by the linker after analysis of a +BFD_RELOC_XTENSA_ASM_EXPAND. +@end deffn +@deffn {} BFD_RELOC_XTENSA_TLSDESC_FN +@deffnx {} BFD_RELOC_XTENSA_TLSDESC_ARG +@deffnx {} BFD_RELOC_XTENSA_TLS_DTPOFF +@deffnx {} BFD_RELOC_XTENSA_TLS_TPOFF +@deffnx {} BFD_RELOC_XTENSA_TLS_FUNC +@deffnx {} BFD_RELOC_XTENSA_TLS_ARG +@deffnx {} BFD_RELOC_XTENSA_TLS_CALL +Xtensa TLS relocations. +@end deffn +@deffn {} BFD_RELOC_Z80_DISP8 +8 bit signed offset in (ix+d) or (iy+d). +@end deffn +@deffn {} BFD_RELOC_Z8K_DISP7 +DJNZ offset. +@end deffn +@deffn {} BFD_RELOC_Z8K_CALLR +CALR offset. +@end deffn +@deffn {} BFD_RELOC_Z8K_IMM4L +4 bit value. +@end deffn +@deffn {} BFD_RELOC_LM32_CALL +@deffnx {} BFD_RELOC_LM32_BRANCH +@deffnx {} BFD_RELOC_LM32_16_GOT +@deffnx {} BFD_RELOC_LM32_GOTOFF_HI16 +@deffnx {} BFD_RELOC_LM32_GOTOFF_LO16 +@deffnx {} BFD_RELOC_LM32_COPY +@deffnx {} BFD_RELOC_LM32_GLOB_DAT +@deffnx {} BFD_RELOC_LM32_JMP_SLOT +@deffnx {} BFD_RELOC_LM32_RELATIVE +Lattice Mico32 relocations. +@end deffn +@deffn {} BFD_RELOC_MACH_O_SECTDIFF +Difference between two section addreses. Must be followed by a +BFD_RELOC_MACH_O_PAIR. +@end deffn +@deffn {} BFD_RELOC_MACH_O_LOCAL_SECTDIFF +Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. +@end deffn +@deffn {} BFD_RELOC_MACH_O_PAIR +Pair of relocation. Contains the first symbol. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_BRANCH32 +@deffnx {} BFD_RELOC_MACH_O_X86_64_BRANCH8 +PCREL relocations. They are marked as branch to create PLT entry if +required. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_GOT +Used when referencing a GOT entry. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_GOT_LOAD +Used when loading a GOT entry with movq. It is specially marked so that +the linker could optimize the movq to a leaq if possible. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 +Symbol will be substracted. Must be followed by a BFD_RELOC_64. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 +Symbol will be substracted. Must be followed by a BFD_RELOC_64. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_1 +Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_2 +Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_4 +Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_LO +This is a 32 bit reloc for the microblaze that stores the +low 16 bits of a value +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_LO_PCREL +This is a 32 bit pc-relative reloc for the microblaze that +stores the low 16 bits of a value +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_ROSDA +This is a 32 bit reloc for the microblaze that stores a +value relative to the read-only small data area anchor +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_RWSDA +This is a 32 bit reloc for the microblaze that stores a +value relative to the read-write small data area anchor +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM +This is a 32 bit reloc for the microblaze to handle +expressions of the form "Symbol Op Symbol" +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_NONE +This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). No relocation is +done here - only used for relaxing +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_GOTPC +This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +PC-relative GOT offset +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_GOT +This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +GOT offset +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_PLT +This is a 64 bit reloc that stores the 32 bit pc relative +value in two words (with an imm instruction). The relocation is +PC-relative offset into PLT +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_GOTOFF +This is a 64 bit reloc that stores the 32 bit GOT relative +value in two words (with an imm instruction). The relocation is +relative offset from _GLOBAL_OFFSET_TABLE_ +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_GOTOFF +This is a 32 bit reloc that stores the 32 bit GOT relative +value in a word. The relocation is relative offset from +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_COPY +This is used to tell the dynamic linker to copy the value out of +the dynamic object into the runtime process image. +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLS +Unused Reloc +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLSGD +This is a 64 bit reloc that stores the 32 bit GOT relative value +of the GOT TLS GD info entry in two words (with an imm instruction). The +relocation is GOT offset. +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLSLD +This is a 64 bit reloc that stores the 32 bit GOT relative value +of the GOT TLS LD info entry in two words (with an imm instruction). The +relocation is GOT offset. +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_TLSDTPMOD +This is a 32 bit reloc that stores the Module ID to GOT(n). +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_32_TLSDTPREL +This is a 32 bit reloc that stores TLS offset to GOT(n+1). +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLSDTPREL +This is a 32 bit reloc for storing TLS offset to two words (uses imm +instruction) +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL +This is a 64 bit reloc that stores 32-bit thread pointer relative offset +to two words (uses imm instruction). +@end deffn +@deffn {} BFD_RELOC_MICROBLAZE_64_TLSTPREL +This is a 64 bit reloc that stores 32-bit thread pointer relative offset +to two words (uses imm instruction). +@end deffn +@deffn {} BFD_RELOC_AARCH64_RELOC_START +AArch64 pseudo relocation code to mark the start of the AArch64 +relocation enumerators. N.B. the order of the enumerators is +important as several tables in the AArch64 bfd backend are indexed +by these enumerators; make sure they are all synced. +@end deffn +@deffn {} BFD_RELOC_AARCH64_NONE +AArch64 null relocation code. +@end deffn +@deffn {} BFD_RELOC_AARCH64_64 +@deffnx {} BFD_RELOC_AARCH64_32 +@deffnx {} BFD_RELOC_AARCH64_16 +Basic absolute relocations of N bits. These are equivalent to +BFD_RELOC_N and they were added to assist the indexing of the howto +table. +@end deffn +@deffn {} BFD_RELOC_AARCH64_64_PCREL +@deffnx {} BFD_RELOC_AARCH64_32_PCREL +@deffnx {} BFD_RELOC_AARCH64_16_PCREL +PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL +and they were added to assist the indexing of the howto table. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G0 +AArch64 MOV[NZK] instruction with most significant bits 0 to 15 +of an unsigned address/value. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G0_NC +AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of +an address/value. No overflow checking. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G1 +AArch64 MOV[NZK] instruction with most significant bits 16 to 31 +of an unsigned address/value. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G1_NC +AArch64 MOV[NZK] instruction with less significant bits 16 to 31 +of an address/value. No overflow checking. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G2 +AArch64 MOV[NZK] instruction with most significant bits 32 to 47 +of an unsigned address/value. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G2_NC +AArch64 MOV[NZK] instruction with less significant bits 32 to 47 +of an address/value. No overflow checking. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G3 +AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 +of a signed or unsigned address/value. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G0_S +AArch64 MOV[NZ] instruction with most significant bits 0 to 15 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G1_S +AArch64 MOV[NZ] instruction with most significant bits 16 to 31 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_G2_S +AArch64 MOV[NZ] instruction with most significant bits 32 to 47 +of a signed value. Changes instruction to MOVZ or MOVN depending on the +value's sign. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD_LO19_PCREL +AArch64 Load Literal instruction, holding a 19 bit pc-relative word +offset. The lowest two bits must be zero and are not stored in the +instruction, giving a 21 bit signed byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_ADR_LO21_PCREL +AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_ADR_HI21_PCREL +AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page +offset, giving a 4KB aligned page base address. +@end deffn +@deffn {} BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL +AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page +offset, giving a 4KB aligned page base address, but with no overflow +checking. +@end deffn +@deffn {} BFD_RELOC_AARCH64_ADD_LO12 +AArch64 ADD immediate instruction, holding bits 0 to 11 of the address. +Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST8_LO12 +AArch64 8-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TSTBR14 +AArch64 14 bit pc-relative test bit and branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 16 bit signed byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_BRANCH19 +AArch64 19 bit pc-relative conditional branch and compare & branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 21 bit signed byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_JUMP26 +AArch64 26 bit pc-relative unconditional branch. +The lowest two bits must be zero and are not stored in the instruction, +giving a 28 bit signed byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_CALL26 +AArch64 26 bit pc-relative unconditional branch and link. +The lowest two bits must be zero and are not stored in the instruction, +giving a 28 bit signed byte offset. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST16_LO12 +AArch64 16-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST32_LO12 +AArch64 32-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST64_LO12 +AArch64 64-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST128_LO12 +AArch64 128-bit load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_GOT_LD_PREL19 +AArch64 Load Literal instruction, holding a 19 bit PC relative word +offset of the global offset table entry for a symbol. The lowest two +bits must be zero and are not stored in the instruction, giving a 21 +bit signed byte offset. This relocation type requires signed overflow +checking. +@end deffn +@deffn {} BFD_RELOC_AARCH64_ADR_GOT_PAGE +Get to the page base of the global offset table entry for a symbol as +part of an ADRP instruction using a 21 bit PC relative value.Used in +conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD64_GOT_LO12_NC +Unsigned 12 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Used in conjunction with +BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD32_GOT_LO12_NC +Unsigned 12 bit byte offset for 32 bit load/store from the page of +the GOT entry for this symbol. Used in conjunction with +BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 +Get to the page base of the global offset table entry for a symbols +tls_index structure as part of an adrp instruction using a 21 bit PC +relative value. Used in conjunction with +BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC +Unsigned 12 bit byte offset to global offset table entry for a symbols +tls_index structure. Used in conjunction with +BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19 +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2 +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0 +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12 +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12 +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC +AArch64 TLS LOCAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD_PREL19 +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21 +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_OFF_G1 +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_LDR +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADD +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_CALL +AArch64 TLS DESC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_COPY +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_GLOB_DAT +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_JUMP_SLOT +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_RELATIVE +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLS_DTPMOD +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLS_DTPREL +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLS_TPREL +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC +AArch64 TLS relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_IRELATIVE +AArch64 support for STT_GNU_IFUNC. +@end deffn +@deffn {} BFD_RELOC_AARCH64_RELOC_END +AArch64 pseudo relocation code to mark the end of the AArch64 +relocation enumerators that have direct mapping to ELF reloc codes. +There are a few more enumerators after this one; those are mainly +used by the AArch64 assembler for the internal fixup or to select +one of the above enumerators. +@end deffn +@deffn {} BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP +AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LDST_LO12 +AArch64 unspecified load/store instruction, holding bits 0 to 11 of the +address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD_GOT_LO12_NC +AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC +AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC +AArch64 pseudo relocation code to be used internally by the AArch64 +assembler and not (currently) written to any object files. +@end deffn +@deffn {} BFD_RELOC_TILEPRO_COPY +@deffnx {} BFD_RELOC_TILEPRO_GLOB_DAT +@deffnx {} BFD_RELOC_TILEPRO_JMP_SLOT +@deffnx {} BFD_RELOC_TILEPRO_RELATIVE +@deffnx {} BFD_RELOC_TILEPRO_BROFF_X1 +@deffnx {} BFD_RELOC_TILEPRO_JOFFLONG_X1 +@deffnx {} BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT +@deffnx {} BFD_RELOC_TILEPRO_IMM8_X0 +@deffnx {} BFD_RELOC_TILEPRO_IMM8_Y0 +@deffnx {} BFD_RELOC_TILEPRO_IMM8_X1 +@deffnx {} BFD_RELOC_TILEPRO_IMM8_Y1 +@deffnx {} BFD_RELOC_TILEPRO_DEST_IMM8_X1 +@deffnx {} BFD_RELOC_TILEPRO_MT_IMM15_X1 +@deffnx {} BFD_RELOC_TILEPRO_MF_IMM15_X1 +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0 +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1 +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_GOT +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_GOT +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA +@deffnx {} BFD_RELOC_TILEPRO_MMSTART_X0 +@deffnx {} BFD_RELOC_TILEPRO_MMEND_X0 +@deffnx {} BFD_RELOC_TILEPRO_MMSTART_X1 +@deffnx {} BFD_RELOC_TILEPRO_MMEND_X1 +@deffnx {} BFD_RELOC_TILEPRO_SHAMT_X0 +@deffnx {} BFD_RELOC_TILEPRO_SHAMT_X1 +@deffnx {} BFD_RELOC_TILEPRO_SHAMT_Y0 +@deffnx {} BFD_RELOC_TILEPRO_SHAMT_Y1 +@deffnx {} BFD_RELOC_TILEPRO_TLS_GD_CALL +@deffnx {} BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEPRO_TLS_IE_LOAD +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA +@deffnx {} BFD_RELOC_TILEPRO_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_TILEPRO_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_TILEPRO_TLS_TPOFF32 +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA +@deffnx {} BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA +Tilera TILEPro Relocations. +@end deffn +@deffn {} BFD_RELOC_TILEGX_HW0 +@deffnx {} BFD_RELOC_TILEGX_HW1 +@deffnx {} BFD_RELOC_TILEGX_HW2 +@deffnx {} BFD_RELOC_TILEGX_HW3 +@deffnx {} BFD_RELOC_TILEGX_HW0_LAST +@deffnx {} BFD_RELOC_TILEGX_HW1_LAST +@deffnx {} BFD_RELOC_TILEGX_HW2_LAST +@deffnx {} BFD_RELOC_TILEGX_COPY +@deffnx {} BFD_RELOC_TILEGX_GLOB_DAT +@deffnx {} BFD_RELOC_TILEGX_JMP_SLOT +@deffnx {} BFD_RELOC_TILEGX_RELATIVE +@deffnx {} BFD_RELOC_TILEGX_BROFF_X1 +@deffnx {} BFD_RELOC_TILEGX_JUMPOFF_X1 +@deffnx {} BFD_RELOC_TILEGX_JUMPOFF_X1_PLT +@deffnx {} BFD_RELOC_TILEGX_IMM8_X0 +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y0 +@deffnx {} BFD_RELOC_TILEGX_IMM8_X1 +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y1 +@deffnx {} BFD_RELOC_TILEGX_DEST_IMM8_X1 +@deffnx {} BFD_RELOC_TILEGX_MT_IMM14_X1 +@deffnx {} BFD_RELOC_TILEGX_MF_IMM14_X1 +@deffnx {} BFD_RELOC_TILEGX_MMSTART_X0 +@deffnx {} BFD_RELOC_TILEGX_MMEND_X0 +@deffnx {} BFD_RELOC_TILEGX_SHAMT_X0 +@deffnx {} BFD_RELOC_TILEGX_SHAMT_X1 +@deffnx {} BFD_RELOC_TILEGX_SHAMT_Y0 +@deffnx {} BFD_RELOC_TILEGX_SHAMT_Y1 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW3 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW3 +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE +@deffnx {} BFD_RELOC_TILEGX_TLS_DTPMOD64 +@deffnx {} BFD_RELOC_TILEGX_TLS_DTPOFF64 +@deffnx {} BFD_RELOC_TILEGX_TLS_TPOFF64 +@deffnx {} BFD_RELOC_TILEGX_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_TILEGX_TLS_DTPOFF32 +@deffnx {} BFD_RELOC_TILEGX_TLS_TPOFF32 +@deffnx {} BFD_RELOC_TILEGX_TLS_GD_CALL +@deffnx {} BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD +@deffnx {} BFD_RELOC_TILEGX_TLS_IE_LOAD +@deffnx {} BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD +@deffnx {} BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD +Tilera TILE-Gx Relocations. +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_SIMM8 +Adapteva EPIPHANY - 8 bit signed pc-relative displacement +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_SIMM24 +Adapteva EPIPHANY - 24 bit signed pc-relative displacement +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_HIGH +Adapteva EPIPHANY - 16 most-significant bits of absolute address +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_LOW +Adapteva EPIPHANY - 16 least-significant bits of absolute address +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_SIMM11 +Adapteva EPIPHANY - 11 bit signed number - add/sub immediate +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_IMM11 +Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement) +@end deffn +@deffn {} BFD_RELOC_EPIPHANY_IMM8 +Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. +@end deffn + +@example + +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; +@end example +@findex bfd_reloc_type_lookup +@subsubsection @code{bfd_reloc_type_lookup} +@strong{Synopsis} +@example +reloc_howto_type *bfd_reloc_type_lookup + (bfd *abfd, bfd_reloc_code_real_type code); +reloc_howto_type *bfd_reloc_name_lookup + (bfd *abfd, const char *reloc_name); +@end example +@strong{Description}@* +Return a pointer to a howto structure which, when +invoked, will perform the relocation @var{code} on data from the +architecture noted. + +@findex bfd_default_reloc_type_lookup +@subsubsection @code{bfd_default_reloc_type_lookup} +@strong{Synopsis} +@example +reloc_howto_type *bfd_default_reloc_type_lookup + (bfd *abfd, bfd_reloc_code_real_type code); +@end example +@strong{Description}@* +Provides a default relocation lookup routine for any architecture. + +@findex bfd_get_reloc_code_name +@subsubsection @code{bfd_get_reloc_code_name} +@strong{Synopsis} +@example +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); +@end example +@strong{Description}@* +Provides a printable name for the supplied relocation code. +Useful mainly for printing error messages. + +@findex bfd_generic_relax_section +@subsubsection @code{bfd_generic_relax_section} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_relax_section + (bfd *abfd, + asection *section, + struct bfd_link_info *, + bfd_boolean *); +@end example +@strong{Description}@* +Provides default handling for relaxing for back ends which +don't do relaxing. + +@findex bfd_generic_gc_sections +@subsubsection @code{bfd_generic_gc_sections} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_gc_sections + (bfd *, struct bfd_link_info *); +@end example +@strong{Description}@* +Provides default handling for relaxing for back ends which +don't do section gc -- i.e., does nothing. + +@findex bfd_generic_lookup_section_flags +@subsubsection @code{bfd_generic_lookup_section_flags} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_lookup_section_flags + (struct bfd_link_info *, struct flag_info *, asection *); +@end example +@strong{Description}@* +Provides default handling for section flags lookup +-- i.e., does nothing. +Returns FALSE if the section should be omitted, otherwise TRUE. + +@findex bfd_generic_merge_sections +@subsubsection @code{bfd_generic_merge_sections} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_merge_sections + (bfd *, struct bfd_link_info *); +@end example +@strong{Description}@* +Provides default handling for SEC_MERGE section merging for back ends +which don't have SEC_MERGE support -- i.e., does nothing. + +@findex bfd_generic_get_relocated_section_contents +@subsubsection @code{bfd_generic_get_relocated_section_contents} +@strong{Synopsis} +@example +bfd_byte *bfd_generic_get_relocated_section_contents + (bfd *abfd, + struct bfd_link_info *link_info, + struct bfd_link_order *link_order, + bfd_byte *data, + bfd_boolean relocatable, + asymbol **symbols); +@end example +@strong{Description}@* +Provides default handling of relocation effort for back ends +which can't be bothered to do it efficiently. + diff --git a/bfd/doc/section.texi b/bfd/doc/section.texi new file mode 100644 index 00000000000..8f856db9d93 --- /dev/null +++ b/bfd/doc/section.texi @@ -0,0 +1,1062 @@ +@section Sections +The raw data contained within a BFD is maintained through the +section abstraction. A single BFD may have any number of +sections. It keeps hold of them by pointing to the first; +each one points to the next in the list. + +Sections are supported in BFD in @code{section.c}. + +@menu +* Section Input:: +* Section Output:: +* typedef asection:: +* section prototypes:: +@end menu + +@node Section Input, Section Output, Sections, Sections +@subsection Section input +When a BFD is opened for reading, the section structures are +created and attached to the BFD. + +Each section has a name which describes the section in the +outside world---for example, @code{a.out} would contain at least +three sections, called @code{.text}, @code{.data} and @code{.bss}. + +Names need not be unique; for example a COFF file may have several +sections named @code{.data}. + +Sometimes a BFD will contain more than the ``natural'' number of +sections. A back end may attach other sections containing +constructor data, or an application may add a section (using +@code{bfd_make_section}) to the sections attached to an already open +BFD. For example, the linker creates an extra section +@code{COMMON} for each input file's BFD to hold information about +common storage. + +The raw data is not necessarily read in when +the section descriptor is created. Some targets may leave the +data in place until a @code{bfd_get_section_contents} call is +made. Other back ends may read in all the data at once. For +example, an S-record file has to be read once to determine the +size of the data. An IEEE-695 file doesn't contain raw data in +sections, but data and relocation expressions intermixed, so +the data area has to be parsed to get out the data and +relocations. + +@node Section Output, typedef asection, Section Input, Sections +@subsection Section output +To write a new object style BFD, the various sections to be +written have to be created. They are attached to the BFD in +the same way as input sections; data is written to the +sections using @code{bfd_set_section_contents}. + +Any program that creates or combines sections (e.g., the assembler +and linker) must use the @code{asection} fields @code{output_section} and +@code{output_offset} to indicate the file sections to which each +section must be written. (If the section is being created from +scratch, @code{output_section} should probably point to the section +itself and @code{output_offset} should probably be zero.) + +The data to be written comes from input sections attached +(via @code{output_section} pointers) to +the output sections. The output section structure can be +considered a filter for the input section: the output section +determines the vma of the output data and the name, but the +input section determines the offset into the output section of +the data to be written. + +E.g., to create a section "O", starting at 0x100, 0x123 long, +containing two subsections, "A" at offset 0x0 (i.e., at vma +0x100) and "B" at offset 0x20 (i.e., at vma 0x120) the @code{asection} +structures would look like: + +@example + section name "A" + output_offset 0x00 + size 0x20 + output_section -----------> section name "O" + | vma 0x100 + section name "B" | size 0x123 + output_offset 0x20 | + size 0x103 | + output_section --------| +@end example + +@subsection Link orders +The data within a section is stored in a @dfn{link_order}. +These are much like the fixups in @code{gas}. The link_order +abstraction allows a section to grow and shrink within itself. + +A link_order knows how big it is, and which is the next +link_order and where the raw data for it is; it also points to +a list of relocations which apply to it. + +The link_order is used by the linker to perform relaxing on +final code. The compiler creates code which is as big as +necessary to make it work without relaxing, and the user can +select whether to relax. Sometimes relaxing takes a lot of +time. The linker runs around the relocations to see if any +are attached to data which can be shrunk, if so it does it on +a link_order by link_order basis. + + +@node typedef asection, section prototypes, Section Output, Sections +@subsection typedef asection +Here is the section structure: + + +@example + +typedef struct bfd_section +@{ + /* The name of the section; the name isn't a copy, the pointer is + the same as that passed to bfd_make_section. */ + const char *name; + + /* A unique sequence number. */ + int id; + + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ + int index; + + /* The next section in the list belonging to the BFD, or NULL. */ + struct bfd_section *next; + + /* The previous section in the list belonging to the BFD, or NULL. */ + struct bfd_section *prev; + + /* The field flags contains attributes of the section. Some + flags are read in from the object file, and some are + synthesized from other information. */ + flagword flags; + +#define SEC_NO_FLAGS 0x000 + + /* Tells the OS to allocate space for this section when loading. + This is clear for a section containing debug information only. */ +#define SEC_ALLOC 0x001 + + /* Tells the OS to load the section from the file when loading. + This is clear for a .bss section. */ +#define SEC_LOAD 0x002 + + /* The section contains data still to be relocated, so there is + some relocation information too. */ +#define SEC_RELOC 0x004 + + /* A signal to the OS that the section contains read only data. */ +#define SEC_READONLY 0x008 + + /* The section contains code only. */ +#define SEC_CODE 0x010 + + /* The section contains data only. */ +#define SEC_DATA 0x020 + + /* The section will reside in ROM. */ +#define SEC_ROM 0x040 + + /* The section contains constructor information. This section + type is used by the linker to create lists of constructors and + destructors used by @code{g++}. When a back end sees a symbol + which should be used in a constructor list, it creates a new + section for the type of name (e.g., @code{__CTOR_LIST__}), attaches + the symbol to it, and builds a relocation. To build the lists + of constructors, all the linker has to do is catenate all the + sections called @code{__CTOR_LIST__} and relocate the data + contained within - exactly the operations it would peform on + standard data. */ +#define SEC_CONSTRUCTOR 0x080 + + /* The section has contents - a data section could be + @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}; a debug section could be + @code{SEC_HAS_CONTENTS} */ +#define SEC_HAS_CONTENTS 0x100 + + /* An instruction to the linker to not output the section + even if it has information which would normally be written. */ +#define SEC_NEVER_LOAD 0x200 + + /* The section contains thread local data. */ +#define SEC_THREAD_LOCAL 0x400 + + /* The section has GOT references. This flag is only for the + linker, and is currently only used by the elf32-hppa back end. + It will be set if global offset table references were detected + in this section, which indicate to the linker that the section + contains PIC code, and must be handled specially when doing a + static link. */ +#define SEC_HAS_GOT_REF 0x800 + + /* The section contains common symbols (symbols may be defined + multiple times, the value of a symbol is the amount of + space it requires, and the largest symbol value is the one + used). Most targets have exactly one of these (which we + translate to bfd_com_section_ptr), but ECOFF has two. */ +#define SEC_IS_COMMON 0x1000 + + /* The section contains only debugging information. For + example, this is set for ELF .debug and .stab sections. + strip tests this flag to see if a section can be + discarded. */ +#define SEC_DEBUGGING 0x2000 + + /* The contents of this section are held in memory pointed to + by the contents field. This is checked by bfd_get_section_contents, + and the data is retrieved from memory if appropriate. */ +#define SEC_IN_MEMORY 0x4000 + + /* The contents of this section are to be excluded by the + linker for executable and shared objects unless those + objects are to be further relocated. */ +#define SEC_EXCLUDE 0x8000 + + /* The contents of this section are to be sorted based on the sum of + the symbol and addend values specified by the associated relocation + entries. Entries without associated relocation entries will be + appended to the end of the section in an unspecified order. */ +#define SEC_SORT_ENTRIES 0x10000 + + /* When linking, duplicate sections of the same name should be + discarded, rather than being combined into a single section as + is usually done. This is similar to how common symbols are + handled. See SEC_LINK_DUPLICATES below. */ +#define SEC_LINK_ONCE 0x20000 + + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker + should handle duplicate sections. */ +#define SEC_LINK_DUPLICATES 0xc0000 + + /* This value for SEC_LINK_DUPLICATES means that duplicate + sections with the same name should simply be discarded. */ +#define SEC_LINK_DUPLICATES_DISCARD 0x0 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if there are any duplicate sections, although + it should still only link one copy. */ +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections are a different size. */ +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000 + + /* This value for SEC_LINK_DUPLICATES means that the linker + should warn if any duplicate sections contain different + contents. */ +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \ + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE) + + /* This section was created by the linker as part of dynamic + relocation or other arcane processing. It is skipped when + going through the first-pass output, trusting that someone + else up the line will take care of it later. */ +#define SEC_LINKER_CREATED 0x100000 + + /* This section should not be subject to garbage collection. + Also set to inform the linker that this section should not be + listed in the link map as discarded. */ +#define SEC_KEEP 0x200000 + + /* This section contains "short" data, and should be placed + "near" the GP. */ +#define SEC_SMALL_DATA 0x400000 + + /* Attempt to merge identical entities in the section. + Entity size is given in the entsize field. */ +#define SEC_MERGE 0x800000 + + /* If given with SEC_MERGE, entities to merge are zero terminated + strings where entsize specifies character size instead of fixed + size entries. */ +#define SEC_STRINGS 0x1000000 + + /* This section contains data about section groups. */ +#define SEC_GROUP 0x2000000 + + /* The section is a COFF shared library section. This flag is + only for the linker. If this type of section appears in + the input file, the linker must copy it to the output file + without changing the vma or size. FIXME: Although this + was originally intended to be general, it really is COFF + specific (and the flag was renamed to indicate this). It + might be cleaner to have some more general mechanism to + allow the back end to control what the linker does with + sections. */ +#define SEC_COFF_SHARED_LIBRARY 0x4000000 + + /* This input section should be copied to output in reverse order + as an array of pointers. This is for ELF linker internal use + only. */ +#define SEC_ELF_REVERSE_COPY 0x4000000 + + /* This section contains data which may be shared with other + executables or shared objects. This is for COFF only. */ +#define SEC_COFF_SHARED 0x8000000 + + /* When a section with this flag is being linked, then if the size of + the input section is less than a page, it should not cross a page + boundary. If the size of the input section is one page or more, + it should be aligned on a page boundary. This is for TI + TMS320C54X only. */ +#define SEC_TIC54X_BLOCK 0x10000000 + + /* Conditionally link this section; do not link if there are no + references found to any symbol in the section. This is for TI + TMS320C54X only. */ +#define SEC_TIC54X_CLINK 0x20000000 + + /* Indicate that section has the no read flag set. This happens + when memory read flag isn't set. */ +#define SEC_COFF_NOREAD 0x40000000 + + /* End of section flags. */ + + /* Some internal packed boolean fields. */ + + /* See the vma field. */ + unsigned int user_set_vma : 1; + + /* A mark flag used by some of the linker backends. */ + unsigned int linker_mark : 1; + + /* Another mark flag used by some of the linker backends. Set for + output sections that have an input section. */ + unsigned int linker_has_input : 1; + + /* Mark flag used by some linker backends for garbage collection. */ + unsigned int gc_mark : 1; + + /* Section compression status. */ + unsigned int compress_status : 2; +#define COMPRESS_SECTION_NONE 0 +#define COMPRESS_SECTION_DONE 1 +#define DECOMPRESS_SECTION_SIZED 2 + + /* The following flags are used by the ELF linker. */ + + /* Mark sections which have been allocated to segments. */ + unsigned int segment_mark : 1; + + /* Type of sec_info information. */ + unsigned int sec_info_type:3; +#define SEC_INFO_TYPE_NONE 0 +#define SEC_INFO_TYPE_STABS 1 +#define SEC_INFO_TYPE_MERGE 2 +#define SEC_INFO_TYPE_EH_FRAME 3 +#define SEC_INFO_TYPE_JUST_SYMS 4 +#define SEC_INFO_TYPE_TARGET 5 + + /* Nonzero if this section uses RELA relocations, rather than REL. */ + unsigned int use_rela_p:1; + + /* Bits used by various backends. The generic code doesn't touch + these fields. */ + + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; + + /* End of internal packed boolean fields. */ + + /* The virtual memory address of the section - where it will be + at run time. The symbols are relocated against this. The + user_set_vma flag is maintained by bfd; if it's not set, the + backend can assign addresses (for example, in @code{a.out}, where + the default address for @code{.data} is dependent on the specific + target and various flags). */ + bfd_vma vma; + + /* The load address of the section - where it would be in a + rom image; really only used for writing section header + information. */ + bfd_vma lma; + + /* The size of the section in octets, as it will be output. + Contains a value even if the section has no contents (e.g., the + size of @code{.bss}). */ + bfd_size_type size; + + /* For input sections, the original size on disk of the section, in + octets. This field should be set for any section whose size is + changed by linker relaxation. It is required for sections where + the linker relaxation scheme doesn't cache altered section and + reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing + targets), and thus the original size needs to be kept to read the + section multiple times. For output sections, rawsize holds the + section size calculated on a previous linker relaxation pass. */ + bfd_size_type rawsize; + + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + + /* Relaxation table. */ + struct relax_table *relax; + + /* Count of used relaxation table entries. */ + int relax_count; + + + /* If this section is going to be output, then this value is the + offset in *bytes* into the output section of the first byte in the + input section (byte ==> smallest addressable unit on the + target). In most cases, if this was going to start at the + 100th octet (8-bit quantity) in the output section, this value + would be 100. However, if the target byte size is 16 bits + (bfd_octets_per_byte is "2"), this value would be 50. */ + bfd_vma output_offset; + + /* The output section through which to map on output. */ + struct bfd_section *output_section; + + /* The alignment requirement of the section, as an exponent of 2 - + e.g., 3 aligns to 2^3 (or 8). */ + unsigned int alignment_power; + + /* If an input section, a pointer to a vector of relocation + records for the data in this section. */ + struct reloc_cache_entry *relocation; + + /* If an output section, a pointer to a vector of pointers to + relocation records for the data in this section. */ + struct reloc_cache_entry **orelocation; + + /* The number of relocation records in one of the above. */ + unsigned reloc_count; + + /* Information below is back end specific - and not always used + or updated. */ + + /* File position of section data. */ + file_ptr filepos; + + /* File position of relocation info. */ + file_ptr rel_filepos; + + /* File position of line data. */ + file_ptr line_filepos; + + /* Pointer to data for applications. */ + void *userdata; + + /* If the SEC_IN_MEMORY flag is set, this points to the actual + contents. */ + unsigned char *contents; + + /* Attached line number information. */ + alent *lineno; + + /* Number of line number records. */ + unsigned int lineno_count; + + /* Entity size for merging purposes. */ + unsigned int entsize; + + /* Points to the kept section if this section is a link-once section, + and is discarded. */ + struct bfd_section *kept_section; + + /* When a section is being output, this value changes as more + linenumbers are written out. */ + file_ptr moving_line_filepos; + + /* What the section number is in the target world. */ + int target_index; + + void *used_by_bfd; + + /* If this is a constructor section then here is a list of the + relocations created to relocate items within it. */ + struct relent_chain *constructor_chain; + + /* The BFD which owns the section. */ + bfd *owner; + + /* A symbol which points at this section only. */ + struct bfd_symbol *symbol; + struct bfd_symbol **symbol_ptr_ptr; + + /* Early in the link process, map_head and map_tail are used to build + a list of input sections attached to an output section. Later, + output sections use these fields for a list of bfd_link_order + structs. */ + union @{ + struct bfd_link_order *link_order; + struct bfd_section *s; + @} map_head, map_tail; +@} asection; + +/* Relax table contains information about instructions which can + be removed by relaxation -- replacing a long address with a + short address. */ +struct relax_table @{ + /* Address where bytes may be deleted. */ + bfd_vma addr; + + /* Number of bytes to be deleted. */ + int size; +@}; + +/* Note: the following are provided as inline functions rather than macros + because not all callers use the return value. A macro implementation + would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some + compilers will complain about comma expressions that have no effect. */ +static inline bfd_boolean +bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val) +@{ + ptr->userdata = val; + return TRUE; +@} + +static inline bfd_boolean +bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val) +@{ + ptr->vma = ptr->lma = val; + ptr->user_set_vma = TRUE; + return TRUE; +@} + +static inline bfd_boolean +bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val) +@{ + ptr->alignment_power = val; + return TRUE; +@} + +/* These sections are global, and are managed by BFD. The application + and target back end are not permitted to change the values in + these sections. */ +extern asection _bfd_std_section[4]; + +#define BFD_ABS_SECTION_NAME "*ABS*" +#define BFD_UND_SECTION_NAME "*UND*" +#define BFD_COM_SECTION_NAME "*COM*" +#define BFD_IND_SECTION_NAME "*IND*" + +/* Pointer to the common section. */ +#define bfd_com_section_ptr (&_bfd_std_section[0]) +/* Pointer to the undefined section. */ +#define bfd_und_section_ptr (&_bfd_std_section[1]) +/* Pointer to the absolute section. */ +#define bfd_abs_section_ptr (&_bfd_std_section[2]) +/* Pointer to the indirect section. */ +#define bfd_ind_section_ptr (&_bfd_std_section[3]) + +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) + +#define bfd_is_const_section(SEC) \ + ( ((SEC) == bfd_abs_section_ptr) \ + || ((SEC) == bfd_und_section_ptr) \ + || ((SEC) == bfd_com_section_ptr) \ + || ((SEC) == bfd_ind_section_ptr)) + +/* Macros to handle insertion and deletion of a bfd's sections. These + only handle the list pointers, ie. do not adjust section_count, + target_index etc. */ +#define bfd_section_list_remove(ABFD, S) \ + do \ + @{ \ + asection *_s = S; \ + asection *_next = _s->next; \ + asection *_prev = _s->prev; \ + if (_prev) \ + _prev->next = _next; \ + else \ + (ABFD)->sections = _next; \ + if (_next) \ + _next->prev = _prev; \ + else \ + (ABFD)->section_last = _prev; \ + @} \ + while (0) +#define bfd_section_list_append(ABFD, S) \ + do \ + @{ \ + asection *_s = S; \ + bfd *_abfd = ABFD; \ + _s->next = NULL; \ + if (_abfd->section_last) \ + @{ \ + _s->prev = _abfd->section_last; \ + _abfd->section_last->next = _s; \ + @} \ + else \ + @{ \ + _s->prev = NULL; \ + _abfd->sections = _s; \ + @} \ + _abfd->section_last = _s; \ + @} \ + while (0) +#define bfd_section_list_prepend(ABFD, S) \ + do \ + @{ \ + asection *_s = S; \ + bfd *_abfd = ABFD; \ + _s->prev = NULL; \ + if (_abfd->sections) \ + @{ \ + _s->next = _abfd->sections; \ + _abfd->sections->prev = _s; \ + @} \ + else \ + @{ \ + _s->next = NULL; \ + _abfd->section_last = _s; \ + @} \ + _abfd->sections = _s; \ + @} \ + while (0) +#define bfd_section_list_insert_after(ABFD, A, S) \ + do \ + @{ \ + asection *_a = A; \ + asection *_s = S; \ + asection *_next = _a->next; \ + _s->next = _next; \ + _s->prev = _a; \ + _a->next = _s; \ + if (_next) \ + _next->prev = _s; \ + else \ + (ABFD)->section_last = _s; \ + @} \ + while (0) +#define bfd_section_list_insert_before(ABFD, B, S) \ + do \ + @{ \ + asection *_b = B; \ + asection *_s = S; \ + asection *_prev = _b->prev; \ + _s->prev = _prev; \ + _s->next = _b; \ + _b->prev = _s; \ + if (_prev) \ + _prev->next = _s; \ + else \ + (ABFD)->sections = _s; \ + @} \ + while (0) +#define bfd_section_removed_from_list(ABFD, S) \ + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) + +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ + /* name, id, index, next, prev, flags, user_set_vma, */ \ + @{ NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ + \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ + \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ + \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ + \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ + \ + /* output_offset, output_section, alignment_power, */ \ + 0, &SEC, 0, \ + \ + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ + NULL, NULL, 0, 0, 0, \ + \ + /* line_filepos, userdata, contents, lineno, lineno_count, */ \ + 0, NULL, NULL, NULL, 0, \ + \ + /* entsize, kept_section, moving_line_filepos, */ \ + 0, NULL, 0, \ + \ + /* target_index, used_by_bfd, constructor_chain, owner, */ \ + 0, NULL, NULL, NULL, \ + \ + /* symbol, symbol_ptr_ptr, */ \ + (struct bfd_symbol *) SYM, &SEC.symbol, \ + \ + /* map_head, map_tail */ \ + @{ NULL @}, @{ NULL @} \ + @} + +@end example + +@node section prototypes, , typedef asection, Sections +@subsection Section prototypes +These are the functions exported by the section handling part of BFD. + +@findex bfd_section_list_clear +@subsubsection @code{bfd_section_list_clear} +@strong{Synopsis} +@example +void bfd_section_list_clear (bfd *); +@end example +@strong{Description}@* +Clears the section list, and also resets the section count and +hash table entries. + +@findex bfd_get_section_by_name +@subsubsection @code{bfd_get_section_by_name} +@strong{Synopsis} +@example +asection *bfd_get_section_by_name (bfd *abfd, const char *name); +@end example +@strong{Description}@* +Return the most recently created section attached to @var{abfd} +named @var{name}. Return NULL if no such section exists. + +@findex bfd_get_next_section_by_name +@subsubsection @code{bfd_get_next_section_by_name} +@strong{Synopsis} +@example +asection *bfd_get_next_section_by_name (asection *sec); +@end example +@strong{Description}@* +Given @var{sec} is a section returned by @code{bfd_get_section_by_name}, +return the next most recently created section attached to the same +BFD with the same name. Return NULL if no such section exists. + +@findex bfd_get_linker_section +@subsubsection @code{bfd_get_linker_section} +@strong{Synopsis} +@example +asection *bfd_get_linker_section (bfd *abfd, const char *name); +@end example +@strong{Description}@* +Return the linker created section attached to @var{abfd} +named @var{name}. Return NULL if no such section exists. + +@findex bfd_get_section_by_name_if +@subsubsection @code{bfd_get_section_by_name_if} +@strong{Synopsis} +@example +asection *bfd_get_section_by_name_if + (bfd *abfd, + const char *name, + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); +@end example +@strong{Description}@* +Call the provided function @var{func} for each section +attached to the BFD @var{abfd} whose name matches @var{name}, +passing @var{obj} as an argument. The function will be called +as if by + +@example + func (abfd, the_section, obj); +@end example + +It returns the first section for which @var{func} returns true, +otherwise @code{NULL}. + +@findex bfd_get_unique_section_name +@subsubsection @code{bfd_get_unique_section_name} +@strong{Synopsis} +@example +char *bfd_get_unique_section_name + (bfd *abfd, const char *templat, int *count); +@end example +@strong{Description}@* +Invent a section name that is unique in @var{abfd} by tacking +a dot and a digit suffix onto the original @var{templat}. If +@var{count} is non-NULL, then it specifies the first number +tried as a suffix to generate a unique name. The value +pointed to by @var{count} will be incremented in this case. + +@findex bfd_make_section_old_way +@subsubsection @code{bfd_make_section_old_way} +@strong{Synopsis} +@example +asection *bfd_make_section_old_way (bfd *abfd, const char *name); +@end example +@strong{Description}@* +Create a new empty section called @var{name} +and attach it to the end of the chain of sections for the +BFD @var{abfd}. An attempt to create a section with a name which +is already in use returns its pointer without changing the +section chain. + +It has the funny name since this is the way it used to be +before it was rewritten.... + +Possible errors are: +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - +If output has already started for this BFD. +@item +@code{bfd_error_no_memory} - +If memory allocation fails. +@end itemize + +@findex bfd_make_section_anyway_with_flags +@subsubsection @code{bfd_make_section_anyway_with_flags} +@strong{Synopsis} +@example +asection *bfd_make_section_anyway_with_flags + (bfd *abfd, const char *name, flagword flags); +@end example +@strong{Description}@* +Create a new empty section called @var{name} and attach it to the end of +the chain of sections for @var{abfd}. Create a new section even if there +is already a section with that name. Also set the attributes of the +new section to the value @var{flags}. + +Return @code{NULL} and set @code{bfd_error} on error; possible errors are: +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - If output has already started for @var{abfd}. +@item +@code{bfd_error_no_memory} - If memory allocation fails. +@end itemize + +@findex bfd_make_section_anyway +@subsubsection @code{bfd_make_section_anyway} +@strong{Synopsis} +@example +asection *bfd_make_section_anyway (bfd *abfd, const char *name); +@end example +@strong{Description}@* +Create a new empty section called @var{name} and attach it to the end of +the chain of sections for @var{abfd}. Create a new section even if there +is already a section with that name. + +Return @code{NULL} and set @code{bfd_error} on error; possible errors are: +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - If output has already started for @var{abfd}. +@item +@code{bfd_error_no_memory} - If memory allocation fails. +@end itemize + +@findex bfd_make_section_with_flags +@subsubsection @code{bfd_make_section_with_flags} +@strong{Synopsis} +@example +asection *bfd_make_section_with_flags + (bfd *, const char *name, flagword flags); +@end example +@strong{Description}@* +Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling +bfd_set_error ()) without changing the section chain if there is already a +section named @var{name}. Also set the attributes of the new section to +the value @var{flags}. If there is an error, return @code{NULL} and set +@code{bfd_error}. + +@findex bfd_make_section +@subsubsection @code{bfd_make_section} +@strong{Synopsis} +@example +asection *bfd_make_section (bfd *, const char *name); +@end example +@strong{Description}@* +Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling +bfd_set_error ()) without changing the section chain if there is already a +section named @var{name}. If there is an error, return @code{NULL} and set +@code{bfd_error}. + +@findex bfd_set_section_flags +@subsubsection @code{bfd_set_section_flags} +@strong{Synopsis} +@example +bfd_boolean bfd_set_section_flags + (bfd *abfd, asection *sec, flagword flags); +@end example +@strong{Description}@* +Set the attributes of the section @var{sec} in the BFD +@var{abfd} to the value @var{flags}. Return @code{TRUE} on success, +@code{FALSE} on error. Possible error returns are: + +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - +The section cannot have one or more of the attributes +requested. For example, a .bss section in @code{a.out} may not +have the @code{SEC_HAS_CONTENTS} field set. +@end itemize + +@findex bfd_rename_section +@subsubsection @code{bfd_rename_section} +@strong{Synopsis} +@example +void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); +@end example +@strong{Description}@* +Rename section @var{sec} in @var{abfd} to @var{newname}. + +@findex bfd_map_over_sections +@subsubsection @code{bfd_map_over_sections} +@strong{Synopsis} +@example +void bfd_map_over_sections + (bfd *abfd, + void (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); +@end example +@strong{Description}@* +Call the provided function @var{func} for each section +attached to the BFD @var{abfd}, passing @var{obj} as an +argument. The function will be called as if by + +@example + func (abfd, the_section, obj); +@end example + +This is the preferred method for iterating over sections; an +alternative would be to use a loop: + +@example + asection *p; + for (p = abfd->sections; p != NULL; p = p->next) + func (abfd, p, ...) +@end example + +@findex bfd_sections_find_if +@subsubsection @code{bfd_sections_find_if} +@strong{Synopsis} +@example +asection *bfd_sections_find_if + (bfd *abfd, + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj), + void *obj); +@end example +@strong{Description}@* +Call the provided function @var{operation} for each section +attached to the BFD @var{abfd}, passing @var{obj} as an +argument. The function will be called as if by + +@example + operation (abfd, the_section, obj); +@end example + +It returns the first section for which @var{operation} returns true. + +@findex bfd_set_section_size +@subsubsection @code{bfd_set_section_size} +@strong{Synopsis} +@example +bfd_boolean bfd_set_section_size + (bfd *abfd, asection *sec, bfd_size_type val); +@end example +@strong{Description}@* +Set @var{sec} to the size @var{val}. If the operation is +ok, then @code{TRUE} is returned, else @code{FALSE}. + +Possible error returns: +@itemize @bullet + +@item +@code{bfd_error_invalid_operation} - +Writing has started to the BFD, so setting the size is invalid. +@end itemize + +@findex bfd_set_section_contents +@subsubsection @code{bfd_set_section_contents} +@strong{Synopsis} +@example +bfd_boolean bfd_set_section_contents + (bfd *abfd, asection *section, const void *data, + file_ptr offset, bfd_size_type count); +@end example +@strong{Description}@* +Sets the contents of the section @var{section} in BFD +@var{abfd} to the data starting in memory at @var{data}. The +data is written to the output section starting at offset +@var{offset} for @var{count} octets. + +Normally @code{TRUE} is returned, else @code{FALSE}. Possible error +returns are: +@itemize @bullet + +@item +@code{bfd_error_no_contents} - +The output section does not have the @code{SEC_HAS_CONTENTS} +attribute, so nothing can be written to it. +@item +and some more too +@end itemize +This routine is front end to the back end function +@code{_bfd_set_section_contents}. + +@findex bfd_get_section_contents +@subsubsection @code{bfd_get_section_contents} +@strong{Synopsis} +@example +bfd_boolean bfd_get_section_contents + (bfd *abfd, asection *section, void *location, file_ptr offset, + bfd_size_type count); +@end example +@strong{Description}@* +Read data from @var{section} in BFD @var{abfd} +into memory starting at @var{location}. The data is read at an +offset of @var{offset} from the start of the input section, +and is read for @var{count} bytes. + +If the contents of a constructor with the @code{SEC_CONSTRUCTOR} +flag set are requested or if the section does not have the +@code{SEC_HAS_CONTENTS} flag set, then the @var{location} is filled +with zeroes. If no errors occur, @code{TRUE} is returned, else +@code{FALSE}. + +@findex bfd_malloc_and_get_section +@subsubsection @code{bfd_malloc_and_get_section} +@strong{Synopsis} +@example +bfd_boolean bfd_malloc_and_get_section + (bfd *abfd, asection *section, bfd_byte **buf); +@end example +@strong{Description}@* +Read all data from @var{section} in BFD @var{abfd} +into a buffer, *@var{buf}, malloc'd by this function. + +@findex bfd_copy_private_section_data +@subsubsection @code{bfd_copy_private_section_data} +@strong{Synopsis} +@example +bfd_boolean bfd_copy_private_section_data + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); +@end example +@strong{Description}@* +Copy private section information from @var{isec} in the BFD +@var{ibfd} to the section @var{osec} in the BFD @var{obfd}. +Return @code{TRUE} on success, @code{FALSE} on error. Possible error +returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{osec}. +@end itemize +@example +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ + BFD_SEND (obfd, _bfd_copy_private_section_data, \ + (ibfd, isection, obfd, osection)) +@end example + +@findex bfd_generic_is_group_section +@subsubsection @code{bfd_generic_is_group_section} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); +@end example +@strong{Description}@* +Returns TRUE if @var{sec} is a member of a group. + +@findex bfd_generic_discard_group +@subsubsection @code{bfd_generic_discard_group} +@strong{Synopsis} +@example +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group); +@end example +@strong{Description}@* +Remove all members of @var{group} from the output. + diff --git a/bfd/doc/syms.texi b/bfd/doc/syms.texi new file mode 100644 index 00000000000..6834d10a544 --- /dev/null +++ b/bfd/doc/syms.texi @@ -0,0 +1,480 @@ +@section Symbols +BFD tries to maintain as much symbol information as it can when +it moves information from file to file. BFD passes information +to applications though the @code{asymbol} structure. When the +application requests the symbol table, BFD reads the table in +the native form and translates parts of it into the internal +format. To maintain more than the information passed to +applications, some targets keep some information ``behind the +scenes'' in a structure only the particular back end knows +about. For example, the coff back end keeps the original +symbol table structure as well as the canonical structure when +a BFD is read in. On output, the coff back end can reconstruct +the output symbol table so that no information is lost, even +information unique to coff which BFD doesn't know or +understand. If a coff symbol table were read, but were written +through an a.out back end, all the coff specific information +would be lost. The symbol table of a BFD +is not necessarily read in until a canonicalize request is +made. Then the BFD back end fills in a table provided by the +application with pointers to the canonical information. To +output symbols, the application provides BFD with a table of +pointers to pointers to @code{asymbol}s. This allows applications +like the linker to output a symbol as it was read, since the ``behind +the scenes'' information will be still available. +@menu +* Reading Symbols:: +* Writing Symbols:: +* Mini Symbols:: +* typedef asymbol:: +* symbol handling functions:: +@end menu + +@node Reading Symbols, Writing Symbols, Symbols, Symbols +@subsection Reading symbols +There are two stages to reading a symbol table from a BFD: +allocating storage, and the actual reading process. This is an +excerpt from an application which reads the symbol table: + +@example + long storage_needed; + asymbol **symbol_table; + long number_of_symbols; + long i; + + storage_needed = bfd_get_symtab_upper_bound (abfd); + + if (storage_needed < 0) + FAIL + + if (storage_needed == 0) + return; + + symbol_table = xmalloc (storage_needed); + ... + number_of_symbols = + bfd_canonicalize_symtab (abfd, symbol_table); + + if (number_of_symbols < 0) + FAIL + + for (i = 0; i < number_of_symbols; i++) + process_symbol (symbol_table[i]); +@end example + +All storage for the symbols themselves is in an objalloc +connected to the BFD; it is freed when the BFD is closed. + +@node Writing Symbols, Mini Symbols, Reading Symbols, Symbols +@subsection Writing symbols +Writing of a symbol table is automatic when a BFD open for +writing is closed. The application attaches a vector of +pointers to pointers to symbols to the BFD being written, and +fills in the symbol count. The close and cleanup code reads +through the table provided and performs all the necessary +operations. The BFD output code must always be provided with an +``owned'' symbol: one which has come from another BFD, or one +which has been created using @code{bfd_make_empty_symbol}. Here is an +example showing the creation of a symbol table with only one element: + +@example + #include "sysdep.h" + #include "bfd.h" + int main (void) + @{ + bfd *abfd; + asymbol *ptrs[2]; + asymbol *new; + + abfd = bfd_openw ("foo","a.out-sunos-big"); + bfd_set_format (abfd, bfd_object); + new = bfd_make_empty_symbol (abfd); + new->name = "dummy_symbol"; + new->section = bfd_make_section_old_way (abfd, ".text"); + new->flags = BSF_GLOBAL; + new->value = 0x12345; + + ptrs[0] = new; + ptrs[1] = 0; + + bfd_set_symtab (abfd, ptrs, 1); + bfd_close (abfd); + return 0; + @} + + ./makesym + nm foo + 00012345 A dummy_symbol +@end example + +Many formats cannot represent arbitrary symbol information; for +instance, the @code{a.out} object format does not allow an +arbitrary number of sections. A symbol pointing to a section +which is not one of @code{.text}, @code{.data} or @code{.bss} cannot +be described. + +@node Mini Symbols, typedef asymbol, Writing Symbols, Symbols +@subsection Mini Symbols +Mini symbols provide read-only access to the symbol table. +They use less memory space, but require more time to access. +They can be useful for tools like nm or objdump, which may +have to handle symbol tables of extremely large executables. + +The @code{bfd_read_minisymbols} function will read the symbols +into memory in an internal form. It will return a @code{void *} +pointer to a block of memory, a symbol count, and the size of +each symbol. The pointer is allocated using @code{malloc}, and +should be freed by the caller when it is no longer needed. + +The function @code{bfd_minisymbol_to_symbol} will take a pointer +to a minisymbol, and a pointer to a structure returned by +@code{bfd_make_empty_symbol}, and return a @code{asymbol} structure. +The return value may or may not be the same as the value from +@code{bfd_make_empty_symbol} which was passed in. + + +@node typedef asymbol, symbol handling functions, Mini Symbols, Symbols +@subsection typedef asymbol +An @code{asymbol} has the form: + + +@example + +typedef struct bfd_symbol +@{ + /* A pointer to the BFD which owns the symbol. This information + is necessary so that a back end can work out what additional + information (invisible to the application writer) is carried + with the symbol. + + This field is *almost* redundant, since you can use section->owner + instead, except that some symbols point to the global sections + bfd_@{abs,com,und@}_section. This could be fixed by making + these globals be per-bfd (or per-target-flavor). FIXME. */ + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ + + /* The text of the symbol. The name is left alone, and not copied; the + application may not alter it. */ + const char *name; + + /* The value of the symbol. This really should be a union of a + numeric value with a pointer, since some flags indicate that + a pointer to another symbol is stored here. */ + symvalue value; + + /* Attributes of a symbol. */ +#define BSF_NO_FLAGS 0x00 + + /* The symbol has local scope; @code{static} in @code{C}. The value + is the offset into the section of the data. */ +#define BSF_LOCAL (1 << 0) + + /* The symbol has global scope; initialized data in @code{C}. The + value is the offset into the section of the data. */ +#define BSF_GLOBAL (1 << 1) + + /* The symbol has global scope and is exported. The value is + the offset into the section of the data. */ +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */ + + /* A normal C symbol would be one of: + @code{BSF_LOCAL}, @code{BSF_COMMON}, @code{BSF_UNDEFINED} or + @code{BSF_GLOBAL}. */ + + /* The symbol is a debugging record. The value has an arbitrary + meaning, unless BSF_DEBUGGING_RELOC is also set. */ +#define BSF_DEBUGGING (1 << 2) + + /* The symbol denotes a function entry point. Used in ELF, + perhaps others someday. */ +#define BSF_FUNCTION (1 << 3) + + /* Used by the linker. */ +#define BSF_KEEP (1 << 5) +#define BSF_KEEP_G (1 << 6) + + /* A weak global symbol, overridable without warnings by + a regular global symbol of the same name. */ +#define BSF_WEAK (1 << 7) + + /* This symbol was created to point to a section, e.g. ELF's + STT_SECTION symbols. */ +#define BSF_SECTION_SYM (1 << 8) + + /* The symbol used to be a common symbol, but now it is + allocated. */ +#define BSF_OLD_COMMON (1 << 9) + + /* In some files the type of a symbol sometimes alters its + location in an output file - ie in coff a @code{ISFCN} symbol + which is also @code{C_EXT} symbol appears where it was + declared and not at the end of a section. This bit is set + by the target BFD part to convey this information. */ +#define BSF_NOT_AT_END (1 << 10) + + /* Signal that the symbol is the label of constructor section. */ +#define BSF_CONSTRUCTOR (1 << 11) + + /* Signal that the symbol is a warning symbol. The name is a + warning. The name of the next symbol is the one to warn about; + if a reference is made to a symbol with the same name as the next + symbol, a warning is issued by the linker. */ +#define BSF_WARNING (1 << 12) + + /* Signal that the symbol is indirect. This symbol is an indirect + pointer to the symbol with the same name as the next symbol. */ +#define BSF_INDIRECT (1 << 13) + + /* BSF_FILE marks symbols that contain a file name. This is used + for ELF STT_FILE symbols. */ +#define BSF_FILE (1 << 14) + + /* Symbol is from dynamic linking information. */ +#define BSF_DYNAMIC (1 << 15) + + /* The symbol denotes a data object. Used in ELF, and perhaps + others someday. */ +#define BSF_OBJECT (1 << 16) + + /* This symbol is a debugging symbol. The value is the offset + into the section of the data. BSF_DEBUGGING should be set + as well. */ +#define BSF_DEBUGGING_RELOC (1 << 17) + + /* This symbol is thread local. Used in ELF. */ +#define BSF_THREAD_LOCAL (1 << 18) + + /* This symbol represents a complex relocation expression, + with the expression tree serialized in the symbol name. */ +#define BSF_RELC (1 << 19) + + /* This symbol represents a signed complex relocation expression, + with the expression tree serialized in the symbol name. */ +#define BSF_SRELC (1 << 20) + + /* This symbol was created by bfd_get_synthetic_symtab. */ +#define BSF_SYNTHETIC (1 << 21) + + /* This symbol is an indirect code object. Unrelated to BSF_INDIRECT. + The dynamic linker will compute the value of this symbol by + calling the function that it points to. BSF_FUNCTION must + also be also set. */ +#define BSF_GNU_INDIRECT_FUNCTION (1 << 22) + /* This symbol is a globally unique data object. The dynamic linker + will make sure that in the entire process there is just one symbol + with this name and type in use. BSF_OBJECT must also be set. */ +#define BSF_GNU_UNIQUE (1 << 23) + + flagword flags; + + /* A pointer to the section to which this symbol is + relative. This will always be non NULL, there are special + sections for undefined and absolute symbols. */ + struct bfd_section *section; + + /* Back end special data. */ + union + @{ + void *p; + bfd_vma i; + @} + udata; +@} +asymbol; + +@end example + +@node symbol handling functions, , typedef asymbol, Symbols +@subsection Symbol handling functions + + +@findex bfd_get_symtab_upper_bound +@subsubsection @code{bfd_get_symtab_upper_bound} +@strong{Description}@* +Return the number of bytes required to store a vector of pointers +to @code{asymbols} for all the symbols in the BFD @var{abfd}, +including a terminal NULL pointer. If there are no symbols in +the BFD, then return 0. If an error occurs, return -1. +@example +#define bfd_get_symtab_upper_bound(abfd) \ + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) + +@end example + +@findex bfd_is_local_label +@subsubsection @code{bfd_is_local_label} +@strong{Synopsis} +@example +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym); +@end example +@strong{Description}@* +Return TRUE if the given symbol @var{sym} in the BFD @var{abfd} is +a compiler generated local label, else return FALSE. + +@findex bfd_is_local_label_name +@subsubsection @code{bfd_is_local_label_name} +@strong{Synopsis} +@example +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name); +@end example +@strong{Description}@* +Return TRUE if a symbol with the name @var{name} in the BFD +@var{abfd} is a compiler generated local label, else return +FALSE. This just checks whether the name has the form of a +local label. +@example +#define bfd_is_local_label_name(abfd, name) \ + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) + +@end example + +@findex bfd_is_target_special_symbol +@subsubsection @code{bfd_is_target_special_symbol} +@strong{Synopsis} +@example +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); +@end example +@strong{Description}@* +Return TRUE iff a symbol @var{sym} in the BFD @var{abfd} is something +special to the particular target represented by the BFD. Such symbols +should normally not be mentioned to the user. +@example +#define bfd_is_target_special_symbol(abfd, sym) \ + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym)) + +@end example + +@findex bfd_canonicalize_symtab +@subsubsection @code{bfd_canonicalize_symtab} +@strong{Description}@* +Read the symbols from the BFD @var{abfd}, and fills in +the vector @var{location} with pointers to the symbols and +a trailing NULL. +Return the actual number of symbol pointers, not +including the NULL. +@example +#define bfd_canonicalize_symtab(abfd, location) \ + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location)) + +@end example + +@findex bfd_set_symtab +@subsubsection @code{bfd_set_symtab} +@strong{Synopsis} +@example +bfd_boolean bfd_set_symtab + (bfd *abfd, asymbol **location, unsigned int count); +@end example +@strong{Description}@* +Arrange that when the output BFD @var{abfd} is closed, +the table @var{location} of @var{count} pointers to symbols +will be written. + +@findex bfd_print_symbol_vandf +@subsubsection @code{bfd_print_symbol_vandf} +@strong{Synopsis} +@example +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); +@end example +@strong{Description}@* +Print the value and flags of the @var{symbol} supplied to the +stream @var{file}. + +@findex bfd_make_empty_symbol +@subsubsection @code{bfd_make_empty_symbol} +@strong{Description}@* +Create a new @code{asymbol} structure for the BFD @var{abfd} +and return a pointer to it. + +This routine is necessary because each back end has private +information surrounding the @code{asymbol}. Building your own +@code{asymbol} and pointing to it will not create the private +information, and will cause problems later on. +@example +#define bfd_make_empty_symbol(abfd) \ + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) + +@end example + +@findex _bfd_generic_make_empty_symbol +@subsubsection @code{_bfd_generic_make_empty_symbol} +@strong{Synopsis} +@example +asymbol *_bfd_generic_make_empty_symbol (bfd *); +@end example +@strong{Description}@* +Create a new @code{asymbol} structure for the BFD @var{abfd} +and return a pointer to it. Used by core file routines, +binary back-end and anywhere else where no private info +is needed. + +@findex bfd_make_debug_symbol +@subsubsection @code{bfd_make_debug_symbol} +@strong{Description}@* +Create a new @code{asymbol} structure for the BFD @var{abfd}, +to be used as a debugging symbol. Further details of its use have +yet to be worked out. +@example +#define bfd_make_debug_symbol(abfd,ptr,size) \ + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) + +@end example + +@findex bfd_decode_symclass +@subsubsection @code{bfd_decode_symclass} +@strong{Description}@* +Return a character corresponding to the symbol +class of @var{symbol}, or '?' for an unknown class. + +@strong{Synopsis} +@example +int bfd_decode_symclass (asymbol *symbol); +@end example +@findex bfd_is_undefined_symclass +@subsubsection @code{bfd_is_undefined_symclass} +@strong{Description}@* +Returns non-zero if the class symbol returned by +bfd_decode_symclass represents an undefined symbol. +Returns zero otherwise. + +@strong{Synopsis} +@example +bfd_boolean bfd_is_undefined_symclass (int symclass); +@end example +@findex bfd_symbol_info +@subsubsection @code{bfd_symbol_info} +@strong{Description}@* +Fill in the basic info about symbol that nm needs. +Additional info may be added by the back-ends after +calling this function. + +@strong{Synopsis} +@example +void bfd_symbol_info (asymbol *symbol, symbol_info *ret); +@end example +@findex bfd_copy_private_symbol_data +@subsubsection @code{bfd_copy_private_symbol_data} +@strong{Synopsis} +@example +bfd_boolean bfd_copy_private_symbol_data + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); +@end example +@strong{Description}@* +Copy private symbol information from @var{isym} in the BFD +@var{ibfd} to the symbol @var{osym} in the BFD @var{obfd}. +Return @code{TRUE} on success, @code{FALSE} on error. Possible error +returns are: + +@itemize @bullet + +@item +@code{bfd_error_no_memory} - +Not enough memory exists to create private data for @var{osec}. +@end itemize +@example +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ + (ibfd, isymbol, obfd, osymbol)) + +@end example + diff --git a/bfd/doc/targets.texi b/bfd/doc/targets.texi new file mode 100644 index 00000000000..a0cd008c448 --- /dev/null +++ b/bfd/doc/targets.texi @@ -0,0 +1,614 @@ +@section Targets + + +@strong{Description}@* +Each port of BFD to a different machine requires the creation +of a target back end. All the back end provides to the root +part of BFD is a structure containing pointers to functions +which perform certain low level operations on files. BFD +translates the applications's requests through a pointer into +calls to the back end routines. + +When a file is opened with @code{bfd_openr}, its format and +target are unknown. BFD uses various mechanisms to determine +how to interpret the file. The operations performed are: + +@itemize @bullet + +@item +Create a BFD by calling the internal routine +@code{_bfd_new_bfd}, then call @code{bfd_find_target} with the +target string supplied to @code{bfd_openr} and the new BFD pointer. + +@item +If a null target string was provided to @code{bfd_find_target}, +look up the environment variable @code{GNUTARGET} and use +that as the target string. + +@item +If the target string is still @code{NULL}, or the target string is +@code{default}, then use the first item in the target vector +as the target type, and set @code{target_defaulted} in the BFD to +cause @code{bfd_check_format} to loop through all the targets. +@xref{bfd_target}. @xref{Formats}. + +@item +Otherwise, inspect the elements in the target vector +one by one, until a match on target name is found. When found, +use it. + +@item +Otherwise return the error @code{bfd_error_invalid_target} to +@code{bfd_openr}. + +@item +@code{bfd_openr} attempts to open the file using +@code{bfd_open_file}, and returns the BFD. +@end itemize +Once the BFD has been opened and the target selected, the file +format may be determined. This is done by calling +@code{bfd_check_format} on the BFD with a suggested format. +If @code{target_defaulted} has been set, each possible target +type is tried to see if it recognizes the specified format. +@code{bfd_check_format} returns @code{TRUE} when the caller guesses right. +@menu +* bfd_target:: +@end menu + +@node bfd_target, , Targets, Targets + +@subsection bfd_target + + +@strong{Description}@* +This structure contains everything that BFD knows about a +target. It includes things like its byte order, name, and which +routines to call to do various operations. + +Every BFD points to a target structure with its @code{xvec} +member. + +The macros below are used to dispatch to functions through the +@code{bfd_target} vector. They are used in a number of macros further +down in @file{bfd.h}, and are also used when calling various +routines by hand inside the BFD implementation. The @var{arglist} +argument must be parenthesized; it contains all the arguments +to the called function. + +They make the documentation (more) unpleasant to read, so if +someone wants to fix this and not break the above, please do. +@example +#define BFD_SEND(bfd, message, arglist) \ + ((*((bfd)->xvec->message)) arglist) + +#ifdef DEBUG_BFD_SEND +#undef BFD_SEND +#define BFD_SEND(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + ((*((bfd)->xvec->message)) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) +#endif +@end example +For operations which index on the BFD format: +@example +#define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) + +#ifdef DEBUG_BFD_SEND +#undef BFD_SEND_FMT +#define BFD_SEND_FMT(bfd, message, arglist) \ + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ + (bfd_assert (__FILE__,__LINE__), NULL)) +#endif + +@end example +This is the structure which defines the type of BFD this is. The +@code{xvec} member of the struct @code{bfd} itself points here. Each +module that implements access to a different target under BFD, +defines one of these. + +FIXME, these names should be rationalised with the names of +the entry points which call them. Too bad we can't have one +macro to define them both! +@example +enum bfd_flavour +@{ + bfd_target_unknown_flavour, + bfd_target_aout_flavour, + bfd_target_coff_flavour, + bfd_target_ecoff_flavour, + bfd_target_xcoff_flavour, + bfd_target_elf_flavour, + bfd_target_ieee_flavour, + bfd_target_nlm_flavour, + bfd_target_oasys_flavour, + bfd_target_tekhex_flavour, + bfd_target_srec_flavour, + bfd_target_verilog_flavour, + bfd_target_ihex_flavour, + bfd_target_som_flavour, + bfd_target_os9k_flavour, + bfd_target_versados_flavour, + bfd_target_msdos_flavour, + bfd_target_ovax_flavour, + bfd_target_evax_flavour, + bfd_target_mmo_flavour, + bfd_target_mach_o_flavour, + bfd_target_pef_flavour, + bfd_target_pef_xlib_flavour, + bfd_target_sym_flavour +@}; + +enum bfd_endian @{ BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN @}; + +/* Forward declaration. */ +typedef struct bfd_link_info _bfd_link_info; + +/* Forward declaration. */ +typedef struct flag_info flag_info; + +typedef struct bfd_target +@{ + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ + char *name; + + /* The "flavour" of a back end is a general indication about + the contents of a file. */ + enum bfd_flavour flavour; + + /* The order of bytes within the data area of a file. */ + enum bfd_endian byteorder; + + /* The order of bytes within the header parts of a file. */ + enum bfd_endian header_byteorder; + + /* A mask of all the flags which an executable may have set - + from the set @code{BFD_NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}. */ + flagword object_flags; + + /* A mask of all the flags which a section may have set - from + the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}. */ + flagword section_flags; + + /* The character normally found at the front of a symbol. + (if any), perhaps `_'. */ + char symbol_leading_char; + + /* The pad character for file names within an archive header. */ + char ar_pad_char; + + /* The maximum number of characters in an archive header. */ + unsigned char ar_max_namelen; + + /* How well this target matches, used to select between various + possible targets when more than one target matches. */ + unsigned char match_priority; + + /* Entries for byte swapping for data. These are different from the + other entry points, since they don't take a BFD as the first argument. + Certain other handlers could do the same. */ + bfd_uint64_t (*bfd_getx64) (const void *); + bfd_int64_t (*bfd_getx_signed_64) (const void *); + void (*bfd_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_getx32) (const void *); + bfd_signed_vma (*bfd_getx_signed_32) (const void *); + void (*bfd_putx32) (bfd_vma, void *); + bfd_vma (*bfd_getx16) (const void *); + bfd_signed_vma (*bfd_getx_signed_16) (const void *); + void (*bfd_putx16) (bfd_vma, void *); + + /* Byte swapping for the headers. */ + bfd_uint64_t (*bfd_h_getx64) (const void *); + bfd_int64_t (*bfd_h_getx_signed_64) (const void *); + void (*bfd_h_putx64) (bfd_uint64_t, void *); + bfd_vma (*bfd_h_getx32) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *); + void (*bfd_h_putx32) (bfd_vma, void *); + bfd_vma (*bfd_h_getx16) (const void *); + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *); + void (*bfd_h_putx16) (bfd_vma, void *); + + /* Format dependent routines: these are vectors of entry points + within the target vector structure, one for each format to check. */ + + /* Check the format of a file being read. Return a @code{bfd_target *} or zero. */ + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *); + + /* Set the format of a file being written. */ + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *); + + /* Write cached information into a file being written, at @code{bfd_close}. */ + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *); + +@end example +The general target vector. These vectors are initialized using the +BFD_JUMP_TABLE macros. +@example + + /* Generic entry points. */ +#define BFD_JUMP_TABLE_GENERIC(NAME) \ + NAME##_close_and_cleanup, \ + NAME##_bfd_free_cached_info, \ + NAME##_new_section_hook, \ + NAME##_get_section_contents, \ + NAME##_get_section_contents_in_window + + /* Called when the BFD is being closed to do any necessary cleanup. */ + bfd_boolean (*_close_and_cleanup) (bfd *); + /* Ask the BFD to free all cached information. */ + bfd_boolean (*_bfd_free_cached_info) (bfd *); + /* Called when a new section is created. */ + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr); + /* Read the contents of a section. */ + bfd_boolean (*_bfd_get_section_contents) + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); + bfd_boolean (*_bfd_get_section_contents_in_window) + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type); + + /* Entry points to copy private data. */ +#define BFD_JUMP_TABLE_COPY(NAME) \ + NAME##_bfd_copy_private_bfd_data, \ + NAME##_bfd_merge_private_bfd_data, \ + _bfd_generic_init_private_section_data, \ + NAME##_bfd_copy_private_section_data, \ + NAME##_bfd_copy_private_symbol_data, \ + NAME##_bfd_copy_private_header_data, \ + NAME##_bfd_set_private_flags, \ + NAME##_bfd_print_private_bfd_data + + /* Called to copy BFD general private data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *); + /* Called to merge BFD general private data from one object file + to a common output file when linking. */ + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *); + /* Called to initialize BFD private section data from one object file + to another. */ +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info)) + bfd_boolean (*_bfd_init_private_section_data) + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *); + /* Called to copy BFD private section data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_section_data) + (bfd *, sec_ptr, bfd *, sec_ptr); + /* Called to copy BFD private symbol data from one symbol + to another. */ + bfd_boolean (*_bfd_copy_private_symbol_data) + (bfd *, asymbol *, bfd *, asymbol *); + /* Called to copy BFD private header data from one object file + to another. */ + bfd_boolean (*_bfd_copy_private_header_data) + (bfd *, bfd *); + /* Called to set private backend flags. */ + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword); + + /* Called to print private BFD data. */ + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *); + + /* Core file entry points. */ +#define BFD_JUMP_TABLE_CORE(NAME) \ + NAME##_core_file_failing_command, \ + NAME##_core_file_failing_signal, \ + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid + + char * (*_core_file_failing_command) (bfd *); + int (*_core_file_failing_signal) (bfd *); + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); + + /* Archive entry points. */ +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \ + NAME##_slurp_armap, \ + NAME##_slurp_extended_name_table, \ + NAME##_construct_extended_name_table, \ + NAME##_truncate_arname, \ + NAME##_write_armap, \ + NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ + NAME##_openr_next_archived_file, \ + NAME##_get_elt_at_index, \ + NAME##_generic_stat_arch_elt, \ + NAME##_update_armap_timestamp + + bfd_boolean (*_bfd_slurp_armap) (bfd *); + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *); + bfd_boolean (*_bfd_construct_extended_name_table) + (bfd *, char **, bfd_size_type *, const char **); + void (*_bfd_truncate_arname) (bfd *, const char *, char *); + bfd_boolean (*write_armap) + (bfd *, unsigned int, struct orl *, unsigned int, int); + void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); + bfd * (*openr_next_archived_file) (bfd *, bfd *); +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); + int (*_bfd_stat_arch_elt) (bfd *, struct stat *); + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *); + + /* Entry points used for symbols. */ +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \ + NAME##_get_symtab_upper_bound, \ + NAME##_canonicalize_symtab, \ + NAME##_make_empty_symbol, \ + NAME##_print_symbol, \ + NAME##_get_symbol_info, \ + NAME##_bfd_is_local_label_name, \ + NAME##_bfd_is_target_special_symbol, \ + NAME##_get_lineno, \ + NAME##_find_nearest_line, \ + NAME##_find_line, \ + NAME##_find_inliner_info, \ + NAME##_bfd_make_debug_symbol, \ + NAME##_read_minisymbols, \ + NAME##_minisymbol_to_symbol + + long (*_bfd_get_symtab_upper_bound) (bfd *); + long (*_bfd_canonicalize_symtab) + (bfd *, struct bfd_symbol **); + struct bfd_symbol * + (*_bfd_make_empty_symbol) (bfd *); + void (*_bfd_print_symbol) + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) + void (*_bfd_get_symbol_info) + (bfd *, struct bfd_symbol *, symbol_info *); +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *); + alent * (*_get_lineno) (bfd *, struct bfd_symbol *); + bfd_boolean (*_bfd_find_nearest_line) + (bfd *, struct bfd_symbol **, struct bfd_section *, bfd_vma, + const char **, const char **, unsigned int *, unsigned int *); + bfd_boolean (*_bfd_find_line) + (bfd *, struct bfd_symbol **, struct bfd_symbol *, + const char **, unsigned int *); + bfd_boolean (*_bfd_find_inliner_info) + (bfd *, const char **, const char **, unsigned int *); + /* Back-door to allow format-aware applications to create debug symbols + while using BFD for everything else. Currently used by the assembler + when creating COFF files. */ + asymbol * (*_bfd_make_debug_symbol) + (bfd *, void *, unsigned long size); +#define bfd_read_minisymbols(b, d, m, s) \ + BFD_SEND (b, _read_minisymbols, (b, d, m, s)) + long (*_read_minisymbols) + (bfd *, bfd_boolean, void **, unsigned int *); +#define bfd_minisymbol_to_symbol(b, d, m, f) \ + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) + asymbol * (*_minisymbol_to_symbol) + (bfd *, bfd_boolean, const void *, asymbol *); + + /* Routines for relocs. */ +#define BFD_JUMP_TABLE_RELOCS(NAME) \ + NAME##_get_reloc_upper_bound, \ + NAME##_canonicalize_reloc, \ + NAME##_bfd_reloc_type_lookup, \ + NAME##_bfd_reloc_name_lookup + + long (*_get_reloc_upper_bound) (bfd *, sec_ptr); + long (*_bfd_canonicalize_reloc) + (bfd *, sec_ptr, arelent **, struct bfd_symbol **); + /* See documentation on reloc types. */ + reloc_howto_type * + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); + reloc_howto_type * + (*reloc_name_lookup) (bfd *, const char *); + + + /* Routines used when writing an object file. */ +#define BFD_JUMP_TABLE_WRITE(NAME) \ + NAME##_set_arch_mach, \ + NAME##_set_section_contents + + bfd_boolean (*_bfd_set_arch_mach) + (bfd *, enum bfd_architecture, unsigned long); + bfd_boolean (*_bfd_set_section_contents) + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); + + /* Routines used by the linker. */ +#define BFD_JUMP_TABLE_LINK(NAME) \ + NAME##_sizeof_headers, \ + NAME##_bfd_get_relocated_section_contents, \ + NAME##_bfd_relax_section, \ + NAME##_bfd_link_hash_table_create, \ + NAME##_bfd_link_add_symbols, \ + NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ + NAME##_bfd_final_link, \ + NAME##_bfd_link_split_section, \ + NAME##_bfd_gc_sections, \ + NAME##_bfd_lookup_section_flags, \ + NAME##_bfd_merge_sections, \ + NAME##_bfd_is_group_section, \ + NAME##_bfd_discard_group, \ + NAME##_section_already_linked, \ + NAME##_bfd_define_common_symbol + + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); + bfd_byte * (*_bfd_get_relocated_section_contents) + (bfd *, struct bfd_link_info *, struct bfd_link_order *, + bfd_byte *, bfd_boolean, struct bfd_symbol **); + + bfd_boolean (*_bfd_relax_section) + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); + + /* Create a hash table for the linker. Different backends store + different information in this table. */ + struct bfd_link_hash_table * + (*_bfd_link_hash_table_create) (bfd *); + + /* Add symbols from this object file into the hash table. */ + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *); + + /* Indicate that we are only retrieving symbol values from this section. */ + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + + /* Copy the symbol type and other attributes for a linker script + assignment of one symbol to another. */ +#define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + + /* Do a link based on the link_order structures attached to each + section of the BFD. */ + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); + + /* Should this section be split up into smaller pieces during linking. */ + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *); + + /* Remove sections that are not referenced from the output. */ + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *); + + /* Sets the bitmask of allowed and disallowed section flags. */ + bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *, + struct flag_info *, + asection *); + + /* Attempt to merge SEC_MERGE sections. */ + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *); + + /* Is this section a member of a group? */ + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *); + + /* Discard members of a group. */ + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *); + + /* Check if SEC has been already linked during a reloceatable or + final link. */ + bfd_boolean (*_section_already_linked) (bfd *, asection *, + struct bfd_link_info *); + + /* Define a common symbol. */ + bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *, + struct bfd_link_hash_entry *); + + /* Routines to handle dynamic symbols and relocs. */ +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \ + NAME##_get_dynamic_symtab_upper_bound, \ + NAME##_canonicalize_dynamic_symtab, \ + NAME##_get_synthetic_symtab, \ + NAME##_get_dynamic_reloc_upper_bound, \ + NAME##_canonicalize_dynamic_reloc + + /* Get the amount of memory required to hold the dynamic symbols. */ + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); + /* Read in the dynamic symbols. */ + long (*_bfd_canonicalize_dynamic_symtab) + (bfd *, struct bfd_symbol **); + /* Create synthetized symbols. */ + long (*_bfd_get_synthetic_symtab) + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **, + struct bfd_symbol **); + /* Get the amount of memory required to hold the dynamic relocs. */ + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); + /* Read in the dynamic relocs. */ + long (*_bfd_canonicalize_dynamic_reloc) + (bfd *, arelent **, struct bfd_symbol **); + +@end example +A pointer to an alternative bfd_target in case the current one is not +satisfactory. This can happen when the target cpu supports both big +and little endian code, and target chosen by the linker has the wrong +endianness. The function open_output() in ld/ldlang.c uses this field +to find an alternative output format that is suitable. +@example + /* Opposite endian version of this target. */ + const struct bfd_target * alternative_target; + + /* Data for use by back-end routines, which isn't + generic enough to belong in this structure. */ + const void *backend_data; + +@} bfd_target; + +@end example + +@findex bfd_set_default_target +@subsubsection @code{bfd_set_default_target} +@strong{Synopsis} +@example +bfd_boolean bfd_set_default_target (const char *name); +@end example +@strong{Description}@* +Set the default target vector to use when recognizing a BFD. +This takes the name of the target, which may be a BFD target +name or a configuration triplet. + +@findex bfd_find_target +@subsubsection @code{bfd_find_target} +@strong{Synopsis} +@example +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); +@end example +@strong{Description}@* +Return a pointer to the transfer vector for the object target +named @var{target_name}. If @var{target_name} is @code{NULL}, +choose the one in the environment variable @code{GNUTARGET}; if +that is null or not defined, then choose the first entry in the +target list. Passing in the string "default" or setting the +environment variable to "default" will cause the first entry in +the target list to be returned, and "target_defaulted" will be +set in the BFD if @var{abfd} isn't @code{NULL}. This causes +@code{bfd_check_format} to loop over all the targets to find the +one that matches the file being read. + +@findex bfd_get_target_info +@subsubsection @code{bfd_get_target_info} +@strong{Synopsis} +@example +const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); +@end example +@strong{Description}@* +Return a pointer to the transfer vector for the object target +named @var{target_name}. If @var{target_name} is @code{NULL}, +choose the one in the environment variable @code{GNUTARGET}; if +that is null or not defined, then choose the first entry in the +target list. Passing in the string "default" or setting the +environment variable to "default" will cause the first entry in +the target list to be returned, and "target_defaulted" will be +set in the BFD if @var{abfd} isn't @code{NULL}. This causes +@code{bfd_check_format} to loop over all the targets to find the +one that matches the file being read. +If @var{is_bigendian} is not @code{NULL}, then set this value to target's +endian mode. True for big-endian, FALSE for little-endian or for +invalid target. +If @var{underscoring} is not @code{NULL}, then set this value to target's +underscoring mode. Zero for none-underscoring, -1 for invalid target, +else the value of target vector's symbol underscoring. +If @var{def_target_arch} is not @code{NULL}, then set it to the architecture +string specified by the target_name. + +@findex bfd_target_list +@subsubsection @code{bfd_target_list} +@strong{Synopsis} +@example +const char ** bfd_target_list (void); +@end example +@strong{Description}@* +Return a freshly malloced NULL-terminated +vector of the names of all the valid BFD targets. Do not +modify the names. + +@findex bfd_seach_for_target +@subsubsection @code{bfd_seach_for_target} +@strong{Synopsis} +@example +const bfd_target *bfd_search_for_target + (int (*search_func) (const bfd_target *, void *), + void *); +@end example +@strong{Description}@* +Return a pointer to the first transfer vector in the list of +transfer vectors maintained by BFD that produces a non-zero +result when passed to the function @var{search_func}. The +parameter @var{data} is passed, unexamined, to the search +function. + diff --git a/bfd/po/da.gmo b/bfd/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..deb4565597a9c78f5c682faf87d04de62ace183f GIT binary patch literal 134131 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 literal 0 Hc-jL100001 diff --git a/bfd/po/es.gmo b/bfd/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d31fab0062ae0dd02472c9b4fd60e3ad56c17681 GIT binary patch literal 150305 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 A3;+NC literal 0 Hc-jL100001 diff --git a/bfd/po/id.gmo b/bfd/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..46b2f30394589af91283a11857e74ec67915fc15 GIT binary patch literal 105891 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%0D3Q{_je^N@Bew5@HWx=O2K=aWq`uw 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 K&CX=pbNj!hSo_`p literal 0 Hc-jL100001 diff --git a/bfd/po/ro.gmo b/bfd/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8621928313f63e511869ba9208f233c78692a777 GIT binary patch literal 69038 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 TQjzYq1?>pP+R-fTpMd)R@X7JR literal 0 Hc-jL100001 diff --git a/bfd/po/ru.gmo b/bfd/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9dd8b47e4f8ea5f468f7dca7424f1fcc79a6abe0 GIT binary patch literal 186835 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 ZNGY_s=+D&Sd+3Qf8;{wo&!?D5{J)8z*Jl6# literal 0 Hc-jL100001 diff --git a/bfd/po/rw.gmo b/bfd/po/rw.gmo new file mode 100644 index 0000000000000000000000000000000000000000..49d9e2fd45e3653895273f350eef4aab94821463 GIT binary patch literal 429 zc-mEu!A`vp7T& z^iRHIX7=Bmf4@%-KRwa`aY~#MM?}y2)s#3U9*A+n^ImuT7uAiO=fL};iD6)^vEJ00 zH^`8WbN&L>DWhXHD{|Hh!pNWAr+jEZB8~aAM2J~ah!z(e9(GvRj-%$82!$Xce}t8C z|9lY_Z7y0Y6mdj#hkSR^Ay2K;u99eM%$^Wdpjo1_xrB-(wO!6PthcCbF#wLnR4&NO zqE9z*4Of?RKPNZr6iKIdp+DwauU~wuC?f_Wfj>jP@T5 z1K|&iM$nXMv!vJvA9%5>q|%p+B3TD`^_<@D?%uauR)FOrota$eGG^VGLf@O9WbejF F?+1Dxb_W0e literal 0 Hc-jL100001 diff --git a/bfd/po/sv.gmo b/bfd/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e746ec02e7563ca81ddea6cb6a048da279bf1ded GIT binary patch literal 67266 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 z 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%0D~A=*?4 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%0A4vf%EVYfW@^)3YXP<`p*F(ba+dHF~~O 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

+8t9gmRrJSTIn&72U zy$0%qERE4XMMBmGNcz^pP>mgZ7AhX&^`aVt#g5Tz%8!$(Gp^tiRNdM>MjKXqhZSHH zEp4}2=Q+aROJg)MO9Rp4`n{Os*cdcdB|$6MZS9Fi1t@I}_CoH0la`ZK2)slV)@a$X z1jFurH^S!-6<0D>@2U>YS)H?-)vM=<5U#DuVj^_8>d3-D;X{KjIhe}CyNECHUk#?R zPSqN_9=etuoWd85{?GN*S78yZXt+zFoKF3p>uk*+$SRBv)C(l$NC+9*zdxGzUkEAw zcf=L%XK-=EnXU27Q}FCwM6|dBS4}r6aFowBsMc=tZ?H8U7Tyn*NJm`fY|EKBOXkmy zIE`g4TJ`8eulx#gx6nWWLA#!JpX;gpK@1=vvoe5_(P8~0#-a5fPENAn!dh)ZLQNVZFaKrhv@zh%4jNW;=vyWdpZR*--$F8fs zb5IYtnHA^RCFglOdQXh`w%m*69p2kx{MGwDt_u-ItV6jP?a0S?yqqs5vZe8m;Q2Cf z=i0&@p0dgQK{-azY(?di0Da4?s{IimiTl%%)PK~RC5w&e|HKRaZ@_9bv^Yj8ZtBl-8GdKD^)NO&Q zNo;iUhN>I<@JP_w(Zz@*xEu1L$2%7+R z@lvfFzC83cL3nRKR_M99O+OO4(pavIG?!uEf=ybhve#s=zIeq#-QQL(w+UF=riY{C zHXgzucgGUSk+Iyu03L}WkVjO~K)3zt7RKUXGp95elU12lK9-6NuB&x<^P}d=9hQFp z3XT8y9sdH-&F=9rciL3LzNQ^3{IaHOj5H(Bt-PFTv6#T@`E$E)>bLD*=Kx|~r}fKl zBsXI1vF=zlHaoU(T~KHQd6sSx8B`lhdW(|U7O&}mvcyx~T<`diTXI|7>xE6tTe@_|j6yH(5`&6ZIw* z#RPRf%&;|KLVLU$FAbO4>V=X7&d^$p*3fd8U1NQQ18Y20tGkrqa&v$Sd>Fc;m1f}D z(G8P{GPqlw`I3j|rI{pd1aj>0X(R%8fGF&N1^LzioPV4V>KD z+)0T_IX`Kvz^YiC#wYdWDwAUFq--UbN%4KZk3mc~R_X~icNADob<`$AKpB%ky3^$9NGhj;i7Fd%T$`(m=^{9zf z7?TN`G?P4HDCA3-!AVW-7@zrJdgk)pq3QG>naMdH>Epn=epz9Qz;RtIhV1xF(_A^`lO=KPXIVeEi}VOOr( z`v1LMTW?#}l|Ik>6{ju)NvX)B?IaC2wgyfu&nReY!*9dSi$RL%#F-=yGkqFbwknQfQGY@CN3+*u@4fcz@KCl3G^ot8FXyuN+UxSIZ~czT z<6?N_d0G*QNZGT7fWy|@sO)48E+(0~(8q*p1wbh@knZ_QRR+-zyGKh{yYf>{7O(=x6rpFOqRQh}GuM<{kciMCi~NPo3AV?$wdEyX z8mkJRzk?}fR?!dEYHu`ew9lN@f5qs6Ng30E47J-KlQIq`lr7_6ewS;bi%*r{!qdrd z#yA(CjoswRhaeLY^CPS&O&iL4F2$+8;Oc=Jy^Z$zLaMq)r8uih9N9uRm{?k5Wyp}V zIyR%v6n`MR(GocoS8ulS-UeX}n*BDO3csOxU8}c@!uiD5+K&)xnM~+{x#w*_8)*Ml zo9mG?-dmRX=^x-v_dSK_C+7O%IO(J(_wR6xB(;zS0-fRes0H4v!nKZs zr{9*|I{q$%Ih@ebx2;5{Pwz#H>ajUWyG|xKTh;#%Y&LK8N3fX&A?L`BpGIP8Dm*uJ zU({AUR4M>2cNp;37It*TIbefLf&rv4u2fTY!qlYlyz$W_bI-u{zTkkXRbdD>SrsUx z(FoKU>-}HbTK7O*{wfMGrTo|PbJsOxqJJwWV0Q^`=~U@-i>r zr78m?-B8m7w@RkEV>_P>g{kp$-EjkkuIG$*zs9+Q=YH8Zd$oaJga&MZm5e%Nfa#^W zs@7mAB<7Iso#Nikm%v}fE^R}c%%cuG<;Kr{arVj;ow$Mz3#l$;dS1M8_Pyn)dp7fSgA49WKWn=IP_AUZsF+uG z`q9$mE6W!z#QS|MlfY|w`5&TnM$GXxuI48{I^+e|?}(3}UG$ibE#ha4`G0m%MYgTY zr5$;*yg>P`tY5o;4@>NQvt%dsa;BCb!AbXw@)RvMT$n;34AVk`k(@k1C$*$3H}q6P zigcSOgPR=;^Kg!|b1fmRSZ)4PdjO}rx#t?>hLNaUk*S{`r{0<%Wp&{!{k%x{9uD^&u59bol9eLb(`%KL!gsC*lK63uACWEX~o z*N7FQEF0T0CJsFg_Maewa$ACEPpAoF)FpOAuw%j~&&}-tA(-I0W4|dJgeE1P@7gcm zAtJ#@FlfGbf-*%PorO)f_@(tJ#;fzj4jjt8Fv7@sYjg&ou>nflN0j?A1g5gRKuZ{u zDqH9RbHSV}kxVzB?K8#)+mDpwu3$^hS$N~)v+V0iJlLj0lS($H%+8CKFpsx$d!yS~ z?QAwSdWeOG^8(FLB>$e*O;?-UZlm8`3oiRbKB;o&oL5v_hPMq<0;v4*P@OIzG7E)e>1xf4*_U=L=+a-D7cv#g!D_e+)5?XQ69X<9PRQS_ai)H#Y zbIPKcPYkJ#$xl$dRv$LiZu!dD#HD7$n|SBlx8F)+zGZ^;G|5y-=Lzx=AmYU}9!&HK zJqL!PBVKq#=k^WJA!Ug=Yn3eEJWQr1*+T%y7Ws&)WC8bLi4op)MgT{uRn^47Ue`~} zJVInN60G|$nOCS5Ufot}AEOU2ETIIW^YOng6o3d2Akp%GYLMd9$dbtFk<7}(`oq^} zVES zt;HQ!xM(a`yuT($l#84<352_fTMRb)`NS5r*4^I3MvdOu+MvBTDBaK(KIxAcSxf55_G0{!>?MwsMdJBRc1d4SqG>xr+z#@6v9d@;9#J(uB4gxK zqzIcEMij$H!m<;NMMWV6trK`UeMFzNMl7?@A=VOilE855QHg8ft|QsXStz8W?IIfC zQTE>XbFKuIs;PTIfZqt=fkG^kDbJ!=q<(}nH8TS*%`x})FbPsFY!q?d6@vF*p{S!F zWqsMCB_$}69^ zn=)Nn?X{}xnN8;k1hb;_OS`?=>$j`z?pogJc0-3AP5(`bWYNXphAji(tmOR$3# z<*tIVa^+W7E*GY^9)F<^XPtYX_0Mtsled2SH~IN~yPaR@t!>_I_S^aS-qw1n3E}F6 ze0hDu>~wcYTTfcRO;{+I)-I zt(G8w%%cG+ukJ>jc)8#$x?kcPr3kX2P9`TptT0AC=gyO#p};pl(_(D20anxV&4^G@ z`7wZQ?nE8i+Z%4j$G$wGw@L5W1mDmnBat{@_23aM0{8;wY8}rohhvXSO2~z?N<_sM zTuTj}Vd>*b7cXDU$rHv(N?pH&D1Mu+24UK6INbtJOYL&Vj_ zNVcwyv>&kB+zrm2XiU+4lG1&m;Xh&Eu$>2oxeXaSaj!W!p!XyY{5jDIv6g+rnaEIr zUa54j^ISj(C{vHA3b^Nk^;>;K!%#)Cc%q9|HlMg&E?pr=$S$P`VTyJgDLpv@=S;J2?o2|~Q&f-y$4mh$V z_ho{weHuAkc8owym+k1w>A)tk7E#?$KJPIyLOc7>I#;j6k{gpD!JN>#MpxJ%0EopK z>DZ;bh~SwC9LfuNkJ1c7&}zqwt_f^ebZ{=X5m$ZasPVL_pRnA;8pS=4$tpBDlYt=^ z4^T0f8T?4SwP_iZ4+Z6_#KTv6S^`w7YTE-oH;bFElRo2D>U8__@ssSr#S2S01dY&v zG@o(4S~RPX9hx<#u-F0C+cQ6Wi<{X;Lz6Ugeg?G&OQI>+SgDkpciQ{^( zB*ETi5i4<1MwMsDIk|;VFZWonIUq-_Rk=BmCF%uGVZ8EVhnaQ~^~8tP1SFc{blvwr zp+FiYN(c<&cu*zh>x=^}Q=Cuz_@lUvOVx~q)&Qf0awJf1sASg2`joXujecmYf#>?M zqz8SnBhDq8Vx^{Po#{_v$!dCS4}Io+yzUQbl1f7lYXQ|&JWUSaAaWzdLnOS@zHvxG zJ#iV0s#?WGmy^~;xkCNg))Ibm{iDuj^ z`uuewU>P#5J#%f7or2;5!PeLzFUu4l!DwTP`(qUoU$$GfZKk!58_sz!J(0(Zky@Ia z(KSHf{-k^XV;XvX<<(I_*q#n(2DNLQYBmKQ0Ex_1RE@rK;KFF5oVH%iMf`^lWFG7IVmLxQ9O5K>UT)gz_mAGJ!Z_e6srr?q zqJ6KG%LZS`uT@w6sdanfH~qop_P<uk$Dj@#-jPonBEkRFGd+=$B&iT{9npc{NwTe0)i2x**EUd zXi+1x7iJ?Rs7>ZA9(*<_V_1XX1%4Cqw$v{s9V2toor9X!QGzO2O*#&O0J??N0@$%% z7bbtQhdArO6Stx4~uR1P^j%Yx1< z_|&RSfWkq>+w58qUVA0aVBvGd9~a30|LB3J9&q31sF~e{F8OS0wwBFq&DtQGH-Hnd zKc^c{Gnd+zedxD6n|>VuA*GYQ4G46~(Y|LY->N%0HMeJ+)R7v6b0Y~^HyQmjCLk4XCjrY@w-^AhKuyZOwc z5Xp(_;U&AHhXFe^*9k;1{o3qFeaz8NtvmEAu@G^8ThOYt06osr}uCln4W z3>_FK>s?djWr+HpZb`SGju+lXCSHQmNG&U`(jOBOBAfuhCz%`O71UYXR%Wu<8k@bw z>Q*0XQX`??Msv08QDv}%c_`L34*&(XuXlT^x9U2{^?^kSFrUvo83NXYZJvo>l@{NT zF%x$Y=|MHBOh+BWhA&DKU3(^^I27G9@nCW;j}-9xNAb>1y=95wKq*Gxe*h(ikT~4B zG^Vm8TKExKOn_un8|Qvf8MHjijrL|k*-Bj=1TC0-j!qm>%6P2OXd!beoGLW>?dGj^ z!&pA%MpJoR%)-c>;o)?bax1LgUhVah--#8=k@mEjU<0K_wyAPE0^ywDy3OnDZpme$ zyC9WS!76b-0{7Zz0{g;dyFc{;;{on8`<>?XZuu8R1?#8VK-A|1TZlRidRzTKXiWWS zHk&u}(iq!33=`0TW%&%%Yk_VKyOw)Ncl(`9y$~^UegIoa+$stBT|83uHE$cA30bQ% zXbuML+v>A4*4A?l%M(P#!Lut69-&&P$91g~MOPJq6>`jnY|`*^w3v2O?O78kxh2LBeicv&T59 z%z2>ntYn@nbN`7qPlZI_Ke8AAHS&32sbm3)kll4DZsu?u;gaJq_31aFP4bLug+DK( zd$#;A`G@DP{`eg*(bA0rg07HY*OX|+r41NDV!Y3nFI@WYYIgiTxGzSLs$oPxNn0Vg zYvRtr4CPZQRU)reNmoZSf$RMc{5Y6S!5Yn^5seeit@c2p4cWGOiafN;kOj8000Ju6J)UsX26!mxvw|%NH;l zEc0C%L&2HJ%Tf?$!R3P#p1;=ZHCyezdTE}KtJC6owo=}oLhd8fJAE{xdh zY1a2W;pfOOui+u62bq(KR|M7{QhF9j!!(PuhT#d3PiGw~xLJ&V%X4^T8+V(XO`*6) z)UU~aYTT9tNvekqnLX{=e$LqYPc6*IGmJ9Ju8MI{e=Ll-M3y0Xj9#V|wu-u;wVE--uC7rhgC z7plKZkHrJ&&h4i6Ypc20%ps=h{_dJAoGmi&h7^X0OM003+?SqOOV?1xc0F`JmoI;y zHObX{e~%uO0~^D&I$IPI>t=_OU5TJjy?^iFko!(qg^|cb8C5c6++S~W);Ap=j~88X zpI|GCCwm*pGa}IE(k%BP`X>`C zaZO}Y5Vet9x~&h8J^ms#wf^oRGh`@vwMUqpMQoKud>k?R+wX--8#b_1c1P@YqzrK1 z+zE?F_=geuG)jdyVgan3boeTYTrDu+iXts;)WId3l58C!y5oT`wWGo$GqFG15Rs=D ziesZ0{UdhO(Ibsbokgkn0-DY!_%71SI9E%cMkyUR%7!a>v?sO@13AD*N5maQF@+9@ z(D!}KL4EdCr@20FXNckmt4rcUN;FfVq53nxn#MCL#&0LDypz20vn)nM%PHLfp(%jm z!-8u==f@guWm+{t4J+m|c9hbD@Uu&qlLj7Hk!9o$%)s&DS2m~2mjCO`XcFYmt@Ple zbCz~D*}Y(+J}8fD%`8ydM-wN+#e3hSdO=+boD@c!F;0jQLS+JBBuPTp4w6bcpq?R4 Z1X~~=%B>qI`^}?!bW64DpHn2f{|_O=4&wj- literal 0 Hc-jL100001 diff --git a/binutils/po/da.gmo b/binutils/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d870bd7d598a80270f45f25159aa80605090f434 GIT binary patch literal 69960 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 literal 0 Hc-jL100001 diff --git a/binutils/po/es.gmo b/binutils/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..65268dfea96b2d1fad49f3065bb3c467043cda85 GIT binary patch literal 199631 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�i#K+#qAq0JJbB1j~5qTFUr_9zMfjp{RXxK4lQcc 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 KpQ)1rpZqWQ57oo~ literal 0 Hc-jL100001 diff --git a/binutils/po/fi.gmo b/binutils/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..98748b85d7be5f27afdb37b4ca6269f076df6ebc GIT binary patch literal 211009 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 literal 0 Hc-jL100001 diff --git a/binutils/po/fr.gmo b/binutils/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..98cb1c51232d676c8336c6ec9e09bb6c56e70b11 GIT binary patch literal 217397 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�p1_F)>mnqnLjnl3;7Zo_OI|F%1K0O&E_o7P zC8*S=?Fbc)Ng?mpN3R5ee&R4bF#Q=_-2?SN%QFgsLA*92e-d4xW;G8{JSh{>plXvz z$VHzuw;}8e0kUt-0Eo^MV6;Us7am@RAOG((ZrP<*WvTbwnXYdm`0Md3Y)d7OTPHlU31lJ(@saufIur`>1ToDH@tVCM$A!*Rn(1LK~{1{WuO3 zOoYKjjPQ6+=IzPmUX_aQD=gmDiRf$^!0zFaumO6Y8Q*8=?9D{E5vNw`1`kDpCB8g- zQW?0`oxZgWo}UhsZG}Oq)X|}2v4c0Ai8$G^wfTs6-;iV$%Ralp$*0soS%|t_Emvq8 zz%|5E^W#73L0UA0XmYF|v++|tjOl~?qD>K?pgAiyNj|M4O|I`50lJk0mO=#Km4=GW z>9m3z{|f#%fG=BNc;QND(|O+E&{mp;WHZIt=Y;Mva-r$Qp2riyi<{^0v3>?END+Ok zw!m6xWN2Oy!WM=*Y=_~0&2@_+U~?r`h^)V3+r}%dhAResmqU!BwZ#bL6E8?8?pt5X zATv+Z3efPZ<8Y3m&{^F7bCfkF`pmKqz50QC&OTds8J+7Q<_8y(nFA5(0YgXTS?}AI zFVs}B7ZCJC?5c1h6Me9&#Rp%$I_Kgc8<^&m3NK%vQp>L#6pF20L!uE<=mj!dNx<8|LEtBZ!RTBLgH0l_aXNOG`Nk??1N}_W-Hd2;J z&JN-6(EnXE+No}vwaCSG<9P&`8R3(0Tk;|wKbB;rT{B4^H+LBGP3*@c$PVhPw}>&s zCeZVV**4Gm9+gzxBuvl%R>_Gcvn!>Xoq9EgHr9?#yAj?a|Ba>cGu2?BES;jH8*>nb zvp0=12~A`v{wB;N(jv|~F@HUB4RiFZM?7@Z(kcO)J(enjUImE_#Lxx8Gvd#1k|UfR zPIZZWz?ezgK^ODUxDnWk3W;DTapR?(CFlGpi?bImON{Jvu!0z8#(82@O+L?3A!-=6`oH5@D7nz~}P2%$+Ald(o3~KaC%Y<~b`! zR*_z01WPv=d?!qmQF6ikMNGNQT_#p~#BxzIRDDm)*SR+(VwqpCe{POWL?VNp-L&q5 z6l@D`7~_&o$5Ap)rfhOzq5(+I2G6;nM=-w{1EexD$&bkjV*?Xcy)(I zqmkW%>kvdY67{vRsP%0IX1(An+zs6f&N4E)B}-FzRofIS_2^$JBr0B&-8d|W28=Ls zoRb6C++a`BTov&|_Jq_`ZW9t;b`=-;G2^q)u1f0Owq?lzlH0*!s~&ZFZ|NEQlRY7o zX ziA0=K}q{RH1{40v2M0)2Lf_eN&+K0!_Il33lXucM^>#3pR$vjfHH zOndwatiQGpZLGn#Y^(;X*mM%?)eFUZx=E-dq*fi3bC$$l?Q0m-2=){>`xc(R8bupk z(lyEt%x@HsL&gdnW3#YXiuZKMBY|5|IStv`q9~Ia+U^_QPBz5W&27xN2`;tTqscjl4ifG(yNV{q&JM4+d_PH zwqj@0KCwRXU2Z~w|Em(Ec|4&=TmwP4BI@RQTR*d*rs=weYx|RM&XJ-@pFGZf?N1oy zc5p+q0L!yUR(Qy(4n(TMqVDYP&LU;*(2x;WvrNJNU){GYw{fIt)-|4@I(iu-Z331h zx5vY=G(nM|%x<2B0A+P36xbqAq+o*pj6%_r+a0l&+xPnbj=kA&Y{Xv8&FtJ+Z?aFa z|1tB=tSXSSH4`z8nHEu%nU$55hyVC}&v*~(M0K5y43vPy_?j?E>3Oex)i>!zu^f#9 zT5&udgNDQd5+a|HoI9Q_g;^|o5!oAYoF(pvJfQ(Us=8 zpchb+y>TkXs%95Y*U@9?(Y!4PES2a`s>YstMJDZdd|0LW%_iQJ1fd(WSu5rgoJf2FzgI{K}O_-P%>Ro)gZATy7 zgkQ!VntN$KbjOY=$t(PwPMwRklp`^?nCm&Y;Uc_JSVc5%&Uep`ll1tc-~IOud_f_1 z1C<6;0ya_R;Fz899pi=ZXU*arZE_GzBrA*kk1`N zbNr?@$gO7MIPTM$w)87IQ&-*gAr7%lDaJZuu;%Ec-v8}8l>R0tGQEe1g3-Yf!dxma zEE@?nUJ~>Bfrbtn)a+`|u=O76a>dP5c!tHHYyhJpXjP|A80WK3)!_I5!>ckCK3)N- zh?;lcQIg|v_fsqQXYDYTq4ud!^A1r;E?+HX<-DjMuF~ZSr1sKO9Oby*SGtRqLb@Kh z1BDbjg5qBBg&j*v1=crYAgCe1Q&|28?x!*^&@v+}znfMcv-&9pUAN_EpkwlzU|je% zo$au1Zy;+C**RdZEH*jGK!Ada#x}w&(YC=&l!VX!J)D^L15{=}3;5EsqHFpz@_@q) z(e!Fg@BqlRnawCL-z08?r;!Q3Q4e!XcXk9vmqGt7rBluC7r@O&L{~M<4-JC<*hMM^ z0R9{X?&rZL-Z;N*JXbBD+$)Pb8b6cjxeAoGIUC9kv|~yVjyBG+s3Hr!&2Jxs5BQQ# z&-+3HQZiP`&{t|DQf4U3nx0<$hdte!{5;YhiYv=}^dCI}DLf0tY+Hp5;d8RGPogAwIhK6bepN3I?flq& zuF0{qNj&{a@vgY}@giS*n@{q0f3+x9o~^*=G+XC0QbZF+(2woWkL}ykQO^A3iyuFI z^y8G5>X!qpkqo~;?cDx8D%tEY0=Dnc7=2X82<@vep{kn8GSN*qV z#WmzbuH-^&8ao-VT1vz_Sr8x6s0C^5JK2*Igr~s=avvo)kB<+JD&J(n=<46*i>F^s z2m!|YXK>UAhE{Z7Dp))Vz+M!lws1mLEwXDR=QpxUkjbK0!dorw%=W$i%=^_Tm>(_& zvu>kg9kEtR#ECIn5MBXBs$j^F8rkK&wkZ50VyLn?*%DktJABV0y4ad*J>NR~YrKyHRCac( z=%Bv?n!w=@j3{YgM55plhk$WIdGfAoA$^+uT^qwIx6&T`{e}Gf7wGR_;rFMX>jmok z)AY$>x^Ty$|1e4AcW`7kE&02sUsf&hc2*3>V-OgtZ?tTnVxFcuz1@QYrzKJYXvd80 zNr*(lq!Fq|s}VYA^Q%)J;RG(bor|ioRaR$jrqa4FjU<{uk6r#?K z-M6zbLl$ZYOSn6!@Vpv}^nJLGdyXBc|1s5S!wY~{tA5v18N{Paur z=QGn$pBx|1jd@+|bG3%HW<2DtHOIlD$HBL^}fkVEXY*{W<8g+{a zdTfWHW-;*^|5-sTZCDvjphd{cb33}Ys%tSlfyxr7 zYUYl5YCBL3UwxObq$MBkPV9QhB3r;mn9rso%2DzN#|L}CMBp#bK^lM`xaHYnwD6He-NjU z|CueW{g1bE|93vRqSPa4pndZx-&?_#gq%lEg9wcI_=4! z?lat;oHI6iH@Htd%bwp^%>5}&2lv%*E(GMc_n6d%JhwiF&ywc~b1cun{gbn!oqh~3 zC|A9q2-kfyA7J*y+YsE+U6Nzx*_x6=O;>>p0d=+yWO<|L%9bJXcsn zZMM>$E(Sx|lo_|!to%Hrcc}X>r}HRw4Rd?d?P0n_$K7?lK<-Foq^_Z(_FT^N#yG|j zmC&p)g}cm-Bld+AV9BrD3RqSi>)Co|7`u-6RPR>pVD$YAg(XAyM(>4&L6Voo4CC9l zqsI!y9a=@8QhWf*!B{O-Piyq0W5I^b>kU#fXOOC?TvONDo&M-7WHPE>^1siTRoMnx zShaqyfsE1+^%*rf7I|xlz{%w8Q6%S!8FJIiKvHq;?q}(#{)yAYrI#>S9CWLX~H94+JXZ zo--YefhAe8+H-q$`X#KSXRlcRe4|Nr4kFr9u-vodb3>-iZCmMh3UYJ)>l$7OBX}OC z16{!Bx)?bgDQ*E_wd{=5o|6>3T)W0 zzJnIwU><&}hx`l~<&YzgA`b15&%px(V#3xq}8BL+qgnS-2t0aOXPf#B2C0W2|NZv!Vue}l-q3w@9+QSbafJRPMmeqs)0Hs{#o=~N#WbH! zN#vrJ`o_>6dxogPv07_{YZlRSmg7qf3w1XB`J`OF|CeRT6y4!y&G}qfF5j`js4(`^ zktIXLJWKTz(>lUt*pXaluo7CpnJA*d&t{1qEWM+894^ag6v-8PVi_n#hej=ZUb!R( z@SC(&yL9!MjlB<%$Ucn!aE0yqgLtccovZ30Z>7KvX@>yQU1oYKX~g9?nJdCO#)e}C zgGci?LerI^r-tTEq>!t|fTynsYiaN6!A^fbaUKJlf^QNR<{aU4EG+aK)fl57vNkCl`#i=qNP@VgMmtG{@{$nQ(LqFUnokg{<(-^@s_1^w zk9k>e(26w1*OnZKD%Ujqw+_hBI*R$zxL58;7{-LBgPHF>9oD6T`VW7K- z4^z?SV@Hee5Bcm8`{g?yWyrx5{suG?wyYBk_nmFdTnz5u&EaA^m%L#q&`N&q)awFs zFp}R3sX6>e@KM{u?uF~*S+X`6ZKs`!OAYDQy^Spym<#{@pGUbA%P&(jJrg=*DLSmIB`F3Kv@vIapm(CJLr-gK&0Xek zU4D}mKMDR{w*%~}$?T*1Xdppr5=_*^cwrC=@@eX^&|0g@dh3)H?Vg==&(F3~`tkm6 zutO8XnbR2J-LiGBg2qMERK9cuAYHm~r7jE|`r*7Dv&iuTL4VllezB9|dgZpSnMhb| zUjWTvAt09yWH z-NT(;k0*2JlF$@3_m+63Nu`tC&hvu@RmulS%JQ&Ubi6#UcQ3nVy@QkENO)+hu>jj(9a;2+SslWFSEh*HgJ&i%qPp~0SxTo?dh&VKX$ zCn`3N@PgOP2G0q^SjvN`)ok5(l;QEMcs(9_&2G|g2GTyZj!EmoQk|e{ZoAL|jT>Wt zAMnr`4v@%&%-^%Mrs6qou~G4?3M{p{nfj+z06B$_&%#yN+ND5`26Q+^G*^JN2!zAD zNBvPzrVP0hbi5PyoE;ey?Efn&fS!BJhWmI9uBb*GMT^&4jGBH}-7=1qk#zoeo)*LG zdS;j+YQAjEcn14Nz3?P!3aPD71mP#zhojzN`|NfB&od1B!R2^y?V?SDW5_>G*6*Fw zn1ZLiUWLAKJQcYQ?^1A`_Z)>c{Uh1BK=3IK>S|5BRecr7Tg5|N_OS6@=gZ~7i8Hpa z7UJwx`7UwlY*hf{;`c3$!Z&(<7rEqzdarlOcE;E-ji(SP3X!|RmehS6&lb{2OiyHP z^2uVQDb65p&SAItqa))78*u8PZ^GpeX7rfOj*VkeR)E{ca3b^0gr`2DcTj=SP3T76 z8$A`2Fvs00_&SMV_OezmJHF4=ChbD>R`ric>FUNzI>Zf3Y`r9gtwQ9J8|*N@EkT;=WSJ89tAk;dSra`# z-d=fVG)NFV*4J|@U^|hHGNG|4#2h|Qq)?bk7b?@?LNe*`T9!-LP_0T4u@4J0m6P+Y zv*~vw90OV`8e2QAzx;39+d*eBU7yyeE}#*K`PvlS)|t4>CtC83+pT0{@9V+IDM3Dr zk#T)EUJe+Ke4)n>Wil!>`KHzwW|PTakzY2IIy*Vqd2z72?a;&}E=;CC&fp6O79`7> z<}Xz2pX@f&gnb5X*406(m7NA zmbOpH--NOK`mEti5ZabkWg#auvqr)*RZ*DKYvf;cc*YjIarL*zvXPqbMCyJpPm2rjs z(0K%f1jCmfXvQBWqPWE!KvO}Zz}j6kCz%&3j2|HSZ12VZ#0boYQe!>lm# zhP;PUJDIQyX}P`-qJx)NrKOv3?E@O=i&o!*Z}*W(K_4X_nb-L!*)rzBEumw8KYF;U z%-_xy{L|%Vl3Wx0h7W%M*U(NNO~J3-({u9+G5Gzjn`|*=<5`$#eDlR09=X>|BA|Ot zqU4aBAkjkuVOz&sXRiOB@jJDe>&O~SzR;5L2W}Z;u==JfzAM); zJ_h#@8^XReit4~yW#uLBo0oY>8*1;gm7s@g$4Z%SscDW8D&Mw~gGdxnOtKQR|TI7uKay`CA+8h)Bz<}ZGh`8Bx>eg?l_!@Nz- zr#@;wtLTav&uGPESlg6ifzUt%Je71QB)?#^SA74hCjB&_Oa}&})bh2(SU5o}#Npf7 z__mcCua53z!>HAHEHen8OxNq4ZNYN-oKmNF`2ph`WyDL}&c1tQbt7N3Q-d$5u$83r! zTt`ucpbLa9-)S|DEVXJI%}dXB8QcmG2)eP;JNDf&k5H?j$UIlnWWb^t=jqI zG7Ocf*h*ypcbqIc(uiIZ4axnl2LD+xmIJ0z7*6o!;`{!~kp=v!T+o)C?ABuGFr{kC z-z^=S1KwgMiwGjCnpoNV-Op}9{Kc4ff&C3{^#0sCBZ!#Y+5FvNeD!vjK7RD+XX*YT z2MK<5x%?inf%j)6j1oR<3xm-+Er0sq7o)y)y&=P$xG~f4&e>7mc)U%0JtH9BgJI4- zpLdk|9b$LaTf>w-Br~-=MQc=HjI?MN!bpKFV-P3h2WRq>D__qs(ix-|M=he{y#7@; z2wuDPTswAKnQl=g+#o&Dxx6mkIMqV*5DwSA+2x!N4IiTeT3vP_Cm5~*Qp556@w_OF zV>(s&WrXo(E*VWJa+bk@2{}=i2qoD?q9BZP^n}qAMDN zPtN-XhkJ*I8u12~HC)Zz;>%e2^x*KM-<9ypu(Z3ym;FYy*L&XQ1KuI6MmPNpLl5FG z>G!@KV4|F$CNJhj1=4Bat3`zw>8hrNmP5LrFN_f4j&gDgQ(74X-=!NP*h4M{H`m!_ z`n#v;7j+M%-eF6%&pSNsDmpa=J8q{(Rob3)rlX_swOG+QR9i+lFq^XBZ53el4z(o~ z^mz$F^Kw!QBz_$Q7{2?}>7bl`JDq($P4@nL>?I`LU)3wJ8Js^xq`c>eWooQAwzkq2 zCw&+cwpr|*{`xjpUXn%(52dyMOR&cKIHOz`{Elvm+wu#Ja%#y`$a$H_vA}>6XlXg}aPVvAjJ^k&i% zH=Z*!I+ad&Esy~iBNd@i(Miq%$C{IZp7{yjo?^So#??Vzig|gHp9MaQ7ESe6S31%h1U7NI*#6u*5jOIghx^OB= zx3<#mtJ9OSz8O6VBxe65a&yv2?Wtw+TjYGi1CPbUTQwqh2fNhK_|;0>S0ZWO# zXnW{J(CYq0PRV3pZwPsPD=5b)-XL8c`h*>Go8Edknw86jY9cb;^2#9%?Rq>_&@0bx zhmavT9B>>5C@5ck)Ppsx5_~NA`SLyt4LWr_M(D4C;{!0a99wd55+wDY0;j$*CA6KG6Eo260*7}{+QlYGz09#0{N zzpJZ^JDdx1mih)>BrV=fN4I7x@oz%Q2qE3I&1Q1s@>;yS0RbqxQmZCT%qW48Oauac z8@7isKx_f|YxuT(!fA#9O!-|v}nSjF%;P)llt)NVl3MtQV=VXy0^vg;~f4-L%Kpn$z}$tK;E zh}Vi(T?|Q*YgIl`k-kEmzxs*p{63k1TdFJUZQA~07L6@iG_%T~RKKkZsX?KphXg z;fuO9RzpnUi;U8zgV)gvCRYFp&xUuvzT@;^K)`6IC!+>LbG%&GSC6^M$okVtcJm?U zOiws&CyXE?^|{Cw=ySOq7n*nK;`Y@aP&7FNTFJ@te)sqsWD#R#SXW1s@ih%LLXT5<$?kIUB4peh+g?T020DTA~C-KzaFcJ;Sq*Ze*-8ecp?LB$Cc$|Lz z8NwT;`=`hiQdbgAa>@|uC|=J^@PE==5w%lYuoxBqJ1?)%PP7 zRFF0*mod%oO9>t5=)h`p;yatRGr?z)ms|$L`(pNaFLnO3~d+vFVbF=IB|GW&{ z(W-um*}oGyamj6R3EMSoK$2`n7m=+_-D89bFWsAtF<9sceu>YZe|b;^mx@kxP3cna zF}u<#&oGN^|)>(b9t@C&VA% zU{+cD`#Rn5VW?Z_PP&mzh*1L1lCAU=Qd_B_4Zn}ljZ4zZHxbBJ=|Ks5{~+B!nE-Aa zrW+n(l)%B^;)`^HT`urtjKq;@mynmuS-u^~l9MTfW^+U#}H!;ydM(?$z7^#Xh^vrPgs( zYNywRo^GrmuE3!)(_N6VU@kZ{NaPuRM^BYNrB(r#-s3P!Yl&?|Va_;`)5mA?G3E~y z7j@c^E*906s)4TDxP*zKTdIHcz?kfMP20?pw6y)2cJs=ehGh2j46? zfw_C-91rX^qKrx<0v1#sarCuk=?s(7Mw1Cn^W^yC$gMky?=uRahN@yP#PJ@e6baD{ zcA?TSY#S6*yO|vK2T#8Ed~k4b+C779YK}9nD5zrhlU{oJ#pkXJ>^Qtb=~&_gEwFR8 z`xWehMvjroM}x1v9y~wm?))j;SmakQo8^1Y#blf<7BCHs9fps!gBPb*1$L9=7(;Vm4;KnrvErD<;`)a>y}qto zn=^!mI`Vw}eDnTiVUKdFIBWq%WdFd7IxSr02B_(8@6Ww{_h_)Y1KQ(8kaUov=K!9d zdC}{z)L>q@xcOetPJi!tx`F38^>&PqgPg3Qsy83*@e7scx@di~=aIA9b2rB+SX!Usn$p5v}H9>rUfE#gZEoQk~} zJS@6>cyRnDtxTwxzS+ZLtyU^Br@MFb)t&)Na=gCoe(!A890x2m(#@|Aj-NcPS>NA} zr%xUa>?(f+$LuRC*rn|q^lJ_*DDj+4U-fogcA?zh@cG%!u93`C81(*kP-2sMvfh`R z9pnDn<OqhT_d8eF#MqI}V`CUOp-Nox&?6AutM?@g(fEqo zK-F6DJFcGeTY_TByjay|t)@iNE8&?2Ij4CEpFKtiXedJO0TO&Ik8%+nzKlAq!u=+4HNulo~Y&cb{3?wjd_cFo&OpW?XY zTa`!w$!Qa%JrlRIKpwJDmSU}HA{4`*I5t$q=!Fl6q0%t78O96vD32O_v>J)mL)T9G z6=+q1&p+dE1l1|&9;;Zwq3JZNLS@?`eT=T$C!7Qk1a5jvhEB^gMM~Ga1SM;z?cJjZ zZXq{hb2?3ISJ1QyO?^h=PEF$r)i;@UT$|qVSRf5NelD*4nZQo2Ze_n}y5pc#@k}+( zxuP=ZFg@(h?K}q>_`-f7XTwEdtrnVn3kHKyC4cbv=j}fV4#Iqr4Y9v!DS(4)UJ_bE z-8IYN>kMf=t5+7f*lubY;LK=SdEKXO3H8Bur80u76Y1#7@1u~3Oz_*!-fK(FD|LY?Zf?nlbvc2{4m+XqW7sMqI9R_ z$8P^DQ$@`PBa(373!)7gvE!^`2zw>JOIKYTSFd%dRBZcEb_SXx)di1UJXGf>NJoG!pLIbMHPhP~2REH*c7>o*W0pmn*XF2SCxg_a=NtyBUGHXu zmo!7?Y0|ezuV?vXY1!@b1zZx{b8Qp_qlR|zvurLjTSC>E!L)~YA)vR#eM%e}SG{L| z)`XQff3`M*h1>{~DziYeKR82Aj*hx%x7Vjg4$_W$e?EGCa@b9J9^b#R3NYcrv^giV%Q5EG(DIMnd&r@JXFWHP4shW$qJq+#-3KaR4M?Nc%9M`?O=i_-rD+MzIN9 z^gWw0?$V$}VBmk?SeT$lr@U=DcY=lGh3SL?P=35tJ|&FfTZV+l8S(gb(}Xw&aK1sJ z>lj1u2oHxIFHht!fnI)IYvgw5N)cM~~AD7=LP9+m6<&2=f_c*v8{T68uAO2&UNl54MmsBR8JNYn3eau0 z4z%rMHtE2}>bMAggugcS^tI8J1^~fM8BTbrQEZ#QbSD;}IKo>1Z}m9EHMoI-Jg3X- zwyHgcXIn~GU`hXEcbh$4))Z>Ms4dQ`ae_Uer4I)qoj4Sdp(wUQH5lqNYP2ul6HIIh zC2HGdw4?0>_TEYQ4mNSx+^P$BtI5+@Mb6*$ZF%tS@l^HSqJpbt4+yD=8a1$RO z+T8M+`pnD+)(P}oUl-=}O;)0;h~xag2S2QG(1Tq}Q1A&E?i_V_l$<&()7?>Yw48s_ z%_c$b!7WO~bqbAF;;NWuK`U@4mbh8qp}^8B;)?{Y?}|I)=sj59tl&63kIU{(<4xMkxQlVkWk|iLfD}zg^c?%P%Cw@f#8X z0xIh-@@c*R{o#~M3h5!7-&WyF!Zx z!*-Gi&LcvZNy9wId;e;-m|@zaz_a#oMZzPF2WMyz#x1_c-bKbdyf$_i{XX;`8+Zxd z+C%~9m`>6BL1U6HD zp(L~rCt;%NU2YN#)WLL^%~cv3l22atU}FtIeoWkmHarGbTM)E1qxq&rkFen&M<%zr zVPtbnH)^>K!idUWe)`AF7426-Uzg_ns);6dbX2~LJG(IAj$&9AQPmpC$kow&@z7(N zpNt$GPbh>&NN!ua;8_H8c{w3uM7*uq$BCspE=Gc*DY#w>uz^t&vM^ScC9T51cC0Rq zW@tQJOKY{OJ}2jGE(~eqki=@KNgx+AeRV1ND?S@T0Am&47fgT zjIMy}x=;^YDCx};;fk-+iRJdA<4+$wdGv@naK+$4;#p#}J6{si<-y*;{(eI{6dd-T zW;~^h#W-^29F8S6@!WNY9*+A-e1|*zFcx`ot9LMevvQAVEXEef)ip)N85QdZZK}WX zg21LK%`mNqUgmi!;k-0h2$&WoLPQQanJUsi$A7CRz*@&-)$PLHCO4dee%nyJqMuzE zxVVvdWQ|p-&+BT&&icMb*e>9cxML^cSyO1sMx{iPB zP5Qe1<}ah``FD$AdHdJb*~M`0ay&UYo}CuGetGi}3$*8x@(OlvB0Gc&@K1YGw%KR^ zzsW@pOZ|;LxvdE!^1IXNe2|`epa;XiKxI*g@ke7BKazKr8R)L$F0d!&&7C#xEYKdc zrEzfFs=4f?H*z9!2$- zxt1-fBw59LxP}flth-*%$!qk32enGfC1SF%BzNsLW|S~HIq1-yS$RZk^NGfHt&KXg zGg{sY3Z7>4L3dzwQpOK-KHz0;ro=`}kaJk@7SfH=_V&cqHLzIR) zzKK78(#vp=uD<0xWn+~o|9Q21X3cY|&vb$_t2RO$(MQBA<*^DS6kn7N9tBY6mafc?fW8r!cFjgt4 zG$T%VZMj>bp^KL7+h#ErqiKvJE@2P$+-&IS^|%0uX-mPG!sYbI0{pF z56Qe#ix>GVG$8gmo6t)HqBQCD7nh>}g82-t^5q~aZ?RvF@=DfzPzHvnu8b%0!qRm1 z`!FRAx+=ruOb;;lVH)se$%OLL5}&C??orH(M{<}#X=%vu<{T!8vGlErMJYVlDCUn` zIu!Fa%qQj8Sc=$BQ*9<{MNWrH2c8>Q8)HkcpGW`TBgcFQ>>ph_gecAt_+}qIu|QQ=pIJ3^$O6`smS1M+dS6mvj%5Ah)1jrbgy4 zqB#WRe)W{7%9R#xR4}jslyVIQXkbfvzP~p(>mHu$4$fZgBoQ^{T49=%g&7rT{D}3% z?-IouYr)#&ossl_jm_pd=w@1suV_Id+}3tHG$HerL|A6R^@`B!7M=^%bK{c&0?&Lk zfS#GJe%1NpMa|MOt+PJj!FVvt`#$Sp^*S^VAodH;w;RspV;?GbL(Uma5N4hqyTdF> z1xKz&?!IToDzm750!-@Q9V*4#)*XIf8b~;b-i{V^cP5dS-+?Vgl7rotNQPncH{1|w?R>i5qJ z=VEIp*x;F4UC)l2&n-1t>|K>sm#mElPC~yLX*QP9nw+YY_pw1Y-a3HzkK?7&0Y~E- z2~5o~$Sy&RBthu&$#|*%daJo(LE!iRl~i2}oflaVj@Y9Jk-_+rn;D9xmO)Rw=7A@f zunu6aN%szR4o_ZmUnR1^1XdslzG7ym=weID2gr-IkVyPB)%6adlw47=?CI?Ld_noU z9O^VU%VCjwP6MY1xGSwBuY#M`P{@GJXxtpGY%4LjB4h@E@(2T3*hiS1t-2jg|^w{Kdf(*+A8ut>HOvS$g`7if)k3vdg<~t3D zw&JBnxKu1rZTq(*tmAR2%&`NbmpDqM!E!c$20^h}4iIR7Ab4WpSp?{zl}EMUiw;mV z`F1;9GCLnL(q3Y0jp{j^l?&SBm}xLwHgdHQeil`zJ_wVdW>YOnTbUzCgDL0>UY4v; zIv!i6VoIZVZDC{@qLeaLwx;VEjLHHyz7uF&QWZY>h(>8dH23aNVHTkWybqp>`sX6g zCQ{YLzt{f`sQ*y6mlOCwX4F?6kW86x1`i00TgG%;mkX!yS7=48Adix1HL8&y zq$#D$jwcSA#N58u^bKX*TC0k1BdR^Q-gZn_9u&nJ2N|xe7r+H_6E!yM#%Ch(?r(f1 zHBoCfuYr4C_wdctGzyI1wBxxR*vHm0GIp@O-&9D`-kVE+9&w!|5s*WOs;5f;1Fu$= z^uB&6Y!57k$#LH6gb}@vIb^iubh)P_3O3yG+^$-rki3*_xB!RYXuL=S?u10~`CCP- z4DRxIVc5lkGm&E>FiyVk2ea09^n^}glLHe)l&gd>k`p1?8hJg&VvASq7Oukjc=-Nb zruM<6yt|nR*3mccXtWQFB5>nuJgPGmxFtvh62HYsyG<&Z*ww8d#G)5fOEd()`JCZ& z$YDTekCz}aVb>K|Em3*4a>w<`#HcIYz09oH_{Qe~jmDRJ*e;8tcGo6s6pAeIhX}}G z%K2JTf$>Ac>oglXXO!d_m)^t+t8wkT5jBhS%j(EzHBAd6se843fc?hwQ*^$i|pz; zqjwzOOLj~<(1X{3lA_Cef~gtBGO6ZO=$+{=|CeWV@$Py$y8UF1WL~YrQm-e1CLeL- zT@*#bo$2J-8Lssr>hyt*bB+EvcL9Ipw}u5xE@1R1Csf+fFg@*c_YASn2OEwvr|$HQ z^`s&|k_!ZJNGK4Y=DKT>5U~n-HUqfeU|B+DBcv%!$w(O55` zQ!TahHJ0FHm?X4{D7}GYK=aTHN@iEbsVH1{<4HQTd?^by4I9LyYXLx@l=7VO^57{2 z-1?!Ty++|jUeU@yx~OXnzLhtTnY0sJH=O3QqiZRyjgw3tQl%u9&UqMc)0(^MXRL$= za$j5a)m*Y|>FwAm2Kq>t+#0zvEqpSRH8BIkG}HuMF- zR?1dPF^7)k8wVGD&C^RXt)_qR=LP2aq7|X7!rutxH#oegt1yu$hgm*10i%@@ulQ74 zx4c8>##N>D`OptGNo`G!b_JZO$&uD=pMlW{fhl~A`S)nk6CFmi-AOGn%bFzcS%?;? z;29vK&YisMiR4VFACzWH=92TBou|sX;;R^gj!9%<}n(Wj~u zc6=Fk6>J)zB(mHE#$2=jSPB)KY4nBsJay1Ii4UgI`7ui6PZbH~gj72#DcM5>nJPAp zNIo2qUx!x}wnG|K5UCJ1$t|tmtcjZR0hHRJ1?+LFEO-W@s#JkfQ1qTnEbcYNbh+b<$=3Yg4IkFB zd@)`kxnm`o@2)0_vLQzJp7lecI9o%jtw>?(G_1?AiP0md-gsCwOc+x+!kSF425&Pw zDQB~9%Q-#K0RPv=rPY~N8VkqUuc9x8K0I^7dGb~l;Gd}gcyyE6JrjfDX_B-hBd#oH zB;Wt9lC(oy=M&g>mhitQO$g)+dwnnfL(`+6JGwgsuuv4Y89Izzcpb)|h1Q}b%+198 zfk3x5E077)yy45qN#QM&5=mnZG-Lc&-54%3(9zkF=U%YMlmZeF zTQ8;WQ4SzxCKGe13oUl`?Msj;NyNrI$8+;tb6BGq^9HWo1#D6n5@5n2G$#N7tVPQa zp!QB8?n_VC<*nWLfxOnvqHTcNkk7*Z#kUTiiu`BA*N7->eEuE|XeaA;&#Qn_GgG+k>g1dWgms;1}Ul@_Ez&9eeA zSd!VB+cjc{t2JEASfvk!OX5E)gsyqG&3ZDmkU{0|CbvPHAleo2)F*}LbeEeUWl_(1 z*eX8#G>R?8YmcLAa$xwO@Ul})dasScs?sGV1~mVgjC2u&^T?f8qacco%pKpu0g>)z zlS#Udwr)2CeTQacuu1*?wv~KWf>Q3xs9|qBJn0|I-=CYm|IS#iJa!KopZxDSd><8t zn9!iaZ$fY+PQJlE$XsgeV;Uk9DQK%N)97U7EvuM8u3TLs@#(E+$w*>fFs_a@0M72O zWD$8YGKwp<6Vp5=h=Iz*RJxaLJlf%>XU>T5{!KEQ0Bra1EftyC`;Kk zQTJBkgB+<_ZCxU7RE&}1*!3EQ#n?i1j5pi7E=dEnixV-3MEjRw8+rXkTf_=C=e%QEg_Jt4NYT0|KIta zd*6MVa5_Ka@7;60bIy0Z{X6II%uAm4P78m}zs9m|16+84WhwlA_y$Y=-S7&_dKuu2 zfUgAH0eCy$5x}j0uL0Z)_y)k603QRCp}%S1=Kx;}_+``o9l)0WUWbpD1HJ+fO;$hP zO93YUZNPhPBHr3fod2KR#PuFG-@kJc=lvewiva)rCa(8F5V;TV_E&Pgg;$dPWxzdv zuLHar@I&VNhp*&1dv3O@?SSKe&jYLg{y3m_GwECd>;Zg>X@9rD`@qfQ%dZ;v>6^Lk zR{-%p>o0ERetK@PtSx}MZ{heew~&wb-@>}VG;981a5MQgx|#brY5Gf>Nyh```)ADeI}QBR&7AjB zrvGUJziQh5(#(Io&3(Mo=05h=lRi z3+Fwth5RgUq5i&c3;Fr>Eu`}UTWAlT*h0Pey)Bf(Uu_|uZr#dpcWov9wE2F`R?6Qu z?QaI$3;5_((*N{U>ertcylc0Su1(v>hXa6j0v_8&Ic#hr{v+GCzxQn;U7y@W{(r&X zJ+sa5&){9Zo%3zl&UO2@lkTbQ-1j2jFyK!EJ^=X9?X;tvP|klO_`TG}{eZj0K6=T= zH}#V4clDC4-{|G~pY7#7zGUG4>Lov4w1fI)?;u@Acd-9H1H&D(r-ye???1AG{QhqS z{>=`qf74FNd15E`b;-bBC+B}X;7bs2n?Bagjw~KQ7*e;Iyjv4ogKI5PI$frsl_4R>1^5>`eNY`5de+=-weVq4~`pDl; z0`3R=tv<@{`)2%gchC>scn9@%><;oH0^BL~W8f18?;CeeelOomx=!pSzvA5-|IXd? zPoLdQIey3By{Mo3F7~ru_0xa7sh|Gl!>0Y2e)9F&0{6eQKzW@hQ2vzy`Tf%c^6Tdc z)XQHi&`y36upo9_AU|#xpuTJ#;J)__kS}8c9CwdtuMJR7)(5!G+Xl#=51RH*82AM< z?oZ9QYxZ!x7w%zvIAq|lJzVGRJ=Dh~z!!+0-$VJm0q~H-wLPTsvwLXAe_+Oaa}Vw1 z?+mx9ko}8;c#I5a^7#4_Wy0Ze`1LGciRxh6%9N+ zL_hVKA?n-45c&7sA?o)>hq#X?hA8*X3{hXdHAKC*4gY!GwU#wIO!+MA<+_!<#$NVP z&X4Zp`2V<<^nYzH*MD{|>3-2Zj^DhG>kpgn6Z<&d`F+&Wa3A^cj(wc(SN55_!+d{v zAJ==9w{Wk2VA0&q~|zMpx+bqDx;?f~`hXAV%W-+qAl z@QDMI|7Q+x{O_6eZ<_YMIzW5;!2$C5+JoHB?FUKEzJt`W69+l(rGvD;hYnI7KYWmS z@West-M0=>4_*$ZQ$4(06^J|5ya{voda&kr$C2}!TZptiRY&M4@Wug_eQCwFFe9|b{ye;_8sAR(?__k`;TxRuRB7$ zeg6^C_Xz{PX!`%=2>HC}DBF(#9+14?DA)a$27cry_xZV_l;fWs<-9K+qh9SEBi?~A z@@Zy_^H#^`ci%BaIsMic>Hh8*_xJ1=_335f9Jh6x`#Unu{PRBZ{g!d+=`W9yZ=W7F zetMkqTswi-F8*nP_H}83?QfW%p1ga4^#1z^lQ&Fo-e)E#|L;$5e>YB&pF@+}&(tLO z{_08U`A-5K6uShxEdG6xar9MFocGcc_0XH5A9~jm=ljo7^kaWC#eH6TjCQ&C827c; zz&X?I9pgN2I7T`jKSnyQ9OM3EqOs zZy%=||Mocfzx@RL=`i4=#E%o~fA9qT%;P6G-&ao1Z@hS#dBw}7NpEqQdOSPLcv70C zojy9vc>H+-e>ly!Gjx*c9y&=rPoE@xmrl~Zub!m*UJrPk@DUKIYW>1V`mZmUao;$} zeB#-Yr0>pCq-*IE_3q(Q+{edH(XW2(6zO~EY3k$bY4Y*4r>Sr6H{V}6P5xhdhWqG0 zL;0US!~Qp$@83AXb^qAly<~=VH8w-OEzgiY?>6w)X1M=P&rqJ9pD}*J;9oyWKJA~S zoR(+FhqYPy`M1t;-|v~FUi{lx^5gRc?~Ak4kH47ZdOtqL`RzIC*XSJaUNy&Y;T-9I z-5lld>jpk)@P6CCubcK~=V-q@2tqI!>*l-Je!;-%-CTG5ZtDA6?&iKeayR+)^}9LW zOU_a+?>I}kj-RF9TRcm?Bxh+iKX=yTqi4C_kDaAo{@t_O*Pobie{bLo^K9QbPdhj| z&v9y={M#__p?S*b9rN7(Cjm#rzXD!kajevb|J7>#doTX|6N|F>FS4%0xLm*3;DfTR z_)hV+!V@`15M2@fYSGT*?~H+O6}ymFgnws678ZG;O#hF8pg+j1@h`-#&F?o^%m?I8 z?BF5cwa8U`ooT-$@l#@BZjQ(C@1IFNWWKM*8voe*zF+*B#r*wGOxqVFrsl@~PVV=A z5cyd2$LZg@MQ1JA?x<;#I_r-t+KKR9W!Uy4t`zj=#xpGXcQ`eji+zhv+}W8jlk=fBSzc#p;WQvNROBXTeD~npO%`y;C(1J@BfsXLF`Fv#I)Tfd71hBQ!R8nBR(bfeZivry7>3+ zOj}*zs?;79eVhDE8aOUBkoo-s1Ao0`jlUNEX3@X>w)jx-6XHX~&xlP+J|aHJVr?n* zeJVHp*DU&m-<7;watMpI`T^5_+@j6@viW|ef#UB!ZqZMCPHa;063H!1|NoIVC@~cO z{#9rp|C-+;7IVW{^Zm18|58H%=h|!NAAVoX z9OS%4e2~Rl?`sDC%aR{TPS(Od$sgWkF@Ji@qMw$SH6wMb%c=jZJ z5|aXpxr+G5Rf#>42ju4eX3KhiF6RW2Q{~zu=eiDi_=@;Ci@xvs60a=gClX^H6~t@k zFTW?T)uIm+|NO6Wb2$b|9Q}ehoBf#7*cM~VhsB>u?P!^pE_IaDc4plB4ScoKCl>P* z9qTOS=n|*@4gUQP$-5;6%ejfIAX(1{{D_jlUyEAeuBf7YJ1#j4~vMQI2Zm)%vzcCqA|G?3;D z0fP&LngWvV*dyl0sBWKkE53@8&?)M*rRg3gjNHI48ghEef;hDnJD9y}2ld6E?4Y$M z$j2Su3Ef4s#uyUmwMb{tZvX4`^jxzPPCi#W!LlUl4FOCDpLWY zxa|6v@w6MonQFSeeO|V+E9$#o?@|Ln65FM98yc(zVOKAo{Q>S;v)b2?#6g<%lFD&+Suh257$hMMsW?)0>DCuCs*p_t8gM#W;N6|s|= zild@#oskXr8HeqHeK`z(R8tk$VQD=U<%qRRw1#u8bAC-`!4bT&3Vraxu(zZ#>DieT z_GDeOPvN9)TGXP0FD~1)pqzMSOv>lQhGbjYg@THccLLgk@`_W2A_*BI* z>(JC=?K+{ApMB@>#r=CTPo`;_g)qgeG6rPgo=x<=YMSUCYmPch z_qIFBJ(`*Jaq++@zhG?8mfr}vXtOOCB zbz~>-z7?HGi!!z~fs}a(@-mOH+Em8#4O!~XZb8EoTEIcRt)Rr^ev^F&5%cSQtk#Tu zxqe=Yis+V%TIFjw?aBo)bv$=MH`gV7*Et^OU09ZYr1f795HC}5V0fj(g=3QZSW z^Gq!$4INSta1C8yLz1mUG8&daooB)t)Sk7Zq=BiqjxEpuqt#o>TGMnjY9O}Sb=RKU zn0!mWYxoeq9kF%A?@Q&KX;>JrE+yHXJC2!5aWmBJ^M^THtYsVsWS2zgK|~|;U~RBJk&qDK zR|sczzPEe+lZERs?|2|vHC@kxS(0Fh-8b(*k%wLv7!bv@hoIqI(#xLq*r6pL| zmzP}+T6H;ebq12wY>R0kgL$-z(Gr20S=z=g!c;EC!No;pH5VmbMs>C5=t9D@Qd@|R zZ1|$4wTLh+B*da3iykTh{HVi&tvViah4vA-DO)k*#3b+=h*0QS-E)MMPC18{=AO;; zr3q;#yeL4*V3HTaWoDe3;B;Q8W%bU>rgG0s4Z7;CIln<25}P44Rdp_AHGvtHtT1M z8r)UXXZo16%U*QV^dsa=oaZ8OVlvZw4s1b6Vi@hL#i7zEiqX<+$_7s74Tu4y;&MF? z4%eewM2e0w1zf^Z&RSj47*Pt4xLCCV1h^$HxZK_&O2RI2;4n%L8IW%^O|5I|tSM!2 z+RXDgzj5LqsY(_@%I=abrDDr%%J-2ki*Jh3DBjB8^ss{ITlN{Dj+e4WCn6Ss#DVix z&1DK2qFiyMS|6LA>Ch-X&Jxz9JM}we={;TA@wG*|+^o83{%Ra~NV`@5iK;o)SUf@r zX|oM)8-#}=08$4FmS1GBeAxTLz8|QGW@5CZ&h8Q`}GbcZ6)8|W4lj>}Jx?IR^qDrox z#K=PI;ep}dfx8BKSb`SLL>0GO7)K#mSO|(zkrqcC0wnt*qFi_PEM=LeudIMm~C^$s9zX+B4@Rq4EmHAW1ptt?SR|@STTj{yePz$}hy*6|guX3X-xb}uh z@00IwJQwTxAfG2vjlra(mA+0l%2&bRm2y3}@`w|ws+^HmL$%VEZyQaU+OC%8LML7g zLYLe}^RsWz%h0BMCa43)YJug*M=%9xdf6MW__(}L>DC@x3Q<5OhRbM<3h z8(MK{=4#n@YAR(V%|Z|HWsMTTgsaKPn%qd3@2C9bWvye^f=XfsTHdj%+2kigNwS;9 zHZ*smBi`}QdFrvMGIxeEZiF-`0mB1HnkXK(nR7jDn98uY6|-^gJX@{=h_h-Xx$+R~ zRJ?#|?w;KiSs-U~YjVC@5z3%9CAAWZCi~JThEPq?Ee5%1Rr58p=3jc#+X1t26@69A z=IiJmftp=Ox8T)-a`@Df%2%xy(oJ~h>cK_;KPG(REu&-PkKDZGWebo?T1( zM(U6q91U1)xSH^mT4e(9Th${&Y{e)C%d3!VoVgan3z9-Ktp|ENt@0Vk4NJ=t4s!{C zNB5DcIkad6MM1jl&N|q6zAngZCe{@*)*&fLLy{S(t}@h#s(N($*!-AGozqRygxkbN zv!qQ_o5il6`Wwo$!6a&`o^D?JaB6knWCKUbQ@m}nw&Z)bVyjrBE%h_@3PLKWHr`w1 zCNjI#4XI{xHtbhF`!W~xIT6@8SYS7PPlwJDSQ$Dc(Vm*fL@v7%KZsPnjYJ4Jcp7+< zObZgu2ztDXx+G^nWe^Wt@pEp~$yA!FfX}`wIVN%~VWS)sLuysW`s#y^_C{ZQ@I7Qf zP{Qh1yb&zYezEPEoPbnUowVDzdT)=lOZ)+N9S7!0yglN#2mD=rBXbM%C+ARE2nLBk z6z96^$V;v~Vg{$!Reen^n{H}e4H2fATXl*D20eRJw%xv}TKj zLrKcaQI*`_yYQCT6~3k2kM^U&J(Kyla&<2qS03@iSdm%y4erV1JBbOjmZ(~g-R4_! zDNAx}7yoE9#ON-jEVEI{;E7a;wt@8n&83*J?uhN9c4;x4+)iYw0qum;K* zlfXEpWXA}Xe%6&&0^(#!;(pRpTvTTks?Hp)MGM@GiV=ccayF>b!U-fQ`}Yf_?ADs%xivjAcIDyeiLvbI zK_+QYcyM_}ygQtqN=;}(9wGQ@ppnX$X9&!vtbFyCg$F5w&2t3kYMKWp{r2jLBbpG? zO{aNN=Seyyu}!EoVCZ0;tzgqsil*j-7 zzEzl|PNy8k&X{E?#;Rl^J+T4Cnr5N=Dhp}3v5Dr3gsLjVn+;5)d$JRHx25!mP>)F0 zjGTsNGYd!}Dz$)Lb!*vaS>q*xYe^dFn3oJ?D_0=$LBobZ7LjibO<>})2BaXal}aV4 zdV$t8Q|d=1O~iDoxlnFA`Ez>epo<}} zBZNo@MlLK>PCNQlx0ioK0c)gm$X=M}n( zCvBPBnvT@$q?tV&!g?${qw6vpag1p&S0W+oUPV|F|s=mFjrCtQN z2@4dfQH!Ag6QDxfNS|KRbxm$gef0pozDV17MkN;t8X*@JCjd=U@KK`CAsp5WQI*T+^oD-uE3Gk8Mfl55^@w6+XeZE-8dl;#=IR~vlJVZ2iwp}MMHa8&ivj?DdtOobiF=lzqFKNX(I zSrIE|Q^z<>XbF$x-R8r2bCMWUJ*}*6(-78(=7=j E1C$o6cJ%E^ClUY%nVaVBH&uq|E{{W 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 literal 0 Hc-jL100001 diff --git a/binutils/po/it.gmo b/binutils/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6e01870eaa0e34c2950772eaa5f7f260492c7a5d GIT binary patch literal 192727 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 literal 0 Hc-jL100001 diff --git a/binutils/po/ja.gmo b/binutils/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0f4f1e22c38c8201b62e848e71e90df31b4f77b8 GIT binary patch literal 205175 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

7S~OFJY23NeoZ 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 literal 0 Hc-jL100001 diff --git a/binutils/po/ru.gmo b/binutils/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d1e39e87762d0be18eef5c2110082c5525ceaed4 GIT binary patch literal 235992 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

buH8Jo~1vsJ5B`dVG_4LEFnsSh=( zbs}k+_^Do`UM`NKpmOU$$SBn3X6}hIJMQ5xz1_nv@ZO`nYa8$V+L7j418Fi=5xJ2Z z&!^qgyRbTZkW_oiR{IdPPVf2NoV*u%t3UM;D!BB#MXUFHdzNd|cL*pliJ2?8Cd!+- zIUXe`Mia%q;;muwdNs|?OsA{BRnzmza=`oAr3lV)d)(XNXb3!&+8Ujvs8T1OLQxC; zsM1i9@z6`uZMB_j%rj?4L2t>%B6ESeK;PL;D@d}aL~mTtgqutuiBWv2yh8#?C!2cR zT6PUlU@CBn;d^%RL_LDwzbB^^s?SP01HS&PeaS%K@YnXzd`i{#qJ6)AY|P`2=khC# z5!xLuN~`kux%p0=(OCL0Q?JGceK9@= ziGQPM6fzUOqad$vf&`-ggWoMoYtyd0_v%)^yg)YQhZwLG8i?3AwVwK_;BBoa@LPZZ z9|8>c3}9+;L8Mon>Pj2)|Adg=R|JKky7v>Qb_g?le}o{)>sW4q9aRD)>J}c#7c0EF z`Xs&jv;%**!Sk_)&YEvjCL7NCEcn8mR0MYcm}1(O>^aSn$e|V4jcUC}?8hY~rFHI{ zq-wj6a`~qzI1_WwN=mr~U5T$Wl<267!)CGNk$8i-Euf^B^7!FB2Twa%-ca_ZDD(59 z>MP&EklU)=ko0^+NBq?Y2b~uZ zk2KuUf6Ybx)JQG0nyc;GqEzQnY75DN)h`W{jE;USWR>QVVHhRL(>{jnmstJ>O*nhh zsh_hUTjZBu)KAoiIiwl$Zt;y%?;jgPJ>{WPD}U4=Ur_C4cDOv>0+&obzu3t|w<2(h zX8x~G;fwH|@4zQm^1PomzXRevL^Wa>trDc}DB0|4%~$U-L<g*$@1o zdP}K#4Wbjru1uDWtLEWPHG-a+;GD!v3QXRp_~ z{Z@@MqmVmFWc~VEZahycDXerP$CHVux``;zI&0>TX%;uXky&FS-b6ITsS=Ho z&mq9&)*H9zjasjT*5Qs=(XsPN_OHHOt-D^*sQRW;y(bHRXEo;NMcR8D6>q!46@AR8 z-E9E6fJ{VG%%qZuQ?jOYN2_*FuxPxtS&9JU!XSA%eWw~J-E`v)XT1lwF6q$(>fz!!Udf(GR9He2v5W8 zc(2pzN;s3vgwQ)vtG=gPtZlkH3FNC?BEFjV#8Z+VEW$M;1Mp8c;b?`W zn!;|>@16CkIb3k&Q4dhfOwdVdUOS3JcLp(j4*qFR5aHh1=-MN~5pzeF!O^&MeUqWX z%PGiDiOlvcr%Rg*F5RwFn_I2AVJmT2PR7^RORm8Uvd{va24`U-6_T@*Rn}#dMd}_J zA9S)32UoYVXw$=4JJmgF%zhS89)Z4g@FYazv=tL&wFk5XQlMQ=&yI4E)<%*#LwU)v zhvH>9b8xfJ_ms0FCd*p*R93qd9tPIQSbnFDmzBNzyY%#ihSBLo+wiO#OYs96JQmSOG+^n~PA3*&F4k54R!yxgUOcEtu&k)T7a1-iy@>u53A_>% zF;_C(QsNF8dA-PaB5+ChwH9A~SQPIQ?i1Zf_$t2M&kxLnuV#ZGhbaqJ5x+0@@zW-B zsS&wwP6mT0$q>PofGx9cJrCl_d+O+SnFT-$i*PFrdBM$Ky&QUB6x;+nUMnQROd-f|V-uE5YHZP_=iA!UTs`u_=e_a&2#K0 zkz67o={T0K8w(=Qk^UH`_hs30jmYFFpB5Z3zMAPYD?n;Cft<5w-EpBJNQn)@h{8Hk zy7te^TV1eyH6|0xT_0yJjc711fvvVQR~5rN0?tBXnVQ0PZ$f`hn@{Gzn&*cBw|S3d#u?psFzI1SNN*DAH44PV@kv z{?(h6#hKaprEAL-!ETB)RM$xzaX=j;IUPK zbgD<}5>~z5?p9FQr)Y$6R7F6MsuR$ms&2H!8pVb-=wC^6kXXMbT$!MPY|Es83i1T3 z3e$_idbV<&VWHQhBqHv;IwWlDt56aXrY<{~$K!8H#jycWgRr(0M>nVA^LgH|5uZlo zr4F$W!~m+Tz!+AQ=tL&MUo^joQ4h^I#S> zJyI#O6e+AV=Z>s3#|Mv}`Cq}JrdiWY^3Ra`-K46N36^c+C=hg*SP5XhweKfm# z?V4kBl@lxF#Mp(};ksEuFUYTo@oD34sE6LR-}68cf`_}sE6SpP?)=m{$$qkX7Y@kn zxEb%itKCT|M_*{m6^*OVZ-APOvBgmPZn1v1xEE=Q)psu6J%8@*`Pbh~t*KJ~M}_|y zV6FvN&RSy!CB$9ScFx-xpv59#x5?lwVhot6h4Cvgc;b{#ueC)KQ%I$f zBdylH^7*YF{Gcms$7C9*!noVDf~YyfcXT#HR2XAS5Pnq^Hp!k2 z*BJ~ct|!F?j-$U6E;w%O(v5{8+3dF1F$7xGqNo}nHXXWvD?sf=kQisW4-+TBz|KpI zRP_wRY!~W**eHNLBCL!3(@&=2s_We&Mq3Vd~vy`Id|Gtw?|z( zvGJQu+3|%hUQEVqfC0dW;PEJ|7B&ja!j;0pyXxhz{8*CecdIUDZY@+|9%!_c}-2~pX!y9Cq<{D z(gyJhC2XPOs{z?TI{4q|lrgSyWyr-SlAgXg7QDxH>kW9bw7ru3@=Eu{mT8mlEX|Z) zGPi-tm^yQT6L(|n+WFV@EN)np{WF(&;%;19V_3yu3HR7%>XhqzTn&E*mE!>?LtlY+ zP+yH35=X0=MbK|HHL$jUULOut6&-TZR*VQSN?DLldz}cmAW-@V?32b~3Ct8i*aBa18%wZGwZauFx0)Q1C+Kugw2d^$ zw2{=a4UEOG7>;hS3GFu>gJPCr!IpO=bC{X&Xy(PyIJ*~P{{A2Uy6VMfNbaWT^w z6e*OK#4!feiQ$DY?pS;Vn%;hgU6|Onu!Y;=`MIX8aeNqgUW@`hjKZ=6+lP_3_~B!4 zZFyyJX3b`1xz77IzZA(2y=8EG23vxE4@vTuX>mL4q_OvMi4THBgi|Bh+Y7!x-IkfC zJ5$beU8aSN_i-MwJ@juBq2uUe}>Fnk9M$c$Gm$0e8K z!ZWasIEM+nkb&{)dpe^%D8Xs8J$@O}bQLb!S`zk=)JAPGHlz(-e%cYs%?UeG*S#nY z>ddBZB^vr*i43^sBcf*^+nyWkY$zIjDvdl#tWE_k)jP?@J6+z6Xs^ouH_alDb(`dW zr!8bhdI)g^Qk6Ue$yBm^Y-V9q#BJkD%hRz4|J(4k%Gz=Ka*{MLn5JOvx}Uh9@wIK-lshSdGn$ZqHEg1+iAwa!Rc9PVG<7X z^g1IOx7g1GrLTT>aY!RKEWdBujD-lP^x@6CfT)Ny3w4^BRKHyMRDnX3t9dzM>g1u8 zgez$?D2HtD_7o)*6kwY01Q!>qQY`6qS5w8-8`NocVgi%c?r>}=c29=uz!9KUa2PlS z?q}T6p9o#;nLUJVeZ#ii1x1nRz9B}g|jp@XvS3zw&J-SS>0~mahz@t zF`vy$9l*@li;=cf9`dGr4z5wsvZVl|RWe~75`6A$p8X9aC}pL%&3?;x%=^CO{mFQ& zr8Q7;?{3`Wm;%b#k9F0YS&K*HUT>dC0Og9`4Gj=ilLqR^w?$V6>0uPoBuWyFd^N_< zT`#_#KM=*6)YEbILnWKSvkr+s!jxMGlm!`1SJ?g%0;G=0*ME+~`PB_qTcwnUKsJ_M z#<0!sr!Ai$6grR@F-p-*#Axei?S@e4>dnf`T7@K$6+8&Ha@v*8M!erPayWJoo0BL8 zXc;SZ2FT+Kc;*0LM}Lg-iRK)IX`fXeQD8~#Dq;59$Iza59Cx_z2J{nxKt34+LKPv53CF$LkX>GEiy|_5p5_b*rUK9H&z>?LPhvd{8*9SKlr}aab)jLsYcXMW3czxi zek{Y(1OwpV)Kvo-dRS9#nhF7&$g>O{oEo-18irgD`N)yVRt+rn7 zMT8nkC;{mo^?xr8a4sYrVu` zbf=5q-gvw^2AYlm$(>%W(%ArVphc=8+5E@>8 zW)C&*?EzE08!a;WgvRIQE3*qTtE;5!EvE-xnpCOfRdOdXs8n3pQLbwS7ZaEfD5G7J zVwZ2tt*p*3FNI3pr%xl7d7af#_6&(mGS0W0=r5FCqmxa{sU22XrZ&~# zsF{QBr{f5zp1N$(qhyf}Q;m1quI24g_^zXYjvj9vF0yXfyV=g!R>mftrX}7PT6p16 zv*5gLnAieP%Hq{pPBp-cO}Z?y$eZpR3=Lpl5zFu+1eZ1keut+7g>%T3i# zV3qj>=y#{(tq6l_YK;?AuZXIu<0a=DFe*CQ5+I5ld$FPc#>yI2hRi>mLJnuo$sxrB zH$_aY2lg5&WV*E;=^YO3#ZQdNB#_}Ok4khOP?P7rtHyw2Kkn&57|e021xQvs%xE{| z#NDpICY3JyYWYOeLCHniPzfS*k~l%VrtwLH*-i4sG?id z?gpYxT%xKSyVzxR8q9S@!(r=7;ya98UiD)ti;&>yc8U<80)?Qca@}LJ$vT*7d$4q~Zmvkv zDhg++_YHyx;%}`_3C49YkeTE4xYnd|g>f&5_eTQ~HsD0C0A2{il+KNtqIz)Xf*iha z%S^6oPwSe~z9LV+E4e~6DMxi0ezT`H_^}E{qyxk}e~Cgo&e;7b!tH<*b=U!=w!UVs z->|;sS7)rR-OJxN=Nen=!X>M=dbt7|odP+gD{Ul6u0&VM_6jDvA~?6qE@~iNnvMX@ zo*mlpu`W7Ii3t5aUAcDE)&|rBE%tQ<`M%o~72JjF0QG&xRnkR} z;Wn@c9D=g6*^P@kFautyy(UDW)bb=$zpq_+PzIr z1V>P|_}2oC0zM4$x!G4=W#!}=`fwJNA9`d$S=!f#j3(|*1RQM88Yg9SonMKz$sAiE} z2H~VtsUV_%LP#=eS%8_>x17&AIfidkcG3|`w`&c|q+E7+k+KR?ZZB59ySkDx z7()-{-Nx2-FS>B<{Q2lw7qG?E_Ga%6IvTi!CzmEvKy?yaVmX1@4kidj(xu$-S`GEl zu{!JIM&slN#oSl3GFZOfWR@749Wp}{P0}fXbBugvr8Qa(*C@@bES3PTsBSoZDB)(| zt`eS9l4^J`k#nbnu61&U*TabbScXFE_AOFpofEJbT*pY`MXo-CaN6PetS4O2OX{@BK%)d3a zqKmqzs;Ej`y|QLs3G5Q(9qAlNy;(u^MRFW=8K-H3FH)pI5)jVyI0a&>?Cw-2qOVUy zmrYf`P&#T!1i6v1e0M1tUu8PfI@%LC^q@cNZfBOU?sg%1V|gvwtacfOT)lplYONUR z=_)wO+*KX+4p%~8Iyv)TS3EMwar9DzC7Q_F5chmi#Fiv;!F+bJa=TFeNDm7Mo)Ej% zf@#<9DS67k8dGGYnPXk#I`a-F#42`F3xlvcmT$(QgRbu!N9H>TW}LdIXn;5?tW|`U;rJiwh=TSqAI#bwj%(=iV%s2 zL%LDbSnG@7L^QP`?1va1y|~Wc`gXj3r`@d+4N}TowL{e5Lw?oOV}=xzJiVz9%ej@6 z<&|=D#puFl7&}%6`gW{7;TGy|3@G>Z+-x*HXQE&7^%5d!RqWefEUy6kU6**Ch#`wkTZ>n2E>N_b!6w_vN zv%tIqw8=rVpl-a983wp9zG-YS(ya&$cw%N$xFe&()DVWBA{t8hC2`bKRFUDyiBCae zncZ56$W^78YDz(hQ!Jk|@=8RXQ7HhuuP0;^*HAlT7h|0z^H|}{X;zWG_JpX7mZgob z(XZW((X;2ELewRe$zu9P3Cx^StB|26@~n;61a~S)Wlbch)-+nXqlBzlJKv&4M<{Kv zbhArCDSG+0TlGD+tR}~<>HQt>--4x)9*J`}l5dG(IktjmvjRFC_#}4?PUG8znX$*u zd=%NvZJa2rj$fOqWgcahs(R#PK8kGDG9gDV#(2wisgicYk!Uw6wiA@Wfj9G!@;a6( zZ0qn_rQ7M*OPVp^6`qe%D0aaGlmeWrwtd^{81S@WZ9A^rwwfb14kY8V3hFdehrvQt z#8G43Uo(uRYyB>=R1_OKk(Xd2KnDvM%*=eEUjP{bv>^9}4jiwz5QIibvf)k`gi*re zkUB5BmmH<$L;2ZT?8sdM;&K4+_%BHA| zn?2R%{8dYzk({1lk`guHZ+J~~iQN3$+?+DPpg7gg%pLL+NI7!V6^^3wQOk!4*q9Soy$AX%$RhBP7s) zf3;SxEeuiaO7g=Bl$;VQ@ev2}B5iaS-<>LoIsmSgaugAJ6Wzd?KvGGblhIfrW)&n3 z$)$BZxc3W%=pruCrBb?r5_Bl+O)0FT3K~JVFj7>&b9uGe+7)X+eGmI(!SaqoZ=yg6 z5)6ij<)l?IrI_%FUM`N+UN)&D%U1K|q+}btD6?wmcjCA+00B>D+xT}n*G9j;6C*T~ za9#i{Z${%N=ZPl@fG3TU&LsSNI~r%b5=>u=#^LsF;m=j=q7;?B=h5BiW*gEMfaXB9 zB;bW{7rx(!#)+>0Ki8u1wS`sqF^6rENeg`JMdQLR#)g(L3jlevyc*dCC4ibXP#zSu zqj8Ig5A{3Ic$ybJk$-X11F{R|gp}KV(wPbmk3zC-kVI>2FSmeLCWl&A0&r#IN@pLc z3GnG+M1gX&K9<}vY5i6p6$2TeW|JgZfqXd}5`dsSj)&iVjf^eWaywSYAvDX=gO-bJ z9B!1ns);B2Vi8}pC-DO%@EXG?m)*V??~t5mu~CBs1cb8NZepZoNZ?h+T>(h2MPvuN zkzmY-U`N76+0Z+KB8{D)s-E{KC}=;1=WTB0|Db zKmsf}-#K0Ojb$h*dW3Mh+D*+N*G1mEIXiPb8o#=_T*Un*r=f}BdU7U9)uH^t&Fib^ zF&8fGolb(um7b_3sFlJZYcp#%R=Esm@}>%1zdl=eYY{+4r&ELH9qm$T-cnGJRVji$ zyzCVB+Da8todmnkJp?;gz4%|xRc6;# z5E8=ANUn`H5i0fO{2Omp-ng!d!al@ZT`=0NHg{vIxP<8Cvf^t*6*i^T<`?Hyq!7yH zx}h@5S7#TmOCk8+$hYtYw=+ufis|C=s_%%NrCnid=KAVYIPlDsUaNMnFcQOYQtLK4 z&;!qCZD#d5t7|JaW}$4an%wqQQ6FCW+`hHATA7=_Ivb6nw`S}VIb1~I==^Kf7niTX z)xLI}BAM#+H&)jG7Qh_#cSOdEa6)I#FTQaF?-pOGM%~W9bXG)m)2Th9p{%nO=9j*M zby&<;chYfp^!L&tK9FKe=`^wUCe#--Tz(I9*7C~y8|{jlH=9}V*weW!Dd1zVRJq|q=OL}4mN1w@NohooJ$*; zjOVBZ5`&K|M(8bHs>4eY_pYqcWvRJfB)8PI-(zt*ihZ`}CXz_Vf3?4bxpoLYpc&XA6j2eTBLXKV)=c3A0U`9)sVH&M#2SE9?KxG1%FtC^L|sc{>lz!)DVdKV zpK401%R?X!lEeFN#X0s+oi;0IurwOm9%f;%WHdN;2$x~^bHezhPOIH6I(XQ`NSCsy zR1IUIX?Y6cZrmQrbKuvuqIKFZGe9|41+_$ya&IEHtfkk41;L1o0xet0NdTOx)}25< znJLMaQDwnyJj@SLwPZw=60t8^I)b%Oy{-6mM8VIrW+kC`l*Q;7M?t$7iIY!qv@XGr zP?gS-0R$>3kEL0)oJtD6Az~EkUt$)S7Ttt1HaCl?M4$D?C#51Rrcq$zO8L6IkbVHRtRUQpXyn& zLxhWtw*3rD99{?lp4{>s)MG*avB*xm4%qfQAb*Q9vv0mSR>$u*=GHWpj#!@kv~f0P z`dQTkefk?whf5O;Hdqq+Ls=`SXtl&$dsT;QWtC+mx9ha;u%w}P2O-HByx#`(8MywP zMjgh6~38zD`ufznv zp}$0hu}vkFFirdn3y+uIfkC<+=<1VnGHfLlSa20HSYj|YQk*Y(F~+r4C(FgHT6g3? z;9`+&RIN(UBzvCX#MezN;tM=SJtOTZ=iFGwuzVkxy5P^-r8ytStc``PHwedyDjce z>ER^+W?eG6a!@M6DrGfodLn@`N;$F6bdG>6SR*bW|KdxGI}b%#z3QH5GBsK@Pqqvo zeQkLbb{qXIC<9(@fwUc=xWXzf0z$Zt0$9QhOI*da&T%dqga;-CBQsh=| zxsbIqQu#Ed>C|hH6srle|LA=Utdr3nnh+VC3w>?@GdG^;GQ)%UsTtG8)fyYB`Ih_8^@Yi_f2yDgeM*#P9ssI zL<1EI>oI%FM&2;Kgn9hH07NWhZARDo8|X}Op;03jYvu;Qh!I9Z(_JATC)jIu710?f zSIRphBO@^Mj|BY#>fUOjd>Ckn-agI&gYT_!kVQI`Z6Y!Eqov9U@(wVm+t5TM|JI1c z8ij#3zDowERU+i3KZ3z2{<0Icjf)BXI;e;%K!+=MW9d6f%Qu$*0eGeK3I@@WgmPql z$uo~U?Hk(ethPLNuva9p%c8jdXVTjA=YeW119oIoLt zC2&?^D2 z1ARsLRy~5@e67lI&Bd~9O~q|QdPk+Af?gmKinK`O4RHlfFa+@097V=E*PK@eiN`Ls)&tJteh%0tN`E)QY5QHqg4!) zSWmg6x)rS#Z@p9B>HMIZ^!DCeuWr}?p`YH-vQG{^@r+UNZ}V=6*1qL!Gw4cF3VIGZ2@x5k8pt+KE@b5%(0!>u9VZRei$don*`#=5MwXiV&9Iqz6FxARxw6z zLz};n_KjCF!)D)# z(e9wR2VBDSPPGm>J(UAVcp^#DzKM|;syN8aev@_j@w9($kF9aPSASU@>{9M~eZB6% zI#*R$T{OG>u2mNLGV10kXa<~Kx!54CMn6HaS!IYis^YuQ*n_Ao1_%SjD?{TB{!0q-IY=> z01^v71x@SH5ZHj!Sgb;UCJFg=NU>PN)Woc5cOs0p(`OqKKu9+>>lHMQr~ufhRQr2~ zY*@~DoNSm#Ae${WSs9XkI~H!iV%<2aAcksB0IS^WajYv;$Y#eKIr0Y}q?iJSO=5s; zlMx2Ys2Nvx<6yy7yH!-6BBz{_SX3S^r(o%{3EyOg-Pn3&9c5_iWZQ<7l2dOaiWFn!ihHhA`=X&pHEE4G8O<86 zT)SFXnOj(%t*pE?<1R| zRIPeU4z%UiYyWWo*N1dRtM;-rS)FK6vTjb<>xQL|{k`pa*GXc2l9S}yZ0u*{x{Z5w zA^RDbZY7roJRr-fCb8k!<4R@@QmSq)bLU|l0%J6$c;O7MGmg?g4|v()G+F$01&5$0 z#S3ZdHqbVNef-vQa4d0PSSgAw~cfOyX`!?9|)%sK_im2!Zxjjl^a8azn>$D^n6Y3JNnWx0(v zsNV$?UjDJ*y2iT2;4G37ZhL z9q#xPDiSJ}v;otRm;O#HVoe&bY8QE_H1oRn3$>a?o=8JTa8wbKDu|!JMm42Eto$BqlqG>UyZ5s&PM&UP?CHK&&0a<&&_?o*U;;;vXr`6NYcb8kE zS>1@6S*xtdkatz9V{7(OM4QJ9+6*a6KBUmjHe)WtmmG3VxXdUgg-fzR<_OEut8U3c zvzY^YtJAHUG-bjQAcGAl0S_x6e@zAs76P2BH>%C{meNo5KKc53X^4tS(k3K{E;}Lp zk}MAxf5m%VA6(&bkgc2zv4+oCPr4U@>rUZYR?j~c!^1l<=hHW>U0~s_yQ1)hl{Vp;3`LiUM90l z!bntH!eOz-kIyYpB}HGH9+EI=AO$_ifZ`dDuSUC!sNe|yB-y4nX(RUC?MeZ+Ccx%& zMdrDun$E?0WH;K-L=n90Ew$g{QPRLW@o@uP9+{t`JX|G!a6hE#h*vd)ywzy4`9a2=mhEqPt1EJFsX9 zh$#~+CeBetK<8*s0bbu6$3r#VsW;m>3U@k%Y&1x3)uF-^JzX5>ltmY1_+-nfvC{cV zFm(Vf07cZl00MR!HCE!&X=FC(qzKGnFFu0h*dK0z27ol{r^-Zr98f+@II^uA1@a(^ zU?1P49Cezg{s2UZ^66Y^-WjQFHpv*1IDf=4%Q+yPWZF7OJ#{LXo!YnRw!b%nqSqUn z68y>!0XN6PcSjBo5a6()Al_Im56>gDWeK!2q!| zR53hr)DQ=wwoAL<&u~XDWZn;u)!S=ZoRX+W4Sz4Y1$RW+_!W9)7bha)^51-28cidl z3fr$KWjz(W3pq~$y#iEi)%RZOaCJmuBXk0)FBYe?nmgLy(80$1!u;YMk%WU#u*nKZ@T-4~5%4zfnE_0ZvLtDQn519Wz)Z6QzY zm$@F8u625B$D8aKT^#5+#np}`Ioq=~#@S(*?+z@)8At!9If=B8=O4sWFg}L(8M0J+ zQDi{}h`d4?=2eck7dea^ZJ8ZM63tpRF=x5iA@L4jB+M@IVJyeC-^I=L++^h1TCo?v zL`1=JiU4r7Sb?nw@9wq^NJwA#oOY~??o$;AyZ#!*HYQxp6}@dpd@b4mWjEY*tQb&b zi7zZVgMl7obnuF_D2*fZw3@9}n;m!P66D&gTK_)GShpZ5y<6y>hu|}*M6s}eiMA_B z&Or-GBCZY~&Ft;^9r&Ff3vFL(n`-MQp%Ju^RF!aiirwvU5(T&ww6}K8Lr%Dl0nNM4 zDE;O=SCu(8?j<9YrJP^N_zKhGb3=5DVHxFVRI>nV(+YM;YArhvz*IsJKD?_r9V%e{ zs`*Xmm-EGFuuh^~QgXCz$B>ko1KKZZpR-27+4tSrdCGS3aOHEhbVZxJEiGS}Ut8tA zi{yJsn>(O#a32q4LyU-=1`z7Phq}_m@5>Xf_Q`S;i^6XUl&NME%vT!C+Z2vh<(^CX z!(1QxM*o&6L7y3=qG|0C4q+8Y(F8x+U1dQ+q?R;nNHIH=Xdov=cjJ=ImR$(!7hY3no=p?< zF;#X1CfbK_X73mqx)v%)!2Uq-=Gpdul)anvmjSi2+VqV--$ z^UBlP(0aW&2i4_|3O;BR)>^S)9_O-fM_$`>lETqR)NCIVsNdgEYVKQj=d0-8I)S4G z{{S_h^kPQ3}K$xZl=&l45cYcKEv5lAy#a+b2*V(>fnoHv=#6?!s@|3n(ENU z5;iUicOBFM`Eyr!Y)HECsl8pcJJhZ-R%( z+aPA9ImBzx*KHkRU!iPN;W(undb!esx`i()H7bKQnxH4uP6u9co40SNyp9Pw$J|O& zk;Pw%5%^78v#0NBNxPDMdO1pYzmSFOx=pZBc-C541&OIubKFWhxrA2-#;SCQjZ1Sc zahETiNwioeNT6lptbI3UK|samG1{bcJ6jZ@!x4+Da%p~;t)4o#q@n{9Ro$#-m!~Vw zN)v9g4*yFINjjexRDoRKA~=?5D0pF#*nTh=P{A@1#R9KkIv39huK-<;@U&n@Mk}W# z&OkFW$EuD_nDL)i2e)O{m>gV`f%GWD46Lon3RGttR0mmETT<)I30JPT-?-!`52}j> zmXkp;`bM+S+tn2Mgc#f=*|4*^RV1SZm;b_J)Nsnj8a{yYpT@qQkh~-gSZw6 zJMb~eEEUc)1YNrSS{JC&fhBAlIlU(6uH~w>++0N;@zHD*5QA&P6PULIfjS7r zOM7{z0c3+y#OWLxwlm?=R}tnn+v>MGg;s>Ca+KRessb4?$yN(}D@Dl<`Q!;dRx5j| z;Zy7SBi^)sqwaXv`ZY5c-OAn~G?=nufb z%5@@RyUqmR3F0-h64aZNyHjm2Y|(+=X5XBf{SF(O)15?qVLDAhOO~mb7KU+TMeT2ZyrT6`SItynh>C=gFuI6{)5`YIxVVfr z@d5d)AU(XJIF7<=X;?;_NiTN?@q87!MF+wxpzrls92xXeSz=Nk8f4v}lb;-FJ*XfX zxw}@lw(H$CSuM@ii`rf6Mx)j5!QMm{N*B(TzHu?nZYzq5$yTFYywcxFifipMda)>~ zqTk+X^-JyUR{r|(T9KLO?N;$B>{XcprxeeEzZvn*sqxm>`EyfK=cB*;%Lsp-`})-R^U=4Wb5WVTr>8EctjVcM_>*d!n>>Fm zx_g(aK$&wBQ0F|xqtv3~N8Fb!Xm8dmDy^aCjV=;Ubx=K||J#SbbBe}hxf|3MQc zzk~LVXrX8ga7mv~x0D#^a|C^tafBzo#*>7_p6Z%EfmuA@+>asoDKv#g@_jm^hd9NE z`v07Fvj}^51S5Tn3vl{ASNtR7e}W4ItsUUhaX>UNniI|B9yNGS8mU6C*<tmRN0HCa5F_o4RBVK;G_FpNj=@d0eq=|?d2N2edbCoaTCxUP7tKY@(TX|S*q zr$3`({g@XQ^?dL@=m{_6V=QI5Js<`S6mk|b!o5Ac2Yc~MnB{-|x3T2Uk67awRvPa; zZqsKlpZ8Hbar(D3Y*~FZ8{*Wt4fFOM*@qRTflcBc=LnxX7G83?LwNjQHDL<8)Bfrn zsLP@T0+-lvqwhVSRzP@PPjL-%5xNqI?3N$oR>jK;r^S$9#=wPmienOJgLL zL0K%uJtN-@*l`#(+Pz_^Ke&h4ntQ4*7L^3RXXc^)C1lX&V{@dAqiIxZcU{shvZ*zl;h~7WM3+LdPLQ$lsxiP4!A;>{BMBOVyXqacb@S=QO3Fg(Y$woe1Hgu8_Wk+MnHq7o3J^^X z*k$aeQ%JS-u|`%QWgvE-A*hQW_+VQhQ)ijbbGB$n^l7Yzj6wiPfGFkHM`&4{8bl0I zFVbj3vq8TN%tojkD6)1VbxZ)1Ds;QVFEcLRk)X(Mi$+Ay?gx)!z zz=DQOuRb!GCS8sVq2kEkvD8tq}FL`#T%Df5cc9qxH$1ZUeb34+)cdcKZG;UBV2` zB=MdQ>&IILN-xc|df_Gb7!C$fx(_2oYGtg;*}BkeIYoo*GHKpXBFqO;*DF`-(sqSr0EjhD&!bAX~Z!lK| zoHSI7oPZh75<>VTyg!fV?#Q!4LALxxbbF7~ty9q`NIeD`@5*)3lL_w39ZiLZJBggj$0pCMPMuzSChV4UB za4XmilN<;ShH4uI_rL9yBBr_Vy-h=8^y#^2nj>{b z5mJ7ia(S@O?@#FnJv_Z9#5+IW{8}RjXMF7H!h&^%nyfu;pKt;U?*#+|_h}BF5&yy2 zTIipUPP|B&hu`Y7)h>$qgxVxn!IR$+!w~2EFo=^g#m`J(%_ew;Xuv&!|BvXc!t|dz zU4^#G+bw$Yc!{2Be36G^L?(gFbovP_WyV4(F4&7%O;Py;5cZps|D&!7AJ{(LV`?7BqMw=e`bk`D^_xYuhK}n+mcJG`8Zz|53rFkqxpiHLZSe?yD1`fd z)Ijn7f4KykCqKWT2L2L`(PC=g^O4k|`D=4GquxHT|CuMNG14gNR7r+_0v;Lb{ysZ! zNP&u9x<>^U+z|5wTMr1QeI(3Z64~g->f{$GXnf#4oJ3E+CVAZ=+Xp~)2?l;o@$P>PxMTr9R~%-1!NATMFp)96!)d z=TjOqVVf)(2gu zk_yGa>{FNI)hyggS!7p zuvc%nfih2o(~)r}kz?YtWtIjN_$J|x)r~%mbUP14YNEQZq*)q4G{IW^wF$NIfcH%n z;+ZHPSVEOU!W&f$l(q*5kJEc4(|51kZWeg}@--d#(g@Y#Ur33+7>JfZv)#sS+%2+~ zibHE3`AJD4rmchL6&XtloWs$PXAu517MNtu}o8`^9d*7CZk z9ZD<+(NQPl08xL{&k)+^pDbMaI6w@swvcs9gEY}|Qbj=Kp!XoUuY6Uf!z=I!eX_8F zE~!z0IPfHh(rl;M*ns7wOHi?I6scf6q1%0oq$!_^c9|1Tz?BWG! z0v?u)b`nGXyWSIUpJ=L23>o0|t#ry$j99u0_g#KHyr*}%)ecvkc|quwEZ{6O$GY1J zEM|e0EY{>>v)2UZ1m2P|Exke1HK8Ey(c>gy4|ueGE`zxGB_KEfd}aV6wRjC-dZTrF z2tsn7(Q_*o<~E&y7HSM?-e%cN@;XoJMaBjD8+l%N@(92S3Wa^jbhSmJt98{)NjD36 z4rvs6Wc2xvH9tR)?K)Jv*#IFb-7ezmgn+O}0T%pM705+?fIp#~P>M>Y|D87F{SXu~ zt-)}-2Bp*0FPBu1UT%aL(4m`_enAE9Q-dk~e@UYfH{?Qlm_+nNMGT~l6y!UeO~z1s z>#Xo9D4oZas$U5;y75)hc(n`+!%`<28O1!Af}o2gA$5z^#*((P16={!24+^>Gt5g|JSov~xRrcYVwk-$Ev1vV=fJiA-RJ z?x0w_-M}Zf_oemGJS*mO#=E_fNp@r)0Z4j1#P>;^I;+;{htnnG9EYg{vi#s)TZ%IA z(cZISz0o*b(?ex$qP6^ zLlB|frye4h@lHoN3Uo2(k#d_om^N43<9usd3V)f9xVFqIWK_EbXAQ6|vT#i!ov+$_&g+;0uU9mG_6{oyDCk~56bc@eMGuD)wF#K9zM?2c<6{`i z%N3c0%)VGeg78Mt7^!a5**zU$PE1(f=DWs4s+byy$a9Wa&;zhLlGbsl-z(b!g@A^R zErNh$CQW^JYi1Z z>CbqNFnx^;HaxA;vh1GpY-Cb;bEVmJd&svmb%=Q{q1ZSwa&NQT4j76eqCsI%(4?I~ z&1-5r*v{BX=U(3{XRi(in{>;Gc+8~2^00NN92@e@Y^yhV4c7Am>#Dn8N*s|D;OD$X zV|7n8&K`-gnk0K2dnKX&pZp7VkXLEv&jm7y7tV3k*T}L_Yell?Y3$sEJ>DSvK?#@l zqOptpXsk9?i^eYWDe+R@WWe{hh`CswROu=+-e5gic>REC_fE^t%dFiwAr1Kkyl7RH z(kZ|TPFkoxV%-vD@TNJ&oCOdF?Zpn*;{N|vuF6oZqLpDP1(C;SQc%cgqqIbrKOq5p z-F%jwg)}OpQn!+~_=SP?Gn)VKj2-a!$t%Ys{++g^zk|o`VFRjpYQ-LWpz#p~KeTlo zc{{0YG@?oRXZkE7r%<}OS*~x7I?(Wlqt0qMlcY<_%ZRk&OaDxiQXih)%NyJ^&4vgx zVj1xNTwte(>`FlAbAxYBM_))=$~4@Wj*8FS2y>&Su3WpiG_yE|4e>DLdUHdT88h)C z97fuKTSYNLrA6xH&Fqb^AdIyWETd67p+Kf!`^>mhiU@(m!uKTIl zPS)hWsoY~t&O;+Ql9wU6d@ikSI1s_-({dIBKl5M&kA&i*d#j&)MbnF|{UNw~Ly6I= z_e~(Qh-o%9>qUp#d-Ab8RU>G3Um7*h!Oxz0{M;*caCmDHfg#ac1>FH!o5PLXmNKpF4n8PI0>kOKJ)a~6>CVV_(A?(vjm43 zrms1s_y;2m_6f_n1!UpazK>U<)!Z*CZ&GR5OmKJ(d8X^6JJ5<|Tdh9t7|Ob)TtJv5 znjzZPwH$M7)<&5#nsQcj$8?r--?#uP6s38m4O^471e!B^JZS0&pzY@%FY+!5LV(H@ zgZSF|_Jkxq$626z_=Z0X8&J}Vx1|S{p@tnCT-vNUIAVK|)Gb%t^;_tOF0P+_Eegu6 zAI|(|%GUwG$B|YeXiJJqv82Z)&ddV0;J1n-OI-zPh`M5U#(wi7jrwdITW}sZXU>Ab zj7REGi|E74#hM`qG;YUn==4|ufn!B{SSA{y0^qzh+3BIrABS% zksnHZ10Ny^N+QbCRi9h9HsTYW;yfKh&>gA7O}a4p|Zhlj@+8tBPCtNDq0g!E=Rfczo*A5l6Og5eUa6jyJ@ zt;}=(Rjvnty94qvrMHWRm$80l7+YYikJ4~p_?9tu#TqG{{yRi;HtV%&w;rtahZOlq z;PE}%P!Qmla+D#jdx-WVL14X+U{^tGB;&cK=VPQrD86m=KzBMB+{2^OpYu|rUU~Tb zlqPfJI%L#vW0VDF>CrL6N%oe;Jc|ZVsX8j&q_!1&Iuz@*-?1g_&@B>uAyOQDNbW{Z zm_5=!o!(W0>J*z%7CCmGKURmum*Sr<8C7W0QeG+BVA#P)L)A|QH8(^n5L;K1b?S)b znaudHSqbG15J{N#M#RrP5%7DYfo_#vLWD2g+&sQ78&f?|C+nF4TPL59Xn;h{^ois0 z5CU|KG15-?V>o%N-|SAcUhK7z#8*n}(<$4e^eC0IfoS8D+c#WMM=O4`L7EY095n8+ za3X7bVN!me0|`>`^SXMcSgdVVTU#;rb{7dh3=77e?}~=RF`X#QfgBA7HUy#=Gz6Q9 z(DQ;bY!OD8krG$h9;!qViW4*3-JR-JG}wj3nL_l|;!HH!2^=yvJj(t?FiERsX>EyQ z$Xxl&eP`dU*c>srg6qG z?tW=weCs*K2BlQ&mlE|b&uBK>RA7n58VU+GrYyv#CQ#NyK z0RO4rIy)42eK;BhqP<2*GXWMJ#~m_b<+T6|V2aU!!|C;cJ;7T>n^fscWHAqQQ)d7N z+@&FKTU&aYIZVnsF@;RJ3-~Dgi*(Uw2RGA0f^zRDY$r9XgMjm|!_k;?wixjA$I)zi zbF<_D4Q055F55>UV2(3}FJ>H%l=^5+->5V6y}hu7Kpg93kSehG*oF2F?f> zG}uHUGh0(s$?1>JJdLMnuW)=6yOj{*WGX-vs1u#ib`9e2GzmEyg;9AVwt;WT;oAY( zUZ!|l=s4TVfnz8jT^_omwwAYRrt4U;csp$x3g17w*Ca{{IlXb2gTwZuEbdJ0%SekB z4f6P6GyARgIO)cP7#SF1%)xH~5G_yJKfzXH7wi0lVQaKHav9Z~RBi+2NE1PD=6S zf7HmT&7QI&DN-EnNn6`>dLTBG;lM!07BM=rmQLSUq))CWl~=OcAU{?`3}zG3CUZEq zDa8ZUt9TEe=FxfWN(iPwugIgtp^|w5t925Iy_lgHE117A`21){rSiVZ@5Hg@Q1!cU zHnBEzfLi@UhDX@1#QS)l!lUp@_LI{O3!}1VRkRgEsI7nzMjP)lEuXM7wv@DvoI+&I z>p5nn`u&LLWN+b%%KS**WZya{oB3m#5FJ{49A)#uD*U4g5}4VV4$lFrv8O^qzhOw&Q9iniK^kq~mMtot;K+`d0SXuxpe-oqho5u+)5wtBv{| zss3J5-I+UW{Ko|O)!{LbKN(A3&NfWK(H>^-#)Uy@_NUd~nSP#qaXCLPXm2=_dw6pO z?2UM+e)yvIM#sn1jHmVTq#bx|`qp#v(nQzzJ<;hsBJMWL#a8$kZ6)>XMj=hK4wu{- zB@$0+oa{#fdE>0dV!)7Sg|Zq+nr}r85gezKS8vX&T+?2I&|k*iptp?Zhv+mw>nvt> zC)QbK?{GvsCNQRfy5A1VL%}RpIINB5PJdw-V~(2$&-6Dx%yja(?Hz~cqFbiu;?X2i zp*igcVTd(EsPQa=2odXUwg=#1!4)4AGR9S@b$5W>LWPx!KMX2uPX&~=l^FnmSlaSK z+Xn3Ld3B{zn%U{j4JYIaYi1j*=BX^LW)%YOi)l3nRF;Qp0Y7{JTEHO{-w`xil}6dw zHC&S+8m?Z;XVP#Ts=m6)o;Siutl^%&H1*X{CYr6j`UR9N10A3KqQKnev_CjDFZ326 z( z^5Dau+R<eLbYDSF?DVHyHt=<>1Ht=1cRQ|ONTKT z-J*`VV7tS>`TayZ7ayi@yOi-Ra}G^wIL|)LQ-`ys*L%QHT9y${7!n4KdB($V@j~VG zOWxfbcY~R;LJZ>R6G(lX{ORQHPX5QqKL;MgQA|)(^^?CNU|9%3%aK83@vTA#s;5D@ zZ5SQ^+XPms*cKUF0;0Q(MycK83|7b~PdEN0FK!kTGtX*0INgvDN~i-9+SM`ID0T#R zVYJVIQyH}<+YHn|40?<|7)1j_K}JWf!@CMN@axvVr{-b{xb?61gOrH=% z^AVxJM@(QobP23`fxhW1t}A}tExl~dxoG4p%v0_ADcB_YxN;6>=(qW^V0)l5SN-fbHv>c%$xm5^T zL#M|ys^wkeBb86Q@RHbV>~st7>Q?dsx>b5=uuL^d94PDN-wYKUTl?I?Adxa^qq>L*(0{*SWAzwU(fn5C2UR35zGw$rXZiEGDjCK&( z5H#krVgZexemD`t{@3Ve?!&q^YIav=?}FWlgoERTdhQa68^fLqB^&LiolFM=W2yVc zZpEIP)zb()WXFOXvGakv`{#0DvReq#^#gFg;WT`s5GK99Jc@hZbqN#WYq-}OInk{}!rXc6 zi6J?grj*;8n@QYDqM=R^?S2)v!+DFa-C4#scK}6c#_LljAH!n*)5$-d{I6T~o*Xe= zpXRzfBzD}71iqzs(6422I7e6jYXQT2r$LqVG%}2%3Q9MQ0=lapRMmd3U5K_?{SlPy zn*CY>D9dUWp!asC5XJQ^s#@H=Sctw~-K~x^MI6^wtJ)(8OCjhl%^X$pUZy0PCj5Zy zGL3k5kI{1)JH8aZzo?~I{Gm^G{xI&gwE$I|dQvwSm5VNzQVL>=;$s%NJz~B2F9RSk zED}4*DS!jNI{CxNKb(AQ+4@*VE5Q4+*s%r6sB?s2T6&a#t4vQtrgv+2?M~+CzRKZE z28X9K0hKZCfY)8IH++L+VG5sR&&awl*>2w{0-*+=K51q3x*hKsv7mLqZ9Mw%3qDae z9ya@*B82D<1Cbsop}Z1m6Qn~XzV90gF{7>z&uBli$-h{u504 z*ZMMrm&h%N?=JcQd5^mNx#F;}@cACAC&|XF`j>=+@lz-N6BFA4+jCLH+h_Io8kVknDZW{I0}Wbzy(vEm2!SJ3%6}-T*C-+l z+_jYaC3{g`fD_#8wR-NA!axb^UOjb4iqCN@a$ewP3gevdA3NTMcUIsoI$zI;-7wxa zbVL7{bSUqUujv;v&>@Y#fYBd{t?mcP5>-W;@gvQB>M0eZwqtf}VSTKBs~o9l9`G(b zVpv@s_!P?`eN32-47RM!%CAL%=s=_f2S#yGg+-up{~)|bR0cZm^^QpOEc&)b0>TR6 z*vq<~XDS+}b1jJNTn=A|t2ZmN*Jdi;`qsCiag2-Li`jX&DJ=xyUXkN&=KUO~&_xdg zw-KF7sRGOK(jEmg!8jud_LWCi)!(bo!C!+ZTJQ7MOk|I*sVE*elCPOi8s@f#0|@)w z=K`V09l4k_Tiy{2X_2F#6$F%2ObzQh$=NY2a&CZ&LH|)~2w4LsCPtKsg+XP0$I%x# zn1cs9`Gi<;KqS^i>csLIP*96f+IiN?jii$Fc6u+DZIBv>V3V<-%@He%R#25Pp>GZX z(7POX1b#&b?=x}k_$0f$s_+{VPi%xEyI9?7)XH+6enS_Z9`ceMzrsID4+NYc5ToHB zyMtfSvKhuP$8#i@Thh#N>`mk+2`xHew| zj+A`jv74*3J}pNrg!h>JDCNXc*ke+plr1h3Co!wZBM!@&A;Qt#PTA7!w@93!Zs;Rr z=wJ|Lj=7;bVpA%ngg7KB-a2_B-j`J$5Fv?m_H-;G9m+@rG8z!aXmCfvIvA;k-{KU@ zsZx>MS4o8l%Bh%5WI4Dt^G4oH2`Z1IMN?(#GLO)Jd$P(7EP(3EtFH}00qv*Sdq$1> zD8ggyy)&VwB5y4edR~&MwwsXBSJX}PYBYl$Z0o`Pyd}eMZyWtBl69BuXC|w%S3a|B zIr9MvmmYiR+~wvTJwWf#&7&}CV|^X;06#-Xq}%;2@q_C>N=~{6ySF z{s`A6Hy~VD=#kS81YbMmYNQ@8DgFmiyOWqw#PuP>-M0LB#1N4OqWoDa9@>!(6R$1c zOz0(hWf1m?6Z?l&a4fNs^6oYCH1Lla^ zLG7`C1Gwnft0-j-7*rY%B}Y)CfmA64n*^eLOfAc~RQo4JG^J80?`|q9KRzy%gL~wf zh|0{B$+jJ7i9oHO%|hhZ8XUs*LJZ#(p@ln{U!5V^x7i<3Ajul#C)$s;=vF8p#6d<4 z31RaH9_F7Yj6%$Yv%85qjb?kRA6GVF3}XZ%`t!eux)WBV=UIak2Oj0Z1hm`Hy(bv!DKyPfLvLsPF-4z{eJJTvN{k zm)N-Pmw4=U&Yuu!O8N+Gj@VMGd&caR30urv&GWhcnvkfTV7xH_3$BT`i>M_H{MrIb66o(d3T z7Jmps2xAb@PBrPFhRO)#8?6Re&5l|H%|p-B$5|^3**&>;qgH^Gm+c<4hCz0R)Zme< z7vH{kL8)jIQ<8e3tY5!W#6ZzzV=YxQwo|88Dz9IPtZl6ywBE#Ey(f88AacpVLY02?oX~s-Wq3@~4jU36> zi27*le<#t(KetUuEgcjRq^!T?j@wc#vX$L@!Q6V)9i$PH7=D1K2dCo#ubb0f(I%k> zJerNOHjDl{Ga8J>Ih@>QsBWWTBpyfWja!6JuGi8#rsNsg<@RSvL)DH6b)UBDGp3c5 zE}64WM8X{NMiZntQnbtZrrYaNXOoUC1p_vJv5(plrAX}%VC(JFc{%;DJpURK^)w|T zo)%S4h8#D`yw|hni^gl4rKnqNH5(heq_Fb49^{;oTYfe~1tyyM`YXp}(0M~-w~y&gSJzwNn$xQ9AtMay7}w!t8_hU(i3I3M5?FEwe_TPrWVwmPP6v&z zlU}!1-H4iTOSO&ts^2^7RdY>?VYeIpnjLx%x5j)^LmfW{|FkDa7}DD4>UK&pSg{8` zP@};zWWtdc-Y_qR<9`Ipl@&Hc?RucM?9_ENnz*i1ZdajjU@4RI4@cDXuK?E8g5pzjV7bzP?oj!sjPM_JPfRp zu>(#WFDrWocA>GIPG}gNUbJ2BM#&G$2CeV7fX8}$?dy{cOu#;TEg(eL-4E=?rN~c{ z;yoVO`gD&*yro^d>Ch;_bswI4AtTt4DdSC#SZc0buZPV35Xe5H&%|C3QASs>AuJVW zMy&bmp=z}jgDcnx?-TAj0SNdizTVFd%!RLJgJGR1o9yr4_vL;rvgN2D4sY225Cv^V zD5Z_XLO{u!uAX;VNGDiW3$_kS>V*v9hqha+W5EXys&aSOJ`~zTZDQ;#iOEDR`C$ZC z9e?caa3dMSE6;Dw#!ZTmFdrU~V0PrU^(BXX=%^8yp(zI_uv73f!VlO_{vod=Z!vBy zd_#-0(eTg3KK(yON*7~EQSlqafZ~B>J0tsK+#aaXg7d^wMAT2@4Cm6d{zDuoGfSya zDBr4Ql!xMb=`c*knXiLTn{g;nP(|m)xWl>(#a}tnf+S0p&Ylj^b4(^!Pi35V-}k8e zv8pE?!5&P|fG8Ta)#gMw&&g({Q&W){>V%&=?PWUdY@8c~bHdgq$LiCQun*Ja=-+?z zFK&YE&IET$|5HRP{CFs z%%zkH$@A_bzQPtkVVSS6hZ_ndi3jEh+h8zpMtl`g1rxcJ#6z<|vhiQ`0G9|Aqi89f zINJ9|X$_vO4h{I%RF*IM`$o~%<8U8}G6+fo^+H!{<&4)@;kjZ^&{BR-^S(zb*HxkG z<5~;nSXqwPJ?tq+`$GLNT8eu&tKC?2`poX^KHckMb%1qOg;YfHf+7^1n6F}r1@M#| zlIRPI0yI|OhJLT!tSrvV&M#eCuCQ|(IHkYJTCa$7tcVRpVMHSlHCl}T4NyTlF*lV^ z8cHA3JhyJ;>1`1eBCAF6#q$Nnx(kDCcPnUVNDVRPS>$Cz7L}QaZ9tG}<>YtHW5*1} zEH&c56ZklVc6g31F$(XQx}m4awf5D@#%NVPO-K8e#!!QlrHBpqsp~^ZJ1_izjlDc= z;=^cNw~GO6CT;D3#piL8k@F0wuh1zj@m+`A8H#>2_~c5UMc zuzak!2WsI`uEFm45--Mk95a)A_zK7AGQs~>5L_sj_m9Y6AGya`E*N%;D+6uuw!EiGMoL?wP z)0v>l^Ur>`>+t^m#=v_8x_#Y_pN(3MF$_ne7vI4*mTu6k`t8X-ocuAzrbz!p7F+)c zuQ^$4{U=c|6l8ha5GqJ*Owcn<8kksyHoP2W%)2c4zc(={;G{&6tz66(-q%>OmDMst z)hSiAw4$0sV|Zablrnm-_2JImRbV0ky}mD{U1#9GPb+YvJ2!T-v4&er|fe~F&jC~J@!)UblY3q>W<|A zY*=8nRW73x83h# zIN)Qn_Zgd51{_-Ttaj>gui9uP8P0nSg=;PDYP=8}?52t%T-03$34;%k_H3QE(JS5XUkX|;Vvkql4Ei4vNW*$;DY<1ya)DVnI2kB zi_$yoiUcSIw_#vm|AQB7M*Q}$$@Hd7Yv`p4IgE60|13Yl8UJOD5hI@#YnBgB@>rI= zt43MXc@tmrR6}hxGkP$@W0S<*)@FO34Qy|=4>{kV&=5Zpjsx2)*W%mp-t(DW6IzwU zP)(Uw54NNp7&nG#uVZ$@D@;5U@BnSqTU-AZO~BAgCUgS&T<^v8|C_eK0jQR%Y9U(ku6KVIe3@cBF$ehKajM|5493L6n{W6HLt7Z9g?Ix;mIU0+ypXi}Eo zKP7!jMV51ju?LzB@qy~n*aSS0Sd1L@?0v0QnR4Ulx*LvWm#-1;NCGgU*I1^B2S&v3 z{5lF#1}VJlrP@U<1ZBywWwX43R%qJuv3?-uKKi+hpwU;fVJyXVi{J^%W<0}hgkgm55t z6PZFkle?`PFF!7jl#u)#zi(1Ui&?A0mFPT{m160@{e(}K-HXRC%-en(ip5^LmkKJ8 zaW`m*9@Eyyj=F5QaYt3=itNgSGarh%wG)ct5Wqdf(Dy;)2~RvW%`3CZi?4XS3<&iT z4D;jqLbN!DsaxZ8G}r~mbNc_#lQ^pzkPu?R@jG;rqx%FI?sq-onhuL8HNyHIdO_uf zZOG7AQX}>G;aPiK)8r*F8KzQ)!8rg{E_0O?XhifqU|qblu&CG$@a*1>yMTWvX9-V5 zEdj5`!|B0zY-TNm#glhr6IAq2jMhZkl-=*u6=E<1nKkZ*kc}L7yF(b$$5D86w7|o| z#l3J3JI`^q2E?X0^Q{`h5(_fLB2im^l5(|2&%)1aVW5&7I0}t6scJuq6!k#IQ6U~0 zVtE7HIPzt4wDhz&q#b9~+5e{$=!)188~eRDnOZj?Qg1~ziKhMf9cOfJLLV8OUFz`A zU|bSkK)g87rQ;p>sYcVt)q6TntLv9u{0TlbYBhwSp}fEve(I&lL^Uok3EVR{M!Qfi z?7f?HjFeldri;I45Q zJRNihe3pln7sM}~qs-)FN4p@qr=k*y?} zivCJ0I||V%d|lRG@4!Ibg_QHJn>V-nCVl}BX8bGQI zp8w&%0Nwg~W_5OcUURjmWqA7iweVuLD~^t>DUtRErrn;~0(RZs1_CL-Y{(T~MwFC$ zBq@1l?8TK_*aC$XSsy`rMH^yTx{geau}?Y%tvj`%t$-ptvsyptwOQXa8XnFv=;7$} zXC`u!R>pQb;n_~p2x89?DqoK~)h#5#0XGp9oasTmyWV;2fO{X%NF>yrw&}C9(4EN} zl%&?!sWvOS)n?!3WqaPi>e!|;7o$WN<2_A;*PgTd#08yZoE!ype zSFN|e+mZobh&I<7jMQ4*uBHc`9;=`}oRvN$ZS}TOH!o}T9vcTu20U4|lVVIcAPlEmXZLxE~|2#3JmmJ#7$__FIwQ2;_o;DV6S z1(PI)t7YD_FM8X$7Ff1K7kl-Mt?Ujl`sw|!p`jh+(6}v8SFQxj4)uBNMbZ1n@Lv^i z%NR7Nz!G|NU%cs<0LvWzlw?2Q2XF{)E=oyWMR(`1<8vQBO9OBx9cC#U$tE+H;P6Pt zgg_NS1l}OxF2$J{Ozn|>5swNY`szw}+5Q+HGz_IQ`@4LC4PA0FB(9^ZU(w=q2~y*zHS%7S~y&8jovRM0mE58&b%vqD8JuM_KXPJpx67z?^Z; zN2xiJo|u?8O#<3Iy>8KRw^H{;GbMH1?!>)gLsk13sJ(L%+8Ujf+ z+DRPdIA=PjQ2a@uibZ^Bk-H}c(;=o%_qJ~-jb z+0sa}Ns;W=Sod&8MGIh#u@ApsiY(w;_LAA z7o=Nuk2d6^(1H9&D2Z$Xe$;mpe?>oG?RW|$YekZsv=zdf{ZIR~2w0k0pxf-Pa3(s8 zF7bn{?uU4GQ|D zR6I8OEzj;J1k6m7P_w#56lnNyM(6U@fRLO68w^XhUyNqXi&J!a(Lm)t-K_s$JJhEz zyRO$awkr*KiRJ5S*{G12uMQDrIT}mrz0ECLa|D|QfU>ZW`?`2uzk0JWvsNK3@(Nyo zTRA5hB>S^)A|R!GKSOiXCTjOb-FQp<+N3Ply?9u#>^UO#Q|?9JvXT##fYbhF-*%ve zzHzXpCxU=clt7zi%C>GHS0Na6r`9B+*r(K&XgocZJLbqQj5mK<36J`>zD4IceMY(Tx^<0?4jxx9Uw9IKoz|FyO>Vg-;D9)S8ugBdIi6yZoJ0ccDbB zYkxJn(wI22ISxgFQCp&;in7}%BvjbH0QyatU0YBG^@&`&k8Bfg2{i@zxM=KWU9U&b zOh6)8rLKQ2N_uUWc4ea`Yu4E7chvHAD>$<{?)L?pCiE6x&dIPH)LG3O7~ISGr=DoN_7bJob+Ap5)-v9cNECOhy06pquTDYO{h$ zwsH!R3UWN;@Zd@6ZNPZV5kYncZ^cUvz! z^o$gV-qKT&%!;OH7Cx6_DL#Tm@xb%UCac6~#BxRnCknf;)h&-G92J35OO%dS&sZG_ zm+8EaueSHqWCN}_9FJQ(izD1!Pkk!w)AZ@dg8}7fkb+HGeZc5)wj)~KhHEULk<;j{ z_vmwF52zS5ELN5aM=lC@#=j*`8IH#uF(;w`$^rJJ860_=IYTQS4sGXm6bbAT4soEH zHv38@EuIsREQ@n`zp06jN!9#8Q12@gV#^RYT>r^vL&%iri^uwiWi%5bc3_#*5qgWA z@KJe~8Z}@EX1bx)QlV0V>s2;8@h3wFaMpKl`ka;SX*THmHeyeZJ(f?Q8x9+xeWoe$@e2SBv5?ZQ=jAN%V zX;tEGSrdB(wKg`?B`!oI~1~Zea2wiFo$y?6WWH`h77>v;wCSFf|$@Z7AOEk0kzI zq=qRbv)&0wYTzTpx#VfiyUs~U}P^{2>6{N439g;Ao z?1+@J=YB0dqbsF_)%ophiDNZXj4Z5SE^4OL-q;5IuSsgxn7~xI$rSKOs|#T+xh`6U zNiL<}i2}udy})}*TiYue>&fjr@_gDp05l#FBd|t$d!V=aY5L)dlrLw=K!0`4?s+BqKe!2KGMds=!v@e>(&%}vLMc4fdy8W`4g&=20r>=gLS z8-Zv+i;EtK9an7@Tj)8YZ#l#l7wCq#o>_ZiU61aYzeo!d>^=cLJ@@}&sA=EG^Ubq~ z1`cS8COMP2JZ`{`iUN{!Vi|-5v4)KZ0P6}IIY^O-FvIG~%+T#|EExs3u_)tYWo)95 zy^T{H7P6fSg#kYcVZHu1ZA+xJD+gvM+z%M2%2(d48LX)1S9M49b=9R+^8@yVl^B&adY^iV-4p<5VJK3wjzSi1Uu=0QPkR(`p5|4 zJ<&s4e{Cs(3*)_5`4=sMBRX=M6h*g2U@E)yHx|rzX+I z(snh&)+35&xF2xKDu&A-6Not;^x@AkD@S| z4c#R3msY|L&;E4wDExF~dp@D6!HpUabmQA^{o-6S%TB{tjwTlscDmiDz!}6M2V9%* zql;h?mqT40?DuH05?(E*Ztgo@Gz(V>tY03!6CqZKK^2sX&a32nesCKB{X`QT#ph?^ zo%#(<-B&L+lgl;gypEtHZ2p%pw3wxS{4ww6i{#kE9e%hV`}Sb=)k>NINQ z-CXpxAfy4QKpq^&5E%Qm7s*$lO0vu0n~U5T6Im2Nc)%G!NwywEsEjUfmZ2mDqQJAi z3O`GD#Gd4Q<2@Vk8eYX;>@g-isv>!9(^J1)g!!^~AuTOLkb&?&dA%nPna;P~5ueEY z)EW1L-^(vB=5+hdr!s)-L*z`bQ0mk0!|(&~62XU!{iLT!580`>AN>t5<#84e4alG~ zN)DwyX0lL;4X+f4Lj><&CnM*ul43}7_AdsyfveCsWQ4-2?J+ijEIek5aDK=bl%!S_ z5m$8f4+6c9otdBp9a6b~pE}r3%IEFqW354106(a9Lbw@V z!#xArhlKAP${{|38em2_mBO=Ql9FLk|6BTcU3b`}L? zSk(U7Jg6;W?MKQh&T96`JNRKQl{>ZkUaePd#0zhpJ9o~QU+4v+z>HWB{^>BVGU4L1HLAK^^Ug~nf5Qz4u@hMt0f1|3aW>wiB2U_lo29G zjn<@l#Ze$R=DFpV4-)Ld$8@M}^o+$y#9ua0*D%HmB4sGI4C{a+4TrO#+JR9DY~-xL zXklY(DV`=ehk07gLq3n=A+o7l1Ya)?7I7A@Y^&{^LpD3?Oh!s1_7QB+^J&ml%>!_?LwbB4UZVk zsV)LRx>9^ObZB_u!u-}+p|;NirCIY583?p7u;GNZyc=rg$&@303eAVE)5$?r6)PG+ z)J|h|xaPH*pq@Pcy-mL8^Z(!>Vo+h4mAbwD4i@?rGZMwC8i((F)7#GjhWRWnt}KOa zVaS^jQUdYafI-X8c6<*+bb~I1JE>=hhZZ#igoZI0-;qpkadox0v9T&$GW;K04(frM z5v7W3t-QCiMXOp5d{spe&jGu*eW{q7alxv68OW`r_YrB2jphB)^2XL$iCY`rO4n8h z@)&0(Z|%m@RdxjJmTvErXX01hiQme(HcQz@x7TSq7Lvy}TK2<8Zneb^)|sUC4Z0}{ z;&ls2=j4p{Ml#?GUf^ak+R1*q&Bm8Eim}RXk&t`w;^t4#je@P_P|v?4$8JKmfx>IZQGlh-d*BdS$#tHtHuKZWt^)!Up8{eR;ZTo(Q)Y zt1;1ef?BoxwplAM6*Tfbpczu#a|pJoG=q_`NBGo<`~4`gD5CZ4o;6&`nSUcBE$NVy z*SY0}jcGoJfgpe(UL?BZDC8-E@qLE!5$oljwC~rAEg!+xcu0->!|&Ai~jlSOSUThc=kJ$#70su z^uDyW>{K@t;a z5JxoGZZ=-Jy1B7cw7!(yOLt8aIaEsks8;5(m`GeFQnLG&gq(RjVMnMS={za7jL6;q z&a%nV9U?9@%on`@Do>!b6I6FQmD#vc>q_HGrM0^oV^qBX@vG}U6X&amum1dtoHulv z2t72Ii#iVq+&PAkpYmAor5SmWNC|1W8ER9=u{8>IgCsazk0^-L?6W~rU#G%GtC~(g z&I=;7unsu>U1AqOjmbqtBS7ND206u~S1X z`RAYNchq6SJ%|QzpBkPwol|6YE3zQsi%g;$Ry3MFP4l)7e)3MbclMb69(QjxtNXeg zZRz*=q`tJbeiAs_SIQJ@L=VD~aKutTJOT#_KnCGHh%}}Bob-qq*+W;kA&SQ@Q2KKh zQRdgF@6DPh6J`SsoXnWcJ=P#)8_&X`?qLh39N81Fb5nY156+HBSLqe-0I!InSv6ak zo1s>V1Cw;N(MtME7Tq_@5ZI@F;OCEk1+MK^YVBUeCOi@VYod3jUAcKH0~IwdS<6>$ z)+)DnHO{)aQwAtMU(XT-#K?Q$W-M`C-=%JR-d?Mc$ka;Vg;`l;$VBUp&?Ur3vN1$#JU@tY5mW8?p?D@OR7f0(f)n+3^PfcC$}!xkW7mnN-+V*xU`dnCT_GbFVK4F8%I5Zk z^PTfEll3A}YK}x{oopilHYaR#BrhPPK4flL_z7)T-c0knvS_DCILK`SC`2=u;1{8` z+GTZqJ4_SN-fZc8Woc=N$Jj){62yRS+-6vl!{H>Q{(Iv3CH3P|k!GP}IxuasSLZE{ z->#~jDUO5pF~Q(PzL96Z*w~j`V2g#cKqLZcyJP>nw>EFd46DvBO2EOtnCgXj@e_2S z8xJ=s9w1KL2{}kYRvV*~!qy0ds6N3|Cb3Ht$_96Fa+`*c@PsbAFGIOT+>1ONN-YvG zv?2`DlXGQD1T*N!GNm%E>3Z3qxZ}wq%%1{KiK6c2x?k=kw1JUoPg5W}Rd|~pFxT-* z*s!7@<5YpY0foR&u5;EmPno`pw+w$#6@8A^;{!B`5+tEObOaKp<28AHHohPi$Qy-h zt$yWCBf@wtYFmTw#BAeC4arc4AeS!Mp zP~4y=axxFbw~J@4>e$9J*L3XTU&C=`2WKftMF4+{=)M23h=~${hR%;iip011ywm+*&nRHWmZ6i2b>Mq zFU5GexVp{$XGsi4C=1+>%zoXEr**7uf#dsba1wZ!r^f|B4p4AW<_8dOJ`=a%X*)=| zKqJyw7j3ghAt`)%Ciida3p7{@)CYPr^Z(^H5y4`7|HC$gAaAa#5o;j26(mY3lRS6; zYS*9?(}(j2?bJR|q|+|kx%o=WGu)g#4P$1obS2dx#V78GS!WY^D!9#XfN z>JaH}Ig^+!FT@ZcF!(}EsxWc~Y)=jcdzKCd$|T?-Mk)y9PlV2SV&uQ0pz#Uh6F&g| zgnJF=TT)ue=b04Emv6-5GOaE5)!E;leVY^iji)iEX(n1Pmgct>-eo^{WIvu%%L`n& z`W`EgV&yv!5gcsiL#^e_t)J=)KSI{HAJEH`9?XwQU4N-Kc?&%Gc>dB#sW{IM zQVbhL-y4xUSpik}(v_9f#S&Aer)?@{%m`eJ#VW&Heq<`bhyeuFqeIo?V;=q6=^P3iDrS z!L5YxwmUdpQ8Hn$?GBDrl)MUS$6K=Bt#wNKyX{WxhA5rTKj}TGbJF+rg}*viS}1O9 z!xEARcAAEC7&|l4WmRgY73VVu z!>9sX8d$Z8D{D(zP9>0vkJNQ&RoPfvSle{#+*Qbqhm;HxYR9aS(E@%n$8;vNSZ#)( zJ(vv@=Qp<(i(nQ6*AMu0F4l!|E)LUtK0MM zEwMIAt4v~EP(%hs-i~xYMvl=>8UOx(LR*3U_D7Yoq*)fZWh7`aRLr#MdK(yw5V>5o z5sck)N{_@6NI~EmRXHBCGpz4)JVrr|O8-{h=y48l*HMaJuQD;|8_(U+sz4gvdaZY9 zd(q5@gm6P2*b5);!$1N*&rEh^Kv=XYBL z-|#2~fd-V43IsT~5>$v+^qAau4G{>-kN&@y>i&f)DlsO7xn8~uPs&#r3J>+04MRbd z?neMk!NncHb4s~a;DQ)3U3tR!cmfa*&qRg@9DQmY#D7G<%uk1-EiHB~-W-W#QEK{$ zbhm;Holknk$jKr8{6jp|_bgu=#VO=V2!()zb)!BlW+EZX{VM_V{k_ADCIec&Ndq$A zK7suiH&}hDJL|>6l4jEZD(w~uqnYqL5acuUJx(FZzeHkQ!)$U;e8Ce^uiO?Y%v#}( zoBk&+vO%Mza)bg3xCu0rzsfY{(wlEYfX#9Q}ClYpi74 zBF)I`Fzqh$c!R{nH99sU(XWI$MF-zc*{zeSU<_c+_Okk- z!ui$6^wU?T`hrXll`}ysIA`k08hbP)+?K6W&?kfF<)Ab{Cc5Bbs( z6=Yg$xPuH0b67KqQ$`1-n}swhXkEYvm|58#crED`A3vnlil`lFcb(3Ui^4$84w$wX z%<5qEg*jTs>cxm6^JaMBvGHh)d8bix10v+UHm^}=;S}?zP;&;C zFEt`Ei6;i6?Wnl107!GDl7GPpF>nF<4eoCPH2tw;Su_rPVU_`vK z!8}Xvv0%V89L3(yxFLm?!9?1-N-H_lJhsL;!tYv=DPjfG=P10zY%Gu=L@qrrGTF-d z$fLsWRbXbLP_G|1%=7pA7t}gwfCgtz;_zEaccU*v@V{Q}D~+&i>&*-nv&?T}yV8A` z$|icxi6?ahf94X!P=x*w@Z?{D{6~h$#0g@v8;R3oAdUEZXZ{{%@_Td+D$+n1-M~h7 z5?@}w5?`)0Yn^f<-t6x*>Xmr4Ua2*^HRr5`=%?H?f`J@B?3N(x;*u%2zMtQlq1gtC zg5k($tdI*&oCA=^78$$+kH7p_0#jkg5ay~vkQBZ-|M*8}rXVbcAa+^jrd%)Ur7i9T z2K7md=CMi;Q?4=Rk=N?{P)1zmq>ewt?Dp}YzCiYjXksf#f|qG9;+*%=9^3jjS{PMM zfMYkDti^xyrYX*e@V76Sc=8Z0Ipl`Mb0KIY%KSASO`f z#Vf=uuZZc;AC7&-PBp8*Jgptg%F5WxrVI5lJEuV+G#ipd%MwskyH zLU`tmbmAI~r2Vs$IsKX7DPVCjlx33a3opv12=B!qzb2}})nFU;JOFaqw>;~+)jXJS z&{!I7rA7Bz7;DmfgddI;@k%Ze2B(pe5k@PusL8{Yma$Mn6C81|@PG5Ck1^0#X32gP zoOa{(wcSqO6Yqx6Jq>E|Cm~oJqHyFg59LLcbjCG7e1G-}$SWLg^>~kwn zqm+cfg=Dw87{EU=Qo9Lz(MxUal^1AF2YC#_$14>lb26OVq56RxuwGiay09wCILu^8 z5R|veopR?!Hy5g`Y$Qm2>TilmYqu}Ntf5A|+w+2i3logx$&e#_7P9?g?`!L?pSy7G zoE7}!Gumu_uvS`JSzZQHr*zqvT@!za)Dp=|RF!^z~BpXZCh^^vhWhesN(hGc~A zW*<~>{&J`fd0y&m%eJP@^vj%RIcE88YI#ra7MG-_l^rNpeR%eLh7svO_y|bpPyky+ zH5e@IrresoA`0Fg?vh^VW&;@pY((Y??D@d{1QSheq5~osqc$);wC<>N#+PGXbf1)n zzqC?XSe@VACLc6V9L=x>&qAYLu;El`o+`Jrz3qlfUSvPoqRFtN)$WT)ZO(-ol`Tv^ zzdtiU8&EB-HFOFq|7EhV)SKfqa?KN1`ux9f`4!R~zG=m#s2O0uIDVz#kG9C-RR$_H{-WawzdGw{5CQVn|MStG{PcHWF}s?0c$EJYfrDaODQu&LHAVS9e~hfT=WwO0`?(`!LB0zy$~-N!->lYl>&;p< z-)c7QMAAEFlg6zn|4KPZ z=tc+#;^l==hn-XrPdx;wB6c;$HK~X_?DU4?+tEc5o z4nyqe6YkR-7OkF*RyV(C$R^24%yTfT!q>xIP5q>&|;Qc6S3D0BEou#SG} zWCqhXzge*^cwHf$PD&uuJqXn?G zNgpU4glWSKfd1HeA0Mj3#k&u1biWk|7x{drcDvT;*77@ddbQLZN5qprdK8}4^U+sK4W%? zUb88ba5eLWMn*#;R#=>wWFy!UZX_09Zi0DaqaWkP@Ai?K@W=0}KRzw6hWkH0b-Yg8 z4bB#{K%2emJO6p+)FNr&MTUm0b+EO4F&=R{J_rZ@t6)x~IZ;qTB3Fw>dq*NnV<=6r zcwk0;I0BgwXBjvKf#P$J^%I#{JUlM;nP9sc=rs#iF!6kG{moxQPQV^T$|7ePBDYBR z1wU&&=P2{F=Q9Hz8D5Q?9_Pq5$SCtCEd!xX$8g_#Box&kQooYIf>W_q?^fKAn-?~B zjyWX+i=vUZN?6;F2rg0<1K~}MO^#_VEtX*tF*9r7XO6|1@3&vcMLWCI5{C;f-Kh0S z<^F!H*>ljzHQXA(CWo`usNKD@H-2ptPERFg`G`l{1vttitxjTHX~)dchUN`KoICCK zlPL^O#U~cX*+9xgfY}sbvz7(n11VV$??u4^@*9cLLk&sewRehd=9M2#B7()H{i1dXDpd8~Kpm2utgs1}L`fxokBJW1jSQoMz|$;|H3laoBL_O2H`P zBCoVzHErjAIyT2l;|si2CdbDUIL=MCoas1FDoTJp10>dr-QnnPr<`UX=SmI$y|lbo z+FDxOSSW41Hy?$;+4ZhvcUbBe%o-U#c;@!f)!A@UsCQ?W#GyEv2P(85r?cCuw)(xf z)F!OVMDZ;?#iIckbi}xgL{13TEn|1 z$DOk8Qa7&wDVMl2?Uvm&V!{in<#;S|gRE?SYRa58(KV;KGof!TUiMJzl)2D6_-IZi zo(uPO@oc|wc9%D^FkAJx#J6@s0GM!dv)aj8+70!}TGQq)KJ`N5p(K%MB>n~_9gg>K z&ODYEtL=u*dCrLO8}cQ%WS$fP5a8n7}hOnjTaA6J9aV!aL#DS-oFS$_=W%yr1^Gwu<6!ypn31W<=n1^7{ zhhuly{>){nM*vif2I%h~ZIY=DvWENMW{!dxN|MC>6UkBt zpY692*V%(xlbiG|*WqyDi^x6|YVJL1GQ&`5F?-^W&lvtClrkgjhvI;v!{9VKhqzXT zT~r8*#}0R)NBSTWBrkn-(4 zWM5{K)YG&o(T3T?MHod|u2xIER;kkObZX6BiNmLK+vQ4aPQey^tQdQTcBnBnQEOI9 zJB?Q5)*PXhA`ZmWTjC>sPFNu{;7*J{$LPL?St zz1wdBnUKGeBg+&Otf<+8G3!eiM~n>qLvupzi{^IgtUW&Q>`UBfC(OJ-eyxIY4t0!y zXpozpI<;~`GzaNfAMuu;q+&I+b(BFcB~S-UVh4NWTeXt%43beNvtYn>7ESQ?O?h2s zp>=ANR>$+r;QIw$_X^g^zFV+-x7F{E!y((u_sTcqrye;8DF`fXdrXY*JGYsv zQ}bb`-c!pg$!bg&s4HQh5$RB|`;cM?vs`_)cZ){jiwS3RqNeyw_Dp|3%<15jJ2#R zBbTKj!G&7ac{7?N@M{B!GUC_h!Aj!3)ECqr5_GK?Ce19RXqqnx*fWHGZi zPR!3F@D6eoS)?Wyk3LpJi`AnPO9=_E37|ZoTf=;BJt1fg+JAK*XsZ6KO*A34vXp9?-ev^Z zqM0iB&9T;=km+k`Ia|p+nXI}8HaZzSyAaM3D^69rFX+@>ka4T-hjdJCu;Xa z+9qr6rH(nR-Ej=CG*!`I69#;=#|nba&GQVIwvDA=V5lc~8x5ZZkvq~$-`*=n9*c`i zFni)>ALCgN3DqbfvG!g0+6YQ25~JP@WH1xABgyd-zr#c7bh4ztj?*VRFThkF#R+sM zKt$$p(JnH-Och>#qZ{qEn!RehqokmF>Q+1wyjp|UDkJi}(H(()NmarX96GC=KJ09nvysIS8;}ol%A-vqIHQL0w zLPs%%ZG}{e!ZC0IP?LD1nW@tZ5j2KQp|7sH1Bvko%}GAXsH!a3;#o2 zs$veGs#v5GE~FhKVObv7fZSZ*y0Tn+{Y@Sr5U#4=`Bf7qF!ideffK`DCSF?igt?l3Viql`V6=FC2!( zf*pk0V%^5P+yC$){d#9kth5w{Lxk{wlyd>DYNn|v@L-wBE{2n#Wln}5oETltF5w-0 z4^DeDcINZDtY}R2>eO-8V3{(7;!&cPpUb2%4#0@rpBLgnBUELhC{qoMwjB6ej+041Uoi6 zfhw(Pt<)~xsKv%d8u>qx?__14s8Md-;E5#NR+H1WzgDhRJGscf(TJ}_jrtDH5Vn^JrWa~9_9RKYd2?~YsqZG;t2O(f-)sAk?eCGl z^Z(R)wY^YPcxDcu*6p$nk>a2eq{`GN7D~b(ceYqX^V{p=l!mBTbBwKOzrlt`Fn6fX z=QTbE>DWR7&P5KFn$HjH+NDC(2zhp>jE_z`l6(*Duut6d5oz7Dar*BtA+yfu>J31; zKtaP#KI}$&c2qU9C$Pc5fU)zM&iOW0LQ4Y z2jb~9yxsxQ3<^$+vr$1!iA%0=h`@Wqb2;?-NRuHnl$xi`=a5~A3`Jshhcz_XfsrmD zBB0G1VG!vxr&;P{hy~^_*pUV)^Mb2W1%al9mY*X1iXz3tLw*D|gX-E)Gr$Le;I0qI zM^C`9HKk*pP4_VJdhMCA`h`FW!$}^PoD>`Y(PHuxg_?a%lI~@AmLb-HltyG<$k-L| zJVQ2-SEkG)jmHR0{d>u=8ELx*%qIccumhu=n=fwEn(SXp7|7SF@eM?I%ik<_Z^Dm# zcDcb{Ij1TTHbt(Gv-w&+-|p0JmwUDBd2s@B$zJ15ek-o1G(HIf`YC`;dz1^CEV)SD z?9>{q3VX}`Y}{-#n=Sso33W7;#Sjkdr-qUj2w6rL*mk+otznu2_5I3NT`C%5s+3B2 zgJi9Cs~zuhA8Gt|KFMWib$K?nBSdCBkuqsqNa#lziZ$jeCC8WGgkcfOAeCnD=tzYl z#q;Uk)cd)BPRZ}+!E;2@iSz1_x+G=gc!W@+@MDH1uPel2MC`D04{<) zT7YFtul7v%)mb|^)Hb8>eG>T{Hhu^l6UIT(J~&%G3WS$(;~Bjo2bMe9d=`!avKu)~ z!qD-ziZXkrT`_-{>d%>3ZQYwZpyF1{owGM9bjS!P3+g#hYr~iKz}Hg zI~mR(ObhyTxEG9C=R63U+Bh3uoBBonx>W^!ixEl-En}ZZ)3>BeNog>?h{(;yLQERC zN!+9>Z}&dnai^OX8Kcnd?ImCbTw5E-c$Oi`+F`{)qXBwJ+-G!;fRh-gZxw#d^2WsqfXBI>vS1&yt&pH97bqr?@mQlr(n)o+iH3{4f=7+V51hbUlyHpfYP=hQB9+vQordR%+^MPGhHFLS^M?-IS-(wnivH?VE)=$foz@qU64{4FrxydJ=9ktkpTD`9bS=< z$NSLNrZa}1Ek0X779544e)P@%;=NQuz35wAfd{?V*bUJ-IReZ7;S4C_P}EhzH`muk zsBs~+JQf_I4r-3@0*5AyNNQ}!vQ0uTfRaC>aZj;lD8%s$5>9ZC^qG=cxn1sLX~G&f zi3&{b)8qoTmR9`AJMf=ZGrmA_V{cD74Ms~uJPx#HEHh&eFW$TA(XlV4m>t!@87y(> zk~cX-iC1ALD|MP%pkU%U06FnQ5D|TzSQ-Qr%C^oKl$Z1!`CC6Bet z4t}VtshvhNWGQx0#H6cwE{<;VcvsFc(7n;*5tniIKg-1+V`6PYQIpq}%F0G?+*nTm z(Z^ybu_Eov#)!CS3aG@MI0E1C(4kHhRc-$`Ds2XGxDxry&eO~A_lc*^&txxqVa9rY zPen`!Gm@5q@y+&h5oe}_qhb^cn3H|UC{|6nd5PK;8OnkH2v<=eeqiW@cb67^mDg5y zz?df3y|Kr5GDvB2>FP@HB{#WzWp#CJely)5{>#{FX=NH+el4XB$#_S?G0BN$e1ODu zwu|#yFZ=y{xOd~g28kdDL1!9D4d+7stQY?8*-Jo4|AuI4%H2AG&qQu)_9x9y$+Ct+ zS(nr;$62SkGdyO(Ti9}es0!&lXUGv#N*%Y_t0PkrLmXmIRbo%3FHo|dJ)oJ0+Jo+i zvP(kjkEbuP(|jhEHUz4K@U={tNy$=@p*R8sMFoN@M6_dxlCDCzMfC3zOvX)S;@}hu sg|p*AoM4DHPhL6gXyfJ{8!J>n#J!<{9 literal 0 Hc-jL100001 diff --git a/binutils/po/rw.gmo b/binutils/po/rw.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6d5d7b9ef17ed2b076e3fa830acfce90067b6112 GIT binary patch literal 615 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

VqO#OY(Z7 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 literal 0 Hc-jL100001 diff --git a/binutils/po/sr.gmo b/binutils/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..572ee0a0a36e99d890f9a398f8f753cc16cb63df GIT binary patch literal 258169 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

nvB8CTIYD{16c4;$ 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 LALlVWp6vet?F3s* literal 0 Hc-jL100001 diff --git a/binutils/po/sv.gmo b/binutils/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..328c896ceeb2ff1c0461a6c9e6c8d61ac4cb86bc GIT binary patch literal 204326 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 PM%rr{{2FRDX7K+2YW8)O literal 0 Hc-jL100001 diff --git a/binutils/po/tr.gmo b/binutils/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..71904464e412a81213d3677751fdcc3fdc3a090d GIT binary patch literal 129842 zc-ri}33yaR)<1j$DiZf))N#Eok)Y|w;)0Pd6G%`rEJMO(#BkGnlQeX?+rHf)5gDD$ zS$uVzaoUs<)m^dgPFET9_fB`iIF#UXha1KrI~&G1<%aru?Kg(8Kf%`t9z<{jK|(RM z5XQr34Qq_&CAc2rd|n^vejE1h*4Bkl-OTc<*0> z_gaFz2*zrV@0A3(NDmO~L2w>5nyxeYt#N!H=N?k0w|r@Irz`1aBJ) ze!M;weApuCdW?>-y& zUl1HX(5wSLC)9yYSJff>ErNRx?0F9Abs#|^Y4j!7K=6`t(Eb|;9>;hS4PzIACr(5= zpGI&X!J3K4?{a~&CnBG337)`wKbLq$FnliRb2q^gS&q&{{r9fNdwD(Rr3jux@S%F} z;Zu1(Y!c|#OhW#Do&>(#JPGxgNAOf`Zwv2(1WvVp_ppU_SuSvo29#$|1LXC*2H;=U zfc9M20K6>?D95p3!#IQ6o#2_=-eKgoDUA4%h+$L{j70GMNCfmhCpd!Op*Hw3h2XCU z-bru}!PPeUM^Pi*!;O&pTN}ZTC5@nWKoiP0q6y)D7C4*WFoFfm$mgtP(7V1F<$b>y z@_S?y;b%pW&tIdE@7Dw_BX|I}x4@kzlMHgXCnMj9lhOaK7I;6w{RqA^8FI2%-Zv6F zhSN_$I~_L#@;P`4`ro+(Nlh7!!1gK952v6VZX>vr+mm1|C3rbz81;mB(C>(E1lukq z`Xq=?Ut$oA75U&YV{S*Cc>p!6%%qx)Z@mHXHr(c17*Kh^&!e6cc{!>=~f2H89 zy8?P@mn$I$dtM2=zE^_Y*;j&2>y_ZsjaNcHK6WMOyl^Gb&m|aQIl2=4%eV^sIru81 zE4>QztFD54HeUrkTzM7r>C+OwMBw*Vp&UnCjr`8I8sW891Ai*P!33|p8gjOb;E^mh z*Px#dxCU}C^cv7f3cT(b$jM6tX=pHZyB6h{crEDu^;-1Pd#?q(_pXIr-*zqX-}gGm z&q>!opPxbS2!f3ScOrPPykBx1@b9}0{eAv*$iMsb;77^zz#DQs`g!-)9m$hs$>(`t@fw zqFnuNLVKKZ6ZGFjH-Y|r0^hp{}epMP~T z^zA=xM!DAA40$=?7VvxcEhzW-x1gN&--3R-{uas8_`Mr7<+VKa8FTNY&+4#Fr zj{3XNf36{T7Qv-=L%$z;55gxA+(-g_+dXKHs~!aZ7e5I3G#)aH=L?8e1eX$A_%I6x z**%XMMw}S(;1gskQ21g0HjLl%xb-}>1=~F@kgdb-1S5pM|11h4y!MwN*Eh~a|9E;f z^y7lrkpHc-p$C5P3ix&8E8z1f0;^vEf2>!amo9q+@_e1d|N9m6&xNn3VjAzs`?6P% z-^y3eep_FGUM!e{et+m3=(CgNKpsZUft>wi4$Ae+9O#Yr=RjXyYE|ucLp&UWY#V>+2}*{jWnl-h3V9`u26uKXNYg(68sBJ$^G6`LxUhAFiK^ ze)9NS(48|E{QX$)znzPIvHv`@->LIZK5HKOP5V6X^)K^K-GpKJ*6oHRlcRamgDP_t(6EeqHn?PF0qCz2xNQOW+v6>~AMh6H zblZ=+n-y$yPg zzKwD(cpLJv=55GR!9wJ-??RDlc^@P2yoI21=|ZHxb0O;e{6ds};X>%auNI#Am3}{eZO}wew_La#+Bqd=+8I5gZjMv4$Aw@JD}U+UC7yy z@1mRo-h~|03Y;wPB7s-Gi*f7zcTt{o??Mmkv>5VsjKCp_A>R#)f%nJ7pnub1=-+=W zhF$ahV#w1e@1b9u{vOIx`ySeHiiA&p5AyxD_s}1o5WKkriDkyB_aOI=zmIyp|32P- zcpu~7kxKwaF2VRSeF^00o+TJJo?ZfaFDw!JcM15vaS8O@PD@eFy_bS-=2G;FvZZM6 zx~0hX_ws(%QrPeFmx5o1EkpWqmVqy^Whl>O%g}z$Edzf)U50$WTLwPvxg6~s5_r~f zr9zG9a`2(w2cUQQ2au=e2cR?k1H@lJu!8Na4=|pt{Q&hlVg=}ztw8vM72x+}D^TBC zR)8P(uK@nbD^R}`D^S1gAEF-}_aVZEe+Yi01YRNGkAH}Mv*bhM_l>|`tVH=vTnYU+ zY$fm;EzMGvs6NW6a0kTT85;&{Qf5IcL?6>Phn?m z{1o!icQxu)xf*;qdo|iGCGUS-jrz=#@Ml&-F5g})cGep7m#Q_O7hMB+x?l~`U%m!* z*WH4*VhzTfZl9qY_xKF_JnA#l>&(xfk0yMEd@uYAbg%sk^|pn-hd#$Cm=XnXiE4e&tLEl*i`Mr1@%JI*2=pQrJL0(^8 zhkC7E2R?3J2fDq!fZh#%f&O^4z!$y{`}PaS=i%#7{?pc@-OgSQeq6jBdhp)$uz%(X z-j4zg+WE)Euo-eQc{BKa z`DXOvIh%pEaWm$1hkXq`Hh+zNdCk|5<9oga-iohLp298A8wYHGzBRXipCh(FUK+PR zPq%MD{;zF8dn}Roty@69@Eh>)&~HQ^d;>lW`3Ct#z5#zO7x>UOkhl5Ypq(~;1AgqW z73ogi3cifniu^9yD*ARS`1!KDuiFZG-M$6ABfmv|tNa#pCwvQjX1)det0eyUZ!s@g zB=6m~p`RVJ4f5ZQ;I6!WunlrQavRF^`)$bYwr!yQ(l*T7RtVl++tDtAw}ZcJ+cAFr zaXa{X$#%5=zqUg^ytW$jS_&Gm7uGjtm zx!V6n&>!+6;?MpOeE#i^kjEK6qMon+2!6i*BkK2sr2FYdu~UD7Tpjb1%(H%iJdXSc z?K0sf$WvV2e=F}-2>xvX|NRs6!h1h~ADezc`HwOR6dXp7>z^dZeEbJNF3)2Gd0lP} zK`!qb1bIHcj3Af$V}dN-TP40{L4mTj4k|!=5kYRpQwxAsDe+?oa=F6tKAj-*?{5UT z9*-9w|JMmJKb8|@`P@v9`{|+G3NZg7$a2%t4fJm4hI%|9@r%2mT${Qf|AOwIyB|T; zkH>aLeFk<%zLnj9H=#S|P3eyE{fQvU=|2gw++IhJ+vg5}j}hel@FGFx|6GAfCBL;o z|A+3V&%QgMT)hc$e;Ke7$}>*FTXsUa3kb5j{GA}{<7ak4{vQ%#J+zJ>w`=#E3yc~b zUkI}POYMwuUAr^z?iBd^&d7i9&ZyV=ok4FqL6+-Xb}3NyOut>w?x*a6@|6>0IXq_< z@T-L&>+j4i;Qv1fvYgM_1#~~z1?|6a7w}={9w`4WdVr5*J&e+8s&>JSOUSMWdwDTpqqFy)2 z`-8iJ&a7R*hXn-L9(!k3@cH1Lh(D<(@~`ZPde`;@KiYbtyjKZ)swc{~gdpqb)jd(q zoeCje2NvSJZz1?xDKK0J{{3F!uPy}N?~`FW%h^a`=tF-F8Pg%-zAavfYt?4MEnQsog>EdV;LiX73Jtv6&$2vxD~l{jxp4 zzwvv3?~^6`cY7fH&3ho->w6%-ul4}F!adQiPu&ym4SRym{~*Zv_WnK5J`45)zgO;w za(=ZZ^69x3!p*%<-adPwUgP&d{w;d}{}REwUGN^?3;k;OUMN?Oy^&Ap-l*5F_6Gg> zy+Nl{;FWu$ogdvB{cM4}Z;^ES?t^ykw-5MOyARsY*$4Ulc^~lUA%QRM13k59AM}qe z<$eEsL8s5Ykk`@sqCYh6i}p_o{GEhfwlC^;{l4Jez57B>z9M+r_XS^i><4(Lz`g>9 z?uT;L?FT+2U!WXw4nTV?I{^Is`T)q!!3P$o@woCp;I$rz@?AoZ?d6*f z1iu#@2)dgN1pj_I5bb#6LE!g*gTUW24?=k3K`8(9gM@Dc&t|?Ig#Kp!66uP6iSm^F z67`!zknM=S5afB;EP}i)vFE`BYQ6Y32cw)f9gOyQ^kC@M=Lz!sWGz9q-;O>6v@Lfn2?P2;^eJA>hM)hZd;uyPP1~RV|029y1OF-<~)Way|c0$m_O4LFd53 zpbt(w4DaI!^1MEC81(8>hoN4d9)^1EaX8-lACCT7cR0c`0&h4Ra{1!nsKXpFa}g z#2!bXo`)QTb~=$D?@#~zDA3(>6!ghnM`N5Ba5T#CD}rqIk2@OjcdNja1jq5Xc}#(t zU$heBecMNmK|B3Ka3s?yf}H)O2=#fc2<7c|Y=K&T9eOO<|L@15J`0Zp{oQ+^ea`HK zcC&h+UjOKYbRQDrc}#IJV7M6lWkxaREh+|`19}&z`EG4*wAYork^ZILsPAsaA^nNR zAzk7)NWCsl>0`4ywA1rc+f2`fjmtoIGV@760~PQ2+De zP_`dSkv>ZBbRM4wvVFg?6y@u6g0$la$oKgZAP3$06d29i9({l}s}Jm#o_)cmiG7jJ zrF~KExqUGX9@r24>bQQ8?_c#p`%df!dCK%dx@RPOYd^^8Ui|@!`Xk+G{Xu6!fAp`o z#9z@Ldi)-Vf4x8KpcMi?5&X6N(GGi^NbO7dtDK-iilz1>(wC$tUmI0m{Dl&{F`n9k z-p8Cd1Ha`EZ4IM{q&V4=!dVG(2n0Xq2CoX0}dCMX$JmH&CqYJHKQNA+l=%Z zn$a(}H-nBDg+3e>Mf&C_#)r$JNPkNd=^lupU;Qfz`F=Hu`hORN+#WI+{lDL2==d9~eXVCdH6X zOALIzE{1x&8iPE26@#7_)B^o;Z42-gv>@FNEwCSY$5FoOIOxaY;M+grXvh2F;L}@i z*n3~bF^+vL@xMqEsP&?<1niUc1k&G~K)M$bkl&RF@Tqqaax)}}_wh-TE0x5!b4wEC zdoGFb@UtZP-67|Je)V}6=cb(pJ@UYL(5Gw8gM1%BgJnIh7o;%G%ua#NdpqFI00-ll zYAWiPnF{&3dn)wXa)P{0yH6Y1Db)sgSGA!&FSVguYuljL4sJ)j zV+cmLpSC04Z`*;_`+Vuo=R3qoB8xp?heDw34)6k!emolUJ#0Ga^;d#p*nXdm z@ukOa(Z0X_E&4;-ZxKH0x8UEl-$I{NUx@Pk^+MSFS6+znyn7+Wr(a%#_vl47O4ig8nSISmgI&=z+TlhPoNX(**Y_<70}$6+La(p1&mcULf>w<3H@!C8PEg8Gw?oo2J}FB2FB@&W}tuE zGz0v8Y6i-;Xa?q2-EM|l>~k~td*aRLpJ(0-dvv6{*W3)b9#4?hMcQsgzx@5ppg;3w z==*00@_xXQn<1aa-2#2pdJFQo=@!VztXsh6)wiJB8*f2>-)|<`uVg0Vymltq<+7R3 zSMz2f-}h&tyjy32?jE)8=^}M@4_xZcf9^39hf8XhDZbd^pBDvgx({@Yz8~Y*iT6W4O}HQNm)#FL?S=bg{(3+7xbFifci#ul&eabf zKU>1je*p4))dT3?uRZ{|+xP&|@Bbj$z5jz~-`WSkkNATaS1x}L`g6g9;PWmIfv@{N zgmUzg_mK~w{w)uoKU^X2vmSyzUi}ctf6T+s<7YpN@#{|yBi~0J24ChqjPiZ?Fv`F0 zBj}%@NAN!65!CbCN09H-M_@l+^$60x{|M^!{Ue}r$fJOR9z}VqM}ha}N5!5XIF{{+ zM=^f(dJKB0Rs?Sg_C|QeH?Ny;R%%c zcTYf$ZhQj$`{^gpuAe;tJ^ITh(a+C#68-9&CsDuXlTzL%k?(yH|D3?rpG5f`r9)CmrD5d=g+K6UVwdb^eo7A$t=iaVix+r6SL4R^Janmr?b#5 zJHLo_J?2G>bCDNepUiv_?f&_TsQ0Na0e{R(uxrvU$@=$8;P29xpm)~2gz?UN8S%9* zL#`q(OZi_$yFU0b@D{v`ak~3#@MGj`@S}M)@|!jr{JnlQ+Vi2=kcT<5L1)Em*yTUX z#&~kZE3m7sA{b^lAUK}&%^bANV$8$loT3H(vvvPkjyR5H+uXuQOf)pO?J`{dmahSeH4QV1oNM!KZmX zH5c`KWiIsQ^109_Yv)2Qd_Na*cFa7KWB5Gi$?!bL%glMuFN@}(U;a1`{qp!XP|n}H zfqGvk@a8vAj~CuRKUnt$>aoY0sQ0mNBHgGrA=kfs6X|BYiTqxC6Xn}1?>o=Ocz()! zvG?agUay)D{y#h)^7Q6>@cZ-m;8%|YD94ctknivX=yy{WpguP&kafcaXrE;ZkYC|j z(2D~JI_xj=7WlOCEzsHZZSc9D!1UXw&y#PXJwACG`5dzl{pgH^$YDAzp; zVc)#F5PIn7MW|2HBDCip7lH1}i^OhN1U*ym4&?3FcTmoA-a+{P5M)2qN8SPb?(ahG zPk0yegu(Bkp69=d{&mm0=-y&yeIs65AyMe;O+80`rm2qgRkej4?fO#AM)|i`_N|} zy)Sn463{DIg7*2%67a8G;MGe|ug8|4T|Zg^x!Qjz^x3gXA@9+p&svkdjQaT)r}+-1mT*X0<$4_*$vbj)(}zwyhV9~zf~ zf6j8yyJR`!_@3p+_m$%te1!76{}Jll{bRIS$;aU1=#N3K{bR`a-#GfDeEB1bn>l6O?m~;D7ju*w3GU zZ~J}9ph2DGPQ?aW)1t0fW4ZYBBHTXDqHTXSdHS}L>HTEGcUXA=N zTMc=;eKq>ibE{FG<*PC8TE80Q{a)zpxd!h?u0g%}uR-~Ly$1PCkoc&)Pm}jc*2uo- z8r0*#HQ?{OHIV<6g1=!6^w*DT&~BxlA)kq#A)m>gfp35K4C_Y^e1>-1?Q_}p{2c94 z`8oJ8>2uWccb}tOuK8T-9UW0(AHK0{lGU3-sfGUw}__U!c9y0x$ale7XAz(3$-O$(!Yauf2|cQfiUXfw)@+6=y4wi){E$<5&V+|4NO2b;m~ z?Gk>-*C=P{*J#Iczearf*PwU(*T8%7Ysl^EUt`?Z`ZeUM?-sP@q%A1l)GgrW)my}V z+5&oSZUOxbTOiLpzd`*=zX4wLH{f6N8`S@jZ^ZB68`O8!H)#J&0()#l`a`!uKFYQt z{kdDwUKedeIquyGIUweEQSoacfRei!|CotO9WE;rz_{IBltJ${buH%fCPz3)T6I-$EWJ=apY zCt08JT5$o+CM~Atsq|~6_bGyVF58myem#Z%MZ(Ua=Ol%Vq2E(%TM)EZR}&3C8)*nN zCinul-FU8gB!&Hv;vQi8zZ?AJR`}9AE^t4o>p_GwU7lYOcpAYm^!tkIK(I-8^&_9b zD!`fK89a_q+5;(m@9yjq2Ar7CKTzNh!e1lL(+b%43(s4XKOFT5L(Ys)c$95r$?IPN z%LJdMxW?7=d?NkMq2F~9KZ)Sw@=U{}afjevA#l0Gv7FEF@v9q!|1nD@e@kIw38$FS zK1481zllQUHDB7Z>6zF2uO&#Pxlz#Fi(4mnJdYS&z`lG`e_oTK@Nay1-N5JF=(ijF zHu+@pL&96iHm%ScBlIpKoNwrPq~IPv&x7gNCcIPV_W|3n6gE%NDSt?Mev87W8yn|J zIPXvJT!8ff&-HKQ{aB%SAmLuY^8(3p6op^H`v~-YH9cQLH0JX-BlzD69?xC=PR~oY zop>FOo<~bucfxI?bU$=c+h9ij0{E0Fes_c4^<8W`Q}|Y)yC>n#5}e&7>?na%lxCKX z-$Uj3C<-s4=l|)BGlY{Rd_;HlZ^ZLPAOB|)&f^sR0>vLr&oc$**6uh{=>J5hlL-B5QHb!g+*#)r5Zm!4n9++Fj09E8kJ- z6O?8P`_=N8LUAz)qp7`du#~MQpUotkcj&h}#os7-I0E1E<$o5%mq@y2qL_ocA!gsw?2BF`sKTt9jKlcc|_8+?%YuTWqsuUY&0>@Z6ACgGh& zzaI^pP5zhAX<_?<#~{L4WWcYvsT=&a`OGWZ`2*>F4n6-Z&p3IBGwxH*03fR{hXR^Me_wI!Ax}>|3!r!3ho4Vud*1ZJ75?Ah{{Sf;JN*N~ccuCK{ zqTlc7_cy_rEBJi2x=F%*NAV-NvClT%&ynzd%lmYS`!nJHhJIzjk6k40QpxX7fp;(+ z?)MZ=Q#+%GekBz42EqL)tdZq|o*$;)bM$_-0YCd5Y!mUkgTf9hz?~}mH;%_s3hT*b zr01yQdk>GV^t+YipThno;cWXhGH>ZuPQPV@GmCyNOZ;a%zSHl+0-TRp#PUnOm!$m5 zdG5-3N$U9|!Sm_&B#(#m>qfZ05n59z{66}9CS{#Z&jYy)*v=Dr->@#_ae#iK=r@$! zryDpc|BkQit`T@Sr5i*zClY*+emAl1_Q}~1l4dr+GwAmZw%ZJx$v9ccd?kg=;Qm4H zZxS3yzj~ta1HGR_&wUBfG~W1B>usJ#Q1};;&jtx!!E#4oFJ8xwn*KFM=({8R~B(+%f|UL@Gab{s+W4^ek2@jOwT1;O9_lx}C{3B|8x-7V!TEWnwl zIKd48V9^yB@PxX>yxaPLG9qInnLRxw{VEj`aCxEsBn&U2{ld{%_& z&2^Tvb3|sI(DNT(Tkc9}KcZhh!TBj`&U7Wk-OOoOmlDpI^!p2sYZP8UxC3}j!t*aK zhfki{c)lj@>Rt}1XIt)YXRKxY&2}!&cMEWCP>sj*%s!Cn{v#gGc)V3-Sjg68y+-u+ z61w;B8jqCy+3q+~<^Ss;c;B&}=`NF0wjl_<%j2?vbI|-ZfNdnfw+LPCWRjEqGq1=Tj8EmVRebcsqr~^jO8dL=^tLf%8Yoc4gl4 zm_RVizDR6ucfDit4!R^jk>rwSs>PkIQW1`RM%*J+m*~ z&1~!VbXc43xjQ{43UKDShV_k)pS1$tl04Wi^kZ#bvi->GXRL#H+@SZT==Z6_U(aKO zJTDS>8PWNk?F}AZ2>0&=IE$wL#`1cC;P$2G!8|WFa4wGj_Mvwt%kKUw`z-SOfyZaI zsikg%2(FOl3w=DfRMJ1hru+Z6s+16W(j|UP179`u$PD_ha3_b5;6%>f__C zJTK(FSb%eLzm|MXCY&1#oGCn?#~ELmN^SGW`~Ct;y5r2@dlKJ3@1M)_OfHX)##34R zc#h+EUPiyuec`+o#_NO)d{+y_okqWly74(T8moAHfqoyby+ZUJCip15??N!j>m>Bd zd%cHBUT^v6K1g8~u^lZu=Dq8ec+91An*`@*dOoQD=P5Vx9Ej~ng747pGQr_BuU|{O zzM$|sSr2ggOP;*v_&vSLwi#EF)U|1m)3K9o-fny5MCFd@U!T7JUw4d&!GaG3+F#x zzr2{j=5>=htayB-_XNFPqU}wBlPS$kY!~tzo_!1%$0t9(rRQ6i=RDu%IUldf@|f?J zvBJWd_Lhc3%rP5Ni59cSDJv|@4Xi72CL&@?JYqLS<95V!@}=uA+NEHszq--(c^TVD zN8?RqGL>jbSuJKXp0-oTluiGaQHqJct%yWYw&R#)wHxQ>5({JD#SJQ`E?0I1#b&Tw{mR(L~%# zC+M+>am*GgnWVC+=-Ou6tc<1zDUoV7YpsTuZAKl_Zb_!wOFKYt6Aq0MHW$02gjon~ z!p1}_mYB-?a;8Sp;bz-0t(0vhl3Y|P#&|_i-9{$Sm`Jr)Y2qVA^eS?CnJGJ#2wSRR zj#SWMmN6sEK5a#@HZz=vr>$t*F^ggmv!Oi=ehe&f264+(q{7Y7Rw^>JaT`ZeIF8-Y z5NkIhnU*9oU(;2Y4oPH)N<5LK^28%%CO(xxG~SqS@u-Z{ER~WvVmD-(R2jHcg7lQ= zRJO;hmS|YhK+AMohlok>sVFL;)9$$HnY_uAG^?DMtxSPhjw@%iTG5zlO0G>L>Lg=U zyJ{wM0B+c-SR)!G-JVoUt{B8EU53Xq?6w>xa-(q(&WJi`$TVlrkO@zrLdPi3jHw=B z7N-+wE5=ESVi`ejdUMk1XhX^(5meZIy8f09)OSR}Y^83a>gTI#VA5PU z3OUVE=;vgg0mMs^&t_dX31ix$q-&lbU6X=F=gOo}Sd+h?f#wY0G+W#hX2eQc+-I4Q zr5)k0j5TrdFm?c|l(K4!MZ@WixubDWgWM1xK~&O8COTzy0FxUx+F~`S9?u=VRF$=! z807NCuPl5hDJ$MY4Y30(C!OjDh4cvP5@Kxd1);MumC}v*}YOtr5 zn8{?ggg8t?xl6RjF+;=6x`8dJXvhhtqRI3`H;#&B2g_9zPX_~~pkyLUG0kB-!UPK) z3fXPpSSDhJG#>}DS{-CoCgQ!)rrnlI5XTVaPs70>D;9H;QQp9%K(|duZBaLE^b*Ds zA$qqmv9!*YQVxmPR?3ucQ^GZkK-zryj*Qb#E#>55dPbTg4Taj)n-z0lSC$I zr5rouX;CCB3iTa;F-^SY+t zb0GbPH1emo9gQccWZVe?_^}w5BUna-Pojk+%o*YbKa%!Hm{dW2jzt?vJtFBuA{GKA zd83Ytex$g0l!P9olcdPfO@$hjQW&VfAaf)IrJ~g1bPuFvR8hf1l8t)F%B3kB_Ht+s zr84m>fox7pHK#VySPT75X&P*k&?FIS=yr3U0xtV%l6E-S*iNlXx-(8}H!G{FO`s+d z#1ox3zy7KcH6pKSzUJzp4m8*fbyz5*Y#Ajgkdi_EqN+#;hm0|9sw6d>IglFBYw?=) zcp}~o`!^Iq`-TWj(#R0vjU_sq^kBHXX=>EZ{Q)$ zN!OM}xYM@gNf~7$^h96jFqY`G5Zl<=gSgb_PN)9Zl9on_lelV-w6 z)$JVJXN1ea{)&!={*~QRB>~mh*LtVx0_D+GUOVPXfW95W1V$%0FB7%XC1&V6e+9;o zwP324Si9hn@zO*J*%b(d$L55{L;rpzTiYDa!h+DhpCqIn+mLW<%A(cFU@QVX6lF~X z{zj#!o3SREnj(o26eOtlxr$jTJA~4O6D>(Atvf|ff*Y*xl&MxKVggB7Q-p}Y-Oshk z|4fZ4ORUif+dfS?lt@9vXKBV!G(@;BlsMgN%UB>OtKF1Y!;NpKA-3eC8_xZhEkHH^ z{c3?GlVLVZy~sqvWF9n?6r&0*x)7`Rx#OLr8)N4C;OyZkYjiS;Q+ASQE1Gs&I%Sz`U)!lx#me4Nu%xnE(jkg#jJAo&9f-F< zIf~bfk<@7(K`2W}?j=-eLcdV+)7;rfr!v&1+!6+u+v<%d!Il|pn-VUVZ5`MHJ1__& z_4%ET*SWnUtlB4n{glTl<^EkCB~w> zyUMPEM`T)5n9Qq8|1@0B!v;syBx!8ak>M!P=FRA`2y{K+sDzSMm7=B8JbwwRiH1JoH>8)_a#HYj)Q@I1jxQ|-tbSm1AAvtPg zwyKKtCcMxv)>-Z{bGE|rVn~#7*Poq2qA-pqOy#LjaERnB3vDn`H1#z##)N5dV-DzJ zhMTRF6{cD!8fWCyoE@pnLa&2m4U7IUQOCxy=|dIZ5rWKxLS1hRFWO>kXpH!*g9^vV zxKmTre^eRt-inLOWf|#p!o0+^PK;}QfL?xLgL%-6#!1zNEZ%iVQ-9Bp4Ka}4h+Ykm z=SQxPk6a1O9qqW3mx>A!g<`qoucP!#ifBks`yj2wYd1m{#ba~IS3;T0>&5ikzafb@ z@jmTaaQC%ci5YEl*8mGeVT&TSL!{$uC!1Qb-E2ujqK#2Ia)K3Bre8Wrsy1!4Bpp2# zqsUBfGPefJ!9semGt1~x^RqBh%|cLyV}O>sw9*vMpvr9Yln->5FnB!CR7we{-bGU8 z5!ao$r|`LKqlsS1Zb?v8^OkP3ipwsT8pDH?WP6qdplFiko_X3p2zhgK)vmsMz^v}n zk98NyHP1jQ6X&H2JF*XEn}kd#KePPOpT!4E)YuxJVI^Pkp@~%3&f)-!iWVz1g&07VmSrjmOzw1D5||S? z6sskxfF$q$kxcsvrA8OqnqtTE*QjfSVhWnqpq9UBK#dE8Li-oE0wjfCXsR0gVl=-` zMe-3GWv5!AJOBzxRPV)L?w*P|Xg0P2BT)xpN62n8i@xYC7m9w@*gPFGe~+-QG;^XQ$toi z+0Z@|Vi1UVWuTr#HFDdp$x8BslvOf0yw=4P!(Obdm`B#JlL zpmG6^JCiex5S?xgjK;&ME~zUXlYp(q#z4MVxk;$)csaJVSpRu`)x#@F%(25O)OZuf z*v`&c*s6=*tFlC(AgWJKE5G3Q3qsRG8n zceyj~tN)XnTmKt5ccISI7IifDoG95(wNh~!V7Mhzur!Abp5B!Lj3Z<=@hmkR@~ops z!p1mnx6%9|&}*d9vgV?SSuQIrUCEJqSFn=399|Ghk_{TgGFyO}tjPvacqX0SqI1^; z#REo=+>Itpk0y77=#fmsB1AE6PaRZOB3Vx)1+3QLD0^8Jo1CDaY)Zp(Q)rZp*n+m$Jjel6dam#+6`mF${$*j!e{xyrHs&5+_m- zCqS%`+oq;}?x^h}rX0ZXl2YD={e$MJyHgkB&4?_1I2~6qpVjLGkUIbC$Z*bIfUdPj zPAPq+YIa@OmhEa~v&_~2sZe#7$>f@=9woA8yGkZtuVz(?4BD=ev0`bx#u{P|RUTy{ zcH1DmZQ*VD>Xlf9#pHwfX=*B}9L+*$yDe*>*c?tKt#58=Dik(wC5_i(t%#bXy9sOmMvf~wQ z`K#t-LKgGD=A2&0DeP=#E8p^;>~PVD7hKmX>}=m9AE98^h-SMAW!FHLUX8cB)Zt&0 zb4(|b#MVmQMaA;}=AvTx|6)tp}- zR>uCzD@WPuY~?>=oh^IWsr+XwJNfhrIag@DfL&P^k1}< znm%7a0<19|<@y#4`>D7&sa9fgb$TK^(Iwbf$+RXEWYq%{dt$My`gKT#E9OfcDM1I& zZVlPVU3Z575xdO}XK;?er|UwMS;Tag?3|cVeLgBROvOoLc;*}Q@J+K;Xfq{F8NOb$V7stth7NIN|h*sfRDg*SR~(|E$0`qD>m9+A|EwBmE1!t z9Z_p7$*-2Xtc{~3`Sof(b;?#rCkpk9lKh&z!##7>pA99R9XNPs<%o*mRep0pJapA! z1vZR>dW@z}l8Q^v;wob)VfpZiA!iI5QPmN#z;-s#5_Gj^s{~N&zN})2@gT?Rvd*S? z=bCh}hG!|BR0!uJo$`^RYT?GE=BNCIgPuwVdhr{vV3-(7nofVM4JIczW6)NW7D!vQaGMj-nA* z$T_`ool?5ewd03CP14N2DQ4G|*VIm^uA1nHxvf+_Vk0Lc;S%baVd5mW<5?{ql2fFW zUxEzOHjRW~YJ>*coMdIviC!hKLsemqn?x+rf?@Ui?7{hbJC$&! zaAN2?Q)u#_cHWe-7L-mT62d6EIpr0Vm81RrSDFY%HK#TwJpX^51P>}VIf0K>BAJg= zS7;5)qNUeT^fpwM>o(i+%J)!{uwsdLlcNrM1dIt#Q#&J0b7E?UMpx=LPCVOZ%5L+K zfIQOhl8=_R;Z{C!=+K&~T7R#T5Z-a*xh1Ikc2t7fYKmzrzF4}<-}eN;?{+Nxg%8d; zg=&z%1~9xE*&OAla=lXCvBXyT49Dz&-kY@x70xHsiPR5kij(L@ln`qt_b6$|b{Ki7 z@Q&s-Xj(N0DiqQNj@4xEXl{jMd5%GIi7N&V%l0PB{)2ZR-&;_Ilam#ZRx3_QQe8hl zGx(wiH>gHK+^8YGm{?nGlyWw;lmj8-s8j2?SR~^t9m=DkC6UQR9}=SmD(h6+z`<}x zoZUQC8HcEeE=Joiahitznu}P5sH8e{Q8}(+^w5qN11go&Pdm?8a<1Z&OFb*2sh+jb z7P}{Va`x2znN{AYCN2BfG#RUnq>h(M66#h5<#TD^$g1|{)Q9g4@w+r!|I5z)6dO@W z*IU!{dueiva-F8mE+&WK(=hP}jkt_e1s%pmf2l7je@yNqy`oONlWs}(a(!2`JZw8) zTx`dqo2GDR9I)?IXs=af^$b-W?$;o#A0)lSYAU<|R_$t7 z4k-yZkVy~>;UJn#qa5?8zCoSi=8C5>E>+RY!6ZpxZ9NHYAOY(OUPVgT7MC`!5Q_k7 z+>WmGxl7hBsT>~&!_qbG9biOYCbHzG9=YNzuHCfuvbvZUu{&~RmyQu<7osv0F( z)l+z^B?0@H6a$6o0_9OT>`}|*G$U)qA`4aoXqLoApSl&Kt|pKsg5`vUOq8^Y6^A^1Te#{JAmcCtIaG9H9Te&wBzr1x zR4pHcGbwd~P1ANaub5(MfMSDtz>y;ZJG#U@obuEy;BMdhI;8jzQsx-raaW!i{yDm( z&hlC`WU3umO-@V$AF*UG`=pxQySaNen*|b`=WnwR-!BlJVp_?hEsK?$R-XX&Ql+?H zlu|J`w+^T_S5@|r4O&MiZ(%c+F1KFSzd|Z+J_|<_0^w~UDDz;<@ zg`~HMxD;m#T%Tj}77i6Nd<)noxSbb%sipo@fsH>TwagKAdK~wy>Vy?hf;~JD$tXoQ zB$4DTCreK5$)P?uDM$K{`mn>xQR+NhT8pi$gi`v-arMJ1h721qbY#7Bp^z$SJYlLe zhZZZGQjb~4#P52!%flC{T0@1qWE2&(SkDt(HO%`G@Wlp=UCfgB8%d<Y;ki1p5*B6RX}J%`#BBh&ubNk(GwPX0|GcS|hC!OdcK5 z5ejH%*H^>z_R``C3!bU@*F2ekS_t+vE0->K$euMdPfL@0I#zp2C3K%<{9%oJ*PJJc zEJW^hh1$qc9BEOWlH3SgyFE7zC_o}y>fU7PT3 zZ=-a+$%9^n$Tt)5uR&yAC-%Q3;a|w;0xhQFktzKdrO1~ukh!cZPYG4ve4?so zXlu1%tS{5ly?H@Bro7!8UY%#3x3TIHn_+sj-RC@$XFFc?!JwZ^Ol`lYxvkGBCEv{@ zo*#-F3{mR?K3laSj+-0gDyS@~?wMHep~;__?vuT|B1&%3S3Alri>!NMR)Xc?$^5y= zwUmW&DM^-ZPRGsQIy2_@Wdt$_`b|iEe7AMwtqzeabno8CcHRuSYp4q`8KsyHZnHfa zPpf_7ly=Z?cI=;#n>s_O<(AD3Qu}WW&Q2Zi+&Vf)oqa23HU-}AFDTnztU#PqCqJLx{Ts)=S-S+!y}|9rJkCDvQ9S+@>rU&v;=Ex31Q zs@s-#xHrf9%ylFz$y7_@P$w~(=D(^h!)Hm6tSeU|OgR^$q});lT1j~_)1c-t6oPAM zOUji6P*UEQLO6}7CFLX&CFN=d!I{|Uc4A(iA+_7oPn@J&S206&?kux8LnELX?PM)d zE*1yN*>pB*Ce(}`Ido{iFUt_`PRAXvEdTwlYT(pEH~S1E{0cTt5R1nJp~2c$L$!JN zG^gEZy?~fJg{DF6)7|5*vSY7YyUb#J>72SNS_xX>f>7iFYE$lTRwUY1K5f7SefwO{ z_vGn0?9z@E>`D=)0l9=Y6^^#>VqS`Orj@sscfv;v+D_-($G{G|rg*RvUQHZ(7Y5G@ zb>v~L&%gRiATic3u($*|+Rg3!A`mxuN4vUt#v9K)tFVLS>(rND*9g{A{(5!lz^@5N z)90s9>kb!c(Gn!w4N_Ypozk< zvV6e}G-6D3NO{1<;d{6?|hRMb>Fc$Tym86B)2TRx&vl|6Y1C$P+S0GiK(F&(T@dO|FGUd231NT zcjOS*HAg_R7{_NYY3rtRI9D*`tAC~vSKRi^pv~19*MgV)v)4rwKx}mqS-Gg#HTNR=T|M_I|{&>&GvE`jR2Wx z#~oMuFot_}1lr2+uKS0!a%4|Dk8C<#GU~EcGU!2xr8?#P?ElD--WS1ElFuVkok{mG zCct;%H6wKFzuAf3X7)X0YE~bo(6ra5wQzb7?&OAVFp9<8vmY38M^{u18}FHgc;&h( zc6d`v_^f%g%sEl;Gfxs^O4MRNmKq6ktxP;mQ;j#()^TTQq&e>~iOxpbv3U=9bnS>o z2g7Yc-nmidvm#}_w2{s4ov#{{J@4>#AN-R>wYJ(@uO6`>h7mD%Dm3DLq{PGq-y8GLdRH2)vC;<3w;Gmo{ zQ$u(`36Z`l9AtMcK@)G`9j-4|E8ehA)y3;BrkM)6^&93L%L!3$Egwk#4a#!p_j<8f z4D<-Gvi8xcbgeXVASuv6b>-?3sEIgAqrz(@4Br8fF+ME~GQMR59lm2Sot=)B`}WyU zf`%u@Y)@qHO^hhtbrea+R9UTPh*M&D)-`afB3*|?Rg#okaO9OiwGXehs=J<*8V#<9 zSn68mM9NjnJ|j4pNZQIyW4b#!!Gmt&2}0HxYciYi7K6)xe2RS=jrls+dH6O$Sl=OD zJhH(_C?^Z;9EE`pOZ~ij&DODNpC#=S3p)GdsI?Duv$fj4=H(k~U-Ea=>_#WwYEZ`; zv}iTHhfjTREs=i>=)bOq>h$LnD#z7V)Yhwo=XxFkCmL#kpXVG#CtpJJf3nS8&vMuD z#Z5Nlk5$i}m%2U&U{Yw4oDB#h%ku$DL){crW)`*KN@?8ktUjg3tGQ0t7f@&%&E~)I zMK+3JkutNiq0#-M1knrIO7!(`44h2dZcD0LdCXG&XbV-er@aLJ5dn`oc`V3w?S4ehSlnE=ZMJH{gGh8^1&>u}?>oFS9CNsyl z-XxZTBWrx*he{buJ8(bB<3d~LPlzw(Slnfp^IWg|DauqG^g%DVyt08elN}X1#Ns>G zRmYQ?P{gnYcLE49PGnzC`!1_L_$T>N>!Q~j|R7hw$2-UX9d|! z#-FuHHx8EoO2ry1w*fsXw9t);YhN93l{E`Dy*dQ!dNBAWP8yAPD~@cwyHs4CX~&1A zCdnQl~>TO38V_iU;9&z% z-IS~_fE=*m0x@c?t3u)lZ{lvLyInI$_OH~DN{9mG)`7vk@5KdGg6E&p&Yr)5#Fzdx z#Yu-p@{5g!CkL!WN_DtQfaR4Hs$Q|f9NUes*>yrTeja3qtUA zgtDy2fJXI#q3nIE*nVV6;uttP9hLYlcF2heT+?9Ch>%IfqH2Gx6^B|_VT(|~8Qk(_X?bH~wnaAB zz>zhsWjRQF^kZN+kxFHf>HLSQ`o|)JjDhh)o=^NzxM)Ql;1db14uyGhkgR+2uph(WIqu5L&>VC(J-rAzEC_ZG3kikPL&Bj=Q z@1$eBp@wPQy$v2vWfNSDKze?_ooX--e$Dmz{u||$6;NC*iu!&-XDGxfbkrfoACIlh zFrTfK{TC(5`J!BhbD3h0tE^G(*?y;Sr8SyLXRH{Nk>(W?Gjep5Sv({m8|1wW7{z4SnMn(6 z%L6%dKjQqiN+~A;zjKsgq!@L$zFiJ;1V|`NTRm*>=!(%3lp5gGW5Z{U^B34ufqaQn zg#H3jcDQREB8(SfSdwBqVCx%IkpjGy8Jf!u&y@8hTmfgs(n6h>A|e@LulLD1{`^{C z>%c2vBHkEn%A{mC<~}jR=K$qRd&+3CHYATHmpWZKBDp?5sSLWmP^bGb|ovjwdoS zwldRW@S9L`ANG@V(sqm3CbGsWotRVLTU*}tX+#}ZO7l(&sTo4TksebE83I_=_3*jjbB(q6R}Xstz4j&wHZvtYQXm zW|_EW3#r91wn?bfiYbDIO*I6^n|hl^mYV}8`GgT>aSd!AUz_wcD)}6b>get=nfvuW zu4|rn_d8_yqxmC!UbJold{Rp<9B55P1+)1y4r#1*(+Z3i-Yq2UIbEXCbCvWi!3^i^ zKswKM+c&z9a8-KqKP+?kU0k(Yrgev3$*H8ayA(;4WN+y+a2mJJs2X22#4N7zuF?aW z7<4GU^y_WmNnpO2r6IfMd?6$b z%%s94JR2!7)fBd|u>@uqU(C!}E#e(A^40=)FFcN|kwy&CdNM?PvBG3SH0Hxs8&`4P zjzDSQ2sxY((ii2bg9|0@IG75TsyiX{dcKE6Apx{P!&``f50%%;Sps><$d4mmlJtE! z44*!8I!6jO^Rgk~a7o-%#1_4pE zyEm3<15Bwi3HA&#PjL;a^zAdKgLoXIr>FevWExxyV^~#Hm3Apm_h*u|HdP(ZQZZ6} zeYL(DUqlmlh2U3Fu)Nz~>Z$2dUNoOQ*fA0h;7xp>F^DENc;s9a!n+Z}E3z-@%L!2p zlHhZ+6|tsx7s+{KvXjSs>xrZnhI#wE{yCU-Z!TpF@j0=v?ugrX+-*tVt8X6n&x5U} zWLjm(%5#JeWf?_{CuXluQMgy38>*I2Fv9RxIy)H%a-;p@KyIvm7&yyr=Z*%sEi}z> zX0cjr>s>+$q*z^GPLJcwVyuvH_;9nBN>KAH(=qVq=2BtIc9%-_s=4 zPSN}6X0fvK>9LK6LB$YGGLi}NXGUpe=HJO8WgO+%rI|2`eUmmypEQeeCt1A<4Y69) zjX@3SiV&J2RjV%xsrx(ib(7jzPPGjs6T>3Khpo%Zx*}(y7nX_V33U>2^?^zR`e(dO z2RBjhJ`xXUJd<$3JgZelRf#o67IsX*XD8}!{G|2W0CM{e?ZzDL(1_XRn_hQt$N(38b0$#LN_((Fz4&j zvf!gj!YH*BwPR|4qqa(vzJY zTvMs^O|S)w5eeTMPM$ z)eP*Z?VG6NNu-Zwb(AWQNE;A3v07Wj(wWm)mf7h*Ezh;s9a5o*otWi`;Iw*VQX8l; zm3Leg@&Y7|yt3Pjnwaq3wyAgPvHfZh(TL2B zqS4%n`Q}%_k+}1nV;N)hw(JVa8ZK0yHxGbwwi|#H3ti-g}Ff_ zs(ffEt_tK^P^0AfiZ;GN%96Edk~v=4qOPGXI!b4KmXB%^yx0xOLan~EQo)#M9u7}X zYWy2x?P7V>Ta*BdsIpwC(MK_ucR`akk?7f<^`JAWY0}o|pcdbU~R7B#oUrrw}MsE6u znWHidd=GSWG|ZrpQaVcOt+n~S%S_X+K-rXMP#(WJ@lo;+Wq&{<5U1FE zW@HYc*w3+yduNnN5*4kMU39h1&$H5y+cH^^K82kx+OvVYkEP_n)eDh6<3kN4g?Vr^ zySZZo9hI*(cXFeB&ICJ%J~B_V``rRva=)X@823=fi2ADW zL#ipj9dEo9-d3`f)itfY*fctT*~+$bllr28Bv5zQjfsPm{4iTg>6exQa6FbAz8ypiAzWdfu3L(COXkXrWFrA5>dz(b+A=uw2^zLsJ zR^k|x@a*X;2TNo=-}$_b@q(D;ey?1mx{{2SEqtf$c-YT5TBi3%(+RQ?$x1P>l*1}) z(uiK}J#c*fFwJWu#@OJ7zxauJTg*ze^6*R(vg(l)m3lRU1)d0*CU9XnP> zO2`~_U2Ng^Q0N78=6~g3jr4s7(zSB*dP47;N&D3jWHDFK-j>7`|&)R>gnL86pKE;aa~wiqu;BvOXO zH~n&>8y$R>7v@&Ba2Z+cqJ0Ge;mp|*(@>YNLCR&hN_=?GYEdOe-d=2sSI^z0!K|4r zO+?sHyP|f)$tRik47CbiuOE0PvSCc6yvs1x?* zq{NMrahC8b@?4n+A*L4HTGT$Je9}S9)e=dQuXV_9#q9{$X$_5$dft_;CrPWfGHopF zzFBl2nhKsL8s0$I*;UU$#|`-gPRwphMbc zFUwBrphoWAzo;Kl5q?B)S)Gv*4>JjDnL^~%B8+xXQ&-)>XTMmsOp9o4BlxQLy|O6# z4v%P?*%wphW|@dL(m0TIAM|&%*!NFQYOTC(0EW6U^Muv}n>}#ZhBd>7y|5!~f0S#dE1L-}NfsoU}W zmm*S%IdEr)=x;2jj}`zJjn=^DOIPLg zT`SFd?d3maA?m%O!GI-;ks-`e0W;X2Fs_lZ$3OH(PHbb zflak#QBW0F)8%=$syVSjO=*0j!@kc5@n|GTSS3@d#w0;FnhKLGpUSgepy!vl`_H~s zXtAc)^{%leMEx!xQ>ci7%LUCXr>}{y)s!a}jA20*ioc_cD|6Mz$Jc2DQ^c$WJJwOF zXdLz79AAli+!7SmMCz>Z1efN%QC1lpRT9_yb}m=I>560l6PmjVZ1K5=`uUr-nxtXi zenIcLlejr~IQi?P{6qwU%tabw<(P@jbTA@OE0%x^3(0ov3TA(7>Q>=+BMO z4p_M{YDrU~)ScovCxv(f$+KHxc&Eg&jDTi+3Q`S$9ioxuj``5E=maJYYGFhTvz;Np zDlzbBH2+-$7ul>nfxz7geZxG z?@>qc`Y#zAF`8k<4Ru6X`PgL--6}@&S*7n}@Kfuv$wI(4GOqB z8nI{tn|T@rdod4RW@&@tZi7fjJl5h~L>h?ky|C3s#m#7O;%Cw}!8cfO>W$Q6i~HcA zDX(~st{fPX`^kAmpo845R#7t|Pasb#4LP0bQVSd~_Vk)sDk(G|FWHW!2z7l;@fvV9 zRY#z5uE))~HCN?fsPmq>{i!x;zgACI6(7Y_>Too^6rR zLid0`g0E?BP}kX$yz;)1`cjIG+Y{8~7Z%E$^VQ>At2%I*d+^P3zUFXo^+^SeUEySF zD)4bVpljwkhIjZ>W8*{vKC0?Q%cT@ey#K0tGbgsOBme_puwIQ&B~gn>`hd1lp87=&mPuIP zq>tg9pmNPK@7#huY9+;WC%3~Yy=O%=@CLiW4N@i4t3#=zXAx+j?~{9Et*+>#%)~+? z@M>Byo?^G}5L=ZfYlGV0S)fu;tt}Q_yrQaCPg%J~E3zYKeys-IoM4xV{!o$k^->OX zoiW^{Hh-u`)AhN~#|Q_{clevm-6I00=e0LJkRDt!$-?P8G9mVG76wjn^SvHeb@GlRD-7RYgqM0UOPXoAm6$?u;#)OC ztp7t9d4lwyr&iPajY8=&4f@8TCO&a!;fm=d9=nSohThDFF~d_wtg-8Y`W*k|ORR>p zmfy102j%^TBMcl*%N{QRc9Yy*(!n6o837!DNjd2qj6|hOMZ7@b3GbS5?RvuZsvK#g zrzSkp%BP+6{)MNdGv3C$TH0~X3;0&%Gg*7jzRiL_EPS)`B-eYb-Z9gxz*b0(7wEGh z*(B&7rgnni>vh`F^^WdF{L!*qod4nkA6~A-?-7h;I>*$*nd|w`F}f02EZqmG2JC;? zzs-$T26~=YF*F12Q#_xC4d&NT?uE;0+>JWn+*od6FhFf{<*gO9N0-oawbA7}jPX+Q zK|=cf_)ZD=&=7~H}pqn_99^L;NUxRSY0SBdmDj>)~F+2D0hQv zCn$r$eb2uyRN{W8O5^!=+TB3UJ3&4Zzp+AaV5a1CW!Y?kIXM zDkoCBa(Jv(>lLhKJH*N#=~;uh`G->pzUQwK48KK_%M;SZp;KaQD$Gg5S}DP(A#9pp zKvy=3-`w@Df0B&%?VA(QFA(CZoD|KAQ)lXY3q=@{5~%=^nuZ3nw--lZq2;D>T>X%t z74^Kq?8i8d#8X|5X86AUqMtFqXxhp^bzkg8|Fdaj+WhZ&CZ;=tj`B2*yLzG)%Df#Y zjY0a|y=~5>?&^Qx+|1&Bz4HY2&kD>gK)~p717XYrDo83Cyzm8Roo%o+KGlk1DZ{;Y zX2=;;L(an4wTNsl`){al@v6oTtL*~X&@t83!z)Hsh$K(Y<+crksjWIg zeOXOk?BHJhRKiD_!*=e4#kjzNtv%|+r3SB1>pKG2V_msO4U2@_59>BW8<%&ke@7ZsHYpynV#<_^W1eNj z!5^U4At6JOPN`lNloD!iw5!)_vut9)3=}XYvm(fihf0H z(PWp#?ew6+;lqYkdG+pF+NV(NlL+Cf$!WVSeL^xu8tpVS#L$$kd`#`o&;SoleH_tF zg{tI(4`t>6{^G*;kQ{5~YMeEg_g{$qsil1jjlx0_BVKs;f7<(&rZ}!F;o7=>MY_jC z!E_b2rEZUd0cJoTS)UM6sE}pQRe z%$rq3wKuR7=_Od(Stqs0v}G|{O;#b7U!dQbocYG@0z>M zX~_{{hi~GWyPq>?7){4T1ebesuS~Oh@$0Ks||neFuLGv$z0|^b7Wh#;|L4wxfPLx%;`m+Iz66IQ&jBO-C@> zbPYkixEziL0EB*Q-~N)_ei#if$!lEP{sf00N&qtaZ}E;whj809(*z0qFImaufG>tN8U@dW9lOGAvV`kLjMn|3$YS z3e3x%MuXd5hV&Sx2B3gj9N~1c^VAxV=QfIQO#;v^P!)qm2=*I#^Q2(v20ER++Na}( zC-kK;9FGW{%SP!?M&~WYBLPJ6JS_&P`?X+g~t< zc9aaUX=*0LZFp{F3W)#ew3_e^Wq53MF}Duw^(4Ja*^jPGM@jxB!PZ^3aSn5&8#A<* zs?~l5e{pCJ?E83HMaz>hAfgdDfn&2|B|3*AID*pwB3*ojt4$r#NqkB0q_f^a9KK8a z0}HWT@!a7UmT)w1#ngvR$3y%)GF4^QxISjpF$GRHQm-n)4tMYHDbg*uwgxF|+em?4 zHJ@>Ry&4XIx2Twzn$|H(PGJYHa7X0>>Mgxf>wR!%RXNCX?308uX;?!!YVwtcDguwq z$J2!5R80g2HGsZ*KZ^e>=h5wfZ>=a8>&6N;bHiNR5AoWdS-k!d);%61lW6MWcKkr( z1-tH<7+?()#`kwW!~C7Yr7n|?+z^e*x?8QoLk8L{1kFYV=S6kNq^aIcwW+^3H~3L6 zQ@vFP{Ya}P0RXLbUv3;zZX}n^r9~r4=uoI`Fe^m!IaAGhcD68|-!a(FQ1aWK;9LM# zkW&5YT3IPvjBUhRrgUxs;|$$reZXP(->=e}xUHcG3j-^$P8P;wa}8MM(cv*!Gv1Di z;ZZkAAAb2om-Ct(Vq&wS?|WJDL+>Q{u^U}po?;bZVE;8xpjo}=(c${2NTJOH@#T?z z36t_G)aDcSp_=J75PAF$ktloGST%!l<}1E?olx**r2gnkVKFa?7yu=cQF3GVBn~^y zGOL2>_U(rW5(#UI;G&*&5)Fj1<2q%TNcW&70zhv6mYc=Y-O_B7ObI~>GNJk55u#g9 zG|7b=n&6u_1IRbPl~Z>RSBV-~(+$pZIt^F#J3ywM7(}>3E^3DV!ivE`Ku!;Ccq-tQ zdY^yEY0T)?m#avH*7u0;m4J&j`2{fwr*0+%-al(}xDT~zL%cXU$lMjF^#obN|3=W! z@1y=0cuRkXZN7Ubf>N=M=9fIk-TO1Z+|+Ps@Dcqd8|d4BQUK)$pk0XvgC4qbl9Q{x z#2{x*Z-0Sh$2Wvm@r=l}621fWEC(hW`QTLxR5=--zg3T`>tWF(U>0r|WG-c zG0tb*{uRzPT(f8>3>%U*SV<(IS$qoL$jBG7H6pB418g!LXIueq9ey37=94D#J9+oJ zID$RX*Isoj(km?INq$G`miV&iVTo*D3pcReInr0u8Y9E0_etRKJeX%Zz5RgGI6po8 z-82c$VcIJyucFQEU*inrRKz(z?MJkHMAMSo=EzeuGCM%5!}K6#%8E#G07w3!%@>@(?hIR#`<1$U#(+-98(fi(`tml-II$ro3qwC zO$22NxTo6>H$FYVndHRk1?kCSU7PiAf2nYhS|)kJSowcPhTm-CSLOne1D4SK?S^jKmMXNx!1u;OPKx{5Idl;9@TEP zxS7{-e8}IXq~MhqyCsT6L2EulnL}e`xW28o5wxgDr*w{+I6WUpz{(B6%%44%lSYn< zP?x>!gs{|U9-xva#BB-O(*`75$HF!Wmd*oRovndsdoiq-DupqsfJqv#>Y_;XjLus4 zR#_)*n)r9jyHt$@1h*@|R>god2L475gC`X+RVQ`iKxC5eu*2A>R;RCw3qz2HF#Iq@ z%r|jisTBx8p>YPthGqjgm1S=5Fi^J+FU8w zHyCKH7#W{V#42!rx1_*r=iWQmtCD-!B8hvN! zwa}Awm{l^|bjgZ(NdHNhhqLY;7D=b-Z4AkRq5e|Xix=VC{t(!#QCeTx#sYbUsFF%m zwZCrQv+9gi;GW*h<9uEi(QMvr{VZDkR}fN?>|a;NtOWo293CZC1!lbAr}*&M-OnXp zRrn0HU6GEKotPtS-O~0c^?bh?t#Q3Vl-8{qhzg>E^fI#aLL`w(>Bzx#B&M+dkb89o zVIWJUxP7QTTZ_1UoW}WT#`5&=?mbz4j;N==So)XGzPMgfPqb}_vV!<;$(pSn-u@l^ zIR;(2;daMCyVht;v@!A&=Z6V8Sbc^#&IPUKzcgqmB?SXmHlKXLpKSkIs#d7cHe9V7 zby>Np!gBk|O`c9bOd66#7|n?Ii7PFsYk2|k9Xn8~f0n7GOvQ#VR4heax3bt|6{`h) z15n>$;#g0r6}J66$&m-)o_X};XVDPvrf1(&pPvF1B-5lCNPS9l6JvHl zMamW#-&sl=1^q*CO-Q~c9PdXU)h~OJUZ8M!XgtIjxUMclZE@Y1NsE<`pOTib~aEG0gBZ)g)2r8Je4Le#rQVq(rGX zQ4JGV9#_8wh%4Z(ptf|8l;R2z6dm49JC0Q zabU7^Rfb6t+QP5GCiekrh;p*NF1*}Y(lx9748;{3I=tAH9BD0`bYs1>A zW@(amnB?Jg41N3!?&{fZ^!0R(cn0Cl3JoX@-$nqx?NoYiiNDJRryy*HI*Z{Ba3>z& zEM`l_2t5IQeTPmOxt7F6s90HKLM}ImV%8unaRNbfysH)gCD3V{2M&U{A>UfS=zx2~ zbO$4%iSKSSll_wzF(rOeM_#X&xLunLUsLF(=;Q|5qX;Y9c|!5_RV6JHCON7@GVp+T zxMWNx>I&GHAp%yNa&kb-7UK?ZR(ML-ASUNkrwChT$z#(!utaM!3h-u&)ELA9ku*#f zT_%1W2MG)p^RG1aWjyFj#?d-iio6v-d$1A2rAZ>Jnw~`sWSLBQ9KTqHx?T4IK~_`R z2@|P}RoLVEUXN3^GRz;4`N3#e{`n)Ysq9R;5IGACpBNCDDYA#vHS^5SSEKlz1MfZG z>QXhGt0by>!eneFy%)sLRE2+2Q?}MhUhu>T34g!w!|#9S{ix2*J(vO46LF6}3cjtQ zq^o;?K{GzE@$HM2;{VG6SVsUzJy>;fK{ z0v_Ewk{6x~NUiR{K*t|jF&SEhvC5ktoRgSnT<8#~$vb^qAL}~-%N+`Zp?SVYL|5j*ch|nBLeG26? zduP&k?6~aSVh1uko3M)>iM!s{SJU&#npIgOr?4-1kimLkbB29bV`wok>QhwSPO7|G zXn!dFWa5u}HZD$+{zJcY^T2WtBj~gEo&*NBr1pl*Ad78{+g6LZUt7qK7_UJugwp1Z zy9k&jje<8{OOo~%V6hc==0o&EY6t2<5ch&}bYx@$bRmdOe29+Z>wWh^5Wn#uq9I>Q zmOV=KvQ82^vD6y9a_88%v9Uc9M4drp`8ldd7AZw;_Ao{*YOpxYS`_msOE8A|4+Ynq7v`?S~uYodLm|VJJ|X-$PsNjGm5~ z#}9nUnMCk}zl4pn`Xp!*tC1?{+Ms$pkM(q(}n{CVJPNm0U%VwsRnA1mBN95 zn=q$f&Zy0%V67(56dWnTgv?6;mmF~oCzy?{E4D|2M0_CaC}(-Jv}gH77=W7fvYjOK zS;4Fm4gYo$JelY`mCJ`Q|0DCjlyT`OF49HSY_n}{8~>=yE&2_OZX5rw(Ji{a)y-J9 zHp12|UV*EcQA;+!>a;kK7rWMPZc&QvYf`FPYc~D~Yfbq-Xszk9$5q&7vxv3kY9WQ! ziPoR}Z?o{+*XHrxZD88Cr-8}0nQZ*SHk1F;l>f$>^8X{k^N8>wD{JVqJMpnE(gcsI z+L4r_+w4z~?m#3Kw6i(kYrVLOqJb3uQB@DgH<+ULRR)FTl|MrO=z44SR!Dcs z&;le5OyB^|%SOil>3>R%0LR|2hkyg`2`wlUv#-Y=)6Dt@Tiboh!D#t{iXLXPzAG-Y z2|+{MTaa>5%)QZVH7?u%eI#dIw86RQCKd))bctKU`2L1(tg&6_<*RO(A_d(i5fPtsjVyv?X|{HrI-)Z=9_J2D zOe58JZZ%^jFO8L# znM}^3;w;W{52F=5N$R=L-@W~7^o)74Ne{mBDlIrbVU%E2Kzwh4LUot|0^Qx#`SdnU zQr~IIhdGL1Ed_JH6wg&AKE1f}si`f-?(Uhvvve}al7$E7=F)losAl)A@tKJsDomzq zM!{N(M)!&};dTxrVinU#dV=+xC9G<+i0=U-i6UAC!3*&huE0~iHWYigv2*wSPyYH7 z31RY$Iih17@1I22yptNePuAriuB6Aw)5@S+j9D%ujzF?bU_d5kauP=hL~HGPXhkqm zj%fquML*m)*n0J+BWEY=Fk$@rQ;P1g(+=nfEpm!(e*(^i$>Hk!)(1dH>a=i(Coe=;~1Aib-H@Ye!>{v2P$9gdLf zU`E&uA`(*Zkwn%FI;ZF^_o8o zOHGd3h>5A$5LAX3xG4vfO|%%tM-U^`ZX74VXpuky9-CMQ_Gv38Ma5DN*1O*jb7_0F zkAnEQIo=L7D>(G76Z0&^%$XIZw7(ozoK-578TxO~c$p{;XUp#42*deGgua_WEcf`W zt?j3($?b==hA-eyCQ3WF#tDWvQ6Of6d+^DiGgS_3OP_x-z>fvtS`s6?e1wU1IIW&) z)@^L367bD~H@{tT8O3T3`aCT>psDB7XEI)MtORJ)VA~gT+|)u9Igl!twz_yWL?l#srNN`PC9` zN5z!s+;=S#{srsh{+c~oO6n&|X7|DLHCF5xO&MNhcIJ|`2p{i~p;cng)T-0mJ85}b zPDVg69d8yLH70QVpuq5=X7k(5ZzC-vBjy2yM+bLv$!@kqPOBWq*wFGh8IsrLpUU(i zr44CO!jE)RjX<(M!Zwm=-@W5VJcfJwx9N}&)=2A!?6jDGZRix!dkKFGhEVD_NDhN+ z2!ag4xkrB$fXOGqC{Pg$HB$EyYo=p|dNNZ+o~6CivS&fvR=7E|e$oFFkl@+^*VIoh z<>i+0Q%iYirMz@iza2D{p$hR z`cjL|iB~BgHR4jDp|;ZGS~po5Fz%{wE%ZsA=;+M-j7V6HBp}PRv`A*pTZMPb>!YqztJ=Fs-Oy& zX%^{pP4EY5@+>ogPGO>E&9u!s-xQfYNN>&)R$@6(!8mbB-D)|#r&QD4yr_lr3Mtf? zcY%_2MsfP|L^}uGO zaM35}FkuafijWWfqm%I|<0sl%x3M4r2c^Xz2uU()+f^I`q;1n<))0kLosWm~*49vfBfbbo&!r*(fH<9<|-KG+RCP!io-wUpTUH8zSLf zSq!u@9Ukr%M}ik!9hHAu+@o%txBEcRK(;yel`vhqeLjqP!{}*#7HwrSVfslh{h8@& zHWT_wXW1n8JDDfQBN{^#GV*X2&62xneW$mVdf7|ncKEg1Sfx-7(TbK{Z#zQ2A z#K|Z-2M1l?nF~H{k^mbEUqs6TSfOdA_-IL@j^)dV4z94`WZBV8Y;52@toV;N<>~s; zU~?V%ZmwC0j&xy-HTp`Cenhd>vNdc=Sf2)j_z~_Fk~UTq!bxd?&>Y1#Vz!DK>R^z; zkxW4(M`Y-}W%4HnaRgPbso z&rZ$H$AjAs85#E}U9GysckelQi^?_EjYic4rJuuFs&72HxseB>(_dR!c% z1rqxJ3&QPLT9fv>dykbN-SHH&ZWOHIaHwpwt{J(-4j?KENh#;TYlfS5XfE>+J1Qv5 zqx{fmTCNR0TDFt4VGUIPUrZQJuK3%DGOZ5NQ+IGY4LBFIlxLMV@*>i>0BRxOa7YkY zl;_|K@#n#Q91uAikE)4m11}7nY-0>eZqOF!&KKzb$4Y28=ZE!kTgMdD7OI?D^Vrb_1>)GK??FnEWu7mO@)&89$W2 zptln=HA-an6)Y6qb@-FiY5|7NV>+oaj@Bz_oB;rAt&~zo)wso4zI0c$^-sfa6Pa2s(>fHD)Gbzq5tFOPbuh)1DHHF*`n7UYX@RM5Lf>ac29p2#MRM(! zpDiPEKJFl+t5u54E{AUqvoyXeMrV)9@v9@^(%U*29DzUFKqjlZfy>z4;F_r2jmzo; zL)uGt!WD9HNfEH&3KQAXmcLUB+cjFZ`IBGVJlg;x%&9&5Z;%yQE`fvKLUOavr z;2qPv#99xw&pu`Zmbf_LiUx@*Bkc&MLBhKZqOrHZ3dr${l>yYf^+Ru4IgU|f$c^vI zX?gVn(DotF-RX~3?3MVvDn@~*GH~iPVJ0WA@ejSh4{!kRuEvA(dgJ>qfB5{fA3p!$ zN4=h};$b`z%M^%0H^4)6qcK_|yLKhAMV#49@TKcNYY-A~CS|~lin$TRqS9Uj+Q^4T3V)z8cvgIgz_Y<-{&jSxye6bW}fbL;Isr|1xaSw zjJ)iWv%V`F?x)trgdxv|bf9S*u@D2dVkHaTwAn_A znIa>!%2wdEojPhhMJR&F199~gcaB&EWg9y+y~pAEba1A(%>9zH%D=B#ceTgA&bf|AkV8p05+t86Q%L0nbl@<_Xp|kCbdN@8Cq04f{zXg& z=HeHh0I_D2I`6z5#E6!k|4u_>unWWGj=kY+BP=0`F{Id@FPLYc0^DjD5rSZc}GB3@nyC&o2EDSuG zvCFs}SQu>k@y^!H)6E62*TnFjiPWM6s?zOuPr6xmySw)z`ekyS7Ah!tCCkm#wNQ;i z+LE=IA67;i(ZBUh(n&Y!!=GRBpWnj}Kf=$?zmVTF+(z{90sd~!Nn(G$Tk|FqP_WRo z(Sav6&u!d0y^3R)+C41-g+YY{?1nCkNeN(X%XvMJJA8Gv8_tMu2q)#hJtkpq>8)(S zXLM?k6V$9Br?lf&=@fmy(XNb5Vy$*-J_0z1?*p9{sJ7^k2efbLps|>&H5;kTO##E+2{c(K z-LlPo1XXY)mbJbXj?;>X4&=kLefR$Mue;BK`J9BPN)x-L+6-xJZfI}Z0VE6!(Q;x&Ilxu6XWKWZ5ev?1zjv+AwKBCLCGs>J z9L&i50Vl*lGemWZ)==t-2=+W-pDH)~4qFUWpp4O(P}U)9ZTfcQQ{z&T)Hk5Px7-Sb z3Am33)i(L$0>eDb6!HoD9?s~=A&JZTSrO6&Z@#-3pp`*Y;NzR4hn_3Egs?~ z5i*fq#Ts{Yx; zHG7D}#L}B$2owMppRS4GU8xMQ;u0xYB8z`bbDN5ll1){(<{ZB+OEH;P#fsbEw$VC}xf4o#_BR1A|Ui9B=ZPrru zXv-EB8DjdSG!OMYwH!mb*ZlgKy=)3>u2jW0R81qkNV6!JC|$GIvHNeHA8zdI-u>6^tD|Th zC}`YCom`bO6O%Xv7^7Z<9v|@~I}#{!61pN!MD8Ia5TKeWJ_mHkliIWbnM{c_GNbax zW%cDpH98f)@CS2gg(%7e4!_g}gS$zI1}YVC|L@KfvxZ zMcN{d$>D<<)63_`iqS$1s?c;}7r-aCtLvKY_#C3zi< ztc`8g0MdC^8Sb-D1srMf5YU{mbBXs5fBKq8YJ5%$=76laCDcr~IrdH?e=1x6M1|xM zfK4>@nb`^@*0qTK-0{uvY^|~y@3I%H&W(Ymj$Zt3sr;QuR?GznJuL&Z<5JU960oyW zc9c6!PR_JOyQ)oGh!a)=BfvgjFWwnH$MJ}L0GWDH=hx(DDxZn!w@fdKB}})S*QJE; zmGsoOS}Gs2h&)+ib#B)hjE7c1!b%oi10AswnI=21LF`0nEjc_hmELQ+7ar4ct%CQt zH!8cv243g@ql*SDMjlaceWtR!o|1DOzQ>eRa2@#Ek%S5&9U<;gSJ1%2j3o7fPMkL; zpcL;pR+IB28ZLT?2NbunL<@_CPYBQM0q6<7{NPdZijI>te;f9 zr5FQtLC>IelWW=-X?oNb!*cb2bYXO&RfQ~E3F5ek{C6_PWhyZIiDiVxm0^437q8Z z8heF{nzP+nW3g7wF5;gxlu}qbsUEH0z3+DtCU~1vS$3UvyCGinVK&%otqV6;P6`)4 z!7D-8!q$kY7@jMka_WvXYZP;=k>z(DsF^wsvTOgzb*r9~IhKOncok(87HLJS!46=C z37{amV@#XjGfPN(H*0bARCYXi*)}Qgkqu>8t3e7X;erB$XMpX@s5ZQ@ih+7ASxl8Os zI1X(R6uz@S2gfVHXz!Ke#w;QWb3*vA7g0ifO7a=S0V5W{mql`x6md?fGZiUr^|fC6 zlYvzt;{yhs683;KXgzxIYBySbG%k$O+zOyVl(9j6I_a~EB5uQ$+W4 z=^4n+sH}>XPgkM`pMCbn=y8!GQGa|kd5b|qkH;AGh$fM4^fW(RWkPLVkJYG;^lZdz zWr}g>gvJ4(?1;&Os|eB#RU=X_AbV%apY7J3eKyTz4yx8O9g*35G@p$@(#k^sD%4(K zlVAT!ML9a0KFyQ!PcTCR|JIzRw)RS1^>6?F>h|xCZvU>k)LuBf6vS_iAHR6@{1_HA z{<0gPnRR>?EmwJ&p6AIR%EtNmO7!tY^ra|Z=UuiT^VSY|1OjtRbphkpo5KX<<;vwh_Bw z;;-L4c^xh5w900e&=841D;3;hNlT)WNVQO@)zz`UDg$q{`|ZmYuMR{#B}ZSGw~;zC zn<>b8as5L}`MeaTT_A!WbCH+O>G?}#B;I@9GSMVgfir4wR{ zs#uKmY=r0#~C%J`P{h*TaUF{EL-kI6nQ|&Z&D5oQ61gv2` zxOSUAPO}M+0q4TnmY3Gudk;rAxO>K1jhLVAh^QjL-S~j?A2b;J08+^&y4KU(-CbF? zI3q4{6jMMhz2N1kIBA%?2_%;Nm?e?Ke3P@_KrAJyiSh}2gI;q#qkub@>+Db zR32H66}@2tUZ6oaK4zwkp3kyfNvd`gUyE98tU*odHBfq^j~(XQ2jKy5D{-R1vr>t4 z=&1AIENkMr!+Q*puYZzKWKaqu~dyzx^7IvDQ^wCBw<>F9p4P z{PNZA6F8_ts`5fS2-33=D?pG{(T#Qw<}};;=4Bs4>!aoD?PZDkdOTr~wzOItY#qGr za}yA&tI}`t@|A*eSuhm;y#jGrFa-bow=`e4n`KfQU!PqT$+_P~jSzyb!H1w9Z1tb@ z4_>`~1dBlmuPgWc*SoL!PhS9+F6faSe)Dwy;R6l#ZJIxPa2$Ysytn;o>ru0c1MzAw zeB4hKsWPkv^As6Mp;LX4kFJF5w&#zs0Q3f!yH@r)dB(VXKbdUzcOrBPa(2YIe#CFL zXW|XV&W+BIqv}7D{y?dkmP(yT23i2M>H#2=)G*gN7u!==7)Ip#R_9E?((>W}fThU# zt93q#B_D|vo3;7_2QXup*JOkGFm#4y;Mnk zvZ&`^OS@;T3zrIVR^3m*Ni2^07ASfRSX3|@WmY1$qS}Mv*yUuFFPI#R)0yt%p z3yB#U%6j%NihHth$~VaB4a3*^yS>@TMQ8nYdbei`t{e;njQGzh3*p>JXgGZrPJ_kK zhxf#B*J4GBk|}4bH|pPmeulR5Uhk=$ITYwQ9!ldtL$U0A93B>_6kVe;zFC1+cAv15j*qOJETXiwO^CO z&t^5Ci%BjMSajq=4!@#Na&=lw%&u&iE}lJsNt;Qg3qs4wur*#p5Zkuzcp7LA1k2F? zb>_np0+z?RRvPbXeOp;yhLjKRVJ0@j2H%98p!2~&O_1$SVGxkzP$R;}0aYA;jruN~ zU^{M4FVpQ$W0PIe)u%dco=q>>v{i$ow(#Vq#2eI&0`8<8l5LoophaApEwdf+4eD|4 zBiQte9Km>q)wx%4(f$h!4xcl@EGr~w1E+KU;R6u1s|X#YlI*N&rB)^Ts2n=N{y1qg zj|~wKkOw8|VX1--#=Tr6ZPQt^aQcP>=ewus*UJ$kbLS}FoO zi$NmZOG`F^4#&T~LpqGtiV|Mr15@I6h@-ZFf(g~QNVCZ4mjW#q1@F4w2x_dtFy6{Q(>(uR{gxV00~ z>7r{@rE-%i{wWuqJ(a%?-PlC4t5wK;(?&096LhIn&T^nREsb^gtwtZC)<|VZoapT0 z##0;-jt!GChxeN8bskNqy(cad4TZW;Or^!&vxeE4WXFc(c z^_fhak(;Z8xn_G)$xL#A>ZY!uKlGY#gwK&@aBHH~LALgfcfWnKC(2Lq*xR=K z)*QQqoJVAHRUS*q<9PK@|JKr?^c*EBwFv3JY>hW;Qrl24en@LwnLPV=V=P7R)`6)W zf}Ec93QeSqFAuh!G`>U0m^I7Gut%SL35=rk_FFQPlRFO1lYZ(RE?U`-$ zbzvoj-O{WZvZm;Cp8BicZi+H@Dg(LG6gdT6Mdj5tLf&NE(kO05>%{B#3? z6NSMe^aqtk@W!+Tg5JuFh5FIa{U98LKr}*FM)Sc@sZ4T?t31>WoLpgjP>d&T@<8 z?@oY37Sqm(&~OfyQTDJ^4Ut^&x=6N5l11Q;Ym7^v9PF}suInhapsh73wePMmMMw1A zpyQqk%KCt*fndjxonCEyS2_KPj!jSM&8@7uMA=&x=?!I`XaTpC6nTtCO3bEIiXxRP z@7{4kUPdiiWkI}57B#)i?P6TMKB~$0Rih)uFFEpiR8(2m`7{KKC8oeeN%QpVtTDQjneW| zO$VnTew$)mNxdQ9IP0EP?tct`Lq0|+VpV54$b$-4R9kqIMD=Ei!?5Sqtl7VT9*b^FpHYN;*}N z8d-y?f@sKz-0@N({KubYN+h``o|%X9fL&&?_& z1yd7_jg$l2A|X$?ZC&~4flzyz4O$H$o(#JcQa-46*z;I=9<%=L7}5N3b%Rgy_!z11 znpO|%h#{vVkhf#5Q!z;{6G`T#s+tYsOIk`=ZhuJAQ%1la^#L$3)Q}ot4;>OX0l;?T zL=7}k5)E98{=xaHrYES_v9SCl(xfan0vR6DW5k2UaP-V7NeNYBA$R++quY=>#+emW zEAnZXWDUl|_ME+T#_=OdaKN>iGo8?6=c|rc$gl0XrI@w#vcb`Z_{T)nHRYH{{gObE zpVBe;MEw-sy(@Hxe+W)ORoE8Wdg;RKggIIq{o(J1G`6_lx#vZ?7$i9Fg0N=ko+q6< zE&Rnf7MQ%pBG6g{dQl17}k6&H8v29})#p5de9+8I+GS%CODw#aL?WjWW94OvrH>yEU7 zF2?RttVf)l#b_B8#uHExmd!4!8&dMs-lB?_-Eh5E#yPh&JADP4&!prQQ7_@Z>fv)W z9z-=AR@0)I)sPf}N{!8^&a%WSo`70;TwPz#h%U=PkLujUdEGs@*Nc`;TkeIF*iq}L#R2MC^p}uMZT{&2C~ac*_>IYT|k-?$P)`Czbg=!KZ8|(>Y~~gophoIEVsd?IO63=mSx39e<|J`_EOptW1f$aygm@{lR3`lSLTT3+!B z?e`eK{4}AEK1DK_8+#Dp7V=5d7y$d~Dt4|@Wm^fC%5tVXS;q)5i+ptxmnC#V=M@5bYoH5Q-3pz)t-x%gN)Sqc{? z+?nY_C_xke*uZ4+XwOhi5x-$22f_cb;Mu}pU>%<2BweWT^mI(yeM8vZiBicQkGvV4g}~o!8Ohh*hB_cRdKXUX5a^lMP%Jk{XIe;@<|vI#pr( zm!+%iuD_P7#Pq_Htj@08D&1zFV`ddiD;O684C_SBu~t!!r_oZ?3h=o45pJz{%v#WNf{B}riL=s??~dwmZUc+| zo6!_Q4w#Fnx<;~BI$k4zm|`_}&Rx0ddF z<(3^58Iqc6RkRGDWqfm=K0~w)xujWw=~^oP82i8*x($>QdMVyjD2`=q(!>W>pyQk( z4U#p6rMAP>37e-~WI#$Ci3yH#C-l{VRZDGcCFlshyi#Wjn57PtsaDP`7E9kcc+>pO zzUNvNu~Mtl^^rPa+;eLIit1vGkYs0r&Z>FsE$1$nNOR+Kbfc1MIjuagO`KWkO-P&y zy=B(^#EF5O60$$BT(vZ8t4srm%BK*0;aupOlKc~h)s+uQueatp#O1EO_C z3>oPGPTZHstdTcPq4Y{tgM&B3dfAV{R_CtkY+$u_vU;SK_ABE6#f8~O)VCW*SzTJC z@BDW{y`5Y`^^|AqU7<=O&1)@-!6lHcFdKH|MY(p)S!US0}tP6U+Y# ziwj|DF6;Z8*Si*~cHZE&4VAlP=`Ocp@uOT!-Wkz%SnS^3D-H$$utj_(7__NT(_77H z*S;7C_+=5_5I1lIyhm+v9=C@y%G-CK8@+$au3bUn<)gZ+ar+a<2jt_=hO(AtIe`1~ z`RAdB5B!JL7vprjw-n;f+DmbN9M#&evcMrS1K%5xk)2wIoo|jGJ>EJ-cRsIWo?;*g z3N0OB{}J+H{JF->#bt(G6$)}5GE2V1WenZ&{wo^+48ZdK>jOvyx$Rf;99w4a(u zhMZ0=VovyiDWNf&4?Pg$zQs>lET2~z$I2!q8E*%KkYqaSMxNmnJ57eGO4v}*2zYG& EKL7(DP5=M^ literal 0 Hc-jL100001 diff --git a/binutils/po/uk.gmo b/binutils/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5b91ef98cc0b89e5a11ba9dbe34809e0b8e06489 GIT binary patch literal 237105 zc-q{(2Y8d!7eAi1pn`r~C<-EkB_K`Nn-&T!vt_kVpg>8}v<;+5Nt)6!W$(TB78DT& zij%2;paKF8rm|!x%K?hY@0|NNZ}KKhf$#YJ|IhR5^Q0&59p|2V_Py_Y-<*81$Q%Rx z{an;wC_`{`4TItGg9gJ-eGKYv{xE~#NrDRq8VSBe@F{{{5PX*4X@X@5-X>UqVCmro zLv@0Y1j`Y$5qyT=1cFZxTrnK@-X{10!CeGP^Y{cGCiu`x!1vTk7_ZJt=$|OpcDbHH zunNI7FM*CP2sR*io?s-wvLg(J#|iclm__h;g2P5&oW&zB{yKtH3GN?(`QIYggy7R7 z4TkyzI}?m0IG*6s1ivI$oZwl4&k?*zuoc0FM;Q!_33eHUep3iOO7IhcwFn*}7*4S0 zXoDewVC~VkHjhTTsiVP{C8NRLHwacF_^H5)1S=E#*BJ1(4#5`*ri=k!Cyqh?#bdy~ zjRdPPy#!4>FM_2AzAzT^ZBFnpmd{x5BY!O9Fos}lg3AfkWV*+K&LZQ`uhuw>-*X)3 z89NU1d2Jlp9h3Tp#)I#52{t1bJ05%)Gamf-h+rLpSH^?>3KPKRx)UJJK?D;C&YA!| zUm*A|remVP(30Sj1X~d7MlhQ7b0Xw^Y$EWKnq)9^XZ{fUh~RsZFrH_!!O)Q4D+Ci* ze+hOVSbqxSK4uE!xSe1Zf`3gxzm8MUZq!ut|7xnpeVW10n&mzX{9HHWT7J^M#pJrm-y9M5!3BJ^rMIVCw z2*&VyXF*?15v(>STI2Uvo=b?S_Jm~E>f$z-&eHZ6}&t>MLU(9^?tD*DJZuxxBb&y~i z=Hmi`p&iS00mfaj0Q&IF0)*|TtI)YKG$BUq+ zRTksgx)^q`dNKHPY%%aXy99K0T7vQk0(TK?OE7FH^f7)Z@GV{nx{oe}-B(CeqSAm|gtAMx8D%7`H1$*qX3ghRkg51Zig1)aOxRLFd;Ey2&!^qW;cfXgRPpe-B z{|*p*oArAw@t4}|B6yk*Ut32pjbi7a9R|bNQ1UN(h*uAg?d>BTP#nE{&|nxq{Th8o zI>_S@e4pT)qp-h@$KY279Yb7Mbqw=)UEtnh;OF^cnD+z6(Z2d|`1M4&9(f%7*B=L; z-aU?a?j`sj$5*-j?KtfB*%Rp3<^;wWa032(3c->bpHCo;>^%WLcJT!8|8@fS3@0)E zLnp!C`X@1Nr<3TPb`s+aJ_$Z9J&8EB_ax%@6{&yh6kzRBpr`98j5kcmCkotf3VL_o z6#D;g3i1y99(bQ2n8JSId&GrB-^2b+ehIeA6CO=@DwgO!O7ySVH`GjC+*2~kF zU&?8WKjk#|^M+i1E!TgX20i7@z)qT??=1T7KMVV~dKUh>;yLiA-Z_lh>Kx?J;~d7%ItPADItO_# zKL@#dbPn5G8T7r~#bio@a?-B(DPe2Ku_^s;D;*yBIEo5`Pcge^kn@4K8%v`_kTegzWxj3 zTI*M|>+>t(f6lMq%bH)I7YBdEe2V@C{+9X;@{afo_v(2KFZBYuDUJI4R>cjTK@ZbELBoA9smZ$iIU-Nbwk-Gn}!yNUTUxCMS?-Gbc= zy@mGcZh>Fl3cPp=e(6tw6rK#v{Xui(IQ<9kzC@71lwsx{n9qVg;5QEvY|rbjKM@D} z{)zI11e*}UPy7kKlnM<|`Gtuf>wkZOTt0^&+x;s9V<{efMDQtsp+!Rs4Z?_L4~7_u z5kVb`hZt@aA^UnP#E`@J=Tjku<5a(kU&Z~rF9`d+GRi1M2a2o~YIf*|LC2?SY>2A4&<*#tT6yhV`p zVhcf*`(c92?~7%D_YZ0JbUDDR z2y(pbToLn0sR+FoR1tJcsR+6@5M(?0T-u$j2)uWsymBSb6G@Q$Z#qHtt7{2zeE5VQ z$N3*CVLlZqhbTLZA;^B$T^aq>R0iJjl|k<#FN9znO;D|)UqJoD7ckx%FMz)92(mrh zdI9n;Rt58{Tm^hUsp!ZxA$UU?w@H|r$?dnv8Ji1rKd|#>x zeVShta$j2&eA!kNd_7hb_=-{z%JHp2HC)%I2K|W>Xd!4}eiLMWbFv!v{_u+-Do?6T zkp0G_7a^AqUxd8Ad=YkioFMzP($&GA`0AKz1ta%@xKele18mwJVQ<3e{OizD9PYNGr(xvpIk_R_c}=H0s{_~fYxd5x(FeDiBU@7}G6dG4S6uBNqkmJpWTHxdOTHx2>S{QF#EzE0sE$GAXS{VOEE$}C# zHt;-F8`q_3qrQq<*RPH7V+e9QPppmc#?*#>Os=&_TpjSCb{*i0sRKJU*8yLK3S3?X{dU#?e-74x{+uSrarI^$%(G=(_=i4q z;g3ewg+Ewd7jzt`i*YX21s@-%2R~D`9`H6K$onsC>w%9`>p}ht>%q=e)kFUs^+4w- zxxQTw_@1o~In*S`c}Yxt*!zh3(8EpjLEpFaG5>$+WBex?pnvrSz}KxrvN7UB)yD7}7J{7DjBX5icQ*##e{YQWKh^~F)oB90^lJkB zTSBlK`(=W>zxYoR%qyuW{Oh=;;Qv~IyPCp}oofpG4@P2KVNqGjs%~IMdUm&jU7TzQJ^rI5_!Sxh{eCV6e5?`!zP1&Z83R2Y7Xv+AB<)|1 z0bf6efgbFQf!xo=V7^6TG0*T=Tz4kO`)PRud40D#7W6;R3i|PMEAcO_V0VeF;71m; z0^Sv^K;Mp5(3`WZ#Q(O2KdRjtd4;7l#+lq2;~#5{eug%%mkMnlzcy_!pFV9czX5G9 z-!W}qZ>t6FAb6739RzuQX=_`^`IUCSyQLlaf8P#xe{F~Q;_bnga_up%M(t7FR<8R9 zbhL+_4r>oNzuzAD?YZ`l*R}TG!^3gtUm^~AQZ){FN255{e>y?l&z}&7d7LE3>z=>k z#IMGOsC7zAJml9d9{lSTkM>#d7;kbs__j74a{D|U{Qo5$^gY!9<2CO9yR^vltPbe+ zu3R7M0KETnK>z1E0!DR2yOfUbZ=*Y+-HMKo&$f=xhx2m%bSKzJlTNUQlunTMlunTM zmQLvZV<+(EfzI#~&vk|$ZPFR_37w(uE-9bX8S`Bw*IVTJYk}80Lw=8Rft|n51><$< z0=o0NAim8d*q7~sU?=vgT_B(M1lV7n1n?u1U>J{^0KC%@Fzzb}(6j9cpzl-y_ z+7;`OGhH$NQr)0Gbp_hGA#dJo{O)dTc&lI#9GfOldK;M?2-crN#VoT~SPe7g38 zeY<*sZ)19b--~)e@86c|y*n4>?S=K<+r7~Laxd`hPA}-csW?gM+<*9Y^t-Ust3 zo`QJsdq(HBeQXrQ>DUjQO6vXpo1UoVxQXroSeM8i~Rcc@8)1tnh^FUwB z+hB$~8xrJw8#_VX*I!3)Ag_~BLkv54KP46Pce8+wbc@W-BJ;C=j@cGjCt6@1TP^U{ zpIAWmc?Hr9sc)(-5x)rGc*Z(=fl^(%=uOT0_+RsLoc28&=5+ ztr+K&6?zn!4tgTe;hz%H(chg8dtaOmJ=iJrf24!2r802cFa!MRo&kEt3tW(aabL}V z-tNf&KW}8fZeGlU{>NrQ&dHhJn>!PFJvI}3Sds~QeoNrznaB&zXJVXC8~jBH8_Fx& zKv%RtvkiJW!iIUSv59@zfbX=xzigOq$$p3jk^LZ-J_27NIE4Kg!G7%j`lH=Mf$RH& zpP%=~c(?k)&dS)quMT$bAx`(%R-ms}6ZM*peVplfzE>~2Li#{D`Q|@aKX(A^V!{CApR)$Q53Lx0dA&9O^nE-4;~pCTJ-Ipn`W51Wy*}## zU#q$x#|AEp-`xedjTX4d1^w9Jf_yHzFy51H)+ua!d zkQ?|exq<(Q9Oz-q9F(`qLAwDt(3A0U{YDPj@6Hi_kt6=X1HCBg!T3=g@GrvyK1}vN zzOQ4JB0_Wrc-@07*<6XJX=To_m&tJK)@23WW zA2kL7U;BaJhjk#@j~$5qs|0>D5bL`m1K}6T<-xyK%7gzk<)Obh5Az?H2fJL62YKzx zgS}nN!~DwUgYQZC@QYLPQNBGN`gAiNatj-TcvgH6^q}D&$hGw#=v9|N@Nazw0sr(t zlJ5_KT+Rx7WH8#*9gOkP2E*UY8w~pP4+j0W2a8`ABI~RnkfUn|+RYgP`EQr{3q#;H z9vKSzt3MRw)}fI1grTsTSB8TA!$TprGeaS-n?s>D#fM=&<%hvOY7B#1nh%2=^&AHI zrwzmW@`p)090of%Fbs10Uh4lI2E65lqhI~uXxDx?#!Z%M$8gy<8xFZm84f(J4adAb z8xDQ_WjN+l<|X)}<^l)31Ufef{PHE}*M*m$UtuG_hjJspw`L>2k94`7A=mGXfF7M0 z0X=AKpv~)dfOP_`9ZG#9)o$69Sb^4V-aVXkA*&V z8w-0HGZuOirWgPlD(9`kH0u$w^Fc=*k!<3ZQk<01d8 zS~OvF68PlS92PL#Md5%@ly2z+}dLJnU~gkBb%1poZ6NsxQ>NsxQ|B-q#BNzlV( zlhFUwNw{C|F2UZM&rSy4@+O1dQzt`iODCiM8fLXY?%i zmC3WY%bulb1^T|T*#;OT+rQjF6bIQ7vrs+i+Fo*F8qARJj}c5Jm7CL5AsW&2RqD@ z@@exB4>rsLzHjGYJi~m%<k*64Z|Nf0KU@U9f4>O&a%U07EwLDU zZ6Yv!G5luAV#s^2TrXb?yZ&e~?CbBvm{*AH$fcCUe*-dO|rRec%wZ7*ZrWa`Vfk9_iF(WAA1$!jrg-dc(O zYjHo|LxP!XpX-o+^;?H?A4}IE-jsMH#4wuIIj;cE@2^09C0>QSRd^NcTM^7^8<@|cH^9HG z1o?bVxi=yA0dK;uZg~@Y|MN}Aqsd#yH{5T5zTI!3eaW{m4-3ITtQQ26*%zzaw*=_yF>I=0o6}{2|7@MsOJKpMDf#=*sbf;27S&`55wC zPcV=D)|L=MKKqp|@JqjKfqb6X3jfn}EBsByR_M>Dtwwdjx!$M$pRZxFhfz315d8Cb0e!%;J3Fn-Iec&ey&HpW1wj zapn;m$M?m)g?zHUgP;BEJGuY!9r*UZQRrXiqbQ$$6zhP^N0DcoISRRyIEMIC^BD9q z`WW;t^%(ST>@oP6^~az$myThcamNuKUp@|f+kPDR#hK&K)4z^G@5`K!ecKa|NB0wm zYa31=ejGUgy|{V;^QdwXbjF@U{eY9eKj|d=;f9mQGY+3boW6V#^Syl%{;kz1im&7! z<`ZlgMsenQ@afzcw2M9qy`N0*C${%g!x0*_j?eyiw=zpp)`0z** z^s^9T`<+GbTV6L2WP8}yG*s!|^O2z{{~1n@{qg$*IsWY<$a?yC6!_ASU^@G+DDdYL zLC!-uHVef$#Ae|0#%7@VSToF{SaV$0X%4*R=9urx1X;h2H3wgRCCGYPJzD6FhMZ?b z1J5pk9H*}lWczK@0`eJ8koEL!g6bSZON>{Ipo8^-pn6`hCC2%=CB~@~1NrqL$a%ub z7|i!n4CYlf7S}yup=a|2o{a?^HCu(Mc$`nr&hl&p`E+a@s^a@Fg6xO(5#%^pzfGvY z#rGH5fKScZhARKuU*J0gIiI;h(8lMo+JU}h1UY{^*ADtxvc2eSd&p%_d+66Hf}D4J z)*k(e$KkpYLCzy*5ac*>kRbcZ$avV(B7z*hUnj`-#fo$YRq;Bv1L(Nc0rT$J5qx=> zAp5@`I)a~uPSCdo1hYB6>;yb_I>9anbcX(IC&>P`NS9ERPju-5IqxRO>(rZFP~Rva zRQb(u37FTq1n}j{1n7H_M995OBJ{|e2>Gr{M8Exs(1U9P+0Q-I73KB20)G-gj@xSp zx;bC%3P01YTPXI$yFos?2(n+j(GB=ZCqd7nlfZ}cB;Z|<1b*yD!aRN;$omQvyTjg1 z-O(eP8qf z-_G>H{A%?EbQ9z}>K%fdcYf9z_I?HHur@dRxx8fGt4MoVFo{*NDWo_b8Uhgmo}urUW!>@r;RPp_fZzK z|G@&ehNfYjFQ&ntW)a-S_M8Sih_!~Q^`6BF`m(L?mmgYT*UzVis(fU8I_UnMU?qxY z(HZbB=>tLyqnNJ)FwY7u=xw?S@n#0W8Wc~L5gbEszlX-B_}Dd{;zu#w=MObJNO7~~ zxKP7Nmg_W{#{=Xq3Erak*k~@suRTB1P@MWrB=`-lQy0T-vX+33Sxev__bq{+dwwbO zu;)_9%d-^v^#MWN&pf^q?S5DaJu15ldYQBgdNh9-^!n9hh&Ou)@;d3}GVs0ha_CL_ z<)}9=ho70c9DG=@9CAD-<-aXQ9C&C2?7aL6;7eKodIqh4z7AgjfBeb{(05@4#;d#% zex%z<%wz0I_~CUcG0$&S!oF{;gkP+=3i8Zd1-;$A3VQH0LC%XytqxUrm3cMn{uc2Cj!5ZkOxW*ANG$ zy@vRBo8WM^w+*n9OB;Zv&Fk6{Lmth|XA3g$ozkUR}DDg4ke$2@+z!2F)r0e{{0`XZpF5E6$L<7QM(l*X ztlWvb|FfOo%ilW@pR0U=JS^rD*mu?^;L|$-4}F4m*FS-L9{m)2FntQVF`r`m{+}Y= z4F42znfxi%5pRA9zHa*ze7gB5=&HI4d~Lf6{ITo;ABM>F45@!ru0PoYe|TaS^!?T@ zj2F8b_S$7P^6EvqQGRJR2fj@o*`m5~){&su8hh&1w`F`eJ*h9sA(C;4m;BVLLgB|>`5ADN0N4td2VNVl2 zNBz5>1OHWmyxxEO3&i)81bLtM^)HaWZT5Bzxk#Uvmg}|2~9yK6e;+5)Xskp@)%gy+v>++v#EGU7I72yY&dJUy|!3 zM-bQEI|6@sn;`F>H2NC&mVJ$U=kV9aFYA8;|7`mPetpq5$oJ2EgZS6&Ta5o9L4Mxv z5W$yOp5GyUR6B~eJ@zQnrCi4*Wk zktd+v<`am6gHFIN?>zxMF`k5ewmu2F8*mc-Y5Ym7XWu;uJkOtk9HUQxt_*_v_<6=t z&_m}BfFJ$!MpPGF}_6g2F4;r0?e0!Y5cstI*FI^yb zDU{YD1Q&At^`qGH1^BTU7a*69E+BupegXMi$VKp@(M8D1dJ%lsE%2F37(e3@>~_N? z*z;GH;2+Ljf}a0#3G%6N8T_+f2K_rO!!MTq33S_kLR>oX6ZjVKGvZa3pF!_OKZ73! z<+{Zc*h!MW)mIQ#uU~6sJ70sHg2lfqIe?Xs35!}Lg z(4Uz1?|;G`qi#c9t8c@Py?YyWw&OPFK6)E^bo(~+p!{F3=lH)cze#_AU;F-oTz>rv ze%kss^moeN==a^R#2&#Png51AINSM;caDv>g6+w01nIQY+g#=liM+kB}d?FP6+7RTt zA)6rcV-rD+2S?;OG%QSwUy&f&OE-cnhp7blJj0s=`To^M1bJT~x(LR7mmu5O;Ub{t zEI~eRR=OzqmnX>f6hn~p&Q=uTtRtx22Sbq0?>_rLn6lsg1ewos39>%#Ajt8yiq8Gpl=O9_Dk0uNBibagsJ;3uM%XvulZz{$`kSk zvcLS`Nyy{qlis{Blt+TWP*4D{~K zGtf)pvtcT(r4eL5u!JD{)z=AT@H(*+==PL?zAPiyTRlG?ru=ZH($Jfi39>)^sx{$_d|46lEL{nHqje?l$6N{W z%&i2yUQ!AAdA<_t%33*0?Gt@Ykn@SEFN7Huah~!5=q_6YdX+_x^PE*xFyEi6V1BKt z!f%bN3cL7}Ag^C5SA$)rR|Ee)s0Mw%Tn+kM|HUx1Kalq#xCH4!OC)p$ALCG4Ic${P%F+DQ^PZtpyG>!7ko5fxnjo7K;F$su7S|Vg&Sb zK?L}9f*{A~7ivI0?iv_xP7UbUjvCOj8w5EXHmV8et_eTAfgtarT_DKsUD{L&^_jH+ zSJs9ckJm=~N_AkTDRsbyj|g(U@>?Cuqe)%xcR*dp^(}%Nf4-{=|Mptmb1&So@$e(oa3>)vBc;8(6RfuDS& zDeSLqQ_L^ADd=%F#eBv#g}fFLxJ@M5FN=g;yi1Vt(H|l)-ai7L zh=M<;6oql?MZpewM?t?gM`8S5qF{gJn}P3rnnBOTG(#L;-wb}?ax?I`ZF9hJ&7n`9 z66Ez#v1stGPc-=PQZ)KciiRHSi^e!5TEIR#wSe3=w*cRMZUMWg&=UGNswMQ~^OoR$ z(HQ7wj~K+2u`!VE*D>%D55~d{6JkNf(pdQUZLw&7Cl+?xu@&UFks#+?p{)^@GFyY6 zS6ahgmuiFYMzjH**W19Jer^N4m1+yQv~CN0Bie!whY9j}vsydwX>dEt=lyn|FSI@E zJ-$8KO>Yl9Jl!7p-!Kk(mrrmL(;o-F=!u6shY;j_@hS1(>)-KcAKL+TJGle+@ex5@ zS3cA+Ox^b$-VyrxU?45b%s8!?Tq>lJ0o8>(i!u)-WhUf z+y#7?+6Ck9=>mS;>H@kNBtUP6B_JLiNx(eoCZeAw5qh*S5&Zon5qvAx6@2R56?(M1 zEA;mJu82ovx&cpzZm^eW-JmarrTkw>$R9c+L5{8@=*zMs_@e_!(36L|V_v52pucT* z_=)`P=r^7q=ezH8N4{~fJNiZUz_^wk@aOA#z+P|kz&Pc5!tT5DMEmTXz&Eoe;=O^PSia zd|2EMcDJb?)+b*QwUx>ks>RyFd8#OMmEN zRXg(0c6Q`LId;CF6=Ka7jk?*7kKyOLe6J$u^uTt5c8=s5b}u`2z~875bKbS2EuPw&I>av zU_HnKpX=vC9{maOKIP(k==1Y~peHj1VZ8N&V4ph&f!<#RLEg^{hCCV#hQ4MD2Hu5( zp?~`aBVYb!F!<7Q2-?jX0{QJ70{aRX3VUuk6!fPK#e8xFjvESpHJ>1#w|ih1;HY7U zKZfCuQ~%*ur{@m`oo^18b;5Aur8kE|-Z3vBP7HVn{9XSN^yjCSK<7gvkPpRTX=2)%r7BII^^BKTW>66owc33@VP z62{#=34ZqB$HvCS7IbrIYTH+k&-8XZuBN%LgQU5jcko>J z{q=JZXFn8pa4ziq$GI3UWFGc?UYG~EM$7}gRRX`52fuK09`x$5`G5`QqrZ7R=ow3p z_e-}3{ANDpeQiGUH);X&bSudy&poqHNekoS8_EDBTSOy(^@9$jKF>}T*| z)L&l=f8bdHy|}Ri@-4kI%n-u$2H)QURPbb|@46*j7m@EV^ra_#>{OOjl;kGu9uEWT zOJz6cdlzc+N>P;6rZxuz!FqyALh$_r)z_rYTIst|aE+IKtEpX2DU;Xk8%_wGlG4Ua zupza1nBX>Q{{nrg()EinMgo;TBz<`QzB*kG5An@y2Gv!jGNZJiw8M}Yig#DON9F6N z{6rYSPZ=jii2+ZMIkM`iC(eQ|30 zK7HR()JKy`_|ZeIdxY>lEx8zK^BJ$rdHqMT|4!d;QJcAR{k_oEk;>V3Jww-t z^yx)y_}*10wTlp3*XVmU`u;P)%``5hJBA(fnNMY#iu&{Kly1(42v_wm-}N+V%lkd2 zLj3#eq;d-RDmL)nks^5SEdSl)xK869rw_S*!?y(c>&7S}3Rx% zW>VcIYQy*MhST+>03OFu-M^&oE?xO%wq0p^nA^~}@A8=(nNzZEZXTwabx_)Ws_sGI zo$Gvmv!;}{qwinR_t%T!ebg!@QCUg)L{s^%f-{9+8y)_5<_CSc@jY+$T}AL-_O4R@ zkF+gDI5?kdBmC<`@K?6+FuVu47`1B@F#m%(J?1^P_XQXKzDHH+H(lNDllL7{-;;bE zl6?;qOwjd>6TA;n`D;}EI9<=6@BM|hoLBOm}1?B_M_CF zmWXQ4>NP5FN8ewivLn>TN!Pr_dy!yYDtkH1e?A?k&3Yrj+oY0d_*DuibJA!)vegBTWpU07LLu2~B zMCQf$^)A9eOI(A6VecMxR9bzL`Fc(RY4NH7!>S z4QQM-yhp3k$6oY(a6sJQytg#GYH>r^r_ErQm0E#2Ked^xJ>%Dr-7GnJR$qg2Kz;VZwc?W)AtvszBFBbLUn)gnv(6D^SuE3 zYEReiQM(27X-oZFLQ{PzZ=(4*D*sTv-{AYBy8gdV-DK(0PGAL=mjUm3UqJLOqR#|g zD-di&cs`}?&r92e!ix!X-8_`f1khY`G)Bs}bqQXhx@Gh!LZ4fl0~O^n3ABzRIGx~X z>ena)ziqTp`tRZAo2YIX)g6{G2T@s9D*KRN87k*Ju46K0Tb4W92i3P`+41|==@Uwy zkEP8I1kdt)0m7F@AKsHT5^PL;wo~031Z(g-=~Ge0{F30JqIjP^|9wX7exY$%3eL)e zKUa8>LS=61Tb^Z4pKA0uNM(=F=Q6LGbvE-hm6hQ26~Qai=X=7jJQTm%l+J#MKEKfQ z74~I9%T)UQKvBHgK9c$k6@0g;-8uOlLEl>l??0rnw+RoQHT#(JP{G4{124&UGqrtJ z+MlKNqXK;F0lH2S+&>iMvmE5JsqAUa)9J(Kg{<`1NAz5v>t}clg6{yqsWMI|`v=x_ z`aDZ*2MPWV!Tkl>nS8G&a0}}TmDeW7@7bRwc)z2vnS3516u+Z!hU!aE*)`rn)afAa znVjQ&R_WJ;+VJ`RqB=R;U>&DE13A`l4#atc;Al>;g?w*RgwNg3+FWp*r0*80n<&>M zwH%eozTg~(t}XOQrFKK<^Adfp&T^*uqpZ8^7mFCwdY=ERR5wq?dQi%E4`aB{`Va4i z3NL?Rzb)lw2zLTqFQ<=@aIB&>e}&<9d0wXPbE#|_T@R*qyoXSht~c`@sm}}^i{N-Fi=?{a9M5=ND7x50+U7IuRK|OO-%{E0EECRi z==*2Vb_iWx3-Fb{3go??byWAY)c+=Znp2{7(-~IG`Bz=lg-*Qy;H18Ye;zTtWllP4hsr(6QGn(K~X>*mXpQJXo3D-MR z)|OyL;ol`HpUt@+=bcn`fyQZ1uruozwLQ!0JGOOcZxftvP`{6g;I}lM55;e!Xn#(b zdpz4b)lHyJC+b&{uIKQ2n66`Zjln*w2!0nTg5X8LU5fWt1joNPFK5~6a)?K$tavDX z-)gD!d7a9#sSn>HQ0MXao-x-8o6$yd(Ke_#?rMp48MD${q^VHq@wa% zUL){xw*;To)}>Tlk@LSI>h+fD?^Tu+?|W;xCZExzK7UgEv(#@fmG`DkC0?gc`L~>R z3ceFOMiKn3$!?Yfm0zc}6{u`4=YRBhkggxs_Oy6^TIWkcsP0nHf_o~b`5Y(bjD)`y zwW&+rdvFfH^c2PKlgyH~KhpJ2>_g}?ls=EJ9n!db*6bUqyTUffxj8qMv2GN>Z`~Yb zAI3CLo6DSM>1au(>u-5n-Y25(SsdeZG@cAX_YrE#_r`71mY+pFFFfVv`u?En6zcOb z!T$6Kp|<>dG{3`{?{}3FJ?*Qlk#+vKGq0(seLsT#5}bCaI~!ovHtKhp^Jl_6i(qrs zAJIXlj^@9mY#h}uV%ZX&RrKk>IRopRw2cl^%R9qhj#IjE_)K67;pobHLj*5V`=>;< z7YI%f`j1iFSYFoPsBEdUNfusB;=NGe!3u&~>9dx~lBw@$_UY{FsLul$ZmN4U z6u&RETiYkm$#XZajbzOBQr1+)3KRH+^y7O3w{-F;6`&VIsoh&twpZFOqy8s&UsY$1 zop?V$#=Al77E=2eRQ3d~S?R;?yERk&msB>6`o9%|-^2|3`t>xU8KJ(ZgNqt%BUx(L$ytl#o#@aqN_4%C2Hn6Qyc@}-o)Y+x_y-SW2 zLJ!|J;b&1g(Dh z?_g=Oj>?jC`tvsLN%1}e$0?mpiKG7S@cm=CK10`Eb3Vkemd6)b7f{(5=8yEf%=*dq zNO=82uo&TO!FvSseU8j)9$mMi_V3VVG}{IL-WBI7RNqkWUKSclhv9d+5<=7~#?)_J zZQ|d<;=LE@vq2~0HKF)z(G-I5Qud1GKY1Tn{hk)dnZDoQJy6a&WSq}kw*FUgtCVaf}q4MX20LpEPRsMiKn}<c-{go#*mio0b#u^BmNc&!_h#9BX*}DPvXOy>a$Q z(w~3p^IaJ~O4}RY-!)_X;CnDspTdyJsu2EWbiJPM(P{Bq`i>UJ_m1D;^%Cz#P}z@s ze}k?~)TaiQ8SuMzk4yheLf6;S<{$Y!nfDuIE?*VJ@6$b{(}Q8W?xp(G2K+W`6P6q2 zZ@h;_pRYKlpzB25*QUCI1Y?E15(KaF`c&IX;B^4+^XhEvFU|+$`{EG%UR~D^eujbM zsNK)xJe@x4IZjgh0Ref_yS(40t-A@n%6m9`znNoz1MTy*)d% zeV^Cmn!n&2mdeI(?#DSO)lHXi`tW`(eU=N2Q>0G=8SnE@{FdH!8TSg6w`95SegXA) zRPdDMdw;yfly-bxoX?{2c@Tb8s47btjvKnm} z4yVhSMh%J=Psqw#K zxr=px$LeN^jM*+{hRd8~v^jFDu56c;{x_x`z0o#0EzMFG4(Vjav`R+Plq9Q}>yb~CZS*x1NL2{~q0j?tO!r6AL4P9xSe_6pT8%L_7d3La@{Nh+ zR69w*ZM0@(=j2Be(!krXm5o~SObY85(7@X<-D$Tw2Qri018q5$Oe@6i%w|%}c5YW$ zrkla}F_IRb;rFo@`PaOf0!_Jx_0A-^%VPMi!>g;&kMgZ4S4wvPWy9I8lXL zxU6=k#jN^i{msm3mWi=uUS)fpuD?Can3|shK5F93(dH5DvSiwFY0jisd8)wewq~W; z^NneqtZbH^Hh`kKWmjL-cjQU_QkPe0b44&mqIXDiiGd}NJkjIV91c?EdQykipD z*xWg=9Uh=>M25o?k!f~kRxze}Ed6N$c4}a>E5kHa&2i?K?Tn_f-6IX$)e55dx4O2? zV(*r2%kyMIybh~1jr@<@mg+K-B~`4P#`7?mjJ7o59euawdAlh!?IaJk&#PHib6i>qMP%WA{#K zt<6Rs5~zxtJUe<4XFzNVH@Z3MF++UnsPDq!6Tjkf;_d<(?bjh-jJr3!Z>-wXR2aIy zw)fkL^cTVHuFWM9+yl4Gt>>9n9szB;`r$Hq3!nrlxIv}v5+?nWv70y_m2cVnj5|Py zgLY#t>HfERXbGMBJ{*VAF{4>xdCfe7G4PM$OM-2Xz9`2}+gp-r>Qlr}i5QH@EMS;;9Xw;bqn_3s^SwAE=?KirsQp$s_LWVNUF z9&EB(hnP~WL&J^P*_Ln;9A$gn(KvR*8FupkM0l?f*aP_e#X55Q z3uQhk7d5u!R3Tt)_kjc5^nd;+5;>0h*9Yd%NRIt-YNDu64BTJqrz0{pfjjnRf{28> z_6{8Vo>)vK(jJpLC(UBE+f5WxNefwGjLqn~RHiJgyc%kAU@ehuwpg`1Ai{?@ZJ^ne zZlYyTPG)2Wjiwll$Pt1*gGMxzCwo+dY&r89PMB$BIch z&1uk=Y^%kVZlmsKb9zM#5cZ;6S7Kmi3sg`J&gpD zDL-E&ZUyu((c^L$$>V36U2dz(m)%K6EqC_sVc%)%R#uh6n3rJ(n3;YZ$n^eZFi=cH6@bd zfD#L@(N$u`rXLCwIAes=yOSUu7>$F(g^tg)K*v)MBSasLf z^!dMq*;t)}kkt`Ld^p z*pxP%QW9FV6a_X`t?a3$njub7{;0N&^fA|%X6HQtR4C^zK21{60zsA(#_ZNQs|#`= z9J-vI9AopQjwr1UMIBazC_Ts6)krBXVPv0#LKpg^5;Bw8WoXJ@`CF8+3wcoTuuAtb ztPZQo%qGh9ibm;5Zrs?E{-KZjDLL32*+dzKEWh@4yHZm>8dZB*YM~2rhWNo>DN%45 zX@dNnQiTW~k{qYgZUQE`qA-h)qPST>N-JnxXk~77nXtpyRDmdCM=ElWT)n}FTuQpv zS$R9jFzO;;lnjf-H$uM2<#7b4YNm4_MO;cPkkV5h3OLkEI&oH>Z)~c7mwgE;qEIZd zQ%2)phelD_h^E<2;)&Kdc(xHM5mheL7OyvRC?wywXU0JZ1v@gOD$tTBJ*lb^$|36t zZ?9|;oUthh(I@eQe23GKkL@Ir3Gy{jGwBmF2~nxGD__kYDO+HiHko8u;agv5<&+Ru z@-qh7^wLow!)lDDkp?n@rESoZ#c1ql&c18Pa$osML>gOrZjhcT+Sk=lhm=vXJ8xzn z%e#P%_3qWNUcrvRm>j@i_AI_?Z`U-d-J0X?liO1wY|ODz9>AvV*5o0Q_4g4lcGz^F zcaRRmE}h1-*5(q#L;7?lSO@qMzcq%*G{9rC=7bwf1N0L}qQ$3C)!6f;9W4)dbK0v* zsvWORMV0E*<|TkC$YLF;Q(HQcmq>NGtu#cgZ-8zn^fgfd+3&BDiy2RTYoLpiO`4!X z^uHSnWU?)(pT(I)iG^l}{>q<_{xjF@x6l(*t=Pg;~lz8?kY!$pkq4#c-DOh+p?W=UA_T$*E3b~Z>cKr6ACr{UH*noRv|?67kFjlMFf{ht2aT)0+d1xp8Xo{#K}-2pBBqY~rQEpA|PXh}g})C&lD#;PuBHsMw{t$8^vGcW9Uv8z~FO$f_YDOiqd3Wz6f zimRvs{@hz5y>mD)(U8*J*HO6&?SjN_aXQ>NE)Ut1mqI`0=K2DazhqjdEQLtc;zs>Wxwdw1VN(n1ZZ_Fw?vR$}+XV!acC)hG*3FUEFF_-=P#6-&-n*2(PR zlM0p7!jai{`=u2R(nyoKly|Y_Hs)JD-n%h6#NN49PUFHC-RjfH+ zB`B^k$=vLJa97~}_8kG=-2g=|5(5q_0SgFYf;C5yWi31@b>XzoyK2>~Y=WR*46=T@ zI|>k?>YDO@pP%v(;X7Nx-Bm07@IgB3hA*r$26np5sWx)<45A7Q+%X}#MO)Pm4fLZ1 z>8TqvSkFQ;o5FLO;=U+YFn9IOUbQ9;oHOHdE^f$KZVMDl-S2UOz}GW7%4jm$@7@+m z(a099V$}TylQaWyvQE{O88{WaaktfhcjO@FbQI0J+ROBwJPH(xuZE;i@JN!I$4(*)19^Kd z;C8ItIZ)FjswPuciwldDxZbd)(UNI)nJwfs7{|XG;0xvTzpsUNS3q7&(CX65DY13g zvq()((`jV1+wJjg$SRvvG-$fwZOycF)Y*P8WLn1N@bdwMAZx+vGn<2QIg^*?BKfwhe+$&*vagog_?j=UZqRg`kWbhK@Mdz1EIG z75r=IbP(HfbjPK1VhcCg(!J*yic4BA>Auy(w{YBn*s}Azc~}jzMQsvr?&9X#XKro9 z29g-JCHm^D~EPUE2#oI_N zqIvGjJ+F#)A$%@tmXoF$l)5geE|4%~C;pSM#H#Iayx=`cr11=>JPtXucz4oprc;`x=Ic*VF=-vV_+%yl@|0u-64kc| zPK+r?o4fxNI)KsRU?cO9em~fZ0rSIdEbD83N`r#1pU?Sa8?9tg`Q!tM?Ud#zZ9r3h zLCTGa9CpOoOoMS>(=hJ|Vn)gYcz4(dQG4EmV4{LEUSo{nZ*bPD-mLw8cT9rxR?ZM@ zs?u^wJ5<5zPg;~vIO98$1@GRo62-=~GD^K~(~Yc7byo9;)1wM9msU=f#Tp=5tcbJB zuKpxhbsSP*&?v()I5@uhLkA2@UTcj}C@O$4PDuAN84kPIIX-qHW?Rkut&ZU0x<9HI zgEmKC3$DY!#sp>PZ|%DapcI6rfhwi2r&)N@JXkVib!FK&t&k=*O`6zYciG%lSVk)b;7Si^J(K`BTRTy6X@?MS>%6X6(NIYw0P z0&%7TJ8sTBlo1=XhIl$aL&Nq_C%@lW2tvLg&R)_BxDR$ksi-suMoMz(i$2T?u zY3n3;yWOlineNF}+vjqy4*k4d+?s(hGEsu+$gl#-5Dx79 zJZ?cc)Y#PKu(<9k9&pe{Yc2Wk8#iDyDYd$NBj#qA|MT(U;-kZj-QuHFK=&Ki8aTAD zRU<(+WvKum$`=fd98!IVX{b(qcmHdthG1$GAxx0&5W4sm3g&(a5kQwc%lzMs&b*KN zPe#uDUyOVob0%3NJDjH8GWv!Lhc9Q=r_A14bnO5OS-aIU<7x!=hKED!upnd0snP2jRX zk0;2YK|>pSR({I?A0}Ea+%GwP>wy6F(1PK9(U|Qy+AU#|I;PoF-A#$oPFnajQ^{jV zT@_M$?HC?E=PLcZl(}r`6tF3W7OMd=j;Fh4p!wWqw1&FfrdAU4e%>(Si{n=YIMpd*EGS_&e)??krnK^11RPQ>^63r3~dY%ueK zL+VLozYxZWOs81ky|;-9E!0ZGkZCn%8=K0GBqtcO45X#0TGt5%sjPt-qw2wEv`#hd zhkgyOPknsHL?vSnq+EAcR9oC|D_^oF`F@b;3kL6_*o97?gktGm$ozv(A3gr-`MW)- z?tF4US&|keH*PAs_ffs?H%;XkdeNwvsRT3m1!EvC9PeZHVav^@(b#lGoiQdUx=SnB zY4f)5xH+L3#An02+u?;{i}BXo2e!N3Il?myZk#ptI~}L(j~Bn&iH!TW1#`EXP6ckp z$k8{~vR%gw1KZd#veX=i{YHMY644_l1+(-eY~HgmC4!sMzH8JrIr~4%*8n z0^Yu)oQkiTnP|<{o`S;@CV2CJdM%Frg-vF8>rR%HdFl2(^z2rPGCo47*(rb5x{{fz z2M)ch`49fdNSH%vWv%^_1-z)=8!}uOTx}Vc9guufjc(hkxDL<#9UR`<|K}6NvSf_SM z{kj3#QB~g7#r~pstG02m_miq{J7ogl!EE4eXGOY&2Q$C>vpJ=wW=0?iWYS&4?C%UcyhgG~cW92ana!fAvD9XK}n+o)z`TWA1V1)RKP!2{}^jN$jF}hAV zbdeo9C5F={A|m2m==3O*G?KODM{h4pcblA+Hb`UT>=lRY_5cz)=4U#}hB z5A5ze)bEGHnrF3m@I*jC(%ri=z+Er28 zrM@BaygQ-CF0T__clpr|*}!DDBH2S2-`p(~JusBK+eKw}(MKOE##GTisT zffbHLwbZt+O|8SR*i3Z?4_;MiWS4oM(z|LZJ|`qbw@AQ?$i%T~Bqb%=<80<^S5|r} zx3f!5Z=+Lpay2=U(C{JI@JL>!QQn3NMid@tR)@;NBeOlJYVV#(T)at7U$V>=7qv)t zsdC*CRElsbHak3$B3yVRB^Tk5U8E~vNRc<^j2SQ5sop}VAEZNh`+ zgM~&zj%KOh!4iVN2dVEfG05_UMxih=KDuR_wjE*%L*{p=k#I?Kb$l<}x04kaK$aY; z(9W&<)uC7K3H5NJg~Xa_HTE@oa-3DdjeRp5o+{z@ zfv~ULW3i=i4_fjt$js*d*0c=4V#=+<-};$z%~kFLAHUm@AM&Z9mh9m{PksAtPqP;K zwxDQf>*8B1G!;Jk?X-Kckn;=*%$)dDJ>JbIZQr23EgPqf+}g_pt?s+&IMiEqyd$Gy zV!G%(f`|xjaU7WG^u0}ixAUSRjod+p%b6Vv)&1aV8h}f?E21622{@zAdkX6DM-7FU zj|;fft26vEJz!I(Lfo0ofwa;aNS5e!1fJffRjm&N^pS#GFkIXlN68|S+QuZdDG(P> ziW~WSOTfr!nqACN9X3lV?t5#Qc5*4QW2;sPv59)8ASLqTvsj((Xo~;&q@XM4Kw}QF zk{09R_g%UJ*dN)cOKdA`N$jIbN|~-yHz_FJ{4?id;(e;7gg_apjf%*)*ly&c^}BWI zJ%nbSnD!cD_$a|*@SX+4bECWjVj?5uaKMmz95jy6tylt6Dc|0z9u<%1x{F!2#ll(< zsJ)-SMnNSXOAMFgUbhMEmic7)Faziep9j~io$zB-tF!G zg7Vz|lyW~7oA4BSAAPLeaI5xbkP3`KLvz(p+Xj|IJ6dK<(W=TW! z%40QGzE@|q;K^URuFPgfX4sX?*VtV5_ECP7CvJx@#PX>S<^x+yQcBBK(J9TEH8WQ2 zidV&9k4wFtQ7r~ZutZPAJoO}S3`LH+PeNv)UK>*^#^x%H?_r17{am!n<)ibo(8?g;W?_2BSsn@&xsRvOp3GXwq zM*Xv~T%%q$K+#E*UJcz=p2JP^%23Utt@v0x6HK13ip`zk&dJKD;(Z`F;Mwa!_-em* z+k3Xr8n9utFuSdd3pGd8L@oLo7uF;m2VWZBQyJpT88%B}h&A4vXUphfcb;o4ma?0kogiIfjh?q|-R+Md4i%*(lOk7-I$BuETwi9Uy|JVhmbuL<#sfim3 zyv(7%K%HDpyEB926wLpjNf&Ddp9FNV{nA>AQb~oG52LDghzmg;hxhdu+DoV8B^pM& z@~^mb;)Nm(38}OP0W%wPqD>Az%;l0{wU;p@_?d+GApM)g8;fyhKTIMW+z}BG#r4I7 zaDq=*_wSrW$n;a{is*xhBko}ukDM?{j zq@=1BX)+gG9`8630sXsVi}+Hkjx@gxa;KE!V`ln;8kht&t!?4I52Jp(q^epPR@3(= z)JqlGLsDw>I|c>AtX~gV^64@evm}q&tG4~})&HOiC#44U139FN{6x+F;qKj=+d8g% zQT!Wxik;-}igEy0569zSL{2D*vUx(0Dw49DVyS2l*d!5w0D^}^jqR$~n%JHympzl? z$TLYMi8HBlZq+$;FD*+Jt!LGI0_uK*^GWV{b@%Gty#Y{?Gr8BP*u>ub+WlC)p1(y& zZ)7{HRkw#gr@DV|L%c|&j%xWuBfzY$H@ba`G%jMp&h;KX8rHy&YJNNxtFe^I@qOuYt4nsC6^YbZZn#)WMO%d)=Iy=?gx`y&~S zikwZv#i!&5ZRF<>z!T)<060R6!*dH{TfUf?D>4kD#!D1d3}BDoPl9s3zUtMfvu<{i z5W=gz?G8(?d8K#J#lDIJzU8g;T6fT@k@pm8P)P}}{<_~!Ev6*fm_u*AZCJC1aShV%VWx9ISYq5E_CXsfGVaX`&JJq@mmPXaL zyy|_K0Nkr7r#Z49a#XzS4_ACPlXkZOTmUK>(Rq_f_Pmlc>t9;c*~5~_+Eyh2N(zJI z&lz~t$T6pzcE}rx-O~DqH$&-Q(rYlIq{Xidx`c*h+O`fJ*y2^M#Z3!!hc7(`zj7jY ze`W=&Kd9Ox66OV+GmpjT--!Lf*IT~+0ioMoqHHJvb7w3)ScJjUu`zc5KJN~Sb>zA8!C#QQK_;bBg%ZS?xj1UOjsTkj|u7SXG zwYoToP?Ppm*={8YG)0yiaqVcU(~7$3&9>C@2aRew)DqCvrT4WKFCLu=>5A)bO(ioP|tgyJg{%Bk3u32R+J|vJI=(!a>eeTkTe(2GoALV=(&)7COn9 z6B)|H8OmR@cL_(b;`iBFp05^HttLxp{|zMd2&+b$o^xAJy$-s=R1=1pqFN;b&IH#p ze02{k8e~B48*(D{QK-+^KNgnGFK-A%FVj$A8A-8A4patWQx%5g+Ysz>^^_Kup4(=q z6>$Ltbjz25F_pc6#dnJcJ@5CpG|%4iaMmXw2s<9@zZe8V1*aqDF! zPM#lS>c+2P-7#<|_`k3X+8`am(A*HO5o9-5$egmGj#p>QMbo9no2Q6RP<68{(G{9j zBVLgB)UdxwyfV>TIZkJU5EFQh?)PtbAxsTI8`VW#x*m`&e zvk48?ZE1OF9{;^I|1BChNGzNb=JhyU2TO3N;0rvDS)tKKpGJ;vjWzTpZIn_*8SQ;c zv!!+SVXmQPZ9*FW#%K%Mam`eYFp5}BuX9nR!_J&48U+1JK+!yK#BdpNT0OnZdkpd4dA3V%FKM$C2R++j#B%|L z3R<-&f#Q`P@63>%V{V8#lsLb)pjnF{D32w%X}mW{eOeS)c2lRG_N$F%&Il8ETa*j{ zL5M*9+Svfaj32bui|?l_aXMkpTQ~>MB>S0PZ)Mw$IU|Se&Ibe_aWLdwk1?3Q={Gemlt#&Vl zP0WhdaoL)(Gx0da$Jmz8S3I^?ZCyW(_&k);!bJBpterQzM_v@(8cU$&%PGGk+Y2Ty z^ryyPWMq@+!e@t`sw!@3kM{ZA(Y(np9rRdkWGHzX1Ud>HW;W(q>`nM27h6obGp&D% zUD`g}r(Vko7NNj>9Ln>L7-#+N2+6}c z<+H{^p3eOA+r8_(tM9-Dxso>1>+f24L<3xfu}R6K$yNre*#t+xwBIS$-zo1UHUjhQ zSKc{!;+>N(znhs;^0zAOE8_a#x5EuyXd`J)Emk{0{M()86#bl*$ua)TPA> zIU%S`o3d;A4F6Xx5v9Q~PYD>Rb=_cC+Y3Jm4ef;hqg0r7yDIOOCrpmSC&|wmGb--= zDYF%f+7s%vALq#cY@ArM-7Uf9o`{(Rn5Sk=1diIzgPHS4zpr6G%Hx zzRZvVdDv1uYtEgv&FL`*Ph!?)GI43~gO^gU7H|MCBDg$CtEJ6Svvjt!_^!D*6fPq< zHMi;#w$(y^-Ju~ky<|H1oAM@V3RdCISNPAjp@(qJ5h-2=#DOY>7Mq{JViVk1l@W5KmuFfqi*r?B0TN#x+0V*m%yU8kw^M21Z zVUd!dc~1Z3|5MpSkRH)?CKS2p5}Q|cYxdm+ZLdMAfu{v}v64d#PIr434VPI^Dt^aS zO^%$B@fB^N$$E-Naxf{=8grT5#`qn}30(p6gduT2pG*x?XW}z981x|%qrgv5=VU7O z3~OSyx>0#epRs?MTTZSN`y3q%NM9(K_T;@8kWMw=OR1q(%SixFWaxUq$-DdE_cUWI={xWiZki$ zF$U^{N-8FQX;)Vn`)T#&u&88*Rn&=H+V^t9_q>Ab9*r~=8Y;Z`c z61v(rpTNTdf!-JdFgAGqzqT^JdI@-aYLk7~N>iGe)5-1B>x7>vGn_hq{+aF=cyYg~W*z9=WvdJXF zWwCyLSkx?s)jqeNSsg6Pat0;0WyoGDvI`SMYl|T;1YtQMdMFfJ~s1dAOsI|%Ptfqu9f7<9R z#et#m!%r)sU^^Hb-1cG+!C6h;>RIZ8C35Iq$cP?AY+JENE#=^>^S$W#g#Bv(meM&@x-`PA9l;tXu)nRRA1E;DWeJzxFlg%OQhQaEPZjADe$^U=*bhb(_J#X3!&F@O2; zsUd~tt<~j7v`xTT60c+hBC6kPxU=bQm}W?q^c@Ps9%Q&!H7|WRyE>8H4@N1=V=2^L56yHnbn%zwPf6@a`-j=PHluY0Ytzhn%h?98|| zXgLJ9pD8pWhrmj6VC>%Aw8OQUZ8tBvA7GE8dhtWvW zGnR1Ft1*Y}qtXWW7DhK|KgVAW^Vk)h^F#zPrd&p%EX;7W!p^sl@N-;l$3ijuBZ%w$8n=F}t=w zrpgW6DVGZtyJj=J-gbsM#zZZU&NG5R0mP5~9hYrmI}(=Jt$xAeCQY&UQN2|V2v2m-HKtIh7p4Z4~z0+9G^UZKsX?&g7cS zja8di&v@ooBWKzzc#h9drcYsV@U5J8+`1;?gF0M2>OryaeWoN6^`!89hS0(v1#D_6 zIWypeoheK->r+W(b1N}x1bx?1y3x&{;xdC)y4RuH7D*-DDi$b2bpp=Xq%8VGuf+BT zidddN1Ls7Ive>tfmnQ`cJ|^Jt8oCG91&bT)we%|8Yhe2nz$Yr933`F9aILlJzJQ+5Z6JN70nT#w$)Ra?jU2{8%+lrH_FS7=Z` zWz5wj=DXcCdUfO9=c|n-yXFz`bmyfQd#!!D^4`PIrmzxw>-y#3j8g7|{GJAUd|iPl zJMs$>%Vm%Pr}!ycTa8W=-G7uO4>fpv!oD}r`yLfsYLm~n^-?P**SeU@ipOg+JlPC) z-08(C?G0cKTjV%k@tuiWa*7Jv`laO9MDJLI>a4n+ap?`D;FbarL;ra_V5)biMd51D z`251g+~Vx&DtZ3O?m;?}DMd-nhnGq>b`2=U@M3b9BV{ZABX;@v{L1RW@=~ni8=Trr zb{CR4v->QoQM9jGCMuz4A310tFSiA~uhGsXRmCnluu_|5bJX0%51-=*sh&A((xbd0 zghtDSY2a*K3aL5iX zD>5o(d&xd;w0LVv`WuEUVzV=50vc6@kTASLo}R~hLuPFMi3E!d?KM`&b*nDvT~1uY zSB!Z{B*U8?^U%LQ-8=tYb>Rfp)4nZ)sp_^{!2Q(YYFAfIz(j>MndhRtl%L2t7%e&P zcl#o3wFlcfMhLWQgvG{>D}B}4cSZKXrSB3n35*#d#mq~)6WlG}!ShZ9FTLB@J?2}` zJQhVTa9Y41n`4_L8XQ(&7(t9vOM7q=6Ehg#8%uzQI|Pal5VvN7NU%va#o5B*?F!7_ zZl`~J$b0%Y0jr^)2gLZ0VcCEPc9oDp8doJ09NLT=!0itxDNgrh|G=Re4*Y4cMgqs&=R~y-l}H%*xCbwQ(?U5V5h@J zz6HDvp;QtW7gj+u5<+4m&D&sev(ej;z}&U~Xd(M=if&iCo5(tGiK<1d&}DWTtb@cb zTXjd6*B#tEI?7Yf#&9wfslL!X(Is%NHpytFhZ@ zHfoLjhKZR$2Z}DM(zn{jO;I#xY;@DD%24d$h;ix0A<&f z=fc8X5t2}#5EM1CuyZQvxTkn*@s~#M^9#PQA|07jgPE~x5@`?|r~y52_^=>SP1e&| zleQNo_alW64Nr7K$D;-CTo_GdVG^g7aA~T23ueN%55BbR*pVX$GyKMtb#ML1SwC=g z(kAJkzj?+ud`xgc)$K`-5uG&eeu)TrYvCt)3k(ydYQE z3xyZ#XkRFllu%p}I4$^N6}Ei`WOn`~F5kF({;x8ecz9w)1Y&~vHFxon`n9k+tA1U5 z<%cKyaDuBqII69FL8B~*q63Z{>pB|9R%g>QGom9!=FVLb@&~Mxw8Tmro7fP_dp;c) zI)|QNAet2mr^KhdaOzl3fQE6~loS|w=9LF6USOv(4Utdu?j_UkOVZQJFGb6}BCq+s z4BygW1rR?;1)b6qDZvwjo+RjWjrK}oG(g1qCvVy7_>JQEqNAN+0bAp8wKi}p9XX<3ju z=+G=NJtr>?`m2Tik&Pr*A}l68gZrQ{5m`|16HL$FtvRsL%j0Ae{q4vgnp6ZZ}IUBNM!B{EdNu)VrC`}ABsaK4(*4cfW;ZSGrs(oN_wtDoCkkiz&Y$R6JuH00+4lCJhXkSA-YR3@KZP>yR=Zb- z9&@T(rN|Z17QvS*7Uq8N1NPdjA&#&3!Vv9_y|N%BGMcnYrAR-?BIeLyVxJMmM!x>g zXTxYjv5<(uqM9U5tw%3_CrP{H@Z3;jS(s7tXHCuKbh^9=bypl#Vp7ReFh``{tc~ZuLuZtQxWkaywT} zo#b@bUYKjeR)!b#0nGg_hCY_l=2lWClx3B^&5ePujk#^43FxpQv80G;gZ>BkWspLu zQmw7V_Mj`$AX1V!6&mGk@~L9cd*f7SQ{HnFSahwSFX=5~cx1w*435X@PghqmkyMCc z-EC~|^pjI3PM%E8cY%LiZEy9jVFdnp+`05YCG@kvDV7~*14N=^BwNZKuWD$3;M$Vq zev*(~+8X+60_I&0XAcBzT6HoZ+iW~rg|)3Sz1@Z0b|9&x%ria z*XPeAYd^g>UpTig9}rKXE)3K_aeEEka$%bJY7Azrq2gnh+VaGl1)|-|THz z>rpr1x368?5JshN?x#!1&h&JGI!D4>1a=6hrO7|L>0FkY? z_Fx}glMpPh#xxrl*+;m}S{zE{i5=DA6tsxto2mGQ8~-EX8|03Oy*JlV&TC*4)oVi$ zOsEIz5)IdY{qqXct|wKG0X*kov|Ym9_;;9gucwOt!@b!?%7hzFe1vp>zEKK^ZORik zscLHdxbQ=)m?Vmz6z|-$&bP&t^!l}Sw@$)OrEpHCLPI{{obO)@PtXSVn&E5bS5}r+ zrjoPHN5zu(iFz^v49ao8&|q^&xi{zMlF50OWs#4UNN1}OcLocu6CS{i!7k#^vR$5O z=U#y1=c!pm zaX&C}H(JVpVslWtk|Jj0utL-&mdP{9Bt7_Ya)d&Kuh<(mQoD6dfJlM5&XjACu)O3*PdkLB7@J8-s}9Jiy9tdX6VWNuo)4~MK)(+3kg-glp(V)3nUW$vdPPhf`m9+ zdF&J?j+d1*El`!w!US!JL0L)B_Zp^XC%r~d{hdr+Sh%=)`c(H+A_~Iu7cU+6O8_Op zR?uOoAz)hiwGhF~Yf34&)i-@EoKwz;1QUyojHM9&hAYUHC@jp+&zpz}N}>$STqC$f zdLxv;FgEr*`g>6U&Cs&)bdU8p#4tsRDWy+-Ary;=7xRlrqLEBS6Z9g#FdLGJ%#-ti zh6|TUbGtQWbFP`Nx(2r`nx952B7L2?$KXg`YbPcXAPDKb!a_@VS7CJ`;0_>_bPAK6 zQIM7828cA{6mlFJA$uJB*ShFxbC$s#DUK>o@k+44PLR#TSnTQeJ5@AT0okn-C|&aw zV&1w8N4+9H#>j`1J;*qfly%wR-cOa1(>O^lRk9V7>n5>$#@{GY(D^xt^2cQ3mP@T| zQE4MSirB9>PhPk82J)XapOYBN^BEs*N93`YD=(Q@Y6pNY3vGPRi zn0rbd4O3ooAf+J-P2QwGNz={{=0E#d^Zwbln)UxliZoZ!RRK+YBbh`qUwXU*lyedT zaBJ}Ao5>`57vb{@$s`bwZTxf9!p)*1_yR)LZnfe0BFH#X;S8!b<%d3eFG6A-@f#$%ZolGjr1=Q~(lUW16@#6FQ zJP`Tdn^0=}EB#VYUsB4kO|k)kXt0R9ETP%%)JIDP~9!^_`=5P=P%-$-30$I`Hy=1`qG=P!#m57UnS;-UY)*aGo&@rMbR@ii$@pP>6QZ8aQl`*WQ?$h3`JMx?ILRM_{NuqqOFi>?Q)`7vH$JiU`g? ze6DqR_;{l)PBvyDvB=u&+ND)4Lq6%5LKiR2ZM=Q~$X};Z15O9yZEC?(P?1$Bf`0_B zSIkH{T^>o;#flk5rz@WEVSzVkRT6S`*x1{G`*}N4$aE6z!uAmDVDQ7eJRxZs!*?zTmC74CKdG)@1{leI!_XzQ*Xy8w*RPPuZP#tIXFDGxV&b~fxy+X*IiUl_o;XN3m3gt0e88U8U__^9ey= zsjV+~0Yt?<+jN%5CKs{+e}`{%emfD!Dpbwl95~l^l*7vC)zlG-9~5h57>$S*z;~%A zX$>VZg~C4gsaW-)tGd`4mnaH1bNiDu4>i_)8owOx7@V0LsUhWvRnwYYCb{)|@iebkQ0)dPLsOYMSOE?D5 z^vzMz@DL#RAp1#HPXw2ca9|t;hrjI#d+z-t2&ozmMe9^pR2fp3409-kVS3NLC`$a& z#_kjbr)WwN*15LRXkvri>$1^JSiN=}*D;?X8yFc*bCmj-o~>d?%nb-xz?8_-3L(`h zEMG$}q>I4K&aYW!9GN+N|M6>n8NRCaFeQPr{rKY7@CZARLQHs_$@fY+ogdhwr>x>J z=FLv~8k=7F*O1&C0lYWrb;9+pHR>=<_O0r3Y6I;$KRE&H$3+z2>o{?kEf;wYrB=Sk z(mh3lh_kx)NFo7y<|#*SC>JFEc~~4a{;GEvW6z1$uFNkclPk_sSZtIl{$-ORRbwFU zO7+^<2JRI(Oy;TB9GyGjO1dR*ER4WjF!^{ZJ?G!YbJoR)2co?DArQ0!jgqPRa8|yDGt&n5?~$1-X$?^3k<4X}xyY z{Xo^aCL0RplY#+jRZ9HW4?JSN>uQk-<0T|9c)VbS7k@E&D8p)mObmPAC|Rd46n@kK27~@N=Id)9vYBK zxjN4&uVNGPjuT7laqNK)5^gK5gkBZNP8+6cow=eiw|d#9=#{a`XL)3=UW<&0&1&Ze zeGRRX(;o)nIe!|YvUK^9kE8Xk6?TF}mZIeNr7c4Tk3coh%fj$G2KP%!T5J&0qfNYv z?l8D!&8_FvH8Ey+{aS+-Mxv*wRTTb+AhmGE0~u@dj1bg7pVWHF2;`_H#~ZkaKalrl zD|j=xIM_sh&c#NJVC&oof)OL(ho-wC`W|N_^eW!JQm#_;Mn<8Oh&cuQgWS++qZJ>d zp#F9I222OJiusLM`d@34aC|*k+E_uY2R`aHtT@bnTLx#1vb#Gxm?0jycpcEcgsn6* z$xC6##e{htR>XI6fFpQm=_gCeZ!7_`@j~SVOeiT2rV{s;uoS3nzht8~Ydge6IcQ(( z$;%d|3OnB<^!XN*M3-%~lj0-P@J!Nw7q3n}BGz-!OTOa8)92N7&PvvOrA@9Rx(Wdu zL=3JHpzaD{#TPqOgOwQ3T9oia)I#t1%p&V1$pOx@;JUZumW)=3vfWC-OU1QWPye8Z zlXk1Xk?+E*ZW3wE_;+cclf>y_q>xz!qz0My<4mQ5k;_bq8Qg@rjxH8JeUUWhYMG#a z{uCoQXWy&v+7Yk68+&h&8q92X<}U+4SO*d@|K{AHdcb=T9$0?L`R84&!cuM1a9uAyW(q@ckR-7C;K5_o^Ndbv|cPa_%L# za?K<)MZwEFMZe0}bA#E^a}A(9DpFEb@)-FP${zw zcYFQ4ch{?%wR2GM!czNUZ*^^O^>r*z?lcG64NMb-0hgD9wD9XS*z*0$Mn%N_w4{2j zRGz)_r|Zhj1k^$9AOFfNVDez*7Ldt=hvF`Ld01KFQ#@7~YI9@_8Ni6wYJ8EBy~|GJ zC@&2^8f-1SbMVe*7K{IO7ny`$C`i*NUa1reP*I698K)YWQ_86RVEAO@fgJ{|;C7q9 zoPHaGPLL1^#u7PEuizJP)0V@y9~Y;SQ* zU?$pE1|4L%eYXq~JNUXE#V7Zpi_NNYCcNv(#kGya<=Jz_nu85u+&^5+Z_F;O&7T9| z{JU@^3My8K{qI-_9k}!(HeJ00(yuM6X*nqueXS|Y3+#gGb!HGN1&h7K>`l=-o%wDk-4~vsjnM0{F)r0f|@xv8m<)aytM4r)00&Ybpwy+isl5y!G`Mb#o)@? z+3H}}SbNY@pxn%Nu{IC6uez(&XYm0mZdVCqSHdX?_>bA0y#ggiD7--?G2c)s4+<5=>y>c`AcsubQD*!7CmIcLh+qWSH2RaxlE#U+?r zC}g`f>6a@7#MEe}qj;e>6uA`O^hx*@uH)cUee=6uco^)eitD9 z;ZI>0yEFt2i*|9?P@qYc)7`Z0Z2ug+*GVwF(ttykfG})s)i*G{W&;S|Ms=`z_U z@?OJ-L|$_|GP}#t-(K8iv{*OIE9h`E*tbvq103&GpOc-TdXlkv3WRtea-*TmP14rw zP+SjuV>7K@O``={?N-?kqk_RBQX(l%u!t12EI(qz_8l@1@}?{>;2&m!fwO}q2KA(; zH0APGJc%cI>L%N=7Z;Fjub4y4GM9q)S_crzn|h;XMMo5LBnf!6${UBUia9(y>jbhp1|zO!ORMH5I<^@u+R+ zl>l7=jg1t{OsO>*Ng-Tf>mX;YKW+lIhh7;1VM zYIHs4rC-TcSPyv>RAaYlRygIq5h>a)z}5tqipVfs*k}Aj&>v^&ATD7_X~vX2z>p#+ zN;zX1SDAGqT<3ZL?`8N`YYX_azWsyUm04F{)W6kux@)Y{>%Vxljj|I1)F8))@gwZ; zTQKg5q*V~d@LqCmVRmu()%iCIxLuiXp@WSED|52M!6qyrm#ivgo?uxvSdb#Xg06WW zC*-tX(r;r8!>Xw>r3eUO-l4mzHP_>CM%EHH1(OlW0Ij-ezGBkc1jY-)pa#@se3rUN z0S^P%pkR6j-T)ln0UUHeI+6dVYr#qo5(1e>39{l#dOLG1(Bko~tec>9;`UhS3764E zzr7)DHXGzc(y7)`!g!RY%uRE7xLG&o)}2C6C&V8lrE;@P7V=KQ>6NHNwuWjlEWybg zT)}=~ao5tiDreXje|(0wiIwZMfpro_;aVzoVH&V$7xl*U<#j(GP#>kWue}1~R;u47z z46G+c8A7PAx{SC-nP|fuy301x5ZGG^_%(s1XDhN9BGYss-J=NThLy#Dl_2=`>>Cs3 zn|(v}VtS>*ERmBilS{Lj3Bfc;<7Feb_knP+V=@5{k2_wm;YHyJZjRBSS1c$>oT6{& zG+}eZKiR0uf(GL5V~*wR7LvZ;IS~l|5h{!<@iSq5tR+CR3GJg{1$cf7oQK!p;BU1H zlxBCDTyKC^twV)ry7D-~E?aY^;3v=_AUNi~aN4dmYV2@npHWb+_e98>%~r$Y2-#DH z$`T$)|1fp<6X;p*dUE8GS zVNz_8MzG*r5M=$gkIY4B9&-|nR$YTCI^m$+*dlDaenHUzr(jOgUE>f$X>cpWLXcRg z&bdWM*mZf~sY6nV3w-86^bCG#0W|ohhoM0@YavtA@;zy6A5d0MRa8+n^x-=n zg2jI)I4iMt?if(GZ=+?k)4cdp$dc4nG`^{r^BjJCmtILe=|Dzycybp14`$aO*i-uF z>*Dp!dHyK9BO*e#+8JInBC5CAijVStxif;#tqYWfxaD*V0#)f1H!IpJXgGh&cg2L? zA6QIVj~K)SN$*nRKS-V7fV226Qts7gUZD*{_^Xa*E|A`&fXT~Mzb7xFDV!Tb@4^Yn@#+jZ#UeO+-)?qCbYZlg_5A_ z7N10fE-DsGw{SLwzAjd-gPOHXj(zP?fjn8jBNp`GG= z3~Annb`6^kfL{xKdR68jD}_v{YgG#WM`nzfSqFw^N9<<k~g5Ty`bsXHKbP#)8&7 zP3>wEH{11*L$LN6k7cnx+$DptC3clveY4q-i6vGAWhnaL_89$iOpETbA8<3K_^b&V zXbTDmK0MdJpm-w6?XHO!B2i8ncA}nsN-~!B#CGG0<|^O^Rut(1G|w?7<}mR0*OP)I zMFeu)GchABm61!);YF|dK}y5w=}^BBwN<2wv0ZSK3VHB1>&JjMRV|0j0C~Kg2=}kO z!y`WO;)y2L5Y+8}5DWkM0qM#S$Yuk5FZep3^q7nnRtU5ip$db93S<9np(g<5c=8RL zL7Cw%+pT`AgivDNgT^{*7d-Zye{8@^0JS1lBTb|EEgQjvC&)fB;)D&N)VeeG&?(R| z&x`}RB@rPNJ00M1w0T51L{Erj%bj;ukqwVVC;B7py*2Qi>V01ex&|x7 zu#jT*{U$huAa5>JLDKKlJOF#|Ey)#;u^LZvmpmbOc$JT|d#LnBD4^!NS^H^0(N?4F za=ylO{aXCz<7whlxvXkXJ1-9}Y2+ZIaA?-^%M%S?w-vuxPYEcSB>SGUbdk5BO7Ws2 z(RRfu0euxQ3501Ri4899>|5L`JOgw<;-3X8GG00J;Y^Nm->B+{@Q(la!SJ?pjWffG zGKm~#n31_PuOii%DYsdm)|SkC^MkWz{ogp{Xi}?-SDg34Wwo-8b(&T=R1(qfQ*%i9 zxAxh$4_$ahLJ8FQHXZoU5A?m>3udS1&o2lK_Bv+NhEyeA*KrB97*G=R_jbem5^|K& zyy518^k3)%+pX66Df=9uL4i`g6tWq?p1vr#J3=wmKm3=gn`Smu07SXW8bEK_^!s_^ zK<7Qi<<$uqvTv=ESEfsIOpVKA=A}emAs0t>AH0lmOT}M0(Kg$EtqT(S&=Q)R&&~8-=W;Sv1;*e!=}Q)rP1L5_`TkzfYXEHllq|l$_zNt>$=_svlE39D zREg`RlEPJtiH0GW(NSglBi+(}qidJ`ZNx)!q|7U)6}P+Fowh}@Rc|XXJ zZ1U9c$ivg_q0sz*Z1bl^2(){~jIH;%Fc&;w>Vdg{3aHQ_LSj>E&b>B2_Y)38u8W(r zP9bH>&A+*@Hb$}YmlhWZM6&jG2Gso4Wj;#D{&^>0dqP@IwHM8bF&RuH(E(oo!Paz$)5|d99 zlSJc3vY?HgNG2r}gv-Fndj-YnU898+Em1=S`1bmRYsl1_j8Hb!a0#;~)Y4=SL`L>F zzZL2*5xS~ioa#{6E4-tUM_%l4{MX0s+>Ai`P&mkhEFM9=xsOZ z<+FqBUU{uOg=i{eQ}oB%twE*T-7a2SUMsVupxr8;gSDEXd`#t&C(5UOn4CO0b?U?q zPMkb(0t%K_(yN56;mVyVpZJ^dsaN37sS`i^0S00g5ze-})~&XBO(cF($xjE}Ml!e4 z?zY;Et8kf}xen(Ze*SoHrCVvG{TZmjqEC4(tpew9=}H${~vV{!g$>TpNzF8LN zdYpyD_7y@Gg2DW-SoqH2za8E=y!GVf;qAjmhYt?-lfzqwcb@#>$$L+3KKZnQ1s)&n zKl#PsKD@m1Ba1Ni?#EKeWu z@X4oexfZc76#J0B;P4(y0=)i;W(0e@2OoPY@>%>3)Ia<^^n+6&Q-JgMkb0ws35?)V z*dF%|_or}hhrglS0)-ygdN9JnZ}{!6XzxA7uIVpWCEQR?K2B%=cVSj;9^Nm*wA_I~ zKA?4cpR4`}hV~_{BeeG^e(^pn*?k%}e*}&15zOL4-hiVkMVo%evzY2B=$sLV5}lTukgwH1hxPKPP(sai4v_46JFr3VZ$=PxE z(h3%X?w@>SC||-v2tO04qc?$f&F`;hA>p*rq56bLj$2(gG0@;A_+j^-d?l|jNN3wAPZvpr%n}!Cedm(zN z=V08{2eH;a$PD+>$cN$VdbA(r1kV^2edNv|UVk*diMw$}&@qQd*>0Ja*2 zORFPTmd*BOe!}sy#n;lka^B{om>;b2-{iv`{iT7q```e_fmhUfFc~)zA{F;bjSvU3|Wir)L$jAJ#juBKvV8QkbNi=g2#-THG2*}kxN;#XrI&m`wic|#G?RZ zjGw3zui%-|3yNe$UQBT_as`#JCzwA={_yKzd0>K{{L&Hq+eo~bwZc)^g_0`)YTl#w z`=0Lzb@h9g(uXt@CJ3)CuQ46>SrOa}AtMqlQO+F{l!`7?lwM_P(E|BZ=?FjM>5%W1 zL;d7Ny+T#BguY6Z{-}h`~e@T#G^vPDvy2Tg> zxC;#7V-}J4s5~m@-_jxBJ;Kpbc68$POrtlmjS5plEEqI%pAIbXUEdvJNM7c~TeaQDN z5)l%v6c-2!JAwuho%<|%d3z+so^e=g8u7o6(c(B?P$`Z%yvRt#u4@?Z@NA6xCC{s# z-CHsseI1VbF%h;ES1LNhr&)I4**w~yNTJtn$WhW&{|IlN!>?&m-pd?(HF}Zr@zRjv zk2_{8`6Ws)y~`<3K`_Ii?(dTHS&Ff{Big=8a_b#D!E%2P8>U*16UmV+X9?TLHltVR zW2}I-Oc6 z>F*47H|-dZJ-v{upMmN7fcC^b4f&g7x7)aEOCA1RctW^L-9!ETky)$Ew;VjOZh>_^ zxU8^mL}v1*>nZ!NZFxnb?Xr{Rs8)0subu; zlG)}F+Kdc$ytd2bYQ0|W_3IeXN*Gq%9>vL%)(=@fCCXJj*MVPF;zcamLzm+r`kA=M6<*S1f8<;r*C@LPCFRgsBln~v0 z!~+0+3J%hpqTd5~J*po55O2Jcz=iuLTpq%nzxlgu=Y9KEp4p8zn;tuAXTZM)GUjNszU(TduiA9es(nu9wlwSnHcziuW&k&keY5U718FUr~&_j|9~UUi|g}9XgN#OC$#J zI)qmniGX*Aze2tlRxmlYxTyA1likhren(n?UzJhJKQN2yulM_OXVGeh$3WA2)oH6; z7B2&{ay=xC*rJjaiHms5ynbwk>0?DjYbtqt#1=4IKV&{W;?u)CvGTTYW6fsa=lfi^^q;z(*DwaqZTN_-f zgI-#04Vq;RolfgzHd>ZB2{_#$$Tpw`LiAF%)In;XmHfZF1SCxU{2_mkC)7MJ+xX6t ze}JF&m?99fFN3&#o#7ucMBrCOe_?pGjHs?vRjAo=_w?aEXB1Q3ZSg-yZ7U4XW4bT+ z6q$0Q(0Pd3mr6o63+dv1u@>OPT9QN<6} zRb;+bD+=5@)kR)`J95sDcE9gy=!pv~`V%JyfTz_ccuBGQzME@3kslaMEPM%_LuWi? zE9GNlr{wRaqo)Q*Toq|IKML%b;YT9xew$P`pTZl}gtv>mQnA@m&whXS1;Yw5!g8}- zk^js4D6bmljH5g-Qc_<)G)rCaKFzmZ{HJ!F{6KP}L`D%POvIY|d(`E-meAjmq; zfbVnZLfufW`G9V7MBi81jtom!Q5_h@z1nP4dwCr^CR5)nx=!hGW5(o5q`AqD&$MPt zgTRs+!!yXM8NtlER88xy#=(r$4k_azPnPsxQSp;A^r!j88N6W*RI34r6-qJe%%iTw zYx8j5OcXl%oq>O;?yN*&Pya2l3g346Bd0;I9J0$o9Gj<{)?km|iaPTk&)zNkX}&gQ zAyO8sTdYq&x>Ioj>9^a>GLJ@n&B#e*t~|-AkGQ?>N%8NQwz`e0X}8P>9%szuj%-QT zpkY6wx+&|20GmrloNZes?Ka&a->_0>+|h2=YHp<0%iTdME8H8-5pN15?HNv%rLr5$ zW|9UAelQRJNSfw2^)pTvHREml%;0G6iD!>6$7GX|`}Yy?MhCPLc;!%}F@22?1b?MO zhJ%RohYYLQlu;4zDTP3g?ht*6PAVVLnfy8Uk|v#vJ9I#`j?OU+_V^4WOhpMI6>W^4@zUqc8zinQ?R|7_8UnWfk_&y0C9~z+ud2DlC9GH>H zu8mwinmKZ}jHdGXJW4yTu+f7P*?YRt9Nxhlsc{<(uC$m7g=zffg9btllz;9`;_qmt zKBP{pq;Q8E3LZ#BiDC2)9#=(H=NS*z*Bk3?C@=05+1~ODD9iGb2rnj^u1_5FFMm>@!-bchP~5n zj*yh4;|qATAt^0WDvuaR_`T9s@$G)>$!8+>XIN&}77QoSoOHW7RO)y}nM3-x6xY>1 zi@5}^O3RI0l4Bn*BhT8!ZJf{>Ls+(>9-Y^pmdHgM9SmL>cG3p>^)uUV5X8J>qCnK=qmb~mhzgu`56edJry-Hvn@=_vme^GZIs zVehhtfx!iY*m+~|P{oJHh^{&|IO8EBJTL9l+W}MjK#3suh0@$!jwJYWqTqEc88xfd zpLO#KCuY9G5q_WV%@EGNe+mf=X|gDn^k=(p4Q~5HGWh~|4BoSs&Hf9=DFh1se-ht* zMen~1-s9^Zp9z(eiEoEHkO;B^9r!~Wr5&hj%^^*V*$y>hb?zv1vG%VrMb1e4+HER| z+WRF(k0IZ1PYizd(8N}V#+n5VmS{a;2w`qJW1dnb7Zxa$y#-yv?eU_vACN)d04o(T zfpI1-jS_K9PV`uB&z8;@+n~%w87FkygB8Xhq_abw5Ag8o@V)5+D8ZDrp+vl;wABTQ zaWq$wyx!(3#3W^m?E*geLV3tAb? z(r`s(g0mH+(RDrC%bq}r@4t_0dDqQusKoSWRU!jOWEtJp@4slgI~(KF z!aZ-`DR#0wPEGky$#;^N5AB!G%5CRoAi8UDE?_&sKH~v=+sK$yI0+8BxmS9Ge=xbIy;m?I(yQj zMg4t|uEt-*G5gAuF%xxQ4W~+62+a;13d1~SwIq?srXC$iQrLLW?4A;Z>9b3MoNH%) zYTr25c4sE}-@lOPm8WcqHSyDD&z~#1k#eiI{0T&P(TgQVb`3S2tQ*|VxgHYTH2b8K zU&~)O(GTEGkVr&f`wxo4B%ZkLpT!(*%f>~rKFBhAv@LMuio;ZA{=lLU(Amh#Pv~P& z&Aij-^%Ag*xE3yaD}QYt+-oEZwE=xSxp63`g#I zW+`_oB(I#vx}823nIm^2992b>f1G2pY)>wJrarln-`Xyk+zw)@+T5y_gR=~+-=gzo zLjN5p#w*#VJnc857Lw_=Jwz}qVaxb6%j%-Y?O#dGeBfP=V|8*Cb*_|Hx$I>PRaZXw z4`)brwO5K_-J%2z=#DX5 zO>MX4dx2jDv#9&=sD8(HJdWWL;25^;7;@d!vty9UFS-w-gHy9YH!`g(cROey(p_2~ zuUo%$Bkqv(NTWFLdGJ94v}qZ?e8~<$5YKXa_U^Ee-TU+s z_JoVtu(JbmFjn9G1ZK7l`-va{xRR!^?V}X?vW7NHWeg%Fo@;#s6gAVA-6C+3tq)u- zhE6GAV+=d)^LF?uGmp$F{sgT$_&q~5MU1LNou;BYgIY&>rRR*N*PHa2=!juf+i?Q7 zGH1Xvi!g+Uz6MMq`cL~)_3yM99>7kLxMndO3-e7%S;N)_2N=_dAYt|t)_lz@>TdJq zOJG;v+cxtsVMJ zPhFEk(XceF{)2G$Fl(MxucWOZyK~g{9*pz7$%PvcTF4I(*rVtk;Lnl=l;ACL=X{vyT|^WzXw@4%>@0dQ=UvNm z4S5?Sc38`As^;nR^hPuTWxc}76x$iwoTAn3sp?6g6GiOrRFhE@b;`O!==7FlDY zJ-kl@Rt-5uCZ%_|=dbCe@me-zi^f$0lL4M_qSQ=uYQGc!zysHpR|l8WbjZLDjP$S)qAK<6;yUtN!l0Y`aoiPeTAXZq9UZCLouG<^8LQvXi1 zUhcP1STe5AGfDQ=47%1~Q8z)o*vm&uyevzr~S0%bdanS#Pz=mu0wu;f&jZ z9?KpvkKY|@bbqiRY^eV_kcb%-oA0#4F(e%pIK)vH$gf9$WIB!8nET3U-%od}fyR|L z76*_-ZSip(Hox>c+qw8^M@0V|1;lXqzZ3%Tk#6aRQ#w4kIU}~YtPX@z!nnamaN;j; z+UVyw3_k z=Gd%i(CH*^gjy7tAX3!C2kGR*{oFgvc8fpmX86=Nih}K&GGY>U)0>X4R_H^a-02S( z(ejZ%)nROElxq^_GS;8KJ}QxdHU!*ahkYyh3d1J@V+3}T7Gj%5dur;4JvmCwS3L;P z9kpe2zr7@@@ef9(BOh-vBpX3Z2Gd;{hbSbu5E%YZvs9^@)?nMTayVjgjQElc(AUoL zXe}$y=xW(Vyo&jMeG;;u)azEeTT53@XT~3PC>H3z=MTRr?3>w))ziKX$^{W-)?q0# z_nAqz4h6xaB2mqm(wOF}=WAC-{*$Lb8$I6m`j5GHZbiRH>4Rd^h)ScU9ar8Y25OZ| zx8=p>-esss3HyxbTJ#VsT!SS=Vi3ujP)}*%cUFG&xqqFfH;Jrb`Hkn^WwqHi&edf~ z6?{fJZ_UI4Sp3T}H-=cFnke_{SUkA>{%(WdZ_1b#BF6Fs`XM&by_d0Ykv7asgQGqQ zZ^hjL)jFw%pGS|zk^3Jl?_>=0Y7AD!9(2>8>}}AqwIq6`Y>S`%CB;^}k7B$yPlahI z7}ZhYZcXHf8BJq1e>`K4#>@g9t&hT)7Dslww?hx}xOl2v&>#8&DdldkzJ*%bl0`cY z2VoN2Mn>^m2jOw_!62$lpr83ec}jWyX~#O=-4mKD+Ua zn&w{|XGYBk+%a^p1#u17&~ZMp9^C0&skWdI9Nvqnb<%$ zA{+H|Y!!8s$Ocs%h?P3O=Cj{n7};wB>8&`H?^)N`Q3{TK01Bf z%h3o#olM3b!cb>BFF25yDBr8VxSxncLkAIiVPM5kkuXPhDjVj+r=7xhLX<<8?+#{N z&cd+R5w54PKA^2nJarq6V9wOs$=J5HvRmZ%&gN)uA3Q(sgcqAMZCWL0&Y>g zr*VtQ^E?`s>?GGUXq$Yq>bb5_f8|b5S(l%o4pC1&9?P32ZuKrH;pZV)ojGiNtOO)6 zH>~OB<%Siy@=X6#xbg%WL5C^*f5g+lCKejy%kfms4tZM|Gb-F6^u}K(U!`F#4}U2> z;S6!2+6eqJxd==IQ$ zpD%AlWq56v^mO>W`GXDb6(ym8Fim(J951^FX&jK+En8NU~K=Q z&@RlRHw|pjZx8>k!~an-e^e@!9Jvw>KcjEk9Gp3JdmZ;@kSb-UB)+KrhfLq_?{lA2 zij7W8RJr3*_m|yt>qc*P*$!&_A!XCh8PI~|_IEDm&#;h3?9W)+B0bQ3&1ul%e2SPuj9Uli2Vg{BZ6mwONx*WG z+A_mPm-p5H)}+Q6(tGjwd#r#xa@R*?`Of*c?NU4}EbJ~WQ{Kpl__>im-g}S{GE%Q+ zxS+Os&)zfcbK~4|GpS*t}pn=dSku0*r;~8yIbdb?UnvzK`(H?3hUF|>a`|Zlci}?n}W#AKafiS(nW75_+z(P>q3dGEe! zqXAd;UTGRbUeXO70sn2rA-{MGL$%%+Qf;|nR^n!6ir6B{=;iN56=S25NJROc@)~Wl z>o9kXnr?i|MsLPbHpY7D5?7bPJP#kfMelY5<4zWJ)SsFa{S~T@p>4;L4vyL7P}TMk zRN7Zdanba7NTiKYT$l{Goo`?Di~-@LxO^NFi(~YI__xhcF1N1Q3(+A|Cf9GWKnKHk z^?%2a?^>o&;;5$&e+TdX&%=MgawB^sfBa}%HG2%GwkT$|#{Pjk)HNDx`&Mv+eXaCqZ zmF9B-H$%tF&==G9<0Q6We$fr0+35G1>9;!w3zMoOb=E;*a0T-&*5O7;><5NmJYq@N zINRLy9AbT-m`QkBUPT$Myujz3py^RO_@~1^!T*1I`1`~Emg6-M6k^0$4~hc&#jHE> z!(-n9>_Qwuv&8VnnB8l4Q!&jspQ`0IKQA=V66desc|9l}Y?Acp4mfXxulCkfFYS-& z+GKbQ+cse;8e%1*5}#xKY!|NiX1YFo_yx@3zrZa1ugiL(?=W}kIahn>maLle#hB7e zeSKVWG1QoDhm;o@0MxK#@C@#_8GDs0X9DA*JZ#(IpY1uz)!Wuq^-g40{u@l^`{hevL z*#D>*h3seQBHlH^g5qr_AsYH<5n0OhqDv`jg5##)UjO3o-w%J4NAt~VrgT;$wsV{j zg~!qchl=Q2!kbk`N35@+ihe+jXSsS?-b&NJpx`F^^Wg_@pM8<%AsCc0F_~WyOJM&Z0q+`Hdp!G;Ax zZv$3w)d#zsX%%ey&RBRAFcU+RD}hINHWDk=7Y?pFRKB$&@*iD_SaDCYi7H%u3yY&3kB-_m$6VxQ9__J>X4?>(Osg}8kqNaD#M*ZTxoeh@Ju z1*+S`G>)1 zb(Zfb&Qi}i*+*Bg)L7V5OzcjBmsVm`jLlXj?=bdpEOXm$$w22mueR1F>X)CjJu$o? zU3i|u%xU&{jF?X5eNv2aIG93!zm*M~t>U1SKeSDZj^MF5xmy?*YEjk)u)8-MqA ze+Ob@m>!NN(^y-Dv&L5s!VH>dr!jG?#uP767J?o9{XK%_#w@aU)ThRn!#@~R-FM*Q z)D`(1hOhpPhN}LKj~A_va6FM;b^wJ)w$UM(i3zZ|5X}>8WWH=2-eP__Q(nG5GsQBP z)9N?EJZt3VLI?ys>>t8ZmiY|OqmvA3G?n^1z(#STl?SS@vIUhoy4QI=2@<-JblQY*oVfa@;&k`MAZ$c1nnCCj^5rpd{FTsW#iR8 zpK{~=H{u;BtF`qluS86|rm&}OU?xAX_9~ypJEUz!#@ld9lsbE#I8RbXhhvDCmi>q$ zEdTGw)qQLwDBq3$p#>MWG5?P|HB?2;gj_r}9pMx)MH!eE|h+6vix23__DL`JnxL2Amea zW*%^f2Tb09A!!GO^!B`Z_%~eUsZ6Qphq)W0U~(%liV5j{1E?dC;u44^)`_m>d$h#4w<*A_;vtM%J`zKy$?(vp4*#;lcZ91^2 zO^D5lG9w}F!6*AZYeJfn@N&y#R)Q2A$o?7;iwU;lJmp1*LvY(CZj?@OZFzZdO4vI} zBjTN&eW^@D?4iNqb0aDYNl;=WfNsm6aCslrB!Rl{`Q2QtmKuV?szmQ}& zm^bIiM{KE(^t9rX?9GDEVx2b|C;S1+^_eaY916=FiCI;#jqFStd^Sn`*n?bpf7F9D zid2qJw-=a@4oxTn%f4ri8F|}I8KUDu^vmiP;=YA%k zmd4-QHwGLdKCmo@mw({5V6$;)6V|Zq7FK7`g=V5T7+EY9lPeRR`!ShJ++t0THO;GM zKndWBjhpgQ^qzJa&Gz;n-PlYq{{VdETZW!sL&t^>ohgEF^+)cz(`|F#K=*Tcmi@ws zq#PHKMceUdyj>38%!B=cjq7)H${oG$ImTJY#GjCkho;cqZkvD<$joQ zix0m|1n1ksP@1P}jD6nyx1+my#tsboj)w;b9mZ0cpRiUB5~CO(rK|}^8h=z3?#qtB z{SG?y`W)KjNXfrvPWVEfKPOZgwEB*)H~g71BqKQ=%(K~?919=e?q6guonq z^bH^Hh_y1;_m~x6dd*ESW(~(ikFGJ^V7SzJ`OVX(j3-AqYwZ6ldHJO>(j*Bs({5x3 zwt_{m>`uk^95bD@Q2fQ?(j2s;I2Z^_V2{tEdyc57*n_7f6Cg z>P}{x&!fi(eGhsTa{XJJX0PXq<1LxOO8%wdyFD{|epoE^wCeZtFgIz3O**JCl7)rUczvp}ZFbFWcVFt?qBLyO|#2Y|le23~PBl)Ki24{9`{w@swp2 zPQ0{7jGD2Za)RlK(jHJ*&heYIjXcO?g-1NxUccL~Zko)%yX#eV?#j8*1bRZeO+YX;jBR#*`=w3In(fGH|9&|}pPq{yrF48Oa*DbNZ>Vz$$ArlW)vmRg zX={oT_$Doimw{j9mj}b&!mnnd)oQ!4=8RPAnXGtfL%ZYdy5!Jf70c`vmr}eRY==xr z&wR=zSUPfVbBbVY7+YdO6c-P8e0%zW!28C;$>eO845h6pr4vsH_tNH)=XG7C)TDc5Kuc+n~ zF5sS{P;{A?D2kHZ0Q8x?N-V6B62 z8js-J$(Ne-nfPm%w<#k~?VBi2>wtjWLPg(`tq}2SBTodycxCg-K9(e+`-D+1LZ)Py zxl7!YL83D3y>%FYd4l;s=N%f+Lvf{!r1ReH(D44?XH$e$K8q*{#VV~`3abe=kdx5xq&PwVm$iFN1q|$soP_9}5I^j~c@hM{hHP8rBTO(mo}I2_ifxDFRYGdo zL@Yz9iL_PUz_=R!DFrIf^Ss8nZS_WRS#-0j)(8sYnMQdPhS~0JU|dz%a8M$Il7)`i zP!U^R3oFYTuP$BMm^g82FZL`c2M?cZR=q|rq`1*dYkjY^B%DUoSgftg8p-qLwo1>b zy+oy=_TKdHe_?NZ;8}VdI76-ehQzfIhovrwW@f>jX)EbAo_b}(oNFLxzve4y7|flD zt_~!F0OD|d@%+&`xEsW{TJPw|!-L~9L>MEmD!yi2BwSK3-xlAn8$r0d|a*8oQcS;X8d3y`6sS$SUabfFK<0o_Gkc*I`|;`aNZrY0vN z*k}bGgE3^%RsWth<=tRFHmh)O&1GHZZg{TEk(i)TLhSNGjuNoW@s#<+VtC%=W$?Pb zrGU8{YFca*)I}B<)Lxm@N_)_k9Yu+?J~Cdzj3Ft}1FT7~dDpN);HBaGrVRT%VZh`$ z(;jZf-;*=%V-*Fq8cs^fH0e(NXL%&w<$+;)1Fz*%G5a)tr* z{e=@CPjrg@?eNzWI{ps@j%@lD`1QfzpD>~qSi}E5(mT=DOlZuwjHltgQTkbMdGSm% zIa|%f!$BFZ#Dl0;q8y!kuSBKBp0v^>%7@2^N3`yrSd_NORG#MB*LnYrB;kD(S7Y6w z>7;tbUG3GDV@S^Uw8cHz1c3j!^iUbngLa%dT33+|$#DSuR@(Ij{u}3Pj$mC3zZ6c( zuVKxI!dm0i`xMU9Bt+OA2Bje`?CVK+HYqQdSSN+bH3Uv<7+MwGy$SVG?sVJR-RiDF zh8m-_sBrC&=eKtqo{`Nm$%-U#@{+i~uy>oMTtKjnKBx%xk%q$`YfwS&HgUN;-tM*s zonGF&e??ry<0uGIU$s(C`_)FXcl4mU43cj-<&+3@AEO|)yVy_PY%vReoB`s=!#`A- z>YVgs5op>!5S6_}B#@l-)l5Ur43BiZ6^*yeOm7D127^&X4z1jRK3eS%q&n7tOT8f6 zqM!6?(wcgnd`3tWT>}Nw8`W|I3OU={fWQ>50l)qXahbA3gg?o4Qg;wTN1bkWZ7M&< zY!52PRKfP-W1p%FbMI-@k){$pVt36h8Qv85s_2MaDpirhGa)s zKJaUvKb+k&VA_2Pz;>~-oVyBa;2Hylo?}{19a*?cNFw?}j%avO0EvGg$)nzPcS3;B z=wq=abIa$?vzxWZXoP1#AM{N^*a}8V;b0QY7|1mK-_dB@0>jG&dHbG9eP=FLZmyCXpL5w*og-w7cHtbO4v85 zy+3t1YVrAa3BBwM@{x$f4@nX8LD*VA5Q-YKp1zAnE$bvk2I*`)4>J$C2PT>_JIapYqd(+NejLKvBHkFG&4%p?w_ zj*3gsZ`(XF0W0r;{cYKd5u`;z#%$~JZK(@Y*n$7c0{I;S4zpr6NV2s`7)#(rRh5)GVDXExzlqZ9b?? zpfl#pIN8ztgXRF4i<}C z?Lfi1je&hd#AVy#CQ>utnFug1?2#;{j#yTpU^$55B?Gj|KB*XlRF<~Pj8LAo@*JfXt*4#pHp_?%`XI8xn$)APFOc9F{`)ybfo}pZfR1q>`zSyIt`O?~XzI!jJHbXKMX;ZJ1p4Lm} z*SNi1Xm7W=2UKFazY{%(4pd1Td2Ns_FD!-Iu_uKgOBzoi9|DoACxd3QpLTZ}t!h8@ zL$GeqmXyqFtY`Mz!p%u^tl6D_y%8vE!-6sE0z09b_6E)V#vn+lmz9+qPI7qQUt5`9 zy|lPyo!JcpPBc!#K!}(|X~J$8snrrfSkBl29GwsjJ>dGjP}`SnQ8z|WOKY2|<({Nx zJx!jqf)G#1Ah1{8+|KV1W8rTgefGY_ZWHm1v-f9Gf!30_QA#kD5y*?xcMahk?e?}q zX{DcnbjLR_J5Y=EDt;%5%g5&``mYiZ?QF`MSRRsSO0;~}Ib%0%<-(n0Ld6Q%WJdHkgug$9dtGvGji~W;TD* z*zn9aKIDG!Tf?OHMaJX9u<04R{<%TZhmiEFZEUse!f0st+Y#LVyfqmK^Dim9Lc8-g zX6I;<$B?2^$GB{;sdJBxNm}nED;#k)$4ylj2lXG4s!+1*@gX_<^WpCg|45E-e;RJp z)deYHe27}KGQ_;4+lg#cIJLN;(3En_ZktZK*VsEYtkpkxK8GVNHtM8e6OEWCUF5hEJqICrI2i6$ZDh6=wBb+u{mb6fmISORF9;iChta=jYqO5 zcydja4+wQR&qIat%$gg2hz(;4nvN^5l%wMi2Es7xY}bi5rClcDvJSTLU#)FQ*6WNW zZn;`VJvN+7k01tCr<{hz(q;yuJ+Jhm1TzB?*G!l(A}89PzT0o@YL;*6JV!i9E)D2(D2O zZy?V4$XtGoXyU_UJ0Zzr-^i%a4zk^o`-1J^1bK<-o$|8xcz^_g`i)y-T^a$ts5 ze|q7WI=!UQC3Cl-=_f=OyY(%MVpzU75Xy>QJ}290chc44R-0sGFDSdB)!m6 zyZ*KI?k+lo!wkWJ?8OY?M|Hh@-{HxqVY<)CvlTsqiRiD7t$04>u&icfNV9&M8N~J2 zJd(94o4d;Utgex{Owp7FiDLKC4?*r{l%z`MbvJ`B|X zcEyaVFi??x|2nJ9EKZo056*K3RFGKY90}j{p$MA?&Rp)(UlUQWS?!TAFUSZdu8`hR zMH6QkSBOYxVTNETD>-}JJ22xKke{~v3=7^YK@f|MENqm7(lA)5_6&sFx$&~AN zkJ#2EZ;FNQ+g);i;0J~8Gb9ahhxZAJxqzKbQFMhqF^^^n6V3WmQrXtB9c ziyC`Gs51BTjhAl|*?IU}I18CTfT( zyAQb$J|vvdm-426qnz=bXP(8vdvX)|&e(K`nA{~{&>2wac;RgJWLSccm<@~aA*M`u zhV=sJ6s& zE65ug$zkz01Ft7HJObMoyA@Z>kO?j7*{1%Ws1%|m(L>o6x2^BUrv`J!OGB95d_=yp z?dC|%L&J}YM;b~7^_uPIH;h-#=teCEt{*ljuN2^b{Wl=ev z9hVz1P)~93e`eqfhW4Vn`F#UN%H$@d9SXc7zc@at7Be z3O!ErjblI@oRv!KUXjoJjq?GwdF3o#u62O$;OCfC(+u)mg|Q;vSW1pf^o~`ylP}!o z(#Iy&ONrxrT)J$FBKk;2Eex4UJ8#*QvNz!T!p7XC2OoadrGL>q`**;89HS|7&q#Hh&Ylj6wT?}hJ0i;ZIY$4>>id z>N}g)E?B9&R3njf_MifCtfH2qIgs=$pNgF2G7@BY7nxsm)!2+N*+#`@^Pza)@ADSR zZm=WVu8}SM99k-gnV7w+$RCKJFUSovoP?ZXHO?LX+*%p|nm!KG`P6-RzKrZ#`PFbo zrD5H1uoy_OZdS%!y&uP!Zzr!&+ z0?o+p!nl5f=%LT0@gW?l*PC*7i!sDG?d$v-5ghWNIoFwzy1T^*VV=A-Yyex`v|6Y4 zTfH>BVl(lfzQw1Ox7>NK_bz3C?d4zGvD7dR>2eD4e37$x=eac0>sM=6@>vmyGEg=E zC9@5$M)6oj7^4oUk6FWx{L!Nu3_e~2{Cl(?e34c8;y()2h?xd_enw7JoOc_uMoeOs zR)$N}2$qor62$e%3__Tw$E4AHs9eUza4gGd%V;VL#67c^hqp4tgLA7WaK@!loCE|K z!nGuDkSu7TA}a<@8ID+mZI0(ZH_jm!`Vr$>h)~#^!C_X&M}$UARLV2YC^kMOqu~7z zMgN%^UP+(p(S^nPhl`CvdLt~$UAjyUgq=JvIhQ@K!+iNNi)t0gDVf9J1{_2Z;R79* zV*bWdcS9cEXPTxX@HGdiDlS_SsYk}o??$G{FfB=#panA!`jcUY9{{<=R9c@Ug0u0y zPWy_^f!4LsT z7=r*B0A;Fsrpgj+$6e*J+b%Vg?uo1@&fKc2W?+hp7+R#N@&t50LO;puz1F_0wJ!$; zl#=-~NmU}^?Ay8Qz1LprTi@r2^k~w^z#}hW#K5@Rwb7~5`yJ`*T^{Kn3scD7%=zw( z*Rqtk4xHTsoK8)&3b#)Lpb zh9`8bwQ93j>DJe?N-i%hOkJFto^)8H<)>#8dE}rtD2smoUYaW|`GijI zu2@qkp7B*wQ#9;oMDB;hwA@IrUlCkl@@E$!xgXA@AqtE`yLxXqdhdJsTxGK0yc;%8 z7hYM|VW+<`I6?s>uP8~GAG!4CL_uEGi$95VLG}eAU5e_vOkq=;$WuXYllCz754xbN z@9lDEh;uFRdw3Rt@*c0aT{gsZ!yXNSg%QFD*$!@6*^Ld;BpD`2GHwHu>=xA(@}UhF zLAiBG`z00k^Z}@cfHFd;HPOmrj7W!Dz{qlN9J{W5ZG0>yUV305NuhVD(HG(QVus>> z3b9HP$;*L5o#^IeybyTiFDFGW#w{Uc;^&iZ&76=C#3D+f%Vii$Ui`^n*q3*-M}jIG z&FohgWEBtU<;gbu7dLf&E_}g7y@pH8txQF#Gda!}Kj^JDfA(r(Xr+mCw*r><^4=yK zzDrW;V-d*d%jH5s1?Y7bK&5EhV&1meABbV^m^k)T5r`F)mC=7W~1M4)^$;<;HsjH25T4oZeC{tdOa{?D?yvD#Ww?O z_`jtFFMxCn#vNxq^sySR1nYjNDQV6FN)qUH@GC=2g>9nBxUy78B*2YYJl^SPGKGK; zPK-kvwRhCNCsW7tSFs0uUiu8TYl1$^SEpI8t{0MDocs$l2#Gqu+u~w?W>-BjaISoN z^5|_D_Ddq7P!6EVIV5ult8-FaDqDLhdiAfeu0}6{YLz%U${P*Um9?T?95r>tu|gJu zbGii(AF!(UhdE*H0ygPD=ejHWnka}r1g=*zUS)5>o7dqHYW>y$*=^k zEXN@ECCl4ES9{J3WbMTiL4ZFf!V{UKCYj?DUK9R_pdIcNq*%P)>(}J_na*FB;m87b zN)ICOg5FIuJbaVGh!aT9Ms^F5wK8W5o~fDkP(@Y@@_e;hFKyKO)n+>V#;dQs>ON;# zS{gzOb}L`ocW%$rq;fr7sbbQ)3t#q;b_43|@DTHN1N1X@j7s;OGFUKkO5EZTnkUVW z!XVTId;1f6qC7;bKsx=(D{0uy7R7SZa)e*y2exhCSCZ%u_FFOH1h#^Gn~bU262-Gx zlXnzq&1Qt4$ACwGOpCCdFiHjm1Vp5v z-6NZpI@|}dY)>|qOfN3arsL$S!%68TlIhE#&!893A#w}>h$x^;ZWI|sS8!=zX*#)Z z?v>p2#O5-6SzbA1v4s|zMVx4B=I)Yxudcms7&!VL;?%KF9uBD*5YW3T> zk(12NonM|>ejmZZm!=kGL$2K@u^Bv50Ldtvo^eDThsPR)K6$s98#Gm`ua92ItjxTE zk9Vh8Hvz|jgQ!x$oIEl-)BU_RF;j8 zsMZRE{Aj4e3$47rvMkvHl0W^g^g_2@PgmOO{g1?En_g&dwrW+GG*(RKT5IKEdiK@V zUV~wTPFVq8LwwgSDl@l`C_TXJYI21PoQ=xC!8qB=b|s`Vbq5>^IS$gw!JdPYfFKo$F5A$v7_xk@bk|{*3c6#PQ2dhf~W7<@%N|p>zm|?=s*|3Quw$ zmT3r_xFNfXnv9wsw$vtbJ^rKSb*m8nCGt8oo09Nm|( zp-rU!LgE83W_BQ5bzAEC&CJiQE-uc~=$rfxem3T!&EPVZmgnA`U3RNE7il$hDYCTA ztejuXmk~6iiQ%;$(9DEAY3^E&HM4#oFg){K<-+3fLPe}s)i()`8Vkpc*TlNEUb(eV zok(ALD}57s8R8K!E%*A}j(RpBCWGUcBrwA;s35;S@~b|qBS%Ja#Duib$IhlWLG_!x zipnn6Mj)1WXQ{H;`mojhsFlpTe@Pggk4Sjjf#rCnXl(a%pf%6250jSi@5IIQ;^L~F zsU}OzSW4;4(x0b8L%<{_Cv@^#8p*dPrIULhSd!x<_O_~`6Dka@3{o9TtSA#KjYR5@ zI%2?H?s}jtY^iYi;c`+}ac}`UBsJ8&D!pCBTmZ~P>^GIx=BLPwI}N{u`G@LhKT`pD z<|(;kAyzV`3#~nE63zdOIPSN*% z{4$5vi_Q$9e2{o5)ce^~c6mkMWJ0J#Jw`oO+7uz!0AekD%d8ZQ``;sh1sXb@s~abULngRL)F7_bM75iivmp zxFe_f@4((WR4j99MN(h3S$uUK041#b0RvUivCk7zi|Oo@rN!k{ZPMTMOiz`!O@vDf z2ck;+BHk!CTBCjXJC;JEK1BS`fFoGGMw*c5mM}EcyRYp1< z0=I2uG>40o3ju+52Q?PLWe?}I0Rj19%E)lKYh@xRFWN15?Q*dS!?2a3xAtb=@2-&K z%c!;}P|aYCUQwBRBxWvh*+<%9LY{#`p$gM{uD)!T($6t2q_`LuZ5}WXo}Q7B6Pa}M zLhtwY!_rUyM0*#xZU1N!ejVVk^-WR^TvJZP`{c{|M;f$Z^Mbmg9M3QYRrL)GcyRTL z2;ni66Mex=dw_z|Hs8Cw(XU=ldpBFPt*~3jJf2B)a`WbYoa63+K5bJ3tRfH6d2jd; zGrV5Jn1U#gOas4*8ODiNpNtmDq>lcwgt;ry8z<2iRBv7LMB!r!y3i<>SCyzgxK;OZ z#W6)ARKGmC|3fE_SMf>G8MQE^{$jU14a?Z$jAe7tDU2|!K`qo;#)6er5{Eb~y@89mM-TW}e7|c-+vIhh7@FrR0WEl<*gr2!kD7TKrz%ckQD+J;65V#;@2EKj;H zx3qHZZ1?QMXg$E)>pZU`T<4D!;T@t^M{Ms{Z#} zk>upF(L1soWHmL*85|$alZnXk*c)Ngp((j=MG?+Ia?bJUcnXgIG}l=!Hp4L zXq<3RpFkO(aRk`LS7VCM2*sdZ3br#KLno*QmwPkhkSW^0w%ewn>hzS~0(6b6C%OK> znB?=h18-#*sud!1HGG-daK`S{9PTUI0ou=PZt8X zZ?dEZBZmM+sOyCQ9ul*dq`9f1raVo)r}!OVF`X!;Q_=vV;)~+9E9rQc`&nFDfciis zEYm(Gq-gE9<+GGr&2u0;1WtZ&c^)l1GJiOckgYV3LsgdjFRC8#to^-pGw<i3Ha;c-jhjZh#^3eOcPQ=!owdbH!E>=1DpUevFN9*>5sHbx;l(tr)0`e6mn*} zC(#~>784EsMtq0&PQH`ceJ{WKGW?*el>wTML$Ue~rJVqL$MQEft>GEHD#!GS{7ioX z{*#Zv5GQ1s^2RNOOv{=63h~pPd(a7+8<1QuGOR-Sgb&;rH^I*SV(qfzKfGkTW0A;e zG0YhOb@^u?di_+}x{=7T59F%Jg&;(=NV3WKEr)tE^641m%nUfBTxBi^N4!@ciYu`I*YxjJP$&;YN-go-#Z7 zHll*EnA7_`nDQpkUUhhJQS_&1P|+kXhrk={X3dm)=e_BvC1r&W-&inv0Lm5#Y)xF8 zSy_a(=HFXdnY(mhQEtM<+*hwZZGP10$qbuH-;`aQTD`myE!?m6H+!n|($aM0-GwWG z*EH4aH*VF}(oSd1mRt#yl)su%%NZl>baAArWX3Q%T^ywD6UXQhXZw=J>sndXJ$eirPBw%w2q^a&ZYN;`i~Xfq)t9 z#v{E^l9pic;BASUzcA-Ld8H4feEgF8oYz{NTbNz;D!~%`N0X-FR9T#vURVlrL>&*> zv`9s1zdpVw=Zin)en#3hZ)A09X=P>=mZ*II1fc}FQCN5azzd${xpKSLuWzhYJJ7`H z)XFbcR+leNuLj?3zuNl{$^~aHURhYF%+AeBgIUc3LIcADhJIX(ahqBfmKGLgX4T`v z#L5dx=IX_jRk8kq8E@jL+0Hvtb#CF}dAYpBSF7+^rRol=sy#1HB>Rf3=8iU4Zhr34 zFNd{%Xz9c`Z;5W>lGBk=cryhS-kAxCE6~IOQ+Q=rygKX1HSQWH@ZQ{|b7!+A|3{71 zxw93z1YCLZjmi~S1K%un@L*U6?V9w;%GA5F>DHTXho~_CBQZj7~oz+3QRSq*5xykwj!H_L|MuR>e$mne|?KMbFy;Sd?Uzy=Y0(mU)n5_z-G}k~$C%grV`dWLV z^Vf+z>xO%9+4^kO$Usxqd9uVLqmQH*l-Aqjp;@_%?oY!otxAud`tlMVPay3c9RiZl zpB1G@K%x{NjX#x`{0(>L8y22z|M7YhQfiS=!9?7xp5yKn4ELEz{grQKm)$w}r#eK< z&R?)D#S#wr$b;qt2xG;dHmWxoYb7e);EOY;-UC#h6scwWF;BtYd4L3pPokJ^l!8#l zJ^bTII<^`3ewAODos*o*2lSheL*?+y6aDyI@kO2QsJ#lA4ys8p)3+upl@EyS1W%rt z&dYZtGF}7m@KNllu_48((`ZUk(dCn*?!l*W@On&2tIAik$VxZR$trDx96HVo;waJl za-}QcoL+h3byzypX1(LPMM%wE8x`fO)r7K6K4*0}r)RLU2vR+VOH{7zI-A$!NjPWg zJLx%?!uZu`EP^_%5`DH@xl5cQkTbvQ(YV79U3o#a7dRZYRB*fEJV0R~@f*xUuOe4O!$iX|W$oI|d_BmY%2pAb~l*>TTY*C_AzjyleLPtk&| zEN_7FIFpe+-$1?@Rz}S$JytSO_i+WrHxhw<#zV=`)$>1!-*W`J&V+GEx;ZHNnWBW% zFd;JPFaKHW{R^I9oL{K{W{in39V3av$wW3Me@!s~ow2I<<>* zPgwV?vJIZyA8>0D>$Rl=)pQbaDg2+X+o89%jx7zDYS zC17x@Heq3x?ot*x^^-^;Y!@FVsHLhB5FDszt-da=8?f;)FDfZ@NbN9s)Nq3ElEel& z)*TGnDZL=4+7?Hy1@`Lltc(^vr1^HStSlN>3!P0;S64MFtR|K(*wd5+?mW{MmkavH zERh3`^VpSy4of)k{3$%lDc72I!A4oj&`?s&M-p#(tl)eq_$((rbx2C&)59>Wsowat zU*SGD1}(=9k5nJ%bAgWiqm81(ZBJWWiADMf!B4;dH<}-2nuY{XIK(xZk>k{J#E(;RI%eKR z$C((+GQwodZ>0UAD&R&Wm!oj=IhqCHLB$y%+GX8Adyf#0s+v_x+>S-=1y~9-mLxw8 zUz#W!i7$O*4i^7Q!|O;y4KR;8Bp$IJHuNg_op5=O=@Jaz2G?bAKpcOwUADmL22WO~+ zO|*hlq`_~ptX=eFp2rNXFcm)^s}(8CSZ;LQqQN!L-Mne<6f@rIcl*`r&ANi>$aTU^ z6@^L&OgdCPg>A}lD(*&DXer28$W`h$;uStR`Q2n8Zdw`;Z;FQ}>wG!qkkzrIP%bH; zXxARW*C!53M5jA9Emm4`Qpf_zGJoWqD6$+A5J5+Dm`*uo>#i*@RtvMv@y{{{`a=Jm z1NsVbdybv`NzW(s9DD62&6>8`!pI+*e1N1WDzGvwmdu+ArJ)S0>e#SF-3N$@J zIoP(DZDBnKBldBo}$jRY9Fn0>phfCPkHkG1L1D`@xDCJKS4zcIGJEl z2XRs0=}28INFVUUdaK^8Hq)ie>&?bmI^S5Uw|aGN*+UQYxaH&e6ec%}YXTp=p^1i+ z7NvCu$sOW{0&TEd5cbNh20|gfhGBkj5-&L27Bv(8plL4TtbeQm1Q<;MwCMjZ9_xWa z{%Zohgf;AYi}Xt`RhDIVT~maqV3i4-OYMI`3F#^WfZ1GTok~%OlbBy zad7DjI<+z@$|n8%-19t!`b;~7;2k~2qqgYN7;;O)siYIrKpEqtCb%E?Y z1S9%(y!iRAC&IL{e(&S~1bqBCcq4LkV{=|T0J!lC2S_6xWXp+DUE0y}uY!EUbYR*6 zjfs$Ub2;$y@kykf@`3O?hJdN_k3C|Wq0Rp;)Q;quJo%Wh_SN2&ia$% zJL00j(d7&_si8AcJ#7+pj10n6=SHb(MH@(H9w_;ZeIPs~R)OcudKPXVG8IDA9o2Jp z5sVSsX`;G-2G^y^?3L;H_;tGWDNlDuQZr1qd#l>5c5mp1o$2gAXsT(3xL0=4Tjx^I zOtaDJV*pX3w8GAqmG>7aGjkU%_~)u%X0#UVqATKo>x6N-Sh)1stLISDfw9L?TiTL@ zapT`a5GL)WPGt!_NAuJw#7EK`MI|?y3Z@J#ySOrSevTxlW)@zZx)^NN6Zbx2b7I2@ z(qSJ>=uzaU)yu5qqS?eFA2SCz+-qWutg9nr3YDMq(W@ z?}pc+=Aq6W$e|kt4$sA}?86yh8OUbce&Fg9n(s+|a+@X4ZHJY5bA6PWjaG^F zI;84VHx)~+%=_>lDu4dHadUX?e(|*%hl@jwVCxsbKz2ZskgGadFx$S zpwww@-e|PaUszcB+v0coSH=2_SPau zY~k8SHR&rKttR7(+Wu)%S zXOUG)`}^2L7C#J|$u9dQap7bY<7cd4r916Ty=CZ(JxHDLQZt@Vgi(1ojy!|QJcWIr zqQRlDK#pyY(q@$L5Woexgr1TV0hy*+lA-fbPokUw&08vMwrchDMyp;cwOh^GvdMos z`R&Q0lh026j}$V3t?IrHDFF5LOJ|IZlnK39E&>TvdFrs{V4}x&+@JY+%3_woRS6hP zq)j&0e&t;VyngB?0n@a*ZC9){mPbv-32{V6tBSK)>ciVnNVOYKDaK2x#N|1vY$sh> zt;{b@&6Ewd`T-hsNE7`#fMk3v-EisH)=MubqKp75V3BH8dl6liOk43Vi}^oRDku=Twt+RHYS~fuYPRr48YR^d_qlBjKQr|Chj-HsO0V<(l z3Tc$b%8?4FwX9TtjE*gTfo$Q4LW2$fiS05gXEdWdsvHFuV~rcDrPe(gZ}TYIH=!hX z9>RK~LWxEZCekFQtvtee=F3T`)UDsDcYF2H_1pb=PoGI$0xWqCXr60DcFXZ)0Z>_E zIo2+Jj#Q#5YFtf7CC!5m<5)}-iJdYq8DxwQO?;+%bye*7>)1{^-A1clF={Ev)vm**%1cB_4QgsN)S|T)ccj{=2pGcck#Kq z+DpuNndDPuwR^WWMz4+b`OzqPky?i=M;k;~f@mELZPej)K0tzeLi3eq@+X{C1LdsM zPV*fKQ&X1ZfxCj&+3u*j3J59?t2upvH1YeRpF&qT<;^DQJXHn<19E~EiDwkEw9LiO=Y2t=Gl$8rP zI~eZsJVitL7Wd!{k=P#3=~VX-HoZf!)BQs9L!i+n`O+uNB0EIjFdHR${=!UUd3Jtr zy0ZN4RJe0z#)@(4{?l9)=&75Z^Ud3g-ppuG)~x4(j)=@Br=O5sPizJk3X@D`SLb<` zbi(3v)F{#~P^|n&&0f=9U;*|Uw0Zhb?J7L8ajD^O`>ylChI=tYyd6nhE5?RA>h!b8 zEn>lk>^t!fL{E}c#MkL{IthIgoU`0~e;Ovo<|*~Qj=QY8W4(#!q})?G3(kx9oAhO( z{~Qm-n=NOuKUW6{5m64xSA8<`{(Vq^uyk(Lx_L|cz_5{OqRALm4!4Z+xtq+8BKJf& zo@<=Jm~!qGpRaZRikD+a8QM@N5hia_t_aI%9&;vE?9?p=^=Z`GWElU`d=95-V2EH% zq#5(Yu=HiilY-VXms|l1FcFE9EbQ6hd(!ezR3(yE5Z1jKFo3NqAFxf`*q&hm!Bj{81QE-tmMSliJ>;g8%3v zxfL$Nf~P(h$!Sb5`cxS_|6miF8PiZ<#KVPeAUFXY^&TXt+rG+qC8XEP!zMih`uW|@ zIgV^-AZJvtTw9DuVtd3BB3m?A9ufqA@|fCofL62D^X@qv$!y(_0cD>FbC*kd!OQ(m zY|n?NMS~&|>L7v6LRW#!yh>6-0L+wfZC_x1xkKKBgKQs<&#D>&^Dshm(}sVu0_T7-h;$krGzRFN}$= zeDh!VZDxVtF5belUAl}LC&d_&2=?e{x3AUuK*yyAyty`})Rilz;09+_LTA?#+tq&sk zi55tT&2LmctXE9XmySF`EeK|{YCzs`t{e6~x^8`~-Hp9DMT8GtwCxlt^y;Yf4s^<_ zjb`Ip0mcdP9F0yOBg3PpUxU8BZSjjg0oNKI%65b<)4@GYk%<=cvG!{#~k(Ai2_i{2bPvPn3|3tt>a@08^?{!XH4bQEj$w)VGrGqJaz* zwpUx8`!y2E zG8bAIDgQQ!4+R5GWV;?-!tj1s7YRIkLY$k#^6*KS06ISCLK`+5etcvni?4>KAtixK z4XcKd1eB!Qh)Bph^F+YM>#fa=iG-`9Kv8)?)1~mp+Q6|{pLY zba*a?osb6kb`>2ro%9~4Bvt{w=xvOgDT$S=;^9*tp9$8DW6V~w44%e!?ghgFbM#|P zS)9zwxeWqA*z?KCA^DQKM!6o8YQ8gdRpCtnF*ea+i(w50Wvfgg>YmF|m-=676 z9DE~RrlB&J*Dseq9Y;2$d^1#EVrQeT^uA@RKll{y1w1jSkxe@YTDc+GMqY&oUuQQ( zxCmHL%fl`PJ)p*te7{nmc+YGMhdF$uY*D>gZ+3{ciH;$cuZdJhVsfV_AdWe+Dt?b! zk~bMMfJ%guz@SQV7I$6F5$gh=fA&$ZF#S_aXP6SYGnE$x9_nbTh_c;I1F4#qFRZ@y zM!68Lsy;4GB(B>+@(zOIHo*sU=^v)Ry_?QmTDrWNgy1?uf%6G5P9Xf1tC1%bhc+n%LhRur3Sx9%nPMdC?e0dkKS@2!`t2Nr#8&-0MmPLZjw2!2 zG~K4606U>5Qgr^J9QZz^oKVpKdUwEu62@67Wcm&lx^;tcI`CaI=ltM9HL-&zEYkqY z)+2Z2cdm9hJlh6djN3w(SJUvl4j_r+AYE(M>XlCQMqR!oml!3zYMn?EZUL+V6#Mf}=nfB4fbF7uz1PcAtkvA;)xn3` z<2#ykE{FEl4RN}U{VttKDh{XrmjBo2*EeES;2Q6^-s_3So)H>_Y2mp2{K80fC{`c3 zDNL91+GbM>%^X0r7KBw5jG&)MZcrhC>9ntmU*k`8f=RB+Em%pPZ>3Ec zY4(}2XsE9*?5YZ;F;S@%SL5P#tGdxxDR_+nUTm3V8`sS2S`E8$%t%Wen>fL$GK0) zoD#Wx7il0+`j}DDkV7A_S`#OU=Bw0iXOQqu(#%PNkg;k-p}jlD6I0k*m9a7`(cs9+ z9VwK!ujFxDNZ5NI2bExURfyI2kJ^tx51-aitoB&z90@^(cM=zwkr0~A%~nHh#l@g> zar(ilXA(-MMJOtZ&ZY@wKc2Qsei0!uGcEuJmxMF-nGt?O^2UgzkB1+X|Bp^tJ32Y| zH0Dq=8z(BD(LW_P+So-)KP{Cy-NvnIzdlT90prbX7NW@^PE_1txCqMkn7x;F>&^BW zEL;(%Xen($88PV1V%lo9T5b8yj2gD1eOQ+%?0qMOG)GR}PPN;sW6Fw(6h4UAlrk00 zq)=kIU%*2lr*Ws|cl45%6KwV?ab&NPaWjFb5 zO%LU07VD5#L3+%k(Wt{8nOw5!5OV4peGzx(l6~d5yI3s8YiyM8lbhc91wynKNmDrq zpisR|J0DdW{XkH3a(F;2Q*A+JbsG;iqZla#!f+-r*>|qNO5o9m#Hgo&N!3r2xf#CI zZL>2G{XK?;a;qQ3XqCe4p-tZHtl>*h`SFwZn0O(`hljLd8dw_J;t7spTbyTGtQ|_X z(t9vcnV{zMu^EUR_HIhh%7;>!4}Bpzas_J(`Iy&W%u+VfPBH_NVign!@8yrv+KyHr=|a7r!lb+_ER5V>oX}( zEy)Oz1|OL^Cb)V0hh`UtOn&EfUJWq9YJYKhb?j%G*PIIQTMB*v<3soq4}Nyb9nxg_ zHZp)8D$8p?oi$!(;Q@Fw^-dShH$rKDo5Ua=xDfJrB>LRp4h)$6i|!mNB)O3MG4VO+ z*}&*etOV^3&Z*UYMrk%Dm_Hh+3b@nFE&fD@g4 zDw}yQA;V!HNiZy-Pxsal;VJo8pH#t^BJ6WzVE~>bj5?meQ>3EEmB^bDO7`)wT^JL9D8(52o z<`5hMzP&6E1tkM!0RZn243Pz8-Y)ZiILXx=Uk?!N&SMP_4aANH>iO&v%REM{m7sJ) zZr8hW0H)MXnrz*8;X^;$Q{Xc*kDjs?kXkMRTy>-}<&gj;uFgM?xS%A_X&kU%d~lyD zj~b@iDCJ)8m%8e~;FhM2zFqj5{=m0o$(VEpUiX(8dFfe3;-`9Lqq=sp(W)mrVTQ3+ zcpEQO9Q|4WPl3es94R7gIwL82S=LR?sHQy<!L+RsHHEx1^@TT2se`5;4hx% zk+9Z?r9b5Pm@k(M<;9G_^vnF)87^YG)p!ao=t=SH@%2E7vsGA!Q0jH@?XTn0Z@r09yuVKg6b&imfojE#(vDs zpS>^_yevIyxPf{srErrZsmZ6R3g|Tws8f=1!6bbVrBbYi?FkE zF}MiTA)N?RWDfjAw84)#u4^TCMLZvUs+`Cs>)LBEZMZ$k9HPid|q`J7V&UUZSV?bk#XbW%8M1dg=a|k#x}F4gZI&!q6cAIXdjA zdNv@juzI|Yk?0h#>?GaKzZzkSh?HcfwddMiS|nHL0V4 z!+(|JZQO4~A&jiLV{CB~jdG!q{7xi>B6;X8G64@VL@&T5&auvim5}$5j-Q>#Tk_mQ z60^m#aO0;dXrs0cl@Dtz!v)I|f1JkY^dkq6#50%`nSbKoYzV3Q^gFZDzbsjgwY2mo zt9I(U4l-Jsy)w7@!Wz49d47IjYH1kc?&kzjWLR^>S*Em*(YBWIb3m+w1DGcb#@bm~ zomzfzcl;vwsP^>P&bShZw^nAM7b7H@&z@7(;1M~hs6F(Utn@!P+5jx3Bw6P&Khs#I zYs#@JQueJkApsv*<#{|5>ty!rLYs-&El!oLbc1e;uSW6H%R_-8WM|0{x3ji!(#vd literal 0 Hc-jL100001 diff --git a/binutils/po/vi.gmo b/binutils/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..dee68e3ee18bd532faac4bf16fdc6a440c2e4501 GIT binary patch literal 208072 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 UmpTUrkd6nOoBt(~1W@Mx1HEcxp8x;= literal 0 Hc-jL100001 diff --git a/binutils/po/zh_CN.gmo b/binutils/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b4448b155b83468319f30b36e9cd489ca82ccbdd GIT binary patch literal 75892 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 literal 0 Hc-jL100001 diff --git a/binutils/po/zh_TW.gmo b/binutils/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b02a71ee6b1e68f2bccaf882696c939761359459 GIT binary patch literal 121475 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. */ + +#include "sysdep.h" +#include "bfd.h" +#include "bucomm.h" +#include "libiberty.h" +#include "windres.h" +#include "safe-ctype.h" + +/* The current language. */ + +static unsigned short language; + +/* The resource information during a sub statement. */ + +static rc_res_res_info sub_res_info; + +/* Dialog information. This is built by the nonterminals styles and + controls. */ + +static rc_dialog dialog; + +/* This is used when building a style. It is modified by the + nonterminal styleexpr. */ + +static unsigned long style; + +/* These are used when building a control. They are set before using + control_params. */ + +static rc_uint_type base_style; +static rc_uint_type default_style; +static rc_res_id class; +static rc_res_id res_text_field; +static unichar null_unichar; + +/* This is used for COMBOBOX, LISTBOX and EDITTEXT which + do not allow resource 'text' field in control definition. */ +static const rc_res_id res_null_text = { 1, {{0, &null_unichar}}}; + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 68 "rcparse.y" +{ + rc_accelerator acc; + rc_accelerator *pacc; + rc_dialog_control *dialog_control; + rc_menuitem *menuitem; + struct + { + rc_rcdata_item *first; + rc_rcdata_item *last; + } rcdata; + rc_rcdata_item *rcdata_item; + rc_fixed_versioninfo *fixver; + rc_ver_info *verinfo; + rc_ver_stringtable *verstringtable; + rc_ver_stringinfo *verstring; + rc_ver_varinfo *vervar; + rc_toolbar_item *toobar_item; + rc_res_id id; + rc_res_res_info res_info; + struct + { + rc_uint_type on; + rc_uint_type off; + } memflags; + struct + { + rc_uint_type val; + /* Nonzero if this number was explicitly specified as long. */ + int dword; + } i; + rc_uint_type il; + rc_uint_type is; + const char *s; + struct + { + rc_uint_type length; + const char *s; + } ss; + unichar *uni; + struct + { + rc_uint_type length; + const unichar *s; + } suni; +} +/* Line 193 of yacc.c. */ +#line 404 "rcparse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 417 "rcparse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 2 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 830 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 112 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 102 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 276 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 520 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 353 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 105, 100, 2, + 110, 111, 103, 101, 108, 102, 2, 104, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 109, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 98, 2, 106, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 107 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, + 25, 28, 31, 34, 37, 40, 43, 46, 49, 56, + 57, 60, 63, 68, 70, 72, 74, 78, 81, 83, + 85, 87, 89, 91, 93, 98, 103, 104, 118, 119, + 133, 134, 149, 150, 154, 155, 159, 163, 167, 171, + 175, 181, 188, 196, 205, 209, 213, 218, 222, 223, + 226, 227, 232, 233, 238, 239, 244, 245, 250, 251, + 256, 257, 261, 273, 286, 287, 292, 293, 298, 299, + 303, 304, 309, 310, 315, 322, 331, 342, 354, 355, + 360, 361, 365, 366, 371, 372, 377, 378, 383, 384, + 389, 390, 395, 396, 400, 401, 406, 407, 423, 430, + 439, 449, 452, 453, 456, 458, 460, 461, 465, 466, + 470, 471, 475, 476, 480, 485, 490, 494, 501, 502, + 505, 510, 513, 520, 521, 525, 528, 530, 532, 534, + 536, 538, 540, 547, 548, 551, 554, 558, 564, 567, + 573, 580, 588, 598, 603, 604, 607, 608, 610, 612, + 614, 616, 620, 624, 628, 631, 632, 639, 640, 644, + 649, 652, 654, 656, 658, 660, 662, 664, 666, 668, + 670, 672, 679, 684, 693, 694, 698, 701, 708, 709, + 716, 723, 727, 731, 735, 739, 743, 744, 750, 758, + 759, 765, 766, 772, 773, 777, 779, 781, 783, 785, + 788, 790, 793, 794, 797, 801, 806, 810, 811, 814, + 815, 818, 820, 822, 824, 826, 828, 830, 832, 834, + 836, 838, 841, 843, 845, 847, 849, 851, 854, 856, + 859, 861, 864, 866, 869, 873, 878, 880, 884, 885, + 887, 890, 892, 894, 898, 901, 904, 908, 912, 916, + 920, 924, 928, 932, 936, 939, 941, 943, 947, 950, + 954, 958, 962, 966, 970, 974, 978 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 113, 0, -1, -1, 113, 114, -1, 113, 120, -1, + 113, 121, -1, 113, 122, -1, 113, 162, -1, 113, + 163, -1, 113, 164, -1, 113, 165, -1, 113, 170, + -1, 113, 173, -1, 113, 178, -1, 113, 183, -1, + 113, 182, -1, 113, 185, -1, 113, 97, -1, 191, + 5, 194, 3, 115, 4, -1, -1, 115, 116, -1, + 117, 211, -1, 117, 211, 108, 118, -1, 92, -1, + 212, -1, 119, -1, 118, 108, 119, -1, 118, 119, + -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, + -1, 11, -1, 191, 12, 196, 198, -1, 191, 13, + 195, 198, -1, -1, 191, 14, 196, 126, 212, 208, + 208, 208, 123, 127, 3, 128, 4, -1, -1, 191, + 15, 196, 126, 212, 208, 208, 208, 124, 127, 3, + 128, 4, -1, -1, 191, 15, 196, 126, 212, 208, + 208, 208, 208, 125, 127, 3, 128, 4, -1, -1, + 16, 109, 209, -1, -1, 127, 17, 199, -1, 127, + 18, 191, -1, 127, 19, 205, -1, 127, 16, 209, + -1, 127, 18, 199, -1, 127, 41, 209, 108, 199, + -1, 127, 41, 209, 108, 199, 208, -1, 127, 41, + 209, 108, 199, 208, 208, -1, 127, 41, 209, 108, + 199, 208, 208, 208, -1, 127, 57, 191, -1, 127, + 55, 209, -1, 127, 54, 209, 208, -1, 127, 56, + 209, -1, -1, 128, 129, -1, -1, 20, 153, 130, + 151, -1, -1, 21, 153, 131, 151, -1, -1, 22, + 153, 132, 151, -1, -1, 38, 153, 133, 151, -1, + -1, 23, 153, 134, 151, -1, -1, 24, 135, 151, + -1, 10, 153, 209, 152, 156, 208, 208, 208, 208, + 207, 155, -1, 10, 153, 209, 152, 156, 208, 208, + 208, 208, 208, 208, 155, -1, -1, 25, 153, 136, + 151, -1, -1, 26, 153, 137, 151, -1, -1, 27, + 138, 151, -1, -1, 28, 153, 139, 151, -1, -1, + 39, 153, 140, 151, -1, 42, 193, 209, 208, 208, + 155, -1, 42, 193, 209, 208, 208, 208, 208, 155, + -1, 42, 193, 209, 208, 208, 208, 208, 158, 207, + 155, -1, 42, 193, 209, 208, 208, 208, 208, 158, + 208, 208, 155, -1, -1, 40, 153, 141, 151, -1, + -1, 29, 142, 151, -1, -1, 30, 153, 143, 151, + -1, -1, 31, 153, 144, 151, -1, -1, 32, 153, + 145, 151, -1, -1, 33, 153, 146, 151, -1, -1, + 34, 153, 147, 151, -1, -1, 35, 148, 151, -1, + -1, 36, 153, 149, 151, -1, -1, 37, 193, 209, + 108, 209, 108, 209, 108, 209, 108, 209, 108, 150, + 205, 207, -1, 209, 208, 208, 208, 208, 155, -1, + 209, 208, 208, 208, 208, 160, 207, 155, -1, 209, + 208, 208, 208, 208, 160, 208, 208, 155, -1, 108, + 154, -1, -1, 154, 108, -1, 212, -1, 199, -1, + -1, 3, 174, 4, -1, -1, 108, 157, 205, -1, + -1, 108, 159, 205, -1, -1, 108, 161, 205, -1, + 191, 41, 195, 198, -1, 191, 42, 195, 198, -1, + 54, 209, 208, -1, 191, 57, 194, 3, 166, 4, + -1, -1, 166, 167, -1, 59, 199, 208, 168, -1, + 59, 60, -1, 61, 199, 168, 3, 166, 4, -1, + -1, 168, 108, 169, -1, 168, 169, -1, 62, -1, + 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, + 191, 58, 194, 3, 171, 4, -1, -1, 171, 172, + -1, 59, 199, -1, 59, 199, 208, -1, 59, 199, + 208, 208, 207, -1, 59, 60, -1, 61, 199, 3, + 171, 4, -1, 61, 199, 208, 3, 171, 4, -1, + 61, 199, 208, 208, 3, 171, 4, -1, 61, 199, + 208, 208, 208, 207, 3, 171, 4, -1, 191, 68, + 196, 198, -1, -1, 175, 176, -1, -1, 177, -1, + 203, -1, 204, -1, 210, -1, 177, 108, 203, -1, + 177, 108, 204, -1, 177, 108, 210, -1, 177, 108, + -1, -1, 70, 194, 3, 179, 180, 4, -1, -1, + 180, 209, 202, -1, 180, 209, 108, 202, -1, 180, + 1, -1, 191, -1, 48, -1, 69, -1, 49, -1, + 50, -1, 51, -1, 45, -1, 46, -1, 43, -1, + 44, -1, 191, 181, 194, 3, 174, 4, -1, 191, + 181, 194, 198, -1, 191, 52, 194, 209, 208, 3, + 184, 4, -1, -1, 184, 53, 191, -1, 184, 60, + -1, 191, 71, 186, 3, 187, 4, -1, -1, 186, + 72, 209, 207, 207, 207, -1, 186, 73, 209, 207, + 207, 207, -1, 186, 74, 209, -1, 186, 75, 209, + -1, 186, 76, 209, -1, 186, 77, 209, -1, 186, + 78, 209, -1, -1, 187, 79, 3, 188, 4, -1, + 187, 80, 3, 81, 199, 190, 4, -1, -1, 188, + 82, 3, 189, 4, -1, -1, 189, 81, 199, 108, + 199, -1, -1, 190, 208, 208, -1, 212, -1, 192, + -1, 200, -1, 93, -1, 212, 108, -1, 192, -1, + 192, 108, -1, -1, 194, 197, -1, 194, 55, 209, + -1, 194, 54, 209, 208, -1, 194, 56, 209, -1, + -1, 195, 197, -1, -1, 196, 197, -1, 83, -1, + 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, + 89, -1, 92, -1, 93, -1, 200, -1, 199, 200, + -1, 91, -1, 92, -1, 204, -1, 203, -1, 201, + -1, 202, 201, -1, 96, -1, 203, 96, -1, 95, + -1, 204, 95, -1, 206, -1, 90, 206, -1, 205, + 98, 206, -1, 205, 98, 90, 206, -1, 94, -1, + 110, 209, 111, -1, -1, 208, -1, 108, 209, -1, + 210, -1, 94, -1, 110, 210, 111, -1, 106, 210, + -1, 102, 210, -1, 210, 103, 210, -1, 210, 104, + 210, -1, 210, 105, 210, -1, 210, 101, 210, -1, + 210, 102, 210, -1, 210, 100, 210, -1, 210, 99, + 210, -1, 210, 98, 210, -1, 108, 212, -1, 213, + -1, 94, -1, 110, 210, 111, -1, 106, 210, -1, + 213, 103, 210, -1, 213, 104, 210, -1, 213, 105, + 210, -1, 213, 101, 210, -1, 213, 102, 210, -1, + 213, 100, 210, -1, 213, 99, 210, -1, 213, 98, + 210, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 178, 178, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 200, 211, + 214, 235, 240, 252, 272, 282, 286, 291, 298, 302, + 307, 311, 315, 319, 328, 340, 354, 352, 379, 377, + 406, 404, 436, 439, 445, 447, 453, 457, 462, 466, + 470, 483, 498, 513, 528, 532, 536, 540, 546, 548, + 560, 559, 572, 571, 584, 583, 596, 595, 611, 610, + 623, 622, 636, 647, 657, 656, 669, 668, 681, 680, + 693, 692, 705, 704, 719, 724, 730, 736, 743, 742, + 758, 757, 770, 769, 782, 781, 793, 792, 805, 804, + 817, 816, 829, 828, 841, 840, 854, 852, 873, 884, + 895, 907, 918, 921, 925, 930, 940, 943, 953, 952, + 959, 958, 965, 964, 972, 984, 997, 1006, 1017, 1020, + 1037, 1041, 1045, 1053, 1056, 1060, 1067, 1071, 1075, 1079, + 1083, 1087, 1096, 1107, 1110, 1127, 1131, 1135, 1139, 1143, + 1147, 1151, 1155, 1165, 1178, 1178, 1190, 1194, 1201, 1209, + 1217, 1225, 1234, 1243, 1252, 1262, 1261, 1266, 1268, 1273, + 1278, 1286, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, + 1330, 1341, 1348, 1358, 1364, 1365, 1384, 1409, 1420, 1425, + 1432, 1439, 1444, 1449, 1454, 1459, 1474, 1477, 1481, 1489, + 1492, 1500, 1503, 1511, 1514, 1523, 1528, 1537, 1541, 1551, + 1556, 1560, 1571, 1577, 1583, 1588, 1593, 1604, 1609, 1621, + 1626, 1638, 1643, 1648, 1653, 1658, 1663, 1668, 1678, 1682, + 1690, 1695, 1710, 1714, 1723, 1727, 1739, 1744, 1760, 1764, + 1776, 1780, 1802, 1806, 1810, 1814, 1821, 1825, 1835, 1838, + 1847, 1856, 1865, 1869, 1873, 1878, 1883, 1888, 1893, 1898, + 1903, 1908, 1913, 1918, 1929, 1938, 1949, 1953, 1957, 1962, + 1967, 1972, 1977, 1982, 1987, 1992, 1997 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "BEG", "END", "ACCELERATORS", "VIRTKEY", + "ASCII", "NOINVERT", "SHIFT", "CONTROL", "ALT", "BITMAP", "CURSOR", + "DIALOG", "DIALOGEX", "EXSTYLE", "CAPTION", "CLASS", "STYLE", + "AUTO3STATE", "AUTOCHECKBOX", "AUTORADIOBUTTON", "CHECKBOX", "COMBOBOX", + "CTEXT", "DEFPUSHBUTTON", "EDITTEXT", "GROUPBOX", "LISTBOX", "LTEXT", + "PUSHBOX", "PUSHBUTTON", "RADIOBUTTON", "RTEXT", "SCROLLBAR", "STATE3", + "USERBUTTON", "BEDIT", "HEDIT", "IEDIT", "FONT", "ICON", "ANICURSOR", + "ANIICON", "DLGINCLUDE", "DLGINIT", "FONTDIR", "HTML", "MANIFEST", + "PLUGPLAY", "VXD", "TOOLBAR", "BUTTON", "LANGUAGE", "CHARACTERISTICS", + "VERSIONK", "MENU", "MENUEX", "MENUITEM", "SEPARATOR", "POPUP", + "CHECKED", "GRAYED", "HELP", "INACTIVE", "MENUBARBREAK", "MENUBREAK", + "MESSAGETABLE", "RCDATA", "STRINGTABLE", "VERSIONINFO", "FILEVERSION", + "PRODUCTVERSION", "FILEFLAGSMASK", "FILEFLAGS", "FILEOS", "FILETYPE", + "FILESUBTYPE", "BLOCKSTRINGFILEINFO", "BLOCKVARFILEINFO", "VALUE", + "BLOCK", "MOVEABLE", "FIXED", "PURE", "IMPURE", "PRELOAD", "LOADONCALL", + "DISCARDABLE", "NOT", "QUOTEDUNISTRING", "QUOTEDSTRING", "STRING", + "NUMBER", "SIZEDUNISTRING", "SIZEDSTRING", "IGNORED_TOKEN", "'|'", "'^'", + "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "NEG", "','", "'='", + "'('", "')'", "$accept", "input", "accelerator", "acc_entries", + "acc_entry", "acc_event", "acc_options", "acc_option", "bitmap", + "cursor", "dialog", "@1", "@2", "@3", "exstyle", "styles", "controls", + "control", "@4", "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", + "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", + "@23", "@24", "control_params", "cresid", "optresidc", "resid", + "opt_control_data", "control_styleexpr", "@25", "icon_styleexpr", "@26", + "control_params_styleexpr", "@27", "font", "icon", "language", "menu", + "menuitems", "menuitem", "menuitem_flags", "menuitem_flag", "menuex", + "menuexitems", "menuexitem", "messagetable", "optrcdata_data", "@28", + "optrcdata_data_int", "rcdata_data", "stringtable", "@29", "string_data", + "rcdata_id", "user", "toolbar", "toolbar_data", "versioninfo", + "fixedverinfo", "verblocks", "verstringtables", "vervals", "vertrans", + "id", "resname", "resref", "suboptions", "memflags_move_discard", + "memflags_move", "memflag", "file_name", "res_unicode_string_concat", + "res_unicode_string", "res_unicode_sizedstring", + "res_unicode_sizedstring_concat", "sizedstring", "sizedunistring", + "styleexpr", "parennumber", "optcnumexpr", "cnumexpr", "numexpr", + "sizednumexpr", "cposnumexpr", "posnumexpr", "sizedposnumexpr", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 124, 94, + 38, 43, 45, 42, 47, 37, 126, 353, 44, 61, + 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 112, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 114, 115, + 115, 116, 116, 117, 117, 118, 118, 118, 119, 119, + 119, 119, 119, 119, 120, 121, 123, 122, 124, 122, + 125, 122, 126, 126, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, + 130, 129, 131, 129, 132, 129, 133, 129, 134, 129, + 135, 129, 129, 129, 136, 129, 137, 129, 138, 129, + 139, 129, 140, 129, 129, 129, 129, 129, 141, 129, + 142, 129, 143, 129, 144, 129, 145, 129, 146, 129, + 147, 129, 148, 129, 149, 129, 150, 129, 151, 151, + 151, 152, 153, 153, 154, 154, 155, 155, 157, 156, + 159, 158, 161, 160, 162, 163, 164, 165, 166, 166, + 167, 167, 167, 168, 168, 168, 169, 169, 169, 169, + 169, 169, 170, 171, 171, 172, 172, 172, 172, 172, + 172, 172, 172, 173, 175, 174, 176, 176, 177, 177, + 177, 177, 177, 177, 177, 179, 178, 180, 180, 180, + 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 182, 182, 183, 184, 184, 184, 185, 186, 186, + 186, 186, 186, 186, 186, 186, 187, 187, 187, 188, + 188, 189, 189, 190, 190, 191, 191, 192, 192, 193, + 193, 193, 194, 194, 194, 194, 194, 195, 195, 196, + 196, 197, 197, 197, 197, 197, 197, 197, 198, 198, + 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, + 204, 204, 205, 205, 205, 205, 206, 206, 207, 207, + 208, 209, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 211, 212, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, + 2, 2, 4, 1, 1, 1, 3, 2, 1, 1, + 1, 1, 1, 1, 4, 4, 0, 13, 0, 13, + 0, 14, 0, 3, 0, 3, 3, 3, 3, 3, + 5, 6, 7, 8, 3, 3, 4, 3, 0, 2, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 3, 11, 12, 0, 4, 0, 4, 0, 3, + 0, 4, 0, 4, 6, 8, 10, 11, 0, 4, + 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 3, 0, 4, 0, 15, 6, 8, + 9, 2, 0, 2, 1, 1, 0, 3, 0, 3, + 0, 3, 0, 3, 4, 4, 3, 6, 0, 2, + 4, 2, 6, 0, 3, 2, 1, 1, 1, 1, + 1, 1, 6, 0, 2, 2, 3, 5, 2, 5, + 6, 7, 9, 4, 0, 2, 0, 1, 1, 1, + 1, 3, 3, 3, 2, 0, 6, 0, 3, 4, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 6, 4, 8, 0, 3, 2, 6, 0, 6, + 6, 3, 3, 3, 3, 3, 0, 5, 7, 0, + 5, 0, 5, 0, 3, 1, 1, 1, 1, 2, + 1, 2, 0, 2, 3, 4, 3, 0, 2, 0, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 2, 1, 2, 3, 4, 1, 3, 0, 1, + 2, 1, 1, 3, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 1, 1, 3, 2, 3, + 3, 3, 3, 3, 3, 3, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 2, 0, 1, 0, 212, 232, 233, 208, 266, 17, + 0, 0, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 15, 14, 16, 0, 206, 207, 205, + 265, 252, 0, 0, 0, 0, 251, 0, 268, 0, + 212, 219, 217, 219, 219, 217, 217, 179, 180, 177, + 178, 172, 174, 175, 176, 212, 212, 212, 219, 173, + 188, 212, 171, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 254, 0, 0, 126, 0, 0, 0, 0, + 0, 0, 0, 0, 165, 0, 0, 0, 221, 222, + 223, 224, 225, 226, 227, 213, 267, 0, 0, 0, + 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 276, 275, 274, 272, 273, 269, 270, 271, 253, 250, + 263, 262, 261, 259, 260, 256, 257, 258, 167, 0, + 214, 216, 19, 228, 229, 220, 34, 218, 35, 0, + 0, 0, 124, 125, 0, 128, 143, 153, 196, 0, + 0, 0, 0, 0, 0, 0, 154, 182, 0, 215, + 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, + 191, 192, 193, 194, 195, 0, 156, 170, 166, 0, + 18, 23, 20, 0, 24, 43, 0, 0, 184, 127, + 0, 0, 129, 142, 0, 0, 144, 187, 0, 0, + 248, 249, 248, 181, 240, 238, 155, 157, 158, 159, + 160, 0, 236, 168, 235, 234, 0, 21, 0, 0, + 0, 131, 0, 230, 133, 148, 145, 0, 199, 0, + 248, 248, 164, 239, 241, 169, 237, 264, 0, 36, + 38, 183, 0, 186, 231, 133, 0, 146, 143, 0, + 0, 0, 189, 190, 161, 162, 163, 28, 29, 30, + 31, 32, 33, 22, 25, 44, 44, 40, 185, 130, + 128, 136, 137, 138, 139, 140, 141, 0, 135, 248, + 0, 143, 0, 197, 0, 203, 0, 27, 0, 0, + 44, 0, 134, 147, 149, 0, 143, 248, 201, 0, + 26, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 58, 0, 132, 150, 0, 0, 0, 198, 0, + 0, 48, 45, 46, 49, 207, 0, 246, 0, 47, + 242, 0, 0, 55, 57, 54, 0, 58, 151, 143, + 200, 0, 204, 37, 112, 112, 112, 112, 112, 70, + 112, 112, 78, 112, 90, 112, 112, 112, 112, 112, + 102, 112, 0, 112, 112, 112, 0, 59, 243, 0, + 0, 0, 56, 39, 0, 0, 0, 0, 0, 115, + 114, 60, 62, 64, 68, 0, 74, 76, 0, 80, + 0, 92, 94, 96, 98, 100, 0, 104, 210, 0, + 0, 66, 82, 88, 0, 247, 0, 244, 50, 41, + 152, 0, 0, 113, 0, 0, 0, 0, 71, 0, + 0, 0, 79, 0, 91, 0, 0, 0, 0, 0, + 103, 0, 211, 0, 209, 0, 0, 0, 0, 245, + 51, 202, 0, 0, 61, 63, 65, 69, 0, 75, + 77, 81, 93, 95, 97, 99, 101, 105, 0, 67, + 83, 89, 0, 52, 111, 118, 0, 0, 0, 116, + 53, 0, 0, 0, 0, 154, 84, 0, 119, 0, + 116, 0, 0, 116, 0, 122, 108, 248, 0, 117, + 120, 85, 248, 248, 0, 116, 249, 0, 0, 116, + 249, 116, 249, 123, 109, 116, 0, 121, 86, 116, + 72, 116, 110, 0, 87, 73, 106, 0, 248, 107 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 12, 160, 182, 183, 263, 264, 13, 14, + 15, 265, 266, 290, 140, 288, 320, 367, 414, 415, + 416, 435, 417, 385, 420, 421, 388, 423, 436, 437, + 390, 425, 426, 427, 428, 429, 396, 431, 517, 418, + 443, 377, 378, 476, 466, 471, 492, 498, 487, 494, + 16, 17, 18, 19, 165, 192, 246, 278, 20, 166, + 196, 21, 175, 176, 206, 207, 22, 128, 158, 61, + 23, 24, 220, 25, 108, 167, 250, 317, 299, 26, + 27, 399, 37, 99, 98, 95, 136, 379, 223, 212, + 213, 214, 215, 329, 330, 200, 201, 419, 36, 217, + 380, 30 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -446 +static const yytype_int16 yypact[] = +{ + -446, 75, -446, 317, -446, -446, -446, -446, -446, -446, + 317, 317, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, 463, -446, -446, -446, + 589, -446, 317, 317, 317, -93, 626, 209, -446, 437, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, 317, 317, 317, 317, 317, 317, 317, + 317, -446, -446, 526, 317, -446, 317, 317, 317, 317, + 317, 317, 317, 317, -446, 317, 317, 317, -446, -446, + -446, -446, -446, -446, -446, -446, -446, 267, 675, 675, + 275, 275, 675, 675, 491, 404, 441, 675, 168, 256, + 719, 379, 397, 213, 213, -446, -446, -446, -446, -446, + 719, 379, 397, 213, 213, -446, -446, -446, -446, -93, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -65, + 144, 144, -446, -446, -93, -446, -446, -446, -446, 317, + 317, 317, 317, 317, 317, 317, -446, -446, 18, -446, + 21, 317, -93, -93, 31, 140, 155, 126, -93, -93, + -446, -446, -446, -446, -446, 47, 177, -446, -446, 212, + -446, -446, -446, -34, -446, -446, -93, -93, -446, -446, + -36, -5, -446, -446, -25, -5, -446, -446, 119, 131, + -93, -446, -93, -446, -446, -446, -446, 54, 68, 84, + 626, 2, -446, 2, 68, 84, 144, 87, -93, -93, + 25, -446, 95, -446, -5, -446, 95, 62, -446, 102, + -93, -93, 177, -446, -446, 2, -446, -446, 552, -446, + -93, -446, 306, -446, -446, -446, 76, -93, -446, 8, + 6, -5, -446, -446, 68, 84, 626, -446, -446, -446, + -446, -446, -446, 167, -446, -446, -446, -446, -446, 271, + -446, -446, -446, -446, -446, -446, -446, 763, -446, -93, + 161, -446, 11, -446, 197, -5, 552, -446, 374, 548, + -446, 178, -446, -446, -446, 190, -446, -93, -446, 3, + -446, -446, 317, -5, 306, -47, 317, 317, 317, 317, + 306, -446, 565, -446, -446, 194, 201, -1, -446, -93, + 639, -446, -5, -446, -5, 143, -33, -446, 317, 110, + -446, 105, -93, -446, -446, -446, 676, -446, -446, -446, + -446, -5, -446, -446, 311, 311, 311, 311, 311, -446, + 311, 311, -446, 311, -446, 311, 311, 311, 311, 311, + -446, 311, 306, 311, 311, 311, 306, -446, -446, 104, + -42, -5, -446, -446, 713, 207, 99, 317, 113, -5, + -446, -446, -446, -446, -446, 317, -446, -446, 317, -446, + 317, -446, -446, -446, -446, -446, 317, -446, 115, 317, + 120, -446, -446, -446, 317, -446, -33, -446, 95, -446, + -446, -5, 152, -446, 317, 317, 317, 317, -446, -93, + 317, 317, -446, 317, -446, 317, 317, 317, 317, 317, + -446, 317, -446, 153, -446, 317, 317, 317, -93, -446, + -93, -5, 311, 159, -446, -446, -446, -446, -93, -446, + -446, -446, -446, -446, -446, -446, -446, -446, 317, -446, + -446, -446, -93, -93, -446, -446, -93, -93, 173, 15, + -446, -47, -93, -93, 317, -446, -446, -93, 110, -93, + 27, 180, 244, 29, -93, -446, -446, -93, 317, -446, + -446, -446, -93, -93, -47, 273, -93, 192, -47, 273, + -93, 273, -93, 110, -446, 273, 317, 110, -446, 273, + -446, 273, -446, 193, -446, -446, -446, -47, -75, -446 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -446, -446, -446, -446, -446, -446, -446, -236, -446, -446, + -446, -446, -446, -446, 184, -262, -273, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, 219, + -446, 442, -123, 274, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, 77, -446, 101, 88, -446, -239, + -446, -446, -109, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -24, + -245, 4, 169, 211, 270, 710, 175, -178, 5, -173, + 157, -156, -122, -445, -325, -161, -30, -3, 26, -446, + 20, -446 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -231 +static const yytype_int16 yytable[] = +{ + 35, 368, 62, 340, 289, 75, 28, 318, 202, 280, + 283, 281, 222, 224, 296, 74, 226, 227, 475, 177, + 208, 29, 178, 370, 221, 180, 478, 287, 312, 241, + 475, 28, 475, 74, 188, 225, 38, 39, 336, 230, + 236, 231, 295, 326, 161, 407, 29, 327, 406, 503, + 300, 203, 327, 507, 209, 5, 6, 315, 71, 72, + 73, 327, 236, 328, 374, 248, 5, 6, 328, 252, + 253, 119, 518, 285, 216, 2, 254, 328, 242, 270, + 341, 439, 129, 130, 131, 243, 5, 6, 284, 110, + 111, 112, 113, 114, 115, 116, 117, 204, 205, 159, + 375, 144, 120, 121, 122, 123, 124, 125, 126, 127, + 255, 74, 31, 181, 164, 8, 74, 398, 293, 74, + 32, 398, 228, 74, 33, 322, 324, 10, 34, 3, + 197, 11, 186, 187, 229, 485, 316, 490, 271, 272, + 273, 274, 275, 276, 189, 4, 168, 169, 170, 171, + 172, 173, 174, 5, 6, 179, 218, 219, 185, 193, + 162, 163, 232, 376, 233, 294, 5, 6, 7, 8, + 74, 148, 9, 257, 258, 259, 260, 261, 262, 234, + 184, 10, 313, 251, 277, 11, 5, 6, 239, 240, + 5, 6, 245, 408, 314, 238, 247, 249, 338, 190, + 298, 191, 210, 74, 339, 198, 199, 411, 370, 97, + 267, 410, 84, 371, 194, 405, 195, 279, 268, 282, + 194, 413, 195, 432, 104, 105, 106, 244, 434, 244, + 109, 244, 244, 441, -230, -230, 237, 190, 8, 191, + 149, 150, 151, 152, 153, 154, 155, 28, 489, 194, + 10, 195, 297, 194, 11, 195, 102, 103, 256, 156, + 442, 458, 29, 85, 86, 87, 194, 465, 195, 319, + 132, 31, 204, 205, 138, 286, 475, 142, 143, 32, + 323, 474, 147, 33, 157, 141, 335, 34, 488, 342, + 244, 139, 88, 89, 90, 91, 92, 93, 94, 321, + 506, 516, 372, 331, 332, 333, 334, 204, 205, 325, + 85, 86, 87, 100, 101, 28, 81, 82, 83, 464, + 211, 85, 86, 87, 29, 369, 495, 244, 107, 244, + 29, 499, 501, 271, 272, 273, 274, 275, 276, 88, + 89, 90, 91, 92, 93, 94, 269, 291, 133, 134, + 88, 89, 90, 91, 92, 93, 94, 519, 88, 89, + 90, 91, 92, 93, 94, 292, 482, 28, 235, 0, + 404, 28, 0, 0, 412, 0, 0, 301, 440, 277, + 0, 244, 400, 0, 244, 0, 400, 0, 0, 448, + 302, 303, 304, 305, 0, 0, 433, 5, 6, 7, + 8, 438, 5, 6, 0, 8, 0, 145, 462, 0, + 463, 31, 10, 244, 0, 306, 11, 10, 467, 32, + 0, 11, 0, 33, 0, 0, 0, 34, 307, 308, + 309, 310, 469, 470, 0, 0, 472, 473, 0, 477, + 0, 0, 479, 480, 146, 0, 244, 483, 0, 484, + 0, 0, 0, 0, 493, 468, 0, 496, 85, 86, + 87, 0, 500, 502, 0, 0, 505, 0, 40, 0, + 509, 481, 511, 0, 0, 41, 42, 43, 44, 78, + 79, 80, 81, 82, 83, 497, 0, 88, 89, 90, + 91, 92, 93, 94, 0, 85, 86, 87, 79, 80, + 81, 82, 83, 513, 45, 46, 47, 48, 49, 50, + 0, 51, 52, 53, 54, 55, 0, 0, 0, 0, + 56, 57, 0, 0, 88, 89, 90, 91, 92, 93, + 94, 58, 59, 0, 60, 76, 77, 78, 79, 80, + 81, 82, 83, 0, 0, 85, 86, 87, 96, 0, + 0, 311, 0, 0, 5, 6, 7, 8, 257, 258, + 259, 260, 261, 262, 302, 303, 304, 305, 337, 10, + 0, 0, 0, 11, 88, 89, 90, 91, 92, 93, + 94, 302, 303, 304, 305, 31, 0, 0, 0, 306, + 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, + 0, 34, 307, 308, 309, 310, 306, 422, 0, 424, + 0, 0, 0, 0, 0, 430, 0, 0, 0, 307, + 308, 309, 310, 0, 76, 77, 78, 79, 80, 81, + 82, 83, 0, 444, 445, 446, 447, 118, 0, 449, + 450, 0, 451, 343, 452, 453, 454, 455, 456, 344, + 457, 0, 0, 0, 459, 460, 461, 0, 0, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 373, 366, 0, 0, 0, 0, 344, 63, 64, 65, + 66, 67, 68, 69, 70, 0, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 409, 366, 0, + 0, 0, 0, 344, 76, 77, 78, 79, 80, 81, + 82, 83, 0, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 486, 366, 0, 491, 88, 89, + 90, 91, 92, 93, 94, 0, 0, 133, 134, 504, + 0, 0, 0, 508, 0, 510, 0, 0, 0, 512, + 0, 0, 0, 514, 0, 515, 0, 381, 382, 383, + 384, 0, 386, 387, 0, 389, 0, 391, 392, 393, + 394, 395, 0, 397, 0, 401, 402, 403, 135, 137, + 135, 135, 137, 137, 0, 0, 0, 135, 77, 78, + 79, 80, 81, 82, 83, 271, 272, 273, 274, 275, + 276 +}; + +static const yytype_int16 yycheck[] = +{ + 3, 326, 26, 4, 266, 35, 1, 4, 169, 248, + 4, 3, 190, 191, 3, 108, 194, 195, 3, 1, + 176, 1, 4, 98, 60, 4, 471, 263, 290, 4, + 3, 26, 3, 108, 3, 60, 10, 11, 311, 200, + 213, 202, 281, 90, 109, 370, 26, 94, 90, 494, + 286, 4, 94, 498, 176, 91, 92, 296, 32, 33, + 34, 94, 235, 110, 337, 3, 91, 92, 110, 230, + 231, 74, 517, 251, 108, 0, 232, 110, 53, 3, + 81, 406, 85, 86, 87, 60, 91, 92, 82, 63, + 64, 65, 66, 67, 68, 69, 70, 95, 96, 129, + 339, 104, 76, 77, 78, 79, 80, 81, 82, 83, + 232, 108, 94, 92, 144, 94, 108, 362, 279, 108, + 102, 366, 3, 108, 106, 303, 304, 106, 110, 54, + 4, 110, 162, 163, 3, 108, 297, 108, 62, 63, + 64, 65, 66, 67, 4, 70, 149, 150, 151, 152, + 153, 154, 155, 91, 92, 158, 186, 187, 161, 4, + 140, 141, 108, 341, 96, 4, 91, 92, 93, 94, + 108, 3, 97, 6, 7, 8, 9, 10, 11, 95, + 160, 106, 4, 81, 108, 110, 91, 92, 218, 219, + 91, 92, 222, 371, 4, 108, 226, 227, 4, 59, + 3, 61, 176, 108, 3, 79, 80, 108, 98, 40, + 240, 4, 3, 108, 59, 111, 61, 247, 242, 249, + 59, 108, 61, 108, 55, 56, 57, 222, 108, 224, + 61, 226, 227, 411, 91, 92, 216, 59, 94, 61, + 72, 73, 74, 75, 76, 77, 78, 242, 4, 59, + 106, 61, 282, 59, 110, 61, 45, 46, 232, 3, + 108, 108, 242, 54, 55, 56, 59, 108, 61, 299, + 3, 94, 95, 96, 99, 108, 3, 102, 103, 102, + 304, 108, 107, 106, 109, 101, 310, 110, 108, 319, + 285, 16, 83, 84, 85, 86, 87, 88, 89, 302, + 108, 108, 332, 306, 307, 308, 309, 95, 96, 304, + 54, 55, 56, 43, 44, 310, 103, 104, 105, 442, + 108, 54, 55, 56, 304, 328, 487, 322, 58, 324, + 310, 492, 493, 62, 63, 64, 65, 66, 67, 83, + 84, 85, 86, 87, 88, 89, 245, 270, 92, 93, + 83, 84, 85, 86, 87, 88, 89, 518, 83, 84, + 85, 86, 87, 88, 89, 277, 475, 362, 211, -1, + 366, 366, -1, -1, 377, -1, -1, 3, 408, 108, + -1, 376, 362, -1, 379, -1, 366, -1, -1, 419, + 16, 17, 18, 19, -1, -1, 399, 91, 92, 93, + 94, 404, 91, 92, -1, 94, -1, 3, 438, -1, + 440, 94, 106, 408, -1, 41, 110, 106, 448, 102, + -1, 110, -1, 106, -1, -1, -1, 110, 54, 55, + 56, 57, 462, 463, -1, -1, 466, 467, -1, 469, + -1, -1, 472, 473, 3, -1, 441, 477, -1, 479, + -1, -1, -1, -1, 484, 458, -1, 487, 54, 55, + 56, -1, 492, 493, -1, -1, 496, -1, 5, -1, + 500, 474, 502, -1, -1, 12, 13, 14, 15, 100, + 101, 102, 103, 104, 105, 488, -1, 83, 84, 85, + 86, 87, 88, 89, -1, 54, 55, 56, 101, 102, + 103, 104, 105, 506, 41, 42, 43, 44, 45, 46, + -1, 48, 49, 50, 51, 52, -1, -1, -1, -1, + 57, 58, -1, -1, 83, 84, 85, 86, 87, 88, + 89, 68, 69, -1, 71, 98, 99, 100, 101, 102, + 103, 104, 105, -1, -1, 54, 55, 56, 111, -1, + -1, 3, -1, -1, 91, 92, 93, 94, 6, 7, + 8, 9, 10, 11, 16, 17, 18, 19, 3, 106, + -1, -1, -1, 110, 83, 84, 85, 86, 87, 88, + 89, 16, 17, 18, 19, 94, -1, -1, -1, 41, + -1, -1, -1, 102, -1, -1, -1, 106, -1, -1, + -1, 110, 54, 55, 56, 57, 41, 388, -1, 390, + -1, -1, -1, -1, -1, 396, -1, -1, -1, 54, + 55, 56, 57, -1, 98, 99, 100, 101, 102, 103, + 104, 105, -1, 414, 415, 416, 417, 111, -1, 420, + 421, -1, 423, 4, 425, 426, 427, 428, 429, 10, + 431, -1, -1, -1, 435, 436, 437, -1, -1, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 4, 42, -1, -1, -1, -1, 10, 98, 99, 100, + 101, 102, 103, 104, 105, -1, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 4, 42, -1, + -1, -1, -1, 10, 98, 99, 100, 101, 102, 103, + 104, 105, -1, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 480, 42, -1, 483, 83, 84, + 85, 86, 87, 88, 89, -1, -1, 92, 93, 495, + -1, -1, -1, 499, -1, 501, -1, -1, -1, 505, + -1, -1, -1, 509, -1, 511, -1, 345, 346, 347, + 348, -1, 350, 351, -1, 353, -1, 355, 356, 357, + 358, 359, -1, 361, -1, 363, 364, 365, 98, 99, + 100, 101, 102, 103, -1, -1, -1, 107, 99, 100, + 101, 102, 103, 104, 105, 62, 63, 64, 65, 66, + 67 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 113, 0, 54, 70, 91, 92, 93, 94, 97, + 106, 110, 114, 120, 121, 122, 162, 163, 164, 165, + 170, 173, 178, 182, 183, 185, 191, 192, 200, 212, + 213, 94, 102, 106, 110, 209, 210, 194, 210, 210, + 5, 12, 13, 14, 15, 41, 42, 43, 44, 45, + 46, 48, 49, 50, 51, 52, 57, 58, 68, 69, + 71, 181, 191, 98, 99, 100, 101, 102, 103, 104, + 105, 210, 210, 210, 108, 208, 98, 99, 100, 101, + 102, 103, 104, 105, 3, 54, 55, 56, 83, 84, + 85, 86, 87, 88, 89, 197, 111, 194, 196, 195, + 196, 196, 195, 195, 194, 194, 194, 196, 186, 194, + 210, 210, 210, 210, 210, 210, 210, 210, 111, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 179, 209, + 209, 209, 3, 92, 93, 197, 198, 197, 198, 16, + 126, 126, 198, 198, 209, 3, 3, 198, 3, 72, + 73, 74, 75, 76, 77, 78, 3, 198, 180, 208, + 115, 109, 212, 212, 208, 166, 171, 187, 209, 209, + 209, 209, 209, 209, 209, 174, 175, 1, 4, 209, + 4, 92, 116, 117, 212, 209, 208, 208, 3, 4, + 59, 61, 167, 4, 59, 61, 172, 4, 79, 80, + 207, 208, 207, 4, 95, 96, 176, 177, 203, 204, + 210, 108, 201, 202, 203, 204, 108, 211, 208, 208, + 184, 60, 199, 200, 199, 60, 199, 199, 3, 3, + 207, 207, 108, 96, 95, 202, 201, 212, 108, 208, + 208, 4, 53, 60, 200, 208, 168, 208, 3, 208, + 188, 81, 207, 207, 203, 204, 210, 6, 7, 8, + 9, 10, 11, 118, 119, 123, 124, 208, 191, 168, + 3, 62, 63, 64, 65, 66, 67, 108, 169, 208, + 171, 3, 208, 4, 82, 199, 108, 119, 127, 127, + 125, 166, 169, 207, 4, 171, 3, 208, 3, 190, + 119, 3, 16, 17, 18, 19, 41, 54, 55, 56, + 57, 3, 127, 4, 4, 171, 207, 189, 4, 208, + 128, 209, 199, 191, 199, 200, 90, 94, 110, 205, + 206, 209, 209, 209, 209, 191, 128, 3, 4, 3, + 4, 81, 208, 4, 10, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 42, 129, 206, 209, + 98, 108, 208, 4, 128, 171, 199, 153, 154, 199, + 212, 153, 153, 153, 153, 135, 153, 153, 138, 153, + 142, 153, 153, 153, 153, 153, 148, 153, 192, 193, + 212, 153, 153, 153, 193, 111, 90, 206, 199, 4, + 4, 108, 209, 108, 130, 131, 132, 134, 151, 209, + 136, 137, 151, 139, 151, 143, 144, 145, 146, 147, + 151, 149, 108, 209, 108, 133, 140, 141, 209, 206, + 208, 199, 108, 152, 151, 151, 151, 151, 208, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 108, 151, + 151, 151, 208, 208, 154, 108, 156, 208, 209, 208, + 208, 157, 208, 208, 108, 3, 155, 208, 205, 208, + 208, 209, 174, 208, 208, 108, 155, 160, 108, 4, + 108, 155, 158, 208, 161, 207, 208, 209, 159, 207, + 208, 207, 208, 205, 155, 208, 108, 205, 155, 208, + 155, 208, 155, 209, 155, 155, 108, 150, 205, 207 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 18: +#line 201 "rcparse.y" + { + define_accelerator ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].pacc)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 19: +#line 211 "rcparse.y" + { + (yyval.pacc) = NULL; + } + break; + + case 20: +#line 215 "rcparse.y" + { + rc_accelerator *a; + + a = (rc_accelerator *) res_alloc (sizeof *a); + *a = (yyvsp[(2) - (2)].acc); + if ((yyvsp[(1) - (2)].pacc) == NULL) + (yyval.pacc) = a; + else + { + rc_accelerator **pp; + + for (pp = &(yyvsp[(1) - (2)].pacc)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = a; + (yyval.pacc) = (yyvsp[(1) - (2)].pacc); + } + } + break; + + case 21: +#line 236 "rcparse.y" + { + (yyval.acc) = (yyvsp[(1) - (2)].acc); + (yyval.acc).id = (yyvsp[(2) - (2)].il); + } + break; + + case 22: +#line 241 "rcparse.y" + { + (yyval.acc) = (yyvsp[(1) - (4)].acc); + (yyval.acc).id = (yyvsp[(2) - (4)].il); + (yyval.acc).flags |= (yyvsp[(4) - (4)].is); + if (((yyval.acc).flags & ACC_VIRTKEY) == 0 + && ((yyval.acc).flags & (ACC_SHIFT | ACC_CONTROL)) != 0) + rcparse_warning (_("inappropriate modifiers for non-VIRTKEY")); + } + break; + + case 23: +#line 253 "rcparse.y" + { + const char *s = (yyvsp[(1) - (1)].s); + char ch; + + (yyval.acc).next = NULL; + (yyval.acc).id = 0; + ch = *s; + if (ch != '^') + (yyval.acc).flags = 0; + else + { + (yyval.acc).flags = ACC_CONTROL | ACC_VIRTKEY; + ++s; + ch = TOUPPER (s[0]); + } + (yyval.acc).key = ch; + if (s[1] != '\0') + rcparse_warning (_("accelerator should only be one character")); + } + break; + + case 24: +#line 273 "rcparse.y" + { + (yyval.acc).next = NULL; + (yyval.acc).flags = 0; + (yyval.acc).id = 0; + (yyval.acc).key = (yyvsp[(1) - (1)].il); + } + break; + + case 25: +#line 283 "rcparse.y" + { + (yyval.is) = (yyvsp[(1) - (1)].is); + } + break; + + case 26: +#line 287 "rcparse.y" + { + (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is); + } + break; + + case 27: +#line 292 "rcparse.y" + { + (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is); + } + break; + + case 28: +#line 299 "rcparse.y" + { + (yyval.is) = ACC_VIRTKEY; + } + break; + + case 29: +#line 303 "rcparse.y" + { + /* This is just the absence of VIRTKEY. */ + (yyval.is) = 0; + } + break; + + case 30: +#line 308 "rcparse.y" + { + (yyval.is) = ACC_NOINVERT; + } + break; + + case 31: +#line 312 "rcparse.y" + { + (yyval.is) = ACC_SHIFT; + } + break; + + case 32: +#line 316 "rcparse.y" + { + (yyval.is) = ACC_CONTROL; + } + break; + + case 33: +#line 320 "rcparse.y" + { + (yyval.is) = ACC_ALT; + } + break; + + case 34: +#line 329 "rcparse.y" + { + define_bitmap ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 35: +#line 341 "rcparse.y" + { + define_cursor ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 36: +#line 354 "rcparse.y" + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[(5) - (8)].il); + dialog.y = (yyvsp[(6) - (8)].il); + dialog.width = (yyvsp[(7) - (8)].il); + dialog.height = (yyvsp[(8) - (8)].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[(4) - (8)].il); + dialog.menu.named = 1; + dialog.class.named = 1; + dialog.font = NULL; + dialog.ex = NULL; + dialog.controls = NULL; + sub_res_info = (yyvsp[(3) - (8)].res_info); + style = 0; + } + break; + + case 37: +#line 371 "rcparse.y" + { + define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 38: +#line 379 "rcparse.y" + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[(5) - (8)].il); + dialog.y = (yyvsp[(6) - (8)].il); + dialog.width = (yyvsp[(7) - (8)].il); + dialog.height = (yyvsp[(8) - (8)].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[(4) - (8)].il); + dialog.menu.named = 1; + dialog.class.named = 1; + dialog.font = NULL; + dialog.ex = ((rc_dialog_ex *) + res_alloc (sizeof (rc_dialog_ex))); + memset (dialog.ex, 0, sizeof (rc_dialog_ex)); + dialog.controls = NULL; + sub_res_info = (yyvsp[(3) - (8)].res_info); + style = 0; + } + break; + + case 39: +#line 398 "rcparse.y" + { + define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 40: +#line 406 "rcparse.y" + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[(5) - (9)].il); + dialog.y = (yyvsp[(6) - (9)].il); + dialog.width = (yyvsp[(7) - (9)].il); + dialog.height = (yyvsp[(8) - (9)].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[(4) - (9)].il); + dialog.menu.named = 1; + dialog.class.named = 1; + dialog.font = NULL; + dialog.ex = ((rc_dialog_ex *) + res_alloc (sizeof (rc_dialog_ex))); + memset (dialog.ex, 0, sizeof (rc_dialog_ex)); + dialog.ex->help = (yyvsp[(9) - (9)].il); + dialog.controls = NULL; + sub_res_info = (yyvsp[(3) - (9)].res_info); + style = 0; + } + break; + + case 41: +#line 426 "rcparse.y" + { + define_dialog ((yyvsp[(1) - (14)].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 42: +#line 436 "rcparse.y" + { + (yyval.il) = 0; + } + break; + + case 43: +#line 440 "rcparse.y" + { + (yyval.il) = (yyvsp[(3) - (3)].il); + } + break; + + case 45: +#line 448 "rcparse.y" + { + dialog.style |= WS_CAPTION; + style |= WS_CAPTION; + dialog.caption = (yyvsp[(3) - (3)].uni); + } + break; + + case 46: +#line 454 "rcparse.y" + { + dialog.class = (yyvsp[(3) - (3)].id); + } + break; + + case 47: +#line 459 "rcparse.y" + { + dialog.style = style; + } + break; + + case 48: +#line 463 "rcparse.y" + { + dialog.exstyle = (yyvsp[(3) - (3)].il); + } + break; + + case 49: +#line 467 "rcparse.y" + { + res_unistring_to_id (& dialog.class, (yyvsp[(3) - (3)].uni)); + } + break; + + case 50: +#line 471 "rcparse.y" + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[(3) - (5)].il); + dialog.font = (yyvsp[(5) - (5)].uni); + if (dialog.ex != NULL) + { + dialog.ex->weight = 0; + dialog.ex->italic = 0; + dialog.ex->charset = 1; + } + } + break; + + case 51: +#line 484 "rcparse.y" + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[(3) - (6)].il); + dialog.font = (yyvsp[(5) - (6)].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[(6) - (6)].il); + dialog.ex->italic = 0; + dialog.ex->charset = 1; + } + } + break; + + case 52: +#line 499 "rcparse.y" + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[(3) - (7)].il); + dialog.font = (yyvsp[(5) - (7)].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[(6) - (7)].il); + dialog.ex->italic = (yyvsp[(7) - (7)].il); + dialog.ex->charset = 1; + } + } + break; + + case 53: +#line 514 "rcparse.y" + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[(3) - (8)].il); + dialog.font = (yyvsp[(5) - (8)].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[(6) - (8)].il); + dialog.ex->italic = (yyvsp[(7) - (8)].il); + dialog.ex->charset = (yyvsp[(8) - (8)].il); + } + } + break; + + case 54: +#line 529 "rcparse.y" + { + dialog.menu = (yyvsp[(3) - (3)].id); + } + break; + + case 55: +#line 533 "rcparse.y" + { + sub_res_info.characteristics = (yyvsp[(3) - (3)].il); + } + break; + + case 56: +#line 537 "rcparse.y" + { + sub_res_info.language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT); + } + break; + + case 57: +#line 541 "rcparse.y" + { + sub_res_info.version = (yyvsp[(3) - (3)].il); + } + break; + + case 59: +#line 549 "rcparse.y" + { + rc_dialog_control **pp; + + for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[(2) - (2)].dialog_control); + } + break; + + case 60: +#line 560 "rcparse.y" + { + default_style = BS_AUTO3STATE | WS_TABSTOP; + base_style = BS_AUTO3STATE; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 61: +#line 568 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 62: +#line 572 "rcparse.y" + { + default_style = BS_AUTOCHECKBOX | WS_TABSTOP; + base_style = BS_AUTOCHECKBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 63: +#line 580 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 64: +#line 584 "rcparse.y" + { + default_style = BS_AUTORADIOBUTTON | WS_TABSTOP; + base_style = BS_AUTORADIOBUTTON; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 65: +#line 592 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 66: +#line 596 "rcparse.y" + { + default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_EDIT; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 67: +#line 604 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("BEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "BEDIT"); + } + break; + + case 68: +#line 611 "rcparse.y" + { + default_style = BS_CHECKBOX | WS_TABSTOP; + base_style = BS_CHECKBOX | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 69: +#line 619 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 70: +#line 623 "rcparse.y" + { + /* This is as per MSDN documentation. With some (???) + versions of MS rc.exe their is no default style. */ + default_style = CBS_SIMPLE | WS_TABSTOP; + base_style = 0; + class.named = 0; + class.u.id = CTL_COMBOBOX; + res_text_field = res_null_text; + } + break; + + case 71: +#line 633 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); + } + break; + + case 72: +#line 638 "rcparse.y" + { + (yyval.dialog_control) = define_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(6) - (11)].il), (yyvsp[(7) - (11)].il), (yyvsp[(8) - (11)].il), (yyvsp[(9) - (11)].il), (yyvsp[(4) - (11)].id), style, (yyvsp[(10) - (11)].il)); + if ((yyvsp[(11) - (11)].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[(11) - (11)].rcdata_item); + } + } + break; + + case 73: +#line 649 "rcparse.y" + { + (yyval.dialog_control) = define_control ((yyvsp[(2) - (12)].id), (yyvsp[(3) - (12)].il), (yyvsp[(6) - (12)].il), (yyvsp[(7) - (12)].il), (yyvsp[(8) - (12)].il), (yyvsp[(9) - (12)].il), (yyvsp[(4) - (12)].id), style, (yyvsp[(10) - (12)].il)); + if (dialog.ex == NULL) + rcparse_warning (_("help ID requires DIALOGEX")); + (yyval.dialog_control)->help = (yyvsp[(11) - (12)].il); + (yyval.dialog_control)->data = (yyvsp[(12) - (12)].rcdata_item); + } + break; + + case 74: +#line 657 "rcparse.y" + { + default_style = SS_CENTER | WS_GROUP; + base_style = SS_CENTER; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 75: +#line 665 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 76: +#line 669 "rcparse.y" + { + default_style = BS_DEFPUSHBUTTON | WS_TABSTOP; + base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 77: +#line 677 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 78: +#line 681 "rcparse.y" + { + default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_EDIT; + res_text_field = res_null_text; + } + break; + + case 79: +#line 689 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); + } + break; + + case 80: +#line 693 "rcparse.y" + { + default_style = BS_GROUPBOX; + base_style = BS_GROUPBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 81: +#line 701 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 82: +#line 705 "rcparse.y" + { + default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_EDIT; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 83: +#line 713 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("IEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "HEDIT"); + } + break; + + case 84: +#line 720 "rcparse.y" + { + (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (6)].id), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), 0, 0, 0, (yyvsp[(6) - (6)].rcdata_item), + dialog.ex); + } + break; + + case 85: +#line 726 "rcparse.y" + { + (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (8)].id), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), 0, 0, 0, (yyvsp[(8) - (8)].rcdata_item), + dialog.ex); + } + break; + + case 86: +#line 732 "rcparse.y" + { + (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (10)].id), (yyvsp[(3) - (10)].il), (yyvsp[(4) - (10)].il), (yyvsp[(5) - (10)].il), style, (yyvsp[(9) - (10)].il), 0, (yyvsp[(10) - (10)].rcdata_item), + dialog.ex); + } + break; + + case 87: +#line 738 "rcparse.y" + { + (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(4) - (11)].il), (yyvsp[(5) - (11)].il), style, (yyvsp[(9) - (11)].il), (yyvsp[(10) - (11)].il), (yyvsp[(11) - (11)].rcdata_item), + dialog.ex); + } + break; + + case 88: +#line 743 "rcparse.y" + { + default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_EDIT; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 89: +#line 751 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("IEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "IEDIT"); + } + break; + + case 90: +#line 758 "rcparse.y" + { + default_style = LBS_NOTIFY | WS_BORDER; + base_style = LBS_NOTIFY | WS_BORDER; + class.named = 0; + class.u.id = CTL_LISTBOX; + res_text_field = res_null_text; + } + break; + + case 91: +#line 766 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); + } + break; + + case 92: +#line 770 "rcparse.y" + { + default_style = SS_LEFT | WS_GROUP; + base_style = SS_LEFT; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 93: +#line 778 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 94: +#line 782 "rcparse.y" + { + default_style = BS_PUSHBOX | WS_TABSTOP; + base_style = BS_PUSHBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + } + break; + + case 95: +#line 789 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 96: +#line 793 "rcparse.y" + { + default_style = BS_PUSHBUTTON | WS_TABSTOP; + base_style = BS_PUSHBUTTON | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 97: +#line 801 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 98: +#line 805 "rcparse.y" + { + default_style = BS_RADIOBUTTON | WS_TABSTOP; + base_style = BS_RADIOBUTTON; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 99: +#line 813 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 100: +#line 817 "rcparse.y" + { + default_style = SS_RIGHT | WS_GROUP; + base_style = SS_RIGHT; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 101: +#line 825 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 102: +#line 829 "rcparse.y" + { + default_style = SBS_HORZ; + base_style = 0; + class.named = 0; + class.u.id = CTL_SCROLLBAR; + res_text_field = res_null_text; + } + break; + + case 103: +#line 837 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); + } + break; + + case 104: +#line 841 "rcparse.y" + { + default_style = BS_3STATE | WS_TABSTOP; + base_style = BS_3STATE; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[(2) - (2)].id); + } + break; + + case 105: +#line 849 "rcparse.y" + { + (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); + } + break; + + case 106: +#line 854 "rcparse.y" + { style = WS_CHILD | WS_VISIBLE; } + break; + + case 107: +#line 856 "rcparse.y" + { + rc_res_id cid; + cid.named = 0; + cid.u.id = CTL_BUTTON; + (yyval.dialog_control) = define_control ((yyvsp[(2) - (15)].id), (yyvsp[(3) - (15)].il), (yyvsp[(5) - (15)].il), (yyvsp[(7) - (15)].il), (yyvsp[(9) - (15)].il), (yyvsp[(11) - (15)].il), cid, + style, (yyvsp[(15) - (15)].il)); + } + break; + + case 108: +#line 874 "rcparse.y" + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (6)].il), (yyvsp[(2) - (6)].il), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), class, + default_style | WS_CHILD | WS_VISIBLE, 0); + if ((yyvsp[(6) - (6)].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[(6) - (6)].rcdata_item); + } + } + break; + + case 109: +#line 886 "rcparse.y" + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (8)].il), (yyvsp[(2) - (8)].il), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), class, style, (yyvsp[(7) - (8)].il)); + if ((yyvsp[(8) - (8)].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[(8) - (8)].rcdata_item); + } + } + break; + + case 110: +#line 897 "rcparse.y" + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (9)].il), (yyvsp[(2) - (9)].il), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), class, style, (yyvsp[(7) - (9)].il)); + if (dialog.ex == NULL) + rcparse_warning (_("help ID requires DIALOGEX")); + (yyval.dialog_control)->help = (yyvsp[(8) - (9)].il); + (yyval.dialog_control)->data = (yyvsp[(9) - (9)].rcdata_item); + } + break; + + case 111: +#line 908 "rcparse.y" + { + if ((yyvsp[(2) - (2)].id).named) + res_unistring_to_id (&(yyval.id), (yyvsp[(2) - (2)].id).u.n.name); + else + (yyval.id)=(yyvsp[(2) - (2)].id); + } + break; + + case 112: +#line 918 "rcparse.y" + { + res_string_to_id (&(yyval.id), ""); + } + break; + + case 113: +#line 921 "rcparse.y" + { (yyval.id)=(yyvsp[(1) - (2)].id); } + break; + + case 114: +#line 926 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[(1) - (1)].il); + } + break; + + case 115: +#line 931 "rcparse.y" + { + (yyval.id).named = 1; + (yyval.id).u.n.name = (yyvsp[(1) - (1)].uni); + (yyval.id).u.n.length = unichar_len ((yyvsp[(1) - (1)].uni)); + } + break; + + case 116: +#line 940 "rcparse.y" + { + (yyval.rcdata_item) = NULL; + } + break; + + case 117: +#line 944 "rcparse.y" + { + (yyval.rcdata_item) = (yyvsp[(2) - (3)].rcdata).first; + } + break; + + case 118: +#line 953 "rcparse.y" + { style = WS_CHILD | WS_VISIBLE; } + break; + + case 120: +#line 959 "rcparse.y" + { style = SS_ICON | WS_CHILD | WS_VISIBLE; } + break; + + case 122: +#line 965 "rcparse.y" + { style = base_style | WS_CHILD | WS_VISIBLE; } + break; + + case 124: +#line 973 "rcparse.y" + { + define_font ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 125: +#line 985 "rcparse.y" + { + define_icon ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 126: +#line 998 "rcparse.y" + { + language = (yyvsp[(2) - (3)].il) | ((yyvsp[(3) - (3)].il) << SUBLANG_SHIFT); + } + break; + + case 127: +#line 1007 "rcparse.y" + { + define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 128: +#line 1017 "rcparse.y" + { + (yyval.menuitem) = NULL; + } + break; + + case 129: +#line 1021 "rcparse.y" + { + if ((yyvsp[(1) - (2)].menuitem) == NULL) + (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem); + else + { + rc_menuitem **pp; + + for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[(2) - (2)].menuitem); + (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem); + } + } + break; + + case 130: +#line 1038 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (4)].uni), (yyvsp[(3) - (4)].il), (yyvsp[(4) - (4)].is), 0, 0, NULL); + } + break; + + case 131: +#line 1042 "rcparse.y" + { + (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); + } + break; + + case 132: +#line 1046 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), 0, (yyvsp[(3) - (6)].is), 0, 0, (yyvsp[(5) - (6)].menuitem)); + } + break; + + case 133: +#line 1053 "rcparse.y" + { + (yyval.is) = 0; + } + break; + + case 134: +#line 1057 "rcparse.y" + { + (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is); + } + break; + + case 135: +#line 1061 "rcparse.y" + { + (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is); + } + break; + + case 136: +#line 1068 "rcparse.y" + { + (yyval.is) = MENUITEM_CHECKED; + } + break; + + case 137: +#line 1072 "rcparse.y" + { + (yyval.is) = MENUITEM_GRAYED; + } + break; + + case 138: +#line 1076 "rcparse.y" + { + (yyval.is) = MENUITEM_HELP; + } + break; + + case 139: +#line 1080 "rcparse.y" + { + (yyval.is) = MENUITEM_INACTIVE; + } + break; + + case 140: +#line 1084 "rcparse.y" + { + (yyval.is) = MENUITEM_MENUBARBREAK; + } + break; + + case 141: +#line 1088 "rcparse.y" + { + (yyval.is) = MENUITEM_MENUBREAK; + } + break; + + case 142: +#line 1097 "rcparse.y" + { + define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 143: +#line 1107 "rcparse.y" + { + (yyval.menuitem) = NULL; + } + break; + + case 144: +#line 1111 "rcparse.y" + { + if ((yyvsp[(1) - (2)].menuitem) == NULL) + (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem); + else + { + rc_menuitem **pp; + + for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[(2) - (2)].menuitem); + (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem); + } + } + break; + + case 145: +#line 1128 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (2)].uni), 0, 0, 0, 0, NULL); + } + break; + + case 146: +#line 1132 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (3)].uni), (yyvsp[(3) - (3)].il), 0, 0, 0, NULL); + } + break; + + case 147: +#line 1136 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), (yyvsp[(3) - (5)].il), (yyvsp[(4) - (5)].il), (yyvsp[(5) - (5)].il), 0, NULL); + } + break; + + case 148: +#line 1140 "rcparse.y" + { + (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); + } + break; + + case 149: +#line 1144 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), 0, 0, 0, 0, (yyvsp[(4) - (5)].menuitem)); + } + break; + + case 150: +#line 1148 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), (yyvsp[(3) - (6)].il), 0, 0, 0, (yyvsp[(5) - (6)].menuitem)); + } + break; + + case 151: +#line 1152 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (7)].uni), (yyvsp[(3) - (7)].il), (yyvsp[(4) - (7)].il), 0, 0, (yyvsp[(6) - (7)].menuitem)); + } + break; + + case 152: +#line 1157 "rcparse.y" + { + (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (9)].uni), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), (yyvsp[(6) - (9)].il), (yyvsp[(8) - (9)].menuitem)); + } + break; + + case 153: +#line 1166 "rcparse.y" + { + define_messagetable ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 154: +#line 1178 "rcparse.y" + { + rcparse_rcdata (); + } + break; + + case 155: +#line 1182 "rcparse.y" + { + rcparse_normal (); + (yyval.rcdata) = (yyvsp[(2) - (2)].rcdata); + } + break; + + case 156: +#line 1190 "rcparse.y" + { + (yyval.rcdata).first = NULL; + (yyval.rcdata).last = NULL; + } + break; + + case 157: +#line 1195 "rcparse.y" + { + (yyval.rcdata) = (yyvsp[(1) - (1)].rcdata); + } + break; + + case 158: +#line 1202 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_string ((yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } + break; + + case 159: +#line 1210 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_unistring ((yyvsp[(1) - (1)].suni).s, (yyvsp[(1) - (1)].suni).length); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } + break; + + case 160: +#line 1218 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_number ((yyvsp[(1) - (1)].i).val, (yyvsp[(1) - (1)].i).dword); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } + break; + + case 161: +#line 1226 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_string ((yyvsp[(3) - (3)].ss).s, (yyvsp[(3) - (3)].ss).length); + (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; + (yyvsp[(1) - (3)].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } + break; + + case 162: +#line 1235 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_unistring ((yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length); + (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; + (yyvsp[(1) - (3)].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } + break; + + case 163: +#line 1244 "rcparse.y" + { + rc_rcdata_item *ri; + + ri = define_rcdata_number ((yyvsp[(3) - (3)].i).val, (yyvsp[(3) - (3)].i).dword); + (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; + (yyvsp[(1) - (3)].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } + break; + + case 164: +#line 1253 "rcparse.y" + { + (yyval.rcdata)=(yyvsp[(1) - (2)].rcdata); + } + break; + + case 165: +#line 1262 "rcparse.y" + { sub_res_info = (yyvsp[(2) - (3)].res_info); rcparse_rcdata (); } + break; + + case 166: +#line 1263 "rcparse.y" + { rcparse_normal (); } + break; + + case 168: +#line 1269 "rcparse.y" + { + define_stringtable (&sub_res_info, (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length); + rcparse_discard_strings (); + } + break; + + case 169: +#line 1274 "rcparse.y" + { + define_stringtable (&sub_res_info, (yyvsp[(2) - (4)].il), (yyvsp[(4) - (4)].suni).s, (yyvsp[(4) - (4)].suni).length); + rcparse_discard_strings (); + } + break; + + case 170: +#line 1279 "rcparse.y" + { + rcparse_warning (_("invalid stringtable resource.")); + abort (); + } + break; + + case 171: +#line 1287 "rcparse.y" + { + (yyval.id)=(yyvsp[(1) - (1)].id); + } + break; + + case 172: +#line 1291 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = 23; + } + break; + + case 173: +#line 1296 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_RCDATA; + } + break; + + case 174: +#line 1301 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_MANIFEST; + } + break; + + case 175: +#line 1306 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_PLUGPLAY; + } + break; + + case 176: +#line 1311 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_VXD; + } + break; + + case 177: +#line 1316 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_DLGINCLUDE; + } + break; + + case 178: +#line 1321 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_DLGINIT; + } + break; + + case 179: +#line 1326 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_ANICURSOR; + } + break; + + case 180: +#line 1331 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_ANIICON; + } + break; + + case 181: +#line 1342 "rcparse.y" + { + define_user_data ((yyvsp[(1) - (6)].id), (yyvsp[(2) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].rcdata).first); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 182: +#line 1349 "rcparse.y" + { + define_user_file ((yyvsp[(1) - (4)].id), (yyvsp[(2) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 183: +#line 1359 "rcparse.y" + { + define_toolbar ((yyvsp[(1) - (8)].id), &(yyvsp[(3) - (8)].res_info), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), (yyvsp[(7) - (8)].toobar_item)); + } + break; + + case 184: +#line 1364 "rcparse.y" + { (yyval.toobar_item)= NULL; } + break; + + case 185: +#line 1366 "rcparse.y" + { + rc_toolbar_item *c,*n; + c = (yyvsp[(1) - (3)].toobar_item); + n= (rc_toolbar_item *) + res_alloc (sizeof (rc_toolbar_item)); + if (c != NULL) + while (c->next != NULL) + c = c->next; + n->prev = c; + n->next = NULL; + if (c != NULL) + c->next = n; + n->id = (yyvsp[(3) - (3)].id); + if ((yyvsp[(1) - (3)].toobar_item) == NULL) + (yyval.toobar_item) = n; + else + (yyval.toobar_item) = (yyvsp[(1) - (3)].toobar_item); + } + break; + + case 186: +#line 1385 "rcparse.y" + { + rc_toolbar_item *c,*n; + c = (yyvsp[(1) - (2)].toobar_item); + n= (rc_toolbar_item *) + res_alloc (sizeof (rc_toolbar_item)); + if (c != NULL) + while (c->next != NULL) + c = c->next; + n->prev = c; + n->next = NULL; + if (c != NULL) + c->next = n; + n->id.named = 0; + n->id.u.id = 0; + if ((yyvsp[(1) - (2)].toobar_item) == NULL) + (yyval.toobar_item) = n; + else + (yyval.toobar_item) = (yyvsp[(1) - (2)].toobar_item); + } + break; + + case 187: +#line 1410 "rcparse.y" + { + define_versioninfo ((yyvsp[(1) - (6)].id), language, (yyvsp[(3) - (6)].fixver), (yyvsp[(5) - (6)].verinfo)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } + break; + + case 188: +#line 1420 "rcparse.y" + { + (yyval.fixver) = ((rc_fixed_versioninfo *) + res_alloc (sizeof (rc_fixed_versioninfo))); + memset ((yyval.fixver), 0, sizeof (rc_fixed_versioninfo)); + } + break; + + case 189: +#line 1427 "rcparse.y" + { + (yyvsp[(1) - (6)].fixver)->file_version_ms = ((yyvsp[(3) - (6)].il) << 16) | ((yyvsp[(4) - (6)].il) & 0xffff); + (yyvsp[(1) - (6)].fixver)->file_version_ls = ((yyvsp[(5) - (6)].il) << 16) | ((yyvsp[(6) - (6)].il) & 0xffff); + (yyval.fixver) = (yyvsp[(1) - (6)].fixver); + } + break; + + case 190: +#line 1434 "rcparse.y" + { + (yyvsp[(1) - (6)].fixver)->product_version_ms = ((yyvsp[(3) - (6)].il) << 16) | ((yyvsp[(4) - (6)].il) & 0xffff); + (yyvsp[(1) - (6)].fixver)->product_version_ls = ((yyvsp[(5) - (6)].il) << 16) | ((yyvsp[(6) - (6)].il) & 0xffff); + (yyval.fixver) = (yyvsp[(1) - (6)].fixver); + } + break; + + case 191: +#line 1440 "rcparse.y" + { + (yyvsp[(1) - (3)].fixver)->file_flags_mask = (yyvsp[(3) - (3)].il); + (yyval.fixver) = (yyvsp[(1) - (3)].fixver); + } + break; + + case 192: +#line 1445 "rcparse.y" + { + (yyvsp[(1) - (3)].fixver)->file_flags = (yyvsp[(3) - (3)].il); + (yyval.fixver) = (yyvsp[(1) - (3)].fixver); + } + break; + + case 193: +#line 1450 "rcparse.y" + { + (yyvsp[(1) - (3)].fixver)->file_os = (yyvsp[(3) - (3)].il); + (yyval.fixver) = (yyvsp[(1) - (3)].fixver); + } + break; + + case 194: +#line 1455 "rcparse.y" + { + (yyvsp[(1) - (3)].fixver)->file_type = (yyvsp[(3) - (3)].il); + (yyval.fixver) = (yyvsp[(1) - (3)].fixver); + } + break; + + case 195: +#line 1460 "rcparse.y" + { + (yyvsp[(1) - (3)].fixver)->file_subtype = (yyvsp[(3) - (3)].il); + (yyval.fixver) = (yyvsp[(1) - (3)].fixver); + } + break; + + case 196: +#line 1474 "rcparse.y" + { + (yyval.verinfo) = NULL; + } + break; + + case 197: +#line 1478 "rcparse.y" + { + (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[(1) - (5)].verinfo), (yyvsp[(4) - (5)].verstringtable)); + } + break; + + case 198: +#line 1482 "rcparse.y" + { + (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[(1) - (7)].verinfo), (yyvsp[(5) - (7)].uni), (yyvsp[(6) - (7)].vervar)); + } + break; + + case 199: +#line 1489 "rcparse.y" + { + (yyval.verstringtable) = NULL; + } + break; + + case 200: +#line 1493 "rcparse.y" + { + (yyval.verstringtable) = append_ver_stringtable ((yyvsp[(1) - (5)].verstringtable), (yyvsp[(2) - (5)].s), (yyvsp[(4) - (5)].verstring)); + } + break; + + case 201: +#line 1500 "rcparse.y" + { + (yyval.verstring) = NULL; + } + break; + + case 202: +#line 1504 "rcparse.y" + { + (yyval.verstring) = append_verval ((yyvsp[(1) - (5)].verstring), (yyvsp[(3) - (5)].uni), (yyvsp[(5) - (5)].uni)); + } + break; + + case 203: +#line 1511 "rcparse.y" + { + (yyval.vervar) = NULL; + } + break; + + case 204: +#line 1515 "rcparse.y" + { + (yyval.vervar) = append_vertrans ((yyvsp[(1) - (3)].vervar), (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].il)); + } + break; + + case 205: +#line 1524 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[(1) - (1)].il); + } + break; + + case 206: +#line 1529 "rcparse.y" + { + res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni)); + } + break; + + case 207: +#line 1538 "rcparse.y" + { + (yyval.uni) = (yyvsp[(1) - (1)].uni); + } + break; + + case 208: +#line 1542 "rcparse.y" + { + unichar *h = NULL; + unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s)); + (yyval.uni) = h; + } + break; + + case 209: +#line 1552 "rcparse.y" + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[(1) - (2)].il); + } + break; + + case 210: +#line 1557 "rcparse.y" + { + res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni)); + } + break; + + case 211: +#line 1561 "rcparse.y" + { + res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (2)].uni)); + } + break; + + case 212: +#line 1571 "rcparse.y" + { + memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); + (yyval.res_info).language = language; + /* FIXME: Is this the right default? */ + (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE; + } + break; + + case 213: +#line 1578 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (2)].res_info); + (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; + } + break; + + case 214: +#line 1584 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (3)].res_info); + (yyval.res_info).characteristics = (yyvsp[(3) - (3)].il); + } + break; + + case 215: +#line 1589 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (4)].res_info); + (yyval.res_info).language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT); + } + break; + + case 216: +#line 1594 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (3)].res_info); + (yyval.res_info).version = (yyvsp[(3) - (3)].il); + } + break; + + case 217: +#line 1604 "rcparse.y" + { + memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); + (yyval.res_info).language = language; + (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE; + } + break; + + case 218: +#line 1610 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (2)].res_info); + (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; + } + break; + + case 219: +#line 1621 "rcparse.y" + { + memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); + (yyval.res_info).language = language; + (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE; + } + break; + + case 220: +#line 1627 "rcparse.y" + { + (yyval.res_info) = (yyvsp[(1) - (2)].res_info); + (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; + } + break; + + case 221: +#line 1639 "rcparse.y" + { + (yyval.memflags).on = MEMFLAG_MOVEABLE; + (yyval.memflags).off = 0; + } + break; + + case 222: +#line 1644 "rcparse.y" + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_MOVEABLE; + } + break; + + case 223: +#line 1649 "rcparse.y" + { + (yyval.memflags).on = MEMFLAG_PURE; + (yyval.memflags).off = 0; + } + break; + + case 224: +#line 1654 "rcparse.y" + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_PURE; + } + break; + + case 225: +#line 1659 "rcparse.y" + { + (yyval.memflags).on = MEMFLAG_PRELOAD; + (yyval.memflags).off = 0; + } + break; + + case 226: +#line 1664 "rcparse.y" + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_PRELOAD; + } + break; + + case 227: +#line 1669 "rcparse.y" + { + (yyval.memflags).on = MEMFLAG_DISCARDABLE; + (yyval.memflags).off = 0; + } + break; + + case 228: +#line 1679 "rcparse.y" + { + (yyval.s) = (yyvsp[(1) - (1)].s); + } + break; + + case 229: +#line 1683 "rcparse.y" + { + (yyval.s) = (yyvsp[(1) - (1)].s); + } + break; + + case 230: +#line 1691 "rcparse.y" + { + (yyval.uni) = (yyvsp[(1) - (1)].uni); + } + break; + + case 231: +#line 1696 "rcparse.y" + { + rc_uint_type l1 = unichar_len ((yyvsp[(1) - (2)].uni)); + rc_uint_type l2 = unichar_len ((yyvsp[(2) - (2)].uni)); + unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1 != 0) + memcpy (h, (yyvsp[(1) - (2)].uni), l1 * sizeof (unichar)); + if (l2 != 0) + memcpy (h + l1, (yyvsp[(2) - (2)].uni), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.uni) = h; + } + break; + + case 232: +#line 1711 "rcparse.y" + { + (yyval.uni) = unichar_dup ((yyvsp[(1) - (1)].uni)); + } + break; + + case 233: +#line 1715 "rcparse.y" + { + unichar *h = NULL; + unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s)); + (yyval.uni) = h; + } + break; + + case 234: +#line 1724 "rcparse.y" + { + (yyval.suni) = (yyvsp[(1) - (1)].suni); + } + break; + + case 235: +#line 1728 "rcparse.y" + { + unichar *h = NULL; + rc_uint_type l = 0; + unicode_from_ascii_len (&l, &h, (yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length); + (yyval.suni).s = h; + (yyval.suni).length = l; + } + break; + + case 236: +#line 1740 "rcparse.y" + { + (yyval.suni) = (yyvsp[(1) - (1)].suni); + } + break; + + case 237: +#line 1745 "rcparse.y" + { + rc_uint_type l1 = (yyvsp[(1) - (2)].suni).length; + rc_uint_type l2 = (yyvsp[(2) - (2)].suni).length; + unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1 != 0) + memcpy (h, (yyvsp[(1) - (2)].suni).s, l1 * sizeof (unichar)); + if (l2 != 0) + memcpy (h + l1, (yyvsp[(2) - (2)].suni).s, l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.suni).length = l1 + l2; + (yyval.suni).s = h; + } + break; + + case 238: +#line 1761 "rcparse.y" + { + (yyval.ss) = (yyvsp[(1) - (1)].ss); + } + break; + + case 239: +#line 1765 "rcparse.y" + { + rc_uint_type l = (yyvsp[(1) - (2)].ss).length + (yyvsp[(2) - (2)].ss).length; + char *h = (char *) res_alloc (l); + memcpy (h, (yyvsp[(1) - (2)].ss).s, (yyvsp[(1) - (2)].ss).length); + memcpy (h + (yyvsp[(1) - (2)].ss).length, (yyvsp[(2) - (2)].ss).s, (yyvsp[(2) - (2)].ss).length); + (yyval.ss).s = h; + (yyval.ss).length = l; + } + break; + + case 240: +#line 1777 "rcparse.y" + { + (yyval.suni) = (yyvsp[(1) - (1)].suni); + } + break; + + case 241: +#line 1781 "rcparse.y" + { + rc_uint_type l = (yyvsp[(1) - (2)].suni).length + (yyvsp[(2) - (2)].suni).length; + unichar *h = (unichar *) res_alloc (l * sizeof (unichar)); + memcpy (h, (yyvsp[(1) - (2)].suni).s, (yyvsp[(1) - (2)].suni).length * sizeof (unichar)); + memcpy (h + (yyvsp[(1) - (2)].suni).length, (yyvsp[(2) - (2)].suni).s, (yyvsp[(2) - (2)].suni).length * sizeof (unichar)); + (yyval.suni).s = h; + (yyval.suni).length = l; + } + break; + + case 242: +#line 1803 "rcparse.y" + { + style |= (yyvsp[(1) - (1)].il); + } + break; + + case 243: +#line 1807 "rcparse.y" + { + style &=~ (yyvsp[(2) - (2)].il); + } + break; + + case 244: +#line 1811 "rcparse.y" + { + style |= (yyvsp[(3) - (3)].il); + } + break; + + case 245: +#line 1815 "rcparse.y" + { + style &=~ (yyvsp[(4) - (4)].il); + } + break; + + case 246: +#line 1822 "rcparse.y" + { + (yyval.il) = (yyvsp[(1) - (1)].i).val; + } + break; + + case 247: +#line 1826 "rcparse.y" + { + (yyval.il) = (yyvsp[(2) - (3)].il); + } + break; + + case 248: +#line 1835 "rcparse.y" + { + (yyval.il) = 0; + } + break; + + case 249: +#line 1839 "rcparse.y" + { + (yyval.il) = (yyvsp[(1) - (1)].il); + } + break; + + case 250: +#line 1848 "rcparse.y" + { + (yyval.il) = (yyvsp[(2) - (2)].il); + } + break; + + case 251: +#line 1857 "rcparse.y" + { + (yyval.il) = (yyvsp[(1) - (1)].i).val; + } + break; + + case 252: +#line 1866 "rcparse.y" + { + (yyval.i) = (yyvsp[(1) - (1)].i); + } + break; + + case 253: +#line 1870 "rcparse.y" + { + (yyval.i) = (yyvsp[(2) - (3)].i); + } + break; + + case 254: +#line 1874 "rcparse.y" + { + (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val; + (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; + } + break; + + case 255: +#line 1879 "rcparse.y" + { + (yyval.i).val = - (yyvsp[(2) - (2)].i).val; + (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; + } + break; + + case 256: +#line 1884 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 257: +#line 1889 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 258: +#line 1894 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 259: +#line 1899 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 260: +#line 1904 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 261: +#line 1909 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 262: +#line 1914 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 263: +#line 1919 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 264: +#line 1930 "rcparse.y" + { + (yyval.il) = (yyvsp[(2) - (2)].il); + } + break; + + case 265: +#line 1939 "rcparse.y" + { + (yyval.il) = (yyvsp[(1) - (1)].i).val; + } + break; + + case 266: +#line 1950 "rcparse.y" + { + (yyval.i) = (yyvsp[(1) - (1)].i); + } + break; + + case 267: +#line 1954 "rcparse.y" + { + (yyval.i) = (yyvsp[(2) - (3)].i); + } + break; + + case 268: +#line 1958 "rcparse.y" + { + (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val; + (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; + } + break; + + case 269: +#line 1963 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 270: +#line 1968 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 271: +#line 1973 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 272: +#line 1978 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 273: +#line 1983 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 274: +#line 1988 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 275: +#line 1993 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + case 276: +#line 1998 "rcparse.y" + { + (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val; + (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; + } + break; + + +/* Line 1267 of yacc.c. */ +#line 4439 "rcparse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 2004 "rcparse.y" + + +/* Set the language from the command line. */ + +void +rcparse_set_language (int lang) +{ + language = lang; +} + diff --git a/binutils/rcparse.h b/binutils/rcparse.h new file mode 100644 index 00000000000..67a05eae4f8 --- /dev/null +++ b/binutils/rcparse.h @@ -0,0 +1,298 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + BEG = 258, + END = 259, + ACCELERATORS = 260, + VIRTKEY = 261, + ASCII = 262, + NOINVERT = 263, + SHIFT = 264, + CONTROL = 265, + ALT = 266, + BITMAP = 267, + CURSOR = 268, + DIALOG = 269, + DIALOGEX = 270, + EXSTYLE = 271, + CAPTION = 272, + CLASS = 273, + STYLE = 274, + AUTO3STATE = 275, + AUTOCHECKBOX = 276, + AUTORADIOBUTTON = 277, + CHECKBOX = 278, + COMBOBOX = 279, + CTEXT = 280, + DEFPUSHBUTTON = 281, + EDITTEXT = 282, + GROUPBOX = 283, + LISTBOX = 284, + LTEXT = 285, + PUSHBOX = 286, + PUSHBUTTON = 287, + RADIOBUTTON = 288, + RTEXT = 289, + SCROLLBAR = 290, + STATE3 = 291, + USERBUTTON = 292, + BEDIT = 293, + HEDIT = 294, + IEDIT = 295, + FONT = 296, + ICON = 297, + ANICURSOR = 298, + ANIICON = 299, + DLGINCLUDE = 300, + DLGINIT = 301, + FONTDIR = 302, + HTML = 303, + MANIFEST = 304, + PLUGPLAY = 305, + VXD = 306, + TOOLBAR = 307, + BUTTON = 308, + LANGUAGE = 309, + CHARACTERISTICS = 310, + VERSIONK = 311, + MENU = 312, + MENUEX = 313, + MENUITEM = 314, + SEPARATOR = 315, + POPUP = 316, + CHECKED = 317, + GRAYED = 318, + HELP = 319, + INACTIVE = 320, + MENUBARBREAK = 321, + MENUBREAK = 322, + MESSAGETABLE = 323, + RCDATA = 324, + STRINGTABLE = 325, + VERSIONINFO = 326, + FILEVERSION = 327, + PRODUCTVERSION = 328, + FILEFLAGSMASK = 329, + FILEFLAGS = 330, + FILEOS = 331, + FILETYPE = 332, + FILESUBTYPE = 333, + BLOCKSTRINGFILEINFO = 334, + BLOCKVARFILEINFO = 335, + VALUE = 336, + BLOCK = 337, + MOVEABLE = 338, + FIXED = 339, + PURE = 340, + IMPURE = 341, + PRELOAD = 342, + LOADONCALL = 343, + DISCARDABLE = 344, + NOT = 345, + QUOTEDUNISTRING = 346, + QUOTEDSTRING = 347, + STRING = 348, + NUMBER = 349, + SIZEDUNISTRING = 350, + SIZEDSTRING = 351, + IGNORED_TOKEN = 352, + NEG = 353 + }; +#endif +/* Tokens. */ +#define BEG 258 +#define END 259 +#define ACCELERATORS 260 +#define VIRTKEY 261 +#define ASCII 262 +#define NOINVERT 263 +#define SHIFT 264 +#define CONTROL 265 +#define ALT 266 +#define BITMAP 267 +#define CURSOR 268 +#define DIALOG 269 +#define DIALOGEX 270 +#define EXSTYLE 271 +#define CAPTION 272 +#define CLASS 273 +#define STYLE 274 +#define AUTO3STATE 275 +#define AUTOCHECKBOX 276 +#define AUTORADIOBUTTON 277 +#define CHECKBOX 278 +#define COMBOBOX 279 +#define CTEXT 280 +#define DEFPUSHBUTTON 281 +#define EDITTEXT 282 +#define GROUPBOX 283 +#define LISTBOX 284 +#define LTEXT 285 +#define PUSHBOX 286 +#define PUSHBUTTON 287 +#define RADIOBUTTON 288 +#define RTEXT 289 +#define SCROLLBAR 290 +#define STATE3 291 +#define USERBUTTON 292 +#define BEDIT 293 +#define HEDIT 294 +#define IEDIT 295 +#define FONT 296 +#define ICON 297 +#define ANICURSOR 298 +#define ANIICON 299 +#define DLGINCLUDE 300 +#define DLGINIT 301 +#define FONTDIR 302 +#define HTML 303 +#define MANIFEST 304 +#define PLUGPLAY 305 +#define VXD 306 +#define TOOLBAR 307 +#define BUTTON 308 +#define LANGUAGE 309 +#define CHARACTERISTICS 310 +#define VERSIONK 311 +#define MENU 312 +#define MENUEX 313 +#define MENUITEM 314 +#define SEPARATOR 315 +#define POPUP 316 +#define CHECKED 317 +#define GRAYED 318 +#define HELP 319 +#define INACTIVE 320 +#define MENUBARBREAK 321 +#define MENUBREAK 322 +#define MESSAGETABLE 323 +#define RCDATA 324 +#define STRINGTABLE 325 +#define VERSIONINFO 326 +#define FILEVERSION 327 +#define PRODUCTVERSION 328 +#define FILEFLAGSMASK 329 +#define FILEFLAGS 330 +#define FILEOS 331 +#define FILETYPE 332 +#define FILESUBTYPE 333 +#define BLOCKSTRINGFILEINFO 334 +#define BLOCKVARFILEINFO 335 +#define VALUE 336 +#define BLOCK 337 +#define MOVEABLE 338 +#define FIXED 339 +#define PURE 340 +#define IMPURE 341 +#define PRELOAD 342 +#define LOADONCALL 343 +#define DISCARDABLE 344 +#define NOT 345 +#define QUOTEDUNISTRING 346 +#define QUOTEDSTRING 347 +#define STRING 348 +#define NUMBER 349 +#define SIZEDUNISTRING 350 +#define SIZEDSTRING 351 +#define IGNORED_TOKEN 352 +#define NEG 353 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 68 "rcparse.y" +{ + rc_accelerator acc; + rc_accelerator *pacc; + rc_dialog_control *dialog_control; + rc_menuitem *menuitem; + struct + { + rc_rcdata_item *first; + rc_rcdata_item *last; + } rcdata; + rc_rcdata_item *rcdata_item; + rc_fixed_versioninfo *fixver; + rc_ver_info *verinfo; + rc_ver_stringtable *verstringtable; + rc_ver_stringinfo *verstring; + rc_ver_varinfo *vervar; + rc_toolbar_item *toobar_item; + rc_res_id id; + rc_res_res_info res_info; + struct + { + rc_uint_type on; + rc_uint_type off; + } memflags; + struct + { + rc_uint_type val; + /* Nonzero if this number was explicitly specified as long. */ + int dword; + } i; + rc_uint_type il; + rc_uint_type is; + const char *s; + struct + { + rc_uint_type length; + const char *s; + } ss; + unichar *uni; + struct + { + rc_uint_type length; + const unichar *s; + } suni; +} +/* Line 1529 of yacc.c. */ +#line 291 "rcparse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/sysinfo.c b/binutils/sysinfo.c new file mode 100644 index 00000000000..363797417aa --- /dev/null +++ b/binutils/sysinfo.c @@ -0,0 +1,1962 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + COND = 258, + REPEAT = 259, + TYPE = 260, + NAME = 261, + NUMBER = 262, + UNIT = 263 + }; +#endif +/* Tokens. */ +#define COND 258 +#define REPEAT 259 +#define TYPE 260 +#define NAME 261 +#define NUMBER 262 +#define UNIT 263 + + + + +/* Copy the first part of user declarations. */ +#line 21 "sysinfo.y" + +#include +#include + +static char writecode; +static char *it; +static int code; +static char * repeat; +static char *oldrepeat; +static char *name; +static int rdepth; +static char *names[] = {" ","[n]","[n][m]"}; +static char *pnames[]= {"","*","**"}; + +static int yyerror (char *s); +extern int yylex (void); + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 40 "sysinfo.y" +{ + int i; + char *s; +} +/* Line 193 of yacc.c. */ +#line 135 "sysinfo.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 148 "sysinfo.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 38 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 11 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 19 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 27 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 55 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 263 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 7, 8, 9, 10 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 4, 7, 10, 11, 12, 19, 22, + 25, 28, 29, 30, 37, 38, 45, 46, 57, 59, + 60, 64, 67, 71, 72, 73, 77, 78 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 12, 0, -1, -1, 13, 14, -1, 15, 14, -1, + -1, -1, 5, 8, 9, 16, 17, 6, -1, 22, + 17, -1, 20, 17, -1, 18, 17, -1, -1, -1, + 5, 4, 8, 19, 17, 6, -1, -1, 5, 3, + 8, 21, 17, 6, -1, -1, 5, 25, 5, 24, + 26, 6, 27, 23, 28, 6, -1, 7, -1, -1, + 5, 8, 6, -1, 9, 10, -1, 5, 8, 6, + -1, -1, -1, 5, 29, 6, -1, -1, 29, 5, + 8, 8, 6, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 54, 54, 54, 92, 93, 98, 97, 169, 170, + 171, 172, 176, 175, 223, 222, 250, 249, 357, 358, + 362, 367, 373, 374, 377, 378, 380, 382 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "COND", "REPEAT", "'('", "')'", "TYPE", + "NAME", "NUMBER", "UNIT", "$accept", "top", "@1", "it_list", "it", "@2", + "it_field_list", "repeat_it_field", "@3", "cond_it_field", "@4", + "it_field", "@5", "attr_type", "attr_desc", "attr_size", "attr_id", + "enums", "enum_list", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 40, 41, 260, 261, 262, + 263 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 11, 13, 12, 14, 14, 16, 15, 17, 17, + 17, 17, 19, 18, 21, 20, 23, 22, 24, 24, + 25, 26, 27, 27, 28, 28, 29, 29 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 2, 0, 0, 6, 2, 2, + 2, 0, 0, 6, 0, 6, 0, 10, 1, 0, + 3, 2, 3, 0, 0, 3, 0, 5 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 2, 0, 5, 1, 0, 3, 5, 0, 4, 6, + 11, 0, 0, 11, 11, 11, 0, 0, 0, 0, + 7, 10, 9, 8, 14, 12, 0, 19, 11, 11, + 20, 18, 0, 0, 0, 0, 0, 15, 13, 21, + 23, 0, 16, 0, 24, 22, 26, 0, 0, 17, + 0, 25, 0, 0, 27 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 1, 2, 5, 6, 10, 12, 13, 29, 14, + 28, 15, 44, 32, 19, 36, 42, 47, 48 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -14 +static const yytype_int8 yypact[] = +{ + -14, 8, 4, -14, 2, -14, 4, 3, -14, -14, + 6, 0, 7, 6, 6, 6, 9, 10, 11, 15, + -14, -14, -14, -14, -14, -14, 16, 14, 6, 6, + -14, -14, 5, 17, 18, 19, 20, -14, -14, -14, + 22, 23, -14, 24, 27, -14, -14, 28, 1, -14, + 25, -14, 29, 30, -14 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -14, -14, -14, 32, -14, -14, -13, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 21, 22, 23, 16, 17, 18, 50, 51, 3, 4, + 7, 11, 9, 20, 35, 33, 34, 24, 25, 26, + 27, 31, 30, 37, 38, 0, 40, 41, 0, 39, + 45, 43, 46, 52, 49, 0, 54, 53, 8 +}; + +static const yytype_int8 yycheck[] = +{ + 13, 14, 15, 3, 4, 5, 5, 6, 0, 5, + 8, 5, 9, 6, 9, 28, 29, 8, 8, 8, + 5, 7, 6, 6, 6, -1, 6, 5, -1, 10, + 6, 8, 5, 8, 6, -1, 6, 8, 6 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 12, 13, 0, 5, 14, 15, 8, 14, 9, + 16, 5, 17, 18, 20, 22, 3, 4, 5, 25, + 6, 17, 17, 17, 8, 8, 8, 5, 21, 19, + 6, 7, 24, 17, 17, 9, 26, 6, 6, 10, + 6, 5, 27, 8, 23, 6, 5, 28, 29, 6, + 5, 6, 8, 8, 6 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 54 "sysinfo.y" + { + switch (writecode) + { + case 'i': + printf("#ifdef SYSROFF_SWAP_IN\n"); + break; + case 'p': + printf("#ifdef SYSROFF_p\n"); + break; + case 'd': + break; + case 'g': + printf("#ifdef SYSROFF_SWAP_OUT\n"); + break; + case 'c': + printf("#ifdef SYSROFF_PRINT\n"); + printf("#include \n"); + printf("#include \n"); + printf("#include \n"); + break; + } + } + break; + + case 3: +#line 76 "sysinfo.y" + { + switch (writecode) { + case 'i': + case 'p': + case 'g': + case 'c': + printf("#endif\n"); + break; + case 'd': + break; + } +} + break; + + case 6: +#line 98 "sysinfo.y" + { + it = (yyvsp[(2) - (3)].s); code = (yyvsp[(3) - (3)].i); + switch (writecode) + { + case 'd': + printf("\n\n\n#define IT_%s_CODE 0x%x\n", it,code); + printf("struct IT_%s;\n", it); + printf("extern void sysroff_swap_%s_in (struct IT_%s *);\n", + (yyvsp[(2) - (3)].s), it); + printf("extern void sysroff_swap_%s_out (FILE *, struct IT_%s *);\n", + (yyvsp[(2) - (3)].s), it); + printf("extern void sysroff_print_%s_out (struct IT_%s *);\n", + (yyvsp[(2) - (3)].s), it); + printf("struct IT_%s { \n", it); + break; + case 'i': + printf("void sysroff_swap_%s_in (struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s),it); + printf("{\n"); + printf("\tunsigned char raw[255];\n"); + printf("\tint idx = 0;\n"); + printf("\tint size;\n"); + printf("\tmemset(raw,0,255);\n"); + printf("\tmemset(ptr,0,sizeof(*ptr));\n"); + printf("\tsize = fillup(raw);\n"); + break; + case 'g': + printf("void sysroff_swap_%s_out (FILE * ffile, struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s),it); + printf("{\n"); + printf("\tunsigned char raw[255];\n"); + printf("\tint idx = 16;\n"); + printf("\tmemset (raw, 0, 255);\n"); + printf("\tcode = IT_%s_CODE;\n", it); + break; + case 'o': + printf("void sysroff_swap_%s_out (bfd * abfd, struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s), it); + printf("{\n"); + printf("\tint idx = 0;\n"); + break; + case 'c': + printf("void sysroff_print_%s_out (struct IT_%s *ptr)\n",(yyvsp[(2) - (3)].s),it); + printf("{\n"); + printf("itheader(\"%s\", IT_%s_CODE);\n",(yyvsp[(2) - (3)].s),(yyvsp[(2) - (3)].s)); + break; + + case 't': + break; + } + + } + break; + + case 7: +#line 149 "sysinfo.y" + { + switch (writecode) { + case 'd': + printf("};\n"); + break; + case 'g': + printf("\tchecksum(ffile,raw, idx, IT_%s_CODE);\n", it); + + case 'i': + + case 'o': + case 'c': + printf("}\n"); + } +} + break; + + case 12: +#line 176 "sysinfo.y" + { + rdepth++; + switch (writecode) + { + case 'c': + if (rdepth==1) + printf("\tprintf(\"repeat %%d\\n\", %s);\n",(yyvsp[(3) - (3)].s)); + if (rdepth==2) + printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",(yyvsp[(3) - (3)].s)); + case 'i': + case 'g': + case 'o': + + if (rdepth==1) + { + printf("\t{ int n; for (n = 0; n < %s; n++) {\n", (yyvsp[(3) - (3)].s)); + } + if (rdepth == 2) { + printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", (yyvsp[(3) - (3)].s)); + } + + break; + } + + oldrepeat = repeat; + repeat = (yyvsp[(3) - (3)].s); + } + break; + + case 13: +#line 206 "sysinfo.y" + { + repeat = oldrepeat; + oldrepeat =0; + rdepth--; + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\t}}\n"); + } + } + break; + + case 14: +#line 223 "sysinfo.y" + { + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\tif (%s) {\n", (yyvsp[(3) - (3)].s)); + break; + } + } + break; + + case 15: +#line 236 "sysinfo.y" + { + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\t}\n"); + } + } + break; + + case 16: +#line 250 "sysinfo.y" + {name = (yyvsp[(7) - (7)].s); } + break; + + case 17: +#line 252 "sysinfo.y" + { + char *desc = (yyvsp[(2) - (10)].s); + char *type = (yyvsp[(4) - (10)].s); + int size = (yyvsp[(5) - (10)].i); + char *id = (yyvsp[(7) - (10)].s); +char *p = names[rdepth]; +char *ptr = pnames[rdepth]; + switch (writecode) + { + case 'g': + if (size % 8) + { + + printf("\twriteBITS(ptr->%s%s,raw,&idx,%d);\n", + id, + names[rdepth], size); + + } + else { + printf("\twrite%s(ptr->%s%s,raw,&idx,%d,ffile);\n", + type, + id, + names[rdepth],size/8); + } + break; + case 'i': + { + + if (rdepth >= 1) + + { + printf("if (!ptr->%s) ptr->%s = (%s*)xcalloc(%s, sizeof(ptr->%s[0]));\n", + id, + id, + type, + repeat, + id); + } + + if (rdepth == 2) + { + printf("if (!ptr->%s[n]) ptr->%s[n] = (%s**)xcalloc(%s[n], sizeof(ptr->%s[n][0]));\n", + id, + id, + type, + repeat, + id); + } + + } + + if (size % 8) + { + printf("\tptr->%s%s = getBITS(raw,&idx, %d,size);\n", + id, + names[rdepth], + size); + } + else { + printf("\tptr->%s%s = get%s(raw,&idx, %d,size);\n", + id, + names[rdepth], + type, + size/8); + } + break; + case 'o': + printf("\tput%s(raw,%d,%d,&idx,ptr->%s%s);\n", type,size/8,size%8,id,names[rdepth]); + break; + case 'd': + if (repeat) + printf("\t/* repeat %s */\n", repeat); + + if (type[0] == 'I') { + printf("\tint %s%s; \t/* %s */\n",ptr,id, desc); + } + else if (type[0] =='C') { + printf("\tchar %s*%s;\t /* %s */\n",ptr,id, desc); + } + else { + printf("\tbarray %s%s;\t /* %s */\n",ptr,id, desc); + } + break; + case 'c': + printf("tabout();\n"); + printf("\tprintf(\"/*%-30s*/ ptr->%s = \");\n", desc, id); + + if (type[0] == 'I') + printf("\tprintf(\"%%d\\n\",ptr->%s%s);\n", id,p); + else if (type[0] == 'C') + printf("\tprintf(\"%%s\\n\",ptr->%s%s);\n", id,p); + + else if (type[0] == 'B') + { + printf("\tpbarray(&ptr->%s%s);\n", id,p); + } + else abort(); + break; + } + } + break; + + case 18: +#line 357 "sysinfo.y" + { (yyval.s) = (yyvsp[(1) - (1)].s); } + break; + + case 19: +#line 358 "sysinfo.y" + { (yyval.s) = "INT";} + break; + + case 20: +#line 363 "sysinfo.y" + { (yyval.s) = (yyvsp[(2) - (3)].s); } + break; + + case 21: +#line 368 "sysinfo.y" + { (yyval.i) = (yyvsp[(1) - (2)].i) * (yyvsp[(2) - (2)].i); } + break; + + case 22: +#line 373 "sysinfo.y" + { (yyval.s) = (yyvsp[(2) - (3)].s); } + break; + + case 23: +#line 374 "sysinfo.y" + { (yyval.s) = "dummy";} + break; + + case 27: +#line 382 "sysinfo.y" + { + switch (writecode) + { + case 'd': + printf("#define %s %s\n", (yyvsp[(3) - (5)].s),(yyvsp[(4) - (5)].s)); + break; + case 'c': + printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],(yyvsp[(4) - (5)].s),(yyvsp[(3) - (5)].s)); + } + } + break; + + +/* Line 1267 of yacc.c. */ +#line 1715 "sysinfo.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 397 "sysinfo.y" + +/* four modes + + -d write structure definitions for sysroff in host format + -i write functions to swap into sysroff format in + -o write functions to swap into sysroff format out + -c write code to print info in human form */ + +int yydebug; + +int +main (int ac, char **av) +{ + yydebug=0; + if (ac > 1) + writecode = av[1][1]; +if (writecode == 'd') + { + printf("typedef struct { unsigned char *data; int len; } barray; \n"); + printf("typedef int INT;\n"); + printf("typedef char * CHARS;\n"); + + } + yyparse(); +return 0; +} + +static int +yyerror (char *s) +{ + fprintf(stderr, "%s\n" , s); + return 0; +} + diff --git a/binutils/sysinfo.h b/binutils/sysinfo.h new file mode 100644 index 00000000000..7515e22b4c3 --- /dev/null +++ b/binutils/sysinfo.h @@ -0,0 +1,77 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + COND = 258, + REPEAT = 259, + TYPE = 260, + NAME = 261, + NUMBER = 262, + UNIT = 263 + }; +#endif +/* Tokens. */ +#define COND 258 +#define REPEAT 259 +#define TYPE 260 +#define NAME 261 +#define NUMBER 262 +#define UNIT 263 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 40 "sysinfo.y" +{ + int i; + char *s; +} +/* Line 1529 of yacc.c. */ +#line 70 "sysinfo.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/syslex.c b/binutils/syslex.c new file mode 100644 index 00000000000..9135ea4f5d3 --- /dev/null +++ b/binutils/syslex.c @@ -0,0 +1,1906 @@ + +#line 3 "syslex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 25 +#define YY_END_OF_BUFFER 26 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[81] = + { 0, + 0, 0, 26, 25, 7, 8, 5, 25, 1, 2, + 11, 11, 6, 3, 4, 25, 25, 25, 25, 25, + 25, 25, 0, 9, 11, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, + 13, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 12, 15, 0, 23, 0, 0, 0, 0, 0, + 0, 14, 18, 0, 0, 0, 0, 0, 17, 0, + 24, 0, 0, 0, 20, 22, 0, 21, 19, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 1, 5, 1, 1, 1, 1, 1, 6, + 7, 1, 1, 1, 1, 1, 1, 8, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, 10, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 11, 1, 12, 1, 1, 1, 13, 14, 15, 16, + + 17, 18, 19, 20, 21, 1, 1, 22, 1, 23, + 24, 25, 1, 26, 27, 28, 29, 30, 1, 31, + 32, 33, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[34] = + { 0, + 1, 1, 2, 1, 1, 1, 1, 3, 3, 1, + 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[84] = + { 0, + 0, 0, 100, 101, 101, 101, 101, 94, 101, 101, + 26, 28, 0, 101, 101, 82, 26, 18, 74, 79, + 78, 81, 88, 101, 32, 0, 0, 76, 65, 62, + 61, 75, 20, 59, 61, 66, 58, 0, 57, 56, + 54, 63, 53, 62, 54, 101, 59, 48, 53, 46, + 59, 101, 44, 43, 101, 41, 55, 46, 53, 44, + 31, 101, 101, 39, 27, 21, 39, 19, 101, 35, + 101, 33, 26, 29, 101, 101, 28, 101, 101, 101, + 58, 61, 41 + } ; + +static yyconst flex_int16_t yy_def[84] = + { 0, + 80, 1, 80, 80, 80, 80, 80, 81, 80, 80, + 80, 80, 82, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 81, 80, 80, 83, 82, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 83, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 0, + 80, 80, 80 + } ; + +static yyconst flex_int16_t yy_nxt[135] = + { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 4, 4, 4, 4, 4, + 19, 4, 4, 4, 4, 20, 21, 4, 4, 22, + 4, 4, 4, 25, 25, 25, 25, 32, 29, 25, + 25, 33, 44, 38, 79, 78, 30, 77, 45, 76, + 75, 74, 73, 72, 71, 70, 26, 31, 23, 23, + 23, 27, 69, 27, 68, 67, 66, 65, 64, 63, + 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, + 52, 51, 50, 49, 48, 47, 46, 43, 42, 41, + 40, 39, 24, 37, 36, 35, 34, 28, 24, 80, + + 3, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80 + } ; + +static yyconst flex_int16_t yy_chk[135] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 11, 11, 12, 12, 18, 17, 25, + 25, 18, 33, 83, 77, 74, 17, 73, 33, 72, + 70, 68, 67, 66, 65, 64, 11, 17, 81, 81, + 81, 82, 61, 82, 60, 59, 58, 57, 56, 54, + 53, 51, 50, 49, 48, 47, 45, 44, 43, 42, + 41, 40, 39, 37, 36, 35, 34, 32, 31, 30, + 29, 28, 23, 22, 21, 20, 19, 16, 8, 3, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "syslex.l" +#define YY_NO_INPUT 1 +#line 4 "syslex.l" +/* Copyright (C) 2001-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GLD; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +/* Note: config.h is #included via syslex_wrap.c. */ + +#ifdef HAVE_STRING_H +#include +#else +#ifdef HAVE_STRINGS_H +#include +#endif +#endif + +#include "sysinfo.h" + +#ifndef YY_NO_UNPUT +#define YY_NO_UNPUT +#endif + +#ifndef yywrap +static int yywrap (void) { return 1; } +#endif + +extern int yylex (void); +#line 544 "syslex.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 45 "syslex.l" + +#line 726 "syslex.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 81 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 101 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 46 "syslex.l" +{ return '(';} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 47 "syslex.l" +{ return ')';} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 48 "syslex.l" +{ return '[';} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 49 "syslex.l" +{ return ']';} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 50 "syslex.l" +{ ; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 51 "syslex.l" +{ ; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 52 "syslex.l" +{ ; } + YY_BREAK +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +#line 53 "syslex.l" +{ ; } + YY_BREAK +case 9: +/* rule 9 can match eol */ +YY_RULE_SETUP +#line 54 "syslex.l" +{ + yylval.s = malloc (yyleng - 1); + memcpy (yylval.s, yytext + 1, yyleng - 2); + yylval.s[yyleng - 2] = '\0'; + return NAME; + } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 61 "syslex.l" +{ + yylval.i = strtol(yytext,0,16); + return NUMBER; + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 66 "syslex.l" +{ + yylval.i = atoi(yytext); + return NUMBER; + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 72 "syslex.l" +{ yylval.i =1 ;return UNIT;} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 73 "syslex.l" +{ yylval.i = 1; return UNIT;} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 74 "syslex.l" +{ yylval.i= 8; return UNIT;} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 75 "syslex.l" +{ yylval.i = 8; return UNIT;} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 77 "syslex.l" +{ yylval.s = "INT"; return TYPE;} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 78 "syslex.l" +{ yylval.s = "BARRAY"; return TYPE;} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 79 "syslex.l" +{ yylval.s = "CHARS"; return TYPE;} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 80 "syslex.l" +{ yylval.i = 0; return NUMBER;} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 81 "syslex.l" +{ yylval.i = -4; return NUMBER;} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 82 "syslex.l" +{ yylval.i = -2; return NUMBER; } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 83 "syslex.l" +{ yylval.i = -1; return NUMBER; } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 84 "syslex.l" +{ return COND;} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 85 "syslex.l" +{ return REPEAT;} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 86 "syslex.l" +ECHO; + YY_BREAK +#line 947 "syslex.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 81 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 81 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 80); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 86 "syslex.l" diff --git a/etc/config.log b/etc/config.log new file mode 100644 index 00000000000..ef8aebb6f65 --- /dev/null +++ b/etc/config.log @@ -0,0 +1,153 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.64. Invocation command line was + + $ /Users/gingold/Repositories/fsf/binutils-release.git/etc/configure --cache-file=./config.cache --with-gnu-as --with-gnu-ld --with-system-zlib --program-transform-name=s&^&i386-pc-linux-gnu-& --disable-option-checking --build=x86_64-apple-darwin14.0.0 --host=x86_64-apple-darwin14.0.0 --target=i386-pc-linux-gnu --srcdir=.././etc + +## --------- ## +## Platform. ## +## --------- ## + +hostname = ulanbator.act-europe.fr +uname -m = x86_64 +uname -r = 14.0.0 +uname -s = Darwin +uname -v = Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 + +/usr/bin/uname -p = i386 +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = Mach kernel version: + Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 +Kernel configured for up to 8 processors. +4 processors are physically available. +8 processors are logically available. +Processor type: i486 (Intel 80486) +Processors active: 0 1 2 3 4 5 6 7 +Primary memory available: 16.00 gigabytes +Default processor set: 266 tasks, 1154 threads, 8 processors +Load average: 2.08, Mach factor: 5.91 +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /Users/gingold/Repositories/fsf/release-binutils/tools/bin +PATH: /opt/local/bin +PATH: /opt/local/sbin +PATH: /System/Library/Frameworks/Python.framework/Versions/Current/bin +PATH: /usr/local/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/sbin +PATH: /sbin +PATH: /opt/X11/bin +PATH: /usr/opt/X11/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1572: creating cache ./config.cache +configure:1683: checking for a BSD-compatible install +configure:1751: result: /usr/local/bin/install -c +configure:1850: updating cache ./config.cache +configure:1923: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.64. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on ulanbator.act-europe.fr + +config.status:715: creating Makefile + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_env_build_alias_set=set +ac_cv_env_build_alias_value=x86_64-apple-darwin14.0.0 +ac_cv_env_host_alias_set=set +ac_cv_env_host_alias_value=x86_64-apple-darwin14.0.0 +ac_cv_env_target_alias_set=set +ac_cv_env_target_alias_value=i386-pc-linux-gnu +ac_cv_path_install='/usr/local/bin/install -c' + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"' +ECHO_C='\c' +ECHO_N='' +ECHO_T='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +LIBOBJS='' +LIBS='' +LTLIBOBJS='' +MAINT='#' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_URL='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +SHELL='/bin/sh' +bindir='${exec_prefix}/bin' +build_alias='x86_64-apple-darwin14.0.0' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host_alias='x86_64-apple-darwin14.0.0' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s&^&i386-pc-linux-gnu-&' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='i386-pc-linux-gnu' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PACKAGE_STRING "" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" + +configure: exit 0 diff --git a/gas/bfin-lex.c b/gas/bfin-lex.c new file mode 100644 index 00000000000..b78080d01c9 --- /dev/null +++ b/gas/bfin-lex.c @@ -0,0 +1,3559 @@ + +#line 3 "bfin-lex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 239 +#define YY_END_OF_BUFFER 240 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[571] = + { 0, + 0, 0, 0, 0, 0, 0, 240, 238, 236, 236, + 221, 234, 220, 219, 201, 202, 217, 215, 212, 211, + 204, 233, 233, 203, 222, 200, 196, 238, 225, 234, + 147, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 54, 234, 234, 234, 12, 10, + 190, 189, 188, 186, 184, 234, 234, 234, 234, 234, + 70, 19, 18, 8, 7, 234, 218, 216, 214, 213, + 0, 210, 205, 0, 0, 0, 233, 235, 0, 199, + 197, 223, 195, 194, 179, 176, 234, 234, 234, 149, + 152, 234, 234, 148, 0, 146, 234, 139, 234, 234, + + 135, 234, 125, 234, 123, 234, 234, 234, 234, 234, + 234, 234, 103, 102, 101, 234, 100, 99, 234, 234, + 97, 234, 95, 94, 93, 91, 234, 85, 234, 234, + 77, 86, 234, 71, 69, 234, 234, 234, 234, 65, + 234, 234, 234, 59, 234, 56, 234, 234, 53, 234, + 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 25, 234, 234, 234, 234, 234, 15, 14, 234, + 234, 159, 234, 234, 187, 185, 224, 234, 234, 95, + 234, 234, 234, 206, 208, 207, 209, 0, 0, 233, + 233, 198, 192, 193, 234, 234, 234, 172, 153, 154, + + 234, 234, 163, 164, 234, 155, 157, 233, 234, 234, + 234, 234, 234, 234, 124, 234, 234, 119, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 180, 98, 234, + 234, 234, 234, 234, 234, 80, 83, 78, 81, 234, + 234, 234, 79, 82, 234, 67, 66, 234, 63, 62, + 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 44, 39, 38, 37, 36, 35, 34, 234, 32, 31, + 234, 234, 234, 234, 234, 234, 234, 21, 234, 234, + 16, 13, 234, 234, 9, 234, 234, 234, 234, 234, + 234, 237, 191, 171, 169, 178, 177, 170, 168, 175, + + 174, 234, 234, 234, 234, 234, 156, 158, 145, 234, + 234, 234, 234, 138, 137, 234, 127, 234, 234, 118, + 234, 234, 234, 234, 111, 110, 234, 234, 234, 234, + 234, 234, 234, 105, 104, 234, 234, 234, 96, 234, + 92, 89, 84, 74, 234, 234, 68, 64, 234, 61, + 60, 58, 57, 234, 55, 45, 234, 50, 47, 49, + 46, 48, 234, 234, 43, 42, 234, 234, 234, 234, + 234, 234, 27, 24, 23, 234, 234, 234, 234, 234, + 234, 229, 234, 228, 234, 234, 173, 234, 234, 234, + 161, 234, 234, 234, 234, 234, 234, 234, 234, 234, + + 234, 122, 234, 117, 116, 234, 234, 234, 234, 234, + 234, 234, 234, 108, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 2, 183, 52, 41, 40, 234, + 33, 234, 234, 234, 30, 234, 22, 234, 234, 234, + 234, 232, 234, 234, 234, 234, 234, 234, 165, 162, + 144, 143, 142, 141, 140, 234, 234, 234, 234, 126, + 121, 234, 234, 234, 234, 234, 51, 234, 234, 107, + 234, 234, 234, 234, 234, 88, 87, 90, 234, 234, + 73, 72, 234, 29, 234, 234, 234, 20, 234, 234, + 151, 234, 230, 234, 227, 234, 166, 167, 234, 234, + + 234, 234, 234, 234, 120, 234, 114, 113, 234, 234, + 234, 5, 106, 234, 181, 234, 234, 234, 234, 160, + 28, 234, 234, 17, 11, 234, 234, 150, 234, 234, + 134, 133, 132, 129, 234, 115, 234, 6, 109, 234, + 234, 3, 234, 76, 1, 26, 231, 226, 136, 130, + 131, 234, 234, 234, 234, 234, 128, 234, 234, 4, + 75, 234, 234, 112, 234, 234, 234, 234, 182, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 1, 5, 6, 7, 8, 1, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 1, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 1, 60, 61, 62, 1, 33, 34, 35, 36, + + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 1, 63, 1, 64, 1, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6 + } ; + +static yyconst flex_int32_t yy_meta[65] = + { 0, + 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 4, 1, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, + 1, 1, 6, 7, 6, 6, 6, 7, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 3, 3, 1, 1, + 1, 3, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[577] = + { 0, + 0, 0, 27, 28, 32, 40, 666, 667, 667, 667, + 667, 0, 667, 635, 667, 667, 634, 67, 667, 56, + 652, 67, 72, 667, 667, 44, 63, 631, 667, 114, + 168, 67, 99, 33, 89, 70, 111, 157, 608, 209, + 161, 48, 98, 245, 279, 313, 101, 609, 84, 639, + 667, 667, 628, 90, 667, 152, 77, 616, 606, 75, + 235, 0, 175, 0, 0, 0, 667, 667, 667, 667, + 115, 667, 667, 142, 644, 0, 74, 667, 0, 624, + 667, 667, 667, 131, 638, 637, 120, 152, 610, 0, + 0, 190, 165, 0, 0, 635, 597, 0, 611, 600, + + 594, 601, 0, 603, 0, 586, 607, 602, 592, 96, + 586, 169, 623, 591, 0, 584, 0, 0, 583, 597, + 618, 588, 0, 0, 580, 0, 585, 614, 172, 174, + 0, 581, 161, 205, 612, 570, 579, 577, 151, 0, + 576, 585, 569, 605, 584, 0, 566, 571, 601, 574, + 562, 577, 560, 236, 561, 577, 562, 187, 556, 566, + 567, 590, 547, 562, 551, 550, 547, 0, 0, 551, + 546, 0, 562, 577, 667, 667, 667, 542, 550, 549, + 546, 195, 547, 667, 667, 667, 667, 579, 148, 0, + 0, 667, 667, 559, 193, 195, 538, 0, 525, 0, + + 547, 544, 0, 0, 551, 532, 531, 0, 230, 234, + 527, 530, 542, 534, 0, 531, 532, 271, 528, 541, + 196, 222, 242, 540, 522, 244, 536, 552, 0, 519, + 265, 531, 548, 518, 270, 0, 0, 0, 0, 517, + 512, 522, 0, 0, 273, 0, 0, 514, 0, 0, + 525, 509, 524, 275, 515, 509, 504, 284, 504, 293, + 318, 0, 0, 0, 0, 0, 0, 508, 0, 0, + 503, 501, 501, 512, 503, 283, 502, 0, 512, 494, + 0, 0, 483, 497, 0, 492, 505, 488, 497, 501, + 497, 526, 667, 0, 0, 0, 0, 0, 0, 0, + + 0, 484, 500, 488, 495, 480, 0, 0, 0, 487, + 477, 492, 232, 0, 477, 294, 512, 491, 488, 289, + 479, 490, 471, 477, 0, 0, 487, 486, 462, 464, + 464, 479, 481, 0, 0, 477, 488, 461, 0, 448, + 0, 494, 0, 446, 454, 468, 0, 0, 468, 0, + 0, 0, 0, 469, 0, 0, 466, 0, 0, 0, + 0, 0, 483, 484, 0, 0, 455, 463, 463, 445, + 459, 443, 460, 0, 0, 458, 454, 440, 445, 441, + 448, 425, 435, 0, 448, 438, 0, 436, 338, 430, + 0, 431, 424, 427, 434, 425, 436, 427, 441, 427, + + 416, 0, 420, 0, 0, 422, 425, 427, 428, 413, + 413, 429, 412, 0, 420, 426, 423, 414, 423, 407, + 315, 177, 408, 403, 0, 0, 0, 0, 0, 407, + 0, 413, 419, 400, 0, 409, 0, 410, 411, 414, + 389, 404, 404, 391, 399, 393, 417, 418, 0, 0, + 0, 0, 0, 0, 0, 397, 302, 402, 388, 0, + 416, 390, 381, 380, 385, 379, 0, 381, 391, 0, + 375, 375, 404, 391, 386, 0, 0, 0, 385, 375, + 0, 0, 384, 0, 367, 381, 365, 0, 364, 359, + 0, 368, 0, 378, 0, 355, 0, 0, 373, 86, + + 362, 361, 365, 374, 0, 350, 0, 0, 368, 367, + 351, 0, 0, 356, 0, 335, 330, 339, 341, 0, + 0, 324, 324, 0, 0, 320, 333, 0, 320, 246, + 0, 0, 0, 0, 334, 0, 312, 0, 0, 305, + 309, 0, 314, 0, 0, 0, 0, 0, 0, 0, + 0, 309, 310, 304, 303, 292, 0, 287, 261, 0, + 0, 255, 241, 0, 254, 214, 186, 185, 0, 667, + 378, 382, 389, 179, 392, 395 + } ; + +static yyconst flex_int16_t yy_def[577] = + { 0, + 570, 1, 1, 1, 1, 1, 570, 570, 570, 570, + 570, 571, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 572, 572, 570, 570, 570, 570, 570, 570, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 570, 570, 570, 570, 570, 571, 38, 40, 44, 571, + 571, 46, 571, 571, 571, 571, 570, 570, 570, 570, + 570, 570, 570, 570, 573, 574, 23, 570, 575, 570, + 570, 570, 570, 570, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 576, 571, 571, 571, 571, 571, + + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 570, 570, 570, 571, 571, 571, + 571, 571, 571, 570, 570, 570, 570, 573, 573, 574, + 575, 570, 570, 570, 571, 571, 571, 571, 571, 571, + + 571, 571, 571, 571, 571, 571, 571, 576, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 573, 570, 571, 571, 571, 571, 571, 571, 571, + + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 0, + 570, 570, 570, 570, 570, 570 + } ; + +static yyconst flex_int16_t yy_nxt[732] = + { 0, + 8, 9, 10, 11, 8, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 12, 21, 22, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 12, 40, 41, 42, 43, 44, 12, 45, + 46, 47, 48, 49, 50, 12, 12, 12, 51, 52, + 53, 12, 54, 55, 56, 56, 82, 57, 57, 72, + 58, 58, 80, 81, 59, 59, 61, 111, 69, 60, + 60, 76, 62, 63, 61, 73, 570, 64, 112, 65, + 62, 63, 83, 95, 139, 64, 70, 65, 140, 102, + + 78, 103, 95, 95, 78, 78, 115, 570, 530, 78, + 104, 570, 179, 105, 180, 95, 116, 106, 74, 176, + 183, 117, 79, 107, 171, 170, 184, 570, 185, 71, + 85, 86, 108, 531, 172, 109, 113, 166, 167, 110, + 168, 114, 141, 142, 169, 173, 220, 87, 88, 221, + 143, 118, 177, 186, 119, 187, 95, 89, 189, 90, + 193, 194, 91, 292, 92, 120, 197, 93, 199, 200, + 198, 94, 95, 121, 121, 121, 121, 135, 135, 135, + 135, 206, 207, 190, 96, 96, 96, 96, 236, 237, + 238, 239, 122, 136, 123, 178, 124, 241, 249, 113, + + 242, 137, 250, 223, 114, 569, 138, 125, 97, 126, + 479, 166, 167, 480, 168, 98, 224, 99, 169, 271, + 225, 243, 244, 100, 101, 128, 128, 128, 128, 202, + 568, 290, 294, 203, 298, 272, 295, 567, 299, 204, + 257, 205, 129, 130, 325, 131, 326, 296, 297, 300, + 301, 135, 135, 135, 135, 132, 327, 328, 329, 133, + 134, 144, 144, 144, 144, 144, 144, 136, 310, 309, + 395, 566, 263, 309, 330, 137, 264, 145, 311, 146, + 138, 265, 396, 334, 312, 313, 266, 335, 147, 331, + 550, 267, 565, 551, 148, 149, 149, 149, 149, 149, + + 149, 149, 149, 320, 339, 321, 564, 563, 339, 343, + 322, 150, 347, 343, 352, 151, 347, 356, 352, 500, + 501, 502, 374, 356, 152, 153, 375, 356, 404, 358, + 154, 155, 405, 359, 562, 363, 364, 561, 360, 560, + 398, 399, 559, 361, 558, 156, 400, 157, 362, 158, + 159, 557, 160, 161, 556, 447, 448, 365, 476, 555, + 162, 366, 449, 163, 164, 477, 554, 553, 552, 165, + 478, 549, 548, 547, 546, 545, 544, 543, 542, 367, + 66, 66, 66, 66, 66, 77, 77, 541, 77, 188, + 540, 188, 188, 188, 188, 188, 191, 191, 191, 208, + + 208, 208, 539, 538, 537, 536, 535, 534, 533, 532, + 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, + 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, + 509, 508, 507, 506, 505, 504, 503, 499, 498, 497, + 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, + 486, 485, 484, 483, 482, 481, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, + 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, + 451, 450, 446, 445, 444, 443, 420, 442, 441, 440, + 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, + + 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, + 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, + 409, 408, 407, 406, 403, 402, 401, 397, 394, 393, + 392, 391, 390, 389, 388, 387, 189, 386, 385, 384, + 383, 382, 381, 380, 379, 378, 377, 376, 373, 372, + 371, 370, 369, 368, 357, 355, 354, 353, 351, 350, + 349, 348, 346, 345, 344, 342, 341, 340, 338, 337, + 336, 333, 332, 324, 323, 319, 318, 317, 316, 315, + 314, 308, 307, 306, 305, 304, 303, 302, 293, 189, + 291, 289, 288, 287, 286, 285, 284, 283, 282, 281, + + 280, 279, 278, 277, 276, 275, 274, 273, 270, 269, + 268, 262, 261, 260, 259, 258, 257, 256, 255, 254, + 253, 252, 251, 248, 247, 246, 245, 240, 235, 234, + 233, 232, 231, 230, 229, 228, 227, 226, 222, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, + 201, 196, 195, 192, 189, 182, 181, 175, 174, 170, + 127, 84, 75, 68, 67, 570, 7, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570 + } ; + +static yyconst flex_int16_t yy_chk[732] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 4, 27, 3, 4, 20, + 3, 4, 26, 26, 3, 4, 5, 34, 18, 3, + 4, 22, 5, 5, 6, 20, 23, 5, 34, 5, + 6, 6, 27, 35, 42, 6, 18, 6, 42, 32, + + 22, 32, 43, 33, 22, 23, 36, 77, 500, 23, + 32, 77, 57, 32, 57, 37, 36, 32, 20, 54, + 60, 36, 22, 32, 49, 60, 71, 23, 71, 18, + 30, 30, 33, 500, 49, 33, 35, 47, 47, 33, + 47, 35, 43, 43, 47, 49, 110, 30, 30, 110, + 43, 37, 54, 74, 37, 74, 56, 30, 189, 30, + 84, 84, 30, 189, 30, 37, 87, 30, 88, 88, + 87, 30, 31, 38, 38, 38, 38, 41, 41, 41, + 41, 93, 93, 574, 31, 31, 31, 31, 129, 129, + 130, 130, 38, 41, 38, 56, 38, 133, 139, 56, + + 133, 41, 139, 112, 56, 568, 41, 38, 31, 38, + 422, 63, 63, 422, 63, 31, 112, 31, 63, 158, + 112, 134, 134, 31, 31, 40, 40, 40, 40, 92, + 567, 182, 195, 92, 196, 158, 195, 566, 196, 92, + 182, 92, 40, 40, 221, 40, 221, 195, 195, 196, + 196, 61, 61, 61, 61, 40, 222, 222, 222, 40, + 40, 44, 44, 44, 44, 44, 44, 61, 210, 209, + 313, 565, 154, 209, 223, 61, 154, 44, 210, 44, + 61, 154, 313, 226, 210, 210, 154, 226, 44, 223, + 530, 154, 563, 530, 44, 45, 45, 45, 45, 45, + + 45, 45, 45, 218, 231, 218, 562, 559, 231, 235, + 218, 45, 245, 235, 254, 45, 245, 258, 254, 457, + 457, 457, 276, 258, 45, 45, 276, 258, 320, 260, + 45, 46, 320, 260, 558, 261, 261, 556, 260, 555, + 316, 316, 554, 260, 553, 46, 316, 46, 260, 46, + 46, 552, 46, 46, 543, 389, 389, 261, 421, 541, + 46, 261, 389, 46, 46, 421, 540, 537, 535, 46, + 421, 529, 527, 526, 523, 522, 519, 518, 517, 261, + 571, 571, 571, 571, 571, 572, 572, 516, 572, 573, + 514, 573, 573, 573, 573, 573, 575, 575, 575, 576, + + 576, 576, 511, 510, 509, 506, 504, 503, 502, 501, + 499, 496, 494, 492, 490, 489, 487, 486, 485, 483, + 480, 479, 475, 474, 473, 472, 471, 469, 468, 466, + 465, 464, 463, 462, 461, 459, 458, 456, 448, 447, + 446, 445, 444, 443, 442, 441, 440, 439, 438, 436, + 434, 433, 432, 430, 424, 423, 420, 419, 418, 417, + 416, 415, 413, 412, 411, 410, 409, 408, 407, 406, + 403, 401, 400, 399, 398, 397, 396, 395, 394, 393, + 392, 390, 388, 386, 385, 383, 382, 381, 380, 379, + 378, 377, 376, 373, 372, 371, 370, 369, 368, 367, + + 364, 363, 357, 354, 349, 346, 345, 344, 342, 340, + 338, 337, 336, 333, 332, 331, 330, 329, 328, 327, + 324, 323, 322, 321, 319, 318, 317, 315, 312, 311, + 310, 306, 305, 304, 303, 302, 292, 291, 290, 289, + 288, 287, 286, 284, 283, 280, 279, 277, 275, 274, + 273, 272, 271, 268, 259, 257, 256, 255, 253, 252, + 251, 248, 242, 241, 240, 234, 233, 232, 230, 228, + 227, 225, 224, 220, 219, 217, 216, 214, 213, 212, + 211, 207, 206, 205, 202, 201, 199, 197, 194, 188, + 183, 181, 180, 179, 178, 174, 173, 171, 170, 167, + + 166, 165, 164, 163, 162, 161, 160, 159, 157, 156, + 155, 153, 152, 151, 150, 149, 148, 147, 145, 144, + 143, 142, 141, 138, 137, 136, 135, 132, 128, 127, + 125, 122, 121, 120, 119, 116, 114, 113, 111, 109, + 108, 107, 106, 104, 102, 101, 100, 99, 97, 96, + 89, 86, 85, 80, 75, 59, 58, 53, 50, 48, + 39, 28, 21, 17, 14, 7, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "bfin-lex.l" +/* bfin-lex.l ADI Blackfin lexer + Copyright (C) 2005-2014 Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. + + GAS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GAS; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ +#line 21 "bfin-lex.l" + +#include "as.h" +#include "bfin-defs.h" +#include "bfin-parse.h" + +static long parse_int (char **end); +static int parse_halfreg (Register *r, int cl, char *hr); +static int parse_reg (Register *r, int type, char *rt); +int yylex (void); + +#define _REG yylval.reg + + +/* Define Start States ... Actually we will use exclusion. + If no start state is specified it should match any state + and would match some keyword rules only with + initial. */ + + +#line 840 "bfin-lex.c" + +#define INITIAL 0 +#define KEYWORD 1 +#define FLAGS 2 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 43 "bfin-lex.l" + +#line 1026 "bfin-lex.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 571 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 667 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 44 "bfin-lex.l" +_REG.regno = REG_sftreset; return REG; + YY_BREAK +case 2: +YY_RULE_SETUP +#line 45 "bfin-lex.l" +_REG.regno = REG_omode; return REG; + YY_BREAK +case 3: +YY_RULE_SETUP +#line 46 "bfin-lex.l" +_REG.regno = REG_idle_req; return REG; + YY_BREAK +case 4: +YY_RULE_SETUP +#line 47 "bfin-lex.l" +_REG.regno = REG_hwerrcause; return REG; + YY_BREAK +case 5: +YY_RULE_SETUP +#line 48 "bfin-lex.l" +_REG.regno = REG_excause; return REG; + YY_BREAK +case 6: +YY_RULE_SETUP +#line 49 "bfin-lex.l" +_REG.regno = REG_emucause; return REG; + YY_BREAK +case 7: +YY_RULE_SETUP +#line 50 "bfin-lex.l" +return Z; + YY_BREAK +case 8: +YY_RULE_SETUP +#line 51 "bfin-lex.l" +return X; + YY_BREAK +case 9: +YY_RULE_SETUP +#line 52 "bfin-lex.l" +yylval.value = M_W32; return MMOD; + YY_BREAK +case 10: +YY_RULE_SETUP +#line 53 "bfin-lex.l" +return W; + YY_BREAK +case 11: +YY_RULE_SETUP +#line 54 "bfin-lex.l" +return VIT_MAX; + YY_BREAK +case 12: +YY_RULE_SETUP +#line 55 "bfin-lex.l" +return V; /* Special: V is a statflag and a modifier. */ + YY_BREAK +case 13: +YY_RULE_SETUP +#line 56 "bfin-lex.l" +_REG.regno = REG_USP; return REG; + YY_BREAK +case 14: +YY_RULE_SETUP +#line 57 "bfin-lex.l" +return TL; + YY_BREAK +case 15: +YY_RULE_SETUP +#line 58 "bfin-lex.l" +return TH; + YY_BREAK +case 16: +YY_RULE_SETUP +#line 59 "bfin-lex.l" +yylval.value = M_TFU; return MMOD; + YY_BREAK +case 17: +YY_RULE_SETUP +#line 60 "bfin-lex.l" +return TESTSET; + YY_BREAK +case 18: +YY_RULE_SETUP +#line 61 "bfin-lex.l" +yylval.value = M_T; return MMOD; + YY_BREAK +case 19: +YY_RULE_SETUP +#line 62 "bfin-lex.l" +return S; + YY_BREAK +case 20: +YY_RULE_SETUP +#line 63 "bfin-lex.l" +_REG.regno = REG_SYSCFG; return REG; + YY_BREAK +case 21: +YY_RULE_SETUP +#line 64 "bfin-lex.l" +return STI; + YY_BREAK +case 22: +YY_RULE_SETUP +#line 65 "bfin-lex.l" +return SSYNC; + YY_BREAK +case 23: +YY_RULE_SETUP +#line 66 "bfin-lex.l" +_REG.regno = REG_SP; _REG.flags = F_REG_LOW; return HALF_REG; + YY_BREAK +case 24: +YY_RULE_SETUP +#line 67 "bfin-lex.l" +_REG.regno = REG_SP; _REG.flags = F_REG_HIGH; return HALF_REG; + YY_BREAK +case 25: +YY_RULE_SETUP +#line 68 "bfin-lex.l" +_REG.regno = REG_SP; return REG; + YY_BREAK +case 26: +YY_RULE_SETUP +#line 69 "bfin-lex.l" +return SIGNBITS; + YY_BREAK +case 27: +YY_RULE_SETUP +#line 70 "bfin-lex.l" +return SIGN; + YY_BREAK +case 28: +YY_RULE_SETUP +#line 71 "bfin-lex.l" +_REG.regno = REG_SEQSTAT; return REG; + YY_BREAK +case 29: +YY_RULE_SETUP +#line 72 "bfin-lex.l" +return SEARCH; + YY_BREAK +case 30: +YY_RULE_SETUP +#line 73 "bfin-lex.l" +return SHIFT; + YY_BREAK +case 31: +YY_RULE_SETUP +#line 74 "bfin-lex.l" +return SCO; + YY_BREAK +case 32: +YY_RULE_SETUP +#line 76 "bfin-lex.l" +return SAA; + YY_BREAK +case 33: +YY_RULE_SETUP +#line 77 "bfin-lex.l" +yylval.value = M_S2RND; return MMOD; + YY_BREAK +case 34: +YY_RULE_SETUP +#line 78 "bfin-lex.l" +return RTX; + YY_BREAK +case 35: +YY_RULE_SETUP +#line 79 "bfin-lex.l" +return RTS; + YY_BREAK +case 36: +YY_RULE_SETUP +#line 80 "bfin-lex.l" +return RTN; + YY_BREAK +case 37: +YY_RULE_SETUP +#line 81 "bfin-lex.l" +return RTI; + YY_BREAK +case 38: +YY_RULE_SETUP +#line 82 "bfin-lex.l" +return RTE; + YY_BREAK +case 39: +YY_RULE_SETUP +#line 83 "bfin-lex.l" +return ROT; + YY_BREAK +case 40: +YY_RULE_SETUP +#line 84 "bfin-lex.l" +return RND20; + YY_BREAK +case 41: +YY_RULE_SETUP +#line 85 "bfin-lex.l" +return RND12; + YY_BREAK +case 42: +YY_RULE_SETUP +#line 86 "bfin-lex.l" +return RNDL; + YY_BREAK +case 43: +YY_RULE_SETUP +#line 87 "bfin-lex.l" +return RNDH; + YY_BREAK +case 44: +YY_RULE_SETUP +#line 88 "bfin-lex.l" +return RND; + YY_BREAK +case 45: +YY_RULE_SETUP +#line 90 "bfin-lex.l" +return parse_halfreg(&yylval.reg, T_REG_R, yytext); + YY_BREAK +case 46: +YY_RULE_SETUP +#line 92 "bfin-lex.l" +_REG.regno = REG_RETS; return REG; + YY_BREAK +case 47: +YY_RULE_SETUP +#line 93 "bfin-lex.l" +_REG.regno = REG_RETI; return REG; + YY_BREAK +case 48: +YY_RULE_SETUP +#line 94 "bfin-lex.l" +_REG.regno = REG_RETX; return REG; + YY_BREAK +case 49: +YY_RULE_SETUP +#line 95 "bfin-lex.l" +_REG.regno = REG_RETN; return REG; + YY_BREAK +case 50: +YY_RULE_SETUP +#line 96 "bfin-lex.l" +_REG.regno = REG_RETE; return REG; + YY_BREAK +case 51: +YY_RULE_SETUP +#line 97 "bfin-lex.l" +_REG.regno = REG_EMUDAT; return REG; + YY_BREAK +case 52: +YY_RULE_SETUP +#line 98 "bfin-lex.l" +return RAISE; + YY_BREAK +case 53: +YY_RULE_SETUP +#line 100 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_R, yytext); + YY_BREAK +case 54: +YY_RULE_SETUP +#line 102 "bfin-lex.l" +return R; + YY_BREAK +case 55: +YY_RULE_SETUP +#line 103 "bfin-lex.l" +return PRNT; + YY_BREAK +case 56: +YY_RULE_SETUP +#line 104 "bfin-lex.l" +return PC; + YY_BREAK +case 57: +YY_RULE_SETUP +#line 105 "bfin-lex.l" +return PACK; + YY_BREAK +case 58: +YY_RULE_SETUP +#line 107 "bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_P, yytext); + YY_BREAK +case 59: +YY_RULE_SETUP +#line 108 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_P, yytext); + YY_BREAK +case 60: +YY_RULE_SETUP +#line 110 "bfin-lex.l" +return OUTC; + YY_BREAK +case 61: +YY_RULE_SETUP +#line 111 "bfin-lex.l" +return ONES; + YY_BREAK +case 62: +YY_RULE_SETUP +#line 113 "bfin-lex.l" +return NOT; + YY_BREAK +case 63: +YY_RULE_SETUP +#line 114 "bfin-lex.l" +return NOP; + YY_BREAK +case 64: +YY_RULE_SETUP +#line 115 "bfin-lex.l" +return MNOP; + YY_BREAK +case 65: +YY_RULE_SETUP +#line 116 "bfin-lex.l" +return NS; + YY_BREAK +case 66: +YY_RULE_SETUP +#line 119 "bfin-lex.l" +return MIN; + YY_BREAK +case 67: +YY_RULE_SETUP +#line 120 "bfin-lex.l" +return MAX; + YY_BREAK +case 68: +YY_RULE_SETUP +#line 122 "bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_M, yytext); + YY_BREAK +case 69: +YY_RULE_SETUP +#line 123 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_M, yytext); + YY_BREAK +case 70: +YY_RULE_SETUP +#line 125 "bfin-lex.l" +return M; + YY_BREAK +case 71: +YY_RULE_SETUP +#line 126 "bfin-lex.l" +return LT; + YY_BREAK +case 72: +YY_RULE_SETUP +#line 127 "bfin-lex.l" +return LSHIFT; + YY_BREAK +case 73: +YY_RULE_SETUP +#line 128 "bfin-lex.l" +return LSETUP; + YY_BREAK +case 74: +YY_RULE_SETUP +#line 129 "bfin-lex.l" +return LOOP; + YY_BREAK +case 75: +YY_RULE_SETUP +#line 130 "bfin-lex.l" +return LOOP_BEGIN; + YY_BREAK +case 76: +YY_RULE_SETUP +#line 131 "bfin-lex.l" +return LOOP_END; + YY_BREAK +case 77: +YY_RULE_SETUP +#line 133 "bfin-lex.l" +return LE; + YY_BREAK +case 78: +YY_RULE_SETUP +#line 134 "bfin-lex.l" +_REG.regno = REG_LC0; return REG; + YY_BREAK +case 79: +YY_RULE_SETUP +#line 135 "bfin-lex.l" +_REG.regno = REG_LT0; return REG; + YY_BREAK +case 80: +YY_RULE_SETUP +#line 136 "bfin-lex.l" +_REG.regno = REG_LB0; return REG; + YY_BREAK +case 81: +YY_RULE_SETUP +#line 137 "bfin-lex.l" +_REG.regno = REG_LC1; return REG; + YY_BREAK +case 82: +YY_RULE_SETUP +#line 138 "bfin-lex.l" +_REG.regno = REG_LT1; return REG; + YY_BREAK +case 83: +YY_RULE_SETUP +#line 139 "bfin-lex.l" +_REG.regno = REG_LB1; return REG; + YY_BREAK +case 84: +YY_RULE_SETUP +#line 141 "bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_L, yytext); + YY_BREAK +case 85: +YY_RULE_SETUP +#line 142 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_L, yytext); + YY_BREAK +case 86: +YY_RULE_SETUP +#line 143 "bfin-lex.l" +return LO; + YY_BREAK +case 87: +YY_RULE_SETUP +#line 144 "bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_S;} + YY_BREAK +case 88: +YY_RULE_SETUP +#line 145 "bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_L;} + YY_BREAK +case 89: +YY_RULE_SETUP +#line 146 "bfin-lex.l" +{ BEGIN 0; return JUMP;} + YY_BREAK +case 90: +YY_RULE_SETUP +#line 147 "bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_L; } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 148 "bfin-lex.l" +yylval.value = M_IU; return MMOD; + YY_BREAK +case 92: +YY_RULE_SETUP +#line 149 "bfin-lex.l" +yylval.value = M_ISS2; return MMOD; + YY_BREAK +case 93: +YY_RULE_SETUP +#line 150 "bfin-lex.l" +yylval.value = M_IS; return MMOD; + YY_BREAK +case 94: +YY_RULE_SETUP +#line 151 "bfin-lex.l" +yylval.value = M_IH; return MMOD; + YY_BREAK +case 95: +YY_RULE_SETUP +#line 152 "bfin-lex.l" +return IF; + YY_BREAK +case 96: +YY_RULE_SETUP +#line 153 "bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_I, yytext); + YY_BREAK +case 97: +YY_RULE_SETUP +#line 154 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_I, yytext); + YY_BREAK +case 98: +YY_RULE_SETUP +#line 155 "bfin-lex.l" +return HLT; + YY_BREAK +case 99: +YY_RULE_SETUP +#line 156 "bfin-lex.l" +return HI; + YY_BREAK +case 100: +YY_RULE_SETUP +#line 157 "bfin-lex.l" +return GT; + YY_BREAK +case 101: +YY_RULE_SETUP +#line 158 "bfin-lex.l" +return GE; + YY_BREAK +case 102: +YY_RULE_SETUP +#line 159 "bfin-lex.l" +yylval.value = M_FU; return MMOD; + YY_BREAK +case 103: +YY_RULE_SETUP +#line 160 "bfin-lex.l" +_REG.regno = REG_FP; return REG; + YY_BREAK +case 104: +YY_RULE_SETUP +#line 161 "bfin-lex.l" +_REG.regno = REG_FP; _REG.flags = F_REG_LOW; return HALF_REG; + YY_BREAK +case 105: +YY_RULE_SETUP +#line 162 "bfin-lex.l" +_REG.regno = REG_FP; _REG.flags = F_REG_HIGH; return HALF_REG; + YY_BREAK +case 106: +YY_RULE_SETUP +#line 164 "bfin-lex.l" +return EXTRACT; + YY_BREAK +case 107: +YY_RULE_SETUP +#line 165 "bfin-lex.l" +return EXPADJ; + YY_BREAK +case 108: +YY_RULE_SETUP +#line 166 "bfin-lex.l" +return EXCPT; + YY_BREAK +case 109: +YY_RULE_SETUP +#line 167 "bfin-lex.l" +return EMUEXCPT; + YY_BREAK +case 110: +YY_RULE_SETUP +#line 168 "bfin-lex.l" +return DIVS; + YY_BREAK +case 111: +YY_RULE_SETUP +#line 169 "bfin-lex.l" +return DIVQ; + YY_BREAK +case 112: +YY_RULE_SETUP +#line 170 "bfin-lex.l" +return DISALGNEXCPT; + YY_BREAK +case 113: +YY_RULE_SETUP +#line 171 "bfin-lex.l" +return DEPOSIT; + YY_BREAK +case 114: +YY_RULE_SETUP +#line 172 "bfin-lex.l" +return DBGHALT; + YY_BREAK +case 115: +YY_RULE_SETUP +#line 173 "bfin-lex.l" +return DBGCMPLX; + YY_BREAK +case 116: +YY_RULE_SETUP +#line 174 "bfin-lex.l" +return DBGAL; + YY_BREAK +case 117: +YY_RULE_SETUP +#line 175 "bfin-lex.l" +return DBGAH; + YY_BREAK +case 118: +YY_RULE_SETUP +#line 176 "bfin-lex.l" +return DBGA; + YY_BREAK +case 119: +YY_RULE_SETUP +#line 177 "bfin-lex.l" +return DBG; + YY_BREAK +case 120: +YY_RULE_SETUP +#line 178 "bfin-lex.l" +{ _REG.regno = REG_CYCLES2; return REG; } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 179 "bfin-lex.l" +{ _REG.regno = REG_CYCLES; return REG; } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 180 "bfin-lex.l" +return CSYNC; + YY_BREAK +case 123: +YY_RULE_SETUP +#line 181 "bfin-lex.l" +return CO; + YY_BREAK +case 124: +YY_RULE_SETUP +#line 182 "bfin-lex.l" +return CLI; + YY_BREAK +case 125: +YY_RULE_SETUP +#line 184 "bfin-lex.l" +_REG.regno = REG_CC; return CCREG; + YY_BREAK +case 126: +YY_RULE_SETUP +#line 185 "bfin-lex.l" +{ BEGIN 0; return CALL;} + YY_BREAK +case 127: +YY_RULE_SETUP +#line 186 "bfin-lex.l" +{ BEGIN 0; return CALL;} + YY_BREAK +case 128: +YY_RULE_SETUP +#line 187 "bfin-lex.l" +return BYTEUNPACK; + YY_BREAK +case 129: +YY_RULE_SETUP +#line 188 "bfin-lex.l" +return BYTEPACK; + YY_BREAK +case 130: +YY_RULE_SETUP +#line 189 "bfin-lex.l" +return BYTEOP16M; + YY_BREAK +case 131: +YY_RULE_SETUP +#line 190 "bfin-lex.l" +return BYTEOP16P; + YY_BREAK +case 132: +YY_RULE_SETUP +#line 191 "bfin-lex.l" +return BYTEOP3P; + YY_BREAK +case 133: +YY_RULE_SETUP +#line 192 "bfin-lex.l" +return BYTEOP2P; + YY_BREAK +case 134: +YY_RULE_SETUP +#line 193 "bfin-lex.l" +return BYTEOP1P; + YY_BREAK +case 135: +YY_RULE_SETUP +#line 194 "bfin-lex.l" +return BY; + YY_BREAK +case 136: +YY_RULE_SETUP +#line 195 "bfin-lex.l" +return BXORSHIFT; + YY_BREAK +case 137: +YY_RULE_SETUP +#line 196 "bfin-lex.l" +return BXOR; + YY_BREAK +case 138: +YY_RULE_SETUP +#line 198 "bfin-lex.l" +return BREV; + YY_BREAK +case 139: +YY_RULE_SETUP +#line 199 "bfin-lex.l" +return BP; + YY_BREAK +case 140: +YY_RULE_SETUP +#line 200 "bfin-lex.l" +return BITTST; + YY_BREAK +case 141: +YY_RULE_SETUP +#line 201 "bfin-lex.l" +return BITTGL; + YY_BREAK +case 142: +YY_RULE_SETUP +#line 202 "bfin-lex.l" +return BITSET; + YY_BREAK +case 143: +YY_RULE_SETUP +#line 203 "bfin-lex.l" +return BITMUX; + YY_BREAK +case 144: +YY_RULE_SETUP +#line 204 "bfin-lex.l" +return BITCLR; + YY_BREAK +case 145: +YY_RULE_SETUP +#line 205 "bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_B, yytext); + YY_BREAK +case 146: +YY_RULE_SETUP +#line 206 "bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_B, yytext); + YY_BREAK +case 147: +YY_RULE_SETUP +#line 207 "bfin-lex.l" +return B; + YY_BREAK +case 148: +YY_RULE_SETUP +#line 208 "bfin-lex.l" +_REG.regno = S_AZ; return STATUS_REG; + YY_BREAK +case 149: +YY_RULE_SETUP +#line 209 "bfin-lex.l" +_REG.regno = S_AN; return STATUS_REG; + YY_BREAK +case 150: +YY_RULE_SETUP +#line 210 "bfin-lex.l" +_REG.regno = S_AC0_COPY; return STATUS_REG; + YY_BREAK +case 151: +YY_RULE_SETUP +#line 211 "bfin-lex.l" +_REG.regno = S_V_COPY; return STATUS_REG; + YY_BREAK +case 152: +YY_RULE_SETUP +#line 212 "bfin-lex.l" +_REG.regno = S_AQ; return STATUS_REG; + YY_BREAK +case 153: +YY_RULE_SETUP +#line 213 "bfin-lex.l" +_REG.regno = S_AC0; return STATUS_REG; + YY_BREAK +case 154: +YY_RULE_SETUP +#line 214 "bfin-lex.l" +_REG.regno = S_AC1; return STATUS_REG; + YY_BREAK +case 155: +YY_RULE_SETUP +#line 215 "bfin-lex.l" +_REG.regno = S_AV0; return STATUS_REG; + YY_BREAK +case 156: +YY_RULE_SETUP +#line 216 "bfin-lex.l" +_REG.regno = S_AV0S; return STATUS_REG; + YY_BREAK +case 157: +YY_RULE_SETUP +#line 217 "bfin-lex.l" +_REG.regno = S_AV1; return STATUS_REG; + YY_BREAK +case 158: +YY_RULE_SETUP +#line 218 "bfin-lex.l" +_REG.regno = S_AV1S; return STATUS_REG; + YY_BREAK +case 159: +YY_RULE_SETUP +#line 219 "bfin-lex.l" +_REG.regno = S_VS; return STATUS_REG; + YY_BREAK +case 160: +YY_RULE_SETUP +#line 220 "bfin-lex.l" +_REG.regno = S_RND_MOD; return STATUS_REG; + YY_BREAK +case 161: +YY_RULE_SETUP +#line 223 "bfin-lex.l" +_REG.regno = REG_ASTAT; return REG; + YY_BREAK +case 162: +YY_RULE_SETUP +#line 224 "bfin-lex.l" +return ASHIFT; + YY_BREAK +case 163: +YY_RULE_SETUP +#line 225 "bfin-lex.l" +return ASL; + YY_BREAK +case 164: +YY_RULE_SETUP +#line 226 "bfin-lex.l" +return ASR; + YY_BREAK +case 165: +YY_RULE_SETUP +#line 227 "bfin-lex.l" +return ALIGN8; + YY_BREAK +case 166: +YY_RULE_SETUP +#line 228 "bfin-lex.l" +return ALIGN16; + YY_BREAK +case 167: +YY_RULE_SETUP +#line 229 "bfin-lex.l" +return ALIGN24; + YY_BREAK +case 168: +YY_RULE_SETUP +#line 230 "bfin-lex.l" +return A_ONE_DOT_L; + YY_BREAK +case 169: +YY_RULE_SETUP +#line 231 "bfin-lex.l" +return A_ZERO_DOT_L; + YY_BREAK +case 170: +YY_RULE_SETUP +#line 232 "bfin-lex.l" +return A_ONE_DOT_H; + YY_BREAK +case 171: +YY_RULE_SETUP +#line 233 "bfin-lex.l" +return A_ZERO_DOT_H; + YY_BREAK +case 172: +YY_RULE_SETUP +#line 234 "bfin-lex.l" +return ABS; + YY_BREAK +case 173: +YY_RULE_SETUP +#line 235 "bfin-lex.l" +return ABORT; + YY_BREAK +case 174: +YY_RULE_SETUP +#line 236 "bfin-lex.l" +_REG.regno = REG_A1x; return REG; + YY_BREAK +case 175: +YY_RULE_SETUP +#line 237 "bfin-lex.l" +_REG.regno = REG_A1w; return REG; + YY_BREAK +case 176: +YY_RULE_SETUP +#line 238 "bfin-lex.l" +_REG.regno = REG_A1; return REG_A_DOUBLE_ONE; + YY_BREAK +case 177: +YY_RULE_SETUP +#line 239 "bfin-lex.l" +_REG.regno = REG_A0x; return REG; + YY_BREAK +case 178: +YY_RULE_SETUP +#line 240 "bfin-lex.l" +_REG.regno = REG_A0w; return REG; + YY_BREAK +case 179: +YY_RULE_SETUP +#line 241 "bfin-lex.l" +_REG.regno = REG_A0; return REG_A_DOUBLE_ZERO; + YY_BREAK +case 180: +YY_RULE_SETUP +#line 242 "bfin-lex.l" +return GOT; + YY_BREAK +case 181: +YY_RULE_SETUP +#line 243 "bfin-lex.l" +return GOT17M4; + YY_BREAK +case 182: +YY_RULE_SETUP +#line 244 "bfin-lex.l" +return FUNCDESC_GOT17M4; + YY_BREAK +case 183: +YY_RULE_SETUP +#line 245 "bfin-lex.l" +return PLTPC; + YY_BREAK +case 184: +YY_RULE_SETUP +#line 248 "bfin-lex.l" +return TILDA; + YY_BREAK +case 185: +YY_RULE_SETUP +#line 249 "bfin-lex.l" +return _BAR_ASSIGN; + YY_BREAK +case 186: +YY_RULE_SETUP +#line 250 "bfin-lex.l" +return BAR; + YY_BREAK +case 187: +YY_RULE_SETUP +#line 251 "bfin-lex.l" +return _CARET_ASSIGN; + YY_BREAK +case 188: +YY_RULE_SETUP +#line 252 "bfin-lex.l" +return CARET; + YY_BREAK +case 189: +YY_RULE_SETUP +#line 253 "bfin-lex.l" +return RBRACK; + YY_BREAK +case 190: +YY_RULE_SETUP +#line 254 "bfin-lex.l" +return LBRACK; + YY_BREAK +case 191: +YY_RULE_SETUP +#line 255 "bfin-lex.l" +return _GREATER_GREATER_GREATER_THAN_ASSIGN; + YY_BREAK +case 192: +YY_RULE_SETUP +#line 256 "bfin-lex.l" +return _GREATER_GREATER_ASSIGN; + YY_BREAK +case 193: +YY_RULE_SETUP +#line 257 "bfin-lex.l" +return _GREATER_GREATER_GREATER; + YY_BREAK +case 194: +YY_RULE_SETUP +#line 258 "bfin-lex.l" +return GREATER_GREATER; + YY_BREAK +case 195: +YY_RULE_SETUP +#line 259 "bfin-lex.l" +return _ASSIGN_ASSIGN; + YY_BREAK +case 196: +YY_RULE_SETUP +#line 260 "bfin-lex.l" +return ASSIGN; + YY_BREAK +case 197: +YY_RULE_SETUP +#line 261 "bfin-lex.l" +return _LESS_THAN_ASSIGN; + YY_BREAK +case 198: +YY_RULE_SETUP +#line 262 "bfin-lex.l" +return _LESS_LESS_ASSIGN; + YY_BREAK +case 199: +YY_RULE_SETUP +#line 263 "bfin-lex.l" +return LESS_LESS; + YY_BREAK +case 200: +YY_RULE_SETUP +#line 264 "bfin-lex.l" +return LESS_THAN; + YY_BREAK +case 201: +YY_RULE_SETUP +#line 265 "bfin-lex.l" +BEGIN(FLAGS); return LPAREN; + YY_BREAK +case 202: +YY_RULE_SETUP +#line 266 "bfin-lex.l" +BEGIN(INITIAL); return RPAREN; + YY_BREAK +case 203: +YY_RULE_SETUP +#line 267 "bfin-lex.l" +return COLON; + YY_BREAK +case 204: +YY_RULE_SETUP +#line 268 "bfin-lex.l" +return SLASH; + YY_BREAK +case 205: +YY_RULE_SETUP +#line 269 "bfin-lex.l" +return _MINUS_ASSIGN; + YY_BREAK +case 206: +YY_RULE_SETUP +#line 270 "bfin-lex.l" +return _PLUS_BAR_PLUS; + YY_BREAK +case 207: +YY_RULE_SETUP +#line 271 "bfin-lex.l" +return _MINUS_BAR_PLUS; + YY_BREAK +case 208: +YY_RULE_SETUP +#line 272 "bfin-lex.l" +return _PLUS_BAR_MINUS; + YY_BREAK +case 209: +YY_RULE_SETUP +#line 273 "bfin-lex.l" +return _MINUS_BAR_MINUS; + YY_BREAK +case 210: +YY_RULE_SETUP +#line 274 "bfin-lex.l" +return _MINUS_MINUS; + YY_BREAK +case 211: +YY_RULE_SETUP +#line 275 "bfin-lex.l" +return MINUS; + YY_BREAK +case 212: +YY_RULE_SETUP +#line 276 "bfin-lex.l" +return COMMA; + YY_BREAK +case 213: +YY_RULE_SETUP +#line 277 "bfin-lex.l" +return _PLUS_ASSIGN; + YY_BREAK +case 214: +YY_RULE_SETUP +#line 278 "bfin-lex.l" +return _PLUS_PLUS; + YY_BREAK +case 215: +YY_RULE_SETUP +#line 279 "bfin-lex.l" +return PLUS; + YY_BREAK +case 216: +YY_RULE_SETUP +#line 280 "bfin-lex.l" +return _STAR_ASSIGN; + YY_BREAK +case 217: +YY_RULE_SETUP +#line 281 "bfin-lex.l" +return STAR; + YY_BREAK +case 218: +YY_RULE_SETUP +#line 282 "bfin-lex.l" +return _AMPERSAND_ASSIGN; + YY_BREAK +case 219: +YY_RULE_SETUP +#line 283 "bfin-lex.l" +return AMPERSAND; + YY_BREAK +case 220: +YY_RULE_SETUP +#line 284 "bfin-lex.l" +return PERCENT; + YY_BREAK +case 221: +YY_RULE_SETUP +#line 285 "bfin-lex.l" +return BANG; + YY_BREAK +case 222: +YY_RULE_SETUP +#line 286 "bfin-lex.l" +return SEMICOLON; + YY_BREAK +case 223: +YY_RULE_SETUP +#line 287 "bfin-lex.l" +return _ASSIGN_BANG; + YY_BREAK +case 224: +YY_RULE_SETUP +#line 288 "bfin-lex.l" +return DOUBLE_BAR; + YY_BREAK +case 225: +YY_RULE_SETUP +#line 289 "bfin-lex.l" +return AT; + YY_BREAK +case 226: +YY_RULE_SETUP +#line 290 "bfin-lex.l" +return PREFETCH; + YY_BREAK +case 227: +YY_RULE_SETUP +#line 291 "bfin-lex.l" +return UNLINK; + YY_BREAK +case 228: +YY_RULE_SETUP +#line 292 "bfin-lex.l" +return LINK; + YY_BREAK +case 229: +YY_RULE_SETUP +#line 293 "bfin-lex.l" +return IDLE; + YY_BREAK +case 230: +YY_RULE_SETUP +#line 294 "bfin-lex.l" +return IFLUSH; + YY_BREAK +case 231: +YY_RULE_SETUP +#line 295 "bfin-lex.l" +return FLUSHINV; + YY_BREAK +case 232: +YY_RULE_SETUP +#line 296 "bfin-lex.l" +return FLUSH; + YY_BREAK +case 233: +YY_RULE_SETUP +#line 297 "bfin-lex.l" +{ + yylval.value = parse_int (&yytext); + return NUMBER; + } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 301 "bfin-lex.l" +{ + yylval.symbol = symbol_find_or_make (yytext); + symbol_mark_used (yylval.symbol); + return SYMBOL; + } + YY_BREAK +case 235: +YY_RULE_SETUP +#line 306 "bfin-lex.l" +{ + char *name; + char *ref = strdup (yytext); + if (ref[1] == 'b' || ref[1] == 'B') + { + name = fb_label_name ((int) (ref[0] - '0'), 0); + yylval.symbol = symbol_find (name); + + if ((yylval.symbol != NULL) + && (S_IS_DEFINED (yylval.symbol))) + return SYMBOL; + as_bad ("backward reference to unknown label %d:", + (int) (ref[0] - '0')); + } + else if (ref[1] == 'f' || ref[1] == 'F') + { + /* Forward reference. Expect symbol to be undefined or + unknown. undefined: seen it before. unknown: never seen + it before. + + Construct a local label name, then an undefined symbol. + Just return it as never seen before. */ + + name = fb_label_name ((int) (ref[0] - '0'), 1); + yylval.symbol = symbol_find_or_make (name); + /* We have no need to check symbol properties. */ + return SYMBOL; + } + } + YY_BREAK +case 236: +/* rule 236 can match eol */ +YY_RULE_SETUP +#line 335 "bfin-lex.l" +; + YY_BREAK +case 237: +YY_RULE_SETUP +#line 336 "bfin-lex.l" +; + YY_BREAK +case 238: +YY_RULE_SETUP +#line 337 "bfin-lex.l" +return yytext[0]; + YY_BREAK +case 239: +YY_RULE_SETUP +#line 338 "bfin-lex.l" +ECHO; + YY_BREAK +#line 2340 "bfin-lex.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(KEYWORD): +case YY_STATE_EOF(FLAGS): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 571 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 571 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 570); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register yy_size_t number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 338 "bfin-lex.l" + + +static long parse_int (char **end) +{ + char fmt = '\0'; + int not_done = 1; + int shiftvalue = 0; + char * char_bag; + long value = 0; + char *arg = *end; + + while (*arg && *arg == ' ') + arg++; + + switch (*arg) + { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + fmt = 'd'; + break; + + case '0': /* Accept different formated integers hex octal and binary. */ + { + char c = *++arg; + arg++; + if (c == 'x' || c == 'X') /* Hex input. */ + fmt = 'h'; + else if (c == 'b' || c == 'B') + fmt = 'b'; + else if (c == '.') + fmt = 'f'; + else + { /* Octal. */ + arg--; + fmt = 'o'; + } + break; + } + + case 'd': + case 'D': + case 'h': + case 'H': + case 'o': + case 'O': + case 'b': + case 'B': + case 'f': + case 'F': + { + fmt = *arg++; + if (*arg == '#') + arg++; + } + } + + switch (fmt) + { + case 'h': + case 'H': + shiftvalue = 4; + char_bag = "0123456789ABCDEFabcdef"; + break; + + case 'o': + case 'O': + shiftvalue = 3; + char_bag = "01234567"; + break; + + case 'b': + case 'B': + shiftvalue = 1; + char_bag = "01"; + break; + +/* The assembler allows for fractional constants to be created + by either the 0.xxxx or the f#xxxx format + + i.e. 0.5 would result in 0x4000 + + note .5 would result in the identifier .5. + + The assembler converts to fractional format 1.15 by the simple rule: + + value = (short) (finput * (1 << 15)). */ + + case 'f': + case 'F': + { + float fval = 0.0; + float pos = 10.0; + while (1) + { + int c; + c = *arg++; + + if (c >= '0' && c <= '9') + { + float digit = (c - '0') / pos; + fval = fval + digit; + pos = pos * 10.0; + } + else + { + *--arg = c; + value = (short) (fval * (1 << 15)); + break; + } + } + *end = arg+1; + return value; + } + + case 'd': + case 'D': + default: + { + while (1) + { + char c; + c = *arg++; + if (c >= '0' && c <= '9') + value = (value * 10) + (c - '0'); + else + { + /* Constants that are suffixed with k|K are multiplied by 1024 + This suffix is only allowed on decimal constants. */ + if (c == 'k' || c == 'K') + value *= 1024; + else + *--arg = c; + break; + } + } + *end = arg+1; + return value; + } + } + + while (not_done) + { + char c; + c = *arg++; + if (c == 0 || !strchr (char_bag, c)) + { + not_done = 0; + *--arg = c; + } + else + { + if (c >= 'a' && c <= 'z') + c = c - ('a' - '9') + 1; + else if (c >= 'A' && c <= 'Z') + c = c - ('A' - '9') + 1; + + c -= '0'; + value = (value << shiftvalue) + c; + } + } + *end = arg+1; + return value; +} + + +static int parse_reg (Register *r, int cl, char *rt) +{ + r->regno = cl | (rt[1] - '0'); + r->flags = F_REG_NONE; + return REG; +} + +static int parse_halfreg (Register *r, int cl, char *rt) +{ + r->regno = cl | (rt[1] - '0'); + + switch (rt[3]) + { + case 'b': + case 'B': + return BYTE_DREG; + + case 'l': + case 'L': + r->flags = F_REG_LOW; + break; + + case 'h': + case 'H': + r->flags = F_REG_HIGH; + break; + } + + return HALF_REG; +} + +/* Our start state is KEYWORD as we have + command keywords such as PREFETCH. */ + +void +set_start_state (void) +{ + BEGIN KEYWORD; +} + + +#ifndef yywrap +int +yywrap () +{ + return 1; +} +#endif + diff --git a/gas/bfin-parse.c b/gas/bfin-parse.c new file mode 100644 index 00000000000..89442b79391 --- /dev/null +++ b/gas/bfin-parse.c @@ -0,0 +1,7953 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + BYTEOP16P = 258, + BYTEOP16M = 259, + BYTEOP1P = 260, + BYTEOP2P = 261, + BYTEOP3P = 262, + BYTEUNPACK = 263, + BYTEPACK = 264, + PACK = 265, + SAA = 266, + ALIGN8 = 267, + ALIGN16 = 268, + ALIGN24 = 269, + VIT_MAX = 270, + EXTRACT = 271, + DEPOSIT = 272, + EXPADJ = 273, + SEARCH = 274, + ONES = 275, + SIGN = 276, + SIGNBITS = 277, + LINK = 278, + UNLINK = 279, + REG = 280, + PC = 281, + CCREG = 282, + BYTE_DREG = 283, + REG_A_DOUBLE_ZERO = 284, + REG_A_DOUBLE_ONE = 285, + A_ZERO_DOT_L = 286, + A_ZERO_DOT_H = 287, + A_ONE_DOT_L = 288, + A_ONE_DOT_H = 289, + HALF_REG = 290, + NOP = 291, + RTI = 292, + RTS = 293, + RTX = 294, + RTN = 295, + RTE = 296, + HLT = 297, + IDLE = 298, + STI = 299, + CLI = 300, + CSYNC = 301, + SSYNC = 302, + EMUEXCPT = 303, + RAISE = 304, + EXCPT = 305, + LSETUP = 306, + LOOP = 307, + LOOP_BEGIN = 308, + LOOP_END = 309, + DISALGNEXCPT = 310, + JUMP = 311, + JUMP_DOT_S = 312, + JUMP_DOT_L = 313, + CALL = 314, + ABORT = 315, + NOT = 316, + TILDA = 317, + BANG = 318, + AMPERSAND = 319, + BAR = 320, + PERCENT = 321, + CARET = 322, + BXOR = 323, + MINUS = 324, + PLUS = 325, + STAR = 326, + SLASH = 327, + NEG = 328, + MIN = 329, + MAX = 330, + ABS = 331, + DOUBLE_BAR = 332, + _PLUS_BAR_PLUS = 333, + _PLUS_BAR_MINUS = 334, + _MINUS_BAR_PLUS = 335, + _MINUS_BAR_MINUS = 336, + _MINUS_MINUS = 337, + _PLUS_PLUS = 338, + SHIFT = 339, + LSHIFT = 340, + ASHIFT = 341, + BXORSHIFT = 342, + _GREATER_GREATER_GREATER_THAN_ASSIGN = 343, + ROT = 344, + LESS_LESS = 345, + GREATER_GREATER = 346, + _GREATER_GREATER_GREATER = 347, + _LESS_LESS_ASSIGN = 348, + _GREATER_GREATER_ASSIGN = 349, + DIVS = 350, + DIVQ = 351, + ASSIGN = 352, + _STAR_ASSIGN = 353, + _BAR_ASSIGN = 354, + _CARET_ASSIGN = 355, + _AMPERSAND_ASSIGN = 356, + _MINUS_ASSIGN = 357, + _PLUS_ASSIGN = 358, + _ASSIGN_BANG = 359, + _LESS_THAN_ASSIGN = 360, + _ASSIGN_ASSIGN = 361, + GE = 362, + LT = 363, + LE = 364, + GT = 365, + LESS_THAN = 366, + FLUSHINV = 367, + FLUSH = 368, + IFLUSH = 369, + PREFETCH = 370, + PRNT = 371, + OUTC = 372, + WHATREG = 373, + TESTSET = 374, + ASL = 375, + ASR = 376, + B = 377, + W = 378, + NS = 379, + S = 380, + CO = 381, + SCO = 382, + TH = 383, + TL = 384, + BP = 385, + BREV = 386, + X = 387, + Z = 388, + M = 389, + MMOD = 390, + R = 391, + RND = 392, + RNDL = 393, + RNDH = 394, + RND12 = 395, + RND20 = 396, + V = 397, + LO = 398, + HI = 399, + BITTGL = 400, + BITCLR = 401, + BITSET = 402, + BITTST = 403, + BITMUX = 404, + DBGAL = 405, + DBGAH = 406, + DBGHALT = 407, + DBG = 408, + DBGA = 409, + DBGCMPLX = 410, + IF = 411, + COMMA = 412, + BY = 413, + COLON = 414, + SEMICOLON = 415, + RPAREN = 416, + LPAREN = 417, + LBRACK = 418, + RBRACK = 419, + STATUS_REG = 420, + MNOP = 421, + SYMBOL = 422, + NUMBER = 423, + GOT = 424, + GOT17M4 = 425, + FUNCDESC_GOT17M4 = 426, + AT = 427, + PLTPC = 428 + }; +#endif +/* Tokens. */ +#define BYTEOP16P 258 +#define BYTEOP16M 259 +#define BYTEOP1P 260 +#define BYTEOP2P 261 +#define BYTEOP3P 262 +#define BYTEUNPACK 263 +#define BYTEPACK 264 +#define PACK 265 +#define SAA 266 +#define ALIGN8 267 +#define ALIGN16 268 +#define ALIGN24 269 +#define VIT_MAX 270 +#define EXTRACT 271 +#define DEPOSIT 272 +#define EXPADJ 273 +#define SEARCH 274 +#define ONES 275 +#define SIGN 276 +#define SIGNBITS 277 +#define LINK 278 +#define UNLINK 279 +#define REG 280 +#define PC 281 +#define CCREG 282 +#define BYTE_DREG 283 +#define REG_A_DOUBLE_ZERO 284 +#define REG_A_DOUBLE_ONE 285 +#define A_ZERO_DOT_L 286 +#define A_ZERO_DOT_H 287 +#define A_ONE_DOT_L 288 +#define A_ONE_DOT_H 289 +#define HALF_REG 290 +#define NOP 291 +#define RTI 292 +#define RTS 293 +#define RTX 294 +#define RTN 295 +#define RTE 296 +#define HLT 297 +#define IDLE 298 +#define STI 299 +#define CLI 300 +#define CSYNC 301 +#define SSYNC 302 +#define EMUEXCPT 303 +#define RAISE 304 +#define EXCPT 305 +#define LSETUP 306 +#define LOOP 307 +#define LOOP_BEGIN 308 +#define LOOP_END 309 +#define DISALGNEXCPT 310 +#define JUMP 311 +#define JUMP_DOT_S 312 +#define JUMP_DOT_L 313 +#define CALL 314 +#define ABORT 315 +#define NOT 316 +#define TILDA 317 +#define BANG 318 +#define AMPERSAND 319 +#define BAR 320 +#define PERCENT 321 +#define CARET 322 +#define BXOR 323 +#define MINUS 324 +#define PLUS 325 +#define STAR 326 +#define SLASH 327 +#define NEG 328 +#define MIN 329 +#define MAX 330 +#define ABS 331 +#define DOUBLE_BAR 332 +#define _PLUS_BAR_PLUS 333 +#define _PLUS_BAR_MINUS 334 +#define _MINUS_BAR_PLUS 335 +#define _MINUS_BAR_MINUS 336 +#define _MINUS_MINUS 337 +#define _PLUS_PLUS 338 +#define SHIFT 339 +#define LSHIFT 340 +#define ASHIFT 341 +#define BXORSHIFT 342 +#define _GREATER_GREATER_GREATER_THAN_ASSIGN 343 +#define ROT 344 +#define LESS_LESS 345 +#define GREATER_GREATER 346 +#define _GREATER_GREATER_GREATER 347 +#define _LESS_LESS_ASSIGN 348 +#define _GREATER_GREATER_ASSIGN 349 +#define DIVS 350 +#define DIVQ 351 +#define ASSIGN 352 +#define _STAR_ASSIGN 353 +#define _BAR_ASSIGN 354 +#define _CARET_ASSIGN 355 +#define _AMPERSAND_ASSIGN 356 +#define _MINUS_ASSIGN 357 +#define _PLUS_ASSIGN 358 +#define _ASSIGN_BANG 359 +#define _LESS_THAN_ASSIGN 360 +#define _ASSIGN_ASSIGN 361 +#define GE 362 +#define LT 363 +#define LE 364 +#define GT 365 +#define LESS_THAN 366 +#define FLUSHINV 367 +#define FLUSH 368 +#define IFLUSH 369 +#define PREFETCH 370 +#define PRNT 371 +#define OUTC 372 +#define WHATREG 373 +#define TESTSET 374 +#define ASL 375 +#define ASR 376 +#define B 377 +#define W 378 +#define NS 379 +#define S 380 +#define CO 381 +#define SCO 382 +#define TH 383 +#define TL 384 +#define BP 385 +#define BREV 386 +#define X 387 +#define Z 388 +#define M 389 +#define MMOD 390 +#define R 391 +#define RND 392 +#define RNDL 393 +#define RNDH 394 +#define RND12 395 +#define RND20 396 +#define V 397 +#define LO 398 +#define HI 399 +#define BITTGL 400 +#define BITCLR 401 +#define BITSET 402 +#define BITTST 403 +#define BITMUX 404 +#define DBGAL 405 +#define DBGAH 406 +#define DBGHALT 407 +#define DBG 408 +#define DBGA 409 +#define DBGCMPLX 410 +#define IF 411 +#define COMMA 412 +#define BY 413 +#define COLON 414 +#define SEMICOLON 415 +#define RPAREN 416 +#define LPAREN 417 +#define LBRACK 418 +#define RBRACK 419 +#define STATUS_REG 420 +#define MNOP 421 +#define SYMBOL 422 +#define NUMBER 423 +#define GOT 424 +#define GOT17M4 425 +#define FUNCDESC_GOT17M4 426 +#define AT 427 +#define PLTPC 428 + + + + +/* Copy the first part of user declarations. */ +#line 20 "bfin-parse.y" + + +#include "as.h" + +#include "bfin-aux.h" /* Opcode generating auxiliaries. */ +#include "libbfd.h" +#include "elf/common.h" +#include "elf/bfin.h" + +#define DSP32ALU(aopcde, HL, dst1, dst0, src0, src1, s, x, aop) \ + bfin_gen_dsp32alu (HL, aopcde, aop, s, x, dst0, dst1, src0, src1) + +#define DSP32MAC(op1, MM, mmod, w1, P, h01, h11, h00, h10, dst, op0, src0, src1, w0) \ + bfin_gen_dsp32mac (op1, MM, mmod, w1, P, h01, h11, h00, h10, op0, \ + dst, src0, src1, w0) + +#define DSP32MULT(op1, MM, mmod, w1, P, h01, h11, h00, h10, dst, op0, src0, src1, w0) \ + bfin_gen_dsp32mult (op1, MM, mmod, w1, P, h01, h11, h00, h10, op0, \ + dst, src0, src1, w0) + +#define DSP32SHIFT(sopcde, dst0, src0, src1, sop, hls) \ + bfin_gen_dsp32shift (sopcde, dst0, src0, src1, sop, hls) + +#define DSP32SHIFTIMM(sopcde, dst0, immag, src1, sop, hls) \ + bfin_gen_dsp32shiftimm (sopcde, dst0, immag, src1, sop, hls) + +#define LDIMMHALF_R(reg, h, s, z, hword) \ + bfin_gen_ldimmhalf (reg, h, s, z, hword, 1) + +#define LDIMMHALF_R5(reg, h, s, z, hword) \ + bfin_gen_ldimmhalf (reg, h, s, z, hword, 2) + +#define LDSTIDXI(ptr, reg, w, sz, z, offset) \ + bfin_gen_ldstidxi (ptr, reg, w, sz, z, offset) + +#define LDST(ptr, reg, aop, sz, z, w) \ + bfin_gen_ldst (ptr, reg, aop, sz, z, w) + +#define LDSTII(ptr, reg, offset, w, op) \ + bfin_gen_ldstii (ptr, reg, offset, w, op) + +#define DSPLDST(i, m, reg, aop, w) \ + bfin_gen_dspldst (i, reg, aop, w, m) + +#define LDSTPMOD(ptr, reg, idx, aop, w) \ + bfin_gen_ldstpmod (ptr, reg, aop, w, idx) + +#define LDSTIIFP(offset, reg, w) \ + bfin_gen_ldstiifp (reg, offset, w) + +#define LOGI2OP(dst, src, opc) \ + bfin_gen_logi2op (opc, src, dst.regno & CODE_MASK) + +#define ALU2OP(dst, src, opc) \ + bfin_gen_alu2op (dst, src, opc) + +#define BRCC(t, b, offset) \ + bfin_gen_brcc (t, b, offset) + +#define UJUMP(offset) \ + bfin_gen_ujump (offset) + +#define PROGCTRL(prgfunc, poprnd) \ + bfin_gen_progctrl (prgfunc, poprnd) + +#define PUSHPOPMULTIPLE(dr, pr, d, p, w) \ + bfin_gen_pushpopmultiple (dr, pr, d, p, w) + +#define PUSHPOPREG(reg, w) \ + bfin_gen_pushpopreg (reg, w) + +#define CALLA(addr, s) \ + bfin_gen_calla (addr, s) + +#define LINKAGE(r, framesize) \ + bfin_gen_linkage (r, framesize) + +#define COMPI2OPD(dst, src, op) \ + bfin_gen_compi2opd (dst, src, op) + +#define COMPI2OPP(dst, src, op) \ + bfin_gen_compi2opp (dst, src, op) + +#define DAGMODIK(i, op) \ + bfin_gen_dagmodik (i, op) + +#define DAGMODIM(i, m, op, br) \ + bfin_gen_dagmodim (i, m, op, br) + +#define COMP3OP(dst, src0, src1, opc) \ + bfin_gen_comp3op (src0, src1, dst, opc) + +#define PTR2OP(dst, src, opc) \ + bfin_gen_ptr2op (dst, src, opc) + +#define CCFLAG(x, y, opc, i, g) \ + bfin_gen_ccflag (x, y, opc, i, g) + +#define CCMV(src, dst, t) \ + bfin_gen_ccmv (src, dst, t) + +#define CACTRL(reg, a, op) \ + bfin_gen_cactrl (reg, a, op) + +#define LOOPSETUP(soffset, c, rop, eoffset, reg) \ + bfin_gen_loopsetup (soffset, c, rop, eoffset, reg) + +#define HL2(r1, r0) (IS_H (r1) << 1 | IS_H (r0)) +#define IS_RANGE(bits, expr, sign, mul) \ + value_match(expr, bits, sign, mul, 1) +#define IS_URANGE(bits, expr, sign, mul) \ + value_match(expr, bits, sign, mul, 0) +#define IS_CONST(expr) (expr->type == Expr_Node_Constant) +#define IS_RELOC(expr) (expr->type != Expr_Node_Constant) +#define IS_IMM(expr, bits) value_match (expr, bits, 0, 1, 1) +#define IS_UIMM(expr, bits) value_match (expr, bits, 0, 1, 0) + +#define IS_PCREL4(expr) \ + (value_match (expr, 4, 0, 2, 0)) + +#define IS_LPPCREL10(expr) \ + (value_match (expr, 10, 0, 2, 0)) + +#define IS_PCREL10(expr) \ + (value_match (expr, 10, 0, 2, 1)) + +#define IS_PCREL12(expr) \ + (value_match (expr, 12, 0, 2, 1)) + +#define IS_PCREL24(expr) \ + (value_match (expr, 24, 0, 2, 1)) + + +static int value_match (Expr_Node *, int, int, int, int); + +extern FILE *errorf; +extern INSTR_T insn; + +static Expr_Node *binary (Expr_Op_Type, Expr_Node *, Expr_Node *); +static Expr_Node *unary (Expr_Op_Type, Expr_Node *); + +static void notethat (char *, ...); + +char *current_inputline; +extern char *yytext; +int yyerror (char *); + +/* Used to set SRCx fields to all 1s as described in the PRM. */ +static Register reg7 = {REG_R7, 0}; + +void error (char *format, ...) +{ + va_list ap; + static char buffer[2000]; + + va_start (ap, format); + vsprintf (buffer, format, ap); + va_end (ap); + + as_bad ("%s", buffer); +} + +int +yyerror (char *msg) +{ + if (msg[0] == '\0') + error ("%s", msg); + + else if (yytext[0] != ';') + error ("%s. Input text was %s.", msg, yytext); + else + error ("%s.", msg); + + return -1; +} + +static int +in_range_p (Expr_Node *exp, int from, int to, unsigned int mask) +{ + int val = EXPR_VALUE (exp); + if (exp->type != Expr_Node_Constant) + return 0; + if (val < from || val > to) + return 0; + return (val & mask) == 0; +} + +extern int yylex (void); + +#define imm3(x) EXPR_VALUE (x) +#define imm4(x) EXPR_VALUE (x) +#define uimm4(x) EXPR_VALUE (x) +#define imm5(x) EXPR_VALUE (x) +#define uimm5(x) EXPR_VALUE (x) +#define imm6(x) EXPR_VALUE (x) +#define imm7(x) EXPR_VALUE (x) +#define uimm8(x) EXPR_VALUE (x) +#define imm16(x) EXPR_VALUE (x) +#define uimm16s4(x) ((EXPR_VALUE (x)) >> 2) +#define uimm16(x) EXPR_VALUE (x) + +/* Return true if a value is inside a range. */ +#define IN_RANGE(x, low, high) \ + (((EXPR_VALUE(x)) >= (low)) && (EXPR_VALUE(x)) <= ((high))) + +/* Auxiliary functions. */ + +static int +valid_dreg_pair (Register *reg1, Expr_Node *reg2) +{ + if (!IS_DREG (*reg1)) + { + yyerror ("Dregs expected"); + return 0; + } + + if (reg1->regno != 1 && reg1->regno != 3) + { + yyerror ("Bad register pair"); + return 0; + } + + if (imm7 (reg2) != reg1->regno - 1) + { + yyerror ("Bad register pair"); + return 0; + } + + reg1->regno--; + return 1; +} + +static int +check_multiply_halfregs (Macfunc *aa, Macfunc *ab) +{ + if ((!REG_EQUAL (aa->s0, ab->s0) && !REG_EQUAL (aa->s0, ab->s1)) + || (!REG_EQUAL (aa->s1, ab->s1) && !REG_EQUAL (aa->s1, ab->s0))) + return yyerror ("Source multiplication register mismatch"); + + return 0; +} + + +/* Check mac option. */ + +static int +check_macfunc_option (Macfunc *a, Opt_mode *opt) +{ + /* Default option is always valid. */ + if (opt->mod == 0) + return 0; + + if ((a->w == 1 && a->P == 1 + && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_IU + && opt->mod != M_S2RND && opt->mod != M_ISS2) + || (a->w == 1 && a->P == 0 + && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_IU + && opt->mod != M_T && opt->mod != M_TFU && opt->mod != M_S2RND + && opt->mod != M_ISS2 && opt->mod != M_IH) + || (a->w == 0 && a->P == 0 + && opt->mod != M_FU && opt->mod != M_IS && opt->mod != M_W32)) + return -1; + + return 0; +} + +/* Check (vector) mac funcs and ops. */ + +static int +check_macfuncs (Macfunc *aa, Opt_mode *opa, + Macfunc *ab, Opt_mode *opb) +{ + /* Variables for swapping. */ + Macfunc mtmp; + Opt_mode otmp; + + /* The option mode should be put at the end of the second instruction + of the vector except M, which should follow MAC1 instruction. */ + if (opa->mod != 0) + return yyerror ("Bad opt mode"); + + /* If a0macfunc comes before a1macfunc, swap them. */ + + if (aa->n == 0) + { + /* (M) is not allowed here. */ + if (opa->MM != 0) + return yyerror ("(M) not allowed with A0MAC"); + if (ab->n != 1) + return yyerror ("Vector AxMACs can't be same"); + + mtmp = *aa; *aa = *ab; *ab = mtmp; + otmp = *opa; *opa = *opb; *opb = otmp; + } + else + { + if (opb->MM != 0) + return yyerror ("(M) not allowed with A0MAC"); + if (ab->n != 0) + return yyerror ("Vector AxMACs can't be same"); + } + + /* If both ops are one of 0, 1, or 2, we have multiply_halfregs in both + assignment_or_macfuncs. */ + if ((aa->op == 0 || aa->op == 1 || aa->op == 2) + && (ab->op == 0 || ab->op == 1 || ab->op == 2)) + { + if (check_multiply_halfregs (aa, ab) < 0) + return -1; + } + else + { + /* Only one of the assign_macfuncs has a half reg multiply + Evil trick: Just 'OR' their source register codes: + We can do that, because we know they were initialized to 0 + in the rules that don't use multiply_halfregs. */ + aa->s0.regno |= (ab->s0.regno & CODE_MASK); + aa->s1.regno |= (ab->s1.regno & CODE_MASK); + } + + if (aa->w == ab->w && aa->P != ab->P) + return yyerror ("Destination Dreg sizes (full or half) must match"); + + if (aa->w && ab->w) + { + if (aa->P && (aa->dst.regno - ab->dst.regno) != 1) + return yyerror ("Destination Dregs (full) must differ by one"); + if (!aa->P && aa->dst.regno != ab->dst.regno) + return yyerror ("Destination Dregs (half) must match"); + } + + /* Make sure mod flags get ORed, too. */ + opb->mod |= opa->mod; + + /* Check option. */ + if (check_macfunc_option (aa, opb) < 0 + && check_macfunc_option (ab, opb) < 0) + return yyerror ("bad option"); + + /* Make sure first macfunc has got both P flags ORed. */ + aa->P |= ab->P; + + return 0; +} + + +static int +is_group1 (INSTR_T x) +{ + /* Group1 is dpsLDST, LDSTpmod, LDST, LDSTiiFP, LDSTii. */ + if ((x->value & 0xc000) == 0x8000 || (x->value == 0x0000)) + return 1; + + return 0; +} + +static int +is_group2 (INSTR_T x) +{ + if ((((x->value & 0xfc00) == 0x9c00) /* dspLDST. */ + && !((x->value & 0xfde0) == 0x9c60) /* dagMODim. */ + && !((x->value & 0xfde0) == 0x9ce0) /* dagMODim with bit rev. */ + && !((x->value & 0xfde0) == 0x9d60)) /* pick dagMODik. */ + || (x->value == 0x0000)) + return 1; + return 0; +} + +static int +is_store (INSTR_T x) +{ + if (!x) + return 0; + + if ((x->value & 0xf000) == 0x8000) + { + int aop = ((x->value >> 9) & 0x3); + int w = ((x->value >> 11) & 0x1); + if (!w || aop == 3) + return 0; + return 1; + } + + if (((x->value & 0xFF60) == 0x9E60) || /* dagMODim_0 */ + ((x->value & 0xFFF0) == 0x9F60)) /* dagMODik_0 */ + return 0; + + /* decode_dspLDST_0 */ + if ((x->value & 0xFC00) == 0x9C00) + { + int w = ((x->value >> 9) & 0x1); + if (w) + return 1; + } + + return 0; +} + +static INSTR_T +gen_multi_instr_1 (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2) +{ + int mask1 = dsp32 ? insn_regmask (dsp32->value, dsp32->next->value) : 0; + int mask2 = dsp16_grp1 ? insn_regmask (dsp16_grp1->value, 0) : 0; + int mask3 = dsp16_grp2 ? insn_regmask (dsp16_grp2->value, 0) : 0; + + if ((mask1 & mask2) || (mask1 & mask3) || (mask2 & mask3)) + yyerror ("resource conflict in multi-issue instruction"); + + /* Anomaly 05000074 */ + if (ENABLE_AC_05000074 + && dsp32 != NULL && dsp16_grp1 != NULL + && (dsp32->value & 0xf780) == 0xc680 + && ((dsp16_grp1->value & 0xfe40) == 0x9240 + || (dsp16_grp1->value & 0xfe08) == 0xba08 + || (dsp16_grp1->value & 0xfc00) == 0xbc00)) + yyerror ("anomaly 05000074 - Multi-Issue Instruction with \ +dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported"); + + if (is_store (dsp16_grp1) && is_store (dsp16_grp2)) + yyerror ("Only one instruction in multi-issue instruction can be a store"); + + return bfin_gen_multi_instr (dsp32, dsp16_grp1, dsp16_grp2); +} + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 446 "bfin-parse.y" +{ + INSTR_T instr; + Expr_Node *expr; + SYMBOL_T symbol; + long value; + Register reg; + Macfunc macfunc; + struct { int r0; int s0; int x0; int aop; } modcodes; + struct { int r0; } r0; + Opt_mode mod; +} +/* Line 193 of yacc.c. */ +#line 880 "bfin-parse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 893 "bfin-parse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 156 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 1309 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 174 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 47 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 354 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 1021 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 428 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 6, 9, 16, 21, 23, 25, + 28, 34, 36, 43, 50, 54, 58, 76, 94, 106, + 118, 130, 143, 156, 169, 175, 179, 183, 187, 196, + 210, 223, 237, 251, 260, 278, 285, 295, 299, 306, + 310, 316, 323, 332, 341, 344, 347, 352, 356, 359, + 364, 368, 375, 380, 388, 396, 400, 404, 411, 415, + 420, 424, 428, 432, 444, 456, 466, 472, 478, 488, + 494, 500, 507, 514, 520, 526, 532, 539, 546, 552, + 554, 558, 562, 566, 570, 575, 580, 590, 600, 606, + 614, 619, 626, 633, 641, 651, 660, 669, 681, 691, + 696, 702, 709, 717, 724, 729, 736, 742, 749, 756, + 761, 770, 781, 792, 805, 811, 818, 824, 831, 836, + 841, 846, 854, 864, 874, 884, 891, 898, 905, 914, + 923, 930, 936, 942, 951, 956, 964, 966, 968, 970, + 972, 974, 976, 978, 980, 982, 984, 987, 990, 995, + 1000, 1007, 1014, 1017, 1020, 1025, 1028, 1031, 1034, 1037, + 1040, 1043, 1050, 1057, 1063, 1068, 1072, 1076, 1080, 1084, + 1088, 1092, 1097, 1100, 1105, 1108, 1113, 1116, 1121, 1124, + 1132, 1141, 1150, 1158, 1166, 1174, 1184, 1192, 1201, 1211, + 1220, 1227, 1235, 1244, 1254, 1263, 1271, 1279, 1286, 1298, + 1306, 1318, 1326, 1330, 1333, 1335, 1343, 1353, 1365, 1369, + 1375, 1383, 1386, 1389, 1392, 1395, 1397, 1399, 1402, 1405, + 1410, 1412, 1414, 1421, 1428, 1435, 1438, 1441, 1443, 1445, + 1446, 1452, 1458, 1462, 1466, 1470, 1474, 1475, 1477, 1479, + 1481, 1483, 1485, 1486, 1490, 1491, 1495, 1499, 1500, 1504, + 1508, 1514, 1520, 1521, 1525, 1529, 1530, 1534, 1538, 1539, + 1543, 1547, 1551, 1557, 1563, 1564, 1568, 1569, 1573, 1575, + 1577, 1579, 1581, 1582, 1586, 1590, 1594, 1600, 1606, 1608, + 1610, 1612, 1613, 1617, 1618, 1622, 1627, 1632, 1634, 1636, + 1638, 1640, 1642, 1644, 1646, 1648, 1652, 1656, 1660, 1664, + 1670, 1676, 1682, 1688, 1692, 1696, 1702, 1708, 1709, 1711, + 1713, 1716, 1719, 1722, 1726, 1728, 1734, 1740, 1744, 1747, + 1750, 1753, 1757, 1759, 1761, 1763, 1765, 1769, 1773, 1777, + 1781, 1783, 1785, 1787, 1789, 1793, 1795, 1797, 1801, 1803, + 1805, 1809, 1812, 1815, 1817, 1821, 1825, 1829, 1833, 1837, + 1841, 1845, 1849, 1853, 1857 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 175, 0, -1, -1, 176, -1, 177, 160, -1, 177, + 77, 177, 77, 177, 160, -1, 177, 77, 177, 160, + -1, 1, -1, 166, -1, 208, 179, -1, 208, 179, + 157, 208, 179, -1, 55, -1, 25, 97, 162, 207, + 178, 161, -1, 35, 97, 162, 207, 178, 161, -1, + 32, 97, 35, -1, 34, 97, 35, -1, 162, 25, + 157, 25, 161, 97, 3, 162, 25, 159, 219, 157, + 25, 159, 219, 161, 192, -1, 162, 25, 157, 25, + 161, 97, 4, 162, 25, 159, 219, 157, 25, 159, + 219, 161, 192, -1, 162, 25, 157, 25, 161, 97, + 8, 25, 159, 219, 192, -1, 162, 25, 157, 25, + 161, 97, 19, 25, 162, 191, 161, -1, 25, 97, + 33, 70, 34, 157, 25, 97, 31, 70, 32, -1, + 25, 97, 178, 70, 178, 157, 25, 97, 178, 69, + 178, 184, -1, 25, 97, 25, 201, 25, 157, 25, + 97, 25, 201, 25, 184, -1, 25, 97, 25, 200, + 25, 157, 25, 97, 25, 200, 25, 185, -1, 25, + 97, 76, 25, 189, -1, 205, 76, 178, -1, 31, + 97, 35, -1, 33, 97, 35, -1, 25, 97, 194, + 162, 25, 157, 25, 161, -1, 25, 97, 5, 162, + 25, 159, 219, 157, 25, 159, 219, 161, 193, -1, + 25, 97, 5, 162, 25, 159, 219, 157, 25, 159, + 219, 161, -1, 25, 97, 6, 162, 25, 159, 219, + 157, 25, 159, 219, 161, 202, -1, 25, 97, 7, + 162, 25, 159, 219, 157, 25, 159, 219, 161, 203, + -1, 25, 97, 9, 162, 25, 157, 25, 161, -1, + 35, 97, 35, 97, 21, 162, 35, 161, 71, 35, + 70, 21, 162, 35, 161, 71, 35, -1, 25, 97, + 25, 201, 25, 184, -1, 25, 97, 199, 162, 25, + 157, 25, 161, 189, -1, 205, 69, 178, -1, 35, + 97, 35, 201, 35, 184, -1, 205, 205, 219, -1, + 205, 178, 162, 125, 161, -1, 35, 97, 25, 162, + 137, 161, -1, 35, 97, 25, 201, 25, 162, 140, + 161, -1, 35, 97, 25, 201, 25, 162, 141, 161, + -1, 205, 178, -1, 205, 25, -1, 25, 97, 35, + 186, -1, 35, 97, 219, -1, 205, 219, -1, 25, + 97, 219, 187, -1, 35, 97, 25, -1, 25, 97, + 25, 200, 25, 183, -1, 25, 97, 28, 186, -1, + 205, 76, 178, 157, 205, 76, 178, -1, 205, 69, + 178, 157, 205, 69, 178, -1, 206, 178, 195, -1, + 25, 102, 219, -1, 25, 103, 25, 162, 131, 161, + -1, 25, 102, 25, -1, 178, 103, 178, 195, -1, + 25, 103, 25, -1, 25, 103, 219, -1, 25, 98, + 25, -1, 11, 162, 25, 159, 219, 157, 25, 159, + 219, 161, 192, -1, 205, 178, 162, 125, 161, 157, + 205, 178, 162, 125, 161, -1, 25, 97, 162, 25, + 70, 25, 161, 90, 219, -1, 25, 97, 25, 65, + 25, -1, 25, 97, 25, 67, 25, -1, 25, 97, + 25, 70, 162, 25, 90, 219, 161, -1, 27, 97, + 178, 106, 178, -1, 27, 97, 178, 111, 178, -1, + 27, 97, 25, 111, 25, 196, -1, 27, 97, 25, + 111, 219, 196, -1, 27, 97, 25, 106, 25, -1, + 27, 97, 25, 106, 219, -1, 27, 97, 178, 105, + 178, -1, 27, 97, 25, 105, 25, 196, -1, 27, + 97, 25, 105, 219, 196, -1, 25, 97, 25, 64, + 25, -1, 212, -1, 25, 97, 25, -1, 27, 97, + 25, -1, 25, 97, 27, -1, 27, 104, 27, -1, + 35, 97, 210, 179, -1, 25, 97, 210, 179, -1, + 35, 97, 210, 179, 157, 35, 97, 210, 179, -1, + 25, 97, 210, 179, 157, 25, 97, 210, 179, -1, + 205, 86, 178, 158, 35, -1, 35, 97, 86, 35, + 158, 35, 190, -1, 205, 178, 90, 219, -1, 25, + 97, 25, 90, 219, 188, -1, 35, 97, 35, 90, + 219, 190, -1, 25, 97, 86, 25, 158, 35, 188, + -1, 35, 97, 18, 162, 25, 157, 35, 161, 189, + -1, 35, 97, 18, 162, 35, 157, 35, 161, -1, + 25, 97, 17, 162, 25, 157, 25, 161, -1, 25, + 97, 17, 162, 25, 157, 25, 161, 162, 132, 161, + -1, 25, 97, 16, 162, 25, 157, 35, 161, 186, + -1, 205, 178, 92, 219, -1, 205, 85, 178, 158, + 35, -1, 35, 97, 85, 35, 158, 35, -1, 25, + 97, 85, 25, 158, 35, 189, -1, 25, 97, 84, + 25, 158, 35, -1, 205, 178, 91, 219, -1, 25, + 97, 25, 91, 219, 189, -1, 35, 97, 35, 91, + 219, -1, 35, 97, 35, 92, 219, 190, -1, 25, + 97, 25, 92, 219, 188, -1, 35, 97, 20, 25, + -1, 25, 97, 10, 162, 35, 157, 35, 161, -1, + 35, 97, 27, 97, 87, 162, 178, 157, 25, 161, + -1, 35, 97, 27, 97, 68, 162, 178, 157, 25, + 161, -1, 35, 97, 27, 97, 68, 162, 178, 157, + 178, 157, 27, 161, -1, 205, 89, 178, 158, 35, + -1, 25, 97, 89, 25, 158, 35, -1, 205, 89, + 178, 158, 219, -1, 25, 97, 89, 25, 158, 219, + -1, 35, 97, 22, 178, -1, 35, 97, 22, 25, + -1, 35, 97, 22, 35, -1, 35, 97, 15, 162, + 25, 161, 180, -1, 25, 97, 15, 162, 25, 157, + 25, 161, 180, -1, 149, 162, 25, 157, 25, 157, + 178, 161, 180, -1, 205, 87, 162, 178, 157, 178, + 157, 27, 161, -1, 146, 162, 25, 157, 219, 161, + -1, 147, 162, 25, 157, 219, 161, -1, 145, 162, + 25, 157, 219, 161, -1, 27, 104, 148, 162, 25, + 157, 219, 161, -1, 27, 97, 148, 162, 25, 157, + 219, 161, -1, 156, 63, 27, 25, 97, 25, -1, + 156, 27, 25, 97, 25, -1, 156, 63, 27, 56, + 219, -1, 156, 63, 27, 56, 219, 162, 130, 161, + -1, 156, 27, 56, 219, -1, 156, 27, 56, 219, + 162, 130, 161, -1, 36, -1, 38, -1, 37, -1, + 39, -1, 40, -1, 41, -1, 43, -1, 46, -1, + 47, -1, 48, -1, 45, 25, -1, 44, 25, -1, + 56, 162, 25, 161, -1, 59, 162, 25, 161, -1, + 59, 162, 26, 70, 25, 161, -1, 56, 162, 26, + 70, 25, 161, -1, 49, 219, -1, 50, 219, -1, + 119, 162, 25, 161, -1, 56, 219, -1, 57, 219, + -1, 58, 219, -1, 58, 217, -1, 59, 219, -1, + 59, 217, -1, 96, 162, 25, 157, 25, 161, -1, + 95, 162, 25, 157, 25, 161, -1, 25, 97, 69, + 25, 188, -1, 25, 97, 62, 25, -1, 25, 94, + 25, -1, 25, 94, 219, -1, 25, 88, 25, -1, + 25, 93, 25, -1, 25, 93, 219, -1, 25, 88, + 219, -1, 113, 163, 25, 164, -1, 113, 198, -1, + 112, 163, 25, 164, -1, 112, 198, -1, 114, 163, + 25, 164, -1, 114, 198, -1, 115, 163, 25, 164, + -1, 115, 198, -1, 122, 163, 25, 204, 164, 97, + 25, -1, 122, 163, 25, 201, 219, 164, 97, 25, + -1, 123, 163, 25, 201, 219, 164, 97, 25, -1, + 123, 163, 25, 204, 164, 97, 25, -1, 123, 163, + 25, 204, 164, 97, 35, -1, 163, 25, 201, 219, + 164, 97, 25, -1, 25, 97, 123, 163, 25, 201, + 219, 164, 186, -1, 35, 97, 123, 163, 25, 204, + 164, -1, 25, 97, 123, 163, 25, 204, 164, 186, + -1, 25, 97, 123, 163, 25, 83, 25, 164, 186, + -1, 35, 97, 123, 163, 25, 83, 25, 164, -1, + 163, 25, 204, 164, 97, 25, -1, 163, 25, 83, + 25, 164, 97, 25, -1, 123, 163, 25, 83, 25, + 164, 97, 35, -1, 25, 97, 122, 163, 25, 201, + 219, 164, 186, -1, 25, 97, 122, 163, 25, 204, + 164, 186, -1, 25, 97, 163, 25, 83, 25, 164, + -1, 25, 97, 163, 25, 201, 216, 164, -1, 25, + 97, 163, 25, 204, 164, -1, 197, 97, 162, 25, + 159, 219, 157, 25, 159, 219, 161, -1, 197, 97, + 162, 25, 159, 219, 161, -1, 162, 25, 159, 219, + 157, 25, 159, 219, 161, 97, 198, -1, 162, 25, + 159, 219, 161, 97, 198, -1, 197, 97, 25, -1, + 23, 219, -1, 24, -1, 51, 162, 219, 157, 219, + 161, 25, -1, 51, 162, 219, 157, 219, 161, 25, + 97, 25, -1, 51, 162, 219, 157, 219, 161, 25, + 97, 25, 91, 219, -1, 52, 219, 25, -1, 52, + 219, 25, 97, 25, -1, 52, 219, 25, 97, 25, + 91, 219, -1, 53, 168, -1, 53, 219, -1, 54, + 168, -1, 54, 219, -1, 60, -1, 153, -1, 153, + 178, -1, 153, 25, -1, 155, 162, 25, 161, -1, + 152, -1, 42, -1, 154, 162, 35, 157, 219, 161, + -1, 151, 162, 25, 157, 219, 161, -1, 150, 162, + 25, 157, 219, 161, -1, 117, 219, -1, 117, 25, + -1, 29, -1, 30, -1, -1, 162, 134, 157, 135, + 161, -1, 162, 135, 157, 134, 161, -1, 162, 135, + 161, -1, 162, 134, 161, -1, 162, 120, 161, -1, + 162, 121, 161, -1, -1, 125, -1, 126, -1, 127, + -1, 120, -1, 121, -1, -1, 162, 181, 161, -1, + -1, 162, 124, 161, -1, 162, 125, 161, -1, -1, + 162, 182, 161, -1, 162, 181, 161, -1, 162, 182, + 157, 181, 161, -1, 162, 181, 157, 182, 161, -1, + -1, 162, 133, 161, -1, 162, 132, 161, -1, -1, + 162, 132, 161, -1, 162, 133, 161, -1, -1, 162, + 124, 161, -1, 162, 125, 161, -1, 162, 142, 161, + -1, 162, 142, 157, 125, 161, -1, 162, 125, 157, + 142, 161, -1, -1, 162, 142, 161, -1, -1, 162, + 125, 161, -1, 107, -1, 110, -1, 109, -1, 108, + -1, -1, 162, 136, 161, -1, 162, 136, 161, -1, + 162, 135, 161, -1, 162, 135, 157, 136, 161, -1, + 162, 136, 157, 135, 161, -1, 12, -1, 13, -1, + 14, -1, -1, 162, 135, 161, -1, -1, 162, 135, + 161, -1, 163, 82, 25, 164, -1, 163, 25, 83, + 164, -1, 74, -1, 75, -1, 78, -1, 79, -1, + 80, -1, 81, -1, 70, -1, 69, -1, 162, 139, + 161, -1, 162, 128, 161, -1, 162, 138, 161, -1, + 162, 129, 161, -1, 162, 139, 157, 136, 161, -1, + 162, 128, 157, 136, 161, -1, 162, 138, 157, 136, + 161, -1, 162, 129, 157, 136, 161, -1, 162, 143, + 161, -1, 162, 144, 161, -1, 162, 143, 157, 136, + 161, -1, 162, 144, 157, 136, 161, -1, -1, 83, + -1, 82, -1, 178, 97, -1, 178, 102, -1, 178, + 103, -1, 25, 97, 178, -1, 209, -1, 25, 97, + 162, 209, 161, -1, 35, 97, 162, 209, 161, -1, + 35, 97, 178, -1, 205, 210, -1, 207, 210, -1, + 206, 210, -1, 35, 71, 35, -1, 97, -1, 99, + -1, 101, -1, 100, -1, 27, 211, 165, -1, 27, + 211, 142, -1, 165, 211, 27, -1, 142, 211, 27, + -1, 167, -1, 169, -1, 170, -1, 171, -1, 213, + 172, 214, -1, 215, -1, 219, -1, 213, 172, 173, + -1, 168, -1, 213, -1, 162, 220, 161, -1, 62, + 220, -1, 69, 220, -1, 220, -1, 220, 71, 220, + -1, 220, 72, 220, -1, 220, 66, 220, -1, 220, + 70, 220, -1, 220, 69, 220, -1, 220, 90, 220, + -1, 220, 91, 220, -1, 220, 64, 220, -1, 220, + 67, 220, -1, 220, 65, 220, -1, 218, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 647, 647, 648, 660, 662, 695, 722, 733, 737, + 775, 795, 800, 810, 820, 825, 830, 848, 866, 880, + 893, 909, 931, 949, 974, 996, 1001, 1011, 1022, 1033, + 1047, 1062, 1078, 1094, 1105, 1119, 1145, 1163, 1168, 1174, + 1186, 1197, 1208, 1219, 1230, 1241, 1252, 1278, 1292, 1302, + 1347, 1366, 1377, 1388, 1399, 1410, 1421, 1437, 1454, 1470, + 1481, 1492, 1525, 1536, 1549, 1560, 1599, 1609, 1619, 1639, + 1649, 1659, 1670, 1684, 1695, 1708, 1718, 1730, 1745, 1756, + 1762, 1784, 1795, 1806, 1814, 1840, 1870, 1899, 1930, 1944, + 1955, 1969, 2003, 2021, 2046, 2058, 2076, 2087, 2098, 2109, + 2122, 2133, 2144, 2155, 2166, 2177, 2210, 2220, 2233, 2253, + 2264, 2275, 2288, 2301, 2312, 2323, 2334, 2345, 2355, 2366, + 2377, 2389, 2400, 2411, 2425, 2438, 2450, 2462, 2473, 2484, + 2495, 2507, 2519, 2530, 2541, 2552, 2562, 2568, 2574, 2580, + 2586, 2592, 2598, 2604, 2610, 2616, 2622, 2633, 2644, 2655, + 2666, 2677, 2688, 2699, 2705, 2719, 2730, 2741, 2752, 2763, + 2773, 2786, 2794, 2802, 2826, 2837, 2848, 2859, 2870, 2881, + 2893, 2906, 2915, 2926, 2937, 2949, 2960, 2971, 2982, 2996, + 3008, 3034, 3064, 3075, 3100, 3137, 3165, 3190, 3201, 3212, + 3223, 3249, 3268, 3282, 3306, 3318, 3337, 3383, 3420, 3436, + 3455, 3469, 3488, 3504, 3512, 3521, 3532, 3544, 3558, 3566, + 3576, 3588, 3599, 3609, 3620, 3631, 3637, 3642, 3647, 3653, + 3661, 3667, 3673, 3679, 3685, 3691, 3699, 3713, 3717, 3727, + 3731, 3736, 3741, 3746, 3753, 3757, 3764, 3768, 3773, 3778, + 3786, 3790, 3797, 3801, 3809, 3814, 3820, 3829, 3834, 3840, + 3846, 3852, 3861, 3864, 3868, 3875, 3878, 3882, 3889, 3894, + 3900, 3906, 3912, 3917, 3925, 3928, 3935, 3938, 3945, 3949, + 3953, 3957, 3964, 3967, 3974, 3979, 3986, 3993, 4005, 4009, + 4013, 4020, 4023, 4033, 4036, 4045, 4051, 4060, 4064, 4071, + 4075, 4079, 4083, 4090, 4094, 4101, 4109, 4117, 4125, 4133, + 4140, 4147, 4155, 4165, 4170, 4175, 4180, 4188, 4191, 4195, + 4204, 4211, 4218, 4225, 4240, 4246, 4259, 4272, 4290, 4297, + 4304, 4314, 4327, 4331, 4335, 4339, 4346, 4352, 4358, 4364, + 4374, 4383, 4385, 4387, 4391, 4399, 4403, 4410, 4416, 4422, + 4426, 4430, 4434, 4440, 4446, 4450, 4454, 4458, 4462, 4466, + 4470, 4474, 4478, 4482, 4486 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "BYTEOP16P", "BYTEOP16M", "BYTEOP1P", + "BYTEOP2P", "BYTEOP3P", "BYTEUNPACK", "BYTEPACK", "PACK", "SAA", + "ALIGN8", "ALIGN16", "ALIGN24", "VIT_MAX", "EXTRACT", "DEPOSIT", + "EXPADJ", "SEARCH", "ONES", "SIGN", "SIGNBITS", "LINK", "UNLINK", "REG", + "PC", "CCREG", "BYTE_DREG", "REG_A_DOUBLE_ZERO", "REG_A_DOUBLE_ONE", + "A_ZERO_DOT_L", "A_ZERO_DOT_H", "A_ONE_DOT_L", "A_ONE_DOT_H", "HALF_REG", + "NOP", "RTI", "RTS", "RTX", "RTN", "RTE", "HLT", "IDLE", "STI", "CLI", + "CSYNC", "SSYNC", "EMUEXCPT", "RAISE", "EXCPT", "LSETUP", "LOOP", + "LOOP_BEGIN", "LOOP_END", "DISALGNEXCPT", "JUMP", "JUMP_DOT_S", + "JUMP_DOT_L", "CALL", "ABORT", "NOT", "TILDA", "BANG", "AMPERSAND", + "BAR", "PERCENT", "CARET", "BXOR", "MINUS", "PLUS", "STAR", "SLASH", + "NEG", "MIN", "MAX", "ABS", "DOUBLE_BAR", "_PLUS_BAR_PLUS", + "_PLUS_BAR_MINUS", "_MINUS_BAR_PLUS", "_MINUS_BAR_MINUS", "_MINUS_MINUS", + "_PLUS_PLUS", "SHIFT", "LSHIFT", "ASHIFT", "BXORSHIFT", + "_GREATER_GREATER_GREATER_THAN_ASSIGN", "ROT", "LESS_LESS", + "GREATER_GREATER", "_GREATER_GREATER_GREATER", "_LESS_LESS_ASSIGN", + "_GREATER_GREATER_ASSIGN", "DIVS", "DIVQ", "ASSIGN", "_STAR_ASSIGN", + "_BAR_ASSIGN", "_CARET_ASSIGN", "_AMPERSAND_ASSIGN", "_MINUS_ASSIGN", + "_PLUS_ASSIGN", "_ASSIGN_BANG", "_LESS_THAN_ASSIGN", "_ASSIGN_ASSIGN", + "GE", "LT", "LE", "GT", "LESS_THAN", "FLUSHINV", "FLUSH", "IFLUSH", + "PREFETCH", "PRNT", "OUTC", "WHATREG", "TESTSET", "ASL", "ASR", "B", "W", + "NS", "S", "CO", "SCO", "TH", "TL", "BP", "BREV", "X", "Z", "M", "MMOD", + "R", "RND", "RNDL", "RNDH", "RND12", "RND20", "V", "LO", "HI", "BITTGL", + "BITCLR", "BITSET", "BITTST", "BITMUX", "DBGAL", "DBGAH", "DBGHALT", + "DBG", "DBGA", "DBGCMPLX", "IF", "COMMA", "BY", "COLON", "SEMICOLON", + "RPAREN", "LPAREN", "LBRACK", "RBRACK", "STATUS_REG", "MNOP", "SYMBOL", + "NUMBER", "GOT", "GOT17M4", "FUNCDESC_GOT17M4", "AT", "PLTPC", "$accept", + "statement", "asm", "asm_1", "REG_A", "opt_mode", "asr_asl", "sco", + "asr_asl_0", "amod0", "amod1", "amod2", "xpmod", "xpmod1", "vsmod", + "vmod", "smod", "searchmod", "aligndir", "byteop_mod", "c_align", + "w32_or_nothing", "iu_or_nothing", "reg_with_predec", "reg_with_postinc", + "min_max", "op_bar_op", "plus_minus", "rnd_op", "b3_op", "post_op", + "a_assign", "a_minusassign", "a_plusassign", "assign_macfunc", + "a_macfunc", "multiply_halfregs", "cc_op", "ccstat", "symbol", + "any_gotrel", "got", "got_or_expr", "pltpc", "eterm", "expr", "expr_1", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 174, 175, 175, 176, 176, 176, 176, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 178, 178, 179, + 179, 179, 179, 179, 180, 180, 181, 181, 181, 181, + 182, 182, 183, 183, 184, 184, 184, 185, 185, 185, + 185, 185, 186, 186, 186, 187, 187, 187, 188, 188, + 188, 188, 188, 188, 189, 189, 190, 190, 191, 191, + 191, 191, 192, 192, 193, 193, 193, 193, 194, 194, + 194, 195, 195, 196, 196, 197, 198, 199, 199, 200, + 200, 200, 200, 201, 201, 202, 202, 202, 202, 202, + 202, 202, 202, 203, 203, 203, 203, 204, 204, 204, + 205, 206, 207, 208, 208, 208, 208, 208, 209, 209, + 209, 210, 211, 211, 211, 211, 212, 212, 212, 212, + 213, 214, 214, 214, 215, 216, 216, 217, 218, 218, + 218, 218, 218, 219, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 1, 2, 6, 4, 1, 1, 2, + 5, 1, 6, 6, 3, 3, 17, 17, 11, 11, + 11, 12, 12, 12, 5, 3, 3, 3, 8, 13, + 12, 13, 13, 8, 17, 6, 9, 3, 6, 3, + 5, 6, 8, 8, 2, 2, 4, 3, 2, 4, + 3, 6, 4, 7, 7, 3, 3, 6, 3, 4, + 3, 3, 3, 11, 11, 9, 5, 5, 9, 5, + 5, 6, 6, 5, 5, 5, 6, 6, 5, 1, + 3, 3, 3, 3, 4, 4, 9, 9, 5, 7, + 4, 6, 6, 7, 9, 8, 8, 11, 9, 4, + 5, 6, 7, 6, 4, 6, 5, 6, 6, 4, + 8, 10, 10, 12, 5, 6, 5, 6, 4, 4, + 4, 7, 9, 9, 9, 6, 6, 6, 8, 8, + 6, 5, 5, 8, 4, 7, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, + 6, 6, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 6, 6, 5, 4, 3, 3, 3, 3, 3, + 3, 4, 2, 4, 2, 4, 2, 4, 2, 7, + 8, 8, 7, 7, 7, 9, 7, 8, 9, 8, + 6, 7, 8, 9, 8, 7, 7, 6, 11, 7, + 11, 7, 3, 2, 1, 7, 9, 11, 3, 5, + 7, 2, 2, 2, 2, 1, 1, 2, 2, 4, + 1, 1, 6, 6, 6, 2, 2, 1, 1, 0, + 5, 5, 3, 3, 3, 3, 0, 1, 1, 1, + 1, 1, 0, 3, 0, 3, 3, 0, 3, 3, + 5, 5, 0, 3, 3, 0, 3, 3, 0, 3, + 3, 3, 5, 5, 0, 3, 0, 3, 1, 1, + 1, 1, 0, 3, 3, 3, 5, 5, 1, 1, + 1, 0, 3, 0, 3, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 3, 3, 5, + 5, 5, 5, 3, 3, 5, 5, 0, 1, 1, + 2, 2, 2, 3, 1, 5, 5, 3, 2, 2, + 2, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, + 3, 2, 2, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 7, 0, 0, 204, 0, 0, 227, 228, 0, + 0, 0, 0, 0, 136, 138, 137, 139, 140, 141, + 221, 142, 0, 0, 143, 144, 145, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 216, 0, 0, + 0, 0, 0, 0, 8, 0, 3, 0, 0, 0, + 0, 0, 0, 229, 314, 79, 0, 0, 0, 0, + 330, 338, 339, 354, 203, 343, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 325, 324, 0, 0, 0, + 0, 0, 0, 0, 147, 146, 152, 153, 0, 0, + 338, 212, 338, 214, 0, 155, 156, 339, 158, 157, + 0, 160, 159, 0, 0, 0, 174, 0, 172, 0, + 176, 0, 178, 226, 225, 0, 0, 0, 322, 0, + 0, 0, 0, 0, 0, 0, 218, 217, 0, 0, + 0, 0, 0, 307, 0, 0, 1, 0, 4, 310, + 311, 312, 0, 45, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 318, 48, 281, 320, 319, 0, 9, + 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 170, 168, 169, 165, 166, + 0, 0, 0, 0, 0, 278, 279, 280, 0, 0, + 0, 80, 82, 252, 0, 252, 0, 0, 287, 288, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 0, 0, 229, 255, 62, 58, 56, 60, 61, 81, + 0, 0, 83, 0, 327, 326, 26, 14, 27, 15, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 317, 229, 47, 0, 208, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 307, 307, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 294, 293, 309, 308, 0, 0, + 0, 328, 0, 281, 202, 0, 0, 37, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 55, + 0, 0, 0, 0, 340, 351, 353, 346, 352, 348, + 347, 344, 345, 349, 350, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 293, 289, 290, 291, + 292, 0, 0, 0, 0, 0, 0, 52, 0, 46, + 164, 258, 264, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 0, 0, 0, 85, + 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 119, 120, 118, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 148, 0, 337, 149, 0, 0, 0, + 0, 173, 171, 175, 177, 154, 308, 0, 0, 308, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 285, + 0, 6, 59, 0, 321, 0, 0, 0, 0, 0, + 0, 90, 104, 99, 0, 0, 0, 233, 0, 232, + 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 78, 66, 67, 0, 258, 264, 258, 242, + 244, 0, 0, 0, 0, 163, 0, 24, 0, 0, + 0, 0, 307, 307, 0, 312, 0, 315, 308, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 283, 283, + 73, 74, 283, 283, 0, 75, 69, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 266, 106, 266, 0, + 244, 0, 0, 307, 0, 316, 0, 0, 209, 0, + 0, 0, 0, 286, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 100, 88, 0, 114, 116, 40, 282, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 105, 108, 0, 236, 51, 0, + 0, 35, 254, 253, 0, 0, 0, 0, 0, 103, + 264, 258, 115, 117, 0, 0, 308, 0, 0, 0, + 12, 0, 339, 335, 0, 336, 197, 0, 0, 0, + 0, 256, 257, 57, 0, 76, 77, 71, 72, 0, + 0, 0, 0, 0, 41, 0, 0, 0, 0, 92, + 107, 0, 38, 101, 266, 308, 0, 13, 0, 0, + 0, 151, 150, 162, 161, 0, 0, 0, 0, 0, + 127, 125, 126, 0, 224, 223, 222, 0, 130, 0, + 0, 0, 0, 0, 0, 190, 5, 0, 0, 0, + 0, 0, 230, 231, 0, 313, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 237, 238, + 239, 0, 0, 0, 0, 0, 259, 0, 260, 0, + 261, 265, 102, 93, 0, 252, 0, 0, 252, 0, + 195, 0, 196, 0, 0, 0, 0, 0, 0, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 0, 186, 0, 205, 210, 0, 179, 0, 0, + 182, 183, 0, 135, 0, 0, 0, 0, 0, 0, + 0, 201, 191, 184, 0, 199, 54, 53, 0, 0, + 0, 0, 0, 0, 33, 110, 0, 252, 96, 0, + 0, 243, 0, 245, 246, 0, 0, 0, 252, 194, + 252, 252, 187, 0, 331, 332, 333, 334, 0, 28, + 264, 229, 284, 129, 128, 0, 0, 264, 95, 42, + 43, 0, 0, 267, 0, 189, 229, 0, 180, 192, + 181, 0, 133, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 98, 0, 68, + 0, 0, 0, 263, 262, 193, 188, 185, 65, 0, + 36, 87, 234, 235, 94, 0, 0, 0, 0, 86, + 206, 123, 0, 0, 0, 0, 0, 0, 124, 0, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 112, + 0, 111, 0, 0, 0, 0, 272, 268, 271, 270, + 269, 0, 0, 0, 0, 0, 63, 0, 0, 0, + 97, 247, 244, 20, 244, 0, 0, 207, 0, 0, + 18, 19, 200, 198, 64, 0, 30, 0, 0, 236, + 23, 22, 21, 113, 0, 0, 0, 273, 0, 29, + 0, 31, 0, 32, 240, 241, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 249, 236, 248, 0, 0, 0, 0, 275, 0, 274, + 0, 296, 0, 298, 0, 297, 0, 295, 0, 303, + 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 251, 250, 0, 272, 272, + 276, 277, 300, 302, 301, 299, 305, 306, 34, 16, + 17 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 65, 66, 67, 370, 179, 751, 721, 957, 608, + 611, 940, 357, 381, 495, 497, 659, 911, 916, 949, + 230, 319, 645, 69, 126, 231, 354, 298, 951, 953, + 299, 371, 372, 72, 73, 74, 177, 98, 75, 82, + 817, 633, 634, 118, 83, 84, 85 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -869 +static const yytype_int16 yypact[] = +{ + 862, -869, -96, -14, -869, 653, 618, -869, -869, -22, + -7, 20, 71, 85, -869, -869, -869, -869, -869, -869, + -869, -869, 58, 176, -869, -869, -869, -14, -14, 48, + -14, 167, 231, -869, 327, -14, -14, 376, -869, 53, + 56, 94, 96, 120, 126, 114, 64, 139, 144, 419, + 115, 171, 185, 199, 207, 230, -869, 324, 250, 258, + 43, 358, 25, 419, -869, 387, -869, -39, 13, 325, + 223, 245, 390, 300, -869, -869, 443, -14, -14, -14, + -869, -869, -869, -869, -869, 582, 152, 170, 178, 496, + 453, 203, 259, 7, -869, -869, -869, 26, -46, 448, + 455, 458, 464, 111, -869, -869, -869, -869, -14, 463, + -10, -869, -9, -869, 32, -869, -869, 308, -869, -869, + 102, -869, -869, 479, 492, 497, -869, 505, -869, 508, + -869, 523, -869, -869, -869, 526, 541, 561, -869, 530, + 567, 581, 586, 602, 611, 625, -869, -869, 549, 632, + 57, 589, 221, 172, 637, 614, -869, 1008, -869, -869, + -869, 365, 4, -869, 584, 394, 365, 365, 365, 498, + 365, -6, -14, -869, -869, 507, -869, -869, 301, 510, + 519, -869, -869, 524, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -869, -869, -869, -869, -869, -869, + 548, 554, 563, 576, 583, -869, -869, -869, 587, 592, + 597, 601, -869, 598, 673, -19, 279, 293, -869, -869, + 663, 698, 719, 723, 728, 594, 599, 63, 733, 691, + 603, 604, 300, 605, -869, -869, -869, 606, -869, 225, + 607, 271, -869, 608, -869, -869, -869, -869, -869, -869, + 609, 610, 739, 208, -25, 676, 538, 740, 741, 615, + 394, -869, 300, -869, 617, 680, 620, 709, 612, 621, + 710, 626, 627, -41, -3, 14, 17, 628, 281, 349, + -869, 631, 633, 634, 636, 638, 639, 640, 641, 690, + -14, 62, 767, -14, -869, -869, -869, 769, -14, 643, + 644, -869, -8, 507, -869, 773, 764, 646, 647, 648, + 651, 365, 652, -14, -14, -14, 675, -869, 666, -869, + 134, 166, 276, -14, -869, 630, 642, -869, 483, 368, + 368, -869, -869, 532, 532, 780, 786, 787, 788, 779, + 790, 791, 792, 793, 794, 795, 659, -869, -869, -869, + -869, -14, -14, -14, 797, 798, 318, -869, 799, -869, + -869, 662, 664, 667, 669, 670, 671, 806, 807, 765, + 340, 390, 390, 245, 677, 384, 365, 809, 811, 682, + 493, -869, 706, 297, 317, 319, 815, 365, 365, 365, + 816, 817, 226, -869, -869, -869, -869, 707, 818, 37, + -14, -14, -14, 824, 812, 688, 692, 823, 245, 693, + 694, -14, 827, -869, 828, -869, -869, 830, 831, 833, + 685, -869, -869, -869, -869, -869, -869, -14, 697, 842, + -14, 704, -14, -14, -14, 844, -14, -14, -14, -869, + 845, 712, 774, -14, 714, 182, 715, 716, 785, -869, + 1008, -869, -869, 724, -869, 365, 365, 849, 853, 766, + 100, -869, -869, -869, 729, 763, 796, -869, 800, -869, + 829, 832, 300, 768, 771, 776, 777, 770, 775, 781, + 783, 784, -869, -869, -869, 903, 662, 664, 662, -58, + -15, 772, 782, 789, 33, -869, 802, -869, 902, 907, + 910, 472, 281, 445, 924, -869, 801, -869, 925, -14, + 803, 804, 808, 813, 926, 805, 810, 819, 820, 820, + -869, -869, 820, 820, 821, -869, -869, -869, 826, 825, + 834, 835, 836, 837, 838, 839, 840, -869, 840, 841, + 843, 917, 918, 562, 859, -869, 919, 860, 864, 861, + 865, 868, 869, -869, 846, 863, 870, 872, 866, 908, + 909, 911, 914, 912, 913, 915, -869, 857, 931, 916, + 867, 934, 871, 875, 876, 944, 920, -14, 891, 921, + 922, -869, -869, 365, -869, -869, 927, -869, 928, 929, + 5, 10, -869, 964, -14, -14, -14, 968, 959, 970, + 961, 981, 933, -869, -869, -869, 1050, 119, -869, 1052, + 559, -869, -869, -869, 1054, 930, 211, 247, 932, -869, + 664, 662, -869, -869, -14, 923, 1056, -14, 935, 936, + -869, 937, 938, -869, 941, -869, -869, 1057, 1058, 1060, + 989, -869, -869, -869, 953, -869, -869, -869, -869, -14, + -14, 940, 1059, 1061, -869, 546, 365, 365, 967, -869, + -869, 1063, -869, -869, 840, 1070, 942, -869, 1003, 1082, + -14, -869, -869, -869, -869, 1011, 1084, 1014, 1015, 278, + -869, -869, -869, 365, -869, -869, -869, 952, -869, 984, + 216, 956, 954, 1091, 1093, -869, -869, 287, 365, 365, + 962, 365, -869, -869, 365, -869, 365, 965, 969, 971, + 972, 973, 974, 975, 976, 977, -14, 1035, -869, -869, + -869, 978, 1036, 979, 980, 1045, -869, 1001, -869, 1019, + -869, -869, -869, -869, 982, 598, 983, 985, 598, 1055, + -869, 407, -869, 1051, 990, 991, 390, 995, 1004, 1005, + 574, -869, 1006, 1007, 1016, 1017, 1012, 1018, 1020, 1021, + -869, 1022, -869, 390, 1075, -869, 1151, -869, 1144, 1155, + -869, -869, 1023, -869, 1024, 1025, 1026, 1158, 1164, -14, + 1165, -869, -869, -869, 1166, -869, -869, -869, 1167, 365, + -14, 1168, 1170, 1171, -869, -869, 940, 598, 1030, 1037, + 1172, -869, 1174, -869, -869, 1169, 1040, 1041, 598, -869, + 598, 598, -869, -14, -869, -869, -869, -869, 365, -869, + 664, 300, -869, -869, -869, 1042, 1043, 664, -869, -869, + -869, 372, 1180, -869, 1135, -869, 300, 1182, -869, -869, + -869, 940, -869, 1183, 1184, 1053, 1048, 1062, 1128, 1065, + 1064, 1066, 1068, 1067, 1071, 1072, -869, -869, 1081, -869, + 596, 635, 1145, -869, -869, -869, -869, -869, -869, 1147, + -869, -869, -869, -869, -869, 1073, 1076, 1074, 1179, -869, + 1126, -869, 1077, 1078, -14, 619, 1121, -14, -869, 1094, + 1079, -14, -14, -14, 1083, 1195, 1196, 1190, 365, -869, + 1200, -869, 1162, -14, -14, -14, 1079, -869, -869, -869, + -869, 1085, 954, 1086, 1087, 1102, -869, 1088, 1089, 1090, + -869, 1080, 843, -869, 843, 1092, 1218, -869, 1095, 1097, + -869, -869, -869, -869, -869, 1096, 1098, 1099, 1100, 350, + -869, -869, -869, -869, 1101, 1215, 1220, -869, 595, -869, + 84, -869, 591, -869, -869, -869, 312, 375, 1208, 1105, + 1106, 378, 402, 403, 418, 426, 460, 476, 481, 616, + -869, 119, -869, 1107, -14, -14, 1119, -869, 1123, -869, + 1120, -869, 1130, -869, 1131, -869, 1133, -869, 1134, -869, + 1136, -869, 1110, 1112, 1188, 1113, 1114, 1115, 1116, 1117, + 1118, 1122, 1124, 1125, 1127, -869, -869, 1245, 1079, 1079, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -869, -869, -869, -133, 41, -216, -733, -868, 313, -869, + -509, -869, -198, -869, -458, -460, -515, -869, -804, -869, + -869, 986, 23, -869, -31, -869, 421, -205, -869, -869, + -253, 2, 22, -171, 987, -206, -56, 46, -869, -17, + -869, -869, -869, 1247, -869, -27, 0 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -214 +static const yytype_int16 yytable[] = +{ + 106, 107, 70, 109, 111, 113, 355, 115, 116, 119, + 122, 128, 130, 132, 173, 176, 379, 359, 134, 117, + 117, 374, 71, 660, 302, 428, 431, 604, 603, 304, + 605, 662, 239, 232, 7, 8, 7, 8, 157, 7, + 8, 68, 420, 174, 294, 295, 410, 262, 77, 398, + 153, 404, 306, 242, 409, 78, 373, 266, 267, 195, + 197, 199, 233, 856, 236, 238, 76, -211, -213, 450, + 150, 956, 172, 427, 430, 99, 263, 181, 182, 183, + 420, 264, 289, 104, 313, 314, 315, 442, 369, 408, + 100, 159, 7, 8, 77, 139, 244, 420, 147, 606, + 420, 78, 930, 993, 607, 534, 151, 154, 881, 155, + 159, 171, 175, 290, 183, 160, 161, 101, 443, 245, + 183, 158, 510, 421, 535, 77, 250, 269, 270, 251, + 229, 252, 78, 253, 241, 584, 254, 397, 255, 133, + 7, 8, 609, 356, 261, 317, 256, 610, 79, 760, + -211, -213, 451, 80, 81, 240, 316, 615, 616, 70, + 732, 422, 77, 733, 77, 182, 305, 704, 102, 78, + 509, 78, 706, 77, 243, 617, 77, 194, 423, 71, + 78, 424, 103, 78, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 79, 196, 257, 258, 68, 80, + 81, 105, 303, 198, 1019, 1020, 307, 308, 309, 310, + 108, 312, 963, 964, 77, 123, 181, 182, 124, 775, + 776, 78, 965, 966, 777, 79, 135, 183, 235, 77, + 80, 81, 77, 394, 259, 778, 78, 7, 8, 78, + 77, 294, 295, 395, 718, 719, 720, 78, 163, 625, + 628, 530, 7, 8, 296, 297, 592, 125, 164, 127, + 183, 531, 79, 441, 79, 77, 445, 80, 81, 80, + 81, 447, 78, 260, 7, 8, 79, 140, 80, 81, + 164, 80, 81, 129, 237, 77, 461, 462, 463, 131, + 666, 466, 165, 77, 396, 467, 473, 624, 627, 166, + 78, 470, 136, 770, 360, 7, 8, 137, 167, 168, + 169, 471, 170, 771, 79, 173, 176, 576, 361, 80, + 81, 77, 518, 468, 486, 487, 488, 469, 78, 79, + 383, 384, 79, 141, 80, 110, 385, 80, 81, 571, + 79, 77, 520, 572, 522, 80, 81, 142, 78, 146, + 294, 295, 459, 7, 8, 77, 519, 521, 523, 77, + 870, 143, 78, 296, 426, 79, 78, 874, 727, 144, + 80, 81, 728, 536, 537, 538, 387, 388, 292, 77, + 293, 77, 389, 152, 547, 79, 78, 156, 78, 77, + 80, 81, 145, 79, 7, 8, 78, 875, 80, 112, + 554, 7, 8, 557, 729, 559, 560, 561, 730, 563, + 564, 565, 148, 941, 506, 942, 569, 511, 294, 295, + 149, 79, 162, 7, 8, 164, 80, 81, 525, 526, + 527, 296, 429, 585, 186, 320, 321, 159, 77, 190, + 191, 79, 160, 505, 784, 78, 80, 81, 785, 544, + 491, 492, 70, 294, 295, 79, 77, 579, 580, 79, + 80, 81, 178, 78, 80, 81, 296, 508, 180, 969, + 954, 955, 71, 970, 623, 718, 719, 720, 234, 79, + 268, 79, 635, 246, 80, 81, 80, 81, 265, 114, + 247, 68, 632, 248, 80, 81, 578, 578, 374, 249, + 409, 200, 201, 202, 271, 203, 204, 622, 205, 206, + 207, 208, 209, 210, 294, 295, 138, 272, 94, 95, + 96, 211, 273, 212, 213, 7, 8, 296, 626, 214, + 274, 215, 971, 275, 77, 976, 972, 809, 120, 977, + 812, 78, 646, 80, 81, 647, 648, 184, 276, 186, + 697, 277, 188, 189, 190, 191, 79, 280, 216, 978, + 980, 80, 81, 979, 981, 217, 278, 708, 709, 710, + 218, 219, 220, 192, 193, 982, 814, 815, 816, 983, + 221, 222, 223, 984, 287, 224, 279, 985, 184, 185, + 186, 187, 281, 188, 189, 190, 191, 734, 186, 857, + 737, 188, 189, 190, 191, 871, 282, 294, 295, 306, + 865, 283, 866, 867, 192, 193, 291, 986, 225, 226, + 879, 987, 748, 749, 700, 515, 516, 284, 400, 401, + 402, 705, 261, 988, 79, 403, 285, 989, 990, 80, + 81, 301, 991, 765, 296, 665, 184, 185, 186, 187, + 286, 188, 189, 190, 191, 306, 896, 288, 227, 228, + 311, 781, 300, 80, 81, 343, 344, 322, 345, 318, + 294, 346, 192, 193, 347, 348, 349, 350, 323, 347, + 348, 349, 350, 723, 724, 324, 754, 755, 362, 799, + 821, 351, 352, 353, 825, 826, 186, 756, 757, 188, + 189, 190, 191, 789, 294, 295, 184, 836, 186, 187, + 335, 188, 189, 190, 191, 93, 336, 94, 95, 96, + 192, 193, 97, 363, 772, 337, 907, 908, 909, 910, + 961, 962, 192, 193, 967, 968, 954, 955, 338, 786, + 787, 86, 578, 358, 364, 339, 87, 88, 365, 340, + 89, 90, 847, 366, 341, 91, 92, 367, 375, 342, + 356, 376, 368, 852, 393, 377, 378, 380, 382, 386, + 390, 391, 392, 399, 411, 405, 406, 412, 407, 414, + 417, 413, 416, 418, 419, 415, 868, 440, 432, 425, + 433, 434, 444, 435, 446, 436, 437, 438, 453, 454, + 464, 465, 439, 455, 456, 474, 457, 448, 449, 458, + 460, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 489, 490, 494, 498, 496, 499, 500, 501, + 851, 502, 503, 493, 512, 504, 513, 517, 507, 514, + 524, 528, 529, 533, 532, 539, 541, 540, 543, 553, + 542, 546, 548, 549, 545, 550, 551, 906, 552, 869, + 913, 555, -2, 1, 917, 918, 919, 556, 558, 562, + 566, 568, 876, 2, 567, 570, 927, 928, 929, 573, + 574, 932, 575, 577, 581, 3, 4, 5, 582, 6, + 586, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 583, 587, 593, 590, 597, 602, 591, + 594, 588, 598, 612, 589, 595, 596, 619, 599, 924, + 600, 601, 620, 613, 618, 621, 614, 995, 996, 629, + 631, 640, 663, 664, 668, 670, 688, 39, 40, 691, + 676, 637, 630, 679, 690, 638, 641, 636, 692, 695, + 639, 642, 693, 694, 41, 42, 43, 44, 649, 45, + 643, 46, 644, 650, 47, 48, 651, 687, 159, 707, + 698, 652, 653, 711, 712, 713, 714, 654, 699, 655, + 656, 657, 658, 661, 49, 610, 715, 50, 51, 52, + 675, 53, 54, 55, 56, 57, 58, 59, 60, 2, + 667, 669, 671, 716, 61, 62, 672, 63, 64, 673, + 674, 3, 4, 5, 677, 6, 678, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 680, + 681, 683, 682, 684, 685, 717, 686, 722, 689, 725, + 696, 736, 743, 744, 701, 745, 746, 735, 747, 702, + 703, 726, 758, 731, 752, 761, 753, 739, 759, 738, + 763, 740, 750, 39, 40, 742, 762, 764, 766, 767, + 741, 768, 769, 773, 774, 779, 782, 780, 783, 788, + 41, 42, 43, 44, 790, 45, 791, 46, 792, 793, + 47, 48, 800, 802, 794, 795, 796, 797, 798, 801, + 803, 804, 805, 806, 807, 813, 808, 810, 818, 811, + 49, 819, 820, 50, 51, 52, 822, 53, 54, 55, + 56, 57, 58, 59, 60, 823, 824, 827, 828, 831, + 61, 62, 837, 63, 64, 832, 838, 829, 830, 839, + 840, 833, 834, 845, 841, 842, 835, 843, 844, 846, + 848, 849, 858, 853, 850, 854, 855, 860, 859, 861, + 862, 863, 864, 872, 873, 877, 878, 880, 882, 883, + 885, 420, 884, 894, 902, 897, 898, 903, 912, 914, + 921, 922, 923, 886, 887, 888, 891, 925, 889, 890, + 892, 893, 926, 900, 899, 901, 904, 905, 935, 944, + 959, 915, 939, 973, 920, 960, 931, 933, 934, 936, + 937, 938, 945, 943, 946, 997, 999, 947, 998, 1007, + 948, 950, 952, 958, 974, 975, 1000, 1001, 994, 1002, + 1003, 1005, 1004, 1006, 1008, 1009, 1010, 1011, 1012, 1013, + 1018, 895, 992, 1014, 121, 1015, 1016, 0, 1017, 452, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 472 +}; + +static const yytype_int16 yycheck[] = +{ + 27, 28, 0, 30, 31, 32, 211, 34, 35, 36, + 37, 42, 43, 44, 70, 71, 232, 215, 45, 36, + 37, 227, 0, 538, 157, 278, 279, 487, 486, 25, + 488, 540, 25, 89, 29, 30, 29, 30, 77, 29, + 30, 0, 83, 70, 69, 70, 262, 103, 62, 254, + 25, 256, 71, 27, 260, 69, 227, 25, 26, 86, + 87, 88, 89, 796, 91, 92, 162, 77, 77, 77, + 27, 939, 70, 278, 279, 97, 103, 77, 78, 79, + 83, 108, 25, 25, 90, 91, 92, 25, 25, 260, + 97, 97, 29, 30, 62, 49, 142, 83, 57, 157, + 83, 69, 906, 971, 162, 68, 63, 82, 841, 63, + 97, 70, 71, 56, 114, 102, 103, 97, 56, 165, + 120, 160, 375, 164, 87, 62, 15, 25, 26, 18, + 89, 20, 69, 22, 93, 35, 25, 162, 27, 25, + 29, 30, 157, 162, 103, 172, 35, 162, 162, 664, + 160, 160, 160, 167, 168, 148, 162, 124, 125, 157, + 620, 164, 62, 621, 62, 165, 162, 162, 97, 69, + 375, 69, 162, 62, 148, 142, 62, 25, 164, 157, + 69, 164, 97, 69, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 162, 25, 85, 86, 157, 167, + 168, 25, 161, 25, 1008, 1009, 165, 166, 167, 168, + 162, 170, 128, 129, 62, 162, 216, 217, 162, 3, + 4, 69, 138, 139, 8, 162, 162, 227, 25, 62, + 167, 168, 62, 25, 123, 19, 69, 29, 30, 69, + 62, 69, 70, 35, 125, 126, 127, 69, 25, 502, + 503, 25, 29, 30, 82, 83, 472, 163, 35, 163, + 260, 35, 162, 290, 162, 62, 293, 167, 168, 167, + 168, 298, 69, 162, 29, 30, 162, 162, 167, 168, + 35, 167, 168, 163, 25, 62, 313, 314, 315, 163, + 543, 157, 69, 62, 253, 161, 323, 502, 503, 76, + 69, 25, 163, 25, 25, 29, 30, 163, 85, 86, + 87, 35, 89, 35, 162, 371, 372, 450, 25, 167, + 168, 62, 25, 157, 351, 352, 353, 161, 69, 162, + 105, 106, 162, 162, 167, 168, 111, 167, 168, 157, + 162, 62, 25, 161, 25, 167, 168, 162, 69, 25, + 69, 70, 311, 29, 30, 62, 383, 384, 385, 62, + 820, 162, 69, 82, 83, 162, 69, 827, 157, 162, + 167, 168, 161, 400, 401, 402, 105, 106, 157, 62, + 159, 62, 111, 25, 411, 162, 69, 0, 69, 62, + 167, 168, 162, 162, 29, 30, 69, 25, 167, 168, + 427, 29, 30, 430, 157, 432, 433, 434, 161, 436, + 437, 438, 162, 922, 373, 924, 443, 376, 69, 70, + 162, 162, 97, 29, 30, 35, 167, 168, 387, 388, + 389, 82, 83, 460, 66, 134, 135, 97, 62, 71, + 72, 162, 102, 103, 157, 69, 167, 168, 161, 408, + 132, 133, 450, 69, 70, 162, 62, 455, 456, 162, + 167, 168, 162, 69, 167, 168, 82, 83, 25, 157, + 120, 121, 450, 161, 501, 125, 126, 127, 25, 162, + 172, 162, 509, 35, 167, 168, 167, 168, 25, 162, + 35, 450, 509, 35, 167, 168, 455, 456, 704, 35, + 706, 5, 6, 7, 25, 9, 10, 35, 12, 13, + 14, 15, 16, 17, 69, 70, 97, 25, 99, 100, + 101, 25, 25, 27, 28, 29, 30, 82, 83, 33, + 25, 35, 157, 25, 62, 157, 161, 735, 162, 161, + 738, 69, 519, 167, 168, 522, 523, 64, 25, 66, + 577, 25, 69, 70, 71, 72, 162, 27, 62, 157, + 157, 167, 168, 161, 161, 69, 25, 594, 595, 596, + 74, 75, 76, 90, 91, 157, 169, 170, 171, 161, + 84, 85, 86, 157, 35, 89, 25, 161, 64, 65, + 66, 67, 25, 69, 70, 71, 72, 624, 66, 797, + 627, 69, 70, 71, 72, 821, 25, 69, 70, 71, + 808, 25, 810, 811, 90, 91, 27, 157, 122, 123, + 836, 161, 649, 650, 583, 132, 133, 25, 90, 91, + 92, 590, 591, 157, 162, 97, 25, 161, 157, 167, + 168, 27, 161, 670, 82, 83, 64, 65, 66, 67, + 25, 69, 70, 71, 72, 71, 861, 25, 162, 163, + 162, 692, 25, 167, 168, 64, 65, 157, 67, 162, + 69, 70, 90, 91, 78, 79, 80, 81, 159, 78, + 79, 80, 81, 124, 125, 161, 140, 141, 25, 716, + 746, 90, 91, 92, 120, 121, 66, 656, 657, 69, + 70, 71, 72, 701, 69, 70, 64, 763, 66, 67, + 162, 69, 70, 71, 72, 97, 162, 99, 100, 101, + 90, 91, 104, 25, 683, 162, 107, 108, 109, 110, + 135, 136, 90, 91, 143, 144, 120, 121, 162, 698, + 699, 88, 701, 70, 25, 162, 93, 94, 25, 162, + 97, 98, 779, 25, 162, 102, 103, 163, 25, 162, + 162, 70, 163, 790, 25, 162, 162, 162, 162, 162, + 162, 162, 162, 97, 157, 35, 35, 97, 163, 70, + 70, 161, 161, 157, 157, 173, 813, 97, 157, 161, + 157, 157, 25, 157, 25, 157, 157, 157, 25, 35, + 125, 135, 161, 157, 157, 25, 158, 164, 164, 158, + 158, 25, 25, 25, 35, 25, 25, 25, 25, 25, + 25, 162, 25, 25, 162, 158, 162, 158, 158, 158, + 789, 25, 25, 34, 25, 70, 25, 131, 161, 157, + 25, 25, 25, 25, 137, 21, 158, 35, 25, 164, + 158, 157, 25, 25, 161, 25, 25, 884, 25, 818, + 887, 164, 0, 1, 891, 892, 893, 25, 164, 25, + 25, 97, 831, 11, 162, 161, 903, 904, 905, 164, + 164, 912, 97, 159, 35, 23, 24, 25, 35, 27, + 161, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 157, 161, 157, 97, 157, 25, 97, + 159, 135, 157, 161, 134, 159, 159, 35, 157, 898, + 157, 157, 35, 161, 142, 35, 157, 974, 975, 25, + 25, 25, 35, 35, 35, 91, 25, 95, 96, 25, + 97, 157, 161, 97, 97, 157, 161, 164, 97, 25, + 157, 161, 97, 97, 112, 113, 114, 115, 157, 117, + 161, 119, 162, 157, 122, 123, 161, 130, 97, 25, + 69, 157, 157, 25, 35, 25, 35, 161, 76, 162, + 162, 162, 162, 162, 142, 162, 25, 145, 146, 147, + 164, 149, 150, 151, 152, 153, 154, 155, 156, 11, + 161, 161, 161, 90, 162, 163, 161, 165, 166, 161, + 161, 23, 24, 25, 164, 27, 164, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 161, + 161, 157, 161, 161, 161, 25, 161, 25, 162, 25, + 160, 25, 25, 25, 157, 25, 97, 164, 135, 161, + 161, 161, 125, 161, 35, 25, 35, 161, 35, 164, + 97, 164, 162, 95, 96, 164, 164, 25, 97, 25, + 172, 97, 97, 161, 130, 159, 25, 163, 25, 157, + 112, 113, 114, 115, 159, 117, 157, 119, 157, 157, + 122, 123, 97, 97, 161, 161, 161, 161, 161, 161, + 161, 161, 97, 142, 125, 90, 164, 164, 97, 164, + 142, 161, 161, 145, 146, 147, 161, 149, 150, 151, + 152, 153, 154, 155, 156, 161, 161, 161, 161, 157, + 162, 163, 97, 165, 166, 157, 25, 161, 161, 35, + 25, 161, 161, 25, 161, 161, 164, 162, 162, 25, + 25, 25, 162, 25, 27, 25, 25, 25, 161, 25, + 31, 161, 161, 161, 161, 25, 71, 25, 25, 25, + 162, 83, 159, 132, 35, 70, 69, 91, 97, 125, + 25, 25, 32, 161, 159, 161, 159, 27, 162, 161, + 159, 159, 70, 157, 161, 161, 159, 159, 136, 21, + 25, 162, 162, 35, 161, 25, 161, 161, 161, 161, + 161, 161, 157, 161, 157, 136, 136, 161, 135, 71, + 162, 162, 162, 162, 159, 159, 136, 136, 161, 136, + 136, 161, 136, 161, 161, 161, 161, 161, 161, 161, + 35, 860, 969, 161, 37, 161, 161, -1, 161, 303, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 322 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 1, 11, 23, 24, 25, 27, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 95, + 96, 112, 113, 114, 115, 117, 119, 122, 123, 142, + 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, + 156, 162, 163, 165, 166, 175, 176, 177, 178, 197, + 205, 206, 207, 208, 209, 212, 162, 62, 69, 162, + 167, 168, 213, 218, 219, 220, 88, 93, 94, 97, + 98, 102, 103, 97, 99, 100, 101, 104, 211, 97, + 97, 97, 97, 97, 25, 25, 219, 219, 162, 219, + 168, 219, 168, 219, 162, 219, 219, 213, 217, 219, + 162, 217, 219, 162, 162, 163, 198, 163, 198, 163, + 198, 163, 198, 25, 219, 162, 163, 163, 97, 211, + 162, 162, 162, 162, 162, 162, 25, 178, 162, 162, + 27, 63, 25, 25, 82, 211, 0, 77, 160, 97, + 102, 103, 97, 25, 35, 69, 76, 85, 86, 87, + 89, 178, 205, 210, 219, 178, 210, 210, 162, 179, + 25, 220, 220, 220, 64, 65, 66, 67, 69, 70, + 71, 72, 90, 91, 25, 219, 25, 219, 25, 219, + 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, + 17, 25, 27, 28, 33, 35, 62, 69, 74, 75, + 76, 84, 85, 86, 89, 122, 123, 162, 163, 178, + 194, 199, 210, 219, 25, 25, 219, 25, 219, 25, + 148, 178, 27, 148, 142, 165, 35, 35, 35, 35, + 15, 18, 20, 22, 25, 27, 35, 85, 86, 123, + 162, 178, 210, 219, 219, 25, 25, 26, 172, 25, + 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 27, 25, 25, 25, 25, 25, 25, 35, 25, 25, + 56, 27, 157, 159, 69, 70, 82, 83, 201, 204, + 25, 27, 177, 178, 25, 162, 71, 178, 178, 178, + 178, 162, 178, 90, 91, 92, 162, 219, 162, 195, + 134, 135, 157, 159, 161, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 162, 162, 162, 162, 162, + 162, 162, 162, 64, 65, 67, 70, 78, 79, 80, + 81, 90, 91, 92, 200, 201, 162, 186, 70, 186, + 25, 25, 25, 25, 25, 25, 25, 163, 163, 25, + 178, 205, 206, 207, 209, 25, 70, 162, 162, 179, + 162, 187, 162, 105, 106, 111, 162, 105, 106, 111, + 162, 162, 162, 25, 25, 35, 178, 162, 201, 97, + 90, 91, 92, 97, 201, 35, 35, 163, 207, 209, + 179, 157, 97, 161, 70, 173, 161, 70, 157, 157, + 83, 164, 164, 164, 164, 161, 83, 201, 204, 83, + 201, 204, 157, 157, 157, 157, 157, 157, 157, 161, + 97, 219, 25, 56, 25, 219, 25, 219, 164, 164, + 77, 160, 195, 25, 35, 157, 157, 158, 158, 178, + 158, 219, 219, 219, 125, 135, 157, 161, 157, 161, + 25, 35, 208, 219, 25, 25, 25, 25, 35, 25, + 25, 25, 25, 25, 25, 162, 219, 219, 219, 25, + 25, 132, 133, 34, 162, 188, 162, 189, 158, 158, + 158, 158, 25, 25, 70, 103, 178, 161, 83, 201, + 204, 178, 25, 25, 157, 132, 133, 131, 25, 219, + 25, 219, 25, 219, 25, 178, 178, 178, 25, 25, + 25, 35, 137, 25, 68, 87, 219, 219, 219, 21, + 35, 158, 158, 25, 178, 161, 157, 219, 25, 25, + 25, 25, 25, 164, 219, 164, 25, 219, 164, 219, + 219, 219, 25, 219, 219, 219, 25, 162, 97, 219, + 161, 157, 161, 164, 164, 97, 177, 159, 178, 205, + 205, 35, 35, 157, 35, 219, 161, 161, 135, 134, + 97, 97, 179, 157, 159, 159, 159, 157, 157, 157, + 157, 157, 25, 188, 189, 188, 157, 162, 183, 157, + 162, 184, 161, 161, 157, 124, 125, 142, 142, 35, + 35, 35, 35, 219, 201, 204, 83, 201, 204, 25, + 161, 25, 213, 215, 216, 219, 164, 157, 157, 157, + 25, 161, 161, 161, 162, 196, 196, 196, 196, 157, + 157, 161, 157, 157, 161, 162, 162, 162, 162, 190, + 190, 162, 184, 35, 35, 83, 204, 161, 35, 161, + 91, 161, 161, 161, 161, 164, 97, 164, 164, 97, + 161, 161, 161, 157, 161, 161, 161, 130, 25, 162, + 97, 25, 97, 97, 97, 25, 160, 219, 69, 76, + 178, 157, 161, 161, 162, 178, 162, 25, 219, 219, + 219, 25, 35, 25, 35, 25, 90, 25, 125, 126, + 127, 181, 25, 124, 125, 25, 161, 157, 161, 157, + 161, 161, 189, 188, 219, 164, 25, 219, 164, 161, + 164, 172, 164, 25, 25, 25, 97, 135, 219, 219, + 162, 180, 35, 35, 140, 141, 178, 178, 125, 35, + 190, 25, 164, 97, 25, 219, 97, 25, 97, 97, + 25, 35, 178, 161, 130, 3, 4, 8, 19, 159, + 163, 198, 25, 25, 157, 161, 178, 178, 157, 205, + 159, 157, 157, 157, 161, 161, 161, 161, 161, 219, + 97, 161, 97, 161, 161, 97, 142, 125, 164, 186, + 164, 164, 186, 90, 169, 170, 171, 214, 97, 161, + 161, 210, 161, 161, 161, 120, 121, 161, 161, 161, + 161, 157, 157, 161, 161, 164, 210, 97, 25, 35, + 25, 161, 161, 162, 162, 25, 25, 219, 25, 25, + 27, 178, 219, 25, 25, 25, 180, 186, 162, 161, + 25, 25, 31, 161, 161, 186, 186, 186, 219, 178, + 189, 179, 161, 161, 189, 25, 178, 25, 71, 179, + 25, 180, 25, 25, 159, 162, 161, 159, 161, 162, + 161, 159, 159, 159, 132, 200, 201, 70, 69, 161, + 157, 161, 35, 91, 159, 159, 219, 107, 108, 109, + 110, 191, 97, 219, 125, 162, 192, 219, 219, 219, + 161, 25, 25, 32, 178, 27, 70, 219, 219, 219, + 192, 161, 198, 161, 161, 136, 161, 161, 161, 162, + 185, 184, 184, 161, 21, 157, 157, 161, 162, 193, + 162, 202, 162, 203, 120, 121, 181, 182, 162, 25, + 25, 135, 136, 128, 129, 138, 139, 143, 144, 157, + 161, 157, 161, 35, 159, 159, 157, 161, 157, 161, + 157, 161, 157, 161, 157, 161, 157, 161, 157, 161, + 157, 161, 182, 181, 161, 219, 219, 136, 135, 136, + 136, 136, 136, 136, 136, 161, 161, 71, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 35, 192, + 192 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 3: +#line 649 "bfin-parse.y" + { + insn = (yyvsp[(1) - (1)].instr); + if (insn == (INSTR_T) 0) + return NO_INSN_GENERATED; + else if (insn == (INSTR_T) - 1) + return SEMANTIC_ERROR; + else + return INSN_GENERATED; + } + break; + + case 5: +#line 663 "bfin-parse.y" + { + if (((yyvsp[(1) - (6)].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[(3) - (6)].instr)) && is_group2 ((yyvsp[(5) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr)); + else if (is_group2 ((yyvsp[(3) - (6)].instr)) && is_group1 ((yyvsp[(5) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 2 and slot 3 must be 16-bit instrution group"); + } + else if (((yyvsp[(3) - (6)].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[(1) - (6)].instr)) && is_group2 ((yyvsp[(5) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(5) - (6)].instr)); + else if (is_group2 ((yyvsp[(1) - (6)].instr)) && is_group1 ((yyvsp[(5) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (6)].instr), (yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 3 must be 16-bit instrution group"); + } + else if (((yyvsp[(5) - (6)].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[(1) - (6)].instr)) && is_group2 ((yyvsp[(3) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(5) - (6)].instr), (yyvsp[(1) - (6)].instr), (yyvsp[(3) - (6)].instr)); + else if (is_group2 ((yyvsp[(1) - (6)].instr)) && is_group1 ((yyvsp[(3) - (6)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(5) - (6)].instr), (yyvsp[(3) - (6)].instr), (yyvsp[(1) - (6)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be 16-bit instrution group"); + } + else + error ("\nIllegal Multi Issue Construct, at least any one of the slot must be DSP32 instruction group\n"); + } + break; + + case 6: +#line 696 "bfin-parse.y" + { + if (((yyvsp[(1) - (4)].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[(3) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr), 0); + else if (is_group2 ((yyvsp[(3) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(1) - (4)].instr), 0, (yyvsp[(3) - (4)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 2 must be the 16-bit instruction group"); + } + else if (((yyvsp[(3) - (4)].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[(1) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr), 0); + else if (is_group2 ((yyvsp[(1) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[(3) - (4)].instr), 0, (yyvsp[(1) - (4)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 must be the 16-bit instruction group"); + } + else if (is_group1 ((yyvsp[(1) - (4)].instr)) && is_group2 ((yyvsp[(3) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[(1) - (4)].instr), (yyvsp[(3) - (4)].instr)); + else if (is_group2 ((yyvsp[(1) - (4)].instr)) && is_group1 ((yyvsp[(3) - (4)].instr))) + (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[(3) - (4)].instr), (yyvsp[(1) - (4)].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be the 16-bit instruction group"); + } + break; + + case 7: +#line 723 "bfin-parse.y" + { + (yyval.instr) = 0; + yyerror (""); + yyerrok; + } + break; + + case 8: +#line 734 "bfin-parse.y" + { + (yyval.instr) = DSP32MAC (3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0); + } + break; + + case 9: +#line 738 "bfin-parse.y" + { + int op0, op1; + int w0 = 0, w1 = 0; + int h00, h10, h01, h11; + + if (check_macfunc_option (&(yyvsp[(1) - (2)].macfunc), &(yyvsp[(2) - (2)].mod)) < 0) + return yyerror ("bad option"); + + if ((yyvsp[(1) - (2)].macfunc).n == 0) + { + if ((yyvsp[(2) - (2)].mod).MM) + return yyerror ("(m) not allowed with a0 unit"); + op1 = 3; + op0 = (yyvsp[(1) - (2)].macfunc).op; + w1 = 0; + w0 = (yyvsp[(1) - (2)].macfunc).w; + h00 = IS_H ((yyvsp[(1) - (2)].macfunc).s0); + h10 = IS_H ((yyvsp[(1) - (2)].macfunc).s1); + h01 = h11 = 0; + } + else + { + op1 = (yyvsp[(1) - (2)].macfunc).op; + op0 = 3; + w1 = (yyvsp[(1) - (2)].macfunc).w; + w0 = 0; + h00 = h10 = 0; + h01 = IS_H ((yyvsp[(1) - (2)].macfunc).s0); + h11 = IS_H ((yyvsp[(1) - (2)].macfunc).s1); + } + (yyval.instr) = DSP32MAC (op1, (yyvsp[(2) - (2)].mod).MM, (yyvsp[(2) - (2)].mod).mod, w1, (yyvsp[(1) - (2)].macfunc).P, h01, h11, h00, h10, + &(yyvsp[(1) - (2)].macfunc).dst, op0, &(yyvsp[(1) - (2)].macfunc).s0, &(yyvsp[(1) - (2)].macfunc).s1, w0); + } + break; + + case 10: +#line 776 "bfin-parse.y" + { + Register *dst; + + if (check_macfuncs (&(yyvsp[(1) - (5)].macfunc), &(yyvsp[(2) - (5)].mod), &(yyvsp[(4) - (5)].macfunc), &(yyvsp[(5) - (5)].mod)) < 0) + return -1; + notethat ("assign_macfunc (.), assign_macfunc (.)\n"); + + if ((yyvsp[(1) - (5)].macfunc).w) + dst = &(yyvsp[(1) - (5)].macfunc).dst; + else + dst = &(yyvsp[(4) - (5)].macfunc).dst; + + (yyval.instr) = DSP32MAC ((yyvsp[(1) - (5)].macfunc).op, (yyvsp[(2) - (5)].mod).MM, (yyvsp[(5) - (5)].mod).mod, (yyvsp[(1) - (5)].macfunc).w, (yyvsp[(1) - (5)].macfunc).P, + IS_H ((yyvsp[(1) - (5)].macfunc).s0), IS_H ((yyvsp[(1) - (5)].macfunc).s1), IS_H ((yyvsp[(4) - (5)].macfunc).s0), IS_H ((yyvsp[(4) - (5)].macfunc).s1), + dst, (yyvsp[(4) - (5)].macfunc).op, &(yyvsp[(1) - (5)].macfunc).s0, &(yyvsp[(1) - (5)].macfunc).s1, (yyvsp[(4) - (5)].macfunc).w); + } + break; + + case 11: +#line 796 "bfin-parse.y" + { + notethat ("dsp32alu: DISALGNEXCPT\n"); + (yyval.instr) = DSP32ALU (18, 0, 0, 0, 0, 0, 0, 0, 3); + } + break; + + case 12: +#line 801 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && !IS_A1 ((yyvsp[(4) - (6)].reg)) && IS_A1 ((yyvsp[(5) - (6)].reg))) + { + notethat ("dsp32alu: dregs = ( A0 += A1 )\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, &(yyvsp[(1) - (6)].reg), ®7, ®7, 0, 0, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 13: +#line 811 "bfin-parse.y" + { + if (!IS_A1 ((yyvsp[(4) - (6)].reg)) && IS_A1 ((yyvsp[(5) - (6)].reg))) + { + notethat ("dsp32alu: dregs_half = ( A0 += A1 )\n"); + (yyval.instr) = DSP32ALU (11, IS_H ((yyvsp[(1) - (6)].reg)), 0, &(yyvsp[(1) - (6)].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 14: +#line 821 "bfin-parse.y" + { + notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 0); + } + break; + + case 15: +#line 826 "bfin-parse.y" + { + notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 2); + } + break; + + case 16: +#line 832 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(2) - (17)].reg)) || !IS_DREG ((yyvsp[(4) - (17)].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[(2) - (17)].reg), (yyvsp[(4) - (17)].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (17)].reg), (yyvsp[(11) - (17)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(13) - (17)].reg), (yyvsp[(15) - (17)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16P (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[(2) - (17)].reg), &(yyvsp[(4) - (17)].reg), &(yyvsp[(9) - (17)].reg), &(yyvsp[(13) - (17)].reg), (yyvsp[(17) - (17)].r0).r0, 0, 0); + } + } + break; + + case 17: +#line 850 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(2) - (17)].reg)) || !IS_DREG ((yyvsp[(4) - (17)].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[(2) - (17)].reg), (yyvsp[(4) - (17)].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (17)].reg), (yyvsp[(11) - (17)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(13) - (17)].reg), (yyvsp[(15) - (17)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16M (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[(2) - (17)].reg), &(yyvsp[(4) - (17)].reg), &(yyvsp[(9) - (17)].reg), &(yyvsp[(13) - (17)].reg), (yyvsp[(17) - (17)].r0).r0, 0, 1); + } + } + break; + + case 18: +#line 867 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(2) - (11)].reg)) || !IS_DREG ((yyvsp[(4) - (11)].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[(2) - (11)].reg), (yyvsp[(4) - (11)].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[(8) - (11)].reg), (yyvsp[(10) - (11)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEUNPACK dregs_pair (aligndir)\n"); + (yyval.instr) = DSP32ALU (24, 0, &(yyvsp[(2) - (11)].reg), &(yyvsp[(4) - (11)].reg), &(yyvsp[(8) - (11)].reg), 0, (yyvsp[(11) - (11)].r0).r0, 0, 1); + } + } + break; + + case 19: +#line 881 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(2) - (11)].reg), (yyvsp[(4) - (11)].reg))) + return yyerror ("Illegal dest register combination"); + + if (IS_DREG ((yyvsp[(2) - (11)].reg)) && IS_DREG ((yyvsp[(4) - (11)].reg)) && IS_DREG ((yyvsp[(8) - (11)].reg))) + { + notethat ("dsp32alu: (dregs , dregs ) = SEARCH dregs (searchmod)\n"); + (yyval.instr) = DSP32ALU (13, 0, &(yyvsp[(2) - (11)].reg), &(yyvsp[(4) - (11)].reg), &(yyvsp[(8) - (11)].reg), 0, 0, 0, (yyvsp[(10) - (11)].r0).r0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 20: +#line 895 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (11)].reg), (yyvsp[(7) - (11)].reg))) + return yyerror ("Illegal dest register combination"); + + if (IS_DREG ((yyvsp[(1) - (11)].reg)) && IS_DREG ((yyvsp[(7) - (11)].reg))) + { + notethat ("dsp32alu: dregs = A1.l + A1.h, dregs = A0.l + A0.h \n"); + (yyval.instr) = DSP32ALU (12, 0, &(yyvsp[(1) - (11)].reg), &(yyvsp[(7) - (11)].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 21: +#line 910 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (12)].reg), (yyvsp[(7) - (12)].reg))) + return yyerror ("Resource conflict in dest reg"); + + if (IS_DREG ((yyvsp[(1) - (12)].reg)) && IS_DREG ((yyvsp[(7) - (12)].reg)) && !REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(5) - (12)].reg)) + && IS_A1 ((yyvsp[(9) - (12)].reg)) && !IS_A1 ((yyvsp[(11) - (12)].reg))) + { + notethat ("dsp32alu: dregs = A1 + A0 , dregs = A1 - A0 (amod1)\n"); + (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[(1) - (12)].reg), &(yyvsp[(7) - (12)].reg), ®7, ®7, (yyvsp[(12) - (12)].modcodes).s0, (yyvsp[(12) - (12)].modcodes).x0, 0); + + } + else if (IS_DREG ((yyvsp[(1) - (12)].reg)) && IS_DREG ((yyvsp[(7) - (12)].reg)) && !REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(5) - (12)].reg)) + && !IS_A1 ((yyvsp[(9) - (12)].reg)) && IS_A1 ((yyvsp[(11) - (12)].reg))) + { + notethat ("dsp32alu: dregs = A0 + A1 , dregs = A0 - A1 (amod1)\n"); + (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[(1) - (12)].reg), &(yyvsp[(7) - (12)].reg), ®7, ®7, (yyvsp[(12) - (12)].modcodes).s0, (yyvsp[(12) - (12)].modcodes).x0, 1); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 22: +#line 932 "bfin-parse.y" + { + if ((yyvsp[(4) - (12)].r0).r0 == (yyvsp[(10) - (12)].r0).r0) + return yyerror ("Operators must differ"); + + if (IS_DREG ((yyvsp[(1) - (12)].reg)) && IS_DREG ((yyvsp[(3) - (12)].reg)) && IS_DREG ((yyvsp[(5) - (12)].reg)) + && REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(9) - (12)].reg)) && REG_SAME ((yyvsp[(5) - (12)].reg), (yyvsp[(11) - (12)].reg))) + { + notethat ("dsp32alu: dregs = dregs + dregs," + "dregs = dregs - dregs (amod1)\n"); + (yyval.instr) = DSP32ALU (4, 0, &(yyvsp[(1) - (12)].reg), &(yyvsp[(7) - (12)].reg), &(yyvsp[(3) - (12)].reg), &(yyvsp[(5) - (12)].reg), (yyvsp[(12) - (12)].modcodes).s0, (yyvsp[(12) - (12)].modcodes).x0, 2); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 23: +#line 950 "bfin-parse.y" + { + if (!REG_SAME ((yyvsp[(3) - (12)].reg), (yyvsp[(9) - (12)].reg)) || !REG_SAME ((yyvsp[(5) - (12)].reg), (yyvsp[(11) - (12)].reg))) + return yyerror ("Differing source registers"); + + if (!IS_DREG ((yyvsp[(1) - (12)].reg)) || !IS_DREG ((yyvsp[(3) - (12)].reg)) || !IS_DREG ((yyvsp[(5) - (12)].reg)) || !IS_DREG ((yyvsp[(7) - (12)].reg))) + return yyerror ("Dregs expected"); + + if (REG_SAME ((yyvsp[(1) - (12)].reg), (yyvsp[(7) - (12)].reg))) + return yyerror ("Resource conflict in dest reg"); + + if ((yyvsp[(4) - (12)].r0).r0 == 1 && (yyvsp[(10) - (12)].r0).r0 == 2) + { + notethat ("dsp32alu: dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n"); + (yyval.instr) = DSP32ALU (1, 1, &(yyvsp[(1) - (12)].reg), &(yyvsp[(7) - (12)].reg), &(yyvsp[(3) - (12)].reg), &(yyvsp[(5) - (12)].reg), (yyvsp[(12) - (12)].modcodes).s0, (yyvsp[(12) - (12)].modcodes).x0, (yyvsp[(12) - (12)].modcodes).r0); + } + else if ((yyvsp[(4) - (12)].r0).r0 == 0 && (yyvsp[(10) - (12)].r0).r0 == 3) + { + notethat ("dsp32alu: dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n"); + (yyval.instr) = DSP32ALU (1, 0, &(yyvsp[(1) - (12)].reg), &(yyvsp[(7) - (12)].reg), &(yyvsp[(3) - (12)].reg), &(yyvsp[(5) - (12)].reg), (yyvsp[(12) - (12)].modcodes).s0, (yyvsp[(12) - (12)].modcodes).x0, (yyvsp[(12) - (12)].modcodes).r0); + } + else + return yyerror ("Bar operand mismatch"); + } + break; + + case 24: +#line 975 "bfin-parse.y" + { + int op; + + if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(4) - (5)].reg))) + { + if ((yyvsp[(5) - (5)].r0).r0) + { + notethat ("dsp32alu: dregs = ABS dregs (v)\n"); + op = 6; + } + else + { + /* Vector version of ABS. */ + notethat ("dsp32alu: dregs = ABS dregs\n"); + op = 7; + } + (yyval.instr) = DSP32ALU (op, 0, 0, &(yyvsp[(1) - (5)].reg), &(yyvsp[(4) - (5)].reg), 0, 0, 0, 2); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 25: +#line 997 "bfin-parse.y" + { + notethat ("dsp32alu: Ax = ABS Ax\n"); + (yyval.instr) = DSP32ALU (16, IS_A1 ((yyvsp[(1) - (3)].reg)), 0, 0, ®7, ®7, 0, 0, IS_A1 ((yyvsp[(3) - (3)].reg))); + } + break; + + case 26: +#line 1002 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(3) - (3)].reg))) + { + notethat ("dsp32alu: A0.l = reg_half\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 0); + } + else + return yyerror ("A0.l = Rx.l expected"); + } + break; + + case 27: +#line 1012 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(3) - (3)].reg))) + { + notethat ("dsp32alu: A1.l = reg_half\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[(3) - (3)].reg)), 0, 0, &(yyvsp[(3) - (3)].reg), 0, 0, 0, 2); + } + else + return yyerror ("A1.l = Rx.l expected"); + } + break; + + case 28: +#line 1023 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32shift: dregs = ALIGN8 (dregs , dregs )\n"); + (yyval.instr) = DSP32SHIFT (13, &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), &(yyvsp[(5) - (8)].reg), (yyvsp[(3) - (8)].r0).r0, 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 29: +#line 1034 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (13)].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[(5) - (13)].reg), (yyvsp[(7) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (13)].reg), (yyvsp[(11) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n"); + (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[(1) - (13)].reg), &(yyvsp[(5) - (13)].reg), &(yyvsp[(9) - (13)].reg), (yyvsp[(13) - (13)].modcodes).s0, 0, (yyvsp[(13) - (13)].modcodes).r0); + } + } + break; + + case 30: +#line 1048 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (12)].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[(5) - (12)].reg), (yyvsp[(7) - (12)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (12)].reg), (yyvsp[(11) - (12)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n"); + (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[(1) - (12)].reg), &(yyvsp[(5) - (12)].reg), &(yyvsp[(9) - (12)].reg), 0, 0, 0); + } + } + break; + + case 31: +#line 1064 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (13)].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[(5) - (13)].reg), (yyvsp[(7) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (13)].reg), (yyvsp[(11) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP2P (dregs_pair , dregs_pair ) (rnd_op)\n"); + (yyval.instr) = DSP32ALU (22, (yyvsp[(13) - (13)].modcodes).r0, 0, &(yyvsp[(1) - (13)].reg), &(yyvsp[(5) - (13)].reg), &(yyvsp[(9) - (13)].reg), (yyvsp[(13) - (13)].modcodes).s0, (yyvsp[(13) - (13)].modcodes).x0, (yyvsp[(13) - (13)].modcodes).aop); + } + } + break; + + case 32: +#line 1080 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (13)].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[(5) - (13)].reg), (yyvsp[(7) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(9) - (13)].reg), (yyvsp[(11) - (13)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP3P (dregs_pair , dregs_pair ) (b3_op)\n"); + (yyval.instr) = DSP32ALU (23, (yyvsp[(13) - (13)].modcodes).x0, 0, &(yyvsp[(1) - (13)].reg), &(yyvsp[(5) - (13)].reg), &(yyvsp[(9) - (13)].reg), (yyvsp[(13) - (13)].modcodes).s0, 0, 0); + } + } + break; + + case 33: +#line 1095 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32alu: dregs = BYTEPACK (dregs , dregs )\n"); + (yyval.instr) = DSP32ALU (24, 0, 0, &(yyvsp[(1) - (8)].reg), &(yyvsp[(5) - (8)].reg), &(yyvsp[(7) - (8)].reg), 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 34: +#line 1107 "bfin-parse.y" + { + if (IS_HCOMPL ((yyvsp[(1) - (17)].reg), (yyvsp[(3) - (17)].reg)) && IS_HCOMPL ((yyvsp[(7) - (17)].reg), (yyvsp[(14) - (17)].reg)) && IS_HCOMPL ((yyvsp[(10) - (17)].reg), (yyvsp[(17) - (17)].reg))) + { + notethat ("dsp32alu: dregs_hi = dregs_lo =" + "SIGN (dregs_hi) * dregs_hi + " + "SIGN (dregs_lo) * dregs_lo \n"); + + (yyval.instr) = DSP32ALU (12, 0, 0, &(yyvsp[(1) - (17)].reg), &(yyvsp[(7) - (17)].reg), &(yyvsp[(10) - (17)].reg), 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 35: +#line 1120 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + { + if ((yyvsp[(6) - (6)].modcodes).aop == 0) + { + /* No saturation flag specified, generate the 16 bit variant. */ + notethat ("COMP3op: dregs = dregs +- dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), (yyvsp[(4) - (6)].r0).r0); + } + else + { + /* Saturation flag specified, generate the 32 bit variant. */ + notethat ("dsp32alu: dregs = dregs +- dregs (amod1)\n"); + (yyval.instr) = DSP32ALU (4, 0, 0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, (yyvsp[(6) - (6)].modcodes).x0, (yyvsp[(4) - (6)].r0).r0); + } + } + else + if (IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(3) - (6)].reg)) && IS_PREG ((yyvsp[(5) - (6)].reg)) && (yyvsp[(4) - (6)].r0).r0 == 0) + { + notethat ("COMP3op: pregs = pregs + pregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), 5); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 36: +#line 1146 "bfin-parse.y" + { + int op; + + if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && IS_DREG ((yyvsp[(7) - (9)].reg))) + { + if ((yyvsp[(9) - (9)].r0).r0) + op = 6; + else + op = 7; + + notethat ("dsp32alu: dregs = {MIN|MAX} (dregs, dregs)\n"); + (yyval.instr) = DSP32ALU (op, 0, 0, &(yyvsp[(1) - (9)].reg), &(yyvsp[(5) - (9)].reg), &(yyvsp[(7) - (9)].reg), 0, 0, (yyvsp[(3) - (9)].r0).r0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 37: +#line 1164 "bfin-parse.y" + { + notethat ("dsp32alu: Ax = - Ax\n"); + (yyval.instr) = DSP32ALU (14, IS_A1 ((yyvsp[(1) - (3)].reg)), 0, 0, ®7, ®7, 0, 0, IS_A1 ((yyvsp[(3) - (3)].reg))); + } + break; + + case 38: +#line 1169 "bfin-parse.y" + { + notethat ("dsp32alu: dregs_lo = dregs_lo +- dregs_lo (amod1)\n"); + (yyval.instr) = DSP32ALU (2 | (yyvsp[(4) - (6)].r0).r0, IS_H ((yyvsp[(1) - (6)].reg)), 0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), + (yyvsp[(6) - (6)].modcodes).s0, (yyvsp[(6) - (6)].modcodes).x0, HL2 ((yyvsp[(3) - (6)].reg), (yyvsp[(5) - (6)].reg))); + } + break; + + case 39: +#line 1175 "bfin-parse.y" + { + if (EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 0 && !REG_SAME ((yyvsp[(1) - (3)].reg), (yyvsp[(2) - (3)].reg))) + { + notethat ("dsp32alu: A1 = A0 = 0\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, 0, 0, 2); + } + else + return yyerror ("Bad value, 0 expected"); + } + break; + + case 40: +#line 1187 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(2) - (5)].reg))) + { + notethat ("dsp32alu: Ax = Ax (S)\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, 1, 0, IS_A1 ((yyvsp[(1) - (5)].reg))); + } + else + return yyerror ("Registers must be equal"); + } + break; + + case 41: +#line 1198 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg))) + { + notethat ("dsp32alu: dregs_half = dregs (RND)\n"); + (yyval.instr) = DSP32ALU (12, IS_H ((yyvsp[(1) - (6)].reg)), 0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 0, 0, 0, 3); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 42: +#line 1209 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg))) + { + notethat ("dsp32alu: dregs_half = dregs (+-) dregs (RND12)\n"); + (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[(1) - (8)].reg)), 0, &(yyvsp[(1) - (8)].reg), &(yyvsp[(3) - (8)].reg), &(yyvsp[(5) - (8)].reg), 0, 0, (yyvsp[(4) - (8)].r0).r0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 43: +#line 1220 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg))) + { + notethat ("dsp32alu: dregs_half = dregs -+ dregs (RND20)\n"); + (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[(1) - (8)].reg)), 0, &(yyvsp[(1) - (8)].reg), &(yyvsp[(3) - (8)].reg), &(yyvsp[(5) - (8)].reg), 0, 1, (yyvsp[(4) - (8)].r0).r0 | 2); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 44: +#line 1231 "bfin-parse.y" + { + if (!REG_SAME ((yyvsp[(1) - (2)].reg), (yyvsp[(2) - (2)].reg))) + { + notethat ("dsp32alu: An = Am\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, IS_A1 ((yyvsp[(1) - (2)].reg)), 0, 3); + } + else + return yyerror ("Accu reg arguments must differ"); + } + break; + + case 45: +#line 1242 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("dsp32alu: An = dregs\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[(2) - (2)].reg), 0, 1, 0, IS_A1 ((yyvsp[(1) - (2)].reg)) << 1); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 46: +#line 1253 "bfin-parse.y" + { + if (!IS_H ((yyvsp[(3) - (4)].reg))) + { + if ((yyvsp[(1) - (4)].reg).regno == REG_A0x && IS_DREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("dsp32alu: A0.x = dregs_lo\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[(3) - (4)].reg), 0, 0, 0, 1); + } + else if ((yyvsp[(1) - (4)].reg).regno == REG_A1x && IS_DREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("dsp32alu: A1.x = dregs_lo\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[(3) - (4)].reg), 0, 0, 0, 3); + } + else if (IS_DREG ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("ALU2op: dregs = dregs_lo\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (4)].reg), &(yyvsp[(3) - (4)].reg), 10 | ((yyvsp[(4) - (4)].r0).r0 ? 0: 1)); + } + else + return yyerror ("Register mismatch"); + } + else + return yyerror ("Low reg expected"); + } + break; + + case 47: +#line 1279 "bfin-parse.y" + { + notethat ("LDIMMhalf: pregs_half = imm16\n"); + + if (!IS_DREG ((yyvsp[(1) - (3)].reg)) && !IS_PREG ((yyvsp[(1) - (3)].reg)) && !IS_IREG ((yyvsp[(1) - (3)].reg)) + && !IS_MREG ((yyvsp[(1) - (3)].reg)) && !IS_BREG ((yyvsp[(1) - (3)].reg)) && !IS_LREG ((yyvsp[(1) - (3)].reg))) + return yyerror ("Wrong register for load immediate"); + + if (!IS_IMM ((yyvsp[(3) - (3)].expr), 16) && !IS_UIMM ((yyvsp[(3) - (3)].expr), 16)) + return yyerror ("Constant out of range"); + + (yyval.instr) = LDIMMHALF_R (&(yyvsp[(1) - (3)].reg), IS_H ((yyvsp[(1) - (3)].reg)), 0, 0, (yyvsp[(3) - (3)].expr)); + } + break; + + case 48: +#line 1293 "bfin-parse.y" + { + notethat ("dsp32alu: An = 0\n"); + + if (imm7 ((yyvsp[(2) - (2)].expr)) != 0) + return yyerror ("0 expected"); + + (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[(1) - (2)].reg))); + } + break; + + case 49: +#line 1303 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (4)].reg)) && !IS_PREG ((yyvsp[(1) - (4)].reg)) && !IS_IREG ((yyvsp[(1) - (4)].reg)) + && !IS_MREG ((yyvsp[(1) - (4)].reg)) && !IS_BREG ((yyvsp[(1) - (4)].reg)) && !IS_LREG ((yyvsp[(1) - (4)].reg))) + return yyerror ("Wrong register for load immediate"); + + if ((yyvsp[(4) - (4)].r0).r0 == 0) + { + /* 7 bit immediate value if possible. + We will check for that constant value for efficiency + If it goes to reloc, it will be 16 bit. */ + if (IS_CONST ((yyvsp[(3) - (4)].expr)) && IS_IMM ((yyvsp[(3) - (4)].expr), 7) && IS_DREG ((yyvsp[(1) - (4)].reg))) + { + notethat ("COMPI2opD: dregs = imm7 (x) \n"); + (yyval.instr) = COMPI2OPD (&(yyvsp[(1) - (4)].reg), imm7 ((yyvsp[(3) - (4)].expr)), 0); + } + else if (IS_CONST ((yyvsp[(3) - (4)].expr)) && IS_IMM ((yyvsp[(3) - (4)].expr), 7) && IS_PREG ((yyvsp[(1) - (4)].reg))) + { + notethat ("COMPI2opP: pregs = imm7 (x)\n"); + (yyval.instr) = COMPI2OPP (&(yyvsp[(1) - (4)].reg), imm7 ((yyvsp[(3) - (4)].expr)), 0); + } + else + { + if (IS_CONST ((yyvsp[(3) - (4)].expr)) && !IS_IMM ((yyvsp[(3) - (4)].expr), 16)) + return yyerror ("Immediate value out of range"); + + notethat ("LDIMMhalf: regs = luimm16 (x)\n"); + /* reg, H, S, Z. */ + (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[(1) - (4)].reg), 0, 1, 0, (yyvsp[(3) - (4)].expr)); + } + } + else + { + /* (z) There is no 7 bit zero extended instruction. + If the expr is a relocation, generate it. */ + + if (IS_CONST ((yyvsp[(3) - (4)].expr)) && !IS_UIMM ((yyvsp[(3) - (4)].expr), 16)) + return yyerror ("Immediate value out of range"); + + notethat ("LDIMMhalf: regs = luimm16 (x)\n"); + /* reg, H, S, Z. */ + (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[(1) - (4)].reg), 0, 0, 1, (yyvsp[(3) - (4)].expr)); + } + } + break; + + case 50: +#line 1348 "bfin-parse.y" + { + if (IS_H ((yyvsp[(1) - (3)].reg))) + return yyerror ("Low reg expected"); + + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_A0x) + { + notethat ("dsp32alu: dregs_lo = A0.x\n"); + (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[(1) - (3)].reg), ®7, ®7, 0, 0, 0); + } + else if (IS_DREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_A1x) + { + notethat ("dsp32alu: dregs_lo = A1.x\n"); + (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[(1) - (3)].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 51: +#line 1367 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + { + notethat ("dsp32alu: dregs = dregs .|. dregs (amod0)\n"); + (yyval.instr) = DSP32ALU (0, 0, 0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, (yyvsp[(6) - (6)].modcodes).x0, (yyvsp[(4) - (6)].r0).r0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 52: +#line 1378 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("ALU2op: dregs = dregs_byte\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (4)].reg), &(yyvsp[(3) - (4)].reg), 12 | ((yyvsp[(4) - (4)].r0).r0 ? 0: 1)); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 53: +#line 1389 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(3) - (7)].reg)) && REG_SAME ((yyvsp[(5) - (7)].reg), (yyvsp[(7) - (7)].reg)) && !REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(5) - (7)].reg))) + { + notethat ("dsp32alu: A1 = ABS A1 , A0 = ABS A0\n"); + (yyval.instr) = DSP32ALU (16, 0, 0, 0, ®7, ®7, 0, 0, 3); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 54: +#line 1400 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(3) - (7)].reg)) && REG_SAME ((yyvsp[(5) - (7)].reg), (yyvsp[(7) - (7)].reg)) && !REG_SAME ((yyvsp[(1) - (7)].reg), (yyvsp[(5) - (7)].reg))) + { + notethat ("dsp32alu: A1 = - A1 , A0 = - A0\n"); + (yyval.instr) = DSP32ALU (14, 0, 0, 0, ®7, ®7, 0, 0, 3); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 55: +#line 1411 "bfin-parse.y" + { + if (!IS_A1 ((yyvsp[(1) - (3)].reg)) && IS_A1 ((yyvsp[(2) - (3)].reg))) + { + notethat ("dsp32alu: A0 -= A1\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, 0, ®7, ®7, (yyvsp[(3) - (3)].r0).r0, 0, 3); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 56: +#line 1422 "bfin-parse.y" + { + if (IS_IREG ((yyvsp[(1) - (3)].reg)) && EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 4) + { + notethat ("dagMODik: iregs -= 4\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[(1) - (3)].reg), 3); + } + else if (IS_IREG ((yyvsp[(1) - (3)].reg)) && EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 2) + { + notethat ("dagMODik: iregs -= 2\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[(1) - (3)].reg), 1); + } + else + return yyerror ("Register or value mismatch"); + } + break; + + case 57: +#line 1438 "bfin-parse.y" + { + if (IS_IREG ((yyvsp[(1) - (6)].reg)) && IS_MREG ((yyvsp[(3) - (6)].reg))) + { + notethat ("dagMODim: iregs += mregs (opt_brev)\n"); + /* i, m, op, br. */ + (yyval.instr) = DAGMODIM (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 0, 1); + } + else if (IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(3) - (6)].reg))) + { + notethat ("PTR2op: pregs += pregs (BREV )\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 5); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 58: +#line 1455 "bfin-parse.y" + { + if (IS_IREG ((yyvsp[(1) - (3)].reg)) && IS_MREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("dagMODim: iregs -= mregs\n"); + (yyval.instr) = DAGMODIM (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 1, 0); + } + else if (IS_PREG ((yyvsp[(1) - (3)].reg)) && IS_PREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("PTR2op: pregs -= pregs\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 59: +#line 1471 "bfin-parse.y" + { + if (!IS_A1 ((yyvsp[(1) - (4)].reg)) && IS_A1 ((yyvsp[(3) - (4)].reg))) + { + notethat ("dsp32alu: A0 += A1 (W32)\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, 0, ®7, ®7, (yyvsp[(4) - (4)].r0).r0, 0, 2); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 60: +#line 1482 "bfin-parse.y" + { + if (IS_IREG ((yyvsp[(1) - (3)].reg)) && IS_MREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("dagMODim: iregs += mregs\n"); + (yyval.instr) = DAGMODIM (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 0, 0); + } + else + return yyerror ("iregs += mregs expected"); + } + break; + + case 61: +#line 1493 "bfin-parse.y" + { + if (IS_IREG ((yyvsp[(1) - (3)].reg))) + { + if (EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 4) + { + notethat ("dagMODik: iregs += 4\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[(1) - (3)].reg), 2); + } + else if (EXPR_VALUE ((yyvsp[(3) - (3)].expr)) == 2) + { + notethat ("dagMODik: iregs += 2\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[(1) - (3)].reg), 0); + } + else + return yyerror ("iregs += [ 2 | 4 "); + } + else if (IS_PREG ((yyvsp[(1) - (3)].reg)) && IS_IMM ((yyvsp[(3) - (3)].expr), 7)) + { + notethat ("COMPI2opP: pregs += imm7\n"); + (yyval.instr) = COMPI2OPP (&(yyvsp[(1) - (3)].reg), imm7 ((yyvsp[(3) - (3)].expr)), 1); + } + else if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_IMM ((yyvsp[(3) - (3)].expr), 7)) + { + notethat ("COMPI2opD: dregs += imm7\n"); + (yyval.instr) = COMPI2OPD (&(yyvsp[(1) - (3)].reg), imm7 ((yyvsp[(3) - (3)].expr)), 1); + } + else if ((IS_DREG ((yyvsp[(1) - (3)].reg)) || IS_PREG ((yyvsp[(1) - (3)].reg))) && IS_CONST ((yyvsp[(3) - (3)].expr))) + return yyerror ("Immediate value out of range"); + else + return yyerror ("Register mismatch"); + } + break; + + case 62: +#line 1526 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("ALU2op: dregs *= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 3); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 63: +#line 1537 "bfin-parse.y" + { + if (!valid_dreg_pair (&(yyvsp[(3) - (11)].reg), (yyvsp[(5) - (11)].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[(7) - (11)].reg), (yyvsp[(9) - (11)].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: SAA (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (18, 0, 0, 0, &(yyvsp[(3) - (11)].reg), &(yyvsp[(7) - (11)].reg), (yyvsp[(11) - (11)].r0).r0, 0, 0); + } + } + break; + + case 64: +#line 1550 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (11)].reg), (yyvsp[(2) - (11)].reg)) && REG_SAME ((yyvsp[(7) - (11)].reg), (yyvsp[(8) - (11)].reg)) && !REG_SAME ((yyvsp[(1) - (11)].reg), (yyvsp[(7) - (11)].reg))) + { + notethat ("dsp32alu: A1 = A1 (S) , A0 = A0 (S)\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, 1, 0, 2); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 65: +#line 1561 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(4) - (9)].reg)) && IS_DREG ((yyvsp[(6) - (9)].reg)) + && REG_SAME ((yyvsp[(1) - (9)].reg), (yyvsp[(4) - (9)].reg))) + { + if (EXPR_VALUE ((yyvsp[(9) - (9)].expr)) == 1) + { + notethat ("ALU2op: dregs = (dregs + dregs) << 1\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(6) - (9)].reg), 4); + } + else if (EXPR_VALUE ((yyvsp[(9) - (9)].expr)) == 2) + { + notethat ("ALU2op: dregs = (dregs + dregs) << 2\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(6) - (9)].reg), 5); + } + else + return yyerror ("Bad shift value"); + } + else if (IS_PREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(4) - (9)].reg)) && IS_PREG ((yyvsp[(6) - (9)].reg)) + && REG_SAME ((yyvsp[(1) - (9)].reg), (yyvsp[(4) - (9)].reg))) + { + if (EXPR_VALUE ((yyvsp[(9) - (9)].expr)) == 1) + { + notethat ("PTR2op: pregs = (pregs + pregs) << 1\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(6) - (9)].reg), 6); + } + else if (EXPR_VALUE ((yyvsp[(9) - (9)].expr)) == 2) + { + notethat ("PTR2op: pregs = (pregs + pregs) << 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(6) - (9)].reg), 7); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 66: +#line 1600 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg))) + { + notethat ("COMP3op: dregs = dregs | dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (5)].reg), &(yyvsp[(3) - (5)].reg), &(yyvsp[(5) - (5)].reg), 3); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 67: +#line 1610 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg))) + { + notethat ("COMP3op: dregs = dregs ^ dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (5)].reg), &(yyvsp[(3) - (5)].reg), &(yyvsp[(5) - (5)].reg), 4); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 68: +#line 1620 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(1) - (9)].reg)) && IS_PREG ((yyvsp[(3) - (9)].reg)) && IS_PREG ((yyvsp[(6) - (9)].reg))) + { + if (EXPR_VALUE ((yyvsp[(8) - (9)].expr)) == 1) + { + notethat ("COMP3op: pregs = pregs + (pregs << 1)\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(3) - (9)].reg), &(yyvsp[(6) - (9)].reg), 6); + } + else if (EXPR_VALUE ((yyvsp[(8) - (9)].expr)) == 2) + { + notethat ("COMP3op: pregs = pregs + (pregs << 2)\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (9)].reg), &(yyvsp[(3) - (9)].reg), &(yyvsp[(6) - (9)].reg), 7); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 69: +#line 1640 "bfin-parse.y" + { + if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1) + { + notethat ("CCflag: CC = A0 == A1\n"); + (yyval.instr) = CCFLAG (0, 0, 5, 0, 0); + } + else + return yyerror ("AREGs are in bad order or same"); + } + break; + + case 70: +#line 1650 "bfin-parse.y" + { + if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1) + { + notethat ("CCflag: CC = A0 < A1\n"); + (yyval.instr) = CCFLAG (0, 0, 6, 0, 0); + } + else + return yyerror ("AREGs are in bad order or same"); + } + break; + + case 71: +#line 1660 "bfin-parse.y" + { + if ((IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + || (IS_PREG ((yyvsp[(3) - (6)].reg)) && IS_PREG ((yyvsp[(5) - (6)].reg)))) + { + notethat ("CCflag: CC = dpregs < dpregs\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), (yyvsp[(5) - (6)].reg).regno & CODE_MASK, (yyvsp[(6) - (6)].r0).r0, 0, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } + break; + + case 72: +#line 1671 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(3) - (6)].reg)) && !IS_PREG ((yyvsp[(3) - (6)].reg))) + return yyerror ("Bad register in comparison"); + + if (((yyvsp[(6) - (6)].r0).r0 == 1 && IS_IMM ((yyvsp[(5) - (6)].expr), 3)) + || ((yyvsp[(6) - (6)].r0).r0 == 3 && IS_UIMM ((yyvsp[(5) - (6)].expr), 3))) + { + notethat ("CCflag: CC = dpregs < (u)imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), imm3 ((yyvsp[(5) - (6)].expr)), (yyvsp[(6) - (6)].r0).r0, 1, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant value"); + } + break; + + case 73: +#line 1685 "bfin-parse.y" + { + if ((IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg))) + || (IS_PREG ((yyvsp[(3) - (5)].reg)) && IS_PREG ((yyvsp[(5) - (5)].reg)))) + { + notethat ("CCflag: CC = dpregs == dpregs\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (5)].reg), (yyvsp[(5) - (5)].reg).regno & CODE_MASK, 0, 0, IS_PREG ((yyvsp[(3) - (5)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } + break; + + case 74: +#line 1696 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(3) - (5)].reg)) && !IS_PREG ((yyvsp[(3) - (5)].reg))) + return yyerror ("Bad register in comparison"); + + if (IS_IMM ((yyvsp[(5) - (5)].expr), 3)) + { + notethat ("CCflag: CC = dpregs == imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (5)].reg), imm3 ((yyvsp[(5) - (5)].expr)), 0, 1, IS_PREG ((yyvsp[(3) - (5)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant range"); + } + break; + + case 75: +#line 1709 "bfin-parse.y" + { + if ((yyvsp[(3) - (5)].reg).regno == REG_A0 && (yyvsp[(5) - (5)].reg).regno == REG_A1) + { + notethat ("CCflag: CC = A0 <= A1\n"); + (yyval.instr) = CCFLAG (0, 0, 7, 0, 0); + } + else + return yyerror ("AREGs are in bad order or same"); + } + break; + + case 76: +#line 1719 "bfin-parse.y" + { + if ((IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + || (IS_PREG ((yyvsp[(3) - (6)].reg)) && IS_PREG ((yyvsp[(5) - (6)].reg)))) + { + notethat ("CCflag: CC = dpregs <= dpregs (..)\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), (yyvsp[(5) - (6)].reg).regno & CODE_MASK, + 1 + (yyvsp[(6) - (6)].r0).r0, 0, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } + break; + + case 77: +#line 1731 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(3) - (6)].reg)) && !IS_PREG ((yyvsp[(3) - (6)].reg))) + return yyerror ("Bad register in comparison"); + + if (((yyvsp[(6) - (6)].r0).r0 == 1 && IS_IMM ((yyvsp[(5) - (6)].expr), 3)) + || ((yyvsp[(6) - (6)].r0).r0 == 3 && IS_UIMM ((yyvsp[(5) - (6)].expr), 3))) + { + notethat ("CCflag: CC = dpregs <= (u)imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[(3) - (6)].reg), imm3 ((yyvsp[(5) - (6)].expr)), 1 + (yyvsp[(6) - (6)].r0).r0, 1, IS_PREG ((yyvsp[(3) - (6)].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant value"); + } + break; + + case 78: +#line 1746 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(3) - (5)].reg)) && IS_DREG ((yyvsp[(5) - (5)].reg))) + { + notethat ("COMP3op: dregs = dregs & dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (5)].reg), &(yyvsp[(3) - (5)].reg), &(yyvsp[(5) - (5)].reg), 2); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 79: +#line 1757 "bfin-parse.y" + { + notethat ("CC2stat operation\n"); + (yyval.instr) = bfin_gen_cc2stat ((yyvsp[(1) - (1)].modcodes).r0, (yyvsp[(1) - (1)].modcodes).x0, (yyvsp[(1) - (1)].modcodes).s0); + } + break; + + case 80: +#line 1763 "bfin-parse.y" + { + if ((IS_GENREG ((yyvsp[(1) - (3)].reg)) && IS_GENREG ((yyvsp[(3) - (3)].reg))) + || (IS_GENREG ((yyvsp[(1) - (3)].reg)) && IS_DAGREG ((yyvsp[(3) - (3)].reg))) + || (IS_DAGREG ((yyvsp[(1) - (3)].reg)) && IS_GENREG ((yyvsp[(3) - (3)].reg))) + || (IS_DAGREG ((yyvsp[(1) - (3)].reg)) && IS_DAGREG ((yyvsp[(3) - (3)].reg))) + || (IS_GENREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_USP) + || ((yyvsp[(1) - (3)].reg).regno == REG_USP && IS_GENREG ((yyvsp[(3) - (3)].reg))) + || ((yyvsp[(1) - (3)].reg).regno == REG_USP && (yyvsp[(3) - (3)].reg).regno == REG_USP) + || (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_SYSREG ((yyvsp[(3) - (3)].reg))) + || (IS_PREG ((yyvsp[(1) - (3)].reg)) && IS_SYSREG ((yyvsp[(3) - (3)].reg))) + || (IS_SYSREG ((yyvsp[(1) - (3)].reg)) && IS_GENREG ((yyvsp[(3) - (3)].reg))) + || (IS_ALLREG ((yyvsp[(1) - (3)].reg)) && IS_EMUDAT ((yyvsp[(3) - (3)].reg))) + || (IS_EMUDAT ((yyvsp[(1) - (3)].reg)) && IS_ALLREG ((yyvsp[(3) - (3)].reg))) + || (IS_SYSREG ((yyvsp[(1) - (3)].reg)) && (yyvsp[(3) - (3)].reg).regno == REG_USP)) + { + (yyval.instr) = bfin_gen_regmv (&(yyvsp[(3) - (3)].reg), &(yyvsp[(1) - (3)].reg)); + } + else + return yyerror ("Unsupported register move"); + } + break; + + case 81: +#line 1785 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("CC2dreg: CC = dregs\n"); + (yyval.instr) = bfin_gen_cc2dreg (1, &(yyvsp[(3) - (3)].reg)); + } + else + return yyerror ("Only 'CC = Dreg' supported"); + } + break; + + case 82: +#line 1796 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg))) + { + notethat ("CC2dreg: dregs = CC\n"); + (yyval.instr) = bfin_gen_cc2dreg (0, &(yyvsp[(1) - (3)].reg)); + } + else + return yyerror ("Only 'Dreg = CC' supported"); + } + break; + + case 83: +#line 1807 "bfin-parse.y" + { + notethat ("CC2dreg: CC =! CC\n"); + (yyval.instr) = bfin_gen_cc2dreg (3, 0); + } + break; + + case 84: +#line 1815 "bfin-parse.y" + { + notethat ("dsp32mult: dregs_half = multiply_halfregs (opt_mode)\n"); + + if (!IS_H ((yyvsp[(1) - (4)].reg)) && (yyvsp[(4) - (4)].mod).MM) + return yyerror ("(M) not allowed with MAC0"); + + if ((yyvsp[(4) - (4)].mod).mod != 0 && (yyvsp[(4) - (4)].mod).mod != M_FU && (yyvsp[(4) - (4)].mod).mod != M_IS + && (yyvsp[(4) - (4)].mod).mod != M_IU && (yyvsp[(4) - (4)].mod).mod != M_T && (yyvsp[(4) - (4)].mod).mod != M_TFU + && (yyvsp[(4) - (4)].mod).mod != M_S2RND && (yyvsp[(4) - (4)].mod).mod != M_ISS2 && (yyvsp[(4) - (4)].mod).mod != M_IH) + return yyerror ("bad option."); + + if (IS_H ((yyvsp[(1) - (4)].reg))) + { + (yyval.instr) = DSP32MULT (0, (yyvsp[(4) - (4)].mod).MM, (yyvsp[(4) - (4)].mod).mod, 1, 0, + IS_H ((yyvsp[(3) - (4)].macfunc).s0), IS_H ((yyvsp[(3) - (4)].macfunc).s1), 0, 0, + &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(3) - (4)].macfunc).s0, &(yyvsp[(3) - (4)].macfunc).s1, 0); + } + else + { + (yyval.instr) = DSP32MULT (0, 0, (yyvsp[(4) - (4)].mod).mod, 0, 0, + 0, 0, IS_H ((yyvsp[(3) - (4)].macfunc).s0), IS_H ((yyvsp[(3) - (4)].macfunc).s1), + &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(3) - (4)].macfunc).s0, &(yyvsp[(3) - (4)].macfunc).s1, 1); + } + } + break; + + case 85: +#line 1841 "bfin-parse.y" + { + /* Odd registers can use (M). */ + if (!IS_DREG ((yyvsp[(1) - (4)].reg))) + return yyerror ("Dreg expected"); + + if (IS_EVEN ((yyvsp[(1) - (4)].reg)) && (yyvsp[(4) - (4)].mod).MM) + return yyerror ("(M) not allowed with MAC0"); + + if ((yyvsp[(4) - (4)].mod).mod != 0 && (yyvsp[(4) - (4)].mod).mod != M_FU && (yyvsp[(4) - (4)].mod).mod != M_IS + && (yyvsp[(4) - (4)].mod).mod != M_S2RND && (yyvsp[(4) - (4)].mod).mod != M_ISS2) + return yyerror ("bad option"); + + if (!IS_EVEN ((yyvsp[(1) - (4)].reg))) + { + notethat ("dsp32mult: dregs = multiply_halfregs (opt_mode)\n"); + + (yyval.instr) = DSP32MULT (0, (yyvsp[(4) - (4)].mod).MM, (yyvsp[(4) - (4)].mod).mod, 1, 1, + IS_H ((yyvsp[(3) - (4)].macfunc).s0), IS_H ((yyvsp[(3) - (4)].macfunc).s1), 0, 0, + &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(3) - (4)].macfunc).s0, &(yyvsp[(3) - (4)].macfunc).s1, 0); + } + else + { + notethat ("dsp32mult: dregs = multiply_halfregs opt_mode\n"); + (yyval.instr) = DSP32MULT (0, 0, (yyvsp[(4) - (4)].mod).mod, 0, 1, + 0, 0, IS_H ((yyvsp[(3) - (4)].macfunc).s0), IS_H ((yyvsp[(3) - (4)].macfunc).s1), + &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(3) - (4)].macfunc).s0, &(yyvsp[(3) - (4)].macfunc).s1, 1); + } + } + break; + + case 86: +#line 1872 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (9)].reg)) || !IS_DREG ((yyvsp[(6) - (9)].reg))) + return yyerror ("Dregs expected"); + + if (!IS_HCOMPL((yyvsp[(1) - (9)].reg), (yyvsp[(6) - (9)].reg))) + return yyerror ("Dest registers mismatch"); + + if (check_multiply_halfregs (&(yyvsp[(3) - (9)].macfunc), &(yyvsp[(8) - (9)].macfunc)) < 0) + return -1; + + if ((!IS_H ((yyvsp[(1) - (9)].reg)) && (yyvsp[(4) - (9)].mod).MM) + || (!IS_H ((yyvsp[(6) - (9)].reg)) && (yyvsp[(9) - (9)].mod).MM)) + return yyerror ("(M) not allowed with MAC0"); + + notethat ("dsp32mult: dregs_hi = multiply_halfregs mxd_mod, " + "dregs_lo = multiply_halfregs opt_mode\n"); + + if (IS_H ((yyvsp[(1) - (9)].reg))) + (yyval.instr) = DSP32MULT (0, (yyvsp[(4) - (9)].mod).MM, (yyvsp[(9) - (9)].mod).mod, 1, 0, + IS_H ((yyvsp[(3) - (9)].macfunc).s0), IS_H ((yyvsp[(3) - (9)].macfunc).s1), IS_H ((yyvsp[(8) - (9)].macfunc).s0), IS_H ((yyvsp[(8) - (9)].macfunc).s1), + &(yyvsp[(1) - (9)].reg), 0, &(yyvsp[(3) - (9)].macfunc).s0, &(yyvsp[(3) - (9)].macfunc).s1, 1); + else + (yyval.instr) = DSP32MULT (0, (yyvsp[(9) - (9)].mod).MM, (yyvsp[(9) - (9)].mod).mod, 1, 0, + IS_H ((yyvsp[(8) - (9)].macfunc).s0), IS_H ((yyvsp[(8) - (9)].macfunc).s1), IS_H ((yyvsp[(3) - (9)].macfunc).s0), IS_H ((yyvsp[(3) - (9)].macfunc).s1), + &(yyvsp[(1) - (9)].reg), 0, &(yyvsp[(3) - (9)].macfunc).s0, &(yyvsp[(3) - (9)].macfunc).s1, 1); + } + break; + + case 87: +#line 1900 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (9)].reg)) || !IS_DREG ((yyvsp[(6) - (9)].reg))) + return yyerror ("Dregs expected"); + + if ((IS_EVEN ((yyvsp[(1) - (9)].reg)) && (yyvsp[(6) - (9)].reg).regno - (yyvsp[(1) - (9)].reg).regno != 1) + || (IS_EVEN ((yyvsp[(6) - (9)].reg)) && (yyvsp[(1) - (9)].reg).regno - (yyvsp[(6) - (9)].reg).regno != 1)) + return yyerror ("Dest registers mismatch"); + + if (check_multiply_halfregs (&(yyvsp[(3) - (9)].macfunc), &(yyvsp[(8) - (9)].macfunc)) < 0) + return -1; + + if ((IS_EVEN ((yyvsp[(1) - (9)].reg)) && (yyvsp[(4) - (9)].mod).MM) + || (IS_EVEN ((yyvsp[(6) - (9)].reg)) && (yyvsp[(9) - (9)].mod).MM)) + return yyerror ("(M) not allowed with MAC0"); + + notethat ("dsp32mult: dregs = multiply_halfregs mxd_mod, " + "dregs = multiply_halfregs opt_mode\n"); + + if (IS_EVEN ((yyvsp[(1) - (9)].reg))) + (yyval.instr) = DSP32MULT (0, (yyvsp[(9) - (9)].mod).MM, (yyvsp[(9) - (9)].mod).mod, 1, 1, + IS_H ((yyvsp[(8) - (9)].macfunc).s0), IS_H ((yyvsp[(8) - (9)].macfunc).s1), IS_H ((yyvsp[(3) - (9)].macfunc).s0), IS_H ((yyvsp[(3) - (9)].macfunc).s1), + &(yyvsp[(1) - (9)].reg), 0, &(yyvsp[(3) - (9)].macfunc).s0, &(yyvsp[(3) - (9)].macfunc).s1, 1); + else + (yyval.instr) = DSP32MULT (0, (yyvsp[(4) - (9)].mod).MM, (yyvsp[(9) - (9)].mod).mod, 1, 1, + IS_H ((yyvsp[(3) - (9)].macfunc).s0), IS_H ((yyvsp[(3) - (9)].macfunc).s1), IS_H ((yyvsp[(8) - (9)].macfunc).s0), IS_H ((yyvsp[(8) - (9)].macfunc).s1), + &(yyvsp[(1) - (9)].reg), 0, &(yyvsp[(3) - (9)].macfunc).s0, &(yyvsp[(3) - (9)].macfunc).s1, 1); + } + break; + + case 88: +#line 1931 "bfin-parse.y" + { + if (!REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg))) + return yyerror ("Aregs must be same"); + + if (IS_DREG ((yyvsp[(5) - (5)].reg)) && !IS_H ((yyvsp[(5) - (5)].reg))) + { + notethat ("dsp32shift: A0 = ASHIFT A0 BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[(5) - (5)].reg), 0, 0, IS_A1 ((yyvsp[(1) - (5)].reg))); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 89: +#line 1945 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(6) - (7)].reg)) && !IS_H ((yyvsp[(6) - (7)].reg))) + { + notethat ("dsp32shift: dregs_half = ASHIFT dregs_half BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (0, &(yyvsp[(1) - (7)].reg), &(yyvsp[(6) - (7)].reg), &(yyvsp[(4) - (7)].reg), (yyvsp[(7) - (7)].modcodes).s0, HL2 ((yyvsp[(1) - (7)].reg), (yyvsp[(4) - (7)].reg))); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 90: +#line 1956 "bfin-parse.y" + { + if (!REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg))) + return yyerror ("Aregs must be same"); + + if (IS_UIMM ((yyvsp[(4) - (4)].expr), 5)) + { + notethat ("dsp32shiftimm: A0 = A0 << uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, imm5 ((yyvsp[(4) - (4)].expr)), 0, 0, IS_A1 ((yyvsp[(1) - (4)].reg))); + } + else + return yyerror ("Bad shift value"); + } + break; + + case 91: +#line 1970 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + if ((yyvsp[(6) - (6)].modcodes).r0) + { + /* Vector? */ + notethat ("dsp32shiftimm: dregs = dregs << expr (V, .)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[(1) - (6)].reg), imm4 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0 ? 1 : 2, 0); + } + else + { + notethat ("dsp32shiftimm: dregs = dregs << uimm5 (.)\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[(1) - (6)].reg), imm6 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0 ? 1 : 2, 0); + } + } + else if ((yyvsp[(6) - (6)].modcodes).s0 == 0 && IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(3) - (6)].reg))) + { + if (EXPR_VALUE ((yyvsp[(5) - (6)].expr)) == 2) + { + notethat ("PTR2op: pregs = pregs << 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 1); + } + else if (EXPR_VALUE ((yyvsp[(5) - (6)].expr)) == 1) + { + notethat ("COMP3op: pregs = pregs << 1\n"); + (yyval.instr) = COMP3OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), &(yyvsp[(3) - (6)].reg), 5); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Bad shift value or register"); + } + break; + + case 92: +#line 2004 "bfin-parse.y" + { + if (IS_UIMM ((yyvsp[(5) - (6)].expr), 4)) + { + if ((yyvsp[(6) - (6)].modcodes).s0) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4 (S)\n"); + (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (6)].reg), imm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg))); + } + else + { + notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n"); + (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[(1) - (6)].reg), imm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), 2, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg))); + } + } + else + return yyerror ("Bad shift value"); + } + break; + + case 93: +#line 2022 "bfin-parse.y" + { + int op; + + if (IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_DREG ((yyvsp[(4) - (7)].reg)) && IS_DREG ((yyvsp[(6) - (7)].reg)) && !IS_H ((yyvsp[(6) - (7)].reg))) + { + if ((yyvsp[(7) - (7)].modcodes).r0) + { + op = 1; + notethat ("dsp32shift: dregs = ASHIFT dregs BY " + "dregs_lo (V, .)\n"); + } + else + { + + op = 2; + notethat ("dsp32shift: dregs = ASHIFT dregs BY dregs_lo (.)\n"); + } + (yyval.instr) = DSP32SHIFT (op, &(yyvsp[(1) - (7)].reg), &(yyvsp[(6) - (7)].reg), &(yyvsp[(4) - (7)].reg), (yyvsp[(7) - (7)].modcodes).s0, 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 94: +#line 2047 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (9)].reg)) && IS_DREG_L ((yyvsp[(5) - (9)].reg)) && IS_DREG_L ((yyvsp[(7) - (9)].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs , dregs_lo )\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), &(yyvsp[(5) - (9)].reg), (yyvsp[(9) - (9)].r0).r0, 0); + } + else + return yyerror ("Bad shift value or register"); + } + break; + + case 95: +#line 2059 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (8)].reg)) && IS_DREG_L ((yyvsp[(5) - (8)].reg)) && IS_DREG_L ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_lo, dregs_lo)\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), &(yyvsp[(5) - (8)].reg), 2, 0); + } + else if (IS_DREG_L ((yyvsp[(1) - (8)].reg)) && IS_DREG_H ((yyvsp[(5) - (8)].reg)) && IS_DREG_L ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_hi, dregs_lo)\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), &(yyvsp[(5) - (8)].reg), 3, 0); + } + else + return yyerror ("Bad shift value or register"); + } + break; + + case 96: +#line 2077 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs )\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), &(yyvsp[(5) - (8)].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 97: +#line 2088 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (11)].reg)) && IS_DREG ((yyvsp[(5) - (11)].reg)) && IS_DREG ((yyvsp[(7) - (11)].reg))) + { + notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs ) (X)\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[(1) - (11)].reg), &(yyvsp[(7) - (11)].reg), &(yyvsp[(5) - (11)].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 98: +#line 2099 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && IS_DREG_L ((yyvsp[(7) - (9)].reg))) + { + notethat ("dsp32shift: dregs = EXTRACT (dregs, dregs_lo ) (.)\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), &(yyvsp[(5) - (9)].reg), (yyvsp[(9) - (9)].r0).r0, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 99: +#line 2110 "bfin-parse.y" + { + if (!REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg))) + return yyerror ("Aregs must be same"); + + if (IS_UIMM ((yyvsp[(4) - (4)].expr), 5)) + { + notethat ("dsp32shiftimm: Ax = Ax >>> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[(4) - (4)].expr)), 0, 0, IS_A1 ((yyvsp[(1) - (4)].reg))); + } + else + return yyerror ("Shift value range error"); + } + break; + + case 100: +#line 2123 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)) && IS_DREG_L ((yyvsp[(5) - (5)].reg))) + { + notethat ("dsp32shift: Ax = LSHIFT Ax BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[(5) - (5)].reg), 0, 1, IS_A1 ((yyvsp[(1) - (5)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 101: +#line 2134 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg))) + { + notethat ("dsp32shift: dregs_lo = LSHIFT dregs_hi BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (0, &(yyvsp[(1) - (6)].reg), &(yyvsp[(6) - (6)].reg), &(yyvsp[(4) - (6)].reg), 2, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(4) - (6)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 102: +#line 2145 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (7)].reg)) && IS_DREG ((yyvsp[(4) - (7)].reg)) && IS_DREG_L ((yyvsp[(6) - (7)].reg))) + { + notethat ("dsp32shift: dregs = LSHIFT dregs BY dregs_lo (V )\n"); + (yyval.instr) = DSP32SHIFT ((yyvsp[(7) - (7)].r0).r0 ? 1: 2, &(yyvsp[(1) - (7)].reg), &(yyvsp[(6) - (7)].reg), &(yyvsp[(4) - (7)].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 103: +#line 2156 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg))) + { + notethat ("dsp32shift: dregs = SHIFT dregs BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (2, &(yyvsp[(1) - (6)].reg), &(yyvsp[(6) - (6)].reg), &(yyvsp[(4) - (6)].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 104: +#line 2167 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (4)].reg), (yyvsp[(2) - (4)].reg)) && IS_IMM ((yyvsp[(4) - (4)].expr), 6) >= 0) + { + notethat ("dsp32shiftimm: Ax = Ax >> imm6\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[(4) - (4)].expr)), 0, 1, IS_A1 ((yyvsp[(1) - (4)].reg))); + } + else + return yyerror ("Accu register expected"); + } + break; + + case 105: +#line 2178 "bfin-parse.y" + { + if ((yyvsp[(6) - (6)].r0).r0 == 1) + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("dsp32shiftimm: dregs = dregs >> uimm5 (V)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[(1) - (6)].reg), -uimm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } + else + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("dsp32shiftimm: dregs = dregs >> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[(1) - (6)].reg), -imm6 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), 2, 0); + } + else if (IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(3) - (6)].reg)) && EXPR_VALUE ((yyvsp[(5) - (6)].expr)) == 2) + { + notethat ("PTR2op: pregs = pregs >> 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 3); + } + else if (IS_PREG ((yyvsp[(1) - (6)].reg)) && IS_PREG ((yyvsp[(3) - (6)].reg)) && EXPR_VALUE ((yyvsp[(5) - (6)].expr)) == 1) + { + notethat ("PTR2op: pregs = pregs >> 1\n"); + (yyval.instr) = PTR2OP (&(yyvsp[(1) - (6)].reg), &(yyvsp[(3) - (6)].reg), 4); + } + else + return yyerror ("Register mismatch"); + } + } + break; + + case 106: +#line 2211 "bfin-parse.y" + { + if (IS_UIMM ((yyvsp[(5) - (5)].expr), 5)) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half >> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[(1) - (5)].reg), -uimm5 ((yyvsp[(5) - (5)].expr)), &(yyvsp[(3) - (5)].reg), 2, HL2 ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 107: +#line 2221 "bfin-parse.y" + { + if (IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half >>> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[(1) - (6)].reg), -uimm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), + (yyvsp[(6) - (6)].modcodes).s0, HL2 ((yyvsp[(1) - (6)].reg), (yyvsp[(3) - (6)].reg))); + } + else + return yyerror ("Register or modifier mismatch"); + } + break; + + case 108: +#line 2234 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + if ((yyvsp[(6) - (6)].modcodes).r0) + { + /* Vector? */ + notethat ("dsp32shiftimm: dregs = dregs >>> uimm5 (V, .)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[(1) - (6)].reg), -uimm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, 0); + } + else + { + notethat ("dsp32shiftimm: dregs = dregs >>> uimm5 (.)\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[(1) - (6)].reg), -uimm5 ((yyvsp[(5) - (6)].expr)), &(yyvsp[(3) - (6)].reg), (yyvsp[(6) - (6)].modcodes).s0, 0); + } + } + else + return yyerror ("Register mismatch"); + } + break; + + case 109: +#line 2254 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg))) + { + notethat ("dsp32shift: dregs_lo = ONES dregs\n"); + (yyval.instr) = DSP32SHIFT (6, &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(4) - (4)].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 110: +#line 2265 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (8)].reg)) && IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_DREG ((yyvsp[(7) - (8)].reg))) + { + notethat ("dsp32shift: dregs = PACK (dregs_hi , dregs_hi )\n"); + (yyval.instr) = DSP32SHIFT (4, &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), &(yyvsp[(5) - (8)].reg), HL2 ((yyvsp[(5) - (8)].reg), (yyvsp[(7) - (8)].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 111: +#line 2276 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (10)].reg)) + && (yyvsp[(7) - (10)].reg).regno == REG_A0 + && IS_DREG ((yyvsp[(9) - (10)].reg)) && !IS_H ((yyvsp[(1) - (10)].reg)) && !IS_A1 ((yyvsp[(7) - (10)].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXORSHIFT (A0 , dregs )\n"); + (yyval.instr) = DSP32SHIFT (11, &(yyvsp[(1) - (10)].reg), &(yyvsp[(9) - (10)].reg), 0, 0, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 112: +#line 2289 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (10)].reg)) + && (yyvsp[(7) - (10)].reg).regno == REG_A0 + && IS_DREG ((yyvsp[(9) - (10)].reg)) && !IS_H ((yyvsp[(1) - (10)].reg)) && !IS_A1 ((yyvsp[(7) - (10)].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , dregs)\n"); + (yyval.instr) = DSP32SHIFT (11, &(yyvsp[(1) - (10)].reg), &(yyvsp[(9) - (10)].reg), 0, 1, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 113: +#line 2302 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (12)].reg)) && !IS_H ((yyvsp[(1) - (12)].reg)) && !REG_SAME ((yyvsp[(7) - (12)].reg), (yyvsp[(9) - (12)].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , A1 , CC)\n"); + (yyval.instr) = DSP32SHIFT (12, &(yyvsp[(1) - (12)].reg), 0, 0, 1, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 114: +#line 2313 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(1) - (5)].reg), (yyvsp[(3) - (5)].reg)) && IS_DREG_L ((yyvsp[(5) - (5)].reg))) + { + notethat ("dsp32shift: Ax = ROT Ax BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[(5) - (5)].reg), 0, 2, IS_A1 ((yyvsp[(1) - (5)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 115: +#line 2324 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_DREG_L ((yyvsp[(6) - (6)].reg))) + { + notethat ("dsp32shift: dregs = ROT dregs BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (2, &(yyvsp[(1) - (6)].reg), &(yyvsp[(6) - (6)].reg), &(yyvsp[(4) - (6)].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 116: +#line 2335 "bfin-parse.y" + { + if (IS_IMM ((yyvsp[(5) - (5)].expr), 6)) + { + notethat ("dsp32shiftimm: An = ROT An BY imm6\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, imm6 ((yyvsp[(5) - (5)].expr)), 0, 2, IS_A1 ((yyvsp[(1) - (5)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 117: +#line 2346 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (6)].reg)) && IS_DREG ((yyvsp[(4) - (6)].reg)) && IS_IMM ((yyvsp[(6) - (6)].expr), 6)) + { + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[(1) - (6)].reg), imm6 ((yyvsp[(6) - (6)].expr)), &(yyvsp[(4) - (6)].reg), 3, IS_A1 ((yyvsp[(1) - (6)].reg))); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 118: +#line 2356 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (4)].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS An\n"); + (yyval.instr) = DSP32SHIFT (6, &(yyvsp[(1) - (4)].reg), 0, 0, IS_A1 ((yyvsp[(4) - (4)].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 119: +#line 2367 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS dregs\n"); + (yyval.instr) = DSP32SHIFT (5, &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(4) - (4)].reg), 0, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 120: +#line 2378 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (4)].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (5, &(yyvsp[(1) - (4)].reg), 0, &(yyvsp[(4) - (4)].reg), 1 + IS_H ((yyvsp[(4) - (4)].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 121: +#line 2390 "bfin-parse.y" + { + if (IS_DREG_L ((yyvsp[(1) - (7)].reg)) && IS_DREG ((yyvsp[(5) - (7)].reg))) + { + notethat ("dsp32shift: dregs_lo = VIT_MAX (dregs) (..)\n"); + (yyval.instr) = DSP32SHIFT (9, &(yyvsp[(1) - (7)].reg), 0, &(yyvsp[(5) - (7)].reg), ((yyvsp[(7) - (7)].r0).r0 ? 0 : 1), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 122: +#line 2401 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && IS_DREG ((yyvsp[(7) - (9)].reg))) + { + notethat ("dsp32shift: dregs = VIT_MAX (dregs, dregs) (ASR)\n"); + (yyval.instr) = DSP32SHIFT (9, &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), &(yyvsp[(5) - (9)].reg), 2 | ((yyvsp[(9) - (9)].r0).r0 ? 0 : 1), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 123: +#line 2412 "bfin-parse.y" + { + if (REG_SAME ((yyvsp[(3) - (9)].reg), (yyvsp[(5) - (9)].reg))) + return yyerror ("Illegal source register combination"); + + if (IS_DREG ((yyvsp[(3) - (9)].reg)) && IS_DREG ((yyvsp[(5) - (9)].reg)) && !IS_A1 ((yyvsp[(7) - (9)].reg))) + { + notethat ("dsp32shift: BITMUX (dregs , dregs , A0) (ASR)\n"); + (yyval.instr) = DSP32SHIFT (8, 0, &(yyvsp[(3) - (9)].reg), &(yyvsp[(5) - (9)].reg), (yyvsp[(9) - (9)].r0).r0, 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 124: +#line 2426 "bfin-parse.y" + { + if (!IS_A1 ((yyvsp[(1) - (9)].reg)) && !IS_A1 ((yyvsp[(4) - (9)].reg)) && IS_A1 ((yyvsp[(6) - (9)].reg))) + { + notethat ("dsp32shift: A0 = BXORSHIFT (A0 , A1 , CC )\n"); + (yyval.instr) = DSP32SHIFT (12, 0, 0, 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 125: +#line 2439 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(3) - (6)].reg), uimm5 ((yyvsp[(5) - (6)].expr)), 4); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 126: +#line 2451 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(3) - (6)].reg), uimm5 ((yyvsp[(5) - (6)].expr)), 2); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 127: +#line 2463 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_UIMM ((yyvsp[(5) - (6)].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(3) - (6)].reg), uimm5 ((yyvsp[(5) - (6)].expr)), 3); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 128: +#line 2474 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_UIMM ((yyvsp[(7) - (8)].expr), 5)) + { + notethat ("LOGI2op: CC =! BITTST (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(5) - (8)].reg), uimm5 ((yyvsp[(7) - (8)].expr)), 0); + } + else + return yyerror ("Register mismatch or value error"); + } + break; + + case 129: +#line 2485 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(5) - (8)].reg)) && IS_UIMM ((yyvsp[(7) - (8)].expr), 5)) + { + notethat ("LOGI2op: CC = BITTST (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(5) - (8)].reg), uimm5 ((yyvsp[(7) - (8)].expr)), 1); + } + else + return yyerror ("Register mismatch or value error"); + } + break; + + case 130: +#line 2496 "bfin-parse.y" + { + if ((IS_DREG ((yyvsp[(4) - (6)].reg)) || IS_PREG ((yyvsp[(4) - (6)].reg))) + && (IS_DREG ((yyvsp[(6) - (6)].reg)) || IS_PREG ((yyvsp[(6) - (6)].reg)))) + { + notethat ("ccMV: IF ! CC gregs = gregs\n"); + (yyval.instr) = CCMV (&(yyvsp[(6) - (6)].reg), &(yyvsp[(4) - (6)].reg), 0); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 131: +#line 2508 "bfin-parse.y" + { + if ((IS_DREG ((yyvsp[(5) - (5)].reg)) || IS_PREG ((yyvsp[(5) - (5)].reg))) + && (IS_DREG ((yyvsp[(3) - (5)].reg)) || IS_PREG ((yyvsp[(3) - (5)].reg)))) + { + notethat ("ccMV: IF CC gregs = gregs\n"); + (yyval.instr) = CCMV (&(yyvsp[(5) - (5)].reg), &(yyvsp[(3) - (5)].reg), 1); + } + else + return yyerror ("Register mismatch"); + } + break; + + case 132: +#line 2520 "bfin-parse.y" + { + if (IS_PCREL10 ((yyvsp[(5) - (5)].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (0, 0, (yyvsp[(5) - (5)].expr)); + } + else + return yyerror ("Bad jump offset"); + } + break; + + case 133: +#line 2531 "bfin-parse.y" + { + if (IS_PCREL10 ((yyvsp[(5) - (8)].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (0, 1, (yyvsp[(5) - (8)].expr)); + } + else + return yyerror ("Bad jump offset"); + } + break; + + case 134: +#line 2542 "bfin-parse.y" + { + if (IS_PCREL10 ((yyvsp[(4) - (4)].expr))) + { + notethat ("BRCC: IF CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (1, 0, (yyvsp[(4) - (4)].expr)); + } + else + return yyerror ("Bad jump offset"); + } + break; + + case 135: +#line 2553 "bfin-parse.y" + { + if (IS_PCREL10 ((yyvsp[(4) - (7)].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (1, 1, (yyvsp[(4) - (7)].expr)); + } + else + return yyerror ("Bad jump offset"); + } + break; + + case 136: +#line 2563 "bfin-parse.y" + { + notethat ("ProgCtrl: NOP\n"); + (yyval.instr) = PROGCTRL (0, 0); + } + break; + + case 137: +#line 2569 "bfin-parse.y" + { + notethat ("ProgCtrl: RTS\n"); + (yyval.instr) = PROGCTRL (1, 0); + } + break; + + case 138: +#line 2575 "bfin-parse.y" + { + notethat ("ProgCtrl: RTI\n"); + (yyval.instr) = PROGCTRL (1, 1); + } + break; + + case 139: +#line 2581 "bfin-parse.y" + { + notethat ("ProgCtrl: RTX\n"); + (yyval.instr) = PROGCTRL (1, 2); + } + break; + + case 140: +#line 2587 "bfin-parse.y" + { + notethat ("ProgCtrl: RTN\n"); + (yyval.instr) = PROGCTRL (1, 3); + } + break; + + case 141: +#line 2593 "bfin-parse.y" + { + notethat ("ProgCtrl: RTE\n"); + (yyval.instr) = PROGCTRL (1, 4); + } + break; + + case 142: +#line 2599 "bfin-parse.y" + { + notethat ("ProgCtrl: IDLE\n"); + (yyval.instr) = PROGCTRL (2, 0); + } + break; + + case 143: +#line 2605 "bfin-parse.y" + { + notethat ("ProgCtrl: CSYNC\n"); + (yyval.instr) = PROGCTRL (2, 3); + } + break; + + case 144: +#line 2611 "bfin-parse.y" + { + notethat ("ProgCtrl: SSYNC\n"); + (yyval.instr) = PROGCTRL (2, 4); + } + break; + + case 145: +#line 2617 "bfin-parse.y" + { + notethat ("ProgCtrl: EMUEXCPT\n"); + (yyval.instr) = PROGCTRL (2, 5); + } + break; + + case 146: +#line 2623 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("ProgCtrl: CLI dregs\n"); + (yyval.instr) = PROGCTRL (3, (yyvsp[(2) - (2)].reg).regno & CODE_MASK); + } + else + return yyerror ("Dreg expected for CLI"); + } + break; + + case 147: +#line 2634 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("ProgCtrl: STI dregs\n"); + (yyval.instr) = PROGCTRL (4, (yyvsp[(2) - (2)].reg).regno & CODE_MASK); + } + else + return yyerror ("Dreg expected for STI"); + } + break; + + case 148: +#line 2645 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("ProgCtrl: JUMP (pregs )\n"); + (yyval.instr) = PROGCTRL (5, (yyvsp[(3) - (4)].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect jump"); + } + break; + + case 149: +#line 2656 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("ProgCtrl: CALL (pregs )\n"); + (yyval.instr) = PROGCTRL (6, (yyvsp[(3) - (4)].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect call"); + } + break; + + case 150: +#line 2667 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(5) - (6)].reg))) + { + notethat ("ProgCtrl: CALL (PC + pregs )\n"); + (yyval.instr) = PROGCTRL (7, (yyvsp[(5) - (6)].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect call"); + } + break; + + case 151: +#line 2678 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(5) - (6)].reg))) + { + notethat ("ProgCtrl: JUMP (PC + pregs )\n"); + (yyval.instr) = PROGCTRL (8, (yyvsp[(5) - (6)].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect jump"); + } + break; + + case 152: +#line 2689 "bfin-parse.y" + { + if (IS_UIMM ((yyvsp[(2) - (2)].expr), 4)) + { + notethat ("ProgCtrl: RAISE uimm4\n"); + (yyval.instr) = PROGCTRL (9, uimm4 ((yyvsp[(2) - (2)].expr))); + } + else + return yyerror ("Bad value for RAISE"); + } + break; + + case 153: +#line 2700 "bfin-parse.y" + { + notethat ("ProgCtrl: EMUEXCPT\n"); + (yyval.instr) = PROGCTRL (10, uimm4 ((yyvsp[(2) - (2)].expr))); + } + break; + + case 154: +#line 2706 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + if ((yyvsp[(3) - (4)].reg).regno == REG_SP || (yyvsp[(3) - (4)].reg).regno == REG_FP) + return yyerror ("Bad register for TESTSET"); + + notethat ("ProgCtrl: TESTSET (pregs )\n"); + (yyval.instr) = PROGCTRL (11, (yyvsp[(3) - (4)].reg).regno & CODE_MASK); + } + else + return yyerror ("Preg expected"); + } + break; + + case 155: +#line 2720 "bfin-parse.y" + { + if (IS_PCREL12 ((yyvsp[(2) - (2)].expr))) + { + notethat ("UJUMP: JUMP pcrel12\n"); + (yyval.instr) = UJUMP ((yyvsp[(2) - (2)].expr)); + } + else + return yyerror ("Bad value for relative jump"); + } + break; + + case 156: +#line 2731 "bfin-parse.y" + { + if (IS_PCREL12 ((yyvsp[(2) - (2)].expr))) + { + notethat ("UJUMP: JUMP_DOT_S pcrel12\n"); + (yyval.instr) = UJUMP((yyvsp[(2) - (2)].expr)); + } + else + return yyerror ("Bad value for relative jump"); + } + break; + + case 157: +#line 2742 "bfin-parse.y" + { + if (IS_PCREL24 ((yyvsp[(2) - (2)].expr))) + { + notethat ("CALLa: jump.l pcrel24\n"); + (yyval.instr) = CALLA ((yyvsp[(2) - (2)].expr), 0); + } + else + return yyerror ("Bad value for long jump"); + } + break; + + case 158: +#line 2753 "bfin-parse.y" + { + if (IS_PCREL24 ((yyvsp[(2) - (2)].expr))) + { + notethat ("CALLa: jump.l pcrel24\n"); + (yyval.instr) = CALLA ((yyvsp[(2) - (2)].expr), 2); + } + else + return yyerror ("Bad value for long jump"); + } + break; + + case 159: +#line 2764 "bfin-parse.y" + { + if (IS_PCREL24 ((yyvsp[(2) - (2)].expr))) + { + notethat ("CALLa: CALL pcrel25m2\n"); + (yyval.instr) = CALLA ((yyvsp[(2) - (2)].expr), 1); + } + else + return yyerror ("Bad call address"); + } + break; + + case 160: +#line 2774 "bfin-parse.y" + { + if (IS_PCREL24 ((yyvsp[(2) - (2)].expr))) + { + notethat ("CALLa: CALL pcrel25m2\n"); + (yyval.instr) = CALLA ((yyvsp[(2) - (2)].expr), 2); + } + else + return yyerror ("Bad call address"); + } + break; + + case 161: +#line 2787 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + (yyval.instr) = ALU2OP (&(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), 8); + else + return yyerror ("Bad registers for DIVQ"); + } + break; + + case 162: +#line 2795 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(3) - (6)].reg)) && IS_DREG ((yyvsp[(5) - (6)].reg))) + (yyval.instr) = ALU2OP (&(yyvsp[(3) - (6)].reg), &(yyvsp[(5) - (6)].reg), 9); + else + return yyerror ("Bad registers for DIVS"); + } + break; + + case 163: +#line 2803 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (5)].reg)) && IS_DREG ((yyvsp[(4) - (5)].reg))) + { + if ((yyvsp[(5) - (5)].modcodes).r0 == 0 && (yyvsp[(5) - (5)].modcodes).s0 == 0 && (yyvsp[(5) - (5)].modcodes).aop == 0) + { + notethat ("ALU2op: dregs = - dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (5)].reg), &(yyvsp[(4) - (5)].reg), 14); + } + else if ((yyvsp[(5) - (5)].modcodes).r0 == 1 && (yyvsp[(5) - (5)].modcodes).s0 == 0 && (yyvsp[(5) - (5)].modcodes).aop == 3) + { + notethat ("dsp32alu: dregs = - dregs (.)\n"); + (yyval.instr) = DSP32ALU (15, 0, 0, &(yyvsp[(1) - (5)].reg), &(yyvsp[(4) - (5)].reg), 0, (yyvsp[(5) - (5)].modcodes).s0, 0, 3); + } + else + { + notethat ("dsp32alu: dregs = - dregs (.)\n"); + (yyval.instr) = DSP32ALU (7, 0, 0, &(yyvsp[(1) - (5)].reg), &(yyvsp[(4) - (5)].reg), 0, (yyvsp[(5) - (5)].modcodes).s0, 0, 3); + } + } + else + return yyerror ("Dregs expected"); + } + break; + + case 164: +#line 2827 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (4)].reg)) && IS_DREG ((yyvsp[(4) - (4)].reg))) + { + notethat ("ALU2op: dregs = ~dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (4)].reg), &(yyvsp[(4) - (4)].reg), 15); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 165: +#line 2838 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("ALU2op: dregs >>= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 1); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 166: +#line 2849 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5)) + { + notethat ("LOGI2op: dregs >>= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(1) - (3)].reg), uimm5 ((yyvsp[(3) - (3)].expr)), 6); + } + else + return yyerror ("Dregs expected or value error"); + } + break; + + case 167: +#line 2860 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("ALU2op: dregs >>>= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 0); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 168: +#line 2871 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("ALU2op: dregs <<= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[(1) - (3)].reg), &(yyvsp[(3) - (3)].reg), 2); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 169: +#line 2882 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5)) + { + notethat ("LOGI2op: dregs <<= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(1) - (3)].reg), uimm5 ((yyvsp[(3) - (3)].expr)), 7); + } + else + return yyerror ("Dregs expected or const value error"); + } + break; + + case 170: +#line 2894 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_UIMM ((yyvsp[(3) - (3)].expr), 5)) + { + notethat ("LOGI2op: dregs >>>= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[(1) - (3)].reg), uimm5 ((yyvsp[(3) - (3)].expr)), 5); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 171: +#line 2907 "bfin-parse.y" + { + notethat ("CaCTRL: FLUSH [ pregs ]\n"); + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + (yyval.instr) = CACTRL (&(yyvsp[(3) - (4)].reg), 0, 2); + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 172: +#line 2916 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("CaCTRL: FLUSH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(2) - (2)].reg), 1, 2); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 173: +#line 2927 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("CaCTRL: FLUSHINV [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(3) - (4)].reg), 0, 1); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 174: +#line 2938 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("CaCTRL: FLUSHINV [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(2) - (2)].reg), 1, 1); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 175: +#line 2950 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("CaCTRL: IFLUSH [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(3) - (4)].reg), 0, 3); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 176: +#line 2961 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("CaCTRL: IFLUSH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(2) - (2)].reg), 1, 3); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } + break; + + case 177: +#line 2972 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(3) - (4)].reg))) + { + notethat ("CaCTRL: PREFETCH [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(3) - (4)].reg), 0, 0); + } + else + return yyerror ("Bad register(s) for PREFETCH"); + } + break; + + case 178: +#line 2983 "bfin-parse.y" + { + if (IS_PREG ((yyvsp[(2) - (2)].reg))) + { + notethat ("CaCTRL: PREFETCH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[(2) - (2)].reg), 1, 0); + } + else + return yyerror ("Bad register(s) for PREFETCH"); + } + break; + + case 179: +#line 2997 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(7) - (7)].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[(3) - (7)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: B [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 2, 0, 1); + } + break; + + case 180: +#line 3009 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(5) - (8)].expr); + + if (!IS_DREG ((yyvsp[(8) - (8)].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[(3) - (8)].reg))) + return yyerror ("Preg expected in address"); + + if (IS_RELOC ((yyvsp[(5) - (8)].expr))) + return yyerror ("Plain symbol used as offset"); + + if ((yyvsp[(4) - (8)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (in_range_p (tmp, -32768, 32767, 0)) + { + notethat ("LDST: B [ pregs + imm16 ] = dregs\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), 1, 2, 0, (yyvsp[(5) - (8)].expr)); + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 181: +#line 3035 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(5) - (8)].expr); + + if (!IS_DREG ((yyvsp[(8) - (8)].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[(3) - (8)].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[(4) - (8)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[(5) - (8)].expr))) + return yyerror ("Plain symbol used as offset"); + + if (in_range_p (tmp, 0, 30, 1)) + { + notethat ("LDSTii: W [ pregs +- uimm5m2 ] = dregs\n"); + (yyval.instr) = LDSTII (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), tmp, 1, 1); + } + else if (in_range_p (tmp, -65536, 65535, 1)) + { + notethat ("LDSTidxI: W [ pregs + imm17m2 ] = dregs\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), 1, 1, 0, tmp); + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 182: +#line 3065 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(7) - (7)].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[(3) - (7)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: W [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 1, 0, 1); + } + break; + + case 183: +#line 3076 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(7) - (7)].reg))) + return yyerror ("Dreg expected for source operand"); + if ((yyvsp[(4) - (7)].modcodes).x0 == 2) + { + if (!IS_IREG ((yyvsp[(3) - (7)].reg)) && !IS_PREG ((yyvsp[(3) - (7)].reg))) + return yyerror ("Ireg or Preg expected in address"); + } + else if (!IS_IREG ((yyvsp[(3) - (7)].reg))) + return yyerror ("Ireg expected in address"); + + if (IS_IREG ((yyvsp[(3) - (7)].reg))) + { + notethat ("dspLDST: W [ iregs ] = dregs_half\n"); + (yyval.instr) = DSPLDST (&(yyvsp[(3) - (7)].reg), 1 + IS_H ((yyvsp[(7) - (7)].reg)), &(yyvsp[(7) - (7)].reg), (yyvsp[(4) - (7)].modcodes).x0, 1); + } + else + { + notethat ("LDSTpmod: W [ pregs ] = dregs_half\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(3) - (7)].reg), &(yyvsp[(7) - (7)].reg), &(yyvsp[(3) - (7)].reg), 1 + IS_H ((yyvsp[(7) - (7)].reg)), 1); + } + } + break; + + case 184: +#line 3101 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(4) - (7)].expr); + int ispreg = IS_PREG ((yyvsp[(7) - (7)].reg)); + + if (!IS_PREG ((yyvsp[(2) - (7)].reg))) + return yyerror ("Preg expected in address"); + + if (!IS_DREG ((yyvsp[(7) - (7)].reg)) && !ispreg) + return yyerror ("Preg expected for source operand"); + + if ((yyvsp[(3) - (7)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[(4) - (7)].expr))) + return yyerror ("Plain symbol used as offset"); + + if (in_range_p (tmp, 0, 63, 3)) + { + notethat ("LDSTii: dpregs = [ pregs + uimm6m4 ]\n"); + (yyval.instr) = LDSTII (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), tmp, 1, ispreg ? 3 : 0); + } + else if ((yyvsp[(2) - (7)].reg).regno == REG_FP && in_range_p (tmp, -128, 0, 3)) + { + notethat ("LDSTiiFP: dpregs = [ FP - uimm7m4 ]\n"); + tmp = unary (Expr_Op_Type_NEG, tmp); + (yyval.instr) = LDSTIIFP (tmp, &(yyvsp[(7) - (7)].reg), 1); + } + else if (in_range_p (tmp, -131072, 131071, 3)) + { + notethat ("LDSTidxI: [ pregs + imm18m4 ] = dpregs\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), 1, 0, ispreg ? 1 : 0, tmp); + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 185: +#line 3138 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(7) - (9)].expr); + if (!IS_DREG ((yyvsp[(1) - (9)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (9)].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[(6) - (9)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[(7) - (9)].expr))) + return yyerror ("Plain symbol used as offset"); + + if (in_range_p (tmp, 0, 30, 1)) + { + notethat ("LDSTii: dregs = W [ pregs + uimm5m2 ] (.)\n"); + (yyval.instr) = LDSTII (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), tmp, 0, 1 << (yyvsp[(9) - (9)].r0).r0); + } + else if (in_range_p (tmp, -65536, 65535, 1)) + { + notethat ("LDSTidxI: dregs = W [ pregs + imm17m2 ] (.)\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 1, (yyvsp[(9) - (9)].r0).r0, tmp); + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 186: +#line 3166 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (7)].reg))) + return yyerror ("Dreg expected for source operand"); + if ((yyvsp[(6) - (7)].modcodes).x0 == 2) + { + if (!IS_IREG ((yyvsp[(5) - (7)].reg)) && !IS_PREG ((yyvsp[(5) - (7)].reg))) + return yyerror ("Ireg or Preg expected in address"); + } + else if (!IS_IREG ((yyvsp[(5) - (7)].reg))) + return yyerror ("Ireg expected in address"); + + if (IS_IREG ((yyvsp[(5) - (7)].reg))) + { + notethat ("dspLDST: dregs_half = W [ iregs ]\n"); + (yyval.instr) = DSPLDST(&(yyvsp[(5) - (7)].reg), 1 + IS_H ((yyvsp[(1) - (7)].reg)), &(yyvsp[(1) - (7)].reg), (yyvsp[(6) - (7)].modcodes).x0, 0); + } + else + { + notethat ("LDSTpmod: dregs_half = W [ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (7)].reg), &(yyvsp[(1) - (7)].reg), &(yyvsp[(5) - (7)].reg), 1 + IS_H ((yyvsp[(1) - (7)].reg)), 0); + } + } + break; + + case 187: +#line 3191 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (8)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (8)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: dregs = W [ pregs ] (.)\n"); + (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 1, (yyvsp[(8) - (8)].r0).r0, 0); + } + break; + + case 188: +#line 3202 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (9)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (9)].reg)) || !IS_PREG ((yyvsp[(7) - (9)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDSTpmod: dregs = W [ pregs ++ pregs ] (.)\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), &(yyvsp[(7) - (9)].reg), 3, (yyvsp[(9) - (9)].r0).r0); + } + break; + + case 189: +#line 3213 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (8)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (8)].reg)) || !IS_PREG ((yyvsp[(7) - (8)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDSTpmod: dregs_half = W [ pregs ++ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), &(yyvsp[(7) - (8)].reg), 1 + IS_H ((yyvsp[(1) - (8)].reg)), 0); + } + break; + + case 190: +#line 3224 "bfin-parse.y" + { + if (!IS_IREG ((yyvsp[(2) - (6)].reg)) && !IS_PREG ((yyvsp[(2) - (6)].reg))) + return yyerror ("Ireg or Preg expected in address"); + else if (IS_IREG ((yyvsp[(2) - (6)].reg)) && !IS_DREG ((yyvsp[(6) - (6)].reg))) + return yyerror ("Dreg expected for source operand"); + else if (IS_PREG ((yyvsp[(2) - (6)].reg)) && !IS_DREG ((yyvsp[(6) - (6)].reg)) && !IS_PREG ((yyvsp[(6) - (6)].reg))) + return yyerror ("Dreg or Preg expected for source operand"); + + if (IS_IREG ((yyvsp[(2) - (6)].reg))) + { + notethat ("dspLDST: [ iregs ] = dregs\n"); + (yyval.instr) = DSPLDST(&(yyvsp[(2) - (6)].reg), 0, &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 1); + } + else if (IS_DREG ((yyvsp[(6) - (6)].reg))) + { + notethat ("LDST: [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[(2) - (6)].reg), &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 0, 0, 1); + } + else + { + notethat ("LDST: [ pregs ] = pregs\n"); + (yyval.instr) = LDST (&(yyvsp[(2) - (6)].reg), &(yyvsp[(6) - (6)].reg), (yyvsp[(3) - (6)].modcodes).x0, 0, 1, 1); + } + } + break; + + case 191: +#line 3250 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(7) - (7)].reg))) + return yyerror ("Dreg expected for source operand"); + + if (IS_IREG ((yyvsp[(2) - (7)].reg)) && IS_MREG ((yyvsp[(4) - (7)].reg))) + { + notethat ("dspLDST: [ iregs ++ mregs ] = dregs\n"); + (yyval.instr) = DSPLDST(&(yyvsp[(2) - (7)].reg), (yyvsp[(4) - (7)].reg).regno & CODE_MASK, &(yyvsp[(7) - (7)].reg), 3, 1); + } + else if (IS_PREG ((yyvsp[(2) - (7)].reg)) && IS_PREG ((yyvsp[(4) - (7)].reg))) + { + notethat ("LDSTpmod: [ pregs ++ pregs ] = dregs\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(2) - (7)].reg), &(yyvsp[(7) - (7)].reg), &(yyvsp[(4) - (7)].reg), 0, 1); + } + else + return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address"); + } + break; + + case 192: +#line 3269 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(8) - (8)].reg))) + return yyerror ("Dreg expected for source operand"); + + if (IS_PREG ((yyvsp[(3) - (8)].reg)) && IS_PREG ((yyvsp[(5) - (8)].reg))) + { + notethat ("LDSTpmod: W [ pregs ++ pregs ] = dregs_half\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(3) - (8)].reg), &(yyvsp[(8) - (8)].reg), &(yyvsp[(5) - (8)].reg), 1 + IS_H ((yyvsp[(8) - (8)].reg)), 1); + } + else + return yyerror ("Preg ++ Preg expected in address"); + } + break; + + case 193: +#line 3283 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(7) - (9)].expr); + if (!IS_DREG ((yyvsp[(1) - (9)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (9)].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[(6) - (9)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[(7) - (9)].expr))) + return yyerror ("Plain symbol used as offset"); + + if (in_range_p (tmp, -32768, 32767, 0)) + { + notethat ("LDSTidxI: dregs = B [ pregs + imm16 ] (%c)\n", + (yyvsp[(9) - (9)].r0).r0 ? 'X' : 'Z'); + (yyval.instr) = LDSTIDXI (&(yyvsp[(5) - (9)].reg), &(yyvsp[(1) - (9)].reg), 0, 2, (yyvsp[(9) - (9)].r0).r0, tmp); + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 194: +#line 3307 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (8)].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[(5) - (8)].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: dregs = B [ pregs ] (%c)\n", + (yyvsp[(8) - (8)].r0).r0 ? 'X' : 'Z'); + (yyval.instr) = LDST (&(yyvsp[(5) - (8)].reg), &(yyvsp[(1) - (8)].reg), (yyvsp[(6) - (8)].modcodes).x0, 2, (yyvsp[(8) - (8)].r0).r0, 0); + } + break; + + case 195: +#line 3319 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(1) - (7)].reg))) + return yyerror ("Dreg expected for destination operand"); + + if (IS_IREG ((yyvsp[(4) - (7)].reg)) && IS_MREG ((yyvsp[(6) - (7)].reg))) + { + notethat ("dspLDST: dregs = [ iregs ++ mregs ]\n"); + (yyval.instr) = DSPLDST(&(yyvsp[(4) - (7)].reg), (yyvsp[(6) - (7)].reg).regno & CODE_MASK, &(yyvsp[(1) - (7)].reg), 3, 0); + } + else if (IS_PREG ((yyvsp[(4) - (7)].reg)) && IS_PREG ((yyvsp[(6) - (7)].reg))) + { + notethat ("LDSTpmod: dregs = [ pregs ++ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), &(yyvsp[(6) - (7)].reg), 0, 0); + } + else + return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address"); + } + break; + + case 196: +#line 3338 "bfin-parse.y" + { + Expr_Node *tmp = (yyvsp[(6) - (7)].expr); + int ispreg = IS_PREG ((yyvsp[(1) - (7)].reg)); + int isgot = IS_RELOC((yyvsp[(6) - (7)].expr)); + + if (!IS_PREG ((yyvsp[(4) - (7)].reg))) + return yyerror ("Preg expected in address"); + + if (!IS_DREG ((yyvsp[(1) - (7)].reg)) && !ispreg) + return yyerror ("Dreg or Preg expected for destination operand"); + + if (tmp->type == Expr_Node_Reloc + && strcmp (tmp->value.s_value, + "_current_shared_library_p5_offset_") != 0) + return yyerror ("Plain symbol used as offset"); + + if ((yyvsp[(5) - (7)].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (isgot) + { + notethat ("LDSTidxI: dpregs = [ pregs + sym@got ]\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1 : 0, tmp); + } + else if (in_range_p (tmp, 0, 63, 3)) + { + notethat ("LDSTii: dpregs = [ pregs + uimm7m4 ]\n"); + (yyval.instr) = LDSTII (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), tmp, 0, ispreg ? 3 : 0); + } + else if ((yyvsp[(4) - (7)].reg).regno == REG_FP && in_range_p (tmp, -128, 0, 3)) + { + notethat ("LDSTiiFP: dpregs = [ FP - uimm7m4 ]\n"); + tmp = unary (Expr_Op_Type_NEG, tmp); + (yyval.instr) = LDSTIIFP (tmp, &(yyvsp[(1) - (7)].reg), 0); + } + else if (in_range_p (tmp, -131072, 131071, 3)) + { + notethat ("LDSTidxI: dpregs = [ pregs + imm18m4 ]\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[(4) - (7)].reg), &(yyvsp[(1) - (7)].reg), 0, 0, ispreg ? 1 : 0, tmp); + + } + else + return yyerror ("Displacement out of range"); + } + break; + + case 197: +#line 3384 "bfin-parse.y" + { + if (!IS_IREG ((yyvsp[(4) - (6)].reg)) && !IS_PREG ((yyvsp[(4) - (6)].reg))) + return yyerror ("Ireg or Preg expected in address"); + else if (IS_IREG ((yyvsp[(4) - (6)].reg)) && !IS_DREG ((yyvsp[(1) - (6)].reg))) + return yyerror ("Dreg expected in destination operand"); + else if (IS_PREG ((yyvsp[(4) - (6)].reg)) && !IS_DREG ((yyvsp[(1) - (6)].reg)) && !IS_PREG ((yyvsp[(1) - (6)].reg)) + && ((yyvsp[(4) - (6)].reg).regno != REG_SP || !IS_ALLREG ((yyvsp[(1) - (6)].reg)) || (yyvsp[(5) - (6)].modcodes).x0 != 0)) + return yyerror ("Dreg or Preg expected in destination operand"); + + if (IS_IREG ((yyvsp[(4) - (6)].reg))) + { + notethat ("dspLDST: dregs = [ iregs ]\n"); + (yyval.instr) = DSPLDST (&(yyvsp[(4) - (6)].reg), 0, &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0); + } + else if (IS_DREG ((yyvsp[(1) - (6)].reg))) + { + notethat ("LDST: dregs = [ pregs ]\n"); + (yyval.instr) = LDST (&(yyvsp[(4) - (6)].reg), &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0, 0, 0); + } + else if (IS_PREG ((yyvsp[(1) - (6)].reg))) + { + if (REG_SAME ((yyvsp[(1) - (6)].reg), (yyvsp[(4) - (6)].reg)) && (yyvsp[(5) - (6)].modcodes).x0 != 2) + return yyerror ("Pregs can't be same"); + + notethat ("LDST: pregs = [ pregs ]\n"); + (yyval.instr) = LDST (&(yyvsp[(4) - (6)].reg), &(yyvsp[(1) - (6)].reg), (yyvsp[(5) - (6)].modcodes).x0, 0, 1, 0); + } + else + { + notethat ("PushPopReg: allregs = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPREG (&(yyvsp[(1) - (6)].reg), 0); + } + } + break; + + case 198: +#line 3421 "bfin-parse.y" + { + if ((yyvsp[(1) - (11)].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + if ((yyvsp[(4) - (11)].reg).regno == REG_R7 + && IN_RANGE ((yyvsp[(6) - (11)].expr), 0, 7) + && (yyvsp[(8) - (11)].reg).regno == REG_P5 + && IN_RANGE ((yyvsp[(10) - (11)].expr), 0, 5)) + { + notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim , P5 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[(6) - (11)].expr)), imm5 ((yyvsp[(10) - (11)].expr)), 1, 1, 1); + } + else + return yyerror ("Bad register for PushPopMultiple"); + } + break; + + case 199: +#line 3437 "bfin-parse.y" + { + if ((yyvsp[(1) - (7)].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if ((yyvsp[(4) - (7)].reg).regno == REG_R7 && IN_RANGE ((yyvsp[(6) - (7)].expr), 0, 7)) + { + notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[(6) - (7)].expr)), 0, 1, 0, 1); + } + else if ((yyvsp[(4) - (7)].reg).regno == REG_P5 && IN_RANGE ((yyvsp[(6) - (7)].expr), 0, 6)) + { + notethat ("PushPopMultiple: [ -- SP ] = (P5 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[(6) - (7)].expr)), 0, 1, 1); + } + else + return yyerror ("Bad register for PushPopMultiple"); + } + break; + + case 200: +#line 3456 "bfin-parse.y" + { + if ((yyvsp[(11) - (11)].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + if ((yyvsp[(2) - (11)].reg).regno == REG_R7 && (IN_RANGE ((yyvsp[(4) - (11)].expr), 0, 7)) + && (yyvsp[(6) - (11)].reg).regno == REG_P5 && (IN_RANGE ((yyvsp[(8) - (11)].expr), 0, 6))) + { + notethat ("PushPopMultiple: (R7 : reglim , P5 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[(4) - (11)].expr)), imm5 ((yyvsp[(8) - (11)].expr)), 1, 1, 0); + } + else + return yyerror ("Bad register range for PushPopMultiple"); + } + break; + + case 201: +#line 3470 "bfin-parse.y" + { + if ((yyvsp[(7) - (7)].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if ((yyvsp[(2) - (7)].reg).regno == REG_R7 && IN_RANGE ((yyvsp[(4) - (7)].expr), 0, 7)) + { + notethat ("PushPopMultiple: (R7 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[(4) - (7)].expr)), 0, 1, 0, 0); + } + else if ((yyvsp[(2) - (7)].reg).regno == REG_P5 && IN_RANGE ((yyvsp[(4) - (7)].expr), 0, 6)) + { + notethat ("PushPopMultiple: (P5 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[(4) - (7)].expr)), 0, 1, 0); + } + else + return yyerror ("Bad register range for PushPopMultiple"); + } + break; + + case 202: +#line 3489 "bfin-parse.y" + { + if ((yyvsp[(1) - (3)].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if (IS_ALLREG ((yyvsp[(3) - (3)].reg))) + { + notethat ("PushPopReg: [ -- SP ] = allregs\n"); + (yyval.instr) = PUSHPOPREG (&(yyvsp[(3) - (3)].reg), 1); + } + else + return yyerror ("Bad register for PushPopReg"); + } + break; + + case 203: +#line 3505 "bfin-parse.y" + { + if (IS_URANGE (16, (yyvsp[(2) - (2)].expr), 0, 4)) + (yyval.instr) = LINKAGE (0, uimm16s4 ((yyvsp[(2) - (2)].expr))); + else + return yyerror ("Bad constant for LINK"); + } + break; + + case 204: +#line 3513 "bfin-parse.y" + { + notethat ("linkage: UNLINK\n"); + (yyval.instr) = LINKAGE (1, 0); + } + break; + + case 205: +#line 3522 "bfin-parse.y" + { + if (IS_PCREL4 ((yyvsp[(3) - (7)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (7)].expr)) && IS_CREG ((yyvsp[(7) - (7)].reg))) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[(3) - (7)].expr), &(yyvsp[(7) - (7)].reg), 0, (yyvsp[(5) - (7)].expr), 0); + } + else + return yyerror ("Bad register or values for LSETUP"); + + } + break; + + case 206: +#line 3533 "bfin-parse.y" + { + if (IS_PCREL4 ((yyvsp[(3) - (9)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (9)].expr)) + && IS_PREG ((yyvsp[(9) - (9)].reg)) && IS_CREG ((yyvsp[(7) - (9)].reg))) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[(3) - (9)].expr), &(yyvsp[(7) - (9)].reg), 1, (yyvsp[(5) - (9)].expr), &(yyvsp[(9) - (9)].reg)); + } + else + return yyerror ("Bad register or values for LSETUP"); + } + break; + + case 207: +#line 3545 "bfin-parse.y" + { + if (IS_PCREL4 ((yyvsp[(3) - (11)].expr)) && IS_LPPCREL10 ((yyvsp[(5) - (11)].expr)) + && IS_PREG ((yyvsp[(9) - (11)].reg)) && IS_CREG ((yyvsp[(7) - (11)].reg)) + && EXPR_VALUE ((yyvsp[(11) - (11)].expr)) == 1) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs >> 1\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[(3) - (11)].expr), &(yyvsp[(7) - (11)].reg), 3, (yyvsp[(5) - (11)].expr), &(yyvsp[(9) - (11)].reg)); + } + else + return yyerror ("Bad register or values for LSETUP"); + } + break; + + case 208: +#line 3559 "bfin-parse.y" + { + if (!IS_RELOC ((yyvsp[(2) - (3)].expr))) + return yyerror ("Invalid expression in loop statement"); + if (!IS_CREG ((yyvsp[(3) - (3)].reg))) + return yyerror ("Invalid loop counter register"); + (yyval.instr) = bfin_gen_loop ((yyvsp[(2) - (3)].expr), &(yyvsp[(3) - (3)].reg), 0, 0); + } + break; + + case 209: +#line 3567 "bfin-parse.y" + { + if (IS_RELOC ((yyvsp[(2) - (5)].expr)) && IS_PREG ((yyvsp[(5) - (5)].reg)) && IS_CREG ((yyvsp[(3) - (5)].reg))) + { + notethat ("Loop: LOOP expr counters = pregs\n"); + (yyval.instr) = bfin_gen_loop ((yyvsp[(2) - (5)].expr), &(yyvsp[(3) - (5)].reg), 1, &(yyvsp[(5) - (5)].reg)); + } + else + return yyerror ("Bad register or values for LOOP"); + } + break; + + case 210: +#line 3577 "bfin-parse.y" + { + if (IS_RELOC ((yyvsp[(2) - (7)].expr)) && IS_PREG ((yyvsp[(5) - (7)].reg)) && IS_CREG ((yyvsp[(3) - (7)].reg)) && EXPR_VALUE ((yyvsp[(7) - (7)].expr)) == 1) + { + notethat ("Loop: LOOP expr counters = pregs >> 1\n"); + (yyval.instr) = bfin_gen_loop ((yyvsp[(2) - (7)].expr), &(yyvsp[(3) - (7)].reg), 3, &(yyvsp[(5) - (7)].reg)); + } + else + return yyerror ("Bad register or values for LOOP"); + } + break; + + case 211: +#line 3589 "bfin-parse.y" + { + Expr_Node_Value val; + val.i_value = (yyvsp[(2) - (2)].value); + Expr_Node *tmp = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + bfin_loop_attempt_create_label (tmp, 1); + if (!IS_RELOC (tmp)) + return yyerror ("Invalid expression in LOOP_BEGIN statement"); + bfin_loop_beginend (tmp, 1); + (yyval.instr) = 0; + } + break; + + case 212: +#line 3600 "bfin-parse.y" + { + if (!IS_RELOC ((yyvsp[(2) - (2)].expr))) + return yyerror ("Invalid expression in LOOP_BEGIN statement"); + + bfin_loop_beginend ((yyvsp[(2) - (2)].expr), 1); + (yyval.instr) = 0; + } + break; + + case 213: +#line 3610 "bfin-parse.y" + { + Expr_Node_Value val; + val.i_value = (yyvsp[(2) - (2)].value); + Expr_Node *tmp = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + bfin_loop_attempt_create_label (tmp, 1); + if (!IS_RELOC (tmp)) + return yyerror ("Invalid expression in LOOP_END statement"); + bfin_loop_beginend (tmp, 0); + (yyval.instr) = 0; + } + break; + + case 214: +#line 3621 "bfin-parse.y" + { + if (!IS_RELOC ((yyvsp[(2) - (2)].expr))) + return yyerror ("Invalid expression in LOOP_END statement"); + + bfin_loop_beginend ((yyvsp[(2) - (2)].expr), 0); + (yyval.instr) = 0; + } + break; + + case 215: +#line 3632 "bfin-parse.y" + { + notethat ("psedoDEBUG: ABORT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 3, 0); + } + break; + + case 216: +#line 3638 "bfin-parse.y" + { + notethat ("pseudoDEBUG: DBG\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 7, 0); + } + break; + + case 217: +#line 3643 "bfin-parse.y" + { + notethat ("pseudoDEBUG: DBG REG_A\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, IS_A1 ((yyvsp[(2) - (2)].reg)), 0); + } + break; + + case 218: +#line 3648 "bfin-parse.y" + { + notethat ("pseudoDEBUG: DBG allregs\n"); + (yyval.instr) = bfin_gen_pseudodbg (0, (yyvsp[(2) - (2)].reg).regno & CODE_MASK, ((yyvsp[(2) - (2)].reg).regno & CLASS_MASK) >> 4); + } + break; + + case 219: +#line 3654 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(3) - (4)].reg))) + return yyerror ("Dregs expected"); + notethat ("pseudoDEBUG: DBGCMPLX (dregs )\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 6, ((yyvsp[(3) - (4)].reg).regno & CODE_MASK) >> 4); + } + break; + + case 220: +#line 3662 "bfin-parse.y" + { + notethat ("psedoDEBUG: DBGHALT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 5, 0); + } + break; + + case 221: +#line 3668 "bfin-parse.y" + { + notethat ("psedoDEBUG: HLT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 4, 0); + } + break; + + case 222: +#line 3674 "bfin-parse.y" + { + notethat ("pseudodbg_assert: DBGA (regs_lo/hi , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (IS_H ((yyvsp[(3) - (6)].reg)), &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr))); + } + break; + + case 223: +#line 3680 "bfin-parse.y" + { + notethat ("pseudodbg_assert: DBGAH (regs , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (3, &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr))); + } + break; + + case 224: +#line 3686 "bfin-parse.y" + { + notethat ("psedodbg_assert: DBGAL (regs , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (2, &(yyvsp[(3) - (6)].reg), uimm16 ((yyvsp[(5) - (6)].expr))); + } + break; + + case 225: +#line 3692 "bfin-parse.y" + { + if (!IS_UIMM ((yyvsp[(2) - (2)].expr), 8)) + return yyerror ("Constant out of range"); + notethat ("psedodbg_assert: OUTC uimm8\n"); + (yyval.instr) = bfin_gen_pseudochr (uimm8 ((yyvsp[(2) - (2)].expr))); + } + break; + + case 226: +#line 3700 "bfin-parse.y" + { + if (!IS_DREG ((yyvsp[(2) - (2)].reg))) + return yyerror ("Dregs expected"); + notethat ("psedodbg_assert: OUTC dreg\n"); + (yyval.instr) = bfin_gen_pseudodbg (2, (yyvsp[(2) - (2)].reg).regno & CODE_MASK, 0); + } + break; + + case 227: +#line 3714 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(1) - (1)].reg); + } + break; + + case 228: +#line 3718 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(1) - (1)].reg); + } + break; + + case 229: +#line 3727 "bfin-parse.y" + { + (yyval.mod).MM = 0; + (yyval.mod).mod = 0; + } + break; + + case 230: +#line 3732 "bfin-parse.y" + { + (yyval.mod).MM = 1; + (yyval.mod).mod = (yyvsp[(4) - (5)].value); + } + break; + + case 231: +#line 3737 "bfin-parse.y" + { + (yyval.mod).MM = 1; + (yyval.mod).mod = (yyvsp[(2) - (5)].value); + } + break; + + case 232: +#line 3742 "bfin-parse.y" + { + (yyval.mod).MM = 0; + (yyval.mod).mod = (yyvsp[(2) - (3)].value); + } + break; + + case 233: +#line 3747 "bfin-parse.y" + { + (yyval.mod).MM = 1; + (yyval.mod).mod = 0; + } + break; + + case 234: +#line 3754 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 235: +#line 3758 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 236: +#line 3764 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } + break; + + case 237: +#line 3769 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 0; + } + break; + + case 238: +#line 3774 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 1; + } + break; + + case 239: +#line 3779 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 1; + } + break; + + case 240: +#line 3787 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 241: +#line 3791 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 242: +#line 3797 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } + break; + + case 243: +#line 3802 "bfin-parse.y" + { + (yyval.modcodes).s0 = (yyvsp[(2) - (3)].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].modcodes).x0; + } + break; + + case 244: +#line 3809 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 0; + } + break; + + case 245: +#line 3815 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 1; + } + break; + + case 246: +#line 3821 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 1; + } + break; + + case 247: +#line 3829 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } + break; + + case 248: +#line 3835 "bfin-parse.y" + { + (yyval.modcodes).r0 = 2 + (yyvsp[(2) - (3)].r0).r0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } + break; + + case 249: +#line 3841 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = (yyvsp[(2) - (3)].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].modcodes).x0; + } + break; + + case 250: +#line 3847 "bfin-parse.y" + { + (yyval.modcodes).r0 = 2 + (yyvsp[(2) - (5)].r0).r0; + (yyval.modcodes).s0 = (yyvsp[(4) - (5)].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[(4) - (5)].modcodes).x0; + } + break; + + case 251: +#line 3853 "bfin-parse.y" + { + (yyval.modcodes).r0 = 2 + (yyvsp[(4) - (5)].r0).r0; + (yyval.modcodes).s0 = (yyvsp[(2) - (5)].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[(2) - (5)].modcodes).x0; + } + break; + + case 252: +#line 3861 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 253: +#line 3865 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 254: +#line 3869 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 255: +#line 3875 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 256: +#line 3879 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 257: +#line 3883 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 258: +#line 3889 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 0; + } + break; + + case 259: +#line 3895 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 3; + } + break; + + case 260: +#line 3901 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 1; + (yyval.modcodes).aop = 3; + } + break; + + case 261: +#line 3907 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 3; + } + break; + + case 262: +#line 3913 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } + break; + + case 263: +#line 3918 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } + break; + + case 264: +#line 3925 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 265: +#line 3929 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 266: +#line 3935 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; + } + break; + + case 267: +#line 3939 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; + } + break; + + case 268: +#line 3946 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 269: +#line 3950 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 270: +#line 3954 "bfin-parse.y" + { + (yyval.r0).r0 = 3; + } + break; + + case 271: +#line 3958 "bfin-parse.y" + { + (yyval.r0).r0 = 2; + } + break; + + case 272: +#line 3964 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 273: +#line 3968 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 274: +#line 3975 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 1; + } + break; + + case 275: +#line 3980 "bfin-parse.y" + { + if ((yyvsp[(2) - (3)].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 0; + } + break; + + case 276: +#line 3987 "bfin-parse.y" + { + if ((yyvsp[(2) - (5)].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } + break; + + case 277: +#line 3994 "bfin-parse.y" + { + if ((yyvsp[(4) - (5)].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } + break; + + case 278: +#line 4006 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 279: +#line 4010 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 280: +#line 4014 "bfin-parse.y" + { + (yyval.r0).r0 = 2; + } + break; + + case 281: +#line 4020 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 282: +#line 4024 "bfin-parse.y" + { + if ((yyvsp[(2) - (3)].value) == M_W32) + (yyval.r0).r0 = 1; + else + return yyerror ("Only (W32) allowed"); + } + break; + + case 283: +#line 4033 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 284: +#line 4037 "bfin-parse.y" + { + if ((yyvsp[(2) - (3)].value) == M_IU) + (yyval.r0).r0 = 3; + else + return yyerror ("(IU) expected"); + } + break; + + case 285: +#line 4046 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(3) - (4)].reg); + } + break; + + case 286: +#line 4052 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(2) - (4)].reg); + } + break; + + case 287: +#line 4061 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 288: +#line 4065 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 289: +#line 4072 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 290: +#line 4076 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 291: +#line 4080 "bfin-parse.y" + { + (yyval.r0).r0 = 2; + } + break; + + case 292: +#line 4084 "bfin-parse.y" + { + (yyval.r0).r0 = 3; + } + break; + + case 293: +#line 4091 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 294: +#line 4095 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 295: +#line 4102 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } + break; + + case 296: +#line 4110 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } + break; + + case 297: +#line 4118 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } + break; + + case 298: +#line 4126 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; + } + break; + + case 299: +#line 4134 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } + break; + + case 300: +#line 4141 "bfin-parse.y" + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } + break; + + case 301: +#line 4148 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } + break; + + case 302: +#line 4156 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } + break; + + case 303: +#line 4166 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* HL. */ + } + break; + + case 304: +#line 4171 "bfin-parse.y" + { + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 1; /* HL. */ + } + break; + + case 305: +#line 4176 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* HL. */ + } + break; + + case 306: +#line 4181 "bfin-parse.y" + { + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 1; /* HL. */ + } + break; + + case 307: +#line 4188 "bfin-parse.y" + { + (yyval.modcodes).x0 = 2; + } + break; + + case 308: +#line 4192 "bfin-parse.y" + { + (yyval.modcodes).x0 = 0; + } + break; + + case 309: +#line 4196 "bfin-parse.y" + { + (yyval.modcodes).x0 = 1; + } + break; + + case 310: +#line 4205 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(1) - (2)].reg); + } + break; + + case 311: +#line 4212 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(1) - (2)].reg); + } + break; + + case 312: +#line 4219 "bfin-parse.y" + { + (yyval.reg) = (yyvsp[(1) - (2)].reg); + } + break; + + case 313: +#line 4226 "bfin-parse.y" + { + if (IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_EVEN ((yyvsp[(1) - (3)].reg))) + return yyerror ("Cannot move A1 to even register"); + else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_EVEN ((yyvsp[(1) - (3)].reg))) + return yyerror ("Cannot move A0 to odd register"); + + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 1; + (yyval.macfunc).n = IS_A1 ((yyvsp[(3) - (3)].reg)); + (yyval.macfunc).op = 3; + (yyval.macfunc).dst = (yyvsp[(1) - (3)].reg); + (yyval.macfunc).s0.regno = 0; + (yyval.macfunc).s1.regno = 0; + } + break; + + case 314: +#line 4241 "bfin-parse.y" + { + (yyval.macfunc) = (yyvsp[(1) - (1)].macfunc); + (yyval.macfunc).w = 0; (yyval.macfunc).P = 0; + (yyval.macfunc).dst.regno = 0; + } + break; + + case 315: +#line 4247 "bfin-parse.y" + { + if ((yyvsp[(4) - (5)].macfunc).n && IS_EVEN ((yyvsp[(1) - (5)].reg))) + return yyerror ("Cannot move A1 to even register"); + else if (!(yyvsp[(4) - (5)].macfunc).n && !IS_EVEN ((yyvsp[(1) - (5)].reg))) + return yyerror ("Cannot move A0 to odd register"); + + (yyval.macfunc) = (yyvsp[(4) - (5)].macfunc); + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 1; + (yyval.macfunc).dst = (yyvsp[(1) - (5)].reg); + } + break; + + case 316: +#line 4260 "bfin-parse.y" + { + if ((yyvsp[(4) - (5)].macfunc).n && !IS_H ((yyvsp[(1) - (5)].reg))) + return yyerror ("Cannot move A1 to low half of register"); + else if (!(yyvsp[(4) - (5)].macfunc).n && IS_H ((yyvsp[(1) - (5)].reg))) + return yyerror ("Cannot move A0 to high half of register"); + + (yyval.macfunc) = (yyvsp[(4) - (5)].macfunc); + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 0; + (yyval.macfunc).dst = (yyvsp[(1) - (5)].reg); + } + break; + + case 317: +#line 4273 "bfin-parse.y" + { + if (IS_A1 ((yyvsp[(3) - (3)].reg)) && !IS_H ((yyvsp[(1) - (3)].reg))) + return yyerror ("Cannot move A1 to low half of register"); + else if (!IS_A1 ((yyvsp[(3) - (3)].reg)) && IS_H ((yyvsp[(1) - (3)].reg))) + return yyerror ("Cannot move A0 to high half of register"); + + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 0; + (yyval.macfunc).n = IS_A1 ((yyvsp[(3) - (3)].reg)); + (yyval.macfunc).op = 3; + (yyval.macfunc).dst = (yyvsp[(1) - (3)].reg); + (yyval.macfunc).s0.regno = 0; + (yyval.macfunc).s1.regno = 0; + } + break; + + case 318: +#line 4291 "bfin-parse.y" + { + (yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg)); + (yyval.macfunc).op = 0; + (yyval.macfunc).s0 = (yyvsp[(2) - (2)].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[(2) - (2)].macfunc).s1; + } + break; + + case 319: +#line 4298 "bfin-parse.y" + { + (yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg)); + (yyval.macfunc).op = 1; + (yyval.macfunc).s0 = (yyvsp[(2) - (2)].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[(2) - (2)].macfunc).s1; + } + break; + + case 320: +#line 4305 "bfin-parse.y" + { + (yyval.macfunc).n = IS_A1 ((yyvsp[(1) - (2)].reg)); + (yyval.macfunc).op = 2; + (yyval.macfunc).s0 = (yyvsp[(2) - (2)].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[(2) - (2)].macfunc).s1; + } + break; + + case 321: +#line 4315 "bfin-parse.y" + { + if (IS_DREG ((yyvsp[(1) - (3)].reg)) && IS_DREG ((yyvsp[(3) - (3)].reg))) + { + (yyval.macfunc).s0 = (yyvsp[(1) - (3)].reg); + (yyval.macfunc).s1 = (yyvsp[(3) - (3)].reg); + } + else + return yyerror ("Dregs expected"); + } + break; + + case 322: +#line 4328 "bfin-parse.y" + { + (yyval.r0).r0 = 0; + } + break; + + case 323: +#line 4332 "bfin-parse.y" + { + (yyval.r0).r0 = 1; + } + break; + + case 324: +#line 4336 "bfin-parse.y" + { + (yyval.r0).r0 = 2; + } + break; + + case 325: +#line 4340 "bfin-parse.y" + { + (yyval.r0).r0 = 3; + } + break; + + case 326: +#line 4347 "bfin-parse.y" + { + (yyval.modcodes).r0 = (yyvsp[(3) - (3)].reg).regno; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0; + (yyval.modcodes).s0 = 0; + } + break; + + case 327: +#line 4353 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0x18; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0; + (yyval.modcodes).s0 = 0; + } + break; + + case 328: +#line 4359 "bfin-parse.y" + { + (yyval.modcodes).r0 = (yyvsp[(1) - (3)].reg).regno; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0; + (yyval.modcodes).s0 = 1; + } + break; + + case 329: +#line 4365 "bfin-parse.y" + { + (yyval.modcodes).r0 = 0x18; + (yyval.modcodes).x0 = (yyvsp[(2) - (3)].r0).r0; + (yyval.modcodes).s0 = 1; + } + break; + + case 330: +#line 4375 "bfin-parse.y" + { + Expr_Node_Value val; + val.s_value = S_GET_NAME((yyvsp[(1) - (1)].symbol)); + (yyval.expr) = Expr_Node_Create (Expr_Node_Reloc, val, NULL, NULL); + } + break; + + case 331: +#line 4384 "bfin-parse.y" + { (yyval.value) = BFD_RELOC_BFIN_GOT; } + break; + + case 332: +#line 4386 "bfin-parse.y" + { (yyval.value) = BFD_RELOC_BFIN_GOT17M4; } + break; + + case 333: +#line 4388 "bfin-parse.y" + { (yyval.value) = BFD_RELOC_BFIN_FUNCDESC_GOT17M4; } + break; + + case 334: +#line 4392 "bfin-parse.y" + { + Expr_Node_Value val; + val.i_value = (yyvsp[(3) - (3)].value); + (yyval.expr) = Expr_Node_Create (Expr_Node_GOT_Reloc, val, (yyvsp[(1) - (3)].expr), NULL); + } + break; + + case 335: +#line 4400 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (1)].expr); + } + break; + + case 336: +#line 4404 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (1)].expr); + } + break; + + case 337: +#line 4411 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (3)].expr); + } + break; + + case 338: +#line 4417 "bfin-parse.y" + { + Expr_Node_Value val; + val.i_value = (yyvsp[(1) - (1)].value); + (yyval.expr) = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + } + break; + + case 339: +#line 4423 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (1)].expr); + } + break; + + case 340: +#line 4427 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(2) - (3)].expr); + } + break; + + case 341: +#line 4431 "bfin-parse.y" + { + (yyval.expr) = unary (Expr_Op_Type_COMP, (yyvsp[(2) - (2)].expr)); + } + break; + + case 342: +#line 4435 "bfin-parse.y" + { + (yyval.expr) = unary (Expr_Op_Type_NEG, (yyvsp[(2) - (2)].expr)); + } + break; + + case 343: +#line 4441 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (1)].expr); + } + break; + + case 344: +#line 4447 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Mult, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 345: +#line 4451 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Div, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 346: +#line 4455 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Mod, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 347: +#line 4459 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 348: +#line 4463 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 349: +#line 4467 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Lshift, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 350: +#line 4471 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_Rshift, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 351: +#line 4475 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_BAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 352: +#line 4479 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_LOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 353: +#line 4483 "bfin-parse.y" + { + (yyval.expr) = binary (Expr_Op_Type_BOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); + } + break; + + case 354: +#line 4487 "bfin-parse.y" + { + (yyval.expr) = (yyvsp[(1) - (1)].expr); + } + break; + + +/* Line 1267 of yacc.c. */ +#line 7560 "bfin-parse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 4493 "bfin-parse.y" + + +EXPR_T +mkexpr (int x, SYMBOL_T s) +{ + EXPR_T e = (EXPR_T) ALLOCATE (sizeof (struct expression_cell)); + e->value = x; + EXPR_SYMBOL(e) = s; + return e; +} + +static int +value_match (Expr_Node *exp, int sz, int sign, int mul, int issigned) +{ + int umax = (1 << sz) - 1; + int min = -1 << (sz - 1); + int max = (1 << (sz - 1)) - 1; + + int v = (EXPR_VALUE (exp)) & 0xffffffff; + + if ((v % mul) != 0) + { + error ("%s:%d: Value Error -- Must align to %d\n", __FILE__, __LINE__, mul); + return 0; + } + + v /= mul; + + if (sign) + v = -v; + + if (issigned) + { + if (v >= min && v <= max) return 1; + +#ifdef DEBUG + fprintf(stderr, "signed value %lx out of range\n", v * mul); +#endif + return 0; + } + if (v <= umax && v >= 0) + return 1; +#ifdef DEBUG + fprintf(stderr, "unsigned value %lx out of range\n", v * mul); +#endif + return 0; +} + +/* Return the expression structure that allows symbol operations. + If the left and right children are constants, do the operation. */ +static Expr_Node * +binary (Expr_Op_Type op, Expr_Node *x, Expr_Node *y) +{ + Expr_Node_Value val; + + if (x->type == Expr_Node_Constant && y->type == Expr_Node_Constant) + { + switch (op) + { + case Expr_Op_Type_Add: + x->value.i_value += y->value.i_value; + break; + case Expr_Op_Type_Sub: + x->value.i_value -= y->value.i_value; + break; + case Expr_Op_Type_Mult: + x->value.i_value *= y->value.i_value; + break; + case Expr_Op_Type_Div: + if (y->value.i_value == 0) + error ("Illegal Expression: Division by zero."); + else + x->value.i_value /= y->value.i_value; + break; + case Expr_Op_Type_Mod: + x->value.i_value %= y->value.i_value; + break; + case Expr_Op_Type_Lshift: + x->value.i_value <<= y->value.i_value; + break; + case Expr_Op_Type_Rshift: + x->value.i_value >>= y->value.i_value; + break; + case Expr_Op_Type_BAND: + x->value.i_value &= y->value.i_value; + break; + case Expr_Op_Type_BOR: + x->value.i_value |= y->value.i_value; + break; + case Expr_Op_Type_BXOR: + x->value.i_value ^= y->value.i_value; + break; + case Expr_Op_Type_LAND: + x->value.i_value = x->value.i_value && y->value.i_value; + break; + case Expr_Op_Type_LOR: + x->value.i_value = x->value.i_value || y->value.i_value; + break; + + default: + error ("%s:%d: Internal assembler error\n", __FILE__, __LINE__); + } + return x; + } + /* Canonicalize order to EXPR OP CONSTANT. */ + if (x->type == Expr_Node_Constant) + { + Expr_Node *t = x; + x = y; + y = t; + } + /* Canonicalize subtraction of const to addition of negated const. */ + if (op == Expr_Op_Type_Sub && y->type == Expr_Node_Constant) + { + op = Expr_Op_Type_Add; + y->value.i_value = -y->value.i_value; + } + if (y->type == Expr_Node_Constant && x->type == Expr_Node_Binop + && x->Right_Child->type == Expr_Node_Constant) + { + if (op == x->value.op_value && x->value.op_value == Expr_Op_Type_Add) + { + x->Right_Child->value.i_value += y->value.i_value; + return x; + } + } + + /* Create a new expression structure. */ + val.op_value = op; + return Expr_Node_Create (Expr_Node_Binop, val, x, y); +} + +static Expr_Node * +unary (Expr_Op_Type op, Expr_Node *x) +{ + if (x->type == Expr_Node_Constant) + { + switch (op) + { + case Expr_Op_Type_NEG: + x->value.i_value = -x->value.i_value; + break; + case Expr_Op_Type_COMP: + x->value.i_value = ~x->value.i_value; + break; + default: + error ("%s:%d: Internal assembler error\n", __FILE__, __LINE__); + } + return x; + } + else + { + /* Create a new expression structure. */ + Expr_Node_Value val; + val.op_value = op; + return Expr_Node_Create (Expr_Node_Unop, val, x, NULL); + } +} + +int debug_codeselection = 0; +static void +notethat (char *format, ...) +{ + va_list ap; + va_start (ap, format); + if (debug_codeselection) + { + vfprintf (errorf, format, ap); + } + va_end (ap); +} + +#ifdef TEST +main (int argc, char **argv) +{ + yyparse(); +} +#endif + + diff --git a/gas/bfin-parse.h b/gas/bfin-parse.h new file mode 100644 index 00000000000..399c284616c --- /dev/null +++ b/gas/bfin-parse.h @@ -0,0 +1,414 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + BYTEOP16P = 258, + BYTEOP16M = 259, + BYTEOP1P = 260, + BYTEOP2P = 261, + BYTEOP3P = 262, + BYTEUNPACK = 263, + BYTEPACK = 264, + PACK = 265, + SAA = 266, + ALIGN8 = 267, + ALIGN16 = 268, + ALIGN24 = 269, + VIT_MAX = 270, + EXTRACT = 271, + DEPOSIT = 272, + EXPADJ = 273, + SEARCH = 274, + ONES = 275, + SIGN = 276, + SIGNBITS = 277, + LINK = 278, + UNLINK = 279, + REG = 280, + PC = 281, + CCREG = 282, + BYTE_DREG = 283, + REG_A_DOUBLE_ZERO = 284, + REG_A_DOUBLE_ONE = 285, + A_ZERO_DOT_L = 286, + A_ZERO_DOT_H = 287, + A_ONE_DOT_L = 288, + A_ONE_DOT_H = 289, + HALF_REG = 290, + NOP = 291, + RTI = 292, + RTS = 293, + RTX = 294, + RTN = 295, + RTE = 296, + HLT = 297, + IDLE = 298, + STI = 299, + CLI = 300, + CSYNC = 301, + SSYNC = 302, + EMUEXCPT = 303, + RAISE = 304, + EXCPT = 305, + LSETUP = 306, + LOOP = 307, + LOOP_BEGIN = 308, + LOOP_END = 309, + DISALGNEXCPT = 310, + JUMP = 311, + JUMP_DOT_S = 312, + JUMP_DOT_L = 313, + CALL = 314, + ABORT = 315, + NOT = 316, + TILDA = 317, + BANG = 318, + AMPERSAND = 319, + BAR = 320, + PERCENT = 321, + CARET = 322, + BXOR = 323, + MINUS = 324, + PLUS = 325, + STAR = 326, + SLASH = 327, + NEG = 328, + MIN = 329, + MAX = 330, + ABS = 331, + DOUBLE_BAR = 332, + _PLUS_BAR_PLUS = 333, + _PLUS_BAR_MINUS = 334, + _MINUS_BAR_PLUS = 335, + _MINUS_BAR_MINUS = 336, + _MINUS_MINUS = 337, + _PLUS_PLUS = 338, + SHIFT = 339, + LSHIFT = 340, + ASHIFT = 341, + BXORSHIFT = 342, + _GREATER_GREATER_GREATER_THAN_ASSIGN = 343, + ROT = 344, + LESS_LESS = 345, + GREATER_GREATER = 346, + _GREATER_GREATER_GREATER = 347, + _LESS_LESS_ASSIGN = 348, + _GREATER_GREATER_ASSIGN = 349, + DIVS = 350, + DIVQ = 351, + ASSIGN = 352, + _STAR_ASSIGN = 353, + _BAR_ASSIGN = 354, + _CARET_ASSIGN = 355, + _AMPERSAND_ASSIGN = 356, + _MINUS_ASSIGN = 357, + _PLUS_ASSIGN = 358, + _ASSIGN_BANG = 359, + _LESS_THAN_ASSIGN = 360, + _ASSIGN_ASSIGN = 361, + GE = 362, + LT = 363, + LE = 364, + GT = 365, + LESS_THAN = 366, + FLUSHINV = 367, + FLUSH = 368, + IFLUSH = 369, + PREFETCH = 370, + PRNT = 371, + OUTC = 372, + WHATREG = 373, + TESTSET = 374, + ASL = 375, + ASR = 376, + B = 377, + W = 378, + NS = 379, + S = 380, + CO = 381, + SCO = 382, + TH = 383, + TL = 384, + BP = 385, + BREV = 386, + X = 387, + Z = 388, + M = 389, + MMOD = 390, + R = 391, + RND = 392, + RNDL = 393, + RNDH = 394, + RND12 = 395, + RND20 = 396, + V = 397, + LO = 398, + HI = 399, + BITTGL = 400, + BITCLR = 401, + BITSET = 402, + BITTST = 403, + BITMUX = 404, + DBGAL = 405, + DBGAH = 406, + DBGHALT = 407, + DBG = 408, + DBGA = 409, + DBGCMPLX = 410, + IF = 411, + COMMA = 412, + BY = 413, + COLON = 414, + SEMICOLON = 415, + RPAREN = 416, + LPAREN = 417, + LBRACK = 418, + RBRACK = 419, + STATUS_REG = 420, + MNOP = 421, + SYMBOL = 422, + NUMBER = 423, + GOT = 424, + GOT17M4 = 425, + FUNCDESC_GOT17M4 = 426, + AT = 427, + PLTPC = 428 + }; +#endif +/* Tokens. */ +#define BYTEOP16P 258 +#define BYTEOP16M 259 +#define BYTEOP1P 260 +#define BYTEOP2P 261 +#define BYTEOP3P 262 +#define BYTEUNPACK 263 +#define BYTEPACK 264 +#define PACK 265 +#define SAA 266 +#define ALIGN8 267 +#define ALIGN16 268 +#define ALIGN24 269 +#define VIT_MAX 270 +#define EXTRACT 271 +#define DEPOSIT 272 +#define EXPADJ 273 +#define SEARCH 274 +#define ONES 275 +#define SIGN 276 +#define SIGNBITS 277 +#define LINK 278 +#define UNLINK 279 +#define REG 280 +#define PC 281 +#define CCREG 282 +#define BYTE_DREG 283 +#define REG_A_DOUBLE_ZERO 284 +#define REG_A_DOUBLE_ONE 285 +#define A_ZERO_DOT_L 286 +#define A_ZERO_DOT_H 287 +#define A_ONE_DOT_L 288 +#define A_ONE_DOT_H 289 +#define HALF_REG 290 +#define NOP 291 +#define RTI 292 +#define RTS 293 +#define RTX 294 +#define RTN 295 +#define RTE 296 +#define HLT 297 +#define IDLE 298 +#define STI 299 +#define CLI 300 +#define CSYNC 301 +#define SSYNC 302 +#define EMUEXCPT 303 +#define RAISE 304 +#define EXCPT 305 +#define LSETUP 306 +#define LOOP 307 +#define LOOP_BEGIN 308 +#define LOOP_END 309 +#define DISALGNEXCPT 310 +#define JUMP 311 +#define JUMP_DOT_S 312 +#define JUMP_DOT_L 313 +#define CALL 314 +#define ABORT 315 +#define NOT 316 +#define TILDA 317 +#define BANG 318 +#define AMPERSAND 319 +#define BAR 320 +#define PERCENT 321 +#define CARET 322 +#define BXOR 323 +#define MINUS 324 +#define PLUS 325 +#define STAR 326 +#define SLASH 327 +#define NEG 328 +#define MIN 329 +#define MAX 330 +#define ABS 331 +#define DOUBLE_BAR 332 +#define _PLUS_BAR_PLUS 333 +#define _PLUS_BAR_MINUS 334 +#define _MINUS_BAR_PLUS 335 +#define _MINUS_BAR_MINUS 336 +#define _MINUS_MINUS 337 +#define _PLUS_PLUS 338 +#define SHIFT 339 +#define LSHIFT 340 +#define ASHIFT 341 +#define BXORSHIFT 342 +#define _GREATER_GREATER_GREATER_THAN_ASSIGN 343 +#define ROT 344 +#define LESS_LESS 345 +#define GREATER_GREATER 346 +#define _GREATER_GREATER_GREATER 347 +#define _LESS_LESS_ASSIGN 348 +#define _GREATER_GREATER_ASSIGN 349 +#define DIVS 350 +#define DIVQ 351 +#define ASSIGN 352 +#define _STAR_ASSIGN 353 +#define _BAR_ASSIGN 354 +#define _CARET_ASSIGN 355 +#define _AMPERSAND_ASSIGN 356 +#define _MINUS_ASSIGN 357 +#define _PLUS_ASSIGN 358 +#define _ASSIGN_BANG 359 +#define _LESS_THAN_ASSIGN 360 +#define _ASSIGN_ASSIGN 361 +#define GE 362 +#define LT 363 +#define LE 364 +#define GT 365 +#define LESS_THAN 366 +#define FLUSHINV 367 +#define FLUSH 368 +#define IFLUSH 369 +#define PREFETCH 370 +#define PRNT 371 +#define OUTC 372 +#define WHATREG 373 +#define TESTSET 374 +#define ASL 375 +#define ASR 376 +#define B 377 +#define W 378 +#define NS 379 +#define S 380 +#define CO 381 +#define SCO 382 +#define TH 383 +#define TL 384 +#define BP 385 +#define BREV 386 +#define X 387 +#define Z 388 +#define M 389 +#define MMOD 390 +#define R 391 +#define RND 392 +#define RNDL 393 +#define RNDH 394 +#define RND12 395 +#define RND20 396 +#define V 397 +#define LO 398 +#define HI 399 +#define BITTGL 400 +#define BITCLR 401 +#define BITSET 402 +#define BITTST 403 +#define BITMUX 404 +#define DBGAL 405 +#define DBGAH 406 +#define DBGHALT 407 +#define DBG 408 +#define DBGA 409 +#define DBGCMPLX 410 +#define IF 411 +#define COMMA 412 +#define BY 413 +#define COLON 414 +#define SEMICOLON 415 +#define RPAREN 416 +#define LPAREN 417 +#define LBRACK 418 +#define RBRACK 419 +#define STATUS_REG 420 +#define MNOP 421 +#define SYMBOL 422 +#define NUMBER 423 +#define GOT 424 +#define GOT17M4 425 +#define FUNCDESC_GOT17M4 426 +#define AT 427 +#define PLTPC 428 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 446 "bfin-parse.y" +{ + INSTR_T instr; + Expr_Node *expr; + SYMBOL_T symbol; + long value; + Register reg; + Macfunc macfunc; + struct { int r0; int s0; int x0; int aop; } modcodes; + struct { int r0; } r0; + Opt_mode mod; +} +/* Line 1529 of yacc.c. */ +#line 407 "bfin-parse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/gas/doc/as.1 b/gas/doc/as.1 new file mode 100644 index 00000000000..f119c6b21bc --- /dev/null +++ b/gas/doc/as.1 @@ -0,0 +1,1844 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "AS 1" +.TH AS 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +AS \- the portable GNU assembler. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +as [\fB\-a\fR[\fBcdghlns\fR][=\fIfile\fR]] [\fB\-\-alternate\fR] [\fB\-D\fR] + [\fB\-\-compress\-debug\-sections\fR] [\fB\-\-nocompress\-debug\-sections\fR] + [\fB\-\-debug\-prefix\-map\fR \fIold\fR=\fInew\fR] + [\fB\-\-defsym\fR \fIsym\fR=\fIval\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-\-gstabs\fR] + [\fB\-\-gstabs+\fR] [\fB\-\-gdwarf\-2\fR] [\fB\-\-gdwarf\-sections\fR] + [\fB\-\-help\fR] [\fB\-I\fR \fIdir\fR] [\fB\-J\fR] + [\fB\-K\fR] [\fB\-L\fR] [\fB\-\-listing\-lhs\-width\fR=\fI\s-1NUM\s0\fR] + [\fB\-\-listing\-lhs\-width2\fR=\fI\s-1NUM\s0\fR] [\fB\-\-listing\-rhs\-width\fR=\fI\s-1NUM\s0\fR] + [\fB\-\-listing\-cont\-lines\fR=\fI\s-1NUM\s0\fR] [\fB\-\-keep\-locals\fR] [\fB\-o\fR + \fIobjfile\fR] [\fB\-R\fR] [\fB\-\-reduce\-memory\-overheads\fR] [\fB\-\-statistics\fR] + [\fB\-v\fR] [\fB\-version\fR] [\fB\-\-version\fR] [\fB\-W\fR] [\fB\-\-warn\fR] + [\fB\-\-fatal\-warnings\fR] [\fB\-w\fR] [\fB\-x\fR] [\fB\-Z\fR] [\fB@\fR\fI\s-1FILE\s0\fR] + [\fB\-\-size\-check=[error|warning]\fR] + [\fB\-\-target\-help\fR] [\fItarget-options\fR] + [\fB\-\-\fR|\fIfiles\fR ...] +.PP +\&\fITarget AArch64 options:\fR + [\fB\-EB\fR|\fB\-EL\fR] + [\fB\-mabi\fR=\fI\s-1ABI\s0\fR] +.PP +\&\fITarget Alpha options:\fR + [\fB\-m\fR\fIcpu\fR] + [\fB\-mdebug\fR | \fB\-no\-mdebug\fR] + [\fB\-replace\fR | \fB\-noreplace\fR] + [\fB\-relax\fR] [\fB\-g\fR] [\fB\-G\fR\fIsize\fR] + [\fB\-F\fR] [\fB\-32addr\fR] +.PP +\&\fITarget \s-1ARC\s0 options:\fR + [\fB\-marc[5|6|7|8]\fR] + [\fB\-EB\fR|\fB\-EL\fR] +.PP +\&\fITarget \s-1ARM\s0 options:\fR + [\fB\-mcpu\fR=\fIprocessor\fR[+\fIextension\fR...]] + [\fB\-march\fR=\fIarchitecture\fR[+\fIextension\fR...]] + [\fB\-mfpu\fR=\fIfloating-point-format\fR] + [\fB\-mfloat\-abi\fR=\fIabi\fR] + [\fB\-meabi\fR=\fIver\fR] + [\fB\-mthumb\fR] + [\fB\-EB\fR|\fB\-EL\fR] + [\fB\-mapcs\-32\fR|\fB\-mapcs\-26\fR|\fB\-mapcs\-float\fR| + \fB\-mapcs\-reentrant\fR] + [\fB\-mthumb\-interwork\fR] [\fB\-k\fR] +.PP +\&\fITarget Blackfin options:\fR + [\fB\-mcpu\fR=\fIprocessor\fR[\-\fIsirevision\fR]] + [\fB\-mfdpic\fR] + [\fB\-mno\-fdpic\fR] + [\fB\-mnopic\fR] +.PP +\&\fITarget \s-1CRIS\s0 options:\fR + [\fB\-\-underscore\fR | \fB\-\-no\-underscore\fR] + [\fB\-\-pic\fR] [\fB\-N\fR] + [\fB\-\-emulation=criself\fR | \fB\-\-emulation=crisaout\fR] + [\fB\-\-march=v0_v10\fR | \fB\-\-march=v10\fR | \fB\-\-march=v32\fR | \fB\-\-march=common_v10_v32\fR] +.PP +\&\fITarget D10V options:\fR + [\fB\-O\fR] +.PP +\&\fITarget D30V options:\fR + [\fB\-O\fR|\fB\-n\fR|\fB\-N\fR] +.PP +\&\fITarget \s-1EPIPHANY\s0 options:\fR + [\fB\-mepiphany\fR|\fB\-mepiphany16\fR] +.PP +\&\fITarget H8/300 options:\fR + [\-h\-tick\-hex] +.PP +\&\fITarget i386 options:\fR + [\fB\-\-32\fR|\fB\-\-x32\fR|\fB\-\-64\fR] [\fB\-n\fR] + [\fB\-march\fR=\fI\s-1CPU\s0\fR[+\fI\s-1EXTENSION\s0\fR...]] [\fB\-mtune\fR=\fI\s-1CPU\s0\fR] +.PP +\&\fITarget i960 options:\fR + [\fB\-ACA\fR|\fB\-ACA_A\fR|\fB\-ACB\fR|\fB\-ACC\fR|\fB\-AKA\fR|\fB\-AKB\fR| + \fB\-AKC\fR|\fB\-AMC\fR] + [\fB\-b\fR] [\fB\-no\-relax\fR] +.PP +\&\fITarget \s-1IA\-64\s0 options:\fR + [\fB\-mconstant\-gp\fR|\fB\-mauto\-pic\fR] + [\fB\-milp32\fR|\fB\-milp64\fR|\fB\-mlp64\fR|\fB\-mp64\fR] + [\fB\-mle\fR|\fBmbe\fR] + [\fB\-mtune=itanium1\fR|\fB\-mtune=itanium2\fR] + [\fB\-munwind\-check=warning\fR|\fB\-munwind\-check=error\fR] + [\fB\-mhint.b=ok\fR|\fB\-mhint.b=warning\fR|\fB\-mhint.b=error\fR] + [\fB\-x\fR|\fB\-xexplicit\fR] [\fB\-xauto\fR] [\fB\-xdebug\fR] +.PP +\&\fITarget \s-1IP2K\s0 options:\fR + [\fB\-mip2022\fR|\fB\-mip2022ext\fR] +.PP +\&\fITarget M32C options:\fR + [\fB\-m32c\fR|\fB\-m16c\fR] [\-relax] [\-h\-tick\-hex] +.PP +\&\fITarget M32R options:\fR + [\fB\-\-m32rx\fR|\fB\-\-[no\-]warn\-explicit\-parallel\-conflicts\fR| + \fB\-\-W[n]p\fR] +.PP +\&\fITarget M680X0 options:\fR + [\fB\-l\fR] [\fB\-m68000\fR|\fB\-m68010\fR|\fB\-m68020\fR|...] +.PP +\&\fITarget M68HC11 options:\fR + [\fB\-m68hc11\fR|\fB\-m68hc12\fR|\fB\-m68hcs12\fR|\fB\-mm9s12x\fR|\fB\-mm9s12xg\fR] + [\fB\-mshort\fR|\fB\-mlong\fR] + [\fB\-mshort\-double\fR|\fB\-mlong\-double\fR] + [\fB\-\-force\-long\-branches\fR] [\fB\-\-short\-branches\fR] + [\fB\-\-strict\-direct\-mode\fR] [\fB\-\-print\-insn\-syntax\fR] + [\fB\-\-print\-opcodes\fR] [\fB\-\-generate\-example\fR] +.PP +\&\fITarget \s-1MCORE\s0 options:\fR + [\fB\-jsri2bsr\fR] [\fB\-sifilter\fR] [\fB\-relax\fR] + [\fB\-mcpu=[210|340]\fR] +.PP +\&\fITarget Meta options:\fR + [\fB\-mcpu=\fR\fIcpu\fR] [\fB\-mfpu=\fR\fIcpu\fR] [\fB\-mdsp=\fR\fIcpu\fR] +\&\fITarget \s-1MICROBLAZE\s0 options:\fR +.PP +\&\fITarget \s-1MIPS\s0 options:\fR + [\fB\-nocpp\fR] [\fB\-EL\fR] [\fB\-EB\fR] [\fB\-O\fR[\fIoptimization level\fR]] + [\fB\-g\fR[\fIdebug level\fR]] [\fB\-G\fR \fInum\fR] [\fB\-KPIC\fR] [\fB\-call_shared\fR] + [\fB\-non_shared\fR] [\fB\-xgot\fR [\fB\-mvxworks\-pic\fR] + [\fB\-mabi\fR=\fI\s-1ABI\s0\fR] [\fB\-32\fR] [\fB\-n32\fR] [\fB\-64\fR] [\fB\-mfp32\fR] [\fB\-mgp32\fR] + [\fB\-mfp64\fR] [\fB\-mgp64\fR] [\fB\-mfpxx\fR] + [\fB\-modd\-spreg\fR] [\fB\-mno\-odd\-spreg\fR] + [\fB\-march\fR=\fI\s-1CPU\s0\fR] [\fB\-mtune\fR=\fI\s-1CPU\s0\fR] [\fB\-mips1\fR] [\fB\-mips2\fR] + [\fB\-mips3\fR] [\fB\-mips4\fR] [\fB\-mips5\fR] [\fB\-mips32\fR] [\fB\-mips32r2\fR] + [\fB\-mips32r3\fR] [\fB\-mips32r5\fR] [\fB\-mips32r6\fR] [\fB\-mips64\fR] [\fB\-mips64r2\fR] + [\fB\-mips64r3\fR] [\fB\-mips64r5\fR] [\fB\-mips64r6\fR] + [\fB\-construct\-floats\fR] [\fB\-no\-construct\-floats\fR] + [\fB\-mnan=\fR\fIencoding\fR] + [\fB\-trap\fR] [\fB\-no\-break\fR] [\fB\-break\fR] [\fB\-no\-trap\fR] + [\fB\-mips16\fR] [\fB\-no\-mips16\fR] + [\fB\-mmicromips\fR] [\fB\-mno\-micromips\fR] + [\fB\-msmartmips\fR] [\fB\-mno\-smartmips\fR] + [\fB\-mips3d\fR] [\fB\-no\-mips3d\fR] + [\fB\-mdmx\fR] [\fB\-no\-mdmx\fR] + [\fB\-mdsp\fR] [\fB\-mno\-dsp\fR] + [\fB\-mdspr2\fR] [\fB\-mno\-dspr2\fR] + [\fB\-mmsa\fR] [\fB\-mno\-msa\fR] + [\fB\-mxpa\fR] [\fB\-mno\-xpa\fR] + [\fB\-mmt\fR] [\fB\-mno\-mt\fR] + [\fB\-mmcu\fR] [\fB\-mno\-mcu\fR] + [\fB\-minsn32\fR] [\fB\-mno\-insn32\fR] + [\fB\-mfix7000\fR] [\fB\-mno\-fix7000\fR] + [\fB\-mfix\-rm7000\fR] [\fB\-mno\-fix\-rm7000\fR] + [\fB\-mfix\-vr4120\fR] [\fB\-mno\-fix\-vr4120\fR] + [\fB\-mfix\-vr4130\fR] [\fB\-mno\-fix\-vr4130\fR] + [\fB\-mdebug\fR] [\fB\-no\-mdebug\fR] + [\fB\-mpdr\fR] [\fB\-mno\-pdr\fR] +.PP +\&\fITarget \s-1MMIX\s0 options:\fR + [\fB\-\-fixed\-special\-register\-names\fR] [\fB\-\-globalize\-symbols\fR] + [\fB\-\-gnu\-syntax\fR] [\fB\-\-relax\fR] [\fB\-\-no\-predefined\-symbols\fR] + [\fB\-\-no\-expand\fR] [\fB\-\-no\-merge\-gregs\fR] [\fB\-x\fR] + [\fB\-\-linker\-allocated\-gregs\fR] +.PP +\&\fITarget Nios \s-1II\s0 options:\fR + [\fB\-relax\-all\fR] [\fB\-relax\-section\fR] [\fB\-no\-relax\fR] + [\fB\-EB\fR] [\fB\-EL\fR] +.PP +\&\fITarget \s-1NDS32\s0 options:\fR + [\fB\-EL\fR] [\fB\-EB\fR] [\fB\-O\fR] [\fB\-Os\fR] [\fB\-mcpu=\fR\fIcpu\fR] + [\fB\-misa=\fR\fIisa\fR] [\fB\-mabi=\fR\fIabi\fR] [\fB\-mall\-ext\fR] + [\fB\-m[no\-]16\-bit\fR] [\fB\-m[no\-]perf\-ext\fR] [\fB\-m[no\-]perf2\-ext\fR] + [\fB\-m[no\-]string\-ext\fR] [\fB\-m[no\-]dsp\-ext\fR] [\fB\-m[no\-]mac\fR] [\fB\-m[no\-]div\fR] + [\fB\-m[no\-]audio\-isa\-ext\fR] [\fB\-m[no\-]fpu\-sp\-ext\fR] [\fB\-m[no\-]fpu\-dp\-ext\fR] + [\fB\-m[no\-]fpu\-fma\fR] [\fB\-mfpu\-freg=\fR\fI\s-1FREG\s0\fR] [\fB\-mreduced\-regs\fR] + [\fB\-mfull\-regs\fR] [\fB\-m[no\-]dx\-regs\fR] [\fB\-mpic\fR] [\fB\-mno\-relax\fR] + [\fB\-mb2bb\fR] +.PP +\&\fITarget \s-1PDP11\s0 options:\fR + [\fB\-mpic\fR|\fB\-mno\-pic\fR] [\fB\-mall\fR] [\fB\-mno\-extensions\fR] + [\fB\-m\fR\fIextension\fR|\fB\-mno\-\fR\fIextension\fR] + [\fB\-m\fR\fIcpu\fR] [\fB\-m\fR\fImachine\fR] +.PP +\&\fITarget picoJava options:\fR + [\fB\-mb\fR|\fB\-me\fR] +.PP +\&\fITarget PowerPC options:\fR + [\fB\-a32\fR|\fB\-a64\fR] + [\fB\-mpwrx\fR|\fB\-mpwr2\fR|\fB\-mpwr\fR|\fB\-m601\fR|\fB\-mppc\fR|\fB\-mppc32\fR|\fB\-m603\fR|\fB\-m604\fR|\fB\-m403\fR|\fB\-m405\fR| + \fB\-m440\fR|\fB\-m464\fR|\fB\-m476\fR|\fB\-m7400\fR|\fB\-m7410\fR|\fB\-m7450\fR|\fB\-m7455\fR|\fB\-m750cl\fR|\fB\-mppc64\fR| + \fB\-m620\fR|\fB\-me500\fR|\fB\-e500x2\fR|\fB\-me500mc\fR|\fB\-me500mc64\fR|\fB\-me5500\fR|\fB\-me6500\fR|\fB\-mppc64bridge\fR| + \fB\-mbooke\fR|\fB\-mpower4\fR|\fB\-mpwr4\fR|\fB\-mpower5\fR|\fB\-mpwr5\fR|\fB\-mpwr5x\fR|\fB\-mpower6\fR|\fB\-mpwr6\fR| + \fB\-mpower7\fR|\fB\-mpwr7\fR|\fB\-mpower8\fR|\fB\-mpwr8\fR|\fB\-ma2\fR|\fB\-mcell\fR|\fB\-mspe\fR|\fB\-mtitan\fR|\fB\-me300\fR|\fB\-mcom\fR] + [\fB\-many\fR] [\fB\-maltivec\fR|\fB\-mvsx\fR|\fB\-mhtm\fR|\fB\-mvle\fR] + [\fB\-mregnames\fR|\fB\-mno\-regnames\fR] + [\fB\-mrelocatable\fR|\fB\-mrelocatable\-lib\fR|\fB\-K \s-1PIC\s0\fR] [\fB\-memb\fR] + [\fB\-mlittle\fR|\fB\-mlittle\-endian\fR|\fB\-le\fR|\fB\-mbig\fR|\fB\-mbig\-endian\fR|\fB\-be\fR] + [\fB\-msolaris\fR|\fB\-mno\-solaris\fR] + [\fB\-nops=\fR\fIcount\fR] +.PP +\&\fITarget \s-1RL78\s0 options:\fR + [\fB\-mg10\fR] + [\fB\-m32bit\-doubles\fR|\fB\-m64bit\-doubles\fR] +.PP +\&\fITarget \s-1RX\s0 options:\fR + [\fB\-mlittle\-endian\fR|\fB\-mbig\-endian\fR] + [\fB\-m32bit\-doubles\fR|\fB\-m64bit\-doubles\fR] + [\fB\-muse\-conventional\-section\-names\fR] + [\fB\-msmall\-data\-limit\fR] + [\fB\-mpid\fR] + [\fB\-mrelax\fR] + [\fB\-mint\-register=\fR\fInumber\fR] + [\fB\-mgcc\-abi\fR|\fB\-mrx\-abi\fR] +.PP +\&\fITarget s390 options:\fR + [\fB\-m31\fR|\fB\-m64\fR] [\fB\-mesa\fR|\fB\-mzarch\fR] [\fB\-march\fR=\fI\s-1CPU\s0\fR] + [\fB\-mregnames\fR|\fB\-mno\-regnames\fR] + [\fB\-mwarn\-areg\-zero\fR] +.PP +\&\fITarget \s-1SCORE\s0 options:\fR + [\fB\-EB\fR][\fB\-EL\fR][\fB\-FIXDD\fR][\fB\-NWARN\fR] + [\fB\-SCORE5\fR][\fB\-SCORE5U\fR][\fB\-SCORE7\fR][\fB\-SCORE3\fR] + [\fB\-march=score7\fR][\fB\-march=score3\fR] + [\fB\-USE_R1\fR][\fB\-KPIC\fR][\fB\-O0\fR][\fB\-G\fR \fInum\fR][\fB\-V\fR] +.PP +\&\fITarget \s-1SPARC\s0 options:\fR + [\fB\-Av6\fR|\fB\-Av7\fR|\fB\-Av8\fR|\fB\-Asparclet\fR|\fB\-Asparclite\fR + \fB\-Av8plus\fR|\fB\-Av8plusa\fR|\fB\-Av9\fR|\fB\-Av9a\fR] + [\fB\-xarch=v8plus\fR|\fB\-xarch=v8plusa\fR] [\fB\-bump\fR] + [\fB\-32\fR|\fB\-64\fR] +.PP +\&\fITarget \s-1TIC54X\s0 options:\fR + [\fB\-mcpu=54[123589]\fR|\fB\-mcpu=54[56]lp\fR] [\fB\-mfar\-mode\fR|\fB\-mf\fR] + [\fB\-merrors\-to\-file\fR \fI\fR|\fB\-me\fR \fI\fR] +.PP +\&\fITarget \s-1TIC6X\s0 options:\fR + [\fB\-march=\fR\fIarch\fR] [\fB\-mbig\-endian\fR|\fB\-mlittle\-endian\fR] + [\fB\-mdsbt\fR|\fB\-mno\-dsbt\fR] [\fB\-mpid=no\fR|\fB\-mpid=near\fR|\fB\-mpid=far\fR] + [\fB\-mpic\fR|\fB\-mno\-pic\fR] +.PP +\&\fITarget TILE-Gx options:\fR + [\fB\-m32\fR|\fB\-m64\fR][\fB\-EB\fR][\fB\-EL\fR] +.PP +\&\fITarget Xtensa options:\fR + [\fB\-\-[no\-]text\-section\-literals\fR] [\fB\-\-[no\-]absolute\-literals\fR] + [\fB\-\-[no\-]target\-align\fR] [\fB\-\-[no\-]longcalls\fR] + [\fB\-\-[no\-]transform\fR] + [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR] + [\fB\-\-[no\-]trampolines\fR] +.PP +\&\fITarget Z80 options:\fR + [\fB\-z80\fR] [\fB\-r800\fR] + [ \fB\-ignore\-undocumented\-instructions\fR] [\fB\-Wnud\fR] + [ \fB\-ignore\-unportable\-instructions\fR] [\fB\-Wnup\fR] + [ \fB\-warn\-undocumented\-instructions\fR] [\fB\-Wud\fR] + [ \fB\-warn\-unportable\-instructions\fR] [\fB\-Wup\fR] + [ \fB\-forbid\-undocumented\-instructions\fR] [\fB\-Fud\fR] + [ \fB\-forbid\-unportable\-instructions\fR] [\fB\-Fup\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1GNU \s0\fBas\fR is really a family of assemblers. +If you use (or have used) the \s-1GNU\s0 assembler on one architecture, you +should find a fairly similar environment when you use it on another +architecture. Each version has much in common with the others, +including object file formats, most assembler directives (often called +\&\fIpseudo-ops\fR) and assembler syntax. +.PP +\&\fBas\fR is primarily intended to assemble the output of the +\&\s-1GNU C\s0 compiler \f(CW\*(C`gcc\*(C'\fR for use by the linker +\&\f(CW\*(C`ld\*(C'\fR. Nevertheless, we've tried to make \fBas\fR +assemble correctly everything that other assemblers for the same +machine would assemble. +Any exceptions are documented explicitly. +This doesn't mean \fBas\fR always uses the same syntax as another +assembler for the same architecture; for example, we know of several +incompatible versions of 680x0 assembly language syntax. +.PP +Each time you run \fBas\fR it assembles exactly one source +program. The source program is made up of one or more files. +(The standard input is also a file.) +.PP +You give \fBas\fR a command line that has zero or more input file +names. The input files are read (from left file name to right). A +command line argument (in any position) that has no special meaning +is taken to be an input file name. +.PP +If you give \fBas\fR no file names it attempts to read one input file +from the \fBas\fR standard input, which is normally your terminal. You +may have to type \fBctl-D\fR to tell \fBas\fR there is no more program +to assemble. +.PP +Use \fB\-\-\fR if you need to explicitly name the standard input file +in your command line. +.PP +If the source is empty, \fBas\fR produces a small, empty object +file. +.PP +\&\fBas\fR may write warnings and error messages to the standard error +file (usually your terminal). This should not happen when a compiler +runs \fBas\fR automatically. Warnings report an assumption made so +that \fBas\fR could keep assembling a flawed program; errors report a +grave problem that stops the assembly. +.PP +If you are invoking \fBas\fR via the \s-1GNU C\s0 compiler, +you can use the \fB\-Wa\fR option to pass arguments through to the assembler. +The assembler arguments must be separated from each other (and the \fB\-Wa\fR) +by commas. For example: +.PP +.Vb 1 +\& gcc \-c \-g \-O \-Wa,\-alh,\-L file.c +.Ve +.PP +This passes two options to the assembler: \fB\-alh\fR (emit a listing to +standard output with high-level and assembly source) and \fB\-L\fR (retain +local symbols in the symbol table). +.PP +Usually you do not need to use this \fB\-Wa\fR mechanism, since many compiler +command-line options are automatically passed to the assembler by the compiler. +(You can call the \s-1GNU\s0 compiler driver with the \fB\-v\fR option to see +precisely what options it passes to each compilation pass, including the +assembler.) +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.IP "\fB\-a[cdghlmns]\fR" 4 +.IX Item "-a[cdghlmns]" +Turn on listings, in any of a variety of ways: +.RS 4 +.IP "\fB\-ac\fR" 4 +.IX Item "-ac" +omit false conditionals +.IP "\fB\-ad\fR" 4 +.IX Item "-ad" +omit debugging directives +.IP "\fB\-ag\fR" 4 +.IX Item "-ag" +include general information, like as version and options passed +.IP "\fB\-ah\fR" 4 +.IX Item "-ah" +include high-level source +.IP "\fB\-al\fR" 4 +.IX Item "-al" +include assembly +.IP "\fB\-am\fR" 4 +.IX Item "-am" +include macro expansions +.IP "\fB\-an\fR" 4 +.IX Item "-an" +omit forms processing +.IP "\fB\-as\fR" 4 +.IX Item "-as" +include symbols +.IP "\fB=file\fR" 4 +.IX Item "=file" +set the name of the listing file +.RE +.RS 4 +.Sp +You may combine these options; for example, use \fB\-aln\fR for assembly +listing without forms processing. The \fB=file\fR option, if used, must be +the last one. By itself, \fB\-a\fR defaults to \fB\-ahls\fR. +.RE +.IP "\fB\-\-alternate\fR" 4 +.IX Item "--alternate" +Begin in alternate macro mode. +.IP "\fB\-\-compress\-debug\-sections\fR" 4 +.IX Item "--compress-debug-sections" +Compress \s-1DWARF\s0 debug sections using zlib. The debug sections are renamed +to begin with \fB.zdebug\fR, and the resulting object file may not be +compatible with older linkers and object file utilities. +.IP "\fB\-\-nocompress\-debug\-sections\fR" 4 +.IX Item "--nocompress-debug-sections" +Do not compress \s-1DWARF\s0 debug sections. This is the default. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +Ignored. This option is accepted for script compatibility with calls to +other assemblers. +.IP "\fB\-\-debug\-prefix\-map\fR \fIold\fR\fB=\fR\fInew\fR" 4 +.IX Item "--debug-prefix-map old=new" +When assembling files in directory \fI\fIold\fI\fR, record debugging +information describing them as in \fI\fInew\fI\fR instead. +.IP "\fB\-\-defsym\fR \fIsym\fR\fB=\fR\fIvalue\fR" 4 +.IX Item "--defsym sym=value" +Define the symbol \fIsym\fR to be \fIvalue\fR before assembling the input file. +\&\fIvalue\fR must be an integer constant. As in C, a leading \fB0x\fR +indicates a hexadecimal value, and a leading \fB0\fR indicates an octal +value. The value of the symbol can be overridden inside a source file via the +use of a \f(CW\*(C`.set\*(C'\fR pseudo-op. +.IP "\fB\-f\fR" 4 +.IX Item "-f" +\&\*(L"fast\*(R"\-\-\-skip whitespace and comment preprocessing (assume source is +compiler output). +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-\-gen\-debug\fR" 4 +.IX Item "--gen-debug" +.PD +Generate debugging information for each assembler source line using whichever +debug format is preferred by the target. This currently means either \s-1STABS, +ECOFF\s0 or \s-1DWARF2.\s0 +.IP "\fB\-\-gstabs\fR" 4 +.IX Item "--gstabs" +Generate stabs debugging information for each assembler line. This +may help debugging assembler code, if the debugger can handle it. +.IP "\fB\-\-gstabs+\fR" 4 +.IX Item "--gstabs+" +Generate stabs debugging information for each assembler line, with \s-1GNU\s0 +extensions that probably only gdb can handle, and that could make other +debuggers crash or refuse to read your program. This +may help debugging assembler code. Currently the only \s-1GNU\s0 extension is +the location of the current working directory at assembling time. +.IP "\fB\-\-gdwarf\-2\fR" 4 +.IX Item "--gdwarf-2" +Generate \s-1DWARF2\s0 debugging information for each assembler line. This +may help debugging assembler code, if the debugger can handle it. Note\-\-\-this +option is only supported by some targets, not all of them. +.IP "\fB\-\-gdwarf\-sections\fR" 4 +.IX Item "--gdwarf-sections" +Instead of creating a .debug_line section, create a series of +\&.debug_line.\fIfoo\fR sections where \fIfoo\fR is the name of the +corresponding code section. For example a code section called \fI.text.func\fR +will have its dwarf line number information placed into a section called +\&\fI.debug_line.text.func\fR. If the code section is just called \fI.text\fR +then debug line section will still be called just \fI.debug_line\fR without any +suffix. +.IP "\fB\-\-size\-check=error\fR" 4 +.IX Item "--size-check=error" +.PD 0 +.IP "\fB\-\-size\-check=warning\fR" 4 +.IX Item "--size-check=warning" +.PD +Issue an error or warning for invalid \s-1ELF \s0.size directive. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Print a summary of the command line options and exit. +.IP "\fB\-\-target\-help\fR" 4 +.IX Item "--target-help" +Print a summary of all target specific options and exit. +.IP "\fB\-I\fR \fIdir\fR" 4 +.IX Item "-I dir" +Add directory \fIdir\fR to the search list for \f(CW\*(C`.include\*(C'\fR directives. +.IP "\fB\-J\fR" 4 +.IX Item "-J" +Don't warn about signed overflow. +.IP "\fB\-K\fR" 4 +.IX Item "-K" +Issue warnings when difference tables altered for long displacements. +.IP "\fB\-L\fR" 4 +.IX Item "-L" +.PD 0 +.IP "\fB\-\-keep\-locals\fR" 4 +.IX Item "--keep-locals" +.PD +Keep (in the symbol table) local symbols. These symbols start with +system-specific local label prefixes, typically \fB.L\fR for \s-1ELF\s0 systems +or \fBL\fR for traditional a.out systems. +.IP "\fB\-\-listing\-lhs\-width=\fR\fInumber\fR" 4 +.IX Item "--listing-lhs-width=number" +Set the maximum width, in words, of the output data column for an assembler +listing to \fInumber\fR. +.IP "\fB\-\-listing\-lhs\-width2=\fR\fInumber\fR" 4 +.IX Item "--listing-lhs-width2=number" +Set the maximum width, in words, of the output data column for continuation +lines in an assembler listing to \fInumber\fR. +.IP "\fB\-\-listing\-rhs\-width=\fR\fInumber\fR" 4 +.IX Item "--listing-rhs-width=number" +Set the maximum width of an input source line, as displayed in a listing, to +\&\fInumber\fR bytes. +.IP "\fB\-\-listing\-cont\-lines=\fR\fInumber\fR" 4 +.IX Item "--listing-cont-lines=number" +Set the maximum number of lines printed in a listing for a single line of input +to \fInumber\fR + 1. +.IP "\fB\-o\fR \fIobjfile\fR" 4 +.IX Item "-o objfile" +Name the object-file output from \fBas\fR \fIobjfile\fR. +.IP "\fB\-R\fR" 4 +.IX Item "-R" +Fold the data section into the text section. +.Sp +Set the default size of \s-1GAS\s0's hash tables to a prime number close to +\&\fInumber\fR. Increasing this value can reduce the length of time it takes the +assembler to perform its tasks, at the expense of increasing the assembler's +memory requirements. Similarly reducing this value can reduce the memory +requirements at the expense of speed. +.IP "\fB\-\-reduce\-memory\-overheads\fR" 4 +.IX Item "--reduce-memory-overheads" +This option reduces \s-1GAS\s0's memory requirements, at the expense of making the +assembly processes slower. Currently this switch is a synonym for +\&\fB\-\-hash\-size=4051\fR, but in the future it may have other effects as well. +.IP "\fB\-\-statistics\fR" 4 +.IX Item "--statistics" +Print the maximum space (in bytes) and total time (in seconds) used by +assembly. +.IP "\fB\-\-strip\-local\-absolute\fR" 4 +.IX Item "--strip-local-absolute" +Remove local absolute symbols from the outgoing symbol table. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-version\fR" 4 +.IX Item "-version" +.PD +Print the \fBas\fR version. +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +Print the \fBas\fR version and exit. +.IP "\fB\-W\fR" 4 +.IX Item "-W" +.PD 0 +.IP "\fB\-\-no\-warn\fR" 4 +.IX Item "--no-warn" +.PD +Suppress warning messages. +.IP "\fB\-\-fatal\-warnings\fR" 4 +.IX Item "--fatal-warnings" +Treat warnings as errors. +.IP "\fB\-\-warn\fR" 4 +.IX Item "--warn" +Don't suppress warning messages or treat them as errors. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +Ignored. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +Ignored. +.IP "\fB\-Z\fR" 4 +.IX Item "-Z" +Generate an object file even after errors. +.IP "\fB\-\- |\fR \fIfiles\fR \fB...\fR" 4 +.IX Item "-- | files ..." +Standard input, or source files to assemble. +.PP +The following options are available when as is configured for the +64\-bit mode of the \s-1ARM\s0 Architecture (AArch64). +.IP "\fB\-EB\fR" 4 +.IX Item "-EB" +This option specifies that the output generated by the assembler should +be marked as being encoded for a big-endian processor. +.IP "\fB\-EL\fR" 4 +.IX Item "-EL" +This option specifies that the output generated by the assembler should +be marked as being encoded for a little-endian processor. +.IP "\fB\-mabi=\fR\fIabi\fR" 4 +.IX Item "-mabi=abi" +Specify which \s-1ABI\s0 the source code uses. The recognized arguments +are: \f(CW\*(C`ilp32\*(C'\fR and \f(CW\*(C`lp64\*(C'\fR, which decides the generated object +file in \s-1ELF32\s0 and \s-1ELF64\s0 format respectively. The default is \f(CW\*(C`lp64\*(C'\fR. +.IP "\fB\-mcpu=\fR\fIprocessor\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4 +.IX Item "-mcpu=processor[+extension...]" +This option specifies the target processor. The assembler will issue an error +message if an attempt is made to assemble an instruction which will not execute +on the target processor. The following processor names are recognized: +\&\f(CW\*(C`cortex\-a53\*(C'\fR, +\&\f(CW\*(C`cortex\-a57\*(C'\fR, +\&\f(CW\*(C`xgene1\*(C'\fR, +and +\&\f(CW\*(C`xgene2\*(C'\fR. +The special name \f(CW\*(C`all\*(C'\fR may be used to allow the assembler to accept +instructions valid for any supported processor, including all optional +extensions. +.Sp +In addition to the basic instruction set, the assembler can be told to +accept, or restrict, various extension mnemonics that extend the +processor. +.Sp +If some implementations of a particular processor can have an +extension, then then those extensions are automatically enabled. +Consequently, you will not normally have to specify any additional +extensions. +.IP "\fB\-march=\fR\fIarchitecture\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4 +.IX Item "-march=architecture[+extension...]" +This option specifies the target architecture. The assembler will +issue an error message if an attempt is made to assemble an +instruction which will not execute on the target architecture. The +only value for \fIarchitecture\fR is \f(CW\*(C`armv8\-a\*(C'\fR. +.Sp +If both \fB\-mcpu\fR and \fB\-march\fR are specified, the +assembler will use the setting for \fB\-mcpu\fR. If neither are +specified, the assembler will default to \fB\-mcpu=all\fR. +.Sp +The architecture option can be extended with the same instruction set +extension options as the \fB\-mcpu\fR option. Unlike +\&\fB\-mcpu\fR, extensions are not always enabled by default, +.IP "\fB\-mverbose\-error\fR" 4 +.IX Item "-mverbose-error" +This option enables verbose error messages for AArch64 gas. This option +is enabled by default. +.IP "\fB\-mno\-verbose\-error\fR" 4 +.IX Item "-mno-verbose-error" +This option disables verbose error messages in AArch64 gas. +.PP +The following options are available when as is configured for an Alpha +processor. +.IP "\fB\-m\fR\fIcpu\fR" 4 +.IX Item "-mcpu" +This option specifies the target processor. If an attempt is made to +assemble an instruction which will not execute on the target processor, +the assembler may either expand the instruction as a macro or issue an +error message. This option is equivalent to the \f(CW\*(C`.arch\*(C'\fR directive. +.Sp +The following processor names are recognized: +\&\f(CW21064\fR, +\&\f(CW\*(C`21064a\*(C'\fR, +\&\f(CW21066\fR, +\&\f(CW21068\fR, +\&\f(CW21164\fR, +\&\f(CW\*(C`21164a\*(C'\fR, +\&\f(CW\*(C`21164pc\*(C'\fR, +\&\f(CW21264\fR, +\&\f(CW\*(C`21264a\*(C'\fR, +\&\f(CW\*(C`21264b\*(C'\fR, +\&\f(CW\*(C`ev4\*(C'\fR, +\&\f(CW\*(C`ev5\*(C'\fR, +\&\f(CW\*(C`lca45\*(C'\fR, +\&\f(CW\*(C`ev5\*(C'\fR, +\&\f(CW\*(C`ev56\*(C'\fR, +\&\f(CW\*(C`pca56\*(C'\fR, +\&\f(CW\*(C`ev6\*(C'\fR, +\&\f(CW\*(C`ev67\*(C'\fR, +\&\f(CW\*(C`ev68\*(C'\fR. +The special name \f(CW\*(C`all\*(C'\fR may be used to allow the assembler to accept +instructions valid for any Alpha processor. +.Sp +In order to support existing practice in \s-1OSF/1\s0 with respect to \f(CW\*(C`.arch\*(C'\fR, +and existing practice within \fB\s-1MILO\s0\fR (the Linux \s-1ARC\s0 bootloader), the +numbered processor names (e.g. 21064) enable the processor-specific PALcode +instructions, while the \*(L"electro-vlasic\*(R" names (e.g. \f(CW\*(C`ev4\*(C'\fR) do not. +.IP "\fB\-mdebug\fR" 4 +.IX Item "-mdebug" +.PD 0 +.IP "\fB\-no\-mdebug\fR" 4 +.IX Item "-no-mdebug" +.PD +Enables or disables the generation of \f(CW\*(C`.mdebug\*(C'\fR encapsulation for +stabs directives and procedure descriptors. The default is to automatically +enable \f(CW\*(C`.mdebug\*(C'\fR when the first stabs directive is seen. +.IP "\fB\-relax\fR" 4 +.IX Item "-relax" +This option forces all relocations to be put into the object file, instead +of saving space and resolving some relocations at assembly time. Note that +this option does not propagate all symbol arithmetic into the object file, +because not all symbol arithmetic can be represented. However, the option +can still be useful in specific applications. +.IP "\fB\-replace\fR" 4 +.IX Item "-replace" +.PD 0 +.IP "\fB\-noreplace\fR" 4 +.IX Item "-noreplace" +.PD +Enables or disables the optimization of procedure calls, both at assemblage +and at link time. These options are only available for \s-1VMS\s0 targets and +\&\f(CW\*(C`\-replace\*(C'\fR is the default. See section 1.4.1 of the OpenVMS Linker +Utility Manual. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +This option is used when the compiler generates debug information. When +\&\fBgcc\fR is using \fBmips-tfile\fR to generate debug +information for \s-1ECOFF,\s0 local labels must be passed through to the object +file. Otherwise this option has no effect. +.IP "\fB\-G\fR\fIsize\fR" 4 +.IX Item "-Gsize" +A local common symbol larger than \fIsize\fR is placed in \f(CW\*(C`.bss\*(C'\fR, +while smaller symbols are placed in \f(CW\*(C`.sbss\*(C'\fR. +.IP "\fB\-F\fR" 4 +.IX Item "-F" +.PD 0 +.IP "\fB\-32addr\fR" 4 +.IX Item "-32addr" +.PD +These options are ignored for backward compatibility. +.PP +The following options are available when as is configured for +an \s-1ARC\s0 processor. +.IP "\fB\-marc[5|6|7|8]\fR" 4 +.IX Item "-marc[5|6|7|8]" +This option selects the core processor variant. +.IP "\fB\-EB | \-EL\fR" 4 +.IX Item "-EB | -EL" +Select either big-endian (\-EB) or little-endian (\-EL) output. +.PP +The following options are available when as is configured for the \s-1ARM\s0 +processor family. +.IP "\fB\-mcpu=\fR\fIprocessor\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4 +.IX Item "-mcpu=processor[+extension...]" +Specify which \s-1ARM\s0 processor variant is the target. +.IP "\fB\-march=\fR\fIarchitecture\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4 +.IX Item "-march=architecture[+extension...]" +Specify which \s-1ARM\s0 architecture variant is used by the target. +.IP "\fB\-mfpu=\fR\fIfloating-point-format\fR" 4 +.IX Item "-mfpu=floating-point-format" +Select which Floating Point architecture is the target. +.IP "\fB\-mfloat\-abi=\fR\fIabi\fR" 4 +.IX Item "-mfloat-abi=abi" +Select which floating point \s-1ABI\s0 is in use. +.IP "\fB\-mthumb\fR" 4 +.IX Item "-mthumb" +Enable Thumb only instruction decoding. +.IP "\fB\-mapcs\-32 | \-mapcs\-26 | \-mapcs\-float | \-mapcs\-reentrant\fR" 4 +.IX Item "-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant" +Select which procedure calling convention is in use. +.IP "\fB\-EB | \-EL\fR" 4 +.IX Item "-EB | -EL" +Select either big-endian (\-EB) or little-endian (\-EL) output. +.IP "\fB\-mthumb\-interwork\fR" 4 +.IX Item "-mthumb-interwork" +Specify that the code has been generated with interworking between Thumb and +\&\s-1ARM\s0 code in mind. +.IP "\fB\-mccs\fR" 4 +.IX Item "-mccs" +Turns on CodeComposer Studio assembly syntax compatibility mode. +.IP "\fB\-k\fR" 4 +.IX Item "-k" +Specify that \s-1PIC\s0 code has been generated. +.PP +The following options are available when as is configured for +the Blackfin processor family. +.IP "\fB\-mcpu=\fR\fIprocessor\fR[\fB\-\fR\fIsirevision\fR]" 4 +.IX Item "-mcpu=processor[-sirevision]" +This option specifies the target processor. The optional \fIsirevision\fR +is not used in assembler. It's here such that \s-1GCC\s0 can easily pass down its +\&\f(CW\*(C`\-mcpu=\*(C'\fR option. The assembler will issue an +error message if an attempt is made to assemble an instruction which +will not execute on the target processor. The following processor names are +recognized: +\&\f(CW\*(C`bf504\*(C'\fR, +\&\f(CW\*(C`bf506\*(C'\fR, +\&\f(CW\*(C`bf512\*(C'\fR, +\&\f(CW\*(C`bf514\*(C'\fR, +\&\f(CW\*(C`bf516\*(C'\fR, +\&\f(CW\*(C`bf518\*(C'\fR, +\&\f(CW\*(C`bf522\*(C'\fR, +\&\f(CW\*(C`bf523\*(C'\fR, +\&\f(CW\*(C`bf524\*(C'\fR, +\&\f(CW\*(C`bf525\*(C'\fR, +\&\f(CW\*(C`bf526\*(C'\fR, +\&\f(CW\*(C`bf527\*(C'\fR, +\&\f(CW\*(C`bf531\*(C'\fR, +\&\f(CW\*(C`bf532\*(C'\fR, +\&\f(CW\*(C`bf533\*(C'\fR, +\&\f(CW\*(C`bf534\*(C'\fR, +\&\f(CW\*(C`bf535\*(C'\fR (not implemented yet), +\&\f(CW\*(C`bf536\*(C'\fR, +\&\f(CW\*(C`bf537\*(C'\fR, +\&\f(CW\*(C`bf538\*(C'\fR, +\&\f(CW\*(C`bf539\*(C'\fR, +\&\f(CW\*(C`bf542\*(C'\fR, +\&\f(CW\*(C`bf542m\*(C'\fR, +\&\f(CW\*(C`bf544\*(C'\fR, +\&\f(CW\*(C`bf544m\*(C'\fR, +\&\f(CW\*(C`bf547\*(C'\fR, +\&\f(CW\*(C`bf547m\*(C'\fR, +\&\f(CW\*(C`bf548\*(C'\fR, +\&\f(CW\*(C`bf548m\*(C'\fR, +\&\f(CW\*(C`bf549\*(C'\fR, +\&\f(CW\*(C`bf549m\*(C'\fR, +\&\f(CW\*(C`bf561\*(C'\fR, +and +\&\f(CW\*(C`bf592\*(C'\fR. +.IP "\fB\-mfdpic\fR" 4 +.IX Item "-mfdpic" +Assemble for the \s-1FDPIC ABI.\s0 +.IP "\fB\-mno\-fdpic\fR" 4 +.IX Item "-mno-fdpic" +.PD 0 +.IP "\fB\-mnopic\fR" 4 +.IX Item "-mnopic" +.PD +Disable \-mfdpic. +.PP +See the info pages for documentation of the CRIS-specific options. +.PP +The following options are available when as is configured for +a D10V processor. +.IP "\fB\-O\fR" 4 +.IX Item "-O" +Optimize output by parallelizing instructions. +.PP +The following options are available when as is configured for a D30V +processor. +.IP "\fB\-O\fR" 4 +.IX Item "-O" +Optimize output by parallelizing instructions. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +Warn when nops are generated. +.IP "\fB\-N\fR" 4 +.IX Item "-N" +Warn when a nop after a 32\-bit multiply instruction is generated. +.PP +The following options are available when as is configured for +an Epiphany processor. +.IP "\fB\-mepiphany\fR" 4 +.IX Item "-mepiphany" +Specifies that the both 32 and 16 bit instructions are allowed. This is the +default behavior. +.IP "\fB\-mepiphany16\fR" 4 +.IX Item "-mepiphany16" +Restricts the permitted instructions to just the 16 bit set. +.PP +The following options are available when as is configured for an H8/300 +processor. +\&\f(CW@chapter\fR H8/300 Dependent Features +.SS "Options" +.IX Subsection "Options" +The Renesas H8/300 version of \f(CW\*(C`as\*(C'\fR has one +machine-dependent option: +.IP "\fB\-h\-tick\-hex\fR" 4 +.IX Item "-h-tick-hex" +Support H'00 style hex constants in addition to 0x00 style. +.PP +The following options are available when as is configured for +an i386 processor. +.IP "\fB\-\-32 | \-\-x32 | \-\-64\fR" 4 +.IX Item "--32 | --x32 | --64" +Select the word size, either 32 bits or 64 bits. \fB\-\-32\fR +implies Intel i386 architecture, while \fB\-\-x32\fR and \fB\-\-64\fR +imply \s-1AMD\s0 x86\-64 architecture with 32\-bit or 64\-bit word-size +respectively. +.Sp +These options are only available with the \s-1ELF\s0 object file format, and +require that the necessary \s-1BFD\s0 support has been included (on a 32\-bit +platform you have to add \-\-enable\-64\-bit\-bfd to configure enable 64\-bit +usage and use x86\-64 as target platform). +.IP "\fB\-n\fR" 4 +.IX Item "-n" +By default, x86 \s-1GAS\s0 replaces multiple nop instructions used for +alignment within code sections with multi-byte nop instructions such +as leal 0(%esi,1),%esi. This switch disables the optimization. +.IP "\fB\-\-divide\fR" 4 +.IX Item "--divide" +On SVR4\-derived platforms, the character \fB/\fR is treated as a comment +character, which means that it cannot be used in expressions. The +\&\fB\-\-divide\fR option turns \fB/\fR into a normal character. This does +not disable \fB/\fR at the beginning of a line starting a comment, or +affect using \fB#\fR for starting a comment. +.IP "\fB\-march=\fR\fI\s-1CPU\s0\fR\fB[+\fR\fI\s-1EXTENSION\s0\fR\fB...]\fR" 4 +.IX Item "-march=CPU[+EXTENSION...]" +This option specifies the target processor. The assembler will +issue an error message if an attempt is made to assemble an instruction +which will not execute on the target processor. The following +processor names are recognized: +\&\f(CW\*(C`i8086\*(C'\fR, +\&\f(CW\*(C`i186\*(C'\fR, +\&\f(CW\*(C`i286\*(C'\fR, +\&\f(CW\*(C`i386\*(C'\fR, +\&\f(CW\*(C`i486\*(C'\fR, +\&\f(CW\*(C`i586\*(C'\fR, +\&\f(CW\*(C`i686\*(C'\fR, +\&\f(CW\*(C`pentium\*(C'\fR, +\&\f(CW\*(C`pentiumpro\*(C'\fR, +\&\f(CW\*(C`pentiumii\*(C'\fR, +\&\f(CW\*(C`pentiumiii\*(C'\fR, +\&\f(CW\*(C`pentium4\*(C'\fR, +\&\f(CW\*(C`prescott\*(C'\fR, +\&\f(CW\*(C`nocona\*(C'\fR, +\&\f(CW\*(C`core\*(C'\fR, +\&\f(CW\*(C`core2\*(C'\fR, +\&\f(CW\*(C`corei7\*(C'\fR, +\&\f(CW\*(C`l1om\*(C'\fR, +\&\f(CW\*(C`k1om\*(C'\fR, +\&\f(CW\*(C`k6\*(C'\fR, +\&\f(CW\*(C`k6_2\*(C'\fR, +\&\f(CW\*(C`athlon\*(C'\fR, +\&\f(CW\*(C`opteron\*(C'\fR, +\&\f(CW\*(C`k8\*(C'\fR, +\&\f(CW\*(C`amdfam10\*(C'\fR, +\&\f(CW\*(C`bdver1\*(C'\fR, +\&\f(CW\*(C`bdver2\*(C'\fR, +\&\f(CW\*(C`bdver3\*(C'\fR, +\&\f(CW\*(C`bdver4\*(C'\fR, +\&\f(CW\*(C`btver1\*(C'\fR, +\&\f(CW\*(C`btver2\*(C'\fR, +\&\f(CW\*(C`generic32\*(C'\fR and +\&\f(CW\*(C`generic64\*(C'\fR. +.Sp +In addition to the basic instruction set, the assembler can be told to +accept various extension mnemonics. For example, +\&\f(CW\*(C`\-march=i686+sse4+vmx\*(C'\fR extends \fIi686\fR with \fIsse4\fR and +\&\fIvmx\fR. The following extensions are currently supported: +\&\f(CW8087\fR, +\&\f(CW287\fR, +\&\f(CW387\fR, +\&\f(CW\*(C`no87\*(C'\fR, +\&\f(CW\*(C`mmx\*(C'\fR, +\&\f(CW\*(C`nommx\*(C'\fR, +\&\f(CW\*(C`sse\*(C'\fR, +\&\f(CW\*(C`sse2\*(C'\fR, +\&\f(CW\*(C`sse3\*(C'\fR, +\&\f(CW\*(C`ssse3\*(C'\fR, +\&\f(CW\*(C`sse4.1\*(C'\fR, +\&\f(CW\*(C`sse4.2\*(C'\fR, +\&\f(CW\*(C`sse4\*(C'\fR, +\&\f(CW\*(C`nosse\*(C'\fR, +\&\f(CW\*(C`avx\*(C'\fR, +\&\f(CW\*(C`avx2\*(C'\fR, +\&\f(CW\*(C`adx\*(C'\fR, +\&\f(CW\*(C`rdseed\*(C'\fR, +\&\f(CW\*(C`prfchw\*(C'\fR, +\&\f(CW\*(C`smap\*(C'\fR, +\&\f(CW\*(C`mpx\*(C'\fR, +\&\f(CW\*(C`sha\*(C'\fR, +\&\f(CW\*(C`prefetchwt1\*(C'\fR, +\&\f(CW\*(C`clflushopt\*(C'\fR, +\&\f(CW\*(C`se1\*(C'\fR, +\&\f(CW\*(C`clwb\*(C'\fR, +\&\f(CW\*(C`pcommit\*(C'\fR, +\&\f(CW\*(C`avx512f\*(C'\fR, +\&\f(CW\*(C`avx512cd\*(C'\fR, +\&\f(CW\*(C`avx512er\*(C'\fR, +\&\f(CW\*(C`avx512pf\*(C'\fR, +\&\f(CW\*(C`avx512vl\*(C'\fR, +\&\f(CW\*(C`avx512bw\*(C'\fR, +\&\f(CW\*(C`avx512dq\*(C'\fR, +\&\f(CW\*(C`avx512ifma\*(C'\fR, +\&\f(CW\*(C`avx512vbmi\*(C'\fR, +\&\f(CW\*(C`noavx\*(C'\fR, +\&\f(CW\*(C`vmx\*(C'\fR, +\&\f(CW\*(C`vmfunc\*(C'\fR, +\&\f(CW\*(C`smx\*(C'\fR, +\&\f(CW\*(C`xsave\*(C'\fR, +\&\f(CW\*(C`xsaveopt\*(C'\fR, +\&\f(CW\*(C`xsavec\*(C'\fR, +\&\f(CW\*(C`xsaves\*(C'\fR, +\&\f(CW\*(C`aes\*(C'\fR, +\&\f(CW\*(C`pclmul\*(C'\fR, +\&\f(CW\*(C`fsgsbase\*(C'\fR, +\&\f(CW\*(C`rdrnd\*(C'\fR, +\&\f(CW\*(C`f16c\*(C'\fR, +\&\f(CW\*(C`bmi2\*(C'\fR, +\&\f(CW\*(C`fma\*(C'\fR, +\&\f(CW\*(C`movbe\*(C'\fR, +\&\f(CW\*(C`ept\*(C'\fR, +\&\f(CW\*(C`lzcnt\*(C'\fR, +\&\f(CW\*(C`hle\*(C'\fR, +\&\f(CW\*(C`rtm\*(C'\fR, +\&\f(CW\*(C`invpcid\*(C'\fR, +\&\f(CW\*(C`clflush\*(C'\fR, +\&\f(CW\*(C`lwp\*(C'\fR, +\&\f(CW\*(C`fma4\*(C'\fR, +\&\f(CW\*(C`xop\*(C'\fR, +\&\f(CW\*(C`cx16\*(C'\fR, +\&\f(CW\*(C`syscall\*(C'\fR, +\&\f(CW\*(C`rdtscp\*(C'\fR, +\&\f(CW\*(C`3dnow\*(C'\fR, +\&\f(CW\*(C`3dnowa\*(C'\fR, +\&\f(CW\*(C`sse4a\*(C'\fR, +\&\f(CW\*(C`sse5\*(C'\fR, +\&\f(CW\*(C`svme\*(C'\fR, +\&\f(CW\*(C`abm\*(C'\fR and +\&\f(CW\*(C`padlock\*(C'\fR. +Note that rather than extending a basic instruction set, the extension +mnemonics starting with \f(CW\*(C`no\*(C'\fR revoke the respective functionality. +.Sp +When the \f(CW\*(C`.arch\*(C'\fR directive is used with \fB\-march\fR, the +\&\f(CW\*(C`.arch\*(C'\fR directive will take precedent. +.IP "\fB\-mtune=\fR\fI\s-1CPU\s0\fR" 4 +.IX Item "-mtune=CPU" +This option specifies a processor to optimize for. When used in +conjunction with the \fB\-march\fR option, only instructions +of the processor specified by the \fB\-march\fR option will be +generated. +.Sp +Valid \fI\s-1CPU\s0\fR values are identical to the processor list of +\&\fB\-march=\fR\fI\s-1CPU\s0\fR. +.IP "\fB\-msse2avx\fR" 4 +.IX Item "-msse2avx" +This option specifies that the assembler should encode \s-1SSE\s0 instructions +with \s-1VEX\s0 prefix. +.IP "\fB\-msse\-check=\fR\fInone\fR" 4 +.IX Item "-msse-check=none" +.PD 0 +.IP "\fB\-msse\-check=\fR\fIwarning\fR" 4 +.IX Item "-msse-check=warning" +.IP "\fB\-msse\-check=\fR\fIerror\fR" 4 +.IX Item "-msse-check=error" +.PD +These options control if the assembler should check \s-1SSE\s0 instructions. +\&\fB\-msse\-check=\fR\fInone\fR will make the assembler not to check \s-1SSE\s0 +instructions, which is the default. \fB\-msse\-check=\fR\fIwarning\fR +will make the assembler issue a warning for any \s-1SSE\s0 instruction. +\&\fB\-msse\-check=\fR\fIerror\fR will make the assembler issue an error +for any \s-1SSE\s0 instruction. +.IP "\fB\-mavxscalar=\fR\fI128\fR" 4 +.IX Item "-mavxscalar=128" +.PD 0 +.IP "\fB\-mavxscalar=\fR\fI256\fR" 4 +.IX Item "-mavxscalar=256" +.PD +These options control how the assembler should encode scalar \s-1AVX\s0 +instructions. \fB\-mavxscalar=\fR\fI128\fR will encode scalar +\&\s-1AVX\s0 instructions with 128bit vector length, which is the default. +\&\fB\-mavxscalar=\fR\fI256\fR will encode scalar \s-1AVX\s0 instructions +with 256bit vector length. +.IP "\fB\-mevexlig=\fR\fI128\fR" 4 +.IX Item "-mevexlig=128" +.PD 0 +.IP "\fB\-mevexlig=\fR\fI256\fR" 4 +.IX Item "-mevexlig=256" +.IP "\fB\-mevexlig=\fR\fI512\fR" 4 +.IX Item "-mevexlig=512" +.PD +These options control how the assembler should encode length-ignored +(\s-1LIG\s0) \s-1EVEX\s0 instructions. \fB\-mevexlig=\fR\fI128\fR will encode \s-1LIG +EVEX\s0 instructions with 128bit vector length, which is the default. +\&\fB\-mevexlig=\fR\fI256\fR and \fB\-mevexlig=\fR\fI512\fR will +encode \s-1LIG EVEX\s0 instructions with 256bit and 512bit vector length, +respectively. +.IP "\fB\-mevexwig=\fR\fI0\fR" 4 +.IX Item "-mevexwig=0" +.PD 0 +.IP "\fB\-mevexwig=\fR\fI1\fR" 4 +.IX Item "-mevexwig=1" +.PD +These options control how the assembler should encode w\-ignored (\s-1WIG\s0) +\&\s-1EVEX\s0 instructions. \fB\-mevexwig=\fR\fI0\fR will encode \s-1WIG +EVEX\s0 instructions with evex.w = 0, which is the default. +\&\fB\-mevexwig=\fR\fI1\fR will encode \s-1WIG EVEX\s0 instructions with +evex.w = 1. +.IP "\fB\-mmnemonic=\fR\fIatt\fR" 4 +.IX Item "-mmnemonic=att" +.PD 0 +.IP "\fB\-mmnemonic=\fR\fIintel\fR" 4 +.IX Item "-mmnemonic=intel" +.PD +This option specifies instruction mnemonic for matching instructions. +The \f(CW\*(C`.att_mnemonic\*(C'\fR and \f(CW\*(C`.intel_mnemonic\*(C'\fR directives will +take precedent. +.IP "\fB\-msyntax=\fR\fIatt\fR" 4 +.IX Item "-msyntax=att" +.PD 0 +.IP "\fB\-msyntax=\fR\fIintel\fR" 4 +.IX Item "-msyntax=intel" +.PD +This option specifies instruction syntax when processing instructions. +The \f(CW\*(C`.att_syntax\*(C'\fR and \f(CW\*(C`.intel_syntax\*(C'\fR directives will +take precedent. +.IP "\fB\-mnaked\-reg\fR" 4 +.IX Item "-mnaked-reg" +This opetion specifies that registers don't require a \fB%\fR prefix. +The \f(CW\*(C`.att_syntax\*(C'\fR and \f(CW\*(C`.intel_syntax\*(C'\fR directives will take precedent. +.IP "\fB\-madd\-bnd\-prefix\fR" 4 +.IX Item "-madd-bnd-prefix" +This option forces the assembler to add \s-1BND\s0 prefix to all branches, even +if such prefix was not explicitly specified in the source code. +.IP "\fB\-mbig\-obj\fR" 4 +.IX Item "-mbig-obj" +On x86\-64 \s-1PE/COFF\s0 target this option forces the use of big object file +format, which allows more than 32768 sections. +.IP "\fB\-momit\-lock\-prefix=\fR\fIno\fR" 4 +.IX Item "-momit-lock-prefix=no" +.PD 0 +.IP "\fB\-momit\-lock\-prefix=\fR\fIyes\fR" 4 +.IX Item "-momit-lock-prefix=yes" +.PD +These options control how the assembler should encode lock prefix. +This option is intended as a workaround for processors, that fail on +lock prefix. This option can only be safely used with single-core, +single-thread computers +\&\fB\-momit\-lock\-prefix=\fR\fIyes\fR will omit all lock prefixes. +\&\fB\-momit\-lock\-prefix=\fR\fIno\fR will encode lock prefix as usual, +which is the default. +.IP "\fB\-mevexrcig=\fR\fIrne\fR" 4 +.IX Item "-mevexrcig=rne" +.PD 0 +.IP "\fB\-mevexrcig=\fR\fIrd\fR" 4 +.IX Item "-mevexrcig=rd" +.IP "\fB\-mevexrcig=\fR\fIru\fR" 4 +.IX Item "-mevexrcig=ru" +.IP "\fB\-mevexrcig=\fR\fIrz\fR" 4 +.IX Item "-mevexrcig=rz" +.PD +These options control how the assembler should encode SAE-only +\&\s-1EVEX\s0 instructions. \fB\-mevexrcig=\fR\fIrne\fR will encode \s-1RC\s0 bits +of \s-1EVEX\s0 instruction with 00, which is the default. +\&\fB\-mevexrcig=\fR\fIrd\fR, \fB\-mevexrcig=\fR\fIru\fR +and \fB\-mevexrcig=\fR\fIrz\fR will encode SAE-only \s-1EVEX\s0 instructions +with 01, 10 and 11 \s-1RC\s0 bits, respectively. +.PP +The following options are available when as is configured for the +Intel 80960 processor. +.IP "\fB\-ACA | \-ACA_A | \-ACB | \-ACC | \-AKA | \-AKB | \-AKC | \-AMC\fR" 4 +.IX Item "-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC" +Specify which variant of the 960 architecture is the target. +.IP "\fB\-b\fR" 4 +.IX Item "-b" +Add code to collect statistics about branches taken. +.IP "\fB\-no\-relax\fR" 4 +.IX Item "-no-relax" +Do not alter compare-and-branch instructions for long displacements; +error if necessary. +.PP +The following options are available when as is configured for the +Ubicom \s-1IP2K\s0 series. +.IP "\fB\-mip2022ext\fR" 4 +.IX Item "-mip2022ext" +Specifies that the extended \s-1IP2022\s0 instructions are allowed. +.IP "\fB\-mip2022\fR" 4 +.IX Item "-mip2022" +Restores the default behaviour, which restricts the permitted instructions to +just the basic \s-1IP2022\s0 ones. +.PP +The following options are available when as is configured for the +Renesas M32C and M16C processors. +.IP "\fB\-m32c\fR" 4 +.IX Item "-m32c" +Assemble M32C instructions. +.IP "\fB\-m16c\fR" 4 +.IX Item "-m16c" +Assemble M16C instructions (the default). +.IP "\fB\-relax\fR" 4 +.IX Item "-relax" +Enable support for link-time relaxations. +.IP "\fB\-h\-tick\-hex\fR" 4 +.IX Item "-h-tick-hex" +Support H'00 style hex constants in addition to 0x00 style. +.PP +The following options are available when as is configured for the +Renesas M32R (formerly Mitsubishi M32R) series. +.IP "\fB\-\-m32rx\fR" 4 +.IX Item "--m32rx" +Specify which processor in the M32R family is the target. The default +is normally the M32R, but this option changes it to the M32RX. +.IP "\fB\-\-warn\-explicit\-parallel\-conflicts or \-\-Wp\fR" 4 +.IX Item "--warn-explicit-parallel-conflicts or --Wp" +Produce warning messages when questionable parallel constructs are +encountered. +.IP "\fB\-\-no\-warn\-explicit\-parallel\-conflicts or \-\-Wnp\fR" 4 +.IX Item "--no-warn-explicit-parallel-conflicts or --Wnp" +Do not produce warning messages when questionable parallel constructs are +encountered. +.PP +The following options are available when as is configured for the +Motorola 68000 series. +.IP "\fB\-l\fR" 4 +.IX Item "-l" +Shorten references to undefined symbols, to one word instead of two. +.IP "\fB\-m68000 | \-m68008 | \-m68010 | \-m68020 | \-m68030\fR" 4 +.IX Item "-m68000 | -m68008 | -m68010 | -m68020 | -m68030" +.PD 0 +.IP "\fB| \-m68040 | \-m68060 | \-m68302 | \-m68331 | \-m68332\fR" 4 +.IX Item "| -m68040 | -m68060 | -m68302 | -m68331 | -m68332" +.IP "\fB| \-m68333 | \-m68340 | \-mcpu32 | \-m5200\fR" 4 +.IX Item "| -m68333 | -m68340 | -mcpu32 | -m5200" +.PD +Specify what processor in the 68000 family is the target. The default +is normally the 68020, but this can be changed at configuration time. +.IP "\fB\-m68881 | \-m68882 | \-mno\-68881 | \-mno\-68882\fR" 4 +.IX Item "-m68881 | -m68882 | -mno-68881 | -mno-68882" +The target machine does (or does not) have a floating-point coprocessor. +The default is to assume a coprocessor for 68020, 68030, and cpu32. Although +the basic 68000 is not compatible with the 68881, a combination of the +two can be specified, since it's possible to do emulation of the +coprocessor instructions with the main processor. +.IP "\fB\-m68851 | \-mno\-68851\fR" 4 +.IX Item "-m68851 | -mno-68851" +The target machine does (or does not) have a memory-management +unit coprocessor. The default is to assume an \s-1MMU\s0 for 68020 and up. +.PP +The following options are available when as is configured for an +Altera Nios \s-1II\s0 processor. +.IP "\fB\-relax\-section\fR" 4 +.IX Item "-relax-section" +Replace identified out-of-range branches with PC-relative \f(CW\*(C`jmp\*(C'\fR +sequences when possible. The generated code sequences are suitable +for use in position-independent code, but there is a practical limit +on the extended branch range because of the length of the sequences. +This option is the default. +.IP "\fB\-relax\-all\fR" 4 +.IX Item "-relax-all" +Replace branch instructions not determinable to be in range +and all call instructions with \f(CW\*(C`jmp\*(C'\fR and \f(CW\*(C`callr\*(C'\fR sequences +(respectively). This option generates absolute relocations against the +target symbols and is not appropriate for position-independent code. +.IP "\fB\-no\-relax\fR" 4 +.IX Item "-no-relax" +Do not replace any branches or calls. +.IP "\fB\-EB\fR" 4 +.IX Item "-EB" +Generate big-endian output. +.IP "\fB\-EL\fR" 4 +.IX Item "-EL" +Generate little-endian output. This is the default. +.PP +The following options are available when as is configured for a +Meta processor. +.ie n .IP """\-mcpu=metac11""" 4 +.el .IP "\f(CW\-mcpu=metac11\fR" 4 +.IX Item "-mcpu=metac11" +Generate code for Meta 1.1. +.ie n .IP """\-mcpu=metac12""" 4 +.el .IP "\f(CW\-mcpu=metac12\fR" 4 +.IX Item "-mcpu=metac12" +Generate code for Meta 1.2. +.ie n .IP """\-mcpu=metac21""" 4 +.el .IP "\f(CW\-mcpu=metac21\fR" 4 +.IX Item "-mcpu=metac21" +Generate code for Meta 2.1. +.ie n .IP """\-mfpu=metac21""" 4 +.el .IP "\f(CW\-mfpu=metac21\fR" 4 +.IX Item "-mfpu=metac21" +Allow code to use \s-1FPU\s0 hardware of Meta 2.1. +.PP +See the info pages for documentation of the MMIX-specific options. +.PP +The following options are available when as is configured for a +\&\s-1NDS32\s0 processor. +.ie n .IP """\-O1""" 4 +.el .IP "\f(CW\-O1\fR" 4 +.IX Item "-O1" +Optimize for performance. +.ie n .IP """\-Os""" 4 +.el .IP "\f(CW\-Os\fR" 4 +.IX Item "-Os" +Optimize for space. +.ie n .IP """\-EL""" 4 +.el .IP "\f(CW\-EL\fR" 4 +.IX Item "-EL" +Produce little endian data output. +.ie n .IP """\-EB""" 4 +.el .IP "\f(CW\-EB\fR" 4 +.IX Item "-EB" +Produce little endian data output. +.ie n .IP """\-mpic""" 4 +.el .IP "\f(CW\-mpic\fR" 4 +.IX Item "-mpic" +Generate \s-1PIC.\s0 +.ie n .IP """\-mno\-fp\-as\-gp\-relax""" 4 +.el .IP "\f(CW\-mno\-fp\-as\-gp\-relax\fR" 4 +.IX Item "-mno-fp-as-gp-relax" +Suppress fp-as-gp relaxation for this file. +.ie n .IP """\-mb2bb\-relax""" 4 +.el .IP "\f(CW\-mb2bb\-relax\fR" 4 +.IX Item "-mb2bb-relax" +Back-to-back branch optimization. +.ie n .IP """\-mno\-all\-relax""" 4 +.el .IP "\f(CW\-mno\-all\-relax\fR" 4 +.IX Item "-mno-all-relax" +Suppress all relaxation for this file. +.ie n .IP """\-march=""" 4 +.el .IP "\f(CW\-march=\fR" 4 +.IX Item "-march=" +Assemble for architecture which could be v3, v3j, v3m, v3f, +v3s, v2, v2j, v2f, v2s. +.ie n .IP """\-mbaseline=""" 4 +.el .IP "\f(CW\-mbaseline=\fR" 4 +.IX Item "-mbaseline=" +Assemble for baseline which could be v2, v3, v3m. +.ie n .IP """\-mfpu\-freg=\f(CIFREG\f(CW""" 4 +.el .IP "\f(CW\-mfpu\-freg=\f(CIFREG\f(CW\fR" 4 +.IX Item "-mfpu-freg=FREG" +Specify a \s-1FPU\s0 configuration. +.RS 4 +.ie n .IP """0 8 SP / 4 DP registers""" 4 +.el .IP "\f(CW0 8 SP / 4 DP registers\fR" 4 +.IX Item "0 8 SP / 4 DP registers" +.PD 0 +.ie n .IP """1 16 SP / 8 DP registers""" 4 +.el .IP "\f(CW1 16 SP / 8 DP registers\fR" 4 +.IX Item "1 16 SP / 8 DP registers" +.ie n .IP """2 32 SP / 16 DP registers""" 4 +.el .IP "\f(CW2 32 SP / 16 DP registers\fR" 4 +.IX Item "2 32 SP / 16 DP registers" +.ie n .IP """3 32 SP / 32 DP registers""" 4 +.el .IP "\f(CW3 32 SP / 32 DP registers\fR" 4 +.IX Item "3 32 SP / 32 DP registers" +.RE +.RS 4 +.RE +.ie n .IP """\-mabi=\f(CIabi\f(CW""" 4 +.el .IP "\f(CW\-mabi=\f(CIabi\f(CW\fR" 4 +.IX Item "-mabi=abi" +.PD +Specify a abi version could be v1, v2, v2fp, v2fpp. +.ie n .IP """\-m[no\-]mac""" 4 +.el .IP "\f(CW\-m[no\-]mac\fR" 4 +.IX Item "-m[no-]mac" +Enable/Disable Multiply instructions support. +.ie n .IP """\-m[no\-]div""" 4 +.el .IP "\f(CW\-m[no\-]div\fR" 4 +.IX Item "-m[no-]div" +Enable/Disable Divide instructions support. +.ie n .IP """\-m[no\-]16bit\-ext""" 4 +.el .IP "\f(CW\-m[no\-]16bit\-ext\fR" 4 +.IX Item "-m[no-]16bit-ext" +Enable/Disable 16\-bit extension +.ie n .IP """\-m[no\-]dx\-regs""" 4 +.el .IP "\f(CW\-m[no\-]dx\-regs\fR" 4 +.IX Item "-m[no-]dx-regs" +Enable/Disable d0/d1 registers +.ie n .IP """\-m[no\-]perf\-ext""" 4 +.el .IP "\f(CW\-m[no\-]perf\-ext\fR" 4 +.IX Item "-m[no-]perf-ext" +Enable/Disable Performance extension +.ie n .IP """\-m[no\-]perf2\-ext""" 4 +.el .IP "\f(CW\-m[no\-]perf2\-ext\fR" 4 +.IX Item "-m[no-]perf2-ext" +Enable/Disable Performance extension 2 +.ie n .IP """\-m[no\-]string\-ext""" 4 +.el .IP "\f(CW\-m[no\-]string\-ext\fR" 4 +.IX Item "-m[no-]string-ext" +Enable/Disable String extension +.ie n .IP """\-m[no\-]reduced\-regs""" 4 +.el .IP "\f(CW\-m[no\-]reduced\-regs\fR" 4 +.IX Item "-m[no-]reduced-regs" +Enable/Disable Reduced Register configuration (\s-1GPR16\s0) option +.ie n .IP """\-m[no\-]audio\-isa\-ext""" 4 +.el .IP "\f(CW\-m[no\-]audio\-isa\-ext\fR" 4 +.IX Item "-m[no-]audio-isa-ext" +Enable/Disable \s-1AUDIO ISA\s0 extension +.ie n .IP """\-m[no\-]fpu\-sp\-ext""" 4 +.el .IP "\f(CW\-m[no\-]fpu\-sp\-ext\fR" 4 +.IX Item "-m[no-]fpu-sp-ext" +Enable/Disable \s-1FPU SP\s0 extension +.ie n .IP """\-m[no\-]fpu\-dp\-ext""" 4 +.el .IP "\f(CW\-m[no\-]fpu\-dp\-ext\fR" 4 +.IX Item "-m[no-]fpu-dp-ext" +Enable/Disable \s-1FPU DP\s0 extension +.ie n .IP """\-m[no\-]fpu\-fma""" 4 +.el .IP "\f(CW\-m[no\-]fpu\-fma\fR" 4 +.IX Item "-m[no-]fpu-fma" +Enable/Disable \s-1FPU\s0 fused-multiply-add instructions +.ie n .IP """\-mall\-ext""" 4 +.el .IP "\f(CW\-mall\-ext\fR" 4 +.IX Item "-mall-ext" +Turn on all extensions and instructions support +.PP +The following options are available when as is configured for a +PowerPC processor. +.IP "\fB\-a32\fR" 4 +.IX Item "-a32" +Generate \s-1ELF32\s0 or \s-1XCOFF32.\s0 +.IP "\fB\-a64\fR" 4 +.IX Item "-a64" +Generate \s-1ELF64\s0 or \s-1XCOFF64.\s0 +.IP "\fB\-K \s-1PIC\s0\fR" 4 +.IX Item "-K PIC" +Set \s-1EF_PPC_RELOCATABLE_LIB\s0 in \s-1ELF\s0 flags. +.IP "\fB\-mpwrx | \-mpwr2\fR" 4 +.IX Item "-mpwrx | -mpwr2" +Generate code for \s-1POWER/2 \s0(\s-1RIOS2\s0). +.IP "\fB\-mpwr\fR" 4 +.IX Item "-mpwr" +Generate code for \s-1POWER \s0(\s-1RIOS1\s0) +.IP "\fB\-m601\fR" 4 +.IX Item "-m601" +Generate code for PowerPC 601. +.IP "\fB\-mppc, \-mppc32, \-m603, \-m604\fR" 4 +.IX Item "-mppc, -mppc32, -m603, -m604" +Generate code for PowerPC 603/604. +.IP "\fB\-m403, \-m405\fR" 4 +.IX Item "-m403, -m405" +Generate code for PowerPC 403/405. +.IP "\fB\-m440\fR" 4 +.IX Item "-m440" +Generate code for PowerPC 440. BookE and some 405 instructions. +.IP "\fB\-m464\fR" 4 +.IX Item "-m464" +Generate code for PowerPC 464. +.IP "\fB\-m476\fR" 4 +.IX Item "-m476" +Generate code for PowerPC 476. +.IP "\fB\-m7400, \-m7410, \-m7450, \-m7455\fR" 4 +.IX Item "-m7400, -m7410, -m7450, -m7455" +Generate code for PowerPC 7400/7410/7450/7455. +.IP "\fB\-m750cl\fR" 4 +.IX Item "-m750cl" +Generate code for PowerPC 750CL. +.IP "\fB\-mppc64, \-m620\fR" 4 +.IX Item "-mppc64, -m620" +Generate code for PowerPC 620/625/630. +.IP "\fB\-me500, \-me500x2\fR" 4 +.IX Item "-me500, -me500x2" +Generate code for Motorola e500 core complex. +.IP "\fB\-me500mc\fR" 4 +.IX Item "-me500mc" +Generate code for Freescale e500mc core complex. +.IP "\fB\-me500mc64\fR" 4 +.IX Item "-me500mc64" +Generate code for Freescale e500mc64 core complex. +.IP "\fB\-me5500\fR" 4 +.IX Item "-me5500" +Generate code for Freescale e5500 core complex. +.IP "\fB\-me6500\fR" 4 +.IX Item "-me6500" +Generate code for Freescale e6500 core complex. +.IP "\fB\-mspe\fR" 4 +.IX Item "-mspe" +Generate code for Motorola \s-1SPE\s0 instructions. +.IP "\fB\-mtitan\fR" 4 +.IX Item "-mtitan" +Generate code for AppliedMicro Titan core complex. +.IP "\fB\-mppc64bridge\fR" 4 +.IX Item "-mppc64bridge" +Generate code for PowerPC 64, including bridge insns. +.IP "\fB\-mbooke\fR" 4 +.IX Item "-mbooke" +Generate code for 32\-bit BookE. +.IP "\fB\-ma2\fR" 4 +.IX Item "-ma2" +Generate code for A2 architecture. +.IP "\fB\-me300\fR" 4 +.IX Item "-me300" +Generate code for PowerPC e300 family. +.IP "\fB\-maltivec\fR" 4 +.IX Item "-maltivec" +Generate code for processors with AltiVec instructions. +.IP "\fB\-mvle\fR" 4 +.IX Item "-mvle" +Generate code for Freescale PowerPC \s-1VLE\s0 instructions. +.IP "\fB\-mvsx\fR" 4 +.IX Item "-mvsx" +Generate code for processors with Vector-Scalar (\s-1VSX\s0) instructions. +.IP "\fB\-mhtm\fR" 4 +.IX Item "-mhtm" +Generate code for processors with Hardware Transactional Memory instructions. +.IP "\fB\-mpower4, \-mpwr4\fR" 4 +.IX Item "-mpower4, -mpwr4" +Generate code for Power4 architecture. +.IP "\fB\-mpower5, \-mpwr5, \-mpwr5x\fR" 4 +.IX Item "-mpower5, -mpwr5, -mpwr5x" +Generate code for Power5 architecture. +.IP "\fB\-mpower6, \-mpwr6\fR" 4 +.IX Item "-mpower6, -mpwr6" +Generate code for Power6 architecture. +.IP "\fB\-mpower7, \-mpwr7\fR" 4 +.IX Item "-mpower7, -mpwr7" +Generate code for Power7 architecture. +.IP "\fB\-mpower8, \-mpwr8\fR" 4 +.IX Item "-mpower8, -mpwr8" +Generate code for Power8 architecture. +.IP "\fB\-mcell\fR" 4 +.IX Item "-mcell" +.PD 0 +.IP "\fB\-mcell\fR" 4 +.IX Item "-mcell" +.PD +Generate code for Cell Broadband Engine architecture. +.IP "\fB\-mcom\fR" 4 +.IX Item "-mcom" +Generate code Power/PowerPC common instructions. +.IP "\fB\-many\fR" 4 +.IX Item "-many" +Generate code for any architecture (\s-1PWR/PWRX/PPC\s0). +.IP "\fB\-mregnames\fR" 4 +.IX Item "-mregnames" +Allow symbolic names for registers. +.IP "\fB\-mno\-regnames\fR" 4 +.IX Item "-mno-regnames" +Do not allow symbolic names for registers. +.IP "\fB\-mrelocatable\fR" 4 +.IX Item "-mrelocatable" +Support for \s-1GCC\s0's \-mrelocatable option. +.IP "\fB\-mrelocatable\-lib\fR" 4 +.IX Item "-mrelocatable-lib" +Support for \s-1GCC\s0's \-mrelocatable\-lib option. +.IP "\fB\-memb\fR" 4 +.IX Item "-memb" +Set \s-1PPC_EMB\s0 bit in \s-1ELF\s0 flags. +.IP "\fB\-mlittle, \-mlittle\-endian, \-le\fR" 4 +.IX Item "-mlittle, -mlittle-endian, -le" +Generate code for a little endian machine. +.IP "\fB\-mbig, \-mbig\-endian, \-be\fR" 4 +.IX Item "-mbig, -mbig-endian, -be" +Generate code for a big endian machine. +.IP "\fB\-msolaris\fR" 4 +.IX Item "-msolaris" +Generate code for Solaris. +.IP "\fB\-mno\-solaris\fR" 4 +.IX Item "-mno-solaris" +Do not generate code for Solaris. +.IP "\fB\-nops=\fR\fIcount\fR" 4 +.IX Item "-nops=count" +If an alignment directive inserts more than \fIcount\fR nops, put a +branch at the beginning to skip execution of the nops. +.PP +See the info pages for documentation of the RX-specific options. +.PP +The following options are available when as is configured for the s390 +processor family. +.IP "\fB\-m31\fR" 4 +.IX Item "-m31" +.PD 0 +.IP "\fB\-m64\fR" 4 +.IX Item "-m64" +.PD +Select the word size, either 31/32 bits or 64 bits. +.IP "\fB\-mesa\fR" 4 +.IX Item "-mesa" +.PD 0 +.IP "\fB\-mzarch\fR" 4 +.IX Item "-mzarch" +.PD +Select the architecture mode, either the Enterprise System +Architecture (esa) or the z/Architecture mode (zarch). +.IP "\fB\-march=\fR\fIprocessor\fR" 4 +.IX Item "-march=processor" +Specify which s390 processor variant is the target, \fBg6\fR, \fBg6\fR, +\&\fBz900\fR, \fBz990\fR, \fBz9\-109\fR, \fBz9\-ec\fR, \fBz10\fR, +\&\fBz196\fR, or \fBzEC12\fR. +.IP "\fB\-mregnames\fR" 4 +.IX Item "-mregnames" +.PD 0 +.IP "\fB\-mno\-regnames\fR" 4 +.IX Item "-mno-regnames" +.PD +Allow or disallow symbolic names for registers. +.IP "\fB\-mwarn\-areg\-zero\fR" 4 +.IX Item "-mwarn-areg-zero" +Warn whenever the operand for a base or index register has been specified +but evaluates to zero. +.PP +The following options are available when as is configured for a +\&\s-1TMS320C6000\s0 processor. +.IP "\fB\-march=\fR\fIarch\fR" 4 +.IX Item "-march=arch" +Enable (only) instructions from architecture \fIarch\fR. By default, +all instructions are permitted. +.Sp +The following values of \fIarch\fR are accepted: \f(CW\*(C`c62x\*(C'\fR, +\&\f(CW\*(C`c64x\*(C'\fR, \f(CW\*(C`c64x+\*(C'\fR, \f(CW\*(C`c67x\*(C'\fR, \f(CW\*(C`c67x+\*(C'\fR, \f(CW\*(C`c674x\*(C'\fR. +.IP "\fB\-mdsbt\fR" 4 +.IX Item "-mdsbt" +.PD 0 +.IP "\fB\-mno\-dsbt\fR" 4 +.IX Item "-mno-dsbt" +.PD +The \fB\-mdsbt\fR option causes the assembler to generate the +\&\f(CW\*(C`Tag_ABI_DSBT\*(C'\fR attribute with a value of 1, indicating that the +code is using \s-1DSBT\s0 addressing. The \fB\-mno\-dsbt\fR option, the +default, causes the tag to have a value of 0, indicating that the code +does not use \s-1DSBT\s0 addressing. The linker will emit a warning if +objects of different type (\s-1DSBT\s0 and non-DSBT) are linked together. +.IP "\fB\-mpid=no\fR" 4 +.IX Item "-mpid=no" +.PD 0 +.IP "\fB\-mpid=near\fR" 4 +.IX Item "-mpid=near" +.IP "\fB\-mpid=far\fR" 4 +.IX Item "-mpid=far" +.PD +The \fB\-mpid=\fR option causes the assembler to generate the +\&\f(CW\*(C`Tag_ABI_PID\*(C'\fR attribute with a value indicating the form of data +addressing used by the code. \fB\-mpid=no\fR, the default, +indicates position-dependent data addressing, \fB\-mpid=near\fR +indicates position-independent addressing with \s-1GOT\s0 accesses using near +\&\s-1DP\s0 addressing, and \fB\-mpid=far\fR indicates position-independent +addressing with \s-1GOT\s0 accesses using far \s-1DP\s0 addressing. The linker will +emit a warning if objects built with different settings of this option +are linked together. +.IP "\fB\-mpic\fR" 4 +.IX Item "-mpic" +.PD 0 +.IP "\fB\-mno\-pic\fR" 4 +.IX Item "-mno-pic" +.PD +The \fB\-mpic\fR option causes the assembler to generate the +\&\f(CW\*(C`Tag_ABI_PIC\*(C'\fR attribute with a value of 1, indicating that the +code is using position-independent code addressing, The +\&\f(CW\*(C`\-mno\-pic\*(C'\fR option, the default, causes the tag to have a value of +0, indicating position-dependent code addressing. The linker will +emit a warning if objects of different type (position-dependent and +position-independent) are linked together. +.IP "\fB\-mbig\-endian\fR" 4 +.IX Item "-mbig-endian" +.PD 0 +.IP "\fB\-mlittle\-endian\fR" 4 +.IX Item "-mlittle-endian" +.PD +Generate code for the specified endianness. The default is +little-endian. +.PP +The following options are available when as is configured for a TILE-Gx +processor. +.IP "\fB\-m32 | \-m64\fR" 4 +.IX Item "-m32 | -m64" +Select the word size, either 32 bits or 64 bits. +.IP "\fB\-EB | \-EL\fR" 4 +.IX Item "-EB | -EL" +Select the endianness, either big-endian (\-EB) or little-endian (\-EL). +.PP +The following options are available when as is configured for an +Xtensa processor. +.IP "\fB\-\-text\-section\-literals | \-\-no\-text\-section\-literals\fR" 4 +.IX Item "--text-section-literals | --no-text-section-literals" +Control the treatment of literal pools. The default is +\&\fB\-\-no\-text\-section\-literals\fR, which places literals in +separate sections in the output file. This allows the literal pool to be +placed in a data \s-1RAM/ROM. \s0 With \fB\-\-text\-section\-literals\fR, the +literals are interspersed in the text section in order to keep them as +close as possible to their references. This may be necessary for large +assembly files, where the literals would otherwise be out of range of the +\&\f(CW\*(C`L32R\*(C'\fR instructions in the text section. These options only affect +literals referenced via PC-relative \f(CW\*(C`L32R\*(C'\fR instructions; literals +for absolute mode \f(CW\*(C`L32R\*(C'\fR instructions are handled separately. +.IP "\fB\-\-absolute\-literals | \-\-no\-absolute\-literals\fR" 4 +.IX Item "--absolute-literals | --no-absolute-literals" +Indicate to the assembler whether \f(CW\*(C`L32R\*(C'\fR instructions use absolute +or PC-relative addressing. If the processor includes the absolute +addressing option, the default is to use absolute \f(CW\*(C`L32R\*(C'\fR +relocations. Otherwise, only the PC-relative \f(CW\*(C`L32R\*(C'\fR relocations +can be used. +.IP "\fB\-\-target\-align | \-\-no\-target\-align\fR" 4 +.IX Item "--target-align | --no-target-align" +Enable or disable automatic alignment to reduce branch penalties at some +expense in code size. This optimization is enabled by default. Note +that the assembler will always align instructions like \f(CW\*(C`LOOP\*(C'\fR that +have fixed alignment requirements. +.IP "\fB\-\-longcalls | \-\-no\-longcalls\fR" 4 +.IX Item "--longcalls | --no-longcalls" +Enable or disable transformation of call instructions to allow calls +across a greater range of addresses. This option should be used when call +targets can potentially be out of range. It may degrade both code size +and performance, but the linker can generally optimize away the +unnecessary overhead when a call ends up within range. The default is +\&\fB\-\-no\-longcalls\fR. +.IP "\fB\-\-transform | \-\-no\-transform\fR" 4 +.IX Item "--transform | --no-transform" +Enable or disable all assembler transformations of Xtensa instructions, +including both relaxation and optimization. The default is +\&\fB\-\-transform\fR; \fB\-\-no\-transform\fR should only be used in the +rare cases when the instructions must be exactly as specified in the +assembly source. Using \fB\-\-no\-transform\fR causes out of range +instruction operands to be errors. +.IP "\fB\-\-rename\-section\fR \fIoldname\fR\fB=\fR\fInewname\fR" 4 +.IX Item "--rename-section oldname=newname" +Rename the \fIoldname\fR section to \fInewname\fR. This option can be used +multiple times to rename multiple sections. +.IP "\fB\-\-trampolines | \-\-no\-trampolines\fR" 4 +.IX Item "--trampolines | --no-trampolines" +Enable or disable transformation of jump instructions to allow jumps +across a greater range of addresses. This option should be used when jump targets can +potentially be out of range. In the absence of such jumps this option +does not affect code size or performance. The default is +\&\fB\-\-trampolines\fR. +.PP +The following options are available when as is configured for +a Z80 family processor. +.IP "\fB\-z80\fR" 4 +.IX Item "-z80" +Assemble for Z80 processor. +.IP "\fB\-r800\fR" 4 +.IX Item "-r800" +Assemble for R800 processor. +.IP "\fB\-ignore\-undocumented\-instructions\fR" 4 +.IX Item "-ignore-undocumented-instructions" +.PD 0 +.IP "\fB\-Wnud\fR" 4 +.IX Item "-Wnud" +.PD +Assemble undocumented Z80 instructions that also work on R800 without warning. +.IP "\fB\-ignore\-unportable\-instructions\fR" 4 +.IX Item "-ignore-unportable-instructions" +.PD 0 +.IP "\fB\-Wnup\fR" 4 +.IX Item "-Wnup" +.PD +Assemble all undocumented Z80 instructions without warning. +.IP "\fB\-warn\-undocumented\-instructions\fR" 4 +.IX Item "-warn-undocumented-instructions" +.PD 0 +.IP "\fB\-Wud\fR" 4 +.IX Item "-Wud" +.PD +Issue a warning for undocumented Z80 instructions that also work on R800. +.IP "\fB\-warn\-unportable\-instructions\fR" 4 +.IX Item "-warn-unportable-instructions" +.PD 0 +.IP "\fB\-Wup\fR" 4 +.IX Item "-Wup" +.PD +Issue a warning for undocumented Z80 instructions that do not work on R800. +.IP "\fB\-forbid\-undocumented\-instructions\fR" 4 +.IX Item "-forbid-undocumented-instructions" +.PD 0 +.IP "\fB\-Fud\fR" 4 +.IX Item "-Fud" +.PD +Treat all undocumented instructions as errors. +.IP "\fB\-forbid\-unportable\-instructions\fR" 4 +.IX Item "-forbid-unportable-instructions" +.PD 0 +.IP "\fB\-Fup\fR" 4 +.IX Item "-Fup" +.PD +Treat undocumented Z80 instructions that do not work on R800 as errors. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIgcc\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIbinutils\fR and \fIld\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/gas/doc/as.info b/gas/doc/as.info new file mode 100644 index 00000000000..f131bfe5a5e --- /dev/null +++ b/gas/doc/as.info @@ -0,0 +1,26762 @@ +This is as.info, produced by makeinfo version 4.8 from as.texinfo. + +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* As: (as). The GNU assembler. +* Gas: (as). The GNU assembler. +END-INFO-DIR-ENTRY + + This file documents the GNU Assembler "as". + + Copyright (C) 1991-2014 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled "GNU +Free Documentation License". + + +File: as.info, Node: Top, Next: Overview, Up: (dir) + +Using as +******** + +This file is a user guide to the GNU assembler `as' (GNU Binutils) +version 2.25. + + This document is distributed under the terms of the GNU Free +Documentation License. A copy of the license is included in the +section entitled "GNU Free Documentation License". + +* Menu: + +* Overview:: Overview +* Invoking:: Command-Line Options +* Syntax:: Syntax +* Sections:: Sections and Relocation +* Symbols:: Symbols +* Expressions:: Expressions +* Pseudo Ops:: Assembler Directives + +* Object Attributes:: Object Attributes +* Machine Dependencies:: Machine Dependent Features +* Reporting Bugs:: Reporting Bugs +* Acknowledgements:: Who Did What +* GNU Free Documentation License:: GNU Free Documentation License +* AS Index:: AS Index + + +File: as.info, Node: Overview, Next: Invoking, Prev: Top, Up: Top + +1 Overview +********** + +Here is a brief summary of how to invoke `as'. For details, see *Note +Command-Line Options: Invoking. + + as [-a[cdghlns][=FILE]] [-alternate] [-D] + [-compress-debug-sections] [-nocompress-debug-sections] + [-debug-prefix-map OLD=NEW] + [-defsym SYM=VAL] [-f] [-g] [-gstabs] + [-gstabs+] [-gdwarf-2] [-gdwarf-sections] + [-help] [-I DIR] [-J] + [-K] [-L] [-listing-lhs-width=NUM] + [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM] + [-listing-cont-lines=NUM] [-keep-locals] [-o + OBJFILE] [-R] [-reduce-memory-overheads] [-statistics] + [-v] [-version] [-version] [-W] [-warn] + [-fatal-warnings] [-w] [-x] [-Z] [@FILE] + [-size-check=[error|warning]] + [-target-help] [TARGET-OPTIONS] + [-|FILES ...] + + _Target AArch64 options:_ + [-EB|-EL] + [-mabi=ABI] + + _Target Alpha options:_ + [-mCPU] + [-mdebug | -no-mdebug] + [-replace | -noreplace] + [-relax] [-g] [-GSIZE] + [-F] [-32addr] + + _Target ARC options:_ + [-marc[5|6|7|8]] + [-EB|-EL] + + _Target ARM options:_ + [-mcpu=PROCESSOR[+EXTENSION...]] + [-march=ARCHITECTURE[+EXTENSION...]] + [-mfpu=FLOATING-POINT-FORMAT] + [-mfloat-abi=ABI] + [-meabi=VER] + [-mthumb] + [-EB|-EL] + [-mapcs-32|-mapcs-26|-mapcs-float| + -mapcs-reentrant] + [-mthumb-interwork] [-k] + + _Target Blackfin options:_ + [-mcpu=PROCESSOR[-SIREVISION]] + [-mfdpic] + [-mno-fdpic] + [-mnopic] + + _Target CRIS options:_ + [-underscore | -no-underscore] + [-pic] [-N] + [-emulation=criself | -emulation=crisaout] + [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32] + + _Target D10V options:_ + [-O] + + _Target D30V options:_ + [-O|-n|-N] + + _Target EPIPHANY options:_ + [-mepiphany|-mepiphany16] + + _Target H8/300 options:_ + [-h-tick-hex] + + _Target i386 options:_ + [-32|-x32|-64] [-n] + [-march=CPU[+EXTENSION...]] [-mtune=CPU] + + _Target i960 options:_ + [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB| + -AKC|-AMC] + [-b] [-no-relax] + + _Target IA-64 options:_ + [-mconstant-gp|-mauto-pic] + [-milp32|-milp64|-mlp64|-mp64] + [-mle|mbe] + [-mtune=itanium1|-mtune=itanium2] + [-munwind-check=warning|-munwind-check=error] + [-mhint.b=ok|-mhint.b=warning|-mhint.b=error] + [-x|-xexplicit] [-xauto] [-xdebug] + + _Target IP2K options:_ + [-mip2022|-mip2022ext] + + _Target M32C options:_ + [-m32c|-m16c] [-relax] [-h-tick-hex] + + _Target M32R options:_ + [-m32rx|-[no-]warn-explicit-parallel-conflicts| + -W[n]p] + + _Target M680X0 options:_ + [-l] [-m68000|-m68010|-m68020|...] + + _Target M68HC11 options:_ + [-m68hc11|-m68hc12|-m68hcs12|-mm9s12x|-mm9s12xg] + [-mshort|-mlong] + [-mshort-double|-mlong-double] + [-force-long-branches] [-short-branches] + [-strict-direct-mode] [-print-insn-syntax] + [-print-opcodes] [-generate-example] + + _Target MCORE options:_ + [-jsri2bsr] [-sifilter] [-relax] + [-mcpu=[210|340]] + + _Target Meta options:_ + [-mcpu=CPU] [-mfpu=CPU] [-mdsp=CPU] + _Target MICROBLAZE options:_ + + _Target MIPS options:_ + [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]] + [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared] + [-non_shared] [-xgot [-mvxworks-pic] + [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32] + [-mfp64] [-mgp64] [-mfpxx] + [-modd-spreg] [-mno-odd-spreg] + [-march=CPU] [-mtune=CPU] [-mips1] [-mips2] + [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2] + [-mips32r3] [-mips32r5] [-mips32r6] [-mips64] [-mips64r2] + [-mips64r3] [-mips64r5] [-mips64r6] + [-construct-floats] [-no-construct-floats] + [-mnan=ENCODING] + [-trap] [-no-break] [-break] [-no-trap] + [-mips16] [-no-mips16] + [-mmicromips] [-mno-micromips] + [-msmartmips] [-mno-smartmips] + [-mips3d] [-no-mips3d] + [-mdmx] [-no-mdmx] + [-mdsp] [-mno-dsp] + [-mdspr2] [-mno-dspr2] + [-mmsa] [-mno-msa] + [-mxpa] [-mno-xpa] + [-mmt] [-mno-mt] + [-mmcu] [-mno-mcu] + [-minsn32] [-mno-insn32] + [-mfix7000] [-mno-fix7000] + [-mfix-rm7000] [-mno-fix-rm7000] + [-mfix-vr4120] [-mno-fix-vr4120] + [-mfix-vr4130] [-mno-fix-vr4130] + [-mdebug] [-no-mdebug] + [-mpdr] [-mno-pdr] + + _Target MMIX options:_ + [-fixed-special-register-names] [-globalize-symbols] + [-gnu-syntax] [-relax] [-no-predefined-symbols] + [-no-expand] [-no-merge-gregs] [-x] + [-linker-allocated-gregs] + + _Target Nios II options:_ + [-relax-all] [-relax-section] [-no-relax] + [-EB] [-EL] + + _Target NDS32 options:_ + [-EL] [-EB] [-O] [-Os] [-mcpu=CPU] + [-misa=ISA] [-mabi=ABI] [-mall-ext] + [-m[no-]16-bit] [-m[no-]perf-ext] [-m[no-]perf2-ext] + [-m[no-]string-ext] [-m[no-]dsp-ext] [-m[no-]mac] [-m[no-]div] + [-m[no-]audio-isa-ext] [-m[no-]fpu-sp-ext] [-m[no-]fpu-dp-ext] + [-m[no-]fpu-fma] [-mfpu-freg=FREG] [-mreduced-regs] + [-mfull-regs] [-m[no-]dx-regs] [-mpic] [-mno-relax] + [-mb2bb] + + _Target PDP11 options:_ + [-mpic|-mno-pic] [-mall] [-mno-extensions] + [-mEXTENSION|-mno-EXTENSION] + [-mCPU] [-mMACHINE] + + _Target picoJava options:_ + [-mb|-me] + + _Target PowerPC options:_ + [-a32|-a64] + [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|-m403|-m405| + -m440|-m464|-m476|-m7400|-m7410|-m7450|-m7455|-m750cl|-mppc64| + -m620|-me500|-e500x2|-me500mc|-me500mc64|-me5500|-me6500|-mppc64bridge| + -mbooke|-mpower4|-mpwr4|-mpower5|-mpwr5|-mpwr5x|-mpower6|-mpwr6| + -mpower7|-mpwr7|-mpower8|-mpwr8|-ma2|-mcell|-mspe|-mtitan|-me300|-mcom] + [-many] [-maltivec|-mvsx|-mhtm|-mvle] + [-mregnames|-mno-regnames] + [-mrelocatable|-mrelocatable-lib|-K PIC] [-memb] + [-mlittle|-mlittle-endian|-le|-mbig|-mbig-endian|-be] + [-msolaris|-mno-solaris] + [-nops=COUNT] + + _Target RL78 options:_ + [-mg10] + [-m32bit-doubles|-m64bit-doubles] + + _Target RX options:_ + [-mlittle-endian|-mbig-endian] + [-m32bit-doubles|-m64bit-doubles] + [-muse-conventional-section-names] + [-msmall-data-limit] + [-mpid] + [-mrelax] + [-mint-register=NUMBER] + [-mgcc-abi|-mrx-abi] + + _Target s390 options:_ + [-m31|-m64] [-mesa|-mzarch] [-march=CPU] + [-mregnames|-mno-regnames] + [-mwarn-areg-zero] + + _Target SCORE options:_ + [-EB][-EL][-FIXDD][-NWARN] + [-SCORE5][-SCORE5U][-SCORE7][-SCORE3] + [-march=score7][-march=score3] + [-USE_R1][-KPIC][-O0][-G NUM][-V] + + _Target SPARC options:_ + [-Av6|-Av7|-Av8|-Asparclet|-Asparclite + -Av8plus|-Av8plusa|-Av9|-Av9a] + [-xarch=v8plus|-xarch=v8plusa] [-bump] + [-32|-64] + + _Target TIC54X options:_ + [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf] + [-merrors-to-file |-me ] + + + _Target TIC6X options:_ + [-march=ARCH] [-mbig-endian|-mlittle-endian] + [-mdsbt|-mno-dsbt] [-mpid=no|-mpid=near|-mpid=far] + [-mpic|-mno-pic] + + _Target TILE-Gx options:_ + [-m32|-m64][-EB][-EL] + + + _Target Xtensa options:_ + [-[no-]text-section-literals] [-[no-]absolute-literals] + [-[no-]target-align] [-[no-]longcalls] + [-[no-]transform] + [-rename-section OLDNAME=NEWNAME] + [-[no-]trampolines] + + + _Target Z80 options:_ + [-z80] [-r800] + [ -ignore-undocumented-instructions] [-Wnud] + [ -ignore-unportable-instructions] [-Wnup] + [ -warn-undocumented-instructions] [-Wud] + [ -warn-unportable-instructions] [-Wup] + [ -forbid-undocumented-instructions] [-Fud] + [ -forbid-unportable-instructions] [-Fup] + +`@FILE' + Read command-line options from FILE. The options read are + inserted in place of the original @FILE option. If FILE does not + exist, or cannot be read, then the option will be treated + literally, and not removed. + + Options in FILE are separated by whitespace. A whitespace + character may be included in an option by surrounding the entire + option in either single or double quotes. Any character + (including a backslash) may be included by prefixing the character + to be included with a backslash. The FILE may itself contain + additional @FILE options; any such options will be processed + recursively. + +`-a[cdghlmns]' + Turn on listings, in any of a variety of ways: + + `-ac' + omit false conditionals + + `-ad' + omit debugging directives + + `-ag' + include general information, like as version and options + passed + + `-ah' + include high-level source + + `-al' + include assembly + + `-am' + include macro expansions + + `-an' + omit forms processing + + `-as' + include symbols + + `=file' + set the name of the listing file + + You may combine these options; for example, use `-aln' for assembly + listing without forms processing. The `=file' option, if used, + must be the last one. By itself, `-a' defaults to `-ahls'. + +`--alternate' + Begin in alternate macro mode. *Note `.altmacro': Altmacro. + +`--compress-debug-sections' + Compress DWARF debug sections using zlib. The debug sections are + renamed to begin with `.zdebug', and the resulting object file may + not be compatible with older linkers and object file utilities. + +`--nocompress-debug-sections' + Do not compress DWARF debug sections. This is the default. + +`-D' + Ignored. This option is accepted for script compatibility with + calls to other assemblers. + +`--debug-prefix-map OLD=NEW' + When assembling files in directory `OLD', record debugging + information describing them as in `NEW' instead. + +`--defsym SYM=VALUE' + Define the symbol SYM to be VALUE before assembling the input file. + VALUE must be an integer constant. As in C, a leading `0x' + indicates a hexadecimal value, and a leading `0' indicates an octal + value. The value of the symbol can be overridden inside a source + file via the use of a `.set' pseudo-op. + +`-f' + "fast"--skip whitespace and comment preprocessing (assume source is + compiler output). + +`-g' +`--gen-debug' + Generate debugging information for each assembler source line + using whichever debug format is preferred by the target. This + currently means either STABS, ECOFF or DWARF2. + +`--gstabs' + Generate stabs debugging information for each assembler line. This + may help debugging assembler code, if the debugger can handle it. + +`--gstabs+' + Generate stabs debugging information for each assembler line, with + GNU extensions that probably only gdb can handle, and that could + make other debuggers crash or refuse to read your program. This + may help debugging assembler code. Currently the only GNU + extension is the location of the current working directory at + assembling time. + +`--gdwarf-2' + Generate DWARF2 debugging information for each assembler line. + This may help debugging assembler code, if the debugger can handle + it. Note--this option is only supported by some targets, not all + of them. + +`--gdwarf-sections' + Instead of creating a .debug_line section, create a series of + .debug_line.FOO sections where FOO is the name of the + corresponding code section. For example a code section called + .TEXT.FUNC will have its dwarf line number information placed into + a section called .DEBUG_LINE.TEXT.FUNC. If the code section is + just called .TEXT then debug line section will still be called + just .DEBUG_LINE without any suffix. + +`--size-check=error' +`--size-check=warning' + Issue an error or warning for invalid ELF .size directive. + +`--help' + Print a summary of the command line options and exit. + +`--target-help' + Print a summary of all target specific options and exit. + +`-I DIR' + Add directory DIR to the search list for `.include' directives. + +`-J' + Don't warn about signed overflow. + +`-K' + Issue warnings when difference tables altered for long + displacements. + +`-L' +`--keep-locals' + Keep (in the symbol table) local symbols. These symbols start with + system-specific local label prefixes, typically `.L' for ELF + systems or `L' for traditional a.out systems. *Note Symbol + Names::. + +`--listing-lhs-width=NUMBER' + Set the maximum width, in words, of the output data column for an + assembler listing to NUMBER. + +`--listing-lhs-width2=NUMBER' + Set the maximum width, in words, of the output data column for + continuation lines in an assembler listing to NUMBER. + +`--listing-rhs-width=NUMBER' + Set the maximum width of an input source line, as displayed in a + listing, to NUMBER bytes. + +`--listing-cont-lines=NUMBER' + Set the maximum number of lines printed in a listing for a single + line of input to NUMBER + 1. + +`-o OBJFILE' + Name the object-file output from `as' OBJFILE. + +`-R' + Fold the data section into the text section. + + Set the default size of GAS's hash tables to a prime number close + to NUMBER. Increasing this value can reduce the length of time it + takes the assembler to perform its tasks, at the expense of + increasing the assembler's memory requirements. Similarly + reducing this value can reduce the memory requirements at the + expense of speed. + +`--reduce-memory-overheads' + This option reduces GAS's memory requirements, at the expense of + making the assembly processes slower. Currently this switch is a + synonym for `--hash-size=4051', but in the future it may have + other effects as well. + +`--statistics' + Print the maximum space (in bytes) and total time (in seconds) + used by assembly. + +`--strip-local-absolute' + Remove local absolute symbols from the outgoing symbol table. + +`-v' +`-version' + Print the `as' version. + +`--version' + Print the `as' version and exit. + +`-W' +`--no-warn' + Suppress warning messages. + +`--fatal-warnings' + Treat warnings as errors. + +`--warn' + Don't suppress warning messages or treat them as errors. + +`-w' + Ignored. + +`-x' + Ignored. + +`-Z' + Generate an object file even after errors. + +`-- | FILES ...' + Standard input, or source files to assemble. + + + *Note AArch64 Options::, for the options available when as is +configured for the 64-bit mode of the ARM Architecture (AArch64). + + *Note Alpha Options::, for the options available when as is +configured for an Alpha processor. + + The following options are available when as is configured for an ARC +processor. + +`-marc[5|6|7|8]' + This option selects the core processor variant. + +`-EB | -EL' + Select either big-endian (-EB) or little-endian (-EL) output. + + The following options are available when as is configured for the ARM +processor family. + +`-mcpu=PROCESSOR[+EXTENSION...]' + Specify which ARM processor variant is the target. + +`-march=ARCHITECTURE[+EXTENSION...]' + Specify which ARM architecture variant is used by the target. + +`-mfpu=FLOATING-POINT-FORMAT' + Select which Floating Point architecture is the target. + +`-mfloat-abi=ABI' + Select which floating point ABI is in use. + +`-mthumb' + Enable Thumb only instruction decoding. + +`-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant' + Select which procedure calling convention is in use. + +`-EB | -EL' + Select either big-endian (-EB) or little-endian (-EL) output. + +`-mthumb-interwork' + Specify that the code has been generated with interworking between + Thumb and ARM code in mind. + +`-mccs' + Turns on CodeComposer Studio assembly syntax compatibility mode. + +`-k' + Specify that PIC code has been generated. + + *Note Blackfin Options::, for the options available when as is +configured for the Blackfin processor family. + + See the info pages for documentation of the CRIS-specific options. + + The following options are available when as is configured for a D10V +processor. +`-O' + Optimize output by parallelizing instructions. + + The following options are available when as is configured for a D30V +processor. +`-O' + Optimize output by parallelizing instructions. + +`-n' + Warn when nops are generated. + +`-N' + Warn when a nop after a 32-bit multiply instruction is generated. + + The following options are available when as is configured for the +Adapteva EPIPHANY series. + + *Note Epiphany Options::, for the options available when as is +configured for an Epiphany processor. + + *Note i386-Options::, for the options available when as is +configured for an i386 processor. + + The following options are available when as is configured for the +Intel 80960 processor. + +`-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC' + Specify which variant of the 960 architecture is the target. + +`-b' + Add code to collect statistics about branches taken. + +`-no-relax' + Do not alter compare-and-branch instructions for long + displacements; error if necessary. + + + The following options are available when as is configured for the +Ubicom IP2K series. + +`-mip2022ext' + Specifies that the extended IP2022 instructions are allowed. + +`-mip2022' + Restores the default behaviour, which restricts the permitted + instructions to just the basic IP2022 ones. + + + The following options are available when as is configured for the +Renesas M32C and M16C processors. + +`-m32c' + Assemble M32C instructions. + +`-m16c' + Assemble M16C instructions (the default). + +`-relax' + Enable support for link-time relaxations. + +`-h-tick-hex' + Support H'00 style hex constants in addition to 0x00 style. + + + The following options are available when as is configured for the +Renesas M32R (formerly Mitsubishi M32R) series. + +`--m32rx' + Specify which processor in the M32R family is the target. The + default is normally the M32R, but this option changes it to the + M32RX. + +`--warn-explicit-parallel-conflicts or --Wp' + Produce warning messages when questionable parallel constructs are + encountered. + +`--no-warn-explicit-parallel-conflicts or --Wnp' + Do not produce warning messages when questionable parallel + constructs are encountered. + + + The following options are available when as is configured for the +Motorola 68000 series. + +`-l' + Shorten references to undefined symbols, to one word instead of + two. + +`-m68000 | -m68008 | -m68010 | -m68020 | -m68030' +`| -m68040 | -m68060 | -m68302 | -m68331 | -m68332' +`| -m68333 | -m68340 | -mcpu32 | -m5200' + Specify what processor in the 68000 family is the target. The + default is normally the 68020, but this can be changed at + configuration time. + +`-m68881 | -m68882 | -mno-68881 | -mno-68882' + The target machine does (or does not) have a floating-point + coprocessor. The default is to assume a coprocessor for 68020, + 68030, and cpu32. Although the basic 68000 is not compatible with + the 68881, a combination of the two can be specified, since it's + possible to do emulation of the coprocessor instructions with the + main processor. + +`-m68851 | -mno-68851' + The target machine does (or does not) have a memory-management + unit coprocessor. The default is to assume an MMU for 68020 and + up. + + + *Note Nios II Options::, for the options available when as is +configured for an Altera Nios II processor. + + For details about the PDP-11 machine dependent features options, see +*Note PDP-11-Options::. + +`-mpic | -mno-pic' + Generate position-independent (or position-dependent) code. The + default is `-mpic'. + +`-mall' +`-mall-extensions' + Enable all instruction set extensions. This is the default. + +`-mno-extensions' + Disable all instruction set extensions. + +`-mEXTENSION | -mno-EXTENSION' + Enable (or disable) a particular instruction set extension. + +`-mCPU' + Enable the instruction set extensions supported by a particular + CPU, and disable all other extensions. + +`-mMACHINE' + Enable the instruction set extensions supported by a particular + machine model, and disable all other extensions. + + The following options are available when as is configured for a +picoJava processor. + +`-mb' + Generate "big endian" format output. + +`-ml' + Generate "little endian" format output. + + + The following options are available when as is configured for the +Motorola 68HC11 or 68HC12 series. + +`-m68hc11 | -m68hc12 | -m68hcs12 | -mm9s12x | -mm9s12xg' + Specify what processor is the target. The default is defined by + the configuration option when building the assembler. + +`--xgate-ramoffset' + Instruct the linker to offset RAM addresses from S12X address + space into XGATE address space. + +`-mshort' + Specify to use the 16-bit integer ABI. + +`-mlong' + Specify to use the 32-bit integer ABI. + +`-mshort-double' + Specify to use the 32-bit double ABI. + +`-mlong-double' + Specify to use the 64-bit double ABI. + +`--force-long-branches' + Relative branches are turned into absolute ones. This concerns + conditional branches, unconditional branches and branches to a sub + routine. + +`-S | --short-branches' + Do not turn relative branches into absolute ones when the offset + is out of range. + +`--strict-direct-mode' + Do not turn the direct addressing mode into extended addressing + mode when the instruction does not support direct addressing mode. + +`--print-insn-syntax' + Print the syntax of instruction in case of error. + +`--print-opcodes' + Print the list of instructions with syntax and then exit. + +`--generate-example' + Print an example of instruction for each possible instruction and + then exit. This option is only useful for testing `as'. + + + The following options are available when `as' is configured for the +SPARC architecture: + +`-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite' +`-Av8plus | -Av8plusa | -Av9 | -Av9a' + Explicitly select a variant of the SPARC architecture. + + `-Av8plus' and `-Av8plusa' select a 32 bit environment. `-Av9' + and `-Av9a' select a 64 bit environment. + + `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with + UltraSPARC extensions. + +`-xarch=v8plus | -xarch=v8plusa' + For compatibility with the Solaris v9 assembler. These options are + equivalent to -Av8plus and -Av8plusa, respectively. + +`-bump' + Warn when the assembler switches to another architecture. + + The following options are available when as is configured for the +'c54x architecture. + +`-mfar-mode' + Enable extended addressing mode. All addresses and relocations + will assume extended addressing (usually 23 bits). + +`-mcpu=CPU_VERSION' + Sets the CPU version being compiled for. + +`-merrors-to-file FILENAME' + Redirect error output to a file, for broken systems which don't + support such behaviour in the shell. + + The following options are available when as is configured for a MIPS +processor. + +`-G NUM' + This option sets the largest size of an object that can be + referenced implicitly with the `gp' register. It is only accepted + for targets that use ECOFF format, such as a DECstation running + Ultrix. The default value is 8. + +`-EB' + Generate "big endian" format output. + +`-EL' + Generate "little endian" format output. + +`-mips1' +`-mips2' +`-mips3' +`-mips4' +`-mips5' +`-mips32' +`-mips32r2' +`-mips32r3' +`-mips32r5' +`-mips32r6' +`-mips64' +`-mips64r2' +`-mips64r3' +`-mips64r5' +`-mips64r6' + Generate code for a particular MIPS Instruction Set Architecture + level. `-mips1' is an alias for `-march=r3000', `-mips2' is an + alias for `-march=r6000', `-mips3' is an alias for `-march=r4000' + and `-mips4' is an alias for `-march=r8000'. `-mips5', `-mips32', + `-mips32r2', `-mips32r3', `-mips32r5', `-mips32r6', `-mips64', + `-mips64r2', `-mips64r3', `-mips64r5', and `-mips64r6' correspond + to generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, + MIPS32 Release 5, MIPS32 Release 6, MIPS64, MIPS64 Release 2, + MIPS64 Release 3, MIPS64 Release 5, and MIPS64 Release 6 ISA + processors, respectively. + +`-march=CPU' + Generate code for a particular MIPS CPU. + +`-mtune=CPU' + Schedule and tune for a particular MIPS CPU. + +`-mfix7000' +`-mno-fix7000' + Cause nops to be inserted if the read of the destination register + of an mfhi or mflo instruction occurs in the following two + instructions. + +`-mfix-rm7000' +`-mno-fix-rm7000' + Cause nops to be inserted if a dmult or dmultu instruction is + followed by a load instruction. + +`-mdebug' +`-no-mdebug' + Cause stabs-style debugging output to go into an ECOFF-style + .mdebug section instead of the standard ELF .stabs sections. + +`-mpdr' +`-mno-pdr' + Control generation of `.pdr' sections. + +`-mgp32' +`-mfp32' + The register sizes are normally inferred from the ISA and ABI, but + these flags force a certain group of registers to be treated as 32 + bits wide at all times. `-mgp32' controls the size of + general-purpose registers and `-mfp32' controls the size of + floating-point registers. + +`-mgp64' +`-mfp64' + The register sizes are normally inferred from the ISA and ABI, but + these flags force a certain group of registers to be treated as 64 + bits wide at all times. `-mgp64' controls the size of + general-purpose registers and `-mfp64' controls the size of + floating-point registers. + +`-mfpxx' + The register sizes are normally inferred from the ISA and ABI, but + using this flag in combination with `-mabi=32' enables an ABI + variant which will operate correctly with floating-point registers + which are 32 or 64 bits wide. + +`-modd-spreg' +`-mno-odd-spreg' + Enable use of floating-point operations on odd-numbered + single-precision registers when supported by the ISA. `-mfpxx' + implies `-mno-odd-spreg', otherwise the default is `-modd-spreg'. + +`-mips16' +`-no-mips16' + Generate code for the MIPS 16 processor. This is equivalent to + putting `.set mips16' at the start of the assembly file. + `-no-mips16' turns off this option. + +`-mmicromips' +`-mno-micromips' + Generate code for the microMIPS processor. This is equivalent to + putting `.set micromips' at the start of the assembly file. + `-mno-micromips' turns off this option. This is equivalent to + putting `.set nomicromips' at the start of the assembly file. + +`-msmartmips' +`-mno-smartmips' + Enables the SmartMIPS extension to the MIPS32 instruction set. + This is equivalent to putting `.set smartmips' at the start of the + assembly file. `-mno-smartmips' turns off this option. + +`-mips3d' +`-no-mips3d' + Generate code for the MIPS-3D Application Specific Extension. + This tells the assembler to accept MIPS-3D instructions. + `-no-mips3d' turns off this option. + +`-mdmx' +`-no-mdmx' + Generate code for the MDMX Application Specific Extension. This + tells the assembler to accept MDMX instructions. `-no-mdmx' turns + off this option. + +`-mdsp' +`-mno-dsp' + Generate code for the DSP Release 1 Application Specific Extension. + This tells the assembler to accept DSP Release 1 instructions. + `-mno-dsp' turns off this option. + +`-mdspr2' +`-mno-dspr2' + Generate code for the DSP Release 2 Application Specific Extension. + This option implies -mdsp. This tells the assembler to accept DSP + Release 2 instructions. `-mno-dspr2' turns off this option. + +`-mmsa' +`-mno-msa' + Generate code for the MIPS SIMD Architecture Extension. This + tells the assembler to accept MSA instructions. `-mno-msa' turns + off this option. + +`-mxpa' +`-mno-xpa' + Generate code for the MIPS eXtended Physical Address (XPA) + Extension. This tells the assembler to accept XPA instructions. + `-mno-xpa' turns off this option. + +`-mmt' +`-mno-mt' + Generate code for the MT Application Specific Extension. This + tells the assembler to accept MT instructions. `-mno-mt' turns + off this option. + +`-mmcu' +`-mno-mcu' + Generate code for the MCU Application Specific Extension. This + tells the assembler to accept MCU instructions. `-mno-mcu' turns + off this option. + +`-minsn32' +`-mno-insn32' + Only use 32-bit instruction encodings when generating code for the + microMIPS processor. This option inhibits the use of any 16-bit + instructions. This is equivalent to putting `.set insn32' at the + start of the assembly file. `-mno-insn32' turns off this option. + This is equivalent to putting `.set noinsn32' at the start of the + assembly file. By default `-mno-insn32' is selected, allowing all + instructions to be used. + +`--construct-floats' +`--no-construct-floats' + The `--no-construct-floats' option disables the construction of + double width floating point constants by loading the two halves of + the value into the two single width floating point registers that + make up the double width register. By default + `--construct-floats' is selected, allowing construction of these + floating point constants. + +`--relax-branch' +`--no-relax-branch' + The `--relax-branch' option enables the relaxation of out-of-range + branches. By default `--no-relax-branch' is selected, causing any + out-of-range branches to produce an error. + +`-mnan=ENCODING' + Select between the IEEE 754-2008 (`-mnan=2008') or the legacy + (`-mnan=legacy') NaN encoding format. The latter is the default. + +`--emulation=NAME' + This option was formerly used to switch between ELF and ECOFF + output on targets like IRIX 5 that supported both. MIPS ECOFF + support was removed in GAS 2.24, so the option now serves little + purpose. It is retained for backwards compatibility. + + The available configuration names are: `mipself', `mipslelf' and + `mipsbelf'. Choosing `mipself' now has no effect, since the output + is always ELF. `mipslelf' and `mipsbelf' select little- and + big-endian output respectively, but `-EL' and `-EB' are now the + preferred options instead. + +`-nocpp' + `as' ignores this option. It is accepted for compatibility with + the native tools. + +`--trap' +`--no-trap' +`--break' +`--no-break' + Control how to deal with multiplication overflow and division by + zero. `--trap' or `--no-break' (which are synonyms) take a trap + exception (and only work for Instruction Set Architecture level 2 + and higher); `--break' or `--no-trap' (also synonyms, and the + default) take a break exception. + +`-n' + When this option is used, `as' will issue a warning every time it + generates a nop instruction from a macro. + + The following options are available when as is configured for an +MCore processor. + +`-jsri2bsr' +`-nojsri2bsr' + Enable or disable the JSRI to BSR transformation. By default this + is enabled. The command line option `-nojsri2bsr' can be used to + disable it. + +`-sifilter' +`-nosifilter' + Enable or disable the silicon filter behaviour. By default this + is disabled. The default can be overridden by the `-sifilter' + command line option. + +`-relax' + Alter jump instructions for long displacements. + +`-mcpu=[210|340]' + Select the cpu type on the target hardware. This controls which + instructions can be assembled. + +`-EB' + Assemble for a big endian target. + +`-EL' + Assemble for a little endian target. + + + *Note Meta Options::, for the options available when as is configured +for a Meta processor. + + See the info pages for documentation of the MMIX-specific options. + + *Note NDS32 Options::, for the options available when as is +configured for a NDS32 processor. + + *Note PowerPC-Opts::, for the options available when as is configured +for a PowerPC processor. + + See the info pages for documentation of the RX-specific options. + + The following options are available when as is configured for the +s390 processor family. + +`-m31' +`-m64' + Select the word size, either 31/32 bits or 64 bits. + +`-mesa' + +`-mzarch' + Select the architecture mode, either the Enterprise System + Architecture (esa) or the z/Architecture mode (zarch). + +`-march=PROCESSOR' + Specify which s390 processor variant is the target, `g6', `g6', + `z900', `z990', `z9-109', `z9-ec', `z10', `z196', or `zEC12'. + +`-mregnames' +`-mno-regnames' + Allow or disallow symbolic names for registers. + +`-mwarn-areg-zero' + Warn whenever the operand for a base or index register has been + specified but evaluates to zero. + + *Note TIC6X Options::, for the options available when as is +configured for a TMS320C6000 processor. + + *Note TILE-Gx Options::, for the options available when as is +configured for a TILE-Gx processor. + + *Note Xtensa Options::, for the options available when as is +configured for an Xtensa processor. + + The following options are available when as is configured for a Z80 +family processor. +`-z80' + Assemble for Z80 processor. + +`-r800' + Assemble for R800 processor. + +`-ignore-undocumented-instructions' +`-Wnud' + Assemble undocumented Z80 instructions that also work on R800 + without warning. + +`-ignore-unportable-instructions' +`-Wnup' + Assemble all undocumented Z80 instructions without warning. + +`-warn-undocumented-instructions' +`-Wud' + Issue a warning for undocumented Z80 instructions that also work + on R800. + +`-warn-unportable-instructions' +`-Wup' + Issue a warning for undocumented Z80 instructions that do not work + on R800. + +`-forbid-undocumented-instructions' +`-Fud' + Treat all undocumented instructions as errors. + +`-forbid-unportable-instructions' +`-Fup' + Treat undocumented Z80 instructions that do not work on R800 as + errors. + +* Menu: + +* Manual:: Structure of this Manual +* GNU Assembler:: The GNU Assembler +* Object Formats:: Object File Formats +* Command Line:: Command Line +* Input Files:: Input Files +* Object:: Output (Object) File +* Errors:: Error and Warning Messages + + +File: as.info, Node: Manual, Next: GNU Assembler, Up: Overview + +1.1 Structure of this Manual +============================ + +This manual is intended to describe what you need to know to use GNU +`as'. We cover the syntax expected in source files, including notation +for symbols, constants, and expressions; the directives that `as' +understands; and of course how to invoke `as'. + + This manual also describes some of the machine-dependent features of +various flavors of the assembler. + + On the other hand, this manual is _not_ intended as an introduction +to programming in assembly language--let alone programming in general! +In a similar vein, we make no attempt to introduce the machine +architecture; we do _not_ describe the instruction set, standard +mnemonics, registers or addressing modes that are standard to a +particular architecture. You may want to consult the manufacturer's +machine architecture manual for this information. + + +File: as.info, Node: GNU Assembler, Next: Object Formats, Prev: Manual, Up: Overview + +1.2 The GNU Assembler +===================== + +GNU `as' is really a family of assemblers. If you use (or have used) +the GNU assembler on one architecture, you should find a fairly similar +environment when you use it on another architecture. Each version has +much in common with the others, including object file formats, most +assembler directives (often called "pseudo-ops") and assembler syntax. + + `as' is primarily intended to assemble the output of the GNU C +compiler `gcc' for use by the linker `ld'. Nevertheless, we've tried +to make `as' assemble correctly everything that other assemblers for +the same machine would assemble. Any exceptions are documented +explicitly (*note Machine Dependencies::). This doesn't mean `as' +always uses the same syntax as another assembler for the same +architecture; for example, we know of several incompatible versions of +680x0 assembly language syntax. + + Unlike older assemblers, `as' is designed to assemble a source +program in one pass of the source file. This has a subtle impact on the +`.org' directive (*note `.org': Org.). + + +File: as.info, Node: Object Formats, Next: Command Line, Prev: GNU Assembler, Up: Overview + +1.3 Object File Formats +======================= + +The GNU assembler can be configured to produce several alternative +object file formats. For the most part, this does not affect how you +write assembly language programs; but directives for debugging symbols +are typically different in different file formats. *Note Symbol +Attributes: Symbol Attributes. + + +File: as.info, Node: Command Line, Next: Input Files, Prev: Object Formats, Up: Overview + +1.4 Command Line +================ + +After the program name `as', the command line may contain options and +file names. Options may appear in any order, and may be before, after, +or between file names. The order of file names is significant. + + `--' (two hyphens) by itself names the standard input file +explicitly, as one of the files for `as' to assemble. + + Except for `--' any command line argument that begins with a hyphen +(`-') is an option. Each option changes the behavior of `as'. No +option changes the way another option works. An option is a `-' +followed by one or more letters; the case of the letter is important. +All options are optional. + + Some options expect exactly one file name to follow them. The file +name may either immediately follow the option's letter (compatible with +older assemblers) or it may be the next command argument (GNU +standard). These two command lines are equivalent: + + as -o my-object-file.o mumble.s + as -omy-object-file.o mumble.s + + +File: as.info, Node: Input Files, Next: Object, Prev: Command Line, Up: Overview + +1.5 Input Files +=============== + +We use the phrase "source program", abbreviated "source", to describe +the program input to one run of `as'. The program may be in one or +more files; how the source is partitioned into files doesn't change the +meaning of the source. + + The source program is a concatenation of the text in all the files, +in the order specified. + + Each time you run `as' it assembles exactly one source program. The +source program is made up of one or more files. (The standard input is +also a file.) + + You give `as' a command line that has zero or more input file names. +The input files are read (from left file name to right). A command +line argument (in any position) that has no special meaning is taken to +be an input file name. + + If you give `as' no file names it attempts to read one input file +from the `as' standard input, which is normally your terminal. You may +have to type to tell `as' there is no more program to assemble. + + Use `--' if you need to explicitly name the standard input file in +your command line. + + If the source is empty, `as' produces a small, empty object file. + +Filenames and Line-numbers +-------------------------- + +There are two ways of locating a line in the input file (or files) and +either may be used in reporting error messages. One way refers to a +line number in a physical file; the other refers to a line number in a +"logical" file. *Note Error and Warning Messages: Errors. + + "Physical files" are those files named in the command line given to +`as'. + + "Logical files" are simply names declared explicitly by assembler +directives; they bear no relation to physical files. Logical file +names help error messages reflect the original source file, when `as' +source is itself synthesized from other files. `as' understands the +`#' directives emitted by the `gcc' preprocessor. See also *Note +`.file': File. + + +File: as.info, Node: Object, Next: Errors, Prev: Input Files, Up: Overview + +1.6 Output (Object) File +======================== + +Every time you run `as' it produces an output file, which is your +assembly language program translated into numbers. This file is the +object file. Its default name is `a.out'. You can give it another +name by using the `-o' option. Conventionally, object file names end +with `.o'. The default name is used for historical reasons: older +assemblers were capable of assembling self-contained programs directly +into a runnable program. (For some formats, this isn't currently +possible, but it can be done for the `a.out' format.) + + The object file is meant for input to the linker `ld'. It contains +assembled program code, information to help `ld' integrate the +assembled program into a runnable file, and (optionally) symbolic +information for the debugger. + + +File: as.info, Node: Errors, Prev: Object, Up: Overview + +1.7 Error and Warning Messages +============================== + +`as' may write warnings and error messages to the standard error file +(usually your terminal). This should not happen when a compiler runs +`as' automatically. Warnings report an assumption made so that `as' +could keep assembling a flawed program; errors report a grave problem +that stops the assembly. + + Warning messages have the format + + file_name:NNN:Warning Message Text + +(where NNN is a line number). If a logical file name has been given +(*note `.file': File.) it is used for the filename, otherwise the name +of the current input file is used. If a logical line number was given +(*note `.line': Line.) then it is used to calculate the number printed, +otherwise the actual line in the current source file is printed. The +message text is intended to be self explanatory (in the grand Unix +tradition). + + Error messages have the format + file_name:NNN:FATAL:Error Message Text + The file name and line number are derived as for warning messages. +The actual message text may be rather less explanatory because many of +them aren't supposed to happen. + + +File: as.info, Node: Invoking, Next: Syntax, Prev: Overview, Up: Top + +2 Command-Line Options +********************** + +This chapter describes command-line options available in _all_ versions +of the GNU assembler; see *Note Machine Dependencies::, for options +specific to particular machine architectures. + + If you are invoking `as' via the GNU C compiler, you can use the +`-Wa' option to pass arguments through to the assembler. The assembler +arguments must be separated from each other (and the `-Wa') by commas. +For example: + + gcc -c -g -O -Wa,-alh,-L file.c + +This passes two options to the assembler: `-alh' (emit a listing to +standard output with high-level and assembly source) and `-L' (retain +local symbols in the symbol table). + + Usually you do not need to use this `-Wa' mechanism, since many +compiler command-line options are automatically passed to the assembler +by the compiler. (You can call the GNU compiler driver with the `-v' +option to see precisely what options it passes to each compilation +pass, including the assembler.) + +* Menu: + +* a:: -a[cdghlns] enable listings +* alternate:: --alternate enable alternate macro syntax +* D:: -D for compatibility +* f:: -f to work faster +* I:: -I for .include search path + +* K:: -K for difference tables + +* L:: -L to retain local symbols +* listing:: --listing-XXX to configure listing output +* M:: -M or --mri to assemble in MRI compatibility mode +* MD:: --MD for dependency tracking +* o:: -o to name the object file +* R:: -R to join data and text sections +* statistics:: --statistics to see statistics about assembly +* traditional-format:: --traditional-format for compatible output +* v:: -v to announce version +* W:: -W, --no-warn, --warn, --fatal-warnings to control warnings +* Z:: -Z to make object file even after errors + + +File: as.info, Node: a, Next: alternate, Up: Invoking + +2.1 Enable Listings: `-a[cdghlns]' +================================== + +These options enable listing output from the assembler. By itself, +`-a' requests high-level, assembly, and symbols listing. You can use +other letters to select specific options for the list: `-ah' requests a +high-level language listing, `-al' requests an output-program assembly +listing, and `-as' requests a symbol table listing. High-level +listings require that a compiler debugging option like `-g' be used, +and that assembly listings (`-al') be requested also. + + Use the `-ag' option to print a first section with general assembly +information, like as version, switches passed, or time stamp. + + Use the `-ac' option to omit false conditionals from a listing. Any +lines which are not assembled because of a false `.if' (or `.ifdef', or +any other conditional), or a true `.if' followed by an `.else', will be +omitted from the listing. + + Use the `-ad' option to omit debugging directives from the listing. + + Once you have specified one of these options, you can further control +listing output and its appearance using the directives `.list', +`.nolist', `.psize', `.eject', `.title', and `.sbttl'. The `-an' +option turns off all forms processing. If you do not request listing +output with one of the `-a' options, the listing-control directives +have no effect. + + The letters after `-a' may be combined into one option, _e.g._, +`-aln'. + + Note if the assembler source is coming from the standard input (e.g., +because it is being created by `gcc' and the `-pipe' command line switch +is being used) then the listing will not contain any comments or +preprocessor directives. This is because the listing code buffers +input source lines from stdin only after they have been preprocessed by +the assembler. This reduces memory usage and makes the code more +efficient. + + +File: as.info, Node: alternate, Next: D, Prev: a, Up: Invoking + +2.2 `--alternate' +================= + +Begin in alternate macro mode, see *Note `.altmacro': Altmacro. + + +File: as.info, Node: D, Next: f, Prev: alternate, Up: Invoking + +2.3 `-D' +======== + +This option has no effect whatsoever, but it is accepted to make it more +likely that scripts written for other assemblers also work with `as'. + + +File: as.info, Node: f, Next: I, Prev: D, Up: Invoking + +2.4 Work Faster: `-f' +===================== + +`-f' should only be used when assembling programs written by a +(trusted) compiler. `-f' stops the assembler from doing whitespace and +comment preprocessing on the input file(s) before assembling them. +*Note Preprocessing: Preprocessing. + + _Warning:_ if you use `-f' when the files actually need to be + preprocessed (if they contain comments, for example), `as' does + not work correctly. + + +File: as.info, Node: I, Next: K, Prev: f, Up: Invoking + +2.5 `.include' Search Path: `-I' PATH +===================================== + +Use this option to add a PATH to the list of directories `as' searches +for files specified in `.include' directives (*note `.include': +Include.). You may use `-I' as many times as necessary to include a +variety of paths. The current working directory is always searched +first; after that, `as' searches any `-I' directories in the same order +as they were specified (left to right) on the command line. + + +File: as.info, Node: K, Next: L, Prev: I, Up: Invoking + +2.6 Difference Tables: `-K' +=========================== + +`as' sometimes alters the code emitted for directives of the form +`.word SYM1-SYM2'. *Note `.word': Word. You can use the `-K' option +if you want a warning issued when this is done. + + +File: as.info, Node: L, Next: listing, Prev: K, Up: Invoking + +2.7 Include Local Symbols: `-L' +=============================== + +Symbols beginning with system-specific local label prefixes, typically +`.L' for ELF systems or `L' for traditional a.out systems, are called +"local symbols". *Note Symbol Names::. Normally you do not see such +symbols when debugging, because they are intended for the use of +programs (like compilers) that compose assembler programs, not for your +notice. Normally both `as' and `ld' discard such symbols, so you do +not normally debug with them. + + This option tells `as' to retain those local symbols in the object +file. Usually if you do this you also tell the linker `ld' to preserve +those symbols. + + +File: as.info, Node: listing, Next: M, Prev: L, Up: Invoking + +2.8 Configuring listing output: `--listing' +=========================================== + +The listing feature of the assembler can be enabled via the command +line switch `-a' (*note a::). This feature combines the input source +file(s) with a hex dump of the corresponding locations in the output +object file, and displays them as a listing file. The format of this +listing can be controlled by directives inside the assembler source +(i.e., `.list' (*note List::), `.title' (*note Title::), `.sbttl' +(*note Sbttl::), `.psize' (*note Psize::), and `.eject' (*note Eject::) +and also by the following switches: + +`--listing-lhs-width=`number'' + Sets the maximum width, in words, of the first line of the hex + byte dump. This dump appears on the left hand side of the listing + output. + +`--listing-lhs-width2=`number'' + Sets the maximum width, in words, of any further lines of the hex + byte dump for a given input source line. If this value is not + specified, it defaults to being the same as the value specified + for `--listing-lhs-width'. If neither switch is used the default + is to one. + +`--listing-rhs-width=`number'' + Sets the maximum width, in characters, of the source line that is + displayed alongside the hex dump. The default value for this + parameter is 100. The source line is displayed on the right hand + side of the listing output. + +`--listing-cont-lines=`number'' + Sets the maximum number of continuation lines of hex dump that + will be displayed for a given single line of source input. The + default value is 4. + + +File: as.info, Node: M, Next: MD, Prev: listing, Up: Invoking + +2.9 Assemble in MRI Compatibility Mode: `-M' +============================================ + +The `-M' or `--mri' option selects MRI compatibility mode. This +changes the syntax and pseudo-op handling of `as' to make it compatible +with the `ASM68K' or the `ASM960' (depending upon the configured +target) assembler from Microtec Research. The exact nature of the MRI +syntax will not be documented here; see the MRI manuals for more +information. Note in particular that the handling of macros and macro +arguments is somewhat different. The purpose of this option is to +permit assembling existing MRI assembler code using `as'. + + The MRI compatibility is not complete. Certain operations of the +MRI assembler depend upon its object file format, and can not be +supported using other object file formats. Supporting these would +require enhancing each object file format individually. These are: + + * global symbols in common section + + The m68k MRI assembler supports common sections which are merged + by the linker. Other object file formats do not support this. + `as' handles common sections by treating them as a single common + symbol. It permits local symbols to be defined within a common + section, but it can not support global symbols, since it has no + way to describe them. + + * complex relocations + + The MRI assemblers support relocations against a negated section + address, and relocations which combine the start addresses of two + or more sections. These are not support by other object file + formats. + + * `END' pseudo-op specifying start address + + The MRI `END' pseudo-op permits the specification of a start + address. This is not supported by other object file formats. The + start address may instead be specified using the `-e' option to + the linker, or in a linker script. + + * `IDNT', `.ident' and `NAME' pseudo-ops + + The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module + name to the output file. This is not supported by other object + file formats. + + * `ORG' pseudo-op + + The m68k MRI `ORG' pseudo-op begins an absolute section at a given + address. This differs from the usual `as' `.org' pseudo-op, which + changes the location within the current section. Absolute + sections are not supported by other object file formats. The + address of a section may be assigned within a linker script. + + There are some other features of the MRI assembler which are not +supported by `as', typically either because they are difficult or +because they seem of little consequence. Some of these may be +supported in future releases. + + * EBCDIC strings + + EBCDIC strings are not supported. + + * packed binary coded decimal + + Packed binary coded decimal is not supported. This means that the + `DC.P' and `DCB.P' pseudo-ops are not supported. + + * `FEQU' pseudo-op + + The m68k `FEQU' pseudo-op is not supported. + + * `NOOBJ' pseudo-op + + The m68k `NOOBJ' pseudo-op is not supported. + + * `OPT' branch control options + + The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL', + and `BRW'--are ignored. `as' automatically relaxes all branches, + whether forward or backward, to an appropriate size, so these + options serve no purpose. + + * `OPT' list control options + + The following m68k `OPT' list control options are ignored: `C', + `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'. + + * other `OPT' options + + The following m68k `OPT' options are ignored: `NEST', `O', `OLD', + `OP', `P', `PCO', `PCR', `PCS', `R'. + + * `OPT' `D' option is default + + The m68k `OPT' `D' option is the default, unlike the MRI assembler. + `OPT NOD' may be used to turn it off. + + * `XREF' pseudo-op. + + The m68k `XREF' pseudo-op is ignored. + + * `.debug' pseudo-op + + The i960 `.debug' pseudo-op is not supported. + + * `.extended' pseudo-op + + The i960 `.extended' pseudo-op is not supported. + + * `.list' pseudo-op. + + The various options of the i960 `.list' pseudo-op are not + supported. + + * `.optimize' pseudo-op + + The i960 `.optimize' pseudo-op is not supported. + + * `.output' pseudo-op + + The i960 `.output' pseudo-op is not supported. + + * `.setreal' pseudo-op + + The i960 `.setreal' pseudo-op is not supported. + + + +File: as.info, Node: MD, Next: o, Prev: M, Up: Invoking + +2.10 Dependency Tracking: `--MD' +================================ + +`as' can generate a dependency file for the file it creates. This file +consists of a single rule suitable for `make' describing the +dependencies of the main source file. + + The rule is written to the file named in its argument. + + This feature is used in the automatic updating of makefiles. + + +File: as.info, Node: o, Next: R, Prev: MD, Up: Invoking + +2.11 Name the Object File: `-o' +=============================== + +There is always one object file output when you run `as'. By default +it has the name `a.out' (or `b.out', for Intel 960 targets only). You +use this option (which takes exactly one filename) to give the object +file a different name. + + Whatever the object file is called, `as' overwrites any existing +file of the same name. + + +File: as.info, Node: R, Next: statistics, Prev: o, Up: Invoking + +2.12 Join Data and Text Sections: `-R' +====================================== + +`-R' tells `as' to write the object file as if all data-section data +lives in the text section. This is only done at the very last moment: +your binary data are the same, but data section parts are relocated +differently. The data section part of your object file is zero bytes +long because all its bytes are appended to the text section. (*Note +Sections and Relocation: Sections.) + + When you specify `-R' it would be possible to generate shorter +address displacements (because we do not have to cross between text and +data section). We refrain from doing this simply for compatibility with +older versions of `as'. In future, `-R' may work this way. + + When `as' is configured for COFF or ELF output, this option is only +useful if you use sections named `.text' and `.data'. + + `-R' is not supported for any of the HPPA targets. Using `-R' +generates a warning from `as'. + + +File: as.info, Node: statistics, Next: traditional-format, Prev: R, Up: Invoking + +2.13 Display Assembly Statistics: `--statistics' +================================================ + +Use `--statistics' to display two statistics about the resources used by +`as': the maximum amount of space allocated during the assembly (in +bytes), and the total execution time taken for the assembly (in CPU +seconds). + + +File: as.info, Node: traditional-format, Next: v, Prev: statistics, Up: Invoking + +2.14 Compatible Output: `--traditional-format' +============================================== + +For some targets, the output of `as' is different in some ways from the +output of some existing assembler. This switch requests `as' to use +the traditional format instead. + + For example, it disables the exception frame optimizations which +`as' normally does by default on `gcc' output. + + +File: as.info, Node: v, Next: W, Prev: traditional-format, Up: Invoking + +2.15 Announce Version: `-v' +=========================== + +You can find out what version of as is running by including the option +`-v' (which you can also spell as `-version') on the command line. + + +File: as.info, Node: W, Next: Z, Prev: v, Up: Invoking + +2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings' +====================================================================== + +`as' should never give a warning or error message when assembling +compiler output. But programs written by people often cause `as' to +give a warning that a particular assumption was made. All such +warnings are directed to the standard error file. + + If you use the `-W' and `--no-warn' options, no warnings are issued. +This only affects the warning messages: it does not change any +particular of how `as' assembles your file. Errors, which stop the +assembly, are still reported. + + If you use the `--fatal-warnings' option, `as' considers files that +generate warnings to be in error. + + You can switch these options off again by specifying `--warn', which +causes warnings to be output as usual. + + +File: as.info, Node: Z, Prev: W, Up: Invoking + +2.17 Generate Object File in Spite of Errors: `-Z' +================================================== + +After an error message, `as' normally produces no output. If for some +reason you are interested in object file output even after `as' gives +an error message on your program, use the `-Z' option. If there are +any errors, `as' continues anyways, and writes an object file after a +final warning message of the form `N errors, M warnings, generating bad +object file.' + + +File: as.info, Node: Syntax, Next: Sections, Prev: Invoking, Up: Top + +3 Syntax +******** + +This chapter describes the machine-independent syntax allowed in a +source file. `as' syntax is similar to what many other assemblers use; +it is inspired by the BSD 4.2 assembler, except that `as' does not +assemble Vax bit-fields. + +* Menu: + +* Preprocessing:: Preprocessing +* Whitespace:: Whitespace +* Comments:: Comments +* Symbol Intro:: Symbols +* Statements:: Statements +* Constants:: Constants + + +File: as.info, Node: Preprocessing, Next: Whitespace, Up: Syntax + +3.1 Preprocessing +================= + +The `as' internal preprocessor: + * adjusts and removes extra whitespace. It leaves one space or tab + before the keywords on a line, and turns any other whitespace on + the line into a single space. + + * removes all comments, replacing them with a single space, or an + appropriate number of newlines. + + * converts character constants into the appropriate numeric values. + + It does not do macro processing, include file handling, or anything +else you may get from your C compiler's preprocessor. You can do +include file processing with the `.include' directive (*note +`.include': Include.). You can use the GNU C compiler driver to get +other "CPP" style preprocessing by giving the input file a `.S' suffix. +*Note Options Controlling the Kind of Output: (gcc.info)Overall +Options. + + Excess whitespace, comments, and character constants cannot be used +in the portions of the input text that are not preprocessed. + + If the first line of an input file is `#NO_APP' or if you use the +`-f' option, whitespace and comments are not removed from the input +file. Within an input file, you can ask for whitespace and comment +removal in specific portions of the by putting a line that says `#APP' +before the text that may contain whitespace or comments, and putting a +line that says `#NO_APP' after this text. This feature is mainly +intend to support `asm' statements in compilers whose output is +otherwise free of comments and whitespace. + + +File: as.info, Node: Whitespace, Next: Comments, Prev: Preprocessing, Up: Syntax + +3.2 Whitespace +============== + +"Whitespace" is one or more blanks or tabs, in any order. Whitespace +is used to separate symbols, and to make programs neater for people to +read. Unless within character constants (*note Character Constants: +Characters.), any whitespace means the same as exactly one space. + + +File: as.info, Node: Comments, Next: Symbol Intro, Prev: Whitespace, Up: Syntax + +3.3 Comments +============ + +There are two ways of rendering comments to `as'. In both cases the +comment is equivalent to one space. + + Anything from `/*' through the next `*/' is a comment. This means +you may not nest these comments. + + /* + The only way to include a newline ('\n') in a comment + is to use this sort of comment. + */ + + /* This sort of comment does not nest. */ + + Anything from a "line comment" character up to the next newline is +considered a comment and is ignored. The line comment character is +target specific, and some targets multiple comment characters. Some +targets also have line comment characters that only work if they are +the first character on a line. Some targets use a sequence of two +characters to introduce a line comment. Some targets can also change +their line comment characters depending upon command line options that +have been used. For more details see the _Syntax_ section in the +documentation for individual targets. + + If the line comment character is the hash sign (`#') then it still +has the special ability to enable and disable preprocessing (*note +Preprocessing::) and to specify logical line numbers: + + To be compatible with past assemblers, lines that begin with `#' +have a special interpretation. Following the `#' should be an absolute +expression (*note Expressions::): the logical line number of the _next_ +line. Then a string (*note Strings: Strings.) is allowed: if present +it is a new logical file name. The rest of the line, if any, should be +whitespace. + + If the first non-whitespace characters on the line are not numeric, +the line is ignored. (Just like a comment.) + + # This is an ordinary comment. + # 42-6 "new_file_name" # New logical file name + # This is logical line # 36. + This feature is deprecated, and may disappear from future versions +of `as'. + + +File: as.info, Node: Symbol Intro, Next: Statements, Prev: Comments, Up: Syntax + +3.4 Symbols +=========== + +A "symbol" is one or more characters chosen from the set of all letters +(both upper and lower case), digits and the three characters `_.$'. On +most machines, you can also use `$' in symbol names; exceptions are +noted in *Note Machine Dependencies::. No symbol may begin with a +digit. Case is significant. There is no length limit: all characters +are significant. Multibyte characters are supported. Symbols are +delimited by characters not in that set, or by the beginning of a file +(since the source program must end with a newline, the end of a file is +not a possible symbol delimiter). *Note Symbols::. + + +File: as.info, Node: Statements, Next: Constants, Prev: Symbol Intro, Up: Syntax + +3.5 Statements +============== + +A "statement" ends at a newline character (`\n') or a "line separator +character". The line separator character is target specific and +described in the _Syntax_ section of each target's documentation. Not +all targets support a line separator character. The newline or line +separator character is considered to be part of the preceding +statement. Newlines and separators within character constants are an +exception: they do not end statements. + + It is an error to end any statement with end-of-file: the last +character of any input file should be a newline. + + An empty statement is allowed, and may include whitespace. It is +ignored. + + A statement begins with zero or more labels, optionally followed by a +key symbol which determines what kind of statement it is. The key +symbol determines the syntax of the rest of the statement. If the +symbol begins with a dot `.' then the statement is an assembler +directive: typically valid for any computer. If the symbol begins with +a letter the statement is an assembly language "instruction": it +assembles into a machine language instruction. Different versions of +`as' for different computers recognize different instructions. In +fact, the same symbol may represent a different instruction in a +different computer's assembly language. + + A label is a symbol immediately followed by a colon (`:'). +Whitespace before a label or after a colon is permitted, but you may not +have whitespace between a label's symbol and its colon. *Note Labels::. + + For HPPA targets, labels need not be immediately followed by a +colon, but the definition of a label must begin in column zero. This +also implies that only one label may be defined on each line. + + label: .directive followed by something + another_label: # This is an empty statement. + instruction operand_1, operand_2, ... + + +File: as.info, Node: Constants, Prev: Statements, Up: Syntax + +3.6 Constants +============= + +A constant is a number, written so that its value is known by +inspection, without knowing any context. Like this: + .byte 74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value. + .ascii "Ring the bell\7" # A string constant. + .octa 0x123456789abcdef0123456789ABCDEF0 # A bignum. + .float 0f-314159265358979323846264338327\ + 95028841971.693993751E-40 # - pi, a flonum. + +* Menu: + +* Characters:: Character Constants +* Numbers:: Number Constants + + +File: as.info, Node: Characters, Next: Numbers, Up: Constants + +3.6.1 Character Constants +------------------------- + +There are two kinds of character constants. A "character" stands for +one character in one byte and its value may be used in numeric +expressions. String constants (properly called string _literals_) are +potentially many bytes and their values may not be used in arithmetic +expressions. + +* Menu: + +* Strings:: Strings +* Chars:: Characters + + +File: as.info, Node: Strings, Next: Chars, Up: Characters + +3.6.1.1 Strings +............... + +A "string" is written between double-quotes. It may contain +double-quotes or null characters. The way to get special characters +into a string is to "escape" these characters: precede them with a +backslash `\' character. For example `\\' represents one backslash: +the first `\' is an escape which tells `as' to interpret the second +character literally as a backslash (which prevents `as' from +recognizing the second `\' as an escape character). The complete list +of escapes follows. + +`\b' + Mnemonic for backspace; for ASCII this is octal code 010. + +`\f' + Mnemonic for FormFeed; for ASCII this is octal code 014. + +`\n' + Mnemonic for newline; for ASCII this is octal code 012. + +`\r' + Mnemonic for carriage-Return; for ASCII this is octal code 015. + +`\t' + Mnemonic for horizontal Tab; for ASCII this is octal code 011. + +`\ DIGIT DIGIT DIGIT' + An octal character code. The numeric code is 3 octal digits. For + compatibility with other Unix systems, 8 and 9 are accepted as + digits: for example, `\008' has the value 010, and `\009' the + value 011. + +`\`x' HEX-DIGITS...' + A hex character code. All trailing hex digits are combined. + Either upper or lower case `x' works. + +`\\' + Represents one `\' character. + +`\"' + Represents one `"' character. Needed in strings to represent this + character, because an unescaped `"' would end the string. + +`\ ANYTHING-ELSE' + Any other character when escaped by `\' gives a warning, but + assembles as if the `\' was not present. The idea is that if you + used an escape sequence you clearly didn't want the literal + interpretation of the following character. However `as' has no + other interpretation, so `as' knows it is giving you the wrong + code and warns you of the fact. + + Which characters are escapable, and what those escapes represent, +varies widely among assemblers. The current set is what we think the +BSD 4.2 assembler recognizes, and is a subset of what most C compilers +recognize. If you are in doubt, do not use an escape sequence. + + +File: as.info, Node: Chars, Prev: Strings, Up: Characters + +3.6.1.2 Characters +.................. + +A single character may be written as a single quote immediately +followed by that character. The same escapes apply to characters as to +strings. So if you want to write the character backslash, you must +write `'\\' where the first `\' escapes the second `\'. As you can +see, the quote is an acute accent, not a grave accent. A newline +immediately following an acute accent is taken as a literal character +and does not count as the end of a statement. The value of a character +constant in a numeric expression is the machine's byte-wide code for +that character. `as' assumes your character code is ASCII: `'A' means +65, `'B' means 66, and so on. + + +File: as.info, Node: Numbers, Prev: Characters, Up: Constants + +3.6.2 Number Constants +---------------------- + +`as' distinguishes three kinds of numbers according to how they are +stored in the target machine. _Integers_ are numbers that would fit +into an `int' in the C language. _Bignums_ are integers, but they are +stored in more than 32 bits. _Flonums_ are floating point numbers, +described below. + +* Menu: + +* Integers:: Integers +* Bignums:: Bignums +* Flonums:: Flonums + + +File: as.info, Node: Integers, Next: Bignums, Up: Numbers + +3.6.2.1 Integers +................ + +A binary integer is `0b' or `0B' followed by zero or more of the binary +digits `01'. + + An octal integer is `0' followed by zero or more of the octal digits +(`01234567'). + + A decimal integer starts with a non-zero digit followed by zero or +more digits (`0123456789'). + + A hexadecimal integer is `0x' or `0X' followed by one or more +hexadecimal digits chosen from `0123456789abcdefABCDEF'. + + Integers have the usual values. To denote a negative integer, use +the prefix operator `-' discussed under expressions (*note Prefix +Operators: Prefix Ops.). + + +File: as.info, Node: Bignums, Next: Flonums, Prev: Integers, Up: Numbers + +3.6.2.2 Bignums +............... + +A "bignum" has the same syntax and semantics as an integer except that +the number (or its negative) takes more than 32 bits to represent in +binary. The distinction is made because in some places integers are +permitted while bignums are not. + + +File: as.info, Node: Flonums, Prev: Bignums, Up: Numbers + +3.6.2.3 Flonums +............... + +A "flonum" represents a floating point number. The translation is +indirect: a decimal floating point number from the text is converted by +`as' to a generic binary floating point number of more than sufficient +precision. This generic floating point number is converted to a +particular computer's floating point format (or formats) by a portion +of `as' specialized to that computer. + + A flonum is written by writing (in order) + * The digit `0'. (`0' is optional on the HPPA.) + + * A letter, to tell `as' the rest of the number is a flonum. `e' is + recommended. Case is not important. + + On the H8/300, Renesas / SuperH SH, and AMD 29K architectures, the + letter must be one of the letters `DFPRSX' (in upper or lower + case). + + On the ARC, the letter must be one of the letters `DFRS' (in upper + or lower case). + + On the Intel 960 architecture, the letter must be one of the + letters `DFT' (in upper or lower case). + + On the HPPA architecture, the letter must be `E' (upper case only). + + * An optional sign: either `+' or `-'. + + * An optional "integer part": zero or more decimal digits. + + * An optional "fractional part": `.' followed by zero or more + decimal digits. + + * An optional exponent, consisting of: + + * An `E' or `e'. + + * Optional sign: either `+' or `-'. + + * One or more decimal digits. + + + At least one of the integer part or the fractional part must be +present. The floating point number has the usual base-10 value. + + `as' does all processing using integers. Flonums are computed +independently of any floating point hardware in the computer running +`as'. + + +File: as.info, Node: Sections, Next: Symbols, Prev: Syntax, Up: Top + +4 Sections and Relocation +************************* + +* Menu: + +* Secs Background:: Background +* Ld Sections:: Linker Sections +* As Sections:: Assembler Internal Sections +* Sub-Sections:: Sub-Sections +* bss:: bss Section + + +File: as.info, Node: Secs Background, Next: Ld Sections, Up: Sections + +4.1 Background +============== + +Roughly, a section is a range of addresses, with no gaps; all data "in" +those addresses is treated the same for some particular purpose. For +example there may be a "read only" section. + + The linker `ld' reads many object files (partial programs) and +combines their contents to form a runnable program. When `as' emits an +object file, the partial program is assumed to start at address 0. +`ld' assigns the final addresses for the partial program, so that +different partial programs do not overlap. This is actually an +oversimplification, but it suffices to explain how `as' uses sections. + + `ld' moves blocks of bytes of your program to their run-time +addresses. These blocks slide to their run-time addresses as rigid +units; their length does not change and neither does the order of bytes +within them. Such a rigid unit is called a _section_. Assigning +run-time addresses to sections is called "relocation". It includes the +task of adjusting mentions of object-file addresses so they refer to +the proper run-time addresses. For the H8/300, and for the Renesas / +SuperH SH, `as' pads sections if needed to ensure they end on a word +(sixteen bit) boundary. + + An object file written by `as' has at least three sections, any of +which may be empty. These are named "text", "data" and "bss" sections. + + When it generates COFF or ELF output, `as' can also generate +whatever other named sections you specify using the `.section' +directive (*note `.section': Section.). If you do not use any +directives that place output in the `.text' or `.data' sections, these +sections still exist, but are empty. + + When `as' generates SOM or ELF output for the HPPA, `as' can also +generate whatever other named sections you specify using the `.space' +and `.subspace' directives. See `HP9000 Series 800 Assembly Language +Reference Manual' (HP 92432-90001) for details on the `.space' and +`.subspace' assembler directives. + + Additionally, `as' uses different names for the standard text, data, +and bss sections when generating SOM output. Program text is placed +into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'. + + Within the object file, the text section starts at address `0', the +data section follows, and the bss section follows the data section. + + When generating either SOM or ELF output files on the HPPA, the text +section starts at address `0', the data section at address `0x4000000', +and the bss section follows the data section. + + To let `ld' know which data changes when the sections are relocated, +and how to change that data, `as' also writes to the object file +details of the relocation needed. To perform relocation `ld' must +know, each time an address in the object file is mentioned: + * Where in the object file is the beginning of this reference to an + address? + + * How long (in bytes) is this reference? + + * Which section does the address refer to? What is the numeric + value of + (ADDRESS) - (START-ADDRESS OF SECTION)? + + * Is the reference to an address "Program-Counter relative"? + + In fact, every address `as' ever uses is expressed as + (SECTION) + (OFFSET INTO SECTION) + Further, most expressions `as' computes have this section-relative +nature. (For some object formats, such as SOM for the HPPA, some +expressions are symbol-relative instead.) + + In this manual we use the notation {SECNAME N} to mean "offset N +into section SECNAME." + + Apart from text, data and bss sections you need to know about the +"absolute" section. When `ld' mixes partial programs, addresses in the +absolute section remain unchanged. For example, address `{absolute 0}' +is "relocated" to run-time address 0 by `ld'. Although the linker +never arranges two partial programs' data sections with overlapping +addresses after linking, _by definition_ their absolute sections must +overlap. Address `{absolute 239}' in one part of a program is always +the same address when the program is running as address `{absolute +239}' in any other part of the program. + + The idea of sections is extended to the "undefined" section. Any +address whose section is unknown at assembly time is by definition +rendered {undefined U}--where U is filled in later. Since numbers are +always defined, the only way to generate an undefined address is to +mention an undefined symbol. A reference to a named common block would +be such a symbol: its value is unknown at assembly time so it has +section _undefined_. + + By analogy the word _section_ is used to describe groups of sections +in the linked program. `ld' puts all partial programs' text sections +in contiguous addresses in the linked program. It is customary to +refer to the _text section_ of a program, meaning all the addresses of +all partial programs' text sections. Likewise for data and bss +sections. + + Some sections are manipulated by `ld'; others are invented for use +of `as' and have no meaning except during assembly. + + +File: as.info, Node: Ld Sections, Next: As Sections, Prev: Secs Background, Up: Sections + +4.2 Linker Sections +=================== + +`ld' deals with just four kinds of sections, summarized below. + +*named sections* +*text section* +*data section* + These sections hold your program. `as' and `ld' treat them as + separate but equal sections. Anything you can say of one section + is true of another. When the program is running, however, it is + customary for the text section to be unalterable. The text + section is often shared among processes: it contains instructions, + constants and the like. The data section of a running program is + usually alterable: for example, C variables would be stored in the + data section. + +*bss section* + This section contains zeroed bytes when your program begins + running. It is used to hold uninitialized variables or common + storage. The length of each partial program's bss section is + important, but because it starts out containing zeroed bytes there + is no need to store explicit zero bytes in the object file. The + bss section was invented to eliminate those explicit zeros from + object files. + +*absolute section* + Address 0 of this section is always "relocated" to runtime address + 0. This is useful if you want to refer to an address that `ld' + must not change when relocating. In this sense we speak of + absolute addresses being "unrelocatable": they do not change + during relocation. + +*undefined section* + This "section" is a catch-all for address references to objects + not in the preceding sections. + + An idealized example of three relocatable sections follows. The +example uses the traditional section names `.text' and `.data'. Memory +addresses are on the horizontal axis. + + +-----+----+--+ + partial program # 1: |ttttt|dddd|00| + +-----+----+--+ + + text data bss + seg. seg. seg. + + +---+---+---+ + partial program # 2: |TTT|DDD|000| + +---+---+---+ + + +--+---+-----+--+----+---+-----+~~ + linked program: | |TTT|ttttt| |dddd|DDD|00000| + +--+---+-----+--+----+---+-----+~~ + + addresses: 0 ... + + +File: as.info, Node: As Sections, Next: Sub-Sections, Prev: Ld Sections, Up: Sections + +4.3 Assembler Internal Sections +=============================== + +These sections are meant only for the internal use of `as'. They have +no meaning at run-time. You do not really need to know about these +sections for most purposes; but they can be mentioned in `as' warning +messages, so it might be helpful to have an idea of their meanings to +`as'. These sections are used to permit the value of every expression +in your assembly language program to be a section-relative address. + +ASSEMBLER-INTERNAL-LOGIC-ERROR! + An internal assembler logic error has been found. This means + there is a bug in the assembler. + +expr section + The assembler stores complex expression internally as combinations + of symbols. When it needs to represent an expression as a symbol, + it puts it in the expr section. + + +File: as.info, Node: Sub-Sections, Next: bss, Prev: As Sections, Up: Sections + +4.4 Sub-Sections +================ + +Assembled bytes conventionally fall into two sections: text and data. +You may have separate groups of data in named sections that you want to +end up near to each other in the object file, even though they are not +contiguous in the assembler source. `as' allows you to use +"subsections" for this purpose. Within each section, there can be +numbered subsections with values from 0 to 8192. Objects assembled +into the same subsection go into the object file together with other +objects in the same subsection. For example, a compiler might want to +store constants in the text section, but might not want to have them +interspersed with the program being assembled. In this case, the +compiler could issue a `.text 0' before each section of code being +output, and a `.text 1' before each group of constants being output. + +Subsections are optional. If you do not use subsections, everything +goes in subsection number zero. + + Each subsection is zero-padded up to a multiple of four bytes. +(Subsections may be padded a different amount on different flavors of +`as'.) + + Subsections appear in your object file in numeric order, lowest +numbered to highest. (All this to be compatible with other people's +assemblers.) The object file contains no representation of +subsections; `ld' and other programs that manipulate object files see +no trace of them. They just see all your text subsections as a text +section, and all your data subsections as a data section. + + To specify which subsection you want subsequent statements assembled +into, use a numeric argument to specify it, in a `.text EXPRESSION' or +a `.data EXPRESSION' statement. When generating COFF output, you can +also use an extra subsection argument with arbitrary named sections: +`.section NAME, EXPRESSION'. When generating ELF output, you can also +use the `.subsection' directive (*note SubSection::) to specify a +subsection: `.subsection EXPRESSION'. EXPRESSION should be an absolute +expression (*note Expressions::). If you just say `.text' then `.text +0' is assumed. Likewise `.data' means `.data 0'. Assembly begins in +`text 0'. For instance: + .text 0 # The default subsection is text 0 anyway. + .ascii "This lives in the first text subsection. *" + .text 1 + .ascii "But this lives in the second text subsection." + .data 0 + .ascii "This lives in the data section," + .ascii "in the first data subsection." + .text 0 + .ascii "This lives in the first text section," + .ascii "immediately following the asterisk (*)." + + Each section has a "location counter" incremented by one for every +byte assembled into that section. Because subsections are merely a +convenience restricted to `as' there is no concept of a subsection +location counter. There is no way to directly manipulate a location +counter--but the `.align' directive changes it, and any label +definition captures its current value. The location counter of the +section where statements are being assembled is said to be the "active" +location counter. + + +File: as.info, Node: bss, Prev: Sub-Sections, Up: Sections + +4.5 bss Section +=============== + +The bss section is used for local common variable storage. You may +allocate address space in the bss section, but you may not dictate data +to load into it before your program executes. When your program starts +running, all the contents of the bss section are zeroed bytes. + + The `.lcomm' pseudo-op defines a symbol in the bss section; see +*Note `.lcomm': Lcomm. + + The `.comm' pseudo-op may be used to declare a common symbol, which +is another form of uninitialized symbol; see *Note `.comm': Comm. + + When assembling for a target which supports multiple sections, such +as ELF or COFF, you may switch into the `.bss' section and define +symbols as usual; see *Note `.section': Section. You may only assemble +zero values into the section. Typically the section will only contain +symbol definitions and `.skip' directives (*note `.skip': Skip.). + + +File: as.info, Node: Symbols, Next: Expressions, Prev: Sections, Up: Top + +5 Symbols +********* + +Symbols are a central concept: the programmer uses symbols to name +things, the linker uses symbols to link, and the debugger uses symbols +to debug. + + _Warning:_ `as' does not place symbols in the object file in the + same order they were declared. This may break some debuggers. + +* Menu: + +* Labels:: Labels +* Setting Symbols:: Giving Symbols Other Values +* Symbol Names:: Symbol Names +* Dot:: The Special Dot Symbol +* Symbol Attributes:: Symbol Attributes + + +File: as.info, Node: Labels, Next: Setting Symbols, Up: Symbols + +5.1 Labels +========== + +A "label" is written as a symbol immediately followed by a colon `:'. +The symbol then represents the current value of the active location +counter, and is, for example, a suitable instruction operand. You are +warned if you use the same symbol to represent two different locations: +the first definition overrides any other definitions. + + On the HPPA, the usual form for a label need not be immediately +followed by a colon, but instead must start in column zero. Only one +label may be defined on a single line. To work around this, the HPPA +version of `as' also provides a special directive `.label' for defining +labels more flexibly. + + +File: as.info, Node: Setting Symbols, Next: Symbol Names, Prev: Labels, Up: Symbols + +5.2 Giving Symbols Other Values +=============================== + +A symbol can be given an arbitrary value by writing a symbol, followed +by an equals sign `=', followed by an expression (*note Expressions::). +This is equivalent to using the `.set' directive. *Note `.set': Set. +In the same way, using a double equals sign `='`=' here represents an +equivalent of the `.eqv' directive. *Note `.eqv': Eqv. + + Blackfin does not support symbol assignment with `='. + + +File: as.info, Node: Symbol Names, Next: Dot, Prev: Setting Symbols, Up: Symbols + +5.3 Symbol Names +================ + +Symbol names begin with a letter or with one of `._'. On most +machines, you can also use `$' in symbol names; exceptions are noted in +*Note Machine Dependencies::. That character may be followed by any +string of digits, letters, dollar signs (unless otherwise noted for a +particular target machine), and underscores. + +Case of letters is significant: `foo' is a different symbol name than +`Foo'. + + Multibyte characters are supported. To generate a symbol name +containing multibyte characters enclose it within double quotes and use +escape codes. cf *Note Strings::. Generating a multibyte symbol name +from a label is not currently supported. + + Each symbol has exactly one name. Each name in an assembly language +program refers to exactly one symbol. You may use that symbol name any +number of times in a program. + +Local Symbol Names +------------------ + +A local symbol is any symbol beginning with certain local label +prefixes. By default, the local label prefix is `.L' for ELF systems or +`L' for traditional a.out systems, but each target may have its own set +of local label prefixes. On the HPPA local symbols begin with `L$'. + + Local symbols are defined and used within the assembler, but they are +normally not saved in object files. Thus, they are not visible when +debugging. You may use the `-L' option (*note Include Local Symbols: +`-L': L.) to retain the local symbols in the object files. + +Local Labels +------------ + +Local labels help compilers and programmers use names temporarily. +They create symbols which are guaranteed to be unique over the entire +scope of the input source code and which can be referred to by a simple +notation. To define a local label, write a label of the form `N:' +(where N represents any positive integer). To refer to the most recent +previous definition of that label write `Nb', using the same number as +when you defined the label. To refer to the next definition of a local +label, write `Nf'--the `b' stands for "backwards" and the `f' stands +for "forwards". + + There is no restriction on how you can use these labels, and you can +reuse them too. So that it is possible to repeatedly define the same +local label (using the same number `N'), although you can only refer to +the most recently defined local label of that number (for a backwards +reference) or the next definition of a specific local label for a +forward reference. It is also worth noting that the first 10 local +labels (`0:'...`9:') are implemented in a slightly more efficient +manner than the others. + + Here is an example: + + 1: branch 1f + 2: branch 1b + 1: branch 2f + 2: branch 1b + + Which is the equivalent of: + + label_1: branch label_3 + label_2: branch label_1 + label_3: branch label_4 + label_4: branch label_3 + + Local label names are only a notational device. They are immediately +transformed into more conventional symbol names before the assembler +uses them. The symbol names are stored in the symbol table, appear in +error messages, and are optionally emitted to the object file. The +names are constructed using these parts: + +`_local label prefix_' + All local symbols begin with the system-specific local label + prefix. Normally both `as' and `ld' forget symbols that start + with the local label prefix. These labels are used for symbols + you are never intended to see. If you use the `-L' option then + `as' retains these symbols in the object file. If you also + instruct `ld' to retain these symbols, you may use them in + debugging. + +`NUMBER' + This is the number that was used in the local label definition. + So if the label is written `55:' then the number is `55'. + +`C-B' + This unusual character is included so you do not accidentally + invent a symbol of the same name. The character has ASCII value + of `\002' (control-B). + +`_ordinal number_' + This is a serial number to keep the labels distinct. The first + definition of `0:' gets the number `1'. The 15th definition of + `0:' gets the number `15', and so on. Likewise the first + definition of `1:' gets the number `1' and its 15th definition + gets `15' as well. + + So for example, the first `1:' may be named `.L1C-B1', and the 44th +`3:' may be named `.L3C-B44'. + +Dollar Local Labels +------------------- + +`as' also supports an even more local form of local labels called +dollar labels. These labels go out of scope (i.e., they become +undefined) as soon as a non-local label is defined. Thus they remain +valid for only a small region of the input source code. Normal local +labels, by contrast, remain in scope for the entire file, or until they +are redefined by another occurrence of the same local label. + + Dollar labels are defined in exactly the same way as ordinary local +labels, except that they have a dollar sign suffix to their numeric +value, e.g., `55$:'. + + They can also be distinguished from ordinary local labels by their +transformed names which use ASCII character `\001' (control-A) as the +magic character to distinguish them from ordinary labels. For example, +the fifth definition of `6$' may be named `.L6C-A5'. + + +File: as.info, Node: Dot, Next: Symbol Attributes, Prev: Symbol Names, Up: Symbols + +5.4 The Special Dot Symbol +========================== + +The special symbol `.' refers to the current address that `as' is +assembling into. Thus, the expression `melvin: .long .' defines +`melvin' to contain its own address. Assigning a value to `.' is +treated the same as a `.org' directive. Thus, the expression `.=.+4' +is the same as saying `.space 4'. + + +File: as.info, Node: Symbol Attributes, Prev: Dot, Up: Symbols + +5.5 Symbol Attributes +===================== + +Every symbol has, as well as its name, the attributes "Value" and +"Type". Depending on output format, symbols can also have auxiliary +attributes. + + If you use a symbol without defining it, `as' assumes zero for all +these attributes, and probably won't warn you. This makes the symbol +an externally defined symbol, which is generally what you would want. + +* Menu: + +* Symbol Value:: Value +* Symbol Type:: Type + + +* a.out Symbols:: Symbol Attributes: `a.out' + +* COFF Symbols:: Symbol Attributes for COFF + +* SOM Symbols:: Symbol Attributes for SOM + + +File: as.info, Node: Symbol Value, Next: Symbol Type, Up: Symbol Attributes + +5.5.1 Value +----------- + +The value of a symbol is (usually) 32 bits. For a symbol which labels a +location in the text, data, bss or absolute sections the value is the +number of addresses from the start of that section to the label. +Naturally for text, data and bss sections the value of a symbol changes +as `ld' changes section base addresses during linking. Absolute +symbols' values do not change during linking: that is why they are +called absolute. + + The value of an undefined symbol is treated in a special way. If it +is 0 then the symbol is not defined in this assembler source file, and +`ld' tries to determine its value from other files linked into the same +program. You make this kind of symbol simply by mentioning a symbol +name without defining it. A non-zero value represents a `.comm' common +declaration. The value is how much common storage to reserve, in bytes +(addresses). The symbol refers to the first address of the allocated +storage. + + +File: as.info, Node: Symbol Type, Next: a.out Symbols, Prev: Symbol Value, Up: Symbol Attributes + +5.5.2 Type +---------- + +The type attribute of a symbol contains relocation (section) +information, any flag settings indicating that a symbol is external, and +(optionally), other information for linkers and debuggers. The exact +format depends on the object-code output format in use. + + +File: as.info, Node: a.out Symbols, Next: COFF Symbols, Prev: Symbol Type, Up: Symbol Attributes + +5.5.3 Symbol Attributes: `a.out' +-------------------------------- + +* Menu: + +* Symbol Desc:: Descriptor +* Symbol Other:: Other + + +File: as.info, Node: Symbol Desc, Next: Symbol Other, Up: a.out Symbols + +5.5.3.1 Descriptor +.................. + +This is an arbitrary 16-bit value. You may establish a symbol's +descriptor value by using a `.desc' statement (*note `.desc': Desc.). +A descriptor value means nothing to `as'. + + +File: as.info, Node: Symbol Other, Prev: Symbol Desc, Up: a.out Symbols + +5.5.3.2 Other +............. + +This is an arbitrary 8-bit value. It means nothing to `as'. + + +File: as.info, Node: COFF Symbols, Next: SOM Symbols, Prev: a.out Symbols, Up: Symbol Attributes + +5.5.4 Symbol Attributes for COFF +-------------------------------- + +The COFF format supports a multitude of auxiliary symbol attributes; +like the primary symbol attributes, they are set between `.def' and +`.endef' directives. + +5.5.4.1 Primary Attributes +.......................... + +The symbol name is set with `.def'; the value and type, respectively, +with `.val' and `.type'. + +5.5.4.2 Auxiliary Attributes +............................ + +The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and +`.weak' can generate auxiliary symbol table information for COFF. + + +File: as.info, Node: SOM Symbols, Prev: COFF Symbols, Up: Symbol Attributes + +5.5.5 Symbol Attributes for SOM +------------------------------- + +The SOM format for the HPPA supports a multitude of symbol attributes +set with the `.EXPORT' and `.IMPORT' directives. + + The attributes are described in `HP9000 Series 800 Assembly Language +Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT' +assembler directive documentation. + + +File: as.info, Node: Expressions, Next: Pseudo Ops, Prev: Symbols, Up: Top + +6 Expressions +************* + +An "expression" specifies an address or numeric value. Whitespace may +precede and/or follow an expression. + + The result of an expression must be an absolute number, or else an +offset into a particular section. If an expression is not absolute, +and there is not enough information when `as' sees the expression to +know its section, a second pass over the source program might be +necessary to interpret the expression--but the second pass is currently +not implemented. `as' aborts with an error message in this situation. + +* Menu: + +* Empty Exprs:: Empty Expressions +* Integer Exprs:: Integer Expressions + + +File: as.info, Node: Empty Exprs, Next: Integer Exprs, Up: Expressions + +6.1 Empty Expressions +===================== + +An empty expression has no value: it is just whitespace or null. +Wherever an absolute expression is required, you may omit the +expression, and `as' assumes a value of (absolute) 0. This is +compatible with other assemblers. + + +File: as.info, Node: Integer Exprs, Prev: Empty Exprs, Up: Expressions + +6.2 Integer Expressions +======================= + +An "integer expression" is one or more _arguments_ delimited by +_operators_. + +* Menu: + +* Arguments:: Arguments +* Operators:: Operators +* Prefix Ops:: Prefix Operators +* Infix Ops:: Infix Operators + + +File: as.info, Node: Arguments, Next: Operators, Up: Integer Exprs + +6.2.1 Arguments +--------------- + +"Arguments" are symbols, numbers or subexpressions. In other contexts +arguments are sometimes called "arithmetic operands". In this manual, +to avoid confusing them with the "instruction operands" of the machine +language, we use the term "argument" to refer to parts of expressions +only, reserving the word "operand" to refer only to machine instruction +operands. + + Symbols are evaluated to yield {SECTION NNN} where SECTION is one of +text, data, bss, absolute, or undefined. NNN is a signed, 2's +complement 32 bit integer. + + Numbers are usually integers. + + A number can be a flonum or bignum. In this case, you are warned +that only the low order 32 bits are used, and `as' pretends these 32 +bits are an integer. You may write integer-manipulating instructions +that act on exotic constants, compatible with other assemblers. + + Subexpressions are a left parenthesis `(' followed by an integer +expression, followed by a right parenthesis `)'; or a prefix operator +followed by an argument. + + +File: as.info, Node: Operators, Next: Prefix Ops, Prev: Arguments, Up: Integer Exprs + +6.2.2 Operators +--------------- + +"Operators" are arithmetic functions, like `+' or `%'. Prefix +operators are followed by an argument. Infix operators appear between +their arguments. Operators may be preceded and/or followed by +whitespace. + + +File: as.info, Node: Prefix Ops, Next: Infix Ops, Prev: Operators, Up: Integer Exprs + +6.2.3 Prefix Operator +--------------------- + +`as' has the following "prefix operators". They each take one +argument, which must be absolute. + +`-' + "Negation". Two's complement negation. + +`~' + "Complementation". Bitwise not. + + +File: as.info, Node: Infix Ops, Prev: Prefix Ops, Up: Integer Exprs + +6.2.4 Infix Operators +--------------------- + +"Infix operators" take two arguments, one on either side. Operators +have precedence, but operations with equal precedence are performed left +to right. Apart from `+' or `-', both arguments must be absolute, and +the result is absolute. + + 1. Highest Precedence + + `*' + "Multiplication". + + `/' + "Division". Truncation is the same as the C operator `/' + + `%' + "Remainder". + + `<<' + "Shift Left". Same as the C operator `<<'. + + `>>' + "Shift Right". Same as the C operator `>>'. + + 2. Intermediate precedence + + `|' + "Bitwise Inclusive Or". + + `&' + "Bitwise And". + + `^' + "Bitwise Exclusive Or". + + `!' + "Bitwise Or Not". + + 3. Low Precedence + + `+' + "Addition". If either argument is absolute, the result has + the section of the other argument. You may not add together + arguments from different sections. + + `-' + "Subtraction". If the right argument is absolute, the result + has the section of the left argument. If both arguments are + in the same section, the result is absolute. You may not + subtract arguments from different sections. + + `==' + "Is Equal To" + + `<>' + `!=' + "Is Not Equal To" + + `<' + "Is Less Than" + + `>' + "Is Greater Than" + + `>=' + "Is Greater Than Or Equal To" + + `<=' + "Is Less Than Or Equal To" + + The comparison operators can be used as infix operators. A + true results has a value of -1 whereas a false result has a + value of 0. Note, these operators perform signed + comparisons. + + 4. Lowest Precedence + + `&&' + "Logical And". + + `||' + "Logical Or". + + These two logical operations can be used to combine the + results of sub expressions. Note, unlike the comparison + operators a true result returns a value of 1 but a false + results does still return 0. Also note that the logical or + operator has a slightly lower precedence than logical and. + + + In short, it's only meaningful to add or subtract the _offsets_ in an +address; you can only have a defined section in one of the two +arguments. + + +File: as.info, Node: Pseudo Ops, Next: Object Attributes, Prev: Expressions, Up: Top + +7 Assembler Directives +********************** + +All assembler directives have names that begin with a period (`.'). +The rest of the name is letters, usually in lower case. + + This chapter discusses directives that are available regardless of +the target machine configuration for the GNU assembler. Some machine +configurations provide additional directives. *Note Machine +Dependencies::. + +* Menu: + +* Abort:: `.abort' + +* ABORT (COFF):: `.ABORT' + +* Align:: `.align ABS-EXPR , ABS-EXPR' +* Altmacro:: `.altmacro' +* Ascii:: `.ascii "STRING"'... +* Asciz:: `.asciz "STRING"'... +* Balign:: `.balign ABS-EXPR , ABS-EXPR' +* Bundle directives:: `.bundle_align_mode ABS-EXPR', `.bundle_lock', `.bundle_unlock' +* Byte:: `.byte EXPRESSIONS' +* CFI directives:: `.cfi_startproc [simple]', `.cfi_endproc', etc. +* Comm:: `.comm SYMBOL , LENGTH ' +* Data:: `.data SUBSECTION' + +* Def:: `.def NAME' + +* Desc:: `.desc SYMBOL, ABS-EXPRESSION' + +* Dim:: `.dim' + +* Double:: `.double FLONUMS' +* Eject:: `.eject' +* Else:: `.else' +* Elseif:: `.elseif' +* End:: `.end' + +* Endef:: `.endef' + +* Endfunc:: `.endfunc' +* Endif:: `.endif' +* Equ:: `.equ SYMBOL, EXPRESSION' +* Equiv:: `.equiv SYMBOL, EXPRESSION' +* Eqv:: `.eqv SYMBOL, EXPRESSION' +* Err:: `.err' +* Error:: `.error STRING' +* Exitm:: `.exitm' +* Extern:: `.extern' +* Fail:: `.fail' +* File:: `.file' +* Fill:: `.fill REPEAT , SIZE , VALUE' +* Float:: `.float FLONUMS' +* Func:: `.func' +* Global:: `.global SYMBOL', `.globl SYMBOL' + +* Gnu_attribute:: `.gnu_attribute TAG,VALUE' +* Hidden:: `.hidden NAMES' + +* hword:: `.hword EXPRESSIONS' +* Ident:: `.ident' +* If:: `.if ABSOLUTE EXPRESSION' +* Incbin:: `.incbin "FILE"[,SKIP[,COUNT]]' +* Include:: `.include "FILE"' +* Int:: `.int EXPRESSIONS' + +* Internal:: `.internal NAMES' + +* Irp:: `.irp SYMBOL,VALUES'... +* Irpc:: `.irpc SYMBOL,VALUES'... +* Lcomm:: `.lcomm SYMBOL , LENGTH' +* Lflags:: `.lflags' + +* Line:: `.line LINE-NUMBER' + +* Linkonce:: `.linkonce [TYPE]' +* List:: `.list' +* Ln:: `.ln LINE-NUMBER' +* Loc:: `.loc FILENO LINENO' +* Loc_mark_labels:: `.loc_mark_labels ENABLE' + +* Local:: `.local NAMES' + +* Long:: `.long EXPRESSIONS' + +* Macro:: `.macro NAME ARGS'... +* MRI:: `.mri VAL' +* Noaltmacro:: `.noaltmacro' +* Nolist:: `.nolist' +* Octa:: `.octa BIGNUMS' +* Offset:: `.offset LOC' +* Org:: `.org NEW-LC, FILL' +* P2align:: `.p2align ABS-EXPR, ABS-EXPR, ABS-EXPR' + +* PopSection:: `.popsection' +* Previous:: `.previous' + +* Print:: `.print STRING' + +* Protected:: `.protected NAMES' + +* Psize:: `.psize LINES, COLUMNS' +* Purgem:: `.purgem NAME' + +* PushSection:: `.pushsection NAME' + +* Quad:: `.quad BIGNUMS' +* Reloc:: `.reloc OFFSET, RELOC_NAME[, EXPRESSION]' +* Rept:: `.rept COUNT' +* Sbttl:: `.sbttl "SUBHEADING"' + +* Scl:: `.scl CLASS' + +* Section:: `.section NAME[, FLAGS]' + +* Set:: `.set SYMBOL, EXPRESSION' +* Short:: `.short EXPRESSIONS' +* Single:: `.single FLONUMS' + +* Size:: `.size [NAME , EXPRESSION]' + +* Skip:: `.skip SIZE , FILL' + +* Sleb128:: `.sleb128 EXPRESSIONS' + +* Space:: `.space SIZE , FILL' + +* Stab:: `.stabd, .stabn, .stabs' + +* String:: `.string "STR"', `.string8 "STR"', `.string16 "STR"', `.string32 "STR"', `.string64 "STR"' +* Struct:: `.struct EXPRESSION' + +* SubSection:: `.subsection' +* Symver:: `.symver NAME,NAME2@NODENAME' + + +* Tag:: `.tag STRUCTNAME' + +* Text:: `.text SUBSECTION' +* Title:: `.title "HEADING"' + +* Type:: `.type ' + +* Uleb128:: `.uleb128 EXPRESSIONS' + +* Val:: `.val ADDR' + + +* Version:: `.version "STRING"' +* VTableEntry:: `.vtable_entry TABLE, OFFSET' +* VTableInherit:: `.vtable_inherit CHILD, PARENT' + +* Warning:: `.warning STRING' +* Weak:: `.weak NAMES' +* Weakref:: `.weakref ALIAS, SYMBOL' +* Word:: `.word EXPRESSIONS' +* Deprecated:: Deprecated Directives + + +File: as.info, Node: Abort, Next: ABORT (COFF), Up: Pseudo Ops + +7.1 `.abort' +============ + +This directive stops the assembly immediately. It is for compatibility +with other assemblers. The original idea was that the assembly +language source would be piped into the assembler. If the sender of +the source quit, it could use this directive tells `as' to quit also. +One day `.abort' will not be supported. + + +File: as.info, Node: ABORT (COFF), Next: Align, Prev: Abort, Up: Pseudo Ops + +7.2 `.ABORT' (COFF) +=================== + +When producing COFF output, `as' accepts this directive as a synonym +for `.abort'. + + +File: as.info, Node: Align, Next: Altmacro, Prev: ABORT (COFF), Up: Pseudo Ops + +7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR' +========================================= + +Pad the location counter (in the current subsection) to a particular +storage boundary. The first expression (which must be absolute) is the +alignment required, as described below. + + The second expression (also absolute) gives the fill value to be +stored in the padding bytes. It (and the comma) may be omitted. If it +is omitted, the padding bytes are normally zero. However, on some +systems, if the section is marked as containing code and the fill value +is omitted, the space is filled with no-op instructions. + + The third expression is also absolute, and is also optional. If it +is present, it is the maximum number of bytes that should be skipped by +this alignment directive. If doing the alignment would require +skipping more bytes than the specified maximum, then the alignment is +not done at all. You can omit the fill value (the second argument) +entirely by simply using two commas after the required alignment; this +can be useful if you want the alignment to be filled with no-op +instructions when appropriate. + + The way the required alignment is specified varies from system to +system. For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or1k, +s390, sparc, tic4x, tic80 and xtensa, the first expression is the +alignment request in bytes. For example `.align 8' advances the +location counter until it is a multiple of 8. If the location counter +is already a multiple of 8, no change is needed. For the tic54x, the +first expression is the alignment request in words. + + For other systems, including ppc, i386 using a.out format, arm and +strongarm, it is the number of low-order zero bits the location counter +must have after advancement. For example `.align 3' advances the +location counter until it a multiple of 8. If the location counter is +already a multiple of 8, no change is needed. + + This inconsistency is due to the different behaviors of the various +native assemblers for these systems which GAS must emulate. GAS also +provides `.balign' and `.p2align' directives, described later, which +have a consistent behavior across all architectures (but are specific +to GAS). + + +File: as.info, Node: Altmacro, Next: Ascii, Prev: Align, Up: Pseudo Ops + +7.4 `.altmacro' +=============== + +Enable alternate macro mode, enabling: + +`LOCAL NAME [ , ... ]' + One additional directive, `LOCAL', is available. It is used to + generate a string replacement for each of the NAME arguments, and + replace any instances of NAME in each macro expansion. The + replacement string is unique in the assembly, and different for + each separate macro expansion. `LOCAL' allows you to write macros + that define symbols, without fear of conflict between separate + macro expansions. + +`String delimiters' + You can write strings delimited in these other ways besides + `"STRING"': + + `'STRING'' + You can delimit strings with single-quote characters. + + `' + You can delimit strings with matching angle brackets. + +`single-character string escape' + To include any single character literally in a string (even if the + character would otherwise have some special meaning), you can + prefix the character with `!' (an exclamation mark). For example, + you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 > + 5.4!'. + +`Expression results as strings' + You can write `%EXPR' to evaluate the expression EXPR and use the + result as a string. + + +File: as.info, Node: Ascii, Next: Asciz, Prev: Altmacro, Up: Pseudo Ops + +7.5 `.ascii "STRING"'... +======================== + +`.ascii' expects zero or more string literals (*note Strings::) +separated by commas. It assembles each string (with no automatic +trailing zero byte) into consecutive addresses. + + +File: as.info, Node: Asciz, Next: Balign, Prev: Ascii, Up: Pseudo Ops + +7.6 `.asciz "STRING"'... +======================== + +`.asciz' is just like `.ascii', but each string is followed by a zero +byte. The "z" in `.asciz' stands for "zero". + + +File: as.info, Node: Balign, Next: Bundle directives, Prev: Asciz, Up: Pseudo Ops + +7.7 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR' +============================================== + +Pad the location counter (in the current subsection) to a particular +storage boundary. The first expression (which must be absolute) is the +alignment request in bytes. For example `.balign 8' advances the +location counter until it is a multiple of 8. If the location counter +is already a multiple of 8, no change is needed. + + The second expression (also absolute) gives the fill value to be +stored in the padding bytes. It (and the comma) may be omitted. If it +is omitted, the padding bytes are normally zero. However, on some +systems, if the section is marked as containing code and the fill value +is omitted, the space is filled with no-op instructions. + + The third expression is also absolute, and is also optional. If it +is present, it is the maximum number of bytes that should be skipped by +this alignment directive. If doing the alignment would require +skipping more bytes than the specified maximum, then the alignment is +not done at all. You can omit the fill value (the second argument) +entirely by simply using two commas after the required alignment; this +can be useful if you want the alignment to be filled with no-op +instructions when appropriate. + + The `.balignw' and `.balignl' directives are variants of the +`.balign' directive. The `.balignw' directive treats the fill pattern +as a two byte word value. The `.balignl' directives treats the fill +pattern as a four byte longword value. For example, `.balignw +4,0x368d' will align to a multiple of 4. If it skips two bytes, they +will be filled in with the value 0x368d (the exact placement of the +bytes depends upon the endianness of the processor). If it skips 1 or +3 bytes, the fill value is undefined. + + +File: as.info, Node: Bundle directives, Next: Byte, Prev: Balign, Up: Pseudo Ops + +7.8 `.bundle_align_mode ABS-EXPR' +================================= + +`.bundle_align_mode' enables or disables "aligned instruction bundle" +mode. In this mode, sequences of adjacent instructions are grouped +into fixed-sized "bundles". If the argument is zero, this mode is +disabled (which is the default state). If the argument it not zero, it +gives the size of an instruction bundle as a power of two (as for the +`.p2align' directive, *note P2align::). + + For some targets, it's an ABI requirement that no instruction may +span a certain aligned boundary. A "bundle" is simply a sequence of +instructions that starts on an aligned boundary. For example, if +ABS-EXPR is `5' then the bundle size is 32, so each aligned chunk of 32 +bytes is a bundle. When aligned instruction bundle mode is in effect, +no single instruction may span a boundary between bundles. If an +instruction would start too close to the end of a bundle for the length +of that particular instruction to fit within the bundle, then the space +at the end of that bundle is filled with no-op instructions so the +instruction starts in the next bundle. As a corollary, it's an error +if any single instruction's encoding is longer than the bundle size. + +7.9 `.bundle_lock' and `.bundle_unlock' +======================================= + +The `.bundle_lock' and directive `.bundle_unlock' directives allow +explicit control over instruction bundle padding. These directives are +only valid when `.bundle_align_mode' has been used to enable aligned +instruction bundle mode. It's an error if they appear when +`.bundle_align_mode' has not been used at all, or when the last +directive was `.bundle_align_mode 0'. + + For some targets, it's an ABI requirement that certain instructions +may appear only as part of specified permissible sequences of multiple +instructions, all within the same bundle. A pair of `.bundle_lock' and +`.bundle_unlock' directives define a "bundle-locked" instruction +sequence. For purposes of aligned instruction bundle mode, a sequence +starting with `.bundle_lock' and ending with `.bundle_unlock' is +treated as a single instruction. That is, the entire sequence must fit +into a single bundle and may not span a bundle boundary. If necessary, +no-op instructions will be inserted before the first instruction of the +sequence so that the whole sequence starts on an aligned bundle +boundary. It's an error if the sequence is longer than the bundle size. + + For convenience when using `.bundle_lock' and `.bundle_unlock' +inside assembler macros (*note Macro::), bundle-locked sequences may be +nested. That is, a second `.bundle_lock' directive before the next +`.bundle_unlock' directive has no effect except that it must be matched +by another closing `.bundle_unlock' so that there is the same number of +`.bundle_lock' and `.bundle_unlock' directives. + + +File: as.info, Node: Byte, Next: CFI directives, Prev: Bundle directives, Up: Pseudo Ops + +7.10 `.byte EXPRESSIONS' +======================== + +`.byte' expects zero or more expressions, separated by commas. Each +expression is assembled into the next byte. + + +File: as.info, Node: CFI directives, Next: Comm, Prev: Byte, Up: Pseudo Ops + +7.11 `.cfi_sections SECTION_LIST' +================================= + +`.cfi_sections' may be used to specify whether CFI directives should +emit `.eh_frame' section and/or `.debug_frame' section. If +SECTION_LIST is `.eh_frame', `.eh_frame' is emitted, if SECTION_LIST is +`.debug_frame', `.debug_frame' is emitted. To emit both use +`.eh_frame, .debug_frame'. The default if this directive is not used +is `.cfi_sections .eh_frame'. + +7.12 `.cfi_startproc [simple]' +============================== + +`.cfi_startproc' is used at the beginning of each function that should +have an entry in `.eh_frame'. It initializes some internal data +structures. Don't forget to close the function by `.cfi_endproc'. + + Unless `.cfi_startproc' is used along with parameter `simple' it +also emits some architecture dependent initial CFI instructions. + +7.13 `.cfi_endproc' +=================== + +`.cfi_endproc' is used at the end of a function where it closes its +unwind entry previously opened by `.cfi_startproc', and emits it to +`.eh_frame'. + +7.14 `.cfi_personality ENCODING [, EXP]' +======================================== + +`.cfi_personality' defines personality routine and its encoding. +ENCODING must be a constant determining how the personality should be +encoded. If it is 255 (`DW_EH_PE_omit'), second argument is not +present, otherwise second argument should be a constant or a symbol +name. When using indirect encodings, the symbol provided should be the +location where personality can be loaded from, not the personality +routine itself. The default after `.cfi_startproc' is +`.cfi_personality 0xff', no personality routine. + +7.15 `.cfi_lsda ENCODING [, EXP]' +================================= + +`.cfi_lsda' defines LSDA and its encoding. ENCODING must be a constant +determining how the LSDA should be encoded. If it is 255 +(`DW_EH_PE_omit'), second argument is not present, otherwise second +argument should be a constant or a symbol name. The default after +`.cfi_startproc' is `.cfi_lsda 0xff', no LSDA. + +7.16 `.cfi_def_cfa REGISTER, OFFSET' +==================================== + +`.cfi_def_cfa' defines a rule for computing CFA as: take address from +REGISTER and add OFFSET to it. + +7.17 `.cfi_def_cfa_register REGISTER' +===================================== + +`.cfi_def_cfa_register' modifies a rule for computing CFA. From now on +REGISTER will be used instead of the old one. Offset remains the same. + +7.18 `.cfi_def_cfa_offset OFFSET' +================================= + +`.cfi_def_cfa_offset' modifies a rule for computing CFA. Register +remains the same, but OFFSET is new. Note that it is the absolute +offset that will be added to a defined register to compute CFA address. + +7.19 `.cfi_adjust_cfa_offset OFFSET' +==================================== + +Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is +added/substracted from the previous offset. + +7.20 `.cfi_offset REGISTER, OFFSET' +=================================== + +Previous value of REGISTER is saved at offset OFFSET from CFA. + +7.21 `.cfi_rel_offset REGISTER, OFFSET' +======================================= + +Previous value of REGISTER is saved at offset OFFSET from the current +CFA register. This is transformed to `.cfi_offset' using the known +displacement of the CFA register from the CFA. This is often easier to +use, because the number will match the code it's annotating. + +7.22 `.cfi_register REGISTER1, REGISTER2' +========================================= + +Previous value of REGISTER1 is saved in register REGISTER2. + +7.23 `.cfi_restore REGISTER' +============================ + +`.cfi_restore' says that the rule for REGISTER is now the same as it +was at the beginning of the function, after all initial instruction +added by `.cfi_startproc' were executed. + +7.24 `.cfi_undefined REGISTER' +============================== + +From now on the previous value of REGISTER can't be restored anymore. + +7.25 `.cfi_same_value REGISTER' +=============================== + +Current value of REGISTER is the same like in the previous frame, i.e. +no restoration needed. + +7.26 `.cfi_remember_state', +=========================== + +First save all current rules for all registers by `.cfi_remember_state', +then totally screw them up by subsequent `.cfi_*' directives and when +everything is hopelessly bad, use `.cfi_restore_state' to restore the +previous saved state. + +7.27 `.cfi_return_column REGISTER' +================================== + +Change return column REGISTER, i.e. the return address is either +directly in REGISTER or can be accessed by rules for REGISTER. + +7.28 `.cfi_signal_frame' +======================== + +Mark current function as signal trampoline. + +7.29 `.cfi_window_save' +======================= + +SPARC register window has been saved. + +7.30 `.cfi_escape' EXPRESSION[, ...] +==================================== + +Allows the user to add arbitrary bytes to the unwind info. One might +use this to add OS-specific CFI opcodes, or generic CFI opcodes that +GAS does not yet support. + +7.31 `.cfi_val_encoded_addr REGISTER, ENCODING, LABEL' +====================================================== + +The current value of REGISTER is LABEL. The value of LABEL will be +encoded in the output file according to ENCODING; see the description +of `.cfi_personality' for details on this encoding. + + The usefulness of equating a register to a fixed label is probably +limited to the return address register. Here, it can be useful to mark +a code segment that has only one return address which is reached by a +direct branch and no copy of the return address exists in memory or +another register. + + +File: as.info, Node: Comm, Next: Data, Prev: CFI directives, Up: Pseudo Ops + +7.32 `.comm SYMBOL , LENGTH ' +============================= + +`.comm' declares a common symbol named SYMBOL. When linking, a common +symbol in one object file may be merged with a defined or common symbol +of the same name in another object file. If `ld' does not see a +definition for the symbol-just one or more common symbols-then it will +allocate LENGTH bytes of uninitialized memory. LENGTH must be an +absolute expression. If `ld' sees multiple common symbols with the +same name, and they do not all have the same size, it will allocate +space using the largest size. + + When using ELF or (as a GNU extension) PE, the `.comm' directive +takes an optional third argument. This is the desired alignment of the +symbol, specified for ELF as a byte boundary (for example, an alignment +of 16 means that the least significant 4 bits of the address should be +zero), and for PE as a power of two (for example, an alignment of 5 +means aligned to a 32-byte boundary). The alignment must be an +absolute expression, and it must be a power of two. If `ld' allocates +uninitialized memory for the common symbol, it will use the alignment +when placing the symbol. If no alignment is specified, `as' will set +the alignment to the largest power of two less than or equal to the +size of the symbol, up to a maximum of 16 on ELF, or the default +section alignment of 4 on PE(1). + + The syntax for `.comm' differs slightly on the HPPA. The syntax is +`SYMBOL .comm, LENGTH'; SYMBOL is optional. + + ---------- Footnotes ---------- + + (1) This is not the same as the executable image file alignment +controlled by `ld''s `--section-alignment' option; image file sections +in PE are aligned to multiples of 4096, which is far too large an +alignment for ordinary variables. It is rather the default alignment +for (non-debug) sections within object (`*.o') files, which are less +strictly aligned. + + +File: as.info, Node: Data, Next: Def, Prev: Comm, Up: Pseudo Ops + +7.33 `.data SUBSECTION' +======================= + +`.data' tells `as' to assemble the following statements onto the end of +the data subsection numbered SUBSECTION (which is an absolute +expression). If SUBSECTION is omitted, it defaults to zero. + + +File: as.info, Node: Def, Next: Desc, Prev: Data, Up: Pseudo Ops + +7.34 `.def NAME' +================ + +Begin defining debugging information for a symbol NAME; the definition +extends until the `.endef' directive is encountered. + + +File: as.info, Node: Desc, Next: Dim, Prev: Def, Up: Pseudo Ops + +7.35 `.desc SYMBOL, ABS-EXPRESSION' +=================================== + +This directive sets the descriptor of the symbol (*note Symbol +Attributes::) to the low 16 bits of an absolute expression. + + The `.desc' directive is not available when `as' is configured for +COFF output; it is only for `a.out' or `b.out' object format. For the +sake of compatibility, `as' accepts it, but produces no output, when +configured for COFF. + + +File: as.info, Node: Dim, Next: Double, Prev: Desc, Up: Pseudo Ops + +7.36 `.dim' +=========== + +This directive is generated by compilers to include auxiliary debugging +information in the symbol table. It is only permitted inside +`.def'/`.endef' pairs. + + +File: as.info, Node: Double, Next: Eject, Prev: Dim, Up: Pseudo Ops + +7.37 `.double FLONUMS' +====================== + +`.double' expects zero or more flonums, separated by commas. It +assembles floating point numbers. The exact kind of floating point +numbers emitted depends on how `as' is configured. *Note Machine +Dependencies::. + + +File: as.info, Node: Eject, Next: Else, Prev: Double, Up: Pseudo Ops + +7.38 `.eject' +============= + +Force a page break at this point, when generating assembly listings. + + +File: as.info, Node: Else, Next: Elseif, Prev: Eject, Up: Pseudo Ops + +7.39 `.else' +============ + +`.else' is part of the `as' support for conditional assembly; see *Note +`.if': If. It marks the beginning of a section of code to be assembled +if the condition for the preceding `.if' was false. + + +File: as.info, Node: Elseif, Next: End, Prev: Else, Up: Pseudo Ops + +7.40 `.elseif' +============== + +`.elseif' is part of the `as' support for conditional assembly; see +*Note `.if': If. It is shorthand for beginning a new `.if' block that +would otherwise fill the entire `.else' section. + + +File: as.info, Node: End, Next: Endef, Prev: Elseif, Up: Pseudo Ops + +7.41 `.end' +=========== + +`.end' marks the end of the assembly file. `as' does not process +anything in the file past the `.end' directive. + + +File: as.info, Node: Endef, Next: Endfunc, Prev: End, Up: Pseudo Ops + +7.42 `.endef' +============= + +This directive flags the end of a symbol definition begun with `.def'. + + +File: as.info, Node: Endfunc, Next: Endif, Prev: Endef, Up: Pseudo Ops + +7.43 `.endfunc' +=============== + +`.endfunc' marks the end of a function specified with `.func'. + + +File: as.info, Node: Endif, Next: Equ, Prev: Endfunc, Up: Pseudo Ops + +7.44 `.endif' +============= + +`.endif' is part of the `as' support for conditional assembly; it marks +the end of a block of code that is only assembled conditionally. *Note +`.if': If. + + +File: as.info, Node: Equ, Next: Equiv, Prev: Endif, Up: Pseudo Ops + +7.45 `.equ SYMBOL, EXPRESSION' +============================== + +This directive sets the value of SYMBOL to EXPRESSION. It is +synonymous with `.set'; see *Note `.set': Set. + + The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'. + + The syntax for `equ' on the Z80 is `SYMBOL equ EXPRESSION'. On the +Z80 it is an eror if SYMBOL is already defined, but the symbol is not +protected from later redefinition. Compare *Note Equiv::. + + +File: as.info, Node: Equiv, Next: Eqv, Prev: Equ, Up: Pseudo Ops + +7.46 `.equiv SYMBOL, EXPRESSION' +================================ + +The `.equiv' directive is like `.equ' and `.set', except that the +assembler will signal an error if SYMBOL is already defined. Note a +symbol which has been referenced but not actually defined is considered +to be undefined. + + Except for the contents of the error message, this is roughly +equivalent to + .ifdef SYM + .err + .endif + .equ SYM,VAL + plus it protects the symbol from later redefinition. + + +File: as.info, Node: Eqv, Next: Err, Prev: Equiv, Up: Pseudo Ops + +7.47 `.eqv SYMBOL, EXPRESSION' +============================== + +The `.eqv' directive is like `.equiv', but no attempt is made to +evaluate the expression or any part of it immediately. Instead each +time the resulting symbol is used in an expression, a snapshot of its +current value is taken. + + +File: as.info, Node: Err, Next: Error, Prev: Eqv, Up: Pseudo Ops + +7.48 `.err' +=========== + +If `as' assembles a `.err' directive, it will print an error message +and, unless the `-Z' option was used, it will not generate an object +file. This can be used to signal an error in conditionally compiled +code. + + +File: as.info, Node: Error, Next: Exitm, Prev: Err, Up: Pseudo Ops + +7.49 `.error "STRING"' +====================== + +Similarly to `.err', this directive emits an error, but you can specify +a string that will be emitted as the error message. If you don't +specify the message, it defaults to `".error directive invoked in +source file"'. *Note Error and Warning Messages: Errors. + + .error "This code has not been assembled and tested." + + +File: as.info, Node: Exitm, Next: Extern, Prev: Error, Up: Pseudo Ops + +7.50 `.exitm' +============= + +Exit early from the current macro definition. *Note Macro::. + + +File: as.info, Node: Extern, Next: Fail, Prev: Exitm, Up: Pseudo Ops + +7.51 `.extern' +============== + +`.extern' is accepted in the source program--for compatibility with +other assemblers--but it is ignored. `as' treats all undefined symbols +as external. + + +File: as.info, Node: Fail, Next: File, Prev: Extern, Up: Pseudo Ops + +7.52 `.fail EXPRESSION' +======================= + +Generates an error or a warning. If the value of the EXPRESSION is 500 +or more, `as' will print a warning message. If the value is less than +500, `as' will print an error message. The message will include the +value of EXPRESSION. This can occasionally be useful inside complex +nested macros or conditional assembly. + + +File: as.info, Node: File, Next: Fill, Prev: Fail, Up: Pseudo Ops + +7.53 `.file' +============ + +There are two different versions of the `.file' directive. Targets +that support DWARF2 line number information use the DWARF2 version of +`.file'. Other targets use the default version. + +Default Version +--------------- + +This version of the `.file' directive tells `as' that we are about to +start a new logical file. The syntax is: + + .file STRING + + STRING is the new file name. In general, the filename is recognized +whether or not it is surrounded by quotes `"'; but if you wish to +specify an empty file name, you must give the quotes-`""'. This +statement may go away in future: it is only recognized to be compatible +with old `as' programs. + +DWARF2 Version +-------------- + +When emitting DWARF2 line number information, `.file' assigns filenames +to the `.debug_line' file name table. The syntax is: + + .file FILENO FILENAME + + The FILENO operand should be a unique positive integer to use as the +index of the entry in the table. The FILENAME operand is a C string +literal. + + The detail of filename indices is exposed to the user because the +filename table is shared with the `.debug_info' section of the DWARF2 +debugging information, and thus the user must know the exact indices +that table entries will have. + + +File: as.info, Node: Fill, Next: Float, Prev: File, Up: Pseudo Ops + +7.54 `.fill REPEAT , SIZE , VALUE' +================================== + +REPEAT, SIZE and VALUE are absolute expressions. This emits REPEAT +copies of SIZE bytes. REPEAT may be zero or more. SIZE may be zero or +more, but if it is more than 8, then it is deemed to have the value 8, +compatible with other people's assemblers. The contents of each REPEAT +bytes is taken from an 8-byte number. The highest order 4 bytes are +zero. The lowest order 4 bytes are VALUE rendered in the byte-order of +an integer on the computer `as' is assembling for. Each SIZE bytes in +a repetition is taken from the lowest order SIZE bytes of this number. +Again, this bizarre behavior is compatible with other people's +assemblers. + + SIZE and VALUE are optional. If the second comma and VALUE are +absent, VALUE is assumed zero. If the first comma and following tokens +are absent, SIZE is assumed to be 1. + + +File: as.info, Node: Float, Next: Func, Prev: Fill, Up: Pseudo Ops + +7.55 `.float FLONUMS' +===================== + +This directive assembles zero or more flonums, separated by commas. It +has the same effect as `.single'. The exact kind of floating point +numbers emitted depends on how `as' is configured. *Note Machine +Dependencies::. + + +File: as.info, Node: Func, Next: Global, Prev: Float, Up: Pseudo Ops + +7.56 `.func NAME[,LABEL]' +========================= + +`.func' emits debugging information to denote function NAME, and is +ignored unless the file is assembled with debugging enabled. Only +`--gstabs[+]' is currently supported. LABEL is the entry point of the +function and if omitted NAME prepended with the `leading char' is used. +`leading char' is usually `_' or nothing, depending on the target. All +functions are currently defined to have `void' return type. The +function must be terminated with `.endfunc'. + + +File: as.info, Node: Global, Next: Gnu_attribute, Prev: Func, Up: Pseudo Ops + +7.57 `.global SYMBOL', `.globl SYMBOL' +====================================== + +`.global' makes the symbol visible to `ld'. If you define SYMBOL in +your partial program, its value is made available to other partial +programs that are linked with it. Otherwise, SYMBOL takes its +attributes from a symbol of the same name from another file linked into +the same program. + + Both spellings (`.globl' and `.global') are accepted, for +compatibility with other assemblers. + + On the HPPA, `.global' is not always enough to make it accessible to +other partial programs. You may need the HPPA-only `.EXPORT' directive +as well. *Note HPPA Assembler Directives: HPPA Directives. + + +File: as.info, Node: Gnu_attribute, Next: Hidden, Prev: Global, Up: Pseudo Ops + +7.58 `.gnu_attribute TAG,VALUE' +=============================== + +Record a GNU object attribute for this file. *Note Object Attributes::. + + +File: as.info, Node: Hidden, Next: hword, Prev: Gnu_attribute, Up: Pseudo Ops + +7.59 `.hidden NAMES' +==================== + +This is one of the ELF visibility directives. The other two are +`.internal' (*note `.internal': Internal.) and `.protected' (*note +`.protected': Protected.). + + This directive overrides the named symbols default visibility (which +is set by their binding: local, global or weak). The directive sets +the visibility to `hidden' which means that the symbols are not visible +to other components. Such symbols are always considered to be +`protected' as well. + + +File: as.info, Node: hword, Next: Ident, Prev: Hidden, Up: Pseudo Ops + +7.60 `.hword EXPRESSIONS' +========================= + +This expects zero or more EXPRESSIONS, and emits a 16 bit number for +each. + + This directive is a synonym for `.short'; depending on the target +architecture, it may also be a synonym for `.word'. + + +File: as.info, Node: Ident, Next: If, Prev: hword, Up: Pseudo Ops + +7.61 `.ident' +============= + +This directive is used by some assemblers to place tags in object +files. The behavior of this directive varies depending on the target. +When using the a.out object file format, `as' simply accepts the +directive for source-file compatibility with existing assemblers, but +does not emit anything for it. When using COFF, comments are emitted +to the `.comment' or `.rdata' section, depending on the target. When +using ELF, comments are emitted to the `.comment' section. + + +File: as.info, Node: If, Next: Incbin, Prev: Ident, Up: Pseudo Ops + +7.62 `.if ABSOLUTE EXPRESSION' +============================== + +`.if' marks the beginning of a section of code which is only considered +part of the source program being assembled if the argument (which must +be an ABSOLUTE EXPRESSION) is non-zero. The end of the conditional +section of code must be marked by `.endif' (*note `.endif': Endif.); +optionally, you may include code for the alternative condition, flagged +by `.else' (*note `.else': Else.). If you have several conditions to +check, `.elseif' may be used to avoid nesting blocks if/else within +each subsequent `.else' block. + + The following variants of `.if' are also supported: +`.ifdef SYMBOL' + Assembles the following section of code if the specified SYMBOL + has been defined. Note a symbol which has been referenced but not + yet defined is considered to be undefined. + +`.ifb TEXT' + Assembles the following section of code if the operand is blank + (empty). + +`.ifc STRING1,STRING2' + Assembles the following section of code if the two strings are the + same. The strings may be optionally quoted with single quotes. + If they are not quoted, the first string stops at the first comma, + and the second string stops at the end of the line. Strings which + contain whitespace should be quoted. The string comparison is + case sensitive. + +`.ifeq ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is zero. + +`.ifeqs STRING1,STRING2' + Another form of `.ifc'. The strings must be quoted using double + quotes. + +`.ifge ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is greater + than or equal to zero. + +`.ifgt ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is greater + than zero. + +`.ifle ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is less + than or equal to zero. + +`.iflt ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is less + than zero. + +`.ifnb TEXT' + Like `.ifb', but the sense of the test is reversed: this assembles + the following section of code if the operand is non-blank + (non-empty). + +`.ifnc STRING1,STRING2.' + Like `.ifc', but the sense of the test is reversed: this assembles + the following section of code if the two strings are not the same. + +`.ifndef SYMBOL' +`.ifnotdef SYMBOL' + Assembles the following section of code if the specified SYMBOL + has not been defined. Both spelling variants are equivalent. + Note a symbol which has been referenced but not yet defined is + considered to be undefined. + +`.ifne ABSOLUTE EXPRESSION' + Assembles the following section of code if the argument is not + equal to zero (in other words, this is equivalent to `.if'). + +`.ifnes STRING1,STRING2' + Like `.ifeqs', but the sense of the test is reversed: this + assembles the following section of code if the two strings are not + the same. + + +File: as.info, Node: Incbin, Next: Include, Prev: If, Up: Pseudo Ops + +7.63 `.incbin "FILE"[,SKIP[,COUNT]]' +==================================== + +The `incbin' directive includes FILE verbatim at the current location. +You can control the search paths used with the `-I' command-line option +(*note Command-Line Options: Invoking.). Quotation marks are required +around FILE. + + The SKIP argument skips a number of bytes from the start of the +FILE. The COUNT argument indicates the maximum number of bytes to +read. Note that the data is not aligned in any way, so it is the user's +responsibility to make sure that proper alignment is provided both +before and after the `incbin' directive. + + +File: as.info, Node: Include, Next: Int, Prev: Incbin, Up: Pseudo Ops + +7.64 `.include "FILE"' +====================== + +This directive provides a way to include supporting files at specified +points in your source program. The code from FILE is assembled as if +it followed the point of the `.include'; when the end of the included +file is reached, assembly of the original file continues. You can +control the search paths used with the `-I' command-line option (*note +Command-Line Options: Invoking.). Quotation marks are required around +FILE. + + +File: as.info, Node: Int, Next: Internal, Prev: Include, Up: Pseudo Ops + +7.65 `.int EXPRESSIONS' +======================= + +Expect zero or more EXPRESSIONS, of any section, separated by commas. +For each expression, emit a number that, at run time, is the value of +that expression. The byte order and bit size of the number depends on +what kind of target the assembly is for. + + +File: as.info, Node: Internal, Next: Irp, Prev: Int, Up: Pseudo Ops + +7.66 `.internal NAMES' +====================== + +This is one of the ELF visibility directives. The other two are +`.hidden' (*note `.hidden': Hidden.) and `.protected' (*note +`.protected': Protected.). + + This directive overrides the named symbols default visibility (which +is set by their binding: local, global or weak). The directive sets +the visibility to `internal' which means that the symbols are +considered to be `hidden' (i.e., not visible to other components), and +that some extra, processor specific processing must also be performed +upon the symbols as well. + + +File: as.info, Node: Irp, Next: Irpc, Prev: Internal, Up: Pseudo Ops + +7.67 `.irp SYMBOL,VALUES'... +============================ + +Evaluate a sequence of statements assigning different values to SYMBOL. +The sequence of statements starts at the `.irp' directive, and is +terminated by an `.endr' directive. For each VALUE, SYMBOL is set to +VALUE, and the sequence of statements is assembled. If no VALUE is +listed, the sequence of statements is assembled once, with SYMBOL set +to the null string. To refer to SYMBOL within the sequence of +statements, use \SYMBOL. + + For example, assembling + + .irp param,1,2,3 + move d\param,sp@- + .endr + + is equivalent to assembling + + move d1,sp@- + move d2,sp@- + move d3,sp@- + + For some caveats with the spelling of SYMBOL, see also *Note Macro::. + + +File: as.info, Node: Irpc, Next: Lcomm, Prev: Irp, Up: Pseudo Ops + +7.68 `.irpc SYMBOL,VALUES'... +============================= + +Evaluate a sequence of statements assigning different values to SYMBOL. +The sequence of statements starts at the `.irpc' directive, and is +terminated by an `.endr' directive. For each character in VALUE, +SYMBOL is set to the character, and the sequence of statements is +assembled. If no VALUE is listed, the sequence of statements is +assembled once, with SYMBOL set to the null string. To refer to SYMBOL +within the sequence of statements, use \SYMBOL. + + For example, assembling + + .irpc param,123 + move d\param,sp@- + .endr + + is equivalent to assembling + + move d1,sp@- + move d2,sp@- + move d3,sp@- + + For some caveats with the spelling of SYMBOL, see also the discussion +at *Note Macro::. + + +File: as.info, Node: Lcomm, Next: Lflags, Prev: Irpc, Up: Pseudo Ops + +7.69 `.lcomm SYMBOL , LENGTH' +============================= + +Reserve LENGTH (an absolute expression) bytes for a local common +denoted by SYMBOL. The section and value of SYMBOL are those of the +new local common. The addresses are allocated in the bss section, so +that at run-time the bytes start off zeroed. SYMBOL is not declared +global (*note `.global': Global.), so is normally not visible to `ld'. + + Some targets permit a third argument to be used with `.lcomm'. This +argument specifies the desired alignment of the symbol in the bss +section. + + The syntax for `.lcomm' differs slightly on the HPPA. The syntax is +`SYMBOL .lcomm, LENGTH'; SYMBOL is optional. + + +File: as.info, Node: Lflags, Next: Line, Prev: Lcomm, Up: Pseudo Ops + +7.70 `.lflags' +============== + +`as' accepts this directive, for compatibility with other assemblers, +but ignores it. + + +File: as.info, Node: Line, Next: Linkonce, Prev: Lflags, Up: Pseudo Ops + +7.71 `.line LINE-NUMBER' +======================== + +Change the logical line number. LINE-NUMBER must be an absolute +expression. The next line has that logical line number. Therefore any +other statements on the current line (after a statement separator +character) are reported as on logical line number LINE-NUMBER - 1. One +day `as' will no longer support this directive: it is recognized only +for compatibility with existing assembler programs. + +Even though this is a directive associated with the `a.out' or `b.out' +object-code formats, `as' still recognizes it when producing COFF +output, and treats `.line' as though it were the COFF `.ln' _if_ it is +found outside a `.def'/`.endef' pair. + + Inside a `.def', `.line' is, instead, one of the directives used by +compilers to generate auxiliary symbol information for debugging. + + +File: as.info, Node: Linkonce, Next: List, Prev: Line, Up: Pseudo Ops + +7.72 `.linkonce [TYPE]' +======================= + +Mark the current section so that the linker only includes a single copy +of it. This may be used to include the same section in several +different object files, but ensure that the linker will only include it +once in the final output file. The `.linkonce' pseudo-op must be used +for each instance of the section. Duplicate sections are detected +based on the section name, so it should be unique. + + This directive is only supported by a few object file formats; as of +this writing, the only object file format which supports it is the +Portable Executable format used on Windows NT. + + The TYPE argument is optional. If specified, it must be one of the +following strings. For example: + .linkonce same_size + Not all types may be supported on all object file formats. + +`discard' + Silently discard duplicate sections. This is the default. + +`one_only' + Warn if there are duplicate sections, but still keep only one copy. + +`same_size' + Warn if any of the duplicates have different sizes. + +`same_contents' + Warn if any of the duplicates do not have exactly the same + contents. + + +File: as.info, Node: List, Next: Ln, Prev: Linkonce, Up: Pseudo Ops + +7.73 `.list' +============ + +Control (in conjunction with the `.nolist' directive) whether or not +assembly listings are generated. These two directives maintain an +internal counter (which is zero initially). `.list' increments the +counter, and `.nolist' decrements it. Assembly listings are generated +whenever the counter is greater than zero. + + By default, listings are disabled. When you enable them (with the +`-a' command line option; *note Command-Line Options: Invoking.), the +initial value of the listing counter is one. + + +File: as.info, Node: Ln, Next: Loc, Prev: List, Up: Pseudo Ops + +7.74 `.ln LINE-NUMBER' +====================== + +`.ln' is a synonym for `.line'. + + +File: as.info, Node: Loc, Next: Loc_mark_labels, Prev: Ln, Up: Pseudo Ops + +7.75 `.loc FILENO LINENO [COLUMN] [OPTIONS]' +============================================ + +When emitting DWARF2 line number information, the `.loc' directive will +add a row to the `.debug_line' line number matrix corresponding to the +immediately following assembly instruction. The FILENO, LINENO, and +optional COLUMN arguments will be applied to the `.debug_line' state +machine before the row is added. + + The OPTIONS are a sequence of the following tokens in any order: + +`basic_block' + This option will set the `basic_block' register in the + `.debug_line' state machine to `true'. + +`prologue_end' + This option will set the `prologue_end' register in the + `.debug_line' state machine to `true'. + +`epilogue_begin' + This option will set the `epilogue_begin' register in the + `.debug_line' state machine to `true'. + +`is_stmt VALUE' + This option will set the `is_stmt' register in the `.debug_line' + state machine to `value', which must be either 0 or 1. + +`isa VALUE' + This directive will set the `isa' register in the `.debug_line' + state machine to VALUE, which must be an unsigned integer. + +`discriminator VALUE' + This directive will set the `discriminator' register in the + `.debug_line' state machine to VALUE, which must be an unsigned + integer. + + + +File: as.info, Node: Loc_mark_labels, Next: Local, Prev: Loc, Up: Pseudo Ops + +7.76 `.loc_mark_labels ENABLE' +============================== + +When emitting DWARF2 line number information, the `.loc_mark_labels' +directive makes the assembler emit an entry to the `.debug_line' line +number matrix with the `basic_block' register in the state machine set +whenever a code label is seen. The ENABLE argument should be either 1 +or 0, to enable or disable this function respectively. + + +File: as.info, Node: Local, Next: Long, Prev: Loc_mark_labels, Up: Pseudo Ops + +7.77 `.local NAMES' +=================== + +This directive, which is available for ELF targets, marks each symbol in +the comma-separated list of `names' as a local symbol so that it will +not be externally visible. If the symbols do not already exist, they +will be created. + + For targets where the `.lcomm' directive (*note Lcomm::) does not +accept an alignment argument, which is the case for most ELF targets, +the `.local' directive can be used in combination with `.comm' (*note +Comm::) to define aligned local common data. + + +File: as.info, Node: Long, Next: Macro, Prev: Local, Up: Pseudo Ops + +7.78 `.long EXPRESSIONS' +======================== + +`.long' is the same as `.int'. *Note `.int': Int. + + +File: as.info, Node: Macro, Next: MRI, Prev: Long, Up: Pseudo Ops + +7.79 `.macro' +============= + +The commands `.macro' and `.endm' allow you to define macros that +generate assembly output. For example, this definition specifies a +macro `sum' that puts a sequence of numbers into memory: + + .macro sum from=0, to=5 + .long \from + .if \to-\from + sum "(\from+1)",\to + .endif + .endm + +With that definition, `SUM 0,5' is equivalent to this assembly input: + + .long 0 + .long 1 + .long 2 + .long 3 + .long 4 + .long 5 + +`.macro MACNAME' +`.macro MACNAME MACARGS ...' + Begin the definition of a macro called MACNAME. If your macro + definition requires arguments, specify their names after the macro + name, separated by commas or spaces. You can qualify the macro + argument to indicate whether all invocations must specify a + non-blank value (through `:`req''), or whether it takes all of the + remaining arguments (through `:`vararg''). You can supply a + default value for any macro argument by following the name with + `=DEFLT'. You cannot define two macros with the same MACNAME + unless it has been subject to the `.purgem' directive (*note + Purgem::) between the two definitions. For example, these are all + valid `.macro' statements: + + `.macro comm' + Begin the definition of a macro called `comm', which takes no + arguments. + + `.macro plus1 p, p1' + `.macro plus1 p p1' + Either statement begins the definition of a macro called + `plus1', which takes two arguments; within the macro + definition, write `\p' or `\p1' to evaluate the arguments. + + `.macro reserve_str p1=0 p2' + Begin the definition of a macro called `reserve_str', with two + arguments. The first argument has a default value, but not + the second. After the definition is complete, you can call + the macro either as `reserve_str A,B' (with `\p1' evaluating + to A and `\p2' evaluating to B), or as `reserve_str ,B' (with + `\p1' evaluating as the default, in this case `0', and `\p2' + evaluating to B). + + `.macro m p1:req, p2=0, p3:vararg' + Begin the definition of a macro called `m', with at least + three arguments. The first argument must always have a value + specified, but not the second, which instead has a default + value. The third formal will get assigned all remaining + arguments specified at invocation time. + + When you call a macro, you can specify the argument values + either by position, or by keyword. For example, `sum 9,17' + is equivalent to `sum to=17, from=9'. + + + Note that since each of the MACARGS can be an identifier exactly + as any other one permitted by the target architecture, there may be + occasional problems if the target hand-crafts special meanings to + certain characters when they occur in a special position. For + example, if the colon (`:') is generally permitted to be part of a + symbol name, but the architecture specific code special-cases it + when occurring as the final character of a symbol (to denote a + label), then the macro parameter replacement code will have no way + of knowing that and consider the whole construct (including the + colon) an identifier, and check only this identifier for being the + subject to parameter substitution. So for example this macro + definition: + + .macro label l + \l: + .endm + + might not work as expected. Invoking `label foo' might not create + a label called `foo' but instead just insert the text `\l:' into + the assembler source, probably generating an error about an + unrecognised identifier. + + Similarly problems might occur with the period character (`.') + which is often allowed inside opcode names (and hence identifier + names). So for example constructing a macro to build an opcode + from a base name and a length specifier like this: + + .macro opcode base length + \base.\length + .endm + + and invoking it as `opcode store l' will not create a `store.l' + instruction but instead generate some kind of error as the + assembler tries to interpret the text `\base.\length'. + + There are several possible ways around this problem: + + `Insert white space' + If it is possible to use white space characters then this is + the simplest solution. eg: + + .macro label l + \l : + .endm + + `Use `\()'' + The string `\()' can be used to separate the end of a macro + argument from the following text. eg: + + .macro opcode base length + \base\().\length + .endm + + `Use the alternate macro syntax mode' + In the alternative macro syntax mode the ampersand character + (`&') can be used as a separator. eg: + + .altmacro + .macro label l + l&: + .endm + + Note: this problem of correctly identifying string parameters to + pseudo ops also applies to the identifiers used in `.irp' (*note + Irp::) and `.irpc' (*note Irpc::) as well. + +`.endm' + Mark the end of a macro definition. + +`.exitm' + Exit early from the current macro definition. + +`\@' + `as' maintains a counter of how many macros it has executed in + this pseudo-variable; you can copy that number to your output with + `\@', but _only within a macro definition_. + +`LOCAL NAME [ , ... ]' + _Warning: `LOCAL' is only available if you select "alternate macro + syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro': + Altmacro. + + +File: as.info, Node: MRI, Next: Noaltmacro, Prev: Macro, Up: Pseudo Ops + +7.80 `.mri VAL' +=============== + +If VAL is non-zero, this tells `as' to enter MRI mode. If VAL is zero, +this tells `as' to exit MRI mode. This change affects code assembled +until the next `.mri' directive, or until the end of the file. *Note +MRI mode: M. + + +File: as.info, Node: Noaltmacro, Next: Nolist, Prev: MRI, Up: Pseudo Ops + +7.81 `.noaltmacro' +================== + +Disable alternate macro mode. *Note Altmacro::. + + +File: as.info, Node: Nolist, Next: Octa, Prev: Noaltmacro, Up: Pseudo Ops + +7.82 `.nolist' +============== + +Control (in conjunction with the `.list' directive) whether or not +assembly listings are generated. These two directives maintain an +internal counter (which is zero initially). `.list' increments the +counter, and `.nolist' decrements it. Assembly listings are generated +whenever the counter is greater than zero. + + +File: as.info, Node: Octa, Next: Offset, Prev: Nolist, Up: Pseudo Ops + +7.83 `.octa BIGNUMS' +==================== + +This directive expects zero or more bignums, separated by commas. For +each bignum, it emits a 16-byte integer. + + The term "octa" comes from contexts in which a "word" is two bytes; +hence _octa_-word for 16 bytes. + + +File: as.info, Node: Offset, Next: Org, Prev: Octa, Up: Pseudo Ops + +7.84 `.offset LOC' +================== + +Set the location counter to LOC in the absolute section. LOC must be +an absolute expression. This directive may be useful for defining +symbols with absolute values. Do not confuse it with the `.org' +directive. + + +File: as.info, Node: Org, Next: P2align, Prev: Offset, Up: Pseudo Ops + +7.85 `.org NEW-LC , FILL' +========================= + +Advance the location counter of the current section to NEW-LC. NEW-LC +is either an absolute expression or an expression with the same section +as the current subsection. That is, you can't use `.org' to cross +sections: if NEW-LC has the wrong section, the `.org' directive is +ignored. To be compatible with former assemblers, if the section of +NEW-LC is absolute, `as' issues a warning, then pretends the section of +NEW-LC is the same as the current subsection. + + `.org' may only increase the location counter, or leave it +unchanged; you cannot use `.org' to move the location counter backwards. + + Because `as' tries to assemble programs in one pass, NEW-LC may not +be undefined. If you really detest this restriction we eagerly await a +chance to share your improved assembler. + + Beware that the origin is relative to the start of the section, not +to the start of the subsection. This is compatible with other people's +assemblers. + + When the location counter (of the current subsection) is advanced, +the intervening bytes are filled with FILL which should be an absolute +expression. If the comma and FILL are omitted, FILL defaults to zero. + + +File: as.info, Node: P2align, Next: PopSection, Prev: Org, Up: Pseudo Ops + +7.86 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR' +================================================ + +Pad the location counter (in the current subsection) to a particular +storage boundary. The first expression (which must be absolute) is the +number of low-order zero bits the location counter must have after +advancement. For example `.p2align 3' advances the location counter +until it a multiple of 8. If the location counter is already a +multiple of 8, no change is needed. + + The second expression (also absolute) gives the fill value to be +stored in the padding bytes. It (and the comma) may be omitted. If it +is omitted, the padding bytes are normally zero. However, on some +systems, if the section is marked as containing code and the fill value +is omitted, the space is filled with no-op instructions. + + The third expression is also absolute, and is also optional. If it +is present, it is the maximum number of bytes that should be skipped by +this alignment directive. If doing the alignment would require +skipping more bytes than the specified maximum, then the alignment is +not done at all. You can omit the fill value (the second argument) +entirely by simply using two commas after the required alignment; this +can be useful if you want the alignment to be filled with no-op +instructions when appropriate. + + The `.p2alignw' and `.p2alignl' directives are variants of the +`.p2align' directive. The `.p2alignw' directive treats the fill +pattern as a two byte word value. The `.p2alignl' directives treats the +fill pattern as a four byte longword value. For example, `.p2alignw +2,0x368d' will align to a multiple of 4. If it skips two bytes, they +will be filled in with the value 0x368d (the exact placement of the +bytes depends upon the endianness of the processor). If it skips 1 or +3 bytes, the fill value is undefined. + + +File: as.info, Node: PopSection, Next: Previous, Prev: P2align, Up: Pseudo Ops + +7.87 `.popsection' +================== + +This is one of the ELF section stack manipulation directives. The +others are `.section' (*note Section::), `.subsection' (*note +SubSection::), `.pushsection' (*note PushSection::), and `.previous' +(*note Previous::). + + This directive replaces the current section (and subsection) with +the top section (and subsection) on the section stack. This section is +popped off the stack. + + +File: as.info, Node: Previous, Next: Print, Prev: PopSection, Up: Pseudo Ops + +7.88 `.previous' +================ + +This is one of the ELF section stack manipulation directives. The +others are `.section' (*note Section::), `.subsection' (*note +SubSection::), `.pushsection' (*note PushSection::), and `.popsection' +(*note PopSection::). + + This directive swaps the current section (and subsection) with most +recently referenced section/subsection pair prior to this one. Multiple +`.previous' directives in a row will flip between two sections (and +their subsections). For example: + + .section A + .subsection 1 + .word 0x1234 + .subsection 2 + .word 0x5678 + .previous + .word 0x9abc + + Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into +subsection 2 of section A. Whilst: + + .section A + .subsection 1 + # Now in section A subsection 1 + .word 0x1234 + .section B + .subsection 0 + # Now in section B subsection 0 + .word 0x5678 + .subsection 1 + # Now in section B subsection 1 + .word 0x9abc + .previous + # Now in section B subsection 0 + .word 0xdef0 + + Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection +0 of section B and 0x9abc into subsection 1 of section B. + + In terms of the section stack, this directive swaps the current +section with the top section on the section stack. + + +File: as.info, Node: Print, Next: Protected, Prev: Previous, Up: Pseudo Ops + +7.89 `.print STRING' +==================== + +`as' will print STRING on the standard output during assembly. You +must put STRING in double quotes. + + +File: as.info, Node: Protected, Next: Psize, Prev: Print, Up: Pseudo Ops + +7.90 `.protected NAMES' +======================= + +This is one of the ELF visibility directives. The other two are +`.hidden' (*note Hidden::) and `.internal' (*note Internal::). + + This directive overrides the named symbols default visibility (which +is set by their binding: local, global or weak). The directive sets +the visibility to `protected' which means that any references to the +symbols from within the components that defines them must be resolved +to the definition in that component, even if a definition in another +component would normally preempt this. + + +File: as.info, Node: Psize, Next: Purgem, Prev: Protected, Up: Pseudo Ops + +7.91 `.psize LINES , COLUMNS' +============================= + +Use this directive to declare the number of lines--and, optionally, the +number of columns--to use for each page, when generating listings. + + If you do not use `.psize', listings use a default line-count of 60. +You may omit the comma and COLUMNS specification; the default width is +200 columns. + + `as' generates formfeeds whenever the specified number of lines is +exceeded (or whenever you explicitly request one, using `.eject'). + + If you specify LINES as `0', no formfeeds are generated save those +explicitly specified with `.eject'. + + +File: as.info, Node: Purgem, Next: PushSection, Prev: Psize, Up: Pseudo Ops + +7.92 `.purgem NAME' +=================== + +Undefine the macro NAME, so that later uses of the string will not be +expanded. *Note Macro::. + + +File: as.info, Node: PushSection, Next: Quad, Prev: Purgem, Up: Pseudo Ops + +7.93 `.pushsection NAME [, SUBSECTION] [, "FLAGS"[, @TYPE[,ARGUMENTS]]]' +======================================================================== + +This is one of the ELF section stack manipulation directives. The +others are `.section' (*note Section::), `.subsection' (*note +SubSection::), `.popsection' (*note PopSection::), and `.previous' +(*note Previous::). + + This directive pushes the current section (and subsection) onto the +top of the section stack, and then replaces the current section and +subsection with `name' and `subsection'. The optional `flags', `type' +and `arguments' are treated the same as in the `.section' (*note +Section::) directive. + + +File: as.info, Node: Quad, Next: Reloc, Prev: PushSection, Up: Pseudo Ops + +7.94 `.quad BIGNUMS' +==================== + +`.quad' expects zero or more bignums, separated by commas. For each +bignum, it emits an 8-byte integer. If the bignum won't fit in 8 +bytes, it prints a warning message; and just takes the lowest order 8 +bytes of the bignum. + + The term "quad" comes from contexts in which a "word" is two bytes; +hence _quad_-word for 8 bytes. + + +File: as.info, Node: Reloc, Next: Rept, Prev: Quad, Up: Pseudo Ops + +7.95 `.reloc OFFSET, RELOC_NAME[, EXPRESSION]' +============================================== + +Generate a relocation at OFFSET of type RELOC_NAME with value +EXPRESSION. If OFFSET is a number, the relocation is generated in the +current section. If OFFSET is an expression that resolves to a symbol +plus offset, the relocation is generated in the given symbol's section. +EXPRESSION, if present, must resolve to a symbol plus addend or to an +absolute value, but note that not all targets support an addend. e.g. +ELF REL targets such as i386 store an addend in the section contents +rather than in the relocation. This low level interface does not +support addends stored in the section. + + +File: as.info, Node: Rept, Next: Sbttl, Prev: Reloc, Up: Pseudo Ops + +7.96 `.rept COUNT' +================== + +Repeat the sequence of lines between the `.rept' directive and the next +`.endr' directive COUNT times. + + For example, assembling + + .rept 3 + .long 0 + .endr + + is equivalent to assembling + + .long 0 + .long 0 + .long 0 + + +File: as.info, Node: Sbttl, Next: Scl, Prev: Rept, Up: Pseudo Ops + +7.97 `.sbttl "SUBHEADING"' +========================== + +Use SUBHEADING as the title (third line, immediately after the title +line) when generating assembly listings. + + This directive affects subsequent pages, as well as the current page +if it appears within ten lines of the top of a page. + + +File: as.info, Node: Scl, Next: Section, Prev: Sbttl, Up: Pseudo Ops + +7.98 `.scl CLASS' +================= + +Set the storage-class value for a symbol. This directive may only be +used inside a `.def'/`.endef' pair. Storage class may flag whether a +symbol is static or external, or it may record further symbolic +debugging information. + + +File: as.info, Node: Section, Next: Set, Prev: Scl, Up: Pseudo Ops + +7.99 `.section NAME' +==================== + +Use the `.section' directive to assemble the following code into a +section named NAME. + + This directive is only supported for targets that actually support +arbitrarily named sections; on `a.out' targets, for example, it is not +accepted, even with a standard `a.out' section name. + +COFF Version +------------ + + For COFF targets, the `.section' directive is used in one of the +following ways: + + .section NAME[, "FLAGS"] + .section NAME[, SUBSECTION] + + If the optional argument is quoted, it is taken as flags to use for +the section. Each flag is a single character. The following flags are +recognized: +`b' + bss section (uninitialized data) + +`n' + section is not loaded + +`w' + writable section + +`d' + data section + +`e' + exclude section from linking + +`r' + read-only section + +`x' + executable section + +`s' + shared section (meaningful for PE targets) + +`a' + ignored. (For compatibility with the ELF version) + +`y' + section is not readable (meaningful for PE targets) + +`0-9' + single-digit power-of-two section alignment (GNU extension) + + If no flags are specified, the default flags depend upon the section +name. If the section name is not recognized, the default will be for +the section to be loaded and writable. Note the `n' and `w' flags +remove attributes from the section, rather than adding them, so if they +are used on their own it will be as if no flags had been specified at +all. + + If the optional argument to the `.section' directive is not quoted, +it is taken as a subsection number (*note Sub-Sections::). + +ELF Version +----------- + + This is one of the ELF section stack manipulation directives. The +others are `.subsection' (*note SubSection::), `.pushsection' (*note +PushSection::), `.popsection' (*note PopSection::), and `.previous' +(*note Previous::). + + For ELF targets, the `.section' directive is used like this: + + .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]] + + The optional FLAGS argument is a quoted string which may contain any +combination of the following characters: +`a' + section is allocatable + +`e' + section is excluded from executable and shared library. + +`w' + section is writable + +`x' + section is executable + +`M' + section is mergeable + +`S' + section contains zero terminated strings + +`G' + section is a member of a section group + +`T' + section is used for thread-local-storage + +`?' + section is a member of the previously-current section's group, if + any + + The optional TYPE argument may contain one of the following +constants: +`@progbits' + section contains data + +`@nobits' + section does not contain data (i.e., section only occupies space) + +`@note' + section contains data which is used by things other than the + program + +`@init_array' + section contains an array of pointers to init functions + +`@fini_array' + section contains an array of pointers to finish functions + +`@preinit_array' + section contains an array of pointers to pre-init functions + + Many targets only support the first three section types. + + Note on targets where the `@' character is the start of a comment (eg +ARM) then another character is used instead. For example the ARM port +uses the `%' character. + + If FLAGS contains the `M' symbol then the TYPE argument must be +specified as well as an extra argument--ENTSIZE--like this: + + .section NAME , "FLAGS"M, @TYPE, ENTSIZE + + Sections with the `M' flag but not `S' flag must contain fixed size +constants, each ENTSIZE octets long. Sections with both `M' and `S' +must contain zero terminated strings where each character is ENTSIZE +bytes long. The linker may remove duplicates within sections with the +same name, same entity size and same flags. ENTSIZE must be an +absolute expression. For sections with both `M' and `S', a string +which is a suffix of a larger string is considered a duplicate. Thus +`"def"' will be merged with `"abcdef"'; A reference to the first +`"def"' will be changed to a reference to `"abcdef"+3'. + + If FLAGS contains the `G' symbol then the TYPE argument must be +present along with an additional field like this: + + .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE] + + The GROUPNAME field specifies the name of the section group to which +this particular section belongs. The optional linkage field can +contain: +`comdat' + indicates that only one copy of this section should be retained + +`.gnu.linkonce' + an alias for comdat + + Note: if both the M and G flags are present then the fields for the +Merge flag should come first, like this: + + .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE] + + If FLAGS contains the `?' symbol then it may not also contain the +`G' symbol and the GROUPNAME or LINKAGE fields should not be present. +Instead, `?' says to consider the section that's current before this +directive. If that section used `G', then the new section will use `G' +with those same GROUPNAME and LINKAGE fields implicitly. If not, then +the `?' symbol has no effect. + + If no flags are specified, the default flags depend upon the section +name. If the section name is not recognized, the default will be for +the section to have none of the above flags: it will not be allocated +in memory, nor writable, nor executable. The section will contain data. + + For ELF targets, the assembler supports another type of `.section' +directive for compatibility with the Solaris assembler: + + .section "NAME"[, FLAGS...] + + Note that the section name is quoted. There may be a sequence of +comma separated flags: +`#alloc' + section is allocatable + +`#write' + section is writable + +`#execinstr' + section is executable + +`#exclude' + section is excluded from executable and shared library. + +`#tls' + section is used for thread local storage + + This directive replaces the current section and subsection. See the +contents of the gas testsuite directory `gas/testsuite/gas/elf' for +some examples of how this directive and the other section stack +directives work. + + +File: as.info, Node: Set, Next: Short, Prev: Section, Up: Pseudo Ops + +7.100 `.set SYMBOL, EXPRESSION' +=============================== + +Set the value of SYMBOL to EXPRESSION. This changes SYMBOL's value and +type to conform to EXPRESSION. If SYMBOL was flagged as external, it +remains flagged (*note Symbol Attributes::). + + You may `.set' a symbol many times in the same assembly. + + If you `.set' a global symbol, the value stored in the object file +is the last value stored into it. + + On Z80 `set' is a real instruction, use `SYMBOL defl EXPRESSION' +instead. + + +File: as.info, Node: Short, Next: Single, Prev: Set, Up: Pseudo Ops + +7.101 `.short EXPRESSIONS' +========================== + +`.short' is normally the same as `.word'. *Note `.word': Word. + + In some configurations, however, `.short' and `.word' generate +numbers of different lengths. *Note Machine Dependencies::. + + +File: as.info, Node: Single, Next: Size, Prev: Short, Up: Pseudo Ops + +7.102 `.single FLONUMS' +======================= + +This directive assembles zero or more flonums, separated by commas. It +has the same effect as `.float'. The exact kind of floating point +numbers emitted depends on how `as' is configured. *Note Machine +Dependencies::. + + +File: as.info, Node: Size, Next: Skip, Prev: Single, Up: Pseudo Ops + +7.103 `.size' +============= + +This directive is used to set the size associated with a symbol. + +COFF Version +------------ + + For COFF targets, the `.size' directive is only permitted inside +`.def'/`.endef' pairs. It is used like this: + + .size EXPRESSION + +ELF Version +----------- + + For ELF targets, the `.size' directive is used like this: + + .size NAME , EXPRESSION + + This directive sets the size associated with a symbol NAME. The +size in bytes is computed from EXPRESSION which can make use of label +arithmetic. This directive is typically used to set the size of +function symbols. + + +File: as.info, Node: Skip, Next: Sleb128, Prev: Size, Up: Pseudo Ops + +7.104 `.skip SIZE , FILL' +========================= + +This directive emits SIZE bytes, each of value FILL. Both SIZE and +FILL are absolute expressions. If the comma and FILL are omitted, FILL +is assumed to be zero. This is the same as `.space'. + + +File: as.info, Node: Sleb128, Next: Space, Prev: Skip, Up: Pseudo Ops + +7.105 `.sleb128 EXPRESSIONS' +============================ + +SLEB128 stands for "signed little endian base 128." This is a compact, +variable length representation of numbers used by the DWARF symbolic +debugging format. *Note `.uleb128': Uleb128. + + +File: as.info, Node: Space, Next: Stab, Prev: Sleb128, Up: Pseudo Ops + +7.106 `.space SIZE , FILL' +========================== + +This directive emits SIZE bytes, each of value FILL. Both SIZE and +FILL are absolute expressions. If the comma and FILL are omitted, FILL +is assumed to be zero. This is the same as `.skip'. + + _Warning:_ `.space' has a completely different meaning for HPPA + targets; use `.block' as a substitute. See `HP9000 Series 800 + Assembly Language Reference Manual' (HP 92432-90001) for the + meaning of the `.space' directive. *Note HPPA Assembler + Directives: HPPA Directives, for a summary. + + +File: as.info, Node: Stab, Next: String, Prev: Space, Up: Pseudo Ops + +7.107 `.stabd, .stabn, .stabs' +============================== + +There are three directives that begin `.stab'. All emit symbols (*note +Symbols::), for use by symbolic debuggers. The symbols are not entered +in the `as' hash table: they cannot be referenced elsewhere in the +source file. Up to five fields are required: + +STRING + This is the symbol's name. It may contain any character except + `\000', so is more general than ordinary symbol names. Some + debuggers used to code arbitrarily complex structures into symbol + names using this field. + +TYPE + An absolute expression. The symbol's type is set to the low 8 + bits of this expression. Any bit pattern is permitted, but `ld' + and debuggers choke on silly bit patterns. + +OTHER + An absolute expression. The symbol's "other" attribute is set to + the low 8 bits of this expression. + +DESC + An absolute expression. The symbol's descriptor is set to the low + 16 bits of this expression. + +VALUE + An absolute expression which becomes the symbol's value. + + If a warning is detected while reading a `.stabd', `.stabn', or +`.stabs' statement, the symbol has probably already been created; you +get a half-formed symbol in your object file. This is compatible with +earlier assemblers! + +`.stabd TYPE , OTHER , DESC' + The "name" of the symbol generated is not even an empty string. + It is a null pointer, for compatibility. Older assemblers used a + null pointer so they didn't waste space in object files with empty + strings. + + The symbol's value is set to the location counter, relocatably. + When your program is linked, the value of this symbol is the + address of the location counter when the `.stabd' was assembled. + +`.stabn TYPE , OTHER , DESC , VALUE' + The name of the symbol is set to the empty string `""'. + +`.stabs STRING , TYPE , OTHER , DESC , VALUE' + All five fields are specified. + + +File: as.info, Node: String, Next: Struct, Prev: Stab, Up: Pseudo Ops + +7.108 `.string' "STR", `.string8' "STR", `.string16' +==================================================== + +"STR", `.string32' "STR", `.string64' "STR" + + Copy the characters in STR to the object file. You may specify more +than one string to copy, separated by commas. Unless otherwise +specified for a particular machine, the assembler marks the end of each +string with a 0 byte. You can use any of the escape sequences +described in *Note Strings: Strings. + + The variants `string16', `string32' and `string64' differ from the +`string' pseudo opcode in that each 8-bit character from STR is copied +and expanded to 16, 32 or 64 bits respectively. The expanded characters +are stored in target endianness byte order. + + Example: + .string32 "BYE" + expands to: + .string "B\0\0\0Y\0\0\0E\0\0\0" /* On little endian targets. */ + .string "\0\0\0B\0\0\0Y\0\0\0E" /* On big endian targets. */ + + +File: as.info, Node: Struct, Next: SubSection, Prev: String, Up: Pseudo Ops + +7.109 `.struct EXPRESSION' +========================== + +Switch to the absolute section, and set the section offset to +EXPRESSION, which must be an absolute expression. You might use this +as follows: + .struct 0 + field1: + .struct field1 + 4 + field2: + .struct field2 + 4 + field3: + This would define the symbol `field1' to have the value 0, the symbol +`field2' to have the value 4, and the symbol `field3' to have the value +8. Assembly would be left in the absolute section, and you would need +to use a `.section' directive of some sort to change to some other +section before further assembly. + + +File: as.info, Node: SubSection, Next: Symver, Prev: Struct, Up: Pseudo Ops + +7.110 `.subsection NAME' +======================== + +This is one of the ELF section stack manipulation directives. The +others are `.section' (*note Section::), `.pushsection' (*note +PushSection::), `.popsection' (*note PopSection::), and `.previous' +(*note Previous::). + + This directive replaces the current subsection with `name'. The +current section is not changed. The replaced subsection is put onto +the section stack in place of the then current top of stack subsection. + + +File: as.info, Node: Symver, Next: Tag, Prev: SubSection, Up: Pseudo Ops + +7.111 `.symver' +=============== + +Use the `.symver' directive to bind symbols to specific version nodes +within a source file. This is only supported on ELF platforms, and is +typically used when assembling files to be linked into a shared library. +There are cases where it may make sense to use this in objects to be +bound into an application itself so as to override a versioned symbol +from a shared library. + + For ELF targets, the `.symver' directive can be used like this: + .symver NAME, NAME2@NODENAME + If the symbol NAME is defined within the file being assembled, the +`.symver' directive effectively creates a symbol alias with the name +NAME2@NODENAME, and in fact the main reason that we just don't try and +create a regular alias is that the @ character isn't permitted in +symbol names. The NAME2 part of the name is the actual name of the +symbol by which it will be externally referenced. The name NAME itself +is merely a name of convenience that is used so that it is possible to +have definitions for multiple versions of a function within a single +source file, and so that the compiler can unambiguously know which +version of a function is being mentioned. The NODENAME portion of the +alias should be the name of a node specified in the version script +supplied to the linker when building a shared library. If you are +attempting to override a versioned symbol from a shared library, then +NODENAME should correspond to the nodename of the symbol you are trying +to override. + + If the symbol NAME is not defined within the file being assembled, +all references to NAME will be changed to NAME2@NODENAME. If no +reference to NAME is made, NAME2@NODENAME will be removed from the +symbol table. + + Another usage of the `.symver' directive is: + .symver NAME, NAME2@@NODENAME + In this case, the symbol NAME must exist and be defined within the +file being assembled. It is similar to NAME2@NODENAME. The difference +is NAME2@@NODENAME will also be used to resolve references to NAME2 by +the linker. + + The third usage of the `.symver' directive is: + .symver NAME, NAME2@@@NODENAME + When NAME is not defined within the file being assembled, it is +treated as NAME2@NODENAME. When NAME is defined within the file being +assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME. + + +File: as.info, Node: Tag, Next: Text, Prev: Symver, Up: Pseudo Ops + +7.112 `.tag STRUCTNAME' +======================= + +This directive is generated by compilers to include auxiliary debugging +information in the symbol table. It is only permitted inside +`.def'/`.endef' pairs. Tags are used to link structure definitions in +the symbol table with instances of those structures. + + +File: as.info, Node: Text, Next: Title, Prev: Tag, Up: Pseudo Ops + +7.113 `.text SUBSECTION' +======================== + +Tells `as' to assemble the following statements onto the end of the +text subsection numbered SUBSECTION, which is an absolute expression. +If SUBSECTION is omitted, subsection number zero is used. + + +File: as.info, Node: Title, Next: Type, Prev: Text, Up: Pseudo Ops + +7.114 `.title "HEADING"' +======================== + +Use HEADING as the title (second line, immediately after the source +file name and pagenumber) when generating assembly listings. + + This directive affects subsequent pages, as well as the current page +if it appears within ten lines of the top of a page. + + +File: as.info, Node: Type, Next: Uleb128, Prev: Title, Up: Pseudo Ops + +7.115 `.type' +============= + +This directive is used to set the type of a symbol. + +COFF Version +------------ + + For COFF targets, this directive is permitted only within +`.def'/`.endef' pairs. It is used like this: + + .type INT + + This records the integer INT as the type attribute of a symbol table +entry. + +ELF Version +----------- + + For ELF targets, the `.type' directive is used like this: + + .type NAME , TYPE DESCRIPTION + + This sets the type of symbol NAME to be either a function symbol or +an object symbol. There are five different syntaxes supported for the +TYPE DESCRIPTION field, in order to provide compatibility with various +other assemblers. + + Because some of the characters used in these syntaxes (such as `@' +and `#') are comment characters for some architectures, some of the +syntaxes below do not work on all architectures. The first variant +will be accepted by the GNU assembler on all architectures so that +variant should be used for maximum portability, if you do not need to +assemble your code with other assemblers. + + The syntaxes supported are: + + .type STT_ + .type ,# + .type ,@ + .type ,% + .type ,"" + + The types supported are: + +`STT_FUNC' +`function' + Mark the symbol as being a function name. + +`STT_GNU_IFUNC' +`gnu_indirect_function' + Mark the symbol as an indirect function when evaluated during reloc + processing. (This is only supported on assemblers targeting GNU + systems). + +`STT_OBJECT' +`object' + Mark the symbol as being a data object. + +`STT_TLS' +`tls_object' + Mark the symbol as being a thead-local data object. + +`STT_COMMON' +`common' + Mark the symbol as being a common data object. + +`STT_NOTYPE' +`notype' + Does not mark the symbol in any way. It is supported just for + completeness. + +`gnu_unique_object' + Marks the symbol as being a globally unique data object. The + dynamic linker will make sure that in the entire process there is + just one symbol with this name and type in use. (This is only + supported on assemblers targeting GNU systems). + + + Note: Some targets support extra types in addition to those listed +above. + + +File: as.info, Node: Uleb128, Next: Val, Prev: Type, Up: Pseudo Ops + +7.116 `.uleb128 EXPRESSIONS' +============================ + +ULEB128 stands for "unsigned little endian base 128." This is a +compact, variable length representation of numbers used by the DWARF +symbolic debugging format. *Note `.sleb128': Sleb128. + + +File: as.info, Node: Val, Next: Version, Prev: Uleb128, Up: Pseudo Ops + +7.117 `.val ADDR' +================= + +This directive, permitted only within `.def'/`.endef' pairs, records +the address ADDR as the value attribute of a symbol table entry. + + +File: as.info, Node: Version, Next: VTableEntry, Prev: Val, Up: Pseudo Ops + +7.118 `.version "STRING"' +========================= + +This directive creates a `.note' section and places into it an ELF +formatted note of type NT_VERSION. The note's name is set to `string'. + + +File: as.info, Node: VTableEntry, Next: VTableInherit, Prev: Version, Up: Pseudo Ops + +7.119 `.vtable_entry TABLE, OFFSET' +=================================== + +This directive finds or creates a symbol `table' and creates a +`VTABLE_ENTRY' relocation for it with an addend of `offset'. + + +File: as.info, Node: VTableInherit, Next: Warning, Prev: VTableEntry, Up: Pseudo Ops + +7.120 `.vtable_inherit CHILD, PARENT' +===================================== + +This directive finds the symbol `child' and finds or creates the symbol +`parent' and then creates a `VTABLE_INHERIT' relocation for the parent +whose addend is the value of the child symbol. As a special case the +parent name of `0' is treated as referring to the `*ABS*' section. + + +File: as.info, Node: Warning, Next: Weak, Prev: VTableInherit, Up: Pseudo Ops + +7.121 `.warning "STRING"' +========================= + +Similar to the directive `.error' (*note `.error "STRING"': Error.), +but just emits a warning. + + +File: as.info, Node: Weak, Next: Weakref, Prev: Warning, Up: Pseudo Ops + +7.122 `.weak NAMES' +=================== + +This directive sets the weak attribute on the comma separated list of +symbol `names'. If the symbols do not already exist, they will be +created. + + On COFF targets other than PE, weak symbols are a GNU extension. +This directive sets the weak attribute on the comma separated list of +symbol `names'. If the symbols do not already exist, they will be +created. + + On the PE target, weak symbols are supported natively as weak +aliases. When a weak symbol is created that is not an alias, GAS +creates an alternate symbol to hold the default value. + + +File: as.info, Node: Weakref, Next: Word, Prev: Weak, Up: Pseudo Ops + +7.123 `.weakref ALIAS, TARGET' +============================== + +This directive creates an alias to the target symbol that enables the +symbol to be referenced with weak-symbol semantics, but without +actually making it weak. If direct references or definitions of the +symbol are present, then the symbol will not be weak, but if all +references to it are through weak references, the symbol will be marked +as weak in the symbol table. + + The effect is equivalent to moving all references to the alias to a +separate assembly source file, renaming the alias to the symbol in it, +declaring the symbol as weak there, and running a reloadable link to +merge the object files resulting from the assembly of the new source +file and the old source file that had the references to the alias +removed. + + The alias itself never makes to the symbol table, and is entirely +handled within the assembler. + + +File: as.info, Node: Word, Next: Deprecated, Prev: Weakref, Up: Pseudo Ops + +7.124 `.word EXPRESSIONS' +========================= + +This directive expects zero or more EXPRESSIONS, of any section, +separated by commas. + + The size of the number emitted, and its byte order, depend on what +target computer the assembly is for. + + _Warning: Special Treatment to support Compilers_ + + Machines with a 32-bit address space, but that do less than 32-bit +addressing, require the following special treatment. If the machine of +interest to you does 32-bit addressing (or doesn't require it; *note +Machine Dependencies::), you can ignore this issue. + + In order to assemble compiler output into something that works, `as' +occasionally does strange things to `.word' directives. Directives of +the form `.word sym1-sym2' are often emitted by compilers as part of +jump tables. Therefore, when `as' assembles a directive of the form +`.word sym1-sym2', and the difference between `sym1' and `sym2' does +not fit in 16 bits, `as' creates a "secondary jump table", immediately +before the next label. This secondary jump table is preceded by a +short-jump to the first byte after the secondary table. This +short-jump prevents the flow of control from accidentally falling into +the new table. Inside the table is a long-jump to `sym2'. The +original `.word' contains `sym1' minus the address of the long-jump to +`sym2'. + + If there were several occurrences of `.word sym1-sym2' before the +secondary jump table, all of them are adjusted. If there was a `.word +sym3-sym4', that also did not fit in sixteen bits, a long-jump to +`sym4' is included in the secondary jump table, and the `.word' +directives are adjusted to contain `sym3' minus the address of the +long-jump to `sym4'; and so on, for as many entries in the original +jump table as necessary. + + +File: as.info, Node: Deprecated, Prev: Word, Up: Pseudo Ops + +7.125 Deprecated Directives +=========================== + +One day these directives won't work. They are included for +compatibility with older assemblers. +.abort + +.line + + +File: as.info, Node: Object Attributes, Next: Machine Dependencies, Prev: Pseudo Ops, Up: Top + +8 Object Attributes +******************* + +`as' assembles source files written for a specific architecture into +object files for that architecture. But not all object files are alike. +Many architectures support incompatible variations. For instance, +floating point arguments might be passed in floating point registers if +the object file requires hardware floating point support--or floating +point arguments might be passed in integer registers if the object file +supports processors with no hardware floating point unit. Or, if two +objects are built for different generations of the same architecture, +the combination may require the newer generation at run-time. + + This information is useful during and after linking. At link time, +`ld' can warn about incompatible object files. After link time, tools +like `gdb' can use it to process the linked file correctly. + + Compatibility information is recorded as a series of object +attributes. Each attribute has a "vendor", "tag", and "value". The +vendor is a string, and indicates who sets the meaning of the tag. The +tag is an integer, and indicates what property the attribute describes. +The value may be a string or an integer, and indicates how the +property affects this object. Missing attributes are the same as +attributes with a zero value or empty string value. + + Object attributes were developed as part of the ABI for the ARM +Architecture. The file format is documented in `ELF for the ARM +Architecture'. + +* Menu: + +* GNU Object Attributes:: GNU Object Attributes +* Defining New Object Attributes:: Defining New Object Attributes + + +File: as.info, Node: GNU Object Attributes, Next: Defining New Object Attributes, Up: Object Attributes + +8.1 GNU Object Attributes +========================= + +The `.gnu_attribute' directive records an object attribute with vendor +`gnu'. + + Except for `Tag_compatibility', which has both an integer and a +string for its value, GNU attributes have a string value if the tag +number is odd and an integer value if the tag number is even. The +second bit (`TAG & 2' is set for architecture-independent attributes +and clear for architecture-dependent ones. + +8.1.1 Common GNU attributes +--------------------------- + +These attributes are valid on all architectures. + +Tag_compatibility (32) + The compatibility attribute takes an integer flag value and a + vendor name. If the flag value is 0, the file is compatible with + other toolchains. If it is 1, then the file is only compatible + with the named toolchain. If it is greater than 1, the file can + only be processed by other toolchains under some private + arrangement indicated by the flag value and the vendor name. + +8.1.2 MIPS Attributes +--------------------- + +Tag_GNU_MIPS_ABI_FP (4) + The floating-point ABI used by this object file. The value will + be: + + * 0 for files not affected by the floating-point ABI. + + * 1 for files using the hardware floating-point ABI with a + standard double-precision FPU. + + * 2 for files using the hardware floating-point ABI with a + single-precision FPU. + + * 3 for files using the software floating-point ABI. + + * 4 for files using the deprecated hardware floating-point ABI + which used 64-bit floating-point registers, 32-bit + general-purpose registers and increased the number of + callee-saved floating-point registers. + + * 5 for files using the hardware floating-point ABI with a + double-precision FPU with either 32-bit or 64-bit + floating-point registers and 32-bit general-purpose registers. + + * 6 for files using the hardware floating-point ABI with 64-bit + floating-point registers and 32-bit general-purpose registers. + + * 7 for files using the hardware floating-point ABI with 64-bit + floating-point registers, 32-bit general-purpose registers + and a rule that forbids the direct use of odd-numbered + single-precision floating-point registers. + +8.1.3 PowerPC Attributes +------------------------ + +Tag_GNU_Power_ABI_FP (4) + The floating-point ABI used by this object file. The value will + be: + + * 0 for files not affected by the floating-point ABI. + + * 1 for files using double-precision hardware floating-point + ABI. + + * 2 for files using the software floating-point ABI. + + * 3 for files using single-precision hardware floating-point + ABI. + +Tag_GNU_Power_ABI_Vector (8) + The vector ABI used by this object file. The value will be: + + * 0 for files not affected by the vector ABI. + + * 1 for files using general purpose registers to pass vectors. + + * 2 for files using AltiVec registers to pass vectors. + + * 3 for files using SPE registers to pass vectors. + + +File: as.info, Node: Defining New Object Attributes, Prev: GNU Object Attributes, Up: Object Attributes + +8.2 Defining New Object Attributes +================================== + +If you want to define a new GNU object attribute, here are the places +you will need to modify. New attributes should be discussed on the +`binutils' mailing list. + + * This manual, which is the official register of attributes. + + * The header for your architecture `include/elf', to define the tag. + + * The `bfd' support file for your architecture, to merge the + attribute and issue any appropriate link warnings. + + * Test cases in `ld/testsuite' for merging and link warnings. + + * `binutils/readelf.c' to display your attribute. + + * GCC, if you want the compiler to mark the attribute automatically. + + +File: as.info, Node: Machine Dependencies, Next: Reporting Bugs, Prev: Object Attributes, Up: Top + +9 Machine Dependent Features +**************************** + +The machine instruction sets are (almost by definition) different on +each machine where `as' runs. Floating point representations vary as +well, and `as' often supports a few additional directives or +command-line options for compatibility with other assemblers on a +particular platform. Finally, some versions of `as' support special +pseudo-instructions for branch optimization. + + This chapter discusses most of these differences, though it does not +include details on any machine's instruction set. For details on that +subject, see the hardware manufacturer's manual. + +* Menu: + + +* AArch64-Dependent:: AArch64 Dependent Features + +* Alpha-Dependent:: Alpha Dependent Features + +* ARC-Dependent:: ARC Dependent Features + +* ARM-Dependent:: ARM Dependent Features + +* AVR-Dependent:: AVR Dependent Features + +* Blackfin-Dependent:: Blackfin Dependent Features + +* CR16-Dependent:: CR16 Dependent Features + +* CRIS-Dependent:: CRIS Dependent Features + +* D10V-Dependent:: D10V Dependent Features + +* D30V-Dependent:: D30V Dependent Features + +* Epiphany-Dependent:: EPIPHANY Dependent Features + +* H8/300-Dependent:: Renesas H8/300 Dependent Features + +* HPPA-Dependent:: HPPA Dependent Features + +* ESA/390-Dependent:: IBM ESA/390 Dependent Features + +* i386-Dependent:: Intel 80386 and AMD x86-64 Dependent Features + +* i860-Dependent:: Intel 80860 Dependent Features + +* i960-Dependent:: Intel 80960 Dependent Features + +* IA-64-Dependent:: Intel IA-64 Dependent Features + +* IP2K-Dependent:: IP2K Dependent Features + +* LM32-Dependent:: LM32 Dependent Features + +* M32C-Dependent:: M32C Dependent Features + +* M32R-Dependent:: M32R Dependent Features + +* M68K-Dependent:: M680x0 Dependent Features + +* M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features + +* Meta-Dependent :: Meta Dependent Features + +* MicroBlaze-Dependent:: MICROBLAZE Dependent Features + +* MIPS-Dependent:: MIPS Dependent Features + +* MMIX-Dependent:: MMIX Dependent Features + +* MSP430-Dependent:: MSP430 Dependent Features + +* NDS32-Dependent:: Andes NDS32 Dependent Features + +* NiosII-Dependent:: Altera Nios II Dependent Features + +* NS32K-Dependent:: NS32K Dependent Features + +* SH-Dependent:: Renesas / SuperH SH Dependent Features +* SH64-Dependent:: SuperH SH64 Dependent Features + +* PDP-11-Dependent:: PDP-11 Dependent Features + +* PJ-Dependent:: picoJava Dependent Features + +* PPC-Dependent:: PowerPC Dependent Features + +* RL78-Dependent:: RL78 Dependent Features + +* RX-Dependent:: RX Dependent Features + +* S/390-Dependent:: IBM S/390 Dependent Features + +* SCORE-Dependent:: SCORE Dependent Features + +* Sparc-Dependent:: SPARC Dependent Features + +* TIC54X-Dependent:: TI TMS320C54x Dependent Features + +* TIC6X-Dependent :: TI TMS320C6x Dependent Features + +* TILE-Gx-Dependent :: Tilera TILE-Gx Dependent Features + +* TILEPro-Dependent :: Tilera TILEPro Dependent Features + +* V850-Dependent:: V850 Dependent Features + +* XGATE-Dependent:: XGATE Features + +* XSTORMY16-Dependent:: XStormy16 Dependent Features + +* Xtensa-Dependent:: Xtensa Dependent Features + +* Z80-Dependent:: Z80 Dependent Features + +* Z8000-Dependent:: Z8000 Dependent Features + +* Vax-Dependent:: VAX Dependent Features + + +File: as.info, Node: AArch64-Dependent, Next: Alpha-Dependent, Up: Machine Dependencies + +9.1 AArch64 Dependent Features +============================== + +* Menu: + +* AArch64 Options:: Options +* AArch64 Extensions:: Extensions +* AArch64 Syntax:: Syntax +* AArch64 Floating Point:: Floating Point +* AArch64 Directives:: AArch64 Machine Directives +* AArch64 Opcodes:: Opcodes +* AArch64 Mapping Symbols:: Mapping Symbols + + +File: as.info, Node: AArch64 Options, Next: AArch64 Extensions, Up: AArch64-Dependent + +9.1.1 Options +------------- + +`-EB' + This option specifies that the output generated by the assembler + should be marked as being encoded for a big-endian processor. + +`-EL' + This option specifies that the output generated by the assembler + should be marked as being encoded for a little-endian processor. + +`-mabi=ABI' + Specify which ABI the source code uses. The recognized arguments + are: `ilp32' and `lp64', which decides the generated object file + in ELF32 and ELF64 format respectively. The default is `lp64'. + +`-mcpu=PROCESSOR[+EXTENSION...]' + This option specifies the target processor. The assembler will + issue an error message if an attempt is made to assemble an + instruction which will not execute on the target processor. The + following processor names are recognized: `cortex-a53', + `cortex-a57', `xgene1', and `xgene2'. The special name `all' may + be used to allow the assembler to accept instructions valid for + any supported processor, including all optional extensions. + + In addition to the basic instruction set, the assembler can be + told to accept, or restrict, various extension mnemonics that + extend the processor. *Note AArch64 Extensions::. + + If some implementations of a particular processor can have an + extension, then then those extensions are automatically enabled. + Consequently, you will not normally have to specify any additional + extensions. + +`-march=ARCHITECTURE[+EXTENSION...]' + This option specifies the target architecture. The assembler will + issue an error message if an attempt is made to assemble an + instruction which will not execute on the target architecture. The + only value for ARCHITECTURE is `armv8-a'. + + If both `-mcpu' and `-march' are specified, the assembler will use + the setting for `-mcpu'. If neither are specified, the assembler + will default to `-mcpu=all'. + + The architecture option can be extended with the same instruction + set extension options as the `-mcpu' option. Unlike `-mcpu', + extensions are not always enabled by default, *Note AArch64 + Extensions::. + +`-mverbose-error' + This option enables verbose error messages for AArch64 gas. This + option is enabled by default. + +`-mno-verbose-error' + This option disables verbose error messages in AArch64 gas. + + + +File: as.info, Node: AArch64 Extensions, Next: AArch64 Syntax, Prev: AArch64 Options, Up: AArch64-Dependent + +9.1.2 Architecture Extensions +----------------------------- + +The table below lists the permitted architecture extensions that are +supported by the assembler and the conditions under which they are +automatically enabled. + + Multiple extensions may be specified, separated by a `+'. Extension +mnemonics may also be removed from those the assembler accepts. This +is done by prepending `no' to the option that adds the extension. +Extensions that are removed must be listed after all extensions that +have been added. + + Enabling an extension that requires other extensions will +automatically cause those extensions to be enabled. Similarly, +disabling an extension that is required by other extensions will +automatically cause those extensions to be disabled. + +Extension Minimum Enabled by Description + Architecture default +---------------------------------------------------------------------------- +`crc' ARMv8-A No Enable CRC instructions. +`crypto' ARMv8-A No Enable cryptographic extensions. This + implies `fp' and `simd'. +`fp' ARMv8-A ARMv8-A or Enable floating-point extensions. + later +`simd' ARMv8-A ARMv8-A or Enable Advanced SIMD extensions. This + later implies `fp'. + + +File: as.info, Node: AArch64 Syntax, Next: AArch64 Floating Point, Prev: AArch64 Extensions, Up: AArch64-Dependent + +9.1.3 Syntax +------------ + +* Menu: + +* AArch64-Chars:: Special Characters +* AArch64-Regs:: Register Names +* AArch64-Relocations:: Relocations + + +File: as.info, Node: AArch64-Chars, Next: AArch64-Regs, Up: AArch64 Syntax + +9.1.3.1 Special Characters +.......................... + +The presence of a `//' on a line indicates the start of a comment that +extends to the end of the current line. If a `#' appears as the first +character of a line, the whole line is treated as a comment. + + The `;' character can be used instead of a newline to separate +statements. + + The `#' can be optionally used to indicate immediate operands. + + +File: as.info, Node: AArch64-Regs, Next: AArch64-Relocations, Prev: AArch64-Chars, Up: AArch64 Syntax + +9.1.3.2 Register Names +...................... + +Please refer to the section `4.4 Register Names' of `ARMv8 Instruction +Set Overview', which is available at `http://infocenter.arm.com'. + + +File: as.info, Node: AArch64-Relocations, Prev: AArch64-Regs, Up: AArch64 Syntax + +9.1.3.3 Relocations +................... + +Relocations for `MOVZ' and `MOVK' instructions can be generated by +prefixing the label with `#:abs_g2:' etc. For example to load the +48-bit absolute address of FOO into x0: + + movz x0, #:abs_g2:foo // bits 32-47, overflow check + movk x0, #:abs_g1_nc:foo // bits 16-31, no overflow check + movk x0, #:abs_g0_nc:foo // bits 0-15, no overflow check + + Relocations for `ADRP', and `ADD', `LDR' or `STR' instructions can +be generated by prefixing the label with `:pg_hi21:' and `#:lo12:' +respectively. + + For example to use 33-bit (+/-4GB) pc-relative addressing to load +the address of FOO into x0: + + adrp x0, :pg_hi21:foo + add x0, x0, #:lo12:foo + + Or to load the value of FOO into x0: + + adrp x0, :pg_hi21:foo + ldr x0, [x0, #:lo12:foo] + + Note that `:pg_hi21:' is optional. + + adrp x0, foo + + is equivalent to + + adrp x0, :pg_hi21:foo + + +File: as.info, Node: AArch64 Floating Point, Next: AArch64 Directives, Prev: AArch64 Syntax, Up: AArch64-Dependent + +9.1.4 Floating Point +-------------------- + +The AArch64 architecture uses IEEE floating-point numbers. + + +File: as.info, Node: AArch64 Directives, Next: AArch64 Opcodes, Prev: AArch64 Floating Point, Up: AArch64-Dependent + +9.1.5 AArch64 Machine Directives +-------------------------------- + +`.bss' + This directive switches to the `.bss' section. + +`.ltorg' + This directive causes the current contents of the literal pool to + be dumped into the current section (which is assumed to be the + .text section) at the current location (aligned to a word + boundary). GAS maintains a separate literal pool for each section + and each sub-section. The `.ltorg' directive will only affect the + literal pool of the current section and sub-section. At the end + of assembly all remaining, un-empty literal pools will + automatically be dumped. + + Note - older versions of GAS would dump the current literal pool + any time a section change occurred. This is no longer done, since + it prevents accurate control of the placement of literal pools. + +`.pool' + This is a synonym for .ltorg. + +`NAME .req REGISTER NAME' + This creates an alias for REGISTER NAME called NAME. For example: + + foo .req w0 + +`.unreq ALIAS-NAME' + This undefines a register alias which was previously defined using + the `req' directive. For example: + + foo .req w0 + .unreq foo + + An error occurs if the name is undefined. Note - this pseudo op + can be used to delete builtin in register name aliases (eg 'w0'). + This should only be done if it is really necessary. + + + +File: as.info, Node: AArch64 Opcodes, Next: AArch64 Mapping Symbols, Prev: AArch64 Directives, Up: AArch64-Dependent + +9.1.6 Opcodes +------------- + +GAS implements all the standard AArch64 opcodes. It also implements +several pseudo opcodes, including several synthetic load instructions. + +`LDR =' + ldr , = + + The constant expression will be placed into the nearest literal + pool (if it not already there) and a PC-relative LDR instruction + will be generated. + + + For more information on the AArch64 instruction set and assembly +language notation, see `ARMv8 Instruction Set Overview' available at +`http://infocenter.arm.com'. + + +File: as.info, Node: AArch64 Mapping Symbols, Prev: AArch64 Opcodes, Up: AArch64-Dependent + +9.1.7 Mapping Symbols +--------------------- + +The AArch64 ELF specification requires that special symbols be inserted +into object files to mark certain features: + +`$x' + At the start of a region of code containing AArch64 instructions. + +`$d' + At the start of a region of data. + + + +File: as.info, Node: Alpha-Dependent, Next: ARC-Dependent, Prev: AArch64-Dependent, Up: Machine Dependencies + +9.2 Alpha Dependent Features +============================ + +* Menu: + +* Alpha Notes:: Notes +* Alpha Options:: Options +* Alpha Syntax:: Syntax +* Alpha Floating Point:: Floating Point +* Alpha Directives:: Alpha Machine Directives +* Alpha Opcodes:: Opcodes + + +File: as.info, Node: Alpha Notes, Next: Alpha Options, Up: Alpha-Dependent + +9.2.1 Notes +----------- + +The documentation here is primarily for the ELF object format. `as' +also supports the ECOFF and EVAX formats, but features specific to +these formats are not yet documented. + + +File: as.info, Node: Alpha Options, Next: Alpha Syntax, Prev: Alpha Notes, Up: Alpha-Dependent + +9.2.2 Options +------------- + +`-mCPU' + This option specifies the target processor. If an attempt is made + to assemble an instruction which will not execute on the target + processor, the assembler may either expand the instruction as a + macro or issue an error message. This option is equivalent to the + `.arch' directive. + + The following processor names are recognized: `21064', `21064a', + `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a', + `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6', + `ev67', `ev68'. The special name `all' may be used to allow the + assembler to accept instructions valid for any Alpha processor. + + In order to support existing practice in OSF/1 with respect to + `.arch', and existing practice within `MILO' (the Linux ARC + bootloader), the numbered processor names (e.g. 21064) enable the + processor-specific PALcode instructions, while the + "electro-vlasic" names (e.g. `ev4') do not. + +`-mdebug' +`-no-mdebug' + Enables or disables the generation of `.mdebug' encapsulation for + stabs directives and procedure descriptors. The default is to + automatically enable `.mdebug' when the first stabs directive is + seen. + +`-relax' + This option forces all relocations to be put into the object file, + instead of saving space and resolving some relocations at assembly + time. Note that this option does not propagate all symbol + arithmetic into the object file, because not all symbol arithmetic + can be represented. However, the option can still be useful in + specific applications. + +`-replace' +`-noreplace' + Enables or disables the optimization of procedure calls, both at + assemblage and at link time. These options are only available for + VMS targets and `-replace' is the default. See section 1.4.1 of + the OpenVMS Linker Utility Manual. + +`-g' + This option is used when the compiler generates debug information. + When `gcc' is using `mips-tfile' to generate debug information + for ECOFF, local labels must be passed through to the object file. + Otherwise this option has no effect. + +`-GSIZE' + A local common symbol larger than SIZE is placed in `.bss', while + smaller symbols are placed in `.sbss'. + +`-F' +`-32addr' + These options are ignored for backward compatibility. + + +File: as.info, Node: Alpha Syntax, Next: Alpha Floating Point, Prev: Alpha Options, Up: Alpha-Dependent + +9.2.3 Syntax +------------ + +The assembler syntax closely follow the Alpha Reference Manual; +assembler directives and general syntax closely follow the OSF/1 and +OpenVMS syntax, with a few differences for ELF. + +* Menu: + +* Alpha-Chars:: Special Characters +* Alpha-Regs:: Register Names +* Alpha-Relocs:: Relocations + + +File: as.info, Node: Alpha-Chars, Next: Alpha-Regs, Up: Alpha Syntax + +9.2.3.1 Special Characters +.......................... + +`#' is the line comment character. Note that if `#' is the first +character on a line then it can also be a logical line number directive +(*note Comments::) or a preprocessor control command (*note +Preprocessing::). + + `;' can be used instead of a newline to separate statements. + + +File: as.info, Node: Alpha-Regs, Next: Alpha-Relocs, Prev: Alpha-Chars, Up: Alpha Syntax + +9.2.3.2 Register Names +...................... + +The 32 integer registers are referred to as `$N' or `$rN'. In +addition, registers 15, 28, 29, and 30 may be referred to by the +symbols `$fp', `$at', `$gp', and `$sp' respectively. + + The 32 floating-point registers are referred to as `$fN'. + + +File: as.info, Node: Alpha-Relocs, Prev: Alpha-Regs, Up: Alpha Syntax + +9.2.3.3 Relocations +................... + +Some of these relocations are available for ECOFF, but mostly only for +ELF. They are modeled after the relocation format introduced in +Digital Unix 4.0, but there are additions. + + The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the +relocation. In some cases NUMBER is used to relate specific +instructions. + + The relocation is placed at the end of the instruction like so: + + ldah $0,a($29) !gprelhigh + lda $0,a($0) !gprellow + ldq $1,b($29) !literal!100 + ldl $2,0($1) !lituse_base!100 + +`!literal' +`!literal!N' + Used with an `ldq' instruction to load the address of a symbol + from the GOT. + + A sequence number N is optional, and if present is used to pair + `lituse' relocations with this `literal' relocation. The `lituse' + relocations are used by the linker to optimize the code based on + the final location of the symbol. + + Note that these optimizations are dependent on the data flow of the + program. Therefore, if _any_ `lituse' is paired with a `literal' + relocation, then _all_ uses of the register set by the `literal' + instruction must also be marked with `lituse' relocations. This + is because the original `literal' instruction may be deleted or + transformed into another instruction. + + Also note that there may be a one-to-many relationship between + `literal' and `lituse', but not a many-to-one. That is, if there + are two code paths that load up the same address and feed the + value to a single use, then the use may not use a `lituse' + relocation. + +`!lituse_base!N' + Used with any memory format instruction (e.g. `ldl') to indicate + that the literal is used for an address load. The offset field of + the instruction must be zero. During relaxation, the code may be + altered to use a gp-relative load. + +`!lituse_jsr!N' + Used with a register branch format instruction (e.g. `jsr') to + indicate that the literal is used for a call. During relaxation, + the code may be altered to use a direct branch (e.g. `bsr'). + +`!lituse_jsrdirect!N' + Similar to `lituse_jsr', but also that this call cannot be vectored + through a PLT entry. This is useful for functions with special + calling conventions which do not allow the normal call-clobbered + registers to be clobbered. + +`!lituse_bytoff!N' + Used with a byte mask instruction (e.g. `extbl') to indicate that + only the low 3 bits of the address are relevant. During + relaxation, the code may be altered to use an immediate instead of + a register shift. + +`!lituse_addr!N' + Used with any other instruction to indicate that the original + address is in fact used, and the original `ldq' instruction may + not be altered or deleted. This is useful in conjunction with + `lituse_jsr' to test whether a weak symbol is defined. + + ldq $27,foo($29) !literal!1 + beq $27,is_undef !lituse_addr!1 + jsr $26,($27),foo !lituse_jsr!1 + +`!lituse_tlsgd!N' + Used with a register branch format instruction to indicate that the + literal is the call to `__tls_get_addr' used to compute the + address of the thread-local storage variable whose descriptor was + loaded with `!tlsgd!N'. + +`!lituse_tlsldm!N' + Used with a register branch format instruction to indicate that the + literal is the call to `__tls_get_addr' used to compute the + address of the base of the thread-local storage block for the + current module. The descriptor for the module must have been + loaded with `!tlsldm!N'. + +`!gpdisp!N' + Used with `ldah' and `lda' to load the GP from the current + address, a-la the `ldgp' macro. The source register for the + `ldah' instruction must contain the address of the `ldah' + instruction. There must be exactly one `lda' instruction paired + with the `ldah' instruction, though it may appear anywhere in the + instruction stream. The immediate operands must be zero. + + bsr $26,foo + ldah $29,0($26) !gpdisp!1 + lda $29,0($29) !gpdisp!1 + +`!gprelhigh' + Used with an `ldah' instruction to add the high 16 bits of a + 32-bit displacement from the GP. + +`!gprellow' + Used with any memory format instruction to add the low 16 bits of a + 32-bit displacement from the GP. + +`!gprel' + Used with any memory format instruction to add a 16-bit + displacement from the GP. + +`!samegp' + Used with any branch format instruction to skip the GP load at the + target address. The referenced symbol must have the same GP as the + source object file, and it must be declared to either not use `$27' + or perform a standard GP load in the first two instructions via the + `.prologue' directive. + +`!tlsgd' +`!tlsgd!N' + Used with an `lda' instruction to load the address of a TLS + descriptor for a symbol in the GOT. + + The sequence number N is optional, and if present it used to pair + the descriptor load with both the `literal' loading the address of + the `__tls_get_addr' function and the `lituse_tlsgd' marking the + call to that function. + + For proper relaxation, both the `tlsgd', `literal' and `lituse' + relocations must be in the same extended basic block. That is, + the relocation with the lowest address must be executed first at + runtime. + +`!tlsldm' +`!tlsldm!N' + Used with an `lda' instruction to load the address of a TLS + descriptor for the current module in the GOT. + + Similar in other respects to `tlsgd'. + +`!gotdtprel' + Used with an `ldq' instruction to load the offset of the TLS + symbol within its module's thread-local storage block. Also known + as the dynamic thread pointer offset or dtp-relative offset. + +`!dtprelhi' +`!dtprello' +`!dtprel' + Like `gprel' relocations except they compute dtp-relative offsets. + +`!gottprel' + Used with an `ldq' instruction to load the offset of the TLS + symbol from the thread pointer. Also known as the tp-relative + offset. + +`!tprelhi' +`!tprello' +`!tprel' + Like `gprel' relocations except they compute tp-relative offsets. + + +File: as.info, Node: Alpha Floating Point, Next: Alpha Directives, Prev: Alpha Syntax, Up: Alpha-Dependent + +9.2.4 Floating Point +-------------------- + +The Alpha family uses both IEEE and VAX floating-point numbers. + + +File: as.info, Node: Alpha Directives, Next: Alpha Opcodes, Prev: Alpha Floating Point, Up: Alpha-Dependent + +9.2.5 Alpha Assembler Directives +-------------------------------- + +`as' for the Alpha supports many additional directives for +compatibility with the native assembler. This section describes them +only briefly. + + These are the additional directives in `as' for the Alpha: + +`.arch CPU' + Specifies the target processor. This is equivalent to the `-mCPU' + command-line option. *Note Options: Alpha Options, for a list of + values for CPU. + +`.ent FUNCTION[, N]' + Mark the beginning of FUNCTION. An optional number may follow for + compatibility with the OSF/1 assembler, but is ignored. When + generating `.mdebug' information, this will create a procedure + descriptor for the function. In ELF, it will mark the symbol as a + function a-la the generic `.type' directive. + +`.end FUNCTION' + Mark the end of FUNCTION. In ELF, it will set the size of the + symbol a-la the generic `.size' directive. + +`.mask MASK, OFFSET' + Indicate which of the integer registers are saved in the current + function's stack frame. MASK is interpreted a bit mask in which + bit N set indicates that register N is saved. The registers are + saved in a block located OFFSET bytes from the "canonical frame + address" (CFA) which is the value of the stack pointer on entry to + the function. The registers are saved sequentially, except that + the return address register (normally `$26') is saved first. + + This and the other directives that describe the stack frame are + currently only used when generating `.mdebug' information. They + may in the future be used to generate DWARF2 `.debug_frame' unwind + information for hand written assembly. + +`.fmask MASK, OFFSET' + Indicate which of the floating-point registers are saved in the + current stack frame. The MASK and OFFSET parameters are + interpreted as with `.mask'. + +`.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]' + Describes the shape of the stack frame. The frame pointer in use + is FRAMEREG; normally this is either `$fp' or `$sp'. The frame + pointer is FRAMEOFFSET bytes below the CFA. The return address is + initially located in RETREG until it is saved as indicated in + `.mask'. For compatibility with OSF/1 an optional ARGOFFSET + parameter is accepted and ignored. It is believed to indicate the + offset from the CFA to the saved argument registers. + +`.prologue N' + Indicate that the stack frame is set up and all registers have been + spilled. The argument N indicates whether and how the function + uses the incoming "procedure vector" (the address of the called + function) in `$27'. 0 indicates that `$27' is not used; 1 + indicates that the first two instructions of the function use `$27' + to perform a load of the GP register; 2 indicates that `$27' is + used in some non-standard way and so the linker cannot elide the + load of the procedure vector during relaxation. + +`.usepv FUNCTION, WHICH' + Used to indicate the use of the `$27' register, similar to + `.prologue', but without the other semantics of needing to be + inside an open `.ent'/`.end' block. + + The WHICH argument should be either `no', indicating that `$27' is + not used, or `std', indicating that the first two instructions of + the function perform a GP load. + + One might use this directive instead of `.prologue' if you are + also using dwarf2 CFI directives. + +`.gprel32 EXPRESSION' + Computes the difference between the address in EXPRESSION and the + GP for the current object file, and stores it in 4 bytes. In + addition to being smaller than a full 8 byte address, this also + does not require a dynamic relocation when used in a shared + library. + +`.t_floating EXPRESSION' + Stores EXPRESSION as an IEEE double precision value. + +`.s_floating EXPRESSION' + Stores EXPRESSION as an IEEE single precision value. + +`.f_floating EXPRESSION' + Stores EXPRESSION as a VAX F format value. + +`.g_floating EXPRESSION' + Stores EXPRESSION as a VAX G format value. + +`.d_floating EXPRESSION' + Stores EXPRESSION as a VAX D format value. + +`.set FEATURE' + Enables or disables various assembler features. Using the positive + name of the feature enables while using `noFEATURE' disables. + + `at' + Indicates that macro expansions may clobber the "assembler + temporary" (`$at' or `$28') register. Some macros may not be + expanded without this and will generate an error message if + `noat' is in effect. When `at' is in effect, a warning will + be generated if `$at' is used by the programmer. + + `macro' + Enables the expansion of macro instructions. Note that + variants of real instructions, such as `br label' vs `br + $31,label' are considered alternate forms and not macros. + + `move' + `reorder' + `volatile' + These control whether and how the assembler may re-order + instructions. Accepted for compatibility with the OSF/1 + assembler, but `as' does not do instruction scheduling, so + these features are ignored. + + The following directives are recognized for compatibility with the +OSF/1 assembler but are ignored. + + .proc .aproc + .reguse .livereg + .option .aent + .ugen .eflag + .alias .noalias + + +File: as.info, Node: Alpha Opcodes, Prev: Alpha Directives, Up: Alpha-Dependent + +9.2.6 Opcodes +------------- + +For detailed information on the Alpha machine instruction set, see the +Alpha Architecture Handbook +(ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf). + + +File: as.info, Node: ARC-Dependent, Next: ARM-Dependent, Prev: Alpha-Dependent, Up: Machine Dependencies + +9.3 ARC Dependent Features +========================== + +* Menu: + +* ARC Options:: Options +* ARC Syntax:: Syntax +* ARC Floating Point:: Floating Point +* ARC Directives:: ARC Machine Directives +* ARC Opcodes:: Opcodes + + +File: as.info, Node: ARC Options, Next: ARC Syntax, Up: ARC-Dependent + +9.3.1 Options +------------- + +`-marc[5|6|7|8]' + This option selects the core processor variant. Using `-marc' is + the same as `-marc6', which is also the default. + + `arc5' + Base instruction set. + + `arc6' + Jump-and-link (jl) instruction. No requirement of an + instruction between setting flags and conditional jump. For + example: + + mov.f r0,r1 + beq foo + + `arc7' + Break (brk) and sleep (sleep) instructions. + + `arc8' + Software interrupt (swi) instruction. + + + Note: the `.option' directive can to be used to select a core + variant from within assembly code. + +`-EB' + This option specifies that the output generated by the assembler + should be marked as being encoded for a big-endian processor. + +`-EL' + This option specifies that the output generated by the assembler + should be marked as being encoded for a little-endian processor - + this is the default. + + + +File: as.info, Node: ARC Syntax, Next: ARC Floating Point, Prev: ARC Options, Up: ARC-Dependent + +9.3.2 Syntax +------------ + +* Menu: + +* ARC-Chars:: Special Characters +* ARC-Regs:: Register Names + + +File: as.info, Node: ARC-Chars, Next: ARC-Regs, Up: ARC Syntax + +9.3.2.1 Special Characters +.......................... + +The presence of a `#' on a line indicates the start of a comment that +extends to the end of the current line. Note that if a line starts +with a `#' character then it can also be a logical line number +directive (*note Comments::) or a preprocessor control command (*note +Preprocessing::). + + The ARC assembler does not support a line separator character. + + +File: as.info, Node: ARC-Regs, Prev: ARC-Chars, Up: ARC Syntax + +9.3.2.2 Register Names +...................... + +*TODO* + + +File: as.info, Node: ARC Floating Point, Next: ARC Directives, Prev: ARC Syntax, Up: ARC-Dependent + +9.3.3 Floating Point +-------------------- + +The ARC core does not currently have hardware floating point support. +Software floating point support is provided by `GCC' and uses IEEE +floating-point numbers. + + +File: as.info, Node: ARC Directives, Next: ARC Opcodes, Prev: ARC Floating Point, Up: ARC-Dependent + +9.3.4 ARC Machine Directives +---------------------------- + +The ARC version of `as' supports the following additional machine +directives: + +`.2byte EXPRESSIONS' + *TODO* + +`.3byte EXPRESSIONS' + *TODO* + +`.4byte EXPRESSIONS' + *TODO* + +`.extAuxRegister NAME,ADDRESS,MODE' + The ARCtangent A4 has extensible auxiliary register space. The + auxiliary registers can be defined in the assembler source code by + using this directive. The first parameter is the NAME of the new + auxiallry register. The second parameter is the ADDRESS of the + register in the auxiliary register memory map for the variant of + the ARC. The third parameter specifies the MODE in which the + register can be operated is and it can be one of: + + `r (readonly)' + + `w (write only)' + + `r|w (read or write)' + + For example: + + .extAuxRegister mulhi,0x12,w + + This specifies an extension auxiliary register called _mulhi_ + which is at address 0x12 in the memory space and which is only + writable. + +`.extCondCode SUFFIX,VALUE' + The condition codes on the ARCtangent A4 are extensible and can be + specified by means of this assembler directive. They are specified + by the suffix and the value for the condition code. They can be + used to specify extra condition codes with any values. For + example: + + .extCondCode is_busy,0x14 + + add.is_busy r1,r2,r3 + bis_busy _main + +`.extCoreRegister NAME,REGNUM,MODE,SHORTCUT' + Specifies an extension core register NAME for the application. + This allows a register NAME with a valid REGNUM between 0 and 60, + with the following as valid values for MODE + + `_r_ (readonly)' + + `_w_ (write only)' + + `_r|w_ (read or write)' + + The other parameter gives a description of the register having a + SHORTCUT in the pipeline. The valid values are: + + `can_shortcut' + + `cannot_shortcut' + + For example: + + .extCoreRegister mlo,57,r,can_shortcut + + This defines an extension core register mlo with the value 57 which + can shortcut the pipeline. + +`.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS' + The ARCtangent A4 allows the user to specify extension + instructions. The extension instructions are not macros. The + assembler creates encodings for use of these instructions + according to the specification by the user. The parameters are: + + * NAME Name of the extension instruction + + * OPCODE Opcode to be used. (Bits 27:31 in the encoding). + Valid values 0x10-0x1f or 0x03 + + * SUBOPCODE Subopcode to be used. Valid values are from + 0x09-0x3f. However the correct value also depends on + SYNTAXCLASS + + * SUFFIXCLASS Determines the kinds of suffixes to be allowed. + Valid values are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' + which indicates the absence or presence of conditional + suffixes and flag setting by the extension instruction. It + is also possible to specify that an instruction sets the + flags and is conditional by using `SUFFIX_CODE' | + `SUFFIX_FLAG'. + + * SYNTAXCLASS Determines the syntax class for the instruction. + It can have the following values: + + ``SYNTAX_2OP':' + 2 Operand Instruction + + ``SYNTAX_3OP':' + 3 Operand Instruction + + In addition there could be modifiers for the syntax class as + described below: + + Syntax Class Modifiers are: + + - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP, + specifying that the first operand of a three-operand + instruction must be an immediate (i.e., the result is + discarded). OP1_MUST_BE_IMM is used by bitwise ORing it + with SYNTAX_3OP as given in the example below. This + could usually be used to set the flags using specific + instructions and not retain results. + + - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it + specifies that there is an implied immediate destination + operand which does not appear in the syntax. For + example, if the source code contains an instruction like: + + inst r1,r2 + + it really means that the first argument is an implied + immediate (that is, the result is discarded). This is + the same as though the source code were: inst 0,r1,r2. + You use OP1_IMM_IMPLIED by bitwise ORing it with + SYNTAX_20P. + + + For example, defining 64-bit multiplier with immediate operands: + + .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG , + SYNTAX_3OP|OP1_MUST_BE_IMM + + The above specifies an extension instruction called mp64 which has + 3 operands, sets the flags, can be used with a condition code, for + which the first operand is an immediate. (Equivalent to + discarding the result of the operation). + + .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED + + This describes a 2 operand instruction with an implicit first + immediate operand. The result of this operation would be + discarded. + +`.half EXPRESSIONS' + *TODO* + +`.long EXPRESSIONS' + *TODO* + +`.option ARC|ARC5|ARC6|ARC7|ARC8' + The `.option' directive must be followed by the desired core + version. Again `arc' is an alias for `arc6'. + + Note: the `.option' directive overrides the command line option + `-marc'; a warning is emitted when the version is not consistent + between the two - even for the implicit default core version + (arc6). + +`.short EXPRESSIONS' + *TODO* + +`.word EXPRESSIONS' + *TODO* + + + +File: as.info, Node: ARC Opcodes, Prev: ARC Directives, Up: ARC-Dependent + +9.3.5 Opcodes +------------- + +For information on the ARC instruction set, see `ARC Programmers +Reference Manual', ARC International (www.arc.com) + + +File: as.info, Node: ARM-Dependent, Next: AVR-Dependent, Prev: ARC-Dependent, Up: Machine Dependencies + +9.4 ARM Dependent Features +========================== + +* Menu: + +* ARM Options:: Options +* ARM Syntax:: Syntax +* ARM Floating Point:: Floating Point +* ARM Directives:: ARM Machine Directives +* ARM Opcodes:: Opcodes +* ARM Mapping Symbols:: Mapping Symbols +* ARM Unwinding Tutorial:: Unwinding + + +File: as.info, Node: ARM Options, Next: ARM Syntax, Up: ARM-Dependent + +9.4.1 Options +------------- + +`-mcpu=PROCESSOR[+EXTENSION...]' + This option specifies the target processor. The assembler will + issue an error message if an attempt is made to assemble an + instruction which will not execute on the target processor. The + following processor names are recognized: `arm1', `arm2', `arm250', + `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7', + `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', + `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t', + `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi', + `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1', + `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920', + `arm920t', `arm922t', `arm940t', `arm9tdmi', `fa526' (Faraday + FA526 processor), `fa626' (Faraday FA626 processor), `arm9e', + `arm926e', `arm926ej-s', `arm946e-r0', `arm946e', `arm946e-s', + `arm966e-r0', `arm966e', `arm966e-s', `arm968e-s', `arm10t', + `arm10tdmi', `arm10e', `arm1020', `arm1020t', `arm1020e', + `arm1022e', `arm1026ej-s', `fa606te' (Faraday FA606TE processor), + `fa616te' (Faraday FA616TE processor), `fa626te' (Faraday FA626TE + processor), `fmp626' (Faraday FMP626 processor), `fa726te' + (Faraday FA726TE processor), `arm1136j-s', `arm1136jf-s', + `arm1156t2-s', `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', + `mpcore', `mpcorenovfp', `cortex-a5', `cortex-a7', `cortex-a8', + `cortex-a9', `cortex-a15', `cortex-r4', `cortex-r4f', `cortex-r5', + `cortex-r7', `cortex-m4', `cortex-m3', `cortex-m1', `cortex-m0', + `cortex-m0plus', `ep9312' (ARM920 with Cirrus Maverick + coprocessor), `i80200' (Intel XScale processor) `iwmmxt' (Intel(r) + XScale processor with Wireless MMX(tm) technology coprocessor) and + `xscale'. The special name `all' may be used to allow the + assembler to accept instructions valid for any ARM processor. + + In addition to the basic instruction set, the assembler can be + told to accept various extension mnemonics that extend the + processor using the co-processor instruction space. For example, + `-mcpu=arm920+maverick' is equivalent to specifying `-mcpu=ep9312'. + + Multiple extensions may be specified, separated by a `+'. The + extensions should be specified in ascending alphabetical order. + + Some extensions may be restricted to particular architectures; + this is documented in the list of extensions below. + + Extension mnemonics may also be removed from those the assembler + accepts. This is done be prepending `no' to the option that adds + the extension. Extensions that are removed should be listed after + all extensions which have been added, again in ascending + alphabetical order. For example, `-mcpu=ep9312+nomaverick' is + equivalent to specifying `-mcpu=arm920'. + + The following extensions are currently supported: `crypto' + (Cryptography Extensions for v8-A architecture, implies `fp+simd'), + `fp' (Floating Point Extensions for v8-A architecture), `idiv' + (Integer Divide Extensions for v7-A and v7-R architectures), + `iwmmxt', `iwmmxt2', `maverick', `mp' (Multiprocessing Extensions + for v7-A and v7-R architectures), `os' (Operating System for v6M + architecture), `sec' (Security Extensions for v6K and v7-A + architectures), `simd' (Advanced SIMD Extensions for v8-A + architecture, implies `fp'), `virt' (Virtualization Extensions for + v7-A architecture, implies `idiv'), and `xscale'. + +`-march=ARCHITECTURE[+EXTENSION...]' + This option specifies the target architecture. The assembler will + issue an error message if an attempt is made to assemble an + instruction which will not execute on the target architecture. + The following architecture names are recognized: `armv1', `armv2', + `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm', + `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te', + `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk', + `armv6-m', `armv6s-m', `armv7', `armv7-a', `armv7ve', `armv7-r', + `armv7-m', `armv7e-m', `armv8-a', `iwmmxt' and `xscale'. If both + `-mcpu' and `-march' are specified, the assembler will use the + setting for `-mcpu'. + + The architecture option can be extended with the same instruction + set extension options as the `-mcpu' option. + +`-mfpu=FLOATING-POINT-FORMAT' + This option specifies the floating point format to assemble for. + The assembler will issue an error message if an attempt is made to + assemble an instruction which will not execute on the target + floating point unit. The following format options are recognized: + `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11', + `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0', + `vfp9', `vfpxd', `vfpv2', `vfpv3', `vfpv3-fp16', `vfpv3-d16', + `vfpv3-d16-fp16', `vfpv3xd', `vfpv3xd-d16', `vfpv4', `vfpv4-d16', + `fpv4-sp-d16', `fp-armv8', `arm1020t', `arm1020e', `arm1136jf-s', + `maverick', `neon', `neon-vfpv4', `neon-fp-armv8', and + `crypto-neon-fp-armv8'. + + In addition to determining which instructions are assembled, this + option also affects the way in which the `.double' assembler + directive behaves when assembling little-endian code. + + The default is dependent on the processor selected. For + Architecture 5 or later, the default is to assembler for VFP + instructions; for earlier architectures the default is to assemble + for FPA instructions. + +`-mthumb' + This option specifies that the assembler should start assembling + Thumb instructions; that is, it should behave as though the file + starts with a `.code 16' directive. + +`-mthumb-interwork' + This option specifies that the output generated by the assembler + should be marked as supporting interworking. + +`-mimplicit-it=never' +`-mimplicit-it=always' +`-mimplicit-it=arm' +`-mimplicit-it=thumb' + The `-mimplicit-it' option controls the behavior of the assembler + when conditional instructions are not enclosed in IT blocks. + There are four possible behaviors. If `never' is specified, such + constructs cause a warning in ARM code and an error in Thumb-2 + code. If `always' is specified, such constructs are accepted in + both ARM and Thumb-2 code, where the IT instruction is added + implicitly. If `arm' is specified, such constructs are accepted + in ARM code and cause an error in Thumb-2 code. If `thumb' is + specified, such constructs cause a warning in ARM code and are + accepted in Thumb-2 code. If you omit this option, the behavior + is equivalent to `-mimplicit-it=arm'. + +`-mapcs-26' +`-mapcs-32' + These options specify that the output generated by the assembler + should be marked as supporting the indicated version of the Arm + Procedure. Calling Standard. + +`-matpcs' + This option specifies that the output generated by the assembler + should be marked as supporting the Arm/Thumb Procedure Calling + Standard. If enabled this option will cause the assembler to + create an empty debugging section in the object file called + .arm.atpcs. Debuggers can use this to determine the ABI being + used by. + +`-mapcs-float' + This indicates the floating point variant of the APCS should be + used. In this variant floating point arguments are passed in FP + registers rather than integer registers. + +`-mapcs-reentrant' + This indicates that the reentrant variant of the APCS should be + used. This variant supports position independent code. + +`-mfloat-abi=ABI' + This option specifies that the output generated by the assembler + should be marked as using specified floating point ABI. The + following values are recognized: `soft', `softfp' and `hard'. + +`-meabi=VER' + This option specifies which EABI version the produced object files + should conform to. The following values are recognized: `gnu', `4' + and `5'. + +`-EB' + This option specifies that the output generated by the assembler + should be marked as being encoded for a big-endian processor. + +`-EL' + This option specifies that the output generated by the assembler + should be marked as being encoded for a little-endian processor. + +`-k' + This option specifies that the output of the assembler should be + marked as position-independent code (PIC). + +`--fix-v4bx' + Allow `BX' instructions in ARMv4 code. This is intended for use + with the linker option of the same name. + +`-mwarn-deprecated' +`-mno-warn-deprecated' + Enable or disable warnings about using deprecated options or + features. The default is to warn. + +`-mccs' + Turns on CodeComposer Studio assembly syntax compatibility mode. + + + +File: as.info, Node: ARM Syntax, Next: ARM Floating Point, Prev: ARM Options, Up: ARM-Dependent + +9.4.2 Syntax +------------ + +* Menu: + +* ARM-Instruction-Set:: Instruction Set +* ARM-Chars:: Special Characters +* ARM-Regs:: Register Names +* ARM-Relocations:: Relocations +* ARM-Neon-Alignment:: NEON Alignment Specifiers + + +File: as.info, Node: ARM-Instruction-Set, Next: ARM-Chars, Up: ARM Syntax + +9.4.2.1 Instruction Set Syntax +.............................. + +Two slightly different syntaxes are support for ARM and THUMB +instructions. The default, `divided', uses the old style where ARM and +THUMB instructions had their own, separate syntaxes. The new, +`unified' syntax, which can be selected via the `.syntax' directive, +and has the following main features: + + * Immediate operands do not require a `#' prefix. + + * The `IT' instruction may appear, and if it does it is validated + against subsequent conditional affixes. In ARM mode it does not + generate machine code, in THUMB mode it does. + + * For ARM instructions the conditional affixes always appear at the + end of the instruction. For THUMB instructions conditional + affixes can be used, but only inside the scope of an `IT' + instruction. + + * All of the instructions new to the V6T2 architecture (and later) + are available. (Only a few such instructions can be written in the + `divided' syntax). + + * The `.N' and `.W' suffixes are recognized and honored. + + * All instructions set the flags if and only if they have an `s' + affix. + + +File: as.info, Node: ARM-Chars, Next: ARM-Regs, Prev: ARM-Instruction-Set, Up: ARM Syntax + +9.4.2.2 Special Characters +.......................... + +The presence of a `@' anywhere on a line indicates the start of a +comment that extends to the end of that line. + + If a `#' appears as the first character of a line then the whole +line is treated as a comment, but in this case the line could also be a +logical line number directive (*note Comments::) or a preprocessor +control command (*note Preprocessing::). + + The `;' character can be used instead of a newline to separate +statements. + + Either `#' or `$' can be used to indicate immediate operands. + + *TODO* Explain about /data modifier on symbols. + + +File: as.info, Node: ARM-Regs, Next: ARM-Relocations, Prev: ARM-Chars, Up: ARM Syntax + +9.4.2.3 Register Names +...................... + +*TODO* Explain about ARM register naming, and the predefined names. + + +File: as.info, Node: ARM-Relocations, Next: ARM-Neon-Alignment, Prev: ARM-Regs, Up: ARM Syntax + +9.4.2.4 ARM relocation generation +................................. + +Specific data relocations can be generated by putting the relocation +name in parentheses after the symbol name. For example: + + .word foo(TARGET1) + + This will generate an `R_ARM_TARGET1' relocation against the symbol +FOO. The following relocations are supported: `GOT', `GOTOFF', +`TARGET1', `TARGET2', `SBREL', `TLSGD', `TLSLDM', `TLSLDO', `TLSDESC', +`TLSCALL', `GOTTPOFF', `GOT_PREL' and `TPOFF'. + + For compatibility with older toolchains the assembler also accepts +`(PLT)' after branch targets. On legacy targets this will generate the +deprecated `R_ARM_PLT32' relocation. On EABI targets it will encode +either the `R_ARM_CALL' or `R_ARM_JUMP24' relocation, as appropriate. + + Relocations for `MOVW' and `MOVT' instructions can be generated by +prefixing the value with `#:lower16:' and `#:upper16' respectively. +For example to load the 32-bit address of foo into r0: + + MOVW r0, #:lower16:foo + MOVT r0, #:upper16:foo + + +File: as.info, Node: ARM-Neon-Alignment, Prev: ARM-Relocations, Up: ARM Syntax + +9.4.2.5 NEON Alignment Specifiers +................................. + +Some NEON load/store instructions allow an optional address alignment +qualifier. The ARM documentation specifies that this is indicated by +`@ ALIGN'. However GAS already interprets the `@' character as a "line +comment" start, so `: ALIGN' is used instead. For example: + + vld1.8 {q0}, [r0, :128] + + +File: as.info, Node: ARM Floating Point, Next: ARM Directives, Prev: ARM Syntax, Up: ARM-Dependent + +9.4.3 Floating Point +-------------------- + +The ARM family uses IEEE floating-point numbers. + + +File: as.info, Node: ARM Directives, Next: ARM Opcodes, Prev: ARM Floating Point, Up: ARM-Dependent + +9.4.4 ARM Machine Directives +---------------------------- + +`.2byte EXPRESSION [, EXPRESSION]*' +`.4byte EXPRESSION [, EXPRESSION]*' +`.8byte EXPRESSION [, EXPRESSION]*' + These directives write 2, 4 or 8 byte values to the output section. + +`.align EXPRESSION [, EXPRESSION]' + This is the generic .ALIGN directive. For the ARM however if the + first argument is zero (ie no alignment is needed) the assembler + will behave as if the argument had been 2 (ie pad to the next four + byte boundary). This is for compatibility with ARM's own + assembler. + +`.arch NAME' + Select the target architecture. Valid values for NAME are the + same as for the `-march' commandline option. + + Specifying `.arch' clears any previously selected architecture + extensions. + +`.arch_extension NAME' + Add or remove an architecture extension to the target + architecture. Valid values for NAME are the same as those + accepted as architectural extensions by the `-mcpu' commandline + option. + + `.arch_extension' may be used multiple times to add or remove + extensions incrementally to the architecture being compiled for. + +`.arm' + This performs the same action as .CODE 32. + +`.bss' + This directive switches to the `.bss' section. + +`.cantunwind' + Prevents unwinding through the current function. No personality + routine or exception table data is required or permitted. + +`.code `[16|32]'' + This directive selects the instruction set being generated. The + value 16 selects Thumb, with the value 32 selecting ARM. + +`.cpu NAME' + Select the target processor. Valid values for NAME are the same as + for the `-mcpu' commandline option. + + Specifying `.cpu' clears any previously selected architecture + extensions. + +`NAME .dn REGISTER NAME [.TYPE] [[INDEX]]' +`NAME .qn REGISTER NAME [.TYPE] [[INDEX]]' + The `dn' and `qn' directives are used to create typed and/or + indexed register aliases for use in Advanced SIMD Extension (Neon) + instructions. The former should be used to create aliases of + double-precision registers, and the latter to create aliases of + quad-precision registers. + + If these directives are used to create typed aliases, those + aliases can be used in Neon instructions instead of writing types + after the mnemonic or after each operand. For example: + + x .dn d2.f32 + y .dn d3.f32 + z .dn d4.f32[1] + vmul x,y,z + + This is equivalent to writing the following: + + vmul.f32 d2,d3,d4[1] + + Aliases created using `dn' or `qn' can be destroyed using `unreq'. + +`.eabi_attribute TAG, VALUE' + Set the EABI object attribute TAG to VALUE. + + The TAG is either an attribute number, or one of the following: + `Tag_CPU_raw_name', `Tag_CPU_name', `Tag_CPU_arch', + `Tag_CPU_arch_profile', `Tag_ARM_ISA_use', `Tag_THUMB_ISA_use', + `Tag_FP_arch', `Tag_WMMX_arch', `Tag_Advanced_SIMD_arch', + `Tag_PCS_config', `Tag_ABI_PCS_R9_use', `Tag_ABI_PCS_RW_data', + `Tag_ABI_PCS_RO_data', `Tag_ABI_PCS_GOT_use', + `Tag_ABI_PCS_wchar_t', `Tag_ABI_FP_rounding', + `Tag_ABI_FP_denormal', `Tag_ABI_FP_exceptions', + `Tag_ABI_FP_user_exceptions', `Tag_ABI_FP_number_model', + `Tag_ABI_align_needed', `Tag_ABI_align_preserved', + `Tag_ABI_enum_size', `Tag_ABI_HardFP_use', `Tag_ABI_VFP_args', + `Tag_ABI_WMMX_args', `Tag_ABI_optimization_goals', + `Tag_ABI_FP_optimization_goals', `Tag_compatibility', + `Tag_CPU_unaligned_access', `Tag_FP_HP_extension', + `Tag_ABI_FP_16bit_format', `Tag_MPextension_use', `Tag_DIV_use', + `Tag_nodefaults', `Tag_also_compatible_with', `Tag_conformance', + `Tag_T2EE_use', `Tag_Virtualization_use' + + The VALUE is either a `number', `"string"', or `number, "string"' + depending on the tag. + + Note - the following legacy values are also accepted by TAG: + `Tag_VFP_arch', `Tag_ABI_align8_needed', + `Tag_ABI_align8_preserved', `Tag_VFP_HP_extension', + +`.even' + This directive aligns to an even-numbered address. + +`.extend EXPRESSION [, EXPRESSION]*' +`.ldouble EXPRESSION [, EXPRESSION]*' + These directives write 12byte long double floating-point values to + the output section. These are not compatible with current ARM + processors or ABIs. + +`.fnend' + Marks the end of a function with an unwind table entry. The + unwind index table entry is created when this directive is + processed. + + If no personality routine has been specified then standard + personality routine 0 or 1 will be used, depending on the number + of unwind opcodes required. + +`.fnstart' + Marks the start of a function with an unwind table entry. + +`.force_thumb' + This directive forces the selection of Thumb instructions, even if + the target processor does not support those instructions + +`.fpu NAME' + Select the floating-point unit to assemble for. Valid values for + NAME are the same as for the `-mfpu' commandline option. + +`.handlerdata' + Marks the end of the current function, and the start of the + exception table entry for that function. Anything between this + directive and the `.fnend' directive will be added to the + exception table entry. + + Must be preceded by a `.personality' or `.personalityindex' + directive. + +`.inst OPCODE [ , ... ]' +`.inst.n OPCODE [ , ... ]' +`.inst.w OPCODE [ , ... ]' + Generates the instruction corresponding to the numerical value + OPCODE. `.inst.n' and `.inst.w' allow the Thumb instruction size + to be specified explicitly, overriding the normal encoding rules. + +`.ldouble EXPRESSION [, EXPRESSION]*' + See `.extend'. + +`.ltorg' + This directive causes the current contents of the literal pool to + be dumped into the current section (which is assumed to be the + .text section) at the current location (aligned to a word + boundary). `GAS' maintains a separate literal pool for each + section and each sub-section. The `.ltorg' directive will only + affect the literal pool of the current section and sub-section. + At the end of assembly all remaining, un-empty literal pools will + automatically be dumped. + + Note - older versions of `GAS' would dump the current literal pool + any time a section change occurred. This is no longer done, since + it prevents accurate control of the placement of literal pools. + +`.movsp REG [, #OFFSET]' + Tell the unwinder that REG contains an offset from the current + stack pointer. If OFFSET is not specified then it is assumed to be + zero. + +`.object_arch NAME' + Override the architecture recorded in the EABI object attribute + section. Valid values for NAME are the same as for the `.arch' + directive. Typically this is useful when code uses runtime + detection of CPU features. + +`.packed EXPRESSION [, EXPRESSION]*' + This directive writes 12-byte packed floating-point values to the + output section. These are not compatible with current ARM + processors or ABIs. + +`.pad #COUNT' + Generate unwinder annotations for a stack adjustment of COUNT + bytes. A positive value indicates the function prologue allocated + stack space by decrementing the stack pointer. + +`.personality NAME' + Sets the personality routine for the current function to NAME. + +`.personalityindex INDEX' + Sets the personality routine for the current function to the EABI + standard routine number INDEX + +`.pool' + This is a synonym for .ltorg. + +`NAME .req REGISTER NAME' + This creates an alias for REGISTER NAME called NAME. For example: + + foo .req r0 + +`.save REGLIST' + Generate unwinder annotations to restore the registers in REGLIST. + The format of REGLIST is the same as the corresponding + store-multiple instruction. + + _core registers_ + .save {r4, r5, r6, lr} + stmfd sp!, {r4, r5, r6, lr} + _FPA registers_ + .save f4, 2 + sfmfd f4, 2, [sp]! + _VFP registers_ + .save {d8, d9, d10} + fstmdx sp!, {d8, d9, d10} + _iWMMXt registers_ + .save {wr10, wr11} + wstrd wr11, [sp, #-8]! + wstrd wr10, [sp, #-8]! + or + .save wr11 + wstrd wr11, [sp, #-8]! + .save wr10 + wstrd wr10, [sp, #-8]! + +`.setfp FPREG, SPREG [, #OFFSET]' + Make all unwinder annotations relative to a frame pointer. + Without this the unwinder will use offsets from the stack pointer. + + The syntax of this directive is the same as the `add' or `mov' + instruction used to set the frame pointer. SPREG must be either + `sp' or mentioned in a previous `.movsp' directive. + + .movsp ip + mov ip, sp + ... + .setfp fp, ip, #4 + add fp, ip, #4 + +`.secrel32 EXPRESSION [, EXPRESSION]*' + This directive emits relocations that evaluate to the + section-relative offset of each expression's symbol. This + directive is only supported for PE targets. + +`.syntax [`unified' | `divided']' + This directive sets the Instruction Set Syntax as described in the + *Note ARM-Instruction-Set:: section. + +`.thumb' + This performs the same action as .CODE 16. + +`.thumb_func' + This directive specifies that the following symbol is the name of a + Thumb encoded function. This information is necessary in order to + allow the assembler and linker to generate correct code for + interworking between Arm and Thumb instructions and should be used + even if interworking is not going to be performed. The presence + of this directive also implies `.thumb' + + This directive is not neccessary when generating EABI objects. On + these targets the encoding is implicit when generating Thumb code. + +`.thumb_set' + This performs the equivalent of a `.set' directive in that it + creates a symbol which is an alias for another symbol (possibly + not yet defined). This directive also has the added property in + that it marks the aliased symbol as being a thumb function entry + point, in the same way that the `.thumb_func' directive does. + +`.tlsdescseq TLS-VARIABLE' + This directive is used to annotate parts of an inlined TLS + descriptor trampoline. Normally the trampoline is provided by the + linker, and this directive is not needed. + +`.unreq ALIAS-NAME' + This undefines a register alias which was previously defined using + the `req', `dn' or `qn' directives. For example: + + foo .req r0 + .unreq foo + + An error occurs if the name is undefined. Note - this pseudo op + can be used to delete builtin in register name aliases (eg 'r0'). + This should only be done if it is really necessary. + +`.unwind_raw OFFSET, BYTE1, ...' + Insert one of more arbitary unwind opcode bytes, which are known + to adjust the stack pointer by OFFSET bytes. + + For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save + {r0}' + +`.vsave VFP-REGLIST' + Generate unwinder annotations to restore the VFP registers in + VFP-REGLIST using FLDMD. Also works for VFPv3 registers that are + to be restored using VLDM. The format of VFP-REGLIST is the same + as the corresponding store-multiple instruction. + + _VFP registers_ + .vsave {d8, d9, d10} + fstmdd sp!, {d8, d9, d10} + _VFPv3 registers_ + .vsave {d15, d16, d17} + vstm sp!, {d15, d16, d17} + + Since FLDMX and FSTMX are now deprecated, this directive should be + used in favour of `.save' for saving VFP registers for ARMv6 and + above. + + + +File: as.info, Node: ARM Opcodes, Next: ARM Mapping Symbols, Prev: ARM Directives, Up: ARM-Dependent + +9.4.5 Opcodes +------------- + +`as' implements all the standard ARM opcodes. It also implements +several pseudo opcodes, including several synthetic load instructions. + +`NOP' + nop + + This pseudo op will always evaluate to a legal ARM instruction + that does nothing. Currently it will evaluate to MOV r0, r0. + +`LDR' + ldr , = + + If expression evaluates to a numeric constant then a MOV or MVN + instruction will be used in place of the LDR instruction, if the + constant can be generated by either of these instructions. + Otherwise the constant will be placed into the nearest literal + pool (if it not already there) and a PC relative LDR instruction + will be generated. + +`ADR' + adr
    *$!nmZ&g|jEhgPr{x1%<1 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

    R6COm=y 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 Vx_af^cXs`Kz~|N22i(+Z{Xg0xNRa>l literal 0 Hc-jL100001 diff --git a/gprof/bsd_callg_bl.c b/gprof/bsd_callg_bl.c new file mode 100644 index 00000000000..1e81be99bfd --- /dev/null +++ b/gprof/bsd_callg_bl.c @@ -0,0 +1,125 @@ +/* ==> Do not modify this file!! It is created automatically + from bsd_callg_bl.m using the gen-c-prog.awk script. <== */ + +#include +#include "ansidecl.h" + +void bsd_callg_blurb (FILE *); +void +bsd_callg_blurb (file) + FILE *file; +{ + fputs ("\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs ("call graph profile:\n", file); + fputs (" The sum of self and descendents is the major sort\n", file); + fputs (" for this listing.\n", file); + fputs ("\n", file); + fputs (" function entries:\n", file); + fputs ("\n", file); + fputs ("index the index of the function in the call graph\n", file); + fputs (" listing, as an aid to locating it (see below).\n", file); + fputs ("\n", file); + fputs ("%time the percentage of the total time of the program\n", file); + fputs (" accounted for by this function and its\n", file); + fputs (" descendents.\n", file); + fputs ("\n", file); + fputs ("self the number of seconds spent in this function\n", file); + fputs (" itself.\n", file); + fputs ("\n", file); + fputs ("descendents\n", file); + fputs (" the number of seconds spent in the descendents of\n", file); + fputs (" this function on behalf of this function.\n", file); + fputs ("\n", file); + fputs ("called the number of times this function is called (other\n", file); + fputs (" than recursive calls).\n", file); + fputs ("\n", file); + fputs ("self the number of times this function calls itself\n", file); + fputs (" recursively.\n", file); + fputs ("\n", file); + fputs ("name the name of the function, with an indication of\n", file); + fputs (" its membership in a cycle, if any.\n", file); + fputs ("\n", file); + fputs ("index the index of the function in the call graph\n", file); + fputs (" listing, as an aid to locating it.\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs (" parent listings:\n", file); + fputs ("\n", file); + fputs ("self* the number of seconds of this function's self time\n", file); + fputs (" which is due to calls from this parent.\n", file); + fputs ("\n", file); + fputs ("descendents*\n", file); + fputs (" the number of seconds of this function's\n", file); + fputs (" descendent time which is due to calls from this\n", file); + fputs (" parent.\n", file); + fputs ("\n", file); + fputs ("called** the number of times this function is called by\n", file); + fputs (" this parent. This is the numerator of the\n", file); + fputs (" fraction which divides up the function's time to\n", file); + fputs (" its parents.\n", file); + fputs ("\n", file); + fputs ("total* the number of times this function was called by\n", file); + fputs (" all of its parents. This is the denominator of\n", file); + fputs (" the propagation fraction.\n", file); + fputs ("\n", file); + fputs ("parents the name of this parent, with an indication of the\n", file); + fputs (" parent's membership in a cycle, if any.\n", file); + fputs ("\n", file); + fputs ("index the index of this parent in the call graph\n", file); + fputs (" listing, as an aid in locating it.\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs (" children listings:\n", file); + fputs ("\n", file); + fputs ("self* the number of seconds of this child's self time\n", file); + fputs (" which is due to being called by this function.\n", file); + fputs ("\n", file); + fputs ("descendent*\n", file); + fputs (" the number of seconds of this child's descendent's\n", file); + fputs (" time which is due to being called by this\n", file); + fputs (" function.\n", file); + fputs ("\n", file); + fputs ("called** the number of times this child is called by this\n", file); + fputs (" function. This is the numerator of the\n", file); + fputs (" propagation fraction for this child.\n", file); + fputs ("\n", file); + fputs ("total* the number of times this child is called by all\n", file); + fputs (" functions. This is the denominator of the\n", file); + fputs (" propagation fraction.\n", file); + fputs ("\n", file); + fputs ("children the name of this child, and an indication of its\n", file); + fputs (" membership in a cycle, if any.\n", file); + fputs ("\n", file); + fputs ("index the index of this child in the call graph listing,\n", file); + fputs (" as an aid to locating it.\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs (" * these fields are omitted for parents (or\n", file); + fputs (" children) in the same cycle as the function. If\n", file); + fputs (" the function (or child) is a member of a cycle,\n", file); + fputs (" the propagated times and propagation denominator\n", file); + fputs (" represent the self time and descendent time of the\n", file); + fputs (" cycle as a whole.\n", file); + fputs ("\n", file); + fputs (" ** static-only parents and children are indicated\n", file); + fputs (" by a call count of 0.\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs (" cycle listings:\n", file); + fputs (" the cycle as a whole is listed with the same\n", file); + fputs (" fields as a function entry. Below it are listed\n", file); + fputs (" the members of the cycle, and their contributions\n", file); + fputs (" to the time and call counts of the cycle.\n", file); + fputs (" \n", file); + fputs ("Copyright (C) 2012-2014 Free Software Foundation, Inc.\n", file); + fputs ("\n", file); + fputs ("Copying and distribution of this file, with or without modification,\n", file); + fputs ("are permitted in any medium without royalty provided the copyright\n", file); + fputs ("notice and this notice are preserved.\n", file); +} diff --git a/gprof/config.texi b/gprof/config.texi new file mode 100644 index 00000000000..169c886dced --- /dev/null +++ b/gprof/config.texi @@ -0,0 +1 @@ +@set top_srcdir . diff --git a/gprof/flat_bl.c b/gprof/flat_bl.c new file mode 100644 index 00000000000..4c04d6ebedb --- /dev/null +++ b/gprof/flat_bl.c @@ -0,0 +1,45 @@ +/* ==> Do not modify this file!! It is created automatically + from flat_bl.m using the gen-c-prog.awk script. <== */ + +#include +#include "ansidecl.h" + +void flat_blurb (FILE *); +void +flat_blurb (file) + FILE *file; +{ + fputs ("\n", file); + fputs (" % the percentage of the total running time of the\n", file); + fputs ("time program used by this function.\n", file); + fputs ("\n", file); + fputs ("cumulative a running sum of the number of seconds accounted\n", file); + fputs (" seconds for by this function and those listed above it.\n", file); + fputs ("\n", file); + fputs (" self the number of seconds accounted for by this\n", file); + fputs ("seconds function alone. This is the major sort for this\n", file); + fputs (" listing.\n", file); + fputs ("\n", file); + fputs ("calls the number of times this function was invoked, if\n", file); + fputs (" this function is profiled, else blank.\n", file); + fputs (" \n", file); + fputs (" self the average number of milliseconds spent in this\n", file); + fputs ("ms/call function per call, if this function is profiled,\n", file); + fputs (" else blank.\n", file); + fputs ("\n", file); + fputs (" total the average number of milliseconds spent in this\n", file); + fputs ("ms/call function and its descendents per call, if this \n", file); + fputs (" function is profiled, else blank.\n", file); + fputs ("\n", file); + fputs ("name the name of the function. This is the minor sort\n", file); + fputs (" for this listing. The index shows the location of\n", file); + fputs (" the function in the gprof listing. If the index is\n", file); + fputs (" in parenthesis it shows where it would appear in\n", file); + fputs (" the gprof listing if it were to be printed.\n", file); + fputs (" \n", file); + fputs ("Copyright (C) 2012-2014 Free Software Foundation, Inc.\n", file); + fputs ("\n", file); + fputs ("Copying and distribution of this file, with or without modification,\n", file); + fputs ("are permitted in any medium without royalty provided the copyright\n", file); + fputs ("notice and this notice are preserved.\n", file); +} diff --git a/gprof/fsf_callg_bl.c b/gprof/fsf_callg_bl.c new file mode 100644 index 00000000000..a5ca300d32e --- /dev/null +++ b/gprof/fsf_callg_bl.c @@ -0,0 +1,100 @@ +/* ==> Do not modify this file!! It is created automatically + from fsf_callg_bl.m using the gen-c-prog.awk script. <== */ + +#include +#include "ansidecl.h" + +void fsf_callg_blurb (FILE *); +void +fsf_callg_blurb (file) + FILE *file; +{ + fputs ("\n", file); + fputs (" This table describes the call tree of the program, and was sorted by\n", file); + fputs (" the total amount of time spent in each function and its children.\n", file); + fputs ("\n", file); + fputs (" Each entry in this table consists of several lines. The line with the\n", file); + fputs (" index number at the left hand margin lists the current function.\n", file); + fputs (" The lines above it list the functions that called this function,\n", file); + fputs (" and the lines below it list the functions this one called.\n", file); + fputs (" This line lists:\n", file); + fputs (" index A unique number given to each element of the table.\n", file); + fputs (" Index numbers are sorted numerically.\n", file); + fputs (" The index number is printed next to every function name so\n", file); + fputs (" it is easier to look up where the function is in the table.\n", file); + fputs ("\n", file); + fputs (" % time This is the percentage of the `total' time that was spent\n", file); + fputs (" in this function and its children. Note that due to\n", file); + fputs (" different viewpoints, functions excluded by options, etc,\n", file); + fputs (" these numbers will NOT add up to 100%.\n", file); + fputs ("\n", file); + fputs (" self This is the total amount of time spent in this function.\n", file); + fputs ("\n", file); + fputs (" children This is the total amount of time propagated into this\n", file); + fputs (" function by its children.\n", file); + fputs ("\n", file); + fputs (" called This is the number of times the function was called.\n", file); + fputs (" If the function called itself recursively, the number\n", file); + fputs (" only includes non-recursive calls, and is followed by\n", file); + fputs (" a `+' and the number of recursive calls.\n", file); + fputs ("\n", file); + fputs (" name The name of the current function. The index number is\n", file); + fputs (" printed after it. If the function is a member of a\n", file); + fputs (" cycle, the cycle number is printed between the\n", file); + fputs (" function's name and the index number.\n", file); + fputs ("\n", file); + fputs ("\n", file); + fputs (" For the function's parents, the fields have the following meanings:\n", file); + fputs ("\n", file); + fputs (" self This is the amount of time that was propagated directly\n", file); + fputs (" from the function into this parent.\n", file); + fputs ("\n", file); + fputs (" children This is the amount of time that was propagated from\n", file); + fputs (" the function's children into this parent.\n", file); + fputs ("\n", file); + fputs (" called This is the number of times this parent called the\n", file); + fputs (" function `/' the total number of times the function\n", file); + fputs (" was called. Recursive calls to the function are not\n", file); + fputs (" included in the number after the `/'.\n", file); + fputs ("\n", file); + fputs (" name This is the name of the parent. The parent's index\n", file); + fputs (" number is printed after it. If the parent is a\n", file); + fputs (" member of a cycle, the cycle number is printed between\n", file); + fputs (" the name and the index number.\n", file); + fputs ("\n", file); + fputs (" If the parents of the function cannot be determined, the word\n", file); + fputs (" `' is printed in the `name' field, and all the other\n", file); + fputs (" fields are blank.\n", file); + fputs ("\n", file); + fputs (" For the function's children, the fields have the following meanings:\n", file); + fputs ("\n", file); + fputs (" self This is the amount of time that was propagated directly\n", file); + fputs (" from the child into the function.\n", file); + fputs ("\n", file); + fputs (" children This is the amount of time that was propagated from the\n", file); + fputs (" child's children to the function.\n", file); + fputs ("\n", file); + fputs (" called This is the number of times the function called\n", file); + fputs (" this child `/' the total number of times the child\n", file); + fputs (" was called. Recursive calls by the child are not\n", file); + fputs (" listed in the number after the `/'.\n", file); + fputs ("\n", file); + fputs (" name This is the name of the child. The child's index\n", file); + fputs (" number is printed after it. If the child is a\n", file); + fputs (" member of a cycle, the cycle number is printed\n", file); + fputs (" between the name and the index number.\n", file); + fputs ("\n", file); + fputs (" If there are any cycles (circles) in the call graph, there is an\n", file); + fputs (" entry for the cycle-as-a-whole. This entry shows who called the\n", file); + fputs (" cycle (as parents) and the members of the cycle (as children.)\n", file); + fputs (" The `+' recursive calls entry shows the number of function calls that\n", file); + fputs (" were internal to the cycle, and the calls entry for each member shows,\n", file); + fputs (" for that member, how many times it was called from other members of\n", file); + fputs (" the cycle.\n", file); + fputs (" \n", file); + fputs ("Copyright (C) 2012-2014 Free Software Foundation, Inc.\n", file); + fputs ("\n", file); + fputs ("Copying and distribution of this file, with or without modification,\n", file); + fputs ("are permitted in any medium without royalty provided the copyright\n", file); + fputs ("notice and this notice are preserved.\n", file); +} diff --git a/gprof/gprof.1 b/gprof/gprof.1 new file mode 100644 index 00000000000..ce56f16e651 --- /dev/null +++ b/gprof/gprof.1 @@ -0,0 +1,772 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "GPROF 1" +.TH GPROF 1 "2014-12-23" "binutils-2.25" "GNU" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +gprof \- display call graph profile data +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +gprof [ \-[abcDhilLrsTvwxyz] ] [ \-[ACeEfFJnNOpPqQZ][\fIname\fR] ] + [ \-I \fIdirs\fR ] [ \-d[\fInum\fR] ] [ \-k \fIfrom/to\fR ] + [ \-m \fImin-count\fR ] [ \-R \fImap_file\fR ] [ \-t \fItable-length\fR ] + [ \-\-[no\-]annotated\-source[=\fIname\fR] ] + [ \-\-[no\-]exec\-counts[=\fIname\fR] ] + [ \-\-[no\-]flat\-profile[=\fIname\fR] ] [ \-\-[no\-]graph[=\fIname\fR] ] + [ \-\-[no\-]time=\fIname\fR] [ \-\-all\-lines ] [ \-\-brief ] + [ \-\-debug[=\fIlevel\fR] ] [ \-\-function\-ordering ] + [ \-\-file\-ordering \fImap_file\fR ] [ \-\-directory\-path=\fIdirs\fR ] + [ \-\-display\-unused\-functions ] [ \-\-file\-format=\fIname\fR ] + [ \-\-file\-info ] [ \-\-help ] [ \-\-line ] [ \-\-inline\-file\-names ] + [ \-\-min\-count=\fIn\fR ] [ \-\-no\-static ] [ \-\-print\-path ] + [ \-\-separate\-files ] [ \-\-static\-call\-graph ] [ \-\-sum ] + [ \-\-table\-length=\fIlen\fR ] [ \-\-traditional ] [ \-\-version ] + [ \-\-width=\fIn\fR ] [ \-\-ignore\-non\-functions ] + [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ] [ \-\-no\-demangle ] + [\-\-external\-symbol\-table=name] + [ \fIimage-file\fR ] [ \fIprofile-file\fR ... ] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\f(CW\*(C`gprof\*(C'\fR produces an execution profile of C, Pascal, or Fortran77 +programs. The effect of called routines is incorporated in the profile +of each caller. The profile data is taken from the call graph profile file +(\fIgmon.out\fR default) which is created by programs +that are compiled with the \fB\-pg\fR option of +\&\f(CW\*(C`cc\*(C'\fR, \f(CW\*(C`pc\*(C'\fR, and \f(CW\*(C`f77\*(C'\fR. +The \fB\-pg\fR option also links in versions of the library routines +that are compiled for profiling. \f(CW\*(C`Gprof\*(C'\fR reads the given object +file (the default is \f(CW\*(C`a.out\*(C'\fR) and establishes the relation between +its symbol table and the call graph profile from \fIgmon.out\fR. +If more than one profile file is specified, the \f(CW\*(C`gprof\*(C'\fR +output shows the sum of the profile information in the given profile files. +.PP +\&\f(CW\*(C`Gprof\*(C'\fR calculates the amount of time spent in each routine. +Next, these times are propagated along the edges of the call graph. +Cycles are discovered, and calls into a cycle are made to share the time +of the cycle. +.PP +Several forms of output are available from the analysis. +.PP +The \fIflat profile\fR shows how much time your program spent in each function, +and how many times that function was called. If you simply want to know +which functions burn most of the cycles, it is stated concisely here. +.PP +The \fIcall graph\fR shows, for each function, which functions called it, which +other functions it called, and how many times. There is also an estimate +of how much time was spent in the subroutines of each function. This can +suggest places where you might try to eliminate function calls that use a +lot of time. +.PP +The \fIannotated source\fR listing is a copy of the program's +source code, labeled with the number of times each line of the +program was executed. +.SH "OPTIONS" +.IX Header "OPTIONS" +These options specify which of several output formats +\&\f(CW\*(C`gprof\*(C'\fR should produce. +.PP +Many of these options take an optional \fIsymspec\fR to specify +functions to be included or excluded. These options can be +specified multiple times, with different symspecs, to include +or exclude sets of symbols. +.PP +Specifying any of these options overrides the default (\fB\-p \-q\fR), +which prints a flat profile and call graph analysis +for all functions. +.ie n .IP """\-A[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-A[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-A[symspec]" +.PD 0 +.ie n .IP """\-\-annotated\-source[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--annotated-source[=symspec]" +.PD +The \fB\-A\fR option causes \f(CW\*(C`gprof\*(C'\fR to print annotated source code. +If \fIsymspec\fR is specified, print output only for matching symbols. +.ie n .IP """\-b""" 4 +.el .IP "\f(CW\-b\fR" 4 +.IX Item "-b" +.PD 0 +.ie n .IP """\-\-brief""" 4 +.el .IP "\f(CW\-\-brief\fR" 4 +.IX Item "--brief" +.PD +If the \fB\-b\fR option is given, \f(CW\*(C`gprof\*(C'\fR doesn't print the +verbose blurbs that try to explain the meaning of all of the fields in +the tables. This is useful if you intend to print out the output, or +are tired of seeing the blurbs. +.ie n .IP """\-C[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-C[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-C[symspec]" +.PD 0 +.ie n .IP """\-\-exec\-counts[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--exec-counts[=symspec]" +.PD +The \fB\-C\fR option causes \f(CW\*(C`gprof\*(C'\fR to +print a tally of functions and the number of times each was called. +If \fIsymspec\fR is specified, print tally only for matching symbols. +.Sp +If the profile data file contains basic-block count records, specifying +the \fB\-l\fR option, along with \fB\-C\fR, will cause basic-block +execution counts to be tallied and displayed. +.ie n .IP """\-i""" 4 +.el .IP "\f(CW\-i\fR" 4 +.IX Item "-i" +.PD 0 +.ie n .IP """\-\-file\-info""" 4 +.el .IP "\f(CW\-\-file\-info\fR" 4 +.IX Item "--file-info" +.PD +The \fB\-i\fR option causes \f(CW\*(C`gprof\*(C'\fR to display summary information +about the profile data file(s) and then exit. The number of histogram, +call graph, and basic-block count records is displayed. +.ie n .IP """\-I \f(CIdirs\f(CW""" 4 +.el .IP "\f(CW\-I \f(CIdirs\f(CW\fR" 4 +.IX Item "-I dirs" +.PD 0 +.ie n .IP """\-\-directory\-path=\f(CIdirs\f(CW""" 4 +.el .IP "\f(CW\-\-directory\-path=\f(CIdirs\f(CW\fR" 4 +.IX Item "--directory-path=dirs" +.PD +The \fB\-I\fR option specifies a list of search directories in +which to find source files. Environment variable \fI\s-1GPROF_PATH\s0\fR +can also be used to convey this information. +Used mostly for annotated source output. +.ie n .IP """\-J[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-J[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-J[symspec]" +.PD 0 +.ie n .IP """\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-annotated-source[=symspec]" +.PD +The \fB\-J\fR option causes \f(CW\*(C`gprof\*(C'\fR not to +print annotated source code. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints annotated source, +but excludes matching symbols. +.ie n .IP """\-L""" 4 +.el .IP "\f(CW\-L\fR" 4 +.IX Item "-L" +.PD 0 +.ie n .IP """\-\-print\-path""" 4 +.el .IP "\f(CW\-\-print\-path\fR" 4 +.IX Item "--print-path" +.PD +Normally, source filenames are printed with the path +component suppressed. The \fB\-L\fR option causes \f(CW\*(C`gprof\*(C'\fR +to print the full pathname of +source filenames, which is determined +from symbolic debugging information in the image file +and is relative to the directory in which the compiler +was invoked. +.ie n .IP """\-p[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-p[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-p[symspec]" +.PD 0 +.ie n .IP """\-\-flat\-profile[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--flat-profile[=symspec]" +.PD +The \fB\-p\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a flat profile. +If \fIsymspec\fR is specified, print flat profile only for matching symbols. +.ie n .IP """\-P[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-P[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-P[symspec]" +.PD 0 +.ie n .IP """\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-flat-profile[=symspec]" +.PD +The \fB\-P\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing a flat profile. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a flat profile, +but excludes matching symbols. +.ie n .IP """\-q[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-q[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-q[symspec]" +.PD 0 +.ie n .IP """\-\-graph[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-graph[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--graph[=symspec]" +.PD +The \fB\-q\fR option causes \f(CW\*(C`gprof\*(C'\fR to print the call graph analysis. +If \fIsymspec\fR is specified, print call graph only for matching symbols +and their children. +.ie n .IP """\-Q[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-Q[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-Q[symspec]" +.PD 0 +.ie n .IP """\-\-no\-graph[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-no\-graph[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-graph[=symspec]" +.PD +The \fB\-Q\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing the +call graph. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a call graph, +but excludes matching symbols. +.ie n .IP """\-t""" 4 +.el .IP "\f(CW\-t\fR" 4 +.IX Item "-t" +.PD 0 +.ie n .IP """\-\-table\-length=\f(CInum\f(CW""" 4 +.el .IP "\f(CW\-\-table\-length=\f(CInum\f(CW\fR" 4 +.IX Item "--table-length=num" +.PD +The \fB\-t\fR option causes the \fInum\fR most active source lines in +each source file to be listed when source annotation is enabled. The +default is 10. +.ie n .IP """\-y""" 4 +.el .IP "\f(CW\-y\fR" 4 +.IX Item "-y" +.PD 0 +.ie n .IP """\-\-separate\-files""" 4 +.el .IP "\f(CW\-\-separate\-files\fR" 4 +.IX Item "--separate-files" +.PD +This option affects annotated source output only. +Normally, \f(CW\*(C`gprof\*(C'\fR prints annotated source files +to standard-output. If this option is specified, +annotated source for a file named \fIpath/\fIfilename\fI\fR +is generated in the file \fI\fIfilename\fI\-ann\fR. If the underlying +file system would truncate \fI\fIfilename\fI\-ann\fR so that it +overwrites the original \fI\fIfilename\fI\fR, \f(CW\*(C`gprof\*(C'\fR generates +annotated source in the file \fI\fIfilename\fI.ann\fR instead (if the +original file name has an extension, that extension is \fIreplaced\fR +with \fI.ann\fR). +.ie n .IP """\-Z[\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-Z[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-Z[symspec]" +.PD 0 +.ie n .IP """\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]""" 4 +.el .IP "\f(CW\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-exec-counts[=symspec]" +.PD +The \fB\-Z\fR option causes \f(CW\*(C`gprof\*(C'\fR not to +print a tally of functions and the number of times each was called. +If \fIsymspec\fR is specified, print tally, but exclude matching symbols. +.ie n .IP """\-r""" 4 +.el .IP "\f(CW\-r\fR" 4 +.IX Item "-r" +.PD 0 +.ie n .IP """\-\-function\-ordering""" 4 +.el .IP "\f(CW\-\-function\-ordering\fR" 4 +.IX Item "--function-ordering" +.PD +The \fB\-\-function\-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a +suggested function ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which support arbitrary +ordering of functions in an executable. +.Sp +The exact details of how to force the linker to place functions +in a particular order is system dependent and out of the scope of this +manual. +.ie n .IP """\-R \f(CImap_file\f(CW""" 4 +.el .IP "\f(CW\-R \f(CImap_file\f(CW\fR" 4 +.IX Item "-R map_file" +.PD 0 +.ie n .IP """\-\-file\-ordering \f(CImap_file\f(CW""" 4 +.el .IP "\f(CW\-\-file\-ordering \f(CImap_file\f(CW\fR" 4 +.IX Item "--file-ordering map_file" +.PD +The \fB\-\-file\-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a +suggested .o link line ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which do not support arbitrary +ordering of functions in an executable. +.Sp +Use of the \fB\-a\fR argument is highly recommended with this option. +.Sp +The \fImap_file\fR argument is a pathname to a file which provides +function name to object file mappings. The format of the file is similar to +the output of the program \f(CW\*(C`nm\*(C'\fR. +.Sp +.Vb 8 +\& c\-parse.o:00000000 T yyparse +\& c\-parse.o:00000004 C yyerrflag +\& c\-lang.o:00000000 T maybe_objc_method_name +\& c\-lang.o:00000000 T print_lang_statistics +\& c\-lang.o:00000000 T recognize_objc_keyword +\& c\-decl.o:00000000 T print_lang_identifier +\& c\-decl.o:00000000 T print_lang_type +\& ... +.Ve +.Sp +To create a \fImap_file\fR with \s-1GNU \s0\f(CW\*(C`nm\*(C'\fR, type a command like +\&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR. +.ie n .IP """\-T""" 4 +.el .IP "\f(CW\-T\fR" 4 +.IX Item "-T" +.PD 0 +.ie n .IP """\-\-traditional""" 4 +.el .IP "\f(CW\-\-traditional\fR" 4 +.IX Item "--traditional" +.PD +The \fB\-T\fR option causes \f(CW\*(C`gprof\*(C'\fR to print its output in +\&\*(L"traditional\*(R" \s-1BSD\s0 style. +.ie n .IP """\-w \f(CIwidth\f(CW""" 4 +.el .IP "\f(CW\-w \f(CIwidth\f(CW\fR" 4 +.IX Item "-w width" +.PD 0 +.ie n .IP """\-\-width=\f(CIwidth\f(CW""" 4 +.el .IP "\f(CW\-\-width=\f(CIwidth\f(CW\fR" 4 +.IX Item "--width=width" +.PD +Sets width of output lines to \fIwidth\fR. +Currently only used when printing the function index at the bottom +of the call graph. +.ie n .IP """\-x""" 4 +.el .IP "\f(CW\-x\fR" 4 +.IX Item "-x" +.PD 0 +.ie n .IP """\-\-all\-lines""" 4 +.el .IP "\f(CW\-\-all\-lines\fR" 4 +.IX Item "--all-lines" +.PD +This option affects annotated source output only. +By default, only the lines at the beginning of a basic-block +are annotated. If this option is specified, every line in +a basic-block is annotated by repeating the annotation for the +first line. This behavior is similar to \f(CW\*(C`tcov\*(C'\fR's \fB\-a\fR. +.ie n .IP """\-\-demangle[=\f(CIstyle\f(CW]""" 4 +.el .IP "\f(CW\-\-demangle[=\f(CIstyle\f(CW]\fR" 4 +.IX Item "--demangle[=style]" +.PD 0 +.ie n .IP """\-\-no\-demangle""" 4 +.el .IP "\f(CW\-\-no\-demangle\fR" 4 +.IX Item "--no-demangle" +.PD +These options control whether \*(C+ symbol names should be demangled when +printing output. The default is to demangle symbols. The +\&\f(CW\*(C`\-\-no\-demangle\*(C'\fR option may be used to turn off demangling. Different +compilers have different mangling styles. The optional demangling style +argument can be used to choose an appropriate demangling style for your +compiler. +.SS "Analysis Options" +.IX Subsection "Analysis Options" +.ie n .IP """\-a""" 4 +.el .IP "\f(CW\-a\fR" 4 +.IX Item "-a" +.PD 0 +.ie n .IP """\-\-no\-static""" 4 +.el .IP "\f(CW\-\-no\-static\fR" 4 +.IX Item "--no-static" +.PD +The \fB\-a\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress the printing of +statically declared (private) functions. (These are functions whose +names are not listed as global, and which are not visible outside the +file/function/block where they were defined.) Time spent in these +functions, calls to/from them, etc., will all be attributed to the +function that was loaded directly before it in the executable file. +This option affects both the flat profile and the call graph. +.ie n .IP """\-c""" 4 +.el .IP "\f(CW\-c\fR" 4 +.IX Item "-c" +.PD 0 +.ie n .IP """\-\-static\-call\-graph""" 4 +.el .IP "\f(CW\-\-static\-call\-graph\fR" 4 +.IX Item "--static-call-graph" +.PD +The \fB\-c\fR option causes the call graph of the program to be +augmented by a heuristic which examines the text space of the object +file and identifies function calls in the binary machine code. +Since normal call graph records are only generated when functions are +entered, this option identifies children that could have been called, +but never were. Calls to functions that were not compiled with +profiling enabled are also identified, but only if symbol table +entries are present for them. +Calls to dynamic library routines are typically \fInot\fR found +by this option. +Parents or children identified via this heuristic +are indicated in the call graph with call counts of \fB0\fR. +.ie n .IP """\-D""" 4 +.el .IP "\f(CW\-D\fR" 4 +.IX Item "-D" +.PD 0 +.ie n .IP """\-\-ignore\-non\-functions""" 4 +.el .IP "\f(CW\-\-ignore\-non\-functions\fR" 4 +.IX Item "--ignore-non-functions" +.PD +The \fB\-D\fR option causes \f(CW\*(C`gprof\*(C'\fR to ignore symbols which +are not known to be functions. This option will give more accurate +profile data on systems where it is supported (Solaris and \s-1HPUX\s0 for +example). +.ie n .IP """\-k \f(CIfrom\f(CW/\f(CIto\f(CW""" 4 +.el .IP "\f(CW\-k \f(CIfrom\f(CW/\f(CIto\f(CW\fR" 4 +.IX Item "-k from/to" +The \fB\-k\fR option allows you to delete from the call graph any arcs from +symbols matching symspec \fIfrom\fR to those matching symspec \fIto\fR. +.ie n .IP """\-l""" 4 +.el .IP "\f(CW\-l\fR" 4 +.IX Item "-l" +.PD 0 +.ie n .IP """\-\-line""" 4 +.el .IP "\f(CW\-\-line\fR" 4 +.IX Item "--line" +.PD +The \fB\-l\fR option enables line-by-line profiling, which causes +histogram hits to be charged to individual source code lines, +instead of functions. This feature only works with programs compiled +by older versions of the \f(CW\*(C`gcc\*(C'\fR compiler. Newer versions of +\&\f(CW\*(C`gcc\*(C'\fR are designed to work with the \f(CW\*(C`gcov\*(C'\fR tool instead. +.Sp +If the program was compiled with basic-block counting enabled, +this option will also identify how many times each line of +code was executed. +While line-by-line profiling can help isolate where in a large function +a program is spending its time, it also significantly increases +the running time of \f(CW\*(C`gprof\*(C'\fR, and magnifies statistical +inaccuracies. +.ie n .IP """\-\-inline\-file\-names""" 4 +.el .IP "\f(CW\-\-inline\-file\-names\fR" 4 +.IX Item "--inline-file-names" +This option causes \f(CW\*(C`gprof\*(C'\fR to print the source file after each +symbol in both the flat profile and the call graph. The full path to the +file is printed if used with the \fB\-L\fR option. +.ie n .IP """\-m \f(CInum\f(CW""" 4 +.el .IP "\f(CW\-m \f(CInum\f(CW\fR" 4 +.IX Item "-m num" +.PD 0 +.ie n .IP """\-\-min\-count=\f(CInum\f(CW""" 4 +.el .IP "\f(CW\-\-min\-count=\f(CInum\f(CW\fR" 4 +.IX Item "--min-count=num" +.PD +This option affects execution count output only. +Symbols that are executed less than \fInum\fR times are suppressed. +.ie n .IP """\-n\f(CIsymspec\f(CW""" 4 +.el .IP "\f(CW\-n\f(CIsymspec\f(CW\fR" 4 +.IX Item "-nsymspec" +.PD 0 +.ie n .IP """\-\-time=\f(CIsymspec\f(CW""" 4 +.el .IP "\f(CW\-\-time=\f(CIsymspec\f(CW\fR" 4 +.IX Item "--time=symspec" +.PD +The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis, +to only propagate times for symbols matching \fIsymspec\fR. +.ie n .IP """\-N\f(CIsymspec\f(CW""" 4 +.el .IP "\f(CW\-N\f(CIsymspec\f(CW\fR" 4 +.IX Item "-Nsymspec" +.PD 0 +.ie n .IP """\-\-no\-time=\f(CIsymspec\f(CW""" 4 +.el .IP "\f(CW\-\-no\-time=\f(CIsymspec\f(CW\fR" 4 +.IX Item "--no-time=symspec" +.PD +The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis, +not to propagate times for symbols matching \fIsymspec\fR. +.ie n .IP """\-S\f(CIfilename\f(CW""" 4 +.el .IP "\f(CW\-S\f(CIfilename\f(CW\fR" 4 +.IX Item "-Sfilename" +.PD 0 +.ie n .IP """\-\-external\-symbol\-table=\f(CIfilename\f(CW""" 4 +.el .IP "\f(CW\-\-external\-symbol\-table=\f(CIfilename\f(CW\fR" 4 +.IX Item "--external-symbol-table=filename" +.PD +The \fB\-S\fR option causes \f(CW\*(C`gprof\*(C'\fR to read an external symbol table +file, such as \fI/proc/kallsyms\fR, rather than read the symbol table +from the given object file (the default is \f(CW\*(C`a.out\*(C'\fR). This is useful +for profiling kernel modules. +.ie n .IP """\-z""" 4 +.el .IP "\f(CW\-z\fR" 4 +.IX Item "-z" +.PD 0 +.ie n .IP """\-\-display\-unused\-functions""" 4 +.el .IP "\f(CW\-\-display\-unused\-functions\fR" 4 +.IX Item "--display-unused-functions" +.PD +If you give the \fB\-z\fR option, \f(CW\*(C`gprof\*(C'\fR will mention all +functions in the flat profile, even those that were never called, and +that had no time spent in them. This is useful in conjunction with the +\&\fB\-c\fR option for discovering which routines were never called. +.SS "Miscellaneous Options" +.IX Subsection "Miscellaneous Options" +.ie n .IP """\-d[\f(CInum\f(CW]""" 4 +.el .IP "\f(CW\-d[\f(CInum\f(CW]\fR" 4 +.IX Item "-d[num]" +.PD 0 +.ie n .IP """\-\-debug[=\f(CInum\f(CW]""" 4 +.el .IP "\f(CW\-\-debug[=\f(CInum\f(CW]\fR" 4 +.IX Item "--debug[=num]" +.PD +The \fB\-d\fR \fInum\fR option specifies debugging options. +If \fInum\fR is not specified, enable all debugging. +.ie n .IP """\-h""" 4 +.el .IP "\f(CW\-h\fR" 4 +.IX Item "-h" +.PD 0 +.ie n .IP """\-\-help""" 4 +.el .IP "\f(CW\-\-help\fR" 4 +.IX Item "--help" +.PD +The \fB\-h\fR option prints command line usage. +.ie n .IP """\-O\f(CIname\f(CW""" 4 +.el .IP "\f(CW\-O\f(CIname\f(CW\fR" 4 +.IX Item "-Oname" +.PD 0 +.ie n .IP """\-\-file\-format=\f(CIname\f(CW""" 4 +.el .IP "\f(CW\-\-file\-format=\f(CIname\f(CW\fR" 4 +.IX Item "--file-format=name" +.PD +Selects the format of the profile data files. Recognized formats are +\&\fBauto\fR (the default), \fBbsd\fR, \fB4.4bsd\fR, \fBmagic\fR, and +\&\fBprof\fR (not yet supported). +.ie n .IP """\-s""" 4 +.el .IP "\f(CW\-s\fR" 4 +.IX Item "-s" +.PD 0 +.ie n .IP """\-\-sum""" 4 +.el .IP "\f(CW\-\-sum\fR" 4 +.IX Item "--sum" +.PD +The \fB\-s\fR option causes \f(CW\*(C`gprof\*(C'\fR to summarize the information +in the profile data files it read in, and write out a profile data +file called \fIgmon.sum\fR, which contains all the information from +the profile data files that \f(CW\*(C`gprof\*(C'\fR read in. The file \fIgmon.sum\fR +may be one of the specified input files; the effect of this is to +merge the data in the other input files into \fIgmon.sum\fR. +.Sp +Eventually you can run \f(CW\*(C`gprof\*(C'\fR again without \fB\-s\fR to analyze the +cumulative data in the file \fIgmon.sum\fR. +.ie n .IP """\-v""" 4 +.el .IP "\f(CW\-v\fR" 4 +.IX Item "-v" +.PD 0 +.ie n .IP """\-\-version""" 4 +.el .IP "\f(CW\-\-version\fR" 4 +.IX Item "--version" +.PD +The \fB\-v\fR flag causes \f(CW\*(C`gprof\*(C'\fR to print the current version +number, and then exit. +.SS "Deprecated Options" +.IX Subsection "Deprecated Options" +These options have been replaced with newer versions that use symspecs. +.ie n .IP """\-e \f(CIfunction_name\f(CW""" 4 +.el .IP "\f(CW\-e \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-e function_name" +The \fB\-e\fR \fIfunction\fR option tells \f(CW\*(C`gprof\*(C'\fR to not print +information about the function \fIfunction_name\fR (and its +children...) in the call graph. The function will still be listed +as a child of any functions that call it, but its index number will be +shown as \fB[not printed]\fR. More than one \fB\-e\fR option may be +given; only one \fIfunction_name\fR may be indicated with each \fB\-e\fR +option. +.ie n .IP """\-E \f(CIfunction_name\f(CW""" 4 +.el .IP "\f(CW\-E \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-E function_name" +The \f(CW\*(C`\-E \f(CIfunction\f(CW\*(C'\fR option works like the \f(CW\*(C`\-e\*(C'\fR option, but +time spent in the function (and children who were not called from +anywhere else), will not be used to compute the percentages-of-time for +the call graph. More than one \fB\-E\fR option may be given; only one +\&\fIfunction_name\fR may be indicated with each \fB\-E\fR option. +.ie n .IP """\-f \f(CIfunction_name\f(CW""" 4 +.el .IP "\f(CW\-f \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-f function_name" +The \fB\-f\fR \fIfunction\fR option causes \f(CW\*(C`gprof\*(C'\fR to limit the +call graph to the function \fIfunction_name\fR and its children (and +their children...). More than one \fB\-f\fR option may be given; +only one \fIfunction_name\fR may be indicated with each \fB\-f\fR +option. +.ie n .IP """\-F \f(CIfunction_name\f(CW""" 4 +.el .IP "\f(CW\-F \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-F function_name" +The \fB\-F\fR \fIfunction\fR option works like the \f(CW\*(C`\-f\*(C'\fR option, but +only time spent in the function and its children (and their +children...) will be used to determine total-time and +percentages-of-time for the call graph. More than one \fB\-F\fR option +may be given; only one \fIfunction_name\fR may be indicated with each +\&\fB\-F\fR option. The \fB\-F\fR option overrides the \fB\-E\fR option. +.SH "FILES" +.IX Header "FILES" +.ie n .IP """\f(CIa.out\f(CW""" 4 +.el .IP "\f(CW\f(CIa.out\f(CW\fR" 4 +.IX Item "a.out" +the namelist and text space. +.ie n .IP """\f(CIgmon.out\f(CW""" 4 +.el .IP "\f(CW\f(CIgmon.out\f(CW\fR" 4 +.IX Item "gmon.out" +dynamic call graph and profile. +.ie n .IP """\f(CIgmon.sum\f(CW""" 4 +.el .IP "\f(CW\f(CIgmon.sum\f(CW\fR" 4 +.IX Item "gmon.sum" +summarized dynamic call graph and profile. +.SH "BUGS" +.IX Header "BUGS" +The granularity of the sampling is shown, but remains +statistical at best. +We assume that the time for each execution of a function +can be expressed by the total time for the function divided +by the number of times the function is called. +Thus the time propagated along the call graph arcs to the function's +parents is directly proportional to the number of times that +arc is traversed. +.PP +Parents that are not themselves profiled will have the time of +their profiled children propagated to them, but they will appear +to be spontaneously invoked in the call graph listing, and will +not have their time propagated further. +Similarly, signal catchers, even though profiled, will appear +to be spontaneous (although for more obscure reasons). +Any profiled children of signal catchers should have their times +propagated properly, unless the signal catcher was invoked during +the execution of the profiling routine, in which case all is lost. +.PP +The profiled program must call \f(CW\*(C`exit\*(C'\fR(2) +or return normally for the profiling information to be saved +in the \fIgmon.out\fR file. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fImonitor\fR\|(3), \fIprofil\fR\|(2), \fIcc\fR\|(1), \fIprof\fR\|(1), and the Info entry for \fIgprof\fR. +.PP +\&\*(L"An Execution Profiler for Modular Programs\*(R", +by S. Graham, P. Kessler, M. McKusick; +Software \- Practice and Experience, +Vol. 13, pp. 671\-685, 1983. +.PP +\&\*(L"gprof: A Call Graph Execution Profiler\*(R", +by S. Graham, P. Kessler, M. McKusick; +Proceedings of the \s-1SIGPLAN \s0'82 Symposium on Compiler Construction, +\&\s-1SIGPLAN\s0 Notices, Vol. 17, No 6, pp. 120\-126, June 1982. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1988\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/gprof/gprof.info b/gprof/gprof.info new file mode 100644 index 00000000000..5e5c8781ba0 --- /dev/null +++ b/gprof/gprof.info @@ -0,0 +1,2478 @@ +This is gprof.info, produced by makeinfo version 4.8 from gprof.texi. + +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* gprof: (gprof). Profiling your program's execution +END-INFO-DIR-ENTRY + + This file documents the gprof profiler of the GNU system. + + Copyright (C) 1988-2014 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled "GNU +Free Documentation License". + + +File: gprof.info, Node: Top, Next: Introduction, Up: (dir) + +Profiling a Program: Where Does It Spend Its Time? +************************************************** + +This manual describes the GNU profiler, `gprof', and how you can use it +to determine which parts of a program are taking most of the execution +time. We assume that you know how to write, compile, and execute +programs. GNU `gprof' was written by Jay Fenlason. + + This manual is for `gprof' (GNU Binutils) version 2.25. + + This document is distributed under the terms of the GNU Free +Documentation License version 1.3. A copy of the license is included +in the section entitled "GNU Free Documentation License". + +* Menu: + +* Introduction:: What profiling means, and why it is useful. + +* Compiling:: How to compile your program for profiling. +* Executing:: Executing your program to generate profile data +* Invoking:: How to run `gprof', and its options + +* Output:: Interpreting `gprof''s output + +* Inaccuracy:: Potential problems you should be aware of +* How do I?:: Answers to common questions +* Incompatibilities:: (between GNU `gprof' and Unix `gprof'.) +* Details:: Details of how profiling is done +* GNU Free Documentation License:: GNU Free Documentation License + + +File: gprof.info, Node: Introduction, Next: Compiling, Prev: Top, Up: Top + +1 Introduction to Profiling +*************************** + +Profiling allows you to learn where your program spent its time and +which functions called which other functions while it was executing. +This information can show you which pieces of your program are slower +than you expected, and might be candidates for rewriting to make your +program execute faster. It can also tell you which functions are being +called more or less often than you expected. This may help you spot +bugs that had otherwise been unnoticed. + + Since the profiler uses information collected during the actual +execution of your program, it can be used on programs that are too +large or too complex to analyze by reading the source. However, how +your program is run will affect the information that shows up in the +profile data. If you don't use some feature of your program while it +is being profiled, no profile information will be generated for that +feature. + + Profiling has several steps: + + * You must compile and link your program with profiling enabled. + *Note Compiling a Program for Profiling: Compiling. + + * You must execute your program to generate a profile data file. + *Note Executing the Program: Executing. + + * You must run `gprof' to analyze the profile data. *Note `gprof' + Command Summary: Invoking. + + The next three chapters explain these steps in greater detail. + + Several forms of output are available from the analysis. + + The "flat profile" shows how much time your program spent in each +function, and how many times that function was called. If you simply +want to know which functions burn most of the cycles, it is stated +concisely here. *Note The Flat Profile: Flat Profile. + + The "call graph" shows, for each function, which functions called +it, which other functions it called, and how many times. There is also +an estimate of how much time was spent in the subroutines of each +function. This can suggest places where you might try to eliminate +function calls that use a lot of time. *Note The Call Graph: Call +Graph. + + The "annotated source" listing is a copy of the program's source +code, labeled with the number of times each line of the program was +executed. *Note The Annotated Source Listing: Annotated Source. + + To better understand how profiling works, you may wish to read a +description of its implementation. *Note Implementation of Profiling: +Implementation. + + +File: gprof.info, Node: Compiling, Next: Executing, Prev: Introduction, Up: Top + +2 Compiling a Program for Profiling +*********************************** + +The first step in generating profile information for your program is to +compile and link it with profiling enabled. + + To compile a source file for profiling, specify the `-pg' option when +you run the compiler. (This is in addition to the options you normally +use.) + + To link the program for profiling, if you use a compiler such as `cc' +to do the linking, simply specify `-pg' in addition to your usual +options. The same option, `-pg', alters either compilation or linking +to do what is necessary for profiling. Here are examples: + + cc -g -c myprog.c utils.c -pg + cc -o myprog myprog.o utils.o -pg + + The `-pg' option also works with a command that both compiles and +links: + + cc -o myprog myprog.c utils.c -g -pg + + Note: The `-pg' option must be part of your compilation options as +well as your link options. If it is not then no call-graph data will +be gathered and when you run `gprof' you will get an error message like +this: + + gprof: gmon.out file is missing call-graph data + + If you add the `-Q' switch to suppress the printing of the call +graph data you will still be able to see the time samples: + + Flat profile: + + Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls Ts/call Ts/call name + 44.12 0.07 0.07 zazLoop + 35.29 0.14 0.06 main + 20.59 0.17 0.04 bazMillion + + If you run the linker `ld' directly instead of through a compiler +such as `cc', you may have to specify a profiling startup file +`gcrt0.o' as the first input file instead of the usual startup file +`crt0.o'. In addition, you would probably want to specify the +profiling C library, `libc_p.a', by writing `-lc_p' instead of the +usual `-lc'. This is not absolutely necessary, but doing this gives +you number-of-calls information for standard library functions such as +`read' and `open'. For example: + + ld -o myprog /lib/gcrt0.o myprog.o utils.o -lc_p + + If you are running the program on a system which supports shared +libraries you may run into problems with the profiling support code in +a shared library being called before that library has been fully +initialised. This is usually detected by the program encountering a +segmentation fault as soon as it is run. The solution is to link +against a static version of the library containing the profiling +support code, which for `gcc' users can be done via the `-static' or +`-static-libgcc' command line option. For example: + + gcc -g -pg -static-libgcc myprog.c utils.c -o myprog + + If you compile only some of the modules of the program with `-pg', +you can still profile the program, but you won't get complete +information about the modules that were compiled without `-pg'. The +only information you get for the functions in those modules is the +total time spent in them; there is no record of how many times they +were called, or from where. This will not affect the flat profile +(except that the `calls' field for the functions will be blank), but +will greatly reduce the usefulness of the call graph. + + If you wish to perform line-by-line profiling you should use the +`gcov' tool instead of `gprof'. See that tool's manual or info pages +for more details of how to do this. + + Note, older versions of `gcc' produce line-by-line profiling +information that works with `gprof' rather than `gcov' so there is +still support for displaying this kind of information in `gprof'. *Note +Line-by-line Profiling: Line-by-line. + + It also worth noting that `gcc' implements a +`-finstrument-functions' command line option which will insert calls to +special user supplied instrumentation routines at the entry and exit of +every function in their program. This can be used to implement an +alternative profiling scheme. + + +File: gprof.info, Node: Executing, Next: Invoking, Prev: Compiling, Up: Top + +3 Executing the Program +*********************** + +Once the program is compiled for profiling, you must run it in order to +generate the information that `gprof' needs. Simply run the program as +usual, using the normal arguments, file names, etc. The program should +run normally, producing the same output as usual. It will, however, run +somewhat slower than normal because of the time spent collecting and +writing the profile data. + + The way you run the program--the arguments and input that you give +it--may have a dramatic effect on what the profile information shows. +The profile data will describe the parts of the program that were +activated for the particular input you use. For example, if the first +command you give to your program is to quit, the profile data will show +the time used in initialization and in cleanup, but not much else. + + Your program will write the profile data into a file called +`gmon.out' just before exiting. If there is already a file called +`gmon.out', its contents are overwritten. There is currently no way to +tell the program to write the profile data under a different name, but +you can rename the file afterwards if you are concerned that it may be +overwritten. + + In order to write the `gmon.out' file properly, your program must +exit normally: by returning from `main' or by calling `exit'. Calling +the low-level function `_exit' does not write the profile data, and +neither does abnormal termination due to an unhandled signal. + + The `gmon.out' file is written in the program's _current working +directory_ at the time it exits. This means that if your program calls +`chdir', the `gmon.out' file will be left in the last directory your +program `chdir''d to. If you don't have permission to write in this +directory, the file is not written, and you will get an error message. + + Older versions of the GNU profiling library may also write a file +called `bb.out'. This file, if present, contains an human-readable +listing of the basic-block execution counts. Unfortunately, the +appearance of a human-readable `bb.out' means the basic-block counts +didn't get written into `gmon.out'. The Perl script `bbconv.pl', +included with the `gprof' source distribution, will convert a `bb.out' +file into a format readable by `gprof'. Invoke it like this: + + bbconv.pl < bb.out > BH-DATA + + This translates the information in `bb.out' into a form that `gprof' +can understand. But you still need to tell `gprof' about the existence +of this translated information. To do that, include BB-DATA on the +`gprof' command line, _along with `gmon.out'_, like this: + + gprof OPTIONS EXECUTABLE-FILE gmon.out BB-DATA [YET-MORE-PROFILE-DATA-FILES...] [> OUTFILE] + + +File: gprof.info, Node: Invoking, Next: Output, Prev: Executing, Up: Top + +4 `gprof' Command Summary +************************* + +After you have a profile data file `gmon.out', you can run `gprof' to +interpret the information in it. The `gprof' program prints a flat +profile and a call graph on standard output. Typically you would +redirect the output of `gprof' into a file with `>'. + + You run `gprof' like this: + + gprof OPTIONS [EXECUTABLE-FILE [PROFILE-DATA-FILES...]] [> OUTFILE] + +Here square-brackets indicate optional arguments. + + If you omit the executable file name, the file `a.out' is used. If +you give no profile data file name, the file `gmon.out' is used. If +any file is not in the proper format, or if the profile data file does +not appear to belong to the executable file, an error message is +printed. + + You can give more than one profile data file by entering all their +names after the executable file name; then the statistics in all the +data files are summed together. + + The order of these options does not matter. + +* Menu: + +* Output Options:: Controlling `gprof''s output style +* Analysis Options:: Controlling how `gprof' analyzes its data +* Miscellaneous Options:: +* Deprecated Options:: Options you no longer need to use, but which + have been retained for compatibility +* Symspecs:: Specifying functions to include or exclude + + +File: gprof.info, Node: Output Options, Next: Analysis Options, Up: Invoking + +4.1 Output Options +================== + +These options specify which of several output formats `gprof' should +produce. + + Many of these options take an optional "symspec" to specify +functions to be included or excluded. These options can be specified +multiple times, with different symspecs, to include or exclude sets of +symbols. *Note Symspecs: Symspecs. + + Specifying any of these options overrides the default (`-p -q'), +which prints a flat profile and call graph analysis for all functions. + +`-A[SYMSPEC]' +`--annotated-source[=SYMSPEC]' + The `-A' option causes `gprof' to print annotated source code. If + SYMSPEC is specified, print output only for matching symbols. + *Note The Annotated Source Listing: Annotated Source. + +`-b' +`--brief' + If the `-b' option is given, `gprof' doesn't print the verbose + blurbs that try to explain the meaning of all of the fields in the + tables. This is useful if you intend to print out the output, or + are tired of seeing the blurbs. + +`-C[SYMSPEC]' +`--exec-counts[=SYMSPEC]' + The `-C' option causes `gprof' to print a tally of functions and + the number of times each was called. If SYMSPEC is specified, + print tally only for matching symbols. + + If the profile data file contains basic-block count records, + specifying the `-l' option, along with `-C', will cause basic-block + execution counts to be tallied and displayed. + +`-i' +`--file-info' + The `-i' option causes `gprof' to display summary information + about the profile data file(s) and then exit. The number of + histogram, call graph, and basic-block count records is displayed. + +`-I DIRS' +`--directory-path=DIRS' + The `-I' option specifies a list of search directories in which to + find source files. Environment variable GPROF_PATH can also be + used to convey this information. Used mostly for annotated source + output. + +`-J[SYMSPEC]' +`--no-annotated-source[=SYMSPEC]' + The `-J' option causes `gprof' not to print annotated source code. + If SYMSPEC is specified, `gprof' prints annotated source, but + excludes matching symbols. + +`-L' +`--print-path' + Normally, source filenames are printed with the path component + suppressed. The `-L' option causes `gprof' to print the full + pathname of source filenames, which is determined from symbolic + debugging information in the image file and is relative to the + directory in which the compiler was invoked. + +`-p[SYMSPEC]' +`--flat-profile[=SYMSPEC]' + The `-p' option causes `gprof' to print a flat profile. If + SYMSPEC is specified, print flat profile only for matching symbols. + *Note The Flat Profile: Flat Profile. + +`-P[SYMSPEC]' +`--no-flat-profile[=SYMSPEC]' + The `-P' option causes `gprof' to suppress printing a flat profile. + If SYMSPEC is specified, `gprof' prints a flat profile, but + excludes matching symbols. + +`-q[SYMSPEC]' +`--graph[=SYMSPEC]' + The `-q' option causes `gprof' to print the call graph analysis. + If SYMSPEC is specified, print call graph only for matching symbols + and their children. *Note The Call Graph: Call Graph. + +`-Q[SYMSPEC]' +`--no-graph[=SYMSPEC]' + The `-Q' option causes `gprof' to suppress printing the call graph. + If SYMSPEC is specified, `gprof' prints a call graph, but excludes + matching symbols. + +`-t' +`--table-length=NUM' + The `-t' option causes the NUM most active source lines in each + source file to be listed when source annotation is enabled. The + default is 10. + +`-y' +`--separate-files' + This option affects annotated source output only. Normally, + `gprof' prints annotated source files to standard-output. If this + option is specified, annotated source for a file named + `path/FILENAME' is generated in the file `FILENAME-ann'. If the + underlying file system would truncate `FILENAME-ann' so that it + overwrites the original `FILENAME', `gprof' generates annotated + source in the file `FILENAME.ann' instead (if the original file + name has an extension, that extension is _replaced_ with `.ann'). + +`-Z[SYMSPEC]' +`--no-exec-counts[=SYMSPEC]' + The `-Z' option causes `gprof' not to print a tally of functions + and the number of times each was called. If SYMSPEC is specified, + print tally, but exclude matching symbols. + +`-r' +`--function-ordering' + The `--function-ordering' option causes `gprof' to print a + suggested function ordering for the program based on profiling + data. This option suggests an ordering which may improve paging, + tlb and cache behavior for the program on systems which support + arbitrary ordering of functions in an executable. + + The exact details of how to force the linker to place functions in + a particular order is system dependent and out of the scope of this + manual. + +`-R MAP_FILE' +`--file-ordering MAP_FILE' + The `--file-ordering' option causes `gprof' to print a suggested + .o link line ordering for the program based on profiling data. + This option suggests an ordering which may improve paging, tlb and + cache behavior for the program on systems which do not support + arbitrary ordering of functions in an executable. + + Use of the `-a' argument is highly recommended with this option. + + The MAP_FILE argument is a pathname to a file which provides + function name to object file mappings. The format of the file is + similar to the output of the program `nm'. + + c-parse.o:00000000 T yyparse + c-parse.o:00000004 C yyerrflag + c-lang.o:00000000 T maybe_objc_method_name + c-lang.o:00000000 T print_lang_statistics + c-lang.o:00000000 T recognize_objc_keyword + c-decl.o:00000000 T print_lang_identifier + c-decl.o:00000000 T print_lang_type + ... + + To create a MAP_FILE with GNU `nm', type a command like `nm + --extern-only --defined-only -v --print-file-name program-name'. + +`-T' +`--traditional' + The `-T' option causes `gprof' to print its output in + "traditional" BSD style. + +`-w WIDTH' +`--width=WIDTH' + Sets width of output lines to WIDTH. Currently only used when + printing the function index at the bottom of the call graph. + +`-x' +`--all-lines' + This option affects annotated source output only. By default, + only the lines at the beginning of a basic-block are annotated. + If this option is specified, every line in a basic-block is + annotated by repeating the annotation for the first line. This + behavior is similar to `tcov''s `-a'. + +`--demangle[=STYLE]' +`--no-demangle' + These options control whether C++ symbol names should be demangled + when printing output. The default is to demangle symbols. The + `--no-demangle' option may be used to turn off demangling. + Different compilers have different mangling styles. The optional + demangling style argument can be used to choose an appropriate + demangling style for your compiler. + + +File: gprof.info, Node: Analysis Options, Next: Miscellaneous Options, Prev: Output Options, Up: Invoking + +4.2 Analysis Options +==================== + +`-a' +`--no-static' + The `-a' option causes `gprof' to suppress the printing of + statically declared (private) functions. (These are functions + whose names are not listed as global, and which are not visible + outside the file/function/block where they were defined.) Time + spent in these functions, calls to/from them, etc., will all be + attributed to the function that was loaded directly before it in + the executable file. This option affects both the flat profile + and the call graph. + +`-c' +`--static-call-graph' + The `-c' option causes the call graph of the program to be + augmented by a heuristic which examines the text space of the + object file and identifies function calls in the binary machine + code. Since normal call graph records are only generated when + functions are entered, this option identifies children that could + have been called, but never were. Calls to functions that were + not compiled with profiling enabled are also identified, but only + if symbol table entries are present for them. Calls to dynamic + library routines are typically _not_ found by this option. + Parents or children identified via this heuristic are indicated in + the call graph with call counts of `0'. + +`-D' +`--ignore-non-functions' + The `-D' option causes `gprof' to ignore symbols which are not + known to be functions. This option will give more accurate + profile data on systems where it is supported (Solaris and HPUX for + example). + +`-k FROM/TO' + The `-k' option allows you to delete from the call graph any arcs + from symbols matching symspec FROM to those matching symspec TO. + +`-l' +`--line' + The `-l' option enables line-by-line profiling, which causes + histogram hits to be charged to individual source code lines, + instead of functions. This feature only works with programs + compiled by older versions of the `gcc' compiler. Newer versions + of `gcc' are designed to work with the `gcov' tool instead. + + If the program was compiled with basic-block counting enabled, + this option will also identify how many times each line of code + was executed. While line-by-line profiling can help isolate where + in a large function a program is spending its time, it also + significantly increases the running time of `gprof', and magnifies + statistical inaccuracies. *Note Statistical Sampling Error: + Sampling Error. + +`--inline-file-names' + This option causes `gprof' to print the source file after each + symbol in both the flat profile and the call graph. The full path + to the file is printed if used with the `-L' option. + +`-m NUM' +`--min-count=NUM' + This option affects execution count output only. Symbols that are + executed less than NUM times are suppressed. + +`-nSYMSPEC' +`--time=SYMSPEC' + The `-n' option causes `gprof', in its call graph analysis, to + only propagate times for symbols matching SYMSPEC. + +`-NSYMSPEC' +`--no-time=SYMSPEC' + The `-n' option causes `gprof', in its call graph analysis, not to + propagate times for symbols matching SYMSPEC. + +`-SFILENAME' +`--external-symbol-table=FILENAME' + The `-S' option causes `gprof' to read an external symbol table + file, such as `/proc/kallsyms', rather than read the symbol table + from the given object file (the default is `a.out'). This is useful + for profiling kernel modules. + +`-z' +`--display-unused-functions' + If you give the `-z' option, `gprof' will mention all functions in + the flat profile, even those that were never called, and that had + no time spent in them. This is useful in conjunction with the + `-c' option for discovering which routines were never called. + + + +File: gprof.info, Node: Miscellaneous Options, Next: Deprecated Options, Prev: Analysis Options, Up: Invoking + +4.3 Miscellaneous Options +========================= + +`-d[NUM]' +`--debug[=NUM]' + The `-d NUM' option specifies debugging options. If NUM is not + specified, enable all debugging. *Note Debugging `gprof': + Debugging. + +`-h' +`--help' + The `-h' option prints command line usage. + +`-ONAME' +`--file-format=NAME' + Selects the format of the profile data files. Recognized formats + are `auto' (the default), `bsd', `4.4bsd', `magic', and `prof' + (not yet supported). + +`-s' +`--sum' + The `-s' option causes `gprof' to summarize the information in the + profile data files it read in, and write out a profile data file + called `gmon.sum', which contains all the information from the + profile data files that `gprof' read in. The file `gmon.sum' may + be one of the specified input files; the effect of this is to + merge the data in the other input files into `gmon.sum'. + + Eventually you can run `gprof' again without `-s' to analyze the + cumulative data in the file `gmon.sum'. + +`-v' +`--version' + The `-v' flag causes `gprof' to print the current version number, + and then exit. + + + +File: gprof.info, Node: Deprecated Options, Next: Symspecs, Prev: Miscellaneous Options, Up: Invoking + +4.4 Deprecated Options +====================== + +These options have been replaced with newer versions that use symspecs. + +`-e FUNCTION_NAME' + The `-e FUNCTION' option tells `gprof' to not print information + about the function FUNCTION_NAME (and its children...) in the call + graph. The function will still be listed as a child of any + functions that call it, but its index number will be shown as + `[not printed]'. More than one `-e' option may be given; only one + FUNCTION_NAME may be indicated with each `-e' option. + +`-E FUNCTION_NAME' + The `-E FUNCTION' option works like the `-e' option, but time + spent in the function (and children who were not called from + anywhere else), will not be used to compute the + percentages-of-time for the call graph. More than one `-E' option + may be given; only one FUNCTION_NAME may be indicated with each + `-E' option. + +`-f FUNCTION_NAME' + The `-f FUNCTION' option causes `gprof' to limit the call graph to + the function FUNCTION_NAME and its children (and their + children...). More than one `-f' option may be given; only one + FUNCTION_NAME may be indicated with each `-f' option. + +`-F FUNCTION_NAME' + The `-F FUNCTION' option works like the `-f' option, but only time + spent in the function and its children (and their children...) + will be used to determine total-time and percentages-of-time for + the call graph. More than one `-F' option may be given; only one + FUNCTION_NAME may be indicated with each `-F' option. The `-F' + option overrides the `-E' option. + + + Note that only one function can be specified with each `-e', `-E', +`-f' or `-F' option. To specify more than one function, use multiple +options. For example, this command: + + gprof -e boring -f foo -f bar myprogram > gprof.output + +lists in the call graph all functions that were reached from either +`foo' or `bar' and were not reachable from `boring'. + + +File: gprof.info, Node: Symspecs, Prev: Deprecated Options, Up: Invoking + +4.5 Symspecs +============ + +Many of the output options allow functions to be included or excluded +using "symspecs" (symbol specifications), which observe the following +syntax: + + filename_containing_a_dot + | funcname_not_containing_a_dot + | linenumber + | ( [ any_filename ] `:' ( any_funcname | linenumber ) ) + + Here are some sample symspecs: + +`main.c' + Selects everything in file `main.c'--the dot in the string tells + `gprof' to interpret the string as a filename, rather than as a + function name. To select a file whose name does not contain a + dot, a trailing colon should be specified. For example, `odd:' is + interpreted as the file named `odd'. + +`main' + Selects all functions named `main'. + + Note that there may be multiple instances of the same function name + because some of the definitions may be local (i.e., static). + Unless a function name is unique in a program, you must use the + colon notation explained below to specify a function from a + specific source file. + + Sometimes, function names contain dots. In such cases, it is + necessary to add a leading colon to the name. For example, + `:.mul' selects function `.mul'. + + In some object file formats, symbols have a leading underscore. + `gprof' will normally not print these underscores. When you name a + symbol in a symspec, you should type it exactly as `gprof' prints + it in its output. For example, if the compiler produces a symbol + `_main' from your `main' function, `gprof' still prints it as + `main' in its output, so you should use `main' in symspecs. + +`main.c:main' + Selects function `main' in file `main.c'. + +`main.c:134' + Selects line 134 in file `main.c'. + + +File: gprof.info, Node: Output, Next: Inaccuracy, Prev: Invoking, Up: Top + +5 Interpreting `gprof''s Output +******************************* + +`gprof' can produce several different output styles, the most important +of which are described below. The simplest output styles (file +information, execution count, and function and file ordering) are not +described here, but are documented with the respective options that +trigger them. *Note Output Options: Output Options. + +* Menu: + +* Flat Profile:: The flat profile shows how much time was spent + executing directly in each function. +* Call Graph:: The call graph shows which functions called which + others, and how much time each function used + when its subroutine calls are included. +* Line-by-line:: `gprof' can analyze individual source code lines +* Annotated Source:: The annotated source listing displays source code + labeled with execution counts + + +File: gprof.info, Node: Flat Profile, Next: Call Graph, Up: Output + +5.1 The Flat Profile +==================== + +The "flat profile" shows the total amount of time your program spent +executing each function. Unless the `-z' option is given, functions +with no apparent time spent in them, and no apparent calls to them, are +not mentioned. Note that if a function was not compiled for profiling, +and didn't run long enough to show up on the program counter histogram, +it will be indistinguishable from a function that was never called. + + This is part of a flat profile for a small program: + + Flat profile: + + Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls ms/call ms/call name + 33.34 0.02 0.02 7208 0.00 0.00 open + 16.67 0.03 0.01 244 0.04 0.12 offtime + 16.67 0.04 0.01 8 1.25 1.25 memccpy + 16.67 0.05 0.01 7 1.43 1.43 write + 16.67 0.06 0.01 mcount + 0.00 0.06 0.00 236 0.00 0.00 tzset + 0.00 0.06 0.00 192 0.00 0.00 tolower + 0.00 0.06 0.00 47 0.00 0.00 strlen + 0.00 0.06 0.00 45 0.00 0.00 strchr + 0.00 0.06 0.00 1 0.00 50.00 main + 0.00 0.06 0.00 1 0.00 0.00 memcpy + 0.00 0.06 0.00 1 0.00 10.11 print + 0.00 0.06 0.00 1 0.00 0.00 profil + 0.00 0.06 0.00 1 0.00 50.00 report + ... + +The functions are sorted first by decreasing run-time spent in them, +then by decreasing number of calls, then alphabetically by name. The +functions `mcount' and `profil' are part of the profiling apparatus and +appear in every flat profile; their time gives a measure of the amount +of overhead due to profiling. + + Just before the column headers, a statement appears indicating how +much time each sample counted as. This "sampling period" estimates the +margin of error in each of the time figures. A time figure that is not +much larger than this is not reliable. In this example, each sample +counted as 0.01 seconds, suggesting a 100 Hz sampling rate. The +program's total execution time was 0.06 seconds, as indicated by the +`cumulative seconds' field. Since each sample counted for 0.01 +seconds, this means only six samples were taken during the run. Two of +the samples occurred while the program was in the `open' function, as +indicated by the `self seconds' field. Each of the other four samples +occurred one each in `offtime', `memccpy', `write', and `mcount'. +Since only six samples were taken, none of these values can be regarded +as particularly reliable. In another run, the `self seconds' field for +`mcount' might well be `0.00' or `0.02'. *Note Statistical Sampling +Error: Sampling Error, for a complete discussion. + + The remaining functions in the listing (those whose `self seconds' +field is `0.00') didn't appear in the histogram samples at all. +However, the call graph indicated that they were called, so therefore +they are listed, sorted in decreasing order by the `calls' field. +Clearly some time was spent executing these functions, but the paucity +of histogram samples prevents any determination of how much time each +took. + + Here is what the fields in each line mean: + +`% time' + This is the percentage of the total execution time your program + spent in this function. These should all add up to 100%. + +`cumulative seconds' + This is the cumulative total number of seconds the computer spent + executing this functions, plus the time spent in all the functions + above this one in this table. + +`self seconds' + This is the number of seconds accounted for by this function alone. + The flat profile listing is sorted first by this number. + +`calls' + This is the total number of times the function was called. If the + function was never called, or the number of times it was called + cannot be determined (probably because the function was not + compiled with profiling enabled), the "calls" field is blank. + +`self ms/call' + This represents the average number of milliseconds spent in this + function per call, if this function is profiled. Otherwise, this + field is blank for this function. + +`total ms/call' + This represents the average number of milliseconds spent in this + function and its descendants per call, if this function is + profiled. Otherwise, this field is blank for this function. This + is the only field in the flat profile that uses call graph + analysis. + +`name' + This is the name of the function. The flat profile is sorted by + this field alphabetically after the "self seconds" and "calls" + fields are sorted. + + +File: gprof.info, Node: Call Graph, Next: Line-by-line, Prev: Flat Profile, Up: Output + +5.2 The Call Graph +================== + +The "call graph" shows how much time was spent in each function and its +children. From this information, you can find functions that, while +they themselves may not have used much time, called other functions +that did use unusual amounts of time. + + Here is a sample call from a small program. This call came from the +same `gprof' run as the flat profile example in the previous section. + + granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds + + index % time self children called name + + [1] 100.0 0.00 0.05 start [1] + 0.00 0.05 1/1 main [2] + 0.00 0.00 1/2 on_exit [28] + 0.00 0.00 1/1 exit [59] + ----------------------------------------------- + 0.00 0.05 1/1 start [1] + [2] 100.0 0.00 0.05 1 main [2] + 0.00 0.05 1/1 report [3] + ----------------------------------------------- + 0.00 0.05 1/1 main [2] + [3] 100.0 0.00 0.05 1 report [3] + 0.00 0.03 8/8 timelocal [6] + 0.00 0.01 1/1 print [9] + 0.00 0.01 9/9 fgets [12] + 0.00 0.00 12/34 strncmp [40] + 0.00 0.00 8/8 lookup [20] + 0.00 0.00 1/1 fopen [21] + 0.00 0.00 8/8 chewtime [24] + 0.00 0.00 8/16 skipspace [44] + ----------------------------------------------- + [4] 59.8 0.01 0.02 8+472 [4] + 0.01 0.02 244+260 offtime [7] + 0.00 0.00 236+1 tzset [26] + ----------------------------------------------- + + The lines full of dashes divide this table into "entries", one for +each function. Each entry has one or more lines. + + In each entry, the primary line is the one that starts with an index +number in square brackets. The end of this line says which function +the entry is for. The preceding lines in the entry describe the +callers of this function and the following lines describe its +subroutines (also called "children" when we speak of the call graph). + + The entries are sorted by time spent in the function and its +subroutines. + + The internal profiling function `mcount' (*note The Flat Profile: +Flat Profile.) is never mentioned in the call graph. + +* Menu: + +* Primary:: Details of the primary line's contents. +* Callers:: Details of caller-lines' contents. +* Subroutines:: Details of subroutine-lines' contents. +* Cycles:: When there are cycles of recursion, + such as `a' calls `b' calls `a'... + + +File: gprof.info, Node: Primary, Next: Callers, Up: Call Graph + +5.2.1 The Primary Line +---------------------- + +The "primary line" in a call graph entry is the line that describes the +function which the entry is about and gives the overall statistics for +this function. + + For reference, we repeat the primary line from the entry for function +`report' in our main example, together with the heading line that shows +the names of the fields: + + index % time self children called name + ... + [3] 100.0 0.00 0.05 1 report [3] + + Here is what the fields in the primary line mean: + +`index' + Entries are numbered with consecutive integers. Each function + therefore has an index number, which appears at the beginning of + its primary line. + + Each cross-reference to a function, as a caller or subroutine of + another, gives its index number as well as its name. The index + number guides you if you wish to look for the entry for that + function. + +`% time' + This is the percentage of the total time that was spent in this + function, including time spent in subroutines called from this + function. + + The time spent in this function is counted again for the callers of + this function. Therefore, adding up these percentages is + meaningless. + +`self' + This is the total amount of time spent in this function. This + should be identical to the number printed in the `seconds' field + for this function in the flat profile. + +`children' + This is the total amount of time spent in the subroutine calls + made by this function. This should be equal to the sum of all the + `self' and `children' entries of the children listed directly + below this function. + +`called' + This is the number of times the function was called. + + If the function called itself recursively, there are two numbers, + separated by a `+'. The first number counts non-recursive calls, + and the second counts recursive calls. + + In the example above, the function `report' was called once from + `main'. + +`name' + This is the name of the current function. The index number is + repeated after it. + + If the function is part of a cycle of recursion, the cycle number + is printed between the function's name and the index number (*note + How Mutually Recursive Functions Are Described: Cycles.). For + example, if function `gnurr' is part of cycle number one, and has + index number twelve, its primary line would be end like this: + + gnurr [12] + + +File: gprof.info, Node: Callers, Next: Subroutines, Prev: Primary, Up: Call Graph + +5.2.2 Lines for a Function's Callers +------------------------------------ + +A function's entry has a line for each function it was called by. +These lines' fields correspond to the fields of the primary line, but +their meanings are different because of the difference in context. + + For reference, we repeat two lines from the entry for the function +`report', the primary line and one caller-line preceding it, together +with the heading line that shows the names of the fields: + + index % time self children called name + ... + 0.00 0.05 1/1 main [2] + [3] 100.0 0.00 0.05 1 report [3] + + Here are the meanings of the fields in the caller-line for `report' +called from `main': + +`self' + An estimate of the amount of time spent in `report' itself when it + was called from `main'. + +`children' + An estimate of the amount of time spent in subroutines of `report' + when `report' was called from `main'. + + The sum of the `self' and `children' fields is an estimate of the + amount of time spent within calls to `report' from `main'. + +`called' + Two numbers: the number of times `report' was called from `main', + followed by the total number of non-recursive calls to `report' + from all its callers. + +`name and index number' + The name of the caller of `report' to which this line applies, + followed by the caller's index number. + + Not all functions have entries in the call graph; some options to + `gprof' request the omission of certain functions. When a caller + has no entry of its own, it still has caller-lines in the entries + of the functions it calls. + + If the caller is part of a recursion cycle, the cycle number is + printed between the name and the index number. + + If the identity of the callers of a function cannot be determined, a +dummy caller-line is printed which has `' as the "caller's +name" and all other fields blank. This can happen for signal handlers. + + +File: gprof.info, Node: Subroutines, Next: Cycles, Prev: Callers, Up: Call Graph + +5.2.3 Lines for a Function's Subroutines +---------------------------------------- + +A function's entry has a line for each of its subroutines--in other +words, a line for each other function that it called. These lines' +fields correspond to the fields of the primary line, but their meanings +are different because of the difference in context. + + For reference, we repeat two lines from the entry for the function +`main', the primary line and a line for a subroutine, together with the +heading line that shows the names of the fields: + + index % time self children called name + ... + [2] 100.0 0.00 0.05 1 main [2] + 0.00 0.05 1/1 report [3] + + Here are the meanings of the fields in the subroutine-line for `main' +calling `report': + +`self' + An estimate of the amount of time spent directly within `report' + when `report' was called from `main'. + +`children' + An estimate of the amount of time spent in subroutines of `report' + when `report' was called from `main'. + + The sum of the `self' and `children' fields is an estimate of the + total time spent in calls to `report' from `main'. + +`called' + Two numbers, the number of calls to `report' from `main' followed + by the total number of non-recursive calls to `report'. This + ratio is used to determine how much of `report''s `self' and + `children' time gets credited to `main'. *Note Estimating + `children' Times: Assumptions. + +`name' + The name of the subroutine of `main' to which this line applies, + followed by the subroutine's index number. + + If the caller is part of a recursion cycle, the cycle number is + printed between the name and the index number. + + +File: gprof.info, Node: Cycles, Prev: Subroutines, Up: Call Graph + +5.2.4 How Mutually Recursive Functions Are Described +---------------------------------------------------- + +The graph may be complicated by the presence of "cycles of recursion" +in the call graph. A cycle exists if a function calls another function +that (directly or indirectly) calls (or appears to call) the original +function. For example: if `a' calls `b', and `b' calls `a', then `a' +and `b' form a cycle. + + Whenever there are call paths both ways between a pair of functions, +they belong to the same cycle. If `a' and `b' call each other and `b' +and `c' call each other, all three make one cycle. Note that even if +`b' only calls `a' if it was not called from `a', `gprof' cannot +determine this, so `a' and `b' are still considered a cycle. + + The cycles are numbered with consecutive integers. When a function +belongs to a cycle, each time the function name appears in the call +graph it is followed by `'. + + The reason cycles matter is that they make the time values in the +call graph paradoxical. The "time spent in children" of `a' should +include the time spent in its subroutine `b' and in `b''s +subroutines--but one of `b''s subroutines is `a'! How much of `a''s +time should be included in the children of `a', when `a' is indirectly +recursive? + + The way `gprof' resolves this paradox is by creating a single entry +for the cycle as a whole. The primary line of this entry describes the +total time spent directly in the functions of the cycle. The +"subroutines" of the cycle are the individual functions of the cycle, +and all other functions that were called directly by them. The +"callers" of the cycle are the functions, outside the cycle, that +called functions in the cycle. + + Here is an example portion of a call graph which shows a cycle +containing functions `a' and `b'. The cycle was entered by a call to +`a' from `main'; both `a' and `b' called `c'. + + index % time self children called name + ---------------------------------------- + 1.77 0 1/1 main [2] + [3] 91.71 1.77 0 1+5 [3] + 1.02 0 3 b [4] + 0.75 0 2 a [5] + ---------------------------------------- + 3 a [5] + [4] 52.85 1.02 0 0 b [4] + 2 a [5] + 0 0 3/6 c [6] + ---------------------------------------- + 1.77 0 1/1 main [2] + 2 b [4] + [5] 38.86 0.75 0 1 a [5] + 3 b [4] + 0 0 3/6 c [6] + ---------------------------------------- + +(The entire call graph for this program contains in addition an entry +for `main', which calls `a', and an entry for `c', with callers `a' and +`b'.) + + index % time self children called name + + [1] 100.00 0 1.93 0 start [1] + 0.16 1.77 1/1 main [2] + ---------------------------------------- + 0.16 1.77 1/1 start [1] + [2] 100.00 0.16 1.77 1 main [2] + 1.77 0 1/1 a [5] + ---------------------------------------- + 1.77 0 1/1 main [2] + [3] 91.71 1.77 0 1+5 [3] + 1.02 0 3 b [4] + 0.75 0 2 a [5] + 0 0 6/6 c [6] + ---------------------------------------- + 3 a [5] + [4] 52.85 1.02 0 0 b [4] + 2 a [5] + 0 0 3/6 c [6] + ---------------------------------------- + 1.77 0 1/1 main [2] + 2 b [4] + [5] 38.86 0.75 0 1 a [5] + 3 b [4] + 0 0 3/6 c [6] + ---------------------------------------- + 0 0 3/6 b [4] + 0 0 3/6 a [5] + [6] 0.00 0 0 6 c [6] + ---------------------------------------- + + The `self' field of the cycle's primary line is the total time spent +in all the functions of the cycle. It equals the sum of the `self' +fields for the individual functions in the cycle, found in the entry in +the subroutine lines for these functions. + + The `children' fields of the cycle's primary line and subroutine +lines count only subroutines outside the cycle. Even though `a' calls +`b', the time spent in those calls to `b' is not counted in `a''s +`children' time. Thus, we do not encounter the problem of what to do +when the time in those calls to `b' includes indirect recursive calls +back to `a'. + + The `children' field of a caller-line in the cycle's entry estimates +the amount of time spent _in the whole cycle_, and its other +subroutines, on the times when that caller called a function in the +cycle. + + The `called' field in the primary line for the cycle has two numbers: +first, the number of times functions in the cycle were called by +functions outside the cycle; second, the number of times they were +called by functions in the cycle (including times when a function in +the cycle calls itself). This is a generalization of the usual split +into non-recursive and recursive calls. + + The `called' field of a subroutine-line for a cycle member in the +cycle's entry says how many time that function was called from +functions in the cycle. The total of all these is the second number in +the primary line's `called' field. + + In the individual entry for a function in a cycle, the other +functions in the same cycle can appear as subroutines and as callers. +These lines show how many times each function in the cycle called or +was called from each other function in the cycle. The `self' and +`children' fields in these lines are blank because of the difficulty of +defining meanings for them when recursion is going on. + + +File: gprof.info, Node: Line-by-line, Next: Annotated Source, Prev: Call Graph, Up: Output + +5.3 Line-by-line Profiling +========================== + +`gprof''s `-l' option causes the program to perform "line-by-line" +profiling. In this mode, histogram samples are assigned not to +functions, but to individual lines of source code. This only works +with programs compiled with older versions of the `gcc' compiler. +Newer versions of `gcc' use a different program - `gcov' - to display +line-by-line profiling information. + + With the older versions of `gcc' the program usually has to be +compiled with a `-g' option, in addition to `-pg', in order to generate +debugging symbols for tracking source code lines. Note, in much older +versions of `gcc' the program had to be compiled with the `-a' command +line option as well. + + The flat profile is the most useful output table in line-by-line +mode. The call graph isn't as useful as normal, since the current +version of `gprof' does not propagate call graph arcs from source code +lines to the enclosing function. The call graph does, however, show +each line of code that called each function, along with a count. + + Here is a section of `gprof''s output, without line-by-line +profiling. Note that `ct_init' accounted for four histogram hits, and +13327 calls to `init_block'. + + Flat profile: + + Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls us/call us/call name + 30.77 0.13 0.04 6335 6.31 6.31 ct_init + + + Call graph (explanation follows) + + + granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds + + index % time self children called name + + 0.00 0.00 1/13496 name_too_long + 0.00 0.00 40/13496 deflate + 0.00 0.00 128/13496 deflate_fast + 0.00 0.00 13327/13496 ct_init + [7] 0.0 0.00 0.00 13496 init_block + + Now let's look at some of `gprof''s output from the same program run, +this time with line-by-line profiling enabled. Note that `ct_init''s +four histogram hits are broken down into four lines of source code--one +hit occurred on each of lines 349, 351, 382 and 385. In the call graph, +note how `ct_init''s 13327 calls to `init_block' are broken down into +one call from line 396, 3071 calls from line 384, 3730 calls from line +385, and 6525 calls from 387. + + Flat profile: + + Each sample counts as 0.01 seconds. + % cumulative self + time seconds seconds calls name + 7.69 0.10 0.01 ct_init (trees.c:349) + 7.69 0.11 0.01 ct_init (trees.c:351) + 7.69 0.12 0.01 ct_init (trees.c:382) + 7.69 0.13 0.01 ct_init (trees.c:385) + + + Call graph (explanation follows) + + + granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds + + % time self children called name + + 0.00 0.00 1/13496 name_too_long (gzip.c:1440) + 0.00 0.00 1/13496 deflate (deflate.c:763) + 0.00 0.00 1/13496 ct_init (trees.c:396) + 0.00 0.00 2/13496 deflate (deflate.c:727) + 0.00 0.00 4/13496 deflate (deflate.c:686) + 0.00 0.00 5/13496 deflate (deflate.c:675) + 0.00 0.00 12/13496 deflate (deflate.c:679) + 0.00 0.00 16/13496 deflate (deflate.c:730) + 0.00 0.00 128/13496 deflate_fast (deflate.c:654) + 0.00 0.00 3071/13496 ct_init (trees.c:384) + 0.00 0.00 3730/13496 ct_init (trees.c:385) + 0.00 0.00 6525/13496 ct_init (trees.c:387) + [6] 0.0 0.00 0.00 13496 init_block (trees.c:408) + + +File: gprof.info, Node: Annotated Source, Prev: Line-by-line, Up: Output + +5.4 The Annotated Source Listing +================================ + +`gprof''s `-A' option triggers an annotated source listing, which lists +the program's source code, each function labeled with the number of +times it was called. You may also need to specify the `-I' option, if +`gprof' can't find the source code files. + + With older versions of `gcc' compiling with `gcc ... -g -pg -a' +augments your program with basic-block counting code, in addition to +function counting code. This enables `gprof' to determine how many +times each line of code was executed. With newer versions of `gcc' +support for displaying basic-block counts is provided by the `gcov' +program. + + For example, consider the following function, taken from gzip, with +line numbers added: + + 1 ulg updcrc(s, n) + 2 uch *s; + 3 unsigned n; + 4 { + 5 register ulg c; + 6 + 7 static ulg crc = (ulg)0xffffffffL; + 8 + 9 if (s == NULL) { + 10 c = 0xffffffffL; + 11 } else { + 12 c = crc; + 13 if (n) do { + 14 c = crc_32_tab[...]; + 15 } while (--n); + 16 } + 17 crc = c; + 18 return c ^ 0xffffffffL; + 19 } + + `updcrc' has at least five basic-blocks. One is the function +itself. The `if' statement on line 9 generates two more basic-blocks, +one for each branch of the `if'. A fourth basic-block results from the +`if' on line 13, and the contents of the `do' loop form the fifth +basic-block. The compiler may also generate additional basic-blocks to +handle various special cases. + + A program augmented for basic-block counting can be analyzed with +`gprof -l -A'. The `-x' option is also helpful, to ensure that each +line of code is labeled at least once. Here is `updcrc''s annotated +source listing for a sample `gzip' run: + + ulg updcrc(s, n) + uch *s; + unsigned n; + 2 ->{ + register ulg c; + + static ulg crc = (ulg)0xffffffffL; + + 2 -> if (s == NULL) { + 1 -> c = 0xffffffffL; + 1 -> } else { + 1 -> c = crc; + 1 -> if (n) do { + 26312 -> c = crc_32_tab[...]; + 26312,1,26311 -> } while (--n); + } + 2 -> crc = c; + 2 -> return c ^ 0xffffffffL; + 2 ->} + + In this example, the function was called twice, passing once through +each branch of the `if' statement. The body of the `do' loop was +executed a total of 26312 times. Note how the `while' statement is +annotated. It began execution 26312 times, once for each iteration +through the loop. One of those times (the last time) it exited, while +it branched back to the beginning of the loop 26311 times. + + +File: gprof.info, Node: Inaccuracy, Next: How do I?, Prev: Output, Up: Top + +6 Inaccuracy of `gprof' Output +****************************** + +* Menu: + +* Sampling Error:: Statistical margins of error +* Assumptions:: Estimating children times + + +File: gprof.info, Node: Sampling Error, Next: Assumptions, Up: Inaccuracy + +6.1 Statistical Sampling Error +============================== + +The run-time figures that `gprof' gives you are based on a sampling +process, so they are subject to statistical inaccuracy. If a function +runs only a small amount of time, so that on the average the sampling +process ought to catch that function in the act only once, there is a +pretty good chance it will actually find that function zero times, or +twice. + + By contrast, the number-of-calls and basic-block figures are derived +by counting, not sampling. They are completely accurate and will not +vary from run to run if your program is deterministic and single +threaded. In multi-threaded applications, or single threaded +applications that link with multi-threaded libraries, the counts are +only deterministic if the counting function is thread-safe. (Note: +beware that the mcount counting function in glibc is _not_ +thread-safe). *Note Implementation of Profiling: Implementation. + + The "sampling period" that is printed at the beginning of the flat +profile says how often samples are taken. The rule of thumb is that a +run-time figure is accurate if it is considerably bigger than the +sampling period. + + The actual amount of error can be predicted. For N samples, the +_expected_ error is the square-root of N. For example, if the sampling +period is 0.01 seconds and `foo''s run-time is 1 second, N is 100 +samples (1 second/0.01 seconds), sqrt(N) is 10 samples, so the expected +error in `foo''s run-time is 0.1 seconds (10*0.01 seconds), or ten +percent of the observed value. Again, if the sampling period is 0.01 +seconds and `bar''s run-time is 100 seconds, N is 10000 samples, +sqrt(N) is 100 samples, so the expected error in `bar''s run-time is 1 +second, or one percent of the observed value. It is likely to vary +this much _on the average_ from one profiling run to the next. +(_Sometimes_ it will vary more.) + + This does not mean that a small run-time figure is devoid of +information. If the program's _total_ run-time is large, a small +run-time for one function does tell you that that function used an +insignificant fraction of the whole program's time. Usually this means +it is not worth optimizing. + + One way to get more accuracy is to give your program more (but +similar) input data so it will take longer. Another way is to combine +the data from several runs, using the `-s' option of `gprof'. Here is +how: + + 1. Run your program once. + + 2. Issue the command `mv gmon.out gmon.sum'. + + 3. Run your program again, the same as before. + + 4. Merge the new data in `gmon.out' into `gmon.sum' with this command: + + gprof -s EXECUTABLE-FILE gmon.out gmon.sum + + 5. Repeat the last two steps as often as you wish. + + 6. Analyze the cumulative data using this command: + + gprof EXECUTABLE-FILE gmon.sum > OUTPUT-FILE + + +File: gprof.info, Node: Assumptions, Prev: Sampling Error, Up: Inaccuracy + +6.2 Estimating `children' Times +=============================== + +Some of the figures in the call graph are estimates--for example, the +`children' time values and all the time figures in caller and +subroutine lines. + + There is no direct information about these measurements in the +profile data itself. Instead, `gprof' estimates them by making an +assumption about your program that might or might not be true. + + The assumption made is that the average time spent in each call to +any function `foo' is not correlated with who called `foo'. If `foo' +used 5 seconds in all, and 2/5 of the calls to `foo' came from `a', +then `foo' contributes 2 seconds to `a''s `children' time, by +assumption. + + This assumption is usually true enough, but for some programs it is +far from true. Suppose that `foo' returns very quickly when its +argument is zero; suppose that `a' always passes zero as an argument, +while other callers of `foo' pass other arguments. In this program, +all the time spent in `foo' is in the calls from callers other than `a'. +But `gprof' has no way of knowing this; it will blindly and incorrectly +charge 2 seconds of time in `foo' to the children of `a'. + + We hope some day to put more complete data into `gmon.out', so that +this assumption is no longer needed, if we can figure out how. For the +novice, the estimated figures are usually more useful than misleading. + + +File: gprof.info, Node: How do I?, Next: Incompatibilities, Prev: Inaccuracy, Up: Top + +7 Answers to Common Questions +***************************** + +How can I get more exact information about hot spots in my program? + Looking at the per-line call counts only tells part of the story. + Because `gprof' can only report call times and counts by function, + the best way to get finer-grained information on where the program + is spending its time is to re-factor large functions into sequences + of calls to smaller ones. Beware however that this can introduce + artificial hot spots since compiling with `-pg' adds a significant + overhead to function calls. An alternative solution is to use a + non-intrusive profiler, e.g. oprofile. + +How do I find which lines in my program were executed the most times? + Use the `gcov' program. + +How do I find which lines in my program called a particular function? + Use `gprof -l' and lookup the function in the call graph. The + callers will be broken down by function and line number. + +How do I analyze a program that runs for less than a second? + Try using a shell script like this one: + + for i in `seq 1 100`; do + fastprog + mv gmon.out gmon.out.$i + done + + gprof -s fastprog gmon.out.* + + gprof fastprog gmon.sum + + If your program is completely deterministic, all the call counts + will be simple multiples of 100 (i.e., a function called once in + each run will appear with a call count of 100). + + + +File: gprof.info, Node: Incompatibilities, Next: Details, Prev: How do I?, Up: Top + +8 Incompatibilities with Unix `gprof' +************************************* + +GNU `gprof' and Berkeley Unix `gprof' use the same data file +`gmon.out', and provide essentially the same information. But there +are a few differences. + + * GNU `gprof' uses a new, generalized file format with support for + basic-block execution counts and non-realtime histograms. A magic + cookie and version number allows `gprof' to easily identify new + style files. Old BSD-style files can still be read. *Note + Profiling Data File Format: File Format. + + * For a recursive function, Unix `gprof' lists the function as a + parent and as a child, with a `calls' field that lists the number + of recursive calls. GNU `gprof' omits these lines and puts the + number of recursive calls in the primary line. + + * When a function is suppressed from the call graph with `-e', GNU + `gprof' still lists it as a subroutine of functions that call it. + + * GNU `gprof' accepts the `-k' with its argument in the form + `from/to', instead of `from to'. + + * In the annotated source listing, if there are multiple basic + blocks on the same line, GNU `gprof' prints all of their counts, + separated by commas. + + * The blurbs, field widths, and output formats are different. GNU + `gprof' prints blurbs after the tables, so that you can see the + tables without skipping the blurbs. + + +File: gprof.info, Node: Details, Next: GNU Free Documentation License, Prev: Incompatibilities, Up: Top + +9 Details of Profiling +********************** + +* Menu: + +* Implementation:: How a program collects profiling information +* File Format:: Format of `gmon.out' files +* Internals:: `gprof''s internal operation +* Debugging:: Using `gprof''s `-d' option + + +File: gprof.info, Node: Implementation, Next: File Format, Up: Details + +9.1 Implementation of Profiling +=============================== + +Profiling works by changing how every function in your program is +compiled so that when it is called, it will stash away some information +about where it was called from. From this, the profiler can figure out +what function called it, and can count how many times it was called. +This change is made by the compiler when your program is compiled with +the `-pg' option, which causes every function to call `mcount' (or +`_mcount', or `__mcount', depending on the OS and compiler) as one of +its first operations. + + The `mcount' routine, included in the profiling library, is +responsible for recording in an in-memory call graph table both its +parent routine (the child) and its parent's parent. This is typically +done by examining the stack frame to find both the address of the +child, and the return address in the original parent. Since this is a +very machine-dependent operation, `mcount' itself is typically a short +assembly-language stub routine that extracts the required information, +and then calls `__mcount_internal' (a normal C function) with two +arguments--`frompc' and `selfpc'. `__mcount_internal' is responsible +for maintaining the in-memory call graph, which records `frompc', +`selfpc', and the number of times each of these call arcs was traversed. + + GCC Version 2 provides a magical function +(`__builtin_return_address'), which allows a generic `mcount' function +to extract the required information from the stack frame. However, on +some architectures, most notably the SPARC, using this builtin can be +very computationally expensive, and an assembly language version of +`mcount' is used for performance reasons. + + Number-of-calls information for library routines is collected by +using a special version of the C library. The programs in it are the +same as in the usual C library, but they were compiled with `-pg'. If +you link your program with `gcc ... -pg', it automatically uses the +profiling version of the library. + + Profiling also involves watching your program as it runs, and +keeping a histogram of where the program counter happens to be every +now and then. Typically the program counter is looked at around 100 +times per second of run time, but the exact frequency may vary from +system to system. + + This is done is one of two ways. Most UNIX-like operating systems +provide a `profil()' system call, which registers a memory array with +the kernel, along with a scale factor that determines how the program's +address space maps into the array. Typical scaling values cause every +2 to 8 bytes of address space to map into a single array slot. On +every tick of the system clock (assuming the profiled program is +running), the value of the program counter is examined and the +corresponding slot in the memory array is incremented. Since this is +done in the kernel, which had to interrupt the process anyway to handle +the clock interrupt, very little additional system overhead is required. + + However, some operating systems, most notably Linux 2.0 (and +earlier), do not provide a `profil()' system call. On such a system, +arrangements are made for the kernel to periodically deliver a signal +to the process (typically via `setitimer()'), which then performs the +same operation of examining the program counter and incrementing a slot +in the memory array. Since this method requires a signal to be +delivered to user space every time a sample is taken, it uses +considerably more overhead than kernel-based profiling. Also, due to +the added delay required to deliver the signal, this method is less +accurate as well. + + A special startup routine allocates memory for the histogram and +either calls `profil()' or sets up a clock signal handler. This +routine (`monstartup') can be invoked in several ways. On Linux +systems, a special profiling startup file `gcrt0.o', which invokes +`monstartup' before `main', is used instead of the default `crt0.o'. +Use of this special startup file is one of the effects of using `gcc +... -pg' to link. On SPARC systems, no special startup files are used. +Rather, the `mcount' routine, when it is invoked for the first time +(typically when `main' is called), calls `monstartup'. + + If the compiler's `-a' option was used, basic-block counting is also +enabled. Each object file is then compiled with a static array of +counts, initially zero. In the executable code, every time a new +basic-block begins (i.e., when an `if' statement appears), an extra +instruction is inserted to increment the corresponding count in the +array. At compile time, a paired array was constructed that recorded +the starting address of each basic-block. Taken together, the two +arrays record the starting address of every basic-block, along with the +number of times it was executed. + + The profiling library also includes a function (`mcleanup') which is +typically registered using `atexit()' to be called as the program +exits, and is responsible for writing the file `gmon.out'. Profiling +is turned off, various headers are output, and the histogram is +written, followed by the call-graph arcs and the basic-block counts. + + The output from `gprof' gives no indication of parts of your program +that are limited by I/O or swapping bandwidth. This is because samples +of the program counter are taken at fixed intervals of the program's +run time. Therefore, the time measurements in `gprof' output say +nothing about time that your program was not running. For example, a +part of the program that creates so much data that it cannot all fit in +physical memory at once may run very slowly due to thrashing, but +`gprof' will say it uses little time. On the other hand, sampling by +run time has the advantage that the amount of load due to other users +won't directly affect the output you get. + + +File: gprof.info, Node: File Format, Next: Internals, Prev: Implementation, Up: Details + +9.2 Profiling Data File Format +============================== + +The old BSD-derived file format used for profile data does not contain a +magic cookie that allows to check whether a data file really is a +`gprof' file. Furthermore, it does not provide a version number, thus +rendering changes to the file format almost impossible. GNU `gprof' +uses a new file format that provides these features. For backward +compatibility, GNU `gprof' continues to support the old BSD-derived +format, but not all features are supported with it. For example, +basic-block execution counts cannot be accommodated by the old file +format. + + The new file format is defined in header file `gmon_out.h'. It +consists of a header containing the magic cookie and a version number, +as well as some spare bytes available for future extensions. All data +in a profile data file is in the native format of the target for which +the profile was collected. GNU `gprof' adapts automatically to the +byte-order in use. + + In the new file format, the header is followed by a sequence of +records. Currently, there are three different record types: histogram +records, call-graph arc records, and basic-block execution count +records. Each file can contain any number of each record type. When +reading a file, GNU `gprof' will ensure records of the same type are +compatible with each other and compute the union of all records. For +example, for basic-block execution counts, the union is simply the sum +of all execution counts for each basic-block. + +9.2.1 Histogram Records +----------------------- + +Histogram records consist of a header that is followed by an array of +bins. The header contains the text-segment range that the histogram +spans, the size of the histogram in bytes (unlike in the old BSD +format, this does not include the size of the header), the rate of the +profiling clock, and the physical dimension that the bin counts +represent after being scaled by the profiling clock rate. The physical +dimension is specified in two parts: a long name of up to 15 characters +and a single character abbreviation. For example, a histogram +representing real-time would specify the long name as "seconds" and the +abbreviation as "s". This feature is useful for architectures that +support performance monitor hardware (which, fortunately, is becoming +increasingly common). For example, under DEC OSF/1, the "uprofile" +command can be used to produce a histogram of, say, instruction cache +misses. In this case, the dimension in the histogram header could be +set to "i-cache misses" and the abbreviation could be set to "1" +(because it is simply a count, not a physical dimension). Also, the +profiling rate would have to be set to 1 in this case. + + Histogram bins are 16-bit numbers and each bin represent an equal +amount of text-space. For example, if the text-segment is one thousand +bytes long and if there are ten bins in the histogram, each bin +represents one hundred bytes. + +9.2.2 Call-Graph Records +------------------------ + +Call-graph records have a format that is identical to the one used in +the BSD-derived file format. It consists of an arc in the call graph +and a count indicating the number of times the arc was traversed during +program execution. Arcs are specified by a pair of addresses: the +first must be within caller's function and the second must be within +the callee's function. When performing profiling at the function +level, these addresses can point anywhere within the respective +function. However, when profiling at the line-level, it is better if +the addresses are as close to the call-site/entry-point as possible. +This will ensure that the line-level call-graph is able to identify +exactly which line of source code performed calls to a function. + +9.2.3 Basic-Block Execution Count Records +----------------------------------------- + +Basic-block execution count records consist of a header followed by a +sequence of address/count pairs. The header simply specifies the +length of the sequence. In an address/count pair, the address +identifies a basic-block and the count specifies the number of times +that basic-block was executed. Any address within the basic-address can +be used. + + +File: gprof.info, Node: Internals, Next: Debugging, Prev: File Format, Up: Details + +9.3 `gprof''s Internal Operation +================================ + +Like most programs, `gprof' begins by processing its options. During +this stage, it may building its symspec list (`sym_ids.c:sym_id_add'), +if options are specified which use symspecs. `gprof' maintains a +single linked list of symspecs, which will eventually get turned into +12 symbol tables, organized into six include/exclude pairs--one pair +each for the flat profile (INCL_FLAT/EXCL_FLAT), the call graph arcs +(INCL_ARCS/EXCL_ARCS), printing in the call graph +(INCL_GRAPH/EXCL_GRAPH), timing propagation in the call graph +(INCL_TIME/EXCL_TIME), the annotated source listing +(INCL_ANNO/EXCL_ANNO), and the execution count listing +(INCL_EXEC/EXCL_EXEC). + + After option processing, `gprof' finishes building the symspec list +by adding all the symspecs in `default_excluded_list' to the exclude +lists EXCL_TIME and EXCL_GRAPH, and if line-by-line profiling is +specified, EXCL_FLAT as well. These default excludes are not added to +EXCL_ANNO, EXCL_ARCS, and EXCL_EXEC. + + Next, the BFD library is called to open the object file, verify that +it is an object file, and read its symbol table (`core.c:core_init'), +using `bfd_canonicalize_symtab' after mallocing an appropriately sized +array of symbols. At this point, function mappings are read (if the +`--file-ordering' option has been specified), and the core text space +is read into memory (if the `-c' option was given). + + `gprof''s own symbol table, an array of Sym structures, is now built. +This is done in one of two ways, by one of two routines, depending on +whether line-by-line profiling (`-l' option) has been enabled. For +normal profiling, the BFD canonical symbol table is scanned. For +line-by-line profiling, every text space address is examined, and a new +symbol table entry gets created every time the line number changes. In +either case, two passes are made through the symbol table--one to count +the size of the symbol table required, and the other to actually read +the symbols. In between the two passes, a single array of type `Sym' +is created of the appropriate length. Finally, +`symtab.c:symtab_finalize' is called to sort the symbol table and +remove duplicate entries (entries with the same memory address). + + The symbol table must be a contiguous array for two reasons. First, +the `qsort' library function (which sorts an array) will be used to +sort the symbol table. Also, the symbol lookup routine +(`symtab.c:sym_lookup'), which finds symbols based on memory address, +uses a binary search algorithm which requires the symbol table to be a +sorted array. Function symbols are indicated with an `is_func' flag. +Line number symbols have no special flags set. Additionally, a symbol +can have an `is_static' flag to indicate that it is a local symbol. + + With the symbol table read, the symspecs can now be translated into +Syms (`sym_ids.c:sym_id_parse'). Remember that a single symspec can +match multiple symbols. An array of symbol tables (`syms') is created, +each entry of which is a symbol table of Syms to be included or +excluded from a particular listing. The master symbol table and the +symspecs are examined by nested loops, and every symbol that matches a +symspec is inserted into the appropriate syms table. This is done +twice, once to count the size of each required symbol table, and again +to build the tables, which have been malloced between passes. From now +on, to determine whether a symbol is on an include or exclude symspec +list, `gprof' simply uses its standard symbol lookup routine on the +appropriate table in the `syms' array. + + Now the profile data file(s) themselves are read +(`gmon_io.c:gmon_out_read'), first by checking for a new-style +`gmon.out' header, then assuming this is an old-style BSD `gmon.out' if +the magic number test failed. + + New-style histogram records are read by `hist.c:hist_read_rec'. For +the first histogram record, allocate a memory array to hold all the +bins, and read them in. When multiple profile data files (or files +with multiple histogram records) are read, the memory ranges of each +pair of histogram records must be either equal, or non-overlapping. +For each pair of histogram records, the resolution (memory region size +divided by the number of bins) must be the same. The time unit must be +the same for all histogram records. If the above containts are met, all +histograms for the same memory range are merged. + + As each call graph record is read (`call_graph.c:cg_read_rec'), the +parent and child addresses are matched to symbol table entries, and a +call graph arc is created by `cg_arcs.c:arc_add', unless the arc fails +a symspec check against INCL_ARCS/EXCL_ARCS. As each arc is added, a +linked list is maintained of the parent's child arcs, and of the child's +parent arcs. Both the child's call count and the arc's call count are +incremented by the record's call count. + + Basic-block records are read (`basic_blocks.c:bb_read_rec'), but +only if line-by-line profiling has been selected. Each basic-block +address is matched to a corresponding line symbol in the symbol table, +and an entry made in the symbol's bb_addr and bb_calls arrays. Again, +if multiple basic-block records are present for the same address, the +call counts are cumulative. + + A gmon.sum file is dumped, if requested (`gmon_io.c:gmon_out_write'). + + If histograms were present in the data files, assign them to symbols +(`hist.c:hist_assign_samples') by iterating over all the sample bins +and assigning them to symbols. Since the symbol table is sorted in +order of ascending memory addresses, we can simple follow along in the +symbol table as we make our pass over the sample bins. This step +includes a symspec check against INCL_FLAT/EXCL_FLAT. Depending on the +histogram scale factor, a sample bin may span multiple symbols, in +which case a fraction of the sample count is allocated to each symbol, +proportional to the degree of overlap. This effect is rare for normal +profiling, but overlaps are more common during line-by-line profiling, +and can cause each of two adjacent lines to be credited with half a +hit, for example. + + If call graph data is present, `cg_arcs.c:cg_assemble' is called. +First, if `-c' was specified, a machine-dependent routine (`find_call') +scans through each symbol's machine code, looking for subroutine call +instructions, and adding them to the call graph with a zero call count. +A topological sort is performed by depth-first numbering all the +symbols (`cg_dfn.c:cg_dfn'), so that children are always numbered less +than their parents, then making a array of pointers into the symbol +table and sorting it into numerical order, which is reverse topological +order (children appear before parents). Cycles are also detected at +this point, all members of which are assigned the same topological +number. Two passes are now made through this sorted array of symbol +pointers. The first pass, from end to beginning (parents to children), +computes the fraction of child time to propagate to each parent and a +print flag. The print flag reflects symspec handling of +INCL_GRAPH/EXCL_GRAPH, with a parent's include or exclude (print or no +print) property being propagated to its children, unless they +themselves explicitly appear in INCL_GRAPH or EXCL_GRAPH. A second +pass, from beginning to end (children to parents) actually propagates +the timings along the call graph, subject to a check against +INCL_TIME/EXCL_TIME. With the print flag, fractions, and timings now +stored in the symbol structures, the topological sort array is now +discarded, and a new array of pointers is assembled, this time sorted +by propagated time. + + Finally, print the various outputs the user requested, which is now +fairly straightforward. The call graph (`cg_print.c:cg_print') and +flat profile (`hist.c:hist_print') are regurgitations of values already +computed. The annotated source listing +(`basic_blocks.c:print_annotated_source') uses basic-block information, +if present, to label each line of code with call counts, otherwise only +the function call counts are presented. + + The function ordering code is marginally well documented in the +source code itself (`cg_print.c'). Basically, the functions with the +most use and the most parents are placed first, followed by other +functions with the most use, followed by lower use functions, followed +by unused functions at the end. + + +File: gprof.info, Node: Debugging, Prev: Internals, Up: Details + +9.4 Debugging `gprof' +===================== + +If `gprof' was compiled with debugging enabled, the `-d' option +triggers debugging output (to stdout) which can be helpful in +understanding its operation. The debugging number specified is +interpreted as a sum of the following options: + +2 - Topological sort + Monitor depth-first numbering of symbols during call graph analysis + +4 - Cycles + Shows symbols as they are identified as cycle heads + +16 - Tallying + As the call graph arcs are read, show each arc and how the total + calls to each function are tallied + +32 - Call graph arc sorting + Details sorting individual parents/children within each call graph + entry + +64 - Reading histogram and call graph records + Shows address ranges of histograms as they are read, and each call + graph arc + +128 - Symbol table + Reading, classifying, and sorting the symbol table from the object + file. For line-by-line profiling (`-l' option), also shows line + numbers being assigned to memory addresses. + +256 - Static call graph + Trace operation of `-c' option + +512 - Symbol table and arc table lookups + Detail operation of lookup routines + +1024 - Call graph propagation + Shows how function times are propagated along the call graph + +2048 - Basic-blocks + Shows basic-block records as they are read from profile data (only + meaningful with `-l' option) + +4096 - Symspecs + Shows symspec-to-symbol pattern matching operation + +8192 - Annotate source + Tracks operation of `-A' option + + +File: gprof.info, Node: GNU Free Documentation License, Prev: Details, Up: Top + +Appendix A GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + `http://fsf.org/' + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + 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 + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + 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 + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + 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 + 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 + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + 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 + replace the old one, on explicit permission from the previous + publisher that added the old one. + + 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 + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + 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 + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + 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 + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly + and finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from + you under this License. If your rights have been terminated and + not permanently reinstated, receipt of a copy of some or all of + the same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents +==================================================== + +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 +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + 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 + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + + + +Tag Table: +Node: Top722 +Node: Introduction2045 +Node: Compiling4537 +Node: Executing8593 +Node: Invoking11381 +Node: Output Options12796 +Node: Analysis Options19885 +Node: Miscellaneous Options23803 +Node: Deprecated Options25058 +Node: Symspecs27127 +Node: Output28953 +Node: Flat Profile29993 +Node: Call Graph34946 +Node: Primary38178 +Node: Callers40766 +Node: Subroutines42883 +Node: Cycles44724 +Node: Line-by-line51501 +Node: Annotated Source55574 +Node: Inaccuracy58573 +Node: Sampling Error58831 +Node: Assumptions61735 +Node: How do I?63205 +Node: Incompatibilities64759 +Node: Details66253 +Node: Implementation66646 +Node: File Format72543 +Node: Internals76833 +Node: Debugging85328 +Node: GNU Free Documentation License86929 + +End Tag Table diff --git a/gprof/po/bg.gmo b/gprof/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..85a5bd7780f1b937632246f1f25822460ccc617b GIT binary patch literal 12825 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 G0sJ=~CQEz( literal 0 Hc-jL100001 diff --git a/gprof/po/de.gmo b/gprof/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2f4dd2c2a025f20141eb96aa98df3f2d274b4b7f GIT binary patch literal 10545 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 literal 0 Hc-jL100001 diff --git a/gprof/po/eo.gmo b/gprof/po/eo.gmo new file mode 100644 index 0000000000000000000000000000000000000000..13891b2e1e2ac901189d8e690f3cfb875ba1e1a5 GIT binary patch literal 10469 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 literal 0 Hc-jL100001 diff --git a/gprof/po/es.gmo b/gprof/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..175ae7d61569ad405398a8c83fbf230c36edd83a GIT binary patch literal 10865 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 literal 0 Hc-jL100001 diff --git a/gprof/po/fr.gmo b/gprof/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2a6e7dc6d3cc1156b0bcefa63be582755822683e GIT binary patch literal 11206 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 z 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 literal 0 Hc-jL100001 diff --git a/gprof/po/ms.gmo b/gprof/po/ms.gmo new file mode 100644 index 0000000000000000000000000000000000000000..767768743cc2ecad4ba56229604272f9a874d378 GIT binary patch literal 10360 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 literal 0 Hc-jL100001 diff --git a/gprof/po/nl.gmo b/gprof/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..32cf7dec33edbdde8b48de867836c9d4edfafd7b GIT binary patch literal 10712 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 QIDDnGGblHTqFK~`0cUW+ssI20 literal 0 Hc-jL100001 diff --git a/gprof/po/pt_BR.gmo b/gprof/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..32876f76004002194ed8d294e106d9793e73660b GIT binary patch literal 9984 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 literal 0 Hc-jL100001 diff --git a/gprof/po/ru.gmo b/gprof/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b4ee1269ea539dda4faeb451dc3d767e24b4b003 GIT binary patch literal 12808 zc-qZce~c9Ob)Up`(_0dZ-2`gD_ScTr+yS%ff`75xVf=%$vB6+C>^PSzp4*+f8{h2A zc4ik?H%hs~_(vcnb{ol&m9&nMw3S=+z??Y_?x^^um7-R&{-;$NRcfQEiqv10`bR6J zQa|s#@9fV0I1EWtb;a%5`ObUq`+mPS-{J3Xz42QHKBM?si@%LG7{+nH{$DZp^W?7@ z#?64c0Q&%60K6UWIN%+C?*Xm^{4>B+fPW461;BsT>o@fn#x2Afa2;RM=EU>5LPkI3;)fXe_soidDH2V9<#eb=Rg@6MFaeFg9#zyR<8!1n>~0sKe6G~j2J z2{e}p-2p(bHeLeU09XOM3-I@s3H=qoI|2WDnaFwDXAR>iz()Z$0)7K<1>ij37Xg0+ zxSI6+tmvQmoY390gMfRM3!f9qMZZ5*`sV@H1C{|PG~Zn*@_i2wp=SKy zN|Eo(N{O3G`u<<66#f4S@J5O!IO#JK7pvs@=2gP)^ZI(tDv3+AO6VWf_jdyR_*2kz zmBeS?ZHNiLLBQ=~U%(x--)$0CJ*&kJ_pg?CD6AIwPpuZap9dTS{M*%Hzq{6mpS?BW z*FOLpBDvQHpD(TzyFR;C;^f7(Iu6!~{eGz7-vB;Mad^Af`8mJ?6yLW?eEjF_BIo)$ zBpxOKe~tVNI6{88L-OE;J0))OcM9FxfKQTsfG+~xq7389ly`s`ia)@9z@I76bL(AV zha%v9z;6QXqj&*)9q>LF;cFC+cguP|l3{z$XBI7jP2r$ADjXUf5XT8+3_3I_R``1hUKDA!r)dM_8`Mh58@9)-2T(8(5_}LBO&+Qu| zZd|}0QQZQpp!OcwDE|4EO+sg8h3_5>i&@Es-vS&UJ+l%Q9|58S8ULWK|1B%|_CHz4 z*A+Rre^*ZYk;zG1Pvr#f^_=9hPj7Y0s|Iz0+ z49PLF^Gdx&IDeaV;0bnn}mkY$U8l#4g%-&E&!8e&h%8LF3*yOd{?6DVh# z6Vyvl28_*`ZY06?c@1yWkaGBtA-PMRFBuZo^m$f8iW}-_R5vKr2K74Caq@|7)$B)# z3G(j?hU7u~p_)d0oO1Iay|#zyoFRD?f3g}<4DHpwseVyzQNN|yLVfP@hSYodP(3nw zdU_tSTvv?;R(T?o!nLALb4~TyN6W6|Sry0k)R^zO{*kbcFw;dfYK2b09CiJ|q$>DT zuc89G;0ML4-wow<0ehITN0O>zS))%lVa3OKsRg@z709VnYRt7NsvP)Zj%(*>Wymip zVDEN3JItq2tRr10(UydRN~!c#w~Ff_zhb${tCmLXK>1_JB~1IMU8s@~Xp5azVM2vg zsqEUKTBxj0rN>n|%+T!^R~@L9N>)(I6L*N|Rb4A^Dz&__6C5U-3b-7$1F&#mw_3&S z4f_n$U#Jyu8-jzmrH)MauDx9ir;8)0#Levn+!CmCX7gA&P2$oo2!buU-3VbPugG^j zUsarvt*k;t0n667UQIucc>v-FB&<@8z%15y()_9nuaHZcNc-%dU?aYuV`aitqLoydR=3sFp$Va9^r{ z>-iPh#%^v6kCd!R6Qk-Ozw83&)Xu$w${MRcyTG=JjtAydc3V{kO4yamhBUy^THu~p z;C;htx$FmofjG2+0-_8A)xf6MV8p$iTfJ`YqCep|bXnPBsu@1(~wUSj+ zqqYjMxijY2#f-4Bip9VVLlrtNBc2hi2>}mVZq*h=1i4^&>nf_~L(=5Jn1lT?75iv~ zf|Sz-wu^;Dn!!P&7zzr4QoWcC*R|jB%eE&uNb5y=v^qXcQn%P+n=*^a8Tb5v9ZZPM z*q9wq1ch+5ghoeY(U>LM3rRF!UoZ`p{{E}LiF0A9L ziZ8$0_*Olt2G_$cOz?|MQuN89lb(M>P2dmriZ*K65vMXC=^=55@D+SsBXUqef3lZV zF56Z>r0_QkGG6k%j9;y^gfP>QC)nwf6eVliDZnNEq+@r(L3IghrBUAvyWOpN&9J3{ zNET_4vEqY%0ti|#i{(m0zoe(7H$jG5jp7>GR7~6@T-(%-_CZ}JIble_ljulAt74_D zj@@7`c#c=_OJzg}CBHU*5LViyCIMYoyoE!vrxA+uGeQU`{I8KQdX6G710S)%?Eo!~ zI!wsbl9R1$6*P9}m+Vo$SR-w?ui3@Ca#6W5uI&w=);V5SL2=@2c8f7l5Y#rdgw=~A z>^d?FMN-X9WS`JfJ+6lEVc7~o8&M;=Gm}OFU%faMH_?#ccwvl8;qD>OOGq9zR9LCG z$wCpMv}AxLKVk(QX!24Sh&nmHPz8@WeQy;4o34T}O_N%Q6#O(y)eD$Cns$%&v7M7M zLz;Rj9zfQsLD3O|Nur1Mqxd=SH|4(L(t;LtyYZ+MN)dnbz~gG1EV~h+lxu-AK2cG* ztq*Nc`|WX?MAHrMpyzP%RBE(>Va|cFo@2qRgN=0SZRS@W_@Vd0ln`pLb$EK>nS-(^ zTWXhAw2vZwRNO6;XO(Qs2m5VuuR_5M$*Y7rM9meH9Lm&Z0~?LQAFIIBb_Qcs@;)WM zH5&RZ+Ag{hssykQyph_SzBRy{;}vB59Y z?1_;iP*Xf!bi6UPsX1Z0W&S}D^N)s+2Rz{d4MW(|De&zwgsQLPuP3@|pc)!PcT z*(}I{37-;7dJV?#WHCUsAjvIPc<89-n@5}?Q02D_1dz#VS5_AkIPJjD3%hrU*C2bm z&etfUc7RPx={q7!Y?~c}yFdqK4!WaggjF32e3{8)Fw_qh#t-4q!>x_bz$X1Yt@BAi z6OtXJfJzHR26AkehNeSgkP)5>x%dzP|7g9>OL;XK2HlolvfL$>gRX2|3Ihn$C|if5 zY^4lBvWpBtgBLMa8TtVOWyvVoA%^uLQadypDkt)-@QlKb9r%Q{i?Kc?rWN7J4+>mx z4Ei<@AyoDZ!Z(D-;4;gM92xPQ!eqEnCP4k@V^rt?PrjA0FYsT20_Luw`JBW?UKhO0 zna$bE)@({@o4F?(cZ%ktsBq?xpQlo1qWhq}yWx&;ubT0L@zlP(L*`@XP@H>@BYg8} zb2gVXb2&46zslwETkhL{>nsq>{TLs^PP|-J<+kLr4{XS80p4yate8V6gdxo52YK~E zHE`6^{>!d^SoPPcfmPcv>6dEOq~rOSpt>Ct-guS5Y{<4sd9}ZaxdcN%KSbP7I?5<} zcJ0~OR5q8%rXEB6hbhgWS{b6ySg;A{?|9p26h+Wg1`ZAlnh!PcNFvP4=1z%jv7?Xb^Id$*7 zihgGA8p!3;!z!!te7${Ob9}3R;6D1v6xn_l?5kfD65wR}K$8Q_=Duxop3xKiPW@Ok zQ-4K8XX_`U^U-2-mj0TD9ZMjnUVNXaf4zRXJ{2uQv-q2Mh>PIejx_fKl(tF zA;MODyKQ#O*vy%KOyf3FMVF#W^^;4m?T(sCrGRyjw1EP1gel6sf{TmwQ+!qv{a!SS zMG|M09`vnUd!c`JR)SPSs)|ICr$)DI4C37LrG7#EyjT zrlF{^2+~WG2CPnk49Fis0xIa7_OLrWW)c_hg7ykkWx7%M(^Z`a)s{*iXut6F3vSPHQPFY`K~GF{Jby%QTNW$H^#-Cs>Zi56K@2DLBuyf|CD~ zsIh3$m*P!;lka-uM-GYR+E4xT-DRwOJvpoNW)H7C%*E2I=pi6DyWMT zr0~Q^7O8Pq!Rr^vEYh|=$)|h_iKP$7Hn=?pmdE3pEe4m0vA_+HBYCR+I<+0d;7Jbs zW}7}u6GGSSD>8zHBX^c_Z$`(^3TUn*Z6QzM?qW&HBt9uYpbYIb>^h%Qe5+lHP0JhtJWQ7I*L;J zo{|Xd8)JcVbI5ebdv)S}Nu;mg(%V_xPYokGS;OY@d=<-lCvLO8F70Ej{1dF^R= zHqmmMN6Yar)MzBcg$GGJw%3n$jP2LJZi(SM&I|VPS^~i3>${nP;w9W)5vVDeFnP!D+EE>*8@D zo~_yA&8IRM-DRB9Gv2v4kEl&2I`5h0GXuCz(UhM&T~Da6*gRiv4niG?bme_IsJNnM zq-$zBOE)&%ZS-ivNh1lMXPpme^wO23Ayc#c{Tu^T+X+6ikYQSkp!X7&UL<)aPsPCP zVbD?DyD&-^FIkKmgTZB))?t^+@wgdJD)}W_b=wpB67zf`T;d0r_%VJ)^)^RW)QTVBN^^gj{v$*5C){B5qhh1dQGGfM z)h^PrN<8EzCrheW9YhPVjGejWQFUv~($S@iT6#073!)}hIGP@(IOg8e6A-iE0}N?j zAJFp#*EUMO3*?)3l7ZSxKT415dO1Ua)KBZzGkPlFLPSkLzp9aLYEomo+=`bo@?7FJHr3 z9UjmZB|qz@e!Qxk3_y55^6S23_J?F6cE=e29pW%O_i0 zBxh7x-{W)Tgj90S%zjN70u4^hbNWPvPAV@LF*~El*Jy5-_{rnkw0~asV{3KTo2W{k%jD{^R7U}U zxJ4ZUVJ-(+50zfyl!GkS!<9_0X%?z$e75nwZhfN5bUx(srq;;?L{en{7aJfSa(P4e zj7}D|dIW4_(TDDFEO*;Jj1Ewd_f1SI-|lm#Gd&noB|@9abL++sUcl8LcWF9svYq%@ zg_ncIMv7_leW-BcgTd4x?I*=qaq{;GS*nvG?+6{c8h31)@Re4(2CUnWY$-&fz1#9s lZT;yc%SIT~iK~2Voyq0agQY~=w*3PHWJk_`uy59Z_y!qVhCToQ literal 0 Hc-jL100001 diff --git a/gprof/po/sr.gmo b/gprof/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..16f76f28a0b3fc6428c0de0bd3a80be0254b15f9 GIT binary patch literal 12971 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 literal 0 Hc-jL100001 diff --git a/gprof/po/sv.gmo b/gprof/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6af90c7b338d69fce9440405952e33dbf10ad5ed GIT binary patch literal 10367 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 literal 0 Hc-jL100001 diff --git a/gprof/po/tr.gmo b/gprof/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..82735ab742f9ea6c9aa2c982b9b7323253df424c GIT binary patch literal 11331 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 literal 0 Hc-jL100001 diff --git a/gprof/po/uk.gmo b/gprof/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b11462d38013cf8bae22fdb3ad6ce8186dd4b874 GIT binary patch literal 13049 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 z /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 69 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 149 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 35 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 27 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 99 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 146 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 285 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 32, 2, 31, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 33, 2, 2, 34, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 12, 16, 19, 23, 27, + 30, 33, 36, 39, 42, 45, 50, 53, 58, 59, + 61, 64, 72, 76, 77, 79, 81, 83, 85, 87, + 89, 91, 93, 96, 98, 107, 116, 123, 130, 137, + 142, 145, 147, 150, 153, 157, 159, 161, 162, 165, + 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, + 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, + 206, 208, 210, 212, 214, 216, 218, 220, 223, 226, + 230, 234, 236, 237, 240, 241, 244, 245, 248, 249, + 253, 254, 256, 259, 264, 266, 267, 269, 270, 272 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 36, 0, -1, 36, 37, -1, 37, -1, 3, 52, + 56, -1, 4, 52, 56, -1, 5, 29, -1, 6, + 60, 48, -1, 7, 60, 48, -1, 8, 46, -1, + 9, 46, -1, 11, 44, -1, 12, 38, -1, 13, + 42, -1, 14, 60, -1, 14, 60, 31, 60, -1, + 27, 29, -1, 20, 57, 32, 60, -1, -1, 39, + -1, 38, 39, -1, 51, 55, 54, 47, 40, 47, + 53, -1, 41, 47, 40, -1, -1, 25, -1, 26, + -1, 16, -1, 17, -1, 9, -1, 10, -1, 18, + -1, 19, -1, 42, 43, -1, 43, -1, 29, 33, + 29, 31, 29, 31, 29, 53, -1, 29, 33, 29, + 31, 29, 31, 60, 53, -1, 29, 33, 29, 31, + 29, 53, -1, 29, 33, 29, 31, 60, 53, -1, + 29, 31, 29, 31, 29, 53, -1, 29, 31, 29, + 53, -1, 44, 45, -1, 45, -1, 29, 46, -1, + 29, 29, -1, 46, 47, 49, -1, 49, -1, 32, + -1, -1, 32, 60, -1, -1, 21, -1, 22, -1, + 23, -1, 24, -1, 15, -1, 8, -1, 16, -1, + 17, -1, 9, -1, 10, -1, 5, -1, 27, -1, + 23, -1, 12, -1, 7, -1, 13, -1, 3, -1, + 25, -1, 26, -1, 18, -1, 19, -1, 21, -1, + 24, -1, 6, -1, 14, -1, 22, -1, 29, -1, + 31, 50, -1, 31, 51, -1, 50, 31, 51, -1, + 29, 31, 51, -1, 51, -1, -1, 28, 29, -1, + -1, 34, 60, -1, -1, 33, 51, -1, -1, 15, + 33, 61, -1, -1, 29, -1, 31, 29, -1, 57, + 31, 58, 59, -1, 30, -1, -1, 29, -1, -1, + 30, -1, 30, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 138, 138, 139, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 160, 162, + 163, 170, 177, 178, 181, 182, 183, 184, 185, 186, + 187, 188, 191, 192, 196, 198, 200, 202, 204, 206, + 211, 212, 216, 217, 221, 222, 226, 227, 229, 230, + 234, 235, 236, 237, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 271, 272, 278, 284, + 290, 298, 299, 302, 303, 307, 308, 312, 313, 316, + 317, 320, 321, 327, 335, 336, 339, 340, 343, 345 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "NAME", "LIBRARY", "DESCRIPTION", + "STACKSIZE_K", "HEAPSIZE", "CODE", "DATAU", "DATAL", "SECTIONS", + "EXPORTS", "IMPORTS", "VERSIONK", "BASE", "CONSTANTU", "CONSTANTL", + "PRIVATEU", "PRIVATEL", "ALIGNCOMM", "READ", "WRITE", "EXECUTE", + "SHARED", "NONAMEU", "NONAMEL", "DIRECTIVE", "EQUAL", "ID", "DIGITS", + "'.'", "','", "'='", "'@'", "$accept", "start", "command", "explist", + "expline", "exp_opt_list", "exp_opt", "implist", "impline", "seclist", + "secline", "attr_list", "opt_comma", "opt_number", "attr", + "keyword_as_name", "opt_name2", "opt_name", "opt_equalequal_name", + "opt_ordinal", "opt_equal_name", "opt_base", "anylang_id", "opt_digits", + "opt_id", "NUMBER", "VMA", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 46, 44, 61, 64 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 35, 36, 36, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, + 38, 39, 40, 40, 41, 41, 41, 41, 41, 41, + 41, 41, 42, 42, 43, 43, 43, 43, 43, 43, + 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, + 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, + 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, + 56, 57, 57, 57, 58, 58, 59, 59, 60, 61 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 3, 3, 2, 3, 3, 2, + 2, 2, 2, 2, 2, 4, 2, 4, 0, 1, + 2, 7, 3, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 8, 8, 6, 6, 6, 4, + 2, 1, 2, 2, 3, 1, 1, 0, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 3, 1, 0, 2, 0, 2, 0, 2, 0, 3, + 0, 1, 2, 4, 1, 0, 1, 0, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 82, 82, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 3, 66, 60, 73, 64, + 55, 58, 59, 63, 65, 74, 54, 56, 57, 69, + 70, 71, 75, 62, 72, 67, 68, 61, 76, 0, + 0, 81, 90, 90, 6, 98, 49, 49, 50, 51, + 52, 53, 9, 45, 10, 0, 11, 41, 12, 19, + 88, 0, 13, 33, 14, 91, 0, 0, 16, 1, + 2, 0, 77, 78, 0, 0, 4, 5, 0, 7, + 8, 46, 0, 43, 42, 40, 20, 0, 86, 0, + 0, 32, 0, 92, 95, 0, 80, 79, 0, 48, + 44, 87, 0, 47, 84, 0, 15, 94, 97, 17, + 99, 89, 85, 23, 0, 0, 39, 0, 96, 93, + 28, 29, 26, 27, 30, 31, 24, 25, 47, 47, + 83, 84, 84, 84, 84, 23, 38, 0, 36, 37, + 21, 22, 84, 84, 34, 35 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 14, 15, 58, 59, 128, 129, 62, 63, 56, + 57, 52, 82, 79, 53, 40, 41, 42, 116, 103, + 88, 76, 67, 108, 119, 46, 111 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -82 +static const yytype_int8 yypact[] = +{ + 122, 11, 11, -25, 9, 9, 53, 53, -17, 11, + 14, 9, -18, 20, 95, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, 29, 11, + 47, -82, 67, 67, -82, -82, 54, 54, -82, -82, + -82, -82, 48, -82, 48, -14, -17, -82, 11, -82, + 58, 50, 14, -82, 61, -82, 64, 33, -82, -82, + -82, 11, 47, -82, 11, 63, -82, -82, 9, -82, + -82, -82, 53, -82, 48, -82, -82, 11, 60, 76, + 81, -82, 9, -82, 83, 9, -82, -82, 84, -82, + -82, -82, 9, 79, -26, 85, -82, -82, 88, -82, + -82, -82, -82, 36, 89, 90, -82, 55, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, 79, 79, + -82, 92, 13, 92, 92, 36, -82, 59, -82, -82, + -82, -82, 92, 92, -82, -82 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -82, -82, 107, -82, 65, -11, -82, -82, 75, -82, + 82, -4, -81, 93, 57, 102, -8, 141, -75, -82, + -82, 101, -82, -82, -82, -5, -82 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -48 +static const yytype_int16 yytable[] = +{ + 47, 60, 114, 54, 44, 115, 64, 48, 49, 50, + 51, 65, 55, 66, 16, 83, 17, 18, 19, 20, + 21, 22, 113, 23, 24, 25, 26, 27, 28, 29, + 30, 73, 31, 32, 33, 34, 35, 36, 37, 45, + 38, 114, 39, 61, 137, 120, 121, 134, 135, 68, + 60, 84, 122, 123, 124, 125, 136, 138, 139, 140, + 71, 126, 127, 96, 94, 95, 97, 144, 145, -47, + -47, -47, -47, 99, 48, 49, 50, 51, 74, 101, + 81, 89, 75, 90, 132, 45, 78, 106, 142, 45, + 109, 87, 92, 93, 102, 69, 98, 112, 1, 2, + 3, 4, 5, 6, 7, 104, 8, 9, 10, 11, + 105, 81, 133, 107, 110, 12, 117, 118, 130, 131, + 114, 70, 13, 86, 141, 1, 2, 3, 4, 5, + 6, 7, 143, 8, 9, 10, 11, 91, 85, 100, + 80, 72, 12, 43, 77, 0, 0, 0, 0, 13 +}; + +static const yytype_int16 yycheck[] = +{ + 5, 9, 28, 7, 29, 31, 11, 21, 22, 23, + 24, 29, 29, 31, 3, 29, 5, 6, 7, 8, + 9, 10, 103, 12, 13, 14, 15, 16, 17, 18, + 19, 39, 21, 22, 23, 24, 25, 26, 27, 30, + 29, 28, 31, 29, 31, 9, 10, 128, 129, 29, + 58, 55, 16, 17, 18, 19, 131, 132, 133, 134, + 31, 25, 26, 71, 31, 32, 74, 142, 143, 21, + 22, 23, 24, 78, 21, 22, 23, 24, 31, 87, + 32, 31, 15, 33, 29, 30, 32, 92, 29, 30, + 95, 33, 31, 29, 34, 0, 33, 102, 3, 4, + 5, 6, 7, 8, 9, 29, 11, 12, 13, 14, + 29, 32, 117, 30, 30, 20, 31, 29, 29, 29, + 28, 14, 27, 58, 135, 3, 4, 5, 6, 7, + 8, 9, 137, 11, 12, 13, 14, 62, 56, 82, + 47, 39, 20, 2, 43, -1, -1, -1, -1, 27 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 11, 12, + 13, 14, 20, 27, 36, 37, 3, 5, 6, 7, + 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, + 19, 21, 22, 23, 24, 25, 26, 27, 29, 31, + 50, 51, 52, 52, 29, 30, 60, 60, 21, 22, + 23, 24, 46, 49, 46, 29, 44, 45, 38, 39, + 51, 29, 42, 43, 60, 29, 31, 57, 29, 0, + 37, 31, 50, 51, 31, 15, 56, 56, 32, 48, + 48, 32, 47, 29, 46, 45, 39, 33, 55, 31, + 33, 43, 31, 29, 31, 32, 51, 51, 33, 60, + 49, 51, 34, 54, 29, 29, 60, 30, 58, 60, + 30, 61, 60, 47, 28, 31, 53, 31, 29, 59, + 9, 10, 16, 17, 18, 19, 25, 26, 40, 41, + 29, 29, 29, 60, 47, 47, 53, 31, 53, 53, + 53, 40, 29, 60, 53, 53 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: +#line 143 "deffilep.y" + { def_image_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].vma), 0); } + break; + + case 5: +#line 144 "deffilep.y" + { def_image_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].vma), 1); } + break; + + case 6: +#line 145 "deffilep.y" + { def_description ((yyvsp[(2) - (2)].id));} + break; + + case 7: +#line 146 "deffilep.y" + { def_stacksize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} + break; + + case 8: +#line 147 "deffilep.y" + { def_heapsize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} + break; + + case 9: +#line 148 "deffilep.y" + { def_section ("CODE", (yyvsp[(2) - (2)].number));} + break; + + case 10: +#line 149 "deffilep.y" + { def_section ("DATA", (yyvsp[(2) - (2)].number));} + break; + + case 14: +#line 153 "deffilep.y" + { def_version ((yyvsp[(2) - (2)].number), 0);} + break; + + case 15: +#line 154 "deffilep.y" + { def_version ((yyvsp[(2) - (4)].number), (yyvsp[(4) - (4)].number));} + break; + + case 16: +#line 155 "deffilep.y" + { def_directive ((yyvsp[(2) - (2)].id));} + break; + + case 17: +#line 156 "deffilep.y" + { def_aligncomm ((yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].number));} + break; + + case 21: +#line 171 "deffilep.y" + { def_exports ((yyvsp[(1) - (7)].id), (yyvsp[(2) - (7)].id), (yyvsp[(3) - (7)].number), (yyvsp[(5) - (7)].number), (yyvsp[(7) - (7)].id)); } + break; + + case 22: +#line 177 "deffilep.y" + { (yyval.number) = (yyvsp[(1) - (3)].number) | (yyvsp[(3) - (3)].number); } + break; + + case 23: +#line 178 "deffilep.y" + { (yyval.number) = 0; } + break; + + case 24: +#line 181 "deffilep.y" + { (yyval.number) = 1; } + break; + + case 25: +#line 182 "deffilep.y" + { (yyval.number) = 1; } + break; + + case 26: +#line 183 "deffilep.y" + { (yyval.number) = 2; } + break; + + case 27: +#line 184 "deffilep.y" + { (yyval.number) = 2; } + break; + + case 28: +#line 185 "deffilep.y" + { (yyval.number) = 4; } + break; + + case 29: +#line 186 "deffilep.y" + { (yyval.number) = 4; } + break; + + case 30: +#line 187 "deffilep.y" + { (yyval.number) = 8; } + break; + + case 31: +#line 188 "deffilep.y" + { (yyval.number) = 8; } + break; + + case 34: +#line 197 "deffilep.y" + { def_import ((yyvsp[(1) - (8)].id), (yyvsp[(3) - (8)].id), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].id), -1, (yyvsp[(8) - (8)].id)); } + break; + + case 35: +#line 199 "deffilep.y" + { def_import ((yyvsp[(1) - (8)].id), (yyvsp[(3) - (8)].id), (yyvsp[(5) - (8)].id), 0, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id)); } + break; + + case 36: +#line 201 "deffilep.y" + { def_import ((yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), 0, (yyvsp[(5) - (6)].id), -1, (yyvsp[(6) - (6)].id)); } + break; + + case 37: +#line 203 "deffilep.y" + { def_import ((yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), 0, 0, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); } + break; + + case 38: +#line 205 "deffilep.y" + { def_import( 0, (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].id), -1, (yyvsp[(6) - (6)].id)); } + break; + + case 39: +#line 207 "deffilep.y" + { def_import ( 0, (yyvsp[(1) - (4)].id), 0, (yyvsp[(3) - (4)].id), -1, (yyvsp[(4) - (4)].id)); } + break; + + case 42: +#line 216 "deffilep.y" + { def_section ((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].number));} + break; + + case 43: +#line 217 "deffilep.y" + { def_section_alt ((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].id));} + break; + + case 44: +#line 221 "deffilep.y" + { (yyval.number) = (yyvsp[(1) - (3)].number) | (yyvsp[(3) - (3)].number); } + break; + + case 45: +#line 222 "deffilep.y" + { (yyval.number) = (yyvsp[(1) - (1)].number); } + break; + + case 48: +#line 229 "deffilep.y" + { (yyval.number)=(yyvsp[(2) - (2)].number);} + break; + + case 49: +#line 230 "deffilep.y" + { (yyval.number)=-1;} + break; + + case 50: +#line 234 "deffilep.y" + { (yyval.number) = 1;} + break; + + case 51: +#line 235 "deffilep.y" + { (yyval.number) = 2;} + break; + + case 52: +#line 236 "deffilep.y" + { (yyval.number)=4;} + break; + + case 53: +#line 237 "deffilep.y" + { (yyval.number)=8;} + break; + + case 54: +#line 241 "deffilep.y" + { (yyval.id_const) = "BASE"; } + break; + + case 55: +#line 242 "deffilep.y" + { (yyval.id_const) = "CODE"; } + break; + + case 56: +#line 243 "deffilep.y" + { (yyval.id_const) = "CONSTANT"; } + break; + + case 57: +#line 244 "deffilep.y" + { (yyval.id_const) = "constant"; } + break; + + case 58: +#line 245 "deffilep.y" + { (yyval.id_const) = "DATA"; } + break; + + case 59: +#line 246 "deffilep.y" + { (yyval.id_const) = "data"; } + break; + + case 60: +#line 247 "deffilep.y" + { (yyval.id_const) = "DESCRIPTION"; } + break; + + case 61: +#line 248 "deffilep.y" + { (yyval.id_const) = "DIRECTIVE"; } + break; + + case 62: +#line 249 "deffilep.y" + { (yyval.id_const) = "EXECUTE"; } + break; + + case 63: +#line 250 "deffilep.y" + { (yyval.id_const) = "EXPORTS"; } + break; + + case 64: +#line 251 "deffilep.y" + { (yyval.id_const) = "HEAPSIZE"; } + break; + + case 65: +#line 252 "deffilep.y" + { (yyval.id_const) = "IMPORTS"; } + break; + + case 66: +#line 259 "deffilep.y" + { (yyval.id_const) = "NAME"; } + break; + + case 67: +#line 260 "deffilep.y" + { (yyval.id_const) = "NONAME"; } + break; + + case 68: +#line 261 "deffilep.y" + { (yyval.id_const) = "noname"; } + break; + + case 69: +#line 262 "deffilep.y" + { (yyval.id_const) = "PRIVATE"; } + break; + + case 70: +#line 263 "deffilep.y" + { (yyval.id_const) = "private"; } + break; + + case 71: +#line 264 "deffilep.y" + { (yyval.id_const) = "READ"; } + break; + + case 72: +#line 265 "deffilep.y" + { (yyval.id_const) = "SHARED"; } + break; + + case 73: +#line 266 "deffilep.y" + { (yyval.id_const) = "STACKSIZE"; } + break; + + case 74: +#line 267 "deffilep.y" + { (yyval.id_const) = "VERSION"; } + break; + + case 75: +#line 268 "deffilep.y" + { (yyval.id_const) = "WRITE"; } + break; + + case 76: +#line 271 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 77: +#line 273 "deffilep.y" + { + char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id_const)) + 2); + sprintf (name, ".%s", (yyvsp[(2) - (2)].id_const)); + (yyval.id) = name; + } + break; + + case 78: +#line 279 "deffilep.y" + { + char *name = def_pool_alloc (strlen ((yyvsp[(2) - (2)].id)) + 2); + sprintf (name, ".%s", (yyvsp[(2) - (2)].id)); + (yyval.id) = name; + } + break; + + case 79: +#line 285 "deffilep.y" + { + char *name = def_pool_alloc (strlen ((yyvsp[(1) - (3)].id_const)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id_const), (yyvsp[(3) - (3)].id)); + (yyval.id) = name; + } + break; + + case 80: +#line 291 "deffilep.y" + { + char *name = def_pool_alloc (strlen ((yyvsp[(1) - (3)].id)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + (yyval.id) = name; + } + break; + + case 81: +#line 298 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 82: +#line 299 "deffilep.y" + { (yyval.id) = ""; } + break; + + case 83: +#line 302 "deffilep.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 84: +#line 303 "deffilep.y" + { (yyval.id) = 0; } + break; + + case 85: +#line 307 "deffilep.y" + { (yyval.number) = (yyvsp[(2) - (2)].number);} + break; + + case 86: +#line 308 "deffilep.y" + { (yyval.number) = -1;} + break; + + case 87: +#line 312 "deffilep.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 88: +#line 313 "deffilep.y" + { (yyval.id) = 0; } + break; + + case 89: +#line 316 "deffilep.y" + { (yyval.vma) = (yyvsp[(3) - (3)].vma);} + break; + + case 90: +#line 317 "deffilep.y" + { (yyval.vma) = (bfd_vma) -1;} + break; + + case 91: +#line 320 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 92: +#line 322 "deffilep.y" + { + char *id = def_pool_alloc (strlen ((yyvsp[(2) - (2)].id)) + 2); + sprintf (id, ".%s", (yyvsp[(2) - (2)].id)); + (yyval.id) = id; + } + break; + + case 93: +#line 328 "deffilep.y" + { + char *id = def_pool_alloc (strlen ((yyvsp[(1) - (4)].id)) + 1 + strlen ((yyvsp[(3) - (4)].digits)) + strlen ((yyvsp[(4) - (4)].id)) + 1); + sprintf (id, "%s.%s%s", (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].digits), (yyvsp[(4) - (4)].id)); + (yyval.id) = id; + } + break; + + case 94: +#line 335 "deffilep.y" + { (yyval.digits) = (yyvsp[(1) - (1)].digits); } + break; + + case 95: +#line 336 "deffilep.y" + { (yyval.digits) = ""; } + break; + + case 96: +#line 339 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 97: +#line 340 "deffilep.y" + { (yyval.id) = ""; } + break; + + case 98: +#line 343 "deffilep.y" + { (yyval.number) = strtoul ((yyvsp[(1) - (1)].digits), 0, 0); } + break; + + case 99: +#line 345 "deffilep.y" + { (yyval.vma) = (bfd_vma) strtoull ((yyvsp[(1) - (1)].digits), 0, 0); } + break; + + +/* Line 1267 of yacc.c. */ +#line 2064 "deffilep.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 347 "deffilep.y" + + +/***************************************************************************** + API + *****************************************************************************/ + +static FILE *the_file; +static const char *def_filename; +static int linenumber; +static def_file *def; +static int saw_newline; + +struct directive + { + struct directive *next; + char *name; + int len; + }; + +static struct directive *directives = 0; + +def_file * +def_file_empty (void) +{ + def_file *rv = xmalloc (sizeof (def_file)); + memset (rv, 0, sizeof (def_file)); + rv->is_dll = -1; + rv->base_address = (bfd_vma) -1; + rv->stack_reserve = rv->stack_commit = -1; + rv->heap_reserve = rv->heap_commit = -1; + rv->version_major = rv->version_minor = -1; + return rv; +} + +def_file * +def_file_parse (const char *filename, def_file *add_to) +{ + struct directive *d; + + the_file = fopen (filename, "r"); + def_filename = filename; + linenumber = 1; + if (!the_file) + { + perror (filename); + return 0; + } + if (add_to) + { + def = add_to; + } + else + { + def = def_file_empty (); + } + + saw_newline = 1; + if (def_parse ()) + { + def_file_free (def); + fclose (the_file); + def_pool_free (); + return 0; + } + + fclose (the_file); + + while ((d = directives) != NULL) + { +#if TRACE + printf ("Adding directive %08x `%s'\n", d->name, d->name); +#endif + def_file_add_directive (def, d->name, d->len); + directives = d->next; + free (d->name); + free (d); + } + def_pool_free (); + + return def; +} + +void +def_file_free (def_file *fdef) +{ + int i; + + if (!fdef) + return; + if (fdef->name) + free (fdef->name); + if (fdef->description) + free (fdef->description); + + if (fdef->section_defs) + { + for (i = 0; i < fdef->num_section_defs; i++) + { + if (fdef->section_defs[i].name) + free (fdef->section_defs[i].name); + if (fdef->section_defs[i].class) + free (fdef->section_defs[i].class); + } + free (fdef->section_defs); + } + + if (fdef->exports) + { + for (i = 0; i < fdef->num_exports; i++) + { + if (fdef->exports[i].internal_name + && fdef->exports[i].internal_name != fdef->exports[i].name) + free (fdef->exports[i].internal_name); + if (fdef->exports[i].name) + free (fdef->exports[i].name); + if (fdef->exports[i].its_name) + free (fdef->exports[i].its_name); + } + free (fdef->exports); + } + + if (fdef->imports) + { + for (i = 0; i < fdef->num_imports; i++) + { + if (fdef->imports[i].internal_name + && fdef->imports[i].internal_name != fdef->imports[i].name) + free (fdef->imports[i].internal_name); + if (fdef->imports[i].name) + free (fdef->imports[i].name); + if (fdef->imports[i].its_name) + free (fdef->imports[i].its_name); + } + free (fdef->imports); + } + + while (fdef->modules) + { + def_file_module *m = fdef->modules; + + fdef->modules = fdef->modules->next; + free (m); + } + + while (fdef->aligncomms) + { + def_file_aligncomm *c = fdef->aligncomms; + + fdef->aligncomms = fdef->aligncomms->next; + free (c->symbol_name); + free (c); + } + + free (fdef); +} + +#ifdef DEF_FILE_PRINT +void +def_file_print (FILE *file, def_file *fdef) +{ + int i; + + fprintf (file, ">>>> def_file at 0x%08x\n", fdef); + if (fdef->name) + fprintf (file, " name: %s\n", fdef->name ? fdef->name : "(unspecified)"); + if (fdef->is_dll != -1) + fprintf (file, " is dll: %s\n", fdef->is_dll ? "yes" : "no"); + if (fdef->base_address != (bfd_vma) -1) + { + fprintf (file, " base address: 0x"); + fprintf_vma (file, fdef->base_address); + fprintf (file, "\n"); + } + if (fdef->description) + fprintf (file, " description: `%s'\n", fdef->description); + if (fdef->stack_reserve != -1) + fprintf (file, " stack reserve: 0x%08x\n", fdef->stack_reserve); + if (fdef->stack_commit != -1) + fprintf (file, " stack commit: 0x%08x\n", fdef->stack_commit); + if (fdef->heap_reserve != -1) + fprintf (file, " heap reserve: 0x%08x\n", fdef->heap_reserve); + if (fdef->heap_commit != -1) + fprintf (file, " heap commit: 0x%08x\n", fdef->heap_commit); + + if (fdef->num_section_defs > 0) + { + fprintf (file, " section defs:\n"); + + for (i = 0; i < fdef->num_section_defs; i++) + { + fprintf (file, " name: `%s', class: `%s', flags:", + fdef->section_defs[i].name, fdef->section_defs[i].class); + if (fdef->section_defs[i].flag_read) + fprintf (file, " R"); + if (fdef->section_defs[i].flag_write) + fprintf (file, " W"); + if (fdef->section_defs[i].flag_execute) + fprintf (file, " X"); + if (fdef->section_defs[i].flag_shared) + fprintf (file, " S"); + fprintf (file, "\n"); + } + } + + if (fdef->num_exports > 0) + { + fprintf (file, " exports:\n"); + + for (i = 0; i < fdef->num_exports; i++) + { + fprintf (file, " name: `%s', int: `%s', ordinal: %d, flags:", + fdef->exports[i].name, fdef->exports[i].internal_name, + fdef->exports[i].ordinal); + if (fdef->exports[i].flag_private) + fprintf (file, " P"); + if (fdef->exports[i].flag_constant) + fprintf (file, " C"); + if (fdef->exports[i].flag_noname) + fprintf (file, " N"); + if (fdef->exports[i].flag_data) + fprintf (file, " D"); + fprintf (file, "\n"); + } + } + + if (fdef->num_imports > 0) + { + fprintf (file, " imports:\n"); + + for (i = 0; i < fdef->num_imports; i++) + { + fprintf (file, " int: %s, from: `%s', name: `%s', ordinal: %d\n", + fdef->imports[i].internal_name, + fdef->imports[i].module, + fdef->imports[i].name, + fdef->imports[i].ordinal); + } + } + + if (fdef->version_major != -1) + fprintf (file, " version: %d.%d\n", fdef->version_major, fdef->version_minor); + + fprintf (file, "<<<< def_file at 0x%08x\n", fdef); +} +#endif + +/* Helper routine to check for identity of string pointers, + which might be NULL. */ + +static int +are_names_equal (const char *s1, const char *s2) +{ + if (!s1 && !s2) + return 0; + if (!s1 || !s2) + return (!s1 ? -1 : 1); + return strcmp (s1, s2); +} + +static int +cmp_export_elem (const def_file_export *e, const char *ex_name, + const char *in_name, const char *its_name, + int ord) +{ + int r; + + if ((r = are_names_equal (ex_name, e->name)) != 0) + return r; + if ((r = are_names_equal (in_name, e->internal_name)) != 0) + return r; + if ((r = are_names_equal (its_name, e->its_name)) != 0) + return r; + return (ord - e->ordinal); +} + +/* Search the position of the identical element, or returns the position + of the next higher element. If last valid element is smaller, then MAX + is returned. */ + +static int +find_export_in_list (def_file_export *b, int max, + const char *ex_name, const char *in_name, + const char *its_name, int ord, int *is_ident) +{ + int e, l, r, p; + + *is_ident = 0; + if (!max) + return 0; + if ((e = cmp_export_elem (b, ex_name, in_name, its_name, ord)) <= 0) + { + if (!e) + *is_ident = 1; + return 0; + } + if (max == 1) + return 1; + if ((e = cmp_export_elem (b + (max - 1), ex_name, in_name, its_name, ord)) > 0) + return max; + else if (!e || max == 2) + { + if (!e) + *is_ident = 1; + return max - 1; + } + l = 0; r = max - 1; + while (l < r) + { + p = (l + r) / 2; + e = cmp_export_elem (b + p, ex_name, in_name, its_name, ord); + if (!e) + { + *is_ident = 1; + return p; + } + else if (e < 0) + r = p - 1; + else if (e > 0) + l = p + 1; + } + if ((e = cmp_export_elem (b + l, ex_name, in_name, its_name, ord)) > 0) + ++l; + else if (!e) + *is_ident = 1; + return l; +} + +def_file_export * +def_file_add_export (def_file *fdef, + const char *external_name, + const char *internal_name, + int ordinal, + const char *its_name, + int *is_dup) +{ + def_file_export *e; + int pos; + int max_exports = ROUND_UP(fdef->num_exports, 32); + + if (internal_name && !external_name) + external_name = internal_name; + if (external_name && !internal_name) + internal_name = external_name; + + /* We need to avoid duplicates. */ + *is_dup = 0; + pos = find_export_in_list (fdef->exports, fdef->num_exports, + external_name, internal_name, + its_name, ordinal, is_dup); + + if (*is_dup != 0) + return (fdef->exports + pos); + + if (fdef->num_exports >= max_exports) + { + max_exports = ROUND_UP(fdef->num_exports + 1, 32); + if (fdef->exports) + fdef->exports = xrealloc (fdef->exports, + max_exports * sizeof (def_file_export)); + else + fdef->exports = xmalloc (max_exports * sizeof (def_file_export)); + } + + e = fdef->exports + pos; + if (pos != fdef->num_exports) + memmove (&e[1], e, (sizeof (def_file_export) * (fdef->num_exports - pos))); + memset (e, 0, sizeof (def_file_export)); + e->name = xstrdup (external_name); + e->internal_name = xstrdup (internal_name); + e->its_name = (its_name ? xstrdup (its_name) : NULL); + e->ordinal = ordinal; + fdef->num_exports++; + return e; +} + +def_file_module * +def_get_module (def_file *fdef, const char *name) +{ + def_file_module *s; + + for (s = fdef->modules; s; s = s->next) + if (strcmp (s->name, name) == 0) + return s; + + return NULL; +} + +static def_file_module * +def_stash_module (def_file *fdef, const char *name) +{ + def_file_module *s; + + if ((s = def_get_module (fdef, name)) != NULL) + return s; + s = xmalloc (sizeof (def_file_module) + strlen (name)); + s->next = fdef->modules; + fdef->modules = s; + s->user_data = 0; + strcpy (s->name, name); + return s; +} + +static int +cmp_import_elem (const def_file_import *e, const char *ex_name, + const char *in_name, const char *module, + int ord) +{ + int r; + + if ((r = are_names_equal (module, (e->module ? e->module->name : NULL)))) + return r; + if ((r = are_names_equal (ex_name, e->name)) != 0) + return r; + if ((r = are_names_equal (in_name, e->internal_name)) != 0) + return r; + if (ord != e->ordinal) + return (ord < e->ordinal ? -1 : 1); + return 0; +} + +/* Search the position of the identical element, or returns the position + of the next higher element. If last valid element is smaller, then MAX + is returned. */ + +static int +find_import_in_list (def_file_import *b, int max, + const char *ex_name, const char *in_name, + const char *module, int ord, int *is_ident) +{ + int e, l, r, p; + + *is_ident = 0; + if (!max) + return 0; + if ((e = cmp_import_elem (b, ex_name, in_name, module, ord)) <= 0) + { + if (!e) + *is_ident = 1; + return 0; + } + if (max == 1) + return 1; + if ((e = cmp_import_elem (b + (max - 1), ex_name, in_name, module, ord)) > 0) + return max; + else if (!e || max == 2) + { + if (!e) + *is_ident = 1; + return max - 1; + } + l = 0; r = max - 1; + while (l < r) + { + p = (l + r) / 2; + e = cmp_import_elem (b + p, ex_name, in_name, module, ord); + if (!e) + { + *is_ident = 1; + return p; + } + else if (e < 0) + r = p - 1; + else if (e > 0) + l = p + 1; + } + if ((e = cmp_import_elem (b + l, ex_name, in_name, module, ord)) > 0) + ++l; + else if (!e) + *is_ident = 1; + return l; +} + +def_file_import * +def_file_add_import (def_file *fdef, + const char *name, + const char *module, + int ordinal, + const char *internal_name, + const char *its_name, + int *is_dup) +{ + def_file_import *i; + int pos; + int max_imports = ROUND_UP (fdef->num_imports, 16); + + /* We need to avoid here duplicates. */ + *is_dup = 0; + pos = find_import_in_list (fdef->imports, fdef->num_imports, + name, + (!internal_name ? name : internal_name), + module, ordinal, is_dup); + if (*is_dup != 0) + return fdef->imports + pos; + + if (fdef->num_imports >= max_imports) + { + max_imports = ROUND_UP (fdef->num_imports+1, 16); + + if (fdef->imports) + fdef->imports = xrealloc (fdef->imports, + max_imports * sizeof (def_file_import)); + else + fdef->imports = xmalloc (max_imports * sizeof (def_file_import)); + } + i = fdef->imports + pos; + if (pos != fdef->num_imports) + memmove (&i[1], i, (sizeof (def_file_import) * (fdef->num_imports - pos))); + memset (i, 0, sizeof (def_file_import)); + if (name) + i->name = xstrdup (name); + if (module) + i->module = def_stash_module (fdef, module); + i->ordinal = ordinal; + if (internal_name) + i->internal_name = xstrdup (internal_name); + else + i->internal_name = i->name; + i->its_name = (its_name ? xstrdup (its_name) : NULL); + fdef->num_imports++; + + return i; +} + +struct +{ + char *param; + int token; +} +diropts[] = +{ + { "-heap", HEAPSIZE }, + { "-stack", STACKSIZE_K }, + { "-attr", SECTIONS }, + { "-export", EXPORTS }, + { "-aligncomm", ALIGNCOMM }, + { 0, 0 } +}; + +void +def_file_add_directive (def_file *my_def, const char *param, int len) +{ + def_file *save_def = def; + const char *pend = param + len; + char * tend = (char *) param; + int i; + + def = my_def; + + while (param < pend) + { + while (param < pend + && (ISSPACE (*param) || *param == '\n' || *param == 0)) + param++; + + if (param == pend) + break; + + /* Scan forward until we encounter any of: + - the end of the buffer + - the start of a new option + - a newline seperating options + - a NUL seperating options. */ + for (tend = (char *) (param + 1); + (tend < pend + && !(ISSPACE (tend[-1]) && *tend == '-') + && *tend != '\n' && *tend != 0); + tend++) + ; + + for (i = 0; diropts[i].param; i++) + { + len = strlen (diropts[i].param); + + if (tend - param >= len + && strncmp (param, diropts[i].param, len) == 0 + && (param[len] == ':' || param[len] == ' ')) + { + lex_parse_string_end = tend; + lex_parse_string = param + len + 1; + lex_forced_token = diropts[i].token; + saw_newline = 0; + if (def_parse ()) + continue; + break; + } + } + + if (!diropts[i].param) + { + if (tend < pend) + { + char saved; + + saved = * tend; + * tend = 0; + /* xgettext:c-format */ + einfo (_("Warning: .drectve `%s' unrecognized\n"), param); + * tend = saved; + } + else + { + einfo (_("Warning: corrupt .drectve at end of def file\n")); + } + } + + lex_parse_string = 0; + param = tend; + } + + def = save_def; + def_pool_free (); +} + +/* Parser Callbacks. */ + +static void +def_image_name (const char *name, bfd_vma base, int is_dll) +{ + /* If a LIBRARY or NAME statement is specified without a name, there is nothing + to do here. We retain the output filename specified on command line. */ + if (*name) + { + const char* image_name = lbasename (name); + + if (image_name != name) + einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n", + def_filename, linenumber, is_dll ? "LIBRARY" : "NAME", + name); + if (def->name) + free (def->name); + /* Append the default suffix, if none specified. */ + if (strchr (image_name, '.') == 0) + { + const char * suffix = is_dll ? ".dll" : ".exe"; + + def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1); + sprintf (def->name, "%s%s", image_name, suffix); + } + else + def->name = xstrdup (image_name); + } + + /* Honor a BASE address statement, even if LIBRARY string is empty. */ + def->base_address = base; + def->is_dll = is_dll; +} + +static void +def_description (const char *text) +{ + int len = def->description ? strlen (def->description) : 0; + + len += strlen (text) + 1; + if (def->description) + { + def->description = xrealloc (def->description, len); + strcat (def->description, text); + } + else + { + def->description = xmalloc (len); + strcpy (def->description, text); + } +} + +static void +def_stacksize (int reserve, int commit) +{ + def->stack_reserve = reserve; + def->stack_commit = commit; +} + +static void +def_heapsize (int reserve, int commit) +{ + def->heap_reserve = reserve; + def->heap_commit = commit; +} + +static void +def_section (const char *name, int attr) +{ + def_file_section *s; + int max_sections = ROUND_UP (def->num_section_defs, 4); + + if (def->num_section_defs >= max_sections) + { + max_sections = ROUND_UP (def->num_section_defs+1, 4); + + if (def->section_defs) + def->section_defs = xrealloc (def->section_defs, + max_sections * sizeof (def_file_import)); + else + def->section_defs = xmalloc (max_sections * sizeof (def_file_import)); + } + s = def->section_defs + def->num_section_defs; + memset (s, 0, sizeof (def_file_section)); + s->name = xstrdup (name); + if (attr & 1) + s->flag_read = 1; + if (attr & 2) + s->flag_write = 1; + if (attr & 4) + s->flag_execute = 1; + if (attr & 8) + s->flag_shared = 1; + + def->num_section_defs++; +} + +static void +def_section_alt (const char *name, const char *attr) +{ + int aval = 0; + + for (; *attr; attr++) + { + switch (*attr) + { + case 'R': + case 'r': + aval |= 1; + break; + case 'W': + case 'w': + aval |= 2; + break; + case 'X': + case 'x': + aval |= 4; + break; + case 'S': + case 's': + aval |= 8; + break; + } + } + def_section (name, aval); +} + +static void +def_exports (const char *external_name, + const char *internal_name, + int ordinal, + int flags, + const char *its_name) +{ + def_file_export *dfe; + int is_dup = 0; + + if (!internal_name && external_name) + internal_name = external_name; +#if TRACE + printf ("def_exports, ext=%s int=%s\n", external_name, internal_name); +#endif + + dfe = def_file_add_export (def, external_name, internal_name, ordinal, + its_name, &is_dup); + + /* We might check here for flag redefinition and warn. For now we + ignore duplicates silently. */ + if (is_dup) + return; + + if (flags & 1) + dfe->flag_noname = 1; + if (flags & 2) + dfe->flag_constant = 1; + if (flags & 4) + dfe->flag_data = 1; + if (flags & 8) + dfe->flag_private = 1; +} + +static void +def_import (const char *internal_name, + const char *module, + const char *dllext, + const char *name, + int ordinal, + const char *its_name) +{ + char *buf = 0; + const char *ext = dllext ? dllext : "dll"; + int is_dup = 0; + + buf = xmalloc (strlen (module) + strlen (ext) + 2); + sprintf (buf, "%s.%s", module, ext); + module = buf; + + def_file_add_import (def, name, module, ordinal, internal_name, its_name, + &is_dup); + free (buf); +} + +static void +def_version (int major, int minor) +{ + def->version_major = major; + def->version_minor = minor; +} + +static void +def_directive (char *str) +{ + struct directive *d = xmalloc (sizeof (struct directive)); + + d->next = directives; + directives = d; + d->name = xstrdup (str); + d->len = strlen (str); +} + +static void +def_aligncomm (char *str, int align) +{ + def_file_aligncomm *c, *p; + + p = NULL; + c = def->aligncomms; + while (c != NULL) + { + int e = strcmp (c->symbol_name, str); + if (!e) + { + /* Not sure if we want to allow here duplicates with + different alignments, but for now we keep them. */ + e = (int) c->alignment - align; + if (!e) + return; + } + if (e > 0) + break; + c = (p = c)->next; + } + + c = xmalloc (sizeof (def_file_aligncomm)); + c->symbol_name = xstrdup (str); + c->alignment = (unsigned int) align; + if (!p) + { + c->next = def->aligncomms; + def->aligncomms = c; + } + else + { + c->next = p->next; + p->next = c; + } +} + +static int +def_error (const char *err) +{ + einfo ("%P: %s:%d: %s\n", + def_filename ? def_filename : "", linenumber, err); + return 0; +} + + +/* Lexical Scanner. */ + +#undef TRACE +#define TRACE 0 + +/* Never freed, but always reused as needed, so no real leak. */ +static char *buffer = 0; +static int buflen = 0; +static int bufptr = 0; + +static void +put_buf (char c) +{ + if (bufptr == buflen) + { + buflen += 50; /* overly reasonable, eh? */ + if (buffer) + buffer = xrealloc (buffer, buflen + 1); + else + buffer = xmalloc (buflen + 1); + } + buffer[bufptr++] = c; + buffer[bufptr] = 0; /* not optimal, but very convenient. */ +} + +static struct +{ + char *name; + int token; +} +tokens[] = +{ + { "BASE", BASE }, + { "CODE", CODE }, + { "CONSTANT", CONSTANTU }, + { "constant", CONSTANTL }, + { "DATA", DATAU }, + { "data", DATAL }, + { "DESCRIPTION", DESCRIPTION }, + { "DIRECTIVE", DIRECTIVE }, + { "EXECUTE", EXECUTE }, + { "EXPORTS", EXPORTS }, + { "HEAPSIZE", HEAPSIZE }, + { "IMPORTS", IMPORTS }, + { "LIBRARY", LIBRARY }, + { "NAME", NAME }, + { "NONAME", NONAMEU }, + { "noname", NONAMEL }, + { "PRIVATE", PRIVATEU }, + { "private", PRIVATEL }, + { "READ", READ }, + { "SECTIONS", SECTIONS }, + { "SEGMENTS", SECTIONS }, + { "SHARED", SHARED }, + { "STACKSIZE", STACKSIZE_K }, + { "VERSION", VERSIONK }, + { "WRITE", WRITE }, + { 0, 0 } +}; + +static int +def_getc (void) +{ + int rv; + + if (lex_parse_string) + { + if (lex_parse_string >= lex_parse_string_end) + rv = EOF; + else + rv = *lex_parse_string++; + } + else + { + rv = fgetc (the_file); + } + if (rv == '\n') + saw_newline = 1; + return rv; +} + +static int +def_ungetc (int c) +{ + if (lex_parse_string) + { + lex_parse_string--; + return c; + } + else + return ungetc (c, the_file); +} + +static int +def_lex (void) +{ + int c, i, q; + + if (lex_forced_token) + { + i = lex_forced_token; + lex_forced_token = 0; +#if TRACE + printf ("lex: forcing token %d\n", i); +#endif + return i; + } + + c = def_getc (); + + /* Trim leading whitespace. */ + while (c != EOF && (c == ' ' || c == '\t') && saw_newline) + c = def_getc (); + + if (c == EOF) + { +#if TRACE + printf ("lex: EOF\n"); +#endif + return 0; + } + + if (saw_newline && c == ';') + { + do + { + c = def_getc (); + } + while (c != EOF && c != '\n'); + if (c == '\n') + return def_lex (); + return 0; + } + + /* Must be something else. */ + saw_newline = 0; + + if (ISDIGIT (c)) + { + bufptr = 0; + while (c != EOF && (ISXDIGIT (c) || (c == 'x'))) + { + put_buf (c); + c = def_getc (); + } + if (c != EOF) + def_ungetc (c); + yylval.digits = def_pool_strdup (buffer); +#if TRACE + printf ("lex: `%s' returns DIGITS\n", buffer); +#endif + return DIGITS; + } + + if (ISALPHA (c) || strchr ("$:-_?@", c)) + { + bufptr = 0; + q = c; + put_buf (c); + c = def_getc (); + + if (q == '@') + { + if (ISBLANK (c) ) /* '@' followed by whitespace. */ + return (q); + else if (ISDIGIT (c)) /* '@' followed by digit. */ + { + def_ungetc (c); + return (q); + } +#if TRACE + printf ("lex: @ returns itself\n"); +#endif + } + + while (c != EOF && (ISALNUM (c) || strchr ("$:-_?/@<>", c))) + { + put_buf (c); + c = def_getc (); + } + if (c != EOF) + def_ungetc (c); + if (ISALPHA (q)) /* Check for tokens. */ + { + for (i = 0; tokens[i].name; i++) + if (strcmp (tokens[i].name, buffer) == 0) + { +#if TRACE + printf ("lex: `%s' is a string token\n", buffer); +#endif + return tokens[i].token; + } + } +#if TRACE + printf ("lex: `%s' returns ID\n", buffer); +#endif + yylval.id = def_pool_strdup (buffer); + return ID; + } + + if (c == '\'' || c == '"') + { + q = c; + c = def_getc (); + bufptr = 0; + + while (c != EOF && c != q) + { + put_buf (c); + c = def_getc (); + } + yylval.id = def_pool_strdup (buffer); +#if TRACE + printf ("lex: `%s' returns ID\n", buffer); +#endif + return ID; + } + + if ( c == '=') + { + c = def_getc (); + if (c == '=') + { +#if TRACE + printf ("lex: `==' returns EQUAL\n"); +#endif + return EQUAL; + } + def_ungetc (c); +#if TRACE + printf ("lex: `=' returns itself\n"); +#endif + return '='; + } + if (c == '.' || c == ',') + { +#if TRACE + printf ("lex: `%c' returns itself\n", c); +#endif + return c; + } + + if (c == '\n') + { + linenumber++; + saw_newline = 1; + } + + /*printf ("lex: 0x%02x ignored\n", c); */ + return def_lex (); +} + +static char * +def_pool_alloc (size_t sz) +{ + def_pool_str *e; + + e = (def_pool_str *) xmalloc (sizeof (def_pool_str) + sz); + e->next = pool_strs; + pool_strs = e; + return e->data; +} + +static char * +def_pool_strdup (const char *str) +{ + char *s; + size_t len; + if (!str) + return NULL; + len = strlen (str) + 1; + s = def_pool_alloc (len); + memcpy (s, str, len); + return s; +} + +static void +def_pool_free (void) +{ + def_pool_str *p; + while ((p = pool_strs) != NULL) + { + pool_strs = p->next; + free (p); + } +} + diff --git a/ld/deffilep.h b/ld/deffilep.h new file mode 100644 index 00000000000..e2bebf7d21d --- /dev/null +++ b/ld/deffilep.h @@ -0,0 +1,124 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NAME = 258, + LIBRARY = 259, + DESCRIPTION = 260, + STACKSIZE_K = 261, + HEAPSIZE = 262, + CODE = 263, + DATAU = 264, + DATAL = 265, + SECTIONS = 266, + EXPORTS = 267, + IMPORTS = 268, + VERSIONK = 269, + BASE = 270, + CONSTANTU = 271, + CONSTANTL = 272, + PRIVATEU = 273, + PRIVATEL = 274, + ALIGNCOMM = 275, + READ = 276, + WRITE = 277, + EXECUTE = 278, + SHARED = 279, + NONAMEU = 280, + NONAMEL = 281, + DIRECTIVE = 282, + EQUAL = 283, + ID = 284, + DIGITS = 285 + }; +#endif +/* Tokens. */ +#define NAME 258 +#define LIBRARY 259 +#define DESCRIPTION 260 +#define STACKSIZE_K 261 +#define HEAPSIZE 262 +#define CODE 263 +#define DATAU 264 +#define DATAL 265 +#define SECTIONS 266 +#define EXPORTS 267 +#define IMPORTS 268 +#define VERSIONK 269 +#define BASE 270 +#define CONSTANTU 271 +#define CONSTANTL 272 +#define PRIVATEU 273 +#define PRIVATEL 274 +#define ALIGNCOMM 275 +#define READ 276 +#define WRITE 277 +#define EXECUTE 278 +#define SHARED 279 +#define NONAMEU 280 +#define NONAMEL 281 +#define DIRECTIVE 282 +#define EQUAL 283 +#define ID 284 +#define DIGITS 285 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 113 "deffilep.y" +{ + char *id; + const char *id_const; + int number; + bfd_vma vma; + char *digits; +} +/* Line 1529 of yacc.c. */ +#line 117 "deffilep.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/ld/ld.1 b/ld/ld.1 new file mode 100644 index 00000000000..db35fb45ce1 --- /dev/null +++ b/ld/ld.1 @@ -0,0 +1,2545 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "LD 1" +.TH LD 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ld \- The GNU linker +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +ld [\fBoptions\fR] \fIobjfile\fR ... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBld\fR combines a number of object and archive files, relocates +their data and ties up symbol references. Usually the last step in +compiling a program is to run \fBld\fR. +.PP +\&\fBld\fR accepts Linker Command Language files written in +a superset of \s-1AT&T\s0's Link Editor Command Language syntax, +to provide explicit and total control over the linking process. +.PP +This man page does not describe the command language; see the +\&\fBld\fR entry in \f(CW\*(C`info\*(C'\fR for full details on the command +language and on other aspects of the \s-1GNU\s0 linker. +.PP +This version of \fBld\fR uses the general purpose \s-1BFD\s0 libraries +to operate on object files. This allows \fBld\fR to read, combine, and +write object files in many different formats\-\-\-for example, \s-1COFF\s0 or +\&\f(CW\*(C`a.out\*(C'\fR. Different formats may be linked together to produce any +available kind of object file. +.PP +Aside from its flexibility, the \s-1GNU\s0 linker is more helpful than other +linkers in providing diagnostic information. Many linkers abandon +execution immediately upon encountering an error; whenever possible, +\&\fBld\fR continues executing, allowing you to identify other errors +(or, in some cases, to get an output file in spite of the error). +.PP +The \s-1GNU\s0 linker \fBld\fR is meant to cover a broad range of situations, +and to be as compatible as possible with other linkers. As a result, +you have many choices to control its behavior. +.SH "OPTIONS" +.IX Header "OPTIONS" +The linker supports a plethora of command-line options, but in actual +practice few of them are used in any particular context. +For instance, a frequent use of \fBld\fR is to link standard Unix +object files on a standard, supported Unix system. On such a system, to +link a file \f(CW\*(C`hello.o\*(C'\fR: +.PP +.Vb 1 +\& ld \-o /lib/crt0.o hello.o \-lc +.Ve +.PP +This tells \fBld\fR to produce a file called \fIoutput\fR as the +result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and +the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search +directories. (See the discussion of the \fB\-l\fR option below.) +.PP +Some of the command-line options to \fBld\fR may be specified at any +point in the command line. However, options which refer to files, such +as \fB\-l\fR or \fB\-T\fR, cause the file to be read at the point at +which the option appears in the command line, relative to the object +files and other file options. Repeating non-file options with a +different argument will either have no further effect, or override prior +occurrences (those further to the left on the command line) of that +option. Options which may be meaningfully specified more than once are +noted in the descriptions below. +.PP +Non-option arguments are object files or archives which are to be linked +together. They may follow, precede, or be mixed in with command-line +options, except that an object file argument may not be placed between +an option and its argument. +.PP +Usually the linker is invoked with at least one object file, but you can +specify other forms of binary input files using \fB\-l\fR, \fB\-R\fR, +and the script command language. If \fIno\fR binary input files at all +are specified, the linker does not produce any output, and issues the +message \fBNo input files\fR. +.PP +If the linker cannot recognize the format of an object file, it will +assume that it is a linker script. A script specified in this way +augments the main linker script used for the link (either the default +linker script or the one specified by using \fB\-T\fR). This feature +permits the linker to link against a file which appears to be an object +or an archive, but actually merely defines some symbol values, or uses +\&\f(CW\*(C`INPUT\*(C'\fR or \f(CW\*(C`GROUP\*(C'\fR to load other objects. Specifying a +script in this way merely augments the main linker script, with the +extra commands placed after the main script; use the \fB\-T\fR option +to replace the default linker script entirely, but note the effect of +the \f(CW\*(C`INSERT\*(C'\fR command. +.PP +For options whose names are a single letter, +option arguments must either follow the option letter without intervening +whitespace, or be given as separate arguments immediately following the +option that requires them. +.PP +For options whose names are multiple letters, either one dash or two can +precede the option name; for example, \fB\-trace\-symbol\fR and +\&\fB\-\-trace\-symbol\fR are equivalent. Note\-\-\-there is one exception to +this rule. Multiple letter options that start with a lower case 'o' can +only be preceded by two dashes. This is to reduce confusion with the +\&\fB\-o\fR option. So for example \fB\-omagic\fR sets the output file +name to \fBmagic\fR whereas \fB\-\-omagic\fR sets the \s-1NMAGIC\s0 flag on the +output. +.PP +Arguments to multiple-letter options must either be separated from the +option name by an equals sign, or be given as separate arguments +immediately following the option that requires them. For example, +\&\fB\-\-trace\-symbol foo\fR and \fB\-\-trace\-symbol=foo\fR are equivalent. +Unique abbreviations of the names of multiple-letter options are +accepted. +.PP +Note\-\-\-if the linker is being invoked indirectly, via a compiler driver +(e.g. \fBgcc\fR) then all the linker command line options should be +prefixed by \fB\-Wl,\fR (or whatever is appropriate for the particular +compiler driver) like this: +.PP +.Vb 1 +\& gcc \-Wl,\-\-start\-group foo.o bar.o \-Wl,\-\-end\-group +.Ve +.PP +This is important, because otherwise the compiler driver program may +silently drop the linker options, resulting in a bad link. Confusion +may also arise when passing options that require values through a +driver, as the use of a space between option and argument acts as +a separator, and causes the driver to pass only the option to the linker +and the argument to the compiler. In this case, it is simplest to use +the joined forms of both single\- and multiple-letter options, such as: +.PP +.Vb 1 +\& gcc foo.o bar.o \-Wl,\-eENTRY \-Wl,\-Map=a.map +.Ve +.PP +Here is a table of the generic command line switches accepted by the \s-1GNU\s0 +linker: +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.IP "\fB\-a\fR \fIkeyword\fR" 4 +.IX Item "-a keyword" +This option is supported for \s-1HP/UX\s0 compatibility. The \fIkeyword\fR +argument must be one of the strings \fBarchive\fR, \fBshared\fR, or +\&\fBdefault\fR. \fB\-aarchive\fR is functionally equivalent to +\&\fB\-Bstatic\fR, and the other two keywords are functionally equivalent +to \fB\-Bdynamic\fR. This option may be used any number of times. +.IP "\fB\-\-audit\fR \fI\s-1AUDITLIB\s0\fR" 4 +.IX Item "--audit AUDITLIB" +Adds \fI\s-1AUDITLIB\s0\fR to the \f(CW\*(C`DT_AUDIT\*(C'\fR entry of the dynamic section. +\&\fI\s-1AUDITLIB\s0\fR is not checked for existence, nor will it use the \s-1DT_SONAME\s0 +specified in the library. If specified multiple times \f(CW\*(C`DT_AUDIT\*(C'\fR +will contain a colon separated list of audit interfaces to use. If the linker +finds an object with an audit entry while searching for shared libraries, +it will add a corresponding \f(CW\*(C`DT_DEPAUDIT\*(C'\fR entry in the output file. +This option is only meaningful on \s-1ELF\s0 platforms supporting the rtld-audit +interface. +.IP "\fB\-A\fR \fIarchitecture\fR" 4 +.IX Item "-A architecture" +.PD 0 +.IP "\fB\-\-architecture=\fR\fIarchitecture\fR" 4 +.IX Item "--architecture=architecture" +.PD +In the current release of \fBld\fR, this option is useful only for the +Intel 960 family of architectures. In that \fBld\fR configuration, the +\&\fIarchitecture\fR argument identifies the particular architecture in +the 960 family, enabling some safeguards and modifying the +archive-library search path. +.Sp +Future releases of \fBld\fR may support similar functionality for +other architecture families. +.IP "\fB\-b\fR \fIinput-format\fR" 4 +.IX Item "-b input-format" +.PD 0 +.IP "\fB\-\-format=\fR\fIinput-format\fR" 4 +.IX Item "--format=input-format" +.PD +\&\fBld\fR may be configured to support more than one kind of object +file. If your \fBld\fR is configured this way, you can use the +\&\fB\-b\fR option to specify the binary format for input object files +that follow this option on the command line. Even when \fBld\fR is +configured to support alternative object formats, you don't usually need +to specify this, as \fBld\fR should be configured to expect as a +default input format the most usual format on each machine. +\&\fIinput-format\fR is a text string, the name of a particular format +supported by the \s-1BFD\s0 libraries. (You can list the available binary +formats with \fBobjdump \-i\fR.) +.Sp +You may want to use this option if you are linking files with an unusual +binary format. You can also use \fB\-b\fR to switch formats explicitly (when +linking object files of different formats), by including +\&\fB\-b\fR \fIinput-format\fR before each group of object files in a +particular format. +.Sp +The default format is taken from the environment variable +\&\f(CW\*(C`GNUTARGET\*(C'\fR. +.Sp +You can also define the input format from a script, using the command +\&\f(CW\*(C`TARGET\*(C'\fR; +.IP "\fB\-c\fR \fIMRI-commandfile\fR" 4 +.IX Item "-c MRI-commandfile" +.PD 0 +.IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4 +.IX Item "--mri-script=MRI-commandfile" +.PD +For compatibility with linkers produced by \s-1MRI, \s0\fBld\fR accepts script +files written in an alternate, restricted command language, described in +the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation. +Introduce \s-1MRI\s0 script files with +the option \fB\-c\fR; use the \fB\-T\fR option to run linker +scripts written in the general-purpose \fBld\fR scripting language. +If \fIMRI-cmdfile\fR does not exist, \fBld\fR looks for it in the directories +specified by any \fB\-L\fR options. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-dc\fR" 4 +.IX Item "-dc" +.IP "\fB\-dp\fR" 4 +.IX Item "-dp" +.PD +These three options are equivalent; multiple forms are supported for +compatibility with other linkers. They assign space to common symbols +even if a relocatable output file is specified (with \fB\-r\fR). The +script command \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR has the same effect. +.IP "\fB\-\-depaudit\fR \fI\s-1AUDITLIB\s0\fR" 4 +.IX Item "--depaudit AUDITLIB" +.PD 0 +.IP "\fB\-P\fR \fI\s-1AUDITLIB\s0\fR" 4 +.IX Item "-P AUDITLIB" +.PD +Adds \fI\s-1AUDITLIB\s0\fR to the \f(CW\*(C`DT_DEPAUDIT\*(C'\fR entry of the dynamic section. +\&\fI\s-1AUDITLIB\s0\fR is not checked for existence, nor will it use the \s-1DT_SONAME\s0 +specified in the library. If specified multiple times \f(CW\*(C`DT_DEPAUDIT\*(C'\fR +will contain a colon separated list of audit interfaces to use. This +option is only meaningful on \s-1ELF\s0 platforms supporting the rtld-audit interface. +The \-P option is provided for Solaris compatibility. +.IP "\fB\-e\fR \fIentry\fR" 4 +.IX Item "-e entry" +.PD 0 +.IP "\fB\-\-entry=\fR\fIentry\fR" 4 +.IX Item "--entry=entry" +.PD +Use \fIentry\fR as the explicit symbol for beginning execution of your +program, rather than the default entry point. If there is no symbol +named \fIentry\fR, the linker will try to parse \fIentry\fR as a number, +and use that as the entry address (the number will be interpreted in +base 10; you may use a leading \fB0x\fR for base 16, or a leading +\&\fB0\fR for base 8). +.IP "\fB\-\-exclude\-libs\fR \fIlib\fR\fB,\fR\fIlib\fR\fB,...\fR" 4 +.IX Item "--exclude-libs lib,lib,..." +Specifies a list of archive libraries from which symbols should not be automatically +exported. The library names may be delimited by commas or colons. Specifying +\&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR excludes symbols in all archive libraries from +automatic export. This option is available only for the i386 \s-1PE\s0 targeted +port of the linker and for \s-1ELF\s0 targeted ports. For i386 \s-1PE,\s0 symbols +explicitly listed in a .def file are still exported, regardless of this +option. For \s-1ELF\s0 targeted ports, symbols affected by this option will +be treated as hidden. +.IP "\fB\-\-exclude\-modules\-for\-implib\fR \fImodule\fR\fB,\fR\fImodule\fR\fB,...\fR" 4 +.IX Item "--exclude-modules-for-implib module,module,..." +Specifies a list of object files or archive members, from which symbols +should not be automatically exported, but which should be copied wholesale +into the import library being generated during the link. The module names +may be delimited by commas or colons, and must match exactly the filenames +used by \fBld\fR to open the files; for archive members, this is simply +the member name, but for object files the name listed must include and +match precisely any path used to specify the input file on the linker's +command-line. This option is available only for the i386 \s-1PE\s0 targeted port +of the linker. Symbols explicitly listed in a .def file are still exported, +regardless of this option. +.IP "\fB\-E\fR" 4 +.IX Item "-E" +.PD 0 +.IP "\fB\-\-export\-dynamic\fR" 4 +.IX Item "--export-dynamic" +.IP "\fB\-\-no\-export\-dynamic\fR" 4 +.IX Item "--no-export-dynamic" +.PD +When creating a dynamically linked executable, using the \fB\-E\fR +option or the \fB\-\-export\-dynamic\fR option causes the linker to add +all symbols to the dynamic symbol table. The dynamic symbol table is the +set of symbols which are visible from dynamic objects at run time. +.Sp +If you do not use either of these options (or use the +\&\fB\-\-no\-export\-dynamic\fR option to restore the default behavior), the +dynamic symbol table will normally contain only those symbols which are +referenced by some dynamic object mentioned in the link. +.Sp +If you use \f(CW\*(C`dlopen\*(C'\fR to load a dynamic object which needs to refer +back to the symbols defined by the program, rather than some other +dynamic object, then you will probably need to use this option when +linking the program itself. +.Sp +You can also use the dynamic list to control what symbols should +be added to the dynamic symbol table if the output format supports it. +See the description of \fB\-\-dynamic\-list\fR. +.Sp +Note that this option is specific to \s-1ELF\s0 targeted ports. \s-1PE\s0 targets +support a similar function to export all symbols from a \s-1DLL\s0 or \s-1EXE\s0; see +the description of \fB\-\-export\-all\-symbols\fR below. +.IP "\fB\-EB\fR" 4 +.IX Item "-EB" +Link big-endian objects. This affects the default output format. +.IP "\fB\-EL\fR" 4 +.IX Item "-EL" +Link little-endian objects. This affects the default output format. +.IP "\fB\-f\fR \fIname\fR" 4 +.IX Item "-f name" +.PD 0 +.IP "\fB\-\-auxiliary=\fR\fIname\fR" 4 +.IX Item "--auxiliary=name" +.PD +When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_AUXILIARY\s0 field +to the specified name. This tells the dynamic linker that the symbol +table of the shared object should be used as an auxiliary filter on the +symbol table of the shared object \fIname\fR. +.Sp +If you later link a program against this filter object, then, when you +run the program, the dynamic linker will see the \s-1DT_AUXILIARY\s0 field. If +the dynamic linker resolves any symbols from the filter object, it will +first check whether there is a definition in the shared object +\&\fIname\fR. If there is one, it will be used instead of the definition +in the filter object. The shared object \fIname\fR need not exist. +Thus the shared object \fIname\fR may be used to provide an alternative +implementation of certain functions, perhaps for debugging or for +machine specific performance. +.Sp +This option may be specified more than once. The \s-1DT_AUXILIARY\s0 entries +will be created in the order in which they appear on the command line. +.IP "\fB\-F\fR \fIname\fR" 4 +.IX Item "-F name" +.PD 0 +.IP "\fB\-\-filter=\fR\fIname\fR" 4 +.IX Item "--filter=name" +.PD +When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_FILTER\s0 field to +the specified name. This tells the dynamic linker that the symbol table +of the shared object which is being created should be used as a filter +on the symbol table of the shared object \fIname\fR. +.Sp +If you later link a program against this filter object, then, when you +run the program, the dynamic linker will see the \s-1DT_FILTER\s0 field. The +dynamic linker will resolve symbols according to the symbol table of the +filter object as usual, but it will actually link to the definitions +found in the shared object \fIname\fR. Thus the filter object can be +used to select a subset of the symbols provided by the object +\&\fIname\fR. +.Sp +Some older linkers used the \fB\-F\fR option throughout a compilation +toolchain for specifying object-file format for both input and output +object files. +The \s-1GNU\s0 linker uses other mechanisms for this purpose: the +\&\fB\-b\fR, \fB\-\-format\fR, \fB\-\-oformat\fR options, the +\&\f(CW\*(C`TARGET\*(C'\fR command in linker scripts, and the \f(CW\*(C`GNUTARGET\*(C'\fR +environment variable. +The \s-1GNU\s0 linker will ignore the \fB\-F\fR option when not +creating an \s-1ELF\s0 shared object. +.IP "\fB\-fini=\fR\fIname\fR" 4 +.IX Item "-fini=name" +When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the +executable or shared object is unloaded, by setting \s-1DT_FINI\s0 to the +address of the function. By default, the linker uses \f(CW\*(C`_fini\*(C'\fR as +the function to call. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +Ignored. Provided for compatibility with other tools. +.IP "\fB\-G\fR \fIvalue\fR" 4 +.IX Item "-G value" +.PD 0 +.IP "\fB\-\-gpsize=\fR\fIvalue\fR" 4 +.IX Item "--gpsize=value" +.PD +Set the maximum size of objects to be optimized using the \s-1GP\s0 register to +\&\fIsize\fR. This is only meaningful for object file formats such as +\&\s-1MIPS ELF\s0 that support putting large and small objects into different +sections. This is ignored for other object file formats. +.IP "\fB\-h\fR \fIname\fR" 4 +.IX Item "-h name" +.PD 0 +.IP "\fB\-soname=\fR\fIname\fR" 4 +.IX Item "-soname=name" +.PD +When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_SONAME\s0 field to +the specified name. When an executable is linked with a shared object +which has a \s-1DT_SONAME\s0 field, then when the executable is run the dynamic +linker will attempt to load the shared object specified by the \s-1DT_SONAME\s0 +field rather than the using the file name given to the linker. +.IP "\fB\-i\fR" 4 +.IX Item "-i" +Perform an incremental link (same as option \fB\-r\fR). +.IP "\fB\-init=\fR\fIname\fR" 4 +.IX Item "-init=name" +When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the +executable or shared object is loaded, by setting \s-1DT_INIT\s0 to the address +of the function. By default, the linker uses \f(CW\*(C`_init\*(C'\fR as the +function to call. +.IP "\fB\-l\fR \fInamespec\fR" 4 +.IX Item "-l namespec" +.PD 0 +.IP "\fB\-\-library=\fR\fInamespec\fR" 4 +.IX Item "--library=namespec" +.PD +Add the archive or object file specified by \fInamespec\fR to the +list of files to link. This option may be used any number of times. +If \fInamespec\fR is of the form \fI:\fIfilename\fI\fR, \fBld\fR +will search the library path for a file called \fIfilename\fR, otherwise it +will search the library path for a file called \fIlib\fInamespec\fI.a\fR. +.Sp +On systems which support shared libraries, \fBld\fR may also search for +files other than \fIlib\fInamespec\fI.a\fR. Specifically, on \s-1ELF\s0 +and SunOS systems, \fBld\fR will search a directory for a library +called \fIlib\fInamespec\fI.so\fR before searching for one called +\&\fIlib\fInamespec\fI.a\fR. (By convention, a \f(CW\*(C`.so\*(C'\fR extension +indicates a shared library.) Note that this behavior does not apply +to \fI:\fIfilename\fI\fR, which always specifies a file called +\&\fIfilename\fR. +.Sp +The linker will search an archive only once, at the location where it is +specified on the command line. If the archive defines a symbol which +was undefined in some object which appeared before the archive on the +command line, the linker will include the appropriate file(s) from the +archive. However, an undefined symbol in an object appearing later on +the command line will not cause the linker to search the archive again. +.Sp +See the \fB\-(\fR option for a way to force the linker to search +archives multiple times. +.Sp +You may list the same archive multiple times on the command line. +.Sp +This type of archive searching is standard for Unix linkers. However, +if you are using \fBld\fR on \s-1AIX,\s0 note that it is different from the +behaviour of the \s-1AIX\s0 linker. +.IP "\fB\-L\fR \fIsearchdir\fR" 4 +.IX Item "-L searchdir" +.PD 0 +.IP "\fB\-\-library\-path=\fR\fIsearchdir\fR" 4 +.IX Item "--library-path=searchdir" +.PD +Add path \fIsearchdir\fR to the list of paths that \fBld\fR will search +for archive libraries and \fBld\fR control scripts. You may use this +option any number of times. The directories are searched in the order +in which they are specified on the command line. Directories specified +on the command line are searched before the default directories. All +\&\fB\-L\fR options apply to all \fB\-l\fR options, regardless of the +order in which the options appear. \fB\-L\fR options do not affect +how \fBld\fR searches for a linker script unless \fB\-T\fR +option is specified. +.Sp +If \fIsearchdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced +by the \fIsysroot prefix\fR, controlled by the \fB\-\-sysroot\fR option, or +specified when the linker is configured. +.Sp +The default set of paths searched (without being specified with +\&\fB\-L\fR) depends on which emulation mode \fBld\fR is using, and in +some cases also on how it was configured. +.Sp +The paths can also be specified in a link script with the +\&\f(CW\*(C`SEARCH_DIR\*(C'\fR command. Directories specified this way are searched +at the point in which the linker script appears in the command line. +.IP "\fB\-m\fR \fIemulation\fR" 4 +.IX Item "-m emulation" +Emulate the \fIemulation\fR linker. You can list the available +emulations with the \fB\-\-verbose\fR or \fB\-V\fR options. +.Sp +If the \fB\-m\fR option is not used, the emulation is taken from the +\&\f(CW\*(C`LDEMULATION\*(C'\fR environment variable, if that is defined. +.Sp +Otherwise, the default emulation depends upon how the linker was +configured. +.IP "\fB\-M\fR" 4 +.IX Item "-M" +.PD 0 +.IP "\fB\-\-print\-map\fR" 4 +.IX Item "--print-map" +.PD +Print a link map to the standard output. A link map provides +information about the link, including the following: +.RS 4 +.IP "\(bu" 4 +Where object files are mapped into memory. +.IP "\(bu" 4 +How common symbols are allocated. +.IP "\(bu" 4 +All archive members included in the link, with a mention of the symbol +which caused the archive member to be brought in. +.IP "\(bu" 4 +The values assigned to symbols. +.Sp +Note \- symbols whose values are computed by an expression which +involves a reference to a previous value of the same symbol may not +have correct result displayed in the link map. This is because the +linker discards intermediate results and only retains the final value +of an expression. Under such circumstances the linker will display +the final value enclosed by square brackets. Thus for example a +linker script containing: +.Sp +.Vb 3 +\& foo = 1 +\& foo = foo * 4 +\& foo = foo + 8 +.Ve +.Sp +will produce the following output in the link map if the \fB\-M\fR +option is used: +.Sp +.Vb 3 +\& 0x00000001 foo = 0x1 +\& [0x0000000c] foo = (foo * 0x4) +\& [0x0000000c] foo = (foo + 0x8) +.Ve +.Sp +See \fBExpressions\fR for more information about expressions in linker +scripts. +.RE +.RS 4 +.RE +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-nmagic\fR" 4 +.IX Item "--nmagic" +.PD +Turn off page alignment of sections, and disable linking against shared +libraries. If the output format supports Unix style magic numbers, +mark the output as \f(CW\*(C`NMAGIC\*(C'\fR. +.IP "\fB\-N\fR" 4 +.IX Item "-N" +.PD 0 +.IP "\fB\-\-omagic\fR" 4 +.IX Item "--omagic" +.PD +Set the text and data sections to be readable and writable. Also, do +not page-align the data segment, and disable linking against shared +libraries. If the output format supports Unix style magic numbers, +mark the output as \f(CW\*(C`OMAGIC\*(C'\fR. Note: Although a writable text section +is allowed for PE-COFF targets, it does not conform to the format +specification published by Microsoft. +.IP "\fB\-\-no\-omagic\fR" 4 +.IX Item "--no-omagic" +This option negates most of the effects of the \fB\-N\fR option. It +sets the text section to be read-only, and forces the data segment to +be page-aligned. Note \- this option does not enable linking against +shared libraries. Use \fB\-Bdynamic\fR for this. +.IP "\fB\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +.PD 0 +.IP "\fB\-\-output=\fR\fIoutput\fR" 4 +.IX Item "--output=output" +.PD +Use \fIoutput\fR as the name for the program produced by \fBld\fR; if this +option is not specified, the name \fIa.out\fR is used by default. The +script command \f(CW\*(C`OUTPUT\*(C'\fR can also specify the output file name. +.IP "\fB\-O\fR \fIlevel\fR" 4 +.IX Item "-O level" +If \fIlevel\fR is a numeric values greater than zero \fBld\fR optimizes +the output. This might take significantly longer and therefore probably +should only be enabled for the final binary. At the moment this +option only affects \s-1ELF\s0 shared library generation. Future releases of +the linker may make more use of this option. Also currently there is +no difference in the linker's behaviour for different non-zero values +of this option. Again this may change with future releases. +.IP "\fB\-\-push\-state\fR" 4 +.IX Item "--push-state" +The \fB\-\-push\-state\fR allows to preserve the current state of the +flags which govern the input file handling so that they can all be +restored with one corresponding \fB\-\-pop\-state\fR option. +.Sp +The option which are covered are: \fB\-Bdynamic\fR, \fB\-Bstatic\fR, +\&\fB\-dn\fR, \fB\-dy\fR, \fB\-call_shared\fR, \fB\-non_shared\fR, +\&\fB\-static\fR, \fB\-N\fR, \fB\-n\fR, \fB\-\-whole\-archive\fR, +\&\fB\-\-no\-whole\-archive\fR, \fB\-r\fR, \fB\-Ur\fR, +\&\fB\-\-copy\-dt\-needed\-entries\fR, \fB\-\-no\-copy\-dt\-needed\-entries\fR, +\&\fB\-\-as\-needed\fR, \fB\-\-no\-as\-needed\fR, and \fB\-a\fR. +.Sp +One target for this option are specifications for \fIpkg-config\fR. When +used with the \fB\-\-libs\fR option all possibly needed libraries are +listed and then possibly linked with all the time. It is better to return +something as follows: +.Sp +.Vb 1 +\& \-Wl,\-\-push\-state,\-\-as\-needed \-libone \-libtwo \-Wl,\-\-pop\-state +.Ve +.Sp +Undoes the effect of \-\-push\-state, restores the previous values of the +flags governing input file handling. +.IP "\fB\-q\fR" 4 +.IX Item "-q" +.PD 0 +.IP "\fB\-\-emit\-relocs\fR" 4 +.IX Item "--emit-relocs" +.PD +Leave relocation sections and contents in fully linked executables. +Post link analysis and optimization tools may need this information in +order to perform correct modifications of executables. This results +in larger executables. +.Sp +This option is currently only supported on \s-1ELF\s0 platforms. +.IP "\fB\-\-force\-dynamic\fR" 4 +.IX Item "--force-dynamic" +Force the output file to have dynamic sections. This option is specific +to VxWorks targets. +.IP "\fB\-r\fR" 4 +.IX Item "-r" +.PD 0 +.IP "\fB\-\-relocatable\fR" 4 +.IX Item "--relocatable" +.PD +Generate relocatable output\-\-\-i.e., generate an output file that can in +turn serve as input to \fBld\fR. This is often called \fIpartial +linking\fR. As a side effect, in environments that support standard Unix +magic numbers, this option also sets the output file's magic number to +\&\f(CW\*(C`OMAGIC\*(C'\fR. +If this option is not specified, an absolute file is produced. When +linking \*(C+ programs, this option \fIwill not\fR resolve references to +constructors; to do that, use \fB\-Ur\fR. +.Sp +When an input file does not have the same format as the output file, +partial linking is only supported if that input file does not contain any +relocations. Different output formats can have further restrictions; for +example some \f(CW\*(C`a.out\*(C'\fR\-based formats do not support partial linking +with input files in other formats at all. +.Sp +This option does the same thing as \fB\-i\fR. +.IP "\fB\-R\fR \fIfilename\fR" 4 +.IX Item "-R filename" +.PD 0 +.IP "\fB\-\-just\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--just-symbols=filename" +.PD +Read symbol names and their addresses from \fIfilename\fR, but do not +relocate it or include it in the output. This allows your output file +to refer symbolically to absolute locations of memory defined in other +programs. You may use this option more than once. +.Sp +For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is +followed by a directory name, rather than a file name, it is treated as +the \fB\-rpath\fR option. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-strip\-all\fR" 4 +.IX Item "--strip-all" +.PD +Omit all symbol information from the output file. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-strip\-debug\fR" 4 +.IX Item "--strip-debug" +.PD +Omit debugger symbol information (but not all symbols) from the output file. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-trace\fR" 4 +.IX Item "--trace" +.PD +Print the names of the input files as \fBld\fR processes them. +.IP "\fB\-T\fR \fIscriptfile\fR" 4 +.IX Item "-T scriptfile" +.PD 0 +.IP "\fB\-\-script=\fR\fIscriptfile\fR" 4 +.IX Item "--script=scriptfile" +.PD +Use \fIscriptfile\fR as the linker script. This script replaces +\&\fBld\fR's default linker script (rather than adding to it), so +\&\fIcommandfile\fR must specify everything necessary to describe the +output file. If \fIscriptfile\fR does not exist in +the current directory, \f(CW\*(C`ld\*(C'\fR looks for it in the directories +specified by any preceding \fB\-L\fR options. Multiple \fB\-T\fR +options accumulate. +.IP "\fB\-dT\fR \fIscriptfile\fR" 4 +.IX Item "-dT scriptfile" +.PD 0 +.IP "\fB\-\-default\-script=\fR\fIscriptfile\fR" 4 +.IX Item "--default-script=scriptfile" +.PD +Use \fIscriptfile\fR as the default linker script. +.Sp +This option is similar to the \fB\-\-script\fR option except that +processing of the script is delayed until after the rest of the +command line has been processed. This allows options placed after the +\&\fB\-\-default\-script\fR option on the command line to affect the +behaviour of the linker script, which can be important when the linker +command line cannot be directly controlled by the user. (eg because +the command line is being constructed by another tool, such as +\&\fBgcc\fR). +.IP "\fB\-u\fR \fIsymbol\fR" 4 +.IX Item "-u symbol" +.PD 0 +.IP "\fB\-\-undefined=\fR\fIsymbol\fR" 4 +.IX Item "--undefined=symbol" +.PD +Force \fIsymbol\fR to be entered in the output file as an undefined +symbol. Doing this may, for example, trigger linking of additional +modules from standard libraries. \fB\-u\fR may be repeated with +different option arguments to enter additional undefined symbols. This +option is equivalent to the \f(CW\*(C`EXTERN\*(C'\fR linker script command. +.IP "\fB\-Ur\fR" 4 +.IX Item "-Ur" +For anything other than \*(C+ programs, this option is equivalent to +\&\fB\-r\fR: it generates relocatable output\-\-\-i.e., an output file that can in +turn serve as input to \fBld\fR. When linking \*(C+ programs, \fB\-Ur\fR +\&\fIdoes\fR resolve references to constructors, unlike \fB\-r\fR. +It does not work to use \fB\-Ur\fR on files that were themselves linked +with \fB\-Ur\fR; once the constructor table has been built, it cannot +be added to. Use \fB\-Ur\fR only for the last partial link, and +\&\fB\-r\fR for the others. +.IP "\fB\-\-unique[=\fR\fI\s-1SECTION\s0\fR\fB]\fR" 4 +.IX Item "--unique[=SECTION]" +Creates a separate output section for every input section matching +\&\fI\s-1SECTION\s0\fR, or if the optional wildcard \fI\s-1SECTION\s0\fR argument is +missing, for every orphan input section. An orphan section is one not +specifically mentioned in a linker script. You may use this option +multiple times on the command line; It prevents the normal merging of +input sections with the same name, overriding output section assignments +in a linker script. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD +Display the version number for \fBld\fR. The \fB\-V\fR option also +lists the supported emulations. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-discard\-all\fR" 4 +.IX Item "--discard-all" +.PD +Delete all local symbols. +.IP "\fB\-X\fR" 4 +.IX Item "-X" +.PD 0 +.IP "\fB\-\-discard\-locals\fR" 4 +.IX Item "--discard-locals" +.PD +Delete all temporary local symbols. (These symbols start with +system-specific local label prefixes, typically \fB.L\fR for \s-1ELF\s0 systems +or \fBL\fR for traditional a.out systems.) +.IP "\fB\-y\fR \fIsymbol\fR" 4 +.IX Item "-y symbol" +.PD 0 +.IP "\fB\-\-trace\-symbol=\fR\fIsymbol\fR" 4 +.IX Item "--trace-symbol=symbol" +.PD +Print the name of each linked file in which \fIsymbol\fR appears. This +option may be given any number of times. On many systems it is necessary +to prepend an underscore. +.Sp +This option is useful when you have an undefined symbol in your link but +don't know where the reference is coming from. +.IP "\fB\-Y\fR \fIpath\fR" 4 +.IX Item "-Y path" +Add \fIpath\fR to the default library search path. This option exists +for Solaris compatibility. +.IP "\fB\-z\fR \fIkeyword\fR" 4 +.IX Item "-z keyword" +The recognized keywords are: +.RS 4 +.IP "\fBcombreloc\fR" 4 +.IX Item "combreloc" +Combines multiple reloc sections and sorts them to make dynamic symbol +lookup caching possible. +.IP "\fBdefs\fR" 4 +.IX Item "defs" +Disallows undefined symbols in object files. Undefined symbols in +shared libraries are still allowed. +.IP "\fBexecstack\fR" 4 +.IX Item "execstack" +Marks the object as requiring executable stack. +.IP "\fBglobal\fR" 4 +.IX Item "global" +This option is only meaningful when building a shared object. It makes +the symbols defined by this shared object available for symbol resolution +of subsequently loaded libraries. +.IP "\fBinitfirst\fR" 4 +.IX Item "initfirst" +This option is only meaningful when building a shared object. +It marks the object so that its runtime initialization will occur +before the runtime initialization of any other objects brought into +the process at the same time. Similarly the runtime finalization of +the object will occur after the runtime finalization of any other +objects. +.IP "\fBinterpose\fR" 4 +.IX Item "interpose" +Marks the object that its symbol table interposes before all symbols +but the primary executable. +.IP "\fBlazy\fR" 4 +.IX Item "lazy" +When generating an executable or shared library, mark it to tell the +dynamic linker to defer function call resolution to the point when +the function is called (lazy binding), rather than at load time. +Lazy binding is the default. +.IP "\fBloadfltr\fR" 4 +.IX Item "loadfltr" +Marks the object that its filters be processed immediately at +runtime. +.IP "\fBmuldefs\fR" 4 +.IX Item "muldefs" +Allows multiple definitions. +.IP "\fBnocombreloc\fR" 4 +.IX Item "nocombreloc" +Disables multiple reloc sections combining. +.IP "\fBnocopyreloc\fR" 4 +.IX Item "nocopyreloc" +Disables production of copy relocs. +.IP "\fBnodefaultlib\fR" 4 +.IX Item "nodefaultlib" +Marks the object that the search for dependencies of this object will +ignore any default library search paths. +.IP "\fBnodelete\fR" 4 +.IX Item "nodelete" +Marks the object shouldn't be unloaded at runtime. +.IP "\fBnodlopen\fR" 4 +.IX Item "nodlopen" +Marks the object not available to \f(CW\*(C`dlopen\*(C'\fR. +.IP "\fBnodump\fR" 4 +.IX Item "nodump" +Marks the object can not be dumped by \f(CW\*(C`dldump\*(C'\fR. +.IP "\fBnoexecstack\fR" 4 +.IX Item "noexecstack" +Marks the object as not requiring executable stack. +.IP "\fBnorelro\fR" 4 +.IX Item "norelro" +Don't create an \s-1ELF \s0\f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object. +.IP "\fBnow\fR" 4 +.IX Item "now" +When generating an executable or shared library, mark it to tell the +dynamic linker to resolve all symbols when the program is started, or +when the shared library is linked to using dlopen, instead of +deferring function call resolution to the point when the function is +first called. +.IP "\fBorigin\fR" 4 +.IX Item "origin" +Marks the object may contain \f(CW$ORIGIN\fR. +.IP "\fBrelro\fR" 4 +.IX Item "relro" +Create an \s-1ELF \s0\f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object. +.IP "\fBmax\-page\-size=\fR\fIvalue\fR" 4 +.IX Item "max-page-size=value" +Set the emulation maximum page size to \fIvalue\fR. +.IP "\fBcommon\-page\-size=\fR\fIvalue\fR" 4 +.IX Item "common-page-size=value" +Set the emulation common page size to \fIvalue\fR. +.IP "\fBstack\-size=\fR\fIvalue\fR" 4 +.IX Item "stack-size=value" +Specify a stack size for in an \s-1ELF \s0\f(CW\*(C`PT_GNU_STACK\*(C'\fR segment. +Specifying zero will override any default non-zero sized +\&\f(CW\*(C`PT_GNU_STACK\*(C'\fR segment creation. +.IP "\fBbndplt\fR" 4 +.IX Item "bndplt" +Always generate \s-1BND\s0 prefix in \s-1PLT\s0 entries. Supported for Linux/x86_64. +.RE +.RS 4 +.Sp +Other keywords are ignored for Solaris compatibility. +.RE +.IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4 +.IX Item "-( archives -)" +.PD 0 +.IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4 +.IX Item "--start-group archives --end-group" +.PD +The \fIarchives\fR should be a list of archive files. They may be +either explicit file names, or \fB\-l\fR options. +.Sp +The specified archives are searched repeatedly until no new undefined +references are created. Normally, an archive is searched only once in +the order that it is specified on the command line. If a symbol in that +archive is needed to resolve an undefined symbol referred to by an +object in an archive that appears later on the command line, the linker +would not be able to resolve that reference. By grouping the archives, +they all be searched repeatedly until all possible references are +resolved. +.Sp +Using this option has a significant performance cost. It is best to use +it only when there are unavoidable circular references between two or +more archives. +.IP "\fB\-\-accept\-unknown\-input\-arch\fR" 4 +.IX Item "--accept-unknown-input-arch" +.PD 0 +.IP "\fB\-\-no\-accept\-unknown\-input\-arch\fR" 4 +.IX Item "--no-accept-unknown-input-arch" +.PD +Tells the linker to accept input files whose architecture cannot be +recognised. The assumption is that the user knows what they are doing +and deliberately wants to link in these unknown input files. This was +the default behaviour of the linker, before release 2.14. The default +behaviour from release 2.14 onwards is to reject such input files, and +so the \fB\-\-accept\-unknown\-input\-arch\fR option has been added to +restore the old behaviour. +.IP "\fB\-\-as\-needed\fR" 4 +.IX Item "--as-needed" +.PD 0 +.IP "\fB\-\-no\-as\-needed\fR" 4 +.IX Item "--no-as-needed" +.PD +This option affects \s-1ELF DT_NEEDED\s0 tags for dynamic libraries mentioned +on the command line after the \fB\-\-as\-needed\fR option. Normally +the linker will add a \s-1DT_NEEDED\s0 tag for each dynamic library mentioned +on the command line, regardless of whether the library is actually +needed or not. \fB\-\-as\-needed\fR causes a \s-1DT_NEEDED\s0 tag to only be +emitted for a library that \fIat that point in the link\fR satisfies a +non-weak undefined symbol reference from a regular object file or, if +the library is not found in the \s-1DT_NEEDED\s0 lists of other needed libraries, a +non-weak undefined symbol reference from another needed dynamic library. +Object files or libraries appearing on the command line \fIafter\fR +the library in question do not affect whether the library is seen as +needed. This is similar to the rules for extraction of object files +from archives. \fB\-\-no\-as\-needed\fR restores the default behaviour. +.IP "\fB\-\-add\-needed\fR" 4 +.IX Item "--add-needed" +.PD 0 +.IP "\fB\-\-no\-add\-needed\fR" 4 +.IX Item "--no-add-needed" +.PD +These two options have been deprecated because of the similarity of +their names to the \fB\-\-as\-needed\fR and \fB\-\-no\-as\-needed\fR +options. They have been replaced by \fB\-\-copy\-dt\-needed\-entries\fR +and \fB\-\-no\-copy\-dt\-needed\-entries\fR. +.IP "\fB\-assert\fR \fIkeyword\fR" 4 +.IX Item "-assert keyword" +This option is ignored for SunOS compatibility. +.IP "\fB\-Bdynamic\fR" 4 +.IX Item "-Bdynamic" +.PD 0 +.IP "\fB\-dy\fR" 4 +.IX Item "-dy" +.IP "\fB\-call_shared\fR" 4 +.IX Item "-call_shared" +.PD +Link against dynamic libraries. This is only meaningful on platforms +for which shared libraries are supported. This option is normally the +default on such platforms. The different variants of this option are +for compatibility with various systems. You may use this option +multiple times on the command line: it affects library searching for +\&\fB\-l\fR options which follow it. +.IP "\fB\-Bgroup\fR" 4 +.IX Item "-Bgroup" +Set the \f(CW\*(C`DF_1_GROUP\*(C'\fR flag in the \f(CW\*(C`DT_FLAGS_1\*(C'\fR entry in the dynamic +section. This causes the runtime linker to handle lookups in this +object and its dependencies to be performed only inside the group. +\&\fB\-\-unresolved\-symbols=report\-all\fR is implied. This option is +only meaningful on \s-1ELF\s0 platforms which support shared libraries. +.IP "\fB\-Bstatic\fR" 4 +.IX Item "-Bstatic" +.PD 0 +.IP "\fB\-dn\fR" 4 +.IX Item "-dn" +.IP "\fB\-non_shared\fR" 4 +.IX Item "-non_shared" +.IP "\fB\-static\fR" 4 +.IX Item "-static" +.PD +Do not link against shared libraries. This is only meaningful on +platforms for which shared libraries are supported. The different +variants of this option are for compatibility with various systems. You +may use this option multiple times on the command line: it affects +library searching for \fB\-l\fR options which follow it. This +option also implies \fB\-\-unresolved\-symbols=report\-all\fR. This +option can be used with \fB\-shared\fR. Doing so means that a +shared library is being created but that all of the library's external +references must be resolved by pulling in entries from static +libraries. +.IP "\fB\-Bsymbolic\fR" 4 +.IX Item "-Bsymbolic" +When creating a shared library, bind references to global symbols to the +definition within the shared library, if any. Normally, it is possible +for a program linked against a shared library to override the definition +within the shared library. This option is only meaningful on \s-1ELF\s0 +platforms which support shared libraries. +.IP "\fB\-Bsymbolic\-functions\fR" 4 +.IX Item "-Bsymbolic-functions" +When creating a shared library, bind references to global function +symbols to the definition within the shared library, if any. +This option is only meaningful on \s-1ELF\s0 platforms which support shared +libraries. +.IP "\fB\-\-dynamic\-list=\fR\fIdynamic-list-file\fR" 4 +.IX Item "--dynamic-list=dynamic-list-file" +Specify the name of a dynamic list file to the linker. This is +typically used when creating shared libraries to specify a list of +global symbols whose references shouldn't be bound to the definition +within the shared library, or creating dynamically linked executables +to specify a list of symbols which should be added to the symbol table +in the executable. This option is only meaningful on \s-1ELF\s0 platforms +which support shared libraries. +.Sp +The format of the dynamic list is the same as the version node without +scope and node name. See \fB\s-1VERSION\s0\fR for more information. +.IP "\fB\-\-dynamic\-list\-data\fR" 4 +.IX Item "--dynamic-list-data" +Include all global data symbols to the dynamic list. +.IP "\fB\-\-dynamic\-list\-cpp\-new\fR" 4 +.IX Item "--dynamic-list-cpp-new" +Provide the builtin dynamic list for \*(C+ operator new and delete. It +is mainly useful for building shared libstdc++. +.IP "\fB\-\-dynamic\-list\-cpp\-typeinfo\fR" 4 +.IX Item "--dynamic-list-cpp-typeinfo" +Provide the builtin dynamic list for \*(C+ runtime type identification. +.IP "\fB\-\-check\-sections\fR" 4 +.IX Item "--check-sections" +.PD 0 +.IP "\fB\-\-no\-check\-sections\fR" 4 +.IX Item "--no-check-sections" +.PD +Asks the linker \fInot\fR to check section addresses after they have +been assigned to see if there are any overlaps. Normally the linker will +perform this check, and if it finds any overlaps it will produce +suitable error messages. The linker does know about, and does make +allowances for sections in overlays. The default behaviour can be +restored by using the command line switch \fB\-\-check\-sections\fR. +Section overlap is not usually checked for relocatable links. You can +force checking in that case by using the \fB\-\-check\-sections\fR +option. +.IP "\fB\-\-copy\-dt\-needed\-entries\fR" 4 +.IX Item "--copy-dt-needed-entries" +.PD 0 +.IP "\fB\-\-no\-copy\-dt\-needed\-entries\fR" 4 +.IX Item "--no-copy-dt-needed-entries" +.PD +This option affects the treatment of dynamic libraries referred to +by \s-1DT_NEEDED\s0 tags \fIinside\fR \s-1ELF\s0 dynamic libraries mentioned on the +command line. Normally the linker won't add a \s-1DT_NEEDED\s0 tag to the +output binary for each library mentioned in a \s-1DT_NEEDED\s0 tag in an +input dynamic library. With \fB\-\-copy\-dt\-needed\-entries\fR +specified on the command line however any dynamic libraries that +follow it will have their \s-1DT_NEEDED\s0 entries added. The default +behaviour can be restored with \fB\-\-no\-copy\-dt\-needed\-entries\fR. +.Sp +This option also has an effect on the resolution of symbols in dynamic +libraries. With \fB\-\-copy\-dt\-needed\-entries\fR dynamic libraries +mentioned on the command line will be recursively searched, following +their \s-1DT_NEEDED\s0 tags to other libraries, in order to resolve symbols +required by the output binary. With the default setting however +the searching of dynamic libraries that follow it will stop with the +dynamic library itself. No \s-1DT_NEEDED\s0 links will be traversed to resolve +symbols. +.IP "\fB\-\-cref\fR" 4 +.IX Item "--cref" +Output a cross reference table. If a linker map file is being +generated, the cross reference table is printed to the map file. +Otherwise, it is printed on the standard output. +.Sp +The format of the table is intentionally simple, so that it may be +easily processed by a script if necessary. The symbols are printed out, +sorted by name. For each symbol, a list of file names is given. If the +symbol is defined, the first file listed is the location of the +definition. If the symbol is defined as a common value then any files +where this happens appear next. Finally any files that reference the +symbol are listed. +.IP "\fB\-\-no\-define\-common\fR" 4 +.IX Item "--no-define-common" +This option inhibits the assignment of addresses to common symbols. +The script command \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR has the same effect. +.Sp +The \fB\-\-no\-define\-common\fR option allows decoupling +the decision to assign addresses to Common symbols from the choice +of the output file type; otherwise a non-Relocatable output type +forces assigning addresses to Common symbols. +Using \fB\-\-no\-define\-common\fR allows Common symbols that are referenced +from a shared library to be assigned addresses only in the main program. +This eliminates the unused duplicate space in the shared library, +and also prevents any possible confusion over resolving to the wrong +duplicate when there are many dynamic modules with specialized search +paths for runtime symbol resolution. +.IP "\fB\-\-defsym=\fR\fIsymbol\fR\fB=\fR\fIexpression\fR" 4 +.IX Item "--defsym=symbol=expression" +Create a global symbol in the output file, containing the absolute +address given by \fIexpression\fR. You may use this option as many +times as necessary to define multiple symbols in the command line. A +limited form of arithmetic is supported for the \fIexpression\fR in this +context: you may give a hexadecimal constant or the name of an existing +symbol, or use \f(CW\*(C`+\*(C'\fR and \f(CW\*(C`\-\*(C'\fR to add or subtract hexadecimal +constants or symbols. If you need more elaborate expressions, consider +using the linker command language from a script. \fINote:\fR there should be no white +space between \fIsymbol\fR, the equals sign ("\fB=\fR"), and +\&\fIexpression\fR. +.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4 +.IX Item "--demangle[=style]" +.PD 0 +.IP "\fB\-\-no\-demangle\fR" 4 +.IX Item "--no-demangle" +.PD +These options control whether to demangle symbol names in error messages +and other output. When the linker is told to demangle, it tries to +present symbol names in a readable fashion: it strips leading +underscores if they are used by the object file format, and converts \*(C+ +mangled symbol names into user readable names. Different compilers have +different mangling styles. The optional demangling style argument can be used +to choose an appropriate demangling style for your compiler. The linker will +demangle by default unless the environment variable \fB\s-1COLLECT_NO_DEMANGLE\s0\fR +is set. These options may be used to override the default. +.IP "\fB\-I\fR\fIfile\fR" 4 +.IX Item "-Ifile" +.PD 0 +.IP "\fB\-\-dynamic\-linker=\fR\fIfile\fR" 4 +.IX Item "--dynamic-linker=file" +.PD +Set the name of the dynamic linker. This is only meaningful when +generating dynamically linked \s-1ELF\s0 executables. The default dynamic +linker is normally correct; don't use this unless you know what you are +doing. +.IP "\fB\-\-fatal\-warnings\fR" 4 +.IX Item "--fatal-warnings" +.PD 0 +.IP "\fB\-\-no\-fatal\-warnings\fR" 4 +.IX Item "--no-fatal-warnings" +.PD +Treat all warnings as errors. The default behaviour can be restored +with the option \fB\-\-no\-fatal\-warnings\fR. +.IP "\fB\-\-force\-exe\-suffix\fR" 4 +.IX Item "--force-exe-suffix" +Make sure that an output file has a .exe suffix. +.Sp +If a successfully built fully linked output file does not have a +\&\f(CW\*(C`.exe\*(C'\fR or \f(CW\*(C`.dll\*(C'\fR suffix, this option forces the linker to copy +the output file to one of the same name with a \f(CW\*(C`.exe\*(C'\fR suffix. This +option is useful when using unmodified Unix makefiles on a Microsoft +Windows host, since some versions of Windows won't run an image unless +it ends in a \f(CW\*(C`.exe\*(C'\fR suffix. +.IP "\fB\-\-gc\-sections\fR" 4 +.IX Item "--gc-sections" +.PD 0 +.IP "\fB\-\-no\-gc\-sections\fR" 4 +.IX Item "--no-gc-sections" +.PD +Enable garbage collection of unused input sections. It is ignored on +targets that do not support this option. The default behaviour (of not +performing this garbage collection) can be restored by specifying +\&\fB\-\-no\-gc\-sections\fR on the command line. +.Sp +\&\fB\-\-gc\-sections\fR decides which input sections are used by +examining symbols and relocations. The section containing the entry +symbol and all sections containing symbols undefined on the +command-line will be kept, as will sections containing symbols +referenced by dynamic objects. Note that when building shared +libraries, the linker must assume that any visible symbol is +referenced. Once this initial set of sections has been determined, +the linker recursively marks as used any section referenced by their +relocations. See \fB\-\-entry\fR and \fB\-\-undefined\fR. +.Sp +This option can be set when doing a partial link (enabled with option +\&\fB\-r\fR). In this case the root of symbols kept must be explicitly +specified either by an \fB\-\-entry\fR or \fB\-\-undefined\fR option or by +a \f(CW\*(C`ENTRY\*(C'\fR command in the linker script. +.IP "\fB\-\-print\-gc\-sections\fR" 4 +.IX Item "--print-gc-sections" +.PD 0 +.IP "\fB\-\-no\-print\-gc\-sections\fR" 4 +.IX Item "--no-print-gc-sections" +.PD +List all sections removed by garbage collection. The listing is +printed on stderr. This option is only effective if garbage +collection has been enabled via the \fB\-\-gc\-sections\fR) option. The +default behaviour (of not listing the sections that are removed) can +be restored by specifying \fB\-\-no\-print\-gc\-sections\fR on the command +line. +.IP "\fB\-\-print\-output\-format\fR" 4 +.IX Item "--print-output-format" +Print the name of the default output format (perhaps influenced by +other command-line options). This is the string that would appear +in an \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR linker script command. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Print a summary of the command-line options on the standard output and exit. +.IP "\fB\-\-target\-help\fR" 4 +.IX Item "--target-help" +Print a summary of all target specific options on the standard output and exit. +.IP "\fB\-Map=\fR\fImapfile\fR" 4 +.IX Item "-Map=mapfile" +Print a link map to the file \fImapfile\fR. See the description of the +\&\fB\-M\fR option, above. +.IP "\fB\-\-no\-keep\-memory\fR" 4 +.IX Item "--no-keep-memory" +\&\fBld\fR normally optimizes for speed over memory usage by caching the +symbol tables of input files in memory. This option tells \fBld\fR to +instead optimize for memory usage, by rereading the symbol tables as +necessary. This may be required if \fBld\fR runs out of memory space +while linking a large executable. +.IP "\fB\-\-no\-undefined\fR" 4 +.IX Item "--no-undefined" +.PD 0 +.IP "\fB\-z defs\fR" 4 +.IX Item "-z defs" +.PD +Report unresolved symbol references from regular object files. This +is done even if the linker is creating a non-symbolic shared library. +The switch \fB\-\-[no\-]allow\-shlib\-undefined\fR controls the +behaviour for reporting unresolved references found in shared +libraries being linked in. +.IP "\fB\-\-allow\-multiple\-definition\fR" 4 +.IX Item "--allow-multiple-definition" +.PD 0 +.IP "\fB\-z muldefs\fR" 4 +.IX Item "-z muldefs" +.PD +Normally when a symbol is defined multiple times, the linker will +report a fatal error. These options allow multiple definitions and the +first definition will be used. +.IP "\fB\-\-allow\-shlib\-undefined\fR" 4 +.IX Item "--allow-shlib-undefined" +.PD 0 +.IP "\fB\-\-no\-allow\-shlib\-undefined\fR" 4 +.IX Item "--no-allow-shlib-undefined" +.PD +Allows or disallows undefined symbols in shared libraries. +This switch is similar to \fB\-\-no\-undefined\fR except that it +determines the behaviour when the undefined symbols are in a +shared library rather than a regular object file. It does not affect +how undefined symbols in regular object files are handled. +.Sp +The default behaviour is to report errors for any undefined symbols +referenced in shared libraries if the linker is being used to create +an executable, but to allow them if the linker is being used to create +a shared library. +.Sp +The reasons for allowing undefined symbol references in shared +libraries specified at link time are that: +.RS 4 +.IP "\(bu" 4 +A shared library specified at link time may not be the same as the one +that is available at load time, so the symbol might actually be +resolvable at load time. +.IP "\(bu" 4 +There are some operating systems, eg BeOS and \s-1HPPA,\s0 where undefined +symbols in shared libraries are normal. +.Sp +The BeOS kernel for example patches shared libraries at load time to +select whichever function is most appropriate for the current +architecture. This is used, for example, to dynamically select an +appropriate memset function. +.RE +.RS 4 +.RE +.IP "\fB\-\-no\-undefined\-version\fR" 4 +.IX Item "--no-undefined-version" +Normally when a symbol has an undefined version, the linker will ignore +it. This option disallows symbols with undefined version and a fatal error +will be issued instead. +.IP "\fB\-\-default\-symver\fR" 4 +.IX Item "--default-symver" +Create and use a default symbol version (the soname) for unversioned +exported symbols. +.IP "\fB\-\-default\-imported\-symver\fR" 4 +.IX Item "--default-imported-symver" +Create and use a default symbol version (the soname) for unversioned +imported symbols. +.IP "\fB\-\-no\-warn\-mismatch\fR" 4 +.IX Item "--no-warn-mismatch" +Normally \fBld\fR will give an error if you try to link together input +files that are mismatched for some reason, perhaps because they have +been compiled for different processors or for different endiannesses. +This option tells \fBld\fR that it should silently permit such possible +errors. This option should only be used with care, in cases when you +have taken some special action that ensures that the linker errors are +inappropriate. +.IP "\fB\-\-no\-warn\-search\-mismatch\fR" 4 +.IX Item "--no-warn-search-mismatch" +Normally \fBld\fR will give a warning if it finds an incompatible +library during a library search. This option silences the warning. +.IP "\fB\-\-no\-whole\-archive\fR" 4 +.IX Item "--no-whole-archive" +Turn off the effect of the \fB\-\-whole\-archive\fR option for subsequent +archive files. +.IP "\fB\-\-noinhibit\-exec\fR" 4 +.IX Item "--noinhibit-exec" +Retain the executable output file whenever it is still usable. +Normally, the linker will not produce an output file if it encounters +errors during the link process; it exits without writing an output file +when it issues any error whatsoever. +.IP "\fB\-nostdlib\fR" 4 +.IX Item "-nostdlib" +Only search library directories explicitly specified on the +command line. Library directories specified in linker scripts +(including linker scripts specified on the command line) are ignored. +.IP "\fB\-\-oformat=\fR\fIoutput-format\fR" 4 +.IX Item "--oformat=output-format" +\&\fBld\fR may be configured to support more than one kind of object +file. If your \fBld\fR is configured this way, you can use the +\&\fB\-\-oformat\fR option to specify the binary format for the output +object file. Even when \fBld\fR is configured to support alternative +object formats, you don't usually need to specify this, as \fBld\fR +should be configured to produce as a default output format the most +usual format on each machine. \fIoutput-format\fR is a text string, the +name of a particular format supported by the \s-1BFD\s0 libraries. (You can +list the available binary formats with \fBobjdump \-i\fR.) The script +command \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR can also specify the output format, but +this option overrides it. +.IP "\fB\-pie\fR" 4 +.IX Item "-pie" +.PD 0 +.IP "\fB\-\-pic\-executable\fR" 4 +.IX Item "--pic-executable" +.PD +Create a position independent executable. This is currently only supported on +\&\s-1ELF\s0 platforms. Position independent executables are similar to shared +libraries in that they are relocated by the dynamic linker to the virtual +address the \s-1OS\s0 chooses for them (which can vary between invocations). Like +normal dynamically linked executables they can be executed and symbols +defined in the executable cannot be overridden by shared libraries. +.IP "\fB\-qmagic\fR" 4 +.IX Item "-qmagic" +This option is ignored for Linux compatibility. +.IP "\fB\-Qy\fR" 4 +.IX Item "-Qy" +This option is ignored for \s-1SVR4\s0 compatibility. +.IP "\fB\-\-relax\fR" 4 +.IX Item "--relax" +.PD 0 +.IP "\fB\-\-no\-relax\fR" 4 +.IX Item "--no-relax" +.PD +An option with machine dependent effects. +This option is only supported on a few targets. +.Sp +On some platforms the \fB\-\-relax\fR option performs target specific, +global optimizations that become possible when the linker resolves +addressing in the program, such as relaxing address modes, +synthesizing new instructions, selecting shorter version of current +instructions, and combining constant values. +.Sp +On some platforms these link time global optimizations may make symbolic +debugging of the resulting executable impossible. +This is known to be the case for the Matsushita \s-1MN10200\s0 and \s-1MN10300\s0 +family of processors. +.Sp +On platforms where this is not supported, \fB\-\-relax\fR is accepted, +but ignored. +.Sp +On platforms where \fB\-\-relax\fR is accepted the option +\&\fB\-\-no\-relax\fR can be used to disable the feature. +.IP "\fB\-\-retain\-symbols\-file=\fR\fIfilename\fR" 4 +.IX Item "--retain-symbols-file=filename" +Retain \fIonly\fR the symbols listed in the file \fIfilename\fR, +discarding all others. \fIfilename\fR is simply a flat file, with one +symbol name per line. This option is especially useful in environments +(such as VxWorks) +where a large global symbol table is accumulated gradually, to conserve +run-time memory. +.Sp +\&\fB\-\-retain\-symbols\-file\fR does \fInot\fR discard undefined symbols, +or symbols needed for relocations. +.Sp +You may only specify \fB\-\-retain\-symbols\-file\fR once in the command +line. It overrides \fB\-s\fR and \fB\-S\fR. +.IP "\fB\-rpath=\fR\fIdir\fR" 4 +.IX Item "-rpath=dir" +Add a directory to the runtime library search path. This is used when +linking an \s-1ELF\s0 executable with shared objects. All \fB\-rpath\fR +arguments are concatenated and passed to the runtime linker, which uses +them to locate shared objects at runtime. The \fB\-rpath\fR option is +also used when locating shared objects which are needed by shared +objects explicitly included in the link; see the description of the +\&\fB\-rpath\-link\fR option. If \fB\-rpath\fR is not used when linking an +\&\s-1ELF\s0 executable, the contents of the environment variable +\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR will be used if it is defined. +.Sp +The \fB\-rpath\fR option may also be used on SunOS. By default, on +SunOS, the linker will form a runtime search patch out of all the +\&\fB\-L\fR options it is given. If a \fB\-rpath\fR option is used, the +runtime search path will be formed exclusively using the \fB\-rpath\fR +options, ignoring the \fB\-L\fR options. This can be useful when using +gcc, which adds many \fB\-L\fR options which may be on \s-1NFS\s0 mounted +file systems. +.Sp +For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is +followed by a directory name, rather than a file name, it is treated as +the \fB\-rpath\fR option. +.IP "\fB\-rpath\-link=\fR\fIdir\fR" 4 +.IX Item "-rpath-link=dir" +When using \s-1ELF\s0 or SunOS, one shared library may require another. This +happens when an \f(CW\*(C`ld \-shared\*(C'\fR link includes a shared library as one +of the input files. +.Sp +When the linker encounters such a dependency when doing a non-shared, +non-relocatable link, it will automatically try to locate the required +shared library and include it in the link, if it is not included +explicitly. In such a case, the \fB\-rpath\-link\fR option +specifies the first set of directories to search. The +\&\fB\-rpath\-link\fR option may specify a sequence of directory names +either by specifying a list of names separated by colons, or by +appearing multiple times. +.Sp +This option should be used with caution as it overrides the search path +that may have been hard compiled into a shared library. In such a case it +is possible to use unintentionally a different search path than the +runtime linker would do. +.Sp +The linker uses the following search paths to locate required shared +libraries: +.RS 4 +.IP "1." 4 +Any directories specified by \fB\-rpath\-link\fR options. +.IP "2." 4 +Any directories specified by \fB\-rpath\fR options. The difference +between \fB\-rpath\fR and \fB\-rpath\-link\fR is that directories +specified by \fB\-rpath\fR options are included in the executable and +used at runtime, whereas the \fB\-rpath\-link\fR option is only effective +at link time. Searching \fB\-rpath\fR in this way is only supported +by native linkers and cross linkers which have been configured with +the \fB\-\-with\-sysroot\fR option. +.IP "3." 4 +On an \s-1ELF\s0 system, for native linkers, if the \fB\-rpath\fR and +\&\fB\-rpath\-link\fR options were not used, search the contents of the +environment variable \f(CW\*(C`LD_RUN_PATH\*(C'\fR. +.IP "4." 4 +On SunOS, if the \fB\-rpath\fR option was not used, search any +directories specified using \fB\-L\fR options. +.IP "5." 4 +For a native linker, search the contents of the environment +variable \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR. +.IP "6." 4 +For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or +\&\f(CW\*(C`DT_RPATH\*(C'\fR of a shared library are searched for shared +libraries needed by it. The \f(CW\*(C`DT_RPATH\*(C'\fR entries are ignored if +\&\f(CW\*(C`DT_RUNPATH\*(C'\fR entries exist. +.IP "7." 4 +The default directories, normally \fI/lib\fR and \fI/usr/lib\fR. +.IP "8." 4 +For a native linker on an \s-1ELF\s0 system, if the file \fI/etc/ld.so.conf\fR +exists, the list of directories found in that file. +.RE +.RS 4 +.Sp +If the required shared library is not found, the linker will issue a +warning and continue with the link. +.RE +.IP "\fB\-shared\fR" 4 +.IX Item "-shared" +.PD 0 +.IP "\fB\-Bshareable\fR" 4 +.IX Item "-Bshareable" +.PD +Create a shared library. This is currently only supported on \s-1ELF, XCOFF\s0 +and SunOS platforms. On SunOS, the linker will automatically create a +shared library if the \fB\-e\fR option is not used and there are +undefined symbols in the link. +.IP "\fB\-\-sort\-common\fR" 4 +.IX Item "--sort-common" +.PD 0 +.IP "\fB\-\-sort\-common=ascending\fR" 4 +.IX Item "--sort-common=ascending" +.IP "\fB\-\-sort\-common=descending\fR" 4 +.IX Item "--sort-common=descending" +.PD +This option tells \fBld\fR to sort the common symbols by alignment in +ascending or descending order when it places them in the appropriate output +sections. The symbol alignments considered are sixteen-byte or larger, +eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps +between symbols due to alignment constraints. If no sorting order is +specified, then descending order is assumed. +.IP "\fB\-\-sort\-section=name\fR" 4 +.IX Item "--sort-section=name" +This option will apply \f(CW\*(C`SORT_BY_NAME\*(C'\fR to all wildcard section +patterns in the linker script. +.IP "\fB\-\-sort\-section=alignment\fR" 4 +.IX Item "--sort-section=alignment" +This option will apply \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR to all wildcard section +patterns in the linker script. +.IP "\fB\-\-split\-by\-file[=\fR\fIsize\fR\fB]\fR" 4 +.IX Item "--split-by-file[=size]" +Similar to \fB\-\-split\-by\-reloc\fR but creates a new output section for +each input file when \fIsize\fR is reached. \fIsize\fR defaults to a +size of 1 if not given. +.IP "\fB\-\-split\-by\-reloc[=\fR\fIcount\fR\fB]\fR" 4 +.IX Item "--split-by-reloc[=count]" +Tries to creates extra sections in the output file so that no single +output section in the file contains more than \fIcount\fR relocations. +This is useful when generating huge relocatable files for downloading into +certain real time kernels with the \s-1COFF\s0 object file format; since \s-1COFF\s0 +cannot represent more than 65535 relocations in a single section. Note +that this will fail to work with object file formats which do not +support arbitrary sections. The linker will not split up individual +input sections for redistribution, so if a single input section contains +more than \fIcount\fR relocations one output section will contain that +many relocations. \fIcount\fR defaults to a value of 32768. +.IP "\fB\-\-stats\fR" 4 +.IX Item "--stats" +Compute and display statistics about the operation of the linker, such +as execution time and memory usage. +.IP "\fB\-\-sysroot=\fR\fIdirectory\fR" 4 +.IX Item "--sysroot=directory" +Use \fIdirectory\fR as the location of the sysroot, overriding the +configure-time default. This option is only supported by linkers +that were configured using \fB\-\-with\-sysroot\fR. +.IP "\fB\-\-traditional\-format\fR" 4 +.IX Item "--traditional-format" +For some targets, the output of \fBld\fR is different in some ways from +the output of some existing linker. This switch requests \fBld\fR to +use the traditional format instead. +.Sp +For example, on SunOS, \fBld\fR combines duplicate entries in the +symbol string table. This can reduce the size of an output file with +full debugging information by over 30 percent. Unfortunately, the SunOS +\&\f(CW\*(C`dbx\*(C'\fR program can not read the resulting program (\f(CW\*(C`gdb\*(C'\fR has no +trouble). The \fB\-\-traditional\-format\fR switch tells \fBld\fR to not +combine duplicate entries. +.IP "\fB\-\-section\-start=\fR\fIsectionname\fR\fB=\fR\fIorg\fR" 4 +.IX Item "--section-start=sectionname=org" +Locate a section in the output file at the absolute +address given by \fIorg\fR. You may use this option as many +times as necessary to locate multiple sections in the command +line. +\&\fIorg\fR must be a single hexadecimal integer; +for compatibility with other linkers, you may omit the leading +\&\fB0x\fR usually associated with hexadecimal values. \fINote:\fR there +should be no white space between \fIsectionname\fR, the equals +sign ("\fB=\fR"), and \fIorg\fR. +.IP "\fB\-Tbss=\fR\fIorg\fR" 4 +.IX Item "-Tbss=org" +.PD 0 +.IP "\fB\-Tdata=\fR\fIorg\fR" 4 +.IX Item "-Tdata=org" +.IP "\fB\-Ttext=\fR\fIorg\fR" 4 +.IX Item "-Ttext=org" +.PD +Same as \fB\-\-section\-start\fR, with \f(CW\*(C`.bss\*(C'\fR, \f(CW\*(C`.data\*(C'\fR or +\&\f(CW\*(C`.text\*(C'\fR as the \fIsectionname\fR. +.IP "\fB\-Ttext\-segment=\fR\fIorg\fR" 4 +.IX Item "-Ttext-segment=org" +When creating an \s-1ELF\s0 executable, it will set the address of the first +byte of the text segment. +.IP "\fB\-Trodata\-segment=\fR\fIorg\fR" 4 +.IX Item "-Trodata-segment=org" +When creating an \s-1ELF\s0 executable or shared object for a target where +the read-only data is in its own segment separate from the executable +text, it will set the address of the first byte of the read-only data segment. +.IP "\fB\-Tldata\-segment=\fR\fIorg\fR" 4 +.IX Item "-Tldata-segment=org" +When creating an \s-1ELF\s0 executable or shared object for x86\-64 medium memory +model, it will set the address of the first byte of the ldata segment. +.IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4 +.IX Item "--unresolved-symbols=method" +Determine how to handle unresolved symbols. There are four possible +values for \fBmethod\fR: +.RS 4 +.IP "\fBignore-all\fR" 4 +.IX Item "ignore-all" +Do not report any unresolved symbols. +.IP "\fBreport-all\fR" 4 +.IX Item "report-all" +Report all unresolved symbols. This is the default. +.IP "\fBignore-in-object-files\fR" 4 +.IX Item "ignore-in-object-files" +Report unresolved symbols that are contained in shared libraries, but +ignore them if they come from regular object files. +.IP "\fBignore-in-shared-libs\fR" 4 +.IX Item "ignore-in-shared-libs" +Report unresolved symbols that come from regular object files, but +ignore them if they come from shared libraries. This can be useful +when creating a dynamic binary and it is known that all the shared +libraries that it should be referencing are included on the linker's +command line. +.RE +.RS 4 +.Sp +The behaviour for shared libraries on their own can also be controlled +by the \fB\-\-[no\-]allow\-shlib\-undefined\fR option. +.Sp +Normally the linker will generate an error message for each reported +unresolved symbol but the option \fB\-\-warn\-unresolved\-symbols\fR +can change this to a warning. +.RE +.IP "\fB\-\-dll\-verbose\fR" 4 +.IX Item "--dll-verbose" +.PD 0 +.IP "\fB\-\-verbose[=\fR\fI\s-1NUMBER\s0\fR\fB]\fR" 4 +.IX Item "--verbose[=NUMBER]" +.PD +Display the version number for \fBld\fR and list the linker emulations +supported. Display which input files can and cannot be opened. Display +the linker script being used by the linker. If the optional \fI\s-1NUMBER\s0\fR +argument > 1, plugin symbol status will also be displayed. +.IP "\fB\-\-version\-script=\fR\fIversion-scriptfile\fR" 4 +.IX Item "--version-script=version-scriptfile" +Specify the name of a version script to the linker. This is typically +used when creating shared libraries to specify additional information +about the version hierarchy for the library being created. This option +is only fully supported on \s-1ELF\s0 platforms which support shared libraries; +see \fB\s-1VERSION\s0\fR. It is partially supported on \s-1PE\s0 platforms, which can +use version scripts to filter symbol visibility in auto-export mode: any +symbols marked \fBlocal\fR in the version script will not be exported. +.IP "\fB\-\-warn\-common\fR" 4 +.IX Item "--warn-common" +Warn when a common symbol is combined with another common symbol or with +a symbol definition. Unix linkers allow this somewhat sloppy practice, +but linkers on some other operating systems do not. This option allows +you to find potential problems from combining global symbols. +Unfortunately, some C libraries use this practice, so you may get some +warnings about symbols in the libraries as well as in your programs. +.Sp +There are three kinds of global symbols, illustrated here by C examples: +.RS 4 +.IP "\fBint i = 1;\fR" 4 +.IX Item "int i = 1;" +A definition, which goes in the initialized data section of the output +file. +.IP "\fBextern int i;\fR" 4 +.IX Item "extern int i;" +An undefined reference, which does not allocate space. +There must be either a definition or a common symbol for the +variable somewhere. +.IP "\fBint i;\fR" 4 +.IX Item "int i;" +A common symbol. If there are only (one or more) common symbols for a +variable, it goes in the uninitialized data area of the output file. +The linker merges multiple common symbols for the same variable into a +single symbol. If they are of different sizes, it picks the largest +size. The linker turns a common symbol into a declaration, if there is +a definition of the same variable. +.RE +.RS 4 +.Sp +The \fB\-\-warn\-common\fR option can produce five kinds of warnings. +Each warning consists of a pair of lines: the first describes the symbol +just encountered, and the second describes the previous symbol +encountered with the same name. One or both of the two symbols will be +a common symbol. +.IP "1." 4 +Turning a common symbol into a reference, because there is already a +definition for the symbol. +.Sp +.Vb 3 +\& (

    ): warning: common of \`\*(Aq +\& overridden by definition +\& (
    ): warning: defined here +.Ve +.IP "2." 4 +Turning a common symbol into a reference, because a later definition for +the symbol is encountered. This is the same as the previous case, +except that the symbols are encountered in a different order. +.Sp +.Vb 3 +\& (
    ): warning: definition of \`\*(Aq +\& overriding common +\& (
    ): warning: common is here +.Ve +.IP "3." 4 +Merging a common symbol with a previous same-sized common symbol. +.Sp +.Vb 3 +\& (
    ): warning: multiple common +\& of \`\*(Aq +\& (
    ): warning: previous common is here +.Ve +.IP "4." 4 +Merging a common symbol with a previous larger common symbol. +.Sp +.Vb 3 +\& (
    ): warning: common of \`\*(Aq +\& overridden by larger common +\& (
    ): warning: larger common is here +.Ve +.IP "5." 4 +Merging a common symbol with a previous smaller common symbol. This is +the same as the previous case, except that the symbols are +encountered in a different order. +.Sp +.Vb 3 +\& (
    ): warning: common of \`\*(Aq +\& overriding smaller common +\& (
    ): warning: smaller common is here +.Ve +.RE +.RS 4 +.RE +.IP "\fB\-\-warn\-constructors\fR" 4 +.IX Item "--warn-constructors" +Warn if any global constructors are used. This is only useful for a few +object file formats. For formats like \s-1COFF\s0 or \s-1ELF,\s0 the linker can not +detect the use of global constructors. +.IP "\fB\-\-warn\-multiple\-gp\fR" 4 +.IX Item "--warn-multiple-gp" +Warn if multiple global pointer values are required in the output file. +This is only meaningful for certain processors, such as the Alpha. +Specifically, some processors put large-valued constants in a special +section. A special register (the global pointer) points into the middle +of this section, so that constants can be loaded efficiently via a +base-register relative addressing mode. Since the offset in +base-register relative mode is fixed and relatively small (e.g., 16 +bits), this limits the maximum size of the constant pool. Thus, in +large programs, it is often necessary to use multiple global pointer +values in order to be able to address all possible constants. This +option causes a warning to be issued whenever this case occurs. +.IP "\fB\-\-warn\-once\fR" 4 +.IX Item "--warn-once" +Only warn once for each undefined symbol, rather than once per module +which refers to it. +.IP "\fB\-\-warn\-section\-align\fR" 4 +.IX Item "--warn-section-align" +Warn if the address of an output section is changed because of +alignment. Typically, the alignment will be set by an input section. +The address will only be changed if it not explicitly specified; that +is, if the \f(CW\*(C`SECTIONS\*(C'\fR command does not specify a start address for +the section. +.IP "\fB\-\-warn\-shared\-textrel\fR" 4 +.IX Item "--warn-shared-textrel" +Warn if the linker adds a \s-1DT_TEXTREL\s0 to a shared object. +.IP "\fB\-\-warn\-alternate\-em\fR" 4 +.IX Item "--warn-alternate-em" +Warn if an object has alternate \s-1ELF\s0 machine code. +.IP "\fB\-\-warn\-unresolved\-symbols\fR" 4 +.IX Item "--warn-unresolved-symbols" +If the linker is going to report an unresolved symbol (see the option +\&\fB\-\-unresolved\-symbols\fR) it will normally generate an error. +This option makes it generate a warning instead. +.IP "\fB\-\-error\-unresolved\-symbols\fR" 4 +.IX Item "--error-unresolved-symbols" +This restores the linker's default behaviour of generating errors when +it is reporting unresolved symbols. +.IP "\fB\-\-whole\-archive\fR" 4 +.IX Item "--whole-archive" +For each archive mentioned on the command line after the +\&\fB\-\-whole\-archive\fR option, include every object file in the archive +in the link, rather than searching the archive for the required object +files. This is normally used to turn an archive file into a shared +library, forcing every object to be included in the resulting shared +library. This option may be used more than once. +.Sp +Two notes when using this option from gcc: First, gcc doesn't know +about this option, so you have to use \fB\-Wl,\-whole\-archive\fR. +Second, don't forget to use \fB\-Wl,\-no\-whole\-archive\fR after your +list of archives, because gcc will add its own list of archives to +your link and you may not want this flag to affect those as well. +.IP "\fB\-\-wrap=\fR\fIsymbol\fR" 4 +.IX Item "--wrap=symbol" +Use a wrapper function for \fIsymbol\fR. Any undefined reference to +\&\fIsymbol\fR will be resolved to \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. Any +undefined reference to \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR will be resolved to +\&\fIsymbol\fR. +.Sp +This can be used to provide a wrapper for a system function. The +wrapper function should be called \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. If it +wishes to call the system function, it should call +\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR. +.Sp +Here is a trivial example: +.Sp +.Vb 6 +\& void * +\& _\|_wrap_malloc (size_t c) +\& { +\& printf ("malloc called with %zu\en", c); +\& return _\|_real_malloc (c); +\& } +.Ve +.Sp +If you link other code with this file using \fB\-\-wrap malloc\fR, then +all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR +instead. The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will +call the real \f(CW\*(C`malloc\*(C'\fR function. +.Sp +You may wish to provide a \f(CW\*(C`_\|_real_malloc\*(C'\fR function as well, so that +links without the \fB\-\-wrap\fR option will succeed. If you do this, +you should not put the definition of \f(CW\*(C`_\|_real_malloc\*(C'\fR in the same +file as \f(CW\*(C`_\|_wrap_malloc\*(C'\fR; if you do, the assembler may resolve the +call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR. +.IP "\fB\-\-eh\-frame\-hdr\fR" 4 +.IX Item "--eh-frame-hdr" +Request creation of \f(CW\*(C`.eh_frame_hdr\*(C'\fR section and \s-1ELF +\&\s0\f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR segment header. +.IP "\fB\-\-no\-ld\-generated\-unwind\-info\fR" 4 +.IX Item "--no-ld-generated-unwind-info" +Request creation of \f(CW\*(C`.eh_frame\*(C'\fR unwind info for linker +generated code sections like \s-1PLT. \s0 This option is on by default +if linker generated unwind info is supported. +.IP "\fB\-\-enable\-new\-dtags\fR" 4 +.IX Item "--enable-new-dtags" +.PD 0 +.IP "\fB\-\-disable\-new\-dtags\fR" 4 +.IX Item "--disable-new-dtags" +.PD +This linker can create the new dynamic tags in \s-1ELF.\s0 But the older \s-1ELF\s0 +systems may not understand them. If you specify +\&\fB\-\-enable\-new\-dtags\fR, the new dynamic tags will be created as needed +and older dynamic tags will be omitted. +If you specify \fB\-\-disable\-new\-dtags\fR, no new dynamic tags will be +created. By default, the new dynamic tags are not created. Note that +those options are only available for \s-1ELF\s0 systems. +.IP "\fB\-\-hash\-size=\fR\fInumber\fR" 4 +.IX Item "--hash-size=number" +Set the default size of the linker's hash tables to a prime number +close to \fInumber\fR. Increasing this value can reduce the length of +time it takes the linker to perform its tasks, at the expense of +increasing the linker's memory requirements. Similarly reducing this +value can reduce the memory requirements at the expense of speed. +.IP "\fB\-\-hash\-style=\fR\fIstyle\fR" 4 +.IX Item "--hash-style=style" +Set the type of linker's hash table(s). \fIstyle\fR can be either +\&\f(CW\*(C`sysv\*(C'\fR for classic \s-1ELF \s0\f(CW\*(C`.hash\*(C'\fR section, \f(CW\*(C`gnu\*(C'\fR for +new style \s-1GNU \s0\f(CW\*(C`.gnu.hash\*(C'\fR section or \f(CW\*(C`both\*(C'\fR for both +the classic \s-1ELF \s0\f(CW\*(C`.hash\*(C'\fR and new style \s-1GNU \s0\f(CW\*(C`.gnu.hash\*(C'\fR +hash tables. The default is \f(CW\*(C`sysv\*(C'\fR. +.IP "\fB\-\-reduce\-memory\-overheads\fR" 4 +.IX Item "--reduce-memory-overheads" +This option reduces memory requirements at ld runtime, at the expense of +linking speed. This was introduced to select the old O(n^2) algorithm +for link map file generation, rather than the new O(n) algorithm which uses +about 40% more memory for symbol storage. +.Sp +Another effect of the switch is to set the default hash table size to +1021, which again saves memory at the cost of lengthening the linker's +run time. This is not done however if the \fB\-\-hash\-size\fR switch +has been used. +.Sp +The \fB\-\-reduce\-memory\-overheads\fR switch may be also be used to +enable other tradeoffs in future versions of the linker. +.IP "\fB\-\-build\-id\fR" 4 +.IX Item "--build-id" +.PD 0 +.IP "\fB\-\-build\-id=\fR\fIstyle\fR" 4 +.IX Item "--build-id=style" +.PD +Request the creation of a \f(CW\*(C`.note.gnu.build\-id\*(C'\fR \s-1ELF\s0 note section +or a \f(CW\*(C`.build\-id\*(C'\fR \s-1COFF\s0 section. The contents of the note are +unique bits identifying this linked file. \fIstyle\fR can be +\&\f(CW\*(C`uuid\*(C'\fR to use 128 random bits, \f(CW\*(C`sha1\*(C'\fR to use a 160\-bit +\&\s-1SHA1\s0 hash on the normative parts of the output contents, +\&\f(CW\*(C`md5\*(C'\fR to use a 128\-bit \s-1MD5\s0 hash on the normative parts of +the output contents, or \f(CW\*(C`0x\f(CIhexstring\f(CW\*(C'\fR to use a chosen bit +string specified as an even number of hexadecimal digits (\f(CW\*(C`\-\*(C'\fR and +\&\f(CW\*(C`:\*(C'\fR characters between digit pairs are ignored). If \fIstyle\fR +is omitted, \f(CW\*(C`sha1\*(C'\fR is used. +.Sp +The \f(CW\*(C`md5\*(C'\fR and \f(CW\*(C`sha1\*(C'\fR styles produces an identifier +that is always the same in an identical output file, but will be +unique among all nonidentical output files. It is not intended +to be compared as a checksum for the file's contents. A linked +file may be changed later by other tools, but the build \s-1ID\s0 bit +string identifying the original linked file does not change. +.Sp +Passing \f(CW\*(C`none\*(C'\fR for \fIstyle\fR disables the setting from any +\&\f(CW\*(C`\-\-build\-id\*(C'\fR options earlier on the command line. +.PP +The i386 \s-1PE\s0 linker supports the \fB\-shared\fR option, which causes +the output to be a dynamically linked library (\s-1DLL\s0) instead of a +normal executable. You should name the output \f(CW\*(C`*.dll\*(C'\fR when you +use this option. In addition, the linker fully supports the standard +\&\f(CW\*(C`*.def\*(C'\fR files, which may be specified on the linker command line +like an object file (in fact, it should precede archives it exports +symbols from, to ensure that they get linked in, just like a normal +object file). +.PP +In addition to the options common to all targets, the i386 \s-1PE\s0 linker +support additional command line options that are specific to the i386 +\&\s-1PE\s0 target. Options that take values may be separated from their +values by either a space or an equals sign. +.IP "\fB\-\-add\-stdcall\-alias\fR" 4 +.IX Item "--add-stdcall-alias" +If given, symbols with a stdcall suffix (@\fInn\fR) will be exported +as-is and also with the suffix stripped. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-base\-file\fR \fIfile\fR" 4 +.IX Item "--base-file file" +Use \fIfile\fR as the name of a file in which to save the base +addresses of all the relocations needed for generating DLLs with +\&\fIdlltool\fR. +[This is an i386 \s-1PE\s0 specific option] +.IP "\fB\-\-dll\fR" 4 +.IX Item "--dll" +Create a \s-1DLL\s0 instead of a regular executable. You may also use +\&\fB\-shared\fR or specify a \f(CW\*(C`LIBRARY\*(C'\fR in a given \f(CW\*(C`.def\*(C'\fR +file. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-enable\-long\-section\-names\fR" 4 +.IX Item "--enable-long-section-names" +.PD 0 +.IP "\fB\-\-disable\-long\-section\-names\fR" 4 +.IX Item "--disable-long-section-names" +.PD +The \s-1PE\s0 variants of the Coff object format add an extension that permits +the use of section names longer than eight characters, the normal limit +for Coff. By default, these names are only allowed in object files, as +fully-linked executable images do not carry the Coff string table required +to support the longer names. As a \s-1GNU\s0 extension, it is possible to +allow their use in executable images as well, or to (probably pointlessly!) +disallow it in object files, by using these two options. Executable images +generated with these long section names are slightly non-standard, carrying +as they do a string table, and may generate confusing output when examined +with non-GNU PE-aware tools, such as file viewers and dumpers. However, +\&\s-1GDB\s0 relies on the use of \s-1PE\s0 long section names to find Dwarf\-2 debug +information sections in an executable image at runtime, and so if neither +option is specified on the command-line, \fBld\fR will enable long +section names, overriding the default and technically correct behaviour, +when it finds the presence of debug information while linking an executable +image and not stripping symbols. +[This option is valid for all \s-1PE\s0 targeted ports of the linker] +.IP "\fB\-\-enable\-stdcall\-fixup\fR" 4 +.IX Item "--enable-stdcall-fixup" +.PD 0 +.IP "\fB\-\-disable\-stdcall\-fixup\fR" 4 +.IX Item "--disable-stdcall-fixup" +.PD +If the link finds a symbol that it cannot resolve, it will attempt to +do \*(L"fuzzy linking\*(R" by looking for another defined symbol that differs +only in the format of the symbol name (cdecl vs stdcall) and will +resolve that symbol by linking to the match. For example, the +undefined symbol \f(CW\*(C`_foo\*(C'\fR might be linked to the function +\&\f(CW\*(C`_foo@12\*(C'\fR, or the undefined symbol \f(CW\*(C`_bar@16\*(C'\fR might be linked +to the function \f(CW\*(C`_bar\*(C'\fR. When the linker does this, it prints a +warning, since it normally should have failed to link, but sometimes +import libraries generated from third-party dlls may need this feature +to be usable. If you specify \fB\-\-enable\-stdcall\-fixup\fR, this +feature is fully enabled and warnings are not printed. If you specify +\&\fB\-\-disable\-stdcall\-fixup\fR, this feature is disabled and such +mismatches are considered to be errors. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-leading\-underscore\fR" 4 +.IX Item "--leading-underscore" +.PD 0 +.IP "\fB\-\-no\-leading\-underscore\fR" 4 +.IX Item "--no-leading-underscore" +.PD +For most targets default symbol-prefix is an underscore and is defined +in target's description. By this option it is possible to +disable/enable the default underscore symbol-prefix. +.IP "\fB\-\-export\-all\-symbols\fR" 4 +.IX Item "--export-all-symbols" +If given, all global symbols in the objects used to build a \s-1DLL\s0 will +be exported by the \s-1DLL. \s0 Note that this is the default if there +otherwise wouldn't be any exported symbols. When symbols are +explicitly exported via \s-1DEF\s0 files or implicitly exported via function +attributes, the default is to not export anything else unless this +option is given. Note that the symbols \f(CW\*(C`DllMain@12\*(C'\fR, +\&\f(CW\*(C`DllEntryPoint@0\*(C'\fR, \f(CW\*(C`DllMainCRTStartup@12\*(C'\fR, and +\&\f(CW\*(C`impure_ptr\*(C'\fR will not be automatically +exported. Also, symbols imported from other DLLs will not be +re-exported, nor will symbols specifying the \s-1DLL\s0's internal layout +such as those beginning with \f(CW\*(C`_head_\*(C'\fR or ending with +\&\f(CW\*(C`_iname\*(C'\fR. In addition, no symbols from \f(CW\*(C`libgcc\*(C'\fR, +\&\f(CW\*(C`libstd++\*(C'\fR, \f(CW\*(C`libmingw32\*(C'\fR, or \f(CW\*(C`crtX.o\*(C'\fR will be exported. +Symbols whose names begin with \f(CW\*(C`_\|_rtti_\*(C'\fR or \f(CW\*(C`_\|_builtin_\*(C'\fR will +not be exported, to help with \*(C+ DLLs. Finally, there is an +extensive list of cygwin-private symbols that are not exported +(obviously, this applies on when building DLLs for cygwin targets). +These cygwin-excludes are: \f(CW\*(C`_cygwin_dll_entry@12\*(C'\fR, +\&\f(CW\*(C`_cygwin_crt0_common@8\*(C'\fR, \f(CW\*(C`_cygwin_noncygwin_dll_entry@12\*(C'\fR, +\&\f(CW\*(C`_fmode\*(C'\fR, \f(CW\*(C`_impure_ptr\*(C'\fR, \f(CW\*(C`cygwin_attach_dll\*(C'\fR, +\&\f(CW\*(C`cygwin_premain0\*(C'\fR, \f(CW\*(C`cygwin_premain1\*(C'\fR, \f(CW\*(C`cygwin_premain2\*(C'\fR, +\&\f(CW\*(C`cygwin_premain3\*(C'\fR, and \f(CW\*(C`environ\*(C'\fR. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4 +.IX Item "--exclude-symbols symbol,symbol,..." +Specifies a list of symbols which should not be automatically +exported. The symbol names may be delimited by commas or colons. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-exclude\-all\-symbols\fR" 4 +.IX Item "--exclude-all-symbols" +Specifies no symbols should be automatically exported. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-file\-alignment\fR" 4 +.IX Item "--file-alignment" +Specify the file alignment. Sections in the file will always begin at +file offsets which are multiples of this number. This defaults to +512. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-heap\fR \fIreserve\fR" 4 +.IX Item "--heap reserve" +.PD 0 +.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--heap reserve,commit" +.PD +Specify the number of bytes of memory to reserve (and optionally commit) +to be used as heap for this program. The default is 1MB reserved, 4K +committed. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4 +.IX Item "--image-base value" +Use \fIvalue\fR as the base address of your program or dll. This is +the lowest memory location that will be used when your program or dll +is loaded. To reduce the need to relocate and improve performance of +your dlls, each should have a unique base address and not overlap any +other dlls. The default is 0x400000 for executables, and 0x10000000 +for dlls. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-kill\-at\fR" 4 +.IX Item "--kill-at" +If given, the stdcall suffixes (@\fInn\fR) will be stripped from +symbols before they are exported. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-large\-address\-aware\fR" 4 +.IX Item "--large-address-aware" +If given, the appropriate bit in the \*(L"Characteristics\*(R" field of the \s-1COFF\s0 +header is set to indicate that this executable supports virtual addresses +greater than 2 gigabytes. This should be used in conjunction with the /3GB +or /USERVA=\fIvalue\fR megabytes switch in the \*(L"[operating systems]\*(R" +section of the \s-1BOOT.INI. \s0 Otherwise, this bit has no effect. +[This option is specific to \s-1PE\s0 targeted ports of the linker] +.IP "\fB\-\-disable\-large\-address\-aware\fR" 4 +.IX Item "--disable-large-address-aware" +Reverts the effect of a previous \fB\-\-large\-address\-aware\fR option. +This is useful if \fB\-\-large\-address\-aware\fR is always set by the compiler +driver (e.g. Cygwin gcc) and the executable does not support virtual +addresses greater than 2 gigabytes. +[This option is specific to \s-1PE\s0 targeted ports of the linker] +.IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4 +.IX Item "--major-image-version value" +Sets the major number of the \*(L"image version\*(R". Defaults to 1. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4 +.IX Item "--major-os-version value" +Sets the major number of the \*(L"os version\*(R". Defaults to 4. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4 +.IX Item "--major-subsystem-version value" +Sets the major number of the \*(L"subsystem version\*(R". Defaults to 4. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-image-version value" +Sets the minor number of the \*(L"image version\*(R". Defaults to 0. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-os-version value" +Sets the minor number of the \*(L"os version\*(R". Defaults to 0. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4 +.IX Item "--minor-subsystem-version value" +Sets the minor number of the \*(L"subsystem version\*(R". Defaults to 0. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-output\-def\fR \fIfile\fR" 4 +.IX Item "--output-def file" +The linker will create the file \fIfile\fR which will contain a \s-1DEF\s0 +file corresponding to the \s-1DLL\s0 the linker is generating. This \s-1DEF\s0 file +(which should be called \f(CW\*(C`*.def\*(C'\fR) may be used to create an import +library with \f(CW\*(C`dlltool\*(C'\fR or may be used as a reference to +automatically or implicitly exported symbols. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-out\-implib\fR \fIfile\fR" 4 +.IX Item "--out-implib file" +The linker will create the file \fIfile\fR which will contain an +import lib corresponding to the \s-1DLL\s0 the linker is generating. This +import lib (which should be called \f(CW\*(C`*.dll.a\*(C'\fR or \f(CW\*(C`*.a\*(C'\fR +may be used to link clients against the generated \s-1DLL\s0; this behaviour +makes it possible to skip a separate \f(CW\*(C`dlltool\*(C'\fR import library +creation step. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-enable\-auto\-image\-base\fR" 4 +.IX Item "--enable-auto-image-base" +.PD 0 +.IP "\fB\-\-enable\-auto\-image\-base=\fR\fIvalue\fR" 4 +.IX Item "--enable-auto-image-base=value" +.PD +Automatically choose the image base for DLLs, optionally starting with base +\&\fIvalue\fR, unless one is specified using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument. +By using a hash generated from the dllname to create unique image bases +for each \s-1DLL,\s0 in-memory collisions and relocations which can delay program +execution are avoided. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-disable\-auto\-image\-base\fR" 4 +.IX Item "--disable-auto-image-base" +Do not automatically generate a unique image base. If there is no +user-specified image base (\f(CW\*(C`\-\-image\-base\*(C'\fR) then use the platform +default. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4 +.IX Item "--dll-search-prefix string" +When linking dynamically to a dll without an import library, +search for \f(CW\*(C`.dll\*(C'\fR in preference to +\&\f(CW\*(C`lib.dll\*(C'\fR. This behaviour allows easy distinction +between DLLs built for the various \*(L"subplatforms\*(R": native, cygwin, +uwin, pw, etc. For instance, cygwin DLLs typically use +\&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-enable\-auto\-import\fR" 4 +.IX Item "--enable-auto-import" +Do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for +\&\s-1DATA\s0 imports from DLLs, and create the necessary thunking symbols when +building the import libraries with those \s-1DATA\s0 exports. Note: Use of the +\&'auto\-import' extension will cause the text section of the image file +to be made writable. This does not conform to the PE-COFF format +specification published by Microsoft. +.Sp +Note \- use of the 'auto\-import' extension will also cause read only +data which would normally be placed into the .rdata section to be +placed into the .data section instead. This is in order to work +around a problem with consts that is described here: +http://www.cygwin.com/ml/cygwin/2004\-09/msg01101.html +.Sp +Using 'auto\-import' generally will 'just work' \*(-- but sometimes you may +see this message: +.Sp +"variable '' can't be auto-imported. Please read the +documentation for ld's \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details." +.Sp +This message occurs when some (sub)expression accesses an address +ultimately given by the sum of two constants (Win32 import tables only +allow one). Instances where this may occur include accesses to member +fields of struct variables imported from a \s-1DLL,\s0 as well as using a +constant index into an array variable imported from a \s-1DLL. \s0 Any +multiword variable (arrays, structs, long long, etc) may trigger +this error condition. However, regardless of the exact data type +of the offending exported variable, ld will always detect it, issue +the warning, and exit. +.Sp +There are several ways to address this difficulty, regardless of the +data type of the exported variable: +.Sp +One way is to use \-\-enable\-runtime\-pseudo\-reloc switch. This leaves the task +of adjusting references in your client code for runtime environment, so +this method works only when runtime environment supports this feature. +.Sp +A second solution is to force one of the 'constants' to be a variable \*(-- +that is, unknown and un-optimizable at compile time. For arrays, +there are two possibilities: a) make the indexee (the array's address) +a variable, or b) make the 'constant' index a variable. Thus: +.Sp +.Vb 3 +\& extern type extern_array[]; +\& extern_array[1] \-\-> +\& { volatile type *t=extern_array; t[1] } +.Ve +.Sp +or +.Sp +.Vb 3 +\& extern type extern_array[]; +\& extern_array[1] \-\-> +\& { volatile int t=1; extern_array[t] } +.Ve +.Sp +For structs (and most other multiword data types) the only option +is to make the struct itself (or the long long, or the ...) variable: +.Sp +.Vb 3 +\& extern struct s extern_struct; +\& extern_struct.field \-\-> +\& { volatile struct s *t=&extern_struct; t\->field } +.Ve +.Sp +or +.Sp +.Vb 3 +\& extern long long extern_ll; +\& extern_ll \-\-> +\& { volatile long long * local_ll=&extern_ll; *local_ll } +.Ve +.Sp +A third method of dealing with this difficulty is to abandon +\&'auto\-import' for the offending symbol and mark it with +\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR. However, in practice that +requires using compile-time #defines to indicate whether you are +building a \s-1DLL,\s0 building client code that will link to the \s-1DLL,\s0 or +merely building/linking to a static library. In making the choice +between the various methods of resolving the 'direct address with +constant offset' problem, you should consider typical real-world usage: +.Sp +Original: +.Sp +.Vb 7 +\& \-\-foo.h +\& extern int arr[]; +\& \-\-foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& printf("%d\en",arr[1]); +\& } +.Ve +.Sp +Solution 1: +.Sp +.Vb 9 +\& \-\-foo.h +\& extern int arr[]; +\& \-\-foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& /* This workaround is for win32 and cygwin; do not "optimize" */ +\& volatile int *parr = arr; +\& printf("%d\en",parr[1]); +\& } +.Ve +.Sp +Solution 2: +.Sp +.Vb 10 +\& \-\-foo.h +\& /* Note: auto\-export is assumed (no _\|_declspec(dllexport)) */ +\& #if (defined(_WIN32) || defined(_\|_CYGWIN_\|_)) && \e +\& !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) +\& #define FOO_IMPORT _\|_declspec(dllimport) +\& #else +\& #define FOO_IMPORT +\& #endif +\& extern FOO_IMPORT int arr[]; +\& \-\-foo.c +\& #include "foo.h" +\& void main(int argc, char **argv){ +\& printf("%d\en",arr[1]); +\& } +.Ve +.Sp +A fourth way to avoid this problem is to re-code your +library to use a functional interface rather than a data interface +for the offending variables (e.g. \fIset_foo()\fR and \fIget_foo()\fR accessor +functions). +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-disable\-auto\-import\fR" 4 +.IX Item "--disable-auto-import" +Do not attempt to do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to +\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for \s-1DATA\s0 imports from DLLs. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-enable\-runtime\-pseudo\-reloc\fR" 4 +.IX Item "--enable-runtime-pseudo-reloc" +If your code contains expressions described in \-\-enable\-auto\-import section, +that is, \s-1DATA\s0 imports from \s-1DLL\s0 with non-zero offset, this switch will create +a vector of 'runtime pseudo relocations' which can be used by runtime +environment to adjust references to such data in your client code. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-disable\-runtime\-pseudo\-reloc\fR" 4 +.IX Item "--disable-runtime-pseudo-reloc" +Do not create pseudo relocations for non-zero offset \s-1DATA\s0 imports from +DLLs. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4 +.IX Item "--enable-extra-pe-debug" +Show additional debug info related to auto-import symbol thunking. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-section\-alignment\fR" 4 +.IX Item "--section-alignment" +Sets the section alignment. Sections in memory will always begin at +addresses which are a multiple of this number. Defaults to 0x1000. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-stack\fR \fIreserve\fR" 4 +.IX Item "--stack reserve" +.PD 0 +.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--stack reserve,commit" +.PD +Specify the number of bytes of memory to reserve (and optionally commit) +to be used as stack for this program. The default is 2MB reserved, 4K +committed. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4 +.IX Item "--subsystem which" +.PD 0 +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4 +.IX Item "--subsystem which:major" +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4 +.IX Item "--subsystem which:major.minor" +.PD +Specifies the subsystem under which your program will execute. The +legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR, +\&\f(CW\*(C`console\*(C'\fR, \f(CW\*(C`posix\*(C'\fR, and \f(CW\*(C`xbox\*(C'\fR. You may optionally set +the subsystem version also. Numeric values are also accepted for +\&\fIwhich\fR. +[This option is specific to the i386 \s-1PE\s0 targeted port of the linker] +.Sp +The following options set flags in the \f(CW\*(C`DllCharacteristics\*(C'\fR field +of the \s-1PE\s0 file header: +[These options are specific to \s-1PE\s0 targeted ports of the linker] +.IP "\fB\-\-high\-entropy\-va\fR" 4 +.IX Item "--high-entropy-va" +Image is compatible with 64\-bit address space layout randomization +(\s-1ASLR\s0). +.IP "\fB\-\-dynamicbase\fR" 4 +.IX Item "--dynamicbase" +The image base address may be relocated using address space layout +randomization (\s-1ASLR\s0). This feature was introduced with \s-1MS\s0 Windows +Vista for i386 \s-1PE\s0 targets. +.IP "\fB\-\-forceinteg\fR" 4 +.IX Item "--forceinteg" +Code integrity checks are enforced. +.IP "\fB\-\-nxcompat\fR" 4 +.IX Item "--nxcompat" +The image is compatible with the Data Execution Prevention. +This feature was introduced with \s-1MS\s0 Windows \s-1XP SP2\s0 for i386 \s-1PE\s0 targets. +.IP "\fB\-\-no\-isolation\fR" 4 +.IX Item "--no-isolation" +Although the image understands isolation, do not isolate the image. +.IP "\fB\-\-no\-seh\fR" 4 +.IX Item "--no-seh" +The image does not use \s-1SEH.\s0 No \s-1SE\s0 handler may be called from +this image. +.IP "\fB\-\-no\-bind\fR" 4 +.IX Item "--no-bind" +Do not bind this image. +.IP "\fB\-\-wdmdriver\fR" 4 +.IX Item "--wdmdriver" +The driver uses the \s-1MS\s0 Windows Driver Model. +.IP "\fB\-\-tsaware\fR" 4 +.IX Item "--tsaware" +The image is Terminal Server aware. +.IP "\fB\-\-insert\-timestamp\fR" 4 +.IX Item "--insert-timestamp" +.PD 0 +.IP "\fB\-\-no\-insert\-timestamp\fR" 4 +.IX Item "--no-insert-timestamp" +.PD +Insert a real timestamp into the image. This is the default behaviour +as it matches legacy code and it means that the image will work with +other, proprietary tools. The problem with this default is that it +will result in slightly different images being produced each tiem the +same sources are linked. The option \fB\-\-no\-insert\-timestamp\fR +can be used to insert a zero value for the timestamp, this ensuring +that binaries produced from indentical sources will compare +identically. +.PP +The C6X uClinux target uses a binary format called \s-1DSBT\s0 to support shared +libraries. Each shared library in the system needs to have a unique index; +all executables use an index of 0. +.IP "\fB\-\-dsbt\-size\fR \fIsize\fR" 4 +.IX Item "--dsbt-size size" +This option sets the number of entires in the \s-1DSBT\s0 of the current executable +or shared library to \fIsize\fR. The default is to create a table with 64 +entries. +.IP "\fB\-\-dsbt\-index\fR \fIindex\fR" 4 +.IX Item "--dsbt-index index" +This option sets the \s-1DSBT\s0 index of the current executable or shared library +to \fIindex\fR. The default is 0, which is appropriate for generating +executables. If a shared library is generated with a \s-1DSBT\s0 index of 0, the +\&\f(CW\*(C`R_C6000_DSBT_INDEX\*(C'\fR relocs are copied into the output file. +.Sp +The \fB\-\-no\-merge\-exidx\-entries\fR switch disables the merging of adjacent +exidx entries in frame unwind info. +.PP +The 68HC11 and 68HC12 linkers support specific options to control the +memory bank switching mapping and trampoline code generation. +.IP "\fB\-\-no\-trampoline\fR" 4 +.IX Item "--no-trampoline" +This option disables the generation of trampoline. By default a trampoline +is generated for each far function which is called using a \f(CW\*(C`jsr\*(C'\fR +instruction (this happens when a pointer to a far function is taken). +.IP "\fB\-\-bank\-window\fR \fIname\fR" 4 +.IX Item "--bank-window name" +This option indicates to the linker the name of the memory region in +the \fB\s-1MEMORY\s0\fR specification that describes the memory bank window. +The definition of such region is then used by the linker to compute +paging and addresses within the memory window. +.PP +The following options are supported to control handling of \s-1GOT\s0 generation +when linking for 68K targets. +.IP "\fB\-\-got=\fR\fItype\fR" 4 +.IX Item "--got=type" +This option tells the linker which \s-1GOT\s0 generation scheme to use. +\&\fItype\fR should be one of \fBsingle\fR, \fBnegative\fR, +\&\fBmultigot\fR or \fBtarget\fR. For more information refer to the +Info entry for \fIld\fR. +.PP +The following options are supported to control microMIPS instruction +generation when linking for \s-1MIPS\s0 targets. +.IP "\fB\-\-insn32\fR" 4 +.IX Item "--insn32" +.PD 0 +.IP "\fB\-\-no\-insn32\fR" 4 +.IX Item "--no-insn32" +.PD +These options control the choice of microMIPS instructions used in code +generated by the linker, such as that in the \s-1PLT\s0 or lazy binding stubs, +or in relaxation. If \fB\-\-insn32\fR is used, then the linker only uses +32\-bit instruction encodings. By default or if \fB\-\-no\-insn32\fR is +used, all instruction encodings are used, including 16\-bit ones where +possible. +.SH "ENVIRONMENT" +.IX Header "ENVIRONMENT" +You can change the behaviour of \fBld\fR with the environment variables +\&\f(CW\*(C`GNUTARGET\*(C'\fR, +\&\f(CW\*(C`LDEMULATION\*(C'\fR and \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR. +.PP +\&\f(CW\*(C`GNUTARGET\*(C'\fR determines the input-file object format if you don't +use \fB\-b\fR (or its synonym \fB\-\-format\fR). Its value should be one +of the \s-1BFD\s0 names for an input format. If there is no +\&\f(CW\*(C`GNUTARGET\*(C'\fR in the environment, \fBld\fR uses the natural format +of the target. If \f(CW\*(C`GNUTARGET\*(C'\fR is set to \f(CW\*(C`default\*(C'\fR then \s-1BFD\s0 +attempts to discover the input format by examining binary input files; +this method often succeeds, but there are potential ambiguities, since +there is no method of ensuring that the magic number used to specify +object-file formats is unique. However, the configuration procedure for +\&\s-1BFD\s0 on each system places the conventional format for that system first +in the search-list, so ambiguities are resolved in favor of convention. +.PP +\&\f(CW\*(C`LDEMULATION\*(C'\fR determines the default emulation if you don't use the +\&\fB\-m\fR option. The emulation can affect various aspects of linker +behaviour, particularly the default linker script. You can list the +available emulations with the \fB\-\-verbose\fR or \fB\-V\fR options. If +the \fB\-m\fR option is not used, and the \f(CW\*(C`LDEMULATION\*(C'\fR environment +variable is not defined, the default emulation depends upon how the +linker was configured. +.PP +Normally, the linker will default to demangling symbols. However, if +\&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR is set in the environment, then it will +default to not demangling symbols. This environment variable is used in +a similar fashion by the \f(CW\*(C`gcc\*(C'\fR linker wrapper program. The default +may be overridden by the \fB\-\-demangle\fR and \fB\-\-no\-demangle\fR +options. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and +the Info entries for \fIbinutils\fR and +\&\fIld\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/ld/ld.info b/ld/ld.info new file mode 100644 index 00000000000..e85dfe15cc6 --- /dev/null +++ b/ld/ld.info @@ -0,0 +1,8299 @@ +This is ld.info, produced by makeinfo version 4.8 from ld.texinfo. + +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Ld: (ld). The GNU linker. +END-INFO-DIR-ENTRY + + This file documents the GNU linker LD (GNU Binutils) version 2.25. + + Copyright (C) 1991-2014 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled "GNU +Free Documentation License". + + +File: ld.info, Node: Top, Next: Overview, Up: (dir) + +LD +** + +This file documents the GNU linker ld (GNU Binutils) version 2.25. + + This document is distributed under the terms of the GNU Free +Documentation License version 1.3. A copy of the license is included +in the section entitled "GNU Free Documentation License". + +* Menu: + +* Overview:: Overview +* Invocation:: Invocation +* Scripts:: Linker Scripts + +* Machine Dependent:: Machine Dependent Features + +* BFD:: BFD + +* Reporting Bugs:: Reporting Bugs +* MRI:: MRI Compatible Script Files +* GNU Free Documentation License:: GNU Free Documentation License +* LD Index:: LD Index + + +File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top + +1 Overview +********** + +`ld' combines a number of object and archive files, relocates their +data and ties up symbol references. Usually the last step in compiling +a program is to run `ld'. + + `ld' accepts Linker Command Language files written in a superset of +AT&T's Link Editor Command Language syntax, to provide explicit and +total control over the linking process. + + This version of `ld' uses the general purpose BFD libraries to +operate on object files. This allows `ld' to read, combine, and write +object files in many different formats--for example, COFF or `a.out'. +Different formats may be linked together to produce any available kind +of object file. *Note BFD::, for more information. + + Aside from its flexibility, the GNU linker is more helpful than other +linkers in providing diagnostic information. Many linkers abandon +execution immediately upon encountering an error; whenever possible, +`ld' continues executing, allowing you to identify other errors (or, in +some cases, to get an output file in spite of the error). + + +File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top + +2 Invocation +************ + +The GNU linker `ld' is meant to cover a broad range of situations, and +to be as compatible as possible with other linkers. As a result, you +have many choices to control its behavior. + +* Menu: + +* Options:: Command Line Options +* Environment:: Environment Variables + + +File: ld.info, Node: Options, Next: Environment, Up: Invocation + +2.1 Command Line Options +======================== + + The linker supports a plethora of command-line options, but in actual +practice few of them are used in any particular context. For instance, +a frequent use of `ld' is to link standard Unix object files on a +standard, supported Unix system. On such a system, to link a file +`hello.o': + + ld -o OUTPUT /lib/crt0.o hello.o -lc + + This tells `ld' to produce a file called OUTPUT as the result of +linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a', +which will come from the standard search directories. (See the +discussion of the `-l' option below.) + + Some of the command-line options to `ld' may be specified at any +point in the command line. However, options which refer to files, such +as `-l' or `-T', cause the file to be read at the point at which the +option appears in the command line, relative to the object files and +other file options. Repeating non-file options with a different +argument will either have no further effect, or override prior +occurrences (those further to the left on the command line) of that +option. Options which may be meaningfully specified more than once are +noted in the descriptions below. + + Non-option arguments are object files or archives which are to be +linked together. They may follow, precede, or be mixed in with +command-line options, except that an object file argument may not be +placed between an option and its argument. + + Usually the linker is invoked with at least one object file, but you +can specify other forms of binary input files using `-l', `-R', and the +script command language. If _no_ binary input files at all are +specified, the linker does not produce any output, and issues the +message `No input files'. + + If the linker cannot recognize the format of an object file, it will +assume that it is a linker script. A script specified in this way +augments the main linker script used for the link (either the default +linker script or the one specified by using `-T'). This feature +permits the linker to link against a file which appears to be an object +or an archive, but actually merely defines some symbol values, or uses +`INPUT' or `GROUP' to load other objects. Specifying a script in this +way merely augments the main linker script, with the extra commands +placed after the main script; use the `-T' option to replace the +default linker script entirely, but note the effect of the `INSERT' +command. *Note Scripts::. + + For options whose names are a single letter, option arguments must +either follow the option letter without intervening whitespace, or be +given as separate arguments immediately following the option that +requires them. + + For options whose names are multiple letters, either one dash or two +can precede the option name; for example, `-trace-symbol' and +`--trace-symbol' are equivalent. Note--there is one exception to this +rule. Multiple letter options that start with a lower case 'o' can +only be preceded by two dashes. This is to reduce confusion with the +`-o' option. So for example `-omagic' sets the output file name to +`magic' whereas `--omagic' sets the NMAGIC flag on the output. + + Arguments to multiple-letter options must either be separated from +the option name by an equals sign, or be given as separate arguments +immediately following the option that requires them. For example, +`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique +abbreviations of the names of multiple-letter options are accepted. + + Note--if the linker is being invoked indirectly, via a compiler +driver (e.g. `gcc') then all the linker command line options should be +prefixed by `-Wl,' (or whatever is appropriate for the particular +compiler driver) like this: + + gcc -Wl,--start-group foo.o bar.o -Wl,--end-group + + This is important, because otherwise the compiler driver program may +silently drop the linker options, resulting in a bad link. Confusion +may also arise when passing options that require values through a +driver, as the use of a space between option and argument acts as a +separator, and causes the driver to pass only the option to the linker +and the argument to the compiler. In this case, it is simplest to use +the joined forms of both single- and multiple-letter options, such as: + + gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map + + Here is a table of the generic command line switches accepted by the +GNU linker: + +`@FILE' + Read command-line options from FILE. The options read are + inserted in place of the original @FILE option. If FILE does not + exist, or cannot be read, then the option will be treated + literally, and not removed. + + Options in FILE are separated by whitespace. A whitespace + character may be included in an option by surrounding the entire + option in either single or double quotes. Any character + (including a backslash) may be included by prefixing the character + to be included with a backslash. The FILE may itself contain + additional @FILE options; any such options will be processed + recursively. + +`-a KEYWORD' + This option is supported for HP/UX compatibility. The KEYWORD + argument must be one of the strings `archive', `shared', or + `default'. `-aarchive' is functionally equivalent to `-Bstatic', + and the other two keywords are functionally equivalent to + `-Bdynamic'. This option may be used any number of times. + +`--audit AUDITLIB' + Adds AUDITLIB to the `DT_AUDIT' entry of the dynamic section. + AUDITLIB is not checked for existence, nor will it use the + DT_SONAME specified in the library. If specified multiple times + `DT_AUDIT' will contain a colon separated list of audit interfaces + to use. If the linker finds an object with an audit entry while + searching for shared libraries, it will add a corresponding + `DT_DEPAUDIT' entry in the output file. This option is only + meaningful on ELF platforms supporting the rtld-audit interface. + +`-A ARCHITECTURE' +`--architecture=ARCHITECTURE' + In the current release of `ld', this option is useful only for the + Intel 960 family of architectures. In that `ld' configuration, the + ARCHITECTURE argument identifies the particular architecture in + the 960 family, enabling some safeguards and modifying the + archive-library search path. *Note `ld' and the Intel 960 family: + i960, for details. + + Future releases of `ld' may support similar functionality for + other architecture families. + +`-b INPUT-FORMAT' +`--format=INPUT-FORMAT' + `ld' may be configured to support more than one kind of object + file. If your `ld' is configured this way, you can use the `-b' + option to specify the binary format for input object files that + follow this option on the command line. Even when `ld' is + configured to support alternative object formats, you don't + usually need to specify this, as `ld' should be configured to + expect as a default input format the most usual format on each + machine. INPUT-FORMAT is a text string, the name of a particular + format supported by the BFD libraries. (You can list the + available binary formats with `objdump -i'.) *Note BFD::. + + You may want to use this option if you are linking files with an + unusual binary format. You can also use `-b' to switch formats + explicitly (when linking object files of different formats), by + including `-b INPUT-FORMAT' before each group of object files in a + particular format. + + The default format is taken from the environment variable + `GNUTARGET'. *Note Environment::. You can also define the input + format from a script, using the command `TARGET'; see *Note Format + Commands::. + +`-c MRI-COMMANDFILE' +`--mri-script=MRI-COMMANDFILE' + For compatibility with linkers produced by MRI, `ld' accepts script + files written in an alternate, restricted command language, + described in *Note MRI Compatible Script Files: MRI. Introduce + MRI script files with the option `-c'; use the `-T' option to run + linker scripts written in the general-purpose `ld' scripting + language. If MRI-CMDFILE does not exist, `ld' looks for it in the + directories specified by any `-L' options. + +`-d' +`-dc' +`-dp' + These three options are equivalent; multiple forms are supported + for compatibility with other linkers. They assign space to common + symbols even if a relocatable output file is specified (with + `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same + effect. *Note Miscellaneous Commands::. + +`--depaudit AUDITLIB' +`-P AUDITLIB' + Adds AUDITLIB to the `DT_DEPAUDIT' entry of the dynamic section. + AUDITLIB is not checked for existence, nor will it use the + DT_SONAME specified in the library. If specified multiple times + `DT_DEPAUDIT' will contain a colon separated list of audit + interfaces to use. This option is only meaningful on ELF + platforms supporting the rtld-audit interface. The -P option is + provided for Solaris compatibility. + +`-e ENTRY' +`--entry=ENTRY' + Use ENTRY as the explicit symbol for beginning execution of your + program, rather than the default entry point. If there is no + symbol named ENTRY, the linker will try to parse ENTRY as a number, + and use that as the entry address (the number will be interpreted + in base 10; you may use a leading `0x' for base 16, or a leading + `0' for base 8). *Note Entry Point::, for a discussion of defaults + and other ways of specifying the entry point. + +`--exclude-libs LIB,LIB,...' + Specifies a list of archive libraries from which symbols should + not be automatically exported. The library names may be delimited + by commas or colons. Specifying `--exclude-libs ALL' excludes + symbols in all archive libraries from automatic export. This + option is available only for the i386 PE targeted port of the + linker and for ELF targeted ports. For i386 PE, symbols + explicitly listed in a .def file are still exported, regardless of + this option. For ELF targeted ports, symbols affected by this + option will be treated as hidden. + +`--exclude-modules-for-implib MODULE,MODULE,...' + Specifies a list of object files or archive members, from which + symbols should not be automatically exported, but which should be + copied wholesale into the import library being generated during + the link. The module names may be delimited by commas or colons, + and must match exactly the filenames used by `ld' to open the + files; for archive members, this is simply the member name, but + for object files the name listed must include and match precisely + any path used to specify the input file on the linker's + command-line. This option is available only for the i386 PE + targeted port of the linker. Symbols explicitly listed in a .def + file are still exported, regardless of this option. + +`-E' +`--export-dynamic' +`--no-export-dynamic' + When creating a dynamically linked executable, using the `-E' + option or the `--export-dynamic' option causes the linker to add + all symbols to the dynamic symbol table. The dynamic symbol table + is the set of symbols which are visible from dynamic objects at + run time. + + If you do not use either of these options (or use the + `--no-export-dynamic' option to restore the default behavior), the + dynamic symbol table will normally contain only those symbols + which are referenced by some dynamic object mentioned in the link. + + If you use `dlopen' to load a dynamic object which needs to refer + back to the symbols defined by the program, rather than some other + dynamic object, then you will probably need to use this option when + linking the program itself. + + You can also use the dynamic list to control what symbols should + be added to the dynamic symbol table if the output format supports + it. See the description of `--dynamic-list'. + + Note that this option is specific to ELF targeted ports. PE + targets support a similar function to export all symbols from a + DLL or EXE; see the description of `--export-all-symbols' below. + +`-EB' + Link big-endian objects. This affects the default output format. + +`-EL' + Link little-endian objects. This affects the default output + format. + +`-f NAME' +`--auxiliary=NAME' + When creating an ELF shared object, set the internal DT_AUXILIARY + field to the specified name. This tells the dynamic linker that + the symbol table of the shared object should be used as an + auxiliary filter on the symbol table of the shared object NAME. + + If you later link a program against this filter object, then, when + you run the program, the dynamic linker will see the DT_AUXILIARY + field. If the dynamic linker resolves any symbols from the filter + object, it will first check whether there is a definition in the + shared object NAME. If there is one, it will be used instead of + the definition in the filter object. The shared object NAME need + not exist. Thus the shared object NAME may be used to provide an + alternative implementation of certain functions, perhaps for + debugging or for machine specific performance. + + This option may be specified more than once. The DT_AUXILIARY + entries will be created in the order in which they appear on the + command line. + +`-F NAME' +`--filter=NAME' + When creating an ELF shared object, set the internal DT_FILTER + field to the specified name. This tells the dynamic linker that + the symbol table of the shared object which is being created + should be used as a filter on the symbol table of the shared + object NAME. + + If you later link a program against this filter object, then, when + you run the program, the dynamic linker will see the DT_FILTER + field. The dynamic linker will resolve symbols according to the + symbol table of the filter object as usual, but it will actually + link to the definitions found in the shared object NAME. Thus the + filter object can be used to select a subset of the symbols + provided by the object NAME. + + Some older linkers used the `-F' option throughout a compilation + toolchain for specifying object-file format for both input and + output object files. The GNU linker uses other mechanisms for + this purpose: the `-b', `--format', `--oformat' options, the + `TARGET' command in linker scripts, and the `GNUTARGET' + environment variable. The GNU linker will ignore the `-F' option + when not creating an ELF shared object. + +`-fini=NAME' + When creating an ELF executable or shared object, call NAME when + the executable or shared object is unloaded, by setting DT_FINI to + the address of the function. By default, the linker uses `_fini' + as the function to call. + +`-g' + Ignored. Provided for compatibility with other tools. + +`-G VALUE' +`--gpsize=VALUE' + Set the maximum size of objects to be optimized using the GP + register to SIZE. This is only meaningful for object file formats + such as MIPS ELF that support putting large and small objects into + different sections. This is ignored for other object file formats. + +`-h NAME' +`-soname=NAME' + When creating an ELF shared object, set the internal DT_SONAME + field to the specified name. When an executable is linked with a + shared object which has a DT_SONAME field, then when the + executable is run the dynamic linker will attempt to load the + shared object specified by the DT_SONAME field rather than the + using the file name given to the linker. + +`-i' + Perform an incremental link (same as option `-r'). + +`-init=NAME' + When creating an ELF executable or shared object, call NAME when + the executable or shared object is loaded, by setting DT_INIT to + the address of the function. By default, the linker uses `_init' + as the function to call. + +`-l NAMESPEC' +`--library=NAMESPEC' + Add the archive or object file specified by NAMESPEC to the list + of files to link. This option may be used any number of times. + If NAMESPEC is of the form `:FILENAME', `ld' will search the + library path for a file called FILENAME, otherwise it will search + the library path for a file called `libNAMESPEC.a'. + + On systems which support shared libraries, `ld' may also search for + files other than `libNAMESPEC.a'. Specifically, on ELF and SunOS + systems, `ld' will search a directory for a library called + `libNAMESPEC.so' before searching for one called `libNAMESPEC.a'. + (By convention, a `.so' extension indicates a shared library.) + Note that this behavior does not apply to `:FILENAME', which + always specifies a file called FILENAME. + + The linker will search an archive only once, at the location where + it is specified on the command line. If the archive defines a + symbol which was undefined in some object which appeared before + the archive on the command line, the linker will include the + appropriate file(s) from the archive. However, an undefined + symbol in an object appearing later on the command line will not + cause the linker to search the archive again. + + See the `-(' option for a way to force the linker to search + archives multiple times. + + You may list the same archive multiple times on the command line. + + This type of archive searching is standard for Unix linkers. + However, if you are using `ld' on AIX, note that it is different + from the behaviour of the AIX linker. + +`-L SEARCHDIR' +`--library-path=SEARCHDIR' + Add path SEARCHDIR to the list of paths that `ld' will search for + archive libraries and `ld' control scripts. You may use this + option any number of times. The directories are searched in the + order in which they are specified on the command line. + Directories specified on the command line are searched before the + default directories. All `-L' options apply to all `-l' options, + regardless of the order in which the options appear. `-L' options + do not affect how `ld' searches for a linker script unless `-T' + option is specified. + + If SEARCHDIR begins with `=', then the `=' will be replaced by the + "sysroot prefix", controlled by the `--sysroot' option, or + specified when the linker is configured. + + The default set of paths searched (without being specified with + `-L') depends on which emulation mode `ld' is using, and in some + cases also on how it was configured. *Note Environment::. + + The paths can also be specified in a link script with the + `SEARCH_DIR' command. Directories specified this way are searched + at the point in which the linker script appears in the command + line. + +`-m EMULATION' + Emulate the EMULATION linker. You can list the available + emulations with the `--verbose' or `-V' options. + + If the `-m' option is not used, the emulation is taken from the + `LDEMULATION' environment variable, if that is defined. + + Otherwise, the default emulation depends upon how the linker was + configured. + +`-M' +`--print-map' + Print a link map to the standard output. A link map provides + information about the link, including the following: + + * Where object files are mapped into memory. + + * How common symbols are allocated. + + * All archive members included in the link, with a mention of + the symbol which caused the archive member to be brought in. + + * The values assigned to symbols. + + Note - symbols whose values are computed by an expression + which involves a reference to a previous value of the same + symbol may not have correct result displayed in the link map. + This is because the linker discards intermediate results and + only retains the final value of an expression. Under such + circumstances the linker will display the final value + enclosed by square brackets. Thus for example a linker + script containing: + + foo = 1 + foo = foo * 4 + foo = foo + 8 + + will produce the following output in the link map if the `-M' + option is used: + + 0x00000001 foo = 0x1 + [0x0000000c] foo = (foo * 0x4) + [0x0000000c] foo = (foo + 0x8) + + See *Note Expressions:: for more information about + expressions in linker scripts. + +`-n' +`--nmagic' + Turn off page alignment of sections, and disable linking against + shared libraries. If the output format supports Unix style magic + numbers, mark the output as `NMAGIC'. + +`-N' +`--omagic' + Set the text and data sections to be readable and writable. Also, + do not page-align the data segment, and disable linking against + shared libraries. If the output format supports Unix style magic + numbers, mark the output as `OMAGIC'. Note: Although a writable + text section is allowed for PE-COFF targets, it does not conform + to the format specification published by Microsoft. + +`--no-omagic' + This option negates most of the effects of the `-N' option. It + sets the text section to be read-only, and forces the data segment + to be page-aligned. Note - this option does not enable linking + against shared libraries. Use `-Bdynamic' for this. + +`-o OUTPUT' +`--output=OUTPUT' + Use OUTPUT as the name for the program produced by `ld'; if this + option is not specified, the name `a.out' is used by default. The + script command `OUTPUT' can also specify the output file name. + +`-O LEVEL' + If LEVEL is a numeric values greater than zero `ld' optimizes the + output. This might take significantly longer and therefore + probably should only be enabled for the final binary. At the + moment this option only affects ELF shared library generation. + Future releases of the linker may make more use of this option. + Also currently there is no difference in the linker's behaviour + for different non-zero values of this option. Again this may + change with future releases. + +`--push-state' + The `--push-state' allows to preserve the current state of the + flags which govern the input file handling so that they can all be + restored with one corresponding `--pop-state' option. + + The option which are covered are: `-Bdynamic', `-Bstatic', `-dn', + `-dy', `-call_shared', `-non_shared', `-static', `-N', `-n', + `--whole-archive', `--no-whole-archive', `-r', `-Ur', + `--copy-dt-needed-entries', `--no-copy-dt-needed-entries', + `--as-needed', `--no-as-needed', and `-a'. + + One target for this option are specifications for `pkg-config'. + When used with the `--libs' option all possibly needed libraries + are listed and then possibly linked with all the time. It is + better to return something as follows: + + -Wl,--push-state,--as-needed -libone -libtwo -Wl,--pop-state + + Undoes the effect of -push-state, restores the previous values of + the flags governing input file handling. + +`-q' +`--emit-relocs' + Leave relocation sections and contents in fully linked executables. + Post link analysis and optimization tools may need this + information in order to perform correct modifications of + executables. This results in larger executables. + + This option is currently only supported on ELF platforms. + +`--force-dynamic' + Force the output file to have dynamic sections. This option is + specific to VxWorks targets. + +`-r' +`--relocatable' + Generate relocatable output--i.e., generate an output file that + can in turn serve as input to `ld'. This is often called "partial + linking". As a side effect, in environments that support standard + Unix magic numbers, this option also sets the output file's magic + number to `OMAGIC'. If this option is not specified, an absolute + file is produced. When linking C++ programs, this option _will + not_ resolve references to constructors; to do that, use `-Ur'. + + When an input file does not have the same format as the output + file, partial linking is only supported if that input file does + not contain any relocations. Different output formats can have + further restrictions; for example some `a.out'-based formats do + not support partial linking with input files in other formats at + all. + + This option does the same thing as `-i'. + +`-R FILENAME' +`--just-symbols=FILENAME' + Read symbol names and their addresses from FILENAME, but do not + relocate it or include it in the output. This allows your output + file to refer symbolically to absolute locations of memory defined + in other programs. You may use this option more than once. + + For compatibility with other ELF linkers, if the `-R' option is + followed by a directory name, rather than a file name, it is + treated as the `-rpath' option. + +`-s' +`--strip-all' + Omit all symbol information from the output file. + +`-S' +`--strip-debug' + Omit debugger symbol information (but not all symbols) from the + output file. + +`-t' +`--trace' + Print the names of the input files as `ld' processes them. + +`-T SCRIPTFILE' +`--script=SCRIPTFILE' + Use SCRIPTFILE as the linker script. This script replaces `ld''s + default linker script (rather than adding to it), so COMMANDFILE + must specify everything necessary to describe the output file. + *Note Scripts::. If SCRIPTFILE does not exist in the current + directory, `ld' looks for it in the directories specified by any + preceding `-L' options. Multiple `-T' options accumulate. + +`-dT SCRIPTFILE' +`--default-script=SCRIPTFILE' + Use SCRIPTFILE as the default linker script. *Note Scripts::. + + This option is similar to the `--script' option except that + processing of the script is delayed until after the rest of the + command line has been processed. This allows options placed after + the `--default-script' option on the command line to affect the + behaviour of the linker script, which can be important when the + linker command line cannot be directly controlled by the user. + (eg because the command line is being constructed by another tool, + such as `gcc'). + +`-u SYMBOL' +`--undefined=SYMBOL' + Force SYMBOL to be entered in the output file as an undefined + symbol. Doing this may, for example, trigger linking of additional + modules from standard libraries. `-u' may be repeated with + different option arguments to enter additional undefined symbols. + This option is equivalent to the `EXTERN' linker script command. + +`-Ur' + For anything other than C++ programs, this option is equivalent to + `-r': it generates relocatable output--i.e., an output file that + can in turn serve as input to `ld'. When linking C++ programs, + `-Ur' _does_ resolve references to constructors, unlike `-r'. It + does not work to use `-Ur' on files that were themselves linked + with `-Ur'; once the constructor table has been built, it cannot + be added to. Use `-Ur' only for the last partial link, and `-r' + for the others. + +`--unique[=SECTION]' + Creates a separate output section for every input section matching + SECTION, or if the optional wildcard SECTION argument is missing, + for every orphan input section. An orphan section is one not + specifically mentioned in a linker script. You may use this option + multiple times on the command line; It prevents the normal + merging of input sections with the same name, overriding output + section assignments in a linker script. + +`-v' +`--version' +`-V' + Display the version number for `ld'. The `-V' option also lists + the supported emulations. + +`-x' +`--discard-all' + Delete all local symbols. + +`-X' +`--discard-locals' + Delete all temporary local symbols. (These symbols start with + system-specific local label prefixes, typically `.L' for ELF + systems or `L' for traditional a.out systems.) + +`-y SYMBOL' +`--trace-symbol=SYMBOL' + Print the name of each linked file in which SYMBOL appears. This + option may be given any number of times. On many systems it is + necessary to prepend an underscore. + + This option is useful when you have an undefined symbol in your + link but don't know where the reference is coming from. + +`-Y PATH' + Add PATH to the default library search path. This option exists + for Solaris compatibility. + +`-z KEYWORD' + The recognized keywords are: + `combreloc' + Combines multiple reloc sections and sorts them to make + dynamic symbol lookup caching possible. + + `defs' + Disallows undefined symbols in object files. Undefined + symbols in shared libraries are still allowed. + + `execstack' + Marks the object as requiring executable stack. + + `global' + This option is only meaningful when building a shared object. + It makes the symbols defined by this shared object available + for symbol resolution of subsequently loaded libraries. + + `initfirst' + This option is only meaningful when building a shared object. + It marks the object so that its runtime initialization will + occur before the runtime initialization of any other objects + brought into the process at the same time. Similarly the + runtime finalization of the object will occur after the + runtime finalization of any other objects. + + `interpose' + Marks the object that its symbol table interposes before all + symbols but the primary executable. + + `lazy' + When generating an executable or shared library, mark it to + tell the dynamic linker to defer function call resolution to + the point when the function is called (lazy binding), rather + than at load time. Lazy binding is the default. + + `loadfltr' + Marks the object that its filters be processed immediately at + runtime. + + `muldefs' + Allows multiple definitions. + + `nocombreloc' + Disables multiple reloc sections combining. + + `nocopyreloc' + Disables production of copy relocs. + + `nodefaultlib' + Marks the object that the search for dependencies of this + object will ignore any default library search paths. + + `nodelete' + Marks the object shouldn't be unloaded at runtime. + + `nodlopen' + Marks the object not available to `dlopen'. + + `nodump' + Marks the object can not be dumped by `dldump'. + + `noexecstack' + Marks the object as not requiring executable stack. + + `norelro' + Don't create an ELF `PT_GNU_RELRO' segment header in the + object. + + `now' + When generating an executable or shared library, mark it to + tell the dynamic linker to resolve all symbols when the + program is started, or when the shared library is linked to + using dlopen, instead of deferring function call resolution + to the point when the function is first called. + + `origin' + Marks the object may contain $ORIGIN. + + `relro' + Create an ELF `PT_GNU_RELRO' segment header in the object. + + `max-page-size=VALUE' + Set the emulation maximum page size to VALUE. + + `common-page-size=VALUE' + Set the emulation common page size to VALUE. + + `stack-size=VALUE' + Specify a stack size for in an ELF `PT_GNU_STACK' segment. + Specifying zero will override any default non-zero sized + `PT_GNU_STACK' segment creation. + + `bndplt' + Always generate BND prefix in PLT entries. Supported for + Linux/x86_64. + + + Other keywords are ignored for Solaris compatibility. + +`-( ARCHIVES -)' +`--start-group ARCHIVES --end-group' + The ARCHIVES should be a list of archive files. They may be + either explicit file names, or `-l' options. + + The specified archives are searched repeatedly until no new + undefined references are created. Normally, an archive is + searched only once in the order that it is specified on the + command line. If a symbol in that archive is needed to resolve an + undefined symbol referred to by an object in an archive that + appears later on the command line, the linker would not be able to + resolve that reference. By grouping the archives, they all be + searched repeatedly until all possible references are resolved. + + Using this option has a significant performance cost. It is best + to use it only when there are unavoidable circular references + between two or more archives. + +`--accept-unknown-input-arch' +`--no-accept-unknown-input-arch' + Tells the linker to accept input files whose architecture cannot be + recognised. The assumption is that the user knows what they are + doing and deliberately wants to link in these unknown input files. + This was the default behaviour of the linker, before release + 2.14. The default behaviour from release 2.14 onwards is to + reject such input files, and so the `--accept-unknown-input-arch' + option has been added to restore the old behaviour. + +`--as-needed' +`--no-as-needed' + This option affects ELF DT_NEEDED tags for dynamic libraries + mentioned on the command line after the `--as-needed' option. + Normally the linker will add a DT_NEEDED tag for each dynamic + library mentioned on the command line, regardless of whether the + library is actually needed or not. `--as-needed' causes a + DT_NEEDED tag to only be emitted for a library that _at that point + in the link_ satisfies a non-weak undefined symbol reference from + a regular object file or, if the library is not found in the + DT_NEEDED lists of other needed libraries, a non-weak undefined + symbol reference from another needed dynamic library. Object + files or libraries appearing on the command line _after_ the + library in question do not affect whether the library is seen as + needed. This is similar to the rules for extraction of object + files from archives. `--no-as-needed' restores the default + behaviour. + +`--add-needed' +`--no-add-needed' + These two options have been deprecated because of the similarity of + their names to the `--as-needed' and `--no-as-needed' options. + They have been replaced by `--copy-dt-needed-entries' and + `--no-copy-dt-needed-entries'. + +`-assert KEYWORD' + This option is ignored for SunOS compatibility. + +`-Bdynamic' +`-dy' +`-call_shared' + Link against dynamic libraries. This is only meaningful on + platforms for which shared libraries are supported. This option + is normally the default on such platforms. The different variants + of this option are for compatibility with various systems. You + may use this option multiple times on the command line: it affects + library searching for `-l' options which follow it. + +`-Bgroup' + Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic + section. This causes the runtime linker to handle lookups in this + object and its dependencies to be performed only inside the group. + `--unresolved-symbols=report-all' is implied. This option is only + meaningful on ELF platforms which support shared libraries. + +`-Bstatic' +`-dn' +`-non_shared' +`-static' + Do not link against shared libraries. This is only meaningful on + platforms for which shared libraries are supported. The different + variants of this option are for compatibility with various + systems. You may use this option multiple times on the command + line: it affects library searching for `-l' options which follow + it. This option also implies `--unresolved-symbols=report-all'. + This option can be used with `-shared'. Doing so means that a + shared library is being created but that all of the library's + external references must be resolved by pulling in entries from + static libraries. + +`-Bsymbolic' + When creating a shared library, bind references to global symbols + to the definition within the shared library, if any. Normally, it + is possible for a program linked against a shared library to + override the definition within the shared library. This option is + only meaningful on ELF platforms which support shared libraries. + +`-Bsymbolic-functions' + When creating a shared library, bind references to global function + symbols to the definition within the shared library, if any. This + option is only meaningful on ELF platforms which support shared + libraries. + +`--dynamic-list=DYNAMIC-LIST-FILE' + Specify the name of a dynamic list file to the linker. This is + typically used when creating shared libraries to specify a list of + global symbols whose references shouldn't be bound to the + definition within the shared library, or creating dynamically + linked executables to specify a list of symbols which should be + added to the symbol table in the executable. This option is only + meaningful on ELF platforms which support shared libraries. + + The format of the dynamic list is the same as the version node + without scope and node name. See *Note VERSION:: for more + information. + +`--dynamic-list-data' + Include all global data symbols to the dynamic list. + +`--dynamic-list-cpp-new' + Provide the builtin dynamic list for C++ operator new and delete. + It is mainly useful for building shared libstdc++. + +`--dynamic-list-cpp-typeinfo' + Provide the builtin dynamic list for C++ runtime type + identification. + +`--check-sections' +`--no-check-sections' + Asks the linker _not_ to check section addresses after they have + been assigned to see if there are any overlaps. Normally the + linker will perform this check, and if it finds any overlaps it + will produce suitable error messages. The linker does know about, + and does make allowances for sections in overlays. The default + behaviour can be restored by using the command line switch + `--check-sections'. Section overlap is not usually checked for + relocatable links. You can force checking in that case by using + the `--check-sections' option. + +`--copy-dt-needed-entries' +`--no-copy-dt-needed-entries' + This option affects the treatment of dynamic libraries referred to + by DT_NEEDED tags _inside_ ELF dynamic libraries mentioned on the + command line. Normally the linker won't add a DT_NEEDED tag to the + output binary for each library mentioned in a DT_NEEDED tag in an + input dynamic library. With `--copy-dt-needed-entries' specified + on the command line however any dynamic libraries that follow it + will have their DT_NEEDED entries added. The default behaviour + can be restored with `--no-copy-dt-needed-entries'. + + This option also has an effect on the resolution of symbols in + dynamic libraries. With `--copy-dt-needed-entries' dynamic + libraries mentioned on the command line will be recursively + searched, following their DT_NEEDED tags to other libraries, in + order to resolve symbols required by the output binary. With the + default setting however the searching of dynamic libraries that + follow it will stop with the dynamic library itself. No DT_NEEDED + links will be traversed to resolve symbols. + +`--cref' + Output a cross reference table. If a linker map file is being + generated, the cross reference table is printed to the map file. + Otherwise, it is printed on the standard output. + + The format of the table is intentionally simple, so that it may be + easily processed by a script if necessary. The symbols are + printed out, sorted by name. For each symbol, a list of file + names is given. If the symbol is defined, the first file listed + is the location of the definition. If the symbol is defined as a + common value then any files where this happens appear next. + Finally any files that reference the symbol are listed. + +`--no-define-common' + This option inhibits the assignment of addresses to common symbols. + The script command `INHIBIT_COMMON_ALLOCATION' has the same effect. + *Note Miscellaneous Commands::. + + The `--no-define-common' option allows decoupling the decision to + assign addresses to Common symbols from the choice of the output + file type; otherwise a non-Relocatable output type forces + assigning addresses to Common symbols. Using `--no-define-common' + allows Common symbols that are referenced from a shared library to + be assigned addresses only in the main program. This eliminates + the unused duplicate space in the shared library, and also + prevents any possible confusion over resolving to the wrong + duplicate when there are many dynamic modules with specialized + search paths for runtime symbol resolution. + +`--defsym=SYMBOL=EXPRESSION' + Create a global symbol in the output file, containing the absolute + address given by EXPRESSION. You may use this option as many + times as necessary to define multiple symbols in the command line. + A limited form of arithmetic is supported for the EXPRESSION in + this context: you may give a hexadecimal constant or the name of + an existing symbol, or use `+' and `-' to add or subtract + hexadecimal constants or symbols. If you need more elaborate + expressions, consider using the linker command language from a + script (*note Assignment: Symbol Definitions: Assignments.). + _Note:_ there should be no white space between SYMBOL, the equals + sign ("<=>"), and EXPRESSION. + +`--demangle[=STYLE]' +`--no-demangle' + These options control whether to demangle symbol names in error + messages and other output. When the linker is told to demangle, + it tries to present symbol names in a readable fashion: it strips + leading underscores if they are used by the object file format, + and converts C++ mangled symbol names into user readable names. + Different compilers have different mangling styles. The optional + demangling style argument can be used to choose an appropriate + demangling style for your compiler. The linker will demangle by + default unless the environment variable `COLLECT_NO_DEMANGLE' is + set. These options may be used to override the default. + +`-IFILE' +`--dynamic-linker=FILE' + Set the name of the dynamic linker. This is only meaningful when + generating dynamically linked ELF executables. The default dynamic + linker is normally correct; don't use this unless you know what + you are doing. + +`--fatal-warnings' +`--no-fatal-warnings' + Treat all warnings as errors. The default behaviour can be + restored with the option `--no-fatal-warnings'. + +`--force-exe-suffix' + Make sure that an output file has a .exe suffix. + + If a successfully built fully linked output file does not have a + `.exe' or `.dll' suffix, this option forces the linker to copy the + output file to one of the same name with a `.exe' suffix. This + option is useful when using unmodified Unix makefiles on a + Microsoft Windows host, since some versions of Windows won't run + an image unless it ends in a `.exe' suffix. + +`--gc-sections' +`--no-gc-sections' + Enable garbage collection of unused input sections. It is ignored + on targets that do not support this option. The default behaviour + (of not performing this garbage collection) can be restored by + specifying `--no-gc-sections' on the command line. + + `--gc-sections' decides which input sections are used by examining + symbols and relocations. The section containing the entry symbol + and all sections containing symbols undefined on the command-line + will be kept, as will sections containing symbols referenced by + dynamic objects. Note that when building shared libraries, the + linker must assume that any visible symbol is referenced. Once + this initial set of sections has been determined, the linker + recursively marks as used any section referenced by their + relocations. See `--entry' and `--undefined'. + + This option can be set when doing a partial link (enabled with + option `-r'). In this case the root of symbols kept must be + explicitly specified either by an `--entry' or `--undefined' + option or by a `ENTRY' command in the linker script. + +`--print-gc-sections' +`--no-print-gc-sections' + List all sections removed by garbage collection. The listing is + printed on stderr. This option is only effective if garbage + collection has been enabled via the `--gc-sections') option. The + default behaviour (of not listing the sections that are removed) + can be restored by specifying `--no-print-gc-sections' on the + command line. + +`--print-output-format' + Print the name of the default output format (perhaps influenced by + other command-line options). This is the string that would appear + in an `OUTPUT_FORMAT' linker script command (*note File + Commands::). + +`--help' + Print a summary of the command-line options on the standard output + and exit. + +`--target-help' + Print a summary of all target specific options on the standard + output and exit. + +`-Map=MAPFILE' + Print a link map to the file MAPFILE. See the description of the + `-M' option, above. + +`--no-keep-memory' + `ld' normally optimizes for speed over memory usage by caching the + symbol tables of input files in memory. This option tells `ld' to + instead optimize for memory usage, by rereading the symbol tables + as necessary. This may be required if `ld' runs out of memory + space while linking a large executable. + +`--no-undefined' +`-z defs' + Report unresolved symbol references from regular object files. + This is done even if the linker is creating a non-symbolic shared + library. The switch `--[no-]allow-shlib-undefined' controls the + behaviour for reporting unresolved references found in shared + libraries being linked in. + +`--allow-multiple-definition' +`-z muldefs' + Normally when a symbol is defined multiple times, the linker will + report a fatal error. These options allow multiple definitions and + the first definition will be used. + +`--allow-shlib-undefined' +`--no-allow-shlib-undefined' + Allows or disallows undefined symbols in shared libraries. This + switch is similar to `--no-undefined' except that it determines + the behaviour when the undefined symbols are in a shared library + rather than a regular object file. It does not affect how + undefined symbols in regular object files are handled. + + The default behaviour is to report errors for any undefined symbols + referenced in shared libraries if the linker is being used to + create an executable, but to allow them if the linker is being + used to create a shared library. + + The reasons for allowing undefined symbol references in shared + libraries specified at link time are that: + + * A shared library specified at link time may not be the same + as the one that is available at load time, so the symbol + might actually be resolvable at load time. + + * There are some operating systems, eg BeOS and HPPA, where + undefined symbols in shared libraries are normal. + + The BeOS kernel for example patches shared libraries at load + time to select whichever function is most appropriate for the + current architecture. This is used, for example, to + dynamically select an appropriate memset function. + +`--no-undefined-version' + Normally when a symbol has an undefined version, the linker will + ignore it. This option disallows symbols with undefined version + and a fatal error will be issued instead. + +`--default-symver' + Create and use a default symbol version (the soname) for + unversioned exported symbols. + +`--default-imported-symver' + Create and use a default symbol version (the soname) for + unversioned imported symbols. + +`--no-warn-mismatch' + Normally `ld' will give an error if you try to link together input + files that are mismatched for some reason, perhaps because they + have been compiled for different processors or for different + endiannesses. This option tells `ld' that it should silently + permit such possible errors. This option should only be used with + care, in cases when you have taken some special action that + ensures that the linker errors are inappropriate. + +`--no-warn-search-mismatch' + Normally `ld' will give a warning if it finds an incompatible + library during a library search. This option silences the warning. + +`--no-whole-archive' + Turn off the effect of the `--whole-archive' option for subsequent + archive files. + +`--noinhibit-exec' + Retain the executable output file whenever it is still usable. + Normally, the linker will not produce an output file if it + encounters errors during the link process; it exits without + writing an output file when it issues any error whatsoever. + +`-nostdlib' + Only search library directories explicitly specified on the + command line. Library directories specified in linker scripts + (including linker scripts specified on the command line) are + ignored. + +`--oformat=OUTPUT-FORMAT' + `ld' may be configured to support more than one kind of object + file. If your `ld' is configured this way, you can use the + `--oformat' option to specify the binary format for the output + object file. Even when `ld' is configured to support alternative + object formats, you don't usually need to specify this, as `ld' + should be configured to produce as a default output format the most + usual format on each machine. OUTPUT-FORMAT is a text string, the + name of a particular format supported by the BFD libraries. (You + can list the available binary formats with `objdump -i'.) The + script command `OUTPUT_FORMAT' can also specify the output format, + but this option overrides it. *Note BFD::. + +`-pie' +`--pic-executable' + Create a position independent executable. This is currently only + supported on ELF platforms. Position independent executables are + similar to shared libraries in that they are relocated by the + dynamic linker to the virtual address the OS chooses for them + (which can vary between invocations). Like normal dynamically + linked executables they can be executed and symbols defined in the + executable cannot be overridden by shared libraries. + +`-qmagic' + This option is ignored for Linux compatibility. + +`-Qy' + This option is ignored for SVR4 compatibility. + +`--relax' +`--no-relax' + An option with machine dependent effects. This option is only + supported on a few targets. *Note `ld' and the H8/300: H8/300. + *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa + Processors: Xtensa. *Note `ld' and the 68HC11 and 68HC12: + M68HC11/68HC12. *Note `ld' and the Altera Nios II: Nios II. + *Note `ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. + + On some platforms the `--relax' option performs target specific, + global optimizations that become possible when the linker resolves + addressing in the program, such as relaxing address modes, + synthesizing new instructions, selecting shorter version of current + instructions, and combining constant values. + + On some platforms these link time global optimizations may make + symbolic debugging of the resulting executable impossible. This + is known to be the case for the Matsushita MN10200 and MN10300 + family of processors. + + On platforms where this is not supported, `--relax' is accepted, + but ignored. + + On platforms where `--relax' is accepted the option `--no-relax' + can be used to disable the feature. + +`--retain-symbols-file=FILENAME' + Retain _only_ the symbols listed in the file FILENAME, discarding + all others. FILENAME is simply a flat file, with one symbol name + per line. This option is especially useful in environments (such + as VxWorks) where a large global symbol table is accumulated + gradually, to conserve run-time memory. + + `--retain-symbols-file' does _not_ discard undefined symbols, or + symbols needed for relocations. + + You may only specify `--retain-symbols-file' once in the command + line. It overrides `-s' and `-S'. + +`-rpath=DIR' + Add a directory to the runtime library search path. This is used + when linking an ELF executable with shared objects. All `-rpath' + arguments are concatenated and passed to the runtime linker, which + uses them to locate shared objects at runtime. The `-rpath' + option is also used when locating shared objects which are needed + by shared objects explicitly included in the link; see the + description of the `-rpath-link' option. If `-rpath' is not used + when linking an ELF executable, the contents of the environment + variable `LD_RUN_PATH' will be used if it is defined. + + The `-rpath' option may also be used on SunOS. By default, on + SunOS, the linker will form a runtime search patch out of all the + `-L' options it is given. If a `-rpath' option is used, the + runtime search path will be formed exclusively using the `-rpath' + options, ignoring the `-L' options. This can be useful when using + gcc, which adds many `-L' options which may be on NFS mounted file + systems. + + For compatibility with other ELF linkers, if the `-R' option is + followed by a directory name, rather than a file name, it is + treated as the `-rpath' option. + +`-rpath-link=DIR' + When using ELF or SunOS, one shared library may require another. + This happens when an `ld -shared' link includes a shared library + as one of the input files. + + When the linker encounters such a dependency when doing a + non-shared, non-relocatable link, it will automatically try to + locate the required shared library and include it in the link, if + it is not included explicitly. In such a case, the `-rpath-link' + option specifies the first set of directories to search. The + `-rpath-link' option may specify a sequence of directory names + either by specifying a list of names separated by colons, or by + appearing multiple times. + + This option should be used with caution as it overrides the search + path that may have been hard compiled into a shared library. In + such a case it is possible to use unintentionally a different + search path than the runtime linker would do. + + The linker uses the following search paths to locate required + shared libraries: + 1. Any directories specified by `-rpath-link' options. + + 2. Any directories specified by `-rpath' options. The difference + between `-rpath' and `-rpath-link' is that directories + specified by `-rpath' options are included in the executable + and used at runtime, whereas the `-rpath-link' option is only + effective at link time. Searching `-rpath' in this way is + only supported by native linkers and cross linkers which have + been configured with the `--with-sysroot' option. + + 3. On an ELF system, for native linkers, if the `-rpath' and + `-rpath-link' options were not used, search the contents of + the environment variable `LD_RUN_PATH'. + + 4. On SunOS, if the `-rpath' option was not used, search any + directories specified using `-L' options. + + 5. For a native linker, search the contents of the environment + variable `LD_LIBRARY_PATH'. + + 6. For a native ELF linker, the directories in `DT_RUNPATH' or + `DT_RPATH' of a shared library are searched for shared + libraries needed by it. The `DT_RPATH' entries are ignored if + `DT_RUNPATH' entries exist. + + 7. The default directories, normally `/lib' and `/usr/lib'. + + 8. For a native linker on an ELF system, if the file + `/etc/ld.so.conf' exists, the list of directories found in + that file. + + If the required shared library is not found, the linker will issue + a warning and continue with the link. + +`-shared' +`-Bshareable' + Create a shared library. This is currently only supported on ELF, + XCOFF and SunOS platforms. On SunOS, the linker will + automatically create a shared library if the `-e' option is not + used and there are undefined symbols in the link. + +`--sort-common' +`--sort-common=ascending' +`--sort-common=descending' + This option tells `ld' to sort the common symbols by alignment in + ascending or descending order when it places them in the + appropriate output sections. The symbol alignments considered are + sixteen-byte or larger, eight-byte, four-byte, two-byte, and + one-byte. This is to prevent gaps between symbols due to alignment + constraints. If no sorting order is specified, then descending + order is assumed. + +`--sort-section=name' + This option will apply `SORT_BY_NAME' to all wildcard section + patterns in the linker script. + +`--sort-section=alignment' + This option will apply `SORT_BY_ALIGNMENT' to all wildcard section + patterns in the linker script. + +`--split-by-file[=SIZE]' + Similar to `--split-by-reloc' but creates a new output section for + each input file when SIZE is reached. SIZE defaults to a size of + 1 if not given. + +`--split-by-reloc[=COUNT]' + Tries to creates extra sections in the output file so that no + single output section in the file contains more than COUNT + relocations. This is useful when generating huge relocatable + files for downloading into certain real time kernels with the COFF + object file format; since COFF cannot represent more than 65535 + relocations in a single section. Note that this will fail to work + with object file formats which do not support arbitrary sections. + The linker will not split up individual input sections for + redistribution, so if a single input section contains more than + COUNT relocations one output section will contain that many + relocations. COUNT defaults to a value of 32768. + +`--stats' + Compute and display statistics about the operation of the linker, + such as execution time and memory usage. + +`--sysroot=DIRECTORY' + Use DIRECTORY as the location of the sysroot, overriding the + configure-time default. This option is only supported by linkers + that were configured using `--with-sysroot'. + +`--traditional-format' + For some targets, the output of `ld' is different in some ways from + the output of some existing linker. This switch requests `ld' to + use the traditional format instead. + + For example, on SunOS, `ld' combines duplicate entries in the + symbol string table. This can reduce the size of an output file + with full debugging information by over 30 percent. + Unfortunately, the SunOS `dbx' program can not read the resulting + program (`gdb' has no trouble). The `--traditional-format' switch + tells `ld' to not combine duplicate entries. + +`--section-start=SECTIONNAME=ORG' + Locate a section in the output file at the absolute address given + by ORG. You may use this option as many times as necessary to + locate multiple sections in the command line. ORG must be a + single hexadecimal integer; for compatibility with other linkers, + you may omit the leading `0x' usually associated with hexadecimal + values. _Note:_ there should be no white space between + SECTIONNAME, the equals sign ("<=>"), and ORG. + +`-Tbss=ORG' +`-Tdata=ORG' +`-Ttext=ORG' + Same as `--section-start', with `.bss', `.data' or `.text' as the + SECTIONNAME. + +`-Ttext-segment=ORG' + When creating an ELF executable, it will set the address of the + first byte of the text segment. + +`-Trodata-segment=ORG' + When creating an ELF executable or shared object for a target where + the read-only data is in its own segment separate from the + executable text, it will set the address of the first byte of the + read-only data segment. + +`-Tldata-segment=ORG' + When creating an ELF executable or shared object for x86-64 medium + memory model, it will set the address of the first byte of the + ldata segment. + +`--unresolved-symbols=METHOD' + Determine how to handle unresolved symbols. There are four + possible values for `method': + + `ignore-all' + Do not report any unresolved symbols. + + `report-all' + Report all unresolved symbols. This is the default. + + `ignore-in-object-files' + Report unresolved symbols that are contained in shared + libraries, but ignore them if they come from regular object + files. + + `ignore-in-shared-libs' + Report unresolved symbols that come from regular object + files, but ignore them if they come from shared libraries. + This can be useful when creating a dynamic binary and it is + known that all the shared libraries that it should be + referencing are included on the linker's command line. + + The behaviour for shared libraries on their own can also be + controlled by the `--[no-]allow-shlib-undefined' option. + + Normally the linker will generate an error message for each + reported unresolved symbol but the option + `--warn-unresolved-symbols' can change this to a warning. + +`--dll-verbose' +`--verbose[=NUMBER]' + Display the version number for `ld' and list the linker emulations + supported. Display which input files can and cannot be opened. + Display the linker script being used by the linker. If the + optional NUMBER argument > 1, plugin symbol status will also be + displayed. + +`--version-script=VERSION-SCRIPTFILE' + Specify the name of a version script to the linker. This is + typically used when creating shared libraries to specify + additional information about the version hierarchy for the library + being created. This option is only fully supported on ELF + platforms which support shared libraries; see *Note VERSION::. It + is partially supported on PE platforms, which can use version + scripts to filter symbol visibility in auto-export mode: any + symbols marked `local' in the version script will not be exported. + *Note WIN32::. + +`--warn-common' + Warn when a common symbol is combined with another common symbol + or with a symbol definition. Unix linkers allow this somewhat + sloppy practice, but linkers on some other operating systems do + not. This option allows you to find potential problems from + combining global symbols. Unfortunately, some C libraries use + this practice, so you may get some warnings about symbols in the + libraries as well as in your programs. + + There are three kinds of global symbols, illustrated here by C + examples: + + `int i = 1;' + A definition, which goes in the initialized data section of + the output file. + + `extern int i;' + An undefined reference, which does not allocate space. There + must be either a definition or a common symbol for the + variable somewhere. + + `int i;' + A common symbol. If there are only (one or more) common + symbols for a variable, it goes in the uninitialized data + area of the output file. The linker merges multiple common + symbols for the same variable into a single symbol. If they + are of different sizes, it picks the largest size. The + linker turns a common symbol into a declaration, if there is + a definition of the same variable. + + The `--warn-common' option can produce five kinds of warnings. + Each warning consists of a pair of lines: the first describes the + symbol just encountered, and the second describes the previous + symbol encountered with the same name. One or both of the two + symbols will be a common symbol. + + 1. Turning a common symbol into a reference, because there is + already a definition for the symbol. + FILE(SECTION): warning: common of `SYMBOL' + overridden by definition + FILE(SECTION): warning: defined here + + 2. Turning a common symbol into a reference, because a later + definition for the symbol is encountered. This is the same + as the previous case, except that the symbols are encountered + in a different order. + FILE(SECTION): warning: definition of `SYMBOL' + overriding common + FILE(SECTION): warning: common is here + + 3. Merging a common symbol with a previous same-sized common + symbol. + FILE(SECTION): warning: multiple common + of `SYMBOL' + FILE(SECTION): warning: previous common is here + + 4. Merging a common symbol with a previous larger common symbol. + FILE(SECTION): warning: common of `SYMBOL' + overridden by larger common + FILE(SECTION): warning: larger common is here + + 5. Merging a common symbol with a previous smaller common + symbol. This is the same as the previous case, except that + the symbols are encountered in a different order. + FILE(SECTION): warning: common of `SYMBOL' + overriding smaller common + FILE(SECTION): warning: smaller common is here + +`--warn-constructors' + Warn if any global constructors are used. This is only useful for + a few object file formats. For formats like COFF or ELF, the + linker can not detect the use of global constructors. + +`--warn-multiple-gp' + Warn if multiple global pointer values are required in the output + file. This is only meaningful for certain processors, such as the + Alpha. Specifically, some processors put large-valued constants + in a special section. A special register (the global pointer) + points into the middle of this section, so that constants can be + loaded efficiently via a base-register relative addressing mode. + Since the offset in base-register relative mode is fixed and + relatively small (e.g., 16 bits), this limits the maximum size of + the constant pool. Thus, in large programs, it is often necessary + to use multiple global pointer values in order to be able to + address all possible constants. This option causes a warning to + be issued whenever this case occurs. + +`--warn-once' + Only warn once for each undefined symbol, rather than once per + module which refers to it. + +`--warn-section-align' + Warn if the address of an output section is changed because of + alignment. Typically, the alignment will be set by an input + section. The address will only be changed if it not explicitly + specified; that is, if the `SECTIONS' command does not specify a + start address for the section (*note SECTIONS::). + +`--warn-shared-textrel' + Warn if the linker adds a DT_TEXTREL to a shared object. + +`--warn-alternate-em' + Warn if an object has alternate ELF machine code. + +`--warn-unresolved-symbols' + If the linker is going to report an unresolved symbol (see the + option `--unresolved-symbols') it will normally generate an error. + This option makes it generate a warning instead. + +`--error-unresolved-symbols' + This restores the linker's default behaviour of generating errors + when it is reporting unresolved symbols. + +`--whole-archive' + For each archive mentioned on the command line after the + `--whole-archive' option, include every object file in the archive + in the link, rather than searching the archive for the required + object files. This is normally used to turn an archive file into + a shared library, forcing every object to be included in the + resulting shared library. This option may be used more than once. + + Two notes when using this option from gcc: First, gcc doesn't know + about this option, so you have to use `-Wl,-whole-archive'. + Second, don't forget to use `-Wl,-no-whole-archive' after your + list of archives, because gcc will add its own list of archives to + your link and you may not want this flag to affect those as well. + +`--wrap=SYMBOL' + Use a wrapper function for SYMBOL. Any undefined reference to + SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined + reference to `__real_SYMBOL' will be resolved to SYMBOL. + + This can be used to provide a wrapper for a system function. The + wrapper function should be called `__wrap_SYMBOL'. If it wishes + to call the system function, it should call `__real_SYMBOL'. + + Here is a trivial example: + + void * + __wrap_malloc (size_t c) + { + printf ("malloc called with %zu\n", c); + return __real_malloc (c); + } + + If you link other code with this file using `--wrap malloc', then + all calls to `malloc' will call the function `__wrap_malloc' + instead. The call to `__real_malloc' in `__wrap_malloc' will call + the real `malloc' function. + + You may wish to provide a `__real_malloc' function as well, so that + links without the `--wrap' option will succeed. If you do this, + you should not put the definition of `__real_malloc' in the same + file as `__wrap_malloc'; if you do, the assembler may resolve the + call before the linker has a chance to wrap it to `malloc'. + +`--eh-frame-hdr' + Request creation of `.eh_frame_hdr' section and ELF + `PT_GNU_EH_FRAME' segment header. + +`--no-ld-generated-unwind-info' + Request creation of `.eh_frame' unwind info for linker generated + code sections like PLT. This option is on by default if linker + generated unwind info is supported. + +`--enable-new-dtags' +`--disable-new-dtags' + This linker can create the new dynamic tags in ELF. But the older + ELF systems may not understand them. If you specify + `--enable-new-dtags', the new dynamic tags will be created as + needed and older dynamic tags will be omitted. If you specify + `--disable-new-dtags', no new dynamic tags will be created. By + default, the new dynamic tags are not created. Note that those + options are only available for ELF systems. + +`--hash-size=NUMBER' + Set the default size of the linker's hash tables to a prime number + close to NUMBER. Increasing this value can reduce the length of + time it takes the linker to perform its tasks, at the expense of + increasing the linker's memory requirements. Similarly reducing + this value can reduce the memory requirements at the expense of + speed. + +`--hash-style=STYLE' + Set the type of linker's hash table(s). STYLE can be either + `sysv' for classic ELF `.hash' section, `gnu' for new style GNU + `.gnu.hash' section or `both' for both the classic ELF `.hash' and + new style GNU `.gnu.hash' hash tables. The default is `sysv'. + +`--reduce-memory-overheads' + This option reduces memory requirements at ld runtime, at the + expense of linking speed. This was introduced to select the old + O(n^2) algorithm for link map file generation, rather than the new + O(n) algorithm which uses about 40% more memory for symbol storage. + + Another effect of the switch is to set the default hash table size + to 1021, which again saves memory at the cost of lengthening the + linker's run time. This is not done however if the `--hash-size' + switch has been used. + + The `--reduce-memory-overheads' switch may be also be used to + enable other tradeoffs in future versions of the linker. + +`--build-id' +`--build-id=STYLE' + Request the creation of a `.note.gnu.build-id' ELF note section or + a `.build-id' COFF section. The contents of the note are unique + bits identifying this linked file. STYLE can be `uuid' to use 128 + random bits, `sha1' to use a 160-bit SHA1 hash on the normative + parts of the output contents, `md5' to use a 128-bit MD5 hash on + the normative parts of the output contents, or `0xHEXSTRING' to + use a chosen bit string specified as an even number of hexadecimal + digits (`-' and `:' characters between digit pairs are ignored). + If STYLE is omitted, `sha1' is used. + + The `md5' and `sha1' styles produces an identifier that is always + the same in an identical output file, but will be unique among all + nonidentical output files. It is not intended to be compared as a + checksum for the file's contents. A linked file may be changed + later by other tools, but the build ID bit string identifying the + original linked file does not change. + + Passing `none' for STYLE disables the setting from any + `--build-id' options earlier on the command line. + +2.1.1 Options Specific to i386 PE Targets +----------------------------------------- + +The i386 PE linker supports the `-shared' option, which causes the +output to be a dynamically linked library (DLL) instead of a normal +executable. You should name the output `*.dll' when you use this +option. In addition, the linker fully supports the standard `*.def' +files, which may be specified on the linker command line like an object +file (in fact, it should precede archives it exports symbols from, to +ensure that they get linked in, just like a normal object file). + + In addition to the options common to all targets, the i386 PE linker +support additional command line options that are specific to the i386 +PE target. Options that take values may be separated from their values +by either a space or an equals sign. + +`--add-stdcall-alias' + If given, symbols with a stdcall suffix (@NN) will be exported + as-is and also with the suffix stripped. [This option is specific + to the i386 PE targeted port of the linker] + +`--base-file FILE' + Use FILE as the name of a file in which to save the base addresses + of all the relocations needed for generating DLLs with `dlltool'. + [This is an i386 PE specific option] + +`--dll' + Create a DLL instead of a regular executable. You may also use + `-shared' or specify a `LIBRARY' in a given `.def' file. [This + option is specific to the i386 PE targeted port of the linker] + +`--enable-long-section-names' +`--disable-long-section-names' + The PE variants of the Coff object format add an extension that + permits the use of section names longer than eight characters, the + normal limit for Coff. By default, these names are only allowed + in object files, as fully-linked executable images do not carry + the Coff string table required to support the longer names. As a + GNU extension, it is possible to allow their use in executable + images as well, or to (probably pointlessly!) disallow it in + object files, by using these two options. Executable images + generated with these long section names are slightly non-standard, + carrying as they do a string table, and may generate confusing + output when examined with non-GNU PE-aware tools, such as file + viewers and dumpers. However, GDB relies on the use of PE long + section names to find Dwarf-2 debug information sections in an + executable image at runtime, and so if neither option is specified + on the command-line, `ld' will enable long section names, + overriding the default and technically correct behaviour, when it + finds the presence of debug information while linking an executable + image and not stripping symbols. [This option is valid for all PE + targeted ports of the linker] + +`--enable-stdcall-fixup' +`--disable-stdcall-fixup' + If the link finds a symbol that it cannot resolve, it will attempt + to do "fuzzy linking" by looking for another defined symbol that + differs only in the format of the symbol name (cdecl vs stdcall) + and will resolve that symbol by linking to the match. For + example, the undefined symbol `_foo' might be linked to the + function `_foo@12', or the undefined symbol `_bar@16' might be + linked to the function `_bar'. When the linker does this, it + prints a warning, since it normally should have failed to link, + but sometimes import libraries generated from third-party dlls may + need this feature to be usable. If you specify + `--enable-stdcall-fixup', this feature is fully enabled and + warnings are not printed. If you specify + `--disable-stdcall-fixup', this feature is disabled and such + mismatches are considered to be errors. [This option is specific + to the i386 PE targeted port of the linker] + +`--leading-underscore' +`--no-leading-underscore' + For most targets default symbol-prefix is an underscore and is + defined in target's description. By this option it is possible to + disable/enable the default underscore symbol-prefix. + +`--export-all-symbols' + If given, all global symbols in the objects used to build a DLL + will be exported by the DLL. Note that this is the default if + there otherwise wouldn't be any exported symbols. When symbols are + explicitly exported via DEF files or implicitly exported via + function attributes, the default is to not export anything else + unless this option is given. Note that the symbols `DllMain@12', + `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will + not be automatically exported. Also, symbols imported from other + DLLs will not be re-exported, nor will symbols specifying the + DLL's internal layout such as those beginning with `_head_' or + ending with `_iname'. In addition, no symbols from `libgcc', + `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols + whose names begin with `__rtti_' or `__builtin_' will not be + exported, to help with C++ DLLs. Finally, there is an extensive + list of cygwin-private symbols that are not exported (obviously, + this applies on when building DLLs for cygwin targets). These + cygwin-excludes are: `_cygwin_dll_entry@12', + `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12', + `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0', + `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and + `environ'. [This option is specific to the i386 PE targeted port + of the linker] + +`--exclude-symbols SYMBOL,SYMBOL,...' + Specifies a list of symbols which should not be automatically + exported. The symbol names may be delimited by commas or colons. + [This option is specific to the i386 PE targeted port of the + linker] + +`--exclude-all-symbols' + Specifies no symbols should be automatically exported. [This + option is specific to the i386 PE targeted port of the linker] + +`--file-alignment' + Specify the file alignment. Sections in the file will always + begin at file offsets which are multiples of this number. This + defaults to 512. [This option is specific to the i386 PE targeted + port of the linker] + +`--heap RESERVE' +`--heap RESERVE,COMMIT' + Specify the number of bytes of memory to reserve (and optionally + commit) to be used as heap for this program. The default is 1MB + reserved, 4K committed. [This option is specific to the i386 PE + targeted port of the linker] + +`--image-base VALUE' + Use VALUE as the base address of your program or dll. This is the + lowest memory location that will be used when your program or dll + is loaded. To reduce the need to relocate and improve performance + of your dlls, each should have a unique base address and not + overlap any other dlls. The default is 0x400000 for executables, + and 0x10000000 for dlls. [This option is specific to the i386 PE + targeted port of the linker] + +`--kill-at' + If given, the stdcall suffixes (@NN) will be stripped from symbols + before they are exported. [This option is specific to the i386 PE + targeted port of the linker] + +`--large-address-aware' + If given, the appropriate bit in the "Characteristics" field of + the COFF header is set to indicate that this executable supports + virtual addresses greater than 2 gigabytes. This should be used + in conjunction with the /3GB or /USERVA=VALUE megabytes switch in + the "[operating systems]" section of the BOOT.INI. Otherwise, + this bit has no effect. [This option is specific to PE targeted + ports of the linker] + +`--disable-large-address-aware' + Reverts the effect of a previous `--large-address-aware' option. + This is useful if `--large-address-aware' is always set by the + compiler driver (e.g. Cygwin gcc) and the executable does not + support virtual addresses greater than 2 gigabytes. [This option + is specific to PE targeted ports of the linker] + +`--major-image-version VALUE' + Sets the major number of the "image version". Defaults to 1. + [This option is specific to the i386 PE targeted port of the + linker] + +`--major-os-version VALUE' + Sets the major number of the "os version". Defaults to 4. [This + option is specific to the i386 PE targeted port of the linker] + +`--major-subsystem-version VALUE' + Sets the major number of the "subsystem version". Defaults to 4. + [This option is specific to the i386 PE targeted port of the + linker] + +`--minor-image-version VALUE' + Sets the minor number of the "image version". Defaults to 0. + [This option is specific to the i386 PE targeted port of the + linker] + +`--minor-os-version VALUE' + Sets the minor number of the "os version". Defaults to 0. [This + option is specific to the i386 PE targeted port of the linker] + +`--minor-subsystem-version VALUE' + Sets the minor number of the "subsystem version". Defaults to 0. + [This option is specific to the i386 PE targeted port of the + linker] + +`--output-def FILE' + The linker will create the file FILE which will contain a DEF file + corresponding to the DLL the linker is generating. This DEF file + (which should be called `*.def') may be used to create an import + library with `dlltool' or may be used as a reference to + automatically or implicitly exported symbols. [This option is + specific to the i386 PE targeted port of the linker] + +`--out-implib FILE' + The linker will create the file FILE which will contain an import + lib corresponding to the DLL the linker is generating. This import + lib (which should be called `*.dll.a' or `*.a' may be used to link + clients against the generated DLL; this behaviour makes it + possible to skip a separate `dlltool' import library creation step. + [This option is specific to the i386 PE targeted port of the + linker] + +`--enable-auto-image-base' +`--enable-auto-image-base=VALUE' + Automatically choose the image base for DLLs, optionally starting + with base VALUE, unless one is specified using the `--image-base' + argument. By using a hash generated from the dllname to create + unique image bases for each DLL, in-memory collisions and + relocations which can delay program execution are avoided. [This + option is specific to the i386 PE targeted port of the linker] + +`--disable-auto-image-base' + Do not automatically generate a unique image base. If there is no + user-specified image base (`--image-base') then use the platform + default. [This option is specific to the i386 PE targeted port of + the linker] + +`--dll-search-prefix STRING' + When linking dynamically to a dll without an import library, + search for `.dll' in preference to + `lib.dll'. This behaviour allows easy distinction + between DLLs built for the various "subplatforms": native, cygwin, + uwin, pw, etc. For instance, cygwin DLLs typically use + `--dll-search-prefix=cyg'. [This option is specific to the i386 + PE targeted port of the linker] + +`--enable-auto-import' + Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA + imports from DLLs, and create the necessary thunking symbols when + building the import libraries with those DATA exports. Note: Use + of the 'auto-import' extension will cause the text section of the + image file to be made writable. This does not conform to the + PE-COFF format specification published by Microsoft. + + Note - use of the 'auto-import' extension will also cause read only + data which would normally be placed into the .rdata section to be + placed into the .data section instead. This is in order to work + around a problem with consts that is described here: + http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html + + Using 'auto-import' generally will 'just work' - but sometimes you + may see this message: + + "variable '' can't be auto-imported. Please read the + documentation for ld's `--enable-auto-import' for details." + + This message occurs when some (sub)expression accesses an address + ultimately given by the sum of two constants (Win32 import tables + only allow one). Instances where this may occur include accesses + to member fields of struct variables imported from a DLL, as well + as using a constant index into an array variable imported from a + DLL. Any multiword variable (arrays, structs, long long, etc) may + trigger this error condition. However, regardless of the exact + data type of the offending exported variable, ld will always + detect it, issue the warning, and exit. + + There are several ways to address this difficulty, regardless of + the data type of the exported variable: + + One way is to use -enable-runtime-pseudo-reloc switch. This leaves + the task of adjusting references in your client code for runtime + environment, so this method works only when runtime environment + supports this feature. + + A second solution is to force one of the 'constants' to be a + variable - that is, unknown and un-optimizable at compile time. + For arrays, there are two possibilities: a) make the indexee (the + array's address) a variable, or b) make the 'constant' index a + variable. Thus: + + extern type extern_array[]; + extern_array[1] --> + { volatile type *t=extern_array; t[1] } + + or + + extern type extern_array[]; + extern_array[1] --> + { volatile int t=1; extern_array[t] } + + For structs (and most other multiword data types) the only option + is to make the struct itself (or the long long, or the ...) + variable: + + extern struct s extern_struct; + extern_struct.field --> + { volatile struct s *t=&extern_struct; t->field } + + or + + extern long long extern_ll; + extern_ll --> + { volatile long long * local_ll=&extern_ll; *local_ll } + + A third method of dealing with this difficulty is to abandon + 'auto-import' for the offending symbol and mark it with + `__declspec(dllimport)'. However, in practice that requires using + compile-time #defines to indicate whether you are building a DLL, + building client code that will link to the DLL, or merely + building/linking to a static library. In making the choice + between the various methods of resolving the 'direct address with + constant offset' problem, you should consider typical real-world + usage: + + Original: + --foo.h + extern int arr[]; + --foo.c + #include "foo.h" + void main(int argc, char **argv){ + printf("%d\n",arr[1]); + } + + Solution 1: + --foo.h + extern int arr[]; + --foo.c + #include "foo.h" + void main(int argc, char **argv){ + /* This workaround is for win32 and cygwin; do not "optimize" */ + volatile int *parr = arr; + printf("%d\n",parr[1]); + } + + Solution 2: + --foo.h + /* Note: auto-export is assumed (no __declspec(dllexport)) */ + #if (defined(_WIN32) || defined(__CYGWIN__)) && \ + !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) + #define FOO_IMPORT __declspec(dllimport) + #else + #define FOO_IMPORT + #endif + extern FOO_IMPORT int arr[]; + --foo.c + #include "foo.h" + void main(int argc, char **argv){ + printf("%d\n",arr[1]); + } + + A fourth way to avoid this problem is to re-code your library to + use a functional interface rather than a data interface for the + offending variables (e.g. set_foo() and get_foo() accessor + functions). [This option is specific to the i386 PE targeted port + of the linker] + +`--disable-auto-import' + Do not attempt to do sophisticated linking of `_symbol' to + `__imp__symbol' for DATA imports from DLLs. [This option is + specific to the i386 PE targeted port of the linker] + +`--enable-runtime-pseudo-reloc' + If your code contains expressions described in -enable-auto-import + section, that is, DATA imports from DLL with non-zero offset, this + switch will create a vector of 'runtime pseudo relocations' which + can be used by runtime environment to adjust references to such + data in your client code. [This option is specific to the i386 PE + targeted port of the linker] + +`--disable-runtime-pseudo-reloc' + Do not create pseudo relocations for non-zero offset DATA imports + from DLLs. [This option is specific to the i386 PE targeted port + of the linker] + +`--enable-extra-pe-debug' + Show additional debug info related to auto-import symbol thunking. + [This option is specific to the i386 PE targeted port of the + linker] + +`--section-alignment' + Sets the section alignment. Sections in memory will always begin + at addresses which are a multiple of this number. Defaults to + 0x1000. [This option is specific to the i386 PE targeted port of + the linker] + +`--stack RESERVE' +`--stack RESERVE,COMMIT' + Specify the number of bytes of memory to reserve (and optionally + commit) to be used as stack for this program. The default is 2MB + reserved, 4K committed. [This option is specific to the i386 PE + targeted port of the linker] + +`--subsystem WHICH' +`--subsystem WHICH:MAJOR' +`--subsystem WHICH:MAJOR.MINOR' + Specifies the subsystem under which your program will execute. The + legal values for WHICH are `native', `windows', `console', + `posix', and `xbox'. You may optionally set the subsystem version + also. Numeric values are also accepted for WHICH. [This option + is specific to the i386 PE targeted port of the linker] + + The following options set flags in the `DllCharacteristics' field + of the PE file header: [These options are specific to PE targeted + ports of the linker] + +`--high-entropy-va' + Image is compatible with 64-bit address space layout randomization + (ASLR). + +`--dynamicbase' + The image base address may be relocated using address space layout + randomization (ASLR). This feature was introduced with MS Windows + Vista for i386 PE targets. + +`--forceinteg' + Code integrity checks are enforced. + +`--nxcompat' + The image is compatible with the Data Execution Prevention. This + feature was introduced with MS Windows XP SP2 for i386 PE targets. + +`--no-isolation' + Although the image understands isolation, do not isolate the image. + +`--no-seh' + The image does not use SEH. No SE handler may be called from this + image. + +`--no-bind' + Do not bind this image. + +`--wdmdriver' + The driver uses the MS Windows Driver Model. + +`--tsaware' + The image is Terminal Server aware. + +`--insert-timestamp' +`--no-insert-timestamp' + Insert a real timestamp into the image. This is the default + behaviour as it matches legacy code and it means that the image + will work with other, proprietary tools. The problem with this + default is that it will result in slightly different images being + produced each tiem the same sources are linked. The option + `--no-insert-timestamp' can be used to insert a zero value for the + timestamp, this ensuring that binaries produced from indentical + sources will compare identically. + +2.1.2 Options specific to C6X uClinux targets +--------------------------------------------- + +The C6X uClinux target uses a binary format called DSBT to support +shared libraries. Each shared library in the system needs to have a +unique index; all executables use an index of 0. + +`--dsbt-size SIZE' + This option sets the number of entires in the DSBT of the current + executable or shared library to SIZE. The default is to create a + table with 64 entries. + +`--dsbt-index INDEX' + This option sets the DSBT index of the current executable or + shared library to INDEX. The default is 0, which is appropriate + for generating executables. If a shared library is generated with + a DSBT index of 0, the `R_C6000_DSBT_INDEX' relocs are copied into + the output file. + + The `--no-merge-exidx-entries' switch disables the merging of + adjacent exidx entries in frame unwind info. + + +2.1.3 Options specific to Motorola 68HC11 and 68HC12 targets +------------------------------------------------------------ + +The 68HC11 and 68HC12 linkers support specific options to control the +memory bank switching mapping and trampoline code generation. + +`--no-trampoline' + This option disables the generation of trampoline. By default a + trampoline is generated for each far function which is called + using a `jsr' instruction (this happens when a pointer to a far + function is taken). + +`--bank-window NAME' + This option indicates to the linker the name of the memory region + in the `MEMORY' specification that describes the memory bank + window. The definition of such region is then used by the linker + to compute paging and addresses within the memory window. + + +2.1.4 Options specific to Motorola 68K target +--------------------------------------------- + +The following options are supported to control handling of GOT +generation when linking for 68K targets. + +`--got=TYPE' + This option tells the linker which GOT generation scheme to use. + TYPE should be one of `single', `negative', `multigot' or + `target'. For more information refer to the Info entry for `ld'. + + +2.1.5 Options specific to MIPS targets +-------------------------------------- + +The following options are supported to control microMIPS instruction +generation when linking for MIPS targets. + +`--insn32' +`--no-insn32' + These options control the choice of microMIPS instructions used in + code generated by the linker, such as that in the PLT or lazy + binding stubs, or in relaxation. If `--insn32' is used, then the + linker only uses 32-bit instruction encodings. By default or if + `--no-insn32' is used, all instruction encodings are used, + including 16-bit ones where possible. + + + +File: ld.info, Node: Environment, Prev: Options, Up: Invocation + +2.2 Environment Variables +========================= + +You can change the behaviour of `ld' with the environment variables +`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'. + + `GNUTARGET' determines the input-file object format if you don't use +`-b' (or its synonym `--format'). Its value should be one of the BFD +names for an input format (*note BFD::). If there is no `GNUTARGET' in +the environment, `ld' uses the natural format of the target. If +`GNUTARGET' is set to `default' then BFD attempts to discover the input +format by examining binary input files; this method often succeeds, but +there are potential ambiguities, since there is no method of ensuring +that the magic number used to specify object-file formats is unique. +However, the configuration procedure for BFD on each system places the +conventional format for that system first in the search-list, so +ambiguities are resolved in favor of convention. + + `LDEMULATION' determines the default emulation if you don't use the +`-m' option. The emulation can affect various aspects of linker +behaviour, particularly the default linker script. You can list the +available emulations with the `--verbose' or `-V' options. If the `-m' +option is not used, and the `LDEMULATION' environment variable is not +defined, the default emulation depends upon how the linker was +configured. + + Normally, the linker will default to demangling symbols. However, if +`COLLECT_NO_DEMANGLE' is set in the environment, then it will default +to not demangling symbols. This environment variable is used in a +similar fashion by the `gcc' linker wrapper program. The default may +be overridden by the `--demangle' and `--no-demangle' options. + + +File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top + +3 Linker Scripts +**************** + +Every link is controlled by a "linker script". This script is written +in the linker command language. + + The main purpose of the linker script is to describe how the +sections in the input files should be mapped into the output file, and +to control the memory layout of the output file. Most linker scripts +do nothing more than this. However, when necessary, the linker script +can also direct the linker to perform many other operations, using the +commands described below. + + The linker always uses a linker script. If you do not supply one +yourself, the linker will use a default script that is compiled into the +linker executable. You can use the `--verbose' command line option to +display the default linker script. Certain command line options, such +as `-r' or `-N', will affect the default linker script. + + You may supply your own linker script by using the `-T' command line +option. When you do this, your linker script will replace the default +linker script. + + You may also use linker scripts implicitly by naming them as input +files to the linker, as though they were files to be linked. *Note +Implicit Linker Scripts::. + +* Menu: + +* Basic Script Concepts:: Basic Linker Script Concepts +* Script Format:: Linker Script Format +* Simple Example:: Simple Linker Script Example +* Simple Commands:: Simple Linker Script Commands +* Assignments:: Assigning Values to Symbols +* SECTIONS:: SECTIONS Command +* MEMORY:: MEMORY Command +* PHDRS:: PHDRS Command +* VERSION:: VERSION Command +* Expressions:: Expressions in Linker Scripts +* Implicit Linker Scripts:: Implicit Linker Scripts + + +File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts + +3.1 Basic Linker Script Concepts +================================ + +We need to define some basic concepts and vocabulary in order to +describe the linker script language. + + The linker combines input files into a single output file. The +output file and each input file are in a special data format known as an +"object file format". Each file is called an "object file". The +output file is often called an "executable", but for our purposes we +will also call it an object file. Each object file has, among other +things, a list of "sections". We sometimes refer to a section in an +input file as an "input section"; similarly, a section in the output +file is an "output section". + + Each section in an object file has a name and a size. Most sections +also have an associated block of data, known as the "section contents". +A section may be marked as "loadable", which means that the contents +should be loaded into memory when the output file is run. A section +with no contents may be "allocatable", which means that an area in +memory should be set aside, but nothing in particular should be loaded +there (in some cases this memory must be zeroed out). A section which +is neither loadable nor allocatable typically contains some sort of +debugging information. + + Every loadable or allocatable output section has two addresses. The +first is the "VMA", or virtual memory address. This is the address the +section will have when the output file is run. The second is the +"LMA", or load memory address. This is the address at which the +section will be loaded. In most cases the two addresses will be the +same. An example of when they might be different is when a data section +is loaded into ROM, and then copied into RAM when the program starts up +(this technique is often used to initialize global variables in a ROM +based system). In this case the ROM address would be the LMA, and the +RAM address would be the VMA. + + You can see the sections in an object file by using the `objdump' +program with the `-h' option. + + Every object file also has a list of "symbols", known as the "symbol +table". A symbol may be defined or undefined. Each symbol has a name, +and each defined symbol has an address, among other information. If +you compile a C or C++ program into an object file, you will get a +defined symbol for every defined function and global or static +variable. Every undefined function or global variable which is +referenced in the input file will become an undefined symbol. + + You can see the symbols in an object file by using the `nm' program, +or by using the `objdump' program with the `-t' option. + + +File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts + +3.2 Linker Script Format +======================== + +Linker scripts are text files. + + You write a linker script as a series of commands. Each command is +either a keyword, possibly followed by arguments, or an assignment to a +symbol. You may separate commands using semicolons. Whitespace is +generally ignored. + + Strings such as file or format names can normally be entered +directly. If the file name contains a character such as a comma which +would otherwise serve to separate file names, you may put the file name +in double quotes. There is no way to use a double quote character in a +file name. + + You may include comments in linker scripts just as in C, delimited by +`/*' and `*/'. As in C, comments are syntactically equivalent to +whitespace. + + +File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts + +3.3 Simple Linker Script Example +================================ + +Many linker scripts are fairly simple. + + The simplest possible linker script has just one command: +`SECTIONS'. You use the `SECTIONS' command to describe the memory +layout of the output file. + + The `SECTIONS' command is a powerful command. Here we will describe +a simple use of it. Let's assume your program consists only of code, +initialized data, and uninitialized data. These will be in the +`.text', `.data', and `.bss' sections, respectively. Let's assume +further that these are the only sections which appear in your input +files. + + For this example, let's say that the code should be loaded at address +0x10000, and that the data should start at address 0x8000000. Here is a +linker script which will do that: + SECTIONS + { + . = 0x10000; + .text : { *(.text) } + . = 0x8000000; + .data : { *(.data) } + .bss : { *(.bss) } + } + + You write the `SECTIONS' command as the keyword `SECTIONS', followed +by a series of symbol assignments and output section descriptions +enclosed in curly braces. + + The first line inside the `SECTIONS' command of the above example +sets the value of the special symbol `.', which is the location +counter. If you do not specify the address of an output section in some +other way (other ways are described later), the address is set from the +current value of the location counter. The location counter is then +incremented by the size of the output section. At the start of the +`SECTIONS' command, the location counter has the value `0'. + + The second line defines an output section, `.text'. The colon is +required syntax which may be ignored for now. Within the curly braces +after the output section name, you list the names of the input sections +which should be placed into this output section. The `*' is a wildcard +which matches any file name. The expression `*(.text)' means all +`.text' input sections in all input files. + + Since the location counter is `0x10000' when the output section +`.text' is defined, the linker will set the address of the `.text' +section in the output file to be `0x10000'. + + The remaining lines define the `.data' and `.bss' sections in the +output file. The linker will place the `.data' output section at +address `0x8000000'. After the linker places the `.data' output +section, the value of the location counter will be `0x8000000' plus the +size of the `.data' output section. The effect is that the linker will +place the `.bss' output section immediately after the `.data' output +section in memory. + + The linker will ensure that each output section has the required +alignment, by increasing the location counter if necessary. In this +example, the specified addresses for the `.text' and `.data' sections +will probably satisfy any alignment constraints, but the linker may +have to create a small gap between the `.data' and `.bss' sections. + + That's it! That's a simple and complete linker script. + + +File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts + +3.4 Simple Linker Script Commands +================================= + +In this section we describe the simple linker script commands. + +* Menu: + +* Entry Point:: Setting the entry point +* File Commands:: Commands dealing with files + +* Format Commands:: Commands dealing with object file formats + +* REGION_ALIAS:: Assign alias names to memory regions +* Miscellaneous Commands:: Other linker script commands + + +File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands + +3.4.1 Setting the Entry Point +----------------------------- + +The first instruction to execute in a program is called the "entry +point". You can use the `ENTRY' linker script command to set the entry +point. The argument is a symbol name: + ENTRY(SYMBOL) + + There are several ways to set the entry point. The linker will set +the entry point by trying each of the following methods in order, and +stopping when one of them succeeds: + * the `-e' ENTRY command-line option; + + * the `ENTRY(SYMBOL)' command in a linker script; + + * the value of a target specific symbol, if it is defined; For many + targets this is `start', but PE and BeOS based systems for example + check a list of possible entry symbols, matching the first one + found. + + * the address of the first byte of the `.text' section, if present; + + * The address `0'. + + +File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands + +3.4.2 Commands Dealing with Files +--------------------------------- + +Several linker script commands deal with files. + +`INCLUDE FILENAME' + Include the linker script FILENAME at this point. The file will + be searched for in the current directory, and in any directory + specified with the `-L' option. You can nest calls to `INCLUDE' + up to 10 levels deep. + + You can place `INCLUDE' directives at the top level, in `MEMORY' or + `SECTIONS' commands, or in output section descriptions. + +`INPUT(FILE, FILE, ...)' +`INPUT(FILE FILE ...)' + The `INPUT' command directs the linker to include the named files + in the link, as though they were named on the command line. + + For example, if you always want to include `subr.o' any time you do + a link, but you can't be bothered to put it on every link command + line, then you can put `INPUT (subr.o)' in your linker script. + + In fact, if you like, you can list all of your input files in the + linker script, and then invoke the linker with nothing but a `-T' + option. + + In case a "sysroot prefix" is configured, and the filename starts + with the `/' character, and the script being processed was located + inside the "sysroot prefix", the filename will be looked for in + the "sysroot prefix". Otherwise, the linker will try to open the + file in the current directory. If it is not found, the linker + will search through the archive library search path. The "sysroot + prefix" can also be forced by specifying `=' as the first + character in the filename path. See also the description of `-L' + in *Note Command Line Options: Options. + + If you use `INPUT (-lFILE)', `ld' will transform the name to + `libFILE.a', as with the command line argument `-l'. + + When you use the `INPUT' command in an implicit linker script, the + files will be included in the link at the point at which the linker + script file is included. This can affect archive searching. + +`GROUP(FILE, FILE, ...)' +`GROUP(FILE FILE ...)' + The `GROUP' command is like `INPUT', except that the named files + should all be archives, and they are searched repeatedly until no + new undefined references are created. See the description of `-(' + in *Note Command Line Options: Options. + +`AS_NEEDED(FILE, FILE, ...)' +`AS_NEEDED(FILE FILE ...)' + This construct can appear only inside of the `INPUT' or `GROUP' + commands, among other filenames. The files listed will be handled + as if they appear directly in the `INPUT' or `GROUP' commands, + with the exception of ELF shared libraries, that will be added only + when they are actually needed. This construct essentially enables + `--as-needed' option for all the files listed inside of it and + restores previous `--as-needed' resp. `--no-as-needed' setting + afterwards. + +`OUTPUT(FILENAME)' + The `OUTPUT' command names the output file. Using + `OUTPUT(FILENAME)' in the linker script is exactly like using `-o + FILENAME' on the command line (*note Command Line Options: + Options.). If both are used, the command line option takes + precedence. + + You can use the `OUTPUT' command to define a default name for the + output file other than the usual default of `a.out'. + +`SEARCH_DIR(PATH)' + The `SEARCH_DIR' command adds PATH to the list of paths where `ld' + looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly + like using `-L PATH' on the command line (*note Command Line + Options: Options.). If both are used, then the linker will search + both paths. Paths specified using the command line option are + searched first. + +`STARTUP(FILENAME)' + The `STARTUP' command is just like the `INPUT' command, except + that FILENAME will become the first input file to be linked, as + though it were specified first on the command line. This may be + useful when using a system in which the entry point is always the + start of the first file. + + +File: ld.info, Node: Format Commands, Next: REGION_ALIAS, Prev: File Commands, Up: Simple Commands + +3.4.3 Commands Dealing with Object File Formats +----------------------------------------------- + +A couple of linker script commands deal with object file formats. + +`OUTPUT_FORMAT(BFDNAME)' +`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' + The `OUTPUT_FORMAT' command names the BFD format to use for the + output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is + exactly like using `--oformat BFDNAME' on the command line (*note + Command Line Options: Options.). If both are used, the command + line option takes precedence. + + You can use `OUTPUT_FORMAT' with three arguments to use different + formats based on the `-EB' and `-EL' command line options. This + permits the linker script to set the output format based on the + desired endianness. + + If neither `-EB' nor `-EL' are used, then the output format will + be the first argument, DEFAULT. If `-EB' is used, the output + format will be the second argument, BIG. If `-EL' is used, the + output format will be the third argument, LITTLE. + + For example, the default linker script for the MIPS ELF target + uses this command: + OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) + This says that the default format for the output file is + `elf32-bigmips', but if the user uses the `-EL' command line + option, the output file will be created in the `elf32-littlemips' + format. + +`TARGET(BFDNAME)' + The `TARGET' command names the BFD format to use when reading input + files. It affects subsequent `INPUT' and `GROUP' commands. This + command is like using `-b BFDNAME' on the command line (*note + Command Line Options: Options.). If the `TARGET' command is used + but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also + used to set the format for the output file. *Note BFD::. + + +File: ld.info, Node: REGION_ALIAS, Next: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands + +3.4.4 Assign alias names to memory regions +------------------------------------------ + +Alias names can be added to existing memory regions created with the +*Note MEMORY:: command. Each name corresponds to at most one memory +region. + + REGION_ALIAS(ALIAS, REGION) + + The `REGION_ALIAS' function creates an alias name ALIAS for the +memory region REGION. This allows a flexible mapping of output sections +to memory regions. An example follows. + + Suppose we have an application for embedded systems which come with +various memory storage devices. All have a general purpose, volatile +memory `RAM' that allows code execution or data storage. Some may have +a read-only, non-volatile memory `ROM' that allows code execution and +read-only data access. The last variant is a read-only, non-volatile +memory `ROM2' with read-only data access and no code execution +capability. We have four output sections: + + * `.text' program code; + + * `.rodata' read-only data; + + * `.data' read-write initialized data; + + * `.bss' read-write zero initialized data. + + The goal is to provide a linker command file that contains a system +independent part defining the output sections and a system dependent +part mapping the output sections to the memory regions available on the +system. Our embedded systems come with three different memory setups +`A', `B' and `C': +Section Variant A Variant B Variant C +.text RAM ROM ROM +.rodata RAM ROM ROM2 +.data RAM RAM/ROM RAM/ROM2 +.bss RAM RAM RAM + The notation `RAM/ROM' or `RAM/ROM2' means that this section is +loaded into region `ROM' or `ROM2' respectively. Please note that the +load address of the `.data' section starts in all three variants at the +end of the `.rodata' section. + + The base linker script that deals with the output sections follows. +It includes the system dependent `linkcmds.memory' file that describes +the memory layout: + INCLUDE linkcmds.memory + + SECTIONS + { + .text : + { + *(.text) + } > REGION_TEXT + .rodata : + { + *(.rodata) + rodata_end = .; + } > REGION_RODATA + .data : AT (rodata_end) + { + data_start = .; + *(.data) + } > REGION_DATA + data_size = SIZEOF(.data); + data_load_start = LOADADDR(.data); + .bss : + { + *(.bss) + } > REGION_BSS + } + + Now we need three different `linkcmds.memory' files to define memory +regions and alias names. The content of `linkcmds.memory' for the three +variants `A', `B' and `C': +`A' + Here everything goes into the `RAM'. + MEMORY + { + RAM : ORIGIN = 0, LENGTH = 4M + } + + REGION_ALIAS("REGION_TEXT", RAM); + REGION_ALIAS("REGION_RODATA", RAM); + REGION_ALIAS("REGION_DATA", RAM); + REGION_ALIAS("REGION_BSS", RAM); + +`B' + Program code and read-only data go into the `ROM'. Read-write + data goes into the `RAM'. An image of the initialized data is + loaded into the `ROM' and will be copied during system start into + the `RAM'. + MEMORY + { + ROM : ORIGIN = 0, LENGTH = 3M + RAM : ORIGIN = 0x10000000, LENGTH = 1M + } + + REGION_ALIAS("REGION_TEXT", ROM); + REGION_ALIAS("REGION_RODATA", ROM); + REGION_ALIAS("REGION_DATA", RAM); + REGION_ALIAS("REGION_BSS", RAM); + +`C' + Program code goes into the `ROM'. Read-only data goes into the + `ROM2'. Read-write data goes into the `RAM'. An image of the + initialized data is loaded into the `ROM2' and will be copied + during system start into the `RAM'. + MEMORY + { + ROM : ORIGIN = 0, LENGTH = 2M + ROM2 : ORIGIN = 0x10000000, LENGTH = 1M + RAM : ORIGIN = 0x20000000, LENGTH = 1M + } + + REGION_ALIAS("REGION_TEXT", ROM); + REGION_ALIAS("REGION_RODATA", ROM2); + REGION_ALIAS("REGION_DATA", RAM); + REGION_ALIAS("REGION_BSS", RAM); + + It is possible to write a common system initialization routine to +copy the `.data' section from `ROM' or `ROM2' into the `RAM' if +necessary: + #include + + extern char data_start []; + extern char data_size []; + extern char data_load_start []; + + void copy_data(void) + { + if (data_start != data_load_start) + { + memcpy(data_start, data_load_start, (size_t) data_size); + } + } + + +File: ld.info, Node: Miscellaneous Commands, Prev: REGION_ALIAS, Up: Simple Commands + +3.4.5 Other Linker Script Commands +---------------------------------- + +There are a few other linker scripts commands. + +`ASSERT(EXP, MESSAGE)' + Ensure that EXP is non-zero. If it is zero, then exit the linker + with an error code, and print MESSAGE. + +`EXTERN(SYMBOL SYMBOL ...)' + Force SYMBOL to be entered in the output file as an undefined + symbol. Doing this may, for example, trigger linking of additional + modules from standard libraries. You may list several SYMBOLs for + each `EXTERN', and you may use `EXTERN' multiple times. This + command has the same effect as the `-u' command-line option. + +`FORCE_COMMON_ALLOCATION' + This command has the same effect as the `-d' command-line option: + to make `ld' assign space to common symbols even if a relocatable + output file is specified (`-r'). + +`INHIBIT_COMMON_ALLOCATION' + This command has the same effect as the `--no-define-common' + command-line option: to make `ld' omit the assignment of addresses + to common symbols even for a non-relocatable output file. + +`INSERT [ AFTER | BEFORE ] OUTPUT_SECTION' + This command is typically used in a script specified by `-T' to + augment the default `SECTIONS' with, for example, overlays. It + inserts all prior linker script statements after (or before) + OUTPUT_SECTION, and also causes `-T' to not override the default + linker script. The exact insertion point is as for orphan + sections. *Note Location Counter::. The insertion happens after + the linker has mapped input sections to output sections. Prior to + the insertion, since `-T' scripts are parsed before the default + linker script, statements in the `-T' script occur before the + default linker script statements in the internal linker + representation of the script. In particular, input section + assignments will be made to `-T' output sections before those in + the default script. Here is an example of how a `-T' script using + `INSERT' might look: + + SECTIONS + { + OVERLAY : + { + .ov1 { ov1*(.text) } + .ov2 { ov2*(.text) } + } + } + INSERT AFTER .text; + +`NOCROSSREFS(SECTION SECTION ...)' + This command may be used to tell `ld' to issue an error about any + references among certain output sections. + + In certain types of programs, particularly on embedded systems when + using overlays, when one section is loaded into memory, another + section will not be. Any direct references between the two + sections would be errors. For example, it would be an error if + code in one section called a function defined in the other section. + + The `NOCROSSREFS' command takes a list of output section names. If + `ld' detects any cross references between the sections, it reports + an error and returns a non-zero exit status. Note that the + `NOCROSSREFS' command uses output section names, not input section + names. + +`OUTPUT_ARCH(BFDARCH)' + Specify a particular output machine architecture. The argument is + one of the names used by the BFD library (*note BFD::). You can + see the architecture of an object file by using the `objdump' + program with the `-f' option. + +`LD_FEATURE(STRING)' + This command may be used to modify `ld' behavior. If STRING is + `"SANE_EXPR"' then absolute symbols and numbers in a script are + simply treated as numbers everywhere. *Note Expression Section::. + + +File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts + +3.5 Assigning Values to Symbols +=============================== + +You may assign a value to a symbol in a linker script. This will define +the symbol and place it into the symbol table with a global scope. + +* Menu: + +* Simple Assignments:: Simple Assignments +* HIDDEN:: HIDDEN +* PROVIDE:: PROVIDE +* PROVIDE_HIDDEN:: PROVIDE_HIDDEN +* Source Code Reference:: How to use a linker script defined symbol in source code + + +File: ld.info, Node: Simple Assignments, Next: HIDDEN, Up: Assignments + +3.5.1 Simple Assignments +------------------------ + +You may assign to a symbol using any of the C assignment operators: + +`SYMBOL = EXPRESSION ;' +`SYMBOL += EXPRESSION ;' +`SYMBOL -= EXPRESSION ;' +`SYMBOL *= EXPRESSION ;' +`SYMBOL /= EXPRESSION ;' +`SYMBOL <<= EXPRESSION ;' +`SYMBOL >>= EXPRESSION ;' +`SYMBOL &= EXPRESSION ;' +`SYMBOL |= EXPRESSION ;' + + The first case will define SYMBOL to the value of EXPRESSION. In +the other cases, SYMBOL must already be defined, and the value will be +adjusted accordingly. + + The special symbol name `.' indicates the location counter. You may +only use this within a `SECTIONS' command. *Note Location Counter::. + + The semicolon after EXPRESSION is required. + + Expressions are defined below; see *Note Expressions::. + + You may write symbol assignments as commands in their own right, or +as statements within a `SECTIONS' command, or as part of an output +section description in a `SECTIONS' command. + + The section of the symbol will be set from the section of the +expression; for more information, see *Note Expression Section::. + + Here is an example showing the three different places that symbol +assignments may be used: + + floating_point = 0; + SECTIONS + { + .text : + { + *(.text) + _etext = .; + } + _bdata = (. + 3) & ~ 3; + .data : { *(.data) } + } + In this example, the symbol `floating_point' will be defined as +zero. The symbol `_etext' will be defined as the address following the +last `.text' input section. The symbol `_bdata' will be defined as the +address following the `.text' output section aligned upward to a 4 byte +boundary. + + +File: ld.info, Node: HIDDEN, Next: PROVIDE, Prev: Simple Assignments, Up: Assignments + +3.5.2 HIDDEN +------------ + +For ELF targeted ports, define a symbol that will be hidden and won't be +exported. The syntax is `HIDDEN(SYMBOL = EXPRESSION)'. + + Here is the example from *Note Simple Assignments::, rewritten to use +`HIDDEN': + + HIDDEN(floating_point = 0); + SECTIONS + { + .text : + { + *(.text) + HIDDEN(_etext = .); + } + HIDDEN(_bdata = (. + 3) & ~ 3); + .data : { *(.data) } + } + In this case none of the three symbols will be visible outside this +module. + + +File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: HIDDEN, Up: Assignments + +3.5.3 PROVIDE +------------- + +In some cases, it is desirable for a linker script to define a symbol +only if it is referenced and is not defined by any object included in +the link. For example, traditional linkers defined the symbol `etext'. +However, ANSI C requires that the user be able to use `etext' as a +function name without encountering an error. The `PROVIDE' keyword may +be used to define a symbol, such as `etext', only if it is referenced +but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'. + + Here is an example of using `PROVIDE' to define `etext': + SECTIONS + { + .text : + { + *(.text) + _etext = .; + PROVIDE(etext = .); + } + } + + In this example, if the program defines `_etext' (with a leading +underscore), the linker will give a multiple definition error. If, on +the other hand, the program defines `etext' (with no leading +underscore), the linker will silently use the definition in the program. +If the program references `etext' but does not define it, the linker +will use the definition in the linker script. + + +File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments + +3.5.4 PROVIDE_HIDDEN +-------------------- + +Similar to `PROVIDE'. For ELF targeted ports, the symbol will be +hidden and won't be exported. + + +File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments + +3.5.5 Source Code Reference +--------------------------- + +Accessing a linker script defined variable from source code is not +intuitive. In particular a linker script symbol is not equivalent to a +variable declaration in a high level language, it is instead a symbol +that does not have a value. + + Before going further, it is important to note that compilers often +transform names in the source code into different names when they are +stored in the symbol table. For example, Fortran compilers commonly +prepend or append an underscore, and C++ performs extensive `name +mangling'. Therefore there might be a discrepancy between the name of +a variable as it is used in source code and the name of the same +variable as it is defined in a linker script. For example in C a +linker script variable might be referred to as: + + extern int foo; + + But in the linker script it might be defined as: + + _foo = 1000; + + In the remaining examples however it is assumed that no name +transformation has taken place. + + When a symbol is declared in a high level language such as C, two +things happen. The first is that the compiler reserves enough space in +the program's memory to hold the _value_ of the symbol. The second is +that the compiler creates an entry in the program's symbol table which +holds the symbol's _address_. ie the symbol table contains the address +of the block of memory holding the symbol's value. So for example the +following C declaration, at file scope: + + int foo = 1000; + + creates an entry called `foo' in the symbol table. This entry holds +the address of an `int' sized block of memory where the number 1000 is +initially stored. + + When a program references a symbol the compiler generates code that +first accesses the symbol table to find the address of the symbol's +memory block and then code to read the value from that memory block. +So: + + foo = 1; + + looks up the symbol `foo' in the symbol table, gets the address +associated with this symbol and then writes the value 1 into that +address. Whereas: + + int * a = & foo; + + looks up the symbol `foo' in the symbol table, gets its address and +then copies this address into the block of memory associated with the +variable `a'. + + Linker scripts symbol declarations, by contrast, create an entry in +the symbol table but do not assign any memory to them. Thus they are +an address without a value. So for example the linker script +definition: + + foo = 1000; + + creates an entry in the symbol table called `foo' which holds the +address of memory location 1000, but nothing special is stored at +address 1000. This means that you cannot access the _value_ of a +linker script defined symbol - it has no value - all you can do is +access the _address_ of a linker script defined symbol. + + Hence when you are using a linker script defined symbol in source +code you should always take the address of the symbol, and never +attempt to use its value. For example suppose you want to copy the +contents of a section of memory called .ROM into a section called +.FLASH and the linker script contains these declarations: + + start_of_ROM = .ROM; + end_of_ROM = .ROM + sizeof (.ROM) - 1; + start_of_FLASH = .FLASH; + + Then the C source code to perform the copy would be: + + extern char start_of_ROM, end_of_ROM, start_of_FLASH; + + memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); + + Note the use of the `&' operators. These are correct. + + +File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts + +3.6 SECTIONS Command +==================== + +The `SECTIONS' command tells the linker how to map input sections into +output sections, and how to place the output sections in memory. + + The format of the `SECTIONS' command is: + SECTIONS + { + SECTIONS-COMMAND + SECTIONS-COMMAND + ... + } + + Each SECTIONS-COMMAND may of be one of the following: + + * an `ENTRY' command (*note Entry command: Entry Point.) + + * a symbol assignment (*note Assignments::) + + * an output section description + + * an overlay description + + The `ENTRY' command and symbol assignments are permitted inside the +`SECTIONS' command for convenience in using the location counter in +those commands. This can also make the linker script easier to +understand because you can use those commands at meaningful points in +the layout of the output file. + + Output section descriptions and overlay descriptions are described +below. + + If you do not use a `SECTIONS' command in your linker script, the +linker will place each input section into an identically named output +section in the order that the sections are first encountered in the +input files. If all input sections are present in the first file, for +example, the order of sections in the output file will match the order +in the first input file. The first section will be at address zero. + +* Menu: + +* Output Section Description:: Output section description +* Output Section Name:: Output section name +* Output Section Address:: Output section address +* Input Section:: Input section description +* Output Section Data:: Output section data +* Output Section Keywords:: Output section keywords +* Output Section Discarding:: Output section discarding +* Output Section Attributes:: Output section attributes +* Overlay Description:: Overlay description + + +File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS + +3.6.1 Output Section Description +-------------------------------- + +The full description of an output section looks like this: + SECTION [ADDRESS] [(TYPE)] : + [AT(LMA)] + [ALIGN(SECTION_ALIGN) | ALIGN_WITH_INPUT] + [SUBALIGN(SUBSECTION_ALIGN)] + [CONSTRAINT] + { + OUTPUT-SECTION-COMMAND + OUTPUT-SECTION-COMMAND + ... + } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] [,] + + Most output sections do not use most of the optional section +attributes. + + The whitespace around SECTION is required, so that the section name +is unambiguous. The colon and the curly braces are also required. The +comma at the end may be required if a FILLEXP is used and the next +SECTIONS-COMMAND looks like a continuation of the expression. The line +breaks and other white space are optional. + + Each OUTPUT-SECTION-COMMAND may be one of the following: + + * a symbol assignment (*note Assignments::) + + * an input section description (*note Input Section::) + + * data values to include directly (*note Output Section Data::) + + * a special output section keyword (*note Output Section Keywords::) + + +File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS + +3.6.2 Output Section Name +------------------------- + +The name of the output section is SECTION. SECTION must meet the +constraints of your output format. In formats which only support a +limited number of sections, such as `a.out', the name must be one of +the names supported by the format (`a.out', for example, allows only +`.text', `.data' or `.bss'). If the output format supports any number +of sections, but with numbers and not names (as is the case for Oasys), +the name should be supplied as a quoted numeric string. A section name +may consist of any sequence of characters, but a name which contains +any unusual characters such as commas must be quoted. + + The output section name `/DISCARD/' is special; *Note Output Section +Discarding::. + + +File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS + +3.6.3 Output Section Address +---------------------------- + +The ADDRESS is an expression for the VMA (the virtual memory address) +of the output section. This address is optional, but if it is provided +then the output address will be set exactly as specified. + + If the output address is not specified then one will be chosen for +the section, based on the heuristic below. This address will be +adjusted to fit the alignment requirement of the output section. The +alignment requirement is the strictest alignment of any input section +contained within the output section. + + The output section address heuristic is as follows: + + * If an output memory REGION is set for the section then it is added + to this region and its address will be the next free address in + that region. + + * If the MEMORY command has been used to create a list of memory + regions then the first region which has attributes compatible with + the section is selected to contain it. The section's output + address will be the next free address in that region; *Note + MEMORY::. + + * If no memory regions were specified, or none match the section then + the output address will be based on the current value of the + location counter. + +For example: + + .text . : { *(.text) } + +and + + .text : { *(.text) } + +are subtly different. The first will set the address of the `.text' +output section to the current value of the location counter. The +second will set it to the current value of the location counter aligned +to the strictest alignment of any of the `.text' input sections. + + The ADDRESS may be an arbitrary expression; *Note Expressions::. +For example, if you want to align the section on a 0x10 byte boundary, +so that the lowest four bits of the section address are zero, you could +do something like this: + .text ALIGN(0x10) : { *(.text) } + This works because `ALIGN' returns the current location counter +aligned upward to the specified value. + + Specifying ADDRESS for a section will change the value of the +location counter, provided that the section is non-empty. (Empty +sections are ignored). + + +File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS + +3.6.4 Input Section Description +------------------------------- + +The most common output section command is an input section description. + + The input section description is the most basic linker script +operation. You use output sections to tell the linker how to lay out +your program in memory. You use input section descriptions to tell the +linker how to map the input files into your memory layout. + +* Menu: + +* Input Section Basics:: Input section basics +* Input Section Wildcards:: Input section wildcard patterns +* Input Section Common:: Input section for common symbols +* Input Section Keep:: Input section and garbage collection +* Input Section Example:: Input section example + + +File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section + +3.6.4.1 Input Section Basics +............................ + +An input section description consists of a file name optionally followed +by a list of section names in parentheses. + + The file name and the section name may be wildcard patterns, which we +describe further below (*note Input Section Wildcards::). + + The most common input section description is to include all input +sections with a particular name in the output section. For example, to +include all input `.text' sections, you would write: + *(.text) + Here the `*' is a wildcard which matches any file name. To exclude +a list of files from matching the file name wildcard, EXCLUDE_FILE may +be used to match all files except the ones specified in the +EXCLUDE_FILE list. For example: + *(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors) + will cause all .ctors sections from all files except `crtend.o' and +`otherfile.o' to be included. + + There are two ways to include more than one section: + *(.text .rdata) + *(.text) *(.rdata) + The difference between these is the order in which the `.text' and +`.rdata' input sections will appear in the output section. In the +first example, they will be intermingled, appearing in the same order as +they are found in the linker input. In the second example, all `.text' +input sections will appear first, followed by all `.rdata' input +sections. + + You can specify a file name to include sections from a particular +file. You would do this if one or more of your files contain special +data that needs to be at a particular location in memory. For example: + data.o(.data) + + To refine the sections that are included based on the section flags +of an input section, INPUT_SECTION_FLAGS may be used. + + Here is a simple example for using Section header flags for ELF +sections: + + SECTIONS { + .text : { INPUT_SECTION_FLAGS (SHF_MERGE & SHF_STRINGS) *(.text) } + .text2 : { INPUT_SECTION_FLAGS (!SHF_WRITE) *(.text) } + } + + In this example, the output section `.text' will be comprised of any +input section matching the name *(.text) whose section header flags +`SHF_MERGE' and `SHF_STRINGS' are set. The output section `.text2' +will be comprised of any input section matching the name *(.text) whose +section header flag `SHF_WRITE' is clear. + + You can also specify files within archives by writing a pattern +matching the archive, a colon, then the pattern matching the file, with +no whitespace around the colon. + +`archive:file' + matches file within archive + +`archive:' + matches the whole archive + +`:file' + matches file but not one in an archive + + Either one or both of `archive' and `file' can contain shell +wildcards. On DOS based file systems, the linker will assume that a +single letter followed by a colon is a drive specifier, so `c:myfile.o' +is a simple file specification, not `myfile.o' within an archive called +`c'. `archive:file' filespecs may also be used within an +`EXCLUDE_FILE' list, but may not appear in other linker script +contexts. For instance, you cannot extract a file from an archive by +using `archive:file' in an `INPUT' command. + + If you use a file name without a list of sections, then all sections +in the input file will be included in the output section. This is not +commonly done, but it may by useful on occasion. For example: + data.o + + When you use a file name which is not an `archive:file' specifier +and does not contain any wild card characters, the linker will first +see if you also specified the file name on the linker command line or +in an `INPUT' command. If you did not, the linker will attempt to open +the file as an input file, as though it appeared on the command line. +Note that this differs from an `INPUT' command, because the linker will +not search for the file in the archive search path. + + +File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section + +3.6.4.2 Input Section Wildcard Patterns +....................................... + +In an input section description, either the file name or the section +name or both may be wildcard patterns. + + The file name of `*' seen in many examples is a simple wildcard +pattern for the file name. + + The wildcard patterns are like those used by the Unix shell. + +`*' + matches any number of characters + +`?' + matches any single character + +`[CHARS]' + matches a single instance of any of the CHARS; the `-' character + may be used to specify a range of characters, as in `[a-z]' to + match any lower case letter + +`\' + quotes the following character + + When a file name is matched with a wildcard, the wildcard characters +will not match a `/' character (used to separate directory names on +Unix). A pattern consisting of a single `*' character is an exception; +it will always match any file name, whether it contains a `/' or not. +In a section name, the wildcard characters will match a `/' character. + + File name wildcard patterns only match files which are explicitly +specified on the command line or in an `INPUT' command. The linker +does not search directories to expand wildcards. + + If a file name matches more than one wildcard pattern, or if a file +name appears explicitly and is also matched by a wildcard pattern, the +linker will use the first match in the linker script. For example, this +sequence of input section descriptions is probably in error, because the +`data.o' rule will not be used: + .data : { *(.data) } + .data1 : { data.o(.data) } + + Normally, the linker will place files and sections matched by +wildcards in the order in which they are seen during the link. You can +change this by using the `SORT_BY_NAME' keyword, which appears before a +wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When +the `SORT_BY_NAME' keyword is used, the linker will sort the files or +sections into ascending order by name before placing them in the output +file. + + `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The +difference is `SORT_BY_ALIGNMENT' will sort sections into descending +order by alignment before placing them in the output file. Larger +alignments are placed before smaller alignments in order to reduce the +amount of padding necessary. + + `SORT_BY_INIT_PRIORITY' is very similar to `SORT_BY_NAME'. The +difference is `SORT_BY_INIT_PRIORITY' will sort sections into ascending +order by numerical value of the GCC init_priority attribute encoded in +the section name before placing them in the output file. + + `SORT' is an alias for `SORT_BY_NAME'. + + When there are nested section sorting commands in linker script, +there can be at most 1 level of nesting for section sorting commands. + + 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). + It will sort the input sections by name first, then by alignment + if two sections have the same name. + + 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). + It will sort the input sections by alignment first, then by name + if two sections have the same alignment. + + 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is + treated the same as `SORT_BY_NAME' (wildcard section pattern). + + 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section + pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard + section pattern). + + 5. All other nested section sorting commands are invalid. + + When both command line section sorting option and linker script +section sorting command are used, section sorting command always takes +precedence over the command line option. + + If the section sorting command in linker script isn't nested, the +command line option will make the section sorting command to be treated +as nested sorting command. + + 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections + alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' + (wildcard section pattern)). + + 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with + `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT' + (`SORT_BY_NAME' (wildcard section pattern)). + + If the section sorting command in linker script is nested, the +command line option will be ignored. + + `SORT_NONE' disables section sorting by ignoring the command line +section sorting option. + + If you ever get confused about where input sections are going, use +the `-M' linker option to generate a map file. The map file shows +precisely how input sections are mapped to output sections. + + This example shows how wildcard patterns might be used to partition +files. This linker script directs the linker to place all `.text' +sections in `.text' and all `.bss' sections in `.bss'. The linker will +place the `.data' section from all files beginning with an upper case +character in `.DATA'; for all other files, the linker will place the +`.data' section in `.data'. + SECTIONS { + .text : { *(.text) } + .DATA : { [A-Z]*(.data) } + .data : { *(.data) } + .bss : { *(.bss) } + } + + +File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section + +3.6.4.3 Input Section for Common Symbols +........................................ + +A special notation is needed for common symbols, because in many object +file formats common symbols do not have a particular input section. The +linker treats common symbols as though they are in an input section +named `COMMON'. + + You may use file names with the `COMMON' section just as with any +other input sections. You can use this to place common symbols from a +particular input file in one section while common symbols from other +input files are placed in another section. + + In most cases, common symbols in input files will be placed in the +`.bss' section in the output file. For example: + .bss { *(.bss) *(COMMON) } + + Some object file formats have more than one type of common symbol. +For example, the MIPS ELF object file format distinguishes standard +common symbols and small common symbols. In this case, the linker will +use a different special section name for other types of common symbols. +In the case of MIPS ELF, the linker uses `COMMON' for standard common +symbols and `.scommon' for small common symbols. This permits you to +map the different types of common symbols into memory at different +locations. + + You will sometimes see `[COMMON]' in old linker scripts. This +notation is now considered obsolete. It is equivalent to `*(COMMON)'. + + +File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section + +3.6.4.4 Input Section and Garbage Collection +............................................ + +When link-time garbage collection is in use (`--gc-sections'), it is +often useful to mark sections that should not be eliminated. This is +accomplished by surrounding an input section's wildcard entry with +`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'. + + +File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section + +3.6.4.5 Input Section Example +............................. + +The following example is a complete linker script. It tells the linker +to read all of the sections from file `all.o' and place them at the +start of output section `outputa' which starts at location `0x10000'. +All of section `.input1' from file `foo.o' follows immediately, in the +same output section. All of section `.input2' from `foo.o' goes into +output section `outputb', followed by section `.input1' from `foo1.o'. +All of the remaining `.input1' and `.input2' sections from any files +are written to output section `outputc'. + + SECTIONS { + outputa 0x10000 : + { + all.o + foo.o (.input1) + } + outputb : + { + foo.o (.input2) + foo1.o (.input1) + } + outputc : + { + *(.input1) + *(.input2) + } + } + + +File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS + +3.6.5 Output Section Data +------------------------- + +You can include explicit bytes of data in an output section by using +`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section +command. Each keyword is followed by an expression in parentheses +providing the value to store (*note Expressions::). The value of the +expression is stored at the current value of the location counter. + + The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two, +four, and eight bytes (respectively). After storing the bytes, the +location counter is incremented by the number of bytes stored. + + For example, this will store the byte 1 followed by the four byte +value of the symbol `addr': + BYTE(1) + LONG(addr) + + When using a 64 bit host or target, `QUAD' and `SQUAD' are the same; +they both store an 8 byte, or 64 bit, value. When both host and target +are 32 bits, an expression is computed as 32 bits. In this case `QUAD' +stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32 +bit value sign extended to 64 bits. + + If the object file format of the output file has an explicit +endianness, which is the normal case, the value will be stored in that +endianness. When the object file format does not have an explicit +endianness, as is true of, for example, S-records, the value will be +stored in the endianness of the first input object file. + + Note--these commands only work inside a section description and not +between them, so the following will produce an error from the linker: + SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } + whereas this will work: + SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } + + You may use the `FILL' command to set the fill pattern for the +current section. It is followed by an expression in parentheses. Any +otherwise unspecified regions of memory within the section (for example, +gaps left due to the required alignment of input sections) are filled +with the value of the expression, repeated as necessary. A `FILL' +statement covers memory locations after the point at which it occurs in +the section definition; by including more than one `FILL' statement, +you can have different fill patterns in different parts of an output +section. + + This example shows how to fill unspecified regions of memory with the +value `0x90': + FILL(0x90909090) + + The `FILL' command is similar to the `=FILLEXP' output section +attribute, but it only affects the part of the section following the +`FILL' command, rather than the entire section. If both are used, the +`FILL' command takes precedence. *Note Output Section Fill::, for +details on the fill expression. + + +File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS + +3.6.6 Output Section Keywords +----------------------------- + +There are a couple of keywords which can appear as output section +commands. + +`CREATE_OBJECT_SYMBOLS' + The command tells the linker to create a symbol for each input + file. The name of each symbol will be the name of the + corresponding input file. The section of each symbol will be the + output section in which the `CREATE_OBJECT_SYMBOLS' command + appears. + + This is conventional for the a.out object file format. It is not + normally used for any other object file format. + +`CONSTRUCTORS' + When linking using the a.out object file format, the linker uses an + unusual set construct to support C++ global constructors and + destructors. When linking object file formats which do not support + arbitrary sections, such as ECOFF and XCOFF, the linker will + automatically recognize C++ global constructors and destructors by + name. For these object file formats, the `CONSTRUCTORS' command + tells the linker to place constructor information in the output + section where the `CONSTRUCTORS' command appears. The + `CONSTRUCTORS' command is ignored for other object file formats. + + The symbol `__CTOR_LIST__' marks the start of the global + constructors, and the symbol `__CTOR_END__' marks the end. + Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and + end of the global destructors. The first word in the list is the + number of entries, followed by the address of each constructor or + destructor, followed by a zero word. The compiler must arrange to + actually run the code. For these object file formats GNU C++ + normally calls constructors from a subroutine `__main'; a call to + `__main' is automatically inserted into the startup code for + `main'. GNU C++ normally runs destructors either by using + `atexit', or directly from the function `exit'. + + For object file formats such as `COFF' or `ELF' which support + arbitrary section names, GNU C++ will normally arrange to put the + addresses of global constructors and destructors into the `.ctors' + and `.dtors' sections. Placing the following sequence into your + linker script will build the sort of table which the GNU C++ + runtime code expects to see. + + __CTOR_LIST__ = .; + LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) + *(.ctors) + LONG(0) + __CTOR_END__ = .; + __DTOR_LIST__ = .; + LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) + *(.dtors) + LONG(0) + __DTOR_END__ = .; + + If you are using the GNU C++ support for initialization priority, + which provides some control over the order in which global + constructors are run, you must sort the constructors at link time + to ensure that they are executed in the correct order. When using + the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)' + instead. When using the `.ctors' and `.dtors' sections, use + `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of + just `*(.ctors)' and `*(.dtors)'. + + Normally the compiler and linker will handle these issues + automatically, and you will not need to concern yourself with + them. However, you may need to consider this if you are using C++ + and writing your own linker scripts. + + + +File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS + +3.6.7 Output Section Discarding +------------------------------- + +The linker will not normally create output sections with no contents. +This is for convenience when referring to input sections that may or +may not be present in any of the input files. For example: + .foo : { *(.foo) } + will only create a `.foo' section in the output file if there is a +`.foo' section in at least one input file, and if the input sections +are not all empty. Other link script directives that allocate space in +an output section will also create the output section. So too will +assignments to dot even if the assignment does not create space, except +for `. = 0', `. = . + 0', `. = sym', `. = . + sym' and `. = ALIGN (. != +0, expr, 1)' when `sym' is an absolute symbol of value 0 defined in the +script. This allows you to force output of an empty section with `. = +.'. + + The linker will ignore address assignments (*note Output Section +Address::) on discarded output sections, except when the linker script +defines symbols in the output section. In that case the linker will +obey the address assignments, possibly advancing dot even though the +section is discarded. + + The special output section name `/DISCARD/' may be used to discard +input sections. Any input sections which are assigned to an output +section named `/DISCARD/' are not included in the output file. + + +File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS + +3.6.8 Output Section Attributes +------------------------------- + +We showed above that the full description of an output section looked +like this: + + SECTION [ADDRESS] [(TYPE)] : + [AT(LMA)] + [ALIGN(SECTION_ALIGN)] + [SUBALIGN(SUBSECTION_ALIGN)] + [CONSTRAINT] + { + OUTPUT-SECTION-COMMAND + OUTPUT-SECTION-COMMAND + ... + } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] + + We've already described SECTION, ADDRESS, and +OUTPUT-SECTION-COMMAND. In this section we will describe the remaining +section attributes. + +* Menu: + +* Output Section Type:: Output section type +* Output Section LMA:: Output section LMA +* Forced Output Alignment:: Forced Output Alignment +* Forced Input Alignment:: Forced Input Alignment +* Output Section Constraint:: Output section constraint +* Output Section Region:: Output section region +* Output Section Phdr:: Output section phdr +* Output Section Fill:: Output section fill + + +File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes + +3.6.8.1 Output Section Type +........................... + +Each output section may have a type. The type is a keyword in +parentheses. The following types are defined: + +`NOLOAD' + The section should be marked as not loadable, so that it will not + be loaded into memory when the program is run. + +`DSECT' +`COPY' +`INFO' +`OVERLAY' + These type names are supported for backward compatibility, and are + rarely used. They all have the same effect: the section should be + marked as not allocatable, so that no memory is allocated for the + section when the program is run. + + The linker normally sets the attributes of an output section based on +the input sections which map into it. You can override this by using +the section type. For example, in the script sample below, the `ROM' +section is addressed at memory location `0' and does not need to be +loaded when the program is run. + SECTIONS { + ROM 0 (NOLOAD) : { ... } + ... + } + + +File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes + +3.6.8.2 Output Section LMA +.......................... + +Every section has a virtual address (VMA) and a load address (LMA); see +*Note Basic Script Concepts::. The virtual address is specified by the +*note Output Section Address:: described earlier. The load address is +specified by the `AT' or `AT>' keywords. Specifying a load address is +optional. + + The `AT' keyword takes an expression as an argument. This specifies +the exact load address of the section. The `AT>' keyword takes the +name of a memory region as an argument. *Note MEMORY::. The load +address of the section is set to the next free address in the region, +aligned to the section's alignment requirements. + + If neither `AT' nor `AT>' is specified for an allocatable section, +the linker will use the following heuristic to determine the load +address: + + * If the section has a specific VMA address, then this is used as + the LMA address as well. + + * If the section is not allocatable then its LMA is set to its VMA. + + * Otherwise if a memory region can be found that is compatible with + the current section, and this region contains at least one + section, then the LMA is set so the difference between the VMA and + LMA is the same as the difference between the VMA and LMA of the + last section in the located region. + + * If no memory regions have been declared then a default region that + covers the entire address space is used in the previous step. + + * If no suitable region could be found, or there was no previous + section then the LMA is set equal to the VMA. + + This feature is designed to make it easy to build a ROM image. For +example, the following linker script creates three output sections: one +called `.text', which starts at `0x1000', one called `.mdata', which is +loaded at the end of the `.text' section even though its VMA is +`0x2000', and one called `.bss' to hold uninitialized data at address +`0x3000'. The symbol `_data' is defined with the value `0x2000', which +shows that the location counter holds the VMA value, not the LMA value. + + SECTIONS + { + .text 0x1000 : { *(.text) _etext = . ; } + .mdata 0x2000 : + AT ( ADDR (.text) + SIZEOF (.text) ) + { _data = . ; *(.data); _edata = . ; } + .bss 0x3000 : + { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} + } + + The run-time initialization code for use with a program generated +with this linker script would include something like the following, to +copy the initialized data from the ROM image to its runtime address. +Notice how this code takes advantage of the symbols defined by the +linker script. + + extern char _etext, _data, _edata, _bstart, _bend; + char *src = &_etext; + char *dst = &_data; + + /* ROM has data at end of text; copy it. */ + while (dst < &_edata) + *dst++ = *src++; + + /* Zero bss. */ + for (dst = &_bstart; dst< &_bend; dst++) + *dst = 0; + + +File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes + +3.6.8.3 Forced Output Alignment +............................... + +You can increase an output section's alignment by using ALIGN. As an +alternative you can enforce that the difference between the VMA and LMA +remains intact throughout this output section with the ALIGN_WITH_INPUT +attribute. + + +File: ld.info, Node: Forced Input Alignment, Next: Output Section Constraint, Prev: Forced Output Alignment, Up: Output Section Attributes + +3.6.8.4 Forced Input Alignment +.............................. + +You can force input section alignment within an output section by using +SUBALIGN. The value specified overrides any alignment given by input +sections, whether larger or smaller. + + +File: ld.info, Node: Output Section Constraint, Next: Output Section Region, Prev: Forced Input Alignment, Up: Output Section Attributes + +3.6.8.5 Output Section Constraint +................................. + +You can specify that an output section should only be created if all of +its input sections are read-only or all of its input sections are +read-write by using the keyword `ONLY_IF_RO' and `ONLY_IF_RW' +respectively. + + +File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Output Section Constraint, Up: Output Section Attributes + +3.6.8.6 Output Section Region +............................. + +You can assign a section to a previously defined region of memory by +using `>REGION'. *Note MEMORY::. + + Here is a simple example: + MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } + SECTIONS { ROM : { *(.text) } >rom } + + +File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes + +3.6.8.7 Output Section Phdr +........................... + +You can assign a section to a previously defined program segment by +using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more +segments, then all subsequent allocated sections will be assigned to +those segments as well, unless they use an explicitly `:PHDR' modifier. +You can use `:NONE' to tell the linker to not put the section in any +segment at all. + + Here is a simple example: + PHDRS { text PT_LOAD ; } + SECTIONS { .text : { *(.text) } :text } + + +File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes + +3.6.8.8 Output Section Fill +........................... + +You can set the fill pattern for an entire section by using `=FILLEXP'. +FILLEXP is an expression (*note Expressions::). Any otherwise +unspecified regions of memory within the output section (for example, +gaps left due to the required alignment of input sections) will be +filled with the value, repeated as necessary. If the fill expression +is a simple hex number, ie. a string of hex digit starting with `0x' +and without a trailing `k' or `M', then an arbitrarily long sequence of +hex digits can be used to specify the fill pattern; Leading zeros +become part of the pattern too. For all other cases, including extra +parentheses or a unary `+', the fill pattern is the four least +significant bytes of the value of the expression. In all cases, the +number is big-endian. + + You can also change the fill value with a `FILL' command in the +output section commands; (*note Output Section Data::). + + Here is a simple example: + SECTIONS { .text : { *(.text) } =0x90909090 } + + +File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS + +3.6.9 Overlay Description +------------------------- + +An overlay description provides an easy way to describe sections which +are to be loaded as part of a single memory image but are to be run at +the same memory address. At run time, some sort of overlay manager will +copy the overlaid sections in and out of the runtime memory address as +required, perhaps by simply manipulating addressing bits. This approach +can be useful, for example, when a certain region of memory is faster +than another. + + Overlays are described using the `OVERLAY' command. The `OVERLAY' +command is used within a `SECTIONS' command, like an output section +description. The full syntax of the `OVERLAY' command is as follows: + OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )] + { + SECNAME1 + { + OUTPUT-SECTION-COMMAND + OUTPUT-SECTION-COMMAND + ... + } [:PHDR...] [=FILL] + SECNAME2 + { + OUTPUT-SECTION-COMMAND + OUTPUT-SECTION-COMMAND + ... + } [:PHDR...] [=FILL] + ... + } [>REGION] [:PHDR...] [=FILL] [,] + + Everything is optional except `OVERLAY' (a keyword), and each +section must have a name (SECNAME1 and SECNAME2 above). The section +definitions within the `OVERLAY' construct are identical to those +within the general `SECTIONS' construct (*note SECTIONS::), except that +no addresses and no memory regions may be defined for sections within +an `OVERLAY'. + + The comma at the end may be required if a FILL is used and the next +SECTIONS-COMMAND looks like a continuation of the expression. + + The sections are all defined with the same starting address. The +load addresses of the sections are arranged such that they are +consecutive in memory starting at the load address used for the +`OVERLAY' as a whole (as with normal section definitions, the load +address is optional, and defaults to the start address; the start +address is also optional, and defaults to the current value of the +location counter). + + If the `NOCROSSREFS' keyword is used, and there are any references +among the sections, the linker will report an error. Since the +sections all run at the same address, it normally does not make sense +for one section to refer directly to another. *Note NOCROSSREFS: +Miscellaneous Commands. + + For each section within the `OVERLAY', the linker automatically +provides two symbols. The symbol `__load_start_SECNAME' is defined as +the starting load address of the section. The symbol +`__load_stop_SECNAME' is defined as the final load address of the +section. Any characters within SECNAME which are not legal within C +identifiers are removed. C (or assembler) code may use these symbols +to move the overlaid sections around as necessary. + + At the end of the overlay, the value of the location counter is set +to the start address of the overlay plus the size of the largest +section. + + Here is an example. Remember that this would appear inside a +`SECTIONS' construct. + OVERLAY 0x1000 : AT (0x4000) + { + .text0 { o1/*.o(.text) } + .text1 { o2/*.o(.text) } + } +This will define both `.text0' and `.text1' to start at address +0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will +be loaded immediately after `.text0'. The following symbols will be +defined if referenced: `__load_start_text0', `__load_stop_text0', +`__load_start_text1', `__load_stop_text1'. + + C code to copy overlay `.text1' into the overlay area might look +like the following. + + extern char __load_start_text1, __load_stop_text1; + memcpy ((char *) 0x1000, &__load_start_text1, + &__load_stop_text1 - &__load_start_text1); + + Note that the `OVERLAY' command is just syntactic sugar, since +everything it does can be done using the more basic commands. The above +example could have been written identically as follows. + + .text0 0x1000 : AT (0x4000) { o1/*.o(.text) } + PROVIDE (__load_start_text0 = LOADADDR (.text0)); + PROVIDE (__load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0)); + .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) } + PROVIDE (__load_start_text1 = LOADADDR (.text1)); + PROVIDE (__load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1)); + . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1)); + + +File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts + +3.7 MEMORY Command +================== + +The linker's default configuration permits allocation of all available +memory. You can override this by using the `MEMORY' command. + + The `MEMORY' command describes the location and size of blocks of +memory in the target. You can use it to describe which memory regions +may be used by the linker, and which memory regions it must avoid. You +can then assign sections to particular memory regions. The linker will +set section addresses based on the memory regions, and will warn about +regions that become too full. The linker will not shuffle sections +around to fit into the available regions. + + A linker script may contain at most one use of the `MEMORY' command. +However, you can define as many blocks of memory within it as you +wish. The syntax is: + MEMORY + { + NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN + ... + } + + The NAME is a name used in the linker script to refer to the region. +The region name has no meaning outside of the linker script. Region +names are stored in a separate name space, and will not conflict with +symbol names, file names, or section names. Each memory region must +have a distinct name within the `MEMORY' command. However you can add +later alias names to existing memory regions with the *Note +REGION_ALIAS:: command. + + The ATTR string is an optional list of attributes that specify +whether to use a particular memory region for an input section which is +not explicitly mapped in the linker script. As described in *Note +SECTIONS::, if you do not specify an output section for some input +section, the linker will create an output section with the same name as +the input section. If you define region attributes, the linker will use +them to select the memory region for the output section that it creates. + + The ATTR string must consist only of the following characters: +`R' + Read-only section + +`W' + Read/write section + +`X' + Executable section + +`A' + Allocatable section + +`I' + Initialized section + +`L' + Same as `I' + +`!' + Invert the sense of any of the attributes that follow + + If a unmapped section matches any of the listed attributes other than +`!', it will be placed in the memory region. The `!' attribute +reverses this test, so that an unmapped section will be placed in the +memory region only if it does not match any of the listed attributes. + + The ORIGIN is an numerical expression for the start address of the +memory region. The expression must evaluate to a constant and it +cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to +`org' or `o' (but not, for example, `ORG'). + + The LEN is an expression for the size in bytes of the memory region. +As with the ORIGIN expression, the expression must be numerical only +and must evaluate to a constant. The keyword `LENGTH' may be +abbreviated to `len' or `l'. + + In the following example, we specify that there are two memory +regions available for allocation: one starting at `0' for 256 kilobytes, +and the other starting at `0x40000000' for four megabytes. The linker +will place into the `rom' memory region every section which is not +explicitly mapped into a memory region, and is either read-only or +executable. The linker will place other sections which are not +explicitly mapped into a memory region into the `ram' memory region. + + MEMORY + { + rom (rx) : ORIGIN = 0, LENGTH = 256K + ram (!rx) : org = 0x40000000, l = 4M + } + + Once you define a memory region, you can direct the linker to place +specific output sections into that memory region by using the `>REGION' +output section attribute. For example, if you have a memory region +named `mem', you would use `>mem' in the output section definition. +*Note Output Section Region::. If no address was specified for the +output section, the linker will set the address to the next available +address within the memory region. If the combined output sections +directed to a memory region are too large for the region, the linker +will issue an error message. + + It is possible to access the origin and length of a memory in an +expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions: + + _fstack = ORIGIN(ram) + LENGTH(ram) - 4; + + +File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts + +3.8 PHDRS Command +================= + +The ELF object file format uses "program headers", also knows as +"segments". The program headers describe how the program should be +loaded into memory. You can print them out by using the `objdump' +program with the `-p' option. + + When you run an ELF program on a native ELF system, the system loader +reads the program headers in order to figure out how to load the +program. This will only work if the program headers are set correctly. +This manual does not describe the details of how the system loader +interprets program headers; for more information, see the ELF ABI. + + The linker will create reasonable program headers by default. +However, in some cases, you may need to specify the program headers more +precisely. You may use the `PHDRS' command for this purpose. When the +linker sees the `PHDRS' command in the linker script, it will not +create any program headers other than the ones specified. + + The linker only pays attention to the `PHDRS' command when +generating an ELF output file. In other cases, the linker will simply +ignore `PHDRS'. + + This is the syntax of the `PHDRS' command. The words `PHDRS', +`FILEHDR', `AT', and `FLAGS' are keywords. + + PHDRS + { + NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ] + [ FLAGS ( FLAGS ) ] ; + } + + The NAME is used only for reference in the `SECTIONS' command of the +linker script. It is not put into the output file. Program header +names are stored in a separate name space, and will not conflict with +symbol names, file names, or section names. Each program header must +have a distinct name. The headers are processed in order and it is +usual for them to map to sections in ascending load address order. + + Certain program header types describe segments of memory which the +system loader will load from the file. In the linker script, you +specify the contents of these segments by placing allocatable output +sections in the segments. You use the `:PHDR' output section attribute +to place a section in a particular segment. *Note Output Section +Phdr::. + + It is normal to put certain sections in more than one segment. This +merely implies that one segment of memory contains another. You may +repeat `:PHDR', using it once for each segment which should contain the +section. + + If you place a section in one or more segments using `:PHDR', then +the linker will place all subsequent allocatable sections which do not +specify `:PHDR' in the same segments. This is for convenience, since +generally a whole set of contiguous sections will be placed in a single +segment. You can use `:NONE' to override the default segment and tell +the linker to not put the section in any segment at all. + + You may use the `FILEHDR' and `PHDRS' keywords after the program +header type to further describe the contents of the segment. The +`FILEHDR' keyword means that the segment should include the ELF file +header. The `PHDRS' keyword means that the segment should include the +ELF program headers themselves. If applied to a loadable segment +(`PT_LOAD'), all prior loadable segments must have one of these +keywords. + + The TYPE may be one of the following. The numbers indicate the +value of the keyword. + +`PT_NULL' (0) + Indicates an unused program header. + +`PT_LOAD' (1) + Indicates that this program header describes a segment to be + loaded from the file. + +`PT_DYNAMIC' (2) + Indicates a segment where dynamic linking information can be found. + +`PT_INTERP' (3) + Indicates a segment where the name of the program interpreter may + be found. + +`PT_NOTE' (4) + Indicates a segment holding note information. + +`PT_SHLIB' (5) + A reserved program header type, defined but not specified by the + ELF ABI. + +`PT_PHDR' (6) + Indicates a segment where the program headers may be found. + +EXPRESSION + An expression giving the numeric type of the program header. This + may be used for types not defined above. + + You can specify that a segment should be loaded at a particular +address in memory by using an `AT' expression. This is identical to the +`AT' command used as an output section attribute (*note Output Section +LMA::). The `AT' command for a program header overrides the output +section attribute. + + The linker will normally set the segment flags based on the sections +which comprise the segment. You may use the `FLAGS' keyword to +explicitly specify the segment flags. The value of FLAGS must be an +integer. It is used to set the `p_flags' field of the program header. + + Here is an example of `PHDRS'. This shows a typical set of program +headers used on a native ELF system. + + PHDRS + { + headers PT_PHDR PHDRS ; + interp PT_INTERP ; + text PT_LOAD FILEHDR PHDRS ; + data PT_LOAD ; + dynamic PT_DYNAMIC ; + } + + SECTIONS + { + . = SIZEOF_HEADERS; + .interp : { *(.interp) } :text :interp + .text : { *(.text) } :text + .rodata : { *(.rodata) } /* defaults to :text */ + ... + . = . + 0x1000; /* move to a new page in memory */ + .data : { *(.data) } :data + .dynamic : { *(.dynamic) } :data :dynamic + ... + } + + +File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts + +3.9 VERSION Command +=================== + +The linker supports symbol versions when using ELF. Symbol versions are +only useful when using shared libraries. The dynamic linker can use +symbol versions to select a specific version of a function when it runs +a program that may have been linked against an earlier version of the +shared library. + + You can include a version script directly in the main linker script, +or you can supply the version script as an implicit linker script. You +can also use the `--version-script' linker option. + + The syntax of the `VERSION' command is simply + VERSION { version-script-commands } + + The format of the version script commands is identical to that used +by Sun's linker in Solaris 2.5. The version script defines a tree of +version nodes. You specify the node names and interdependencies in the +version script. You can specify which symbols are bound to which +version nodes, and you can reduce a specified set of symbols to local +scope so that they are not globally visible outside of the shared +library. + + The easiest way to demonstrate the version script language is with a +few examples. + + VERS_1.1 { + global: + foo1; + local: + old*; + original*; + new*; + }; + + VERS_1.2 { + foo2; + } VERS_1.1; + + VERS_2.0 { + bar1; bar2; + extern "C++" { + ns::*; + "f(int, double)"; + }; + } VERS_1.2; + + This example version script defines three version nodes. The first +version node defined is `VERS_1.1'; it has no other dependencies. The +script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of +symbols to local scope so that they are not visible outside of the +shared library; this is done using wildcard patterns, so that any +symbol whose name begins with `old', `original', or `new' is matched. +The wildcard patterns available are the same as those used in the shell +when matching filenames (also known as "globbing"). However, if you +specify the symbol name inside double quotes, then the name is treated +as literal, rather than as a glob pattern. + + Next, the version script defines node `VERS_1.2'. This node depends +upon `VERS_1.1'. The script binds the symbol `foo2' to the version +node `VERS_1.2'. + + Finally, the version script defines node `VERS_2.0'. This node +depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and +`bar2' are bound to the version node `VERS_2.0'. + + When the linker finds a symbol defined in a library which is not +specifically bound to a version node, it will effectively bind it to an +unspecified base version of the library. You can bind all otherwise +unspecified symbols to a given version node by using `global: *;' +somewhere in the version script. Note that it's slightly crazy to use +wildcards in a global spec except on the last version node. Global +wildcards elsewhere run the risk of accidentally adding symbols to the +set exported for an old version. That's wrong since older versions +ought to have a fixed set of symbols. + + The names of the version nodes have no specific meaning other than +what they might suggest to the person reading them. The `2.0' version +could just as well have appeared in between `1.1' and `1.2'. However, +this would be a confusing way to write a version script. + + Node name can be omitted, provided it is the only version node in +the version script. Such version script doesn't assign any versions to +symbols, only selects which symbols will be globally visible out and +which won't. + + { global: foo; bar; local: *; }; + + When you link an application against a shared library that has +versioned symbols, the application itself knows which version of each +symbol it requires, and it also knows which version nodes it needs from +each shared library it is linked against. Thus at runtime, the dynamic +loader can make a quick check to make sure that the libraries you have +linked against do in fact supply all of the version nodes that the +application will need to resolve all of the dynamic symbols. In this +way it is possible for the dynamic linker to know with certainty that +all external symbols that it needs will be resolvable without having to +search for each symbol reference. + + The symbol versioning is in effect a much more sophisticated way of +doing minor version checking that SunOS does. The fundamental problem +that is being addressed here is that typically references to external +functions are bound on an as-needed basis, and are not all bound when +the application starts up. If a shared library is out of date, a +required interface may be missing; when the application tries to use +that interface, it may suddenly and unexpectedly fail. With symbol +versioning, the user will get a warning when they start their program if +the libraries being used with the application are too old. + + There are several GNU extensions to Sun's versioning approach. The +first of these is the ability to bind a symbol to a version node in the +source file where the symbol is defined instead of in the versioning +script. This was done mainly to reduce the burden on the library +maintainer. You can do this by putting something like: + __asm__(".symver original_foo,foo@VERS_1.1"); + in the C source file. This renames the function `original_foo' to +be an alias for `foo' bound to the version node `VERS_1.1'. The +`local:' directive can be used to prevent the symbol `original_foo' +from being exported. A `.symver' directive takes precedence over a +version script. + + The second GNU extension is to allow multiple versions of the same +function to appear in a given shared library. In this way you can make +an incompatible change to an interface without increasing the major +version number of the shared library, while still allowing applications +linked against the old interface to continue to function. + + To do this, you must use multiple `.symver' directives in the source +file. Here is an example: + + __asm__(".symver original_foo,foo@"); + __asm__(".symver old_foo,foo@VERS_1.1"); + __asm__(".symver old_foo1,foo@VERS_1.2"); + __asm__(".symver new_foo,foo@@VERS_2.0"); + + In this example, `foo@' represents the symbol `foo' bound to the +unspecified base version of the symbol. The source file that contains +this example would define 4 C functions: `original_foo', `old_foo', +`old_foo1', and `new_foo'. + + When you have multiple definitions of a given symbol, there needs to +be some way to specify a default version to which external references to +this symbol will be bound. You can do this with the `foo@@VERS_2.0' +type of `.symver' directive. You can only declare one version of a +symbol as the default in this manner; otherwise you would effectively +have multiple definitions of the same symbol. + + If you wish to bind a reference to a specific version of the symbol +within the shared library, you can use the aliases of convenience +(i.e., `old_foo'), or you can use the `.symver' directive to +specifically bind to an external version of the function in question. + + You can also specify the language in the version script: + + VERSION extern "lang" { version-script-commands } + + The supported `lang's are `C', `C++', and `Java'. The linker will +iterate over the list of symbols at the link time and demangle them +according to `lang' before matching them to the patterns specified in +`version-script-commands'. The default `lang' is `C'. + + Demangled names may contains spaces and other special characters. As +described above, you can use a glob pattern to match demangled names, +or you can use a double-quoted string to match the string exactly. In +the latter case, be aware that minor differences (such as differing +whitespace) between the version script and the demangler output will +cause a mismatch. As the exact string generated by the demangler might +change in the future, even if the mangled name does not, you should +check that all of your version directives are behaving as you expect +when you upgrade. + + +File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts + +3.10 Expressions in Linker Scripts +================================== + +The syntax for expressions in the linker script language is identical to +that of C expressions. All expressions are evaluated as integers. All +expressions are evaluated in the same size, which is 32 bits if both the +host and target are 32 bits, and is otherwise 64 bits. + + You can use and set symbol values in expressions. + + The linker defines several special purpose builtin functions for use +in expressions. + +* Menu: + +* Constants:: Constants +* Symbolic Constants:: Symbolic constants +* Symbols:: Symbol Names +* Orphan Sections:: Orphan Sections +* Location Counter:: The Location Counter +* Operators:: Operators +* Evaluation:: Evaluation +* Expression Section:: The Section of an Expression +* Builtin Functions:: Builtin Functions + + +File: ld.info, Node: Constants, Next: Symbolic Constants, Up: Expressions + +3.10.1 Constants +---------------- + +All constants are integers. + + As in C, the linker considers an integer beginning with `0' to be +octal, and an integer beginning with `0x' or `0X' to be hexadecimal. +Alternatively the linker accepts suffixes of `h' or `H' for +hexadecimal, `o' or `O' for octal, `b' or `B' for binary and `d' or `D' +for decimal. Any integer value without a prefix or a suffix is +considered to be decimal. + + In addition, you can use the suffixes `K' and `M' to scale a +constant by `1024' or `1024*1024' respectively. For example, the +following all refer to the same quantity: + + _fourk_1 = 4K; + _fourk_2 = 4096; + _fourk_3 = 0x1000; + _fourk_4 = 10000o; + + Note - the `K' and `M' suffixes cannot be used in conjunction with +the base suffixes mentioned above. + + +File: ld.info, Node: Symbolic Constants, Next: Symbols, Prev: Constants, Up: Expressions + +3.10.2 Symbolic Constants +------------------------- + +It is possible to refer to target specific constants via the use of the +`CONSTANT(NAME)' operator, where NAME is one of: + +`MAXPAGESIZE' + The target's maximum page size. + +`COMMONPAGESIZE' + The target's default page size. + + So for example: + + .text ALIGN (CONSTANT (MAXPAGESIZE)) : { *(.text) } + + will create a text section aligned to the largest page boundary +supported by the target. + + +File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Symbolic Constants, Up: Expressions + +3.10.3 Symbol Names +------------------- + +Unless quoted, symbol names start with a letter, underscore, or period +and may include letters, digits, underscores, periods, and hyphens. +Unquoted symbol names must not conflict with any keywords. You can +specify a symbol which contains odd characters or has the same name as a +keyword by surrounding the symbol name in double quotes: + "SECTION" = 9; + "with a space" = "also with a space" + 10; + + Since symbols can contain many non-alphabetic characters, it is +safest to delimit symbols with spaces. For example, `A-B' is one +symbol, whereas `A - B' is an expression involving subtraction. + + +File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions + +3.10.4 Orphan Sections +---------------------- + +Orphan sections are sections present in the input files which are not +explicitly placed into the output file by the linker script. The +linker will still copy these sections into the output file, but it has +to guess as to where they should be placed. The linker uses a simple +heuristic to do this. It attempts to place orphan sections after +non-orphan sections of the same attribute, such as code vs data, +loadable vs non-loadable, etc. If there is not enough room to do this +then it places at the end of the file. + + For ELF targets, the attribute of the section includes section type +as well as section flag. + + If an orphaned section's name is representable as a C identifier then +the linker will automatically *note PROVIDE:: two symbols: +__start_SECNAME and __stop_SECNAME, where SECNAME is the name of the +section. These indicate the start address and end address of the +orphaned section respectively. Note: most section names are not +representable as C identifiers because they contain a `.' character. + + +File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions + +3.10.5 The Location Counter +--------------------------- + +The special linker variable "dot" `.' always contains the current +output location counter. Since the `.' always refers to a location in +an output section, it may only appear in an expression within a +`SECTIONS' command. The `.' symbol may appear anywhere that an +ordinary symbol is allowed in an expression. + + Assigning a value to `.' will cause the location counter to be +moved. This may be used to create holes in the output section. The +location counter may not be moved backwards inside an output section, +and may not be moved backwards outside of an output section if so doing +creates areas with overlapping LMAs. + + SECTIONS + { + output : + { + file1(.text) + . = . + 1000; + file2(.text) + . += 1000; + file3(.text) + } = 0x12345678; + } + In the previous example, the `.text' section from `file1' is located +at the beginning of the output section `output'. It is followed by a +1000 byte gap. Then the `.text' section from `file2' appears, also +with a 1000 byte gap following before the `.text' section from `file3'. +The notation `= 0x12345678' specifies what data to write in the gaps +(*note Output Section Fill::). + + Note: `.' actually refers to the byte offset from the start of the +current containing object. Normally this is the `SECTIONS' statement, +whose start address is 0, hence `.' can be used as an absolute address. +If `.' is used inside a section description however, it refers to the +byte offset from the start of that section, not an absolute address. +Thus in a script like this: + + SECTIONS + { + . = 0x100 + .text: { + *(.text) + . = 0x200 + } + . = 0x500 + .data: { + *(.data) + . += 0x600 + } + } + + The `.text' section will be assigned a starting address of 0x100 and +a size of exactly 0x200 bytes, even if there is not enough data in the +`.text' input sections to fill this area. (If there is too much data, +an error will be produced because this would be an attempt to move `.' +backwards). The `.data' section will start at 0x500 and it will have +an extra 0x600 bytes worth of space after the end of the values from +the `.data' input sections and before the end of the `.data' output +section itself. + + Setting symbols to the value of the location counter outside of an +output section statement can result in unexpected values if the linker +needs to place orphan sections. For example, given the following: + + SECTIONS + { + start_of_text = . ; + .text: { *(.text) } + end_of_text = . ; + + start_of_data = . ; + .data: { *(.data) } + end_of_data = . ; + } + + If the linker needs to place some input section, e.g. `.rodata', not +mentioned in the script, it might choose to place that section between +`.text' and `.data'. You might think the linker should place `.rodata' +on the blank line in the above script, but blank lines are of no +particular significance to the linker. As well, the linker doesn't +associate the above symbol names with their sections. Instead, it +assumes that all assignments or other statements belong to the previous +output section, except for the special case of an assignment to `.'. +I.e., the linker will place the orphan `.rodata' section as if the +script was written as follows: + + SECTIONS + { + start_of_text = . ; + .text: { *(.text) } + end_of_text = . ; + + start_of_data = . ; + .rodata: { *(.rodata) } + .data: { *(.data) } + end_of_data = . ; + } + + This may or may not be the script author's intention for the value of +`start_of_data'. One way to influence the orphan section placement is +to assign the location counter to itself, as the linker assumes that an +assignment to `.' is setting the start address of a following output +section and thus should be grouped with that section. So you could +write: + + SECTIONS + { + start_of_text = . ; + .text: { *(.text) } + end_of_text = . ; + + . = . ; + start_of_data = . ; + .data: { *(.data) } + end_of_data = . ; + } + + Now, the orphan `.rodata' section will be placed between +`end_of_text' and `start_of_data'. + + +File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions + +3.10.6 Operators +---------------- + +The linker recognizes the standard C set of arithmetic operators, with +the standard bindings and precedence levels: + precedence associativity Operators Notes + (highest) + 1 left ! - ~ (1) + 2 left * / % + 3 left + - + 4 left >> << + 5 left == != > < <= >= + 6 left & + 7 left | + 8 left && + 9 left || + 10 right ? : + 11 right &= += -= *= /= (2) + (lowest) + Notes: (1) Prefix operators (2) *Note Assignments::. + + +File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions + +3.10.7 Evaluation +----------------- + +The linker evaluates expressions lazily. It only computes the value of +an expression when absolutely necessary. + + The linker needs some information, such as the value of the start +address of the first section, and the origins and lengths of memory +regions, in order to do any linking at all. These values are computed +as soon as possible when the linker reads in the linker script. + + However, other values (such as symbol values) are not known or needed +until after storage allocation. Such values are evaluated later, when +other information (such as the sizes of output sections) is available +for use in the symbol assignment expression. + + The sizes of sections cannot be known until after allocation, so +assignments dependent upon these are not performed until after +allocation. + + Some expressions, such as those depending upon the location counter +`.', must be evaluated during section allocation. + + If the result of an expression is required, but the value is not +available, then an error results. For example, a script like the +following + SECTIONS + { + .text 9+this_isnt_constant : + { *(.text) } + } +will cause the error message `non constant expression for initial +address'. + + +File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions + +3.10.8 The Section of an Expression +----------------------------------- + +Addresses and symbols may be section relative, or absolute. A section +relative symbol is relocatable. If you request relocatable output +using the `-r' option, a further link operation may change the value of +a section relative symbol. On the other hand, an absolute symbol will +retain the same value throughout any further link operations. + + Some terms in linker expressions are addresses. This is true of +section relative symbols and for builtin functions that return an +address, such as `ADDR', `LOADADDR', `ORIGIN' and `SEGMENT_START'. +Other terms are simply numbers, or are builtin functions that return a +non-address value, such as `LENGTH'. One complication is that unless +you set `LD_FEATURE ("SANE_EXPR")' (*note Miscellaneous Commands::), +numbers and absolute symbols are treated differently depending on their +location, for compatibility with older versions of `ld'. Expressions +appearing outside an output section definition treat all numbers as +absolute addresses. Expressions appearing inside an output section +definition treat absolute symbols as numbers. If `LD_FEATURE +("SANE_EXPR")' is given, then absolute symbols and numbers are simply +treated as numbers everywhere. + + In the following simple example, + + SECTIONS + { + . = 0x100; + __executable_start = 0x100; + .data : + { + . = 0x10; + __data_start = 0x10; + *(.data) + } + ... + } + + both `.' and `__executable_start' are set to the absolute address +0x100 in the first two assignments, then both `.' and `__data_start' +are set to 0x10 relative to the `.data' section in the second two +assignments. + + For expressions involving numbers, relative addresses and absolute +addresses, ld follows these rules to evaluate terms: + + * Unary operations on an absolute address or number, and binary + operations on two absolute addresses or two numbers, or between one + absolute address and a number, apply the operator to the value(s). + + * Unary operations on a relative address, and binary operations on + two relative addresses in the same section or between one relative + address and a number, apply the operator to the offset part of the + address(es). + + * Other binary operations, that is, between two relative addresses + not in the same section, or between a relative address and an + absolute address, first convert any non-absolute term to an + absolute address before applying the operator. + + The result section of each sub-expression is as follows: + + * An operation involving only numbers results in a number. + + * The result of comparisons, `&&' and `||' is also a number. + + * The result of other binary arithmetic and logical operations on two + relative addresses in the same section or two absolute addresses + (after above conversions) is also a number. + + * The result of other operations on relative addresses or one + relative address and a number, is a relative address in the same + section as the relative operand(s). + + * The result of other operations on absolute addresses (after above + conversions) is an absolute address. + + You can use the builtin function `ABSOLUTE' to force an expression +to be absolute when it would otherwise be relative. For example, to +create an absolute symbol set to the address of the end of the output +section `.data': + SECTIONS + { + .data : { *(.data) _edata = ABSOLUTE(.); } + } + If `ABSOLUTE' were not used, `_edata' would be relative to the +`.data' section. + + Using `LOADADDR' also forces an expression absolute, since this +particular builtin function returns an absolute address. + + +File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions + +3.10.9 Builtin Functions +------------------------ + +The linker script language includes a number of builtin functions for +use in linker script expressions. + +`ABSOLUTE(EXP)' + Return the absolute (non-relocatable, as opposed to non-negative) + value of the expression EXP. Primarily useful to assign an + absolute value to a symbol within a section definition, where + symbol values are normally section relative. *Note Expression + Section::. + +`ADDR(SECTION)' + Return the address (VMA) of the named SECTION. Your script must + previously have defined the location of that section. In the + following example, `start_of_output_1', `symbol_1' and `symbol_2' + are assigned equivalent values, except that `symbol_1' will be + relative to the `.output1' section while the other two will be + absolute: + SECTIONS { ... + .output1 : + { + start_of_output_1 = ABSOLUTE(.); + ... + } + .output : + { + symbol_1 = ADDR(.output1); + symbol_2 = start_of_output_1; + } + ... } + +`ALIGN(ALIGN)' +`ALIGN(EXP,ALIGN)' + Return the location counter (`.') or arbitrary expression aligned + to the next ALIGN boundary. The single operand `ALIGN' doesn't + change the value of the location counter--it just does arithmetic + on it. The two operand `ALIGN' allows an arbitrary expression to + be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(., + ALIGN)'). + + Here is an example which aligns the output `.data' section to the + next `0x2000' byte boundary after the preceding section and sets a + variable within the section to the next `0x8000' boundary after the + input sections: + SECTIONS { ... + .data ALIGN(0x2000): { + *(.data) + variable = ALIGN(0x8000); + } + ... } + The first use of `ALIGN' in this example specifies the + location of a section because it is used as the optional ADDRESS + attribute of a section definition (*note Output Section + Address::). The second use of `ALIGN' is used to defines the + value of a symbol. + + The builtin function `NEXT' is closely related to `ALIGN'. + +`ALIGNOF(SECTION)' + Return the alignment in bytes of the named SECTION, if that + section has been allocated. If the section has not been allocated + when this is evaluated, the linker will report an error. In the + following example, the alignment of the `.output' section is + stored as the first value in that section. + SECTIONS{ ... + .output { + LONG (ALIGNOF (.output)) + ... + } + ... } + +`BLOCK(EXP)' + This is a synonym for `ALIGN', for compatibility with older linker + scripts. It is most often seen when setting the address of an + output section. + +`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' + This is equivalent to either + (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))) + or + (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE))) + depending on whether the latter uses fewer COMMONPAGESIZE sized + pages for the data segment (area between the result of this + expression and `DATA_SEGMENT_END') than the former or not. If the + latter form is used, it means COMMONPAGESIZE bytes of runtime + memory will be saved at the expense of up to COMMONPAGESIZE wasted + bytes in the on-disk file. + + This expression can only be used directly in `SECTIONS' commands, + not in any output section descriptions and only once in the linker + script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and + should be the system page size the object wants to be optimized + for (while still working on system page sizes up to MAXPAGESIZE). + + Example: + . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); + +`DATA_SEGMENT_END(EXP)' + This defines the end of data segment for `DATA_SEGMENT_ALIGN' + evaluation purposes. + + . = DATA_SEGMENT_END(.); + +`DATA_SEGMENT_RELRO_END(OFFSET, EXP)' + This defines the end of the `PT_GNU_RELRO' segment when `-z relro' + option is used. When `-z relro' option is not present, + `DATA_SEGMENT_RELRO_END' does nothing, otherwise + `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is aligned to + the most commonly used page boundary for particular target. If + present in the linker script, it must always come in between + `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. Evaluates to the + second argument plus any padding needed at the end of the + `PT_GNU_RELRO' segment due to section alignment. + + . = DATA_SEGMENT_RELRO_END(24, .); + +`DEFINED(SYMBOL)' + Return 1 if SYMBOL is in the linker global symbol table and is + defined before the statement using DEFINED in the script, otherwise + return 0. You can use this function to provide default values for + symbols. For example, the following script fragment shows how to + set a global symbol `begin' to the first location in the `.text' + section--but if a symbol called `begin' already existed, its value + is preserved: + + SECTIONS { ... + .text : { + begin = DEFINED(begin) ? begin : . ; + ... + } + ... + } + +`LENGTH(MEMORY)' + Return the length of the memory region named MEMORY. + +`LOADADDR(SECTION)' + Return the absolute LMA of the named SECTION. (*note Output + Section LMA::). + +`LOG2CEIL(EXP)' + Return the binary logarithm of EXP rounded towards infinity. + `LOG2CEIL(0)' returns 0. + +`MAX(EXP1, EXP2)' + Returns the maximum of EXP1 and EXP2. + +`MIN(EXP1, EXP2)' + Returns the minimum of EXP1 and EXP2. + +`NEXT(EXP)' + Return the next unallocated address that is a multiple of EXP. + This function is closely related to `ALIGN(EXP)'; unless you use + the `MEMORY' command to define discontinuous memory for the output + file, the two functions are equivalent. + +`ORIGIN(MEMORY)' + Return the origin of the memory region named MEMORY. + +`SEGMENT_START(SEGMENT, DEFAULT)' + Return the base address of the named SEGMENT. If an explicit + value has already been given for this segment (with a command-line + `-T' option) then that value will be returned otherwise the value + will be DEFAULT. At present, the `-T' command-line option can + only be used to set the base address for the "text", "data", and + "bss" sections, but you can use `SEGMENT_START' with any segment + name. + +`SIZEOF(SECTION)' + Return the size in bytes of the named SECTION, if that section has + been allocated. If the section has not been allocated when this is + evaluated, the linker will report an error. In the following + example, `symbol_1' and `symbol_2' are assigned identical values: + SECTIONS{ ... + .output { + .start = . ; + ... + .end = . ; + } + symbol_1 = .end - .start ; + symbol_2 = SIZEOF(.output); + ... } + +`SIZEOF_HEADERS' +`sizeof_headers' + Return the size in bytes of the output file's headers. This is + information which appears at the start of the output file. You + can use this number when setting the start address of the first + section, if you choose, to facilitate paging. + + When producing an ELF output file, if the linker script uses the + `SIZEOF_HEADERS' builtin function, the linker must compute the + number of program headers before it has determined all the section + addresses and sizes. If the linker later discovers that it needs + additional program headers, it will report an error `not enough + room for program headers'. To avoid this error, you must avoid + using the `SIZEOF_HEADERS' function, or you must rework your linker + script to avoid forcing the linker to use additional program + headers, or you must define the program headers yourself using the + `PHDRS' command (*note PHDRS::). + + +File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts + +3.11 Implicit Linker Scripts +============================ + +If you specify a linker input file which the linker can not recognize as +an object file or an archive file, it will try to read the file as a +linker script. If the file can not be parsed as a linker script, the +linker will report an error. + + An implicit linker script will not replace the default linker script. + + Typically an implicit linker script would contain only symbol +assignments, or the `INPUT', `GROUP', or `VERSION' commands. + + Any input files read because of an implicit linker script will be +read at the position in the command line where the implicit linker +script was read. This can affect archive searching. + + +File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top + +4 Machine Dependent Features +**************************** + +`ld' has additional features on some platforms; the following sections +describe them. Machines where `ld' has no additional functionality are +not listed. + +* Menu: + + +* H8/300:: `ld' and the H8/300 + +* i960:: `ld' and the Intel 960 family + +* M68HC11/68HC12:: `ld' and the Motorola 68HC11 and 68HC12 families + +* ARM:: `ld' and the ARM family + +* HPPA ELF32:: `ld' and HPPA 32-bit ELF + +* M68K:: `ld' and the Motorola 68K family + +* MIPS:: `ld' and the MIPS family + +* MMIX:: `ld' and MMIX + +* MSP430:: `ld' and MSP430 + +* NDS32:: `ld' and NDS32 + +* Nios II:: `ld' and the Altera Nios II + +* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support + +* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support + +* SPU ELF:: `ld' and SPU ELF Support + +* TI COFF:: `ld' and TI COFF + +* WIN32:: `ld' and WIN32 (cygwin/mingw) + +* Xtensa:: `ld' and Xtensa Processors + + +File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent + +4.1 `ld' and the H8/300 +======================= + +For the H8/300, `ld' can perform these global optimizations when you +specify the `--relax' command-line option. + +_relaxing address modes_ + `ld' finds all `jsr' and `jmp' instructions whose targets are + within eight bits, and turns them into eight-bit program-counter + relative `bsr' and `bra' instructions, respectively. + +_synthesizing instructions_ + `ld' finds all `mov.b' instructions which use the sixteen-bit + absolute address form, but refer to the top page of memory, and + changes them to use the eight-bit address form. (That is: the + linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the + address AA is in the top page of memory). + + `ld' finds all `mov' instructions which use the register indirect + with 32-bit displacement addressing mode, but use a small + displacement inside 16-bit displacement range, and changes them to + use the 16-bit displacement form. (That is: the linker turns + `mov.b `@'D:32,ERx' into `mov.b `@'D:16,ERx' whenever the + displacement D is in the 16 bit signed integer range. Only + implemented in ELF-format ld). + +_bit manipulation instructions_ + `ld' finds all bit manipulation instructions like `band, bclr, + biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, + bxor' which use 32 bit and 16 bit absolute address form, but refer + to the top page of memory, and changes them to use the 8 bit + address form. (That is: the linker turns `bset #xx:3,`@'AA:32' + into `bset #xx:3,`@'AA:8' whenever the address AA is in the top + page of memory). + +_system control instructions_ + `ld' finds all `ldc.w, stc.w' instructions which use the 32 bit + absolute address form, but refer to the top page of memory, and + changes them to use 16 bit address form. (That is: the linker + turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the + address AA is in the top page of memory). + + +File: ld.info, Node: i960, Next: M68HC11/68HC12, Prev: H8/300, Up: Machine Dependent + +4.2 `ld' and the Intel 960 Family +================================= + +You can use the `-AARCHITECTURE' command line option to specify one of +the two-letter names identifying members of the 960 family; the option +specifies the desired output target, and warns of any incompatible +instructions in the input files. It also modifies the linker's search +strategy for archive libraries, to support the use of libraries +specific to each particular architecture, by including in the search +loop names suffixed with the string identifying the architecture. + + For example, if your `ld' command line included `-ACA' as well as +`-ltry', the linker would look (in its built-in search paths, and in +any paths you specify with `-L') for a library with the names + + try + libtry.a + tryca + libtryca.a + +The first two possibilities would be considered in any event; the last +two are due to the use of `-ACA'. + + You can meaningfully use `-A' more than once on a command line, since +the 960 architecture family allows combination of target architectures; +each use will add another pair of name variants to search for when `-l' +specifies a library. + + `ld' supports the `--relax' option for the i960 family. If you +specify `--relax', `ld' finds all `balx' and `calx' instructions whose +targets are within 24 bits, and turns them into 24-bit program-counter +relative `bal' and `cal' instructions, respectively. `ld' also turns +`cal' instructions into `bal' instructions when it determines that the +target subroutine is a leaf routine (that is, the target subroutine does +not itself call any subroutines). + + +File: ld.info, Node: M68HC11/68HC12, Next: ARM, Prev: i960, Up: Machine Dependent + +4.3 `ld' and the Motorola 68HC11 and 68HC12 families +==================================================== + +4.3.1 Linker Relaxation +----------------------- + +For the Motorola 68HC11, `ld' can perform these global optimizations +when you specify the `--relax' command-line option. + +_relaxing address modes_ + `ld' finds all `jsr' and `jmp' instructions whose targets are + within eight bits, and turns them into eight-bit program-counter + relative `bsr' and `bra' instructions, respectively. + + `ld' also looks at all 16-bit extended addressing modes and + transforms them in a direct addressing mode when the address is in + page 0 (between 0 and 0x0ff). + +_relaxing gcc instruction group_ + When `gcc' is called with `-mrelax', it can emit group of + instructions that the linker can optimize to use a 68HC11 direct + addressing mode. These instructions consists of `bclr' or `bset' + instructions. + + +4.3.2 Trampoline Generation +--------------------------- + +For 68HC11 and 68HC12, `ld' can generate trampoline code to call a far +function using a normal `jsr' instruction. The linker will also change +the relocation to some far function to use the trampoline address +instead of the function address. This is typically the case when a +pointer to a function is taken. The pointer will in fact point to the +function trampoline. + + +File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: M68HC11/68HC12, Up: Machine Dependent + +4.4 `ld' and the ARM family +=========================== + +For the ARM, `ld' will generate code stubs to allow functions calls +between ARM and Thumb code. These stubs only work with code that has +been compiled and assembled with the `-mthumb-interwork' command line +option. If it is necessary to link with old ARM object files or +libraries, which have not been compiled with the -mthumb-interwork +option then the `--support-old-code' command line switch should be +given to the linker. This will make it generate larger stub functions +which will work with non-interworking aware ARM code. Note, however, +the linker does not support generating stubs for function calls to +non-interworking aware Thumb code. + + The `--thumb-entry' switch is a duplicate of the generic `--entry' +switch, in that it sets the program's starting address. But it also +sets the bottom bit of the address, so that it can be branched to using +a BX instruction, and the program will start executing in Thumb mode +straight away. + + The `--use-nul-prefixed-import-tables' switch is specifying, that +the import tables idata4 and idata5 have to be generated with a zero +element prefix for import libraries. This is the old style to generate +import tables. By default this option is turned off. + + The `--be8' switch instructs `ld' to generate BE8 format +executables. This option is only valid when linking big-endian objects. +The resulting image will contain big-endian data and little-endian code. + + The `R_ARM_TARGET1' relocation is typically used for entries in the +`.init_array' section. It is interpreted as either `R_ARM_REL32' or +`R_ARM_ABS32', depending on the target. The `--target1-rel' and +`--target1-abs' switches override the default. + + The `--target2=type' switch overrides the default definition of the +`R_ARM_TARGET2' relocation. Valid values for `type', their meanings, +and target defaults are as follows: +`rel' + `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) + +`abs' + `R_ARM_ABS32' (arm*-*-symbianelf) + +`got-rel' + `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) + + The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification) +enables objects compiled for the ARMv4 architecture to be +interworking-safe when linked with other objects compiled for ARMv4t, +but also allows pure ARMv4 binaries to be built from the same ARMv4 +objects. + + In the latter case, the switch `--fix-v4bx' must be passed to the +linker, which causes v4t `BX rM' instructions to be rewritten as `MOV +PC,rM', since v4 processors do not have a `BX' instruction. + + In the former case, the switch should not be used, and `R_ARM_V4BX' +relocations are ignored. + + Replace `BX rM' instructions identified by `R_ARM_V4BX' relocations +with a branch to the following veneer: + + TST rM, #1 + MOVEQ PC, rM + BX Rn + + This allows generation of libraries/applications that work on ARMv4 +cores and are still interworking safe. Note that the above veneer +clobbers the condition flags, so may cause incorrect program behavior +in rare cases. + + The `--use-blx' switch enables the linker to use ARM/Thumb BLX +instructions (available on ARMv5t and above) in various situations. +Currently it is used to perform calls via the PLT from Thumb code using +BLX rather than using BX and a mode-switching stub before each PLT +entry. This should lead to such calls executing slightly faster. + + This option is enabled implicitly for SymbianOS, so there is no need +to specify it if you are using that target. + + The `--vfp11-denorm-fix' switch enables a link-time workaround for a +bug in certain VFP11 coprocessor hardware, which sometimes allows +instructions with denorm operands (which must be handled by support +code) to have those operands overwritten by subsequent instructions +before the support code can read the intended values. + + The bug may be avoided in scalar mode if you allow at least one +intervening instruction between a VFP11 instruction which uses a +register and another instruction which writes to the same register, or +at least two intervening instructions if vector mode is in use. The bug +only affects full-compliance floating-point mode: you do not need this +workaround if you are using "runfast" mode. Please contact ARM for +further details. + + If you know you are using buggy VFP11 hardware, you can enable this +workaround by specifying the linker option `--vfp-denorm-fix=scalar' if +you are using the VFP11 scalar mode only, or `--vfp-denorm-fix=vector' +if you are using vector mode (the latter also works for scalar code). +The default is `--vfp-denorm-fix=none'. + + If the workaround is enabled, instructions are scanned for +potentially-troublesome sequences, and a veneer is created for each +such sequence which may trigger the erratum. The veneer consists of the +first instruction of the sequence and a branch back to the subsequent +instruction. The original instruction is then replaced with a branch to +the veneer. The extra cycles required to call and return from the veneer +are sufficient to avoid the erratum in both the scalar and vector cases. + + The `--fix-arm1176' switch enables a link-time workaround for an +erratum in certain ARM1176 processors. The workaround is enabled by +default if you are targeting ARM v6 (excluding ARM v6T2) or earlier. +It can be disabled unconditionally by specifying `--no-fix-arm1176'. + + Further information is available in the "ARM1176JZ-S and ARM1176JZF-S +Programmer Advice Notice" available on the ARM documentation website at: +http://infocenter.arm.com/. + + The `--no-enum-size-warning' switch prevents the linker from warning +when linking object files that specify incompatible EABI enumeration +size attributes. For example, with this switch enabled, linking of an +object file using 32-bit enumeration values with another using +enumeration values fitted into the smallest possible space will not be +diagnosed. + + The `--no-wchar-size-warning' switch prevents the linker from +warning when linking object files that specify incompatible EABI +`wchar_t' size attributes. For example, with this switch enabled, +linking of an object file using 32-bit `wchar_t' values with another +using 16-bit `wchar_t' values will not be diagnosed. + + The `--pic-veneer' switch makes the linker use PIC sequences for +ARM/Thumb interworking veneers, even if the rest of the binary is not +PIC. This avoids problems on uClinux targets where `--emit-relocs' is +used to generate relocatable binaries. + + The linker will automatically generate and insert small sequences of +code into a linked ARM ELF executable whenever an attempt is made to +perform a function call to a symbol that is too far away. The +placement of these sequences of instructions - called stubs - is +controlled by the command line option `--stub-group-size=N'. The +placement is important because a poor choice can create a need for +duplicate stubs, increasing the code size. The linker will try to +group stubs together in order to reduce interruptions to the flow of +code, but it needs guidance as to how big these groups should be and +where they should be placed. + + The value of `N', the parameter to the `--stub-group-size=' option +controls where the stub groups are placed. If it is negative then all +stubs are placed after the first branch that needs them. If it is +positive then the stubs can be placed either before or after the +branches that need them. If the value of `N' is 1 (either +1 or -1) +then the linker will choose exactly where to place groups of stubs, +using its built in heuristics. A value of `N' greater than 1 (or +smaller than -1) tells the linker that a single group of stubs can +service at most `N' bytes from the input sections. + + The default, if `--stub-group-size=' is not specified, is `N = +1'. + + Farcalls stubs insertion is fully supported for the ARM-EABI target +only, because it relies on object files properties not present +otherwise. + + The `--fix-cortex-a8' switch enables a link-time workaround for an +erratum in certain Cortex-A8 processors. The workaround is enabled by +default if you are targeting the ARM v7-A architecture profile. It can +be enabled otherwise by specifying `--fix-cortex-a8', or disabled +unconditionally by specifying `--no-fix-cortex-a8'. + + The erratum only affects Thumb-2 code. Please contact ARM for +further details. + + The `--fix-cortex-a53-835769' switch enables a link-time workaround +for erratum 835769 present on certain early revisions of Cortex-A53 +processors. The workaround is disabled by default. It can be enabled +by specifying `--fix-cortex-a53-835769', or disabled unconditionally by +specifying `--no-fix-cortex-a53-835769'. + + Please contact ARM for further details. + + The `--no-merge-exidx-entries' switch disables the merging of +adjacent exidx entries in debuginfo. + + The `--long-plt' option enables the use of 16 byte PLT entries which +support up to 4Gb of code. The default is to use 12 byte PLT entries +which only support 512Mb of code. + + +File: ld.info, Node: HPPA ELF32, Next: M68K, Prev: ARM, Up: Machine Dependent + +4.5 `ld' and HPPA 32-bit ELF Support +==================================== + +When generating a shared library, `ld' will by default generate import +stubs suitable for use with a single sub-space application. The +`--multi-subspace' switch causes `ld' to generate export stubs, and +different (larger) import stubs suitable for use with multiple +sub-spaces. + + Long branch stubs and import/export stubs are placed by `ld' in stub +sections located between groups of input sections. `--stub-group-size' +specifies the maximum size of a group of input sections handled by one +stub section. Since branch offsets are signed, a stub section may +serve two groups of input sections, one group before the stub section, +and one group after it. However, when using conditional branches that +require stubs, it may be better (for branch prediction) that stub +sections only serve one group of input sections. A negative value for +`N' chooses this scheme, ensuring that branches to stubs always use a +negative offset. Two special values of `N' are recognized, `1' and +`-1'. These both instruct `ld' to automatically size input section +groups for the branch types detected, with the same behaviour regarding +stub placement as other positive or negative values of `N' respectively. + + Note that `--stub-group-size' does not split input sections. A +single input section larger than the group size specified will of course +create a larger group (of one section). If input sections are too +large, it may not be possible for a branch to reach its stub. + + +File: ld.info, Node: M68K, Next: MIPS, Prev: HPPA ELF32, Up: Machine Dependent + +4.6 `ld' and the Motorola 68K family +==================================== + +The `--got=TYPE' option lets you choose the GOT generation scheme. The +choices are `single', `negative', `multigot' and `target'. When +`target' is selected the linker chooses the default GOT generation +scheme for the current target. `single' tells the linker to generate a +single GOT with entries only at non-negative offsets. `negative' +instructs the linker to generate a single GOT with entries at both +negative and positive offsets. Not all environments support such GOTs. +`multigot' allows the linker to generate several GOTs in the output +file. All GOT references from a single input object file access the +same GOT, but references from different input object files might access +different GOTs. Not all environments support such GOTs. + + +File: ld.info, Node: MIPS, Next: MMIX, Prev: M68K, Up: Machine Dependent + +4.7 `ld' and the MIPS family +============================ + +The `--insn32' and `--no-insn32' options control the choice of +microMIPS instructions used in code generated by the linker, such as +that in the PLT or lazy binding stubs, or in relaxation. If `--insn32' +is used, then the linker only uses 32-bit instruction encodings. By +default or if `--no-insn32' is used, all instruction encodings are used, +including 16-bit ones where possible. + + +File: ld.info, Node: MMIX, Next: MSP430, Prev: MIPS, Up: Machine Dependent + +4.8 `ld' and MMIX +================= + +For MMIX, there is a choice of generating `ELF' object files or `mmo' +object files when linking. The simulator `mmix' understands the `mmo' +format. The binutils `objcopy' utility can translate between the two +formats. + + There is one special section, the `.MMIX.reg_contents' section. +Contents in this section is assumed to correspond to that of global +registers, and symbols referring to it are translated to special +symbols, equal to registers. In a final link, the start address of the +`.MMIX.reg_contents' section corresponds to the first allocated global +register multiplied by 8. Register `$255' is not included in this +section; it is always set to the program entry, which is at the symbol +`Main' for `mmo' files. + + Global symbols with the prefix `__.MMIX.start.', for example +`__.MMIX.start..text' and `__.MMIX.start..data' are special. The +default linker script uses these to set the default start address of a +section. + + Initial and trailing multiples of zero-valued 32-bit words in a +section, are left out from an mmo file. + + +File: ld.info, Node: MSP430, Next: NDS32, Prev: MMIX, Up: Machine Dependent + +4.9 `ld' and MSP430 +=================== + +For the MSP430 it is possible to select the MPU architecture. The flag +`-m [mpu type]' will select an appropriate linker script for selected +MPU type. (To get a list of known MPUs just pass `-m help' option to +the linker). + + The linker will recognize some extra sections which are MSP430 +specific: + +``.vectors'' + Defines a portion of ROM where interrupt vectors located. + +``.bootloader'' + Defines the bootloader portion of the ROM (if applicable). Any + code in this section will be uploaded to the MPU. + +``.infomem'' + Defines an information memory section (if applicable). Any code in + this section will be uploaded to the MPU. + +``.infomemnobits'' + This is the same as the `.infomem' section except that any code in + this section will not be uploaded to the MPU. + +``.noinit'' + Denotes a portion of RAM located above `.bss' section. + + The last two sections are used by gcc. + + +File: ld.info, Node: NDS32, Next: Nios II, Prev: MSP430, Up: Machine Dependent + +4.10 `ld' and NDS32 +=================== + +For NDS32, there are some options to select relaxation behavior. The +linker relaxes objects according to these options. + +``--m[no-]fp-as-gp'' + Disable/enable fp-as-gp relaxation. + +``--mexport-symbols=FILE'' + Exporting symbols and their address into FILE as linker script. + +``--m[no-]ex9'' + Disable/enable link-time EX9 relaxation. + +``--mexport-ex9=FILE'' + Export the EX9 table after linking. + +``--mimport-ex9=FILE'' + Import the Ex9 table for EX9 relaxation. + +``--mupdate-ex9'' + Update the existing EX9 table. + +``--mex9-limit=NUM'' + Maximum number of entries in the ex9 table. + +``--mex9-loop-aware'' + Avoid generating the EX9 instruction inside the loop. + +``--m[no-]ifc'' + Disable/enable the link-time IFC optimization. + +``--mifc-loop-aware'' + Avoid generating the IFC instruction inside the loop. + + +File: ld.info, Node: Nios II, Next: PowerPC ELF32, Prev: NDS32, Up: Machine Dependent + +4.11 `ld' and the Altera Nios II +================================ + +Call and immediate jump instructions on Nios II processors are limited +to transferring control to addresses in the same 256MB memory segment, +which may result in `ld' giving `relocation truncated to fit' errors +with very large programs. The command-line option `--relax' enables +the generation of trampolines that can access the entire 32-bit address +space for calls outside the normal `call' and `jmpi' address range. +These trampolines are inserted at section boundaries, so may not +themselves be reachable if an input section and its associated call +trampolines are larger than 256MB. + + The `--relax' option is enabled by default unless `-r' is also +specified. You can disable trampoline generation by using the +`--no-relax' linker option. You can also disable this optimization +locally by using the `set .noat' directive in assembly-language source +files, as the linker-inserted trampolines use the `at' register as a +temporary. + + Note that the linker `--relax' option is independent of assembler +relaxation options, and that using the GNU assembler's `-relax-all' +option interferes with the linker's more selective call instruction +relaxation. + + +File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: Nios II, Up: Machine Dependent + +4.12 `ld' and PowerPC 32-bit ELF Support +======================================== + +Branches on PowerPC processors are limited to a signed 26-bit +displacement, which may result in `ld' giving `relocation truncated to +fit' errors with very large programs. `--relax' enables the generation +of trampolines that can access the entire 32-bit address space. These +trampolines are inserted at section boundaries, so may not themselves +be reachable if an input section exceeds 33M in size. You may combine +`-r' and `--relax' to add trampolines in a partial link. In that case +both branches to undefined symbols and inter-section branches are also +considered potentially out of range, and trampolines inserted. + +`--bss-plt' + Current PowerPC GCC accepts a `-msecure-plt' option that generates + code capable of using a newer PLT and GOT layout that has the + security advantage of no executable section ever needing to be + writable and no writable section ever being executable. PowerPC + `ld' will generate this layout, including stubs to access the PLT, + if all input files (including startup and static libraries) were + compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT + (and GOT layout) which can give slightly better performance. + +`--secure-plt' + `ld' will use the new PLT and GOT layout if it is linking new + `-fpic' or `-fPIC' code, but does not do so automatically when + linking non-PIC code. This option requests the new PLT and GOT + layout. A warning will be given if some object file requires the + old style BSS PLT. + +`--sdata-got' + The new secure PLT and GOT are placed differently relative to other + sections compared to older BSS PLT and GOT placement. The + location of `.plt' must change because the new secure PLT is an + initialized section while the old PLT is uninitialized. The + reason for the `.got' change is more subtle: The new placement + allows `.got' to be read-only in applications linked with `-z + relro -z now'. However, this placement means that `.sdata' cannot + always be used in shared libraries, because the PowerPC ABI + accesses `.sdata' in shared libraries from the GOT pointer. + `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't + use `.sdata' in shared libraries, so this option is really only + useful for other compilers that may do so. + +`--emit-stub-syms' + This option causes `ld' to label linker stubs with a local symbol + that encodes the stub type and destination. + +`--no-tls-optimize' + PowerPC `ld' normally performs some optimization of code sequences + used to access Thread-Local Storage. Use this option to disable + the optimization. + + +File: ld.info, Node: PowerPC64 ELF64, Next: SPU ELF, Prev: PowerPC ELF32, Up: Machine Dependent + +4.13 `ld' and PowerPC64 64-bit ELF Support +========================================== + +`--stub-group-size' + Long branch stubs, PLT call stubs and TOC adjusting stubs are + placed by `ld' in stub sections located between groups of input + sections. `--stub-group-size' specifies the maximum size of a + group of input sections handled by one stub section. Since branch + offsets are signed, a stub section may serve two groups of input + sections, one group before the stub section, and one group after + it. However, when using conditional branches that require stubs, + it may be better (for branch prediction) that stub sections only + serve one group of input sections. A negative value for `N' + chooses this scheme, ensuring that branches to stubs always use a + negative offset. Two special values of `N' are recognized, `1' + and `-1'. These both instruct `ld' to automatically size input + section groups for the branch types detected, with the same + behaviour regarding stub placement as other positive or negative + values of `N' respectively. + + Note that `--stub-group-size' does not split input sections. A + single input section larger than the group size specified will of + course create a larger group (of one section). If input sections + are too large, it may not be possible for a branch to reach its + stub. + +`--emit-stub-syms' + This option causes `ld' to label linker stubs with a local symbol + that encodes the stub type and destination. + +`--dotsyms, --no-dotsyms' + These two options control how `ld' interprets version patterns in + a version script. Older PowerPC64 compilers emitted both a + function descriptor symbol with the same name as the function, and + a code entry symbol with the name prefixed by a dot (`.'). To + properly version a function `foo', the version script thus needs + to control both `foo' and `.foo'. The option `--dotsyms', on by + default, automatically adds the required dot-prefixed patterns. + Use `--no-dotsyms' to disable this feature. + +`--no-tls-optimize' + PowerPC64 `ld' normally performs some optimization of code + sequences used to access Thread-Local Storage. Use this option to + disable the optimization. + +`--no-opd-optimize' + PowerPC64 `ld' normally removes `.opd' section entries + corresponding to deleted link-once functions, or functions removed + by the action of `--gc-sections' or linker script `/DISCARD/'. + Use this option to disable `.opd' optimization. + +`--non-overlapping-opd' + Some PowerPC64 compilers have an option to generate compressed + `.opd' entries spaced 16 bytes apart, overlapping the third word, + the static chain pointer (unused in C) with the first word of the + next entry. This option expands such entries to the full 24 bytes. + +`--no-toc-optimize' + PowerPC64 `ld' normally removes unused `.toc' section entries. + Such entries are detected by examining relocations that reference + the TOC in code sections. A reloc in a deleted code section marks + a TOC word as unneeded, while a reloc in a kept code section marks + a TOC word as needed. Since the TOC may reference itself, TOC + relocs are also examined. TOC words marked as both needed and + unneeded will of course be kept. TOC words without any referencing + reloc are assumed to be part of a multi-word entry, and are kept or + discarded as per the nearest marked preceding word. This works + reliably for compiler generated code, but may be incorrect if + assembly code is used to insert TOC entries. Use this option to + disable the optimization. + +`--no-multi-toc' + If given any toc option besides `-mcmodel=medium' or + `-mcmodel=large', PowerPC64 GCC generates code for a TOC model + where TOC entries are accessed with a 16-bit offset from r2. This + limits the total TOC size to 64K. PowerPC64 `ld' extends this + limit by grouping code sections such that each group uses less + than 64K for its TOC entries, then inserts r2 adjusting stubs + between inter-group calls. `ld' does not split apart input + sections, so cannot help if a single input file has a `.toc' + section that exceeds 64K, most likely from linking multiple files + with `ld -r'. Use this option to turn off this feature. + +`--no-toc-sort' + By default, `ld' sorts TOC sections so that those whose file + happens to have a section called `.init' or `.fini' are placed + first, followed by TOC sections referenced by code generated with + PowerPC64 gcc's `-mcmodel=small', and lastly TOC sections + referenced only by code generated with PowerPC64 gcc's + `-mcmodel=medium' or `-mcmodel=large' options. Doing this results + in better TOC grouping for multi-TOC. Use this option to turn off + this feature. + +`--plt-align' +`--no-plt-align' + Use these options to control whether individual PLT call stubs are + padded so that they don't cross a 32-byte boundary, or to the + specified power of two boundary when using `--plt-align='. Note + that this isn't alignment in the usual sense. By default PLT call + stubs are packed tightly. + +`--plt-static-chain' +`--no-plt-static-chain' + Use these options to control whether PLT call stubs load the static + chain pointer (r11). `ld' defaults to not loading the static + chain since there is never any need to do so on a PLT call. + +`--plt-thread-safe' +`--no-thread-safe' + With power7's weakly ordered memory model, it is possible when + using lazy binding for ld.so to update a plt entry in one thread + and have another thread see the individual plt entry words update + in the wrong order, despite ld.so carefully writing in the correct + order and using memory write barriers. To avoid this we need some + sort of read barrier in the call stub, or use LD_BIND_NOW=1. By + default, `ld' looks for calls to commonly used functions that + create threads, and if seen, adds the necessary barriers. Use + these options to change the default behaviour. + + +File: ld.info, Node: SPU ELF, Next: TI COFF, Prev: PowerPC64 ELF64, Up: Machine Dependent + +4.14 `ld' and SPU ELF Support +============================= + +`--plugin' + This option marks an executable as a PIC plugin module. + +`--no-overlays' + Normally, `ld' recognizes calls to functions within overlay + regions, and redirects such calls to an overlay manager via a stub. + `ld' also provides a built-in overlay manager. This option turns + off all this special overlay handling. + +`--emit-stub-syms' + This option causes `ld' to label overlay stubs with a local symbol + that encodes the stub type and destination. + +`--extra-overlay-stubs' + This option causes `ld' to add overlay call stubs on all function + calls out of overlay regions. Normally stubs are not added on + calls to non-overlay regions. + +`--local-store=lo:hi' + `ld' usually checks that a final executable for SPU fits in the + address range 0 to 256k. This option may be used to change the + range. Disable the check entirely with `--local-store=0:0'. + +`--stack-analysis' + SPU local store space is limited. Over-allocation of stack space + unnecessarily limits space available for code and data, while + under-allocation results in runtime failures. If given this + option, `ld' will provide an estimate of maximum stack usage. + `ld' does this by examining symbols in code sections to determine + the extents of functions, and looking at function prologues for + stack adjusting instructions. A call-graph is created by looking + for relocations on branch instructions. The graph is then searched + for the maximum stack usage path. Note that this analysis does not + find calls made via function pointers, and does not handle + recursion and other cycles in the call graph. Stack usage may be + under-estimated if your code makes such calls. Also, stack usage + for dynamic allocation, e.g. alloca, will not be detected. If a + link map is requested, detailed information about each function's + stack usage and calls will be given. + +`--emit-stack-syms' + This option, if given along with `--stack-analysis' will result in + `ld' emitting stack sizing symbols for each function. These take + the form `__stack_' for global functions, and + `__stack__' for static functions. + `' is the section id in hex. The value of such symbols is + the stack requirement for the corresponding function. The symbol + size will be zero, type `STT_NOTYPE', binding `STB_LOCAL', and + section `SHN_ABS'. + + +File: ld.info, Node: TI COFF, Next: WIN32, Prev: SPU ELF, Up: Machine Dependent + +4.15 `ld''s Support for Various TI COFF Versions +================================================ + +The `--format' switch allows selection of one of the various TI COFF +versions. The latest of this writing is 2; versions 0 and 1 are also +supported. The TI COFF versions also vary in header byte-order format; +`ld' will read any version or byte order, but the output header format +depends on the default specified by the specific target. + + +File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent + +4.16 `ld' and WIN32 (cygwin/mingw) +================================== + +This section describes some of the win32 specific `ld' issues. See +*Note Command Line Options: Options. for detailed description of the +command line options mentioned here. + +_import libraries_ + The standard Windows linker creates and uses so-called import + libraries, which contains information for linking to dll's. They + are regular static archives and are handled as any other static + archive. The cygwin and mingw ports of `ld' have specific support + for creating such libraries provided with the `--out-implib' + command line option. + +_exporting DLL symbols_ + The cygwin/mingw `ld' has several ways to export symbols for dll's. + + _using auto-export functionality_ + By default `ld' exports symbols with the auto-export + functionality, which is controlled by the following command + line options: + + * -export-all-symbols [This is the default] + + * -exclude-symbols + + * -exclude-libs + + * -exclude-modules-for-implib + + * -version-script + + When auto-export is in operation, `ld' will export all the + non-local (global and common) symbols it finds in a DLL, with + the exception of a few symbols known to belong to the + system's runtime and libraries. As it will often not be + desirable to export all of a DLL's symbols, which may include + private functions that are not part of any public interface, + the command-line options listed above may be used to filter + symbols out from the list for exporting. The `--output-def' + option can be used in order to see the final list of exported + symbols with all exclusions taken into effect. + + If `--export-all-symbols' is not given explicitly on the + command line, then the default auto-export behavior will be + _disabled_ if either of the following are true: + + * A DEF file is used. + + * Any symbol in any object file was marked with the + __declspec(dllexport) attribute. + + _using a DEF file_ + Another way of exporting symbols is using a DEF file. A DEF + file is an ASCII file containing definitions of symbols which + should be exported when a dll is created. Usually it is + named `.def' and is added as any other object file + to the linker's command line. The file's name must end in + `.def' or `.DEF'. + + gcc -o .def + + Using a DEF file turns off the normal auto-export behavior, + unless the `--export-all-symbols' option is also used. + + Here is an example of a DEF file for a shared library called + `xyz.dll': + + LIBRARY "xyz.dll" BASE=0x20000000 + + EXPORTS + foo + bar + _bar = bar + another_foo = abc.dll.afoo + var1 DATA + doo = foo == foo2 + eoo DATA == var1 + + This example defines a DLL with a non-default base address + and seven symbols in the export table. The third exported + symbol `_bar' is an alias for the second. The fourth symbol, + `another_foo' is resolved by "forwarding" to another module + and treating it as an alias for `afoo' exported from the DLL + `abc.dll'. The final symbol `var1' is declared to be a data + object. The `doo' symbol in export library is an alias of + `foo', which gets the string name in export table `foo2'. The + `eoo' symbol is an data export symbol, which gets in export + table the name `var1'. + + The optional `LIBRARY ' command indicates the _internal_ + name of the output DLL. If `' does not include a suffix, + the default library suffix, `.DLL' is appended. + + When the .DEF file is used to build an application, rather + than a library, the `NAME ' command should be used + instead of `LIBRARY'. If `' does not include a suffix, + the default executable suffix, `.EXE' is appended. + + With either `LIBRARY ' or `NAME ' the optional + specification `BASE = ' may be used to specify a + non-default base address for the image. + + If neither `LIBRARY ' nor `NAME ' is specified, + or they specify an empty string, the internal name is the + same as the filename specified on the command line. + + The complete specification of an export symbol is: + + EXPORTS + ( ( ( [ = ] ) + | ( = . )) + [ @ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] [== ] ) * + + Declares `' as an exported symbol from the DLL, or + declares `' as an exported alias for `'; or + declares `' as a "forward" alias for the symbol + `' in the DLL `'. Optionally, + the symbol may be exported by the specified ordinal + `' alias. The optional `' is the to be used + string in import/export table for the symbol. + + The optional keywords that follow the declaration indicate: + + `NONAME': Do not put the symbol name in the DLL's export + table. It will still be exported by its ordinal alias + (either the value specified by the .def specification or, + otherwise, the value assigned by the linker). The symbol + name, however, does remain visible in the import library (if + any), unless `PRIVATE' is also specified. + + `DATA': The symbol is a variable or object, rather than a + function. The import lib will export only an indirect + reference to `foo' as the symbol `_imp__foo' (ie, `foo' must + be resolved as `*_imp__foo'). + + `CONSTANT': Like `DATA', but put the undecorated `foo' as + well as `_imp__foo' into the import library. Both refer to the + read-only import address table's pointer to the variable, not + to the variable itself. This can be dangerous. If the user + code fails to add the `dllimport' attribute and also fails to + explicitly add the extra indirection that the use of the + attribute enforces, the application will behave unexpectedly. + + `PRIVATE': Put the symbol in the DLL's export table, but do + not put it into the static import library used to resolve + imports at link time. The symbol can still be imported using + the `LoadLibrary/GetProcAddress' API at runtime or by by + using the GNU ld extension of linking directly to the DLL + without an import library. + + See ld/deffilep.y in the binutils sources for the full + specification of other DEF file statements + + While linking a shared dll, `ld' is able to create a DEF file + with the `--output-def ' command line option. + + _Using decorations_ + Another way of marking symbols for export is to modify the + source code itself, so that when building the DLL each symbol + to be exported is declared as: + + __declspec(dllexport) int a_variable + __declspec(dllexport) void a_function(int with_args) + + All such symbols will be exported from the DLL. If, however, + any of the object files in the DLL contain symbols decorated + in this way, then the normal auto-export behavior is + disabled, unless the `--export-all-symbols' option is also + used. + + Note that object files that wish to access these symbols must + _not_ decorate them with dllexport. Instead, they should use + dllimport, instead: + + __declspec(dllimport) int a_variable + __declspec(dllimport) void a_function(int with_args) + + This complicates the structure of library header files, + because when included by the library itself the header must + declare the variables and functions as dllexport, but when + included by client code the header must declare them as + dllimport. There are a number of idioms that are typically + used to do this; often client code can omit the __declspec() + declaration completely. See `--enable-auto-import' and + `automatic data imports' for more information. + +_automatic data imports_ + The standard Windows dll format supports data imports from dlls + only by adding special decorations (dllimport/dllexport), which + let the compiler produce specific assembler instructions to deal + with this issue. This increases the effort necessary to port + existing Un*x code to these platforms, especially for large c++ + libraries and applications. The auto-import feature, which was + initially provided by Paul Sokolovsky, allows one to omit the + decorations to achieve a behavior that conforms to that on + POSIX/Un*x platforms. This feature is enabled with the + `--enable-auto-import' command-line option, although it is enabled + by default on cygwin/mingw. The `--enable-auto-import' option + itself now serves mainly to suppress any warnings that are + ordinarily emitted when linked objects trigger the feature's use. + + auto-import of variables does not always work flawlessly without + additional assistance. Sometimes, you will see this message + + "variable '' can't be auto-imported. Please read the + documentation for ld's `--enable-auto-import' for details." + + The `--enable-auto-import' documentation explains why this error + occurs, and several methods that can be used to overcome this + difficulty. One of these methods is the _runtime pseudo-relocs_ + feature, described below. + + For complex variables imported from DLLs (such as structs or + classes), object files typically contain a base address for the + variable and an offset (_addend_) within the variable-to specify a + particular field or public member, for instance. Unfortunately, + the runtime loader used in win32 environments is incapable of + fixing these references at runtime without the additional + information supplied by dllimport/dllexport decorations. The + standard auto-import feature described above is unable to resolve + these references. + + The `--enable-runtime-pseudo-relocs' switch allows these + references to be resolved without error, while leaving the task of + adjusting the references themselves (with their non-zero addends) + to specialized code provided by the runtime environment. Recent + versions of the cygwin and mingw environments and compilers + provide this runtime support; older versions do not. However, the + support is only necessary on the developer's platform; the + compiled result will run without error on an older system. + + `--enable-runtime-pseudo-relocs' is not the default; it must be + explicitly enabled as needed. + +_direct linking to a dll_ + The cygwin/mingw ports of `ld' support the direct linking, + including data symbols, to a dll without the usage of any import + libraries. This is much faster and uses much less memory than + does the traditional import library method, especially when + linking large libraries or applications. When `ld' creates an + import lib, each function or variable exported from the dll is + stored in its own bfd, even though a single bfd could contain many + exports. The overhead involved in storing, loading, and + processing so many bfd's is quite large, and explains the + tremendous time, memory, and storage needed to link against + particularly large or complex libraries when using import libs. + + Linking directly to a dll uses no extra command-line switches + other than `-L' and `-l', because `ld' already searches for a + number of names to match each library. All that is needed from + the developer's perspective is an understanding of this search, in + order to force ld to select the dll instead of an import library. + + For instance, when ld is called with the argument `-lxxx' it will + attempt to find, in the first directory of its search path, + + libxxx.dll.a + xxx.dll.a + libxxx.a + xxx.lib + cygxxx.dll (*) + libxxx.dll + xxx.dll + + before moving on to the next directory in the search path. + + (*) Actually, this is not `cygxxx.dll' but in fact is + `xxx.dll', where `' is set by the `ld' option + `--dll-search-prefix='. In the case of cygwin, the + standard gcc spec file includes `--dll-search-prefix=cyg', so in + effect we actually search for `cygxxx.dll'. + + Other win32-based unix environments, such as mingw or pw32, may + use other `'es, although at present only cygwin makes use + of this feature. It was originally intended to help avoid name + conflicts among dll's built for the various win32/un*x + environments, so that (for example) two versions of a zlib dll + could coexist on the same machine. + + The generic cygwin/mingw path layout uses a `bin' directory for + applications and dll's and a `lib' directory for the import + libraries (using cygwin nomenclature): + + bin/ + cygxxx.dll + lib/ + libxxx.dll.a (in case of dll's) + libxxx.a (in case of static archive) + + Linking directly to a dll without using the import library can be + done two ways: + + 1. Use the dll directly by adding the `bin' path to the link line + gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx + + However, as the dll's often have version numbers appended to their + names (`cygncurses-5.dll') this will often fail, unless one + specifies `-L../bin -lncurses-5' to include the version. Import + libs are generally not versioned, and do not have this difficulty. + + 2. Create a symbolic link from the dll to a file in the `lib' + directory according to the above mentioned search pattern. This + should be used to avoid unwanted changes in the tools needed for + making the app/dll. + + ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] + + Then you can link without any make environment changes. + + gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx + + This technique also avoids the version number problems, because + the following is perfectly legal + + bin/ + cygxxx-5.dll + lib/ + libxxx.dll.a -> ../bin/cygxxx-5.dll + + Linking directly to a dll without using an import lib will work + even when auto-import features are exercised, and even when + `--enable-runtime-pseudo-relocs' is used. + + Given the improvements in speed and memory usage, one might + justifiably wonder why import libraries are used at all. There + are three reasons: + + 1. Until recently, the link-directly-to-dll functionality did _not_ + work with auto-imported data. + + 2. Sometimes it is necessary to include pure static objects within + the import library (which otherwise contains only bfd's for + indirection symbols that point to the exports of a dll). Again, + the import lib for the cygwin kernel makes use of this ability, + and it is not possible to do this without an import lib. + + 3. Symbol aliases can only be resolved using an import lib. This + is critical when linking against OS-supplied dll's (eg, the win32 + API) in which symbols are usually exported as undecorated aliases + of their stdcall-decorated assembly names. + + So, import libs are not going away. But the ability to replace + true import libs with a simple symbolic link to (or a copy of) a + dll, in many cases, is a useful addition to the suite of tools + binutils makes available to the win32 developer. Given the + massive improvements in memory requirements during linking, storage + requirements, and linking speed, we expect that many developers + will soon begin to use this feature whenever possible. + +_symbol aliasing_ + + _adding additional names_ + Sometimes, it is useful to export symbols with additional + names. A symbol `foo' will be exported as `foo', but it can + also be exported as `_foo' by using special directives in the + DEF file when creating the dll. This will affect also the + optional created import library. Consider the following DEF + file: + + LIBRARY "xyz.dll" BASE=0x61000000 + + EXPORTS + foo + _foo = foo + + The line `_foo = foo' maps the symbol `foo' to `_foo'. + + Another method for creating a symbol alias is to create it in + the source code using the "weak" attribute: + + void foo () { /* Do something. */; } + void _foo () __attribute__ ((weak, alias ("foo"))); + + See the gcc manual for more information about attributes and + weak symbols. + + _renaming symbols_ + Sometimes it is useful to rename exports. For instance, the + cygwin kernel does this regularly. A symbol `_foo' can be + exported as `foo' but not as `_foo' by using special + directives in the DEF file. (This will also affect the import + library, if it is created). In the following example: + + LIBRARY "xyz.dll" BASE=0x61000000 + + EXPORTS + _foo = foo + + The line `_foo = foo' maps the exported symbol `foo' to + `_foo'. + + Note: using a DEF file disables the default auto-export behavior, + unless the `--export-all-symbols' command line option is used. + If, however, you are trying to rename symbols, then you should list + _all_ desired exports in the DEF file, including the symbols that + are not being renamed, and do _not_ use the `--export-all-symbols' + option. If you list only the renamed symbols in the DEF file, and + use `--export-all-symbols' to handle the other symbols, then the + both the new names _and_ the original names for the renamed + symbols will be exported. In effect, you'd be aliasing those + symbols, not renaming them, which is probably not what you wanted. + +_weak externals_ + The Windows object format, PE, specifies a form of weak symbols + called weak externals. When a weak symbol is linked and the + symbol is not defined, the weak symbol becomes an alias for some + other symbol. There are three variants of weak externals: + * Definition is searched for in objects and libraries, + historically called lazy externals. + + * Definition is searched for only in other objects, not in + libraries. This form is not presently implemented. + + * No search; the symbol is an alias. This form is not presently + implemented. + As a GNU extension, weak symbols that do not specify an alternate + symbol are supported. If the symbol is undefined when linking, + the symbol uses a default value. + +_aligned common symbols_ + As a GNU extension to the PE file format, it is possible to + specify the desired alignment for a common symbol. This + information is conveyed from the assembler or compiler to the + linker by means of GNU-specific commands carried in the object + file's `.drectve' section, which are recognized by `ld' and + respected when laying out the common symbols. Native tools will + be able to process object files employing this GNU extension, but + will fail to respect the alignment instructions, and may issue + noisy warnings about unknown linker directives. + + + +File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent + +4.17 `ld' and Xtensa Processors +=============================== + +The default `ld' behavior for Xtensa processors is to interpret +`SECTIONS' commands so that lists of explicitly named sections in a +specification with a wildcard file will be interleaved when necessary to +keep literal pools within the range of PC-relative load offsets. For +example, with the command: + + SECTIONS + { + .text : { + *(.literal .text) + } + } + +`ld' may interleave some of the `.literal' and `.text' sections from +different object files to ensure that the literal pools are within the +range of PC-relative load offsets. A valid interleaving might place +the `.literal' sections from an initial group of files followed by the +`.text' sections of that group of files. Then, the `.literal' sections +from the rest of the files and the `.text' sections from the rest of +the files would follow. + + Relaxation is enabled by default for the Xtensa version of `ld' and +provides two important link-time optimizations. The first optimization +is to combine identical literal values to reduce code size. A redundant +literal will be removed and all the `L32R' instructions that use it +will be changed to reference an identical literal, as long as the +location of the replacement literal is within the offset range of all +the `L32R' instructions. The second optimization is to remove +unnecessary overhead from assembler-generated "longcall" sequences of +`L32R'/`CALLXN' when the target functions are within range of direct +`CALLN' instructions. + + For each of these cases where an indirect call sequence can be +optimized to a direct call, the linker will change the `CALLXN' +instruction to a `CALLN' instruction, remove the `L32R' instruction, +and remove the literal referenced by the `L32R' instruction if it is +not used for anything else. Removing the `L32R' instruction always +reduces code size but can potentially hurt performance by changing the +alignment of subsequent branch targets. By default, the linker will +always preserve alignments, either by switching some instructions +between 24-bit encodings and the equivalent density instructions or by +inserting a no-op in place of the `L32R' instruction that was removed. +If code size is more important than performance, the `--size-opt' +option can be used to prevent the linker from widening density +instructions or inserting no-ops, except in a few cases where no-ops +are required for correctness. + + The following Xtensa-specific command-line options can be used to +control the linker: + +`--size-opt' + When optimizing indirect calls to direct calls, optimize for code + size more than performance. With this option, the linker will not + insert no-ops or widen density instructions to preserve branch + target alignment. There may still be some cases where no-ops are + required to preserve the correctness of the code. + + +File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top + +5 BFD +***** + +The linker accesses object and archive files using the BFD libraries. +These libraries allow the linker to use the same routines to operate on +object files whatever the object file format. A different object file +format can be supported simply by creating a new BFD back end and adding +it to the library. To conserve runtime memory, however, the linker and +associated tools are usually configured to support only a subset of the +object file formats available. You can use `objdump -i' (*note +objdump: (binutils.info)objdump.) to list all the formats available for +your configuration. + + As with most implementations, BFD is a compromise between several +conflicting requirements. The major factor influencing BFD design was +efficiency: any time used converting between formats is time which +would not have been spent had BFD not been involved. This is partly +offset by abstraction payback; since BFD simplifies applications and +back ends, more time and care may be spent optimizing algorithms for a +greater speed. + + One minor artifact of the BFD solution which you should bear in mind +is the potential for information loss. There are two places where +useful information can be lost using the BFD mechanism: during +conversion and during output. *Note BFD information loss::. + +* Menu: + +* BFD outline:: How it works: an outline of BFD + + +File: ld.info, Node: BFD outline, Up: BFD + +5.1 How It Works: An Outline of BFD +=================================== + +When an object file is opened, BFD subroutines automatically determine +the format of the input object file. They then build a descriptor in +memory with pointers to routines that will be used to access elements of +the object file's data structures. + + As different information from the object files is required, BFD +reads from different sections of the file and processes them. For +example, a very common operation for the linker is processing symbol +tables. Each BFD back end provides a routine for converting between +the object file's representation of symbols and an internal canonical +format. When the linker asks for the symbol table of an object file, it +calls through a memory pointer to the routine from the relevant BFD +back end which reads and converts the table into a canonical form. The +linker then operates upon the canonical form. When the link is finished +and the linker writes the output file's symbol table, another BFD back +end routine is called to take the newly created symbol table and +convert it into the chosen output format. + +* Menu: + +* BFD information loss:: Information Loss +* Canonical format:: The BFD canonical object-file format + + +File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline + +5.1.1 Information Loss +---------------------- + +_Information can be lost during output._ The output formats supported +by BFD do not provide identical facilities, and information which can +be described in one form has nowhere to go in another format. One +example of this is alignment information in `b.out'. There is nowhere +in an `a.out' format file to store alignment information on the +contained data, so when a file is linked from `b.out' and an `a.out' +image is produced, alignment information will not propagate to the +output file. (The linker will still use the alignment information +internally, so the link is performed correctly). + + Another example is COFF section names. COFF files may contain an +unlimited number of sections, each one with a textual section name. If +the target of the link is a format which does not have many sections +(e.g., `a.out') or has sections without names (e.g., the Oasys format), +the link cannot be done simply. You can circumvent this problem by +describing the desired input-to-output section mapping with the linker +command language. + + _Information can be lost during canonicalization._ The BFD internal +canonical form of the external formats is not exhaustive; there are +structures in input formats for which there is no direct representation +internally. This means that the BFD back ends cannot maintain all +possible data richness through the transformation between external to +internal and back to external formats. + + This limitation is only a problem when an application reads one +format and writes another. Each BFD back end is responsible for +maintaining as much data as possible, and the internal BFD canonical +form has structures which are opaque to the BFD core, and exported only +to the back ends. When a file is read in one format, the canonical form +is generated for BFD and the application. At the same time, the back +end saves away any information which may otherwise be lost. If the data +is then written back in the same format, the back end routine will be +able to use the canonical form provided by the BFD core as well as the +information it prepared earlier. Since there is a great deal of +commonality between back ends, there is no information lost when +linking or copying big endian COFF to little endian COFF, or `a.out' to +`b.out'. When a mixture of formats is linked, the information is only +lost from the files whose format differs from the destination. + + +File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline + +5.1.2 The BFD canonical object-file format +------------------------------------------ + +The greatest potential for loss of information occurs when there is the +least overlap between the information provided by the source format, +that stored by the canonical format, and that needed by the destination +format. A brief description of the canonical form may help you +understand which kinds of data you can count on preserving across +conversions. + +_files_ + Information stored on a per-file basis includes target machine + architecture, particular implementation format type, a demand + pageable bit, and a write protected bit. Information like Unix + magic numbers is not stored here--only the magic numbers' meaning, + so a `ZMAGIC' file would have both the demand pageable bit and the + write protected text bit set. The byte order of the target is + stored on a per-file basis, so that big- and little-endian object + files may be used with one another. + +_sections_ + Each section in the input file contains the name of the section, + the section's original address in the object file, size and + alignment information, various flags, and pointers into other BFD + data structures. + +_symbols_ + Each symbol contains a pointer to the information for the object + file which originally defined it, its name, its value, and various + flag bits. When a BFD back end reads in a symbol table, it + relocates all symbols to make them relative to the base of the + section where they were defined. Doing this ensures that each + symbol points to its containing section. Each symbol also has a + varying amount of hidden private data for the BFD back end. Since + the symbol points to the original file, the private data format + for that symbol is accessible. `ld' can operate on a collection + of symbols of wildly different formats without problems. + + Normal global and simple local symbols are maintained on output, + so an output file (no matter its format) will retain symbols + pointing to functions and to global, static, and common variables. + Some symbol information is not worth retaining; in `a.out', type + information is stored in the symbol table as long symbol names. + This information would be useless to most COFF debuggers; the + linker has command line switches to allow users to throw it away. + + There is one word of type information within the symbol, so if the + format supports symbol type information within symbols (for + example, COFF, IEEE, Oasys) and the type is simple enough to fit + within one word (nearly everything but aggregates), the + information will be preserved. + +_relocation level_ + Each canonical BFD relocation record contains a pointer to the + symbol to relocate to, the offset of the data to relocate, the + section the data is in, and a pointer to a relocation type + descriptor. Relocation is performed by passing messages through + the relocation type descriptor and the symbol pointer. Therefore, + relocations can be performed on output data using a relocation + method that is only available in one of the input formats. For + instance, Oasys provides a byte relocation format. A relocation + record requesting this relocation type would point indirectly to a + routine to perform this, so the relocation may be performed on a + byte being written to a 68k COFF file, even though 68k COFF has no + such relocation type. + +_line numbers_ + Object formats can contain, for debugging purposes, some form of + mapping between symbols, source line numbers, and addresses in the + output file. These addresses have to be relocated along with the + symbol information. Each symbol with an associated list of line + number records points to the first record of the list. The head + of a line number list consists of a pointer to the symbol, which + allows finding out the address of the function whose line number + is being described. The rest of the list is made up of pairs: + offsets into the section and line numbers. Any format which can + simply derive this information can pass it successfully between + formats (COFF, IEEE and Oasys). + + +File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top + +6 Reporting Bugs +**************** + +Your bug reports play an essential role in making `ld' reliable. + + Reporting a bug may help you by bringing a solution to your problem, +or it may not. But in any case the principal function of a bug report +is to help the entire community by making the next version of `ld' work +better. Bug reports are your contribution to the maintenance of `ld'. + + In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. + +* Menu: + +* Bug Criteria:: Have you found a bug? +* Bug Reporting:: How to report bugs + + +File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs + +6.1 Have You Found a Bug? +========================= + +If you are not sure whether you have found a bug, here are some +guidelines: + + * If the linker gets a fatal signal, for any input whatever, that is + a `ld' bug. Reliable linkers never crash. + + * If `ld' produces an error message for valid input, that is a bug. + + * If `ld' does not produce an error message for invalid input, that + may be a bug. In the general case, the linker can not verify that + object files are correct. + + * If you are an experienced user of linkers, your suggestions for + improvement of `ld' are welcome in any case. + + +File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs + +6.2 How to Report Bugs +====================== + +A number of companies and individuals offer support for GNU products. +If you obtained `ld' from a support organization, we recommend you +contact that organization first. + + You can find contact information for many support companies and +individuals in the file `etc/SERVICE' in the GNU Emacs distribution. + + Otherwise, send bug reports for `ld' to +`http://www.sourceware.org/bugzilla/'. + + The fundamental principle of reporting bugs usefully is this: +*report all the facts*. If you are not sure whether to state a fact or +leave it out, state it! + + Often people omit facts because they think they know what causes the +problem and assume that some details do not matter. Thus, you might +assume that the name of a symbol you use in an example does not matter. +Well, probably it does not, but one cannot be sure. Perhaps the bug +is a stray memory reference which happens to fetch from the location +where that name is stored in memory; perhaps, if the name were +different, the contents of that location would fool the linker into +doing the right thing despite the bug. Play it safe and give a +specific, complete example. That is the easiest thing for you to do, +and the most helpful. + + Keep in mind that the purpose of a bug report is to enable us to fix +the bug if it is new to us. Therefore, always write your bug reports +on the assumption that the bug has not been reported previously. + + Sometimes people give a few sketchy facts and ask, "Does this ring a +bell?" This cannot help us fix a bug, so it is basically useless. We +respond by asking for enough details to enable us to investigate. You +might as well expedite matters by sending them to begin with. + + To enable us to fix the bug, you should include all these things: + + * The version of `ld'. `ld' announces it if you start it with the + `--version' argument. + + Without this, we will not know whether there is any point in + looking for the bug in the current version of `ld'. + + * Any patches you may have applied to the `ld' source, including any + patches made to the `BFD' library. + + * The type of machine you are using, and the operating system name + and version number. + + * What compiler (and its version) was used to compile `ld'--e.g. + "`gcc-2.7'". + + * The command arguments you gave the linker to link your example and + observe the bug. To guarantee you will not omit something + important, list them all. A copy of the Makefile (or the output + from make) is sufficient. + + If we were to try to guess the arguments, we would probably guess + wrong and then we might not encounter the bug. + + * A complete input file, or set of input files, that will reproduce + the bug. It is generally most helpful to send the actual object + files provided that they are reasonably small. Say no more than + 10K. For bigger files you can either make them available by FTP + or HTTP or else state that you are willing to send the object + file(s) to whomever requests them. (Note - your email will be + going to a mailing list, so we do not want to clog it up with + large attachments). But small attachments are best. + + If the source files were assembled using `gas' or compiled using + `gcc', then it may be OK to send the source files rather than the + object files. In this case, be sure to say exactly what version of + `gas' or `gcc' was used to produce the object files. Also say how + `gas' or `gcc' were configured. + + * A description of what behavior you observe that you believe is + incorrect. For example, "It gets a fatal signal." + + Of course, if the bug is that `ld' gets a fatal signal, then we + will certainly notice it. But if the bug is incorrect output, we + might not notice unless it is glaringly wrong. You might as well + not give us a chance to make a mistake. + + Even if the problem you experience is a fatal signal, you should + still say so explicitly. Suppose something strange is going on, + such as, your copy of `ld' is out of sync, or you have encountered + a bug in the C library on your system. (This has happened!) Your + copy might crash and ours would not. If you told us to expect a + crash, then when ours fails to crash, we would know that the bug + was not happening for us. If you had not told us to expect a + crash, then we would not be able to draw any conclusion from our + observations. + + * If you wish to suggest changes to the `ld' source, send us context + diffs, as generated by `diff' with the `-u', `-c', or `-p' option. + Always send diffs from the old file to the new file. If you even + discuss something in the `ld' source, refer to it by context, not + by line number. + + The line numbers in our development sources will not match those + in your sources. Your line numbers would convey no useful + information to us. + + Here are some things that are not necessary: + + * A description of the envelope of the bug. + + Often people who encounter a bug spend a lot of time investigating + which changes to the input file will make the bug go away and which + changes will not affect it. + + This is often time consuming and not very useful, because the way + we will find the bug is by running a single example under the + debugger with breakpoints, not by pure deduction from a series of + examples. We recommend that you save your time for something else. + + Of course, if you can find a simpler example to report _instead_ + of the original one, that is a convenience for us. Errors in the + output will be easier to spot, running under the debugger will take + less time, and so on. + + However, simplification is not vital; if you do not want to do + this, report the bug anyway and send us the entire test case you + used. + + * A patch for the bug. + + A patch for the bug does help us if it is a good one. But do not + omit the necessary information, such as the test case, on the + assumption that a patch is all we need. We might see problems + with your patch and decide to fix the problem another way, or we + might not understand it at all. + + Sometimes with a program as complicated as `ld' it is very hard to + construct an example that will make the program follow a certain + path through the code. If you do not send us the example, we will + not be able to construct one, so we will not be able to verify + that the bug is fixed. + + And if we cannot understand what bug you are trying to fix, or why + your patch should be an improvement, we will not install it. A + test case will help us to understand. + + * A guess about what the bug is or what it depends on. + + Such guesses are usually wrong. Even we cannot guess right about + such things without first using the debugger to find the facts. + + +File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top + +Appendix A MRI Compatible Script Files +************************************** + +To aid users making the transition to GNU `ld' from the MRI linker, +`ld' can use MRI compatible linker scripts as an alternative to the +more general-purpose linker scripting language described in *Note +Scripts::. MRI compatible linker scripts have a much simpler command +set than the scripting language otherwise used with `ld'. GNU `ld' +supports the most commonly used MRI linker commands; these commands are +described here. + + In general, MRI scripts aren't of much use with the `a.out' object +file format, since it only has three sections and MRI scripts lack some +features to make use of them. + + You can specify a file containing an MRI-compatible script using the +`-c' command-line option. + + Each command in an MRI-compatible script occupies its own line; each +command line starts with the keyword that identifies the command (though +blank lines are also allowed for punctuation). If a line of an +MRI-compatible script begins with an unrecognized keyword, `ld' issues +a warning message, but continues processing the script. + + Lines beginning with `*' are comments. + + You can write these commands using all upper-case letters, or all +lower case; for example, `chip' is the same as `CHIP'. The following +list shows only the upper-case form of each command. + +`ABSOLUTE SECNAME' +`ABSOLUTE SECNAME, SECNAME, ... SECNAME' + Normally, `ld' includes in the output file all sections from all + the input files. However, in an MRI-compatible script, you can + use the `ABSOLUTE' command to restrict the sections that will be + present in your output program. If the `ABSOLUTE' command is used + at all in a script, then only the sections named explicitly in + `ABSOLUTE' commands will appear in the linker output. You can + still use other input sections (whatever you select on the command + line, or using `LOAD') to resolve addresses in the output file. + +`ALIAS OUT-SECNAME, IN-SECNAME' + Use this command to place the data from input section IN-SECNAME + in a section called OUT-SECNAME in the linker output file. + + IN-SECNAME may be an integer. + +`ALIGN SECNAME = EXPRESSION' + Align the section called SECNAME to EXPRESSION. The EXPRESSION + should be a power of two. + +`BASE EXPRESSION' + Use the value of EXPRESSION as the lowest address (other than + absolute addresses) in the output file. + +`CHIP EXPRESSION' +`CHIP EXPRESSION, EXPRESSION' + This command does nothing; it is accepted only for compatibility. + +`END' + This command does nothing whatever; it's only accepted for + compatibility. + +`FORMAT OUTPUT-FORMAT' + Similar to the `OUTPUT_FORMAT' command in the more general linker + language, but restricted to one of these output formats: + + 1. S-records, if OUTPUT-FORMAT is `S' + + 2. IEEE, if OUTPUT-FORMAT is `IEEE' + + 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is + `COFF' + +`LIST ANYTHING...' + Print (to the standard output file) a link map, as produced by the + `ld' command-line option `-M'. + + The keyword `LIST' may be followed by anything on the same line, + with no change in its effect. + +`LOAD FILENAME' +`LOAD FILENAME, FILENAME, ... FILENAME' + Include one or more object file FILENAME in the link; this has the + same effect as specifying FILENAME directly on the `ld' command + line. + +`NAME OUTPUT-NAME' + OUTPUT-NAME is the name for the program produced by `ld'; the + MRI-compatible command `NAME' is equivalent to the command-line + option `-o' or the general script language command `OUTPUT'. + +`ORDER SECNAME, SECNAME, ... SECNAME' +`ORDER SECNAME SECNAME SECNAME' + Normally, `ld' orders the sections in its output file in the order + in which they first appear in the input files. In an + MRI-compatible script, you can override this ordering with the + `ORDER' command. The sections you list with `ORDER' will appear + first in your output file, in the order specified. + +`PUBLIC NAME=EXPRESSION' +`PUBLIC NAME,EXPRESSION' +`PUBLIC NAME EXPRESSION' + Supply a value (EXPRESSION) for external symbol NAME used in the + linker input files. + +`SECT SECNAME, EXPRESSION' +`SECT SECNAME=EXPRESSION' +`SECT SECNAME EXPRESSION' + You can use any of these three forms of the `SECT' command to + specify the start address (EXPRESSION) for section SECNAME. If + you have more than one `SECT' statement for the same SECNAME, only + the _first_ sets the start address. + + +File: ld.info, Node: GNU Free Documentation License, Next: LD Index, Prev: MRI, Up: Top + +Appendix B GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + `http://fsf.org/' + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + 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 + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + 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 + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + 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 + 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 + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + 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 + replace the old one, on explicit permission from the previous + publisher that added the old one. + + 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 + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + 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 + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + 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 + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly + and finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from + you under this License. If your rights have been terminated and + not permanently reinstated, receipt of a copy of some or all of + the same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents +==================================================== + +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 +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + 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 + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + + +File: ld.info, Node: LD Index, Prev: GNU Free Documentation License, Up: Top + +LD Index +******** + +[index] +* Menu: + +* ": Symbols. (line 6) +* -(: Options. (line 731) +* --accept-unknown-input-arch: Options. (line 749) +* --add-needed: Options. (line 777) +* --add-stdcall-alias: Options. (line 1635) +* --allow-multiple-definition: Options. (line 1029) +* --allow-shlib-undefined: Options. (line 1035) +* --architecture=ARCH: Options. (line 123) +* --as-needed: Options. (line 759) +* --audit AUDITLIB: Options. (line 112) +* --auxiliary=NAME: Options. (line 255) +* --bank-window: Options. (line 2089) +* --base-file: Options. (line 1640) +* --be8: ARM. (line 28) +* --bss-plt: PowerPC ELF32. (line 16) +* --build-id: Options. (line 1597) +* --build-id=STYLE: Options. (line 1597) +* --check-sections: Options. (line 856) +* --copy-dt-needed-entries: Options. (line 868) +* --cref: Options. (line 888) +* --default-imported-symver: Options. (line 1072) +* --default-script=SCRIPT: Options. (line 562) +* --default-symver: Options. (line 1068) +* --defsym=SYMBOL=EXP: Options. (line 917) +* --demangle[=STYLE]: Options. (line 930) +* --depaudit AUDITLIB: Options. (line 177) +* --disable-auto-image-base: Options. (line 1827) +* --disable-auto-import: Options. (line 1962) +* --disable-large-address-aware: Options. (line 1766) +* --disable-long-section-names: Options. (line 1650) +* --disable-new-dtags: Options. (line 1559) +* --disable-runtime-pseudo-reloc: Options. (line 1975) +* --disable-stdcall-fixup: Options. (line 1672) +* --discard-all: Options. (line 608) +* --discard-locals: Options. (line 612) +* --dll: Options. (line 1645) +* --dll-search-prefix: Options. (line 1833) +* --dotsyms: PowerPC64 ELF64. (line 33) +* --dsbt-index: Options. (line 2066) +* --dsbt-size: Options. (line 2061) +* --dynamic-linker=FILE: Options. (line 943) +* --dynamic-list-cpp-new: Options. (line 848) +* --dynamic-list-cpp-typeinfo: Options. (line 852) +* --dynamic-list-data: Options. (line 845) +* --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 832) +* --dynamicbase: Options. (line 2015) +* --eh-frame-hdr: Options. (line 1550) +* --emit-relocs: Options. (line 497) +* --emit-stack-syms: SPU ELF. (line 46) +* --emit-stub-syms <1>: SPU ELF. (line 15) +* --emit-stub-syms <2>: PowerPC ELF32. (line 47) +* --emit-stub-syms: PowerPC64 ELF64. (line 29) +* --enable-auto-image-base: Options. (line 1818) +* --enable-auto-import: Options. (line 1842) +* --enable-extra-pe-debug: Options. (line 1980) +* --enable-long-section-names: Options. (line 1650) +* --enable-new-dtags: Options. (line 1559) +* --enable-runtime-pseudo-reloc: Options. (line 1967) +* --enable-stdcall-fixup: Options. (line 1672) +* --entry=ENTRY: Options. (line 187) +* --error-unresolved-symbols: Options. (line 1503) +* --exclude-all-symbols: Options. (line 1726) +* --exclude-libs: Options. (line 197) +* --exclude-modules-for-implib: Options. (line 208) +* --exclude-symbols: Options. (line 1720) +* --export-all-symbols: Options. (line 1696) +* --export-dynamic: Options. (line 221) +* --extra-overlay-stubs: SPU ELF. (line 19) +* --fatal-warnings: Options. (line 950) +* --file-alignment: Options. (line 1730) +* --filter=NAME: Options. (line 276) +* --fix-arm1176: ARM. (line 111) +* --fix-cortex-a53-835769: ARM. (line 174) +* --fix-cortex-a8: ARM. (line 165) +* --fix-v4bx: ARM. (line 49) +* --fix-v4bx-interworking: ARM. (line 62) +* --force-dynamic: Options. (line 506) +* --force-exe-suffix: Options. (line 955) +* --forceinteg: Options. (line 2020) +* --format=FORMAT: Options. (line 134) +* --format=VERSION: TI COFF. (line 6) +* --gc-sections: Options. (line 965) +* --got: Options. (line 2102) +* --got=TYPE: M68K. (line 6) +* --gpsize=VALUE: Options. (line 309) +* --hash-size=NUMBER: Options. (line 1569) +* --hash-style=STYLE: Options. (line 1577) +* --heap: Options. (line 1736) +* --help: Options. (line 1002) +* --high-entropy-va: Options. (line 2011) +* --image-base: Options. (line 1743) +* --insert-timestamp: Options. (line 2043) +* --insn32 <1>: MIPS. (line 6) +* --insn32: Options. (line 2114) +* --just-symbols=FILE: Options. (line 529) +* --kill-at: Options. (line 1752) +* --large-address-aware: Options. (line 1757) +* --ld-generated-unwind-info: Options. (line 1554) +* --leading-underscore: Options. (line 1690) +* --library-path=DIR: Options. (line 367) +* --library=NAMESPEC: Options. (line 334) +* --local-store=lo:hi: SPU ELF. (line 24) +* --long-plt: ARM. (line 185) +* --major-image-version: Options. (line 1773) +* --major-os-version: Options. (line 1778) +* --major-subsystem-version: Options. (line 1782) +* --merge-exidx-entries: ARM. (line 182) +* --minor-image-version: Options. (line 1787) +* --minor-os-version: Options. (line 1792) +* --minor-subsystem-version: Options. (line 1796) +* --mri-script=MRI-CMDFILE: Options. (line 158) +* --multi-subspace: HPPA ELF32. (line 6) +* --nmagic: Options. (line 439) +* --no-accept-unknown-input-arch: Options. (line 749) +* --no-add-needed: Options. (line 777) +* --no-allow-shlib-undefined: Options. (line 1035) +* --no-as-needed: Options. (line 759) +* --no-bind: Options. (line 2034) +* --no-check-sections: Options. (line 856) +* --no-copy-dt-needed-entries: Options. (line 868) +* --no-define-common: Options. (line 901) +* --no-demangle: Options. (line 930) +* --no-dotsyms: PowerPC64 ELF64. (line 33) +* --no-enum-size-warning: ARM. (line 120) +* --no-export-dynamic: Options. (line 221) +* --no-fatal-warnings: Options. (line 950) +* --no-fix-arm1176: ARM. (line 111) +* --no-fix-cortex-a53-835769: ARM. (line 174) +* --no-fix-cortex-a8: ARM. (line 165) +* --no-gc-sections: Options. (line 965) +* --no-insn32 <1>: MIPS. (line 6) +* --no-insn32: Options. (line 2115) +* --no-isolation: Options. (line 2027) +* --no-keep-memory: Options. (line 1014) +* --no-leading-underscore: Options. (line 1690) +* --no-merge-exidx-entries <1>: ARM. (line 182) +* --no-merge-exidx-entries: Options. (line 2073) +* --no-multi-toc: PowerPC64 ELF64. (line 74) +* --no-omagic: Options. (line 454) +* --no-opd-optimize: PowerPC64 ELF64. (line 48) +* --no-overlays: SPU ELF. (line 9) +* --no-plt-align: PowerPC64 ELF64. (line 96) +* --no-plt-static-chain: PowerPC64 ELF64. (line 104) +* --no-plt-thread-safe: PowerPC64 ELF64. (line 110) +* --no-print-gc-sections: Options. (line 987) +* --no-seh: Options. (line 2030) +* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43) +* --no-tls-optimize: PowerPC ELF32. (line 51) +* --no-toc-optimize: PowerPC64 ELF64. (line 60) +* --no-toc-sort: PowerPC64 ELF64. (line 86) +* --no-trampoline: Options. (line 2083) +* --no-undefined: Options. (line 1021) +* --no-undefined-version: Options. (line 1063) +* --no-warn-mismatch: Options. (line 1076) +* --no-warn-search-mismatch: Options. (line 1085) +* --no-wchar-size-warning: ARM. (line 127) +* --no-whole-archive: Options. (line 1089) +* --noinhibit-exec: Options. (line 1093) +* --non-overlapping-opd: PowerPC64 ELF64. (line 54) +* --nxcompat: Options. (line 2023) +* --oformat=OUTPUT-FORMAT: Options. (line 1105) +* --omagic: Options. (line 445) +* --out-implib: Options. (line 1809) +* --output-def: Options. (line 1801) +* --output=OUTPUT: Options. (line 460) +* --pic-executable: Options. (line 1118) +* --pic-veneer: ARM. (line 133) +* --plt-align: PowerPC64 ELF64. (line 96) +* --plt-static-chain: PowerPC64 ELF64. (line 104) +* --plt-thread-safe: PowerPC64 ELF64. (line 110) +* --plugin: SPU ELF. (line 6) +* --pop-state: Options. (line 494) +* --print-gc-sections: Options. (line 987) +* --print-map: Options. (line 402) +* --print-output-format: Options. (line 996) +* --push-state: Options. (line 476) +* --reduce-memory-overheads: Options. (line 1583) +* --relax: Options. (line 1134) +* --relax on i960: i960. (line 31) +* --relax on Nios II: Nios II. (line 6) +* --relax on PowerPC: PowerPC ELF32. (line 6) +* --relax on Xtensa: Xtensa. (line 27) +* --relocatable: Options. (line 510) +* --retain-symbols-file=FILENAME: Options. (line 1160) +* --script=SCRIPT: Options. (line 553) +* --sdata-got: PowerPC ELF32. (line 33) +* --section-alignment: Options. (line 1985) +* --section-start=SECTIONNAME=ORG: Options. (line 1316) +* --secure-plt: PowerPC ELF32. (line 26) +* --sort-common: Options. (line 1258) +* --sort-section=alignment: Options. (line 1273) +* --sort-section=name: Options. (line 1269) +* --split-by-file: Options. (line 1277) +* --split-by-reloc: Options. (line 1282) +* --stack: Options. (line 1991) +* --stack-analysis: SPU ELF. (line 29) +* --stats: Options. (line 1295) +* --strip-all: Options. (line 540) +* --strip-debug: Options. (line 544) +* --stub-group-size: PowerPC64 ELF64. (line 6) +* --stub-group-size=N <1>: ARM. (line 138) +* --stub-group-size=N: HPPA ELF32. (line 12) +* --subsystem: Options. (line 1998) +* --support-old-code: ARM. (line 6) +* --sysroot=DIRECTORY: Options. (line 1299) +* --target-help: Options. (line 1006) +* --target1-abs: ARM. (line 32) +* --target1-rel: ARM. (line 32) +* --target2=TYPE: ARM. (line 37) +* --thumb-entry=ENTRY: ARM. (line 17) +* --trace: Options. (line 549) +* --trace-symbol=SYMBOL: Options. (line 618) +* --traditional-format: Options. (line 1304) +* --tsaware: Options. (line 2040) +* --undefined=SYMBOL: Options. (line 575) +* --unique[=SECTION]: Options. (line 593) +* --unresolved-symbols: Options. (line 1346) +* --use-blx: ARM. (line 74) +* --use-nul-prefixed-import-tables: ARM. (line 23) +* --verbose[=NUMBER]: Options. (line 1375) +* --version: Options. (line 602) +* --version-script=VERSION-SCRIPTFILE: Options. (line 1383) +* --vfp11-denorm-fix: ARM. (line 83) +* --warn-alternate-em: Options. (line 1495) +* --warn-common: Options. (line 1394) +* --warn-constructors: Options. (line 1462) +* --warn-multiple-gp: Options. (line 1467) +* --warn-once: Options. (line 1481) +* --warn-section-align: Options. (line 1485) +* --warn-shared-textrel: Options. (line 1492) +* --warn-unresolved-symbols: Options. (line 1498) +* --wdmdriver: Options. (line 2037) +* --whole-archive: Options. (line 1507) +* --wrap=SYMBOL: Options. (line 1521) +* -A ARCH: Options. (line 122) +* -a KEYWORD: Options. (line 105) +* -assert KEYWORD: Options. (line 784) +* -b FORMAT: Options. (line 134) +* -Bdynamic: Options. (line 787) +* -Bgroup: Options. (line 797) +* -Bshareable: Options. (line 1251) +* -Bstatic: Options. (line 804) +* -Bsymbolic: Options. (line 819) +* -Bsymbolic-functions: Options. (line 826) +* -c MRI-CMDFILE: Options. (line 158) +* -call_shared: Options. (line 787) +* -d: Options. (line 168) +* -dc: Options. (line 168) +* -dn: Options. (line 804) +* -dp: Options. (line 168) +* -dT SCRIPT: Options. (line 562) +* -dy: Options. (line 787) +* -E: Options. (line 221) +* -e ENTRY: Options. (line 187) +* -EB: Options. (line 248) +* -EL: Options. (line 251) +* -F NAME: Options. (line 276) +* -f NAME: Options. (line 255) +* -fini=NAME: Options. (line 300) +* -g: Options. (line 306) +* -G VALUE: Options. (line 309) +* -h NAME: Options. (line 316) +* -i: Options. (line 325) +* -IFILE: Options. (line 943) +* -init=NAME: Options. (line 328) +* -L DIR: Options. (line 367) +* -l NAMESPEC: Options. (line 334) +* -M: Options. (line 402) +* -m EMULATION: Options. (line 392) +* -Map=MAPFILE: Options. (line 1010) +* -N: Options. (line 445) +* -n: Options. (line 439) +* -no-relax: Options. (line 1134) +* -non_shared: Options. (line 804) +* -nostdlib: Options. (line 1099) +* -O LEVEL: Options. (line 466) +* -o OUTPUT: Options. (line 460) +* -P AUDITLIB: Options. (line 177) +* -pie: Options. (line 1118) +* -q: Options. (line 497) +* -qmagic: Options. (line 1128) +* -Qy: Options. (line 1131) +* -r: Options. (line 510) +* -R FILE: Options. (line 529) +* -rpath-link=DIR: Options. (line 1196) +* -rpath=DIR: Options. (line 1174) +* -S: Options. (line 544) +* -s: Options. (line 540) +* -shared: Options. (line 1251) +* -soname=NAME: Options. (line 316) +* -static: Options. (line 804) +* -t: Options. (line 549) +* -T SCRIPT: Options. (line 553) +* -Tbss=ORG: Options. (line 1325) +* -Tdata=ORG: Options. (line 1325) +* -Tldata-segment=ORG: Options. (line 1341) +* -Trodata-segment=ORG: Options. (line 1335) +* -Ttext-segment=ORG: Options. (line 1331) +* -Ttext=ORG: Options. (line 1325) +* -u SYMBOL: Options. (line 575) +* -Ur: Options. (line 583) +* -v: Options. (line 602) +* -V: Options. (line 602) +* -x: Options. (line 608) +* -X: Options. (line 612) +* -Y PATH: Options. (line 627) +* -y SYMBOL: Options. (line 618) +* -z defs: Options. (line 1021) +* -z KEYWORD: Options. (line 631) +* -z muldefs: Options. (line 1029) +* .: Location Counter. (line 6) +* /DISCARD/: Output Section Discarding. + (line 26) +* 32-bit PLT entries: ARM. (line 185) +* :PHDR: Output Section Phdr. + (line 6) +* =FILLEXP: Output Section Fill. + (line 6) +* >REGION: Output Section Region. + (line 6) +* [COMMON]: Input Section Common. + (line 29) +* ABSOLUTE (MRI): MRI. (line 33) +* absolute and relocatable symbols: Expression Section. (line 6) +* absolute expressions: Expression Section. (line 6) +* ABSOLUTE(EXP): Builtin Functions. (line 10) +* ADDR(SECTION): Builtin Functions. (line 17) +* address, section: Output Section Address. + (line 6) +* ALIAS (MRI): MRI. (line 44) +* ALIGN (MRI): MRI. (line 50) +* align expression: Builtin Functions. (line 38) +* align location counter: Builtin Functions. (line 38) +* ALIGN(ALIGN): Builtin Functions. (line 38) +* ALIGN(EXP,ALIGN): Builtin Functions. (line 38) +* ALIGN(SECTION_ALIGN): Forced Output Alignment. + (line 6) +* aligned common symbols: WIN32. (line 424) +* ALIGNOF(SECTION): Builtin Functions. (line 64) +* allocating memory: MEMORY. (line 6) +* architecture: Miscellaneous Commands. + (line 72) +* architectures: Options. (line 122) +* archive files, from cmd line: Options. (line 334) +* archive search path in linker script: File Commands. (line 76) +* arithmetic: Expressions. (line 6) +* arithmetic operators: Operators. (line 6) +* ARM interworking support: ARM. (line 6) +* ARM1176 erratum workaround: ARM. (line 111) +* AS_NEEDED(FILES): File Commands. (line 56) +* ASSERT: Miscellaneous Commands. + (line 9) +* assertion in linker script: Miscellaneous Commands. + (line 9) +* assignment in scripts: Assignments. (line 6) +* AT(LMA): Output Section LMA. (line 6) +* AT>LMA_REGION: Output Section LMA. (line 6) +* automatic data imports: WIN32. (line 191) +* back end: BFD. (line 6) +* BASE (MRI): MRI. (line 54) +* BE8: ARM. (line 28) +* BFD canonical format: Canonical format. (line 11) +* BFD requirements: BFD. (line 16) +* big-endian objects: Options. (line 248) +* binary input format: Options. (line 134) +* BLOCK(EXP): Builtin Functions. (line 77) +* bug criteria: Bug Criteria. (line 6) +* bug reports: Bug Reporting. (line 6) +* bugs in ld: Reporting Bugs. (line 6) +* BYTE(EXPRESSION): Output Section Data. + (line 6) +* C++ constructors, arranging in link: Output Section Keywords. + (line 19) +* CHIP (MRI): MRI. (line 58) +* COLLECT_NO_DEMANGLE: Environment. (line 29) +* combining symbols, warnings on: Options. (line 1394) +* command files: Scripts. (line 6) +* command line: Options. (line 6) +* common allocation: Options. (line 168) +* common allocation in linker script: Miscellaneous Commands. + (line 20) +* common symbol placement: Input Section Common. + (line 6) +* COMMONPAGESIZE: Symbolic Constants. (line 13) +* compatibility, MRI: Options. (line 158) +* CONSTANT: Symbolic Constants. (line 6) +* constants in linker scripts: Constants. (line 6) +* constraints on output sections: Output Section Constraint. + (line 6) +* constructors: Options. (line 583) +* CONSTRUCTORS: Output Section Keywords. + (line 19) +* constructors, arranging in link: Output Section Keywords. + (line 19) +* Cortex-A53 erratum 835769 workaround: ARM. (line 174) +* Cortex-A8 erratum workaround: ARM. (line 165) +* crash of linker: Bug Criteria. (line 9) +* CREATE_OBJECT_SYMBOLS: Output Section Keywords. + (line 9) +* creating a DEF file: WIN32. (line 158) +* cross reference table: Options. (line 888) +* cross references: Miscellaneous Commands. + (line 56) +* current output location: Location Counter. (line 6) +* data: Output Section Data. + (line 6) +* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions. + (line 82) +* DATA_SEGMENT_END(EXP): Builtin Functions. (line 103) +* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 109) +* dbx: Options. (line 1309) +* DEF files, creating: Options. (line 1801) +* default emulation: Environment. (line 21) +* default input format: Environment. (line 9) +* DEFINED(SYMBOL): Builtin Functions. (line 122) +* deleting local symbols: Options. (line 608) +* demangling, default: Environment. (line 29) +* demangling, from command line: Options. (line 930) +* direct linking to a dll: WIN32. (line 239) +* discarding sections: Output Section Discarding. + (line 6) +* discontinuous memory: MEMORY. (line 6) +* DLLs, creating: Options. (line 1809) +* DLLs, linking to: Options. (line 1833) +* dot: Location Counter. (line 6) +* dot inside sections: Location Counter. (line 36) +* dot outside sections: Location Counter. (line 66) +* dynamic linker, from command line: Options. (line 943) +* dynamic symbol table: Options. (line 221) +* ELF program headers: PHDRS. (line 6) +* emulation: Options. (line 392) +* emulation, default: Environment. (line 21) +* END (MRI): MRI. (line 62) +* endianness: Options. (line 248) +* entry point: Entry Point. (line 6) +* entry point, from command line: Options. (line 187) +* entry point, thumb: ARM. (line 17) +* ENTRY(SYMBOL): Entry Point. (line 6) +* error on valid input: Bug Criteria. (line 12) +* example of linker script: Simple Example. (line 6) +* exporting DLL symbols: WIN32. (line 19) +* expression evaluation order: Evaluation. (line 6) +* expression sections: Expression Section. (line 6) +* expression, absolute: Builtin Functions. (line 10) +* expressions: Expressions. (line 6) +* EXTERN: Miscellaneous Commands. + (line 13) +* fatal signal: Bug Criteria. (line 9) +* file name wildcard patterns: Input Section Wildcards. + (line 6) +* FILEHDR: PHDRS. (line 62) +* filename symbols: Output Section Keywords. + (line 9) +* fill pattern, entire section: Output Section Fill. + (line 6) +* FILL(EXPRESSION): Output Section Data. + (line 39) +* finalization function: Options. (line 300) +* first input file: File Commands. (line 84) +* first instruction: Entry Point. (line 6) +* FIX_V4BX: ARM. (line 49) +* FIX_V4BX_INTERWORKING: ARM. (line 62) +* FORCE_COMMON_ALLOCATION: Miscellaneous Commands. + (line 20) +* forcing input section alignment: Forced Input Alignment. + (line 6) +* forcing output section alignment: Forced Output Alignment. + (line 6) +* forcing the creation of dynamic sections: Options. (line 506) +* FORMAT (MRI): MRI. (line 66) +* functions in expressions: Builtin Functions. (line 6) +* garbage collection <1>: Options. (line 965) +* garbage collection <2>: Input Section Keep. (line 6) +* garbage collection: Options. (line 987) +* generating optimized output: Options. (line 466) +* GNU linker: Overview. (line 6) +* GNUTARGET: Environment. (line 9) +* GROUP(FILES): File Commands. (line 49) +* grouping input files: File Commands. (line 49) +* groups of archives: Options. (line 731) +* H8/300 support: H8/300. (line 6) +* header size: Builtin Functions. (line 190) +* heap size: Options. (line 1736) +* help: Options. (line 1002) +* HIDDEN: HIDDEN. (line 6) +* holes: Location Counter. (line 12) +* holes, filling: Output Section Data. + (line 39) +* HPPA multiple sub-space stubs: HPPA ELF32. (line 6) +* HPPA stub grouping: HPPA ELF32. (line 12) +* i960 support: i960. (line 6) +* image base: Options. (line 1743) +* implicit linker scripts: Implicit Linker Scripts. + (line 6) +* import libraries: WIN32. (line 10) +* INCLUDE FILENAME: File Commands. (line 9) +* including a linker script: File Commands. (line 9) +* including an entire archive: Options. (line 1507) +* incremental link: Options. (line 325) +* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. + (line 25) +* initialization function: Options. (line 328) +* initialized data in ROM: Output Section LMA. (line 39) +* input file format in linker script: Format Commands. (line 35) +* input filename symbols: Output Section Keywords. + (line 9) +* input files in linker scripts: File Commands. (line 19) +* input files, displaying: Options. (line 549) +* input format: Options. (line 134) +* input object files in linker scripts: File Commands. (line 19) +* input section alignment: Forced Input Alignment. + (line 6) +* input section basics: Input Section Basics. + (line 6) +* input section wildcards: Input Section Wildcards. + (line 6) +* input sections: Input Section. (line 6) +* INPUT(FILES): File Commands. (line 19) +* INSERT: Miscellaneous Commands. + (line 30) +* insert user script into default script: Miscellaneous Commands. + (line 30) +* integer notation: Constants. (line 6) +* integer suffixes: Constants. (line 15) +* internal object-file format: Canonical format. (line 11) +* invalid input: Bug Criteria. (line 14) +* K and M integer suffixes: Constants. (line 15) +* KEEP: Input Section Keep. (line 6) +* l =: MEMORY. (line 74) +* lazy evaluation: Evaluation. (line 6) +* ld bugs, reporting: Bug Reporting. (line 6) +* LD_FEATURE(STRING): Miscellaneous Commands. + (line 78) +* ldata segment origin, cmd line: Options. (line 1342) +* LDEMULATION: Environment. (line 21) +* len =: MEMORY. (line 74) +* LENGTH =: MEMORY. (line 74) +* LENGTH(MEMORY): Builtin Functions. (line 139) +* library search path in linker script: File Commands. (line 76) +* link map: Options. (line 402) +* link-time runtime library search path: Options. (line 1196) +* linker crash: Bug Criteria. (line 9) +* linker script concepts: Basic Script Concepts. + (line 6) +* linker script example: Simple Example. (line 6) +* linker script file commands: File Commands. (line 6) +* linker script format: Script Format. (line 6) +* linker script input object files: File Commands. (line 19) +* linker script simple commands: Simple Commands. (line 6) +* linker scripts: Scripts. (line 6) +* LIST (MRI): MRI. (line 77) +* little-endian objects: Options. (line 251) +* LOAD (MRI): MRI. (line 84) +* load address: Output Section LMA. (line 6) +* LOADADDR(SECTION): Builtin Functions. (line 142) +* loading, preventing: Output Section Type. + (line 22) +* local symbols, deleting: Options. (line 612) +* location counter: Location Counter. (line 6) +* LOG2CEIL(EXP): Builtin Functions. (line 146) +* LONG(EXPRESSION): Output Section Data. + (line 6) +* M and K integer suffixes: Constants. (line 15) +* M68HC11 and 68HC12 support: M68HC11/68HC12. (line 6) +* machine architecture: Miscellaneous Commands. + (line 72) +* machine dependencies: Machine Dependent. (line 6) +* mapping input sections to output sections: Input Section. (line 6) +* MAX: Builtin Functions. (line 149) +* MAXPAGESIZE: Symbolic Constants. (line 10) +* MEMORY: MEMORY. (line 6) +* memory region attributes: MEMORY. (line 34) +* memory regions: MEMORY. (line 6) +* memory regions and sections: Output Section Region. + (line 6) +* memory usage: Options. (line 1014) +* Merging exidx entries: ARM. (line 182) +* MIN: Builtin Functions. (line 152) +* MIPS microMIPS instruction choice selection: MIPS. (line 6) +* Motorola 68K GOT generation: M68K. (line 6) +* MRI compatibility: MRI. (line 6) +* MSP430 extra sections: MSP430. (line 11) +* NAME (MRI): MRI. (line 90) +* name, section: Output Section Name. + (line 6) +* names: Symbols. (line 6) +* naming the output file: Options. (line 460) +* NEXT(EXP): Builtin Functions. (line 156) +* Nios II call relaxation: Nios II. (line 6) +* NMAGIC: Options. (line 439) +* NO_ENUM_SIZE_WARNING: ARM. (line 120) +* NO_WCHAR_SIZE_WARNING: ARM. (line 127) +* NOCROSSREFS(SECTIONS): Miscellaneous Commands. + (line 56) +* NOLOAD: Output Section Type. + (line 22) +* not enough room for program headers: Builtin Functions. (line 195) +* o =: MEMORY. (line 69) +* objdump -i: BFD. (line 6) +* object file management: BFD. (line 6) +* object files: Options. (line 29) +* object formats available: BFD. (line 6) +* object size: Options. (line 309) +* OMAGIC: Options. (line 445) +* ONLY_IF_RO: Output Section Constraint. + (line 6) +* ONLY_IF_RW: Output Section Constraint. + (line 6) +* opening object files: BFD outline. (line 6) +* operators for arithmetic: Operators. (line 6) +* options: Options. (line 6) +* ORDER (MRI): MRI. (line 95) +* org =: MEMORY. (line 69) +* ORIGIN =: MEMORY. (line 69) +* ORIGIN(MEMORY): Builtin Functions. (line 162) +* orphan: Orphan Sections. (line 6) +* output file after errors: Options. (line 1093) +* output file format in linker script: Format Commands. (line 10) +* output file name in linker script: File Commands. (line 66) +* output format: Options. (line 996) +* output section alignment: Forced Output Alignment. + (line 6) +* output section attributes: Output Section Attributes. + (line 6) +* output section data: Output Section Data. + (line 6) +* OUTPUT(FILENAME): File Commands. (line 66) +* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands. + (line 72) +* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10) +* OVERLAY: Overlay Description. + (line 6) +* overlays: Overlay Description. + (line 6) +* partial link: Options. (line 510) +* PE import table prefixing: ARM. (line 23) +* PHDRS: PHDRS. (line 62) +* PIC_VENEER: ARM. (line 133) +* pop state governing input file handling: Options. (line 494) +* position independent executables: Options. (line 1120) +* PowerPC ELF32 options: PowerPC ELF32. (line 16) +* PowerPC GOT: PowerPC ELF32. (line 33) +* PowerPC long branches: PowerPC ELF32. (line 6) +* PowerPC PLT: PowerPC ELF32. (line 16) +* PowerPC stub symbols: PowerPC ELF32. (line 47) +* PowerPC TLS optimization: PowerPC ELF32. (line 51) +* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) +* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) +* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74) +* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48) +* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54) +* PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 104) +* PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 110) +* PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 96) +* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) +* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) +* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43) +* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60) +* PowerPC64 TOC sorting: PowerPC64 ELF64. (line 86) +* precedence in expressions: Operators. (line 6) +* prevent unnecessary loading: Output Section Type. + (line 22) +* program headers: PHDRS. (line 6) +* program headers and sections: Output Section Phdr. + (line 6) +* program headers, not enough room: Builtin Functions. (line 195) +* program segments: PHDRS. (line 6) +* PROVIDE: PROVIDE. (line 6) +* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6) +* PUBLIC (MRI): MRI. (line 103) +* push state governing input file handling: Options. (line 476) +* QUAD(EXPRESSION): Output Section Data. + (line 6) +* quoted symbol names: Symbols. (line 6) +* read-only text: Options. (line 439) +* read/write from cmd line: Options. (line 445) +* region alias: REGION_ALIAS. (line 6) +* region names: REGION_ALIAS. (line 6) +* REGION_ALIAS(ALIAS, REGION): REGION_ALIAS. (line 6) +* regions of memory: MEMORY. (line 6) +* relative expressions: Expression Section. (line 6) +* relaxing addressing modes: Options. (line 1134) +* relaxing on H8/300: H8/300. (line 9) +* relaxing on i960: i960. (line 31) +* relaxing on M68HC11: M68HC11/68HC12. (line 12) +* relaxing on NDS32: NDS32. (line 6) +* relaxing on Xtensa: Xtensa. (line 27) +* relocatable and absolute symbols: Expression Section. (line 6) +* relocatable output: Options. (line 510) +* removing sections: Output Section Discarding. + (line 6) +* reporting bugs in ld: Reporting Bugs. (line 6) +* requirements for BFD: BFD. (line 16) +* retain relocations in final executable: Options. (line 497) +* retaining specified symbols: Options. (line 1160) +* rodata segment origin, cmd line: Options. (line 1336) +* ROM initialized data: Output Section LMA. (line 39) +* round up expression: Builtin Functions. (line 38) +* round up location counter: Builtin Functions. (line 38) +* runtime library name: Options. (line 316) +* runtime library search path: Options. (line 1174) +* runtime pseudo-relocation: WIN32. (line 217) +* scaled integers: Constants. (line 15) +* scommon section: Input Section Common. + (line 20) +* script files: Options. (line 553) +* scripts: Scripts. (line 6) +* search directory, from cmd line: Options. (line 367) +* search path in linker script: File Commands. (line 76) +* SEARCH_DIR(PATH): File Commands. (line 76) +* SECT (MRI): MRI. (line 109) +* section address: Output Section Address. + (line 6) +* section address in expression: Builtin Functions. (line 17) +* section alignment: Builtin Functions. (line 64) +* section alignment, warnings on: Options. (line 1485) +* section data: Output Section Data. + (line 6) +* section fill pattern: Output Section Fill. + (line 6) +* section load address: Output Section LMA. (line 6) +* section load address in expression: Builtin Functions. (line 142) +* section name: Output Section Name. + (line 6) +* section name wildcard patterns: Input Section Wildcards. + (line 6) +* section size: Builtin Functions. (line 174) +* section, assigning to memory region: Output Section Region. + (line 6) +* section, assigning to program header: Output Section Phdr. + (line 6) +* SECTIONS: SECTIONS. (line 6) +* sections, discarding: Output Section Discarding. + (line 6) +* segment origins, cmd line: Options. (line 1325) +* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 165) +* segments, ELF: PHDRS. (line 6) +* shared libraries: Options. (line 1253) +* SHORT(EXPRESSION): Output Section Data. + (line 6) +* SIZEOF(SECTION): Builtin Functions. (line 174) +* SIZEOF_HEADERS: Builtin Functions. (line 190) +* small common symbols: Input Section Common. + (line 20) +* SORT: Input Section Wildcards. + (line 65) +* SORT_BY_ALIGNMENT: Input Section Wildcards. + (line 54) +* SORT_BY_INIT_PRIORITY: Input Section Wildcards. + (line 60) +* SORT_BY_NAME: Input Section Wildcards. + (line 46) +* SORT_NONE: Input Section Wildcards. + (line 106) +* SPU: SPU ELF. (line 29) +* SPU ELF options: SPU ELF. (line 6) +* SPU extra overlay stubs: SPU ELF. (line 19) +* SPU local store size: SPU ELF. (line 24) +* SPU overlay stub symbols: SPU ELF. (line 15) +* SPU overlays: SPU ELF. (line 9) +* SPU plugins: SPU ELF. (line 6) +* SQUAD(EXPRESSION): Output Section Data. + (line 6) +* stack size: Options. (line 1991) +* standard Unix system: Options. (line 7) +* start of execution: Entry Point. (line 6) +* STARTUP(FILENAME): File Commands. (line 84) +* strip all symbols: Options. (line 540) +* strip debugger symbols: Options. (line 544) +* stripping all but some symbols: Options. (line 1160) +* STUB_GROUP_SIZE: ARM. (line 138) +* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. + (line 6) +* suffixes for integers: Constants. (line 15) +* symbol defaults: Builtin Functions. (line 122) +* symbol definition, scripts: Assignments. (line 6) +* symbol names: Symbols. (line 6) +* symbol tracing: Options. (line 618) +* symbol versions: VERSION. (line 6) +* symbol-only input: Options. (line 529) +* symbolic constants: Symbolic Constants. (line 6) +* symbols, from command line: Options. (line 917) +* symbols, relocatable and absolute: Expression Section. (line 6) +* symbols, retaining selectively: Options. (line 1160) +* synthesizing linker: Options. (line 1134) +* synthesizing on H8/300: H8/300. (line 14) +* TARGET(BFDNAME): Format Commands. (line 35) +* TARGET1: ARM. (line 32) +* TARGET2: ARM. (line 37) +* text segment origin, cmd line: Options. (line 1332) +* thumb entry point: ARM. (line 17) +* TI COFF versions: TI COFF. (line 6) +* traditional format: Options. (line 1304) +* trampoline generation on M68HC11: M68HC11/68HC12. (line 31) +* trampoline generation on M68HC12: M68HC11/68HC12. (line 31) +* unallocated address, next: Builtin Functions. (line 156) +* undefined symbol: Options. (line 575) +* undefined symbol in linker script: Miscellaneous Commands. + (line 13) +* undefined symbols, warnings on: Options. (line 1481) +* uninitialized data placement: Input Section Common. + (line 6) +* unspecified memory: Output Section Data. + (line 39) +* usage: Options. (line 1002) +* USE_BLX: ARM. (line 74) +* using a DEF file: WIN32. (line 57) +* using auto-export functionality: WIN32. (line 22) +* Using decorations: WIN32. (line 162) +* variables, defining: Assignments. (line 6) +* verbose[=NUMBER]: Options. (line 1375) +* version: Options. (line 602) +* version script: VERSION. (line 6) +* version script, symbol versions: Options. (line 1383) +* VERSION {script text}: VERSION. (line 6) +* versions of symbols: VERSION. (line 6) +* VFP11_DENORM_FIX: ARM. (line 83) +* warnings, on combining symbols: Options. (line 1394) +* warnings, on section alignment: Options. (line 1485) +* warnings, on undefined symbols: Options. (line 1481) +* weak externals: WIN32. (line 407) +* what is this?: Overview. (line 6) +* wildcard file name patterns: Input Section Wildcards. + (line 6) +* Xtensa options: Xtensa. (line 56) +* Xtensa processors: Xtensa. (line 6) + + + +Tag Table: +Node: Top710 +Node: Overview1493 +Node: Invocation2607 +Node: Options3015 +Node: Environment98821 +Node: Scripts100581 +Node: Basic Script Concepts102315 +Node: Script Format105023 +Node: Simple Example105886 +Node: Simple Commands108982 +Node: Entry Point109488 +Node: File Commands110421 +Node: Format Commands114541 +Node: REGION_ALIAS116497 +Node: Miscellaneous Commands121329 +Node: Assignments124937 +Node: Simple Assignments125448 +Node: HIDDEN127183 +Node: PROVIDE127813 +Node: PROVIDE_HIDDEN129006 +Node: Source Code Reference129250 +Node: SECTIONS132832 +Node: Output Section Description134723 +Node: Output Section Name135967 +Node: Output Section Address136843 +Node: Input Section139078 +Node: Input Section Basics139879 +Node: Input Section Wildcards143785 +Node: Input Section Common148992 +Node: Input Section Keep150474 +Node: Input Section Example150964 +Node: Output Section Data151932 +Node: Output Section Keywords154709 +Node: Output Section Discarding158278 +Node: Output Section Attributes159771 +Node: Output Section Type160872 +Node: Output Section LMA161943 +Node: Forced Output Alignment165014 +Node: Forced Input Alignment165444 +Node: Output Section Constraint165833 +Node: Output Section Region166261 +Node: Output Section Phdr166694 +Node: Output Section Fill167358 +Node: Overlay Description168500 +Node: MEMORY172946 +Node: PHDRS177281 +Node: VERSION182535 +Node: Expressions190628 +Node: Constants191557 +Node: Symbolic Constants192432 +Node: Symbols192983 +Node: Orphan Sections193730 +Node: Location Counter194895 +Node: Operators199331 +Node: Evaluation200253 +Node: Expression Section201617 +Node: Builtin Functions205481 +Node: Implicit Linker Scripts213677 +Node: Machine Dependent214452 +Node: H8/300215576 +Node: i960217638 +Node: M68HC11/68HC12219334 +Node: ARM220776 +Node: HPPA ELF32229814 +Node: M68K231437 +Node: MIPS232346 +Node: MMIX232870 +Node: MSP430234035 +Node: NDS32235075 +Node: Nios II236041 +Node: PowerPC ELF32237357 +Node: PowerPC64 ELF64240188 +Node: SPU ELF246422 +Node: TI COFF249054 +Node: WIN32249580 +Node: Xtensa269706 +Node: BFD272671 +Node: BFD outline274126 +Node: BFD information loss275412 +Node: Canonical format277929 +Node: Reporting Bugs282286 +Node: Bug Criteria282980 +Node: Bug Reporting283679 +Node: MRI290718 +Node: GNU Free Documentation License295361 +Node: LD Index320517 + +End Tag Table diff --git a/ld/ldgram.c b/ld/ldgram.c new file mode 100644 index 00000000000..a5581f14a68 --- /dev/null +++ b/ld/ldgram.c @@ -0,0 +1,4728 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INT = 258, + NAME = 259, + LNAME = 260, + OREQ = 261, + ANDEQ = 262, + RSHIFTEQ = 263, + LSHIFTEQ = 264, + DIVEQ = 265, + MULTEQ = 266, + MINUSEQ = 267, + PLUSEQ = 268, + OROR = 269, + ANDAND = 270, + NE = 271, + EQ = 272, + GE = 273, + LE = 274, + RSHIFT = 275, + LSHIFT = 276, + UNARY = 277, + END = 278, + ALIGN_K = 279, + BLOCK = 280, + BIND = 281, + QUAD = 282, + SQUAD = 283, + LONG = 284, + SHORT = 285, + BYTE = 286, + SECTIONS = 287, + PHDRS = 288, + INSERT_K = 289, + AFTER = 290, + BEFORE = 291, + DATA_SEGMENT_ALIGN = 292, + DATA_SEGMENT_RELRO_END = 293, + DATA_SEGMENT_END = 294, + SORT_BY_NAME = 295, + SORT_BY_ALIGNMENT = 296, + SORT_NONE = 297, + SORT_BY_INIT_PRIORITY = 298, + SIZEOF_HEADERS = 299, + OUTPUT_FORMAT = 300, + FORCE_COMMON_ALLOCATION = 301, + OUTPUT_ARCH = 302, + INHIBIT_COMMON_ALLOCATION = 303, + SEGMENT_START = 304, + INCLUDE = 305, + MEMORY = 306, + REGION_ALIAS = 307, + LD_FEATURE = 308, + NOLOAD = 309, + DSECT = 310, + COPY = 311, + INFO = 312, + OVERLAY = 313, + DEFINED = 314, + TARGET_K = 315, + SEARCH_DIR = 316, + MAP = 317, + ENTRY = 318, + NEXT = 319, + SIZEOF = 320, + ALIGNOF = 321, + ADDR = 322, + LOADADDR = 323, + MAX_K = 324, + MIN_K = 325, + STARTUP = 326, + HLL = 327, + SYSLIB = 328, + FLOAT = 329, + NOFLOAT = 330, + NOCROSSREFS = 331, + ORIGIN = 332, + FILL = 333, + LENGTH = 334, + CREATE_OBJECT_SYMBOLS = 335, + INPUT = 336, + GROUP = 337, + OUTPUT = 338, + CONSTRUCTORS = 339, + ALIGNMOD = 340, + AT = 341, + SUBALIGN = 342, + HIDDEN = 343, + PROVIDE = 344, + PROVIDE_HIDDEN = 345, + AS_NEEDED = 346, + CHIP = 347, + LIST = 348, + SECT = 349, + ABSOLUTE = 350, + LOAD = 351, + NEWLINE = 352, + ENDWORD = 353, + ORDER = 354, + NAMEWORD = 355, + ASSERT_K = 356, + LOG2CEIL = 357, + FORMAT = 358, + PUBLIC = 359, + DEFSYMEND = 360, + BASE = 361, + ALIAS = 362, + TRUNCATE = 363, + REL = 364, + INPUT_SCRIPT = 365, + INPUT_MRI_SCRIPT = 366, + INPUT_DEFSYM = 367, + CASE = 368, + EXTERN = 369, + START = 370, + VERS_TAG = 371, + VERS_IDENTIFIER = 372, + GLOBAL = 373, + LOCAL = 374, + VERSIONK = 375, + INPUT_VERSION_SCRIPT = 376, + KEEP = 377, + ONLY_IF_RO = 378, + ONLY_IF_RW = 379, + SPECIAL = 380, + INPUT_SECTION_FLAGS = 381, + ALIGN_WITH_INPUT = 382, + EXCLUDE_FILE = 383, + CONSTANT = 384, + INPUT_DYNAMIC_LIST = 385 + }; +#endif +/* Tokens. */ +#define INT 258 +#define NAME 259 +#define LNAME 260 +#define OREQ 261 +#define ANDEQ 262 +#define RSHIFTEQ 263 +#define LSHIFTEQ 264 +#define DIVEQ 265 +#define MULTEQ 266 +#define MINUSEQ 267 +#define PLUSEQ 268 +#define OROR 269 +#define ANDAND 270 +#define NE 271 +#define EQ 272 +#define GE 273 +#define LE 274 +#define RSHIFT 275 +#define LSHIFT 276 +#define UNARY 277 +#define END 278 +#define ALIGN_K 279 +#define BLOCK 280 +#define BIND 281 +#define QUAD 282 +#define SQUAD 283 +#define LONG 284 +#define SHORT 285 +#define BYTE 286 +#define SECTIONS 287 +#define PHDRS 288 +#define INSERT_K 289 +#define AFTER 290 +#define BEFORE 291 +#define DATA_SEGMENT_ALIGN 292 +#define DATA_SEGMENT_RELRO_END 293 +#define DATA_SEGMENT_END 294 +#define SORT_BY_NAME 295 +#define SORT_BY_ALIGNMENT 296 +#define SORT_NONE 297 +#define SORT_BY_INIT_PRIORITY 298 +#define SIZEOF_HEADERS 299 +#define OUTPUT_FORMAT 300 +#define FORCE_COMMON_ALLOCATION 301 +#define OUTPUT_ARCH 302 +#define INHIBIT_COMMON_ALLOCATION 303 +#define SEGMENT_START 304 +#define INCLUDE 305 +#define MEMORY 306 +#define REGION_ALIAS 307 +#define LD_FEATURE 308 +#define NOLOAD 309 +#define DSECT 310 +#define COPY 311 +#define INFO 312 +#define OVERLAY 313 +#define DEFINED 314 +#define TARGET_K 315 +#define SEARCH_DIR 316 +#define MAP 317 +#define ENTRY 318 +#define NEXT 319 +#define SIZEOF 320 +#define ALIGNOF 321 +#define ADDR 322 +#define LOADADDR 323 +#define MAX_K 324 +#define MIN_K 325 +#define STARTUP 326 +#define HLL 327 +#define SYSLIB 328 +#define FLOAT 329 +#define NOFLOAT 330 +#define NOCROSSREFS 331 +#define ORIGIN 332 +#define FILL 333 +#define LENGTH 334 +#define CREATE_OBJECT_SYMBOLS 335 +#define INPUT 336 +#define GROUP 337 +#define OUTPUT 338 +#define CONSTRUCTORS 339 +#define ALIGNMOD 340 +#define AT 341 +#define SUBALIGN 342 +#define HIDDEN 343 +#define PROVIDE 344 +#define PROVIDE_HIDDEN 345 +#define AS_NEEDED 346 +#define CHIP 347 +#define LIST 348 +#define SECT 349 +#define ABSOLUTE 350 +#define LOAD 351 +#define NEWLINE 352 +#define ENDWORD 353 +#define ORDER 354 +#define NAMEWORD 355 +#define ASSERT_K 356 +#define LOG2CEIL 357 +#define FORMAT 358 +#define PUBLIC 359 +#define DEFSYMEND 360 +#define BASE 361 +#define ALIAS 362 +#define TRUNCATE 363 +#define REL 364 +#define INPUT_SCRIPT 365 +#define INPUT_MRI_SCRIPT 366 +#define INPUT_DEFSYM 367 +#define CASE 368 +#define EXTERN 369 +#define START 370 +#define VERS_TAG 371 +#define VERS_IDENTIFIER 372 +#define GLOBAL 373 +#define LOCAL 374 +#define VERSIONK 375 +#define INPUT_VERSION_SCRIPT 376 +#define KEEP 377 +#define ONLY_IF_RO 378 +#define ONLY_IF_RW 379 +#define SPECIAL 380 +#define INPUT_SECTION_FLAGS 381 +#define ALIGN_WITH_INPUT 382 +#define EXCLUDE_FILE 383 +#define CONSTANT 384 +#define INPUT_DYNAMIC_LIST 385 + + + + +/* Copy the first part of user declarations. */ +#line 22 "ldgram.y" + +/* + + */ + +#define DONTDECLARE_MALLOC + +#include "sysdep.h" +#include "bfd.h" +#include "bfdlink.h" +#include "ld.h" +#include "ldexp.h" +#include "ldver.h" +#include "ldlang.h" +#include "ldfile.h" +#include "ldemul.h" +#include "ldmisc.h" +#include "ldmain.h" +#include "mri.h" +#include "ldctor.h" +#include "ldlex.h" + +#ifndef YYDEBUG +#define YYDEBUG 1 +#endif + +static enum section_type sectype; +static lang_memory_region_type *region; + +bfd_boolean ldgram_had_keep = FALSE; +char *ldgram_vers_current_lang = NULL; + +#define ERROR_NAME_MAX 20 +static char *error_names[ERROR_NAME_MAX]; +static int error_index; +#define PUSH_ERROR(x) if (error_index < ERROR_NAME_MAX) error_names[error_index] = x; error_index++; +#define POP_ERROR() error_index--; + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 60 "ldgram.y" +{ + bfd_vma integer; + struct big_int + { + bfd_vma integer; + char *str; + } bigint; + fill_type *fill; + char *name; + const char *cname; + struct wildcard_spec wildcard; + struct wildcard_list *wildcard_list; + struct name_list *name_list; + struct flag_info_list *flag_info_list; + struct flag_info *flag_info; + int token; + union etree_union *etree; + struct phdr_info + { + bfd_boolean filehdr; + bfd_boolean phdrs; + union etree_union *at; + union etree_union *flags; + } phdr; + struct lang_nocrossref *nocrossref; + struct lang_output_section_phdr_list *section_phdr; + struct bfd_elf_version_deps *deflist; + struct bfd_elf_version_expr *versyms; + struct bfd_elf_version_tree *versnode; +} +/* Line 193 of yacc.c. */ +#line 426 "ldgram.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 439 "ldgram.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 17 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 1969 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 154 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 131 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 371 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 805 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 385 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 152, 2, 2, 2, 34, 21, 2, + 37, 149, 32, 30, 147, 31, 2, 33, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 16, 148, + 24, 6, 25, 15, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 150, 2, 151, 20, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 58, 19, 59, 153, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 7, 8, 9, 10, 11, 12, 13, 14, 17, + 18, 22, 23, 26, 27, 28, 29, 35, 36, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 9, 12, 15, 18, 20, 21, + 26, 27, 30, 34, 35, 38, 43, 45, 47, 50, + 52, 57, 62, 66, 69, 74, 78, 83, 88, 93, + 98, 103, 106, 109, 112, 117, 122, 125, 128, 131, + 134, 135, 141, 144, 145, 149, 152, 153, 155, 159, + 161, 165, 166, 168, 172, 173, 176, 178, 181, 185, + 186, 189, 192, 193, 195, 197, 199, 201, 203, 205, + 207, 209, 211, 213, 218, 223, 228, 233, 242, 247, + 249, 251, 256, 257, 263, 268, 269, 275, 280, 285, + 289, 293, 300, 305, 306, 309, 311, 315, 318, 320, + 324, 327, 328, 334, 335, 343, 344, 351, 356, 359, + 362, 363, 368, 371, 372, 380, 382, 384, 386, 388, + 394, 399, 404, 409, 417, 425, 433, 441, 450, 455, + 457, 461, 466, 469, 471, 475, 477, 479, 482, 486, + 491, 496, 502, 504, 505, 511, 514, 516, 518, 520, + 525, 527, 532, 537, 538, 547, 548, 554, 557, 559, + 560, 562, 564, 566, 568, 570, 572, 574, 577, 578, + 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, + 602, 606, 613, 620, 627, 629, 630, 635, 637, 638, + 642, 644, 645, 653, 654, 660, 664, 668, 669, 673, + 675, 678, 680, 683, 688, 693, 697, 701, 703, 708, + 712, 713, 715, 717, 718, 721, 725, 726, 729, 732, + 736, 741, 744, 747, 750, 754, 758, 762, 766, 770, + 774, 778, 782, 786, 790, 794, 798, 802, 806, 810, + 814, 820, 824, 828, 833, 835, 837, 842, 847, 852, + 857, 862, 867, 872, 879, 886, 893, 898, 905, 910, + 912, 919, 926, 933, 938, 943, 948, 952, 953, 958, + 959, 964, 965, 967, 968, 973, 974, 976, 978, 980, + 981, 982, 983, 984, 985, 986, 1007, 1008, 1009, 1010, + 1011, 1012, 1031, 1032, 1033, 1041, 1042, 1048, 1050, 1052, + 1054, 1056, 1058, 1062, 1063, 1066, 1070, 1073, 1080, 1091, + 1094, 1096, 1097, 1099, 1102, 1103, 1104, 1108, 1109, 1110, + 1111, 1112, 1124, 1129, 1130, 1133, 1134, 1135, 1142, 1144, + 1145, 1149, 1155, 1156, 1160, 1161, 1164, 1166, 1169, 1174, + 1177, 1178, 1181, 1182, 1188, 1190, 1193, 1198, 1204, 1211, + 1213, 1216, 1217, 1220, 1225, 1230, 1239, 1241, 1243, 1247, + 1251, 1252, 1262, 1263, 1271, 1273, 1277, 1279, 1283, 1285, + 1289, 1290 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 155, 0, -1, 126, 171, -1, 127, 159, -1, 137, + 273, -1, 146, 268, -1, 128, 157, -1, 4, -1, + -1, 158, 4, 6, 228, -1, -1, 160, 161, -1, + 161, 162, 113, -1, -1, 108, 228, -1, 108, 228, + 147, 228, -1, 4, -1, 109, -1, 115, 164, -1, + 114, -1, 120, 4, 6, 228, -1, 120, 4, 147, + 228, -1, 120, 4, 228, -1, 119, 4, -1, 110, + 4, 147, 228, -1, 110, 4, 228, -1, 110, 4, + 6, 228, -1, 38, 4, 6, 228, -1, 38, 4, + 147, 228, -1, 101, 4, 6, 228, -1, 101, 4, + 147, 228, -1, 111, 166, -1, 112, 165, -1, 116, + 4, -1, 123, 4, 147, 4, -1, 123, 4, 147, + 3, -1, 122, 228, -1, 124, 3, -1, 129, 167, + -1, 130, 168, -1, -1, 66, 156, 163, 161, 36, + -1, 131, 4, -1, -1, 164, 147, 4, -1, 164, + 4, -1, -1, 4, -1, 165, 147, 4, -1, 4, + -1, 166, 147, 4, -1, -1, 4, -1, 167, 147, + 4, -1, -1, 169, 170, -1, 4, -1, 170, 4, + -1, 170, 147, 4, -1, -1, 172, 173, -1, 173, + 174, -1, -1, 208, -1, 183, -1, 260, -1, 219, + -1, 220, -1, 222, -1, 224, -1, 185, -1, 275, + -1, 148, -1, 76, 37, 4, 149, -1, 77, 37, + 156, 149, -1, 99, 37, 156, 149, -1, 61, 37, + 4, 149, -1, 61, 37, 4, 147, 4, 147, 4, + 149, -1, 63, 37, 4, 149, -1, 62, -1, 64, + -1, 97, 37, 177, 149, -1, -1, 98, 175, 37, + 177, 149, -1, 78, 37, 156, 149, -1, -1, 66, + 156, 176, 173, 36, -1, 92, 37, 225, 149, -1, + 130, 37, 168, 149, -1, 48, 49, 4, -1, 48, + 50, 4, -1, 68, 37, 4, 147, 4, 149, -1, + 69, 37, 4, 149, -1, -1, 178, 179, -1, 4, + -1, 179, 147, 4, -1, 179, 4, -1, 5, -1, + 179, 147, 5, -1, 179, 5, -1, -1, 107, 37, + 180, 179, 149, -1, -1, 179, 147, 107, 37, 181, + 179, 149, -1, -1, 179, 107, 37, 182, 179, 149, + -1, 46, 58, 184, 59, -1, 184, 235, -1, 184, + 185, -1, -1, 79, 37, 4, 149, -1, 206, 205, + -1, -1, 117, 186, 37, 228, 147, 4, 149, -1, + 4, -1, 32, -1, 15, -1, 187, -1, 144, 37, + 191, 149, 187, -1, 54, 37, 187, 149, -1, 55, + 37, 187, 149, -1, 56, 37, 187, 149, -1, 54, + 37, 55, 37, 187, 149, 149, -1, 54, 37, 54, + 37, 187, 149, 149, -1, 55, 37, 54, 37, 187, + 149, 149, -1, 55, 37, 55, 37, 187, 149, 149, + -1, 54, 37, 144, 37, 191, 149, 187, 149, -1, + 57, 37, 187, 149, -1, 4, -1, 189, 21, 4, + -1, 142, 37, 189, 149, -1, 191, 187, -1, 187, + -1, 192, 207, 188, -1, 188, -1, 4, -1, 190, + 4, -1, 150, 192, 151, -1, 190, 150, 192, 151, + -1, 188, 37, 192, 149, -1, 190, 188, 37, 192, + 149, -1, 193, -1, -1, 138, 37, 195, 193, 149, + -1, 206, 205, -1, 96, -1, 148, -1, 100, -1, + 54, 37, 100, 149, -1, 194, -1, 201, 37, 226, + 149, -1, 94, 37, 202, 149, -1, -1, 117, 197, + 37, 228, 147, 4, 149, 205, -1, -1, 66, 156, + 198, 200, 36, -1, 199, 196, -1, 196, -1, -1, + 199, -1, 41, -1, 42, -1, 43, -1, 44, -1, + 45, -1, 226, -1, 6, 202, -1, -1, 14, -1, + 13, -1, 12, -1, 11, -1, 10, -1, 9, -1, + 8, -1, 7, -1, 148, -1, 147, -1, 4, 6, + 226, -1, 4, 204, 226, -1, 104, 37, 4, 6, + 226, 149, -1, 105, 37, 4, 6, 226, 149, -1, + 106, 37, 4, 6, 226, 149, -1, 147, -1, -1, + 67, 58, 209, 59, -1, 210, -1, -1, 210, 207, + 211, -1, 211, -1, -1, 4, 212, 216, 16, 214, + 207, 215, -1, -1, 66, 156, 213, 209, 36, -1, + 93, 6, 226, -1, 95, 6, 226, -1, -1, 37, + 217, 149, -1, 218, -1, 217, 218, -1, 4, -1, + 152, 4, -1, 87, 37, 156, 149, -1, 88, 37, + 221, 149, -1, 88, 37, 149, -1, 221, 207, 156, + -1, 156, -1, 89, 37, 223, 149, -1, 223, 207, + 156, -1, -1, 90, -1, 91, -1, -1, 4, 225, + -1, 4, 147, 225, -1, -1, 227, 228, -1, 31, + 228, -1, 37, 228, 149, -1, 80, 37, 228, 149, + -1, 152, 228, -1, 30, 228, -1, 153, 228, -1, + 228, 32, 228, -1, 228, 33, 228, -1, 228, 34, + 228, -1, 228, 30, 228, -1, 228, 31, 228, -1, + 228, 29, 228, -1, 228, 28, 228, -1, 228, 23, + 228, -1, 228, 22, 228, -1, 228, 27, 228, -1, + 228, 26, 228, -1, 228, 24, 228, -1, 228, 25, + 228, -1, 228, 21, 228, -1, 228, 20, 228, -1, + 228, 19, 228, -1, 228, 15, 228, 16, 228, -1, + 228, 18, 228, -1, 228, 17, 228, -1, 75, 37, + 4, 149, -1, 3, -1, 60, -1, 82, 37, 4, + 149, -1, 81, 37, 4, 149, -1, 83, 37, 4, + 149, -1, 84, 37, 4, 149, -1, 145, 37, 4, + 149, -1, 111, 37, 228, 149, -1, 38, 37, 228, + 149, -1, 38, 37, 228, 147, 228, 149, -1, 51, + 37, 228, 147, 228, 149, -1, 52, 37, 228, 147, + 228, 149, -1, 53, 37, 228, 149, -1, 65, 37, + 4, 147, 228, 149, -1, 39, 37, 228, 149, -1, + 4, -1, 85, 37, 228, 147, 228, 149, -1, 86, + 37, 228, 147, 228, 149, -1, 117, 37, 228, 147, + 4, 149, -1, 93, 37, 4, 149, -1, 95, 37, + 4, 149, -1, 118, 37, 228, 149, -1, 102, 25, + 4, -1, -1, 102, 37, 228, 149, -1, -1, 38, + 37, 228, 149, -1, -1, 143, -1, -1, 103, 37, + 228, 149, -1, -1, 139, -1, 140, -1, 141, -1, + -1, -1, -1, -1, -1, -1, 4, 236, 251, 230, + 231, 232, 233, 237, 234, 58, 238, 200, 59, 239, + 254, 229, 255, 203, 240, 207, -1, -1, -1, -1, + -1, -1, 74, 241, 252, 253, 230, 233, 242, 58, + 243, 256, 59, 244, 254, 229, 255, 203, 245, 207, + -1, -1, -1, 98, 246, 251, 247, 58, 184, 59, + -1, -1, 66, 156, 248, 184, 36, -1, 70, -1, + 71, -1, 72, -1, 73, -1, 74, -1, 37, 249, + 149, -1, -1, 37, 149, -1, 228, 250, 16, -1, + 250, 16, -1, 40, 37, 228, 149, 250, 16, -1, + 40, 37, 228, 149, 39, 37, 228, 149, 250, 16, + -1, 228, 16, -1, 16, -1, -1, 92, -1, 25, + 4, -1, -1, -1, 255, 16, 4, -1, -1, -1, + -1, -1, 256, 4, 257, 58, 200, 59, 258, 255, + 203, 259, 207, -1, 47, 58, 261, 59, -1, -1, + 261, 262, -1, -1, -1, 4, 263, 265, 266, 264, + 148, -1, 228, -1, -1, 4, 267, 266, -1, 102, + 37, 228, 149, 266, -1, -1, 37, 228, 149, -1, + -1, 269, 270, -1, 271, -1, 270, 271, -1, 58, + 272, 59, 148, -1, 281, 148, -1, -1, 274, 277, + -1, -1, 276, 136, 58, 277, 59, -1, 278, -1, + 277, 278, -1, 58, 280, 59, 148, -1, 132, 58, + 280, 59, 148, -1, 132, 58, 280, 59, 279, 148, + -1, 132, -1, 279, 132, -1, -1, 281, 148, -1, + 134, 16, 281, 148, -1, 135, 16, 281, 148, -1, + 134, 16, 281, 148, 135, 16, 281, 148, -1, 133, + -1, 4, -1, 281, 148, 133, -1, 281, 148, 4, + -1, -1, 281, 148, 130, 4, 58, 282, 281, 284, + 59, -1, -1, 130, 4, 58, 283, 281, 284, 59, + -1, 134, -1, 281, 148, 134, -1, 135, -1, 281, + 148, 135, -1, 130, -1, 281, 148, 130, -1, -1, + 148, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 166, 166, 167, 168, 169, 170, 174, 178, 178, + 188, 188, 201, 202, 206, 207, 208, 211, 214, 215, + 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, + 236, 238, 239, 240, 242, 244, 246, 248, 250, 251, + 253, 252, 256, 258, 262, 263, 264, 268, 270, 274, + 276, 281, 282, 283, 288, 288, 293, 295, 297, 302, + 302, 308, 309, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 326, 328, 330, 333, 335, 337, + 339, 341, 343, 342, 346, 349, 348, 352, 356, 357, + 359, 361, 363, 368, 368, 373, 376, 379, 382, 385, + 388, 392, 391, 397, 396, 402, 401, 409, 413, 414, + 415, 419, 421, 422, 422, 430, 434, 438, 445, 452, + 459, 466, 473, 480, 487, 494, 501, 508, 515, 524, + 542, 563, 576, 585, 596, 605, 616, 625, 634, 638, + 647, 651, 659, 661, 660, 667, 668, 672, 673, 678, + 683, 684, 689, 693, 693, 697, 696, 703, 704, 707, + 709, 713, 715, 717, 719, 721, 726, 733, 735, 739, + 741, 743, 745, 747, 749, 751, 753, 758, 758, 763, + 767, 775, 779, 783, 791, 791, 795, 798, 798, 801, + 802, 807, 806, 812, 811, 818, 826, 834, 835, 839, + 840, 844, 846, 851, 856, 857, 862, 864, 870, 872, + 874, 878, 880, 886, 889, 898, 909, 909, 915, 917, + 919, 921, 923, 925, 928, 930, 932, 934, 936, 938, + 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, + 960, 962, 964, 966, 968, 970, 973, 975, 977, 979, + 981, 983, 985, 987, 989, 991, 993, 995, 1004, 1006, + 1008, 1010, 1012, 1014, 1016, 1018, 1024, 1025, 1029, 1030, + 1034, 1035, 1039, 1040, 1044, 1045, 1049, 1050, 1051, 1052, + 1055, 1060, 1063, 1069, 1071, 1055, 1078, 1080, 1082, 1087, + 1089, 1077, 1099, 1101, 1099, 1107, 1106, 1113, 1114, 1115, + 1116, 1117, 1121, 1122, 1123, 1127, 1128, 1133, 1134, 1139, + 1140, 1145, 1146, 1151, 1153, 1158, 1161, 1174, 1178, 1183, + 1185, 1176, 1193, 1196, 1198, 1202, 1203, 1202, 1212, 1257, + 1260, 1273, 1282, 1285, 1292, 1292, 1304, 1305, 1309, 1313, + 1322, 1322, 1336, 1336, 1346, 1347, 1351, 1355, 1359, 1366, + 1370, 1378, 1381, 1385, 1389, 1393, 1400, 1404, 1408, 1412, + 1417, 1416, 1430, 1429, 1439, 1443, 1447, 1451, 1455, 1459, + 1465, 1467 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "INT", "NAME", "LNAME", "'='", "OREQ", + "ANDEQ", "RSHIFTEQ", "LSHIFTEQ", "DIVEQ", "MULTEQ", "MINUSEQ", "PLUSEQ", + "'?'", "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "NE", "EQ", "'<'", + "'>'", "GE", "LE", "RSHIFT", "LSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", + "UNARY", "END", "'('", "ALIGN_K", "BLOCK", "BIND", "QUAD", "SQUAD", + "LONG", "SHORT", "BYTE", "SECTIONS", "PHDRS", "INSERT_K", "AFTER", + "BEFORE", "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_RELRO_END", + "DATA_SEGMENT_END", "SORT_BY_NAME", "SORT_BY_ALIGNMENT", "SORT_NONE", + "SORT_BY_INIT_PRIORITY", "'{'", "'}'", "SIZEOF_HEADERS", "OUTPUT_FORMAT", + "FORCE_COMMON_ALLOCATION", "OUTPUT_ARCH", "INHIBIT_COMMON_ALLOCATION", + "SEGMENT_START", "INCLUDE", "MEMORY", "REGION_ALIAS", "LD_FEATURE", + "NOLOAD", "DSECT", "COPY", "INFO", "OVERLAY", "DEFINED", "TARGET_K", + "SEARCH_DIR", "MAP", "ENTRY", "NEXT", "SIZEOF", "ALIGNOF", "ADDR", + "LOADADDR", "MAX_K", "MIN_K", "STARTUP", "HLL", "SYSLIB", "FLOAT", + "NOFLOAT", "NOCROSSREFS", "ORIGIN", "FILL", "LENGTH", + "CREATE_OBJECT_SYMBOLS", "INPUT", "GROUP", "OUTPUT", "CONSTRUCTORS", + "ALIGNMOD", "AT", "SUBALIGN", "HIDDEN", "PROVIDE", "PROVIDE_HIDDEN", + "AS_NEEDED", "CHIP", "LIST", "SECT", "ABSOLUTE", "LOAD", "NEWLINE", + "ENDWORD", "ORDER", "NAMEWORD", "ASSERT_K", "LOG2CEIL", "FORMAT", + "PUBLIC", "DEFSYMEND", "BASE", "ALIAS", "TRUNCATE", "REL", + "INPUT_SCRIPT", "INPUT_MRI_SCRIPT", "INPUT_DEFSYM", "CASE", "EXTERN", + "START", "VERS_TAG", "VERS_IDENTIFIER", "GLOBAL", "LOCAL", "VERSIONK", + "INPUT_VERSION_SCRIPT", "KEEP", "ONLY_IF_RO", "ONLY_IF_RW", "SPECIAL", + "INPUT_SECTION_FLAGS", "ALIGN_WITH_INPUT", "EXCLUDE_FILE", "CONSTANT", + "INPUT_DYNAMIC_LIST", "','", "';'", "')'", "'['", "']'", "'!'", "'~'", + "$accept", "file", "filename", "defsym_expr", "@1", "mri_script_file", + "@2", "mri_script_lines", "mri_script_command", "@3", "ordernamelist", + "mri_load_name_list", "mri_abs_name_list", "casesymlist", + "extern_name_list", "@4", "extern_name_list_body", "script_file", "@5", + "ifile_list", "ifile_p1", "@6", "@7", "input_list", "@8", "input_list1", + "@9", "@10", "@11", "sections", "sec_or_group_p1", "statement_anywhere", + "@12", "wildcard_name", "wildcard_spec", "sect_flag_list", "sect_flags", + "exclude_name_list", "file_NAME_list", "input_section_spec_no_keep", + "input_section_spec", "@13", "statement", "@14", "@15", "statement_list", + "statement_list_opt", "length", "fill_exp", "fill_opt", "assign_op", + "end", "assignment", "opt_comma", "memory", "memory_spec_list_opt", + "memory_spec_list", "memory_spec", "@16", "@17", "origin_spec", + "length_spec", "attributes_opt", "attributes_list", "attributes_string", + "startup", "high_level_library", "high_level_library_NAME_list", + "low_level_library", "low_level_library_NAME_list", + "floating_point_support", "nocrossref_list", "mustbe_exp", "@18", "exp", + "memspec_at_opt", "opt_at", "opt_align", "opt_align_with_input", + "opt_subalign", "sect_constraint", "section", "@19", "@20", "@21", "@22", + "@23", "@24", "@25", "@26", "@27", "@28", "@29", "@30", "@31", "type", + "atype", "opt_exp_with_type", "opt_exp_without_type", "opt_nocrossrefs", + "memspec_opt", "phdr_opt", "overlay_section", "@32", "@33", "@34", + "phdrs", "phdr_list", "phdr", "@35", "@36", "phdr_type", + "phdr_qualifiers", "phdr_val", "dynamic_list_file", "@37", + "dynamic_list_nodes", "dynamic_list_node", "dynamic_list_tag", + "version_script_file", "@38", "version", "@39", "vers_nodes", + "vers_node", "verdep", "vers_tag", "vers_defns", "@40", "@41", + "opt_semicolon", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 61, 261, 262, 263, + 264, 265, 266, 267, 268, 63, 58, 269, 270, 124, + 94, 38, 271, 272, 60, 62, 273, 274, 275, 276, + 43, 45, 42, 47, 37, 277, 278, 40, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 123, 125, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 44, 59, 41, + 91, 93, 33, 126 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 154, 155, 155, 155, 155, 155, 156, 158, 157, + 160, 159, 161, 161, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 163, 162, 162, 162, 164, 164, 164, 165, 165, 166, + 166, 167, 167, 167, 169, 168, 170, 170, 170, 172, + 171, 173, 173, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 175, 174, 174, 176, 174, 174, 174, 174, + 174, 174, 174, 178, 177, 179, 179, 179, 179, 179, + 179, 180, 179, 181, 179, 182, 179, 183, 184, 184, + 184, 185, 185, 186, 185, 187, 187, 187, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, + 189, 190, 191, 191, 192, 192, 193, 193, 193, 193, + 193, 193, 194, 195, 194, 196, 196, 196, 196, 196, + 196, 196, 196, 197, 196, 198, 196, 199, 199, 200, + 200, 201, 201, 201, 201, 201, 202, 203, 203, 204, + 204, 204, 204, 204, 204, 204, 204, 205, 205, 206, + 206, 206, 206, 206, 207, 207, 208, 209, 209, 210, + 210, 212, 211, 213, 211, 214, 215, 216, 216, 217, + 217, 218, 218, 219, 220, 220, 221, 221, 222, 223, + 223, 224, 224, 225, 225, 225, 227, 226, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 229, 229, 230, 230, + 231, 231, 232, 232, 233, 233, 234, 234, 234, 234, + 236, 237, 238, 239, 240, 235, 241, 242, 243, 244, + 245, 235, 246, 247, 235, 248, 235, 249, 249, 249, + 249, 249, 250, 250, 250, 251, 251, 251, 251, 252, + 252, 253, 253, 254, 254, 255, 255, 256, 257, 258, + 259, 256, 260, 261, 261, 263, 264, 262, 265, 266, + 266, 266, 267, 267, 269, 268, 270, 270, 271, 272, + 274, 273, 276, 275, 277, 277, 278, 278, 278, 279, + 279, 280, 280, 280, 280, 280, 281, 281, 281, 281, + 282, 281, 283, 281, 281, 281, 281, 281, 281, 281, + 284, 284 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 2, 2, 2, 2, 1, 0, 4, + 0, 2, 3, 0, 2, 4, 1, 1, 2, 1, + 4, 4, 3, 2, 4, 3, 4, 4, 4, 4, + 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, + 0, 5, 2, 0, 3, 2, 0, 1, 3, 1, + 3, 0, 1, 3, 0, 2, 1, 2, 3, 0, + 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 4, 4, 4, 4, 8, 4, 1, + 1, 4, 0, 5, 4, 0, 5, 4, 4, 3, + 3, 6, 4, 0, 2, 1, 3, 2, 1, 3, + 2, 0, 5, 0, 7, 0, 6, 4, 2, 2, + 0, 4, 2, 0, 7, 1, 1, 1, 1, 5, + 4, 4, 4, 7, 7, 7, 7, 8, 4, 1, + 3, 4, 2, 1, 3, 1, 1, 2, 3, 4, + 4, 5, 1, 0, 5, 2, 1, 1, 1, 4, + 1, 4, 4, 0, 8, 0, 5, 2, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 6, 6, 6, 1, 0, 4, 1, 0, 3, + 1, 0, 7, 0, 5, 3, 3, 0, 3, 1, + 2, 1, 2, 4, 4, 3, 3, 1, 4, 3, + 0, 1, 1, 0, 2, 3, 0, 2, 2, 3, + 4, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 3, 3, 4, 1, 1, 4, 4, 4, 4, + 4, 4, 4, 6, 6, 6, 4, 6, 4, 1, + 6, 6, 6, 4, 4, 4, 3, 0, 4, 0, + 4, 0, 1, 0, 4, 0, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 18, 0, 0, 7, 0, 5, 1, 1, 1, + 1, 1, 3, 0, 2, 3, 2, 6, 10, 2, + 1, 0, 1, 2, 0, 0, 3, 0, 0, 0, + 0, 11, 4, 0, 2, 0, 0, 6, 1, 0, + 3, 5, 0, 3, 0, 2, 1, 2, 4, 2, + 0, 2, 0, 5, 1, 2, 4, 5, 6, 1, + 2, 0, 2, 4, 4, 8, 1, 1, 3, 3, + 0, 9, 0, 7, 1, 3, 1, 3, 1, 3, + 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 59, 10, 8, 340, 334, 0, 2, 62, 3, + 13, 6, 0, 4, 0, 5, 0, 1, 60, 11, + 0, 351, 0, 341, 344, 0, 335, 336, 0, 0, + 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 211, 212, 0, + 0, 82, 0, 0, 0, 0, 113, 0, 72, 61, + 64, 70, 0, 63, 66, 67, 68, 69, 65, 71, + 0, 16, 0, 0, 0, 0, 17, 0, 0, 0, + 19, 46, 0, 0, 0, 0, 0, 0, 51, 54, + 0, 0, 0, 357, 368, 356, 364, 366, 0, 0, + 351, 345, 364, 366, 0, 0, 337, 216, 176, 175, + 174, 173, 172, 171, 170, 169, 216, 110, 323, 0, + 0, 0, 0, 7, 85, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 213, 93, 0, 0, 0, + 0, 0, 0, 54, 178, 177, 112, 0, 0, 40, + 0, 244, 259, 0, 0, 0, 0, 0, 0, 0, + 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 0, 49, 31, 47, 32, 18, 33, 23, 0, 36, + 0, 37, 52, 38, 39, 0, 42, 12, 9, 0, + 0, 0, 0, 352, 0, 0, 339, 179, 0, 180, + 0, 0, 89, 90, 0, 0, 62, 191, 0, 0, + 185, 190, 0, 0, 0, 0, 0, 0, 0, 205, + 207, 185, 185, 213, 0, 0, 0, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 222, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 221, 223, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 45, 0, 0, 0, 22, 0, 0, 56, 55, 362, + 0, 0, 346, 359, 369, 358, 365, 367, 0, 338, + 217, 280, 107, 0, 286, 292, 109, 108, 325, 322, + 324, 0, 76, 78, 342, 197, 193, 186, 184, 0, + 0, 92, 73, 74, 84, 111, 203, 204, 0, 208, + 0, 213, 214, 87, 81, 95, 98, 0, 94, 0, + 75, 216, 216, 216, 0, 88, 0, 27, 28, 43, + 29, 30, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 242, 241, 239, 238, 237, 232, + 231, 235, 236, 234, 233, 230, 229, 227, 228, 224, + 225, 226, 15, 26, 24, 50, 48, 44, 20, 21, + 35, 34, 53, 57, 0, 0, 353, 354, 0, 349, + 347, 0, 303, 295, 0, 303, 0, 0, 86, 0, + 0, 188, 189, 0, 206, 209, 215, 101, 97, 100, + 0, 0, 83, 0, 0, 0, 0, 343, 41, 0, + 252, 258, 0, 0, 256, 0, 243, 220, 247, 246, + 248, 249, 0, 0, 263, 264, 251, 0, 265, 250, + 0, 58, 370, 367, 360, 350, 348, 0, 0, 303, + 0, 269, 110, 310, 0, 311, 293, 328, 329, 0, + 201, 0, 0, 199, 0, 0, 91, 0, 105, 96, + 99, 0, 181, 182, 183, 0, 0, 0, 0, 0, + 0, 0, 0, 240, 371, 0, 0, 0, 297, 298, + 299, 300, 301, 304, 0, 0, 0, 0, 306, 0, + 271, 0, 309, 312, 269, 0, 332, 0, 326, 0, + 202, 198, 200, 0, 185, 194, 0, 0, 103, 114, + 253, 254, 255, 257, 260, 261, 262, 363, 0, 370, + 302, 0, 305, 0, 0, 273, 296, 275, 110, 0, + 329, 0, 0, 77, 216, 0, 102, 0, 0, 355, + 0, 303, 0, 0, 272, 275, 0, 287, 0, 0, + 330, 0, 327, 195, 0, 192, 106, 0, 361, 0, + 0, 268, 0, 281, 0, 0, 294, 333, 329, 216, + 104, 0, 307, 270, 279, 0, 288, 331, 196, 0, + 276, 277, 278, 0, 274, 317, 303, 282, 0, 0, + 159, 318, 289, 308, 136, 117, 116, 161, 162, 163, + 164, 165, 0, 0, 0, 0, 0, 0, 146, 148, + 153, 0, 0, 0, 147, 0, 118, 0, 0, 142, + 150, 158, 160, 0, 0, 0, 0, 314, 0, 0, + 0, 0, 155, 216, 0, 143, 0, 0, 115, 0, + 135, 185, 0, 137, 0, 0, 157, 283, 216, 145, + 159, 0, 267, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 159, 0, 166, 0, 0, 129, 0, + 133, 0, 0, 138, 0, 185, 185, 0, 314, 0, + 0, 313, 0, 315, 0, 0, 149, 0, 120, 0, + 0, 121, 122, 128, 0, 152, 0, 115, 0, 0, + 131, 0, 132, 134, 140, 139, 185, 267, 151, 319, + 0, 168, 0, 0, 0, 0, 0, 156, 0, 144, + 130, 119, 141, 315, 315, 266, 216, 0, 290, 0, + 0, 0, 0, 0, 0, 168, 168, 167, 316, 185, + 124, 123, 0, 125, 126, 0, 284, 320, 291, 127, + 154, 185, 185, 285, 321 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 6, 124, 11, 12, 9, 10, 19, 91, 247, + 185, 184, 182, 193, 194, 195, 308, 7, 8, 18, + 59, 137, 216, 235, 236, 358, 507, 588, 557, 60, + 210, 326, 142, 666, 667, 719, 668, 721, 691, 669, + 670, 717, 671, 684, 713, 672, 673, 674, 714, 778, + 116, 146, 62, 724, 63, 219, 220, 221, 335, 441, + 554, 605, 440, 502, 503, 64, 65, 231, 66, 232, + 67, 234, 715, 208, 252, 733, 540, 575, 595, 597, + 633, 327, 432, 624, 640, 728, 801, 434, 615, 635, + 677, 789, 435, 545, 492, 534, 490, 491, 495, 544, + 702, 761, 638, 676, 774, 802, 68, 211, 330, 436, + 582, 498, 548, 580, 15, 16, 26, 27, 104, 13, + 14, 69, 70, 23, 24, 431, 98, 99, 527, 425, + 525 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -656 +static const yytype_int16 yypact[] = +{ + 236, -656, -656, -656, -656, -656, 109, -656, -656, -656, + -656, -656, 114, -656, -16, -656, 84, -656, 927, 1725, + 142, 102, 118, -16, -656, 110, 84, -656, 552, 141, + 183, 87, 210, -656, 228, -656, 156, 219, 249, 261, + 263, 264, 272, 274, 276, 277, 279, -656, -656, 281, + 283, -656, 288, 289, 291, 292, -656, 294, -656, -656, + -656, -656, 107, -656, -656, -656, -656, -656, -656, -656, + 196, -656, 331, 156, 332, 751, -656, 333, 337, 338, + -656, -656, 339, 341, 351, 751, 354, 363, 364, -656, + 365, 257, 751, -656, 373, -656, 367, 375, 320, 233, + 102, -656, -656, -656, 336, 259, -656, -656, -656, -656, + -656, -656, -656, -656, -656, -656, -656, -656, -656, 405, + 409, 411, 412, -656, -656, 63, 413, 414, 418, 156, + 156, 420, 156, 23, -656, 421, -656, 389, 156, 426, + 427, 428, 396, -656, -656, -656, -656, 376, 50, -656, + 75, -656, -656, 751, 751, 751, 398, 399, 400, 402, + 403, -656, 415, 416, 419, 422, 424, 429, 431, 432, + 440, 441, 443, 444, 445, 447, 450, 751, 751, 1534, + 390, -656, 301, -656, 302, 10, -656, -656, 517, 1906, + 304, -656, -656, 311, -656, 459, -656, -656, 1906, 406, + 110, 110, 342, 134, 430, 343, 134, -656, 751, -656, + 306, 35, -656, -656, -52, 346, -656, -656, 156, 437, + 51, -656, 350, 353, 362, 366, 368, 370, 387, -656, + -656, -32, 82, 39, 391, 392, 32, -656, 395, 482, + 493, 494, 751, 401, -16, 751, 751, -656, 751, 751, + -656, -656, 935, 751, 751, 751, 751, 751, 499, 508, + 751, 509, 512, 518, 521, 751, 751, 534, 541, 751, + 751, 751, 545, -656, -656, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 1906, 547, 548, + -656, 549, 751, 751, 1906, 220, 563, -656, 45, -656, + 423, 433, -656, -656, 568, -656, -656, -656, -59, -656, + 1906, 552, -656, 156, -656, -656, -656, -656, -656, -656, + -656, 570, -656, -656, 1003, 487, -656, -656, -656, 63, + 571, -656, -656, -656, -656, -656, -656, -656, 156, -656, + 156, 421, -656, -656, -656, -656, -656, 539, 21, 434, + -656, -656, -656, -656, 1554, -656, -5, 1906, 1906, 1749, + 1906, 1906, -656, 891, 1135, 1574, 1594, 1155, 442, 438, + 1175, 439, 455, 456, 457, 1614, 1634, 458, 460, 1195, + 1665, 1215, 462, 1866, 1746, 1115, 1921, 1935, 1248, 692, + 692, 319, 319, 319, 319, 369, 369, 247, 247, -656, + -656, -656, 1906, 1906, 1906, -656, -656, -656, 1906, 1906, + -656, -656, -656, -656, 574, 110, 189, 134, 522, -656, + -656, -25, 592, -656, 676, 592, 751, 461, -656, 3, + 575, 63, -656, 464, -656, -656, -656, -656, -656, -656, + 542, 46, -656, 465, 466, 467, 586, -656, -656, 751, + -656, -656, 751, 751, -656, 751, -656, -656, -656, -656, + -656, -656, 751, 751, -656, -656, -656, 590, -656, -656, + 751, -656, 469, 602, -656, -656, -656, 222, 582, 1777, + 604, 519, -656, -656, 1886, 532, -656, 1906, 24, 621, + -656, 622, 2, -656, 540, 591, -656, 32, -656, -656, + -656, 599, -656, -656, -656, 488, 1235, 1268, 1288, 1308, + 1328, 1348, 489, 1906, 134, 580, 110, 110, -656, -656, + -656, -656, -656, -656, 491, 751, 12, 626, -656, 609, + 610, 340, -656, -656, 519, 589, 612, 613, -656, 502, + -656, -656, -656, 647, 507, -656, 17, 32, -656, -656, + -656, -656, -656, -656, -656, -656, -656, -656, 510, 469, + -656, 1368, -656, 751, 618, 513, -656, 556, -656, 751, + 24, 751, 515, -656, -656, 565, -656, 28, 32, 134, + 606, 38, 1401, 751, -656, 556, 624, -656, 388, 1421, + -656, 1441, -656, -656, 660, -656, -656, 40, -656, 631, + 655, -656, 1461, -656, 751, 623, -656, -656, 24, -656, + -656, 751, -656, -656, 144, 1481, -656, -656, -656, 1501, + -656, -656, -656, 625, -656, -656, 645, -656, 37, 668, + 834, -656, -656, -656, 520, -656, -656, -656, -656, -656, + -656, -656, 649, 651, 652, 653, 156, 654, -656, -656, + -656, 656, 657, 658, -656, 44, -656, 659, 15, -656, + -656, -656, 834, 638, 661, 107, 641, 675, 234, 76, + 130, 130, -656, -656, 664, -656, 698, 130, -656, 667, + -656, 83, 44, 671, 44, 674, -656, -656, -656, -656, + 834, 701, 628, 694, 695, 584, 697, 593, 702, 703, + 594, 597, 598, 834, 600, -656, 751, 8, -656, -8, + -656, 14, 89, -656, 44, 101, 95, 44, 675, 601, + 679, -656, 687, -656, 130, 130, -656, 130, -656, 130, + 130, -656, -656, -656, 699, -656, 1685, 603, 614, 744, + -656, 130, -656, -656, -656, -656, 123, 628, -656, -656, + 749, 116, 615, 616, 20, 617, 619, -656, 763, -656, + -656, -656, -656, -656, -656, -656, -656, 766, -656, 627, + 629, 130, 630, 634, 635, 116, 116, -656, -656, 507, + -656, -656, 636, -656, -656, 107, -656, -656, -656, -656, + -656, 507, 507, -656, -656 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -656, -656, -72, -656, -656, -656, -656, 525, -656, -656, + -656, -656, -656, -656, 632, -656, -656, -656, -656, 557, + -656, -656, -656, 537, -656, -469, -656, -656, -656, -656, + -458, -13, -656, 120, -338, -656, -656, 43, -602, 60, + -656, -656, 119, -656, -656, -656, -645, -656, 16, -523, + -656, -655, -401, -216, -656, 345, -656, 470, -656, -656, + -656, -656, -656, -656, 293, -656, -656, -656, -656, -656, + -656, -202, -105, -656, -75, 48, 252, -656, -656, 202, + -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, -656, -656, -656, -656, -480, 371, -656, -656, + 80, -483, -656, -656, -656, -656, -656, -656, -656, -656, + -656, -656, -506, -656, -656, -656, -656, 784, -656, -656, + -656, -656, -656, 569, -20, -656, 712, -17, -656, -656, + 245 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -343 +static const yytype_int16 yytable[] = +{ + 179, 149, 207, 101, 339, 61, 500, 500, 105, 537, + 189, 209, 747, 749, 300, 348, 350, 198, 688, 693, + 699, 448, 449, 645, 688, 448, 449, 123, 546, 645, + 645, 352, 448, 449, 541, 645, 355, 356, 556, 328, + 646, 641, 21, 233, 448, 449, 646, 646, 688, 423, + 509, 510, 646, 21, 457, 730, 245, 225, 226, 645, + 228, 230, 689, 653, 654, 655, 238, 217, 744, 689, + 653, 654, 655, 429, 600, 536, 646, 609, 250, 251, + 688, 248, 528, 529, 530, 531, 532, -187, 587, 430, + 725, 645, 726, 688, 329, 331, 642, 332, 689, 653, + 654, 655, 273, 274, 645, 297, 93, 485, 646, 17, + -187, 610, 627, 304, 93, 338, 22, 347, 20, 607, + 598, 646, 776, 486, 450, 756, 547, 22, 450, 218, + 708, 709, 777, 320, 688, 450, 119, 120, 313, 357, + 800, 750, 25, 703, 704, 645, 336, 450, 92, 446, + 662, 551, 663, 511, 501, 501, 639, 301, 665, 663, + 123, 533, 646, 751, 451, 694, 586, 364, 451, 781, + 367, 368, 229, 370, 371, 451, 100, 606, 373, 374, + 375, 376, 377, 310, 311, 380, 351, 451, 663, 620, + 385, 386, 424, 313, 389, 390, 391, 246, 338, 117, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 249, 420, 421, 151, 152, 418, 419, 338, + 338, 349, 94, 706, 723, 95, 96, 97, 688, 675, + 94, 118, 338, 95, 102, 103, 755, 121, 338, 645, + 754, 433, 153, 154, 144, 145, 453, 454, 455, 155, + 156, 157, 796, 797, 314, 122, 646, 315, 316, 317, + 338, 675, 772, 158, 159, 160, 444, 125, 445, 291, + 292, 293, 161, 630, 631, 632, 126, 162, 703, 704, + 785, 786, 528, 529, 530, 531, 532, 163, 127, 675, + 128, 129, 164, 165, 166, 167, 168, 169, 170, 130, + 321, 131, 675, 132, 133, 171, 134, 172, 135, 314, + 136, 61, 315, 316, 483, 138, 139, 690, 140, 141, + 695, 143, 147, 173, 705, 148, 150, 180, 585, 174, + 175, 181, 183, 186, 321, 187, 101, 287, 288, 289, + 290, 291, 292, 293, 690, 188, 690, 489, 190, 494, + 489, 497, 1, 2, 3, 322, 191, 176, 192, 196, + 197, 533, 323, 4, 177, 178, 576, 199, 706, 202, + 324, 203, 5, 200, 516, 43, 753, 517, 518, 690, + 519, 201, 321, 151, 152, 205, 295, 520, 521, 289, + 290, 291, 292, 293, 325, 523, 323, 206, 482, 212, + 53, 54, 55, 213, 324, 214, 215, 222, 223, 43, + 153, 154, 224, 56, 227, 233, 237, 155, 156, 157, + 239, 240, 241, 242, 244, 253, 254, 255, 325, 256, + 257, 158, 159, 160, 53, 54, 55, 616, 298, 299, + 161, 305, 258, 259, 323, 162, 260, 56, 306, 261, + 571, 262, 324, 307, 309, 163, 263, 43, 264, 265, + 164, 165, 166, 167, 168, 169, 170, 266, 267, 603, + 268, 269, 270, 171, 271, 172, 325, 272, 361, 318, + 312, 319, 53, 54, 55, 333, 337, 340, 592, 362, + 363, 173, 341, 378, 599, 56, 601, 174, 175, 568, + 569, 342, 379, 381, 628, 343, 382, 344, 612, 345, + 151, 152, 383, 302, 439, 384, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 176, 346, 296, 387, 625, + 353, 354, 177, 178, 360, 388, 629, 153, 154, 392, + 365, 415, 416, 417, 155, 156, 157, -115, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 422, 158, 159, + 160, 426, 428, 798, 437, 443, 447, 161, 481, 508, + 484, 427, 162, 452, 682, 803, 804, 466, 468, 465, + 515, 504, 163, 729, 522, 151, 152, 164, 165, 166, + 167, 168, 169, 170, 469, 470, 471, 474, 499, 475, + 171, 479, 172, 506, 512, 513, 514, 524, 526, 535, + 538, 539, 153, 154, 543, 549, 550, 555, 173, 487, + 156, 157, 488, 553, 174, 175, 558, 559, 566, 567, + 570, 746, 572, 158, 159, 160, 573, 578, 574, 579, + 581, 583, 161, 584, 338, 593, 594, 162, 589, 596, + 604, 614, 176, 602, 303, 608, 619, 163, 621, 177, + 178, 622, 164, 165, 166, 167, 168, 169, 170, 151, + 152, 626, 536, 637, 643, 171, 678, 172, 679, 680, + 681, 683, 493, 685, 686, 687, 692, 697, 698, 700, + 701, 716, 718, 173, 722, 731, 153, 154, -115, 174, + 175, 727, 760, 155, 156, 157, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 158, 159, 160, + 732, 734, 735, 736, 737, 767, 161, 176, 759, 739, + 740, 162, 738, 741, 177, 178, 742, 743, 770, 745, + 758, 163, -136, 775, 151, 152, 164, 165, 166, 167, + 168, 169, 170, 769, 779, 780, 782, 784, 783, 171, + 788, 172, 369, 334, 359, 243, 790, 748, 791, 793, + 764, 153, 154, 794, 795, 799, 505, 173, 155, 156, + 157, 696, 787, 174, 175, 552, 577, 613, 707, 710, + 711, 712, 158, 159, 160, 773, 496, 720, 757, 442, + 106, 161, 204, 366, 590, 0, 162, 0, 0, 0, + 0, 176, 0, 0, 0, 0, 163, 0, 177, 178, + 0, 164, 165, 166, 167, 168, 169, 170, 644, 0, + 0, 752, 707, 0, 171, 0, 172, 0, 0, 645, + 0, 0, 0, 0, 762, 763, 0, 720, 0, 765, + 766, 0, 173, 0, 0, 0, 646, 0, 174, 175, + 0, 771, 0, 0, 0, 647, 648, 649, 650, 651, + 0, 0, 0, 0, 752, 0, 0, 0, 652, 653, + 654, 655, 0, 0, 0, 0, 176, 0, 0, 0, + 656, 792, 0, 177, 178, 0, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 0, 0, 657, 0, + 658, 28, 0, 0, 659, 0, 0, 0, 53, 54, + 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 660, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 0, 0, 661, 29, 30, 31, 662, 0, 663, 0, + 0, 0, 664, 0, 665, 0, 0, 0, 32, 33, + 34, 35, 0, 36, 37, 38, 39, 0, 0, 0, + 0, 0, 0, 40, 41, 42, 43, 28, 0, 0, + 0, 0, 0, 0, 44, 45, 46, 47, 48, 49, + 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, + 0, 53, 54, 55, 0, 0, 0, 0, 459, 438, + 460, 0, 0, 0, 56, 0, 0, 0, 0, 29, + 30, 31, 0, 0, 0, 0, 0, 57, 0, 0, + 0, 0, 0, -342, 32, 33, 34, 35, 0, 36, + 37, 38, 39, 0, 0, 58, 0, 0, 0, 40, + 41, 42, 43, 0, 372, 0, 0, 0, 0, 0, + 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, + 50, 51, 52, 0, 0, 0, 0, 53, 54, 55, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 57, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 58, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 461, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 464, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 467, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 476, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 478, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 275, 560, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 275, 561, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 275, 562, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 275, 563, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 275, 564, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 275, 565, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 275, 591, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, + 611, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 275, + 617, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 275, + 618, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 275, + 623, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 275, + 634, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 275, + 636, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 294, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 275, 456, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 0, 462, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 472, 0, 72, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 473, 0, 0, 0, 458, 0, 72, 0, 0, + 0, 73, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 477, 0, 536, 73, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, + 0, 0, 768, 75, 76, 77, 78, 79, -43, 80, + 81, 82, 0, 0, 83, 84, 0, 85, 86, 87, + 74, 0, 0, 0, 88, 89, 90, 75, 76, 77, + 78, 79, 0, 80, 81, 82, 0, 0, 83, 84, + 0, 85, 86, 87, 0, 0, 0, 0, 88, 89, + 90, 275, 480, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 275, 542, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293 +}; + +static const yytype_int16 yycheck[] = +{ + 75, 73, 107, 23, 220, 18, 4, 4, 25, 489, + 85, 116, 4, 21, 4, 231, 232, 92, 4, 4, + 675, 4, 5, 15, 4, 4, 5, 4, 4, 15, + 15, 233, 4, 5, 492, 15, 4, 5, 507, 4, + 32, 4, 58, 4, 4, 5, 32, 32, 4, 4, + 4, 5, 32, 58, 59, 700, 6, 129, 130, 15, + 132, 133, 54, 55, 56, 57, 138, 4, 713, 54, + 55, 56, 57, 132, 580, 37, 32, 39, 153, 154, + 4, 6, 70, 71, 72, 73, 74, 36, 557, 148, + 692, 15, 694, 4, 59, 147, 59, 149, 54, 55, + 56, 57, 177, 178, 15, 180, 4, 132, 32, 0, + 59, 591, 618, 188, 4, 147, 132, 149, 4, 588, + 578, 32, 6, 148, 107, 727, 102, 132, 107, 66, + 54, 55, 16, 208, 4, 107, 49, 50, 4, 107, + 795, 149, 58, 54, 55, 15, 218, 107, 6, 351, + 142, 149, 144, 107, 152, 152, 636, 147, 150, 144, + 4, 149, 32, 149, 147, 150, 149, 242, 147, 149, + 245, 246, 149, 248, 249, 147, 58, 149, 253, 254, + 255, 256, 257, 200, 201, 260, 147, 147, 144, 149, + 265, 266, 147, 4, 269, 270, 271, 147, 147, 58, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 147, 3, 4, 3, 4, 302, 303, 147, + 147, 149, 130, 144, 151, 133, 134, 135, 4, 640, + 130, 58, 147, 133, 134, 135, 151, 37, 147, 15, + 149, 323, 30, 31, 147, 148, 361, 362, 363, 37, + 38, 39, 785, 786, 130, 37, 32, 133, 134, 135, + 147, 672, 149, 51, 52, 53, 348, 58, 350, 32, + 33, 34, 60, 139, 140, 141, 37, 65, 54, 55, + 773, 774, 70, 71, 72, 73, 74, 75, 37, 700, + 37, 37, 80, 81, 82, 83, 84, 85, 86, 37, + 4, 37, 713, 37, 37, 93, 37, 95, 37, 130, + 37, 334, 133, 134, 135, 37, 37, 665, 37, 37, + 668, 37, 136, 111, 100, 4, 4, 4, 554, 117, + 118, 4, 4, 4, 4, 4, 366, 28, 29, 30, + 31, 32, 33, 34, 692, 4, 694, 432, 4, 434, + 435, 436, 126, 127, 128, 59, 3, 145, 4, 4, + 113, 149, 66, 137, 152, 153, 36, 4, 144, 59, + 74, 148, 146, 16, 459, 79, 724, 462, 463, 727, + 465, 16, 4, 3, 4, 59, 6, 472, 473, 30, + 31, 32, 33, 34, 98, 480, 66, 148, 425, 4, + 104, 105, 106, 4, 74, 4, 4, 4, 4, 79, + 30, 31, 4, 117, 4, 4, 37, 37, 38, 39, + 4, 4, 4, 37, 58, 37, 37, 37, 98, 37, + 37, 51, 52, 53, 104, 105, 106, 59, 147, 147, + 60, 147, 37, 37, 66, 65, 37, 117, 147, 37, + 535, 37, 74, 4, 58, 75, 37, 79, 37, 37, + 80, 81, 82, 83, 84, 85, 86, 37, 37, 584, + 37, 37, 37, 93, 37, 95, 98, 37, 6, 59, + 148, 148, 104, 105, 106, 149, 59, 147, 573, 6, + 6, 111, 149, 4, 579, 117, 581, 117, 118, 526, + 527, 149, 4, 4, 619, 149, 4, 149, 593, 149, + 3, 4, 4, 6, 37, 4, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 145, 149, 147, 4, 614, + 149, 149, 152, 153, 149, 4, 621, 30, 31, 4, + 149, 4, 4, 4, 37, 38, 39, 37, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 4, 51, 52, + 53, 148, 4, 789, 4, 4, 37, 60, 4, 37, + 58, 148, 65, 149, 656, 801, 802, 149, 149, 147, + 4, 16, 75, 698, 4, 3, 4, 80, 81, 82, + 83, 84, 85, 86, 149, 149, 149, 149, 147, 149, + 93, 149, 95, 149, 149, 149, 149, 148, 16, 37, + 16, 102, 30, 31, 92, 4, 4, 36, 111, 37, + 38, 39, 40, 93, 117, 118, 37, 149, 149, 59, + 149, 716, 16, 51, 52, 53, 37, 58, 38, 37, + 37, 149, 60, 6, 147, 37, 143, 65, 148, 103, + 95, 37, 145, 148, 147, 59, 6, 75, 37, 152, + 153, 16, 80, 81, 82, 83, 84, 85, 86, 3, + 4, 58, 37, 58, 16, 93, 37, 95, 37, 37, + 37, 37, 16, 37, 37, 37, 37, 59, 37, 58, + 25, 37, 4, 111, 37, 4, 30, 31, 37, 117, + 118, 37, 25, 37, 38, 39, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 51, 52, 53, + 102, 37, 37, 149, 37, 36, 60, 145, 59, 37, + 37, 65, 149, 149, 152, 153, 149, 149, 4, 149, + 149, 75, 149, 4, 3, 4, 80, 81, 82, 83, + 84, 85, 86, 149, 149, 149, 149, 4, 149, 93, + 4, 95, 247, 216, 237, 143, 149, 717, 149, 149, + 737, 30, 31, 149, 149, 149, 441, 111, 37, 38, + 39, 672, 776, 117, 118, 502, 544, 595, 678, 679, + 680, 681, 51, 52, 53, 757, 435, 687, 728, 339, + 26, 60, 100, 244, 569, -1, 65, -1, -1, -1, + -1, 145, -1, -1, -1, -1, 75, -1, 152, 153, + -1, 80, 81, 82, 83, 84, 85, 86, 4, -1, + -1, 721, 722, -1, 93, -1, 95, -1, -1, 15, + -1, -1, -1, -1, 734, 735, -1, 737, -1, 739, + 740, -1, 111, -1, -1, -1, 32, -1, 117, 118, + -1, 751, -1, -1, -1, 41, 42, 43, 44, 45, + -1, -1, -1, -1, 764, -1, -1, -1, 54, 55, + 56, 57, -1, -1, -1, -1, 145, -1, -1, -1, + 66, 781, -1, 152, 153, -1, 15, -1, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, 94, -1, + 96, 4, -1, -1, 100, -1, -1, -1, 104, 105, + 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, 117, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, -1, 138, 46, 47, 48, 142, -1, 144, -1, + -1, -1, 148, -1, 150, -1, -1, -1, 61, 62, + 63, 64, -1, 66, 67, 68, 69, -1, -1, -1, + -1, -1, -1, 76, 77, 78, 79, 4, -1, -1, + -1, -1, -1, -1, 87, 88, 89, 90, 91, 92, + -1, -1, -1, -1, 97, 98, 99, -1, -1, -1, + -1, 104, 105, 106, -1, -1, -1, -1, 147, 36, + 149, -1, -1, -1, 117, -1, -1, -1, -1, 46, + 47, 48, -1, -1, -1, -1, -1, 130, -1, -1, + -1, -1, -1, 136, 61, 62, 63, 64, -1, 66, + 67, 68, 69, -1, -1, 148, -1, -1, -1, 76, + 77, 78, 79, -1, 149, -1, -1, -1, -1, -1, + 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, + 97, 98, 99, -1, -1, -1, -1, 104, 105, 106, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 130, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 148, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 15, 149, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 15, 149, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 15, + 149, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, 147, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 147, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 147, -1, -1, -1, -1, -1, -1, -1, 4, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 147, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, + -1, 147, -1, 38, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 147, -1, -1, -1, 36, -1, 38, -1, -1, + -1, 66, 15, -1, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 147, -1, 37, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, + -1, -1, 147, 108, 109, 110, 111, 112, 113, 114, + 115, 116, -1, -1, 119, 120, -1, 122, 123, 124, + 101, -1, -1, -1, 129, 130, 131, 108, 109, 110, + 111, 112, -1, 114, 115, 116, -1, -1, 119, 120, + -1, 122, 123, 124, -1, -1, -1, -1, 129, 130, + 131, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 15, -1, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 126, 127, 128, 137, 146, 155, 171, 172, 159, + 160, 157, 158, 273, 274, 268, 269, 0, 173, 161, + 4, 58, 132, 277, 278, 58, 270, 271, 4, 46, + 47, 48, 61, 62, 63, 64, 66, 67, 68, 69, + 76, 77, 78, 79, 87, 88, 89, 90, 91, 92, + 97, 98, 99, 104, 105, 106, 117, 130, 148, 174, + 183, 185, 206, 208, 219, 220, 222, 224, 260, 275, + 276, 4, 38, 66, 101, 108, 109, 110, 111, 112, + 114, 115, 116, 119, 120, 122, 123, 124, 129, 130, + 131, 162, 6, 4, 130, 133, 134, 135, 280, 281, + 58, 278, 134, 135, 272, 281, 271, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 204, 58, 58, 49, + 50, 37, 37, 4, 156, 58, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 175, 37, 37, + 37, 37, 186, 37, 147, 148, 205, 136, 4, 156, + 4, 3, 4, 30, 31, 37, 38, 39, 51, 52, + 53, 60, 65, 75, 80, 81, 82, 83, 84, 85, + 86, 93, 95, 111, 117, 118, 145, 152, 153, 228, + 4, 4, 166, 4, 165, 164, 4, 4, 4, 228, + 4, 3, 4, 167, 168, 169, 4, 113, 228, 4, + 16, 16, 59, 148, 280, 59, 148, 226, 227, 226, + 184, 261, 4, 4, 4, 4, 176, 4, 66, 209, + 210, 211, 4, 4, 4, 156, 156, 4, 156, 149, + 156, 221, 223, 4, 225, 177, 178, 37, 156, 4, + 4, 4, 37, 168, 58, 6, 147, 163, 6, 147, + 228, 228, 228, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 228, 228, 15, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 147, 6, 147, 228, 147, 147, + 4, 147, 6, 147, 228, 147, 147, 4, 170, 58, + 281, 281, 148, 4, 130, 133, 134, 135, 59, 148, + 228, 4, 59, 66, 74, 98, 185, 235, 4, 59, + 262, 147, 149, 149, 173, 212, 156, 59, 147, 207, + 147, 149, 149, 149, 149, 149, 149, 149, 207, 149, + 207, 147, 225, 149, 149, 4, 5, 107, 179, 177, + 149, 6, 6, 6, 228, 149, 277, 228, 228, 161, + 228, 228, 149, 228, 228, 228, 228, 228, 4, 4, + 228, 4, 4, 4, 4, 228, 228, 4, 4, 228, + 228, 228, 4, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 4, 4, 4, 228, 228, + 3, 4, 4, 4, 147, 283, 148, 148, 4, 132, + 148, 279, 236, 156, 241, 246, 263, 4, 36, 37, + 216, 213, 211, 4, 156, 156, 225, 37, 4, 5, + 107, 147, 149, 226, 226, 226, 147, 59, 36, 147, + 149, 149, 147, 147, 149, 147, 149, 149, 149, 149, + 149, 149, 147, 147, 149, 149, 149, 147, 149, 149, + 16, 4, 281, 135, 58, 132, 148, 37, 40, 228, + 250, 251, 248, 16, 228, 252, 251, 228, 265, 147, + 4, 152, 217, 218, 16, 209, 149, 180, 37, 4, + 5, 107, 149, 149, 149, 4, 228, 228, 228, 228, + 228, 228, 4, 228, 148, 284, 16, 282, 70, 71, + 72, 73, 74, 149, 249, 37, 37, 250, 16, 102, + 230, 184, 16, 92, 253, 247, 4, 102, 266, 4, + 4, 149, 218, 93, 214, 36, 179, 182, 37, 149, + 149, 149, 149, 149, 149, 149, 149, 59, 281, 281, + 149, 228, 16, 37, 38, 231, 36, 230, 58, 37, + 267, 37, 264, 149, 6, 207, 149, 179, 181, 148, + 284, 149, 228, 37, 143, 232, 103, 233, 184, 228, + 266, 228, 148, 226, 95, 215, 149, 179, 59, 39, + 250, 149, 228, 233, 37, 242, 59, 149, 149, 6, + 149, 37, 16, 149, 237, 228, 58, 266, 226, 228, + 139, 140, 141, 234, 149, 243, 149, 58, 256, 250, + 238, 4, 59, 16, 4, 15, 32, 41, 42, 43, + 44, 45, 54, 55, 56, 57, 66, 94, 96, 100, + 117, 138, 142, 144, 148, 150, 187, 188, 190, 193, + 194, 196, 199, 200, 201, 206, 257, 244, 37, 37, + 37, 37, 156, 37, 197, 37, 37, 37, 4, 54, + 188, 192, 37, 4, 150, 188, 196, 59, 37, 205, + 58, 25, 254, 54, 55, 100, 144, 187, 54, 55, + 187, 187, 187, 198, 202, 226, 37, 195, 4, 189, + 187, 191, 37, 151, 207, 192, 192, 37, 239, 226, + 200, 4, 102, 229, 37, 37, 149, 37, 149, 37, + 37, 149, 149, 149, 200, 149, 228, 4, 193, 21, + 149, 149, 187, 188, 149, 151, 192, 254, 149, 59, + 25, 255, 187, 187, 191, 187, 187, 36, 147, 149, + 4, 187, 149, 229, 258, 4, 6, 16, 203, 149, + 149, 149, 149, 149, 4, 255, 255, 202, 4, 245, + 149, 149, 187, 149, 149, 149, 203, 203, 207, 149, + 205, 240, 259, 207, 207 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 8: +#line 178 "ldgram.y" + { ldlex_defsym(); } + break; + + case 9: +#line 180 "ldgram.y" + { + ldlex_popstate(); + lang_add_assignment (exp_defsym ((yyvsp[(2) - (4)].name), (yyvsp[(4) - (4)].etree))); + } + break; + + case 10: +#line 188 "ldgram.y" + { + ldlex_mri_script (); + PUSH_ERROR (_("MRI style script")); + } + break; + + case 11: +#line 193 "ldgram.y" + { + ldlex_popstate (); + mri_draw_tree (); + POP_ERROR (); + } + break; + + case 16: +#line 208 "ldgram.y" + { + einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),(yyvsp[(1) - (1)].name)); + } + break; + + case 17: +#line 211 "ldgram.y" + { + config.map_filename = "-"; + } + break; + + case 20: +#line 217 "ldgram.y" + { mri_public((yyvsp[(2) - (4)].name), (yyvsp[(4) - (4)].etree)); } + break; + + case 21: +#line 219 "ldgram.y" + { mri_public((yyvsp[(2) - (4)].name), (yyvsp[(4) - (4)].etree)); } + break; + + case 22: +#line 221 "ldgram.y" + { mri_public((yyvsp[(2) - (3)].name), (yyvsp[(3) - (3)].etree)); } + break; + + case 23: +#line 223 "ldgram.y" + { mri_format((yyvsp[(2) - (2)].name)); } + break; + + case 24: +#line 225 "ldgram.y" + { mri_output_section((yyvsp[(2) - (4)].name), (yyvsp[(4) - (4)].etree));} + break; + + case 25: +#line 227 "ldgram.y" + { mri_output_section((yyvsp[(2) - (3)].name), (yyvsp[(3) - (3)].etree));} + break; + + case 26: +#line 229 "ldgram.y" + { mri_output_section((yyvsp[(2) - (4)].name), (yyvsp[(4) - (4)].etree));} + break; + + case 27: +#line 231 "ldgram.y" + { mri_align((yyvsp[(2) - (4)].name),(yyvsp[(4) - (4)].etree)); } + break; + + case 28: +#line 233 "ldgram.y" + { mri_align((yyvsp[(2) - (4)].name),(yyvsp[(4) - (4)].etree)); } + break; + + case 29: +#line 235 "ldgram.y" + { mri_alignmod((yyvsp[(2) - (4)].name),(yyvsp[(4) - (4)].etree)); } + break; + + case 30: +#line 237 "ldgram.y" + { mri_alignmod((yyvsp[(2) - (4)].name),(yyvsp[(4) - (4)].etree)); } + break; + + case 33: +#line 241 "ldgram.y" + { mri_name((yyvsp[(2) - (2)].name)); } + break; + + case 34: +#line 243 "ldgram.y" + { mri_alias((yyvsp[(2) - (4)].name),(yyvsp[(4) - (4)].name),0);} + break; + + case 35: +#line 245 "ldgram.y" + { mri_alias ((yyvsp[(2) - (4)].name), 0, (int) (yyvsp[(4) - (4)].bigint).integer); } + break; + + case 36: +#line 247 "ldgram.y" + { mri_base((yyvsp[(2) - (2)].etree)); } + break; + + case 37: +#line 249 "ldgram.y" + { mri_truncate ((unsigned int) (yyvsp[(2) - (2)].bigint).integer); } + break; + + case 40: +#line 253 "ldgram.y" + { ldlex_script (); ldfile_open_command_file((yyvsp[(2) - (2)].name)); } + break; + + case 41: +#line 255 "ldgram.y" + { ldlex_popstate (); } + break; + + case 42: +#line 257 "ldgram.y" + { lang_add_entry ((yyvsp[(2) - (2)].name), FALSE); } + break; + + case 44: +#line 262 "ldgram.y" + { mri_order((yyvsp[(3) - (3)].name)); } + break; + + case 45: +#line 263 "ldgram.y" + { mri_order((yyvsp[(2) - (2)].name)); } + break; + + case 47: +#line 269 "ldgram.y" + { mri_load((yyvsp[(1) - (1)].name)); } + break; + + case 48: +#line 270 "ldgram.y" + { mri_load((yyvsp[(3) - (3)].name)); } + break; + + case 49: +#line 275 "ldgram.y" + { mri_only_load((yyvsp[(1) - (1)].name)); } + break; + + case 50: +#line 277 "ldgram.y" + { mri_only_load((yyvsp[(3) - (3)].name)); } + break; + + case 51: +#line 281 "ldgram.y" + { (yyval.name) = NULL; } + break; + + case 54: +#line 288 "ldgram.y" + { ldlex_expression (); } + break; + + case 55: +#line 290 "ldgram.y" + { ldlex_popstate (); } + break; + + case 56: +#line 294 "ldgram.y" + { ldlang_add_undef ((yyvsp[(1) - (1)].name), FALSE); } + break; + + case 57: +#line 296 "ldgram.y" + { ldlang_add_undef ((yyvsp[(2) - (2)].name), FALSE); } + break; + + case 58: +#line 298 "ldgram.y" + { ldlang_add_undef ((yyvsp[(3) - (3)].name), FALSE); } + break; + + case 59: +#line 302 "ldgram.y" + { ldlex_both(); } + break; + + case 60: +#line 304 "ldgram.y" + { ldlex_popstate(); } + break; + + case 73: +#line 325 "ldgram.y" + { lang_add_target((yyvsp[(3) - (4)].name)); } + break; + + case 74: +#line 327 "ldgram.y" + { ldfile_add_library_path ((yyvsp[(3) - (4)].name), FALSE); } + break; + + case 75: +#line 329 "ldgram.y" + { lang_add_output((yyvsp[(3) - (4)].name), 1); } + break; + + case 76: +#line 331 "ldgram.y" + { lang_add_output_format ((yyvsp[(3) - (4)].name), (char *) NULL, + (char *) NULL, 1); } + break; + + case 77: +#line 334 "ldgram.y" + { lang_add_output_format ((yyvsp[(3) - (8)].name), (yyvsp[(5) - (8)].name), (yyvsp[(7) - (8)].name), 1); } + break; + + case 78: +#line 336 "ldgram.y" + { ldfile_set_output_arch ((yyvsp[(3) - (4)].name), bfd_arch_unknown); } + break; + + case 79: +#line 338 "ldgram.y" + { command_line.force_common_definition = TRUE ; } + break; + + case 80: +#line 340 "ldgram.y" + { command_line.inhibit_common_definition = TRUE ; } + break; + + case 82: +#line 343 "ldgram.y" + { lang_enter_group (); } + break; + + case 83: +#line 345 "ldgram.y" + { lang_leave_group (); } + break; + + case 84: +#line 347 "ldgram.y" + { lang_add_map((yyvsp[(3) - (4)].name)); } + break; + + case 85: +#line 349 "ldgram.y" + { ldlex_script (); ldfile_open_command_file((yyvsp[(2) - (2)].name)); } + break; + + case 86: +#line 351 "ldgram.y" + { ldlex_popstate (); } + break; + + case 87: +#line 353 "ldgram.y" + { + lang_add_nocrossref ((yyvsp[(3) - (4)].nocrossref)); + } + break; + + case 89: +#line 358 "ldgram.y" + { lang_add_insert ((yyvsp[(3) - (3)].name), 0); } + break; + + case 90: +#line 360 "ldgram.y" + { lang_add_insert ((yyvsp[(3) - (3)].name), 1); } + break; + + case 91: +#line 362 "ldgram.y" + { lang_memory_region_alias ((yyvsp[(3) - (6)].name), (yyvsp[(5) - (6)].name)); } + break; + + case 92: +#line 364 "ldgram.y" + { lang_ld_feature ((yyvsp[(3) - (4)].name)); } + break; + + case 93: +#line 368 "ldgram.y" + { ldlex_inputlist(); } + break; + + case 94: +#line 370 "ldgram.y" + { ldlex_popstate(); } + break; + + case 95: +#line 374 "ldgram.y" + { lang_add_input_file((yyvsp[(1) - (1)].name),lang_input_file_is_search_file_enum, + (char *)NULL); } + break; + + case 96: +#line 377 "ldgram.y" + { lang_add_input_file((yyvsp[(3) - (3)].name),lang_input_file_is_search_file_enum, + (char *)NULL); } + break; + + case 97: +#line 380 "ldgram.y" + { lang_add_input_file((yyvsp[(2) - (2)].name),lang_input_file_is_search_file_enum, + (char *)NULL); } + break; + + case 98: +#line 383 "ldgram.y" + { lang_add_input_file((yyvsp[(1) - (1)].name),lang_input_file_is_l_enum, + (char *)NULL); } + break; + + case 99: +#line 386 "ldgram.y" + { lang_add_input_file((yyvsp[(3) - (3)].name),lang_input_file_is_l_enum, + (char *)NULL); } + break; + + case 100: +#line 389 "ldgram.y" + { lang_add_input_file((yyvsp[(2) - (2)].name),lang_input_file_is_l_enum, + (char *)NULL); } + break; + + case 101: +#line 392 "ldgram.y" + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } + break; + + case 102: +#line 395 "ldgram.y" + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[(3) - (5)].integer); } + break; + + case 103: +#line 397 "ldgram.y" + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } + break; + + case 104: +#line 400 "ldgram.y" + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[(5) - (7)].integer); } + break; + + case 105: +#line 402 "ldgram.y" + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } + break; + + case 106: +#line 405 "ldgram.y" + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[(4) - (6)].integer); } + break; + + case 111: +#line 420 "ldgram.y" + { lang_add_entry ((yyvsp[(3) - (4)].name), FALSE); } + break; + + case 113: +#line 422 "ldgram.y" + {ldlex_expression ();} + break; + + case 114: +#line 423 "ldgram.y" + { ldlex_popstate (); + lang_add_assignment (exp_assert ((yyvsp[(4) - (7)].etree), (yyvsp[(6) - (7)].name))); } + break; + + case 115: +#line 431 "ldgram.y" + { + (yyval.cname) = (yyvsp[(1) - (1)].name); + } + break; + + case 116: +#line 435 "ldgram.y" + { + (yyval.cname) = "*"; + } + break; + + case 117: +#line 439 "ldgram.y" + { + (yyval.cname) = "?"; + } + break; + + case 118: +#line 446 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(1) - (1)].cname); + (yyval.wildcard).sorted = none; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 119: +#line 453 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(5) - (5)].cname); + (yyval.wildcard).sorted = none; + (yyval.wildcard).exclude_name_list = (yyvsp[(3) - (5)].name_list); + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 120: +#line 460 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(3) - (4)].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 121: +#line 467 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(3) - (4)].cname); + (yyval.wildcard).sorted = by_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 122: +#line 474 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(3) - (4)].cname); + (yyval.wildcard).sorted = by_none; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 123: +#line 481 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(5) - (7)].cname); + (yyval.wildcard).sorted = by_name_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 124: +#line 488 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(5) - (7)].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 125: +#line 495 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(5) - (7)].cname); + (yyval.wildcard).sorted = by_alignment_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 126: +#line 502 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(5) - (7)].cname); + (yyval.wildcard).sorted = by_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 127: +#line 509 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(7) - (8)].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = (yyvsp[(5) - (8)].name_list); + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 128: +#line 516 "ldgram.y" + { + (yyval.wildcard).name = (yyvsp[(3) - (4)].cname); + (yyval.wildcard).sorted = by_init_priority; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } + break; + + case 129: +#line 525 "ldgram.y" + { + struct flag_info_list *n; + n = ((struct flag_info_list *) xmalloc (sizeof *n)); + if ((yyvsp[(1) - (1)].name)[0] == '!') + { + n->with = without_flags; + n->name = &(yyvsp[(1) - (1)].name)[1]; + } + else + { + n->with = with_flags; + n->name = (yyvsp[(1) - (1)].name); + } + n->valid = FALSE; + n->next = NULL; + (yyval.flag_info_list) = n; + } + break; + + case 130: +#line 543 "ldgram.y" + { + struct flag_info_list *n; + n = ((struct flag_info_list *) xmalloc (sizeof *n)); + if ((yyvsp[(3) - (3)].name)[0] == '!') + { + n->with = without_flags; + n->name = &(yyvsp[(3) - (3)].name)[1]; + } + else + { + n->with = with_flags; + n->name = (yyvsp[(3) - (3)].name); + } + n->valid = FALSE; + n->next = (yyvsp[(1) - (3)].flag_info_list); + (yyval.flag_info_list) = n; + } + break; + + case 131: +#line 564 "ldgram.y" + { + struct flag_info *n; + n = ((struct flag_info *) xmalloc (sizeof *n)); + n->flag_list = (yyvsp[(3) - (4)].flag_info_list); + n->flags_initialized = FALSE; + n->not_with_flags = 0; + n->only_with_flags = 0; + (yyval.flag_info) = n; + } + break; + + case 132: +#line 577 "ldgram.y" + { + struct name_list *tmp; + tmp = (struct name_list *) xmalloc (sizeof *tmp); + tmp->name = (yyvsp[(2) - (2)].cname); + tmp->next = (yyvsp[(1) - (2)].name_list); + (yyval.name_list) = tmp; + } + break; + + case 133: +#line 586 "ldgram.y" + { + struct name_list *tmp; + tmp = (struct name_list *) xmalloc (sizeof *tmp); + tmp->name = (yyvsp[(1) - (1)].cname); + tmp->next = NULL; + (yyval.name_list) = tmp; + } + break; + + case 134: +#line 597 "ldgram.y" + { + struct wildcard_list *tmp; + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); + tmp->next = (yyvsp[(1) - (3)].wildcard_list); + tmp->spec = (yyvsp[(3) - (3)].wildcard); + (yyval.wildcard_list) = tmp; + } + break; + + case 135: +#line 606 "ldgram.y" + { + struct wildcard_list *tmp; + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); + tmp->next = NULL; + tmp->spec = (yyvsp[(1) - (1)].wildcard); + (yyval.wildcard_list) = tmp; + } + break; + + case 136: +#line 617 "ldgram.y" + { + struct wildcard_spec tmp; + tmp.name = (yyvsp[(1) - (1)].name); + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = NULL; + lang_add_wild (&tmp, NULL, ldgram_had_keep); + } + break; + + case 137: +#line 626 "ldgram.y" + { + struct wildcard_spec tmp; + tmp.name = (yyvsp[(2) - (2)].name); + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = (yyvsp[(1) - (2)].flag_info); + lang_add_wild (&tmp, NULL, ldgram_had_keep); + } + break; + + case 138: +#line 635 "ldgram.y" + { + lang_add_wild (NULL, (yyvsp[(2) - (3)].wildcard_list), ldgram_had_keep); + } + break; + + case 139: +#line 639 "ldgram.y" + { + struct wildcard_spec tmp; + tmp.name = NULL; + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = (yyvsp[(1) - (4)].flag_info); + lang_add_wild (&tmp, (yyvsp[(3) - (4)].wildcard_list), ldgram_had_keep); + } + break; + + case 140: +#line 648 "ldgram.y" + { + lang_add_wild (&(yyvsp[(1) - (4)].wildcard), (yyvsp[(3) - (4)].wildcard_list), ldgram_had_keep); + } + break; + + case 141: +#line 652 "ldgram.y" + { + (yyvsp[(2) - (5)].wildcard).section_flag_list = (yyvsp[(1) - (5)].flag_info); + lang_add_wild (&(yyvsp[(2) - (5)].wildcard), (yyvsp[(4) - (5)].wildcard_list), ldgram_had_keep); + } + break; + + case 143: +#line 661 "ldgram.y" + { ldgram_had_keep = TRUE; } + break; + + case 144: +#line 663 "ldgram.y" + { ldgram_had_keep = FALSE; } + break; + + case 146: +#line 669 "ldgram.y" + { + lang_add_attribute(lang_object_symbols_statement_enum); + } + break; + + case 148: +#line 674 "ldgram.y" + { + + lang_add_attribute(lang_constructors_statement_enum); + } + break; + + case 149: +#line 679 "ldgram.y" + { + constructors_sorted = TRUE; + lang_add_attribute (lang_constructors_statement_enum); + } + break; + + case 151: +#line 685 "ldgram.y" + { + lang_add_data ((int) (yyvsp[(1) - (4)].integer), (yyvsp[(3) - (4)].etree)); + } + break; + + case 152: +#line 690 "ldgram.y" + { + lang_add_fill ((yyvsp[(3) - (4)].fill)); + } + break; + + case 153: +#line 693 "ldgram.y" + {ldlex_expression ();} + break; + + case 154: +#line 694 "ldgram.y" + { ldlex_popstate (); + lang_add_assignment (exp_assert ((yyvsp[(4) - (8)].etree), (yyvsp[(6) - (8)].name))); } + break; + + case 155: +#line 697 "ldgram.y" + { ldlex_script (); ldfile_open_command_file((yyvsp[(2) - (2)].name)); } + break; + + case 156: +#line 699 "ldgram.y" + { ldlex_popstate (); } + break; + + case 161: +#line 714 "ldgram.y" + { (yyval.integer) = (yyvsp[(1) - (1)].token); } + break; + + case 162: +#line 716 "ldgram.y" + { (yyval.integer) = (yyvsp[(1) - (1)].token); } + break; + + case 163: +#line 718 "ldgram.y" + { (yyval.integer) = (yyvsp[(1) - (1)].token); } + break; + + case 164: +#line 720 "ldgram.y" + { (yyval.integer) = (yyvsp[(1) - (1)].token); } + break; + + case 165: +#line 722 "ldgram.y" + { (yyval.integer) = (yyvsp[(1) - (1)].token); } + break; + + case 166: +#line 727 "ldgram.y" + { + (yyval.fill) = exp_get_fill ((yyvsp[(1) - (1)].etree), 0, "fill value"); + } + break; + + case 167: +#line 734 "ldgram.y" + { (yyval.fill) = (yyvsp[(2) - (2)].fill); } + break; + + case 168: +#line 735 "ldgram.y" + { (yyval.fill) = (fill_type *) 0; } + break; + + case 169: +#line 740 "ldgram.y" + { (yyval.token) = '+'; } + break; + + case 170: +#line 742 "ldgram.y" + { (yyval.token) = '-'; } + break; + + case 171: +#line 744 "ldgram.y" + { (yyval.token) = '*'; } + break; + + case 172: +#line 746 "ldgram.y" + { (yyval.token) = '/'; } + break; + + case 173: +#line 748 "ldgram.y" + { (yyval.token) = LSHIFT; } + break; + + case 174: +#line 750 "ldgram.y" + { (yyval.token) = RSHIFT; } + break; + + case 175: +#line 752 "ldgram.y" + { (yyval.token) = '&'; } + break; + + case 176: +#line 754 "ldgram.y" + { (yyval.token) = '|'; } + break; + + case 179: +#line 764 "ldgram.y" + { + lang_add_assignment (exp_assign ((yyvsp[(1) - (3)].name), (yyvsp[(3) - (3)].etree), FALSE)); + } + break; + + case 180: +#line 768 "ldgram.y" + { + lang_add_assignment (exp_assign ((yyvsp[(1) - (3)].name), + exp_binop ((yyvsp[(2) - (3)].token), + exp_nameop (NAME, + (yyvsp[(1) - (3)].name)), + (yyvsp[(3) - (3)].etree)), FALSE)); + } + break; + + case 181: +#line 776 "ldgram.y" + { + lang_add_assignment (exp_assign ((yyvsp[(3) - (6)].name), (yyvsp[(5) - (6)].etree), TRUE)); + } + break; + + case 182: +#line 780 "ldgram.y" + { + lang_add_assignment (exp_provide ((yyvsp[(3) - (6)].name), (yyvsp[(5) - (6)].etree), FALSE)); + } + break; + + case 183: +#line 784 "ldgram.y" + { + lang_add_assignment (exp_provide ((yyvsp[(3) - (6)].name), (yyvsp[(5) - (6)].etree), TRUE)); + } + break; + + case 191: +#line 807 "ldgram.y" + { region = lang_memory_region_lookup ((yyvsp[(1) - (1)].name), TRUE); } + break; + + case 192: +#line 810 "ldgram.y" + {} + break; + + case 193: +#line 812 "ldgram.y" + { ldlex_script (); ldfile_open_command_file((yyvsp[(2) - (2)].name)); } + break; + + case 194: +#line 814 "ldgram.y" + { ldlex_popstate (); } + break; + + case 195: +#line 819 "ldgram.y" + { + region->origin = exp_get_vma ((yyvsp[(3) - (3)].etree), 0, "origin"); + region->current = region->origin; + } + break; + + case 196: +#line 827 "ldgram.y" + { + region->length = exp_get_vma ((yyvsp[(3) - (3)].etree), -1, "length"); + } + break; + + case 197: +#line 834 "ldgram.y" + { /* dummy action to avoid bison 1.25 error message */ } + break; + + case 201: +#line 845 "ldgram.y" + { lang_set_flags (region, (yyvsp[(1) - (1)].name), 0); } + break; + + case 202: +#line 847 "ldgram.y" + { lang_set_flags (region, (yyvsp[(2) - (2)].name), 1); } + break; + + case 203: +#line 852 "ldgram.y" + { lang_startup((yyvsp[(3) - (4)].name)); } + break; + + case 205: +#line 858 "ldgram.y" + { ldemul_hll((char *)NULL); } + break; + + case 206: +#line 863 "ldgram.y" + { ldemul_hll((yyvsp[(3) - (3)].name)); } + break; + + case 207: +#line 865 "ldgram.y" + { ldemul_hll((yyvsp[(1) - (1)].name)); } + break; + + case 209: +#line 873 "ldgram.y" + { ldemul_syslib((yyvsp[(3) - (3)].name)); } + break; + + case 211: +#line 879 "ldgram.y" + { lang_float(TRUE); } + break; + + case 212: +#line 881 "ldgram.y" + { lang_float(FALSE); } + break; + + case 213: +#line 886 "ldgram.y" + { + (yyval.nocrossref) = NULL; + } + break; + + case 214: +#line 890 "ldgram.y" + { + struct lang_nocrossref *n; + + n = (struct lang_nocrossref *) xmalloc (sizeof *n); + n->name = (yyvsp[(1) - (2)].name); + n->next = (yyvsp[(2) - (2)].nocrossref); + (yyval.nocrossref) = n; + } + break; + + case 215: +#line 899 "ldgram.y" + { + struct lang_nocrossref *n; + + n = (struct lang_nocrossref *) xmalloc (sizeof *n); + n->name = (yyvsp[(1) - (3)].name); + n->next = (yyvsp[(3) - (3)].nocrossref); + (yyval.nocrossref) = n; + } + break; + + case 216: +#line 909 "ldgram.y" + { ldlex_expression (); } + break; + + case 217: +#line 911 "ldgram.y" + { ldlex_popstate (); (yyval.etree)=(yyvsp[(2) - (2)].etree);} + break; + + case 218: +#line 916 "ldgram.y" + { (yyval.etree) = exp_unop ('-', (yyvsp[(2) - (2)].etree)); } + break; + + case 219: +#line 918 "ldgram.y" + { (yyval.etree) = (yyvsp[(2) - (3)].etree); } + break; + + case 220: +#line 920 "ldgram.y" + { (yyval.etree) = exp_unop ((int) (yyvsp[(1) - (4)].integer),(yyvsp[(3) - (4)].etree)); } + break; + + case 221: +#line 922 "ldgram.y" + { (yyval.etree) = exp_unop ('!', (yyvsp[(2) - (2)].etree)); } + break; + + case 222: +#line 924 "ldgram.y" + { (yyval.etree) = (yyvsp[(2) - (2)].etree); } + break; + + case 223: +#line 926 "ldgram.y" + { (yyval.etree) = exp_unop ('~', (yyvsp[(2) - (2)].etree));} + break; + + case 224: +#line 929 "ldgram.y" + { (yyval.etree) = exp_binop ('*', (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 225: +#line 931 "ldgram.y" + { (yyval.etree) = exp_binop ('/', (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 226: +#line 933 "ldgram.y" + { (yyval.etree) = exp_binop ('%', (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 227: +#line 935 "ldgram.y" + { (yyval.etree) = exp_binop ('+', (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 228: +#line 937 "ldgram.y" + { (yyval.etree) = exp_binop ('-' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 229: +#line 939 "ldgram.y" + { (yyval.etree) = exp_binop (LSHIFT , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 230: +#line 941 "ldgram.y" + { (yyval.etree) = exp_binop (RSHIFT , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 231: +#line 943 "ldgram.y" + { (yyval.etree) = exp_binop (EQ , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 232: +#line 945 "ldgram.y" + { (yyval.etree) = exp_binop (NE , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 233: +#line 947 "ldgram.y" + { (yyval.etree) = exp_binop (LE , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 234: +#line 949 "ldgram.y" + { (yyval.etree) = exp_binop (GE , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 235: +#line 951 "ldgram.y" + { (yyval.etree) = exp_binop ('<' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 236: +#line 953 "ldgram.y" + { (yyval.etree) = exp_binop ('>' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 237: +#line 955 "ldgram.y" + { (yyval.etree) = exp_binop ('&' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 238: +#line 957 "ldgram.y" + { (yyval.etree) = exp_binop ('^' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 239: +#line 959 "ldgram.y" + { (yyval.etree) = exp_binop ('|' , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 240: +#line 961 "ldgram.y" + { (yyval.etree) = exp_trinop ('?' , (yyvsp[(1) - (5)].etree), (yyvsp[(3) - (5)].etree), (yyvsp[(5) - (5)].etree)); } + break; + + case 241: +#line 963 "ldgram.y" + { (yyval.etree) = exp_binop (ANDAND , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 242: +#line 965 "ldgram.y" + { (yyval.etree) = exp_binop (OROR , (yyvsp[(1) - (3)].etree), (yyvsp[(3) - (3)].etree)); } + break; + + case 243: +#line 967 "ldgram.y" + { (yyval.etree) = exp_nameop (DEFINED, (yyvsp[(3) - (4)].name)); } + break; + + case 244: +#line 969 "ldgram.y" + { (yyval.etree) = exp_bigintop ((yyvsp[(1) - (1)].bigint).integer, (yyvsp[(1) - (1)].bigint).str); } + break; + + case 245: +#line 971 "ldgram.y" + { (yyval.etree) = exp_nameop (SIZEOF_HEADERS,0); } + break; + + case 246: +#line 974 "ldgram.y" + { (yyval.etree) = exp_nameop (ALIGNOF,(yyvsp[(3) - (4)].name)); } + break; + + case 247: +#line 976 "ldgram.y" + { (yyval.etree) = exp_nameop (SIZEOF,(yyvsp[(3) - (4)].name)); } + break; + + case 248: +#line 978 "ldgram.y" + { (yyval.etree) = exp_nameop (ADDR,(yyvsp[(3) - (4)].name)); } + break; + + case 249: +#line 980 "ldgram.y" + { (yyval.etree) = exp_nameop (LOADADDR,(yyvsp[(3) - (4)].name)); } + break; + + case 250: +#line 982 "ldgram.y" + { (yyval.etree) = exp_nameop (CONSTANT,(yyvsp[(3) - (4)].name)); } + break; + + case 251: +#line 984 "ldgram.y" + { (yyval.etree) = exp_unop (ABSOLUTE, (yyvsp[(3) - (4)].etree)); } + break; + + case 252: +#line 986 "ldgram.y" + { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[(3) - (4)].etree)); } + break; + + case 253: +#line 988 "ldgram.y" + { (yyval.etree) = exp_binop (ALIGN_K,(yyvsp[(3) - (6)].etree),(yyvsp[(5) - (6)].etree)); } + break; + + case 254: +#line 990 "ldgram.y" + { (yyval.etree) = exp_binop (DATA_SEGMENT_ALIGN, (yyvsp[(3) - (6)].etree), (yyvsp[(5) - (6)].etree)); } + break; + + case 255: +#line 992 "ldgram.y" + { (yyval.etree) = exp_binop (DATA_SEGMENT_RELRO_END, (yyvsp[(5) - (6)].etree), (yyvsp[(3) - (6)].etree)); } + break; + + case 256: +#line 994 "ldgram.y" + { (yyval.etree) = exp_unop (DATA_SEGMENT_END, (yyvsp[(3) - (4)].etree)); } + break; + + case 257: +#line 996 "ldgram.y" + { /* The operands to the expression node are + placed in the opposite order from the way + in which they appear in the script as + that allows us to reuse more code in + fold_binary. */ + (yyval.etree) = exp_binop (SEGMENT_START, + (yyvsp[(5) - (6)].etree), + exp_nameop (NAME, (yyvsp[(3) - (6)].name))); } + break; + + case 258: +#line 1005 "ldgram.y" + { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[(3) - (4)].etree)); } + break; + + case 259: +#line 1007 "ldgram.y" + { (yyval.etree) = exp_nameop (NAME,(yyvsp[(1) - (1)].name)); } + break; + + case 260: +#line 1009 "ldgram.y" + { (yyval.etree) = exp_binop (MAX_K, (yyvsp[(3) - (6)].etree), (yyvsp[(5) - (6)].etree) ); } + break; + + case 261: +#line 1011 "ldgram.y" + { (yyval.etree) = exp_binop (MIN_K, (yyvsp[(3) - (6)].etree), (yyvsp[(5) - (6)].etree) ); } + break; + + case 262: +#line 1013 "ldgram.y" + { (yyval.etree) = exp_assert ((yyvsp[(3) - (6)].etree), (yyvsp[(5) - (6)].name)); } + break; + + case 263: +#line 1015 "ldgram.y" + { (yyval.etree) = exp_nameop (ORIGIN, (yyvsp[(3) - (4)].name)); } + break; + + case 264: +#line 1017 "ldgram.y" + { (yyval.etree) = exp_nameop (LENGTH, (yyvsp[(3) - (4)].name)); } + break; + + case 265: +#line 1019 "ldgram.y" + { (yyval.etree) = exp_unop (LOG2CEIL, (yyvsp[(3) - (4)].etree)); } + break; + + case 266: +#line 1024 "ldgram.y" + { (yyval.name) = (yyvsp[(3) - (3)].name); } + break; + + case 267: +#line 1025 "ldgram.y" + { (yyval.name) = 0; } + break; + + case 268: +#line 1029 "ldgram.y" + { (yyval.etree) = (yyvsp[(3) - (4)].etree); } + break; + + case 269: +#line 1030 "ldgram.y" + { (yyval.etree) = 0; } + break; + + case 270: +#line 1034 "ldgram.y" + { (yyval.etree) = (yyvsp[(3) - (4)].etree); } + break; + + case 271: +#line 1035 "ldgram.y" + { (yyval.etree) = 0; } + break; + + case 272: +#line 1039 "ldgram.y" + { (yyval.token) = ALIGN_WITH_INPUT; } + break; + + case 273: +#line 1040 "ldgram.y" + { (yyval.token) = 0; } + break; + + case 274: +#line 1044 "ldgram.y" + { (yyval.etree) = (yyvsp[(3) - (4)].etree); } + break; + + case 275: +#line 1045 "ldgram.y" + { (yyval.etree) = 0; } + break; + + case 276: +#line 1049 "ldgram.y" + { (yyval.token) = ONLY_IF_RO; } + break; + + case 277: +#line 1050 "ldgram.y" + { (yyval.token) = ONLY_IF_RW; } + break; + + case 278: +#line 1051 "ldgram.y" + { (yyval.token) = SPECIAL; } + break; + + case 279: +#line 1052 "ldgram.y" + { (yyval.token) = 0; } + break; + + case 280: +#line 1055 "ldgram.y" + { ldlex_expression(); } + break; + + case 281: +#line 1060 "ldgram.y" + { ldlex_popstate (); ldlex_script (); } + break; + + case 282: +#line 1063 "ldgram.y" + { + lang_enter_output_section_statement((yyvsp[(1) - (10)].name), (yyvsp[(3) - (10)].etree), + sectype, + (yyvsp[(5) - (10)].etree), (yyvsp[(7) - (10)].etree), (yyvsp[(4) - (10)].etree), (yyvsp[(9) - (10)].token), (yyvsp[(6) - (10)].token)); + } + break; + + case 283: +#line 1069 "ldgram.y" + { ldlex_popstate (); ldlex_expression (); } + break; + + case 284: +#line 1071 "ldgram.y" + { + ldlex_popstate (); + lang_leave_output_section_statement ((yyvsp[(18) - (18)].fill), (yyvsp[(15) - (18)].name), (yyvsp[(17) - (18)].section_phdr), (yyvsp[(16) - (18)].name)); + } + break; + + case 285: +#line 1076 "ldgram.y" + {} + break; + + case 286: +#line 1078 "ldgram.y" + { ldlex_expression (); } + break; + + case 287: +#line 1080 "ldgram.y" + { ldlex_popstate (); ldlex_script (); } + break; + + case 288: +#line 1082 "ldgram.y" + { + lang_enter_overlay ((yyvsp[(3) - (8)].etree), (yyvsp[(6) - (8)].etree)); + } + break; + + case 289: +#line 1087 "ldgram.y" + { ldlex_popstate (); ldlex_expression (); } + break; + + case 290: +#line 1089 "ldgram.y" + { + ldlex_popstate (); + lang_leave_overlay ((yyvsp[(5) - (16)].etree), (int) (yyvsp[(4) - (16)].integer), + (yyvsp[(16) - (16)].fill), (yyvsp[(13) - (16)].name), (yyvsp[(15) - (16)].section_phdr), (yyvsp[(14) - (16)].name)); + } + break; + + case 292: +#line 1099 "ldgram.y" + { ldlex_expression (); } + break; + + case 293: +#line 1101 "ldgram.y" + { + ldlex_popstate (); + lang_add_assignment (exp_assign (".", (yyvsp[(3) - (3)].etree), FALSE)); + } + break; + + case 295: +#line 1107 "ldgram.y" + { ldlex_script (); ldfile_open_command_file((yyvsp[(2) - (2)].name)); } + break; + + case 296: +#line 1109 "ldgram.y" + { ldlex_popstate (); } + break; + + case 297: +#line 1113 "ldgram.y" + { sectype = noload_section; } + break; + + case 298: +#line 1114 "ldgram.y" + { sectype = noalloc_section; } + break; + + case 299: +#line 1115 "ldgram.y" + { sectype = noalloc_section; } + break; + + case 300: +#line 1116 "ldgram.y" + { sectype = noalloc_section; } + break; + + case 301: +#line 1117 "ldgram.y" + { sectype = noalloc_section; } + break; + + case 303: +#line 1122 "ldgram.y" + { sectype = normal_section; } + break; + + case 304: +#line 1123 "ldgram.y" + { sectype = normal_section; } + break; + + case 305: +#line 1127 "ldgram.y" + { (yyval.etree) = (yyvsp[(1) - (3)].etree); } + break; + + case 306: +#line 1128 "ldgram.y" + { (yyval.etree) = (etree_type *)NULL; } + break; + + case 307: +#line 1133 "ldgram.y" + { (yyval.etree) = (yyvsp[(3) - (6)].etree); } + break; + + case 308: +#line 1135 "ldgram.y" + { (yyval.etree) = (yyvsp[(3) - (10)].etree); } + break; + + case 309: +#line 1139 "ldgram.y" + { (yyval.etree) = (yyvsp[(1) - (2)].etree); } + break; + + case 310: +#line 1140 "ldgram.y" + { (yyval.etree) = (etree_type *) NULL; } + break; + + case 311: +#line 1145 "ldgram.y" + { (yyval.integer) = 0; } + break; + + case 312: +#line 1147 "ldgram.y" + { (yyval.integer) = 1; } + break; + + case 313: +#line 1152 "ldgram.y" + { (yyval.name) = (yyvsp[(2) - (2)].name); } + break; + + case 314: +#line 1153 "ldgram.y" + { (yyval.name) = DEFAULT_MEMORY_REGION; } + break; + + case 315: +#line 1158 "ldgram.y" + { + (yyval.section_phdr) = NULL; + } + break; + + case 316: +#line 1162 "ldgram.y" + { + struct lang_output_section_phdr_list *n; + + n = ((struct lang_output_section_phdr_list *) + xmalloc (sizeof *n)); + n->name = (yyvsp[(3) - (3)].name); + n->used = FALSE; + n->next = (yyvsp[(1) - (3)].section_phdr); + (yyval.section_phdr) = n; + } + break; + + case 318: +#line 1178 "ldgram.y" + { + ldlex_script (); + lang_enter_overlay_section ((yyvsp[(2) - (2)].name)); + } + break; + + case 319: +#line 1183 "ldgram.y" + { ldlex_popstate (); ldlex_expression (); } + break; + + case 320: +#line 1185 "ldgram.y" + { + ldlex_popstate (); + lang_leave_overlay_section ((yyvsp[(9) - (9)].fill), (yyvsp[(8) - (9)].section_phdr)); + } + break; + + case 325: +#line 1202 "ldgram.y" + { ldlex_expression (); } + break; + + case 326: +#line 1203 "ldgram.y" + { ldlex_popstate (); } + break; + + case 327: +#line 1205 "ldgram.y" + { + lang_new_phdr ((yyvsp[(1) - (6)].name), (yyvsp[(3) - (6)].etree), (yyvsp[(4) - (6)].phdr).filehdr, (yyvsp[(4) - (6)].phdr).phdrs, (yyvsp[(4) - (6)].phdr).at, + (yyvsp[(4) - (6)].phdr).flags); + } + break; + + case 328: +#line 1213 "ldgram.y" + { + (yyval.etree) = (yyvsp[(1) - (1)].etree); + + if ((yyvsp[(1) - (1)].etree)->type.node_class == etree_name + && (yyvsp[(1) - (1)].etree)->type.node_code == NAME) + { + const char *s; + unsigned int i; + static const char * const phdr_types[] = + { + "PT_NULL", "PT_LOAD", "PT_DYNAMIC", + "PT_INTERP", "PT_NOTE", "PT_SHLIB", + "PT_PHDR", "PT_TLS" + }; + + s = (yyvsp[(1) - (1)].etree)->name.name; + for (i = 0; + i < sizeof phdr_types / sizeof phdr_types[0]; + i++) + if (strcmp (s, phdr_types[i]) == 0) + { + (yyval.etree) = exp_intop (i); + break; + } + if (i == sizeof phdr_types / sizeof phdr_types[0]) + { + if (strcmp (s, "PT_GNU_EH_FRAME") == 0) + (yyval.etree) = exp_intop (0x6474e550); + else if (strcmp (s, "PT_GNU_STACK") == 0) + (yyval.etree) = exp_intop (0x6474e551); + else + { + einfo (_("\ +%X%P:%S: unknown phdr type `%s' (try integer literal)\n"), + NULL, s); + (yyval.etree) = exp_intop (0); + } + } + } + } + break; + + case 329: +#line 1257 "ldgram.y" + { + memset (&(yyval.phdr), 0, sizeof (struct phdr_info)); + } + break; + + case 330: +#line 1261 "ldgram.y" + { + (yyval.phdr) = (yyvsp[(3) - (3)].phdr); + if (strcmp ((yyvsp[(1) - (3)].name), "FILEHDR") == 0 && (yyvsp[(2) - (3)].etree) == NULL) + (yyval.phdr).filehdr = TRUE; + else if (strcmp ((yyvsp[(1) - (3)].name), "PHDRS") == 0 && (yyvsp[(2) - (3)].etree) == NULL) + (yyval.phdr).phdrs = TRUE; + else if (strcmp ((yyvsp[(1) - (3)].name), "FLAGS") == 0 && (yyvsp[(2) - (3)].etree) != NULL) + (yyval.phdr).flags = (yyvsp[(2) - (3)].etree); + else + einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"), + NULL, (yyvsp[(1) - (3)].name)); + } + break; + + case 331: +#line 1274 "ldgram.y" + { + (yyval.phdr) = (yyvsp[(5) - (5)].phdr); + (yyval.phdr).at = (yyvsp[(3) - (5)].etree); + } + break; + + case 332: +#line 1282 "ldgram.y" + { + (yyval.etree) = NULL; + } + break; + + case 333: +#line 1286 "ldgram.y" + { + (yyval.etree) = (yyvsp[(2) - (3)].etree); + } + break; + + case 334: +#line 1292 "ldgram.y" + { + ldlex_version_file (); + PUSH_ERROR (_("dynamic list")); + } + break; + + case 335: +#line 1297 "ldgram.y" + { + ldlex_popstate (); + POP_ERROR (); + } + break; + + case 339: +#line 1314 "ldgram.y" + { + lang_append_dynamic_list ((yyvsp[(1) - (2)].versyms)); + } + break; + + case 340: +#line 1322 "ldgram.y" + { + ldlex_version_file (); + PUSH_ERROR (_("VERSION script")); + } + break; + + case 341: +#line 1327 "ldgram.y" + { + ldlex_popstate (); + POP_ERROR (); + } + break; + + case 342: +#line 1336 "ldgram.y" + { + ldlex_version_script (); + } + break; + + case 343: +#line 1340 "ldgram.y" + { + ldlex_popstate (); + } + break; + + case 346: +#line 1352 "ldgram.y" + { + lang_register_vers_node (NULL, (yyvsp[(2) - (4)].versnode), NULL); + } + break; + + case 347: +#line 1356 "ldgram.y" + { + lang_register_vers_node ((yyvsp[(1) - (5)].name), (yyvsp[(3) - (5)].versnode), NULL); + } + break; + + case 348: +#line 1360 "ldgram.y" + { + lang_register_vers_node ((yyvsp[(1) - (6)].name), (yyvsp[(3) - (6)].versnode), (yyvsp[(5) - (6)].deflist)); + } + break; + + case 349: +#line 1367 "ldgram.y" + { + (yyval.deflist) = lang_add_vers_depend (NULL, (yyvsp[(1) - (1)].name)); + } + break; + + case 350: +#line 1371 "ldgram.y" + { + (yyval.deflist) = lang_add_vers_depend ((yyvsp[(1) - (2)].deflist), (yyvsp[(2) - (2)].name)); + } + break; + + case 351: +#line 1378 "ldgram.y" + { + (yyval.versnode) = lang_new_vers_node (NULL, NULL); + } + break; + + case 352: +#line 1382 "ldgram.y" + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[(1) - (2)].versyms), NULL); + } + break; + + case 353: +#line 1386 "ldgram.y" + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[(3) - (4)].versyms), NULL); + } + break; + + case 354: +#line 1390 "ldgram.y" + { + (yyval.versnode) = lang_new_vers_node (NULL, (yyvsp[(3) - (4)].versyms)); + } + break; + + case 355: +#line 1394 "ldgram.y" + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[(3) - (8)].versyms), (yyvsp[(7) - (8)].versyms)); + } + break; + + case 356: +#line 1401 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[(1) - (1)].name), ldgram_vers_current_lang, FALSE); + } + break; + + case 357: +#line 1405 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[(1) - (1)].name), ldgram_vers_current_lang, TRUE); + } + break; + + case 358: +#line 1409 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[(1) - (3)].versyms), (yyvsp[(3) - (3)].name), ldgram_vers_current_lang, FALSE); + } + break; + + case 359: +#line 1413 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[(1) - (3)].versyms), (yyvsp[(3) - (3)].name), ldgram_vers_current_lang, TRUE); + } + break; + + case 360: +#line 1417 "ldgram.y" + { + (yyval.name) = ldgram_vers_current_lang; + ldgram_vers_current_lang = (yyvsp[(4) - (5)].name); + } + break; + + case 361: +#line 1422 "ldgram.y" + { + struct bfd_elf_version_expr *pat; + for (pat = (yyvsp[(7) - (9)].versyms); pat->next != NULL; pat = pat->next); + pat->next = (yyvsp[(1) - (9)].versyms); + (yyval.versyms) = (yyvsp[(7) - (9)].versyms); + ldgram_vers_current_lang = (yyvsp[(6) - (9)].name); + } + break; + + case 362: +#line 1430 "ldgram.y" + { + (yyval.name) = ldgram_vers_current_lang; + ldgram_vers_current_lang = (yyvsp[(2) - (3)].name); + } + break; + + case 363: +#line 1435 "ldgram.y" + { + (yyval.versyms) = (yyvsp[(5) - (7)].versyms); + ldgram_vers_current_lang = (yyvsp[(4) - (7)].name); + } + break; + + case 364: +#line 1440 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "global", ldgram_vers_current_lang, FALSE); + } + break; + + case 365: +#line 1444 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[(1) - (3)].versyms), "global", ldgram_vers_current_lang, FALSE); + } + break; + + case 366: +#line 1448 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "local", ldgram_vers_current_lang, FALSE); + } + break; + + case 367: +#line 1452 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[(1) - (3)].versyms), "local", ldgram_vers_current_lang, FALSE); + } + break; + + case 368: +#line 1456 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "extern", ldgram_vers_current_lang, FALSE); + } + break; + + case 369: +#line 1460 "ldgram.y" + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[(1) - (3)].versyms), "extern", ldgram_vers_current_lang, FALSE); + } + break; + + +/* Line 1267 of yacc.c. */ +#line 4501 "ldgram.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 1470 "ldgram.y" + +void +yyerror(arg) + const char *arg; +{ + if (ldfile_assumed_script) + einfo (_("%P:%s: file format not recognized; treating as linker script\n"), + ldlex_filename ()); + if (error_index > 0 && error_index < ERROR_NAME_MAX) + einfo ("%P%F:%S: %s in %s\n", NULL, arg, error_names[error_index - 1]); + else + einfo ("%P%F:%S: %s\n", NULL, arg); +} + diff --git a/ld/ldgram.h b/ld/ldgram.h new file mode 100644 index 00000000000..2cc4c50e708 --- /dev/null +++ b/ld/ldgram.h @@ -0,0 +1,347 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + INT = 258, + NAME = 259, + LNAME = 260, + OREQ = 261, + ANDEQ = 262, + RSHIFTEQ = 263, + LSHIFTEQ = 264, + DIVEQ = 265, + MULTEQ = 266, + MINUSEQ = 267, + PLUSEQ = 268, + OROR = 269, + ANDAND = 270, + NE = 271, + EQ = 272, + GE = 273, + LE = 274, + RSHIFT = 275, + LSHIFT = 276, + UNARY = 277, + END = 278, + ALIGN_K = 279, + BLOCK = 280, + BIND = 281, + QUAD = 282, + SQUAD = 283, + LONG = 284, + SHORT = 285, + BYTE = 286, + SECTIONS = 287, + PHDRS = 288, + INSERT_K = 289, + AFTER = 290, + BEFORE = 291, + DATA_SEGMENT_ALIGN = 292, + DATA_SEGMENT_RELRO_END = 293, + DATA_SEGMENT_END = 294, + SORT_BY_NAME = 295, + SORT_BY_ALIGNMENT = 296, + SORT_NONE = 297, + SORT_BY_INIT_PRIORITY = 298, + SIZEOF_HEADERS = 299, + OUTPUT_FORMAT = 300, + FORCE_COMMON_ALLOCATION = 301, + OUTPUT_ARCH = 302, + INHIBIT_COMMON_ALLOCATION = 303, + SEGMENT_START = 304, + INCLUDE = 305, + MEMORY = 306, + REGION_ALIAS = 307, + LD_FEATURE = 308, + NOLOAD = 309, + DSECT = 310, + COPY = 311, + INFO = 312, + OVERLAY = 313, + DEFINED = 314, + TARGET_K = 315, + SEARCH_DIR = 316, + MAP = 317, + ENTRY = 318, + NEXT = 319, + SIZEOF = 320, + ALIGNOF = 321, + ADDR = 322, + LOADADDR = 323, + MAX_K = 324, + MIN_K = 325, + STARTUP = 326, + HLL = 327, + SYSLIB = 328, + FLOAT = 329, + NOFLOAT = 330, + NOCROSSREFS = 331, + ORIGIN = 332, + FILL = 333, + LENGTH = 334, + CREATE_OBJECT_SYMBOLS = 335, + INPUT = 336, + GROUP = 337, + OUTPUT = 338, + CONSTRUCTORS = 339, + ALIGNMOD = 340, + AT = 341, + SUBALIGN = 342, + HIDDEN = 343, + PROVIDE = 344, + PROVIDE_HIDDEN = 345, + AS_NEEDED = 346, + CHIP = 347, + LIST = 348, + SECT = 349, + ABSOLUTE = 350, + LOAD = 351, + NEWLINE = 352, + ENDWORD = 353, + ORDER = 354, + NAMEWORD = 355, + ASSERT_K = 356, + LOG2CEIL = 357, + FORMAT = 358, + PUBLIC = 359, + DEFSYMEND = 360, + BASE = 361, + ALIAS = 362, + TRUNCATE = 363, + REL = 364, + INPUT_SCRIPT = 365, + INPUT_MRI_SCRIPT = 366, + INPUT_DEFSYM = 367, + CASE = 368, + EXTERN = 369, + START = 370, + VERS_TAG = 371, + VERS_IDENTIFIER = 372, + GLOBAL = 373, + LOCAL = 374, + VERSIONK = 375, + INPUT_VERSION_SCRIPT = 376, + KEEP = 377, + ONLY_IF_RO = 378, + ONLY_IF_RW = 379, + SPECIAL = 380, + INPUT_SECTION_FLAGS = 381, + ALIGN_WITH_INPUT = 382, + EXCLUDE_FILE = 383, + CONSTANT = 384, + INPUT_DYNAMIC_LIST = 385 + }; +#endif +/* Tokens. */ +#define INT 258 +#define NAME 259 +#define LNAME 260 +#define OREQ 261 +#define ANDEQ 262 +#define RSHIFTEQ 263 +#define LSHIFTEQ 264 +#define DIVEQ 265 +#define MULTEQ 266 +#define MINUSEQ 267 +#define PLUSEQ 268 +#define OROR 269 +#define ANDAND 270 +#define NE 271 +#define EQ 272 +#define GE 273 +#define LE 274 +#define RSHIFT 275 +#define LSHIFT 276 +#define UNARY 277 +#define END 278 +#define ALIGN_K 279 +#define BLOCK 280 +#define BIND 281 +#define QUAD 282 +#define SQUAD 283 +#define LONG 284 +#define SHORT 285 +#define BYTE 286 +#define SECTIONS 287 +#define PHDRS 288 +#define INSERT_K 289 +#define AFTER 290 +#define BEFORE 291 +#define DATA_SEGMENT_ALIGN 292 +#define DATA_SEGMENT_RELRO_END 293 +#define DATA_SEGMENT_END 294 +#define SORT_BY_NAME 295 +#define SORT_BY_ALIGNMENT 296 +#define SORT_NONE 297 +#define SORT_BY_INIT_PRIORITY 298 +#define SIZEOF_HEADERS 299 +#define OUTPUT_FORMAT 300 +#define FORCE_COMMON_ALLOCATION 301 +#define OUTPUT_ARCH 302 +#define INHIBIT_COMMON_ALLOCATION 303 +#define SEGMENT_START 304 +#define INCLUDE 305 +#define MEMORY 306 +#define REGION_ALIAS 307 +#define LD_FEATURE 308 +#define NOLOAD 309 +#define DSECT 310 +#define COPY 311 +#define INFO 312 +#define OVERLAY 313 +#define DEFINED 314 +#define TARGET_K 315 +#define SEARCH_DIR 316 +#define MAP 317 +#define ENTRY 318 +#define NEXT 319 +#define SIZEOF 320 +#define ALIGNOF 321 +#define ADDR 322 +#define LOADADDR 323 +#define MAX_K 324 +#define MIN_K 325 +#define STARTUP 326 +#define HLL 327 +#define SYSLIB 328 +#define FLOAT 329 +#define NOFLOAT 330 +#define NOCROSSREFS 331 +#define ORIGIN 332 +#define FILL 333 +#define LENGTH 334 +#define CREATE_OBJECT_SYMBOLS 335 +#define INPUT 336 +#define GROUP 337 +#define OUTPUT 338 +#define CONSTRUCTORS 339 +#define ALIGNMOD 340 +#define AT 341 +#define SUBALIGN 342 +#define HIDDEN 343 +#define PROVIDE 344 +#define PROVIDE_HIDDEN 345 +#define AS_NEEDED 346 +#define CHIP 347 +#define LIST 348 +#define SECT 349 +#define ABSOLUTE 350 +#define LOAD 351 +#define NEWLINE 352 +#define ENDWORD 353 +#define ORDER 354 +#define NAMEWORD 355 +#define ASSERT_K 356 +#define LOG2CEIL 357 +#define FORMAT 358 +#define PUBLIC 359 +#define DEFSYMEND 360 +#define BASE 361 +#define ALIAS 362 +#define TRUNCATE 363 +#define REL 364 +#define INPUT_SCRIPT 365 +#define INPUT_MRI_SCRIPT 366 +#define INPUT_DEFSYM 367 +#define CASE 368 +#define EXTERN 369 +#define START 370 +#define VERS_TAG 371 +#define VERS_IDENTIFIER 372 +#define GLOBAL 373 +#define LOCAL 374 +#define VERSIONK 375 +#define INPUT_VERSION_SCRIPT 376 +#define KEEP 377 +#define ONLY_IF_RO 378 +#define ONLY_IF_RW 379 +#define SPECIAL 380 +#define INPUT_SECTION_FLAGS 381 +#define ALIGN_WITH_INPUT 382 +#define EXCLUDE_FILE 383 +#define CONSTANT 384 +#define INPUT_DYNAMIC_LIST 385 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 60 "ldgram.y" +{ + bfd_vma integer; + struct big_int + { + bfd_vma integer; + char *str; + } bigint; + fill_type *fill; + char *name; + const char *cname; + struct wildcard_spec wildcard; + struct wildcard_list *wildcard_list; + struct name_list *name_list; + struct flag_info_list *flag_info_list; + struct flag_info *flag_info; + int token; + union etree_union *etree; + struct phdr_info + { + bfd_boolean filehdr; + bfd_boolean phdrs; + union etree_union *at; + union etree_union *flags; + } phdr; + struct lang_nocrossref *nocrossref; + struct lang_output_section_phdr_list *section_phdr; + struct bfd_elf_version_deps *deflist; + struct bfd_elf_version_expr *versyms; + struct bfd_elf_version_tree *versnode; +} +/* Line 1529 of yacc.c. */ +#line 340 "ldgram.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/ld/ldlex.c b/ld/ldlex.c new file mode 100644 index 00000000000..0471d7fe43a --- /dev/null +++ b/ld/ldlex.c @@ -0,0 +1,4408 @@ + +#line 3 "ldlex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 198 +#define YY_END_OF_BUFFER 199 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[1766] = + { 0, + 0, 0, 178, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 199, 198, 196, 181, 180, 32, 196, 178, 38, 29, + 44, 43, 34, 35, 28, 36, 178, 37, 8, 8, + 45, 46, 39, 40, 27, 33, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 10, 9, 178, 119, + 117, 178, 42, 30, 41, 31, 195, 198, 173, 44, + 43, 28, 198, 173, 198, 173, 197, 181, 32, 197, + 176, 38, 29, 44, 43, 34, 35, 28, 36, 176, + + 37, 8, 8, 45, 46, 39, 40, 27, 33, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 10, 9, 176, 176, 42, + 30, 41, 31, 173, 36, 173, 37, 8, 8, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 119, 117, 173, 31, 4, 3, 2, 4, 5, 134, + 32, 133, 172, 34, 35, 28, 36, 172, 37, 8, + 8, 45, 46, 40, 33, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 10, 9, 172, + + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 31, 195, 193, 194, 196, 188, 187, 182, 189, 190, + 186, 186, 186, 186, 191, 192, 181, 178, 15, 0, + 179, 8, 26, 24, 22, 20, 21, 1, 23, 8, + 8, 178, 18, 17, 14, 16, 19, 178, 178, 178, + 178, 178, 124, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 25, 13, 195, 173, 0, 1, 174, 173, + 15, 176, 6, 22, 20, 21, 0, 23, 8, 0, + 7, 7, 8, 7, 14, 176, 7, 7, 7, 176, + 176, 124, 7, 176, 176, 7, 176, 176, 176, 7, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 7, 176, + 8, 23, 8, 0, 173, 173, 173, 173, 173, 124, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 4, 4, 133, 133, 172, 6, 135, 22, 136, 172, + 7, 7, 7, 172, 172, 172, 7, 172, 7, 7, + 172, 172, 172, 172, 172, 172, 172, 172, 7, 172, + 172, 172, 7, 172, 7, 7, 172, 172, 172, 172, + 172, 172, 172, 172, 194, 187, 186, 0, 186, 186, + 186, 11, 12, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 93, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 72, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 120, 118, 178, 175, + 174, 173, 8, 177, 8, 176, 7, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 62, 63, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 8, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + + 173, 173, 173, 173, 173, 173, 93, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 72, 62, + 173, 63, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 120, 118, + 173, 4, 8, 172, 172, 172, 172, 172, 137, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 154, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 186, 186, 186, 178, 59, + 178, 178, 178, 178, 178, 53, 178, 100, 178, 111, + + 178, 178, 178, 178, 178, 178, 178, 89, 178, 178, + 178, 178, 178, 112, 178, 178, 178, 130, 178, 178, + 178, 98, 178, 68, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 96, 178, 178, 178, 178, 178, 178, + 106, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 173, 176, 59, 176, 176, 176, 53, 176, 176, 111, + 176, 176, 176, 176, 176, 176, 176, 112, 176, 130, + 176, 176, 176, 68, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 173, 59, 173, 173, + 173, 173, 53, 173, 100, 173, 111, 173, 173, 173, + + 173, 173, 173, 173, 89, 173, 173, 173, 173, 173, + 112, 173, 173, 173, 130, 173, 173, 173, 173, 98, + 173, 68, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 96, 173, 173, 173, 173, 173, 173, 106, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 172, 172, + 172, 141, 149, 140, 172, 172, 151, 144, 147, 172, + 172, 152, 172, 172, 172, 172, 172, 158, 166, 157, + 172, 172, 169, 161, 164, 172, 172, 170, 172, 172, + 186, 186, 186, 178, 87, 55, 178, 178, 178, 52, + 178, 178, 178, 178, 110, 66, 178, 178, 95, 178, + + 78, 178, 178, 178, 77, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 123, 178, 178, + 178, 178, 178, 99, 178, 178, 178, 97, 178, 178, + 178, 178, 178, 178, 178, 173, 176, 55, 176, 176, + 52, 176, 176, 176, 110, 176, 78, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 173, 87, 55, 173, 173, + 52, 173, 173, 173, 173, 110, 66, 173, 173, 95, + 173, 78, 173, 173, 173, 77, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 123, + + 173, 173, 173, 173, 173, 99, 173, 173, 173, 97, + 173, 173, 173, 173, 173, 173, 173, 172, 142, 139, + 172, 172, 151, 151, 146, 172, 150, 172, 172, 159, + 156, 172, 172, 169, 169, 163, 172, 168, 172, 186, + 186, 184, 178, 178, 178, 65, 178, 88, 178, 178, + 178, 178, 178, 178, 67, 178, 127, 178, 178, 178, + 86, 178, 54, 178, 47, 178, 178, 109, 178, 50, + 76, 178, 178, 178, 178, 178, 178, 73, 178, 178, + 178, 178, 178, 94, 74, 178, 178, 178, 173, 176, + 176, 176, 65, 176, 176, 176, 176, 176, 127, 176, + + 176, 54, 176, 176, 176, 109, 176, 50, 176, 176, + 176, 73, 176, 176, 176, 176, 173, 173, 173, 65, + 88, 173, 173, 173, 173, 173, 173, 67, 173, 127, + 173, 173, 173, 86, 173, 54, 173, 173, 47, 173, + 173, 109, 173, 50, 76, 173, 173, 173, 173, 173, + 173, 73, 173, 173, 173, 173, 173, 94, 74, 173, + 173, 173, 172, 172, 67, 148, 145, 172, 172, 172, + 167, 165, 162, 172, 185, 183, 178, 61, 178, 178, + 178, 178, 178, 178, 80, 178, 178, 122, 178, 178, + 178, 178, 178, 101, 178, 178, 103, 128, 178, 178, + + 178, 178, 178, 178, 178, 116, 90, 178, 51, 178, + 178, 173, 176, 61, 176, 176, 176, 176, 80, 176, + 122, 176, 176, 176, 176, 176, 113, 128, 176, 176, + 116, 176, 176, 176, 173, 61, 173, 173, 173, 173, + 173, 80, 173, 173, 122, 173, 173, 173, 173, 173, + 173, 101, 173, 173, 103, 128, 173, 173, 173, 173, + 173, 173, 173, 116, 90, 173, 51, 173, 173, 172, + 172, 172, 172, 172, 172, 153, 178, 178, 132, 178, + 178, 178, 178, 178, 178, 178, 178, 60, 178, 178, + 178, 178, 178, 178, 178, 85, 178, 178, 178, 178, + + 126, 171, 178, 173, 153, 176, 176, 132, 176, 176, + 176, 60, 64, 176, 176, 176, 176, 176, 126, 171, + 176, 153, 173, 132, 173, 173, 173, 173, 173, 173, + 173, 173, 60, 64, 173, 173, 173, 173, 173, 173, + 173, 85, 173, 173, 173, 173, 126, 171, 173, 153, + 138, 143, 171, 155, 160, 178, 79, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 108, 178, 79, + 176, 79, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 173, 173, 173, 173, 173, 173, 173, 173, 173, + + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 108, 173, 178, 178, 178, 178, 178, 178, + 178, 178, 49, 178, 114, 115, 178, 178, 178, 178, + 75, 178, 178, 178, 178, 178, 178, 176, 176, 176, + 176, 176, 114, 115, 176, 176, 176, 176, 173, 173, + 173, 173, 173, 173, 173, 173, 49, 173, 114, 115, + 173, 173, 173, 173, 75, 173, 173, 173, 173, 173, + 173, 178, 178, 178, 178, 178, 178, 178, 178, 102, + 92, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 176, 176, 176, 176, 102, 176, 176, 176, 176, 173, + + 173, 173, 173, 173, 173, 173, 173, 102, 92, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 178, 82, + 178, 178, 131, 178, 178, 178, 178, 178, 48, 178, + 178, 178, 178, 104, 178, 176, 176, 131, 176, 176, + 176, 176, 176, 173, 82, 173, 173, 131, 173, 173, + 173, 173, 173, 48, 173, 173, 173, 173, 104, 173, + 178, 178, 178, 178, 178, 178, 91, 178, 71, 178, + 178, 178, 178, 176, 176, 176, 176, 71, 176, 176, + 173, 173, 173, 173, 173, 173, 91, 173, 71, 173, + 173, 173, 173, 178, 178, 178, 178, 178, 178, 178, + + 178, 129, 70, 178, 178, 69, 176, 176, 176, 176, + 176, 129, 70, 69, 173, 173, 173, 173, 173, 173, + 173, 173, 129, 70, 173, 173, 69, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 176, 176, 176, + 176, 176, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 125, 178, 178, 58, 178, 178, 178, 178, + 178, 178, 125, 176, 58, 176, 176, 125, 173, 173, + 58, 173, 173, 173, 173, 173, 173, 178, 178, 178, + 178, 178, 178, 105, 178, 176, 176, 176, 173, 173, + 173, 173, 173, 173, 105, 173, 178, 56, 178, 178, + + 178, 178, 178, 56, 176, 176, 173, 56, 173, 173, + 173, 173, 173, 178, 178, 178, 178, 121, 178, 176, + 121, 173, 173, 173, 173, 121, 173, 178, 178, 178, + 178, 178, 176, 173, 173, 173, 173, 173, 81, 178, + 178, 178, 107, 176, 81, 173, 173, 173, 107, 57, + 178, 178, 57, 57, 173, 173, 83, 178, 83, 173, + 178, 173, 84, 84, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 7, 8, 9, 1, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 19, 19, 19, 19, 19, 19, 19, 21, 22, 23, + 24, 25, 26, 1, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 1, 58, 59, 60, 61, + + 62, 63, 64, 65, 66, 16, 67, 68, 69, 70, + 71, 72, 16, 73, 74, 75, 76, 16, 16, 77, + 16, 78, 79, 80, 81, 82, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[83] = + { 0, + 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, + 1, 3, 5, 6, 7, 8, 9, 10, 10, 10, + 7, 1, 1, 6, 1, 3, 11, 11, 11, 11, + 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 7, 4, 7, 3, 8, 11, 11, 11, + 11, 11, 11, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, + 1, 9 + } ; + +static yyconst flex_int16_t yy_base[1798] = + { 0, + 0, 0, 0, 0, 82, 163, 244, 0, 326, 0, + 408, 489, 570, 0, 112, 114, 652, 734, 816, 898, + 2847, 2848, 2848, 2844, 2848, 2821, 2839, 963, 2848, 89, + 2848, 2848, 2819, 2818, 0, 2817, 0, 98, 743, 417, + 0, 2848, 88, 2816, 99, 0, 98, 119, 98, 114, + 106, 114, 2795, 113, 2798, 2806, 164, 94, 161, 156, + 163, 2789, 2804, 179, 2807, 2802, 0, 0, 2773, 2769, + 2757, 2763, 2848, 129, 2848, 0, 2826, 2822, 0, 2848, + 2848, 2848, 2758, 2813, 0, 2779, 2848, 2821, 2798, 2816, + 1009, 2848, 110, 2848, 2848, 2796, 2795, 2848, 65, 0, + + 187, 1055, 129, 2848, 2848, 200, 2794, 203, 2848, 1115, + 412, 421, 489, 493, 502, 2773, 2781, 2775, 2783, 167, + 105, 198, 192, 2769, 413, 2848, 2848, 651, 2746, 2848, + 400, 2848, 0, 1175, 401, 0, 429, 825, 906, 521, + 649, 171, 491, 191, 430, 2767, 199, 2770, 2778, 442, + 443, 444, 510, 512, 2761, 2776, 678, 2779, 2774, 2745, + 2741, 2729, 2735, 0, 1221, 2848, 2848, 0, 2848, 2848, + 2776, 2796, 1267, 2774, 2773, 2848, 2772, 0, 2771, 0, + 402, 2848, 0, 2770, 2848, 1313, 655, 664, 524, 676, + 689, 404, 2766, 2748, 2744, 495, 2746, 2848, 2848, 736, + + 657, 738, 804, 737, 167, 2731, 2715, 2711, 85, 2713, + 0, 2783, 2848, 0, 2772, 2848, 0, 2848, 2848, 2848, + 2762, 456, 460, 484, 2848, 2848, 2780, 0, 0, 2776, + 2848, 730, 2848, 2848, 0, 0, 0, 0, 0, 917, + 0, 0, 2756, 2848, 0, 2848, 2755, 2733, 2747, 2730, + 2740, 480, 0, 2742, 2733, 2731, 2725, 521, 2739, 2723, + 2736, 2736, 2720, 657, 2727, 2723, 2719, 2721, 2731, 2722, + 739, 2728, 2701, 2717, 661, 2714, 2716, 2704, 754, 2715, + 2717, 2705, 2719, 2719, 2707, 2720, 2713, 773, 2704, 2692, + 2699, 2711, 2694, 2713, 2711, 2693, 2693, 2692, 2661, 2664, + + 2669, 2654, 2848, 2848, 2729, 0, 0, 2848, 0, 2673, + 2848, 0, 1373, 2848, 2848, 2848, 0, 2848, 673, 920, + 0, 2848, 2848, 0, 2848, 820, 823, 903, 0, 2694, + 654, 0, 923, 2688, 2686, 730, 968, 971, 2695, 2696, + 2683, 2693, 769, 2691, 2681, 449, 2670, 2679, 2668, 630, + 2679, 2681, 2684, 2673, 2680, 2660, 2680, 2682, 974, 2631, + 740, 0, 1012, 0, 2663, 2677, 2660, 2670, 802, 0, + 2672, 2663, 2661, 2655, 812, 2669, 2653, 2666, 2666, 2650, + 817, 2657, 2653, 2649, 2651, 2661, 2652, 1013, 2658, 2631, + 2647, 843, 396, 2647, 2645, 2634, 850, 2645, 2647, 2635, + + 2649, 2649, 2637, 2650, 2643, 844, 2634, 2622, 2629, 2641, + 2624, 2643, 2641, 2623, 2623, 2622, 2591, 2594, 2599, 2584, + 0, 1425, 2658, 2848, 0, 1477, 0, 0, 0, 1529, + 2615, 0, 0, 2624, 2613, 2612, 2621, 2625, 2608, 2609, + 2607, 2624, 2611, 2619, 2620, 2618, 2619, 2598, 2570, 2577, + 2568, 2567, 2574, 2578, 2563, 2564, 2562, 2577, 2565, 2572, + 2573, 2571, 2572, 2553, 0, 0, 2607, 2606, 485, 707, + 807, 2848, 2848, 2585, 2581, 2593, 2590, 2591, 2581, 2579, + 2589, 2589, 2586, 2571, 2564, 2587, 2586, 2577, 2582, 2566, + 2571, 2577, 2569, 2579, 2576, 2557, 2573, 0, 2564, 2560, + + 2565, 2552, 2567, 2555, 2564, 2562, 2564, 2560, 0, 2551, + 2545, 2546, 2551, 2547, 2536, 2553, 2543, 2540, 2539, 2534, + 2551, 2545, 2535, 2532, 2538, 2532, 2544, 2528, 2544, 2545, + 2527, 2543, 2531, 2535, 2522, 2495, 0, 0, 2503, 0, + 0, 2524, 0, 0, 818, 2522, 1016, 2529, 2530, 2520, + 2529, 2529, 2512, 2505, 2528, 1063, 2525, 2515, 2505, 2521, + 2512, 2508, 2501, 2505, 2513, 2515, 2524, 0, 0, 2497, + 2498, 2500, 2489, 2506, 2494, 2489, 2497, 2504, 2505, 2506, + 2461, 2469, 0, 2489, 2485, 2497, 2494, 2495, 2484, 2494, + 2494, 2491, 2476, 2469, 2492, 2491, 2482, 2487, 2471, 2476, + + 2482, 2474, 2484, 2481, 2462, 2478, 0, 2469, 2465, 2470, + 2457, 2472, 2460, 2469, 2467, 2469, 2478, 2464, 0, 0, + 2455, 0, 2449, 2450, 2455, 2451, 2440, 2457, 2447, 2444, + 2443, 2438, 2455, 2449, 2439, 2436, 2442, 2436, 2448, 2432, + 2448, 2449, 2431, 2447, 2435, 2439, 2426, 2399, 0, 0, + 2407, 0, 0, 2427, 758, 2436, 2435, 2423, 0, 2433, + 2424, 2416, 2431, 2429, 2428, 2420, 2411, 2412, 2415, 2383, + 870, 2391, 2390, 2379, 0, 2388, 2380, 2373, 2386, 2384, + 2383, 2376, 2368, 2369, 2371, 503, 851, 773, 2402, 0, + 2395, 2398, 2393, 2405, 2391, 0, 2397, 0, 2387, 0, + + 2386, 2374, 2390, 2383, 2377, 2380, 2382, 0, 2379, 2393, + 2381, 2391, 2374, 0, 2392, 2373, 2374, 0, 2386, 2370, + 2388, 0, 2370, 0, 2372, 2371, 2384, 2353, 2374, 2361, + 2369, 2361, 2370, 0, 2363, 2374, 2367, 2370, 2354, 2358, + 2341, 2362, 2366, 2349, 2356, 2358, 2361, 2356, 2322, 2318, + 2357, 2349, 0, 2346, 2341, 2353, 0, 2346, 2336, 0, + 2324, 2340, 2333, 2331, 2335, 2336, 2309, 0, 2299, 0, + 2288, 2303, 2298, 0, 2285, 2294, 2253, 2264, 2250, 2244, + 2227, 2214, 2219, 2211, 2170, 2156, 2178, 0, 2165, 2151, + 2146, 2145, 0, 2145, 0, 2132, 0, 2129, 2117, 2133, + + 81, 107, 154, 173, 0, 189, 412, 487, 533, 643, + 0, 666, 672, 678, 0, 710, 759, 796, 820, 0, + 812, 0, 819, 845, 862, 833, 856, 846, 867, 868, + 879, 0, 886, 900, 895, 901, 896, 903, 889, 912, + 920, 906, 917, 923, 932, 929, 897, 896, 933, 927, + 934, 0, 0, 0, 932, 958, 1606, 0, 0, 944, + 965, 0, 959, 978, 940, 936, 941, 0, 0, 0, + 942, 960, 1687, 0, 0, 960, 968, 0, 960, 983, + 1029, 1032, 1031, 1009, 0, 1023, 1011, 1028, 1032, 0, + 1051, 1034, 1021, 1045, 0, 0, 1047, 1048, 0, 1040, + + 0, 1060, 1073, 1069, 1049, 1061, 1083, 1077, 1082, 1068, + 1076, 1096, 1095, 1092, 1088, 1083, 1103, 0, 1101, 1096, + 1103, 1097, 1099, 0, 1108, 1122, 1114, 0, 1101, 1116, + 1124, 1108, 1114, 1081, 1095, 1128, 1116, 1125, 1118, 1136, + 0, 1141, 1124, 1139, 0, 1141, 0, 1132, 1149, 1124, + 1149, 1154, 1154, 1142, 1158, 1154, 1150, 1164, 1166, 1157, + 1166, 1172, 1165, 1125, 1145, 1162, 0, 1169, 1165, 1181, + 0, 1186, 1183, 1170, 1185, 0, 0, 1187, 1178, 0, + 1162, 0, 1180, 1191, 1187, 1166, 1178, 1198, 1193, 1198, + 1198, 1180, 1187, 1215, 1213, 1209, 1205, 1200, 1220, 0, + + 1224, 1215, 1222, 1216, 1218, 0, 1227, 1232, 1234, 0, + 1215, 1228, 1236, 1219, 1225, 1191, 1205, 1222, 0, 1231, + 1231, 1227, 0, 1768, 0, 1245, 0, 1248, 1200, 0, + 1208, 1208, 1213, 0, 1849, 0, 1229, 0, 1232, 1279, + 1270, 1271, 1247, 1269, 1253, 0, 1273, 0, 1264, 1258, + 1249, 1276, 1278, 1278, 0, 1281, 0, 1280, 1266, 1268, + 0, 1268, 0, 1285, 0, 1271, 1271, 0, 1286, 0, + 1262, 1269, 1290, 1265, 1266, 1284, 1288, 1278, 1285, 1296, + 1301, 1304, 1315, 0, 0, 1310, 1277, 1296, 1325, 1310, + 1325, 1309, 0, 1329, 1320, 1330, 1332, 1333, 0, 1334, + + 1321, 0, 1337, 1333, 1324, 0, 1338, 0, 1326, 1348, + 1334, 1324, 1344, 1350, 1310, 1329, 1341, 1356, 1340, 0, + 0, 1354, 1348, 1339, 1366, 1368, 1368, 0, 1377, 0, + 1376, 1362, 1364, 0, 1365, 0, 1383, 1379, 0, 1370, + 1370, 0, 1385, 0, 1361, 1368, 1389, 1364, 1365, 1383, + 1378, 1368, 1375, 1386, 1390, 1387, 1397, 0, 0, 1397, + 1363, 1382, 1395, 1405, 0, 0, 0, 1401, 1373, 1378, + 0, 0, 0, 1375, 1430, 1437, 1428, 0, 1425, 1430, + 1417, 1436, 1425, 1434, 0, 1411, 1428, 0, 1413, 1440, + 1425, 1429, 1430, 0, 1418, 1449, 0, 1420, 1451, 1449, + + 1435, 1425, 1455, 1433, 1451, 0, 0, 1453, 0, 1436, + 1434, 1469, 1470, 0, 1467, 1472, 1464, 1478, 0, 1455, + 0, 1482, 1471, 1479, 1474, 1462, 0, 1463, 1464, 1488, + 0, 1483, 1462, 1460, 1495, 0, 1492, 1482, 1500, 1489, + 1498, 0, 1475, 1492, 0, 1477, 1510, 1495, 1499, 1507, + 1506, 0, 1494, 1535, 0, 1495, 1526, 1524, 1510, 1507, + 1531, 1509, 1528, 0, 0, 1529, 0, 1509, 1507, 1542, + 1544, 1544, 1514, 1516, 1516, 0, 1534, 1551, 0, 1536, + 1555, 1545, 1553, 1547, 1564, 1566, 1552, 0, 1566, 1554, + 1555, 1560, 1568, 1565, 1569, 0, 1560, 1578, 1586, 1588, + + 0, 0, 1560, 1593, 0, 1578, 1595, 0, 1588, 1601, + 1605, 0, 0, 1604, 1592, 1603, 1593, 1608, 0, 0, + 1578, 0, 1595, 0, 1596, 1615, 1605, 1613, 1607, 1618, + 1619, 1605, 0, 0, 1619, 1607, 1608, 1612, 1620, 1617, + 1621, 0, 1612, 1627, 1632, 1629, 0, 0, 1599, 0, + 0, 0, 0, 0, 0, 1629, 0, 1623, 1629, 1635, + 1633, 1630, 1629, 1625, 1642, 1642, 1634, 1647, 1633, 1643, + 1644, 1636, 1635, 1655, 1646, 1650, 1667, 0, 1642, 0, + 1668, 0, 1672, 1669, 1659, 1674, 1666, 1673, 1668, 1689, + 1659, 1684, 1678, 1684, 1690, 1687, 1684, 1683, 1679, 1695, + + 1695, 1687, 1700, 1686, 1696, 1697, 1689, 1688, 1708, 1699, + 1698, 1712, 0, 1682, 1684, 1698, 1713, 1705, 1708, 1706, + 1709, 1714, 0, 1705, 0, 0, 1717, 1713, 1723, 1727, + 0, 1728, 1726, 1722, 1723, 1720, 1699, 1704, 1722, 1725, + 1729, 1720, 0, 0, 1741, 1748, 1751, 1722, 1727, 1741, + 1755, 1747, 1750, 1748, 1756, 1761, 0, 1752, 0, 0, + 1764, 1760, 1770, 1774, 0, 1775, 1773, 1769, 1770, 1767, + 1746, 1773, 1764, 1781, 1765, 1781, 1773, 1775, 1774, 0, + 0, 1789, 1787, 1773, 1775, 1789, 1788, 1776, 1792, 1763, + 1791, 1781, 1797, 1788, 0, 1800, 1787, 1801, 1771, 1799, + + 1790, 1807, 1791, 1807, 1799, 1801, 1800, 0, 0, 1815, + 1813, 1799, 1801, 1815, 1819, 1810, 1831, 1802, 1825, 0, + 1820, 1810, 0, 1811, 1828, 1830, 1830, 1846, 0, 1832, + 1835, 1840, 1824, 0, 1809, 1843, 1827, 0, 1845, 1855, + 1841, 1844, 1816, 1850, 0, 1845, 1835, 0, 1836, 1853, + 1855, 1850, 1866, 0, 1852, 1855, 1860, 1844, 0, 1829, + 1861, 1847, 1879, 1880, 1868, 1852, 0, 1871, 0, 1867, + 1874, 1872, 1841, 1874, 1890, 1861, 1879, 0, 1875, 1848, + 1882, 1868, 1900, 1899, 1892, 1876, 0, 1895, 0, 1891, + 1898, 1896, 1865, 1893, 1896, 1904, 1903, 1914, 1908, 1890, + + 1916, 0, 0, 1918, 1906, 0, 1904, 1914, 1913, 1923, + 1923, 0, 0, 0, 1909, 1912, 1920, 1919, 1929, 1923, + 1905, 1931, 0, 0, 1933, 1921, 0, 1920, 1916, 1933, + 1939, 1932, 1933, 1945, 1935, 1934, 1940, 1930, 1942, 1948, + 1941, 1942, 1935, 1931, 1948, 1954, 1947, 1948, 1960, 1950, + 1949, 1955, 0, 1952, 1959, 0, 1949, 1953, 1957, 1969, + 1951, 1957, 0, 1966, 0, 1956, 1974, 0, 1963, 1970, + 0, 1960, 1964, 1968, 1980, 1962, 1968, 1982, 1971, 1971, + 1984, 1976, 1982, 0, 1972, 1977, 1977, 1986, 1992, 1981, + 1981, 1994, 1986, 1992, 0, 1982, 1986, 0, 1971, 2002, + + 1989, 1986, 1997, 0, 1976, 1989, 1994, 0, 1979, 2010, + 1997, 1994, 2005, 2003, 2011, 1997, 2015, 0, 1999, 2015, + 0, 2009, 2017, 2003, 2021, 0, 2005, 2007, 2013, 2019, + 2028, 2005, 2017, 2013, 2019, 2025, 2034, 2011, 0, 2033, + 2023, 2019, 0, 2036, 0, 2037, 2027, 2023, 0, 0, + 2030, 2036, 0, 0, 2032, 2038, 0, 2033, 0, 2034, + 2036, 2037, 0, 0, 2848, 2077, 2088, 2099, 2110, 2121, + 2132, 2141, 2152, 2160, 2168, 2176, 2184, 2195, 2203, 2214, + 2225, 2236, 2240, 2249, 2257, 2265, 2273, 2275, 2286, 2297, + 2308, 2312, 2321, 2332, 2343, 2354, 2365 + + } ; + +static yyconst flex_int16_t yy_def[1798] = + { 0, + 1766, 1766, 1765, 3, 1767, 1767, 1765, 7, 1765, 9, + 1768, 1768, 1765, 13, 1769, 1769, 1770, 1770, 1771, 1771, + 1765, 1765, 1765, 1765, 1765, 1772, 1773, 1772, 1765, 1765, + 1765, 1765, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1765, 1765, 1772, 1765, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1765, 1765, 1765, 1772, 1765, 1773, 1774, 1765, + 1765, 1765, 1765, 1774, 1775, 1774, 1765, 1765, 1765, 1773, + 1776, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1776, + + 1776, 1765, 102, 1765, 1765, 1765, 1765, 1765, 1765, 1776, + 110, 110, 110, 110, 110, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1765, 1765, 110, 1776, 1765, + 1765, 1765, 1776, 1774, 1765, 1774, 1774, 1765, 1765, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1777, 1765, 1765, 1777, 1765, 1765, + 1765, 1778, 1779, 1780, 1765, 1765, 1765, 1779, 1779, 102, + 102, 1765, 1781, 1765, 1765, 1779, 186, 186, 186, 186, + 186, 1779, 1779, 1779, 1779, 1779, 1779, 1765, 1765, 186, + + 186, 186, 186, 186, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1765, 1765, 1782, 1765, 1765, 1783, 1765, 1765, 1765, + 1784, 1784, 1784, 1784, 1765, 1765, 1765, 1772, 1772, 1773, + 1765, 28, 1765, 1765, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 28, 1765, 1765, 1772, 1765, 1765, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1765, 1765, 1765, 1774, 1785, 1765, 1786, 1774, + 1765, 1776, 1776, 1765, 1765, 1765, 1787, 1765, 102, 102, + 320, 1765, 1765, 1788, 1765, 110, 110, 110, 1776, 1776, + 1776, 1776, 110, 1776, 1776, 1776, 110, 110, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 110, 1776, + 134, 1774, 1765, 1788, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1777, 1777, 1778, 1765, 1779, 1779, 1789, 1789, 1790, 1779, + 430, 430, 1779, 1779, 430, 430, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 430, 1779, + 430, 430, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1791, 1792, 1793, 1765, 1793, 1793, + 1793, 1765, 1765, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1785, + 1786, 1774, 1776, 1787, 1788, 1776, 110, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 110, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1777, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1793, 1793, 1793, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1774, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1794, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1795, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1793, 1793, 1793, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1774, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1779, 1779, 1779, + 1779, 1779, 1796, 1794, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1797, 1795, 1779, 1779, 1779, 1779, 1793, + 1793, 1793, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1774, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1793, 1793, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1774, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1779, + 1779, 1779, 1779, 1779, 1779, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1774, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1779, + 1779, 1779, 1779, 1779, 1779, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1774, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1772, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1772, 1772, 1772, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1776, 1776, 1776, + 1776, 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1776, 1776, 1776, 1776, 1776, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1772, 1772, 1772, + 1772, 1772, 1772, 1772, 1772, 1776, 1776, 1776, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1772, 1772, 1772, 1772, + + 1772, 1772, 1772, 1776, 1776, 1776, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1772, 1772, 1772, 1772, 1772, 1772, 1776, + 1776, 1774, 1774, 1774, 1774, 1774, 1774, 1772, 1772, 1772, + 1772, 1772, 1776, 1774, 1774, 1774, 1774, 1774, 1772, 1772, + 1772, 1772, 1772, 1776, 1774, 1774, 1774, 1774, 1774, 1772, + 1772, 1772, 1776, 1774, 1774, 1774, 1772, 1772, 1774, 1774, + 1772, 1774, 1772, 1774, 0, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765 + + } ; + +static yyconst flex_int16_t yy_nxt[2931] = + { 0, + 23, 24, 25, 26, 27, 23, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 37, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 37, 66, 37, 37, + 37, 37, 67, 37, 68, 37, 37, 69, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 70, 37, 37, + 71, 37, 37, 72, 37, 37, 37, 37, 73, 74, + 75, 76, 22, 77, 22, 22, 78, 22, 316, 22, + 22, 80, 81, 22, 22, 82, 83, 233, 84, 22, + + 22, 22, 22, 22, 22, 85, 22, 22, 86, 238, + 243, 244, 234, 212, 213, 212, 213, 214, 233, 214, + 276, 239, 246, 247, 277, 248, 976, 249, 215, 250, + 215, 347, 317, 234, 22, 251, 22, 22, 258, 348, + 260, 259, 252, 253, 261, 263, 462, 269, 265, 254, + 270, 266, 303, 255, 267, 264, 256, 977, 262, 463, + 22, 22, 22, 22, 77, 22, 22, 78, 22, 257, + 22, 22, 80, 81, 22, 22, 82, 83, 322, 84, + 22, 22, 22, 22, 22, 22, 85, 22, 22, 86, + 216, 278, 216, 273, 274, 280, 284, 345, 308, 281, + + 978, 279, 282, 283, 275, 322, 285, 346, 304, 288, + 318, 375, 289, 290, 376, 22, 979, 22, 22, 291, + 292, 293, 243, 244, 294, 295, 246, 247, 349, 296, + 380, 351, 457, 386, 980, 352, 387, 458, 350, 353, + 381, 22, 22, 22, 87, 88, 25, 89, 90, 87, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 100, + 119, 120, 121, 122, 123, 124, 100, 100, 125, 100, + 100, 100, 100, 100, 100, 100, 126, 100, 127, 87, + + 100, 128, 115, 115, 115, 115, 115, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 129, 100, 100, + 100, 100, 130, 131, 132, 133, 87, 88, 25, 89, + 90, 87, 134, 92, 93, 94, 95, 96, 97, 98, + 135, 136, 137, 138, 139, 139, 104, 105, 106, 107, + 108, 109, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 136, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 136, 159, 136, 136, 136, 136, 126, 136, + 127, 87, 136, 160, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 161, 136, 136, 162, 136, 136, 163, + + 136, 136, 136, 136, 130, 131, 132, 164, 87, 87, + 22, 87, 87, 87, 165, 87, 87, 87, 87, 87, + 166, 87, 167, 303, 316, 138, 139, 139, 87, 87, + 87, 169, 87, 87, 240, 240, 240, 619, 441, 333, + 308, 333, 981, 355, 442, 620, 334, 356, 333, 335, + 333, 322, 362, 241, 357, 241, 312, 312, 312, 358, + 87, 336, 87, 87, 382, 312, 312, 383, 307, 393, + 384, 390, 391, 394, 396, 566, 468, 395, 322, 304, + 468, 567, 392, 241, 397, 241, 87, 87, 87, 87, + 87, 22, 87, 87, 87, 165, 87, 87, 87, 87, + + 87, 166, 87, 167, 468, 468, 138, 139, 139, 87, + 87, 87, 169, 87, 87, 337, 333, 377, 333, 338, + 333, 378, 333, 468, 478, 446, 312, 470, 982, 333, + 312, 333, 469, 339, 312, 379, 479, 312, 312, 312, + 447, 87, 340, 87, 87, 402, 312, 312, 365, 398, + 366, 432, 367, 399, 471, 403, 400, 401, 368, 686, + 484, 425, 485, 983, 881, 369, 370, 87, 87, 87, + 23, 24, 170, 171, 23, 172, 173, 29, 30, 31, + 32, 174, 175, 176, 177, 178, 179, 180, 181, 181, + 182, 183, 43, 184, 45, 185, 186, 187, 188, 189, + + 190, 191, 178, 178, 178, 178, 178, 192, 178, 193, + 194, 195, 178, 178, 196, 197, 178, 178, 178, 178, + 178, 178, 198, 178, 199, 23, 178, 200, 201, 202, + 189, 203, 204, 178, 178, 178, 178, 205, 178, 206, + 207, 208, 178, 209, 210, 178, 178, 178, 73, 74, + 75, 211, 23, 212, 213, 23, 23, 214, 571, 23, + 23, 23, 23, 23, 23, 218, 23, 572, 215, 23, + 23, 23, 218, 218, 23, 23, 23, 23, 333, 371, + 333, 435, 432, 372, 432, 491, 373, 507, 312, 984, + 436, 432, 425, 985, 425, 312, 312, 437, 549, 374, + + 508, 425, 492, 432, 23, 23, 23, 23, 406, 359, + 550, 407, 408, 425, 451, 438, 432, 986, 409, 410, + 411, 987, 322, 412, 413, 439, 425, 468, 414, 440, + 219, 23, 220, 23, 23, 212, 213, 23, 23, 214, + 988, 23, 23, 23, 23, 23, 23, 218, 23, 322, + 215, 23, 23, 23, 218, 218, 23, 23, 23, 23, + 240, 240, 240, 432, 432, 432, 241, 499, 241, 553, + 500, 554, 501, 425, 425, 425, 583, 687, 583, 241, + 502, 241, 512, 503, 850, 513, 23, 23, 23, 23, + 851, 514, 242, 468, 449, 452, 241, 561, 241, 523, + + 562, 524, 453, 450, 989, 525, 583, 456, 583, 241, + 563, 241, 219, 23, 220, 23, 23, 212, 213, 242, + 27, 214, 990, 23, 23, 23, 23, 468, 23, 218, + 883, 432, 215, 23, 23, 23, 218, 218, 23, 23, + 23, 425, 363, 363, 363, 600, 588, 333, 991, 333, + 333, 593, 333, 594, 323, 992, 323, 312, 542, 993, + 312, 323, 601, 323, 312, 312, 688, 546, 312, 616, + 635, 468, 636, 454, 364, 617, 637, 222, 624, 223, + 455, 625, 618, 224, 323, 994, 323, 626, 995, 996, + 997, 323, 998, 323, 225, 23, 226, 23, 23, 212, + + 213, 364, 27, 214, 999, 23, 23, 23, 23, 882, + 23, 218, 1000, 1001, 215, 23, 23, 23, 218, 218, + 23, 23, 23, 363, 363, 363, 1002, 866, 1003, 1004, + 333, 1005, 547, 867, 240, 240, 240, 320, 320, 320, + 312, 1006, 323, 1007, 323, 1008, 1009, 312, 312, 1010, + 333, 1011, 333, 241, 1012, 241, 1765, 1013, 1765, 222, + 312, 223, 1014, 1015, 1016, 224, 1017, 312, 312, 322, + 1018, 1019, 323, 1020, 323, 1021, 225, 23, 226, 23, + 232, 232, 232, 241, 1022, 241, 1765, 1025, 1765, 232, + 232, 232, 232, 232, 232, 333, 322, 333, 333, 1026, + + 333, 333, 556, 333, 1027, 312, 1028, 1029, 312, 1030, + 1031, 312, 312, 555, 1032, 312, 312, 1033, 312, 312, + 232, 232, 232, 232, 232, 232, 313, 313, 313, 363, + 363, 363, 1036, 1037, 1038, 313, 313, 313, 313, 313, + 313, 608, 1039, 333, 609, 333, 610, 581, 323, 468, + 323, 468, 468, 312, 611, 1043, 1046, 612, 1047, 753, + 312, 312, 1048, 1044, 1051, 1052, 313, 313, 313, 313, + 313, 313, 319, 319, 319, 1053, 1054, 1049, 323, 1045, + 323, 320, 321, 320, 321, 320, 320, 1055, 322, 1041, + 333, 323, 333, 323, 1050, 322, 1056, 762, 1042, 1057, + + 312, 1040, 1058, 1059, 324, 1060, 1061, 312, 312, 1062, + 1063, 1064, 320, 321, 320, 321, 320, 320, 1065, 322, + 1066, 323, 1067, 323, 1068, 322, 1069, 1070, 1071, 1072, + 1073, 324, 326, 326, 326, 1074, 1075, 1076, 1077, 1078, + 1081, 326, 327, 326, 328, 326, 326, 1082, 329, 1079, + 1083, 1084, 330, 1085, 1086, 329, 1087, 1088, 1089, 331, + 332, 1080, 1090, 1093, 329, 1091, 1094, 1095, 1096, 1097, + 1098, 1099, 326, 333, 326, 333, 326, 326, 1100, 329, + 1101, 1092, 1102, 1103, 1104, 329, 1105, 1106, 1107, 1108, + 1109, 329, 361, 361, 361, 1110, 1111, 1112, 1113, 1114, + + 1115, 361, 361, 361, 361, 361, 361, 1116, 1117, 1118, + 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1129, 1130, + 1131, 1132, 1133, 1134, 1135, 1119, 1136, 1137, 1138, 1123, + 1139, 1140, 361, 361, 361, 361, 361, 361, 422, 422, + 422, 1141, 1142, 1143, 1144, 1145, 1146, 422, 422, 422, + 422, 422, 422, 1147, 1148, 1149, 1150, 1151, 1152, 1153, + 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, + 1165, 1154, 1166, 1167, 1168, 1169, 1170, 1171, 422, 422, + 422, 422, 422, 422, 426, 426, 426, 1172, 1173, 1174, + 468, 468, 1177, 426, 426, 426, 426, 426, 426, 468, + + 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 426, 426, 426, 426, 426, 426, + 430, 430, 430, 1202, 1203, 1204, 1205, 1176, 1206, 430, + 431, 430, 432, 430, 430, 1207, 433, 1208, 1175, 1209, + 434, 1210, 1211, 433, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1219, 433, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + 430, 432, 430, 432, 430, 430, 1227, 433, 1228, 1229, + 1230, 1231, 1232, 433, 1233, 1234, 1235, 1236, 1237, 433, + 313, 313, 313, 1238, 1239, 1240, 1241, 1242, 1243, 313, + + 313, 313, 313, 313, 313, 1244, 1245, 1246, 1247, 543, + 1248, 543, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, + 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, + 313, 313, 313, 313, 313, 313, 1267, 1268, 1269, 543, + 1270, 543, 422, 422, 422, 1271, 1272, 1273, 1274, 1275, + 468, 422, 422, 422, 422, 422, 422, 468, 1276, 1277, + 1278, 652, 1279, 652, 1280, 1281, 1282, 1283, 1284, 1285, + 1286, 1287, 1288, 1289, 1290, 1291, 1293, 1294, 1295, 1296, + 1292, 1297, 422, 422, 422, 422, 422, 422, 1298, 1299, + 1300, 652, 1301, 652, 426, 426, 426, 1302, 1303, 1304, + + 1305, 1306, 1307, 426, 426, 426, 426, 426, 426, 1308, + 1309, 1310, 1311, 653, 1312, 653, 1313, 1314, 1315, 1316, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, + 1327, 1328, 1329, 1330, 426, 426, 426, 426, 426, 426, + 1331, 1332, 1333, 653, 1334, 653, 430, 430, 430, 1335, + 1336, 1339, 1340, 1341, 1342, 430, 432, 430, 432, 430, + 430, 1337, 433, 1343, 1344, 1345, 1338, 1346, 1347, 433, + 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 433, 1356, + 1357, 1358, 1359, 1360, 1361, 1362, 430, 432, 430, 432, + 430, 430, 1363, 433, 1364, 1365, 1366, 1367, 1368, 433, + + 1369, 1370, 1371, 1372, 1373, 433, 1023, 1023, 1374, 1023, + 1023, 1023, 1375, 1023, 1023, 1023, 1023, 1023, 1378, 1023, + 1376, 1379, 1380, 1381, 1382, 1377, 1383, 1023, 1023, 1023, + 1023, 1023, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1413, + 1414, 1023, 1415, 1416, 1417, 1418, 1411, 1419, 1420, 1421, + 1422, 1412, 1423, 1424, 1425, 1427, 1428, 1429, 1430, 1431, + 1432, 1433, 1426, 1434, 1023, 1023, 1023, 1034, 1034, 1435, + 1034, 1034, 1034, 1436, 1034, 1034, 1034, 1034, 1034, 1437, + + 1034, 1438, 1439, 1440, 1441, 1442, 1443, 1445, 1034, 1034, + 1034, 1034, 1034, 1446, 1444, 1447, 1448, 1449, 1450, 1451, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1461, 1462, + 1463, 1464, 1465, 1466, 1467, 1460, 1468, 1469, 1470, 1471, + 1472, 1473, 1034, 1474, 1475, 1476, 1477, 1478, 1479, 1480, + 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, + 1491, 1492, 1493, 1494, 1495, 1034, 1034, 1034, 1023, 1023, + 1496, 1023, 1023, 1023, 1497, 1023, 1023, 1023, 1023, 1023, + 1498, 1023, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1023, + 1023, 1023, 1023, 1023, 1506, 1507, 1508, 1509, 1510, 1511, + + 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, + 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, + 1532, 1533, 1534, 1023, 1535, 1536, 1537, 1538, 1539, 1540, + 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, + 1551, 1552, 1553, 1554, 1555, 1556, 1023, 1023, 1023, 1034, + 1034, 1557, 1034, 1034, 1034, 1558, 1034, 1034, 1034, 1034, + 1034, 1559, 1034, 1560, 1561, 1562, 1563, 1564, 1565, 1566, + 1034, 1034, 1034, 1034, 1034, 1567, 1568, 1569, 1570, 1571, + 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, + 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, + + 1592, 1593, 1594, 1595, 1034, 1596, 1599, 1600, 1601, 1597, + 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1611, 1612, 1613, + 1609, 1614, 1598, 1615, 1616, 1620, 1617, 1034, 1034, 1034, + 1618, 1621, 1622, 1610, 1623, 1624, 1625, 1626, 1627, 1628, + 1629, 1630, 1631, 1619, 1632, 1633, 1634, 1635, 1636, 1637, + 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, + 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, + 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, + 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, + + 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, + 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, + 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, + 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, + 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 168, + + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 306, 306, 306, 306, 306, 306, 306, + 306, 309, 975, 974, 973, 309, 309, 972, 309, 312, + 312, 971, 312, 312, 312, 312, 312, 421, 970, 969, + 968, 421, 421, 421, 421, 423, 423, 423, 423, 423, + + 423, 423, 423, 423, 423, 423, 425, 425, 967, 425, + 425, 425, 425, 425, 427, 966, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 429, 965, 429, 429, 429, + 429, 429, 429, 429, 429, 429, 465, 964, 465, 465, + 465, 465, 465, 465, 465, 465, 465, 466, 963, 466, + 466, 467, 467, 962, 961, 467, 467, 960, 467, 467, + 540, 540, 540, 540, 540, 540, 540, 540, 541, 541, + 541, 541, 541, 541, 541, 541, 544, 544, 959, 544, + 544, 544, 544, 544, 545, 545, 427, 958, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 429, 957, 429, + + 429, 429, 429, 429, 429, 429, 429, 429, 465, 956, + 465, 465, 465, 465, 465, 465, 465, 465, 465, 466, + 955, 466, 466, 467, 467, 954, 953, 467, 467, 952, + 467, 467, 1024, 951, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1035, 950, 1035, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1023, 949, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1034, 948, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 947, 946, 945, 944, + 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, + 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, + + 923, 922, 921, 920, 919, 918, 917, 916, 915, 914, + 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, + 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, + 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, + 880, 879, 878, 877, 876, 875, 874, 873, 872, 871, + 870, 869, 868, 865, 864, 863, 862, 861, 860, 859, + 858, 857, 856, 855, 854, 853, 852, 849, 848, 847, + 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, + 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, + 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, + + 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, + 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, + 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, + 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, + 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, + 766, 765, 764, 763, 761, 760, 759, 758, 757, 756, + 755, 754, 752, 751, 750, 749, 748, 747, 746, 745, + 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, + 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, + 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, + + 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, + 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, + 694, 693, 692, 691, 690, 689, 467, 468, 685, 684, + 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, + 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, + 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, + 424, 651, 650, 649, 648, 647, 646, 645, 644, 643, + 642, 641, 640, 639, 638, 634, 633, 632, 631, 630, + 629, 628, 627, 623, 622, 621, 615, 614, 613, 607, + 606, 605, 604, 603, 602, 599, 598, 597, 596, 595, + + 592, 591, 590, 589, 587, 586, 585, 584, 582, 580, + 579, 578, 577, 576, 575, 574, 573, 570, 569, 568, + 565, 564, 560, 559, 558, 557, 552, 551, 548, 542, + 305, 539, 538, 537, 536, 535, 534, 533, 532, 531, + 530, 529, 528, 527, 526, 522, 521, 520, 519, 518, + 517, 516, 515, 511, 510, 509, 506, 505, 504, 498, + 497, 496, 495, 494, 493, 490, 489, 488, 487, 486, + 483, 482, 481, 480, 477, 476, 475, 474, 473, 472, + 231, 227, 468, 308, 305, 464, 461, 460, 459, 448, + 445, 444, 443, 325, 318, 316, 315, 428, 424, 311, + + 420, 419, 418, 417, 416, 415, 405, 404, 389, 388, + 385, 360, 354, 344, 343, 342, 341, 325, 315, 314, + 231, 311, 227, 310, 308, 307, 231, 305, 302, 301, + 300, 299, 298, 297, 287, 286, 272, 271, 268, 245, + 237, 236, 235, 231, 229, 227, 1765, 21, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765 + } ; + +static yyconst flex_int16_t yy_chk[2931] = + { 0, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 5, 5, 5, 5, 5, 99, 5, + 5, 5, 5, 5, 5, 5, 5, 30, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 38, + 43, 43, 30, 15, 15, 16, 16, 15, 93, 16, + 58, 38, 45, 45, 58, 47, 801, 47, 15, 47, + 16, 121, 99, 93, 5, 47, 5, 5, 49, 121, + 50, 49, 47, 47, 50, 51, 209, 54, 52, 48, + 54, 52, 74, 48, 52, 51, 48, 802, 50, 209, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 48, + 6, 6, 6, 6, 6, 6, 6, 6, 103, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 15, 59, 16, 57, 57, 60, 61, 120, 101, 60, + + 803, 59, 60, 60, 57, 103, 61, 120, 74, 64, + 101, 142, 64, 64, 142, 6, 804, 6, 6, 64, + 64, 64, 106, 106, 64, 64, 108, 108, 122, 64, + 144, 123, 205, 147, 806, 123, 147, 205, 122, 123, + 144, 6, 6, 6, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + + 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 131, 135, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 40, 40, 40, 393, 192, 111, + 137, 111, 807, 125, 192, 393, 111, 125, 112, 111, + 112, 181, 137, 40, 125, 40, 111, 111, 112, 125, + 11, 112, 11, 11, 145, 112, 112, 145, 135, 151, + 145, 150, 150, 151, 152, 346, 222, 151, 181, 131, + 223, 346, 150, 40, 152, 40, 11, 11, 11, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + + 12, 12, 12, 12, 224, 469, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 113, 113, 143, 113, 113, + 114, 143, 114, 686, 252, 196, 113, 223, 808, 115, + 114, 115, 222, 113, 113, 143, 252, 114, 114, 115, + 196, 12, 114, 12, 12, 154, 115, 115, 140, 153, + 140, 189, 140, 153, 224, 154, 153, 153, 140, 469, + 258, 189, 258, 809, 686, 140, 140, 12, 12, 12, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 17, 17, 17, 17, 17, 17, 350, 17, + 17, 17, 17, 17, 17, 17, 17, 350, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 128, 141, + 128, 187, 187, 141, 201, 264, 141, 275, 128, 810, + 188, 188, 187, 812, 201, 128, 128, 188, 331, 141, + + 275, 188, 264, 190, 17, 17, 17, 17, 157, 128, + 331, 157, 157, 190, 201, 190, 191, 813, 157, 157, + 157, 814, 319, 157, 157, 190, 191, 470, 157, 191, + 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, + 816, 18, 18, 18, 18, 18, 18, 18, 18, 319, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 39, 39, 39, 200, 204, 202, 232, 271, 232, 336, + 271, 336, 271, 200, 204, 202, 361, 470, 361, 39, + 271, 39, 279, 271, 655, 279, 18, 18, 18, 18, + 655, 279, 39, 688, 200, 202, 232, 343, 232, 288, + + 343, 288, 202, 200, 817, 288, 361, 204, 361, 39, + 343, 39, 18, 18, 18, 18, 19, 19, 19, 39, + 19, 19, 818, 19, 19, 19, 19, 471, 19, 19, + 688, 203, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 203, 138, 138, 138, 381, 369, 326, 819, 326, + 327, 375, 327, 375, 545, 821, 545, 326, 369, 823, + 327, 138, 381, 138, 326, 326, 471, 327, 327, 392, + 406, 687, 406, 203, 138, 392, 406, 19, 397, 19, + 203, 397, 392, 19, 545, 824, 545, 397, 825, 826, + 827, 138, 828, 138, 19, 19, 19, 19, 20, 20, + + 20, 138, 20, 20, 829, 20, 20, 20, 20, 687, + 20, 20, 830, 831, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 139, 139, 139, 833, 671, 834, 835, + 328, 836, 328, 671, 240, 240, 240, 320, 320, 320, + 328, 837, 139, 838, 139, 839, 840, 328, 328, 841, + 333, 842, 333, 240, 843, 240, 320, 844, 320, 20, + 333, 20, 845, 846, 847, 20, 848, 333, 333, 320, + 849, 850, 139, 851, 139, 855, 20, 20, 20, 20, + 28, 28, 28, 240, 856, 240, 320, 860, 320, 28, + 28, 28, 28, 28, 28, 337, 320, 337, 338, 861, + + 338, 359, 338, 359, 863, 337, 864, 865, 338, 866, + 867, 359, 337, 337, 871, 338, 338, 872, 359, 359, + 28, 28, 28, 28, 28, 28, 91, 91, 91, 363, + 363, 363, 876, 877, 879, 91, 91, 91, 91, 91, + 91, 388, 880, 547, 388, 547, 388, 359, 363, 881, + 363, 883, 882, 547, 388, 884, 887, 388, 888, 547, + 547, 547, 889, 886, 892, 893, 91, 91, 91, 91, + 91, 91, 102, 102, 102, 894, 897, 891, 363, 886, + 363, 102, 102, 102, 102, 102, 102, 898, 102, 882, + 556, 102, 556, 102, 891, 102, 900, 556, 883, 902, + + 556, 881, 903, 904, 102, 905, 906, 556, 556, 907, + 908, 909, 102, 102, 102, 102, 102, 102, 910, 102, + 911, 102, 912, 102, 913, 102, 914, 915, 916, 917, + 919, 102, 110, 110, 110, 920, 921, 922, 923, 925, + 927, 110, 110, 110, 110, 110, 110, 929, 110, 926, + 930, 931, 110, 932, 933, 110, 934, 935, 936, 110, + 110, 926, 937, 939, 110, 938, 940, 942, 943, 944, + 946, 948, 110, 110, 110, 110, 110, 110, 949, 110, + 950, 938, 951, 952, 953, 110, 954, 955, 956, 957, + 958, 110, 134, 134, 134, 959, 960, 961, 962, 963, + + 964, 134, 134, 134, 134, 134, 134, 965, 966, 968, + 969, 970, 972, 973, 974, 975, 978, 979, 981, 983, + 984, 985, 986, 987, 988, 968, 989, 990, 991, 972, + 992, 993, 134, 134, 134, 134, 134, 134, 165, 165, + 165, 994, 995, 996, 997, 998, 999, 165, 165, 165, + 165, 165, 165, 1001, 1002, 1003, 1004, 1005, 1007, 1008, + 1009, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1020, + 1021, 1008, 1022, 1026, 1028, 1029, 1031, 1032, 165, 165, + 165, 165, 165, 165, 173, 173, 173, 1033, 1037, 1039, + 1041, 1042, 1043, 173, 173, 173, 173, 173, 173, 1040, + + 1044, 1045, 1047, 1049, 1050, 1051, 1052, 1053, 1054, 1056, + 1058, 1059, 1060, 1062, 1064, 1066, 1067, 1069, 1071, 1072, + 1073, 1074, 1075, 1076, 173, 173, 173, 173, 173, 173, + 186, 186, 186, 1077, 1078, 1079, 1080, 1041, 1081, 186, + 186, 186, 186, 186, 186, 1082, 186, 1083, 1040, 1086, + 186, 1087, 1088, 186, 1089, 1090, 1091, 1092, 1094, 1095, + 1096, 1097, 186, 1098, 1100, 1101, 1103, 1104, 1105, 1107, + 186, 186, 186, 186, 186, 186, 1109, 186, 1110, 1111, + 1112, 1113, 1114, 186, 1115, 1116, 1117, 1118, 1119, 186, + 313, 313, 313, 1122, 1123, 1124, 1125, 1126, 1127, 313, + + 313, 313, 313, 313, 313, 1129, 1131, 1132, 1133, 313, + 1135, 313, 1137, 1138, 1140, 1141, 1143, 1145, 1146, 1147, + 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 313, 313, 313, 313, 313, 313, 1160, 1161, 1162, 313, + 1163, 313, 422, 422, 422, 1164, 1168, 1169, 1170, 1174, + 1175, 422, 422, 422, 422, 422, 422, 1176, 1177, 1179, + 1180, 422, 1181, 422, 1182, 1183, 1184, 1186, 1187, 1189, + 1190, 1191, 1192, 1193, 1195, 1196, 1198, 1199, 1200, 1201, + 1196, 1202, 422, 422, 422, 422, 422, 422, 1203, 1204, + 1205, 422, 1208, 422, 426, 426, 426, 1210, 1211, 1212, + + 1213, 1215, 1216, 426, 426, 426, 426, 426, 426, 1217, + 1218, 1220, 1222, 426, 1223, 426, 1224, 1225, 1226, 1228, + 1229, 1230, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1240, + 1241, 1243, 1244, 1246, 426, 426, 426, 426, 426, 426, + 1247, 1248, 1249, 426, 1250, 426, 430, 430, 430, 1251, + 1253, 1256, 1257, 1258, 1259, 430, 430, 430, 430, 430, + 430, 1254, 430, 1260, 1261, 1262, 1254, 1263, 1266, 430, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 430, 1277, + 1278, 1280, 1281, 1282, 1283, 1284, 430, 430, 430, 430, + 430, 430, 1285, 430, 1286, 1287, 1289, 1290, 1291, 430, + + 1292, 1293, 1294, 1295, 1297, 430, 857, 857, 1298, 857, + 857, 857, 1299, 857, 857, 857, 857, 857, 1300, 857, + 1299, 1303, 1304, 1306, 1307, 1299, 1309, 857, 857, 857, + 857, 857, 1310, 1311, 1314, 1315, 1316, 1317, 1318, 1321, + 1323, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1335, + 1336, 1337, 1338, 1339, 1340, 1341, 1343, 1344, 1345, 1346, + 1349, 857, 1356, 1358, 1359, 1360, 1345, 1361, 1362, 1363, + 1364, 1345, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, + 1373, 1374, 1367, 1375, 857, 857, 857, 873, 873, 1376, + 873, 873, 873, 1377, 873, 873, 873, 873, 873, 1379, + + 873, 1381, 1383, 1384, 1385, 1386, 1387, 1388, 873, 873, + 873, 873, 873, 1389, 1387, 1390, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1402, 1410, 1411, 1412, 1414, + 1415, 1416, 873, 1417, 1418, 1419, 1420, 1421, 1422, 1424, + 1427, 1428, 1429, 1430, 1432, 1433, 1434, 1435, 1436, 1437, + 1438, 1439, 1440, 1441, 1442, 873, 873, 873, 1024, 1024, + 1445, 1024, 1024, 1024, 1446, 1024, 1024, 1024, 1024, 1024, + 1447, 1024, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1024, + 1024, 1024, 1024, 1024, 1455, 1456, 1458, 1461, 1462, 1463, + + 1464, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, + 1475, 1476, 1477, 1478, 1479, 1482, 1483, 1484, 1485, 1486, + 1487, 1488, 1489, 1024, 1490, 1491, 1492, 1493, 1494, 1496, + 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, + 1507, 1510, 1511, 1512, 1513, 1514, 1024, 1024, 1024, 1035, + 1035, 1515, 1035, 1035, 1035, 1516, 1035, 1035, 1035, 1035, + 1035, 1517, 1035, 1518, 1519, 1521, 1522, 1524, 1525, 1526, + 1035, 1035, 1035, 1035, 1035, 1527, 1528, 1530, 1531, 1532, + 1533, 1535, 1536, 1537, 1539, 1540, 1541, 1542, 1543, 1544, + 1546, 1547, 1549, 1550, 1551, 1552, 1553, 1555, 1556, 1557, + + 1558, 1560, 1561, 1562, 1035, 1563, 1564, 1565, 1566, 1563, + 1568, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1579, + 1575, 1580, 1563, 1581, 1582, 1584, 1583, 1035, 1035, 1035, + 1583, 1585, 1586, 1575, 1588, 1590, 1591, 1592, 1593, 1594, + 1595, 1596, 1597, 1583, 1598, 1599, 1600, 1601, 1604, 1605, + 1607, 1608, 1609, 1610, 1611, 1615, 1616, 1617, 1618, 1619, + 1620, 1621, 1622, 1625, 1626, 1628, 1629, 1630, 1631, 1632, + 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, + 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, + 1654, 1655, 1657, 1658, 1659, 1660, 1661, 1662, 1664, 1666, + + 1667, 1669, 1670, 1672, 1673, 1674, 1675, 1676, 1677, 1678, + 1679, 1680, 1681, 1682, 1683, 1685, 1686, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1696, 1697, 1699, 1700, 1701, + 1702, 1703, 1705, 1706, 1707, 1709, 1710, 1711, 1712, 1713, + 1714, 1715, 1716, 1717, 1719, 1720, 1722, 1723, 1724, 1725, + 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, + 1737, 1738, 1740, 1741, 1742, 1744, 1746, 1747, 1748, 1751, + 1752, 1755, 1756, 1758, 1760, 1761, 1762, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1768, + + 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, + 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, + 1769, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, + 1770, 1770, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, + 1771, 1771, 1771, 1772, 1772, 1772, 1772, 1772, 1772, 1772, + 1772, 1772, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1775, 800, 799, 798, 1775, 1775, 796, 1775, 1776, + 1776, 794, 1776, 1776, 1776, 1776, 1776, 1777, 792, 791, + 790, 1777, 1777, 1777, 1777, 1778, 1778, 1778, 1778, 1778, + + 1778, 1778, 1778, 1778, 1778, 1778, 1779, 1779, 789, 1779, + 1779, 1779, 1779, 1779, 1780, 787, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1781, 786, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1782, 785, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1783, 784, 1783, + 1783, 1784, 1784, 783, 782, 1784, 1784, 781, 1784, 1784, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1786, + 1786, 1786, 1786, 1786, 1786, 1786, 1787, 1787, 780, 1787, + 1787, 1787, 1787, 1787, 1788, 1788, 1789, 779, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1790, 778, 1790, + + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1791, 777, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1792, + 776, 1792, 1792, 1793, 1793, 775, 773, 1793, 1793, 772, + 1793, 1793, 1794, 771, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1795, 769, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1796, 767, 1796, 1796, 1796, 1796, + 1796, 1796, 1796, 1796, 1796, 1797, 766, 1797, 1797, 1797, + 1797, 1797, 1797, 1797, 1797, 1797, 765, 764, 763, 762, + 761, 759, 758, 756, 755, 754, 752, 751, 750, 749, + 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, + + 738, 737, 736, 735, 733, 732, 731, 730, 729, 728, + 727, 726, 725, 723, 721, 720, 719, 717, 716, 715, + 713, 712, 711, 710, 709, 707, 706, 705, 704, 703, + 702, 701, 699, 697, 695, 694, 693, 692, 691, 689, + 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, + 674, 673, 672, 670, 669, 668, 667, 666, 665, 664, + 663, 662, 661, 660, 658, 657, 656, 654, 651, 648, + 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, + 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, + 627, 626, 625, 624, 623, 621, 618, 617, 616, 615, + + 614, 613, 612, 611, 610, 609, 608, 606, 605, 604, + 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, + 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, + 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, + 572, 571, 570, 567, 566, 565, 564, 563, 562, 561, + 560, 559, 558, 557, 555, 554, 553, 552, 551, 550, + 549, 548, 546, 542, 539, 536, 535, 534, 533, 532, + 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, + 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, + 511, 510, 508, 507, 506, 505, 504, 503, 502, 501, + + 500, 499, 497, 496, 495, 494, 493, 492, 491, 490, + 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, + 479, 478, 477, 476, 475, 474, 468, 467, 464, 463, + 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, + 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, + 442, 441, 440, 439, 438, 437, 436, 435, 434, 431, + 423, 420, 419, 418, 417, 416, 415, 414, 413, 412, + 411, 410, 409, 408, 407, 405, 404, 403, 402, 401, + 400, 399, 398, 396, 395, 394, 391, 390, 389, 387, + 386, 385, 384, 383, 382, 380, 379, 378, 377, 376, + + 374, 373, 372, 371, 368, 367, 366, 365, 360, 358, + 357, 356, 355, 354, 353, 352, 351, 349, 348, 347, + 345, 344, 342, 341, 340, 339, 335, 334, 330, 310, + 305, 302, 301, 300, 299, 298, 297, 296, 295, 294, + 293, 292, 291, 290, 289, 287, 286, 285, 284, 283, + 282, 281, 280, 278, 277, 276, 274, 273, 272, 270, + 269, 268, 267, 266, 265, 263, 262, 261, 260, 259, + 257, 256, 255, 254, 251, 250, 249, 248, 247, 243, + 230, 227, 221, 215, 212, 210, 208, 207, 206, 197, + 195, 194, 193, 184, 179, 177, 175, 174, 172, 171, + + 163, 162, 161, 160, 159, 158, 156, 155, 149, 148, + 146, 129, 124, 119, 118, 117, 116, 107, 97, 96, + 90, 89, 88, 86, 84, 83, 78, 77, 72, 71, + 70, 69, 66, 65, 63, 62, 56, 55, 53, 44, + 36, 34, 33, 27, 26, 24, 21, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "ldlex.l" +#line 4 "ldlex.l" + +/* Copyright (C) 1991-2014 Free Software Foundation, Inc. + Written by Steve Chamberlain of Cygnus Support. + + This file is part of the GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "bfd.h" +#include "safe-ctype.h" +#include "bfdlink.h" +#include "ld.h" +#include "ldmisc.h" +#include "ldexp.h" +#include "ldlang.h" +#include +#include "ldfile.h" +#include "ldlex.h" +#include "ldmain.h" +#include "libiberty.h" + +/* The type of top-level parser input. + yylex and yyparse (indirectly) both check this. */ +input_type parser_input; + +/* Line number in the current input file. + (FIXME Actually, it doesn't appear to get reset for each file?) */ +unsigned int lineno = 1; + +/* The string we are currently lexing, or NULL if we are reading a + file. */ +const char *lex_string = NULL; + +/* Support for flex reading from more than one input file (stream). + `include_stack' is flex's input state for each open file; + `file_name_stack' is the file names. `lineno_stack' is the current + line numbers. + + If `include_stack_ptr' is 0, we haven't started reading anything yet. + Otherwise, stack elements 0 through `include_stack_ptr - 1' are valid. */ + +#undef YY_INPUT +#define YY_INPUT(buf,result,max_size) result = yy_input (buf, max_size) + +#ifndef YY_NO_UNPUT +#define YY_NO_UNPUT +#endif + +#define MAX_INCLUDE_DEPTH 10 +static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; +static const char *file_name_stack[MAX_INCLUDE_DEPTH]; +static unsigned int lineno_stack[MAX_INCLUDE_DEPTH]; +static unsigned int sysrooted_stack[MAX_INCLUDE_DEPTH]; +static unsigned int include_stack_ptr = 0; +static int vers_node_nesting = 0; + +static int yy_input (char *, int); +static void comment (void); +static void lex_warn_invalid (char *where, char *what); + +/* STATES + EXPRESSION definitely in an expression + SCRIPT definitely in a script + INPUTLIST definitely in a script, a filename-list + BOTH either EXPRESSION or SCRIPT + DEFSYMEXP in an argument to -defsym + MRI in an MRI script + VERS_START starting a Sun style mapfile + VERS_SCRIPT a Sun style mapfile + VERS_NODE a node within a Sun style mapfile +*/ +#define RTOKEN(x) { yylval.token = x; return x; } + +/* Some versions of flex want this. */ +#ifndef yywrap +int yywrap (void) { return 1; } +#endif + + + + + + + + + +#line 1787 "ldlex.c" + +#define INITIAL 0 +#define SCRIPT 1 +#define INPUTLIST 2 +#define EXPRESSION 3 +#define BOTH 4 +#define DEFSYMEXP 5 +#define MRI 6 +#define VERS_START 7 +#define VERS_SCRIPT 8 +#define VERS_NODE 9 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 121 "ldlex.l" + + + if (parser_input != input_selected) + { + /* The first token of the input determines the initial parser state. */ + input_type t = parser_input; + parser_input = input_selected; + switch (t) + { + case input_script: return INPUT_SCRIPT; break; + case input_mri_script: return INPUT_MRI_SCRIPT; break; + case input_version_script: return INPUT_VERSION_SCRIPT; break; + case input_dynamic_list: return INPUT_DYNAMIC_LIST; break; + case input_defsym: return INPUT_DEFSYM; break; + default: abort (); + } + } + +#line 1995 "ldlex.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1766 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 2848 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 139 "ldlex.l" +{ comment (); } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 142 "ldlex.l" +{ RTOKEN('-');} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 143 "ldlex.l" +{ RTOKEN('+');} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 144 "ldlex.l" +{ yylval.name = xstrdup (yytext); return NAME; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 145 "ldlex.l" +{ RTOKEN('='); } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 147 "ldlex.l" +{ + yylval.integer = bfd_scan_vma (yytext + 1, 0, 16); + yylval.bigint.str = NULL; + return INT; + } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 153 "ldlex.l" +{ + int ibase ; + switch (yytext[yyleng - 1]) { + case 'X': + case 'x': + case 'H': + case 'h': + ibase = 16; + break; + case 'O': + case 'o': + ibase = 8; + break; + case 'B': + case 'b': + ibase = 2; + break; + default: + ibase = 10; + } + yylval.integer = bfd_scan_vma (yytext, 0, + ibase); + yylval.bigint.str = NULL; + return INT; + } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 178 "ldlex.l" +{ + char *s = yytext; + int ibase = 0; + + if (*s == '$') + { + ++s; + ibase = 16; + } + yylval.integer = bfd_scan_vma (s, 0, ibase); + yylval.bigint.str = NULL; + if (yytext[yyleng - 1] == 'M' + || yytext[yyleng - 1] == 'm') + { + yylval.integer *= 1024 * 1024; + } + else if (yytext[yyleng - 1] == 'K' + || yytext[yyleng - 1]=='k') + { + yylval.integer *= 1024; + } + else if (yytext[0] == '0' + && (yytext[1] == 'x' + || yytext[1] == 'X')) + { + yylval.bigint.str = xstrdup (yytext + 2); + } + return INT; + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 207 "ldlex.l" +{ RTOKEN(']');} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 208 "ldlex.l" +{ RTOKEN('[');} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 209 "ldlex.l" +{ RTOKEN(LSHIFTEQ);} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 210 "ldlex.l" +{ RTOKEN(RSHIFTEQ);} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 211 "ldlex.l" +{ RTOKEN(OROR);} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 212 "ldlex.l" +{ RTOKEN(EQ);} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 213 "ldlex.l" +{ RTOKEN(NE);} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 214 "ldlex.l" +{ RTOKEN(GE);} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 215 "ldlex.l" +{ RTOKEN(LE);} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 216 "ldlex.l" +{ RTOKEN(LSHIFT);} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 217 "ldlex.l" +{ RTOKEN(RSHIFT);} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 218 "ldlex.l" +{ RTOKEN(PLUSEQ);} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 219 "ldlex.l" +{ RTOKEN(MINUSEQ);} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 220 "ldlex.l" +{ RTOKEN(MULTEQ);} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 221 "ldlex.l" +{ RTOKEN(DIVEQ);} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 222 "ldlex.l" +{ RTOKEN(ANDEQ);} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 223 "ldlex.l" +{ RTOKEN(OREQ);} + YY_BREAK +case 26: +YY_RULE_SETUP +#line 224 "ldlex.l" +{ RTOKEN(ANDAND);} + YY_BREAK +case 27: +YY_RULE_SETUP +#line 225 "ldlex.l" +{ RTOKEN('>');} + YY_BREAK +case 28: +YY_RULE_SETUP +#line 226 "ldlex.l" +{ RTOKEN(',');} + YY_BREAK +case 29: +YY_RULE_SETUP +#line 227 "ldlex.l" +{ RTOKEN('&');} + YY_BREAK +case 30: +YY_RULE_SETUP +#line 228 "ldlex.l" +{ RTOKEN('|');} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 229 "ldlex.l" +{ RTOKEN('~');} + YY_BREAK +case 32: +YY_RULE_SETUP +#line 230 "ldlex.l" +{ RTOKEN('!');} + YY_BREAK +case 33: +YY_RULE_SETUP +#line 231 "ldlex.l" +{ RTOKEN('?');} + YY_BREAK +case 34: +YY_RULE_SETUP +#line 232 "ldlex.l" +{ RTOKEN('*');} + YY_BREAK +case 35: +YY_RULE_SETUP +#line 233 "ldlex.l" +{ RTOKEN('+');} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 234 "ldlex.l" +{ RTOKEN('-');} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 235 "ldlex.l" +{ RTOKEN('/');} + YY_BREAK +case 38: +YY_RULE_SETUP +#line 236 "ldlex.l" +{ RTOKEN('%');} + YY_BREAK +case 39: +YY_RULE_SETUP +#line 237 "ldlex.l" +{ RTOKEN('<');} + YY_BREAK +case 40: +YY_RULE_SETUP +#line 238 "ldlex.l" +{ RTOKEN('=');} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 239 "ldlex.l" +{ RTOKEN('}') ; } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 240 "ldlex.l" +{ RTOKEN('{'); } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 241 "ldlex.l" +{ RTOKEN(')');} + YY_BREAK +case 44: +YY_RULE_SETUP +#line 242 "ldlex.l" +{ RTOKEN('(');} + YY_BREAK +case 45: +YY_RULE_SETUP +#line 243 "ldlex.l" +{ RTOKEN(':'); } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 244 "ldlex.l" +{ RTOKEN(';');} + YY_BREAK +case 47: +YY_RULE_SETUP +#line 245 "ldlex.l" +{ RTOKEN(MEMORY);} + YY_BREAK +case 48: +YY_RULE_SETUP +#line 246 "ldlex.l" +{ RTOKEN(REGION_ALIAS);} + YY_BREAK +case 49: +YY_RULE_SETUP +#line 247 "ldlex.l" +{ RTOKEN(LD_FEATURE);} + YY_BREAK +case 50: +YY_RULE_SETUP +#line 248 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 51: +YY_RULE_SETUP +#line 249 "ldlex.l" +{ RTOKEN(VERSIONK);} + YY_BREAK +case 52: +YY_RULE_SETUP +#line 250 "ldlex.l" +{ RTOKEN(BLOCK);} + YY_BREAK +case 53: +YY_RULE_SETUP +#line 251 "ldlex.l" +{ RTOKEN(BIND);} + YY_BREAK +case 54: +YY_RULE_SETUP +#line 252 "ldlex.l" +{ RTOKEN(LENGTH);} + YY_BREAK +case 55: +YY_RULE_SETUP +#line 253 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 56: +YY_RULE_SETUP +#line 254 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_ALIGN);} + YY_BREAK +case 57: +YY_RULE_SETUP +#line 255 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_RELRO_END);} + YY_BREAK +case 58: +YY_RULE_SETUP +#line 256 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_END);} + YY_BREAK +case 59: +YY_RULE_SETUP +#line 257 "ldlex.l" +{ RTOKEN(ADDR);} + YY_BREAK +case 60: +YY_RULE_SETUP +#line 258 "ldlex.l" +{ RTOKEN(LOADADDR);} + YY_BREAK +case 61: +YY_RULE_SETUP +#line 259 "ldlex.l" +{ RTOKEN(ALIGNOF); } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 260 "ldlex.l" +{ RTOKEN(MAX_K); } + YY_BREAK +case 63: +YY_RULE_SETUP +#line 261 "ldlex.l" +{ RTOKEN(MIN_K); } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 262 "ldlex.l" +{ RTOKEN(LOG2CEIL); } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 263 "ldlex.l" +{ RTOKEN(ASSERT_K); } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 264 "ldlex.l" +{ RTOKEN(ENTRY);} + YY_BREAK +case 67: +YY_RULE_SETUP +#line 265 "ldlex.l" +{ RTOKEN(EXTERN);} + YY_BREAK +case 68: +YY_RULE_SETUP +#line 266 "ldlex.l" +{ RTOKEN(NEXT);} + YY_BREAK +case 69: +YY_RULE_SETUP +#line 267 "ldlex.l" +{ RTOKEN(SIZEOF_HEADERS);} + YY_BREAK +case 70: +YY_RULE_SETUP +#line 268 "ldlex.l" +{ RTOKEN(SIZEOF_HEADERS);} + YY_BREAK +case 71: +YY_RULE_SETUP +#line 269 "ldlex.l" +{ RTOKEN(SEGMENT_START);} + YY_BREAK +case 72: +YY_RULE_SETUP +#line 270 "ldlex.l" +{ RTOKEN(MAP);} + YY_BREAK +case 73: +YY_RULE_SETUP +#line 271 "ldlex.l" +{ RTOKEN(SIZEOF);} + YY_BREAK +case 74: +YY_RULE_SETUP +#line 272 "ldlex.l" +{ RTOKEN(TARGET_K);} + YY_BREAK +case 75: +YY_RULE_SETUP +#line 273 "ldlex.l" +{ RTOKEN(SEARCH_DIR);} + YY_BREAK +case 76: +YY_RULE_SETUP +#line 274 "ldlex.l" +{ RTOKEN(OUTPUT);} + YY_BREAK +case 77: +YY_RULE_SETUP +#line 275 "ldlex.l" +{ RTOKEN(INPUT);} + YY_BREAK +case 78: +YY_RULE_SETUP +#line 276 "ldlex.l" +{ RTOKEN(GROUP);} + YY_BREAK +case 79: +YY_RULE_SETUP +#line 277 "ldlex.l" +{ RTOKEN(AS_NEEDED);} + YY_BREAK +case 80: +YY_RULE_SETUP +#line 278 "ldlex.l" +{ RTOKEN(DEFINED);} + YY_BREAK +case 81: +YY_RULE_SETUP +#line 279 "ldlex.l" +{ RTOKEN(CREATE_OBJECT_SYMBOLS);} + YY_BREAK +case 82: +YY_RULE_SETUP +#line 280 "ldlex.l" +{ RTOKEN( CONSTRUCTORS);} + YY_BREAK +case 83: +YY_RULE_SETUP +#line 281 "ldlex.l" +{ RTOKEN(FORCE_COMMON_ALLOCATION);} + YY_BREAK +case 84: +YY_RULE_SETUP +#line 282 "ldlex.l" +{ RTOKEN(INHIBIT_COMMON_ALLOCATION);} + YY_BREAK +case 85: +YY_RULE_SETUP +#line 283 "ldlex.l" +{ RTOKEN(SECTIONS);} + YY_BREAK +case 86: +YY_RULE_SETUP +#line 284 "ldlex.l" +{ RTOKEN(INSERT_K);} + YY_BREAK +case 87: +YY_RULE_SETUP +#line 285 "ldlex.l" +{ RTOKEN(AFTER);} + YY_BREAK +case 88: +YY_RULE_SETUP +#line 286 "ldlex.l" +{ RTOKEN(BEFORE);} + YY_BREAK +case 89: +YY_RULE_SETUP +#line 287 "ldlex.l" +{ RTOKEN(FILL);} + YY_BREAK +case 90: +YY_RULE_SETUP +#line 288 "ldlex.l" +{ RTOKEN(STARTUP);} + YY_BREAK +case 91: +YY_RULE_SETUP +#line 289 "ldlex.l" +{ RTOKEN(OUTPUT_FORMAT);} + YY_BREAK +case 92: +YY_RULE_SETUP +#line 290 "ldlex.l" +{ RTOKEN( OUTPUT_ARCH);} + YY_BREAK +case 93: +YY_RULE_SETUP +#line 291 "ldlex.l" +{ RTOKEN(HLL);} + YY_BREAK +case 94: +YY_RULE_SETUP +#line 292 "ldlex.l" +{ RTOKEN(SYSLIB);} + YY_BREAK +case 95: +YY_RULE_SETUP +#line 293 "ldlex.l" +{ RTOKEN(FLOAT);} + YY_BREAK +case 96: +YY_RULE_SETUP +#line 294 "ldlex.l" +{ RTOKEN( QUAD);} + YY_BREAK +case 97: +YY_RULE_SETUP +#line 295 "ldlex.l" +{ RTOKEN( SQUAD);} + YY_BREAK +case 98: +YY_RULE_SETUP +#line 296 "ldlex.l" +{ RTOKEN( LONG);} + YY_BREAK +case 99: +YY_RULE_SETUP +#line 297 "ldlex.l" +{ RTOKEN( SHORT);} + YY_BREAK +case 100: +YY_RULE_SETUP +#line 298 "ldlex.l" +{ RTOKEN( BYTE);} + YY_BREAK +case 101: +YY_RULE_SETUP +#line 299 "ldlex.l" +{ RTOKEN(NOFLOAT);} + YY_BREAK +case 102: +YY_RULE_SETUP +#line 300 "ldlex.l" +{ RTOKEN(NOCROSSREFS);} + YY_BREAK +case 103: +YY_RULE_SETUP +#line 301 "ldlex.l" +{ RTOKEN(OVERLAY); } + YY_BREAK +case 104: +YY_RULE_SETUP +#line 302 "ldlex.l" +{ RTOKEN(SORT_BY_NAME); } + YY_BREAK +case 105: +YY_RULE_SETUP +#line 303 "ldlex.l" +{ RTOKEN(SORT_BY_ALIGNMENT); } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 304 "ldlex.l" +{ RTOKEN(SORT_BY_NAME); } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 305 "ldlex.l" +{ RTOKEN(SORT_BY_INIT_PRIORITY); } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 306 "ldlex.l" +{ RTOKEN(SORT_NONE); } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 307 "ldlex.l" +{ RTOKEN(NOLOAD);} + YY_BREAK +case 110: +YY_RULE_SETUP +#line 308 "ldlex.l" +{ RTOKEN(DSECT);} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 309 "ldlex.l" +{ RTOKEN(COPY);} + YY_BREAK +case 112: +YY_RULE_SETUP +#line 310 "ldlex.l" +{ RTOKEN(INFO);} + YY_BREAK +case 113: +YY_RULE_SETUP +#line 311 "ldlex.l" +{ RTOKEN(OVERLAY);} + YY_BREAK +case 114: +YY_RULE_SETUP +#line 312 "ldlex.l" +{ RTOKEN(ONLY_IF_RO); } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 313 "ldlex.l" +{ RTOKEN(ONLY_IF_RW); } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 314 "ldlex.l" +{ RTOKEN(SPECIAL); } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 315 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 118: +YY_RULE_SETUP +#line 316 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 119: +YY_RULE_SETUP +#line 317 "ldlex.l" +{ RTOKEN( LENGTH);} + YY_BREAK +case 120: +YY_RULE_SETUP +#line 318 "ldlex.l" +{ RTOKEN( LENGTH);} + YY_BREAK +case 121: +YY_RULE_SETUP +#line 319 "ldlex.l" +{ RTOKEN(INPUT_SECTION_FLAGS); } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 320 "ldlex.l" +{ RTOKEN(INCLUDE);} + YY_BREAK +case 123: +YY_RULE_SETUP +#line 321 "ldlex.l" +{ RTOKEN (PHDRS); } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 322 "ldlex.l" +{ RTOKEN(AT);} + YY_BREAK +case 125: +YY_RULE_SETUP +#line 323 "ldlex.l" +{ RTOKEN(ALIGN_WITH_INPUT);} + YY_BREAK +case 126: +YY_RULE_SETUP +#line 324 "ldlex.l" +{ RTOKEN(SUBALIGN);} + YY_BREAK +case 127: +YY_RULE_SETUP +#line 325 "ldlex.l" +{ RTOKEN(HIDDEN); } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 326 "ldlex.l" +{ RTOKEN(PROVIDE); } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 327 "ldlex.l" +{ RTOKEN(PROVIDE_HIDDEN); } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 328 "ldlex.l" +{ RTOKEN(KEEP); } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 329 "ldlex.l" +{ RTOKEN(EXCLUDE_FILE); } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 330 "ldlex.l" +{ RTOKEN(CONSTANT);} + YY_BREAK +case 133: +/* rule 133 can match eol */ +YY_RULE_SETUP +#line 331 "ldlex.l" +{ ++ lineno; } + YY_BREAK +case 134: +/* rule 134 can match eol */ +YY_RULE_SETUP +#line 332 "ldlex.l" +{ ++ lineno; RTOKEN(NEWLINE); } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 333 "ldlex.l" +{ /* Mri comment line */ } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 334 "ldlex.l" +{ /* Mri comment line */ } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 335 "ldlex.l" +{ RTOKEN(ENDWORD); } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 336 "ldlex.l" +{ RTOKEN(ALIGNMOD);} + YY_BREAK +case 139: +YY_RULE_SETUP +#line 337 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 140: +YY_RULE_SETUP +#line 338 "ldlex.l" +{ RTOKEN(CHIP); } + YY_BREAK +case 141: +YY_RULE_SETUP +#line 339 "ldlex.l" +{ RTOKEN(BASE); } + YY_BREAK +case 142: +YY_RULE_SETUP +#line 340 "ldlex.l" +{ RTOKEN(ALIAS); } + YY_BREAK +case 143: +YY_RULE_SETUP +#line 341 "ldlex.l" +{ RTOKEN(TRUNCATE); } + YY_BREAK +case 144: +YY_RULE_SETUP +#line 342 "ldlex.l" +{ RTOKEN(LOAD); } + YY_BREAK +case 145: +YY_RULE_SETUP +#line 343 "ldlex.l" +{ RTOKEN(PUBLIC); } + YY_BREAK +case 146: +YY_RULE_SETUP +#line 344 "ldlex.l" +{ RTOKEN(ORDER); } + YY_BREAK +case 147: +YY_RULE_SETUP +#line 345 "ldlex.l" +{ RTOKEN(NAMEWORD); } + YY_BREAK +case 148: +YY_RULE_SETUP +#line 346 "ldlex.l" +{ RTOKEN(FORMAT); } + YY_BREAK +case 149: +YY_RULE_SETUP +#line 347 "ldlex.l" +{ RTOKEN(CASE); } + YY_BREAK +case 150: +YY_RULE_SETUP +#line 348 "ldlex.l" +{ RTOKEN(START); } + YY_BREAK +case 151: +YY_RULE_SETUP +#line 349 "ldlex.l" +{ RTOKEN(LIST); /* LIST and ignore to end of line */ } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 350 "ldlex.l" +{ RTOKEN(SECT); } + YY_BREAK +case 153: +YY_RULE_SETUP +#line 351 "ldlex.l" +{ RTOKEN(ABSOLUTE); } + YY_BREAK +case 154: +YY_RULE_SETUP +#line 352 "ldlex.l" +{ RTOKEN(ENDWORD); } + YY_BREAK +case 155: +YY_RULE_SETUP +#line 353 "ldlex.l" +{ RTOKEN(ALIGNMOD);} + YY_BREAK +case 156: +YY_RULE_SETUP +#line 354 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 157: +YY_RULE_SETUP +#line 355 "ldlex.l" +{ RTOKEN(CHIP); } + YY_BREAK +case 158: +YY_RULE_SETUP +#line 356 "ldlex.l" +{ RTOKEN(BASE); } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 357 "ldlex.l" +{ RTOKEN(ALIAS); } + YY_BREAK +case 160: +YY_RULE_SETUP +#line 358 "ldlex.l" +{ RTOKEN(TRUNCATE); } + YY_BREAK +case 161: +YY_RULE_SETUP +#line 359 "ldlex.l" +{ RTOKEN(LOAD); } + YY_BREAK +case 162: +YY_RULE_SETUP +#line 360 "ldlex.l" +{ RTOKEN(PUBLIC); } + YY_BREAK +case 163: +YY_RULE_SETUP +#line 361 "ldlex.l" +{ RTOKEN(ORDER); } + YY_BREAK +case 164: +YY_RULE_SETUP +#line 362 "ldlex.l" +{ RTOKEN(NAMEWORD); } + YY_BREAK +case 165: +YY_RULE_SETUP +#line 363 "ldlex.l" +{ RTOKEN(FORMAT); } + YY_BREAK +case 166: +YY_RULE_SETUP +#line 364 "ldlex.l" +{ RTOKEN(CASE); } + YY_BREAK +case 167: +YY_RULE_SETUP +#line 365 "ldlex.l" +{ RTOKEN(EXTERN); } + YY_BREAK +case 168: +YY_RULE_SETUP +#line 366 "ldlex.l" +{ RTOKEN(START); } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 367 "ldlex.l" +{ RTOKEN(LIST); /* LIST and ignore to end of line */ } + YY_BREAK +case 170: +YY_RULE_SETUP +#line 368 "ldlex.l" +{ RTOKEN(SECT); } + YY_BREAK +case 171: +YY_RULE_SETUP +#line 369 "ldlex.l" +{ RTOKEN(ABSOLUTE); } + YY_BREAK +case 172: +YY_RULE_SETUP +#line 371 "ldlex.l" +{ +/* Filename without commas, needed to parse mri stuff */ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 173: +YY_RULE_SETUP +#line 378 "ldlex.l" +{ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 174: +YY_RULE_SETUP +#line 382 "ldlex.l" +{ +/* Filename to be prefixed by --sysroot or when non-sysrooted, nothing. */ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 387 "ldlex.l" +{ + yylval.name = xstrdup (yytext + 2); + return LNAME; + } + YY_BREAK +case 176: +YY_RULE_SETUP +#line 391 "ldlex.l" +{ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 177: +YY_RULE_SETUP +#line 395 "ldlex.l" +{ + yylval.name = xstrdup (yytext + 2); + return LNAME; + } + YY_BREAK +case 178: +YY_RULE_SETUP +#line 399 "ldlex.l" +{ + /* Annoyingly, this pattern can match comments, and we have + longest match issues to consider. So if the first two + characters are a comment opening, put the input back and + try again. */ + if (yytext[0] == '/' && yytext[1] == '*') + { + yyless (2); + comment (); + } + else + { + yylval.name = xstrdup (yytext); + return NAME; + } + } + YY_BREAK +case 179: +/* rule 179 can match eol */ +YY_RULE_SETUP +#line 416 "ldlex.l" +{ + /* No matter the state, quotes + give what's inside */ + yylval.name = xstrdup (yytext + 1); + yylval.name[yyleng - 2] = 0; + return NAME; + } + YY_BREAK +case 180: +/* rule 180 can match eol */ +YY_RULE_SETUP +#line 423 "ldlex.l" +{ lineno++;} + YY_BREAK +case 181: +YY_RULE_SETUP +#line 424 "ldlex.l" +{ } + YY_BREAK +case 182: +YY_RULE_SETUP +#line 426 "ldlex.l" +{ return *yytext; } + YY_BREAK +case 183: +YY_RULE_SETUP +#line 428 "ldlex.l" +{ RTOKEN(GLOBAL); } + YY_BREAK +case 184: +YY_RULE_SETUP +#line 430 "ldlex.l" +{ RTOKEN(LOCAL); } + YY_BREAK +case 185: +YY_RULE_SETUP +#line 432 "ldlex.l" +{ RTOKEN(EXTERN); } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 434 "ldlex.l" +{ yylval.name = xstrdup (yytext); + return VERS_IDENTIFIER; } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 437 "ldlex.l" +{ yylval.name = xstrdup (yytext); + return VERS_TAG; } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 440 "ldlex.l" +{ BEGIN(VERS_SCRIPT); return *yytext; } + YY_BREAK +case 189: +YY_RULE_SETUP +#line 442 "ldlex.l" +{ BEGIN(VERS_NODE); + vers_node_nesting = 0; + return *yytext; + } + YY_BREAK +case 190: +YY_RULE_SETUP +#line 446 "ldlex.l" +{ return *yytext; } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 447 "ldlex.l" +{ vers_node_nesting++; return *yytext; } + YY_BREAK +case 192: +YY_RULE_SETUP +#line 448 "ldlex.l" +{ if (--vers_node_nesting < 0) + BEGIN(VERS_SCRIPT); + return *yytext; + } + YY_BREAK +case 193: +/* rule 193 can match eol */ +YY_RULE_SETUP +#line 453 "ldlex.l" +{ lineno++; } + YY_BREAK +case 194: +YY_RULE_SETUP +#line 455 "ldlex.l" +{ /* Eat up comments */ } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 457 "ldlex.l" +{ /* Eat up whitespace */ } + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(SCRIPT): +case YY_STATE_EOF(INPUTLIST): +case YY_STATE_EOF(EXPRESSION): +case YY_STATE_EOF(BOTH): +case YY_STATE_EOF(DEFSYMEXP): +case YY_STATE_EOF(MRI): +case YY_STATE_EOF(VERS_START): +case YY_STATE_EOF(VERS_SCRIPT): +case YY_STATE_EOF(VERS_NODE): +#line 459 "ldlex.l" +{ + include_stack_ptr--; + if (include_stack_ptr == 0) + yyterminate (); + else + yy_switch_to_buffer (include_stack[include_stack_ptr]); + + lineno = lineno_stack[include_stack_ptr]; + input_flags.sysrooted = sysrooted_stack[include_stack_ptr]; + + return END; +} + YY_BREAK +case 196: +YY_RULE_SETUP +#line 472 "ldlex.l" +lex_warn_invalid (" in script", yytext); + YY_BREAK +case 197: +YY_RULE_SETUP +#line 473 "ldlex.l" +lex_warn_invalid (" in expression", yytext); + YY_BREAK +case 198: +YY_RULE_SETUP +#line 475 "ldlex.l" +ECHO; + YY_BREAK +#line 3202 "ldlex.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1766 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1766 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 1765); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 475 "ldlex.l" + + + + +/* Switch flex to reading script file NAME, open on FILE, + saving the current input info on the include stack. */ + +void +lex_push_file (FILE *file, const char *name, unsigned int sysrooted) +{ + if (include_stack_ptr >= MAX_INCLUDE_DEPTH) + { + einfo ("%F:includes nested too deeply\n"); + } + file_name_stack[include_stack_ptr] = name; + lineno_stack[include_stack_ptr] = lineno; + sysrooted_stack[include_stack_ptr] = input_flags.sysrooted; + include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; + + include_stack_ptr++; + lineno = 1; + input_flags.sysrooted = sysrooted; + yyin = file; + yy_switch_to_buffer (yy_create_buffer (yyin, YY_BUF_SIZE)); +} + +/* Return a newly created flex input buffer containing STRING, + which is SIZE bytes long. */ + +static YY_BUFFER_STATE +yy_create_string_buffer (const char *string, size_t size) +{ + YY_BUFFER_STATE b; + + /* Calls to m-alloc get turned by sed into xm-alloc. */ + b = malloc (sizeof (struct yy_buffer_state)); + b->yy_input_file = 0; + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + we need to put in 2 end-of-buffer characters. */ + b->yy_ch_buf = malloc ((unsigned) (b->yy_buf_size + 3)); + + b->yy_ch_buf[0] = '\n'; + strcpy (b->yy_ch_buf+1, string); + b->yy_ch_buf[size+1] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[size+2] = YY_END_OF_BUFFER_CHAR; + b->yy_n_chars = size+1; + b->yy_buf_pos = &b->yy_ch_buf[1]; + + b->yy_is_our_buffer = 1; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + + /* flex 2.4.7 changed the interface. FIXME: We should not be using + a flex internal interface in the first place! */ +#ifdef YY_BUFFER_NEW + b->yy_buffer_status = YY_BUFFER_NEW; +#else + b->yy_eof_status = EOF_NOT_SEEN; +#endif + + return b; +} + +/* Switch flex to reading from STRING, saving the current input info + on the include stack. */ + +void +lex_redirect (const char *string, const char *fake_filename, unsigned int count) +{ + YY_BUFFER_STATE tmp; + + yy_init = 0; + if (include_stack_ptr >= MAX_INCLUDE_DEPTH) + { + einfo("%F: macros nested too deeply\n"); + } + file_name_stack[include_stack_ptr] = fake_filename; + lineno_stack[include_stack_ptr] = lineno; + include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; + include_stack_ptr++; + lineno = count; + tmp = yy_create_string_buffer (string, strlen (string)); + yy_switch_to_buffer (tmp); +} + +/* Functions to switch to a different flex start condition, + saving the current start condition on `state_stack'. */ + +static int state_stack[MAX_INCLUDE_DEPTH * 2]; +static int *state_stack_p = state_stack; + +void +ldlex_script (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (SCRIPT); +} + +void +ldlex_inputlist (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (INPUTLIST); +} + +void +ldlex_mri_script (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (MRI); +} + +void +ldlex_version_script (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (VERS_START); +} + +void +ldlex_version_file (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (VERS_SCRIPT); +} + +void +ldlex_defsym (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (DEFSYMEXP); +} + +void +ldlex_expression (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (EXPRESSION); +} + +void +ldlex_both (void) +{ + *(state_stack_p)++ = yy_start; + BEGIN (BOTH); +} + +void +ldlex_popstate (void) +{ + yy_start = *(--state_stack_p); +} + +/* Return the current file name, or the previous file if no file is + current. */ + +const char* +ldlex_filename (void) +{ + return file_name_stack[include_stack_ptr - (include_stack_ptr != 0)]; +} + + +/* Place up to MAX_SIZE characters in BUF and return + either the number of characters read, or 0 to indicate EOF. */ + +static int +yy_input (char *buf, int max_size) +{ + int result = 0; + if (YY_CURRENT_BUFFER->yy_input_file) + { + if (yyin) + { + result = fread (buf, 1, max_size, yyin); + if (result < max_size && ferror (yyin)) + einfo ("%F%P: read in flex scanner failed\n"); + } + } + return result; +} + +/* Eat the rest of a C-style comment. */ + +static void +comment (void) +{ + int c; + + while (1) + { + c = input(); + while (c != '*' && c != EOF) + { + if (c == '\n') + lineno++; + c = input(); + } + + if (c == '*') + { + c = input(); + while (c == '*') + c = input(); + if (c == '/') + break; /* found the end */ + } + + if (c == '\n') + lineno++; + + if (c == EOF) + { + einfo( "%F%P: EOF in comment\n"); + break; + } + } +} + +/* Warn the user about a garbage character WHAT in the input + in context WHERE. */ + +static void +lex_warn_invalid (char *where, char *what) +{ + char buf[5]; + + /* If we have found an input file whose format we do not recognize, + and we are therefore treating it as a linker script, and we find + an invalid character, then most likely this is a real object file + of some different format. Treat it as such. */ + if (ldfile_assumed_script) + { + bfd_set_error (bfd_error_file_not_recognized); + einfo ("%F%s: file not recognized: %E\n", ldlex_filename ()); + } + + if (! ISPRINT (*what)) + { + sprintf (buf, "\\%03o", *(unsigned char *) what); + what = buf; + } + + einfo ("%P:%S: ignoring invalid character `%s'%s\n", NULL, what, where); +} + diff --git a/ld/po/bg.gmo b/ld/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e187f8fe9a669dc37d18394b069eec9cc21c75ab GIT binary patch literal 74041 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%0DZUzB(f@{UWp^s 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 GS^p2;oZDjn literal 0 Hc-jL100001 diff --git a/ld/po/da.gmo b/ld/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f54a23fbd79c89baa43d73593043bb8ff1b47b2c GIT binary patch literal 34929 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 EFX3b-kpKVy literal 0 Hc-jL100001 diff --git a/ld/po/es.gmo b/ld/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..feea37407f77562e35f3dbbc30d720b3e67efbec GIT binary patch literal 58358 zc-qZubIbbtODyZ=w^;J`FAFW}Z>aoN zD*uYgS1rQtcTxFPDwk9FMk)(b9!TXbDo3b1Ta`akWzV}UYmmy%QaMcJqg0+wWye95 zwU)|nQ@Mu9S9Ds|DO9ef@-tLEN##*gPIOt;5S5ov`Ex3NLuE+iGu@VT8kM65Th^&m zK2PQORGzrlvOY=Ws}HfP?^Agem8+@TdMKWM#i4lKe^W`1wvIjw_jeqI>-(sDAC<3p zk7dz6Ymok1PUVN*gK^wOaA~5`EthJk(k$ir1EV%;RH-gT5qTFwNxHYWfzZQ3Hp5j zmCLC7C6%wEvWq%tbHA3Neu2urr1F%dpr`Ywd;^u=Qorw~l2By*(^BB~ZPXZ{#yXD5 zH&OXTDi7uPq4FKvKXw15A0S#`I#T6UD&I-vC#WP6v%c{GwD%~L5zqTkxc;%DK%Z9} zg?4T~3jO>&l}zFX_JVGgP}#}-=*9I-w!Xxcz?Yd{PLPUwABl_3egNY*W&rf~p#il2{Q=zn%_fpPwl z$|JbFl^EyHO5pP(RbE2nUsL%5b^m88G2Xvgh5o#E6|Qfi^6gZfqsp79EO38Ufex1s z0w0w@(BWqXG5;420uPT50^hHo!4PX(?>-v+JML)k&qt01{ato6#(CG#!0Rtm`Dd$v zkAqg@`5RZG{z`0`qRAzbbG=Y z;ALhF`g745z}>zE<9lHZ@ZPo-zu&hOe6gO&9+tc6`ekduZ{J&sc7MGV?Y??g)f>h* z)(@kM8A@Z|hg4TKY>hYgs=3pQZf_iX^*ylf+$J3{3`=A(_Ei_12mpFiISI{%wv!H*-y zLSAk?7V{Pzi*`>v7W4I8RX%qtp7STi;rEi`0Jr5h@ZV|2flseG4)glY$3g$Sm6XFu zZhsT-a``6IdukK#`)9|ay+y~P{h{MA|EC-eJYRY|=Ix>5p}+p;c;IX0W{mSgo0Z&E zzn|HR_Fr`ZS+@oCPTqogS8M_P?%D!+{nss^ ztH0ig`TM|D^!LQA=;xlTnBPaY;(5Q`3c0wz0X?mDFwQLw@cl6d{C1`TykGA?|2(MR ze(FH396&^I0G017K<_Q4@=utbsC+4puK+&mEr8BWE}-4r1@vcM0qs9q!1#VozW{0M&+sr%;)F?==38Kz~>hx0Qb!aCC4WqXMQ#T zI(*$E+B<9#^E5Gu`8j(M{C4{!=3JCDlam>;NoJ=-4v@Yfrl{nY{HZ!|!AK>&Q56`;MF z72Ius>SuuYeINineiJ~>yrznN9$H0zMyi;%LKXD&8Fl~SD*C@q!Tq=jKK@k|<9o@8 zz}K5j#60$#2s#N*gxtOCMBw>}6H%`%M1Ni%qTlZeLFXrgm|s7{IBFrrF%#ms9|_Tq zFNK(=y&>AYH^jL9Jp^9PeriDPKiL5XGWl_*$Dl4FhYC(9s%!fsR6%- z)$sh|YT)a#D$lE7zV5DpPpmrXA5;h4#?|kz4!oXMSI<+|AFQL@|EdFzf3^etc;^oA z;i?@N{}xqFP+4NTi^|(rUhTkm&e#chzeJVaRpsM5(cZu81Rh>Ljd?j_8vUM_MnBG< zMt{FI4Z3(?8g%`#8I$`S=t{>b5zI}2R==C4e{a@|^UVf|K{`@4Ae|-|@;2kHS-^)${y&iuO=6T0S z=+~D{Lc2Gd1bW&><*QlVt9Bkc33z^1wewq5zTsrtKa9!=^0AkmjB#B2LEvNdgOEEv z`5@%Z%RdDAKSY(sP`R1)Bb8fNPE$#u*E;yau)n_iVd&!@Q+X-twT}SqaVn2zdGk^D z$7fLa6~^bsU{BmmL$_$jhUsJ!V@Xz$IRhMcQYxt{gsry+lS_i5NwW1oTlc;RQ@AOD!j4Xm#|3%~p0 zRDPcQr_Z9k^Et99*nj*S==If~2YmE-+`orPm+jnB!T+B+75?&-R64AusU(xt+I$-P z;;X0}L%0Rr#6Skh9n9M*DZ~hWz>M zZnXQlufZPN@HOD$)UN@5-=VU|{rVc@=*o*AFQ+fUJe_|L^yp0&VI04{2zXp{G358^ zi_y+UE=E5ty%=)oK6U?>7Xy#)xCHgrUV?c%xN!GE~vGSJm;FT?!5?Q+nqb2-}m@a5>&H!sJypS&FXZ{Gts(zyq8 zuze4%pSlNf=ITAb!|(S1e{cOd###J2#_?(O`bh{Nx)L=Ydy%KG$3U`nvcEjQ9B~F#m7Zi}4+|7r)Qii|0PM7j*C!S3)ivcO}~Y z+Le$yk6#J8dFNFa_uy4%w|W)ua*?`z+f|sCpI(J=zwT=E|Gig3z7(&*43U;Rfi_MK@rc zj=BN;nz%v5ZEgS_?zjPb@e6hRo!zxo#RLC3c-e>=a8`uBeu z^YpSC(eBYVg04=y5qLb~M%W#X-w62sy%GF&_)XA9lQ)45Zn+8c{XaKhygfH#e6^c_ zkG(fTum9p^wEL>>Ku?c+2l&|g9neMFcTsQfyP)TfeHV0k-*?gee|#6uKkOD2uek;D zalZQf^ev#Pzq}Q6viepP-@X;&*mo=N{PSCZuRq)h`g;Fu;KvQOLH>O7Hprz5Zo~7h zzYTKbncF~Df4B{L?|^;qqyJKsZ`udGd&@qwU)Tr!yfU|8!yoox-rq7yG{XEa zi*YUYHb35$WmwpfP*8V;8|B&zD`J286I{wP{fX9cv zhkhJ*2k3w34vc5l9q89NcVL|N+=2P|%^je>BksgFH{XeQp1KqM$EE7`x9^19{Oz5f z!@s%<{abn$o>#vMbaU}tkXujQh53Ec_hEmGeINMP{eATRw(p}K|MY!~_w{#UevY~u z{B^?JYFu}t{fF*WbaM~v+`)T5zs@~)?kV>G?xuSnAAWuh#`~6gF|Lt&p$9kJ3%V-b zi~ASc3;y}Ry}<8Z-3Pn+1FBqkAMBRl`(S6Ea397sc^~@y)%(I8ydIa;Z>k;tv?ni)^dmn+k{LLfa+XEiO_!c}0JoY{cItw0!9Qw|qN=`ir zJoY>WKQ(v^&pqWaw14$ukP}ZnhWY-LDu4SJ`v1S`{wp2_eZKi|Jg?_*v_JJY+Pma& z;NwA6{^4=V`$10te$x}^@28&t9bfbW==h(W03W^dhv@&2KLme#`iGF?*ZvT4{$)P` zUoH3%_jJ3!v`{Re8q?pub;I*@h)*Yq9!r zH}eVm*!20Sx^^d(_iI2)t#NXE!h*h;QET7-WP$$AGhofXlj!l}o7G3)WeLkh?FILxgv>^t=fBkLnzlV%|{Eq3kO+tXy zc6FV7*YC7pZA1UvNWX{aGtKdN1=p#{I+b_PX9azppwBz$^IKK#T?&Tv>q+X`09e5~ zR^4Nsynw!chR4QsCEG%5XJ~vXxQnQ~(L$_)|K3hzH+>#q-JoDssq){L?%EJv__~7U zx&0x1e+m113hsGzkNIMSx>lfTp1QuN4Yc$jg zgUaD_tW>6tKTfIIrj3QHpnX8*YGE8umjD%5ml~K^}fUQa~tA0th29W|A>BHNuMh$ z*y|-#=M8kNLZ5x?!%+FRs*Q)K99Q4JOy%-6@G0xyAF1o#rSi1~9e&V)EV_)Yoya(+ z&!_2gjlR$LQt(|=UP7M-)xCp_@o>E6YwCL+_k-R9tVr9HrVGIsQhFbVosl9 z`e!<1J;$*cj_mBYk%zj zvn}u~^}Eb*);8$LgEaj!pL4(35HI3C*0=9vxshq_a=NyMWl$Sr@?%s^8TdZi!XBAB z=-MiEeXtGjKh_N&XMcl!f840Er49bXdZv#y#BL6t@>wna==;Vt?2UQM!k&}sb7UUJ z;BMD+U_qzx-xnBlP zn=Hgt|FI2z^i|ArZLpQtE_j^2-)BKr|C;qE)39oX?b^>}=IVY`K0?>ep^wdahdwXR z=XC}w>)yX(yHWk-Jxl+^w8b`@y2keHk1WJ-`7bo;pQ^rhPK zzo`v-y_A__{etb5HpC-1=5!tFTbBO{<^>Bj+V9zqp?mMA&pOtZ^!X3=RV?`O|7js+ z&i*pnAV;YB=doR4!A|ABPpFdpSKfP8Wj<~2X2Bl^A9f)8>}8+?YZvCihT2P$U`+^(kIpD^Z#{m{ed_i^;OlgFd(@w&jj zuus+o+w3z6{&;nt{h6E9cc%^Ztp586f7Ctpuh_?Bd-guMb_9JsOP?r5emq0hmeJ=U zESKA0yI)P^Q_OR1@Ldnr_7eN+s*Piqf9Uh~^tngfe?=Q?MgIFD%iT8EkZ-24hxH8G zy;N?a&krrc(MoNw7ddu+Fn#}-g?(XGdvCcM6rGyqPuj(xQVD!JnyD0ma@20M_k}?e z*`w}+8@hhcwa1-8*=?sA{a#db!jfCEJ-=G7*^yhUd4V7Cy&=!v?uK?$483a2cKniE zaVtSMV^^Fi-(Q1YeStsWP1Zw)EAsU*w`OPm#-uBB*KXx+V7geYms~q2Y@_}}owgGe zr@S35cc9>gkv$Ox72B!Tf)*Qer>j9&>$Iz7heq%DwZQf&e910*h0viYeSlSsuz1&>=va2Org zZnySVL~~oVP~|O4#*SUHe0XS?O$gcPmdgtLB`@M$cJT~T&zwnDhMhFhAJ~3S6AI`m zP6a{4eIYOzakss&GGY5 ztLJpByMx%KPJLn!yKi{K3e8uxz;)UL;kSw~&sTgPGnwf`SodpQ#qFv_ZoL$A$rPuC zR4UmD#x`MuStBNkR=Z&!hol9gCo@@^yovDZ)iief1xzIVc6$raw@u8)WlYhfa(V7Y zGqWYr%k^thuC3-+NZXhl>OthPyyyZGE?pAULSkdhBpaq&Upm8rvNS^z;&HcUxLL>M zz9^P!88N=%17d?tnRfj|VNjm&W!=>7e#|%bTuEx`6}6jg$yP%}=lRwvU-?RVFu@Sb zdgzkCuQ)Sy!PSgU(^ikDU+u4CaMgJQ8C6*@mYo@vH6aO}pyKTkBC!|tjtz|}PNF`{ z$(MF7-KkJLptONClgVlk8FjzR-6O1$BC5JYZ^9!!3w$@PKaGsdY!C(2DKFwKF$VO^ z2NRkYTkQ%Y7T1wMuzZN8DN1$6ovwvWSJmw*xrO>P4c0@h{1hAIji2COqhkb zS7xQtYNx0tdPGDij9Gi38&$hac1_P+Q?X^QYc8=wU=d}u+AVk5E!LrFF!_e)QvGNu zx$F%=xSce9K>9Q#lFMGjt0}=%m}!|kON`Gv;YWlYly?wKI4$$K>U4K%BuxdMJ(MH! zVvSD9)Tf?ltia^y;)b*lkZThWKx`$%W{|L)vU1Yxv2JDw(#fCh?(T;6U;r^!wa^+F zG$>{!rU#Slvk~JNXkoTtB&`QSkTXNXf_>fD4Ky%R#{*aBu}$V$V@R)AiY$d7}q8aifDvgabYbCCdY0vZLA7JS2@LCz6wDlrJsM|N2 z`J;xIZjk(}g6EgmAW;@8|D+*!5i~~(=8>=#!5y1A@V9DYtPrfeOB%Fhm(Ub0x`L2& zW05Bs@q;0P-zp@mCA%tvZ73ri3}>1HsUfjc61uq_KmWZRSpj;xKx8yeV2LK}4!<}SrfT zfk$PwXu3*uj*1Y0DdlZy>6@xou+IJ}0K~*65X>1wt4;o8i7TTl*!-;aRlT<00 zo7}GGLw-JZi)xkwrxa`4#nT<@EwhChS&48q2+tEa(S&v^?^w}8L|Z4)W#LG= zxP-?<)Z#!B0A(#`h#q^8>I^uTvZZq4z^EMNGUEe@-n8G=liEM4@!xCvar z7@dNZQpVwnRK6EvpuT}0wZ_OJxf;du{sl%pe-0z4uDh_6qGOV3y$S>%TC zZHL5cr7F%wO{kXprHy$aFg`m ziwFuyrcE%|cvCDBzE1*0dTn=)T?z@;te)_0o3{#%Z`sx>&C)*-jLZp$PTFD338y_qY4OPM?^d;`ozg5u&vj8b5af zFdbt(=z5QhRTQus0>Nr^Ds(5o^O*{%+tQ}gMmzE|b_CpMFRC@RKt^UtIHy}o8j_l0 zc1H(mk6msUs0#;YeghL?S96$GD{$gmo~9V5L<*5t5<7Wppl^I|c&(~Wq$J%P8693f z*gr5&dr2j(Bi??)BlRLrWG@t}r(-?0)Uke%s;s-z%9DD8lu0(Ti&o=EC81kZkP;E7 zZ78w9}TK&G6{4skx3HDi&1IMq_3D^!=@-4XT!Efz;zM z%~xxLZLN+-k)jx&64fl%C%x2tLR8nl&}J?06Ni*F26l0K993EI)`#@3IY_tYvmZQ{*$m4R=kn3|aM{u_A5s$9F2Cz_Ghx#6&orluteI)W7)xGErKY4e9ub$xQQ^J zNhaYzcM9$Vo9!M;qDiW=ke3C@pssr4OuCD7tyr^$lXb0E!6)|HlR%uz+}pEtw5U;I ziim+_iL-%2b%iN+TE~k`B<0-Zj*>N6bwaXqSvxGqfuEzP*87x%?rJktHxFQjys&B3 zXcJ{;GQM5$B3{%^A+D>^?C!#7Q7f2@-QKbB-qG=OBYOQ3cZm?OTPk%`6L~CG8)!TB zR}nr=hFH~3r?`<4Q!dme_1&lzl0EFow0QnRF!!V=)7^Br^et_581@0j;tL+RG&3|O zrMG1v)nGC+!rDN4jCPl!v1!hK1|(uZnhO^pJg@jdLB#AKZ7%0O;!L~zY$n^ko}95mMD3s|>$es&dr>gjl5 z+)(U*C^f9ysg6il#Wg(%1Wp*EUUf+X-FICw*&Sv?Hza>qQ@e)k_a?-$teMEt(KT70 z2qH*D^9e~Ug#BPjd42|LFzr(kg0O!87M9*$mon+4-nzty!a6`lDQB1yv7tmmBZ5%m z9mjLU9VMJYw=Cysgv#YTDRVq=+nCBbGgRM+od9)xU$qe%+q@wMc5jjR)F!n2i?Ux-;j6hMo4jLk%ztbaIn&*=j12FBeWJ&rIp_Kt;OJgb&^?+0K&7GlF%elF= zE99t?uWd6~=#ImNL{eM32nlQ-Z|xdWb(CYeA-3 zyk|ql?y`=B)?Q%bs59%SX0n##V=|=oZWGn6Wr8<4ns6bd^;I%a&{lNzj%@ zLeoa}8O^yv*x4aVC$R&X7w1jvPF`-Ag0IKy#U$F@KF<0(ni7Xl7+-B-^LS-&2YXRb z;`pm@T38qD5ydfp#EmgF$Qb)ChlZl;e6xp@+3!F!X)K~9ewVp|VQ?;{I`*E9)S)%C zy{u#X{?t{P7v^?Wu{LR>hE-01PC0QV{1jP3NuxB~iEiNlTSvKWt8F6bda;Ktk8=DO zO@q9_q=r=|w%a}G5YLyg|Ft4D*JxA#tz-nul&Qb9ktMJd2~*DVjKC`^(+uE?b#Np` znJg4E#yJs|D3*0BC0&8Tntad6k87%@jM=M(hHRzyjY}Ksg`&t6DnuF5 z6Ie@blr@9amoNl=?nRT0yugy9PK`Ax0jY+;6lwdKxPL(u8I2*vnLJ*r7O6Mi)BE>x zK&yyu*p3f*p)3i|^yo*f>QUyNG$T!z+GgjJN93ubX~7j|O52YcVf3UUm$C6NA%Z6} zol?bE!rsAX%Qm5&#=@{k1AgGoRCqvI@YI}1&CvxBj0Hgrc0q_6Z9qo4oxErY^@mLE z3Fy;w&}5@BIh5JX0Xw}2pzK4zf9%==o*R=GQ(j|qvw4t4KvFvvbO0J?^5a3J{gq5T z6GtW%mA#Vy=9qID)?{nFRe|LY%e_)8_XN}si!3^1qpQ8CV|{1G`pr_e>{O#Up|UN> zQ_b}ojyB6;37aIcerArVj@{0(4Z%-zQ^~Dzbi^;tG=Y|w5mt60QXjEgDhAbgt3*LP zEV}bR%Zg~X-k*|PMo!?B6HIqZ$Iw{<*jb?wBmL)I4VYyy7ywl1bk{Jy*-5=rY^-RV;ivsftW5- zN^6T38#^L+1z+u1k^iKXjZCd0R;5w!o zJ~A+v4V1_fuz2Rl2@~HglARa}(g9xHb(k!7M?K2A73aQO!lmYWvU&gzAq0u^jj70+khUEEpE$m&g<;$*j*&jE0hyy&P^E}@=du5N&NI*3en^uESVJ*d>Vli0DS?Va;JKln3pn?ssa(N~Nmv@^_CZ$OQ8p)&S}fyyijJ`cYTMqPzBQY)O~|$2(nssW*S1MO8i>- z$mrbS!#s=HVwGg3;~K>l2tI~=aRjVttL1pjGQ_TAt|d2fW<}qW=wiGRH!C$`posM_ zq5*YZl(&wuX&4DZNtjL~ev`|c`q+Z3YSi3m?A!}{5<;p5pDV4#Gs}8EKE9uQW{pWY zK4Zq`s}&0w^bo|S9+J2Xuk*v@26dBuw)h!bZs&_o); zu>c^sBtd0A9rx98Xkg8{pV-Cq|fp|@~Zgg*TjT3ZLM6p&MsqlAwG4&s=rin^;YuahMAoJ8o*k`77pTclZqN6 zK6Jp8-yLHBgdxBLf zyz{8D)%Mt}7xc@?OluIqGhNE`tnBNvhsKBXT0mN_n1Dl`U!R`i{@D7__sn&>?hlV; z@B7IqQXk+Hb9P-Kx#9Fs{jx7cQz0|Ipxaq5UD(pCt2oXiniR zcMINR7s9=IsJKpusPQT8?5*a4-WJV5E_!GUv7^muq@-L6Yc2h-)&|Kz%3&ErgSDMt z*s!}JHh%b7s3ks~vQaeF*e*9$B=+AfA0|Sp$Vsfk@{)^i%7)1dq;U-6W;TWjxuI^B zgIa_Y@HqNG{%{D>%HM7ct0l=)0*7cO3IkT9Dk5r)^p3BxMuyg{99(OSj1I3H?OkJy zWR+!(mK+KBaFcE}wI4&>i}xzYgb@N*T`6g!AQ1b;?gQD5&Zz?;byu+@?^RG&v|Y)_ zOk7)I{24g&&M1eW){GA7Z5F9*SGcPOlXuH>7UfC~kh1N-!^|h`xSrFUq+VL(GgHG% z%`+Tznuti(QwU@uj>A?_Cwl}DsaO`{A{i=mGM_mz;f7R6bkICrHd)sy;AV|Bu?l35 zQAO_$h!zo`D9b_}s)Ln~y40u}67y(o7;R2j%6M6-qXuKENc>o1gU1b6aPU;IbYSBM z1F$(U2ERd8auf?|nKi~+O{wD&D{!J(mx{zH3BpJC6d!Oegm>b}mno-ugbx8UR!6%F zQ5@ZDxQEz7lbgaRQCHMyxOPO^E9d&WG<1x?Y(S~;i;2Tf=oOV+MivwUE5nLx)Z zW#P2E+94q4E;ulf_8}QYw2Q=o8g`&0!50QJ-AryzF6vx4^VChPXIf)vU=B5fWKr=< zuNpac-NuZL9jk~17l+1J1@Zw2`fe&fbYYP-#`Ku6$cQDAtpJ-mbEQzWk8Vb-m^}y{ zC=27Y@wmP_oPzA8a?892pJis~__dktc56K3Bty`@ReF@Vpj>&8A8HQAn|QC*c%8kti3vU_ zJQeW147KL4&MzS?lshrO8YP%$*otDUW2G(u_)SVLZkFCi>JrX=(=3@4hh}kuA0cPD z=yIeh<>rBDsFUP-;aYtM9i$F^5t4m(=fSdZ$xUl@4akcPvh%ayu52t(DpxY}@rpD( zce_1!@UTEc>WCT}7=%Y&P21rry&(WQL#JA0&rrok;d!cw$UU*07Dj*}85SGMpn|f< zYF-8zS`lySW~(Bu&=^#WjHoJdszk2q#}(3!D?f!y=<$J#f5OrV zURO%`Y>7_h|4vRi?`t>8;%>Q(4}qadMhNVLbO+Vl*ow&9jW@)Q$sUMnKUnHo4>8xn zfs8}D4?VQ|{fpaSBX+HcCcRSEaxyTx#>o*T?ZUZC>NT$%9X09KyMu7DePnpNt50nl z?&_ye_eeOs>yX7=hrZW7QNRI8&b>l0#-j~2}Z%I#g4fw?Vg5mcSyqaVRC6PpPOTCX~_wu|35=XE5 zyo;fovy?idx8ua6e893VtnYG4PJ~RO#UclRBL<3iO_;%1hu1X7%DTr`A?a$ne%Ya_ zB-|v0skAJj({mUy&SP3sHAvCfYf|^O)j4yhsj5}4_bajK4EC(o0(HX&Vw1D$n1TBPIHCxQy$S1cn8AOWv zT1=!$gLNiDchX5x2nyLK!Q(I|$cS6*4h@Hc9(4=|OlC34@Gsp)&G z*lRAuI)!L-AC`c6L?$3-YOAR$Nm!Du3~l5_Y-}el_v(;?a4hCjuvaqi$=Ixu@nq%^ zQ*6?~Z|zqMqptJquATAW>9q;)L`Dunu-{ZHl^ z4=Xf`43=FjrgZIx@bMnKI zQ0*+_<%gvQWXzqG8-7u#V!cWyf6}R9XWacB+dNrgwSn0n@)B$!Ho*#>pVu^nY|W`S zv)2U6ni$F2@{|=-&vz4ZK9f{7ks`>CsXP#sX0{|NL3VNW+LAXJnCWF3pWmb>3Xrob z7CFmeNlbXZ7I(+YHJj+NWz7r)L)}R~J!qt|!SO9-o*iIbCu4xwfM+*F%4(uZLCXnf z%^r{?UEz3&p(a~pbd|K$l_csxD1^{r3fkElD>UcJ8s|XW;ZX{7?3iwwHyy3nW_Bv# zwkqWJQ)lGhk{d!7mF=?OZ5H8k+|v zP4n62;$*&Nn;^wVa+_G|E;X#|tK1y7L$US6;c?zaX**t2CaaURPbWtqdH)t^>AiF{ zG1js~r-q_tF)2-3fRJL1IaMUj( zxQ%6n;ry_vL^f`em-to$XWpAl#B*rw2IQr|ovW=_MoTtaWeu{xkBzmG(=;1yM*OCT z#Sr*PYiTR1#RR#z@*6ExJ)Uof^2SuTV%NpVa#@OR&NgRI>ZX~P*Eh%XESff<;CYkh z_CnA~XjPUqLYaM~v22G(c(NYM*Vz8Fl1_Z<8A)_g1FhDztwxY+h06>x26TiuLHa`sv{yiiNrK<7Tzgm#ty3Lu6Ta4dx_~_ zPr9h7OlUp?z_n@mnQ5Xz5SEn0i=ZTw^)7Z_$rJ39U2PV^1EY4*)(JV;lTMtc*JuH$ za`lus+v>b_6d#^ z)Jb~%MA}mqTsKq>ui*-rIei+>61IN*X9gT7C+)am``GbC#MU{e83G|GdkZCkpg3eKAZ-c zlE;wf_3KU}HseR#7@tHkG6Xkt37LXhnAQ}|n!+a?&*?W(@S2uRP^hum$76VL$}0sK z-E4OuZ*YwAh7b#yHFzWi5{m6?rW)?HM|ek#vx7H&xnfR8#tWWI#=a5&BSpQBGqlfndzg$Ut{yki;3B-8k1~&cTVA z8QD@~(#J@WxQQ3~gLIl>nKh;p&KltPJ7#y6SqhkQr_y1heUup1X$F?k;tkM19hSR8 zWb4xgQ#uVYpLs7My3c9jLRa-pR<@aMsJlsOV#T>wN7dd7AM{q8QVZPXVorNQZJrQ0 z#owf|JYJi%nLNj-hIEGHV(iERy40-Y1*vq&+{vPuFFA7o*wf1+$Zk}Uf!TSeC+mcL zypo&An`~126wyy8E~VLcoKd;iLvmW;eaW$E$?2B49?YkhIJvT8AhgKwpgOyXvqPWDEGP#Uv0@7t|+lo*1N_s>D5vdE%e zsZ`E!JL;4Y3r2YqiHmA|b`O}(l}+LeO9d@8BgGnUiRNG`Y|H7MbL#tOKsMtFBw0aus8*@({L$HZK}-S+(giXP`c+jW>VLLbYh*? zs!RqT8RV*XR_GDPE1~yWfu*~8B4dQiGmu-HX$r`?C06&^;mfav08#)bb zVA$Du^qTvdreF>d7o3UQSKB-itU<=cmXaxc^s>^FJ53f((W^LRouEneV=l-{XIU>g zWVBV>8Ud1jV`f{{_48YwZw$GeuX$BKB_aBbsIhHQo;7FMGyD=UKg3a?X`|_@@v@~s zPc@kD@uVQ^P)R{7D2WJ&1!U#$0sY}Ovz*pux8W+SCfw0xDU-)<)B zw^|L2iQ35foiaJaX)^pq9ioC~i7n{O(tsDq@2JVDX2Rxvy)wHe^ooJ5vO)*nOCIuj zL$ar*1zEv;S3BC-=Z?XQ=Ky%pO4`PR&yrJjAQhd-tcsM(Ek{^Q4tY5VTho$8vUaat zAnhp4g|1}6EAFnMGK>Tn$-)#QQ_RHX93#Ov@{1=+FmZ-)Z7~@s#);w09OE$r+KK%_ zAffD4$mQ83y;8o|LW$VoNP|i@J| zEt_LYMYqvHyjDtMca1n}Y*BRE`)(O7@9;__3F5@(s%lQ!bCZBmNzYZ4hLq7}L$4P@QQOFY zj%aa7tq!YD8=#Xwoa?8zgv!=va~Tf18jSJg?Y&bW2d#o)ODEn-lWw7z6B;v+VF7Rg z^hi`>>KKL2p#EZ;)K2C+8!`9)A!-9B@~>;2O%|z(PNm?9w1{_lX2QiX%uMR_IXl2d zE!lyK^(@b@+75sPbe>zaAIaDPvK4uG++ArVj5p#$5{c*a%~ZfWc3`(=*;l4Xtv4De z+STFYj=Zt_pLqG11sKuuyr2a0q{%8wwql&S-4u$=>yFumIl&3t8?GU#JCeC;Q4-@W zZEPfY-CxwQu~eOJ=~^Vf;M{d~WO6zB)(mH2A0j1YjZaO+Eb&4gI$7-VJ6kH|aG-;T* ztkXh7a=~ZWd%5ybun!|KtD3i1aYF3PjHRvP)Bn6@HWj9n1o3L0Um%u>)Qrrky4mK@ z)Rfu6x!ldf?M=Kx(^2Pz6;n<-4cX%p$00RU*=H%RY&v-p#8^#(>!A1HsVT}j*T!CK z-9#gD(=BBZ%bO9;SZne?up35K3ykSAXI04u*^8&dd?wR;Miq#t!+3PMdD$8T@4=lP zJjpwcRZ$>575HS%kc9Jkoeb;OCKcxE9r5{80(!3ziFuU~I@Vq#lG1DPF9y{_yv|iq zHp|I^QwtUKEamB-^ifyoZVX z)_`APQj|(fvhJrOKN}Rt!Vj8Br{Hf~uFgAcsSaA|;}vFfF~L$27EDDSM+OGxPR~Cl z$(YK{jI^VwdDwvEjyPj+2LBfJa`zay{u{Q1BbR^T6019b&gSoNCTo?{zmy#KZOrM< ziwVX)PCh*Cd&uk`#V_q!h7{g?gR`fvwR%U7QOW(?Dj_^)C4wZ_Oa{}*Tsm=oBqV%KFfyr7~8K z8RYE{@0ZiRy6F+pL#B#U2q%ymQQNN7T!v8PtpcqTS|K@ib zzG&3l{AvoC)RldGEkW};Dp~>LmsPX`$8W8`dn!`tZ#0o<_25m`J?u)+5w2aV?ufLQlJSe*MoxdQ1FD8BfEr9khf(LA|!c+K+Bf#rkCt)al5^lJ5z7S{9V zK?S8Tmb?cednffKjFfdVm+sUo5~ssbTU>bUfZw=a^-1h5Id34Eod!r^nN>VXXLjw4 zQwj>}b9tP`gy%b-Y+7SU*0bIs`BoS-JI7%ne-)V#Xfi#?T6B3#;aV{;9@ z6t}8h{*iA(>I{eaeIfHYMyfSoYkv2xkqAyrUZ>5`!5!`{(f}1{TvliiJEZ!=1iM;| z@44o#TE`lg+xCbH%k?ZxcuB<~w>nivBq8^W|%_5Atm=L7_9Lxe*saoGZan04A)YpJ3Ve0X<^*!r9tEAi3QZ=HGA*z{v= z;lY+MHwl8z882)WCroF6O`uu~^b9mvHPbP3Yk2w51LK41hplnaeTK%*EbV69aPvJh ztTN{}YK_GJk?4lvkkDD@Y~x_*MKY`Lc7Np#Z*X+Nkqo|NXI^v4HXm5_+0TitGDV* zIt?$fA!^aKbFx0$@G6@%sS`K)oi^yhX5Ghm-)kdm9-k!;7fnf4!XIzNo%0PhIkn@F za>cy0Of4xTC{@z?-uWFj$vbf7sHzV{m6XFk6$KhQiuGp485n~D2ahTJSqua!mb}`y zR#~YND@ERp17NjbS%)ll1ZANBy$dLwV>7{8qu`D=CPW(0vy;>@AVqB@$EQpAP?&yw z4tFQ6DKBU8=UDSI78o0!mW1EbgN>KxnBe(aeAO0Uy|S9gaG2^Nix+;0j`S$KUvuS% zh7@-YOuGxQ9*NZEY&4M?LE~NztVQ+4yLjh}=CqT%g1>95y|E|BZ`cu~Bd^$jO{Lzk zBc?TfSIULI>V>8`UbGYA1Q0A>tR!U(5(^;IaWU%v$66XN`vu8kOu9R+8UpD UrFdgcc2tdU`J=bgZfNWO0Y>JyEdT%j literal 0 Hc-jL100001 diff --git a/ld/po/fi.gmo b/ld/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d1b25bbce00737e120d26977b4e2fea9b76a241d GIT binary patch literal 57750 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 literal 0 Hc-jL100001 diff --git a/ld/po/ga.gmo b/ld/po/ga.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b3080443bceb2ca8e9ef4b955486cb43fbbea3f3 GIT binary patch literal 48922 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 UKOe#{>zNOV literal 0 Hc-jL100001 diff --git a/ld/po/it.gmo b/ld/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e6cb2ddeee03092f3125941ea1e2b726b56f81a2 GIT binary patch literal 57987 zc-qZ50AuJ>W$b|`{5m_XK-L)jZHmd`#_K?&h+lKH8VY) zo>^&SgSo+g1H|}5_yF73*v8oL4fr;;@qOY08=E6Q2q8a`{2)M*-+S--s=K;pW_RS| zkKcYYs+sPp*Hy3HT~)82f89Z+JM{O{Hplr(D)X;#oKs)sIG4ZKk-ry~IL;fXe38n( zpz=TU_n$3woWG)S1(knJH-F~sQF#QFo4Xumn94J${6{K(NM(h}hq@i-(^RfK#Bu(X z%15c(Po=laaXv=ne^Gfal^j`T6g1oFl1xkjeon-*70Nv-42Ez4B14e<<*=_AtkJ z83Q<#sAxaX6lnqjEKs7axxMKcsRcmCN7lIDJ$W-wn7|QMsPyh00#WTMw>( zya#xFoXS;HzI7$q?V^%U?_5abD;R$(F|XgD@-0;U3zY=Qc^x%+9hJjWcJVk?q2H%c zxrWN;seC<^Z=z1R+^^MWKSt%BQCVFLdio@le@f*g`uk=o2}RDctAXFw5->uEb0n1q zQ~3cZSMdB$`Bv_q-v3uBJD85%gL0J0zov4QN+L1m^X~z?yQqwK-t~Ir2+-&LBLL@` zBhb&EQOP9!hrOWNPAWUOAHBG~he{#==Zs#||8_5)`%n7&bu>xcOde~&2RSO~koCq$>wwSQTAohj8>qZR??1f`gdPa(~x@4p$5TA3KIX zhbInU{y#SaJls75eE*tCVr}Q(BhkMjj|Bgej|Balc_hYp!;!%2b6WoHNZ{j*N8$PF zk3#$1N1^^_j{?74N9AHF|3iPjWf*wL4}%WQ8Ag8|90uI~9!7uOya9B(aRcxYY(Rfb z+kkr4Y{2*)+W@@(AN{>#Blu#FN@7vx*p0Y;=0@<_wHpEV2O9zRzx4i+5sYJS1pN(0 zfUnPv03Ua1`LhwF(^2%}ouiNwfv>}MV4S5LDtGnwLpuQfKX*WW zbsdN24pB){>%8|k;PK((Aa`HA6ZA8%6YUB+(Qf}v;O~Z=pw}07g05b<3-fo#F7(&i zg?^sB3-f!|E!287>^v`Wt?BKY9l9P@6&fPtBmeH_zZXKb-;pygq;&Tp!@M#|7x` z`vTC@cm|p*FfN?E79`pH*<3UgFIUe=><3UfKIv(S@^LWhj_o(~>wxg*0L#F@Z zF%Q4h_HDaCFN=4he@E`dd{%d3o=)BkdOmA6=I0tJuVs4P4SG7WfcZJEfN|VYz`XxN zf4`y#{4Fj5uj57F<)cNkzo7_vyH$U`NagP{o{E^?e<@<#|EPp+ow=)DjJ{khv^u3~jd0ksU|JPU0{|yy9ccOxROjR&HAE*HC`4!CX zy%pf&M_RrtLitw_?yrhqhi#2Ok3j@_Ix|9lE{Xu}-U#^qWdyvwqKfBtSHaImXc<;9 zPv=&_ACFhj{=ciL?`!xySOZ?enm$jjUsMC!2W!CN3pMoP*ER6pU(RCu@6fV`$~@Bz zmAA3HoW*!%_JGdkwER0QFWUonckTfmezFJi^76gtch6q*qr4aWJ$ofB(e(8OmK>rW^B*s&u@>6X0QaR52`zgRVgG!(Et^Pjx zRL9xGbW7zF+dZe^xw*fE-~MSTceDNfx2QMtY1ljGeHwo8Pd^Pjyz4XYXW#!B;Ny|c z;JM2_3xE5=pT+YY`7Flqw!Z_MkNzFnJ^Xjz|F@h5dK)gC-OmBuFFpr;deiBEH+VYQ?>ZfHdGhJtug{+j`|F#hBd+it zr^DVo;tbH)2hV`t_@y%d_qj7*zrN~Bz~6W#^w^#=(ccTt1V27TZ#)}tjyM}|K6Eyoclp`i&j-$i-S+Q#ed#&q$C2mY{)f-Od|j@;pE?J2m-Bh_ zXXWRC=b6vrxmSN4a^MG_$M|2dAN_diezae|AN?=ySN*#m{B+NL(A&T62Y!}+0dV(z z0rK+pFF=kw{ss6&Kl%ddcb^Ntpl~kc@2YcwkDs0kIo@|3==u2b5C{31mcP)l`+SU} zcs}}f&iSDC+s}u;{@M#LA4h9>@&&LvuDAel_2CO3A71`N_yKSKBJ9AKF9NUUeG%{< z`y%Ml`4Yyz>r0@EPk#w=<*F}X91ng8^Y!`*(Vxv1Vm{t?A?D$R3jyzk7h-&`y$E{UXrs-TM1KFM=I&$i?_Qc`^9na~ESAKe`y>KKRSPd+=q@>)(GF{rSb0 zVP~zl1b9F863ESSEEH03LpN1?1g3zKZ!g@vES}E58al__daAyb{k}b0x-e z!j+)=Q?Eq7uf7uFdge;d(QmE%Y?L%WlB$ zEjNGC`Ty=4p%*@KBlz{%8xhwy_$JKTaW_GZeBvhf-G6@*=;hyT z0-YTEb@Z#t8Rt9o4yrr zuD%ucefn0k|M{)3^WJzx zd*^qzK|cQe?U;|@+u;v?cc;pWJMsKC--Y?g-vv7R>|KzP_uqy7{Pr%4^X=cl{dM00oDY5r z^M2X4KxhB-E%fJ)@5VeHd^ha+ZFd7s>2A>5xpzZ;-Fi3h`n;B}xd-%c#66h5+C7-3 ztM384f4&EJ?Yb9mHr$K(4ev$&FSr-_|G|5KkDu%H72gK_c77YwU0m|KmQ$iG%J3+&{Y?cvcmQy}{vhc8&IiFS zzj+XH&wU8L2Oa|4-4B6p&v^)VdHx~94d41O=5g7>pwDd&WB$B{At!e~3^-?Ny;~l} z^M3L$=>5%)V4R0P0y53Ml{v=qBcPk#Jp#CY@hG0N=uzPBZyp8QE&BWYk78U` zJPLZf?oqV+=A)p8yB|fr4th-W;bZ9Ev5&$2_@Ms2N$Wz;8PDJHYR?-vK>2Pl0d# z^eM=-!KZZn;3@Fsp8-B!^(^rC)@RXf&9k^Z{Vc|R^0UCl$Ee)H_B)j?vb_5)=;9~eg&a8O zIpAT@b2>lIfsXU~`;_M(?=O4~{r-pN(7&b6W4t?_$GpG)dEoEj=K=4*=Yhw6e;#_o z{T}G#xbI;cXM7KE@A)3)rTqn5KkNm_m*54A|C29ZTwi|y^!S*T&%FS-@MHb`%NIbu zzk30E`|=mTXK#KH_uu{^#`UfjAt#P`5%Y86i+J8yFQOkey@G~0E@R1+XI?u8kb0BZdZiAo9e+Sd|Dt$t>uUKa4_0#FvSLpLG zZNE&f&$c13kQe;-MlJ7QyOgefi9R0NFjQVdpOffw9m@(TFVMR0bHGPp zd(rhbwn1Jn&z#%_oo@fJZaCfntuNMoeuM2{`u+<2&GPPd47&}wi}x`c)P}f&{Wq%R zI&Jq&_D|^hc@AvkzvmDAzJflNJFv6!+U8H`T9H1tv+SqxLki&8C0%qgPm|A z%RciQDqm;O;d>qEriGPa}co4^OzQA@J+hQyyIaEORk86XxJ`L+p1ukXx<%v471n>IVH?;5c&|ssGm)=Fc zAIiY{avNf7b8V2xPf$5y;rlEHv9`PD+Iqb{)CT{GZPbtO`U(Ah%4)N-4e`OvRG!<0 zy)&<(@&zOR==;_-?1g#K!5))q8_2v<*#^+-H#2YO_0KraL;S~as{i5`1J(P0*1gJt zbuRM^{XX4-dx_rvPv$@Uem#|6pwIOV_VE0<1*673tp2`N%kQ>fjgIZ*5`BMzUVpik zKi0Nyrr)R0=S=$iejD^O+oWSGkLa_CKKFABipn>&!M=G++iucwqr!Zc%4=8#>2LOR z&tZF>e*e1zoyB@?lzu;|Z8vD$*IVQNx`X)aKhV8jupiCz)CQZ3?XM?UUpcUe{?$RO z_#uVEcJn7QbM>H>kJ0tB=;N~9q0jf}^Lnc;+kjWIf2zMZmdF14w|H$qud#jji~~QG z|0-7dQ}ugC8|?G%Gpn*b)B8v2{ae_ku=;m7UEiVi?$m25+OQ^{qw;K)gH-+@>(4gW zeiv%J%joyl^gG)Wx6|*F9mJVG$9kp>d%HwOunoxeb{pae?CW1c-!EhNuXQ+HeG>b6 zY^T$`chhGR>r49lUk7pVEo`GY*h9wg0k+)^)Apa|xS|6)m;XMhCEL-w*R0HZ!2Hhg ziaxt^+%MCT*N100)=$6xnQd+=SGK{PIfZ>DrX!Z)4s5G$x4|~LpiRtR=Q=9yuyA`6 z{r-qGM{NHcO23a`UC*|+-n*FB3)yCEgU|H|t$(cEXS?<5`rT`TeP{lD$avFxY?rc4 z$M)#`bnP(ue1bkv1NrehU0Xw+_p@AXLrmjJDxam#eQmJC4>k4@`z;FNXx16@`61WS z`+v{|Tao`h%W}63w)kIC*~2=UuTyzEeV%p@_sh4zPUcwcA@u#H4)%dL?Y)IUnDeSZ zY1++&#bQ`;qq*W_Scux4_P$COMedkCfD}MufbA?*ocf-l!sXtMt>s4|y!K}|6nDi@=J5>pbu2-vuEduoSmcvT5(=8V~ z8huczhHg;gOKu^UtavnvpcGYoFW=1oySlcQ!mb?!`c2sEs+IEe%v@OUt?|$p31}h6 z1y#kfYt<`P{Hb8CTMY9)0DAd+S5(dCyh5SND+FFtKV<2SPMNzWsLlw=`AbL>b3~~G zNRwXV@0zPpOQ^0zf9NbCHPPm|%hp34G*s$GN* zLPaCo^;LX^HtFSd?;%og(I8+b2@a!`?QUy-Ie^=_lN#?_HNI`b+L7TkE+J%(UnnU0 z^FhSD?BW@wo_W*03_AhRAG)QmDiqL_n+d~+`$E-Z#NFOP1 z-`_jY>jqW7sKk~a%s?xIL>tO4T_vyRn>pR+&l20zs83wQ?Hd^!G<@Ysy-t^Elv+ht zP*OgSnap&eQY%%1qTf}H{8~Qjk||CNDW7+>j%(KuW{sFETJ45~9Fi7{p3Gz!@+QKs zmDAWQEoLGq?RIw(eY?bbT*efgFBIl~G&5T=z1+S!e_j&8I@Tu z7Q8u@H5C#(VKLYzMB*;#9UmT3PNF`{%a?91-6>K#ptO!PlgVlk8MRV@yGK|hMO5~4 z!Bjwe7MA=*{i$bcW`ig!&jb;7i7{YiKAbYd*lJfGvAB&4g5^UzO;M^l{@!ZE>ni(Q zd4IAtos#lW!6o@H$%w&yLOHA6JxrLBwV=RCr`1kTPt1sjQW&%D5)Pq=)JU2NK6ki*%!@TTDbo`5%wPp3PZt9+MnFTGh$_TZLTm;J z%c+%@B}gZKy1TpU;K2Z5u4(}q88kJT$S&dlV=>UBPW}+=bY0U)Dm(cTKioXI zrBU$r=19rN8&nq*O&7vRkE(+!0F8-|t*_})(Jxg=Ob7eYwi7EFF_+>>+Ayr-e6kw- zX%d`$WYoFxqY_kE#`(G35z(vf`X#BDN23|vD>ryXMy-{CYT(g~QZ<%Itk}3AKv*Jn zl}hS0bs(auSE(2uQmFHax4%DSM2Jc`~q>KxICFN@9-KiC{1VuR;sz#0!z2k)n8AT*e zBNkSxN;P&6*2Ks$H*mcfb^t1j8pBagMVhN(tw>_ygj!G`%#4g1@HUjFHW|&4FHx)q z)(lGABm*xfEj+-AKO3|%LV@)XMrh#MVE#u#Oaml8YceS1*&tDim4DI@f(V);t`?B6 z7Qr2xI`FruWUNqKbC)z|)y)GGF8YFyG_c5@Nld1ENWzcnv+XuMu)f>f7*gpH)#VF> zQnI3KlZgx}mNw!t*LQR;+@lyc-L@PiaqIHrgXsiuhsoF@ZZ1o$cVI zUD&ua853lAOfA&fbG!Qo1{3#?vBc&_H4&J`OlT@IMgFLvkdc`*F}dCI$v7#tcNaAKs>{QJckWI)uz6-r@p#rO_6 zH!MpHei~bb{Da1ln1wEB!OB!2+(W9A%uR+X`jDRw-lCR;(96dfciG;K&5jMBN>(DA z4Z`zOQ0;L$$Ud0%IK<@c>X=yEdTpI=Zp8j>P=eIy=#9CKf30mDAj?dEu|PW=hwmjf zspyk5BZ~D45lv{v+K#~q%qQ@QiCp<9#YM|9=FdcG2KjCnkN^Mz%7xa=}P&F zN?dxz63HUJ65sYn%ofYyY*fVslvp8=nnt)x{Bu`FwAi$n zoXYQ<@uHcXg)rPrZg-}Kb`3FucQR8osm0^3(g-)V#d_s=@?qWNVvW2RQxT?+SR7m4uHXelvDX5QH=uggpe#R#OYgG{pR8qe zMKk0x#DKe|TCQ0Rps^xj^v8E9vRbP3>)=&G5@$0)nW(Py8p2`$$c*5Z@`m&2($2Ag z;gP*?6EhTzG3vVhYbwI+5l!m3jl}KlNu`j18!hXNL`KCN~u$`>H5vA zi?|j~ObZV$`Fl{6OcCGMA*O+p*nJNbUSk111A2 zu3YrW3std=nTEAUpio~}ofJKG{d}WGrIIos84+oXYZe4yQ?g7%;MtPj21Ff&Sat0F zOy{~{Lq!8iq@4nm9c8tmKbDR6?3$5*~DC(w}0pJzz;RO>LI&vOodURg1i7 zf2nB|Yu3ti&FEF|iMuEX#L3Jp%C<40M#mHp1IrR;9fz6*GyYx^FSe1?;5K)ZtkJSp zAxoFF!{P?@=KNIT+D}MYA?ycJDkx>D4W)fbLJ;;3 zz``>7>ry7YwA+*zQCJ7)$Tt|~RBR~G(1;+EyyJMTxTAz~=$5tIj8M6@CuNQ&ZW~j1 zXNKxKu@j(X?kkMg*yas6uzPdFrzH~ZOUU^lxt?E&s{OJ9iV-Nv*8?CD`g;PhrFlMi zF#yvZOO~Wh5ugmHEsd#A>H(*in|mrjwZY9@T@{Wxm5gmB3*B+pkVtA*7a@V|<6T|j z+D3)b6tA{*M2)VIT^KDjtWtNAY$Ntb8#hf_r2`H<9Q=nOfQT%xsy7&Kt*%78^{Eo& zklGO>T_>Tn;7cQG3rd11UOk9gN4tY^nX9Illb$3yaj=O@qtHnkDdSZ|%QK5T@&xgv|gNATXLC=NRC;d=*3-(ti_pT@tzG6yURKjMtgygqt3V|MdGc7TRyTq zv$i_yLbq6c$Be~+8E>zwK$lsCux!afNP@OJ5}G!$&uGp)!p^KLox~1kqd0G3ck*(} z417IiFDB9M_6gSC(Tq5R!uYz0E#Q^GS@xo$#PQc~TBRo1BZ^}Hi5p{Wkg@h(4i87! z`DPC*v)_Se(pp4K{4RS1!{S^_b?iN@G@&)!Ue>YsK-#M2g}I$otWAJavC1j6Q%;;+ ze}=4~1Sm~+qFXq?)={Xrx=keAF80vnQC?}z&>(LxsbbZM?e>5=#Pg;0zfq+28jS|f z@>al1P5oW7 zxVwIM*j2?RzsI+Y4-c)iE^Tp_h$2^1h%%%nu$J5^YX+?^VMzV?7frVE0!ssRYOPU8 zm2xGVA#Gn3_b-eh3m9UY$>WV`k#-9`z5f6Qw4UgO?f42WlqCV09`nfcJ!{lDk*7-2Nne~PV?S<%(UXo`#>U5#2%gMzN)u}ddzR6b1))!4Vb}yfDJ;zuc|b<+ zRK01#(UT$=Cj~Xw1tD&0(PmjJVUtAG&+Kv4u-jR-A(Rr` zl=sUV9VzAJn$(t<5mt60QXjEg%7x_xn?zx)lJgg+Ei0nkW`9a{89Ax1PB8g>wM4Y1 z?iGlmYiwmKOb9G>EwnM`C@JD*>BH6FY}Tdi!}tC~tM6r{#9D z!BMn8n%;{M6Y{B{^!5~fm|luk#8{XVHDli1B0-_)6xsn7*~-P_B~g^391C0>MWTv11rMCJ1f)-wT<=C$@zc#ph< zM3#^{GRteIqT<9y>$KQ-VC(3}*o4ZyN}d;HqaJux4cci9U9i{_SdR}NrFZg&x@nPTfZNz^_~^h;Hc%o{z~Y%Fr;_+~k?h1+oDT5v zuES)xJL*yER-F4n9+#T$$?8FcsL_TlH*-rZw;s7%4XcDVIpY){c-_O#>+V=~C_j}= z(PWQ^H%pQoF4`)(4$pp#)7#%aHZVT!^p5qdr~lSDy*b`JVh8$&GkGsWD%z8%x;#hX zicDipZ=MYFp|Js8E83SE}@&3SoXa*<;&f{itoGQ;Z#+&hYqro6xQr?he|o}MD>)Y=W-}fcP1J|U$ufU zNyT)4FutB%EyB5@DHG%gbGcf@R5d1_31vg`&VLu{dd2kF1~g%d+AwOOe_}p%`VGK@ zi3QqtNWPP`&0FG%T$|%nhP~;xY-))$ErjuQIgsa$Piz|=*x_&-QF+(66lPF*PFoh| zg)-y5n>)OPDwNKr?psttHOmEWt}cYC;@2@pM&}nF_F2>xnXvPwLQt6@?sE45GT%NV2CuX#{z)lk_44Y>A0_vLjxN&4fk@-oB^?% zWjWUw0P={WvBilVQLcnJKT3l29Z_qw+FPrpI}nnS1k^4$-ey#@L9lFw=l?eLZlEt@ z;^-<9**}BgJ`T2|Gza+rTPA;m9v4uNq*bPIj6^*%>9ahLyedBWH8mCNb=Ga%)t}G%W-EDe!_H0s4dAS23kPw!X{E-94;?V&cgGk2VMt}Ff>xlT9Y4YeNcua>PsOP!+zwrv?1>vxXw z{j$rlFmB0`7cQz0|M1XSq5WaMG)?C9@VvrX?oI~NT?qG@q2f9rqROYZv$vWHdRH_H zx#$&Vm>q3aBYAZ#oQ?Fu*%&4VDMw@!b=G!*Vax80*!baRp_TY_YNHsev0ZMjNF2Cb zK0<_6l#^JAXL3fgNX|>Lb3sba_acELOM5di0kPS5sO+}q-^+%*eSyT)67i(l9 zbM(QlP$SVZ3wY9GL2FRW8Ec~XWgk(|>;Z_DQbkdSlQpOZRy2C4Uj8R0(EN3b$>gYk zvf4xj#@CaGamI&^8F1jlX|Z}>>nK-XlVKdbfvnajn;N+^&f7_;;}Q?>qH32$TUAQ% zF+HVq?uGD2Joz%^)Q<2W6|EJ}?#U>QVAkD3e4)ur;hiQoA;6m4)P~b+g5#bwk8;6K zbg~`}D#KwC8px`Rn>MT+7+WK?W0rDoB3^d^$k_@Gex&_Gt|J;m;yrb{Op*W#SF~M8 zh9?(IKAZ*Grq(Q-@pNSlCsoL5;+bAQddQ}&89h2)6e}$bf3ce5LlE@cR&waVQfHj$ zF=KTROD4ODCXB2}W;jnAA#10)UXg?<)7IL#UZ3A( z8gCqNM9wm2qIYcFz=Siw`o>RZ=@REp#I9LP=+qQD3+Z4J1_Gz6r0#ZP>j3!z(-p7C z5^;*7E|ErER$`lk$1Afm3Jr|$wgNc`FOWC}$xPbLKiK|;eO+)zYm)_%CBs3^FGa~x z)H|45mXKZ|&=u7rOL@IO5-*s3wWs>UD-GVH?3nTkyw9FxX2mO2=epaSi3%qYg8nVj zqx6Eh>momN4kwy;sLn)90&h*^f?$9A4QX|r1Xl!5*9(l!V)>pkD74}rTa+$q9 zjf29w)QM<#DmyKVP={n#Y!HJA3L>j{sbhFB-nz|JMckl1a2i>WQ{+vFe7_VoNIR$e z6f%=12DVO&4GbrhvRgl7QwSLr`I?A{MDUpwOg3?}eBG!!>lHY}!H*a7dJDn>M9(3M z8b(%jgSXU?y;#{L9)t?FBpWK`afzs2C6EB9F;t!Ht3`J1pfAvi{7uad`APy)N`wiw zulAyxFHww>2$lMEhm#CCzVGPK%6N&C;|jWcwZW~Zmdp8mp6?fP9i$lQ%Ly^zTsiu*p4@7fG8*W(uQT`Rg*Ebo5TJKA9*c5R5JgM8OoGBCR)$k`?B z!ud*S)u0d^FYO|hz6Aqys2 zF>^$1lB}6pH?iv)YKO(>t_j~O_P9e;K9X2+S5?bLurP_b3mh=$4ys92-lp2VVQ9lZ zf`sMW%i8;}TGll|La9d#zC+3d@}*ZYqgBXvUA<{yuP*UEH>B46&EHh9BEkZW% zxN4l$)buEGzhRP7>2la|meWYHoK8>kHaQmyV-@K;R36QFp0v$kKVo7;S6T!f=hI?W znZOgnF*Zvw4z^+mf1Y5en80o|`{@vG7_YLGzV&E2PrRkZ#%u}R1 z&F2a_Tg7O}2S!WODVU?eW?_r@Q@KkXxe_%#d4s!3E3tebgD+PDPqx@69*?3(kx5v~ zptIGis@y^9!892>fu8rLK1s4c?*Q|w#_XJ?6tbe&OwxSDhGHz{Ss>%8x5ng^^xXK; zDw7rtYHM#9!HJ7H_9sanTdlNa`Ux0-U3-Mx_4cnMgoDo{BW0OzgHxFRt( zVYS61t^+!!x^fUsX*yTpLQg6Fz>~Q0uxvBJ17o(B$hBAEJRY+i?vZm`5QUeou`A5E zbj1e7+=YfmTSlP@PJPxo!rHV@NYF4?7#xTT7``_ zJIja8O-{9i^TMhXS*@`RnHWrUhNFd*R#U_(Xk8tL!P7F>my|0uD0cEE$rY20Ink@}1=J}R0&IZMr zNjaPM60GaoR)ZE(&JJ6THakQ;*K{*5>1SK!bpqk@?rTyBR?^w|bI$q|#g@SnO(ib# zJZjA*h-#R8HU^lU${3R5SoKIQktX%|rkIumcYI{wT(koFK!8Re+079zw-?1zPM*>v zL+$+NFd1N*;iFNi+9vo&KrM)nc{0~#5wbAUrWmpE*@_2276EB*m$y?f8dO0xOlmuv z*j?;ER(R_q^BY%z04aK6M#&Y+Ov`4qwE&gWu|if`Vj!}Kr+wZ8$C+-$3boBmHArc& zUXcybpwy)2NtRpdVRu|&ErR*tu~R>h-gaMVzEyLI!>v^I2wr+kbKs`MZgXj0@YJgEQz>zqOYO!&n<0friyO<_`uwE0?e_P;R`Y(JWc8Ct}#BJum!bDR$GWWOi*34b=*6)nwh34RDnf^X>ME zEh+oua$Xc7Xc03@kgQ`gNWMEno{h=BD`S<+yEN7<{TuB3y92yr3UEgGR(&Mk6?wzy zLBQ?C_k$EAL10?S>n!LO=D3Uc* zPo+4SStYF+AC)Klw5VfZ(Sf(JNPz*kaj>LhO99T?Yx4EJ^aqsW2%W;0?sEFx6UfBL zg%Qc1s^k}x26G^7goQ{_;O1_Vg%%ZpI}*aI`TSOXiJPz&1YYUpj6aKW}$D%A?SR3fC| zDRxxwHivGS(^FCq%>8n3$BphZzYM1(Fbc!EBLK=lF2{=kbr9&W@iaCZWqKsdpEF$U2ct6bH(tr<02Nhu|>>XXgVRfz#5vq&fBw!pY!wLcQxx+V@x)!p7c7y zByq3%(nKC|V^BGcht;YR7u- z^B4Z(|Wevudi+_CNoCPn>Jk%fssy?990!_d7tfJF{+}3OQhSG^u@kOnXKH6 z!{7o$m$j``9lXIpj@2(IL4PRu0{hey#3o!YQm05)25wEaw>C`R8r;41w~pG z$1ZjuG1JQSDLJT!N>eqKUwJQ+UO7ea07@<6WXsLKHE4}hVL~pLrb#!JP!BpbyPlPA z`GCh_5)6}>uc!9S%2RA6L!C+XAzql!?Um$J!r}L3J(l1)5wYbOHG-T1Wr>UNo_Gc| z6LU-#hQRFSdXUN%WCO)K{-rjLZSr*U%&40+kB27h6aHHG>FIRMvTl>|P1x(M&)sZW z_`IQxTd@$L@7;F2z%+Je*p-J-A*x6pmk-Ol$(;0SwaN;TC?pfxJ|J+27UX3OB`9RG zJZG&Oau;RSIWK0^XL>$>+Qx6xtk0#yzx1rM&%Tw+xg_Th*etQ2`*K3mFZy+Gt#W;c;VVoJd!6h}D>c<_Uwo%4t!l);@I;x-HBx^Kk z)zv`e==9C{%+WT2)KN|0G@gLwsiFUuLClw98etHzD=qtc-j?&*g3WVI&sRB-K>6CkoU8yZFZ%>-apiqt95MufnU z0o76|uvPN2GB9+XUu@!;E-Q(&QyHV7;7(UqJg}V5;3fM};!;W&5+1QkEZs1PvB44~ z)8fR~US&E=m;+|GRx>?rn#S2w;K`EgIvGIq7!|o}izr>T@*|H-ZR&i%xBFqEeg2xd zaHKh#sUEpN4O%yWeV_xeM^Gh=F5aEJ0HFSD?A0LAG&w|^-OGk6n>z|#oQ%5Ym2$Gy z5l;(0IZ3!}t_P?Yo01Dpmavt{x2=(+*iM0G6tkXe?X_slC@7mN6H}v(598^^LYHS@ zOYChAKSokN0;Zd(S1HA!|8x3!{r;I<)}W#-zBxR5|Yytz-*Nqy`V;yxJO!&!>0Ca_ol}0g)8EWK90_BVkpicf)ck_&Mpi znNUk+JtR^U6))!!ZY28T$v!j##99pP$lB|Tu~I9g7MPQ{;S`suQDeyzvt@RkHIumQ zMOwj&OfK;|&evq(ygpxxYh<#C`-*~ct-z#bd4if%oQ9-n#no<7kCFES%br8#4DP5| zfvM;MY0|SGKIsHN`e2TirkuE#o#QHOLd`a*vZzs(@kO$}FEX%3H3&g0;m5U!&4427 zDoOV3#`iKw$D35*WrGR_u;&Msz)4e~rW&uXLgapTu%R>U#go-)Z95e?M0tR=fv8Qk zKs#NZcQo1|OnbXhg5BgCMVxBfD^%6#O3M#xhbeKiU&)C@6*sfjAyo(ax-e!8b~3|C zxuEPpRZUp7T1NSfq=QEgbUh)UHL? z*;mTbQyOkpY%u0RdPjMTZdtsr*4@+}i^XM;?YW{k-&E$^1ztV$7+GFb5}VhFG3#u8gR>Rcp*Ps2CqV{{3MR24v(=^^L?hv2#d<7%iPNH!k6HfpfeYC^w8&}! zyMh~|;D5!3m*tWLpe7M*U13sbTh}zmEJ4YPGy#~-@(z&cH1D{!#a&{F7{wt8bK78v zlfJ){g<@&A@Vd36X}4FCR1SL9{sXCFgNl!f@?H;ldk<8l=yGNgWskas&HB*)QpdQy zCuQK5#Xc{Dk!Pob&v*e-UaC)CX5W#Kq2hC7^26JlxHcgm(nhiYN$g0^rVb?uG`8f5 zWQ)(R_S%$6Qv0k4te_wn&~1^+dE^7#-fFK7Ab&j16_yyQgxXBo`BKQIqv(bqVL2RkYXJ;DP9-Jw&H7o^}JoWO1DW5~gy{ zi>#@$@#`xmd-eP*!Ep40soZ3vZ$y2ONw6aCKD803r(;%_~S!?%sb!cnU(!`(HcP)!UC(3=_0X2&FEj(tWu~CC~r%WN< zs+3i)CIyXYZY(Sq^w}lMcwPcd1W>=i*%ECfDee6@p}oiy7KX7U9GDZD@J7NIc9pl5 z19rR{Odg|o@2#g;;}oR$lDJHEa3_L^rlTH@VV^ZC_4BU_$C>S$ zm`l3RD7DL|dwaLG17_MdV?TVLAUV71*KOeLv2y#@?FC2f{=||`1cRpU=giee;_vGb z`9?YXu>xR8Kk)?g;Ls|)ZPNJMh=5bOi*8pp>!rM!Kz1`FaaSIUzMH_rM&m7XrhcPUi5OO9 z4**h)NM60tG#fv}T%tjekg!g;b==b0ZfP&~wOmnUr6J@vqlf@V_N$n#n$cw6YcSeC zZe{a*G&ql?uRXwv4rsLY9s#--Z%fsTE;h?;N1_X+!tseAPH84*B~?!8uv31s?~F?t zr@ABB!e)WFo4syciontMG^uV5B0dwmZ=X%v=$pR5x*Ptl~gZ* zFSYGUX0VMh=6PO|#8=AMdViiNmKr7%OPumRZK~$O75(Sg*(eBOWW|uF=pySH&sY_e zbe5h}5KZc%s-G(f;bD__vhasIB_z0wcWR#t)zgs9Ko-?3yk>pPBVb-G;2=$u zu!>j6S$lefT`-E8PI_u>C4OhaF+(F82jra%Q^ZwZ+=?FLx0=|K)nLGc8(!kIjwPlI zGAskwr^M`LEM_H|4YwjAt4pbr`99v~Al-H*V8OAV!saArtWHd;(^ue^58Im(I-*9E zwVu6TDoLnYtZD3$w0LcIOoEEKoE|W=0=({FBN?^$VjXi3*_?jsL**seKS)WDJ%d)4 zm@lb^H$ud|(UjThATNX9U^~AW!YSnWCTFHiUJH@hO2BKK6&BjWReD>MY_d<)Il3kb zK^)p5BJnHYNT>G}m={Fw%aVLK^v*6&%*KfX?soaCE592e%!g~RqDJmW#ryy29TDtz z=$ED{+0tbE{s_i%U*CeQu(oPicqsJLID zd22!gz8U_=bW=%S4u4M4Yb~cM8`0*ygIW zc;>%EpK_!s?=V1yowVidjDTU{*If9Vgq#RFD=r&n9CbFZ%f?wS3)O72)c9n0^TjwD zZ`fYr+TKR|_6y6%cSZ-s`bNgaM=~$L*wD-G_G@a@ENIc_$m%vd8&XKWE5qQydPN4C zC%lg@oetI19rWIOht(`N>0di{>xRv8ID8<_& zH;fI{)wF$`q?M^w7n5oJAag5`!hD9BAte+8~QFHc1_4F zhPT+fvcp>XHQQ2%d;)(Ov>f8ZwYX2tm>-n`M6DK%oAFkXWEsI3TgWzyYA{8u-Y#{< z<4w2$@4wZJUV7Cw#w|a}GO=5!X`APc+O?}SYIw{DzfGubgq-9J0~^O3jh>it^}x7! z;m3f}C;qa%h0!R4q0(%S-YLx?K90&2&1*-^vQ`*N)R@!J%OED=_$YDSLpa%Kl#(m6 zA~YFAtyGhj(zQ^J^FX&yPjyFAkmlVX2=%k1vTEAIxnlzZWenMY9>pQFW5>C@kP^0bd zEZhb{NRn01gPq>l*}!&Thh$!5erlz8Hmt-!U@{RA)W~?3@paqZM0V2#x0=L32AZq@ zX=vCPSvxc^F(DQi8`p_?^;1txtx=N1i(jv@parO*MHBEADQeVeH~EcX80ni#icnW3 za!iciSHhLl4}M99{0hK#=4~rMMNC*`6!reZNrkmI|jN zQC`-#ybLZI73+Fhl6SmIM!5oMRxB-u>Ll0OBU_WGK;OTTgWe&UPMu4L?*%3Z7}#Xd z*HZXOUQ(;cZ?o@b>DA0M^lUp-N%jRTp?N)v&`Ij`EZ9!kIQMl~w4iyoIiQ10fgr;K zLc?UNjRB;GDj@2uK27VP?{dKlTap*LG-+eM)kUhvHdhl$)d?RuWJD&2UrU5qVv5V| z#Q0QGV#~^_U9?`Z>J-1<#Uwq{DebL`vt^{MSvwC*)kwnl<}gUS&05XQ`1~TDNHQ;f z;r=A8W$TBYwpw^aD`}S`O)+Z7dc5@p7`sKoU8Xs&I2m~MQeiqVU$(F8hO!itOy}{k zsWAS!(YP|ZQNpd94F@~BSvH&aX;3nPmX{&p?e5tf3RrsSP3_NIDC|LYFT6%;)k)ko zye)>*$&S=FwPpD$GzZ=sGlVzC z+nZHNDyYk28CT|TZb!{&xCzTT%iHcW&RH`#mFL&WOa-J#2z|-BWs=^rB_RKulp09;5yLFvCzT21LUD7}i(NtCWrX}3yC|J^XgQM#1UiIhG~>5Y{3J;N|2P^+{s7~+kJ8bUe)@+rCT^e73n_h((lSa1{0QwNe+0NEf27L)82G55^!t=<`!UA# z2&K~~{nvBRjz#HEO7A)s`R`JCKBdFYGmMdx{>OQMdmp7^d0t8>kMUND=j%#=*He@Z zq4b>dQLm9wLcMXA(oZq|&d0oVQu=M4a4Jk7jqgx;I;EFW8sc#bLBBUqI*igcDE%U( zA?l>b{Thn;)s+4pO6Ly+J#C=$%ak5bzaOKNP-OgZDDeAj0!FAYE~E6Tl-@w;**rg# zewX{F@<09)q7|kimCmH}dz3Dqlt|3j_Y=T-no^7B{Q^91y8!fg+XaC0;05UC-za4g z|Hg38?GQ=_azBRS`9eyG1dN@-QU1B%X!pO>@9)qg5$PGDMt~12N~vk%M)mv25g6|~ zBfu|T7zwxoN20xp)bH3xjAPMAjCVh!M7qWkBQc*J8-@88Md=rq{wO6DHCBv5ds{|< zK3^JzdHzxv#&K~O=<(Vz!2d-V^4}-}9?lqzd8k(Dy3y$OW1}(7Hz@rv!yAKfmX85G zuU6>}O20zsuT_5c7>xJd#-cwz9E;~yQ2HH8*Q@k6rPbWuv7o~dY3Jjy*d z9^=c52i{92;P<%`z!y^}EoHf@p6{9fe*4)3zFHH~ z^Q|i2qp}L~)mjBOJF8Id!79kfzf_^0KbQ>qnl%~x^BAR1GyhG&I6J05j(+_T!U@yE zC78!emtfqFUIM=Pf9+E6uZ-m|9y*;!x)A?4S3l-4fS4_2K;{J za=;sKIpCLHj`^Q|Iq5Yo{x@tA4*U9q>QEOKSjHj zQc6>6EdMF+`0`I7cfURZ^fP$|>RmGf^=_L1{5?Da^!oM;(A8IFV*Y+I6aBq%Ci=N& zCg%6)nP~5wnUIV9!l0*%!Wid_F!0?L2EVNi1Mhc*p?{uG<+{RpD6t}kFOehIJ_Ekc1<M&2Wb(o)Z zb>O!L>p*uOt4I2+df;tHJ>ZAyF%Q?(qyENv^!KrPwDUnd_~*MZ$ib;Gw3~>bzt_h= zPsd}xV@5sy^c5J_c~@XQM_vJXns^1uH(ddG+IR)V_tX`b=Qk<+XSSm#{Vdb}6_|%l z&qDownFV_J@htT3vRRnV`Li%jD`tV7chAE7JV@!COwY4GPrKrnp967>L`xcdDzrT@fuYQX#&3C#O96ByTz5*Y8rl>Q5)a}yZn zk_7OwA^~}~fzr#EA1M72+aF2bZ+H^$FG^zmDw2SgOadQkl7M$ymAfyg`kBQ1KAr?V z-c3Tze4!EjJi8J7nbe4Rt8N5+Em8T~8`1y!Rk`0cf{)*9#P~jTCGhptD>09ySAtGb zS3>UYx)OMP_Da+%NufVqN}=E9ra(43Rd z#(X`J2A>#BsDDNi@K&XMr<#D*4Na;&_56t@!2N3z@c5b8=*RbFgAd2f#`tHbw3gBc z+g+62$MR}6#&gpg(EARRo>1vCa{%wHIl#l0=3-vXnu~td&P6{q&P9KJHWze}nG3r9 zWHZw5Hv`U?X3Xa-m2PZ?{CKn(eDSAdjPrX}p?vvOn5V|8@O;Hp=s*`O^Pdz^}L#<4If#dB5gb(DkF&f}UT# zR#@Nor~f1!$z(xk1N&=~##!ICkgVnYPc{z_{ zE&Iuok_b1>Cuh44^=liYJ6Zo+M?A)G7oh(CPAQTkJ!=T)%tHmySY zU6eL+|8FE4hyC>%Vds41CX&_6r#FFL9={2A`Qd8S@6{O3TdP5D=d6L;I)4r9IBN~Y zeQ*ut`~5W-=a<$Z{&5YZ|H1Ne9q8%$b>OE>>rn5>bjdUf;oo(=2 z)^7uUzO)Va{GV;`r@y=%_?oQJt=j?T_3h|Sza5ZstvfKTy*rSf*#WrU*ol7C>_i;t zrk%j+D?34#CK2}(=9^uhljl@=`fk*_a5u_dy&LxLJ-ZPXdVM$im2rE3x9j&H{{c$> zljY4G^ncD?;P39e&`YoG#W?DZLsf;+y;2> z-UhkcZ$HL)>3-1Tmi_3*Z}(#yecH)}V7_k0yxraozImI{D)w6sfG+kO0Db@E0Ps2N zAmU?n2QiQB2jRaxaS-;_7Y{+MTyRL~%|pP)hC}H8%PRlNw}TIc->&RwN++|OaXZFy z&K($M@(#e=aR;9N<_^%!=MIB^CLRX-I}RiN{ljSI2X_Jwu{$xY4R^w?HtvG_8Fv@v zcm7?d|NLE$H|E`-!~eV+`S;(A_P%li{k`l6`uWfi$i;8m13V?}!Mxpb5A^59k3xTZ z?|}Au>2VCzvUR_<=tZ_f6j5t@9g8C*FDFfZ{9l& z{MX(~Jizk&Uhw;cCrB5OzSwaBa_6>_kjtMSr7(->@4rwl^IwpkeeZ+5ntLDUq~ku! z`&aKbj4RkaydU^|^nSz_PJ0039RC3He&PYh%~cPe|LqSzu73PMz`Ni<^gI0^p5Ol< z%Kh(ys9*In;C1fL0ROR{Vct&vx$5uFf#1x}5ibor1UkOvAAxRE|E4^Kd071z*L_Jkxu|$%}=1c{ZGI?d`ta4{Wm1zS?>M@<9OjWuv35ZB;?xACsF@Do`hUG^d#`~ z(vz_B&8J{rfBz})_4ubSpI1EvIrodFK#!k#8gk*Xry&OyKMnpl`ZVzJ($k=$zP}|N zXZrjt@b|0V!jAjoGx+`aXMnG<&!Ar98SvxYXVAZ=pFzJr{w(C=$Y)i5o<;dzJd6C# z{|@vy@pr(-j^9C_JoGz^x8yn0`{8rw=lthDXM3Il-v0I+$`5-UaOXacawncge=^U5 z9zOR1U1Ga9?@>;~MmP*q!J89{9TG_o%n{_n@qX4-low%FPkRx3 z7I_i=$f6g~pEWO{{l{MfKL7S2?B{b|LjOjpwEiW)T~6uS>{q`8|Lv}qp@)9{GRpns zWwi6PKj8OI{-E&w2iUuN{{VUPg;zk2^{+s#G^*dXy#jhV{0ip%*ek&QYbqU>QFdMi zeD-(-4IDz)=j#B>7pC$ocAi`t@%|oAFqPXe*P-P@vB!cjwfEl_@8|h z?Y{ad=;ri4VqP!)BlOFnKcXMURQje$zxx{UFL@2)TJjp?+kw{r?|)yzeD!-B{h9hY z%B_AK<39R2_~zZ$(cb@g1N<>wrCZ*B9D4f=)GvJ#?ap}<@?+ndkdv>y3Hl%OmWsE% zg?1X>LO)i&h5Glth4KCMEyStMdmDHdP3Z=1_igyo-EX5``~HM@#-o42@7MnX`T6;G zAg9iL2l95tJD}s1cc2G4-huqT=v@^je;4f@co*Y*<6X>u-#-ICm;D)fVCkPBPhR*l z=<4jhVBW9&3;6m`_50KBp+A?s2mN`?dl>H{?}4x1d=GNr{rAAPAA2A4`q}r9|K;~p zJnDT#_wS?p(D&iDj!|jD`@r9g??Y}Ldmr=m?)!i{=mXS0?*sTh7kmIZp7;UuM&bkD zVY^CS_yFyH>8~Uku|#bQR$m@rdSV}&K3(eBLzF(I3mR&Tll3#>+JNq5zxDqvucQZX(rOJMlzNbrI2WJh~Km50bp6#R0B2|B|dOo`Z zG{b+R==*Nwe^)==XMI-!yKI(v&U1Kg3D!3B-%V038VSHb$p0R9wf$e;i$2Qw0`o4t6X29lohS$S1K2^DGlpbZfQT_f7rGx16 zlmR=K|Hi8HPs}GJh@Vkj?Dx|2TFl!!TRoK^zcm;bIcASc+y_%C|? zwGzlh=7Ik#0WZ4$SeLMU%RJss_47FU&Gh|K>Nnd}|IM&VV4L#3hEJ3rPT~HWq|z~} z-o31cOCYZ~26hMQHTvC7pW6(?MIx%sm+4speeP%3LFqgN<4H=Z)c3WNjwpegx`%C2 z_51{-r@QEo;}oo;cG0sdOAt3&OrJwKpYf&2huBA;&l4)|OxJi=&fTiMk1T<`K7i7z zxGs-_{g)Eh9hXqLkUnI77|RUU?3-AAu*_yT$*~8@|7i*2I{)2A-@n9jLZ8Q(mMM+W z=lK%E(7vn6%`>1QPBV)8WBZwP-4XSh{kG4PKtG?M>7V(W`$fNNRXNtDKV-S#gSVTW z?O_>I0^9nxl-9fOz0N@F<>&Nlta?7K1o0!bQLf`S75%=>RcA&C?35`?A0^mJ^Jz+7 z*7A?OPc1=g?6(GD3wH&`yya|*X*ys#Q9WO2K(6y2>&ySk&!}9hDto&N7RMWh)9=+T zxO-Io|F8|Lz8|4U-zb57^Q5XfS)~&c%qL0^Up-g-W*h2e*5ma1&jxfC z$E7CG@877p<5k%&y2gKuV?x|V%6pS}l6kHKwgt!eo}urL8u0Po;kX&ou!6((^)laF zJ*Lv9==pm3n5=i`lcCQSU1iy(xt;wF^_%xB{gr8pZ7lVS?XKqx#Oe4i<*I+Z`rfw$ z@!waNRq6X)m4BhiKWV^k(trEu`E-@{pn7(831VS2+-H`9lzx^zH&1V6VB3o0m?iM@*r&gf^{s*UGyi4S&S9IE<6)F{9(^XW zzN8PCMaC@#e25PW>?vdWiDQI6R`uDwYc#Mvz<&!=dOpI`MkDh9^E;(4(r2a`_s3Mq zaq`(5qoCh!unkJ-`6aL;7aQ<@K39S`JFmI?vIMsFt*o;-WULKVG6|!|2n(a=8RH=0QqdV4f?1&Hp29FL7L3!MK?Dhdx>Q{8Hura|zZo`R@jn zyCsMjex1_N60C2mqVx*-{La9Bxkw4@PL3sx~5c^EAsQoXxjAuRZ3SV z*DU6*Y;H}wDH1i4)mKn|tbt}YRZ}0E9pw&GM^lzrn@TpA;ih!5NPy9~jmcDcpxGD? z)97P~bkdA9@FO!Gt4@V!6tRSrj)o(H7+@$gEs+dOkJE3$W~eCu5C~7bIjX$e0z9IX z#&9}B=pa-C;cjFq%FwFAHM8arshFq`V<-*|t@Hbs#r@R)+>9AidB%{+OUI9xSU$`o zgv^P?;|l$en8m#e@eEVX!gWy@wgY5T(o7`NLII(g`ef4LzECk4@gTE*Bw8D8il+wz zf|EXb{@mbH{;1(q!_8Pa+MtNdL70XXPZDh?ehDSQ4N*O(6QZ+;ZJMZ0T*MqXar9`- zSEiI3Xi|wpu?UML6d%Y;`Z|$nN~B{A(NLomZHgpAGR2-DMIxpuW4g--vsz3R#dgDm z9Fi7{9^YhX@+QJ>YV=|^(T|BFG0U7m^lcLJacWa^Bp&a%X=XNOdbxhOK5D8t7SeXj z4)wr_vb+d^35O1`(kWtN%_Nu9M-$Q+7L<`@nvfWGyP3g;P40_gxuOx1P<%jaFi@sl zwZVpj=~nEi)WmRBfFqCWJvON;?M^T}FGjKy{Z5{v7| zAXq-w(`0$N6P=q*g+qZVwnl}@ppqMqmx z5v4F@&HhoVagdu`y>pjWY?+huODqvsM482QD>^q?(*#X}$#;n^)sMWA%e*9+nnfBv zN&3_ylH;+4SXv3L>gJ-^Gs5@`5`IMZ$@pxdiEz=pt~x!)Gm^Z5&nyp+dA3F;WtyO# zX{^BH2{9mT1O(bdRKT_pY%@q$PFXo#c&wXQf(+!(ph1Ij;K2Z5t||f=88l5aks;y$ zZ86ZJf&3xZ-mf$@J#2Y>hFoCzpx9M>@M4L=158C{$BG%D!1@p))bQP4 zKGG1q0Ljm)jwK>&kSL3lf6@?Q7Bq)lEJngw1h;MKz~4%fu|j2aE@{xT838Cfj0!@$ zz^rJ!V=_gOB>cEM+isO*V+WZNl9ZZ6b&)usl&mPX$wUSfOB->Sb2~a0?vV|gvRw|7 zxOEZo!PEqChsoF@<(jrpLb^fA)*-pxo!i0ly0CU_GA79Ks4Y}GYz`V#HrjCy8B1(_ zq#c2&&4j!%Q{;~_6nrw1CZ=XqPx4Rdy2PF>3b~?!VN=ZzF@C3&4p9_0Y`TjBg2-&z z_cb$3*RVt!g_7|I`Mi;6ZhuffM0;uu*&u8-$b?Z9v&MGi^8+dtLb{%~g{+5ks+qi# z<_0f5g?%~CY)ld))?h?(Ra{3$8l+M%EXvMR5j}y_l@vHDK&bPdP0dx&6fro>Q)M*8 zey)^9WwvNSktU9c5P>P>?bg_rPysVs&DM`yOlcZRSr2m}4Utrg0JB7pFU*#f4B?Vd z<0YgL=b{&k9#>vw*hr`Ok2W+x23VzBAdz&QXy2j6Og2ghZjCKN{y}4L%tDj2V5&Br zoI|RV%uR+X`jFcPZ&A&7G90lr?%=t7rxz70*ni^(f8cBbu|}FJ??8Q}ScS!s zO;*oc@M0uSp@1&x9#YAXrRKlqp%$#7Ygk#d1PFp9ym7=O^0J~mM`39k;59r z3_+%hpDspyxCtE1810cUNB7KwDw`!^O`HQ2wKOJgE+X+HdsqVL@O%t*R9HtWrSK#X zK>WN`TzbY5$)ae=&JL59ZDk!y z+?bWlg+NB8M>u;SI)J2RrP;SHYmcjDutAY=WGvN@sOG4Im|a96iZpeR z3fGFRUIq|<)3e6Mj0{Vf1%Cg&BL;|P;C-T0ch0z~$#w{Zni4u#ZpUHaNR@*9oT8wR z5ap^8p4?Ppn7v_dhSt+zY+%sV1~4O90628D6sY`rUBNveIVEf>B}dJA%jdH$>{2{2 zMKqp>&OuQ!MWWgc(FL@m&mk5!6qvL$_2IdiP;#>^f5h08ZQCtz&(05J!1!RTo)an zYuTDLRoA5TD)_|wjuVKJnfs2vjutg)OcpV)EOF*=sIE{SovY);ZX^X{b4SSze|`XzFS5V2dz^HdYLEmw1B+xAxxK6ZxKsGUx6BPFI>-BhP@t#pd);iybY zEK!^6c~X?=?smC!mbN-v_5sJ@t7GKSG}D|!zU?om2IHF%)&|;RG(%yHP51o!idZa2 z1It+m&nv!AC2aPP@p2a&eZlfWi^GQStf+f)jEj@q#aQNvi<+i_O{sulJqSiFA@UZo z!&U~8Jr%(<7i?D54sp;}NAzRe8cXq_D4FbGX2fWU{AEq;y6mV}tyq?6H?nkeP1Yxp7NnxP1*aCmelVqC316{sUZ0W> zg#81su=M^qk4Z1}CObwH)&crP0)|;@8%i`ZA_zs^c05XaZ?yVs{O^|T!PtFg?^~eAe9VI)U7=faE!vI7=e@={S zX`WAB48XM8lEvwh1t?|8mc~>l>H(+d%sHu8Iv{gqD8*5ygtpCOq1z4{5=qSr5fa!w zo*AlCb(C}U5_#s3ES_9d9Za@XAkd1{D2;m9Zl{ z6}aWY-!s=%hneUW%Ws>pI4~2QD=W~AtU_3}_#rq!TOJ8b8`)FSq>j%^sF-zXQ>vYZ2A)yWA@nF3!bN+uqapI<%&?m-U^}o4QK#!rb;N);vJc zSml(`9w*LSzMiZh2PjRqqgyz@);Hc{s%;|PdbWoyO@$N9ng)4;NgAt8Y`4d#Lp)!~ z{@04sy+)$~Xc1SyOqu#Kb6Emgkuc>v&j`G-GW8YwunvyID4m6Z+&Cw~5;buhOYv6V zuqNk)gX5a2l}dALdAX?+pZu=8w6c8M2-l-a%>JUt6)Hp-QVXmlr^=c^@kUipBDEoX<05{h;cg2Yt{!qNXrL)!56bJW`0BZF$T8$!a-O_69LM@JGh&3Q^o%m^zx7O4+gF4ZI(3s$j`O{tn_fzq-fI!NzN z@h>Ag<&_gmeqWO#+C6!3;^-!}G71v{%iKw0M^#jcCCS-t!~s>%`7%J8eAZC@5P8o@~I*3_7rYRJ+fEEreX~OFk4Nw*|DLQ;6tIFebeX;^Wx18g<8(4j zc#|_uF$AwmxxGPs2mgp$WmDAIBNCoXk{vGE5PA;JewZZUYz zvuSQD9%D38p|pxktHG$Smf}#c7>p4tb(HOGZ$WdRf(@{EyxCJOD4S2@1laIrvT{=9 zyfkPTBPULtP-Tqd1yr1CWL3(NH^j8*&mgbR$>KuLiQG)8*X7V#%s z=J^w|p$`=%J?KmkRUl_nVO{9rtKaom4BKXj#)6`Zb^BOXI8tcP}>Fyz5AzSt+`Ecs#KNp+h>?v=ESrWvt zZ!^$DYL{aHKypcf$_a1WSIeQY@srDkbI*)2v7BW&*C+$>h@`Q_iJE9kC2OLV6RhuR z6<4ZHamCaQ1m`3H)pL%wY1OO|ESur^zX`*~(-$&v)G8C%KcmHc99@*s9L)#VeD_DF z;{r+~sUmeaMxs13>9aIQUKJnxs;!O9HO5SsY{s#?V4pf+)gOsO^;U8x!+kpeG=MRd zEgZz@>J&9veCU8Fe~^s<5QY?{A~>|;mPKk5gG_S>?{H5>hM6(4H47fYmarDbp$Dpk zS$tQ|d5??WPrP$$V6pJntrzsm$xLG$f@eCF=@~O}q*-1yQLhDf^@_V-c`VU1w}<@7 zDHT8HDZ42#vC^NPa88-3+c)$EA{MGxN*61R`c5uxsX9f=83@0+jw7?D<2{FbVUwlg zs;!<#xkqBDDBDrZ15JxJ)P{L~wQLm{U|dvo=_L~@Mj01Hqm3rZLc1nQUbv`2{N>|D z2m-i^VCAT_O7ecsK4;9Y|5otcf?a#_D=uOcq1A(2l>M(m{y5d#zeIw>AAqcYPM2IR;4N;YD^klHP)C^ zK6%Wz3C5&~iDN2;k2faym1TgIoRs3jO&Y9cKZeS)_bSPR5dv6UDQTlhAoh*j2eKWV zuMV(Ou3|~vtDv4}yONRVxVEnG`^vd!Brd?_L?!$NS;tYuauZ#AWkOROMlr9&zbt0V{?;ZuCT zy%659Cts$V>JdJqplfw>P_<=8H*@k3d&rY1e3d5?!Yxmxs#wS7Ir3cdC=WD6J8R{j zG8{Cafee{2dHjg7ieXaPW+?-w<<$-WId{Q<5w8!)WkkD3EGTCOiW7X{f^IjH;mJdN zS5AStp7l(l(p#8AO)0Xdc&5irI&<<=pN_3;5DU%@jj;;k0}}MztpL%50Y)X$qt7BE zmUOlPOpCc!3T6A~bkwrhgUSPCDSK_)u5VOIUE448>LRxx?JG$5cPoraIT_>IXuu9U z-x0=<5pDAIRFGMSy!gKY7*kedRIx6KdT;O&$56zsUT7GouHPx7pLK``oUSDGAVanlke^VO3OBGs ztmTM|r6MxtV+%!?S8Zt&Drm-A4&;=)K;rl$Gie|G!L~VU@3=XssX9)wq&!v=O<2w{ z)j3Qq{Yfto=#f`AbuR?^YWj9qc&U^4#W~Rc4bn~D-MpcS08G`<8 zq^8sZ<;sivP;*$7$9pxZn%Il0t>u%#^-12Bq1GHGCnC5ODq3618YNkqvlYdd%t~DX z@Y9rDoG!hQt4sLyn|zm9acCA9+=QIzqQ{o56nGCzP95jI7p^t(j5E~1FG6x6I_FH; zxD@qjbzP7b8)WBaPOfY$Q7Tt%=;IY>YIl}7?#zi&!cs@n*uWq>@@m@bsL~r!U`{IB z*vOutijl(eR1*<+V%sZ>P=;ifZ7hQd;v%bg8Kiu)y{((A3cEsXP}OopRdJ_^6^$nB z3SP&RTOkv=s%&aiMOnF1$iFQ_HjI#A5or=J;RrrmgUQB@q>q_o&JM>p{K3tO>3s=8 z2Sm?F7B!44|K@KgBm1=c%RdMsUgB)F=)qm0a;caEN4249OdBe)b2@#2UgU4e{E)9C zFeOC@aoW(ZRTGs6$2EjX^>w=84BE~&)Uiu@`IKW0YHMpimeo{K6OBeV7q>*jeCGs8 z`!*Twy*%F21APo<|BX7u5NT>?Xg0@H@ajKdX*91ZIej)nC-Z;TIGs;uH_G5{MROa0 zp-M&w>;!KIRjzGC_;T$HF=VnQ#kC(72~B~RE9F4O*@MnLd(e4<`@lvFjkoGzkS%DD&h3dS%X7o|Ij?^tkSaw zpE3BX!Goz_s6yS0;*>i(H2B=m;2)ZUe_Z;5AD%JzJStbt<{`<=gcWDeQEIa8vFc;y z*lS%U`m8Hu&FP!)--QZWh7Y>bm9em=8e ziag(;ldDFD&UMOh%cRIdWeJiGG6m;W$I^W!#hXYyg+`O`;*)KS^3xi6*7+vB4jp`c zpQ)iqNz!=f(1@@VW&5nuJhL_|(S$Rv2!|SzXX-hzzl790p2>@YeX@&h&$KPc-g{%F zb*KEBpJ`i~z3xzV%gvd#yEF6d$jsZAnYWKhc5XOw>gcNMinh+{c4g)*$jm#QnYV_s zIPaFj9oyz-T32VFR(ZZTGjAT{qMCZzwR?ZI{bqjDyNZO^o>r)etk zvQ{@zXe_6WEbYAeX0!i{0cOYbJGyV#-*sZMV3!(POf7V*yS{V#(axJ`I`;wJ?$!$4 zu&kgIe#k;ymfb`byqGL-HjEz>@~Y!IS`UvaiDA7y}U2f zl<8W}z!)k`)K)fVjg98YrZu35A%hRw9KX(&#o3*HYa{n#ofIO5W|zU8{k4ec%t@uEk!SL8La0c`1-%Cwl3>f-`2V2hEvCn+k{(e zCmF3y$JQt-Ok z0zB5bOoYjNxww|vra6G%a)u|Z5#D>jgSj`(ve5q8Dt&7@RsPJBAn`yh1#qqq` z2&tWWj&`rPQAvItI3c7ZGw+t{vNh^@TGLCwJKYzy<)1321wy1vk<3>ltlO4~4qU*< zbak`f6}Z_&d#D>-EySP8I+iVz30FMTy`J>v5}Q8q2&rPR2$sWiYmt_(pFvmSGUvjY zVd|hs1+x$VJ6GN2Qc{sO-P$~Gqfr0iOzR2O8?6UyaA-8UV68~7y}~Uk+2m(HDdoxAq$%-*m>SY~Zr0xWc2ZuYv}V$Qew?6G{-tJf^eZ7A1x-0c*+1vqFB z%gnRKj37s7$EhPr#F}XDV5asAsd(vmr;l<1RdvA|f&-B)efu?q3;%w!*Et?lBh4>NW02CvxNjs&lc=#q!;4?6p=8 zWEU;y-f%0s?kg9N3Rl$Lx{R#(fQIbyIZdb=kG-XL@pZ>$uJ4y=Y0CxfF{wpDP;-1w za%SENH84_u)Poz2XIk$d6Hdz(S3jKFk#q2~P`;l8d3CS5y<|OfDFz$c>B?yh*uZ*V4`dn9VKjSb$usTrlub@NQ+FiP(dpD|pqi9{nEmg@x@& zrS?c~Z5MxsXDbMJp*xs^_>?Kf&qn4nSCG>qh^Cu)S}t&7b9Tjc3D-KBU4>}H17oVn z(G!Ire`t{T?{sFR%gA3Oa%7X9i$!cC;R>FlxaoqPrI^@7lf)Oci9V?CV~0t1>8+m*4{K zx;vWhik6`6LNK7)w^E{td%4onKYgdPcakB+)XIRMm{72TjTRoEVo$kpI$vgX!_kh7 ziv>R-UfU$>V5T68ChT*wb_G2FL~5nbu8W_pZ@bXS*hPRoCAAnbwnC zCyq;Go$77KwB0BKqgt~s-1hr-PQ@1O(=St;m={i|NnF&i`XIVW_))iV`z-dZz014y zuPY4f)RC61g@^Gpd+)8;<127uH#n3AnzNe5aUkw2psnxYDX#F>9#m}^;ZHm`!MciY zEFqVoW5W@x#GF~`1zZ5qs&H>mncg=RJaDwcCg|!sE$u3<4I70T9WF_w#6jTrRq15` zO_QK>nqHe9RuSkbJj3qAf!qNwE2_m-rs&mTaPI58>t@N#*RkB5=+>6GR7>94i-efp>f z8|7jc_5l}dVj%fBXVgEAUgZY${DM5c1{nQerL4c1zb?qVCpY-YPeAmeLjEy`ul@wLUeaU>m3WOW6R@=#) zmkla`s|8pV_sqKn5V!$AP~NtxdkvxdhMX#s$dgx-C!`E3(_NkKq4yXzT&Ls4<*n!cNE~1tV8ZZnkHERV-o^zJhIdg~Z!F3#JKA~EF`>8}OkeKa=Ya6k zL6iMa4?l=@2QYJI_pi%t+^y%yMQlAow0ogP!#7J%aMyVjcRgp@R-A(5Y29xx|y&~27$eZOBC3#<{qW(Tz)1|pcisJ zNI3=ZK&n z53iuXrXm~3R{yOhWnp=r%^$qUV?FW37Pr82LsK{Wo1&xl5su}F-@$QI@_Ns^00I|E z-Q5wJVP8&{mpL6I>+P095{wD%U_f1OcoZ>2EMpf3HZ+>;5Bnm2y`_%zmnRzKVmSS> zfe%-YUp*iePoB_FP6bx;D&A=~$E>qbE!X$loKvCb7Db_{EffcIC~&b$%=+G9&>Pr! z-71Ad82KZ0FACIK?MYOI?FruZ(|NaWL66k^cK2MzuN$! zGUwqDZ?J9EspE$;tqXiRDqUtr@!0CxOBU@mUKR*^b%H+t)on>Wwij72r?6Qto~2-kS3H-{??OE#C_s zdL()`r?|J8=QH~~T;}7IwpE>X@5!!O)afx{?e5riJO*9__bk?d^a)h>mwbe_Jxw)ZojC*7aVh2y^bxj!zVuSHvm!Nm<~+Bl88m& z+v&iogMQgdQl@joiGt1`P=Y-dyjA3&*ZB2BM2n?5)LX)Rm8C6*@aA1du=8NY9}+1t zOeb}1w`4U9h-Kj;~SwcHXL~A zDS&wb>*CcU#Q|_hGOR<()_R3aZ*<$1b6$4z?otn!RdJVkJo!HSg4tI!LN1p!>9uKr zqjNgQx-ZAHUz-ES{k9cWm?EHM%P0htJ)yh33`JF));P99f>ZAU>g0-hVYL@H?Bizy z4_GCe0gVK&YoS{cTfp*$0FhHeq$PQGg8yVmdtg*(moK`SKR7Y9G;kjUf+=c`tXy#G znT`RbcbHx)Zv+_CBcVDM-y_{u(OI#T?j(SDsSodm$qDF~FoEz!7+YT9CpOP}Uk;NS z!_kJYM75c=*|aStm}B-Q%}VY0R(sX!Wt90&cDz!*`+RGdrE1rV_QZD+0+@VTcjk>T z_zrJPsU0F=#e`+5di7@m)jN=;HPT1fTp+PaLdhc;y|z<${a>0h=E0+9nj zw!lb_3&C=ohwEvAGA(VnJAm!!)_cVR;j0t2_8UFCXG$R#RzXhQBT7L$Ll2uMA$t9- zorhhckmGHNSxy}}mJ?>$7q}fDKxJqXK{E{c6uhU)IWg=pv4cT)EsK6$%fhvjz%BDd zvzWtjjtb$qs2nH{Kc+P_#NM3^V>v5N*_Gk~>dj-kf?pM2v1CuK%k@`@tbgKdF5rbh z%&_V;K|L|4hQJ1`SGIc=8*^SQR7^+?+Y)jQwdjLT^Th+6FC^$JeqwTR$7uWb-lK!O zu)dwJb+g{jtdD@Swr5+GYd`NmFvTg*`8H3;UewLb25V6^2qf6S>pc52s9%eXs5d02Gv8EOUTR>Qx?1IY$<8KAL{SD z&FaGe-K8s!EDhW`*u$1FsbhzSbnPR~DFSIi%ot^n9q1$;VT&vuv=86?QU3^pjwPO1 zeyDr>QTJ{aj|GG>%13v*eED`rOTV1<+q^EUJsiB@Di3EJa8onPbJ>gG5q49t7s~uuf@taa(9v)#?}Ma#w?bqH<$eH*4>?V zt`rB>9W*?U>%}>*weqYHx!1yqT-p*ySU>jaJD)@*J)n2o^%O^Pb<8E}I&VEHN4N@f zBj;6I1#9?_jDVcl4B9|jZ0Pw6905Rx@7i{6_PRx`ILA_nz2=R_d+N>WWj*`NVm)lo z4&3gm0oW1njy+rWRwr*Lx)9CVwMmLDL|YeIa%3_07@e=QYgy4> z*1Z{YD&j9i0Q7A>%VRUy^zb3U=I8oi0ovPUvYVIs?+TGo%e&h6;x_fNHYYmP(&|wz zM^}(HjCF(U8z-E#R`T;KDn=F~DQs3^}~k)Fh|r8Yjx0)eym@DF?^ zoqM~wtiUb>ops*5qGLVz_&0i9QAcjS(hS5a&W1Mk7>4-P8xZ^ncyV1GBrhYG=Q7y* z;z)u!L~}O?3Ew~h-|(#nbzFaI$ChKf;>;p>pX&{GT$hioEK*w!cU1q0`PYe$)s=X|$x^^ETha7ga5xC5SV=cKFL2qsLf(VSo@o^%L z^S(t7)wiIgLYdhkM+ANL%Rl-QbHSDCoVMZN0ME(T0k)oBidaLy1)fAtt3K`47?MH2_6uh^!7=@$9{L$2wjkymglt zY$V&dcCYJLaF>X4o4%ZW_maf)HLiKYh@o#}1&yvj^MsCMFHhcNclk=}X_D9s^Q0 zi2#JUTLmtZlCx^%t7GvY8_9u8qp!|!-Gk>k(FT#T4+{YuOIo_N-k5v;l(3%KSbm!v zW!>k$uD5l85y;bWnrVebfkSArrL46*=)IEx)2TKP>FUK3f@=dr9t3r_?s3D;zZrF@ zTbJp}ZtNa;_P)WG_umZcc*pQ?djRLW^wPbz8=JX}0Ea8PaA)Vr1vwjf_I0=J?`~b_ zj??y{cHnj(&-F`=&f518!Pp-#XZ9X5<6f;m}(z^|pttfjj3*D2V9tuG4tdEa^ z_vH!P_%?yqnv^HfZS4BPG{r@Wa=be~2^NkIfuvkF+!=wsZ^y?X0%9k6Y8-mu`G>B}ZpYmK?dl|i-yh0xeeE~CA~xXN8Hm{qcmr$!Yr0q~ zIZvP52Yvh_0GZm<8F*?jchqXt8`ILga7E{xhq`tz3iK9zo7~n(uh!;*^!mrGyYuZ$ z%{LJNONRbJ{5o2F+@L-0DNpacb3t*GB5V4i!a0D8>_Co7F3Xr|BaXXhpL}R206#bs z;Bb`hU{8-;kV70=JKA>w>+h^5R;be+Vs^O>!7R=4=cXDjykVz39Rgn9_O@{W0eH7U<T z$)_%ST%m=Zyt~+bBa_=}urG75-G;!cH?=Y2+{oR1i`;Z>AMQp=)7)+?70Di5G2I9d z&B{d9hy06!ZrJ`@P-v<>cSoSRGeLG|;X3xMX(V*;rsz!TP4Mf2kFLU@b7aN?uy>n3a#up~K+PAM$7UV%nsL)}!i}jb2$t5h>dNq30j_n&GJT9n zi~2xt&NU}vCYgNkK;XHge4Q!gN<-JSA*DA@9cjsK*sQ{%p3dNhcl)E~W#{^=ky@82 zHguaWa+@dI;v6j}2mSB#nsm&Y>mBLd{e|uM?i9!=)v;)0c8Px}%e9`8FR;NcQ7?3* zR^END@>0w#eB~`(s&3}HD#U#|pZ~S%Dq8A$@p}HtBxRFw;Vuhumil&^ZC}G12=d2x TyfRsDZ86lwgI?FubZPv5OfYBx literal 0 Hc-jL100001 diff --git a/ld/po/sv.gmo b/ld/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f7038a8a951b9dd394c46e2ad1a07b221f5c3730 GIT binary patch literal 43131 zc-pmn34B~vdG8g3ga}d!Wl1508&k!0;!(V0m6t@Ttw^#IjV#MCj(w%M8ePxKoyom- zWXak0kT`@S&Yn1XoD%4gzEYsHWea`KmbQ=WK`Hd5QYe(Qi%TBwm44s(f9Gy9BaL}| z`u)ad=AQ3t-}&})?&oj6<%IhT`a9HO7^hKr)f)}tH(p~H-#XP$e|sGMGD7z0$UU4{OxT7}K>&zI&HY)F=vV+R6QQ1S~o7=Je@piyJ+YUT_kIK_|+_Mei zLMnfg%C}H?IhE)0{HP=p8NWs4uTlAzRGL)&ud{*g*Q`Z*Q_8Nj*uNZ=Z=>>hDrpMF z18dRlC8>Xf%5$lF?K=_`hQ{r=J|Ch-%aJK8?cU3&oPWOj9)5gi;SsrFz%h_V4UAO z2kpLg4#xkP{C@YjSm(v(f*!}u#XM%I{B>TpJpa9OvF^V)7j*oib1{DFc^H57dHB8c zJd8U{<*!nCJC$#u@)0U8VtS;KhBp3*%1w;-^D*x|=VP9?pO5yxb3X9 z#Q38wz<-xYVnyTENhpxWH7@A}K6iEl{-$oM|6|?QhgZ6>-Z%81{pudbt=&Dq;|o2Q z|I0m?->JQjKV!Y9f2bGx^VhwQe=Ouy@p}5Ozd;|?_lJFuLx0u>ynnL~`2Dv&;N#S- zp#Kpnw=x}U#eBcI75$&Q4e%Fk1N{580q=*mVf`Q7hH+oshIziBAM@MVkM&;DkNx|w z{QgeA(A6avXY(a!cf}=;KOeaS`}oQw*#FlIV86~B0G>t$FpnDsF#ab7fX7z`z^^9^ zVxLwGV&1)jSpUo*==aJ&;Nej!-_H0ExGz!pRw{ow2tGWKl+Q_2zK6;as9ZS&dR{Xm z@^T2{9vVV_ACmH=A9j`wjp#{JrM^z-BG zpySqI(9wm%_&q%geBU<=x%?-?=;v$0XxBnY?qn)Y8v(x07y%uOjQ~Hn5y0Ix0(tfH z2;|5gkAM%qI|4dB=~CeLf=fjYNqPOHSpShrfxpjQihcR!rI^PXN5TK+kD|Y!QOu(> z3O;;f6#M#_QOxuERK9`Ae;vg>8(F}ekp&$MWij8Ive<{mseC<^&ro>^(@Pfk`=cz{ ze>#i({B9QOY8}J=pECyhZXE-C?HdDLuNuQX|JIo3moecjyH{i&(9pkdJc|b{nt`SBG9;F9CY}_ zap31WjcL8`2^N`$}Y5D zwM*>IU06p+%G;$px(j;xbGxvwU)_cE{DZVV=`!GD?PXYh?`0ULcp3QO8Yw?=8OHh6 zWoY-a%dpPVcjNa(yMc$9-5BSC^8Cnd^!I1Gv0vZVjq!iF8+87*_hEf&q}=d6*oPfd z9%lXYKFt5rJ)pDIQg%tXdk@wb?13F{_a4ai&+h@A|IZ%K(Yr54dC}zMegZltKCFS*0wv*5C_&(6lmn_JEA6b~+36p5|-buiBOu~+z zpz<0jpQ7>}-lr+D`KbJFR9;KvSviswtPgY0Yp#v@-=p&HcwW=Ahb*u2@J}9~@|)al zhI9wb=R^l~{>l3d;{eOw{b>IsD(9Jw3eZ1)T7drhc>(a~WX&`_; zwgS}O7hs=09$tzK@YNZ!cs@J}KP;F<|9?bf zz;b97>l-_O@!bR1=cf(;Zt(!<=j1ua>s52mCp+fQ|BZ8y^BUq?^7Z;_ zA$Oja-`}`a_VqfzopBwWXRpKj4qgZS|MYe6i@$Uo=<+SsgFdp?qrW?@M?asG=PzFm zJiqe>(8-1yfY*r|u+F&~u>Zev1LWnGZoodAa3k=1+KrG?dvApOe&vlqw>M&)Uzhq{ z+z33q>n8j@_a?~MOK-wFyqmC&58VWOd|7_~;wJR7>SpZw$jz`*{hNW`58n(te)DF? z^;2%a^R8Q3e~0l)X&hVj308}NV9`?3D@?+3k%ydQLte?Q_DkGvoA{JuPY&+U-I+1nw<9=jdm zeE)XHlhf~j92>a<`~J`!kXxU>196Nu9>O^0A?(}vhk)0ehcM3EA;`mz9D;oP!6DGc zId=jtb9Z8$FWw3L_P2MUpHn^n`pSF&>l*t2#=Z6fB2PbneLC?j%xnE!7;mqXhwlQO zzi=1u{OVo6fBy$Dzgs^DJU{}2_NH}?0^yTP}&-;H^^bT{_@2X|wBZ@LHj za`rutw|njZKYRCpz7F35d+B%Y!M=X>9?02$6uAGm2X=%>O6#@kU)&44pLH+f+2p<8 zlSB7{KVG~S?f(2;;O~d`0$=M6Lyu1##yX0J!7q;;#{PZsFzmE{I*fV!^f2VvDfeN0 zXWj=q+V=te?)$LbPu&N8`R;v~Ps{!Ieb)W3BYN-0^P&4e2M6v4Uha_ch5I3I{``LI z-z(Do%@1JSXFY&@+VcS5?|A@p^rHO!!UK@U-+KUje#(OwZ{$I&@8E;j$A=yS{eR*? zjPt_>(eBiTV6SYV@>keBehBqD9s)mK_Ym;?{6oO&cOJq%v^CBfx9lBiPr{BY?a25v=Q@k037f_m6-t z%}3F0>`~Cq<&R>YZ+sN{dFWB#_nt?AkB>Zxb^HaD3I41BZeG0gYj z#~?>O@)+pw6OVz;KK&Tx`AvD=as>Ez{SnObSC5GOb_Da9I0Cx9`Uv>=-XrMelSe>r zUp<2He|iM#H691Oz4vj;9$>JzfBPh!62lc2}`Co%6UpTztQKMB76)RT}?UwsmC z;Z09rzT2J>et!ydd-y5HgBP9xeSPC8$p4n7K__p18hG0DH1IO|H0I?#4Sja+(^%gN zPlFC$d>ZlUk5c&{%k^h4?>C`~O$Zp#Ars!FpfwEac>SpT&MV&tjYpJ&Sq& z)w7u2tMdHx=fFRG&taYO&k5e110KHe9L6(_LOz^!6!RE33VOW!DEy1Ol-^P7*VRX{ zo|}&XPlt|zZhreH@bDK$v41ZgmAJ+8pvTjm$9h&j4>{E-<>geiu$-iS{?dT0%zqy< zAjkCIPo>;#B>!G3QA6gnLb|>m}jKCnx35}$NCX{ zjfcJ@mTN_{Uq`=J3H!hh@= zmpKl_wnS_mKJUN$Cf8Wmglzx*nbcQWR0z(viOO{Xmp2;!J3Gd z^S>P&v!U-FXWlR%Bl+(utczOUyDM6gu~_$9(*hlMqSW0+zi*|_jKGXh`HIwSmGXH5 z@`z>FXJYefYe9U5ZHNQ({q^)YxdpO{|NfSJF7B5;SJ3BW#z_lo6aIT!tgoFiKF1j{ zEr`coE6=J_UMSy9Du1&DdP@K8qu-Co_to_MLrgmY&wA@7#u>{?dN$R9*wioBpEV#4 ze}{R2p1)bzv}k%{+fMrZpHe<9<N72b-_pE`G*b2;@_6v zr?)^CjTz7#Z>QfmKC_AS70|N@_9vPD>H8BYI^na#|IX(_e8wuz*#3TwWi7$KqXlsp zm+8WQ?Zf`aWU8Nkkdk9Xf6DfE3+x^J_X)AaHGOkD83rw55K27UvJ1`Df5Z`)hY#sl?_6x^y zIG%36F1RsP&-T%?>CdD^IqwPeZRNS_iwY@ zoKmIeOqzB6x;>kFo3y412P`jVqJhJ`P$Ql+HS{;On$7)9p}W0% zsqx-T*`#cu{ zQ!8#aSLN(!t6B_J*X>TtIq?_oPU?F)$2v_XuuHx8jTNKCn6 zap|F%up`WJ`(Va41-*)@Vu+y`__pOu&15Pb5$4?HO@81J18Vx*Ib*wOGR%~@dDkjA zJnebz)-ri6LhVf>#uXAI3S47WX@Yu0#Tzt$y``P{ZMHwhHF@SD6=+t}Z?Y#7OQi=( z(x=%;H6_|RDQDWTeY5P^_2yGc;7pT#xiaJU0nr~3 zk=}*!v?h#ZX9C9MHfjybCLzlF#BA)jz_T(HJCm~~tNDbmQvl|y?M*UXP*3|_AwhS5 ziDa_s6mvAcW+z26(JP`|W5k-PY`@YTXPwoF$u;C&b7$Ern3h+rlJt!uwCI$aK$v%O zzG)K8@jB`W0MGWz#aY@5t7&?dNw+6f(vbPh!8&{&Dio6CF3n7D+1ymInzJ)3%9-ld z@Ta}KJ*J-&0M~hz$Hb?^qNVBFw3Px&_NKKNm23DDcBp&P08948-!r^I4W0Z;vKqim z`flcn^Nisj5=k=&9ha84)xllu@!%W^FbafLdUM zXf3pXxSNu-zwF7hh!=e#OLLQ3Elt|qmT*G40?!-G2wj!^`u#{(CBjdsS|ZB7qUv}w zo8hePKHiI8o%H8@QoXgEHR>g7lIqWKmtUY~&pOSlQ1$gotWftK@8 zsn!^b+k=s{MjSjJwkDxV5_)>M)|T1c)7uwWlZ+!4(?P^szCFdFtucQo0tZl9Uz^-VqTf;)WqZ_4LfSKX)r@HL1I4e=E;1D-w9RMN}Z*;)Q!*`tBp*qO7zBtgh=PONZv^RrZvebCIl1t<157_tEU~XOVuKj zVFy>Z<>-kva;D63ML}>=)}{P|c0E$0CJ8!kx>!Cy(vlQ3_p3x6FA3C5EsJF<7Yfz2 zb8X`WdVuMoRD@t|U)$J9vO%1w8PoBV9Y1L+LrHfP8#y3-40DRwPdh<}+2)&VV@BHr zb7XCm>|lml+C`uCv#qPGuY>lsN;}NGk{6UiUp_VKZ2%C8>!oU!Z@*C>I>5fDo+{^E z;-_3kSV>xRN==#go4)%Ucv|*svOh^gIIf+G8GF2Hg|6u``Pv82M;$;72LQ1=w5FB31F72M`iu5WSmS{?4XjYN%*+!=19?IJ4q3-@;J*=RaO>YJk~$O+)BT` z=fkx*JFuK0OO3W3rh3m0(!14jT%_IGHbMPRpWybAO?zbqykkKmt8!Lg@s=nqYwMzB zeT?xX*|u+Kwv=j?c~eDpmN18SZOK-4OIsKFuk3z1WcrElA`iJdxu14W0gosNMfg#H zoM?k+%6gaE{1_y;n|=&GwJ;;SB%f_hJQ}v4=tB>AJ?$E3ayqwn#`0(O7R%)VxhSa> z#37WuwU-&E0TkoM%k8bq|s)Hc3a z8tW-FHIfT?N2qgI!d2LA(1J$@M*%Gd(~;~+TOcXu6klcIQZzJ6{FM>I=9tr?PN>xg zEB_3~7pyrIH_mvZ&gaE|VMb=LMPxLi)(G&v8W0^E$oMlB*~lT}bkmR(2ZGGkR$f@+ zVP2V1W$J?S)=sTmetyydBP7sYAtX>e1fO-ofGSz1?HOqlEIBMtz~U zm!LJvC{uhwfb^3F%@YfA>{01r+9ugf4Kf-FyXzp8GWHYEU?y3ZT`UMzwRNplMrHDe z2=$tYPFlR-6^lKHN_^}kMQ?qGGIOtQd$kfR3ExOmhfuuMCI)xy0{|ttZfl{g0koJ9 z{3}5kZ9=>&7!sg=*?`(=KOJC+RfiJ3m^cH1D)&=;g}^1NvK)xSH5)^DHZw8{q>{z< zx2;9J0upL<%latFv-2?riQOHxhRDHD6sBcKyo?Jz!@=Tx`h|ZDA{$nOs%hoUG<`tsi(~8`ui@jyqjm z8uenKv_U*gbLc!(rOeWR=2G=|%#e6Bn6^pca2>JP>UvpeYWu2gWH*}`OCvK*0x1xm zC0t!NKII~ZLv~jn!cA7l;3-5xmU&vssghN&#o$&O7320en4iK(E!YymiXoH?R6;S5 z(x?s{#Ozq-=-7^t7`;p=n?6^z6Iw*9L@|7QwT&9Q$C*|ZM-X3=jt;1U;Ig9SMy(Lv zfVw80N`mz#&0kta_i$gIDOy~jlu6r2wc8OXY6Jw^a&@Mjm$+rlP`*sUH4np5abd|g zHFM$Ax#!l}wq!b%J#~B;b`sb5adWM?)@gao=;K3OhEm$hf+{0{eZVOe)y{Fq5GF*p z+flf|M=!k!sq8YUfR0nNV?&_wfae5tD)*5UNzSvYk6YB4Nf^B#;@Ov>1+!(gFO!uv zNmr(WhO+E>s%gv%OQZ_!qbqA-1I38k`j@J5v6+}%Aq zG&H<@j|z2IXs=GN<-o9g(idRA;8ZI7)Ny0?9B5kVSQ4k(5+Mr*h(`{!bXWFViLjWm z8DoOTk4He&lsm#M6Vgg#(8_RmLQiW_2UX^l+TeP7qJlwt&w2%E5j+*YN31G}bKIT|}am|nFHXHWyL<3*~8<<5&5 z^{KfPAWqBnoI{IZe^Smg#L16$g)>lipk8$@F)fy-5^6Lgn@bZM5UeA^Vqr}MQt`?&&ZNT&@2miuh$if@>BQ%v8~N|qgKOs@NUiKD2RQUfcm>1a|#U?-J}j*}a9MdOfRKlMB& znhR;~X~>17V>BTVC$Rw7an;vt#FkP^^;ag~sk6qumI6r}#^~sS(p|K8J@2G-lWG@7 zgKWQo5IG(J*3lmtHpDVxf4WKvZB=4ZR%^i6KJ9KBH#1v^rS~YoQnbkWu3MdMt5%12 z58Qa#(TqLk_#DSJRSYq{jw)`YsIwe5l219i!mg7$HQxYQd3gvr`y@gvO~F&;%Cb%T za@9isb_r+|HE!2OZRvP?1P>FrNHVI*rt0#W%b_OS9h*OsWxjQoJS}5IFORT!s%;iJ zif^z$EHoFUn&?)9t(M=;N7iB_`%=fOB{w+O%#~jGsl>yUh11SQW2ggOnRNtv5Ua?} znB}mmB0FUjt%=cb@5IRP=$P=gm*ZHj-+^FEopu5t!Knkz6fZ1Cu)c!zBUpZ(A#ooZ~ujdW<>TE{iFuLGbr&63lKHE=#AZV;C=VA_z8lSs%0Kl(zXltgb zL`ik1$3ZzDWT@MZ4uUEjJYIX-+Vgl+w*N^0xSCVPR? zQo>+2kjervtKrY_pFghobB? zM4MA&Im^vw%Vak z(IbXHj9L|5vgM-XIevIGn>Ia|XK41NEI|(aR_8sTu;x25q&}<4Vabl|8tmO;u=ANB zRZ$;YHO0qnHe7az&7=k2 zWUj=Qo&%brgIG0YVEF~JNHkT{rwaydedqLkx%27$QuR2(h7{c`r*r02q{b@bwK*_3>4p1ZkX{nEm^4|RGH?5u z60m(`w)T?mqsV0|p>+X~@ReASYRYOrvI2=VtJBlYoUwKL4zn29sl4*=wjQgCT+Y^4 zjG~J8OCS(R#x~Yxa5D2g>`mYHW|iJ<4>5rqH~Qh%=~69t&~dACDd7{Z&yJ6tvs87} z9nPlfq3G0RXw4{RWGovHKv$~KC)nw7hg_%T3i#r&``~P`B`<MxU%2D(9T(c_wJuLR^=o-dy4{B_xU#jl(m|nyc1j)~#LB zdNTcK5AxjA96Zb^+s0Bd$=FUSHMWpTb8MS2GCI6< zv~$Q9Nz2zdf_21m)FGQ3*(vEy^JXC_tRN5wgdpJ0*C%L)9bzKXN;r;>2jq$7K*m92 zNynz0f{WLTvTrvu+OJPG5~q)-t@Ef(Pf@)RJIh$dj<5YiYQSfvAq}x-X?yIzYkS@p zZ6N!3&~iy%gYs7sppu}IRmc&RNTOIaYYRTRjTpqp_FvX(!2XkBGdWufz=|OY^G3y; zga$QN@nu!na%N9uD~p5@G|{*;O$8XcMb8o5P==-J;1D&aR3y}(lC6VWvNDEb^&q4N z11|_j?3-IE2P0`PGK>;S%5SPU3W1a`=jhhnF=LG7oSl4olvNVcrH&f$+j0Cp6^m@`cY%FGl(ZXT zd<0BtCGS}!6`f=6$QSQuqd8x$s&jDKQpXn$lTW1>A$S{ry=-QSR{p`p35<@SIZ~Z0 z5`zvpQ?|>mXPSwjIPhdmlJcewi+s+`MkGn2V4hsCG0&Qk2nWYBe0ji;Zd^H>)~Fw2 z2P%B4iB|{z${4G9Y(!1-<@K2|-xY=7VC-P|uHren#sAoYi;L|v@DAT@_<|+vw^Z=D zRRo3}`?^ux_p)l*MDJg5EA@7t=pFUiF^9^jLBZ@ldssmzz7i!ti{miktSv%M0UYqG zN`*~O397)t73|c#m7nBEzz{3fI{1Ff!{-AeJ_fMeutCjfh&m@BU6QLR<_J%t!WK*+ zVF+dGh&gK&t2TOO9RoOJWtEx1cv)$0P{F8Euynus0yGsVUpeaV_4RaZ>kWyT>d zI@tAC-@fh~n#bA=YtLV|zI9}HEYmG_5;8rs9~~TK*^pU#erDY|bKQoHb1yh+?S&iG z5@2Rj-eHR1&dCty`t|0zb2~PyKWpu}wQE}k$(GF!!@E8SKMtFA&vPjjJe65y}0PKm%aR!)}j8P-e@7~+Sj&rBj}hJ zo3GGxSm&QzDUuDek!jiU?O?Oxmopb!aPEbfbrCR6jg&y9mpsj!BDM=AouC!T2MB+b zM~)m#j(E4E!!Uedv2}p>Nc0CW&!k-}s_X*`Zox08T`QBaE;)R<7gZ0b--UGUfvp~? ziT{G!12o-miYD7NJclY7$c=Ij(3dUs-WKDI5Su0lbNX1*@41&tgf*HWd7ms9CoSrz zXK=8CQPxzdf^5O6aMpvuVo=Zr*p|HaHc8)|a$pyl&Q!qb_f?Mz9I;DgENC`U!T3UP zzhWzL^NP7i)^+l}s$XdOz28;ZPg&jGWJZJjlHO7^HovBwVGpvvcEO^n(Rv&S2=tVj z%YiVskcTuOOO~u5)F=1XYI1lYpx6XtH)&&HIQP78XsCgmB znLQy`AP|!Adhb;qq0@OBtPy8}`gs->qC5+o?(72T4*isQmHY!22@FVp(xmLBX^+t_ zX%M1LX8GL%<#+joW;-epK3O9}rr1G{X3Qp2D=3bNQDlf*p6T(?wZBLUkv+B)(#Qf~ zKc3&ivfU`X|cm&^uRP08$kpCqhRYFG9`Z%>kju4Xuvgnyvh;O5mV{Yjj z7zwtHIFO8S-pQ0G(1|b_%7PdRhay0vf`x1tS{fwtVYqejVd$>H%?MIhZgy{Wv$GWT za@@Hzf@3+v9;^axLzDZNXQ#Pn7RtHCi8PvNS1*f3Bu(>+WD-@XZh<^{2y`|DX4&-& zswEL(ZeuhYSEh|+hHVzvdUix!$D5sFoB%8c)#@ZW$6917)1$XkEym3lpYV&^9Q;g0 zq2Zd#F(4Ts{GL?4teVdU)DMw8NAXgwykFrZa)5WCH?N16RYDE7nCLETk#wn z$zCMl&QTTkQL;Jaing&8YQD;l=LpIy8DDG=q&nb)9Wc<9QyK8J4Bxlnc{|+2eA&h8 z2(D`dI?{@Of55Q^~G~=q+ugXxO9CpeIzq^xPWj-{}+hyQkgs~?g9~GWb&9U zvH&aN${MtEv!7g*bGiMgOMzs!xS@fM;+2<%J z-}S4>>d|aFB2rR|AyiY17noEzz?N&=GPdyAwM3JperOUkeK+VdHQD-z!al_!hfY0Y z6A9b-MZS!-On0eeMnK&i=71$MG`*!+0b9{x>eZP)j)j>&;#=ACOE81V0K)J0 z6z8W37QYBpQpx)Q(=RTXYNJR2Ef%$G!~v-zj2dMFS%&@lmS%2MZO!^c_Vw7z4i?fa0>!KCZRM4+# z;M9XSR;joOf{C%Me)k$CQCTFO6Vx@DUu@gM7)&Eroa6)?_(^6KDd(MHz=mE|Ur&a} zm8jfbk*ZXrOA^*kKToUmI0zFdO_A&_rO16^A=P)7QKY1jGpL*HNGXzfz&w{D`4EPd zDn;twTPV2d#IdX-m!1jZfl-|89f+kB2~j-OKRCFpb9+zcwwDG6JD2V{-FCV-&%2x$ zU7aa#W)U)5II{@%5#<)qlWJxdhwSr$P6$#B$XFzEAH>ouL`MaBTNy9#hUE=gvTFJLvwEK)~O)z3h3 z%o7J``6f#X|Hi3EmI6*CB#DD+u#jBR`(+-Rl>m9@5~LawEhYS;y{iw#o}!hC)73yh zj}*gGW3e>+x?KVo(`5a-Bp5uiCHo6gOt2YMviyRRCPPv^tcUVQXzJP|!M#Pk)9dDy z5rT~-8%Q1W)+gmWA8zxT*R1%I+2mUMN}g*@9`p9|lQ0hldvqalgvmHUbr)shP^7I$ zb%}f%%eAY?W)e1-vFB)BQ%=cJuWS|*>uC(d^CwFwOt9hBZ`YthexHqrDi*ql<;T!K zI=zYZ+QXe%6noHJ@PncySofC0ZHOA*A`K@7f0XH@ZuPQ=SCIzC)$|w6QAjc-lIoLU zL`MY<>c>-_@C7M}{gazODxN4bq-)lugreBKByQI(y**?{VNS|GRC+WfB&n7S?|^1j z~!~;jgtR*8#CL$|jL}9IF3j-t# zT)EFh*wAt)N-#29=+)*wy@wE2VNm7^$!&D_vfCJ&dq*NwMdnzs#2A^ANTjI@sj?zgV+%luX3JJ?| z+19jly~YSW%Pud%F64&r*q1^kYu0BFBI*jbjoq%&-y@e94G)2tcx6 ze^p6^*u_*ZU0W=WtEG!1SCPvDD!U5RbY&9Tw-6El;TQ-AYSOEO$Nd2jaI~)lC~@%FJvov9J_(YXnT%URj-X)P;rL%8bQqtq7pP z7sZzWF3^4#$~k=qyHq0;tkbF-Am=qnyW4P;D{0l$fXB#t;qOGX>@egYu8>=R3_LIY^F zkHU@3v`YI;%?!f^7|}j^L!6K$&kkUz9O$$xWU;N${2`fKRPYOFTGV-q-?*U$b3^fN z2D6JMD?8N`iCv+Ls0g`W-2V#Ek$Xe$o09&k{*r*bdb(#&p^jw#g$2F}6bGeSxwJ&m2W) z7SemMi>KlIkgyz^@wbg)o5)c z@$Kl{31h210gq*i(L9mJ6?6QlV({h((~P8w@ynsUf~Up(YOo*>e?FwXsDm){inmTU z<$YLaic@=!9FUkS1oqtErFg)wttZ@zeBBFf|&# zF$*O~24>#!bQ433Y7*X_pjmi|NP#Bw7vjo@y){xQ2YMpWK3}4IOMy@~1ng<%!~J|Q z%4FZqYX)YGnLj2%j$c-z-Lv`FiZ8LV!Z*gG^}PL_zZCpKhaa%CL@3+oeP zpzfsoN;LeZ}>%Jh!*Zzsa%QvxPs74m z$UI|Pm92N42V6W@7X?cvq+xf^2~*N&t6Or(a1=BA2HQR%>(okArkdr!IAKi+N+qdD zi_d4H@yA|j#$4o5J1apoGMtG^56M`Pu4GGbjBhALUD z+{=iP*wn2~fbJ%F1FuUN&}>T;#LiEe;j4(HUA|WV?3pIixH4 zyEf_|icI-ei326%P0(`J$bM~L{Bv8wbT(Nhw_mgX(%G=MuPf-scI{wl|Ki?1Hpf4$c@R&WKD?$zR0JFl-@2=ESKXJg-#%OeEsN7Ak zX>01Sqj1Y{TNmMETv68VoO2?a0ZD|TJei)}L1s83J2pHz*gKF)hO=XAY?Qdy$Q~<* z?hh%Ka{_Bl4KI}IlsHVw%oLG=!CeG96s7utOVm~Z3$$ns+lNxMUOi)eNdTtMr2yDO z;t*)~_CpLP+{WlxNN+~$>O9UslwnFe*4WX}YbM|@^UY_qkSJyjLe;P;lJOgwU@FWN0 zsG|^AxzsvCSPM*Ay5$BA`?r-voE07m9V9#|mt68n$XRjrfuLiq~> zm`P{j=?wJ|Qu2rzQYm>c6U(lKbm(WrXFtLZ!(*`Y1*0`D?$qIM z0itp0L}P3(7LB34Rm9bgnyC9!shF2Kp7RqyrSNPtYKaio){%^|%yht1cP-WmGd5r8 ztE8`sgPX>qWInNgEy5b(;eU|Yg!#;&7|)sI@j|1>*u7cFCZzNk2vhn%0^w`FswIiNqFQo-=JWX=X5MgCpVX;F^2Q!@X{q=0lhPCG7p?@N)Ob0& UrhRyNiv&N3(W6SOJ>!-C3DO}QH~;_u literal 0 Hc-jL100001 diff --git a/ld/po/tr.gmo b/ld/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..96d567be4aac2bd394c5c83f3faeed2e173a1da2 GIT binary patch literal 41339 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

    ?)vTRC8k1AJiZN4bMk&0)vuYMb3XwPivx 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

    eAMw(aWrv3er0| zkyiAv?eOJe!|w4ayEC5mi(}B)oa=ji-l-1_M%_!3_wTRm;}LH?L*8oBF6gUi-Z@JC zdl88DL#H=Me7|`J(F8>|3U=SDyziWICb{pE(??!M=LHKh9{l2_p(6+7N?PW&0fV)~ zJFiLi7eW5_0Xiu5b(^!5QAfLyD>NQYy_I*?;1M>r)l9F!^Au9cO(ga6*pkUTH5icq zn!kKwyRlj^dm+m2lZov9A#?X|DEGOPVB3$$x}E5J{E0#sN-3|~&pEBcj9nK;4t+%u qj(a=E-2#IK!50lb{vtq`CO?;=dv9XD9Qb5&;*Rk!C}+%*srnZrmrp+c literal 0 Hc-jL100001 diff --git a/ld/po/zh_TW.gmo b/ld/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..23277b167c33b96d49fe0607f56a380bbce03f9f GIT binary patch literal 44839 zc-p0W2V7j&neQdZ#tA8#Y}#gvbCVcLiZxi0V_QbWYRHl;2?VHFlI4N9poxYVGIvG@ zH=%+60Rk031qpSbjx4JfwYTXno3}}J^WLVtEeUr9;*?F<>`T1mec$|CCCD z%1==F3Y8zD@(7iGN#%7a7gG5hDvPMR{{c2lv^FXq8Lw$QRQ?r}|C7q+CTQ9-RF3})@WnoZ-(Qfw-~W)N zO{H=Tm2;@ip2`_i z4&-CJ|BuRPR2Dw0X>+OE@-W(cnaTxJesGee6;SysmGgKUlR$^>PXhde$(nW_mDQ6$ z*Ep4*q;eOPPf*!U<)2Xb6Dnya+J8*OI3Aj!X)~#OiOLUAd5cP&%5P4=I{eEN;CcTe zC?`?*VJb@=!TMHF`4K9&%ijm7e3Z%?kAQAJqw+B-AN;JQF$=7vl2B@!sHCOU&VLs5 z-=vb3PmiqG|=a(viv2LAE)xqr=$MS=@@TdI{Mo}<);|0EWbx( zIhFrTC5eKzZU*>j=M1dh2`VQsU(W!2?jt68nE7xf=(dVV5yb$!bR|tH+rjkTl`^0>#(^4wm%X~W@aP9LkpD)e_oqstW^ZDpgX!qHt zpuZ}gLciCa!uWpn6!g@m7eEiKTYzz%Tmbt2Z~^%8y`&_^^Lj4C`qeMQe80F*^7lgU z{kW&0mmYr_bbb11;4z*CT|1wa@+E(N_i6O^=F{N&N1nm+nrF~%?=yJ*MJk_SgR=

    IpQkdH%72j0hfBcEA1{TTm`ddzG2fS>-(V^5Z7l`9!=;e-Z^+-jD+OJ~ zmqCv&Ed!ol8OF1(4E?@Z20Rv(@8)$~2KwhN10PLY20ATR2Ds2N=)1;c&;!Sofsg)r z8SuTa40OMLIp|%y9Q1ujmIs!DF4vcXo;8ab%*Jl;z`^i;k zKW-J)dGRXDvt||e;@~RK|Kcj}-&a9rc`c4sx#^9QRjpI@)WeBQqX^Z(Eq=#x*Zf&Z~= z4g89IYe1*7Yk=?S8mz~_8qn$Q*I?fNxd!+iSd0EAti}3IUJH3%wie^4rSgM3zqMG0 zGi$*Y-<0*kYeBF3p2K+m>^aPT%5%_DCC@>BHa-WuH=hH)e*ZbNd;2={`_Xk6SHU{) z-CA}G4E-zTq(==^Y9z?JP$rQ z@jUqA+s|Vh|M)!cyxk9aPV|Frv;F9Iy&rP-f-KMa(cgFd;OF1?(f$+VpwEJG{H`nq z{o2dX-wpZv%jLlP^K#HntH3z^v;uN7y#n(tmF2S)@Mry0?qmB_f%!Zc0KXQ?GAPTf z0nGbQ0PArxAni~9>+xv=d{`*UN(22j8d$gU2ITmM2KYCp67zVZ5^$?4!S|cx^COiQ z&sQoTcYj|AefLk5;IlX6^IunjPyf9V>-f$p(Cd>`;IAjEq~5Q>`p2n!KhwPm?V77V zpS`l(Iaz*9)+eZZfnunCslqyL2!h}0gBa&t`TJH7^ZuJ4_~;i@l89@MeGc(b2bCo( zCmT>-OXYeh?`}ZcFfJtHB`WVReW|Qsf4W-Jx_I7H9_4mn@?CgcBea%Oew|7`>(3fZ zE8}t1ARhVOHHgC=_&o3%p9lW4pNAjtTPlggwI`y0KM+OxAu34}wHf5xFXi>7@>yPI zQ?Qh_AclD9LJajki2?ugILi7s+J7ky{rsto@TY4wqFw(+#BD#{2)|`&E$IAmE%bL| zE#&@iE#&G>E#jd!Y9S~8Rg3ZDZ^HbVH-YcJz6pHz!%g6W|J(#TAFo6CL>>5HRUP=) ztOMSTI{QZl7uYC!4kG=#vw_gJP|3;P{dKva)%FD1P%U%Y5ZGIX2dGuw_=kCjp zub)czzkCJbnDq*NSG@vzv-1`3`HfdFzQ1_|bos4>`{-uS?TO8h$Fj|!)27YRF3IQD zHiO^4w;B5Nr<>t#{rhIw*%j6+cEC%ZU>&5yZwKt_ zk{$3z+jf9nU)h26|K$$gpU?>S1&tWr=jHExjqvmCG-928CV#)H3G|rSgy$tqpntXe zeX67+243(Dz%r z(e78fG0so#fjs#4pue6yu(yA^2lKpdFY-ta?FIdfz2Ku3`TP1_%=3qPf#<{fP+ug= z7i4*AAJ*qv`@k>1--muCcVZlsol-A$g5F>01pZ&i@=v?aZe|zOE8c~9UFrh-kGjAw z@9zelhr2=7rQOi;o4P@_UET0k&UHi1zaZhi*A0Gsvm5@(NA{!qi~Sh?r}u+yOZJ1l zoA*O69o~;|_3y`glKa8me{lfqpE-bWmK;F;I}Ttz$7TK3n{u77L-`5YJec}-4 z_h0h4-h+8f@4@<;J-~ah2mOCjmR1ko-|PYZee5vcAEWYlw!?=p?r$GPKfgT;_&+`Z z{(R^N_-y?V%%}AT#(m=m@)mcG$oTCD#`ne%toM6+fp2Or;FtCSeq}HGRHGMuo7s!` zzu1fMo$W*5&mIN-H;=+Tz3rIv(~n6%{TSxA@)+jx z@-dk=I0irCm&efGo5x_k9y|_wj~z$9GmfKvxh%KH`U}V5e_lNf{c`s>^xZp8fbLJ6 zKz-2(>0is|{u9urwI?vHURnPoS^o72@Z;Y~xObk!eDY6%Kc1Gq*UH~@CuN*^663up z%Wp_H>m=4Y=M?y3+9}!o6y&|`6zsx@Qy9-(S^oGG*6CfRL6?u7#`qqTrSCNS@z0(H zeBo*Md7nECIsDpb^z*yZSci|CK{@3No)?|L`ffM_y1sk{{Lyy?_^zD+Uwr=z=JT#T z{QhJg=3UeWJ}B>lKe@XP^ZRxm@cp_E^t=Bo`kQ|i_MrSM>`wbx^mp$p+I{0J`uVvm z?>mR*`Z@GB=N#s}OqOfT!C$SQax;%x!i_(Vb)F{6rRSl?s?N*(l=INzN6tfkeCIsm z<=q!B-bXJ$j@DiP9bUNr{e9vB==y^TSkL!fM7#MHL6_)7$j4Fn``$&2=VupXUgi?Y zTv>itmiJ%6e8yjb-hEh>PhA3EthJuS;OW&K}XCf;K? z%0axve|zYAO%CYXz&Ta={tA6I=V+e4Vdgt}R;|Iu-!JPq&iFR3CH=mSK8^JG7=4b? z=eBJ7Ui$ua&ZBD>&knYM^!XpM{vX+fX`t2nW{v#5f^C-kzRNWx&Kl~hir&(xH4<-e^Q3(@l?4f}w+=l80s{_DJl!G0V2 z76iAIK2cszDu1j&=d!+KANqH!$LRTf_S4vxpzq&M>y^^?an`X&Qwsg3{{D)2oarHd zPlCt@pFPZaR6g&KCCA$DBHa1(d5z4s;6ZwGYc@m9Ba2%7HHCKi-ooO`(AyOV$t1%DN-G=Sts?Y48(I zq|#0PekYX!tnWBS!Llizvo2zL{y6>K!n~OSJ-3m{9{SX?&p@C5#lDONpV|HQ4uV;l zgB<9md95Yhw^R9L=II>dHCm|r8t)Iv`c~G_@;k@>oJ0Af{C%G3lLP;ZeOTU)=3L2# z6dhQ$=#yl-DW7d(T~E(?HRN61EuZtA+aZomTw~@u&gXNGC*i++tOqy-bH|JH3 z(6caop3{(TVV(Ico(J1bdVWBIUE=+DwhMp9F^I(TB$cf>$REAIHi7+0_FZ@lbKsvv zH0E?V7%Ldi|lLmeNDLDq-v;U$78~PCI zZ`N5C*SlQ~7_{&eHeEIfy}CWc$SHU@3MdouVPiwH7+gKJQ zTuu&bxB9D>&;MOR45I#~v7E`enX>!{m4Cy!#ntDm9PH`y-_txN`gG^O|5ktN==a0) zX_mhq70W+;^$I$ z;y*N*CuW;0@xG1qK7IeK2H*J@yPH4z22>VOVrqJgC^9hxU>GSvOf3SXKJ58ToYw(#kuNb7?+v&5@ zMUy(Dy|oS4Zqznv$hp1F_JiOi`NaAmM69wqdVFh4IfVtVRdspyVsb=~Ll2Le7b7O3!t zLOy>e=r>cL3pdq7qA@i_y*3zIFZ$;%k$6m>6%GSax!*L_RR%+bKApevx0xPHPZ?o@ zMrP=KodI+KTN#P!QA1FK=c>l^nqX8Wa zf{cY4@t~=pIW1Qo+g}CHty@Qp*G(^7wRld^qM14oq}B+9@-e1B(Bx72{P9?XM&_?F z#IzkG^CEgULJP$873(7rlgC0}V#fLU_<&LAkB4FtGNKb>_WZfg$@+P-%Vz7rm{D!& zmC;DGi(m>{G#-uxs|{a`X~Y8&pP;S>TOgoI7~Kscn8xH487s+L<1zwbWGQq~oK+dz z6tD44EIf|aC%i#lN35mCBBHdJDG&;c+%+?{Ls@PgTW{!+yn?G-grO0bhCf=d-d7VP z#@sYxx*3a-04n}mvEB%a!LU#U>cal&AP>8a(fV~Bi{$n(6DBNKkT`In9;X4S9))aB z2gb~N!aG)c!LZIFms){FMR>iKbWD{VjL4t*Y^tfImB#$iSk$517)KTlhYV6#G)2-* zHAY3SGH953By40FPdbA$PnwaM^+7X6{6|crRv}WU7-Os>f#7l*F$WeCn`EYEG{&Y_ z)bFb?d;z08Ugc4C0zltrM9Y~jsHb(WAw^fqOi~^Xh5|Icu?~txqGm*^#)Q?!8)i+u zTXZIP2A5TO^%arm2HhWx#7Xq5+;qCIt{R%t&Y>t%ZNg{4NKb z@0m$f;nx>skbB#pkS-6?$kdW;stCmchL2S_bNxjAk7uZ$y?Fc$QObOvM5VqM7%fx@LIrW0Gx`kOP;P?#}) zRM-x#Ryd4JMnzm0ZeZFFWH%y~ol#22PuXa&(*V+fD#UBH55#Cf{wNJd_T}>vM;NJ2 ziRxE3<28)J)HepBu{h09HZ#Vo!m5PfkJ5xlZBNmwf>r+Vx|q@#)&9>#qLM_U7fccn zeR?=vU2a5Y+Qd;6c%F?qKov1F4;N`=*ZPNZO>%ZcPS& ztVQK$t^Iobyu$g8XUjBVlM!H=+~#2g0qFj6Hg`6d)P<%nqO;~NTvVvpRG^hGs^cLT=mG`^N1P|h z@v6`xH3EWBuzlwrwEB*5*Gc(CD?^c5(%|GYFkYdCd1~NtY8i_71Gb`{v?*`7=Ee{s zTMt)_=3g0%73g`U?yvF(!)8o>KCf)t*rDY*a3l8IgJA+APd9J2&Hwys&e#!>XC%?M zP-}TpH<6E7ZN%0y3mGAkI45sT-uwdMqB!vq$3$cT0_eshjD=YMY$G*N?da{NNr(b{ zA(=s%kC++8N)LthK%0t4RhYy%P++$phoVBvgVYOsHw(m5=`$6mj6%>P^By&FGggvr z5F}?_hz0`zc5Caf0D@!QN-JThqY`FJ4SDQlHMv3AnyDqsFac+bnXqQW<{4lXx>QHV zzi@cRi5i&4L@$+*5D86cGm12WHMCaViKal+uqBGb&5?)TrAQW_3`0~SB*?i1`dojQ z`KHQcK`J7oKf|Pae4dzr9ATqIE;cpXNS?FsrpEDXEBqXslWz0G_xXBp$Y38)u(F7@ zBNcHrPLNEtccH*IGjr6(wE-jM4~AGfai3$H);t!7C<%88U(EZ%7H~dObVR|OKe7zU zYSyb2Ar2BNX-?kSYD4%)d2?8QaoQnBE-x*qNWKuClz)yEM*tTK^))`voKT=Ip-4Dh zv0ij-V-o<`>xv6WEajVR9$N>?d%yFts zd1YYTdcV1TT__USK+#*uB;63g{aeR!nFWeT7!9neSs#dIfT#e^%Iup-#?WD2c2ET8 z~_`*&`s^FDOP#QCc{+Y+=z7*`5e1*tWQ&X!*i7{k4(zV3)!u7~o&Y1F+Pmqn(kjB(g7#fa97iOJS!!C=`MRN58&}c9PUQAR& zwIZqPs3hePrJztu<)CsD(c;3zMJ1~UM->dbInKc+Tpb5jdSly#8M#$4`x!n?;P^L* z#Jn#`PC}hnHB#YmQ@BdRnCk`A06sqrL}g!m=6Z^@12$ykm?3L|(3qxjS?!uA#s&D% z2Pfe&;$k^t4l)R#5J&N7T}k1hqPgqlmKBu{0n-}I7b4AUB()6dEnSAK09i=Zw~9oZ zQ?K586%%B9#$DRJFx`6 zz5q<-fJSTl91qpFhiU6&KlYiFfx_H{5&>hmaAj2XZ@GcgnVBIXtZYmpny!Go@Y$@1 z4aKA%L+4?m7NBH$3}tr|fYNGd?BK=%F9>oaSs}gJOwEkBs<{WU&e&OSHt&RMk!Pmh zvVp7pHKT#ZgmiYOsKE+?RcE!IqXk15B>^Pmh9XG0hbZ-vO5X?I%25=E1e>Aa69+{a zhqz$e__@m@yuw@#T0e%EjYR)E!u-LIklTjPe&Y;BVYK%+( zb>u{EV%1(5@>ki_N>hdna(@LW%@L?p9VC-L<8V{WSDmePyg6YkWVK_Q(z4klWy^{M z)7b+g77B(HE80&Ld)hiLjVtZogoB=diy$>B!Vob71?;9?9(FdoeSHiDvJ2%-NV%eHbB)hk7K5{MWcdnNtV zJX88VF-5zT?1(TjpU6Rm4THQqKg*C2r7%OWo`RhhtQ1~N%soey*ATn;5fjSA-GkE# z=^8i@BsyNOg2j~WsduROln>r!!#>xkAkK~>nM56&cg|R zpZo}@=sDbsN6wq#JR@OL{7@I94{L*=kRULpIpI^-a_6KxOkgP#^Wo4_WPySqN4cxY z+GsGAq4Ifh5-9)=E3ZQAIoTN$TI1(^_dd_#t4vEgV+b-gC9>aEl zK;UtLJ@6`*B%1icby6FcyrCFF!j@g2AkB*7N4dA6G@%O>_Jt9KM&lJRBpX=2r2zh+ zu3G^|m`>KrgF@QLfKd@rVVxJ89*R1@%D;NsOO`Ly7c5$&6GumYq*O0mRk~>59M_{2 z`goyPr9&u`A@#tH%u10y8+$fSz>l0iT*$Ey=x$c`us&lPS;2}SS1{teU+ltvC zw+07>R@7%~3Yxr2po<)>dmeEdh!T5kVaE;xj2aH=!WDH{phcXDoWDt`+SVBrk(yDP zn2~t2!WacwB<}Oo&T8szhXW5sKSc5$XNPfID&A4xvK;)%AU z@C7(^1MNGu1m4QIg0aQ)^ZA5=boEVH$D$<<53#eZVn+FhQ{yU$jC*A-$l2NRZzRPAr*-zc zc_oFVrP}P0xeK(}6}-pij?l^A@Q#(ot8|oifJ5kNW)y99AfV4%SW?It)m8GmsSKF7 zvCer%22y9iT&l-}HrDu*~e)@I8cH@OW*4l*C<;{;TNU*>nkl8y&YPsk;@#bVK5c|69w#Ww{*L7poC z#blmH4oSwTQWk`v(&n&Ul%AVw9_(d=LUr04J}{cWvwN5oqjd5FB2$}Nv}{S4HkVHb z;`BKOPOM~n%m}F!@vy6Ey-~5j2`JP7I5BkFJlJQ?wYl!s4&;dx!P1^TVWM&gxTY=| ztXdz_r%amks6Ibx7GA0h?&1Z!n7}6BY9F~43F&I@;X^cGep2l2sA5|hw0R1lBMJgr zX@s2PplQE`KwK27V`z?h{jv}GEjIIP>%jV(>~&m3qNQc478S15I8h))M7ecpQdCvJ z+fvL6g2n8ys~XRroEkToHHU0TvYDlJXDCNQ#;x^gySZQ`u7-J)U)oU33# z3te$9Ne)?br!oUwRi(%?*r$%%{1$Y8YS=#z!MITJSss&#i#W--n6U|G2qIyUb=ktJ zsMzhriFErB$F$UO?z`!abH16?n8HS|HTEj9xx+#mb_QC2#{A|6Jw##>Qkzp6-mwTM zjtSSLa*U`)0t-fBwcPyGUm}BCLjm+!cOTde5xctaurSoB(#>1~tkyZ-Rvk1&2rN7w z+Y)JoifSA}6Z$*w$eY*4vl1Cu*b&KX0k&^f5B z)hyPsdS#jkVS{& z`0~l;%F5s-?WrZp^pNA4^UUq@sB8fP0Ye>ab1K}gTtUxj3)oyEeNkn?#Ws!TM&W_v z+myhH3t$2v772t5x5UfYu$K5-Wb%%rHM0IV)D0DNG6qRjB)yL?X35ojfXBXgp= z4M$FboZ>wIZ6R_Asubj26b#2Vr6^x_ed+R&&yG|b4;PiD*28lUtbn1}8@x(l<>?+8 z5(N?k^3@5hK$6Mz?gx9m-j_a}j+;_7**cmmTp$=V*ej@;sGEHJ#m@(-#76G~?U}+= zD~d|yY0nr&jm|2^ZW-bLPQ(_1M;9%eBUp5i5w0RnZPAGOPt=wNt9(dOsj1>Q5hBK~ z%y_Go(8#nU5$8Z;kr>PvJv27ttUu6-T{2~F)#Uj#4kxEYVG{EKZ=|ryaP-B=WUYt{ zR<$_o?05>|Azbewa$AC7tq7H=NgGI_tPDkBCi1IxI7p#P6s|ycgH|MSW;t&@F z)g;cSl{shLVUkajE?`PI(TQtvDRAzZ5)P~vmn>A9W1h`x)Mj`jeFumKvtTZsXXwFc z7l>CFYHn=o*Ha5~B72Tzu$c}waWhYHq-We)_ zD_uY`td%Z&worr5FN+xzS2F-x&Qf@wBIPRuNC|%F7<~|;q>!yFJ_w_c49%kz+;7(l zCLlr(-2|ZP-Jtw((@x5y)ggq=QYi!^OC|es0dJ*i)x`rPo6b%SA{!jlq`^*KvTX63 z!jhQ++LjFsFG(C(#Lv8PFZPFh226y>&ZEThF$JR_X=j zus=$k1TW`;;)j>5Ofg!e)xvYJ(-dq|!V&S^ZBa0U30f)hW{M|5hKs>bXA1;91!4Gn z*(UMojlFfHl?r8T#}r=O@Amsr0ExJXKhxm9cp+ zyf53cRfkGdnNEJ0m|s6-nN_&}$feY@`C1vDnjlBFD(bHm8D);xO&PII)9WH}aj=9| zKWNIV2X8_%LGZ#7XMtGWa`^{)m+%@xdU3owM3TQKSYd?uZFb$$6(>vm<)q>WVTcc| zuyP~48>`FD)yks&3Yl!<^qMIjFz?{#a-|}D8OPwZUUccvvUrre;7WeKW_^T@m&5nc zma$nBsm0aO46Vfh=zQvUnQ3HwADz})R`9$9Zyv2u0cQ;#^G$lhH|0@%^3;My9(!og zfy(O)HU4vXCFEokTMI<07I<-6)%PkJYNs;;}xUVJ)5UvqF%^8!Y>G(Qh(zIMHcetS~dFPVV zaKUQ0lDu$w=s+($92_`lwKrSs+ma1uhK}{|bT)zO+buoXzv zJu#T+%pccp9peo#M5v+0b5={|@Rpm2y^XX)*0y$@+dwBxoMuR<#t$FupcNYHEir_W z=qCsU)R-dfz!*N-Fvja)cnNnNrH09UeTlByZd5~88xvgzn0UQ6hK{ukAKaC=bj{k* zn5aL4HN&{ac=-!=)Zd5;Ai%>zjaT2|{V$S%1(O`y4tk~2GVA>>*2V6@o3AP!qO4hd~Zx2}gyHoguIN%qzTL2|B0RpR!3X1?+R{hpSZk~rI$|+-su5rK^fW9 z7&_TFe5i-2h&`y2)jXx3(lZuR|ykO1 zpvF3~!Mi)GEeC0B+!Gu=&|x)QC!~!1$^b1%;%cWYqNCo>l3hL}%O~Bmo*C%?Ktp-}f-l0o76P-7KO)^{Ndt9uOXRQAAndzzvhK!8#@SUB* zTX!ZqTiy4$WN4O(z&g4kd6q4u)pXc8(}EW17rH>eXJ*0CeiZNZX%@%=xq12q~dbW^|z5aOq{xyym~8n?Fw+Q3hb#Lyt8ZQ z^p?bxt)pDq;>Mj3sdceqbnKZfaTzNG2Jc-O>f375A=_0hVny8cD_8LJDXgO2k47Z;x4o_eAwb4aE&SpA@G^UPQ;gn?vJyfDvtfHn?cJx{)!i_1V)d`Gjl6Y)Rxx?=lGW1%-IeuD z80qF`ptX(4YU(FH4%ig@7_WojrEY8^|4Hgmmu;0Mdlq;}QxssH?>k2N@E5laa=o71 zek|GiI*(_|O>+6|dfA?IG&~kEV#%H@$<9;k$sB7VGidu8iGky!R2h2cHkr9o(6I6b z7(LN+F41+v1}39N5fx3729Rg!!;Ob&5TEhLwV#-3f{+W zP*7oHF1~aydH3uXQ73xN0X_|rxDJLK!ogcziNjZhPTf;?wGai#MH;$PZ?!u#VVv?d z7y9Z3Q6X-6W7H71>mry;^@n6VL9%NoG>{r4(Lmh&A$2rb-|ZW^xZfU80ma|1Q$(LQ zdYc;3WAO}J!<{3404fmv#Kn`j86k*5HkJ2Dc;b?w(>tuo=Tn+wYB6+s8z~rGAnL87 zl_cS2=-bNgpIT z`>mTdxe1d&_`CL`z>h9qQZqy6TfpC>ojFy=GMzD|BxxP)?n!ht4&EXuJe6#Fl^PL+ z?Feh=YU5BJG#`&QeQud1Hjm}=!Udvb;=-{MuAlb@E~vQ8C8KCNm%U_{P*nHSTX$Po z*>?8~cQsoluOvFVZQTHnrVeZGG1i1)z&8maiT~iu(-hMuo6i!JoU35ORWaPz#gpjR zg-YHPlf9PE6H0z#7PW&ncfu3oM=b!tqWLZ@uj^JA7mg_p5SE5B z!`u24)Z_EcV%T>~-kLIW z{5(CP*jfHgv^FMQW762&DS~uaTVCUw?HzK-n>Z>y&?nnSy0>=>-aTZu9|_dz*v*ur z@Uf*c1#UdKFnn2zSRDJd7<({4pBXnXJ!vv}G`yuHd8wN{Mv>uku80{Gf~YJWV9vaN zOmEdH(bPq*9}m8{4SGcQ%!*P3L zQ_oE?)}B_rn1!>^+wPFkq_|(^GzB2_;hV2p_Zo(eHnBcem$E3x9uH*YSRt7eh5st9 zi*a2LBZgzQ%sM7ld++TtEIQ0N=PyIVJh0vyVpJ0-jp0K*iPv`y9qUUR*b2dw^@?zI zJVvWc9O@nri`Hqo8{$v6V)ivJ91(b*xP=tT!ok$WX-r`=Gh6@zuU_aBGeZ+x1OuS# z7r`Jxm5~k&DRs(e8vHFc@G9yoI9ZMo?R$`g9jQfDBa!_wm@IH9x51>%Luwx{M|iLR zV)(+2;jR|2M22cagx(aIr#ZFl>`mXcgE>yQ%f;P@aI>vJ-7L)h-PQqVhe1ReBLyPX(JSQblN$`CRu~iY z=P0U4SxrP6Bd#X-giJj0eS~*r6JJ^x;ap*y!^e)$0=WU)k%7?Fe%&UXizhNd;$E37 z;IKsMY8e38;gsBw6H{~D^dh@Bafj{lp-Vh$6(@M^jB%^8#F6WXGc6-QWKei{CVMGf zed-K&E3q`${;Dpa#erZ#bqnO;2rFTyQhYAN$lyjE}u`s%lks= z8RwxA&Gn!h`)>l9vl}OyFqep{WH^;UfFc8F4V?FQhHh`)H9C7=gCco;y*0~ht&XO_ zJJ-N#N|}o-5M=md4B)n5)Mg7iTCh({dI%iC;QmIemg9_(win?ju)CCW^1yA<-Oj)X zF{e>ZjSk4VAj3=U>_OeWVKrSxMuwq;SGA{=zm`gdF3{Z+W3907ZsNptNlgmtnOas; z_lU5MJRsIkgl=}TDG#_BBDRD5Rn1$irgOYQ=-m}@OB=Q8I|dzupX7BVI(n@B7CT5_ zk7DS?)!{9>*eO#dO}Ij~@T4HgQyjc`i@+S$;Mj(Ab&;+m zoTNvqd$UoWDf6uOiHN`0ogs1QV*Pod;GA*d)PT?fpe{T5G&yK!d&((zGF>>6=-D>3 zw}t5By==yAogr_M1<8?{#M$Jr0Lvwy#7Wf zR1nUL&?&c0iJNA)Ny9cWxtvHl^ja#V+ylT40#Mk)7-7JJw{8vI=_E)}8&>~ab|iZ0 z6IZrE50VN=X$u91ZEVuew5H@+WbWb*^#a8u3JyPc0fe}4oO(hW9T*Lo?XZlS5?%dv zE8H_<-Mf?QJmtP-#(uIw9}jH^pVHn2v#*(XD~Z6BNac+NG?#Q!+m+#i=iG6g*p`sh z=~-cwn?_?!MM*U#(j6>oobX^NEF&_I-Me@kdtEpTNP|#~?GEvnMmu!;JR~%26GXKc zF{3K3mw9Vc;%t+>Ya}wj8#%3Mn?@ux+2glaftRP@jB0JQ-ecEJh&Zt>F@qGprbg`9 zxT|0%-S@rd9LOK#-M}$Kkt^pOX3aX%A+)`JtdsdMnCJ?!Nlx;c3FaH9T9W>6XCo@}HU z+kW1dKnL&cNDOpj21Rb)xlP8sDKgq}I?2^@M~3?9Q#xSHCb5aLqaxCA_E!10u2QN{ zoh!4a_hjmohO5qtrDgb5dghMXWE=-yC?T0$!$z|%+;k_##CcwoI?o7;Lsd!VF1*noe~h3?8ne=>apD3xp{|JbhvA;ppSFg%r9;q zLXb{A074@r8sK6LGuINkPFd~UQl_sAFs&M{qmJdnPDXm&unU;Q|fbY#F-OZ*PLxD7ECiE1c34QyUMqo-kD3YPB|49p^bKFZT4X&6k_2 zSywKQg43jTwRIrT+kru1TMY=vkO`vgvv!^(cR6wIu63Y~n$}a~WA*eWUq8<|L^yF6 zI;YZZ4W#&W5Ay`iaEJ=as9|qJvn;g9J=vfoy`6g9os7stXp6Hc6AeKRF ze4K`%Q0LY)_qz+8bAI4q?~x!ReR4I{uNQXWlqD{kq1E6c0=IhE9qb(#Zrn}r0})W< z6|mPs%SfTDSU^tzCxKE{pZMr1YXVpBI{11oMPh(<=T9X9=?;jQzyQb!=@w(F9M$R^ zx(7OO@dOhTqp{iBt&|}K8gT;gihYd?LMmbu=XkqICN!`)P7cVm!S)`0K#8x0)+13< zn|^I;HP*~RI6Rw080_H9UJ9kStp6|aX9 zb+TzJ)~MWb^FEx7#_Fb@zS1C3){Rq~I=a}LeC;48!L88<(Ps*;w81k6{b)|afXYj3 zvrU0aeK&Pk7f-Tmh@adzdFB=ki@4KH#i7pTHN5Y_|3%Q7Vq8eL`B1iqCpDNq4ciGw zdTT=mI+GncY#YnDo8c{u9Qq4|kg49A?Mel3pFB(f*5I#5iNfItrAdXBk(n8A8hJ6U zw4Ta_kHt{9OoYg`xfL+>W|dtO)qLy`dwWV2VS;h74Dq7Xe^*^B1Jxj$5xKK-t(BMW zcDwBmsS5E1mx$8kOI%Q>8qfXYL92f^*q8L};Jw4i&I9ab*;mWh?5A0$w-Qf*%5W~z zT;8qI@kYZ;oy3~m9>MVqeQX^?2H?l_Tjb9}N35e)_@_(xu>MeBN?0AA`en<3>I2L%)!Z#?q)KGwl>1K74n7gk_Yky z$Xsy<~Z_WXWg7du79YatRgZd)Ni2k-0}9aMJC zM`C6CfhpViWa#V_4h-7QaXgl)Wk>S#m=p*k#MUiMpI1w4LlQJNNdZf*OwOYG8 z&V|cgM`WtWT&njiPeq_DyOMn^)D?ipiyCfh$1ysvhUU((ODBZF5_LljTqRAq4%o8L zMm9{DtrG7w_8mwJbg9hmPUe8Ne(XT(8jMA z*ss!xv(rPb9!>1sCwS>HsVUBG@4Pbf>MfZs6aKT7XxWpz)`>vKNf)@op~Sws*5wOU z(+-Z$D3a*y;P;n=FQsL*hADvLba(6)IUce1iA7cx%iaP?QKUnsyU1)QQ#B%xG^pr& zhK&5u+-u?AYf>Aam|>?fGPvvmLjW%|IUrt}uiQ87PRf-#JGFMs+H)!5j8qO_VCUXk%3FO+foyxSPpnK@v zZhbn=8O)TR((O^bcoxato|I}*A{P^8?;{P`6L-jc5SK3VpphZiSkbt)Q&jweJ8j(2 zPs&DXV%Hf`b+nM}){z!>YD5{fo^#O1cxszBdAdy5w?u2Rq97l>Acu)NL3-!?(=x0D&HdEoTR*Ki|vjeE(11x>}h4~dKHQ9OH(ZSf3PrKpq?Qp5Hz%N+t8ery4ZOR(NCHY$>;5-~H})zh`~MJAf~In$REl3?Y67a1Y>{ z0bg#OpLUB7zX(_Z{AIu&0FD9v!cQ=K$iOcH76G4fs}LiA^9H^ca2oJ6w=&+J82BjQ z6kzU|{CxPCyuJ$fEWmdGE&zTQa0c*efaAnFCT|8j2?!R&c|bZs8Suve1Hik8e*=F7 za2w#q0G|!`r{?*KfZK@=K(HeI8}K&3XW$RE5+i^+0T*s#{_eYt=YI}=b_2c>a2Mbw zZeu!s2Y4sox6Qh3x3io_0U;W39B?1tMZi0VKfoN|I{+sDf9rOZ*XM8NbN;(|-U;MA zfX57U0QUmE?hZcBhX6}}pS^?S_vAZSZnJ=MB#%2;4(|gT0{n|R`Mh5-@CSGDxwhTK zaJPZ82HpcW3TPYn2Ecux6Sz-R}{<9$0=P7m*3{IBld`^fEN zKF0uWC;k8>;Ob81@6|h*kB{%<`}yKdKHp1uF z`{TQK{pWWvKVJu&B|5vAkE6SpPT9cM82G!pS-&3H&GfGAW;?l6GCUz!uIrNdeXrzw z9+7MhkDBN2NTzf19zOqsfzL6pZr}rZn4jO-!}y=s!}s?!z+32EhxqxnAwKWa5YxYB zi07+AtVfrJSl(|O;(Pw6S@*~g>-|@T*sgNJynfd(&o2z~_(cOR4Kv+W46|Lo#lQ!L zS&r`?=6yal%=|ny%y#(Hy}ZxpUY65y4g7fnAKGjD$X>R$9V5K%)Ck*meT4aW+X&y& zM@E>Bua59O-v_h+pN>rq0WR)iJy|#Kt^3&SKCqAd%RdAD7~nVe@x6S{z?()H|5>9f zhlx?%=O;(`{(pLu_uCld^Sm9R}WZ*v?VE%8O;PaLYEKl%x-!#E^4;%PzfO){}7C)b|*pJ5++t~-r^IutPfB$JQ zzX$T{htB~%o$NTzel9T2SMsc9Z!qwKfKR3S%(LD6jd}iNp7rwkdDgExCt0r!OtPLV zPxAfUJIVJMO|l)nXOj8;#3Zl3I>~zT)B?+Ue}UzEqQLuC3%u@u0`vc1f$2Y7V7~vp zz;b)E!20tH9Cn`kd6A!AUgZ7$(7;EFESFoRSf7qhv46IwSWdq_#d`ABfQ!V}G~=C^ zX1~5V&HKO3zz3(-W;CD!+^m-rmdI>d0rZW zKX{1c{h33&&vy;nyU6=rTx9vZa*_9c?;_jzrx#fdzp%)3{&kV>;f})$mkn$f_>RLI zcRziY>3;1n)4gSh?P+?6>8vcVU-6e%FCJLp{ocLA_VbY?zQ?~@;&WeJVmtn?CBBC{ zj<6jp9pUlwN7!xx1K)Op&++jitS4VM!gl^u1HXHO??W7Ae)b$?I%kgZxOi(h{sk~ z&V^&V?w(^z-#x~5{eHlwklh|*IeyZ>&mJ@J{}`Y5v14oxHy>wuJC3tF4<2Vbcn;u` zIE5B#29kc=YJQVXxFR?f{2IjzGfqA(6nv-2=Uo&>@vR8vMUmZS=86Ap<~N;{^!^f^ z!HiYOe+aghmyiyc@iXKH1nWbSVv89k|96~nOY)j>DF8DMY$nfDmeF}&&LGon`fR682DDf_PCVU`#A=Z{k@EQ zBfh^!HAn{MgkXPnO0a&=r%rk=*#Blf?-uO4PYS+M`cUj7eIOt8e9|w{dD0ib_VQu! z-S{4%T#4c|GK#NetZX3J z-jMly+Q3L~>?gfEYw9`r{HB2)%Fup+fv=|=lj;of{Lu^!*$>rJ&t&t}`cI$tP#htj zBDfZ$x{zu>@{MO~91;^bV5uE?frzO}o{uKFRGxloAr3BmN%LUi2(}J+xieC=oU&VW%d+AsTPdfx>N%kdT9F(0O4^|#RorR?VdPY>GL*4$ z4c=bs4i91)it#N}8s_9D0CIq6bW4`Qz(S3$sO*`ZAY zRySlhXf|y%-pkF|v&VjDCp|woy-@i7b5wVFer|Goe$JYk`9EYzO1n}Ci*r(cmX(T| zjx5ftx{;o66ll0toCI-tssnL)Y7in0l|`JJ>5CXeGWi^LRm-zCr0c6FjLXD6e#_+x z`z}be;Yap5t*F?M-IrOKNa@l;Ursx)9A#&BPvlO!o;be@sh8_+aEjlCPHB|35RB6Fqs?+oXkVc-^k?GAyhIt zI-qi18asa3kz)t0x2Ti+-osJp${#w zSdD$Y*)n8~bxUH=^*pDB1843%GuncHU1i1wUqyCS570FSExk)*0}o6p{9DS2#pDp7 zQ*#y8Xf~FObr#lv2Q@HkuLcma%ICy#6gkaSB%?q==oHCO4z%(dTolq+% zSnzBWWv^*ZPMk^))|Q#RYH1ax=1E$`se_wgO-~)1(|Gh_Q_R`o6yePli<@B`B%Jxp zF!XMl?NlIyx!Kw2S#fHx#T?pN;*vL5Y_3nwa5%!Wbmd3G8J+dOCc8E3@H#Cb}< z$k)ape2|m5%#>`07r)myQ20OuB(Fj`lS@b0{gUUqHya)MBzMWW3|5C8Av#7~I9KR? zXisvqm+LO#`D*NX6`fQ1%Fl0(Tfxj$acfQ#F=~`Zaf>U~n)Vh~z=BDEuZI$!Hgkgit}U6sX@g3|_HjKdLOfKn+UYZrE*k7 z0lWv764`v;3n<5DY$M{4qmB7>;r@}zXzyg2g=in!s@SB5DVl19wImm5`@;!D_6U|Q^Hq3h z$L}|#^^ug5C+igT+J5g6Dm`gO2wUXIfb2U0kuPC}(|D8k%KOJh+rMAb{@wJQX5hPJ zx)Xj20TGer3mxM#K}6zp5aPND2h zJe)zpH8h1OUQvzKb?PR|D8G~(3tEa|xBfSt6G5Nk6cs3r$qLIkBRvxq;P?$Mi3cx< zyOzY)TY?JHTklxJ39lX>v?z;S)aX;Qv*Uu2C+8*n2CtO*p`fL0DK9{(4E?nJ-%gZqw$%%V_ZZ*0OR*J;8~#7iC<9daaD&ksl@jP*b(_B z{lX(^pN$XEb}Y02IGL?P`esU)S1k$LhHEZNdFvg|Gwo+48ro#WbR5z3zKK|@Qb~Zi zHuDyzr1OoqBgcgabxEKTAv5JW<(i}niFTk;1c9*ovK(DolxllhOJb| zsr*zSzfj1XbLd62bw<_PinS8glyxCMwI0{3Ro9Or*HcGpew+`&TJG%gE?CEqn-X#B zI08jUP8Es;t5~!Ov$9w$O-~)ba{-9fIcH731Z(2~X~vo=%ECfvdY17{+bHHQKu*dd zeJ{y-D9=Cd!hI=N&SC?PN9m8do-YT@B`ol3v0Zbl3y$3^$>TO^u)18VfI{P_{%h63 zxYcs}e5KJwFUg9XJ9FyHiMAMu`9khk;74R{7xXK^$XSmjk*B%-A+4Tpb%$LQSo8C< z3s$j>Ozc9jtP?(0W+gd~ydfuYCm;7}P-BPsKbC0`G#XAv9cg>|-3AhwwPuW1Qg=Z626m8RRV>%$jy&q|5D`i> zC<{^=uR;BX@eVf5o;~)z&PB%ty8Ux~G5&Clc^qX*!bqm^^Fv~%WBDd*bv1wBSZmy! zuxy>|I@mQto~(NNKN?rJJO<*XEg+4nI}`nJGhLvI-%`deHMsks8$gzJ`VH070m^Vp z;~iu>nm`$Ldl38gfxdwhl=?uH9X3#PH=;O{QG#ZP$p#DfTl<0?LkAQ9vvMa zY0x-GhEU$PvgTIkMnI{7tV4CRgXHFf_b#?+wVOd2nR`JeHS7B4a%GL2v6u9MY~7^6 zdS6?Y-VX-tq3YKiq0Q!b3u+57V@X1kZ3-DKxF@8D+%+WRVJ}798`3we8fk9`2n~9l zkkJE-#s1HG@v{vgK2BGENZYQ@4I;SXTJ{i7 z8qX#PG{dVEC!Z51gHSyV4zE)EK@B5^%3+IsG!zXN1YL?wTVK@G zU)uV@OuK1Ii*)PB_2m3k(dRY#4Y1VHm+G(W*~tyFAttm*Tdd=KEu>{>K)d7sy@RV*!RS~Za|R(;$BtaNa*gN1HO|qp}JA0 z2csG{OmABHs8L>?PtCbW)S8Kr1hwwY6*aCLt&eQd?S_-;rV$oseYS5k2qn|ELc!hC z{Zw`(#&3wzl&z&TAL12HJDr{|Ld-CoE2{Rcda8ZFDc!z->t6Qn)V^}Oq{GBx+M;yt zil6)Er5#JMT18vps*!qjllADOxLnf-XeOz#t66uL@4LXR!Xl_Z-4b>k-aSFCW8C&s zrVq3^{#w(vHbssCui=}9Rqt$!L_0)*z9l|gN)&L>H^6Gwl1^^5@5E)B(5y8EaaN~u z;Wa#ABGLg&ng}N@YIh4t%U1e=AywLfF}0$&&+;FK^-?#>*Z~rfOg9TvZbjtCslGp+dVKy$vFVl3e--?3oM`BL|EmED0-E(*;;0HgK{`a*;V7y_y!)G`Y#9@I$)y zHMHq$KA#^FCXjGE1e^7s)pDrPYj?r==8&7tW_x9AAE|3fhu%lSzhIw4fv~G;Tw6<( zr2~f|cg(s(32mx;J;V~(xPHHg4tGeD$gypaSYLlemz(Uuw@Dt1F1fLx9fulV939rs z55I%`KHNV6dVNn|8g^Ssg_7po4It0l0P_46aq)mkjq;UD2QE2$XMgYdsNLJ$=u*k|4i8K9Bo* zj^Z9!X{)!owXB)iep|z&7T{Jfx0V>rvMCz3hr0WQ4eA*>x;J)j zH;&G^dscFuHcCCiWanfmP5&I~=~Qe(I3+<%LyHqVk%or}Nv{RzJU+J#qyBTcG))|p z#-O@A8sz&GxL2AJ<;9#WX>aFWLb;_=Mw;^~Ng5%zT%oFel-i2zrx%T;wLrVED9tM^ zx=kEW=OCO#>b4?BUsoHqAA6JnS-QE13L;62Q^9hF(Si{Q9Zht9F>%p2xsh^Di!n5k zX;7EZ8PsMR?83Q$m~3P+ei}lQ$aWo{D1~^76yjbAaUTl(mveVAyIPklUCqhpkDA8*^*c%!t56L9{R2(%St2U+XG(LVqE6BRYvNBnrj%>R8$2s-i z#5GZtnNB6W%ZwWo$a{U0dRMQe%eZNfiop0>`rmCG?*&Esm8#(Pfd;gDnC-`z^bzi~ z7GCo;1NxYv>)mJr^$|B4brUl!Ax#g{6g||v>@1>^sqB!QzRS%-Y(~?K%WUf?C;kTw Ca};L) literal 0 Hc-jL100001 diff --git a/opcodes/po/de.gmo b/opcodes/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..aeb0fd8eb93998a5b9d19c2869f026052062417b GIT binary patch literal 31404 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 B0CfNW literal 0 Hc-jL100001 diff --git a/opcodes/po/es.gmo b/opcodes/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4aba3dee46146a89170333c149b9f13342033f91 GIT binary patch literal 27203 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 literal 0 Hc-jL100001 diff --git a/opcodes/po/fr.gmo b/opcodes/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8d6122358a40099abff80aedc7abe45e9a46a834 GIT binary patch literal 25313 zc-qZd3!Ge6SwCofba*4LLQ8Hp+00I|GntvqZZ^{-?Pjw{HqB$ZyGhzSn%tSWJ9Cqn zd#CrY*)5_)0eLC%s1Fnb@c{yA0a079s9+I`2%>-#ETGT#c(M@hCUBUbPcZcqAzn`KE`qNk_@t)_agp%}K8N6jrwMVI;A;r}EW!U&&p-2Y zA%2eF=Lo)vpmU87BLsis8Gv~OZzEVB_)`S;5_|{2VS?XK@VaLTF-CCunZUoK;Oht$ z3H~L)8G_#?cq75R*P{QYuEo4>zE*BYe2U;sg8zCg<{Q0Ei0uT=6U-32o8V&z-cRuH z1Ro?gMDU^OK*x6pZX-DSEFp3Pj}zQP@OcEOOT3BTqX|Ah@UaB{mLP3ed`7`<5xkn< zQ#J_kOy=7LJl{Z&wkl=_K8fieNURnvK{^ugq79h;H5;(6`&9ow5u|_OoAe(|EuNua zo}C1VRS4a)dO&>kuT-6Th|ze0}F8oYUWI0{_0I;13Uju4@$Brr?Z%r-!lr z9R$+^U#Z}I!`T1l2=3r>8^*rIHe;Qm1UK@y&EV_Zo3X#QZH9b2v>AMVOd4{sC5`oN zON0M*8hm(e8uR>i8vOh#1;3HTzBi5l9v=bz&y1k|t*ZSK3O+gmzU|InKeuIo|LhFt zeSHS!`rZua`l@Pw>=y7bPmn}F9M}T->svtAFKq!I-n9k$|L7Lz(O0)XzOLGeao26d zdV98_y}A{6&)EukU$GVE^e0;}&&L)1*S6x^uNg)A9)fwMU%?lTf{yz}aSs1Div2w; z3%HZuIG%Aijx*k^WQ8~b&9Q0*62fRuS_Tyy={#g#^_-{F^yI~vXn%)L` zaJzc8wqc$ZZBu%$-~$T&vw}aE2VK|afxj;gd8rb70-wKnenlR9`@KBof4}PgTps-Y zdLHupm;&hBPyqkt3y`ao0_OR-0`&3C1=x*`6focCRsW-kXn&T1#Uj?(UxeK{sbHlD z{@Mg@V7?ZypAQzX?w5+--xJ3mFT2M;e{&3WBz+w$3gegC&0f&1sfBf z_jwbrC-0bm{rw6-a*g6YCUDLyYz&{U1LL$E;N#>DthcZO@>Jb{b)UZj`+Y6Jmykn! z-wycITWFEvj8E_c%L&2v^894no=xC=CHU1TBK8gJF9=>>|F(;K7s1aGJjHw>BmH{b z=Wh7b@*W|6o%M;}8wu(+f{&@20Cy-@B{<3FNAMuQ58MPh@MBXrzdcj%gBR5EYZd&! z6!`P+Q-}xhdjWrZFZ$oV7k20Cd%=gz

    gV`!S7kdEqqd^q)+_{{7oD{Nbj3;A?Ro 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 literal 0 Hc-jL100001 diff --git a/opcodes/po/ga.gmo b/opcodes/po/ga.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fef67102cebd653e592a6b9ff27fe337e27b41bb GIT binary patch literal 24028 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

    d-XeOwZQdTE#H$?OZ_ict@g=k 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 literal 0 Hc-jL100001 diff --git a/gas/po/tr.gmo b/gas/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..bf7736d81b1b4009a5812067db50b8e0991eac90 GIT binary patch literal 220920 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 literal 0 Hc-jL100001 diff --git a/gas/po/uk.gmo b/gas/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a7dfd92c0fe7f318b2754bf0bfd4af6ec4a492a2 GIT binary patch literal 574250 zc-kzTcRUsK9Ch&sfp_o@&2Qs2QZEsUe`cz^P(<8-W$I z8co1pJxyLw1b&XNRBWSWn=DiNtfcKxfI{MEumBq^D^tu;wKE?J)^E zZ3LE<{RNg4xK?0wftx3(I0z_U}(O$7&dn=0M|3vB z5qn|;_LaJGq<_chtTSI=Gl8cC4is20o%!21>1p~4oZ|%V2b~!I-3flW%)p;<0&fUB zEYMw`_e|C`oCWq5*h--1Ec{MV*ZSG(zH+6cVt zM&1_+94+g|3dV)3psqb#fgKgx(b*t(cv$Zazv&7~u4H|SmDGm~s(oT5{uiypu70cF z{lF^p{6*jjSszvt_tUGK z1g$-p-^COAP7Bn^{1Vt&)&o!Kgz;MHww1s}GT+uxkGH7nN7oXk?6vf-wvOv&3MVV{ zQW(FEdUZ?T4}leB{q|yB6M-hOt_X~i@$;hoHTQ=9f!^5bDzL58kvIN4^hPIty{QLn z*XwEO%R0E8{mx}Qy4tj!I+(Z~y4zN`)b+o9#G%P1Jxv3t+fCR#brX5BMYYdtBA-8OBHl*+%xCEjpY#3E;~IbV?Gpma z%l*}#{tr~YfBwuC+*)L|R<2W=xy?Y2=*!nP5wN86aca2xaX*p7cz3TJLt>ux75+qc7is=%tUPH%^Y zLUq4p5d3xyg3k%6y+Gi9a(obajtRn^MAh$05cyJK2X(8Sz&euW9q3}!4t4(7fvz9z zK(|FZ*jJ2#$-_;-@OmH^J?8~e&uWL@k3|Ui;uM0O{6nbcrv%OwSR6vW&ke=youSm> z^P%XVIF#{C!}K(c0*8euKEkjkHw;~s+{wAC_D<@2@=o-i3CEAl;rKrzoP3K5r@m*0 zvrp99#W=@ZoD)-avHzBhz^_pe#Lqi|@lg@P{l37{`WlTvB=I=E2h34eyodTzFN%H9 zHj3*33X`I!mzh!Y`=a`_-m9l^lDr9QF6PhLi(Nls;AKQC`L#G4h6?*7FyHh9&b^xxh-=;L8QtAW#;#H+@YOAa_QDkW*_}c@UrJ$}f)wnklZySr zQn~J#NtO1@S+1pi$RG4G5+tnYh>`A#YPd`Rv8huJr*4x=ZB!{}v$ z!h?rd=iy=Mu;(h5j>pwV7K7Ua6Yo7oIoPhrYC(vos3F>_23GB>2!T916_+KrJyzY?3d?V7( z(TX&9*^!2wC)42Xjp|?FB>HG|5__keL?_!%;z#;P`1*GeziXbNU#nBtH%Vc@Dfqc` zin!#RV&Bl5X8vlY;bEx4HK(!X$Z2%+@-%jqKZAW8&JdTeXYhaR8T?K-!@iMz2K|&j zOMFbvGVkEC)Qi<;vH$p4?E9>+$vOPCJBOXF=ioKq9C6uyj(O4)em=*zrsvVmxbyJ6 zM&YjW?u6YxxD@b)}MR~3(G{sS+w?$pcV zy}P=;^D_J7@ypEj{4(R4U*TLa=nD13{|Y=MU16OESD5GT73QgX6+gONRrU8O^K8D# zxa6zY`AD^^WUy}c4D6hefxg#g5XaOE=Dn4{Iv+ELW5sJ+Z*&bldR?Qw+FV1IvlOnn zhTVbJ(8D1$?#4CNd#~{Z!0kT>nhwbIN4g zrcB1|%Y>)fneb4k`qj$9|2|pFHzSMpQQNc7PgoXuxskD`>cmhw0o^pNvQ^sXH zrH;ONN^Y; zZ(iX4j~C=YgO`l6dWpUEFUez%m#n|_CHWislDM3BiJy;D{~s^OtD1RS@2GHi9(K>p zqfT$kW1UNR@bM%M`?dM#wN5_yW|7bMCHdI5C7(KSA|Jc%FwgV? zcnv6Ee@Q98&Wr-}{9S-uMz2`U{1xjgctyXESMZ$n3cDY@!tZLY$urZ}T%Ylp=e#|y zRo!_F&lTUG|Bi34cibCzob!fxJkU_kmDIeKS{Xg>jaqlDf zX#5E~tv}Jv^%HjP{RHp#Ke2wb&-Aza46m-A(O39q-m6{utllSn!7mGeHlpq<{eoRL zzB2!pukh9I8~hLaM%(!t@d^IM^H=;g{LuTZ-is)-{LXv3dEcoIao@53<9E(QRepd& zf6&kS2kT$>fgbaJpt}-<_+eZ~yayK&2d6^(+F6K>FBYPg-|BjmpYYxNC;RB+pQ;Y1 zc7$r5{7L>l|H*o#e-YPa3VZ*8Uz=a}vF#UeefW!YUjIU0m3}jCli%pr{5QNz5LiO4 z`UfSoIZv=aY5z%qa-A0f<@>q{dR(t7Q0mcKwWkS` z`Qsx{`gv84dA;peha%)7S~CCze z{XGRroyC?Rt~bii?~iJml*RusW#M~qS=LPzD0P%wmUvVur?1 zqXK3Ayj0iq%d?J|Kv{=omS^0W^5`#8VRCtNb6%j-Z-GFm@8a_CRk?z`?(-7s3i!3B z0`a-6+9fOM>++;aMdCiMBKnFDDC^YSij1%FpT6!r%~XN%Jzv6q`2YSt?5|mgdHPpU z`lU1i4ERAybz%J_SzGP-(M8T~b?qOZ$u^D6M;T!neIR6(~F zs^G`_D$G-_D*cBmTwRs;9aQays$HfU>vgEc^(ochF`ycD9Tq6-XKpp(QL{R_98n#; z&8<#d*j$};qXo)y^MmTxU9|>r>r{jJht+`hRW;x@r3QYy5-2~1tWy)-mI;*gJ-R0O zd7viqKdwpt^0n}{Pc7_UPz!r^Da@$FxWZca)1)@>vl1vjZw#(YT*}tLj!t#pbygkt zTrW_**F9K=`M(L2=ikP4;lr^mc81pF{$+vk{dHko_?cP{zgO3z9jw}i>!F*hdhl1F zKK8b+PhFf?A6=|c*Q4v>@2&dO9m59r-BO@@-#Wel`rq4tcph$m-`Nd_SGk7R*}ozD zFKkFY?`}xmr#FO$3XK@wwGsYLZp8Hss-4mZd!GoD`&Mxy^02lM`PR*d>m!ZO!yF^( z=o%w*5N1RiPOAPns{P9dd+If2e)Goo@7NfBeH+7Ha%1MnYRtNy8dE1L8q>d}!coT5 z)n%$3Y)rp1#;p6q7@ofwQ#Y$O!N1l`uxG5ob)~-&~-mDq%v};DZHz+*RjJW40tlFG-S}0uAoN-5*Q=bZ& zvtE-H>_7clP;bVxP&#Y@FTpKX|5yvwe`mzBZo+zD3a^e3QkXSAgLu4>7A0WFEciI(W&eoO3p-;#Z)xFzwa(26{7+KPE?TcN9E zt?(nT6?`0M1rN_#q5qn#@uNj+=IPlQ`^U7#erMGVXpR3#t%>Jth2Is{Xaja@LmbAp z!G3Rn^8H0p8^*s@{mQk4*EVhOXINX-pWGHbENu%9JKHi}Qd{PE(iVTJwL>p$+A+`I zcEoLVJMwsYJM!{EJL=}UcG%OfJ^QFtd*+$c9v)oV6UX)K*@qI_Gf#edc(2-lbxb;7 z=b#R(=gP&r}-F9H^VNMlGyJMzhAz6A;m2Sz@?f4B@pLz%|8_I%j5R|)m(9q(Z)%)z zcj9N!oqmhD6UTt==;~^B)+y)?FTVxK=d3zC&`Zl6jO)>Z_)Ji3f7MRx!8s(i2YPGJ zQ#}XtWWGT?S#Nev^tPub@qW~keX>+9uJ`JN-%EOthatT%ApPluUTk_ZZe?%m zOYM#Q7klIPgWl+%R3G?h(}z0Lrw@7_*9ZO<^_)RdBO(3)A<4L{8qIq4W!*|Ao{l-2*1Gt$){5T*@vDEZ@d+}xLJ|EzE=2k z$cp@UXhl5!TH$}~LGV3f5c5wTME-0ZgzioZ!miJQ(0%p6)EDc)^j|xebrJ?M?*3rx z*B=75A3}U44}ljyffMuv|3jFs^l+Y!1`3qlBk>we|GUG9gZ>D$pNt@m!$!dCe1W>} zeT~4MFC)mC|3<=x^GLP7kHpVoBjNL{!dj!qAB#~u=edqTk5@-A?%gQjTFx51474Uc zmRVER6RgpDnl*WL%Nl;)Si@KO(dfOyX#5*I8XasLjbGPC!{e{f_-ir-v>5}BYsauJ zB#vRej4|;1N!_nCmbmpFtMftpz>Q1R~tkYy1dbS+L_&MX?chflb+01dot>k#-?K>Ww*pG+b zsPXWAb3FRipMb8qP9V;96R5Ags=aFh>)x7xecvabo7NN2|HO&(^PY%b$0wqn%!%;$ zVIt%HO~jtglkjKsB*rgP?a)co+oO~4`}!p6QfYhm>~9a>i|mPSkU;r9H`897hbQBo z#bk84SYSWh_l;@4S8byy=y3WJ`o~T|k9Vi={zK1!{F&;2ZZ`Rym&v{ePY4vH;rFPR8-*+10=TAc)e$&ul^fdN|y9z%|W1g~(#Jh(h z_D*tyUmt}bj_|nOk@?ddneV$J^}={M;~l0eJEs%Jgz4mQ_H@R7n@)aIaw5-KJF&0Y zI?;cY6aI!c!B3_W<9;}ipH*hSUk`;2Gw8Q|260WAL0-O_flgY?BtBL%>A!L&I*wA; zpUy--m1kkkpjp_zMBy%lS7!0P;Oi{>A2}QUSIs8Q2?C?#`-0i5vu2Kp{~YS$-8rmN zaxUY0&*iy%?p*kepG&_7bMdpxJo2aGJnWn~k9-fGN4!qXBYq#|5&zQj$^XXli9`4K z@H%lm{LG(Ezo7ZV* zo;YJimBlJQ7c>9j#qbfb7`-JghL_C6)PYaxzTpz;Q@thRNv|c;N1G+on|VvsnjQ(?$ao=wlaX72+)iUy_;&S3?xt#HHmt%+ba^e@Y96Qq0{m;u8U)BvjI=FFt zm>d0OxT*JoZs_x{o2pxG=wYq}QQ3|NbOvlRxcrT;P2zOUN<))MEs>xf6+b;NCgLKlUb z)&2eJ(Ahp1TetV2(q6*lpLUpp`C-Qq(P(?2IA0V1MAvtV4bBK;2~07 zKfM8-vo{dO3O@K_rf{AQ^X&E^4=(t?Pl0OdZDc;ocvio)F0l?`{ValfA}lEnLO^MaN=gg z!)ELW-;8}%HdCKJZl-=3Y@sgHRM=(<_xo?*zU>y)o4W;F?%aZ2j&6a++%52^AHef= z!vOec6`MmX!eE8Rwo+doZY9pYw^C2) z26B#^7|8s)0^$2qpsHhmj5pdwe{+HIdj_7WeRCV*DsLwr+Hc2y`|X_9{kOxah~usxc)O;q{|Lg4nmg3{e1($*%6|v3eh1@T?;w8FgV9Cb zVDfxcFm?tjJQ@ri_k*dMKZ6<9A_V(Jhp^uK5U%@&aPB@Hf?ocGphu%n;@(Z+Fojb? z@q1|~^ZABScVj}S3&%sT_gW}*<5wtkwp|$QnPJr1h%oBJ?J&**rFODzt)2MMZYR&N z!*{CZn4Q??y%XNzcB1R+JJHRXo%mfU9R0Qk$Ijm2*k>KC-XDb1Z*w?291Q0@&`mY& zc{us}BOHD!?!w+)yYP46F7V)+k>fo|H^xw7zdt>*&*YQ2raYMBW)I3Fdh-~tLj#S%aD@&!3{Hmo1}d4~RxrQ=;j=E?Rxw7L7jAqp`mr8b2$?@P4dC4E1GB40=q6 zVZIwN==og?>lDQh&l<7ltZOXmSSXwpOT0W{sT;Ae>RcWRFIDzoU*~qf-k*ReS4zODNIR{f3QnWwKphj`-U8L!^U#;f*P{c(wBr|JCgC|Tr&H?r)1V|l)`z< zRNPqYtv!!;p}1j`+1o4Y9CSGPdGw+RvjS@;YU;+9-;rc zBiL2pDCaZFqwM3JN3kzOwePET$z#mZ@)-6_JO&@`$KWCM82iH0W7Owz#~E*a9D5cW zr~jVg=q>X&b^q&e{4+SgIt@<{$NneaXZ8vF@I67E#i{ET6y}}4o)T%quW1_nx~1Xg zs5ItVoQB>)(}>rxH0=DG#=6Z;GJfz$=ACqsxUV|N{4po7Km8>BemRMbnw%m)6Q{T$~lKVo17=Uw&&65jPv-t>pXSm`g!<#bzXh%?E?E+w+rZOzyhUUt@fXqi!;8FU{(cdEJ6$4vqc5TR4VO4ST)3n@ z|44_Y_UXjOE?qr;ren|Mboe-x4o|u1#KZ71y6SbAd0iA9yo??1F2hf$E9&#AEAY4A z3iW%{73SM~1^uL4f$ux&deIelXn2)o)!z)_mYc!&FB$k<@f!VlUPC8iRond<_HDmLT#sFY|2x;wF!5hF&LLF4wVV`*rL%a$S9o<2rHvqx!YU#NJ_<__a6_zPvJ7KPVG^lQOaYS|;&( zmPtHIW})NGS*$ZTi*?s!5r^n3;&3&Kym**JKK{v4=k6Qu+D_rX8>}iJz^_6>L`QsZmhL~m_wV&|Nj@Ev$leJ|i9`F!;zem%I!xNkS{x6Cc1KP`2ZdJJYZi-c>sSeAFzJ)hwx+ekbIr^koa$SNZv#}^G;Lz}vki`1M}le^0Tu<5S{o|CISwKgFJ~r|R>x zr^NNcQ|!{u1}kK9y>>R^+GHy~vWfSKZ1Q2Fx_?mhzn)E8agwJd!{~5e}=xs zD_s3d?Z>Kp=^6TX`%Hbl^&EfNJy+ioevV(B&&j())xP+g_aC31^Z9Cr9OmnqLmVdN zp#KFq%p0KY$LG-hW)6D3pM$;Sa?ww#T&_>dRpWBixLo|csoL*z@vrg=?Ctu3^~S$I z5AH9pGxUWzr>K5kUXXXyUhiV)g>b^){iD*cK>7D}Du1F5)%e8y=AW3y@)PlL_=LTIpYZRb>i7N=>z4nFUrj%&?*)HG ze+xh3$L7z(C+;)$W`2gBpP#X_;urNjmoL~k`3rt}d|{m}Ux@3$FYr+Ch4r*w$yXzV zHeb<|?^pc3{uLeOeTCV3!Gao<_b=R5fj`b52g1X_~Z2hdt!bt?(`3M{i6CC7oxLah0M3S5Pu>I(ZfB3e+%K! z=%@NT=O^~e{z?7v|H=9H%um+&^%GuO{bIfGzqszF+GiAg`GtOsf1|7Mzu{%uZ|phr zoAsXjhDZHBtY`9v`{Na^`NR2i-yi(B|A#y>_zSjCX!n=6ulm#i&*b-5xS`P4<3g7Q@U5}z<<>3qyJdv&OhSv?;qo871M8cG2eT4E{6A$ z#l-E4!YUdAo$gEp%DfmUP@el|3zWPh2$XucBT({NNzXvXV}F5?ua$cAj}|E3E4&sc zb=5}SfWNmSQ0C)ifzr-H0wqt+1j=(z83O~|xoCg^<2((xpJG7&Y=OGx87=k<5h(du zq@{nT!VG~@AAhviWol@ktA7&&>Yk?znfH`H$#)XSAp*#Es0eAg*WyK8CIpH!N4 z0!nlLqCgq%T!B)r+A^TAKpD6GWf<>RhJG6b%DQx*4CAk<_Ukh6U#hHuuAa44IIt}9 z*b9_-w_2dATYJhf{l7j`$jsho9C0<>%RU<(WUKJok^4$F3IwrM`cw>(we4=<=j@1^k#^0YAJe zVE2B3y1y%;+7A?dt3aIot7yQ#%d5z^@fC^ZN`;37%KGx5BJr*FA9*lAp!|0r!T(|J zbAhrhx2#0`<_Oe%&Qyu`U#rA=Zz{2labCg?^m6; zpH_IMI_tcy&ODkL2D)=)?Hc&qtOnNysJ6XoyVrpKAc69He?g%9yJNQnj+6UEP5OD) zWZlS`)Qj6S>HnuDdMr~5-FL2qzK7Hz4ijpjk2STh@3_L7wWtrTRNJIB*jJ%#ZFrim z+M8;lr@gh&MQ&~MW>^O_RX9~)fWotNs8gTn5T{0UsW&6*(q2^;eI(YUPCitqUynGn ztVerPJ@oHZk9mFTq2m+vu;*_*;?tl$_I9sN+(y-BoJ)Op_O4I;O07@-SM|}iwgKZB zH9*&08!&!k19Y>b0eo(2z8`}Dcsf&zv3E_f43Sc z9viW)X(Q|!s&J;lbqXUJVeiRC*!xJ0``id!l`*2-+=x8tYsB@@M(Add5#vLQu=|J+ z{6A8tZ49<)jGwlRv3q7?cv#gKz3)<(Dp0Vj7)0pcEjj?CF zF?kwoj6J6W%IDa}#?1TC82xFR&~Ds>@m-tHZ+H{tpQ`S!XafIR6ec&J&fIQ79KSbV zomx%tqjOXGjctm5u1(?BuPOcZHD%sQO^N$sg?i1n->ez-^>2m_rZ!{VP3nF^GyKa? z?HA3kSJRw)uGO4&$L7RgNOS7Ve0ANYIrHslPCY)~oO4H!8sEJIIHm>u&2ND{TU+2y zvck(P&{uW~;#uB=>-A08XH88QZ)ZXr-A$+;8%?ky)CB)hP0+tPCgT2W6fwW6OvYwAIV*5rpnYxb25t*IYpT4V3$*662t z8~iYBgB^ne%I^;^X~Q|~L>uDwqYZVUY+L3Z(iUD(}De)L$O8uE+3U9uq>=y@3 z@#l;w`SjKl9`rlGXSGi3TP+33_fcIt!DD~bwi777Pv)rl&F`f6?8G`@o$&K)Cv=k6 z30+m{3^wS@_|~1VvrA{zwNlsZ70&F;dd{7xldC#of3muMwln-)SMB`H)P*l9?+GJ~dC(ZrInZ8~mGh!;UfCs52hj$cvb6%yUomd)Ey;6nDdp zx@N3rVn)5`XGUDcn~|?G%-}7+41GkJvHn3bbaUMdJ-#&~Kgx9{e|mJsKiBT;n<3p< zC%rp%Jnyc~*{WaZ9{AI$2Y&YIfgRR8)H%Bcye{p5JwZK)SG4MPT#ZXt?I%6(?{yE> zFYJNc#y#PuPfzOQ^q%P4qbKz~u_yN2>`5Me>&dz%z2MDC;q+ec?b!?e6MNzRjb6;B z>5ZP-^u{mi-qaDt-qhXb-tcgyH@x2NjXf`VWB0$_@Kdf2`Y`Ily50Iv561RkUT<|j zShbS`%J*gG`k>n~eX-A^FMJJFXy2D}k#k>_cYV?GS%LDo`E_6TsBaGceaz`^YtDQg zs=ZsaGt3$PPT&}+&we}~&*}#siT&X9X+QkX^haOy`jhV#{qcWxfB5n0&%6=+S?6qj z?0C~3p7jTCzrz6Lu^vD__W|fWdH{9m?f`VE8OZwe2f|<9fm~lSkp7zoqL0%9@%!;W z>?s<^yfrQ8-`9eE_7;qDvq0DTEr`Q;3&uaPKsSFau%nJ8_71e9?PQ650xXHsDNA_B zwq#v>E8)Ys5>LA;K#vAJrAk-Ay&lkxE1R>Q>Yol`Ki$$<{vYNd{{P!xI_;^ zXLknS*PB7q%Myd}yW3#+b{NdKfWg>(dNAYP4u;QKL-2dh5OgqS2>BQ|g!t@JczX!E z6%AqDRzuZu#!&XFHA6Y4qz&cy;`dOVM|%uo-**!z|4z-3VfcM|n0mi54ExIrho7dy zS+CD<)|)jP{R9suUI&LW{_1f2d@~$AtBk;p_9M`X^$6;+%LtyI4vgTO@=W!sIg);6 zBWX_@$vUe>!gtU}>^dl@9L;<+ z#-MZaF|_T*z|Yz-)SnY$u>1NL>gT^P zZ?k3nNLzHAU<;r3Y+0w+7Q2n@h}&R0_*rO2K5Vf=Z>R0B@kIg-czj;tH)h~1YQvFnv1{FInZd>Ty0t}fHLKXSTy-c;zL z?(dy$pngAv{i0wxJXUq0ZuWE{?k-N~JjMxKJaWRGA5P3ueg^9{n?YQA&)~ZC4B|6) z2J>xE{jScyj$DOB>UzzYV7r;b$8sk6TRD@sZJmjoXJ@jneVBM0xk)hhv=3tNc9O7alP<~zgIq+*Z7k^sMCI6?+C4ND3nfKUSc+a29xwGOtbUb1ndFwxqd6E@Anujj+ z=kva|)qKV|&&Q6``S6gh+SM0;mJ3*a`2y@oSirh37cfuxg~V(0LUg=zA-WD<$aBrb zh1hdrp{fV!zVRZi4_<^$<}D&Vk&Bq;`Xc82x`=gaIOG3NXZp=|rk;m7!+(r3aXIS@ zpU<4}`-e07sK1!Fc3upBR*U%@#$_?<9bb%2pDX;kn0VA&!h4AJOIT;#68KoZ1pm{P zkcS2?%x~;Mo_2A;-_b6rZn&_{2^Z|laiLxmyWpppE4rBEicTC|8Nc5Zz8|~NU%M1t z_g>0;bC<%$)}`dd>7^>(3iX#U-eeiPTQ6hY<;&Q|;+BzrkCyRV@nIR`IxoksNz19P ztCllv%W~E`x19AqEQjB!Zt&L1jl8mSW8a_ahX1Z^tarc-JD<2QzEEASw}Si{vV!=` zUcov$R>02%g|AlNe>r#ho4I4JojdD$xHE32x_`x;`Ch4ZwUwM}OjokL{Yv~=w-SF3 zujG7servy{JQpUg+eL7w5UA-mE*(oAm;`;q9t7{(TcDzaM0@p13w& zkG&S_na68A>!z)zu6bjwydQSF3|JHukGvALov(68D_V_U_Q{i(z^7e}#Ixn+HozFI*lL?#1 zQy10VvI)J#ZDQUFo7mTKH>o^USkIsJ`uTHzo+}m$@0S#M z2EuQIY9Ckq?*|g^UxDg9$~NqI7j&-yr%;4Z=S6Am$BG*AE7vn~WgleH(Z{h^`w zYagnf>qCkE(NI1&c&OTS!{DiB7(7o2W1M#wekO)7e^walKM&)a@k_P)?8Fbdo#f%X zoy5a;Cvo1h6a6LcRNog+?FS0q?Sx-VICY}2!fxU4Jv^NG9aP&@-S-KHhlp_OI1!F6 z?}WqKKZT8V!HeZC{F=2(eGg<8c3xEXpX`Fqf4i`&dIWr!M8N-u2=32O?X?l;CL)6P zpNzoHClTs%p9uJ^9?AVKk;HdwB)VP@$$Tp#sSn#D@#kzL^FLA7e@2o&jdwGj^=|TP z@osq7zni*sW;gu*QT=M|ffutq_+!0?^_|pp57iFY1OKUei1+# z6AxR}UKvfD3yfym`DoV5kH$W24E^iJ5a<3e*gHOkxGj%iogj5TE(ZV3#lZW^80@PU z%ls{4iR-Xfcyf+Kk6UB0Cps4Y(_+>4dQ|&sEV`?(kNG?AW4!G?)?d00JAL<|pX7bm zldk$@@1sus+eaR@+)p0$*iUT|+) z`VUb!QT3ar?yru=zs>Qg?x=prs(oIyZz+7C`hQdHk_T9?<^lL`bwGVSrEvTK`Z*t9 zy|oGh55Q;C0nT&D2dG2O4;ZN510#NQ6VSg^0`+)_!srC@@qPkz=~Dvv(m0WQV@x9J zuSi5!fr;ohDUs*1>xuNglZakQB%#x$N!T$s34fL(p<~}9_4!c}`EVl%U4Bf$&PoUA z*Gu7)gUrA7AbcG@h`m=1vR>{%=F?9G8z(bg|77k@PgdW*N><;)Q0>%Y&Y#y+KfM(E zZInV@Tc&XSa!pb115)5CKLs9Zr1HM6Un=>tE|oeNmrA}pPNgmy9Adp*htzrN5YGq8 z4&mSKL+ZWcA!|*ohFm}&8%s#pDFwZBuRlDFY_LM!Mp0kgjlhFdp=!@s( zBh-Nf$H0vO54KnF8hS+qJx8p!-#}v_t`B`+pgAnm&A!8jsOY>&NJLk&g}3zXO7&BafLc^Raq=B~bqTaN{Qiy5HU1 zE>Ql?ah0bAy5Ch?EAX{EX9<+Q$9*r`K;tj{dxpPH13W}e?>6r<--k*53?HSxFwe3t@cK&N9{C>ZEAy59hMiNs zksn6{M#?(>op_x3PW;;aFwp(IC$k^S7pd^SLiDjpV2s>Xf0BpU0uRXkzsRdszZhTt zw}I~W)z=ApBmDjSo9lUh@q0*-f$sO9>-{s(%#i0Xg_Vl=UgmOv@iHHZxxPlD)$#jQ zptOIwo>nte@+(lT-&S9%c_#HCQ2KMyK&yMMZL8I4Lgo7=f%5m~OB-r+f5(2NKxzLm zf%5sHS_!RAH?|6o36%L%yQEg9tEB>^9ghXdy4$}Lb}SPpf#(!n*Jtb zw7R_8DzKu!$g*0Uo)4B|T;K9qosQQFlzHB;f>x(PxIrCRX5 zMxgxnIN1VaU40=?)`_0AwYvSlL7>dPB!Tih-0#}VV^xPZM${qxnz~${rtpM7srSnD zXwMQT>-$-Oa=)rxU#r{K9O~20y*~Eb71&C|r+ou-GpV6g_kHfLhVWIO+NOW+w3IY=RCq3Do`lHi5c-XWCM$+hWE!V9chPm z#NUSD#u9xUVJnHvC&rZF_+pE3c_oG004rn;Q&jHhk=O`!Qvsd6Qxo@6TsYZ@bLY@?K>obuDNnx(HSHP~b8d zuUY7C%PjIeeHQtyKbz~FW)rX3vl+L4HoANzQ1`qy2VT}GygLWKn#^T>m$~e7pXQ<; zvw7@y>*mq_&OG)HV?dgrrPBe z!H4A{@?zH_^j9QMe(!m#GxcJ-Gxh7V!nTXG;w&cmD>Pc7)jfaiUBbBAOVCdh7veC; z1zqlP!A}EM>hn-n{0vq2MqTf=lzqc{Dd(NIrNr;kQu46#GU~IBKzW`#v<&^!UC#QE z%Ndum96Or25x0qMYF}`}|9pY+dEID*R`*M+#f5fwz@w(DU^*toxrQaqB5iKEF-(q#iH##P5Bc?B{u&*xz$4 zb}nB_{4cDFl%JQ*@g?5R ze3_@ZpH}y|Xow&C(_=sOPt7Lc;kb$Y`SK>#YwnMoasKRMtvADiy+HZiC1f*xp4`m* zw>LA+W()iDBZYke$j|5iWlsS6arLdlaotw*dV4F+2eyI4=WHPJeG0@5=WSZu`+@J< z(7F9~{JFH9=YolV1pV`AXnf`8*a% zeXkIP{Tl_!?=xHogZFYf(aZ9k*mGnjI;bDcJYM1Se-qAp9d^-Ar5&l|-B0y^lIvYCmzX-H$F)_S3Is9QMwR<9rbnhku%Q^fM%$ej)MH{rBfZ0V37jYl z3`wQV{Y>M$H|QkKCD|v*59?D}&1Siup5nQ5`f2c%K>5P5*BQq3KC9KeFS&h|b4rbK zjN5k(f6UHP7yZto&nxFu9lijL7uZz3_q>39vMzC+uAa`mKP;W|mtQ(@I+BjQ3@+op z>1FDP?`7h5>N5LfxhtF_%&t%;=3e1k5T)?@75pD~6+3rah3B_dvCBMzb^HbHkk2U@ z%x`y%bA8M;bkOiRbtdRK`++7C`>SS>A44*+&nuJj$I(po5rZuFXs2*V7W?1vEOef) z+5>Jd&q9T9H+V0QcZ2)gZ-Pz&<@=tks$KsU`9A0tbuQr+b*AQR_J6P2@VEaqdeOf_ zUW~ni-u>@TH=o^szY2G`Kj1F;xbiOb@$p^t+<%XL4)@S!@ICbROtt&mXPno4-tWA) z4{tReV28&8?0EQq{kHW(>c@hI%#-{OUaLGp4}%}U!;(kT!Hh@Ly(*8{&*nZ>?~NW~ zSCc2KGvSGsQW)mu2~?PUMrnwF)?otSew#Rsnw3d8O68Pxp9*ZvJ}>FN!5$?F+^;Ai(A@~q$w;~M_u{+z$WKl(4a`umr7b}gbERRrJ9i+J8> z{f~3X#((G{;~)84p_uy9vzUCDRZP9OP)vM3DXb}WJE`wJ0_Ah$F@f@Pv%Y$UI{l0j zDEE^nfpY%y0;QcL^bK{q^${q~*`WgEd#N~m`lSh!`YIME^J1!jq3*oC+kor!w1&F) zc?gto%@L^ky+lKBjKaAJ*D2g7P}bK&0;S)Y5{9~X^bt5r_jg7Nb^F>qfp)sTD`KeQ zEx9E3KM0ijSkF?1y5}DcfifQP3O@_fooh-P>U82HQ1|cm1E6WAS=bmQ*rH=I~80zYVgFxN)s|Ct< z=U2eKjur7|sX+O;aH_%^0;Rs+36y!)=08LJ?)!htck@5iX7{oUY+qT1j>42T!Zz41N2 z1%}Cfwb5r-9dvw8pv>!!b%?7)U2v&DnGgE}%6z$77aeKq8S3_t!2;#Eb4@*TcC;S4 z{#g(EyVp0=)uk2n(aAf3y59kAV5r+i76_De_D2KkU)K=(e+iV&Z8I7Xmo);D7>WIHUxz9WnD4**pHZ|1k zlk1uihaUpvbA(MZ{LT_6>(IYuzI_GC zbN>+&bnsN5tfRGC8tUpyKY_9i&K4-&JH2a3+;+4=7ynwJBd6Br>U?YB+_Vk(w6+a= zKNEOC?$2!vHNo=y)y`12FDJBvuU_p9b^E!$KzZ)YX%AohI>1jr2XvO*fjVK;5&kj+ z$~s=hlssNzioTwh630%R$iEAn;InjR@_xBM`QGtZXY3u=1v{e@R_#jM*DCxfP@az* zy3sz}jdmL|+8Y)AHiO5R-HCg2ckKDl9iA+Dke_>ckSEzah-dSjhMMg%zCE$~gFtzH zb?-&ozV$*+?Rp#P_T|k2<$hVU5Ba!BpnTtJ(AQA6@AwMT{oS>`_*c;!Ugw&li!6ci zeVKVb`k(6uk8S!Bw{88=&8Pn4)x-gYnpk-*5-5LXwdX+Um5BxZtr95D6%Q<^^JOjJ zd#ojKOSdHc9jv%sXhnQy3^LT6BaR6CCC?#)sh@R*phL?cv=^#&_z?0fU7*}=hYm&m zdxp|3ISd_497diU8HO&)4kth64QIVHf%5Z*rXvh>=k1##i0Aha^dB|SPwI@bZ;!YHnHLQ0vqxr#)kQS*`TLEw)h!ni~qT{)XUCx=*YnieTLhy z{$o4pS*3B*of!h<`6_!Hb)x5ZL*4V*T7mL?VDfnOnTO*UZ!`gWY$u>A{|SuOpGdzc z0_F3?{)yQ2X(Ii5P2&2JN$_<-p~jv%KfoS7T#BH49y|n~j|wvza$_HumKRl;_-0bEy9}=8#`M6gHTP z{g!jFbHiNpaAhuh{x=W3k5L$`@TtN^^Ev-G&Zk}{&!-NUE?}Nr3(#Ty0_JbL5PzmF zBp-YhGXB^?^jl&P{&x^4KacTRL|hD=*$2BjQnm&J92RxKWpztw7%~E2uy3S1`{|cg~9`?!@=IJ3I|s zX{fm@zh|+MI8Ruu;kFwU0Kjpp1&jntbch7mTuVkzCU~lS@lR){te~&lM3m3e} zt0&&*;-5G1X|f)_%mvENx7V!4j)?W#&tFe}gAL?`$p-8lBv8H&^WT7-jeW3duMg*l zLLcI4u@U<`HlmLY8{xB&FY6BT#jZ^Pb-x4e%RIMzc^+%xM?2h)=ZsH&>=VwL;J1{& z(w#qc&lD)%J0}X1?|oZsM#r}|bDl8Wg1+`_p{`aBfZrtnoHtVfI1dcmN`1V#mGPAW z$uH+X@;fOI{of1Z{>W|Yd&%4I>s^C*ynvisKdD-%-<*!J1qt3{yj!0{`iHW=Y&xF{4P*_zFISk`fw_Y{dN3K;^`;Fb?^MF0*ZtouW z{Jw|#ZKGH(DvI-6y}e-2Ui_&PP24*~!_&oR`1l!3o)3%Rc_u!FynGTve)W&#+_^dy zeV&M=-jv_Re$s6p^>p?=_QlA3j4!jF`nYI6b@$MI_I1-Z^x+;y{W=uKdGJFVcJ+&= z4!Xp1-g+EQ9u7FbdBf)bJmnnVoI5%J%t(L-^F-!3BJhcUsH2ITi_=rcr?IJqnvHT_ zPem85hp2-W4-uEjhq>-}m^?~3%(>C%2+vuu0@EZvN2sI0M>!X~If}ie#|(9!Cxss) zj~gFH|Iq^F_Yz8-;GB|v0)75Gf&ItI*mHXIVe-1;VJao z;}rUI6SzV5dnG&v$DJlF24{FanR5ocJvqbqeb`yfhsV!yo-jNI5BBHKZSpzlm&tkT znROl=Z$6J-U(d5oj=8}8edYrEYcJwwmy4W}W?WSHAW;7P^^8lrN182A_xX!J`8`UH zOXz;%CFc37ux&cJaY#pZA?fJ%S~~e}bea1$m*L6(GWH(33_s5<6TkXb@O#u1>dL7r z)XzUx(Btl_@bUO6`fr+{-cMwpgF_jN?|zMaKIR(yw7bsr1=p#UPp(s+Z88mYpI_g} z#EubJ@aLb!Iq6Fl@$Yzp`0u|#{^;FAr!#Nj=l7eO3kKi9&Y)Y^b>kLwtMP5>Pp{k5 zg@D`W4gL`AwZ{^pcv*`KHM;>Xp+o_}cx9{pG_m-VfD!&bl3*)8FSg`{}jk z)Q8GB@E4QAc`ql2{iIheb#zWH_0BJsx^h03{b1A!L*4gLKfXZs-Y?bru$SaXtvtrN z<)N>zJo36A4}U7=!~3j!@@`i?{M9JHPLBfW^Z5e!`dR=_rmw&auh3!kE1t*dzb1Zx zuko+!8}vEy4LUjb23=Nqi=TdPS@+Fb>b1i=&iOeC?cak>1%8+N-UsX&`4K&A{YX4s z2<#@#lPf;4&f(8IUzGX6dea5U&$DvBV9(sIoSPngrT@Th^t_b`WkFwVS?xNI+k$7_Y0YxI6{Ua|T~ou2!Xygu?1{=fc&pE|!d-%a_2j$iy@ zpR@gqZrA?i-16!-b!6-x&L2JsU;N>{K##xF+k(Hm2OLpEd@mGHUmN^`r)B@Jw{kIY zvn;0H`eM#$FN)DoBTWh2e4_+PU7ipq_rvc3CGTc>C3JTC2$Xh|(=WmIGz7}{To%|u z_xHg|u>T6weI74R=G8%gt#yANyo9b!l+)675GZ-vEKt_livndGE>vh@Sc2bW6)5x8 zL!hjuw**R^RxD9Mx8L+G!90m2u;Zmb$$y2CC3x>3Q2HAvQ0D0^f%4o?Bv8h`PbvC` zm-?T!w*ai_Xu^hrMQ|%EQn)~|LLh>>1os5@$W3w~#=Qx_-QA(MJ1tJ3cw34V_m<*X zTnd!J_sn_bhC>Ln@BjT@+QXc)J2N{wJ3Bio=Umq3ygT{j@?brhdQiS09!%d1DC7B` z9+b0OYU(WlQ1rV5Q1qTG4a+Z+hWrNrir?4{DC=1-0A+mcn3jCUrX`;r)3QDO0hE3m znvQU7I?}xc6nhU&Px_tdDd+w4EH_^US7V%Pm4W)7m4W)(pMm^yWOOz9b2C8kQ_C~5 z-I8T;HSDxrChBWEpo{~*0?IhxmYMZy11NFgMnD-qKFi{2#If_UP%pQ#5WiGbSHtfQ z2i#_?hZ~f3yRv34XHx zr9WQD!}`^-xElWCIH1HK?en@CesiBfpM2EgEI=7wpXOt`)Xz_S^~_IwoXXGg3x7ra zV-!9Dl(@Hf0X{D+z~?jt`P{xB?Q%Du_~jIZ2>lceDMb6(TZrxdH=yhXco%jx#_jrm zGCvC~OuPEIF!fZth^yhhmldHN@_bEuY5z6l9r-oe|M#z1uWUtK4Zj&#lzi?e3@GNx z_r;2lZ)#8C4+b>8@8U^4r7TVu1t{-*oCTD1<=7Igh964fMZ2vCD1NNJ7wzi27wt2z zH}%rlo9(;JoBbe{5AnPEQ10VCw1)z|)Jvc*`{`7L`+eCDUi*@N>5|lMpOWlHI{_t* zd{UBpBT6xUZz=wO4EM~E=_({O4I&xm0`Qv%FwQUDnt87S=QAUpW6Y7-|kbE zdVf@w_FSTztFgWir*I6Qj7y6Z7AsHxvA#V0=zWEL73dddRG=JZDo{U}D$>t&tw{Md z02<#7sz^VQyOOIh-VLcl|MD16;@e7<*{*SwDfdM{na7r{Li+Yq*senqep`k4XEgs! z753YLRjJR#RXJ{)t4crWQ;qEu0x09(=4$i@R{A z53NDGgMbnTy#idIbAS@3)NaClGP4Qo z^j;I{w{%l&kEZO`=bF+!Gy408mhy0l`s zlUmW<_q1X;uUoNw3%91-k8Dl9f4DXKO|CX<$Chn4F3)L0x?61+H)L(geo(nB+jT@+ z>hEn^($#6_YRqfKwbOW`9rLdN%6!VRJ=<$ad+INF2g+BW1N~H72l|s^9mua}N7lm* zDD$ZK9odi1YWioL*q(l!Xz$ZIvHgDU#QJ0kWWR0@NO{Kwa=b_x#JDIti0ythi0xN9 znB(uW_8>BpV|%KX7M#?@F~-xWi7t9502^ahmkEhoEjyuRL* zdVkxM<3xm=esheS_Hx6{e(LF^wn#A#W zLmb=fO&t4kt#0gple@7Uo^>N$op{!7Vm#|}F`oMB(w+E=x>Jr+JqRNKWgYbtpsc?> z=|R0_?n%8@?#cG*(v#!tIEC)LsNVs-SkIfiI9`oK_1!dp{V4Z9+GpHAmb-Nz{pSrp*`KaE$kmwNJs!k<(rGa977S*4{yLcB zNcJJF#{9795SF)h2>pD{p&Zv+4`qMZGL-G})iAbC)G+$Xt;1N4&xW&of`>CM`Dr-i z%`}4jr^g7^@AL@r%P^AtzvoDfKetCxKL1gS$NMULIEsEOXf(&KZKKKGYYfNdK4Tc? z{Wym5d5-1y7C)ALY2R4Zuk1L=y?Pw;UydW6dgEEoX@IiM_1Adj+b3{b{&52Bv&KaB zkEs*M_rXN=$BvVz&%J=M-jHcB^*&-U>+{!S%AbD*eeRek&Mn_F2JkZv6_j_v;m02WhvG zlRn;3`O+eG?mo7ql1H`7lp+)O=qd{2MX5m5FgHUP^0 zU%4%=#ya+Pg|)U)Uq`m`ImHjO%h5k@UVcpB{U2Cvnr)P;<2IJJa~s!>3T)?mGhjRW z>*4L}?*Tj54hMH|9KE}P<51e29RG{%WL(is;e?&^?|XOBK3sOut{U#5o%GzL{b(1* z)$P03PhRa}JQ}c@?cHlP>3-QwdwIH>{l;$($ARH{Xy&6N)cF5L_U~6ea$KwP z6Zy?k_~%coSJ|K0kJkK5ec%0=<72hGuEsuxV=v_yw3p+^Nj|D*I<-y9`<%439$ zkFo#FIL0{du0EGPPJcQ|;l<-@H}4a~>!a|{3Dz^`Nv?~{K1qA4dW!yJ%qflw2T!p- z)H%)ZYRqZsZOduSXFbli8vEdJXIS59XV@=}pW%2`_AK=jdzN}%b(ZaS`z+Use9zGy zW6!bvXU?&mlbvUICC;;)w&!V|znrH%RJcI<>I5k7s|>%u^jQ};zV5z2y_NWl{$s{( z)Vs&;9AE1G&iG^A?`%K!i|mh;0Oj0%)J0ui{)5o^2mRZQKXhJqiR0zSOZ4-pE)&`> z(_j8^nf6fO3jI!(D;$>|T%nw;u5w<`=PLF6o5CE|XwR*#v3~K_=s)IO9i8(b$`c7yHWdz1K4H|bv&-6Z~-n{1~lw-_h)x;U}zT+b3+Vl}~6- zx1TW1s``}nzw0UGF8GXcbbiKp#hPctFY=u7^ncEBw*bm}b(X(a58uB?zvM6C-}#IA z)n2f@n!TW%jDNxUefNUn`tcVm-};h%<={)o`Oi!0y}~QD+n`sRr$2Z_d$#_~aqt&~ zfB(&Kro?N;AN60;jwZim`A76Q%|DF8YW+jI9`O&`@7sT9w{CA-T@J~9{~Pv?r+~)y zIN#D=4|~hFYUNw5!)9=CGxir(0!kcQCz%`H&jpn6?*gF6mpnQ1O9Kl1a6s`Ze>&4s z5Do_veVzy0BK|m~o1q7{RBndc)LwKxzMzfW|tYo10;$69B~z{0=B~ zQrq3lu;UqkqQ~3rl%u|fn_-tz03}{{3~2m*Vrn-dj_(C1?Rytc=3gb!kY86ovG1P% z#jh4f>t^_`+JNGRHvx+N{st6(mN%W7(f8Y>TfYOe~G(ATK zH>006%s@TO0hIpw5Kz9iQ$M4du@2A#P{x7I8L5YxfD$hj%;aX+!8Aa5ui^xt^b>1l zH^Xlo1(f*j1)!XVADxAID4W&Iu$$?CVmBwUQvcaLb2H+C-hg5!#{gwsRymuS;WyU< ziv8#Mob@OHDDMw<*XQzIQ162P=SlpfFe zl<}k=1F|`fa1SSmt?-Z6x;tmDa!M8X*VOD zT?;7VK(;b&#`ruAP`*o+qb%w7m1TbmDMx#{T#o&qVtLxh+VX4{?+R|l_xx5>pnj@X zWWQNak$&g%N^ZtEpV&&YpPZH5jB(#unf-02!U9#;-lG7G@5ckmIP6=M^&L@_{^4R( zmg`lGdRwW`tvbsOuFm#3Se^D?p$7G^1W@*0-qfJo_3@*gZv)DFvrA3t=S5AX_p3!Y zlhtOswyn+ncCI$l%h#b?lk3ob+^$2t6|3uJ#4Gy%D;mGo#rCeGuzNlFtM&D0hY#uz z&#OM|B(gr~m)56U{{blD@>dP$4@NbhU)$Dz{q0%5oSPN_@4hA^G0|l=!ts zBaU0m0cCvb-H80>H==*P(TI9?Z_N5s1C+RNaATIc0Z`ThuLH_>o~sG<(WnW>jqjRJ zkB^$ruKPBn-d8oHKTGLPd20Bxe-8HN_;Tg&J+Wq|&w6lPg?ALo*vcHyU#q>F?IR2$; z&HmR3P|g=E0yNfF+OWMww4s04+lK9$wJr76xGl$};ccn6mu*?EuiKGdcstg2RXeuR z-FDPx-uA=~Xixrw+mqjJK-o`t)t>EJqyzah?!fk&)PeSR7Es=!_37wld@ta5N48gR zC+5%S#Bu0pC;H_nfo$gkfz)5RAU+2NF^*XhM7-3&tap`Q$}>8c<^CK@J5C)!|5Gc3 z_O&R4=?6ntKQ}A=ZzVv9vj$t4zs$;dUDM|*p?q!}O8?O}l$UK-s@+--YALb%hxs z2+KvVp9M!yFJ~iYPw67vj5ypL$#`s!!eUW`Qx&>I6Lwa3GMaK!j-manjNxq-|P;`*U7>Db;`l?VzG?(9I=#hRxI`OXDs!WGmiZw zHjd-V$vC!inQrtiG2LjN3%k*dPj%Dwif6kwj;9=}(+_6s!{>^97%#{5VSRq;Lx1Gbm;Jhq!l`{(uWNl-PU(J>E50Aw<=cLg|F3?u zqsskhw_WR zL#dZk!zh2lVQlw73NH_1ewE>jV}}iAymw(Z^;35Q`Ar<5{bmH~n{Fh>3ICDQTmO;l z7pq57&d)~?zx62Ud+aE-)6b(g9w!^k@uuHs;-?)$*k}yn*70N5{=bc3Ii?#CS8vb+ zj<4k>(m!;ZNO^vm$nh}aB#xWmlUU#Vljv`KCo?{tHksw8o5Fr@>r{?w zeWtR#9!w>DwQ01I#nTwCT?CZ%>~hoTC(lmTe(??Cl)m3EKFTpe0*KUk{IhnLfCZ!hQgm39UFMCldOw{->Uw{iu`yR(AxpDZic4go94XVFU9@2-`! zpR}u3k1DG;4v$<#yq{LlUtC(n`hK~Z<5|FJ+Q+Wd#D4=Q-z6*iEytBc-;%DsK5ze) zazFT%@?`!_*FC;t`%U8$y7%$#iLp|kP%lSyvwWOQ9 zmT~XFwY0N)YdLQyypHpT>FXE|x~z9I_9>&+)8D;Z&vk~D8(6Q~8z^_7jpWmMBgf~- z8#O-N$oTc`Mve<5HW9z^Cbr9fP4qJ>H?jX6+QjyLxrz3fX*2Dw)Mmz4jW;t6=(d^d zxPP<8Ki{)`!oR0qn)yBXJ^Y?}|8fiGdo8!nj~?AZJ*M4CSZXWdgAQ9cUVOWi{prD0 zwzu^M#))fwpggYI+>GyPTegvYAE2y*KH5gVnrl1tUv4|=7rCA7GIl%l@zZvWLr=G} zKbPG>{mj@wep`1?pH~58-z@h|#&ZjIa=g8;ll=4TB5bjX@{Qa@zj$dE{fN(Qjz=SR z(+|AZO?xV_hyFEc59{~y9@-C^dmmMuwBA_VZCSkLVt7M7q(~aeU!82K8_2s_pv{`*~f9Y!hZIH5&PM0 z`}fnnQXSAZ1yJ5UntDLvnuF}GaR;e~-3RG!vmBzm1RbJZT6T!~e0YfZEPR;tiayN# zvG*|fJw42E)$>=@EBaTKyYp9_HymNS8hnKIvibMcDe*8?=uuV;bxp4T6%)*RQM$8JLDwk&zxkv zKRd;K9de5E{*$Mu=c=dKe)CUre)#+}@!Ox__`d24>zn2*$Gx^^sgEDda-Q(?EXUp6 z=QxgDI!8OMf1YsldHRVA7u<~fg86_Gjqhf09pd}nxXw`KcQ@nrQ?~rh@onGlj2pZ! z(qB)#Nc;KuBK7{_BJH`>AC!B;AGEWamx$No67@Fd68W9G#ClY}O!|qJ$^X)2`m>r> zDF4DMY`64R*`AfJ(yt7^N`H0vD*Zy1YxGOauCd(i*XUnXUt@dTyr$#Gb>;^s9Dbes zV>_VipXI;7_MCQu{pZRJjyr{JGQR76ljFzpo1_cA#dXL1x703f6Ml1>e)Pd@j*Hpv zuz&QvLqERr4(Gpx?y_GExXXU915ozIQ~t?#VC0`H|IDBC_l57V-s|qMUtGJV>q+;i z&n5Ticb?y8Jo)tl+LZ%P_MJ~YpdY;Ufa6lKhvc8sd5$$c( zBiiBXM;xcxK6W$qkNZ4kJtscqc>nA%^`7$y@oPU}yDfRbaqsOD`qkV|>AxyJWgK<| zP`+~<^^E$@{ha+ZSmDy=^b>cV(;j^PVm~=Qsr0lN1I=<-#mCl`~iQ{Zy)}f{UPOR_AlSp?B`Qn)9z0w zbp40zRZijfe`x17|Dj*2`G(N(hW0%F4ejj88|uIDTiWH6x3ud^3Uj!)8*yqp!mH%0L5PYQ@9)UIYr@dK;!qp zQo0-CZE-;3ylqPI9S10Jz)nDEugt03jd8ODpz*zbKx2O$Q2annS9ild4hD=fzT4$) z_`e2j?uNb02bA^RSAf!9@$T+Mymbap?6$E7;XFXm&m%w?cPgfKH|+5Wpz+;{G~~Mk zQ0(V#KJ-w#m6w-dS8Zf(D$URMH&pST5Rd~Z0n zyWtNz0?K!_4&1_T@>1`o z@{(Wme3WAZpp4_^@=?CJ`Q43q@Ui@quf|vI#(GQtugK>Spp1_V3s4^$0L9-{D@Z>3 z3evvI79!mmKp9{17AD`BfHF>{E8=eW)d7GqpS@Is@{IkO{pKQ|j4x%1x*Ps^LQ%E< zqO9-VMOlvq#i+kY#n^Ap7NeX+J*oF$p5%K0Q1(}f7N^~>EY5aHR>Ixz;|&3g@2{4i zT`VfWe)4+>_Uja0ET@MT{mKq6_RnPAw1*IH+WVJ2>_>fk*bX~=Xs1tnSblzAcOy<% z=*#-Km!$rJ0A+l>U6TGRtQ5zeK zeSVL!%->#?_4O*}Zj1}P0VU3QR*rgVU7mhsb$Rx)^cC37%_>l@KUC0uRgv{>Q&IU= zWIKCRVt<(rDC7LbO5|ImGW9wMFq8575XAqjGUaGkh4tB6g?h?TmF-)jD(z)*Rkn|7 zHTs8w3Wryt|G!g>e!4()cOwq9RVSZQ)rps?2JJ7b2J3sd2HU5mAN|iTKkECDAMH0! zO+JqUl=yeMKIf>#aj8x%_N(EwXji*xkzdBzv`_!q)Z0=(iKElkp}mi*!*)qg*Ij=% zg8eZJP~y&$b!l(a>#^O#>#==T0?PP%ryl*om-UI?xIWuqdwuHD(tyts8qf}(HemZS zYe;|gOG7?aZbZDbjo8n!HfDK|jrqK$G4!f(^bgmYv7GkJ*{^msr+!nmV0-!jZj|y`upd=!Nq+X0 ztp6`9DR-$>9FMxUV*BlG#dh&-P5B43W`Domnsk0`=%?4Up`E{OLqA%*t&Ycla*kj7n6?;gl;#}`o6zuE@U4*CbuZkGg7Kb9cMWmR}9hGDw$i=}hf=Oiq3mbFLs|bH0c9PfaG1LhKUWQ7 zdj*BDeV2qWKKU}7ag!BL<`HA{`TKB=rdbcS(uM7_8&KXW$`#>m#JMX0Wu2)~B;%A-k?g1UA}L>qD3%`|#eTIpisRYs zDAu=IH2vY)XpW1SV>m9%h@pL-h@pNgU722|EB)kvuH<{NE891#o%UA6&i*&T&h~k2 zXM9`ELA^U1^qX59Y#+Z^w(I0r*8k^N`q95***-pTwENBq*T=CQuK{JgP`n%U*|{72 z$amey_kK6pLFIV1`}lb3?{qx%>fN1sU(lWY_fdD28{C6_a7GW}@9V+(=I_b)uUk*n zXC(!$-<^8TV+v#p^%3Z7v_0m=0_kglr{1#B& zW17~NesNh}^10BLc9y9h3gx!_RRWz2_Me%$-`++JBRD|sLy#u5H=mb_8&BY@|_+*K50fW z4y`tl<;IMpUt2hm`rbE^^lwK}kKUs=ezYD%yIVJkaZ$3-Om91yes;rX=I0zk`|3P~ zao)5sY_BI{=nspIrF}IW%l4Z+miYI^(!O$xqnvHWvENP@$NC-^NB{q99O-I}XS+`w z&;EQ2P}a{gO<=o}oIrgKoWTBkWCHtZ+KH6E(nR*lX%jhqT>_N#wXBm^|M8O;f9#pW zaje*6>M?pU`7D}D{hgXjIozjE&Kgr_=TTEw?sSExrm#Mlr?S7-pGx|XQz`HEskFZ| z(}-7c8vASHG`7o9O}{ve@_as>_R?lL^>TbV<;(vK`*o{tIA7ha(0vB^2h3o*^`1dJ zpPE7YPBWABZai_aA`T_6R)MvNZl<(+l^6{8My;hh* z`;VT(dF?7yex(#~_uQ@=frV z7qkCWSxo&#E@t~rRk&+0@$cw!wk3pBmoUAv!l?@PX#V{rw5KnYGQGx9mKUwhv-EkN z!e;uFDHNR<-~8NaQJfKZP5J7%UQp)D=1g_6~qhC=kfZy zRpE^l#Lv8v&sA5lyoi;wiS0*}66CuP$rphbpY4yu;RVJlMFF@y_+N zoL{)DqaO`f$MJXbI>s-B*VCT1u4n&DxqMH*p-#y_xhqHnX1{-%R<7eNR6S_C23he9!)T9Z=TYb8cb3n!AO3 zuWn&HR$?pt^^mQU@6WA_^XvY=`PWK7IWL@Ho4c`I|HC%M>E*Xm?xou~Z+gC+{WE?C z{qLF`Tt|DjgY6T!ljX12$++tNPWs!xT^#>c?4mvF+r{zW)h^CYe0Ecwf4I9C=ct#bXWB%hm2^W~l?pPXdWX9z zIdqi{<7%>ZY1fg~5m#1sKDRdU{u+2^LEq99v4-;Q5BNy)Eh!1Bq#!J>Jcguy$D^YM zVIA=K3Vep54v)b131|vHmXS!Si>s5$xf1C|)3~^dLfU!oKY{c^pjiq&vr-eMv%>yJ zt0h0|jC`?6AJjQD?x%z1TjaIH{XjS3eyg%QPEP2BXAkiI5&2CZFG2>F!6@^0(3ON- znN!O5p3s)ybrof7g0=ldm?>FI`XjsUu?J}%8dcd0HmJ=ZadID0$nfF zbr$4}!~Lps@*V(u5qO-`yqMJQ+srD|a}CN0fqe42-}RB-K-(}U_~roLjoNPQlgqj+ zKG+?*4()1!WyWSt(S$&1#nqwd{%D z-%@$^2X24Ozks?;K>9zRy9fGTQJ={uce&UNXa@oJ6z;FO$(lR*E#$X=S8Xl(yvk8T zZ3DxP%SGUq1AGD)1)kpmew)h0*vDCEs&@*lkNDe(D0e*YDr=o&5K{yDDO9`EP5f!-Iil~T*^KD)Ryhm0qYmI1tsZ&Rb*Mc@N0xWotd z!}A-}OJ3Ab;*c81TdX#k0kWh*dK{ip0xuHs7RI$t%iX53-$i*7fzuYWM^WBCqI*0? z9j3#zA9#M6-V?OmO0ov!yQX|!2M@q! z9m?5(yak{=foD5pPpf5CcQZb9>#_+lS50TUwrc!+hWjh1+h3q-0iHLI-&xywoT+o( zgp7Yn902@9TAvW`yqV%1&hP4vZ@QN82>IEN z{{Urd0?ilc<+s3HjIsQP#N$XSt?kk$wY=AavLJg$$X-qLaTql9aQ`=C>7e%GYVzCd zBwh7d5#{)(-4}KLP_8dB$R3X3f>*HeI|+DC^>ZEa_6NUpkmsnWZev6TkZYydz?aA` zgy(V4&(n1BEjo<*$cqB)FUj67cPO6ErIh_7wPoD@kV1Yx27MW6)j*3WoXZ-~4fy>8 z{7uL&rhIZB&tL6gA^7J2{bIo9fZJ7ne?XoV;Ps>8ZPEH92agp>E)2( z)B$`0enm8|rkhKWe-7YCT=#?OFa*5oNme!7~7G z46bv)3Db7!3c8!9!%vX!iI($R)_g!a61X19uPDlj0{=W{!))L^2KY6=qdH`of$N^~ zI}X{JD~*Th=C4%m*CRLZD>2JD^tHdu6$ahFn%`BWjWd=Kdys#u8#7Hy2q)?cZ*|m3LSk$odXs^F?`k zRKBvf?}xN*c%BV8uYhh3p3|eOYj_@zTE5MwJ~pNN?h$+fWcyxu@6hsQ;yESK%OSrI z$}5w|uPp)3s#16GoMh5nZ8!O?B^_U&yS^y*rrJVxz+6bHqxSbw>HgHR$4Glh%!PW( zoZ&a%uSh4~c7*;QS6Ev4o+NQ^B(l4^DUF{VW%~dpCGPiuemCU%26euJ`!A$D@cc9Q zCByw{$hIHX0Hmb_?|zUgm)duYH1G4@2|12|kL(>z)B2^v^FGj@1MdiFb3Df@T`oL_ zr+=TvO^FA<=PS_IMR&L#fO1CxSI(}^z;g?c3;LKRJ_32M$Qzj`UYQBLeN)RfIQhI@ z;ygS*2JHpymunTqtNkrixsJ#f1H3xQs|214fnH+u!ni++tAVS$uc`fC%V?_fVW9N` z&&|mH5qJ$D+clIu0qM8EXSu}cN}Cb=@N3|71dp#E^B$=O^!vTmrwa1@Qp#_8p=_1& z6<|K#hNu0|w^)!?3ACe8*54?z9-e!m%uaYNhx@uJV}IlokeEZ|sF6ax|H*qu%bLn|10P@H*@1Uk+Ei@GG>-OFoz_+#6s0n?0*@;ai<-t|Z^-Zn z`F*6`;Jeq!5!NO`VPJ}Z)l8(N^e$>5(!#!s1R zYCB{@`B_uR`_>wh0q-pMEmFF3c+O(t(-`;zwY=rvGY5Lgl2(3?(8Xl~;5=L_v>twt z=P6{51^!-Khg80dfZ=LqUjTQt$^U+VdQF3jO90OxeUrpxCf(0Mc{L%gErop3*u`Z& z@_z=*t}>m`dX+?aL!|!(9%3T%aWCsLjX>8Bd7F{A7x(qGe;-ADFmOvaV>wrOCmv%S zWC@Tm#7>ak5BX1!?g!XV<{Yjc>e{Y6i>qzsfJ~*e4py0qfMx_}GeG9GsQ+Q;_%PD^ zv<_W>>y9#yBTd%wHn}OKS??bv6>sRxEzX!Yy0xuGHi|~8`&|7WkoQYp4;8jQY&7qei zsotAXy6l3?%TbSvs6%__8jzNo2jw2Z{W8#b0QtJC0YE?V0dvcm2rhqZ|9iOKrDYdF z{zTxVG5L~>NIRBBzM~Djpe)(rs}BAvP-b_tua`E~`<39`Li^bw(CpGWHC6m0G8feQ zAu9VRmEjxYy;b~qDCZUOo8W4vy!|DfMfzG(U&*KUKLb`p*_%x5(NuY5RVZtrnYHfU zg3lw!@l3{05BY{R`Y`Ysn(BWJ^?k-alOD>_RS+qvhN4}amY{&G)L8D$AI=XT;FIrwGrQ=c@bK# z^xBUzp}yaPpF?6N$R^+S&W`(ixX+GjhPH8ilq0`+5G`wdO6w1vQ7ET8U>=i=zf^e( z$T}zJvZ0NJ%6v=hD&Dky=a2l2;?GTUi$Lf6OXdsm-i6j9SmyWAe!%rac?AHYaUDfD zUBGiQ@+YF49Ws|e`eew_74i;+j1fp%1Dt<=vl#Mzh5H!rO^y5CK@%i#tIB;IWyrpI zI@ML0lrF~p*>uxtpKSg>T$WRNm z(@)Ys(-~>&m9Ho0AEC@Zq}Kt?RF!8Y@;y=84vldtIcLaerwcyAnMXr>sZ}{yGZ2?LVioN#r2>sfpVrora_9= z4YJ64H_gE7zW4`|pUW)s2hfLue;M#gF7~T+*r#&lg&Z|;eFgd>Do6e_ANr7LgqSAdI|hrfM*({&Brwhyru%~P+g`{*-9cURLaojqNefhwaR-~=47b*UX!oRgXi@q z<0a}<8uiYM=a%4;TIN>Thn^w*PuaiFezZo@7ib%N;U>Q+4xNIo1bE+;Ik%g<2cZ5_ z^-)HAC3qB7{a%v&2Bi4__6Ge3Tvrsg8{|Kg%=iSh%SPEN5&M;WG2G7p&PnBw6R?HE zg0i25vd04_bE0+GK*;hyWo{up8u_Os)&T8p#T^RT2CBQCk@ua+#~qM81JDghwAS2H z^=LJfmsa8+@aZJ>i%WjT_@MYRt=Dbv_yOhq0hxv;T7R9XGRkj+)Tx>}8&U7r;C%#B+!cA#YxXW+7z;}Xgf6yPreHCrf zNx&(IauxzsKz$0!IE4FysNWXg9MiHr#3w>lA)5zioTt^c8LRc#4Y&vhzeAQMQh(fc zlK4dI0eZOsI7!y7RldYw^e{I1d60{wGa~$PO1Mlo6{m%oh%V@iHfQ^A$ zO!jSYzX7;WxV}}Hw#c5AyZpur#$r?d&I1`no7%aV+JWq&X99g0#r+O+XMr~WavjF~ zDYbQX+}DC^9?1K{c&7z&fX7|%^#jf{iQly@7v0j~*Q zezmbtcs?od9j?)d_UOVv*VtqahsAHpz7A;Wf!`6W&oGqH8}xRh?S?$lpo4kxJ1clT zENh0qzo@vM1NShlGRV6j`?|6}sO^yhw2g560NNj9?+e#LlT3dBe~QHFpwBA%%eeLc zXE1Pzn(R6PZ4-*T{HnV=D0@3_HURF^`W!_W<)MQ^C_l5QT^1vM3Z84ozApIO#r+`V z(-HS^xGIC@Eb{jP_bA{48Lz-=isF5VG&z^?8RYemH3nG^P#f%>$UmQ#dAVt$+?au`@Fb6sBLyZ){5~wS>%y%0OX#$T^SoNYAbP z&;xo*EBkuTLlf}-49}x+y#&r3@I4~yG~oNY%HWIi87k*z%3~++$IAK(@{*z49f0*w z?j`Lv7x8=pS3%|RJ?>j5kDA)98%$%yE#So=zdZQ+nA$xGIHUCbbMSwo_A*Z58P%sn z`L=}Yk&yif=og^whagK1S@YC3&WY!W$WNyIuMp_tk=7Nw%7V9?A6o`qdrfh9U(jDe z+6-sEK;Bh}t(^N^GH){Z^^3TF3!N_2y5&T`>cRuc5pBrb=Hat`h~^0UdjUG*UE7A!N3%VkxTCXl%U^sp0fn~CQj)omN_ z-j8%Eo`V3(qfUdAPcd14R=HcKuOB0OBifd7UP{hzWd!Yc(A5P@2mM`>Jwo9BC~c_v z*_}>)iwpe}a=7988qXVnCuc(|I@c^r?Y$fKdo;bV$}?5=@@2e~F$DZuf%oqcYop8= zTDMGq&aPxt9XycrRLGJBu$}VE4xUrMs0sMombGSW>k%dyTs`D{NBMRo>ZvwX1vEC` z*M}_M;eM6uT>|z3-`^n1ud1&FP93F|cM##LP+oD!J017aML#kRmGwK7v8k!;x`Xy_ z;4A>{A998XxG}i);yNX|k@W!Ce*@kg@Sl=ieuoWx9sIwRI0blPL0eB`(RSOU<;;?C z*wo*~BL5biuK|BEcxBLjyI1MT0Um-3n@w?RCmp9kWX^;1&p_*gG*7^pswX-7l}+n3 zPIddMtn=gEU)Jv+@6R&Fmazb34gqaX+1tVuC~Mg&M-SkRm$OH>@&czD>Kuanx#05* zI7d;&U_5^>>lkw01m#yoeX>J8-)bGUnZ||Boaa{nzXa}YYBwiP4<9WvIrzDo=FXQ* zzPXOrrY(pJ0 z${xJTy=327))9eU)kA(G@BQ(v7VyR*-J<*#0M;Hne-7{7L{um%3B7!iQv@>I{ZW8J3QZ& zJrvY^A9ya8*b`|@abE}c1Cdt=^vNauma}xAT?gFJrh0Ui{RA10fFGcG{W6`rV+rgVMmUU6oWhQtvlRXU3HPUu*mHOeim`RQc;3?-}w`;q< zmb#h7>APBfb+wnH689vR?-;{|QBHL&dyL4dd@suW801(eyiIF6_hoGaI8Ej3p89}v zxSu7y3gx6$z50T#J+A#J<$KDA^+59-WM3*{H28f9+N!2LRuj4&2l^O^xqw&QB)`1t zFx+`Y0C}YnooAG9^>#=v@6qe|I`F>&K3AcSVd{G)%KQcC^1bJD5_ig89eCc?I!psk zU&ZZ>ytKe61)1giZaeUutGazD=M1!*>83U~sO@h9kKCwBknG(9_q3c31nnE8zkxcg zMY?M;`Q1(E3;Fd`|4Sj?1jy4);!*J-T24W2zs0hb0NSrWw+MKLwESDRe=KLKke)-% zOKF`-iJgFFUOYbs&!)1r0oYaZ>jC#Wlx_S*k;FT)*Cgi~WFH#*7N(Qm5`}LEPF6hs zDQjh>x!-zO+mSvBIscS>Q}C~bYZ%flfX5~|<0kvPa#jar%5R2GMSgGOWfl9=c5Duw z(@i!uOLg@~&IyX`L!T*8_is>+L)L(B4Z*#m!?esl)CO*wVvium?T7peN)rpYpUZlpoD-A%HRahuX}4>8^+O#G z0JpZuch!|OcgPeYXF4F)O4$dIbw{LiQ2qr~mPu+;U6gNGIm3steg*svFtxVDQPjNy za4SIOwYXl&+!C@C09`@cp97v3aQeu4rJQw@*iFWEnL7h-h)KSSV)t_HTGl+3e-k`s z0R3o_P70W8zXR^KfL}J5cdKpPm-FhNpQ3nM#3yRoyp=sd@T!YzvDR&v+QLOS4+Oc= zBk!^^R+05e@XxDy$pV`8xGyQ|DZuZU!uW(2_qilSkauClZzP&iHcThqtU#XxehJ`L zk=Rkzy5!uP#K^L4Wvb&N+*bj9L)qh#eJkZx0eCw=7cJws#A1*yt&GXAv05_jLxz*6 z_hlLPQP<75PJ%YO*o(x5z^f~Ho*N-& zie&QL56baF5^I_*K_lNVxCVX;We-$sDy!ztmv{wy+RON+`pjsG1#ikaBJwVQcX#L9 zP~vOQoW(WWq@UulUn+4w>iHJ(ML@O#sN*fb+$g6e(w1rYLlljoM%l@ zPB^aFYHuB(!;8TGRc+^_oY{dqcT~=4fRYs{=l3PXl6j@d^*8WVi{Hl;Bx@paR?N9R z2D(&gQ@(0%&w-y8`FjB6-ArHS+*M_%r*I9@Ujr``a=nD?-Iabf(l*KdqwoOE0m!l) za(PHULi&7}vq;Q|dsowVcN%i_kbQFGl|>oFmEQ?dtW;V1OPF&H5_vt4wjS_>;#5Sr z5%Qh_>UBXsbG_IQ^8ZE| z#btj{_HV$mk=oP)u_-xMFXz)_{Ze(2U1GCD>(FVDcTi>c#Z7*{0dWraj?=n)hWoN= zbIBENsj&bITR}OkkhfiNS2){N+rOjAa~fr)Ls};2?iA|KOY4~~rF>5a^)l%#qnvp_ zdI|7444TS#PJz1QgIt&8d?wNk0ltwnL|G$;Ota-oH{@vqS+}6fwzB7;^(-m-l`@wG zj|+e`jT zvbPV~Tw2%5NNb!zeqUbWR`9zaYoEZ8_hrkN{Q5l^C*}MDaJ)hHMq+r?eI}Vlnc|@! zSr?YLMD~_t9Yu9fALSI*vNxFKueXqPUB)Tk*=4T+&(lHsTGml{!YeedB05FRe&DH%lsRBnu2GH%F$kZ_X*@>N8Uv3zp=Q_qV46T^|Q$O1IivM zYiEh-(+BBgRi2A72BOTo%4;ZieG9qM;dwH6HNw>#&rN}|2z&-1|2wtSEGVNvs-)+{ zSt08Ml>Lp#&yB*ftJ;SH>2JZS4dnO}yz@aP&rxPMdFKjO4HMs!ayB1w{33H|T@!g+H?!(?#SFq_7hBF?psXEm@H|#c?S8q$sUjFB?B*$%;{y!QG1;z=L%7FeHmL&<^$#b z3NpNsIic!qgt74g8&SK+AmcN5l#x9rd3OnN1|mO~jL|6X3t2D3HPC6>rm?WNrfpZ9 zKbHLfwX-cM*I?je2G3%u$1|pSCzrF2^4_4>6L|b+TIU=Hyn$*H_f((RROW)fZ6@dU z@cbI(yhVN`m8(5uoew!G$h%`ow?NJZ$(om(1u*$iSCny3pC6#Cg~;Ct9W2BZq4pG@ zb$cymt5HTR852=QyQ%-irQ|aAAlZY(<(_EGBu<~LDq}jCUqg2JeZG6nn8?(x|5Esi z?6W|oH}dYBypt(sXK{ZC_vhriu)K4OvL^r*l6j2mTS2x7;`6m_N}23;n8LrshdSpQ zTECm1U$6RqDtk*P=Z#6GuJZ1%ysL}6bz-9?zL&I3Zy-G%(r3xJS@7-bT=Pf%J{jj^ zehZvCY32Kc7`KoXE#r*51L-{bBlQQpmz+bCSVe3RxaU;fAHlN>^3TdSSJ_Wiou)+@ zOHF#0Zwd8uzPqe)EC-M0a<&RQLsdU(Wlc`rKaw*~5@V|lRw->4h!2lk+axuE(73^#Sh+XdQBHR^}Em$A%pDwcfL2%!BTVfp;$1 z(*a&N^#vOqiNnU&YFB$N6@|i-Yb0`g7WL24pqP>4rM*o`qY&3gP{Eh^|~Ny zh~RNh;v|$iK>2+q`v;&ejP!A;yH#=qO5Sgh{SV}ShV(x{(+pQHIe&_}%)xyM*{{a^ zNYtyMtQ{e(6=WXhTzhoRk!9Wv+-|ZzFKgj|V?fhG_2Dh=3*kNsrGH~;ul=dzH`nxhvB}s5zm>f`dCyz+(LuKXlvlmDpp+|>Dgq}Y9; zGczfHGeYJipxrC;DwFS$-+&qpdF#tMubk(XJq7i>gS4J?prb1$e|rP@;dm|$UN03V zHDnwo?}UQ)3zXFZ`3+>h+Ic=+F4fOu&`$+^JCx@kXX255M9zNT-lpw#LffIW(qBz2 zzhMU(1m6-ePgGg%$a_S<*$O#|D(-FE=K-#KH*W!C@(0aB`Hlg~lW$r42-pDSgh+pt zc|7XprnGOMyRovDfGa)ZY%l%GRQLYiE#IqYfbTry-jhs≷3Y? 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 literal 0 Hc-jL100001 diff --git a/gas/rl78-parse.c b/gas/rl78-parse.c new file mode 100644 index 00000000000..6371e17f1e0 --- /dev/null +++ b/gas/rl78-parse.c @@ -0,0 +1,4716 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse rl78_parse +#define yylex rl78_lex +#define yyerror rl78_error +#define yylval rl78_lval +#define yychar rl78_char +#define yydebug rl78_debug +#define yynerrs rl78_nerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + A = 258, + X = 259, + B = 260, + C = 261, + D = 262, + E = 263, + H = 264, + L = 265, + AX = 266, + BC = 267, + DE = 268, + HL = 269, + SPL = 270, + SPH = 271, + PSW = 272, + CS = 273, + ES = 274, + PMC = 275, + MEM = 276, + FLAG = 277, + SP = 278, + CY = 279, + RB0 = 280, + RB1 = 281, + RB2 = 282, + RB3 = 283, + EXPR = 284, + UNKNOWN_OPCODE = 285, + IS_OPCODE = 286, + DOT_S = 287, + DOT_B = 288, + DOT_W = 289, + DOT_L = 290, + DOT_A = 291, + DOT_UB = 292, + DOT_UW = 293, + ADD = 294, + ADDC = 295, + ADDW = 296, + AND_ = 297, + AND1 = 298, + BF = 299, + BH = 300, + BNC = 301, + BNH = 302, + BNZ = 303, + BR = 304, + BRK = 305, + BRK1 = 306, + BT = 307, + BTCLR = 308, + BZ = 309, + CALL = 310, + CALLT = 311, + CLR1 = 312, + CLRB = 313, + CLRW = 314, + CMP = 315, + CMP0 = 316, + CMPS = 317, + CMPW = 318, + DEC = 319, + DECW = 320, + DI = 321, + DIVHU = 322, + DIVWU = 323, + EI = 324, + HALT = 325, + INC = 326, + INCW = 327, + MACH = 328, + MACHU = 329, + MOV = 330, + MOV1 = 331, + MOVS = 332, + MOVW = 333, + MULH = 334, + MULHU = 335, + MULU = 336, + NOP = 337, + NOT1 = 338, + ONEB = 339, + ONEW = 340, + OR = 341, + OR1 = 342, + POP = 343, + PUSH = 344, + RET = 345, + RETI = 346, + RETB = 347, + ROL = 348, + ROLC = 349, + ROLWC = 350, + ROR = 351, + RORC = 352, + SAR = 353, + SARW = 354, + SEL = 355, + SET1 = 356, + SHL = 357, + SHLW = 358, + SHR = 359, + SHRW = 360, + SKC = 361, + SKH = 362, + SKNC = 363, + SKNH = 364, + SKNZ = 365, + SKZ = 366, + STOP = 367, + SUB = 368, + SUBC = 369, + SUBW = 370, + XCH = 371, + XCHW = 372, + XOR = 373, + XOR1 = 374 + }; +#endif +/* Tokens. */ +#define A 258 +#define X 259 +#define B 260 +#define C 261 +#define D 262 +#define E 263 +#define H 264 +#define L 265 +#define AX 266 +#define BC 267 +#define DE 268 +#define HL 269 +#define SPL 270 +#define SPH 271 +#define PSW 272 +#define CS 273 +#define ES 274 +#define PMC 275 +#define MEM 276 +#define FLAG 277 +#define SP 278 +#define CY 279 +#define RB0 280 +#define RB1 281 +#define RB2 282 +#define RB3 283 +#define EXPR 284 +#define UNKNOWN_OPCODE 285 +#define IS_OPCODE 286 +#define DOT_S 287 +#define DOT_B 288 +#define DOT_W 289 +#define DOT_L 290 +#define DOT_A 291 +#define DOT_UB 292 +#define DOT_UW 293 +#define ADD 294 +#define ADDC 295 +#define ADDW 296 +#define AND_ 297 +#define AND1 298 +#define BF 299 +#define BH 300 +#define BNC 301 +#define BNH 302 +#define BNZ 303 +#define BR 304 +#define BRK 305 +#define BRK1 306 +#define BT 307 +#define BTCLR 308 +#define BZ 309 +#define CALL 310 +#define CALLT 311 +#define CLR1 312 +#define CLRB 313 +#define CLRW 314 +#define CMP 315 +#define CMP0 316 +#define CMPS 317 +#define CMPW 318 +#define DEC 319 +#define DECW 320 +#define DI 321 +#define DIVHU 322 +#define DIVWU 323 +#define EI 324 +#define HALT 325 +#define INC 326 +#define INCW 327 +#define MACH 328 +#define MACHU 329 +#define MOV 330 +#define MOV1 331 +#define MOVS 332 +#define MOVW 333 +#define MULH 334 +#define MULHU 335 +#define MULU 336 +#define NOP 337 +#define NOT1 338 +#define ONEB 339 +#define ONEW 340 +#define OR 341 +#define OR1 342 +#define POP 343 +#define PUSH 344 +#define RET 345 +#define RETI 346 +#define RETB 347 +#define ROL 348 +#define ROLC 349 +#define ROLWC 350 +#define ROR 351 +#define RORC 352 +#define SAR 353 +#define SARW 354 +#define SEL 355 +#define SET1 356 +#define SHL 357 +#define SHLW 358 +#define SHR 359 +#define SHRW 360 +#define SKC 361 +#define SKH 362 +#define SKNC 363 +#define SKNH 364 +#define SKNZ 365 +#define SKZ 366 +#define STOP 367 +#define SUB 368 +#define SUBC 369 +#define SUBW 370 +#define XCH 371 +#define XCHW 372 +#define XOR 373 +#define XOR1 374 + + + + +/* Copy the first part of user declarations. */ +#line 20 "rl78-parse.y" + + +#include "as.h" +#include "safe-ctype.h" +#include "rl78-defs.h" + +static int rl78_lex (void); + +/* Ok, here are the rules for using these macros... + + B*() is used to specify the base opcode bytes. Fields to be filled + in later, leave zero. Call this first. + + F() and FE() are used to fill in fields within the base opcode bytes. You MUST + call B*() before any F() or FE(). + + [UN]*O*(), PC*() appends operands to the end of the opcode. You + must call P() and B*() before any of these, so that the fixups + have the right byte location. + O = signed, UO = unsigned, NO = negated, PC = pcrel + + IMM() adds an immediate and fills in the field for it. + NIMM() same, but negates the immediate. + NBIMM() same, but negates the immediate, for sbb. + DSP() adds a displacement, and fills in the field for it. + + Note that order is significant for the O, IMM, and DSP macros, as + they append their data to the operand buffer in the order that you + call them. + + Use "disp" for displacements whenever possible; this handles the + "0" case properly. */ + +#define B1(b1) rl78_base1 (b1) +#define B2(b1, b2) rl78_base2 (b1, b2) +#define B3(b1, b2, b3) rl78_base3 (b1, b2, b3) +#define B4(b1, b2, b3, b4) rl78_base4 (b1, b2, b3, b4) + +/* POS is bits from the MSB of the first byte to the LSB of the last byte. */ +#define F(val,pos,sz) rl78_field (val, pos, sz) +#define FE(exp,pos,sz) rl78_field (exp_val (exp), pos, sz); + +#define O1(v) rl78_op (v, 1, RL78REL_DATA) +#define O2(v) rl78_op (v, 2, RL78REL_DATA) +#define O3(v) rl78_op (v, 3, RL78REL_DATA) +#define O4(v) rl78_op (v, 4, RL78REL_DATA) + +#define PC1(v) rl78_op (v, 1, RL78REL_PCREL) +#define PC2(v) rl78_op (v, 2, RL78REL_PCREL) +#define PC3(v) rl78_op (v, 3, RL78REL_PCREL) + +#define IMM(v,pos) F (immediate (v, RL78REL_SIGNED, pos), pos, 2); \ + if (v.X_op != O_constant && v.X_op != O_big) rl78_linkrelax_imm (pos) +#define NIMM(v,pos) F (immediate (v, RL78REL_NEGATIVE, pos), pos, 2) +#define NBIMM(v,pos) F (immediate (v, RL78REL_NEGATIVE_BORROW, pos), pos, 2) +#define DSP(v,pos,msz) if (!v.X_md) rl78_relax (RL78_RELAX_DISP, pos); \ + else rl78_linkrelax_dsp (pos); \ + F (displacement (v, msz), pos, 2) + +#define id24(a,b2,b3) B3 (0xfb+a, b2, b3) + +static int expr_is_sfr (expressionS); +static int expr_is_saddr (expressionS); +static int expr_is_word_aligned (expressionS); +static int exp_val (expressionS exp); + +static int need_flag = 0; +static int rl78_in_brackets = 0; +static int rl78_last_token = 0; +static char * rl78_init_start; +static char * rl78_last_exp_start = 0; +static int rl78_bit_insn = 0; + +#define YYDEBUG 1 +#define YYERROR_VERBOSE 1 + +#define NOT_SADDR rl78_error ("Expression not 0xFFE20 to 0xFFF1F") +#define SA(e) if (!expr_is_saddr (e)) NOT_SADDR; + +#define NOT_SFR rl78_error ("Expression not 0xFFF00 to 0xFFFFF") +#define SFR(e) if (!expr_is_sfr (e)) NOT_SFR; + +#define NOT_SFR_OR_SADDR rl78_error ("Expression not 0xFFE20 to 0xFFFFF") + +#define NOT_ES if (rl78_has_prefix()) rl78_error ("ES: prefix not allowed here"); + +#define WA(x) if (!expr_is_word_aligned (x)) rl78_error ("Expression not word-aligned"); + +static void check_expr_is_bit_index (expressionS); +#define Bit(e) check_expr_is_bit_index (e); + +/* Returns TRUE (non-zero) if the expression is a constant in the + given range. */ +static int check_expr_is_const (expressionS, int vmin, int vmax); + +/* Convert a "regb" value to a "reg_xbc" value. Error if other + registers are passed. Needed to avoid reduce-reduce conflicts. */ +static int +reg_xbc (int reg) +{ + switch (reg) + { + case 0: /* X */ + return 0x10; + case 3: /* B */ + return 0x20; + case 2: /* C */ + return 0x30; + default: + rl78_error ("Only X, B, or C allowed here"); + return 0; + } +} + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 138 "rl78-parse.y" +{ + int regno; + expressionS exp; +} +/* Line 193 of yacc.c. */ +#line 463 "rl78-parse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 476 "rl78-parse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 174 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 835 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 129 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 318 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 738 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 374 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 122, 2, 121, 127, 2, 2, 2, + 2, 2, 2, 125, 120, 2, 126, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 128, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 123, 2, 124, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 11, 12, 19, 24, 29, 34, + 35, 41, 48, 56, 66, 76, 86, 94, 100, 105, + 106, 112, 119, 129, 137, 143, 144, 152, 153, 161, + 162, 170, 171, 182, 186, 190, 194, 198, 202, 206, + 214, 222, 230, 241, 244, 248, 253, 257, 262, 264, + 266, 269, 274, 278, 283, 288, 291, 296, 301, 306, + 313, 321, 324, 327, 330, 333, 334, 338, 343, 346, + 349, 352, 355, 358, 361, 362, 366, 371, 381, 384, + 385, 389, 393, 399, 406, 415, 418, 419, 423, 428, + 436, 438, 440, 442, 444, 447, 449, 451, 453, 455, + 457, 463, 469, 475, 476, 484, 491, 500, 505, 510, + 511, 518, 525, 531, 539, 546, 547, 554, 555, 556, + 564, 569, 574, 575, 576, 584, 592, 600, 611, 621, + 631, 639, 647, 658, 668, 678, 688, 698, 708, 718, + 728, 737, 746, 756, 765, 774, 784, 793, 802, 810, + 819, 827, 828, 840, 841, 851, 852, 863, 864, 873, + 874, 885, 886, 895, 902, 909, 916, 926, 933, 940, + 947, 957, 967, 973, 979, 980, 988, 989, 996, 997, + 1004, 1009, 1014, 1021, 1028, 1036, 1044, 1054, 1064, 1072, + 1080, 1090, 1100, 1109, 1118, 1127, 1136, 1145, 1153, 1162, + 1170, 1171, 1182, 1183, 1192, 1193, 1204, 1205, 1214, 1215, + 1221, 1228, 1234, 1239, 1244, 1249, 1251, 1254, 1257, 1260, + 1263, 1266, 1268, 1270, 1272, 1277, 1282, 1287, 1292, 1297, + 1302, 1307, 1312, 1315, 1318, 1321, 1324, 1329, 1334, 1339, + 1344, 1349, 1354, 1359, 1361, 1363, 1365, 1367, 1369, 1371, + 1373, 1378, 1385, 1393, 1403, 1411, 1421, 1431, 1441, 1446, + 1451, 1452, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, + 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, + 1491, 1493, 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, + 1511, 1513, 1515, 1517, 1519, 1521, 1523, 1525, 1527, 1529, + 1531, 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, 1549, + 1551, 1553, 1555, 1557, 1559, 1561, 1563, 1565, 1567 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 130, 0, -1, 30, -1, 169, 3, 120, 121, 29, + -1, -1, 169, 29, 131, 120, 121, 29, -1, 169, + 3, 120, 3, -1, 169, 3, 120, 165, -1, 169, + 165, 120, 3, -1, -1, 169, 3, 120, 29, 132, + -1, 169, 3, 120, 163, 122, 29, -1, 169, 3, + 120, 163, 123, 14, 124, -1, 169, 3, 120, 163, + 123, 14, 125, 29, 124, -1, 169, 3, 120, 163, + 123, 14, 125, 5, 124, -1, 169, 3, 120, 163, + 123, 14, 125, 6, 124, -1, 169, 163, 122, 29, + 120, 121, 29, -1, 170, 11, 120, 121, 29, -1, + 170, 11, 120, 166, -1, -1, 170, 11, 120, 29, + 133, -1, 170, 11, 120, 163, 122, 29, -1, 170, + 11, 120, 163, 123, 14, 125, 29, 124, -1, 170, + 11, 120, 163, 123, 14, 124, -1, 170, 23, 120, + 121, 29, -1, -1, 171, 24, 120, 168, 126, 29, + 134, -1, -1, 171, 24, 120, 29, 126, 29, 135, + -1, -1, 171, 24, 120, 3, 126, 29, 136, -1, + -1, 171, 24, 120, 163, 123, 14, 124, 126, 29, + 137, -1, 12, 127, 29, -1, 46, 127, 29, -1, + 54, 127, 29, -1, 48, 127, 29, -1, 45, 127, + 29, -1, 47, 127, 29, -1, 172, 168, 126, 29, + 120, 127, 29, -1, 172, 29, 126, 29, 120, 127, + 29, -1, 172, 3, 126, 29, 120, 127, 29, -1, + 172, 163, 123, 14, 124, 126, 29, 120, 127, 29, + -1, 49, 11, -1, 49, 127, 29, -1, 49, 127, + 122, 29, -1, 49, 122, 29, -1, 49, 122, 122, + 29, -1, 50, -1, 51, -1, 55, 166, -1, 55, + 127, 122, 29, -1, 55, 122, 29, -1, 55, 122, + 122, 29, -1, 56, 123, 29, 124, -1, 173, 24, + -1, 173, 168, 126, 29, -1, 173, 29, 126, 29, + -1, 173, 3, 126, 29, -1, 173, 163, 122, 29, + 126, 29, -1, 173, 163, 123, 14, 124, 126, 29, + -1, 174, 3, -1, 174, 4, -1, 174, 5, -1, + 174, 6, -1, -1, 174, 29, 138, -1, 174, 163, + 122, 29, -1, 175, 11, -1, 175, 12, -1, 61, + 3, -1, 61, 4, -1, 61, 5, -1, 61, 6, + -1, -1, 61, 29, 139, -1, 61, 163, 122, 29, + -1, 62, 4, 120, 163, 123, 14, 125, 29, 124, + -1, 176, 164, -1, -1, 176, 29, 140, -1, 176, + 122, 29, -1, 176, 19, 128, 122, 29, -1, 176, + 123, 14, 125, 29, 124, -1, 176, 19, 128, 123, + 14, 125, 29, 124, -1, 177, 166, -1, -1, 177, + 29, 141, -1, 177, 163, 122, 29, -1, 177, 163, + 123, 14, 125, 29, 124, -1, 66, -1, 69, -1, + 80, -1, 79, -1, 81, 4, -1, 67, -1, 68, + -1, 74, -1, 73, -1, 70, -1, 75, 3, 120, + 121, 29, -1, 75, 165, 120, 121, 29, -1, 75, + 168, 120, 121, 29, -1, -1, 75, 163, 29, 120, + 121, 29, 142, -1, 75, 122, 29, 120, 121, 29, + -1, 75, 19, 128, 122, 29, 120, 121, 29, -1, + 75, 165, 120, 3, -1, 75, 3, 120, 165, -1, + -1, 75, 163, 29, 120, 3, 143, -1, 75, 3, + 120, 163, 122, 29, -1, 75, 122, 29, 120, 3, + -1, 75, 19, 128, 122, 29, 120, 3, -1, 75, + 165, 120, 163, 122, 29, -1, -1, 75, 3, 120, + 163, 29, 144, -1, -1, -1, 75, 165, 120, 163, + 29, 145, 146, -1, 75, 3, 120, 168, -1, 75, + 168, 120, 164, -1, -1, -1, 75, 168, 120, 163, + 29, 147, 148, -1, 75, 3, 120, 163, 123, 13, + 124, -1, 75, 163, 123, 13, 124, 120, 3, -1, + 75, 163, 123, 13, 125, 29, 124, 120, 121, 29, + -1, 75, 3, 120, 163, 123, 13, 125, 29, 124, + -1, 75, 163, 123, 13, 125, 29, 124, 120, 3, + -1, 75, 3, 120, 163, 123, 14, 124, -1, 75, + 163, 123, 14, 124, 120, 3, -1, 75, 163, 123, + 14, 125, 29, 124, 120, 121, 29, -1, 75, 3, + 120, 163, 123, 14, 125, 29, 124, -1, 75, 163, + 123, 14, 125, 29, 124, 120, 3, -1, 75, 3, + 120, 163, 123, 14, 125, 5, 124, -1, 75, 163, + 123, 14, 125, 5, 124, 120, 3, -1, 75, 3, + 120, 163, 123, 14, 125, 6, 124, -1, 75, 163, + 123, 14, 125, 6, 124, 120, 3, -1, 75, 163, + 29, 123, 5, 124, 120, 121, 29, -1, 75, 3, + 120, 163, 29, 123, 5, 124, -1, 75, 163, 29, + 123, 5, 124, 120, 3, -1, 75, 163, 29, 123, + 6, 124, 120, 121, 29, -1, 75, 3, 120, 163, + 29, 123, 6, 124, -1, 75, 163, 29, 123, 6, + 124, 120, 3, -1, 75, 163, 29, 123, 12, 124, + 120, 121, 29, -1, 75, 163, 123, 12, 124, 120, + 121, 29, -1, 75, 3, 120, 163, 29, 123, 12, + 124, -1, 75, 3, 120, 163, 123, 12, 124, -1, + 75, 163, 29, 123, 12, 124, 120, 3, -1, 75, + 163, 123, 12, 124, 120, 3, -1, -1, 75, 163, + 123, 23, 125, 29, 124, 120, 121, 29, 149, -1, + -1, 75, 163, 123, 23, 124, 120, 121, 29, 150, + -1, -1, 75, 3, 120, 163, 123, 23, 125, 29, + 124, 151, -1, -1, 75, 3, 120, 163, 123, 23, + 124, 152, -1, -1, 75, 163, 123, 23, 125, 29, + 124, 120, 3, 153, -1, -1, 75, 163, 123, 23, + 124, 120, 3, 154, -1, 178, 24, 120, 29, 126, + 29, -1, 178, 24, 120, 3, 126, 29, -1, 178, + 24, 120, 168, 126, 29, -1, 178, 24, 120, 163, + 123, 14, 124, 126, 29, -1, 178, 29, 126, 29, + 120, 24, -1, 178, 3, 126, 29, 120, 24, -1, + 178, 168, 126, 29, 120, 24, -1, 178, 163, 123, + 14, 124, 126, 29, 120, 24, -1, 77, 163, 123, + 14, 125, 29, 124, 120, 4, -1, 78, 11, 120, + 121, 29, -1, 78, 167, 120, 121, 29, -1, -1, + 78, 163, 29, 120, 121, 29, 155, -1, -1, 78, + 11, 120, 163, 29, 156, -1, -1, 78, 163, 29, + 120, 11, 157, -1, 78, 11, 120, 167, -1, 78, + 167, 120, 11, -1, 78, 11, 120, 163, 122, 29, + -1, 78, 163, 122, 29, 120, 11, -1, 78, 11, + 120, 163, 123, 13, 124, -1, 78, 163, 123, 13, + 124, 120, 11, -1, 78, 11, 120, 163, 123, 13, + 125, 29, 124, -1, 78, 163, 123, 13, 125, 29, + 124, 120, 11, -1, 78, 11, 120, 163, 123, 14, + 124, -1, 78, 163, 123, 14, 124, 120, 11, -1, + 78, 11, 120, 163, 123, 14, 125, 29, 124, -1, + 78, 163, 123, 14, 125, 29, 124, 120, 11, -1, + 78, 11, 120, 163, 29, 123, 5, 124, -1, 78, + 163, 29, 123, 5, 124, 120, 11, -1, 78, 11, + 120, 163, 29, 123, 6, 124, -1, 78, 163, 29, + 123, 6, 124, 120, 11, -1, 78, 11, 120, 163, + 29, 123, 12, 124, -1, 78, 11, 120, 163, 123, + 12, 124, -1, 78, 163, 29, 123, 12, 124, 120, + 11, -1, 78, 163, 123, 12, 124, 120, 11, -1, + -1, 78, 11, 120, 163, 123, 23, 125, 29, 124, + 158, -1, -1, 78, 11, 120, 163, 123, 23, 124, + 159, -1, -1, 78, 163, 123, 23, 125, 29, 124, + 120, 11, 160, -1, -1, 78, 163, 123, 23, 124, + 120, 11, 161, -1, -1, 78, 167, 120, 29, 162, + -1, 78, 167, 120, 163, 122, 29, -1, 78, 23, + 120, 121, 29, -1, 78, 23, 120, 11, -1, 78, + 11, 120, 23, -1, 78, 167, 120, 23, -1, 82, + -1, 83, 24, -1, 88, 166, -1, 88, 17, -1, + 89, 166, -1, 89, 17, -1, 90, -1, 91, -1, + 92, -1, 93, 3, 120, 29, -1, 94, 3, 120, + 29, -1, 95, 11, 120, 29, -1, 95, 12, 120, + 29, -1, 96, 3, 120, 29, -1, 97, 3, 120, + 29, -1, 98, 3, 120, 29, -1, 99, 11, 120, + 29, -1, 100, 25, -1, 100, 26, -1, 100, 27, + -1, 100, 28, -1, 102, 3, 120, 29, -1, 102, + 5, 120, 29, -1, 102, 6, 120, 29, -1, 103, + 11, 120, 29, -1, 103, 12, 120, 29, -1, 104, + 3, 120, 29, -1, 105, 11, 120, 29, -1, 106, + -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, + -1, 112, -1, 116, 3, 120, 165, -1, 116, 3, + 120, 163, 122, 29, -1, 116, 3, 120, 163, 123, + 13, 124, -1, 116, 3, 120, 163, 123, 13, 125, + 29, 124, -1, 116, 3, 120, 163, 123, 14, 124, + -1, 116, 3, 120, 163, 123, 14, 125, 29, 124, + -1, 116, 3, 120, 163, 123, 14, 125, 5, 124, + -1, 116, 3, 120, 163, 123, 14, 125, 6, 124, + -1, 116, 3, 120, 29, -1, 117, 11, 120, 167, + -1, -1, 19, 128, -1, 4, -1, 3, -1, 6, + -1, 5, -1, 8, -1, 7, -1, 10, -1, 9, + -1, 4, -1, 6, -1, 5, -1, 8, -1, 7, + -1, 10, -1, 9, -1, 11, -1, 12, -1, 13, + -1, 14, -1, 12, -1, 13, -1, 14, -1, 15, + -1, 16, -1, 17, -1, 18, -1, 19, -1, 20, + -1, 21, -1, 39, -1, 40, -1, 113, -1, 114, + -1, 60, -1, 42, -1, 86, -1, 118, -1, 41, + -1, 115, -1, 63, -1, 43, -1, 87, -1, 119, + -1, 52, -1, 44, -1, 53, -1, 101, -1, 57, + -1, 84, -1, 58, -1, 85, -1, 59, -1, 71, + -1, 64, -1, 72, -1, 65, -1, 76, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 181, 181, 202, 205, 205, 208, 211, 214, 217, + 217, 220, 223, 226, 229, 232, 237, 246, 249, 252, + 252, 255, 258, 261, 264, 272, 272, 275, 275, 284, + 284, 287, 287, 292, 295, 298, 301, 304, 307, 312, + 315, 324, 327, 332, 335, 338, 341, 344, 349, 352, + 357, 360, 363, 366, 369, 390, 393, 396, 405, 408, + 411, 416, 418, 420, 422, 425, 425, 428, 433, 435, + 440, 443, 446, 449, 452, 452, 455, 460, 465, 468, + 468, 470, 472, 474, 476, 481, 484, 484, 487, 490, + 495, 498, 503, 506, 509, 512, 520, 523, 526, 531, + 539, 541, 544, 551, 551, 560, 563, 566, 569, 572, + 572, 581, 584, 587, 590, 593, 593, 602, 602, 602, + 605, 608, 615, 615, 615, 622, 625, 628, 631, 634, + 637, 640, 643, 646, 649, 652, 655, 658, 661, 664, + 667, 670, 673, 676, 679, 682, 685, 688, 691, 694, + 697, 700, 700, 703, 703, 706, 706, 709, 709, 712, + 712, 715, 715, 720, 729, 732, 735, 738, 747, 750, + 753, 758, 763, 766, 769, 769, 778, 778, 787, 787, + 796, 799, 802, 805, 808, 811, 814, 817, 820, 823, + 826, 829, 832, 835, 838, 841, 844, 847, 850, 853, + 856, 856, 859, 859, 862, 862, 865, 865, 868, 868, + 871, 874, 877, 880, 883, 888, 893, 898, 901, 904, + 907, 912, 915, 918, 923, 928, 933, 938, 943, 948, + 955, 960, 967, 970, 973, 976, 981, 986, 991, 996, + 1001, 1008, 1013, 1020, 1023, 1026, 1029, 1032, 1035, 1040, + 1045, 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1084, + 1093, 1094, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, + 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1117, 1118, 1119, + 1120, 1123, 1124, 1125, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1150, + 1151, 1152, 1155, 1156, 1157, 1160, 1161, 1162, 1165, 1166, + 1169, 1170, 1173, 1174, 1177, 1178, 1181, 1182, 1185 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "A", "X", "B", "C", "D", "E", "H", "L", + "AX", "BC", "DE", "HL", "SPL", "SPH", "PSW", "CS", "ES", "PMC", "MEM", + "FLAG", "SP", "CY", "RB0", "RB1", "RB2", "RB3", "EXPR", "UNKNOWN_OPCODE", + "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L", "DOT_A", "DOT_UB", + "DOT_UW", "ADD", "ADDC", "ADDW", "AND_", "AND1", "BF", "BH", "BNC", + "BNH", "BNZ", "BR", "BRK", "BRK1", "BT", "BTCLR", "BZ", "CALL", "CALLT", + "CLR1", "CLRB", "CLRW", "CMP", "CMP0", "CMPS", "CMPW", "DEC", "DECW", + "DI", "DIVHU", "DIVWU", "EI", "HALT", "INC", "INCW", "MACH", "MACHU", + "MOV", "MOV1", "MOVS", "MOVW", "MULH", "MULHU", "MULU", "NOP", "NOT1", + "ONEB", "ONEW", "OR", "OR1", "POP", "PUSH", "RET", "RETI", "RETB", "ROL", + "ROLC", "ROLWC", "ROR", "RORC", "SAR", "SARW", "SEL", "SET1", "SHL", + "SHLW", "SHR", "SHRW", "SKC", "SKH", "SKNC", "SKNH", "SKNZ", "SKZ", + "STOP", "SUB", "SUBC", "SUBW", "XCH", "XCHW", "XOR", "XOR1", "','", + "'#'", "'!'", "'['", "']'", "'+'", "'.'", "'$'", "':'", "$accept", + "statement", "@1", "@2", "@3", "@4", "@5", "@6", "@7", "@8", "@9", "@10", + "@11", "@12", "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", + "@21", "@22", "@23", "@24", "@25", "@26", "@27", "@28", "@29", "@30", + "@31", "@32", "opt_es", "regb", "regb_na", "regw", "regw_na", "sfr", + "addsub", "addsubw", "andor1", "bt_bf", "setclr1", "oneclrb", "oneclrw", + "incdec", "incdecw", "mov1", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 44, 35, 33, 91, 93, 43, 46, 36, 58 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 129, 130, 130, 131, 130, 130, 130, 130, 132, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 133, + 130, 130, 130, 130, 130, 134, 130, 135, 130, 136, + 130, 137, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 138, 130, 130, 130, 130, + 130, 130, 130, 130, 139, 130, 130, 130, 130, 140, + 130, 130, 130, 130, 130, 130, 141, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 142, 130, 130, 130, 130, 130, 143, + 130, 130, 130, 130, 130, 144, 130, 145, 146, 130, + 130, 130, 147, 148, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 149, 130, 150, 130, 151, 130, 152, 130, 153, + 130, 154, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 155, 130, 156, 130, 157, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 158, 130, 159, 130, 160, 130, 161, 130, 162, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, + 165, 165, 165, 165, 165, 165, 165, 166, 166, 166, + 166, 167, 167, 167, 168, 168, 168, 168, 168, 168, + 168, 169, 169, 169, 169, 169, 169, 169, 169, 170, + 170, 170, 171, 171, 171, 172, 172, 172, 173, 173, + 174, 174, 175, 175, 176, 176, 177, 177, 178 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 5, 0, 6, 4, 4, 4, 0, + 5, 6, 7, 9, 9, 9, 7, 5, 4, 0, + 5, 6, 9, 7, 5, 0, 7, 0, 7, 0, + 7, 0, 10, 3, 3, 3, 3, 3, 3, 7, + 7, 7, 10, 2, 3, 4, 3, 4, 1, 1, + 2, 4, 3, 4, 4, 2, 4, 4, 4, 6, + 7, 2, 2, 2, 2, 0, 3, 4, 2, 2, + 2, 2, 2, 2, 0, 3, 4, 9, 2, 0, + 3, 3, 5, 6, 8, 2, 0, 3, 4, 7, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 5, 5, 5, 0, 7, 6, 8, 4, 4, 0, + 6, 6, 5, 7, 6, 0, 6, 0, 0, 7, + 4, 4, 0, 0, 7, 7, 7, 10, 9, 9, + 7, 7, 10, 9, 9, 9, 9, 9, 9, 9, + 8, 8, 9, 8, 8, 9, 8, 8, 7, 8, + 7, 0, 11, 0, 9, 0, 10, 0, 8, 0, + 10, 0, 8, 6, 6, 6, 9, 6, 6, 6, + 9, 9, 5, 5, 0, 7, 0, 6, 0, 6, + 4, 4, 6, 6, 7, 7, 9, 9, 7, 7, + 9, 9, 8, 8, 8, 8, 8, 7, 8, 7, + 0, 10, 0, 8, 0, 10, 0, 8, 0, 5, + 6, 5, 4, 4, 4, 1, 2, 2, 2, 2, + 2, 1, 1, 1, 4, 4, 4, 4, 4, 4, + 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, + 4, 6, 7, 9, 7, 9, 9, 9, 4, 4, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 0, 2, 291, 292, 299, 296, 302, 306, 0, + 0, 0, 0, 0, 48, 49, 305, 307, 0, 0, + 0, 309, 311, 313, 295, 260, 0, 301, 315, 317, + 90, 95, 96, 91, 99, 314, 316, 98, 97, 260, + 318, 260, 260, 93, 92, 0, 215, 0, 310, 312, + 297, 303, 0, 0, 221, 222, 223, 0, 0, 0, + 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, + 243, 244, 245, 246, 247, 248, 249, 293, 294, 300, + 0, 0, 298, 304, 0, 260, 0, 0, 260, 260, + 260, 0, 0, 260, 260, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 277, 278, 279, 280, 0, 0, + 50, 0, 70, 71, 72, 73, 0, 74, 0, 0, + 0, 270, 272, 271, 274, 273, 276, 275, 284, 285, + 286, 287, 288, 289, 290, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 0, 0, 0, 94, 216, 218, + 217, 220, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 232, 233, 234, 235, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, + 0, 0, 0, 288, 0, 0, 0, 0, 55, 0, + 0, 0, 61, 62, 63, 64, 65, 0, 68, 69, + 263, 262, 265, 264, 267, 266, 269, 268, 0, 79, + 0, 0, 78, 86, 0, 85, 0, 0, 0, 0, + 0, 33, 37, 34, 38, 36, 46, 0, 44, 0, + 35, 52, 0, 0, 0, 261, 75, 0, 260, 260, + 261, 0, 0, 0, 260, 260, 0, 260, 0, 0, + 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 260, 0, + 260, 0, 0, 0, 260, 0, 260, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 66, 0, 0, 80, + 81, 0, 87, 0, 0, 0, 260, 0, 0, 0, + 47, 45, 53, 51, 54, 76, 0, 0, 0, 108, + 120, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 0, 0, 0, 0, 121, 0, 213, 0, 0, 180, + 212, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 214, 208, 0, 0, 224, 225, 226, 227, 228, 229, + 230, 231, 236, 237, 238, 239, 240, 241, 242, 258, + 0, 250, 259, 6, 9, 0, 0, 7, 0, 0, + 8, 19, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 57, 0, 0, 56, 67, + 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 115, 0, 0, 0, 112, + 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 117, 0, 102, 122, 0, 172, + 176, 0, 0, 211, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 209, 173, 0, + 0, 0, 10, 3, 0, 0, 0, 0, 20, 17, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 111, 0, + 0, 0, 0, 0, 105, 110, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 114, 123, 0, 0, 177, 182, 0, 0, 0, 0, + 179, 174, 0, 0, 0, 183, 0, 0, 0, 0, + 0, 0, 0, 210, 251, 0, 0, 11, 0, 5, + 0, 21, 0, 29, 27, 0, 25, 0, 0, 0, + 0, 59, 0, 0, 83, 0, 168, 164, 163, 0, + 165, 167, 0, 169, 0, 0, 0, 0, 148, 125, + 0, 130, 0, 157, 0, 113, 0, 104, 0, 0, + 0, 150, 0, 126, 0, 131, 0, 0, 0, 161, + 0, 0, 119, 124, 0, 0, 0, 0, 197, 184, + 0, 188, 0, 202, 0, 175, 0, 0, 0, 199, + 185, 0, 189, 0, 206, 0, 252, 0, 254, 0, + 12, 0, 16, 23, 0, 30, 28, 0, 26, 41, + 40, 0, 39, 60, 0, 89, 0, 0, 0, 140, + 143, 147, 0, 0, 0, 0, 158, 0, 106, 141, + 0, 144, 0, 149, 0, 146, 0, 0, 0, 0, + 162, 153, 0, 0, 192, 194, 196, 0, 0, 203, + 0, 193, 195, 198, 0, 0, 207, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 77, 128, 135, 137, 133, 155, 139, 142, 145, + 129, 0, 136, 138, 134, 0, 154, 159, 0, 171, + 186, 190, 200, 187, 191, 204, 253, 256, 257, 255, + 14, 15, 13, 22, 31, 0, 166, 170, 156, 127, + 132, 160, 151, 201, 205, 32, 42, 152 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 84, 271, 452, 458, 628, 626, 625, 735, 286, + 236, 289, 292, 577, 495, 487, 509, 592, 511, 593, + 737, 706, 728, 646, 731, 660, 605, 514, 520, 733, + 669, 734, 676, 447, 118, 212, 137, 110, 146, 138, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -206 +static const yytype_int16 yypact[] = +{ + 220, -44, -206, -206, -206, -206, -206, -206, -206, -34, + -24, 17, 62, 41, -206, -206, -206, -206, 64, 93, + 75, -206, -206, -206, -206, 161, 203, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, -206, 53, + -206, 183, 228, -206, -206, 224, -206, 206, -206, -206, + -206, -206, 403, 422, -206, -206, -206, 235, 251, 97, + 253, 345, 356, 225, 336, -206, 38, 150, 382, 247, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + 401, 383, -206, -206, 246, 337, 149, 389, 390, 352, + 346, 167, 10, 198, 371, 394, 408, 413, 429, 445, + -206, 24, 63, 466, -206, -206, -206, -206, 81, 296, + -206, 467, -206, -206, -206, -206, 304, -206, 354, 379, + 380, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, 374, -206, -206, 472, 11, 384, 385, 386, + 387, -206, -206, -206, 388, 36, 392, -206, -206, -206, + -206, -206, -206, 393, 395, 396, 397, 398, 399, 400, + 402, -206, -206, -206, -206, 404, 405, 406, 407, 410, + 411, 412, 414, 415, -206, 416, -206, 381, 417, 418, + 419, 420, 421, 304, 423, 425, 424, 426, -206, 427, + 2, 430, -206, -206, -206, -206, -206, 432, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, 378, -206, + 481, 497, -206, -206, 121, -206, 431, 435, 433, 437, + 436, -206, -206, -206, -206, -206, -206, 485, -206, 492, + -206, -206, 494, 499, 434, -206, -206, 500, 183, 80, + 439, 443, 96, 169, 29, 72, 519, 124, 55, 98, + 512, 211, 112, 513, 514, 515, 516, 517, 522, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 446, 157, + 18, 453, 545, 572, 101, 456, 409, 547, 549, 565, + 551, 552, 553, 554, 570, 556, -206, 557, 130, -206, + -206, 462, -206, 559, 575, 561, 428, 562, 578, 564, + -206, -206, -206, -206, -206, -206, 471, 566, 65, -206, + -206, 567, 5, 6, 243, 473, 233, 255, 258, -206, + 569, 82, 571, 573, -206, 474, -206, 574, 73, -206, + -206, 576, 56, 348, 484, 477, 274, 277, 297, -206, + -206, -206, 577, 486, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + 318, -206, -206, -206, -206, 580, 344, -206, 489, 487, + -206, -206, 582, 349, -206, 583, 488, 490, 495, 491, + 493, 501, 496, 502, -206, -206, 498, 503, -206, -206, + 586, 605, 594, -206, 504, 505, 506, 507, 508, 509, + 510, 518, 520, 612, -206, 511, 599, 447, 521, -206, + 607, -206, 608, 523, 524, 525, 526, 530, 609, 531, + 111, 532, 610, -206, -206, 614, -206, -206, 615, -206, + 533, 616, 450, -206, -206, 624, 534, 544, 546, 643, + 555, 558, 626, 560, 628, 563, 630, -206, -206, 631, + 632, 455, -206, -206, 633, 649, 635, 548, -206, -206, + 636, 652, -206, 638, 642, 658, 644, 550, 568, 579, + 581, 645, 584, -206, 587, 585, 647, 655, 653, 656, + 667, 657, 660, 588, 663, 590, 372, -206, -206, 589, + 353, 355, 357, 7, -206, -206, -206, 591, 596, 597, + 8, 685, 595, 686, 598, 600, 601, 27, 602, -206, + -206, -206, 603, 391, -206, -206, 604, 359, 361, 363, + -206, -206, 611, 613, 617, -206, 679, 680, 606, 681, + 618, 682, 619, -206, -206, 365, 367, -206, 369, -206, + 665, -206, 373, -206, -206, 620, -206, 668, 669, 670, + 671, -206, 672, 673, -206, 621, -206, -206, -206, 622, + -206, -206, 674, -206, 675, 623, 625, 627, -206, -206, + 677, -206, 113, -206, 678, -206, 689, -206, 28, 30, + 31, -206, 691, -206, 634, -206, 637, 639, 640, -206, + 692, 641, -206, -206, 646, 629, 648, 650, -206, -206, + 694, -206, 700, -206, 703, -206, 723, 724, 725, -206, + -206, 651, -206, 659, -206, 661, -206, 709, -206, 116, + -206, 168, -206, -206, 710, -206, -206, 654, -206, -206, + -206, 662, -206, -206, 664, -206, 666, 676, 683, -206, + -206, -206, 684, 687, 688, 690, -206, 693, -206, -206, + 711, -206, 712, -206, 719, -206, 32, 747, 749, 33, + -206, -206, 35, 751, -206, -206, -206, 695, 696, -206, + 697, -206, -206, -206, 745, 752, -206, 753, 698, 699, + 701, 702, 704, 705, 706, 707, 729, 708, -206, 733, + 741, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, 738, -206, -206, -206, 739, -206, -206, 740, -206, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, 744, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -39, 451, -84, -48, -205, -82, + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 136, 178, 139, 145, 150, 152, 186, 191, 409, 411, + 575, 581, 220, 200, 201, 202, 203, 204, 205, 206, + 207, 363, 121, 122, 123, 124, 125, 126, 127, 208, + 589, 649, 319, 651, 653, 700, 704, 116, 707, 209, + 242, 165, 329, 166, 167, 215, 177, 364, 116, 185, + 190, 197, 100, 226, 214, 219, 120, 121, 122, 123, + 124, 125, 126, 127, 362, 249, 330, 434, 128, 129, + 130, 131, 132, 133, 134, 200, 201, 202, 203, 204, + 205, 206, 207, 95, 121, 122, 123, 124, 125, 126, + 127, 116, 228, 96, 405, 128, 129, 130, 131, 183, + 133, 134, 430, 97, 104, 105, 106, 107, 155, 156, + 231, 424, 104, 105, 106, 107, 504, 505, 643, 644, + 116, 679, 680, 339, 283, 284, 410, 412, 576, 582, + 371, 116, 210, 211, 243, 340, 141, 142, 143, 365, + 506, 341, 645, 116, 98, 681, 227, 326, 590, 650, + 320, 652, 654, 701, 705, 309, 708, 310, 250, 251, + 179, 168, 169, 101, 112, 113, 114, 115, 102, 141, + 142, 143, 180, 682, 683, 135, 331, 435, 198, 199, + 116, 315, 316, 317, 361, 229, 367, 406, 407, 99, + 117, 103, 318, 322, 379, 431, 432, 684, 111, 306, + 308, 307, 116, 232, 425, 321, 323, 119, 328, 104, + 105, 106, 107, 343, 399, 108, 313, 116, 332, 314, + 109, 333, 372, 335, 336, 337, 374, 213, 147, 360, + 148, 366, 1, 342, 338, 373, 160, 378, 153, 140, + 141, 142, 143, 293, 294, 327, 174, 116, 413, 414, + 2, 144, 390, 391, 154, 415, 157, 398, 171, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 175, 121, 122, 123, 124, 125, 126, 127, 158, 192, + 193, 194, 195, 436, 437, 187, 116, 417, 418, 159, + 438, 161, 162, 163, 164, 116, 176, 128, 129, 130, + 131, 183, 133, 134, 216, 196, 188, 565, 566, 419, + 420, 189, 421, 422, 567, 170, 128, 129, 130, 131, + 183, 133, 134, 182, 173, 217, 595, 596, 441, 442, + 218, 443, 444, 597, 172, 128, 129, 130, 131, 183, + 133, 134, 376, 181, 104, 105, 106, 107, 233, 184, + 149, 445, 446, 221, 128, 129, 130, 131, 183, 133, + 134, 396, 235, 104, 105, 106, 107, 222, 377, 151, + 450, 451, 223, 128, 129, 130, 131, 183, 133, 134, + 121, 122, 123, 124, 125, 126, 127, 397, 224, 489, + 490, 491, 516, 517, 518, 116, 454, 455, 535, 536, + 492, 460, 461, 519, 225, 359, 237, 569, 570, 571, + 572, 573, 574, 599, 600, 601, 602, 603, 604, 616, + 617, 618, 619, 620, 621, 230, 234, 623, 624, 238, + 239, 241, 240, 272, 244, 245, 288, 247, 248, 246, + 290, 291, 252, 253, 300, 254, 255, 256, 257, 258, + 259, 301, 260, 302, 261, 262, 263, 264, 303, 305, + 265, 266, 267, 325, 268, 269, 270, 273, 274, 275, + 276, 334, 344, 345, 346, 347, 348, 277, 279, 278, + 280, 349, 281, 282, 287, 296, 285, 295, 304, 297, + 298, 311, 299, 312, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 368, 369, 370, 380, 375, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 392, 393, 394, + 395, 400, 401, 402, 403, 404, 408, 416, 423, 428, + 426, 440, 427, 429, 439, 433, 448, 457, 449, 453, + 456, 459, 462, 467, 463, 473, 464, 466, 465, 474, + 469, 468, 470, 475, 471, 477, 485, 472, 488, 476, + 482, 480, 478, 479, 486, 481, 494, 496, 502, 508, + 484, 493, 483, 510, 512, 515, 500, 497, 498, 499, + 501, 503, 507, 521, 525, 528, 513, 530, 522, 532, + 533, 534, 537, 538, 539, 541, 542, 543, 523, 540, + 524, 544, 545, 546, 551, 526, 555, 547, 527, 556, + 529, 559, 557, 531, 561, 558, 560, 563, 583, 585, + 609, 610, 612, 614, 622, 548, 324, 629, 630, 631, + 632, 633, 634, 637, 638, 549, 642, 647, 550, 554, + 552, 578, 553, 568, 562, 564, 579, 580, 648, 584, + 655, 661, 586, 667, 587, 588, 591, 594, 598, 668, + 611, 606, 670, 607, 671, 672, 673, 608, 678, 685, + 697, 698, 613, 615, 627, 635, 636, 639, 699, 640, + 702, 641, 703, 664, 656, 709, 713, 657, 724, 658, + 659, 662, 726, 714, 715, 727, 663, 729, 730, 732, + 0, 674, 665, 736, 666, 0, 0, 0, 0, 675, + 686, 677, 687, 0, 0, 0, 0, 0, 688, 0, + 0, 0, 689, 0, 0, 0, 690, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 691, 692, 0, + 0, 693, 694, 0, 695, 0, 0, 696, 0, 710, + 711, 712, 716, 717, 0, 718, 719, 0, 720, 721, + 722, 723, 0, 0, 0, 725 +}; + +static const yytype_int16 yycheck[] = +{ + 39, 85, 41, 42, 52, 53, 88, 89, 3, 3, + 3, 3, 94, 3, 4, 5, 6, 7, 8, 9, + 10, 3, 4, 5, 6, 7, 8, 9, 10, 19, + 3, 3, 3, 3, 3, 3, 3, 19, 3, 29, + 29, 3, 247, 5, 6, 93, 85, 29, 19, 88, + 89, 90, 11, 29, 93, 94, 3, 4, 5, 6, + 7, 8, 9, 10, 269, 29, 11, 11, 15, 16, + 17, 18, 19, 20, 21, 3, 4, 5, 6, 7, + 8, 9, 10, 127, 4, 5, 6, 7, 8, 9, + 10, 19, 29, 127, 29, 15, 16, 17, 18, 19, + 20, 21, 29, 127, 11, 12, 13, 14, 11, 12, + 29, 29, 11, 12, 13, 14, 5, 6, 5, 6, + 19, 5, 6, 11, 122, 123, 121, 121, 121, 121, + 29, 19, 122, 123, 123, 23, 12, 13, 14, 121, + 29, 29, 29, 19, 127, 29, 122, 23, 121, 121, + 121, 121, 121, 121, 121, 239, 121, 239, 122, 123, + 11, 11, 12, 122, 3, 4, 5, 6, 127, 12, + 13, 14, 23, 5, 6, 122, 121, 121, 11, 12, + 19, 12, 13, 14, 268, 122, 270, 122, 123, 127, + 29, 127, 23, 121, 276, 122, 123, 29, 123, 238, + 239, 121, 19, 122, 122, 244, 245, 4, 247, 11, + 12, 13, 14, 252, 296, 122, 120, 19, 120, 123, + 127, 123, 121, 12, 13, 14, 274, 29, 4, 268, + 24, 270, 12, 121, 23, 274, 11, 276, 3, 11, + 12, 13, 14, 122, 123, 121, 0, 19, 5, 6, + 30, 23, 122, 123, 3, 12, 3, 296, 11, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 3, 4, 5, 6, 7, 8, 9, 10, 3, 3, + 4, 5, 6, 5, 6, 3, 19, 124, 125, 3, + 12, 25, 26, 27, 28, 19, 29, 15, 16, 17, + 18, 19, 20, 21, 3, 29, 24, 5, 6, 124, + 125, 29, 124, 125, 12, 3, 15, 16, 17, 18, + 19, 20, 21, 3, 11, 24, 5, 6, 124, 125, + 29, 124, 125, 12, 3, 15, 16, 17, 18, 19, + 20, 21, 3, 24, 11, 12, 13, 14, 122, 29, + 17, 124, 125, 29, 15, 16, 17, 18, 19, 20, + 21, 3, 128, 11, 12, 13, 14, 29, 29, 17, + 122, 123, 29, 15, 16, 17, 18, 19, 20, 21, + 4, 5, 6, 7, 8, 9, 10, 29, 29, 12, + 13, 14, 12, 13, 14, 19, 122, 123, 13, 14, + 23, 122, 123, 23, 29, 29, 122, 124, 125, 124, + 125, 124, 125, 124, 125, 124, 125, 124, 125, 124, + 125, 124, 125, 124, 125, 29, 29, 124, 125, 120, + 120, 29, 128, 122, 120, 120, 128, 120, 120, 123, + 29, 14, 120, 120, 29, 120, 120, 120, 120, 120, + 120, 29, 120, 29, 120, 120, 120, 120, 29, 29, + 120, 120, 120, 14, 120, 120, 120, 120, 120, 120, + 120, 29, 29, 29, 29, 29, 29, 126, 123, 126, + 126, 29, 126, 126, 122, 120, 126, 126, 124, 126, + 123, 122, 126, 120, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 120, 29, 3, 29, 121, 29, 14, + 29, 29, 29, 29, 14, 29, 29, 125, 29, 14, + 29, 29, 14, 29, 123, 29, 29, 124, 29, 125, + 29, 124, 29, 29, 120, 29, 29, 120, 122, 29, + 121, 29, 29, 120, 126, 29, 126, 126, 123, 14, + 124, 120, 120, 29, 126, 120, 14, 124, 29, 125, + 120, 123, 126, 126, 123, 126, 29, 29, 29, 29, + 120, 120, 124, 29, 29, 29, 120, 124, 124, 124, + 120, 120, 120, 29, 11, 29, 123, 29, 124, 29, + 29, 29, 29, 14, 29, 29, 14, 29, 124, 121, + 124, 29, 14, 29, 29, 120, 29, 127, 120, 24, + 120, 14, 29, 120, 24, 29, 29, 24, 3, 3, + 11, 11, 11, 11, 29, 127, 245, 29, 29, 29, + 29, 29, 29, 29, 29, 126, 29, 29, 127, 124, + 126, 120, 125, 124, 126, 125, 120, 120, 29, 124, + 29, 29, 124, 29, 124, 124, 124, 124, 124, 29, + 124, 120, 29, 120, 11, 11, 11, 120, 29, 29, + 29, 29, 124, 124, 124, 124, 124, 124, 29, 124, + 3, 124, 3, 124, 120, 4, 11, 120, 29, 120, + 120, 120, 29, 11, 11, 24, 120, 29, 29, 29, + -1, 120, 124, 29, 124, -1, -1, -1, -1, 120, + 126, 120, 120, -1, -1, -1, -1, -1, 124, -1, + -1, -1, 126, -1, -1, -1, 120, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 124, -1, + -1, 124, 124, -1, 124, -1, -1, 124, -1, 124, + 124, 124, 124, 124, -1, 124, 124, -1, 124, 124, + 124, 124, -1, -1, -1, 127 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 12, 30, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 130, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 127, 127, 127, 127, 127, + 11, 122, 127, 127, 11, 12, 13, 14, 122, 127, + 166, 123, 3, 4, 5, 6, 19, 29, 163, 4, + 3, 4, 5, 6, 7, 8, 9, 10, 15, 16, + 17, 18, 19, 20, 21, 122, 163, 165, 168, 163, + 11, 12, 13, 14, 23, 163, 167, 4, 24, 17, + 166, 17, 166, 3, 3, 11, 12, 3, 3, 3, + 11, 25, 26, 27, 28, 3, 5, 6, 11, 12, + 3, 11, 3, 11, 0, 3, 29, 163, 165, 11, + 23, 24, 3, 19, 29, 163, 168, 3, 24, 29, + 163, 168, 3, 4, 5, 6, 29, 163, 11, 12, + 3, 4, 5, 6, 7, 8, 9, 10, 19, 29, + 122, 123, 164, 29, 163, 166, 3, 24, 29, 163, + 168, 29, 29, 29, 29, 29, 29, 122, 29, 122, + 29, 29, 122, 122, 29, 128, 139, 122, 120, 120, + 128, 29, 29, 123, 120, 120, 123, 120, 120, 29, + 122, 123, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 131, 122, 120, 120, 120, 120, 126, 126, 123, + 126, 126, 126, 122, 123, 126, 138, 122, 128, 140, + 29, 14, 141, 122, 123, 126, 120, 126, 123, 126, + 29, 29, 29, 29, 124, 29, 163, 121, 163, 165, + 168, 122, 120, 120, 123, 12, 13, 14, 23, 3, + 121, 163, 121, 163, 164, 14, 23, 121, 163, 167, + 11, 121, 120, 123, 29, 12, 13, 14, 23, 11, + 23, 29, 121, 163, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 163, 165, 167, 3, 29, 121, 163, 165, 120, 29, + 3, 29, 121, 163, 166, 121, 3, 29, 163, 168, + 29, 29, 14, 29, 29, 29, 29, 14, 29, 29, + 122, 123, 125, 29, 14, 29, 3, 29, 163, 168, + 29, 14, 29, 123, 29, 29, 122, 123, 29, 3, + 121, 3, 121, 5, 6, 12, 124, 124, 125, 124, + 125, 124, 125, 29, 29, 122, 29, 29, 125, 29, + 29, 122, 123, 29, 11, 121, 5, 6, 12, 120, + 124, 124, 125, 124, 125, 124, 125, 162, 29, 122, + 122, 123, 132, 29, 122, 123, 121, 120, 133, 29, + 122, 123, 29, 126, 126, 123, 126, 120, 120, 124, + 120, 126, 124, 29, 14, 29, 125, 120, 126, 126, + 123, 126, 120, 124, 120, 14, 123, 144, 29, 12, + 13, 14, 23, 120, 29, 143, 29, 124, 124, 124, + 120, 120, 29, 120, 5, 6, 29, 120, 29, 145, + 29, 147, 29, 123, 156, 29, 12, 13, 14, 23, + 157, 29, 124, 124, 124, 11, 120, 120, 29, 120, + 29, 120, 29, 29, 29, 13, 14, 29, 14, 29, + 121, 29, 14, 29, 29, 14, 29, 127, 127, 126, + 127, 29, 126, 125, 124, 29, 24, 29, 29, 14, + 29, 24, 126, 24, 125, 5, 6, 12, 124, 124, + 125, 124, 125, 124, 125, 3, 121, 142, 120, 120, + 120, 3, 121, 3, 124, 3, 124, 124, 124, 3, + 121, 124, 146, 148, 124, 5, 6, 12, 124, 124, + 125, 124, 125, 124, 125, 155, 120, 120, 120, 11, + 11, 124, 11, 124, 11, 124, 124, 125, 124, 125, + 124, 125, 29, 124, 125, 136, 135, 124, 134, 29, + 29, 29, 29, 29, 29, 124, 124, 29, 29, 124, + 124, 124, 29, 5, 6, 29, 152, 29, 29, 3, + 121, 3, 121, 3, 121, 29, 120, 120, 120, 120, + 154, 29, 120, 120, 124, 124, 124, 29, 29, 159, + 29, 11, 11, 11, 120, 120, 161, 120, 29, 5, + 6, 29, 5, 6, 29, 29, 126, 120, 124, 126, + 120, 124, 124, 124, 124, 124, 124, 29, 29, 29, + 3, 121, 3, 3, 3, 121, 150, 3, 121, 4, + 124, 124, 124, 11, 11, 11, 124, 124, 124, 124, + 124, 124, 124, 124, 29, 127, 29, 24, 151, 29, + 29, 153, 29, 158, 160, 137, 29, 149 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 182 "rl78-parse.y" + { as_bad (_("Unknown opcode: %s"), rl78_init_start); } + break; + + case 3: +#line 203 "rl78-parse.y" + { B1 (0x0c|(yyvsp[(1) - (5)].regno)); O1 ((yyvsp[(5) - (5)].exp)); } + break; + + case 4: +#line 205 "rl78-parse.y" + {SA((yyvsp[(2) - (2)].exp))} + break; + + case 5: +#line 206 "rl78-parse.y" + { B1 (0x0a|(yyvsp[(1) - (6)].regno)); O1 ((yyvsp[(2) - (6)].exp)); O1 ((yyvsp[(6) - (6)].exp)); } + break; + + case 6: +#line 209 "rl78-parse.y" + { B2 (0x61, 0x01|(yyvsp[(1) - (4)].regno)); } + break; + + case 7: +#line 212 "rl78-parse.y" + { B2 (0x61, 0x08|(yyvsp[(1) - (4)].regno)); F ((yyvsp[(4) - (4)].regno), 13, 3); } + break; + + case 8: +#line 215 "rl78-parse.y" + { B2 (0x61, 0x00|(yyvsp[(1) - (4)].regno)); F ((yyvsp[(2) - (4)].regno), 13, 3); } + break; + + case 9: +#line 217 "rl78-parse.y" + {SA((yyvsp[(4) - (4)].exp))} + break; + + case 10: +#line 218 "rl78-parse.y" + { B1 (0x0b|(yyvsp[(1) - (5)].regno)); O1 ((yyvsp[(4) - (5)].exp)); } + break; + + case 11: +#line 221 "rl78-parse.y" + { B1 (0x0f|(yyvsp[(1) - (6)].regno)); O2 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 12: +#line 224 "rl78-parse.y" + { B1 (0x0d|(yyvsp[(1) - (7)].regno)); } + break; + + case 13: +#line 227 "rl78-parse.y" + { B1 (0x0e|(yyvsp[(1) - (9)].regno)); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 14: +#line 230 "rl78-parse.y" + { B2 (0x61, 0x80|(yyvsp[(1) - (9)].regno)); } + break; + + case 15: +#line 233 "rl78-parse.y" + { B2 (0x61, 0x82|(yyvsp[(1) - (9)].regno)); } + break; + + case 16: +#line 238 "rl78-parse.y" + { if ((yyvsp[(1) - (7)].regno) != 0x40) + { rl78_error ("Only CMP takes these operands"); } + else + { B1 (0x00|(yyvsp[(1) - (7)].regno)); O2 ((yyvsp[(4) - (7)].exp)); O1 ((yyvsp[(7) - (7)].exp)); rl78_linkrelax_addr16 (); } + } + break; + + case 17: +#line 247 "rl78-parse.y" + { B1 (0x04|(yyvsp[(1) - (5)].regno)); O2 ((yyvsp[(5) - (5)].exp)); } + break; + + case 18: +#line 250 "rl78-parse.y" + { B1 (0x01|(yyvsp[(1) - (4)].regno)); F ((yyvsp[(4) - (4)].regno), 5, 2); } + break; + + case 19: +#line 252 "rl78-parse.y" + {SA((yyvsp[(4) - (4)].exp))} + break; + + case 20: +#line 253 "rl78-parse.y" + { B1 (0x06|(yyvsp[(1) - (5)].regno)); O1 ((yyvsp[(4) - (5)].exp)); } + break; + + case 21: +#line 256 "rl78-parse.y" + { B1 (0x02|(yyvsp[(1) - (6)].regno)); O2 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 22: +#line 259 "rl78-parse.y" + { B2 (0x61, 0x09|(yyvsp[(1) - (9)].regno)); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 23: +#line 262 "rl78-parse.y" + { B4 (0x61, 0x09|(yyvsp[(1) - (7)].regno), 0, 0); } + break; + + case 24: +#line 265 "rl78-parse.y" + { B1 ((yyvsp[(1) - (5)].regno) ? 0x20 : 0x10); O1 ((yyvsp[(5) - (5)].exp)); + if ((yyvsp[(1) - (5)].regno) == 0x40) + rl78_error ("CMPW SP,#imm not allowed"); + } + break; + + case 25: +#line 272 "rl78-parse.y" + {Bit((yyvsp[(6) - (6)].exp))} + break; + + case 26: +#line 273 "rl78-parse.y" + { B3 (0x71, 0x08|(yyvsp[(1) - (7)].regno), (yyvsp[(4) - (7)].regno)); FE ((yyvsp[(6) - (7)].exp), 9, 3); } + break; + + case 27: +#line 275 "rl78-parse.y" + {Bit((yyvsp[(6) - (6)].exp))} + break; + + case 28: +#line 276 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(4) - (7)].exp))) + { B2 (0x71, 0x08|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(6) - (7)].exp), 9, 3); O1 ((yyvsp[(4) - (7)].exp)); } + else if (expr_is_saddr ((yyvsp[(4) - (7)].exp))) + { B2 (0x71, 0x00|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(6) - (7)].exp), 9, 3); O1 ((yyvsp[(4) - (7)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 29: +#line 284 "rl78-parse.y" + {Bit((yyvsp[(6) - (6)].exp))} + break; + + case 30: +#line 285 "rl78-parse.y" + { B2 (0x71, 0x88|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(6) - (7)].exp), 9, 3); } + break; + + case 31: +#line 287 "rl78-parse.y" + {Bit((yyvsp[(9) - (9)].exp))} + break; + + case 32: +#line 288 "rl78-parse.y" + { B2 (0x71, 0x80|(yyvsp[(1) - (10)].regno)); FE ((yyvsp[(9) - (10)].exp), 9, 3); } + break; + + case 33: +#line 293 "rl78-parse.y" + { B1 (0xdc); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 34: +#line 296 "rl78-parse.y" + { B1 (0xde); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 35: +#line 299 "rl78-parse.y" + { B1 (0xdd); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 36: +#line 302 "rl78-parse.y" + { B1 (0xdf); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 37: +#line 305 "rl78-parse.y" + { B2 (0x61, 0xc3); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 38: +#line 308 "rl78-parse.y" + { B2 (0x61, 0xd3); PC1 ((yyvsp[(3) - (3)].exp)); rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 39: +#line 313 "rl78-parse.y" + { B3 (0x31, 0x80|(yyvsp[(1) - (7)].regno), (yyvsp[(2) - (7)].regno)); FE ((yyvsp[(4) - (7)].exp), 9, 3); PC1 ((yyvsp[(7) - (7)].exp)); } + break; + + case 40: +#line 316 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(2) - (7)].exp))) + { B2 (0x31, 0x80|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(4) - (7)].exp), 9, 3); O1 ((yyvsp[(2) - (7)].exp)); PC1 ((yyvsp[(7) - (7)].exp)); } + else if (expr_is_saddr ((yyvsp[(2) - (7)].exp))) + { B2 (0x31, 0x00|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(4) - (7)].exp), 9, 3); O1 ((yyvsp[(2) - (7)].exp)); PC1 ((yyvsp[(7) - (7)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 41: +#line 325 "rl78-parse.y" + { B2 (0x31, 0x01|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(4) - (7)].exp), 9, 3); PC1 ((yyvsp[(7) - (7)].exp)); } + break; + + case 42: +#line 328 "rl78-parse.y" + { B2 (0x31, 0x81|(yyvsp[(1) - (10)].regno)); FE ((yyvsp[(7) - (10)].exp), 9, 3); PC1 ((yyvsp[(10) - (10)].exp)); } + break; + + case 43: +#line 333 "rl78-parse.y" + { B2 (0x61, 0xcb); } + break; + + case 44: +#line 336 "rl78-parse.y" + { B1 (0xef); PC1 ((yyvsp[(3) - (3)].exp)); } + break; + + case 45: +#line 339 "rl78-parse.y" + { B1 (0xee); PC2 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_branch (); } + break; + + case 46: +#line 342 "rl78-parse.y" + { B1 (0xed); O2 ((yyvsp[(3) - (3)].exp)); rl78_linkrelax_branch (); } + break; + + case 47: +#line 345 "rl78-parse.y" + { B1 (0xec); O3 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_branch (); } + break; + + case 48: +#line 350 "rl78-parse.y" + { B2 (0x61, 0xcc); } + break; + + case 49: +#line 353 "rl78-parse.y" + { B1 (0xff); } + break; + + case 50: +#line 358 "rl78-parse.y" + { B2 (0x61, 0xca); F ((yyvsp[(2) - (2)].regno), 10, 2); } + break; + + case 51: +#line 361 "rl78-parse.y" + { B1 (0xfe); PC2 ((yyvsp[(4) - (4)].exp)); } + break; + + case 52: +#line 364 "rl78-parse.y" + { B1 (0xfd); O2 ((yyvsp[(3) - (3)].exp)); } + break; + + case 53: +#line 367 "rl78-parse.y" + { B1 (0xfc); O3 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_branch (); } + break; + + case 54: +#line 370 "rl78-parse.y" + { if ((yyvsp[(3) - (4)].exp).X_op != O_constant) + rl78_error ("CALLT requires a numeric address"); + else + { + int i = (yyvsp[(3) - (4)].exp).X_add_number; + if (i < 0x80 || i > 0xbe) + rl78_error ("CALLT address not 0x80..0xbe"); + else if (i & 1) + rl78_error ("CALLT address not even"); + else + { + B2 (0x61, 0x84); + F ((i >> 1) & 7, 9, 3); + F ((i >> 4) & 7, 14, 2); + } + } + } + break; + + case 55: +#line 391 "rl78-parse.y" + { B2 (0x71, (yyvsp[(1) - (2)].regno) ? 0x88 : 0x80); } + break; + + case 56: +#line 394 "rl78-parse.y" + { B3 (0x71, 0x0a|(yyvsp[(1) - (4)].regno), (yyvsp[(2) - (4)].regno)); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + break; + + case 57: +#line 397 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(2) - (4)].exp))) + { B2 (0x71, 0x0a|(yyvsp[(1) - (4)].regno)); FE ((yyvsp[(4) - (4)].exp), 9, 3); O1 ((yyvsp[(2) - (4)].exp)); } + else if (expr_is_saddr ((yyvsp[(2) - (4)].exp))) + { B2 (0x71, 0x02|(yyvsp[(1) - (4)].regno)); FE ((yyvsp[(4) - (4)].exp), 9, 3); O1 ((yyvsp[(2) - (4)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 58: +#line 406 "rl78-parse.y" + { B2 (0x71, 0x8a|(yyvsp[(1) - (4)].regno)); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + break; + + case 59: +#line 409 "rl78-parse.y" + { B2 (0x71, 0x00+(yyvsp[(1) - (6)].regno)*0x08); FE ((yyvsp[(6) - (6)].exp), 9, 3); O2 ((yyvsp[(4) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 60: +#line 412 "rl78-parse.y" + { B2 (0x71, 0x82|(yyvsp[(1) - (7)].regno)); FE ((yyvsp[(7) - (7)].exp), 9, 3); } + break; + + case 61: +#line 417 "rl78-parse.y" + { B1 (0xe1|(yyvsp[(1) - (2)].regno)); } + break; + + case 62: +#line 419 "rl78-parse.y" + { B1 (0xe0|(yyvsp[(1) - (2)].regno)); } + break; + + case 63: +#line 421 "rl78-parse.y" + { B1 (0xe3|(yyvsp[(1) - (2)].regno)); } + break; + + case 64: +#line 423 "rl78-parse.y" + { B1 (0xe2|(yyvsp[(1) - (2)].regno)); } + break; + + case 65: +#line 425 "rl78-parse.y" + {SA((yyvsp[(2) - (2)].exp))} + break; + + case 66: +#line 426 "rl78-parse.y" + { B1 (0xe4|(yyvsp[(1) - (3)].regno)); O1 ((yyvsp[(2) - (3)].exp)); } + break; + + case 67: +#line 429 "rl78-parse.y" + { B1 (0xe5|(yyvsp[(1) - (4)].regno)); O2 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 68: +#line 434 "rl78-parse.y" + { B1 (0xe6|(yyvsp[(1) - (2)].regno)); } + break; + + case 69: +#line 436 "rl78-parse.y" + { B1 (0xe7|(yyvsp[(1) - (2)].regno)); } + break; + + case 70: +#line 441 "rl78-parse.y" + { B1 (0xd1); } + break; + + case 71: +#line 444 "rl78-parse.y" + { B1 (0xd0); } + break; + + case 72: +#line 447 "rl78-parse.y" + { B1 (0xd3); } + break; + + case 73: +#line 450 "rl78-parse.y" + { B1 (0xd2); } + break; + + case 74: +#line 452 "rl78-parse.y" + {SA((yyvsp[(2) - (2)].exp))} + break; + + case 75: +#line 453 "rl78-parse.y" + { B1 (0xd4); O1 ((yyvsp[(2) - (3)].exp)); } + break; + + case 76: +#line 456 "rl78-parse.y" + { B1 (0xd5); O2 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 77: +#line 461 "rl78-parse.y" + { B2 (0x61, 0xde); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 78: +#line 466 "rl78-parse.y" + { B1 (0x80|(yyvsp[(1) - (2)].regno)); F ((yyvsp[(2) - (2)].regno), 5, 3); } + break; + + case 79: +#line 468 "rl78-parse.y" + {SA((yyvsp[(2) - (2)].exp))} + break; + + case 80: +#line 469 "rl78-parse.y" + { B1 (0xa4|(yyvsp[(1) - (3)].regno)); O1 ((yyvsp[(2) - (3)].exp)); } + break; + + case 81: +#line 471 "rl78-parse.y" + { B1 (0xa0|(yyvsp[(1) - (3)].regno)); O2 ((yyvsp[(3) - (3)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 82: +#line 473 "rl78-parse.y" + { B2 (0x11, 0xa0|(yyvsp[(1) - (5)].regno)); O2 ((yyvsp[(5) - (5)].exp)); } + break; + + case 83: +#line 475 "rl78-parse.y" + { B2 (0x61, 0x59+(yyvsp[(1) - (6)].regno)); O1 ((yyvsp[(5) - (6)].exp)); } + break; + + case 84: +#line 477 "rl78-parse.y" + { B3 (0x11, 0x61, 0x59+(yyvsp[(1) - (8)].regno)); O1 ((yyvsp[(7) - (8)].exp)); } + break; + + case 85: +#line 482 "rl78-parse.y" + { B1 (0xa1|(yyvsp[(1) - (2)].regno)); F ((yyvsp[(2) - (2)].regno), 5, 2); } + break; + + case 86: +#line 484 "rl78-parse.y" + {SA((yyvsp[(2) - (2)].exp))} + break; + + case 87: +#line 485 "rl78-parse.y" + { B1 (0xa6|(yyvsp[(1) - (3)].regno)); O1 ((yyvsp[(2) - (3)].exp)); } + break; + + case 88: +#line 488 "rl78-parse.y" + { B1 (0xa2|(yyvsp[(1) - (4)].regno)); O2 ((yyvsp[(4) - (4)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 89: +#line 491 "rl78-parse.y" + { B2 (0x61, 0x79+(yyvsp[(1) - (7)].regno)); O1 ((yyvsp[(6) - (7)].exp)); } + break; + + case 90: +#line 496 "rl78-parse.y" + { B3 (0x71, 0x7b, 0xfa); } + break; + + case 91: +#line 499 "rl78-parse.y" + { B3 (0x71, 0x7a, 0xfa); } + break; + + case 92: +#line 504 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x01); } + break; + + case 93: +#line 507 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x02); } + break; + + case 94: +#line 510 "rl78-parse.y" + { B1 (0xd6); } + break; + + case 95: +#line 513 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x03); } + break; + + case 96: +#line 521 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x0b); } + break; + + case 97: +#line 524 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x05); } + break; + + case 98: +#line 527 "rl78-parse.y" + { B3 (0xce, 0xfb, 0x06); } + break; + + case 99: +#line 532 "rl78-parse.y" + { B2 (0x61, 0xed); } + break; + + case 100: +#line 540 "rl78-parse.y" + { B1 (0x51); O1 ((yyvsp[(5) - (5)].exp)); } + break; + + case 101: +#line 542 "rl78-parse.y" + { B1 (0x50); F((yyvsp[(2) - (5)].regno), 5, 3); O1 ((yyvsp[(5) - (5)].exp)); } + break; + + case 102: +#line 545 "rl78-parse.y" + { if ((yyvsp[(2) - (5)].regno) != 0xfd) + { B2 (0xce, (yyvsp[(2) - (5)].regno)); O1 ((yyvsp[(5) - (5)].exp)); } + else + { B1 (0x41); O1 ((yyvsp[(5) - (5)].exp)); } + } + break; + + case 103: +#line 551 "rl78-parse.y" + {NOT_ES} + break; + + case 104: +#line 552 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(3) - (7)].exp))) + { B1 (0xce); O1 ((yyvsp[(3) - (7)].exp)); O1 ((yyvsp[(6) - (7)].exp)); } + else if (expr_is_saddr ((yyvsp[(3) - (7)].exp))) + { B1 (0xcd); O1 ((yyvsp[(3) - (7)].exp)); O1 ((yyvsp[(6) - (7)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 105: +#line 561 "rl78-parse.y" + { B1 (0xcf); O2 ((yyvsp[(3) - (6)].exp)); O1 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 106: +#line 564 "rl78-parse.y" + { B2 (0x11, 0xcf); O2 ((yyvsp[(5) - (8)].exp)); O1 ((yyvsp[(8) - (8)].exp)); } + break; + + case 107: +#line 567 "rl78-parse.y" + { B1 (0x70); F ((yyvsp[(2) - (4)].regno), 5, 3); } + break; + + case 108: +#line 570 "rl78-parse.y" + { B1 (0x60); F ((yyvsp[(4) - (4)].regno), 5, 3); } + break; + + case 109: +#line 572 "rl78-parse.y" + {NOT_ES} + break; + + case 110: +#line 573 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(3) - (6)].exp))) + { B1 (0x9e); O1 ((yyvsp[(3) - (6)].exp)); } + else if (expr_is_saddr ((yyvsp[(3) - (6)].exp))) + { B1 (0x9d); O1 ((yyvsp[(3) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 111: +#line 582 "rl78-parse.y" + { B1 (0x8f); O2 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 112: +#line 585 "rl78-parse.y" + { B1 (0x9f); O2 ((yyvsp[(3) - (5)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 113: +#line 588 "rl78-parse.y" + { B2 (0x11, 0x9f); O2 ((yyvsp[(5) - (7)].exp)); } + break; + + case 114: +#line 591 "rl78-parse.y" + { B1 (0xc9|reg_xbc((yyvsp[(2) - (6)].regno))); O2 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 115: +#line 593 "rl78-parse.y" + {NOT_ES} + break; + + case 116: +#line 594 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(5) - (6)].exp))) + { B1 (0x8d); O1 ((yyvsp[(5) - (6)].exp)); } + else if (expr_is_sfr ((yyvsp[(5) - (6)].exp))) + { B1 (0x8e); O1 ((yyvsp[(5) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 117: +#line 602 "rl78-parse.y" + {SA((yyvsp[(5) - (5)].exp))} + break; + + case 118: +#line 602 "rl78-parse.y" + {NOT_ES} + break; + + case 119: +#line 603 "rl78-parse.y" + { B1 (0xc8|reg_xbc((yyvsp[(2) - (7)].regno))); O1 ((yyvsp[(5) - (7)].exp)); } + break; + + case 120: +#line 606 "rl78-parse.y" + { B2 (0x8e, (yyvsp[(4) - (4)].regno)); } + break; + + case 121: +#line 609 "rl78-parse.y" + { if ((yyvsp[(4) - (4)].regno) != 1) + rl78_error ("Only A allowed here"); + else + { B2 (0x9e, (yyvsp[(2) - (4)].regno)); } + } + break; + + case 122: +#line 615 "rl78-parse.y" + {SA((yyvsp[(5) - (5)].exp))} + break; + + case 123: +#line 615 "rl78-parse.y" + {NOT_ES} + break; + + case 124: +#line 616 "rl78-parse.y" + { if ((yyvsp[(2) - (7)].regno) != 0xfd) + rl78_error ("Only ES allowed here"); + else + { B2 (0x61, 0xb8); O1 ((yyvsp[(5) - (7)].exp)); } + } + break; + + case 125: +#line 623 "rl78-parse.y" + { B1 (0x89); } + break; + + case 126: +#line 626 "rl78-parse.y" + { B1 (0x99); } + break; + + case 127: +#line 629 "rl78-parse.y" + { B1 (0xca); O1 ((yyvsp[(6) - (10)].exp)); O1 ((yyvsp[(10) - (10)].exp)); } + break; + + case 128: +#line 632 "rl78-parse.y" + { B1 (0x8a); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 129: +#line 635 "rl78-parse.y" + { B1 (0x9a); O1 ((yyvsp[(6) - (9)].exp)); } + break; + + case 130: +#line 638 "rl78-parse.y" + { B1 (0x8b); } + break; + + case 131: +#line 641 "rl78-parse.y" + { B1 (0x9b); } + break; + + case 132: +#line 644 "rl78-parse.y" + { B1 (0xcc); O1 ((yyvsp[(6) - (10)].exp)); O1 ((yyvsp[(10) - (10)].exp)); } + break; + + case 133: +#line 647 "rl78-parse.y" + { B1 (0x8c); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 134: +#line 650 "rl78-parse.y" + { B1 (0x9c); O1 ((yyvsp[(6) - (9)].exp)); } + break; + + case 135: +#line 653 "rl78-parse.y" + { B2 (0x61, 0xc9); } + break; + + case 136: +#line 656 "rl78-parse.y" + { B2 (0x61, 0xd9); } + break; + + case 137: +#line 659 "rl78-parse.y" + { B2 (0x61, 0xe9); } + break; + + case 138: +#line 662 "rl78-parse.y" + { B2 (0x61, 0xf9); } + break; + + case 139: +#line 665 "rl78-parse.y" + { B1 (0x19); O2 ((yyvsp[(3) - (9)].exp)); O1 ((yyvsp[(9) - (9)].exp)); } + break; + + case 140: +#line 668 "rl78-parse.y" + { B1 (0x09); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 141: +#line 671 "rl78-parse.y" + { B1 (0x18); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 142: +#line 674 "rl78-parse.y" + { B1 (0x38); O2 ((yyvsp[(3) - (9)].exp)); O1 ((yyvsp[(9) - (9)].exp)); } + break; + + case 143: +#line 677 "rl78-parse.y" + { B1 (0x29); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 144: +#line 680 "rl78-parse.y" + { B1 (0x28); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 145: +#line 683 "rl78-parse.y" + { B1 (0x39); O2 ((yyvsp[(3) - (9)].exp)); O1 ((yyvsp[(9) - (9)].exp)); } + break; + + case 146: +#line 686 "rl78-parse.y" + { B3 (0x39, 0, 0); O1 ((yyvsp[(8) - (8)].exp)); } + break; + + case 147: +#line 689 "rl78-parse.y" + { B1 (0x49); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 148: +#line 692 "rl78-parse.y" + { B3 (0x49, 0, 0); } + break; + + case 149: +#line 695 "rl78-parse.y" + { B1 (0x48); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 150: +#line 698 "rl78-parse.y" + { B3 (0x48, 0, 0); } + break; + + case 151: +#line 700 "rl78-parse.y" + {NOT_ES} + break; + + case 152: +#line 701 "rl78-parse.y" + { B1 (0xc8); O1 ((yyvsp[(6) - (11)].exp)); O1 ((yyvsp[(10) - (11)].exp)); } + break; + + case 153: +#line 703 "rl78-parse.y" + {NOT_ES} + break; + + case 154: +#line 704 "rl78-parse.y" + { B2 (0xc8, 0); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 155: +#line 706 "rl78-parse.y" + {NOT_ES} + break; + + case 156: +#line 707 "rl78-parse.y" + { B1 (0x88); O1 ((yyvsp[(8) - (10)].exp)); } + break; + + case 157: +#line 709 "rl78-parse.y" + {NOT_ES} + break; + + case 158: +#line 710 "rl78-parse.y" + { B2 (0x88, 0); } + break; + + case 159: +#line 712 "rl78-parse.y" + {NOT_ES} + break; + + case 160: +#line 713 "rl78-parse.y" + { B1 (0x98); O1 ((yyvsp[(6) - (10)].exp)); } + break; + + case 161: +#line 715 "rl78-parse.y" + {NOT_ES} + break; + + case 162: +#line 716 "rl78-parse.y" + { B2 (0x98, 0); } + break; + + case 163: +#line 721 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(4) - (6)].exp))) + { B2 (0x71, 0x04); FE ((yyvsp[(6) - (6)].exp), 9, 3); O1 ((yyvsp[(4) - (6)].exp)); } + else if (expr_is_sfr ((yyvsp[(4) - (6)].exp))) + { B2 (0x71, 0x0c); FE ((yyvsp[(6) - (6)].exp), 9, 3); O1 ((yyvsp[(4) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 164: +#line 730 "rl78-parse.y" + { B2 (0x71, 0x8c); FE ((yyvsp[(6) - (6)].exp), 9, 3); } + break; + + case 165: +#line 733 "rl78-parse.y" + { B3 (0x71, 0x0c, (yyvsp[(4) - (6)].regno)); FE ((yyvsp[(6) - (6)].exp), 9, 3); } + break; + + case 166: +#line 736 "rl78-parse.y" + { B2 (0x71, 0x84); FE ((yyvsp[(9) - (9)].exp), 9, 3); } + break; + + case 167: +#line 739 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(2) - (6)].exp))) + { B2 (0x71, 0x01); FE ((yyvsp[(4) - (6)].exp), 9, 3); O1 ((yyvsp[(2) - (6)].exp)); } + else if (expr_is_sfr ((yyvsp[(2) - (6)].exp))) + { B2 (0x71, 0x09); FE ((yyvsp[(4) - (6)].exp), 9, 3); O1 ((yyvsp[(2) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 168: +#line 748 "rl78-parse.y" + { B2 (0x71, 0x89); FE ((yyvsp[(4) - (6)].exp), 9, 3); } + break; + + case 169: +#line 751 "rl78-parse.y" + { B3 (0x71, 0x09, (yyvsp[(2) - (6)].regno)); FE ((yyvsp[(4) - (6)].exp), 9, 3); } + break; + + case 170: +#line 754 "rl78-parse.y" + { B2 (0x71, 0x81); FE ((yyvsp[(7) - (9)].exp), 9, 3); } + break; + + case 171: +#line 759 "rl78-parse.y" + { B2 (0x61, 0xce); O1 ((yyvsp[(6) - (9)].exp)); } + break; + + case 172: +#line 764 "rl78-parse.y" + { B1 (0x30); O2 ((yyvsp[(5) - (5)].exp)); } + break; + + case 173: +#line 767 "rl78-parse.y" + { B1 (0x30); F ((yyvsp[(2) - (5)].regno), 5, 2); O2 ((yyvsp[(5) - (5)].exp)); } + break; + + case 174: +#line 769 "rl78-parse.y" + {NOT_ES} + break; + + case 175: +#line 770 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(3) - (7)].exp))) + { B1 (0xc9); O1 ((yyvsp[(3) - (7)].exp)); O2 ((yyvsp[(6) - (7)].exp)); } + else if (expr_is_sfr ((yyvsp[(3) - (7)].exp))) + { B1 (0xcb); O1 ((yyvsp[(3) - (7)].exp)); O2 ((yyvsp[(6) - (7)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 176: +#line 778 "rl78-parse.y" + {NOT_ES} + break; + + case 177: +#line 779 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(5) - (6)].exp))) + { B1 (0xad); O1 ((yyvsp[(5) - (6)].exp)); WA((yyvsp[(5) - (6)].exp)); } + else if (expr_is_sfr ((yyvsp[(5) - (6)].exp))) + { B1 (0xae); O1 ((yyvsp[(5) - (6)].exp)); WA((yyvsp[(5) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 178: +#line 787 "rl78-parse.y" + {NOT_ES} + break; + + case 179: +#line 788 "rl78-parse.y" + { if (expr_is_saddr ((yyvsp[(3) - (6)].exp))) + { B1 (0xbd); O1 ((yyvsp[(3) - (6)].exp)); WA((yyvsp[(3) - (6)].exp)); } + else if (expr_is_sfr ((yyvsp[(3) - (6)].exp))) + { B1 (0xbe); O1 ((yyvsp[(3) - (6)].exp)); WA((yyvsp[(3) - (6)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 180: +#line 797 "rl78-parse.y" + { B1 (0x11); F ((yyvsp[(4) - (4)].regno), 5, 2); } + break; + + case 181: +#line 800 "rl78-parse.y" + { B1 (0x10); F ((yyvsp[(2) - (4)].regno), 5, 2); } + break; + + case 182: +#line 803 "rl78-parse.y" + { B1 (0xaf); O2 ((yyvsp[(6) - (6)].exp)); WA((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 183: +#line 806 "rl78-parse.y" + { B1 (0xbf); O2 ((yyvsp[(4) - (6)].exp)); WA((yyvsp[(4) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 184: +#line 809 "rl78-parse.y" + { B1 (0xa9); } + break; + + case 185: +#line 812 "rl78-parse.y" + { B1 (0xb9); } + break; + + case 186: +#line 815 "rl78-parse.y" + { B1 (0xaa); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 187: +#line 818 "rl78-parse.y" + { B1 (0xba); O1 ((yyvsp[(6) - (9)].exp)); } + break; + + case 188: +#line 821 "rl78-parse.y" + { B1 (0xab); } + break; + + case 189: +#line 824 "rl78-parse.y" + { B1 (0xbb); } + break; + + case 190: +#line 827 "rl78-parse.y" + { B1 (0xac); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 191: +#line 830 "rl78-parse.y" + { B1 (0xbc); O1 ((yyvsp[(6) - (9)].exp)); } + break; + + case 192: +#line 833 "rl78-parse.y" + { B1 (0x59); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 193: +#line 836 "rl78-parse.y" + { B1 (0x58); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 194: +#line 839 "rl78-parse.y" + { B1 (0x69); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 195: +#line 842 "rl78-parse.y" + { B1 (0x68); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 196: +#line 845 "rl78-parse.y" + { B1 (0x79); O2 ((yyvsp[(5) - (8)].exp)); } + break; + + case 197: +#line 848 "rl78-parse.y" + { B3 (0x79, 0, 0); } + break; + + case 198: +#line 851 "rl78-parse.y" + { B1 (0x78); O2 ((yyvsp[(3) - (8)].exp)); } + break; + + case 199: +#line 854 "rl78-parse.y" + { B3 (0x78, 0, 0); } + break; + + case 200: +#line 856 "rl78-parse.y" + {NOT_ES} + break; + + case 201: +#line 857 "rl78-parse.y" + { B1 (0xa8); O1 ((yyvsp[(8) - (10)].exp)); WA((yyvsp[(8) - (10)].exp));} + break; + + case 202: +#line 859 "rl78-parse.y" + {NOT_ES} + break; + + case 203: +#line 860 "rl78-parse.y" + { B2 (0xa8, 0); } + break; + + case 204: +#line 862 "rl78-parse.y" + {NOT_ES} + break; + + case 205: +#line 863 "rl78-parse.y" + { B1 (0xb8); O1 ((yyvsp[(6) - (10)].exp)); WA((yyvsp[(6) - (10)].exp)); } + break; + + case 206: +#line 865 "rl78-parse.y" + {NOT_ES} + break; + + case 207: +#line 866 "rl78-parse.y" + { B2 (0xb8, 0); } + break; + + case 208: +#line 868 "rl78-parse.y" + {SA((yyvsp[(4) - (4)].exp))} + break; + + case 209: +#line 869 "rl78-parse.y" + { B1 (0xca); F ((yyvsp[(2) - (5)].regno), 2, 2); O1 ((yyvsp[(4) - (5)].exp)); WA((yyvsp[(4) - (5)].exp)); } + break; + + case 210: +#line 872 "rl78-parse.y" + { B1 (0xcb); F ((yyvsp[(2) - (6)].regno), 2, 2); O2 ((yyvsp[(6) - (6)].exp)); WA((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 211: +#line 875 "rl78-parse.y" + { B2 (0xcb, 0xf8); O2 ((yyvsp[(5) - (5)].exp)); } + break; + + case 212: +#line 878 "rl78-parse.y" + { B2 (0xbe, 0xf8); } + break; + + case 213: +#line 881 "rl78-parse.y" + { B2 (0xae, 0xf8); } + break; + + case 214: +#line 884 "rl78-parse.y" + { B3 (0xcb, 0xf8, 0xff); F ((yyvsp[(2) - (4)].regno), 2, 2); } + break; + + case 215: +#line 889 "rl78-parse.y" + { B1 (0x00); } + break; + + case 216: +#line 894 "rl78-parse.y" + { B2 (0x71, 0xc0); } + break; + + case 217: +#line 899 "rl78-parse.y" + { B1 (0xc0); F ((yyvsp[(2) - (2)].regno), 5, 2); } + break; + + case 218: +#line 902 "rl78-parse.y" + { B2 (0x61, 0xcd); } + break; + + case 219: +#line 905 "rl78-parse.y" + { B1 (0xc1); F ((yyvsp[(2) - (2)].regno), 5, 2); } + break; + + case 220: +#line 908 "rl78-parse.y" + { B2 (0x61, 0xdd); } + break; + + case 221: +#line 913 "rl78-parse.y" + { B1 (0xd7); } + break; + + case 222: +#line 916 "rl78-parse.y" + { B2 (0x61, 0xfc); } + break; + + case 223: +#line 919 "rl78-parse.y" + { B2 (0x61, 0xec); } + break; + + case 224: +#line 924 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xeb); } + } + break; + + case 225: +#line 929 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xdc); } + } + break; + + case 226: +#line 934 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xee); } + } + break; + + case 227: +#line 939 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xfe); } + } + break; + + case 228: +#line 944 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xdb); } + } + break; + + case 229: +#line 949 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 1)) + { B2 (0x61, 0xfb);} + } + break; + + case 230: +#line 956 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 7)) + { B2 (0x31, 0x0b); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + } + break; + + case 231: +#line 961 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 15)) + { B2 (0x31, 0x0f); FE ((yyvsp[(4) - (4)].exp), 8, 4); } + } + break; + + case 232: +#line 968 "rl78-parse.y" + { B2 (0x61, 0xcf); } + break; + + case 233: +#line 971 "rl78-parse.y" + { B2 (0x61, 0xdf); } + break; + + case 234: +#line 974 "rl78-parse.y" + { B2 (0x61, 0xef); } + break; + + case 235: +#line 977 "rl78-parse.y" + { B2 (0x61, 0xff); } + break; + + case 236: +#line 982 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 7)) + { B2 (0x31, 0x09); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + } + break; + + case 237: +#line 987 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 7)) + { B2 (0x31, 0x08); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + } + break; + + case 238: +#line 992 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 7)) + { B2 (0x31, 0x07); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + } + break; + + case 239: +#line 997 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 15)) + { B2 (0x31, 0x0d); FE ((yyvsp[(4) - (4)].exp), 8, 4); } + } + break; + + case 240: +#line 1002 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 15)) + { B2 (0x31, 0x0c); FE ((yyvsp[(4) - (4)].exp), 8, 4); } + } + break; + + case 241: +#line 1009 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 7)) + { B2 (0x31, 0x0a); FE ((yyvsp[(4) - (4)].exp), 9, 3); } + } + break; + + case 242: +#line 1014 "rl78-parse.y" + { if (check_expr_is_const ((yyvsp[(4) - (4)].exp), 1, 15)) + { B2 (0x31, 0x0e); FE ((yyvsp[(4) - (4)].exp), 8, 4); } + } + break; + + case 243: +#line 1021 "rl78-parse.y" + { B2 (0x61, 0xc8); rl78_linkrelax_branch (); } + break; + + case 244: +#line 1024 "rl78-parse.y" + { B2 (0x61, 0xe3); rl78_linkrelax_branch (); } + break; + + case 245: +#line 1027 "rl78-parse.y" + { B2 (0x61, 0xd8); rl78_linkrelax_branch (); } + break; + + case 246: +#line 1030 "rl78-parse.y" + { B2 (0x61, 0xf3); rl78_linkrelax_branch (); } + break; + + case 247: +#line 1033 "rl78-parse.y" + { B2 (0x61, 0xf8); rl78_linkrelax_branch (); } + break; + + case 248: +#line 1036 "rl78-parse.y" + { B2 (0x61, 0xe8); rl78_linkrelax_branch (); } + break; + + case 249: +#line 1041 "rl78-parse.y" + { B2 (0x61, 0xfd); } + break; + + case 250: +#line 1046 "rl78-parse.y" + { if ((yyvsp[(4) - (4)].regno) == 0) /* X */ + { B1 (0x08); } + else + { B2 (0x61, 0x88); F ((yyvsp[(4) - (4)].regno), 13, 3); } + } + break; + + case 251: +#line 1053 "rl78-parse.y" + { B2 (0x61, 0xaa); O2 ((yyvsp[(6) - (6)].exp)); rl78_linkrelax_addr16 (); } + break; + + case 252: +#line 1056 "rl78-parse.y" + { B2 (0x61, 0xae); } + break; + + case 253: +#line 1059 "rl78-parse.y" + { B2 (0x61, 0xaf); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 254: +#line 1062 "rl78-parse.y" + { B2 (0x61, 0xac); } + break; + + case 255: +#line 1065 "rl78-parse.y" + { B2 (0x61, 0xad); O1 ((yyvsp[(8) - (9)].exp)); } + break; + + case 256: +#line 1068 "rl78-parse.y" + { B2 (0x61, 0xb9); } + break; + + case 257: +#line 1071 "rl78-parse.y" + { B2 (0x61, 0xa9); } + break; + + case 258: +#line 1074 "rl78-parse.y" + { if (expr_is_sfr ((yyvsp[(4) - (4)].exp))) + { B2 (0x61, 0xab); O1 ((yyvsp[(4) - (4)].exp)); } + else if (expr_is_saddr ((yyvsp[(4) - (4)].exp))) + { B2 (0x61, 0xa8); O1 ((yyvsp[(4) - (4)].exp)); } + else + NOT_SFR_OR_SADDR; + } + break; + + case 259: +#line 1085 "rl78-parse.y" + { B1 (0x31); F ((yyvsp[(4) - (4)].regno), 5, 2); } + break; + + case 261: +#line 1095 "rl78-parse.y" + { rl78_prefix (0x11); } + break; + + case 262: +#line 1098 "rl78-parse.y" + { (yyval.regno) = 0; } + break; + + case 263: +#line 1099 "rl78-parse.y" + { (yyval.regno) = 1; } + break; + + case 264: +#line 1100 "rl78-parse.y" + { (yyval.regno) = 2; } + break; + + case 265: +#line 1101 "rl78-parse.y" + { (yyval.regno) = 3; } + break; + + case 266: +#line 1102 "rl78-parse.y" + { (yyval.regno) = 4; } + break; + + case 267: +#line 1103 "rl78-parse.y" + { (yyval.regno) = 5; } + break; + + case 268: +#line 1104 "rl78-parse.y" + { (yyval.regno) = 6; } + break; + + case 269: +#line 1105 "rl78-parse.y" + { (yyval.regno) = 7; } + break; + + case 270: +#line 1108 "rl78-parse.y" + { (yyval.regno) = 0; } + break; + + case 271: +#line 1109 "rl78-parse.y" + { (yyval.regno) = 2; } + break; + + case 272: +#line 1110 "rl78-parse.y" + { (yyval.regno) = 3; } + break; + + case 273: +#line 1111 "rl78-parse.y" + { (yyval.regno) = 4; } + break; + + case 274: +#line 1112 "rl78-parse.y" + { (yyval.regno) = 5; } + break; + + case 275: +#line 1113 "rl78-parse.y" + { (yyval.regno) = 6; } + break; + + case 276: +#line 1114 "rl78-parse.y" + { (yyval.regno) = 7; } + break; + + case 277: +#line 1117 "rl78-parse.y" + { (yyval.regno) = 0; } + break; + + case 278: +#line 1118 "rl78-parse.y" + { (yyval.regno) = 1; } + break; + + case 279: +#line 1119 "rl78-parse.y" + { (yyval.regno) = 2; } + break; + + case 280: +#line 1120 "rl78-parse.y" + { (yyval.regno) = 3; } + break; + + case 281: +#line 1123 "rl78-parse.y" + { (yyval.regno) = 1; } + break; + + case 282: +#line 1124 "rl78-parse.y" + { (yyval.regno) = 2; } + break; + + case 283: +#line 1125 "rl78-parse.y" + { (yyval.regno) = 3; } + break; + + case 284: +#line 1128 "rl78-parse.y" + { (yyval.regno) = 0xf8; } + break; + + case 285: +#line 1129 "rl78-parse.y" + { (yyval.regno) = 0xf9; } + break; + + case 286: +#line 1130 "rl78-parse.y" + { (yyval.regno) = 0xfa; } + break; + + case 287: +#line 1131 "rl78-parse.y" + { (yyval.regno) = 0xfc; } + break; + + case 288: +#line 1132 "rl78-parse.y" + { (yyval.regno) = 0xfd; } + break; + + case 289: +#line 1133 "rl78-parse.y" + { (yyval.regno) = 0xfe; } + break; + + case 290: +#line 1134 "rl78-parse.y" + { (yyval.regno) = 0xff; } + break; + + case 291: +#line 1140 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 292: +#line 1141 "rl78-parse.y" + { (yyval.regno) = 0x10; } + break; + + case 293: +#line 1142 "rl78-parse.y" + { (yyval.regno) = 0x20; } + break; + + case 294: +#line 1143 "rl78-parse.y" + { (yyval.regno) = 0x30; } + break; + + case 295: +#line 1144 "rl78-parse.y" + { (yyval.regno) = 0x40; } + break; + + case 296: +#line 1145 "rl78-parse.y" + { (yyval.regno) = 0x50; } + break; + + case 297: +#line 1146 "rl78-parse.y" + { (yyval.regno) = 0x60; } + break; + + case 298: +#line 1147 "rl78-parse.y" + { (yyval.regno) = 0x70; } + break; + + case 299: +#line 1150 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 300: +#line 1151 "rl78-parse.y" + { (yyval.regno) = 0x20; } + break; + + case 301: +#line 1152 "rl78-parse.y" + { (yyval.regno) = 0x40; } + break; + + case 302: +#line 1155 "rl78-parse.y" + { (yyval.regno) = 0x05; rl78_bit_insn = 1; } + break; + + case 303: +#line 1156 "rl78-parse.y" + { (yyval.regno) = 0x06; rl78_bit_insn = 1; } + break; + + case 304: +#line 1157 "rl78-parse.y" + { (yyval.regno) = 0x07; rl78_bit_insn = 1; } + break; + + case 305: +#line 1160 "rl78-parse.y" + { (yyval.regno) = 0x02; rl78_bit_insn = 1; rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 306: +#line 1161 "rl78-parse.y" + { (yyval.regno) = 0x04; rl78_bit_insn = 1; rl78_relax (RL78_RELAX_BRANCH, 0); } + break; + + case 307: +#line 1162 "rl78-parse.y" + { (yyval.regno) = 0x00; rl78_bit_insn = 1; } + break; + + case 308: +#line 1165 "rl78-parse.y" + { (yyval.regno) = 0; rl78_bit_insn = 1; } + break; + + case 309: +#line 1166 "rl78-parse.y" + { (yyval.regno) = 1; rl78_bit_insn = 1; } + break; + + case 310: +#line 1169 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 311: +#line 1170 "rl78-parse.y" + { (yyval.regno) = 0x10; } + break; + + case 312: +#line 1173 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 313: +#line 1174 "rl78-parse.y" + { (yyval.regno) = 0x10; } + break; + + case 314: +#line 1177 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 315: +#line 1178 "rl78-parse.y" + { (yyval.regno) = 0x10; } + break; + + case 316: +#line 1181 "rl78-parse.y" + { (yyval.regno) = 0x00; } + break; + + case 317: +#line 1182 "rl78-parse.y" + { (yyval.regno) = 0x10; } + break; + + case 318: +#line 1185 "rl78-parse.y" + { rl78_bit_insn = 1; } + break; + + +/* Line 1267 of yacc.c. */ +#line 4091 "rl78-parse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 1188 "rl78-parse.y" + +/* ====================================================================== */ + +static struct +{ + const char * string; + int token; + int val; +} +token_table[] = +{ + { "r0", X, 0 }, + { "r1", A, 1 }, + { "r2", C, 2 }, + { "r3", B, 3 }, + { "r4", E, 4 }, + { "r5", D, 5 }, + { "r6", L, 6 }, + { "r7", H, 7 }, + { "x", X, 0 }, + { "a", A, 1 }, + { "c", C, 2 }, + { "b", B, 3 }, + { "e", E, 4 }, + { "d", D, 5 }, + { "l", L, 6 }, + { "h", H, 7 }, + + { "rp0", AX, 0 }, + { "rp1", BC, 1 }, + { "rp2", DE, 2 }, + { "rp3", HL, 3 }, + { "ax", AX, 0 }, + { "bc", BC, 1 }, + { "de", DE, 2 }, + { "hl", HL, 3 }, + + { "RB0", RB0, 0 }, + { "RB1", RB1, 1 }, + { "RB2", RB2, 2 }, + { "RB3", RB3, 3 }, + + { "sp", SP, 0 }, + { "cy", CY, 0 }, + + { "spl", SPL, 0xf8 }, + { "sph", SPH, 0xf9 }, + { "psw", PSW, 0xfa }, + { "cs", CS, 0xfc }, + { "es", ES, 0xfd }, + { "pmc", PMC, 0xfe }, + { "mem", MEM, 0xff }, + + { ".s", DOT_S, 0 }, + { ".b", DOT_B, 0 }, + { ".w", DOT_W, 0 }, + { ".l", DOT_L, 0 }, + { ".a", DOT_A , 0}, + { ".ub", DOT_UB, 0 }, + { ".uw", DOT_UW , 0}, + + { "c", FLAG, 0 }, + { "z", FLAG, 1 }, + { "s", FLAG, 2 }, + { "o", FLAG, 3 }, + { "i", FLAG, 8 }, + { "u", FLAG, 9 }, + +#define OPC(x) { #x, x, IS_OPCODE } + + OPC(ADD), + OPC(ADDC), + OPC(ADDW), + { "and", AND_, IS_OPCODE }, + OPC(AND1), + OPC(BC), + OPC(BF), + OPC(BH), + OPC(BNC), + OPC(BNH), + OPC(BNZ), + OPC(BR), + OPC(BRK), + OPC(BRK1), + OPC(BT), + OPC(BTCLR), + OPC(BZ), + OPC(CALL), + OPC(CALLT), + OPC(CLR1), + OPC(CLRB), + OPC(CLRW), + OPC(CMP), + OPC(CMP0), + OPC(CMPS), + OPC(CMPW), + OPC(DEC), + OPC(DECW), + OPC(DI), + OPC(DIVHU), + OPC(DIVWU), + OPC(EI), + OPC(HALT), + OPC(INC), + OPC(INCW), + OPC(MACH), + OPC(MACHU), + OPC(MOV), + OPC(MOV1), + OPC(MOVS), + OPC(MOVW), + OPC(MULH), + OPC(MULHU), + OPC(MULU), + OPC(NOP), + OPC(NOT1), + OPC(ONEB), + OPC(ONEW), + OPC(OR), + OPC(OR1), + OPC(POP), + OPC(PUSH), + OPC(RET), + OPC(RETI), + OPC(RETB), + OPC(ROL), + OPC(ROLC), + OPC(ROLWC), + OPC(ROR), + OPC(RORC), + OPC(SAR), + OPC(SARW), + OPC(SEL), + OPC(SET1), + OPC(SHL), + OPC(SHLW), + OPC(SHR), + OPC(SHRW), + OPC(SKC), + OPC(SKH), + OPC(SKNC), + OPC(SKNH), + OPC(SKNZ), + OPC(SKZ), + OPC(STOP), + OPC(SUB), + OPC(SUBC), + OPC(SUBW), + OPC(XCH), + OPC(XCHW), + OPC(XOR), + OPC(XOR1), +}; + +#define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0])) + +void +rl78_lex_init (char * beginning, char * ending) +{ + rl78_init_start = beginning; + rl78_lex_start = beginning; + rl78_lex_end = ending; + rl78_in_brackets = 0; + rl78_last_token = 0; + + rl78_bit_insn = 0; + + setbuf (stdout, 0); +} + +/* Return a pointer to the '.' in a bit index expression (like + foo.5), or NULL if none is found. */ +static char * +find_bit_index (char *tok) +{ + char *last_dot = NULL; + char *last_digit = NULL; + while (*tok && *tok != ',') + { + if (*tok == '.') + { + last_dot = tok; + last_digit = NULL; + } + else if (*tok >= '0' && *tok <= '7' + && last_dot != NULL + && last_digit == NULL) + { + last_digit = tok; + } + else if (ISSPACE (*tok)) + { + /* skip */ + } + else + { + last_dot = NULL; + last_digit = NULL; + } + tok ++; + } + if (last_dot != NULL + && last_digit != NULL) + return last_dot; + return NULL; +} + +static int +rl78_lex (void) +{ + /*unsigned int ci;*/ + char * save_input_pointer; + char * bit = NULL; + + while (ISSPACE (*rl78_lex_start) + && rl78_lex_start != rl78_lex_end) + rl78_lex_start ++; + + rl78_last_exp_start = rl78_lex_start; + + if (rl78_lex_start == rl78_lex_end) + return 0; + + if (ISALPHA (*rl78_lex_start) + || (*rl78_lex_start == '.' && ISALPHA (rl78_lex_start[1]))) + { + unsigned int i; + char * e; + char save; + + for (e = rl78_lex_start + 1; + e < rl78_lex_end && ISALNUM (*e); + e ++) + ; + save = *e; + *e = 0; + + for (i = 0; i < NUM_TOKENS; i++) + if (strcasecmp (rl78_lex_start, token_table[i].string) == 0 + && !(token_table[i].val == IS_OPCODE && rl78_last_token != 0) + && !(token_table[i].token == FLAG && !need_flag)) + { + rl78_lval.regno = token_table[i].val; + *e = save; + rl78_lex_start = e; + rl78_last_token = token_table[i].token; + return token_table[i].token; + } + *e = save; + } + + if (rl78_last_token == 0) + { + rl78_last_token = UNKNOWN_OPCODE; + return UNKNOWN_OPCODE; + } + + if (rl78_last_token == UNKNOWN_OPCODE) + return 0; + + if (*rl78_lex_start == '[') + rl78_in_brackets = 1; + if (*rl78_lex_start == ']') + rl78_in_brackets = 0; + + /* '.' is funny - the syntax includes it for bitfields, but only for + bitfields. We check for it specially so we can allow labels + with '.' in them. */ + + if (rl78_bit_insn + && *rl78_lex_start == '.' + && find_bit_index (rl78_lex_start) == rl78_lex_start) + { + rl78_last_token = *rl78_lex_start; + return *rl78_lex_start ++; + } + + if ((rl78_in_brackets && *rl78_lex_start == '+') + || strchr ("[],#!$:", *rl78_lex_start)) + { + rl78_last_token = *rl78_lex_start; + return *rl78_lex_start ++; + } + + /* Again, '.' is funny. Look for '.' at the end of the line + or before a comma, which is a bitfield, not an expression. */ + + if (rl78_bit_insn) + { + bit = find_bit_index (rl78_lex_start); + if (bit) + *bit = 0; + else + bit = NULL; + } + + save_input_pointer = input_line_pointer; + input_line_pointer = rl78_lex_start; + rl78_lval.exp.X_md = 0; + expression (&rl78_lval.exp); + + if (bit) + *bit = '.'; + + rl78_lex_start = input_line_pointer; + input_line_pointer = save_input_pointer; + rl78_last_token = EXPR; + return EXPR; +} + +int +rl78_error (const char * str) +{ + int len; + + len = rl78_last_exp_start - rl78_init_start; + + as_bad ("%s", rl78_init_start); + as_bad ("%*s^ %s", len, "", str); + return 0; +} + +static int +expr_is_sfr (expressionS exp) +{ + unsigned long v; + + if (exp.X_op != O_constant) + return 0; + + v = exp.X_add_number; + if (0xFFF00 <= v && v <= 0xFFFFF) + return 1; + return 0; +} + +static int +expr_is_saddr (expressionS exp) +{ + unsigned long v; + + if (exp.X_op != O_constant) + return 0; + + v = exp.X_add_number; + if (0xFFE20 <= v && v <= 0xFFF1F) + return 1; + return 0; +} + +static int +expr_is_word_aligned (expressionS exp) +{ + unsigned long v; + + if (exp.X_op != O_constant) + return 1; + + v = exp.X_add_number; + if (v & 1) + return 0; + return 1; + +} + +static void +check_expr_is_bit_index (expressionS exp) +{ + int val; + + if (exp.X_op != O_constant) + { + rl78_error (_("bit index must be a constant")); + return; + } + val = exp.X_add_number; + + if (val < 0 || val > 7) + rl78_error (_("rtsd size must be 0..7")); +} + +static int +exp_val (expressionS exp) +{ + if (exp.X_op != O_constant) + { + rl78_error (_("constant expected")); + return 0; + } + return exp.X_add_number; +} + +static int +check_expr_is_const (expressionS e, int vmin, int vmax) +{ + static char buf[100]; + if (e.X_op != O_constant + || e.X_add_number < vmin + || e.X_add_number > vmax) + { + if (vmin == vmax) + sprintf (buf, "%d expected here", vmin); + else + sprintf (buf, "%d..%d expected here", vmin, vmax); + rl78_error(buf); + return 0; + } + return 1; +} + + + diff --git a/gas/rl78-parse.h b/gas/rl78-parse.h new file mode 100644 index 00000000000..6fd5ff225fd --- /dev/null +++ b/gas/rl78-parse.h @@ -0,0 +1,299 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + A = 258, + X = 259, + B = 260, + C = 261, + D = 262, + E = 263, + H = 264, + L = 265, + AX = 266, + BC = 267, + DE = 268, + HL = 269, + SPL = 270, + SPH = 271, + PSW = 272, + CS = 273, + ES = 274, + PMC = 275, + MEM = 276, + FLAG = 277, + SP = 278, + CY = 279, + RB0 = 280, + RB1 = 281, + RB2 = 282, + RB3 = 283, + EXPR = 284, + UNKNOWN_OPCODE = 285, + IS_OPCODE = 286, + DOT_S = 287, + DOT_B = 288, + DOT_W = 289, + DOT_L = 290, + DOT_A = 291, + DOT_UB = 292, + DOT_UW = 293, + ADD = 294, + ADDC = 295, + ADDW = 296, + AND_ = 297, + AND1 = 298, + BF = 299, + BH = 300, + BNC = 301, + BNH = 302, + BNZ = 303, + BR = 304, + BRK = 305, + BRK1 = 306, + BT = 307, + BTCLR = 308, + BZ = 309, + CALL = 310, + CALLT = 311, + CLR1 = 312, + CLRB = 313, + CLRW = 314, + CMP = 315, + CMP0 = 316, + CMPS = 317, + CMPW = 318, + DEC = 319, + DECW = 320, + DI = 321, + DIVHU = 322, + DIVWU = 323, + EI = 324, + HALT = 325, + INC = 326, + INCW = 327, + MACH = 328, + MACHU = 329, + MOV = 330, + MOV1 = 331, + MOVS = 332, + MOVW = 333, + MULH = 334, + MULHU = 335, + MULU = 336, + NOP = 337, + NOT1 = 338, + ONEB = 339, + ONEW = 340, + OR = 341, + OR1 = 342, + POP = 343, + PUSH = 344, + RET = 345, + RETI = 346, + RETB = 347, + ROL = 348, + ROLC = 349, + ROLWC = 350, + ROR = 351, + RORC = 352, + SAR = 353, + SARW = 354, + SEL = 355, + SET1 = 356, + SHL = 357, + SHLW = 358, + SHR = 359, + SHRW = 360, + SKC = 361, + SKH = 362, + SKNC = 363, + SKNH = 364, + SKNZ = 365, + SKZ = 366, + STOP = 367, + SUB = 368, + SUBC = 369, + SUBW = 370, + XCH = 371, + XCHW = 372, + XOR = 373, + XOR1 = 374 + }; +#endif +/* Tokens. */ +#define A 258 +#define X 259 +#define B 260 +#define C 261 +#define D 262 +#define E 263 +#define H 264 +#define L 265 +#define AX 266 +#define BC 267 +#define DE 268 +#define HL 269 +#define SPL 270 +#define SPH 271 +#define PSW 272 +#define CS 273 +#define ES 274 +#define PMC 275 +#define MEM 276 +#define FLAG 277 +#define SP 278 +#define CY 279 +#define RB0 280 +#define RB1 281 +#define RB2 282 +#define RB3 283 +#define EXPR 284 +#define UNKNOWN_OPCODE 285 +#define IS_OPCODE 286 +#define DOT_S 287 +#define DOT_B 288 +#define DOT_W 289 +#define DOT_L 290 +#define DOT_A 291 +#define DOT_UB 292 +#define DOT_UW 293 +#define ADD 294 +#define ADDC 295 +#define ADDW 296 +#define AND_ 297 +#define AND1 298 +#define BF 299 +#define BH 300 +#define BNC 301 +#define BNH 302 +#define BNZ 303 +#define BR 304 +#define BRK 305 +#define BRK1 306 +#define BT 307 +#define BTCLR 308 +#define BZ 309 +#define CALL 310 +#define CALLT 311 +#define CLR1 312 +#define CLRB 313 +#define CLRW 314 +#define CMP 315 +#define CMP0 316 +#define CMPS 317 +#define CMPW 318 +#define DEC 319 +#define DECW 320 +#define DI 321 +#define DIVHU 322 +#define DIVWU 323 +#define EI 324 +#define HALT 325 +#define INC 326 +#define INCW 327 +#define MACH 328 +#define MACHU 329 +#define MOV 330 +#define MOV1 331 +#define MOVS 332 +#define MOVW 333 +#define MULH 334 +#define MULHU 335 +#define MULU 336 +#define NOP 337 +#define NOT1 338 +#define ONEB 339 +#define ONEW 340 +#define OR 341 +#define OR1 342 +#define POP 343 +#define PUSH 344 +#define RET 345 +#define RETI 346 +#define RETB 347 +#define ROL 348 +#define ROLC 349 +#define ROLWC 350 +#define ROR 351 +#define RORC 352 +#define SAR 353 +#define SARW 354 +#define SEL 355 +#define SET1 356 +#define SHL 357 +#define SHLW 358 +#define SHR 359 +#define SHRW 360 +#define SKC 361 +#define SKH 362 +#define SKNC 363 +#define SKNH 364 +#define SKNZ 365 +#define SKZ 366 +#define STOP 367 +#define SUB 368 +#define SUBC 369 +#define SUBW 370 +#define XCH 371 +#define XCHW 372 +#define XOR 373 +#define XOR1 374 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 138 "rl78-parse.y" +{ + int regno; + expressionS exp; +} +/* Line 1529 of yacc.c. */ +#line 292 "rl78-parse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE rl78_lval; + diff --git a/gas/rx-parse.c b/gas/rx-parse.c new file mode 100644 index 00000000000..89a38768c9f --- /dev/null +++ b/gas/rx-parse.c @@ -0,0 +1,4256 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse rx_parse +#define yylex rx_lex +#define yyerror rx_error +#define yylval rx_lval +#define yychar rx_char +#define yydebug rx_debug +#define yynerrs rx_nerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + REG = 258, + FLAG = 259, + CREG = 260, + EXPR = 261, + UNKNOWN_OPCODE = 262, + IS_OPCODE = 263, + DOT_S = 264, + DOT_B = 265, + DOT_W = 266, + DOT_L = 267, + DOT_A = 268, + DOT_UB = 269, + DOT_UW = 270, + ABS = 271, + ADC = 272, + ADD = 273, + AND_ = 274, + BCLR = 275, + BCND = 276, + BMCND = 277, + BNOT = 278, + BRA = 279, + BRK = 280, + BSET = 281, + BSR = 282, + BTST = 283, + CLRPSW = 284, + CMP = 285, + DBT = 286, + DIV = 287, + DIVU = 288, + EDIV = 289, + EDIVU = 290, + EMUL = 291, + EMULU = 292, + FADD = 293, + FCMP = 294, + FDIV = 295, + FMUL = 296, + FREIT = 297, + FSUB = 298, + FTOI = 299, + INT = 300, + ITOF = 301, + JMP = 302, + JSR = 303, + MACHI = 304, + MACLO = 305, + MAX = 306, + MIN = 307, + MOV = 308, + MOVU = 309, + MUL = 310, + MULHI = 311, + MULLO = 312, + MULU = 313, + MVFACHI = 314, + MVFACMI = 315, + MVFACLO = 316, + MVFC = 317, + MVTACHI = 318, + MVTACLO = 319, + MVTC = 320, + MVTIPL = 321, + NEG = 322, + NOP = 323, + NOT = 324, + OR = 325, + POP = 326, + POPC = 327, + POPM = 328, + PUSH = 329, + PUSHA = 330, + PUSHC = 331, + PUSHM = 332, + RACW = 333, + REIT = 334, + REVL = 335, + REVW = 336, + RMPA = 337, + ROLC = 338, + RORC = 339, + ROTL = 340, + ROTR = 341, + ROUND = 342, + RTE = 343, + RTFI = 344, + RTS = 345, + RTSD = 346, + SAT = 347, + SATR = 348, + SBB = 349, + SCCND = 350, + SCMPU = 351, + SETPSW = 352, + SHAR = 353, + SHLL = 354, + SHLR = 355, + SMOVB = 356, + SMOVF = 357, + SMOVU = 358, + SSTR = 359, + STNZ = 360, + STOP = 361, + STZ = 362, + SUB = 363, + SUNTIL = 364, + SWHILE = 365, + TST = 366, + WAIT = 367, + XCHG = 368, + XOR = 369 + }; +#endif +/* Tokens. */ +#define REG 258 +#define FLAG 259 +#define CREG 260 +#define EXPR 261 +#define UNKNOWN_OPCODE 262 +#define IS_OPCODE 263 +#define DOT_S 264 +#define DOT_B 265 +#define DOT_W 266 +#define DOT_L 267 +#define DOT_A 268 +#define DOT_UB 269 +#define DOT_UW 270 +#define ABS 271 +#define ADC 272 +#define ADD 273 +#define AND_ 274 +#define BCLR 275 +#define BCND 276 +#define BMCND 277 +#define BNOT 278 +#define BRA 279 +#define BRK 280 +#define BSET 281 +#define BSR 282 +#define BTST 283 +#define CLRPSW 284 +#define CMP 285 +#define DBT 286 +#define DIV 287 +#define DIVU 288 +#define EDIV 289 +#define EDIVU 290 +#define EMUL 291 +#define EMULU 292 +#define FADD 293 +#define FCMP 294 +#define FDIV 295 +#define FMUL 296 +#define FREIT 297 +#define FSUB 298 +#define FTOI 299 +#define INT 300 +#define ITOF 301 +#define JMP 302 +#define JSR 303 +#define MACHI 304 +#define MACLO 305 +#define MAX 306 +#define MIN 307 +#define MOV 308 +#define MOVU 309 +#define MUL 310 +#define MULHI 311 +#define MULLO 312 +#define MULU 313 +#define MVFACHI 314 +#define MVFACMI 315 +#define MVFACLO 316 +#define MVFC 317 +#define MVTACHI 318 +#define MVTACLO 319 +#define MVTC 320 +#define MVTIPL 321 +#define NEG 322 +#define NOP 323 +#define NOT 324 +#define OR 325 +#define POP 326 +#define POPC 327 +#define POPM 328 +#define PUSH 329 +#define PUSHA 330 +#define PUSHC 331 +#define PUSHM 332 +#define RACW 333 +#define REIT 334 +#define REVL 335 +#define REVW 336 +#define RMPA 337 +#define ROLC 338 +#define RORC 339 +#define ROTL 340 +#define ROTR 341 +#define ROUND 342 +#define RTE 343 +#define RTFI 344 +#define RTS 345 +#define RTSD 346 +#define SAT 347 +#define SATR 348 +#define SBB 349 +#define SCCND 350 +#define SCMPU 351 +#define SETPSW 352 +#define SHAR 353 +#define SHLL 354 +#define SHLR 355 +#define SMOVB 356 +#define SMOVF 357 +#define SMOVU 358 +#define SSTR 359 +#define STNZ 360 +#define STOP 361 +#define STZ 362 +#define SUB 363 +#define SUNTIL 364 +#define SWHILE 365 +#define TST 366 +#define WAIT 367 +#define XCHG 368 +#define XOR 369 + + + + +/* Copy the first part of user declarations. */ +#line 20 "rx-parse.y" + + +#include "as.h" +#include "safe-ctype.h" +#include "rx-defs.h" + +static int rx_lex (void); + +#define COND_EQ 0 +#define COND_NE 1 + +#define MEMEX 0x06 + +#define BSIZE 0 +#define WSIZE 1 +#define LSIZE 2 + +/* .sb .sw .l .uw */ +static int sizemap[] = { BSIZE, WSIZE, LSIZE, WSIZE }; + +/* Ok, here are the rules for using these macros... + + B*() is used to specify the base opcode bytes. Fields to be filled + in later, leave zero. Call this first. + + F() and FE() are used to fill in fields within the base opcode bytes. You MUST + call B*() before any F() or FE(). + + [UN]*O*(), PC*() appends operands to the end of the opcode. You + must call P() and B*() before any of these, so that the fixups + have the right byte location. + O = signed, UO = unsigned, NO = negated, PC = pcrel + + IMM() adds an immediate and fills in the field for it. + NIMM() same, but negates the immediate. + NBIMM() same, but negates the immediate, for sbb. + DSP() adds a displacement, and fills in the field for it. + + Note that order is significant for the O, IMM, and DSP macros, as + they append their data to the operand buffer in the order that you + call them. + + Use "disp" for displacements whenever possible; this handles the + "0" case properly. */ + +#define B1(b1) rx_base1 (b1) +#define B2(b1, b2) rx_base2 (b1, b2) +#define B3(b1, b2, b3) rx_base3 (b1, b2, b3) +#define B4(b1, b2, b3, b4) rx_base4 (b1, b2, b3, b4) + +/* POS is bits from the MSB of the first byte to the LSB of the last byte. */ +#define F(val,pos,sz) rx_field (val, pos, sz) +#define FE(exp,pos,sz) rx_field (exp_val (exp), pos, sz); + +#define O1(v) rx_op (v, 1, RXREL_SIGNED); rx_range (v, -128, 255) +#define O2(v) rx_op (v, 2, RXREL_SIGNED); rx_range (v, -32768, 65536) +#define O3(v) rx_op (v, 3, RXREL_SIGNED); rx_range (v, -8388608, 16777216) +#define O4(v) rx_op (v, 4, RXREL_SIGNED) + +#define UO1(v) rx_op (v, 1, RXREL_UNSIGNED); rx_range (v, 0, 255) +#define UO2(v) rx_op (v, 2, RXREL_UNSIGNED); rx_range (v, 0, 65536) +#define UO3(v) rx_op (v, 3, RXREL_UNSIGNED); rx_range (v, 0, 16777216) +#define UO4(v) rx_op (v, 4, RXREL_UNSIGNED) + +#define NO1(v) rx_op (v, 1, RXREL_NEGATIVE) +#define NO2(v) rx_op (v, 2, RXREL_NEGATIVE) +#define NO3(v) rx_op (v, 3, RXREL_NEGATIVE) +#define NO4(v) rx_op (v, 4, RXREL_NEGATIVE) + +#define PC1(v) rx_op (v, 1, RXREL_PCREL) +#define PC2(v) rx_op (v, 2, RXREL_PCREL) +#define PC3(v) rx_op (v, 3, RXREL_PCREL) + +#define IMM_(v,pos,size) F (immediate (v, RXREL_SIGNED, pos, size), pos, 2); \ + if (v.X_op != O_constant && v.X_op != O_big) rx_linkrelax_imm (pos) +#define IMM(v,pos) IMM_ (v, pos, 32) +#define IMMW(v,pos) IMM_ (v, pos, 16); rx_range (v, -32768, 65536) +#define IMMB(v,pos) IMM_ (v, pos, 8); rx_range (v, -128, 255) +#define NIMM(v,pos) F (immediate (v, RXREL_NEGATIVE, pos, 32), pos, 2) +#define NBIMM(v,pos) F (immediate (v, RXREL_NEGATIVE_BORROW, pos, 32), pos, 2) +#define DSP(v,pos,msz) if (!v.X_md) rx_relax (RX_RELAX_DISP, pos); \ + else rx_linkrelax_dsp (pos); \ + F (displacement (v, msz), pos, 2) + +#define id24(a,b2,b3) B3 (0xfb+a, b2, b3) + +static void rx_check_float_support (void); +static int rx_intop (expressionS, int, int); +static int rx_uintop (expressionS, int); +static int rx_disp3op (expressionS); +static int rx_disp5op (expressionS *, int); +static int rx_disp5op0 (expressionS *, int); +static int exp_val (expressionS exp); +static expressionS zero_expr (void); +static int immediate (expressionS, int, int, int); +static int displacement (expressionS, int); +static void rtsd_immediate (expressionS); +static void rx_range (expressionS, int, int); + +static int need_flag = 0; +static int rx_in_brackets = 0; +static int rx_last_token = 0; +static char * rx_init_start; +static char * rx_last_exp_start = 0; +static int sub_op; +static int sub_op2; + +#define YYDEBUG 1 +#define YYERROR_VERBOSE 1 + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 134 "rx-parse.y" +{ + int regno; + expressionS exp; +} +/* Line 193 of yacc.c. */ +#line 449 "rx-parse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 462 "rx-parse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 216 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 627 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 121 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 63 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 246 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 611 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 369 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 115, 2, 2, 2, 2, + 2, 2, 2, 120, 116, 119, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 117, 2, 118, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 16, 20, + 24, 27, 31, 35, 39, 43, 47, 51, 55, 58, + 68, 78, 88, 96, 101, 110, 119, 125, 133, 142, + 148, 154, 160, 166, 172, 178, 185, 191, 195, 196, + 200, 201, 205, 206, 210, 215, 220, 228, 232, 238, + 244, 250, 253, 256, 259, 263, 266, 269, 272, 275, + 278, 281, 284, 288, 292, 294, 296, 298, 300, 303, + 306, 309, 312, 314, 316, 318, 320, 324, 333, 342, + 350, 361, 373, 379, 387, 397, 407, 417, 424, 425, + 429, 430, 434, 435, 439, 440, 444, 445, 449, 450, + 454, 455, 459, 460, 464, 465, 469, 470, 474, 475, + 479, 480, 484, 485, 489, 490, 494, 495, 499, 500, + 504, 505, 509, 510, 514, 515, 519, 524, 529, 534, + 539, 548, 557, 566, 575, 576, 580, 581, 585, 586, + 590, 591, 595, 596, 600, 601, 605, 606, 610, 614, + 621, 631, 641, 646, 651, 656, 661, 664, 667, 670, + 673, 676, 680, 689, 698, 707, 716, 725, 734, 735, + 739, 740, 744, 745, 749, 750, 754, 759, 764, 770, + 776, 782, 788, 794, 804, 814, 824, 825, 829, 830, + 834, 835, 839, 840, 844, 845, 849, 855, 859, 867, + 875, 881, 885, 893, 897, 905, 913, 918, 920, 922, + 924, 926, 930, 932, 936, 944, 952, 956, 961, 968, + 970, 971, 977, 979, 980, 985, 986, 995, 996, 998, + 999, 1002, 1004, 1006, 1007, 1009, 1011, 1012, 1014, 1016, + 1018, 1019, 1021, 1023, 1024, 1026, 1027 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 122, 0, -1, 7, -1, 25, -1, 31, -1, 90, + -1, 68, -1, 24, 6, -1, 24, 13, 6, -1, + 24, 9, 6, -1, 27, 6, -1, 27, 13, 6, + -1, 21, 9, 6, -1, 21, 10, 6, -1, 24, + 10, 6, -1, 24, 11, 6, -1, 27, 11, 6, + -1, 21, 11, 6, -1, 21, 6, -1, 53, 10, + 115, 6, 116, 176, 117, 3, 118, -1, 53, 11, + 115, 6, 116, 176, 117, 3, 118, -1, 53, 12, + 115, 6, 116, 176, 117, 3, 118, -1, 91, 115, + 6, 116, 3, 119, 3, -1, 30, 3, 116, 3, + -1, 30, 176, 117, 3, 118, 14, 116, 3, -1, + 30, 176, 117, 3, 118, 179, 116, 3, -1, 54, + 181, 3, 116, 3, -1, 54, 181, 117, 3, 118, + 116, 3, -1, 54, 181, 6, 117, 3, 118, 116, + 3, -1, 108, 115, 6, 116, 3, -1, 30, 115, + 6, 116, 3, -1, 18, 115, 6, 116, 3, -1, + 55, 115, 6, 116, 3, -1, 19, 115, 6, 116, + 3, -1, 70, 115, 6, 116, 3, -1, 53, 12, + 115, 6, 116, 3, -1, 53, 115, 6, 116, 3, + -1, 91, 115, 6, -1, -1, 100, 123, 170, -1, + -1, 98, 124, 170, -1, -1, 99, 125, 170, -1, + 77, 3, 119, 3, -1, 73, 3, 119, 3, -1, + 18, 115, 6, 116, 3, 116, 3, -1, 45, 115, + 6, -1, 26, 115, 6, 116, 3, -1, 20, 115, + 6, 116, 3, -1, 28, 115, 6, 116, 3, -1, + 92, 3, -1, 84, 3, -1, 83, 3, -1, 74, + 180, 3, -1, 71, 3, -1, 76, 5, -1, 72, + 5, -1, 97, 177, -1, 29, 177, -1, 47, 3, + -1, 48, 3, -1, 24, 182, 3, -1, 27, 182, + 3, -1, 96, -1, 103, -1, 101, -1, 102, -1, + 109, 180, -1, 110, 180, -1, 104, 180, -1, 82, + 180, -1, 89, -1, 88, -1, 112, -1, 93, -1, + 66, 115, 6, -1, 53, 180, 3, 116, 6, 117, + 3, 118, -1, 53, 180, 6, 117, 3, 118, 116, + 3, -1, 53, 180, 3, 116, 117, 3, 118, -1, + 53, 180, 117, 3, 118, 116, 176, 117, 3, 118, + -1, 53, 180, 6, 117, 3, 118, 116, 176, 117, + 3, 118, -1, 53, 180, 3, 116, 3, -1, 53, + 180, 117, 3, 118, 116, 3, -1, 26, 115, 6, + 116, 176, 117, 3, 118, 10, -1, 20, 115, 6, + 116, 176, 117, 3, 118, 10, -1, 28, 115, 6, + 116, 176, 117, 3, 118, 10, -1, 74, 180, 176, + 117, 3, 118, -1, -1, 94, 126, 162, -1, -1, + 67, 127, 167, -1, -1, 17, 128, 166, -1, -1, + 16, 129, 167, -1, -1, 51, 130, 165, -1, -1, + 52, 131, 165, -1, -1, 36, 132, 164, -1, -1, + 37, 133, 164, -1, -1, 32, 134, 165, -1, -1, + 33, 135, 165, -1, -1, 111, 136, 165, -1, -1, + 114, 137, 165, -1, -1, 69, 138, 167, -1, -1, + 107, 139, 164, -1, -1, 105, 140, 164, -1, -1, + 36, 141, 168, -1, -1, 37, 142, 168, -1, -1, + 113, 143, 168, -1, -1, 46, 144, 168, -1, 26, + 3, 116, 3, -1, 20, 3, 116, 3, -1, 28, + 3, 116, 3, -1, 23, 3, 116, 3, -1, 26, + 3, 116, 176, 117, 3, 118, 183, -1, 20, 3, + 116, 176, 117, 3, 118, 183, -1, 28, 3, 116, + 176, 117, 3, 118, 183, -1, 23, 3, 116, 176, + 117, 3, 118, 183, -1, -1, 43, 145, 171, -1, + -1, 39, 146, 171, -1, -1, 38, 147, 171, -1, + -1, 41, 148, 171, -1, -1, 40, 149, 171, -1, + -1, 44, 150, 173, -1, -1, 87, 151, 173, -1, + 95, 12, 3, -1, 95, 180, 176, 117, 3, 118, + -1, 22, 115, 6, 116, 176, 117, 3, 118, 183, + -1, 23, 115, 6, 116, 176, 117, 3, 118, 183, + -1, 56, 3, 116, 3, -1, 57, 3, 116, 3, + -1, 49, 3, 116, 3, -1, 50, 3, 116, 3, + -1, 63, 3, -1, 64, 3, -1, 59, 3, -1, + 60, 3, -1, 61, 3, -1, 78, 115, 6, -1, + 53, 180, 3, 116, 117, 3, 120, 118, -1, 53, + 180, 3, 116, 117, 119, 3, 118, -1, 53, 180, + 117, 3, 120, 118, 116, 3, -1, 53, 180, 117, + 119, 3, 118, 116, 3, -1, 54, 181, 117, 3, + 120, 118, 116, 3, -1, 54, 181, 117, 119, 3, + 118, 116, 3, -1, -1, 85, 152, 169, -1, -1, + 86, 153, 169, -1, -1, 81, 154, 169, -1, -1, + 80, 155, 169, -1, 65, 3, 116, 5, -1, 62, + 5, 116, 3, -1, 85, 115, 6, 116, 3, -1, + 86, 115, 6, 116, 3, -1, 65, 115, 6, 116, + 5, -1, 22, 115, 6, 116, 3, -1, 23, 115, + 6, 116, 3, -1, 53, 180, 3, 116, 117, 3, + 116, 3, 118, -1, 53, 180, 117, 3, 116, 3, + 118, 116, 3, -1, 54, 181, 117, 3, 116, 3, + 118, 116, 3, -1, -1, 108, 156, 161, -1, -1, + 18, 157, 161, -1, -1, 55, 158, 161, -1, -1, + 19, 159, 161, -1, -1, 70, 160, 161, -1, 94, + 115, 6, 116, 3, -1, 3, 116, 3, -1, 176, + 117, 3, 118, 14, 116, 3, -1, 176, 117, 3, + 118, 179, 116, 3, -1, 3, 116, 3, 116, 3, + -1, 3, 116, 3, -1, 176, 117, 3, 118, 182, + 116, 3, -1, 3, 116, 3, -1, 176, 117, 3, + 118, 14, 116, 3, -1, 176, 117, 3, 118, 179, + 116, 3, -1, 115, 6, 116, 3, -1, 163, -1, + 164, -1, 162, -1, 164, -1, 3, 116, 3, -1, + 3, -1, 3, 116, 3, -1, 176, 117, 3, 118, + 14, 116, 3, -1, 176, 117, 3, 118, 179, 116, + 3, -1, 3, 116, 3, -1, 115, 6, 116, 3, + -1, 115, 6, 116, 3, 116, 3, -1, 169, -1, + -1, 172, 115, 6, 116, 3, -1, 173, -1, -1, + 174, 3, 116, 3, -1, -1, 175, 176, 117, 3, + 118, 182, 116, 3, -1, -1, 6, -1, -1, 178, + 4, -1, 10, -1, 11, -1, -1, 12, -1, 15, + -1, -1, 10, -1, 11, -1, 12, -1, -1, 10, + -1, 11, -1, -1, 12, -1, -1, 10, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 174, 174, 179, 182, 185, 188, 193, 208, 211, + 216, 225, 230, 238, 241, 246, 248, 250, 255, 273, + 281, 287, 295, 304, 309, 312, 317, 322, 325, 333, + 340, 348, 354, 360, 366, 372, 380, 390, 395, 395, + 396, 396, 397, 397, 401, 414, 427, 432, 437, 439, + 444, 449, 451, 453, 458, 463, 468, 476, 484, 486, + 491, 493, 495, 497, 502, 504, 506, 508, 513, 515, + 517, 522, 527, 529, 531, 533, 538, 544, 552, 566, + 571, 576, 581, 586, 591, 593, 595, 600, 605, 605, + 606, 606, 607, 607, 608, 608, 609, 609, 610, 610, + 611, 611, 612, 612, 613, 613, 614, 614, 615, 615, + 616, 616, 617, 617, 618, 618, 619, 619, 623, 623, + 624, 624, 625, 625, 626, 626, 630, 632, 634, 636, + 639, 641, 643, 645, 650, 650, 651, 651, 652, 652, + 653, 653, 654, 654, 655, 655, 656, 656, 660, 662, + 667, 673, 679, 681, 683, 685, 691, 693, 695, 697, + 699, 702, 713, 715, 720, 722, 727, 729, 734, 734, + 735, 735, 736, 736, 737, 737, 741, 747, 752, 754, + 759, 764, 770, 775, 778, 781, 786, 786, 787, 787, + 788, 788, 789, 789, 790, 790, 795, 805, 807, 809, + 811, 818, 820, 828, 830, 832, 838, 843, 844, 848, + 849, 853, 855, 861, 863, 865, 872, 876, 878, 880, + 885, 885, 888, 892, 892, 895, 895, 902, 903, 906, + 906, 911, 912, 913, 914, 915, 918, 919, 920, 921, + 924, 925, 926, 929, 930, 933, 934 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "REG", "FLAG", "CREG", "EXPR", + "UNKNOWN_OPCODE", "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L", + "DOT_A", "DOT_UB", "DOT_UW", "ABS", "ADC", "ADD", "AND_", "BCLR", "BCND", + "BMCND", "BNOT", "BRA", "BRK", "BSET", "BSR", "BTST", "CLRPSW", "CMP", + "DBT", "DIV", "DIVU", "EDIV", "EDIVU", "EMUL", "EMULU", "FADD", "FCMP", + "FDIV", "FMUL", "FREIT", "FSUB", "FTOI", "INT", "ITOF", "JMP", "JSR", + "MACHI", "MACLO", "MAX", "MIN", "MOV", "MOVU", "MUL", "MULHI", "MULLO", + "MULU", "MVFACHI", "MVFACMI", "MVFACLO", "MVFC", "MVTACHI", "MVTACLO", + "MVTC", "MVTIPL", "NEG", "NOP", "NOT", "OR", "POP", "POPC", "POPM", + "PUSH", "PUSHA", "PUSHC", "PUSHM", "RACW", "REIT", "REVL", "REVW", + "RMPA", "ROLC", "RORC", "ROTL", "ROTR", "ROUND", "RTE", "RTFI", "RTS", + "RTSD", "SAT", "SATR", "SBB", "SCCND", "SCMPU", "SETPSW", "SHAR", "SHLL", + "SHLR", "SMOVB", "SMOVF", "SMOVU", "SSTR", "STNZ", "STOP", "STZ", "SUB", + "SUNTIL", "SWHILE", "TST", "WAIT", "XCHG", "XOR", "'#'", "','", "'['", + "']'", "'-'", "'+'", "$accept", "statement", "@1", "@2", "@3", "@4", + "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15", + "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "@24", "@25", + "@26", "@27", "@28", "@29", "@30", "@31", "@32", "@33", "@34", "@35", + "@36", "@37", "@38", "op_subadd", "op_dp20_rm_l", "op_dp20_rm", + "op_dp20_i", "op_dp20_rim", "op_dp20_rim_l", "op_dp20_rr", "op_xchg", + "op_shift_rot", "op_shift", "float2_op", "@39", "float2_op_ni", "@40", + "@41", "disp", "flag", "@42", "memex", "bwl", "bw", "opt_l", "opt_b", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 35, 44, 91, 93, 45, + 43 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 121, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 123, 122, + 124, 122, 125, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 126, 122, + 127, 122, 128, 122, 129, 122, 130, 122, 131, 122, + 132, 122, 133, 122, 134, 122, 135, 122, 136, 122, + 137, 122, 138, 122, 139, 122, 140, 122, 141, 122, + 142, 122, 143, 122, 144, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 145, 122, 146, 122, 147, 122, + 148, 122, 149, 122, 150, 122, 151, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 152, 122, + 153, 122, 154, 122, 155, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 156, 122, 157, 122, + 158, 122, 159, 122, 160, 122, 122, 161, 161, 161, + 161, 162, 162, 163, 163, 163, 164, 165, 165, 166, + 166, 167, 167, 168, 168, 168, 169, 170, 170, 170, + 172, 171, 171, 174, 173, 175, 173, 176, 176, 178, + 177, 179, 179, 179, 179, 179, 180, 180, 180, 180, + 181, 181, 181, 182, 182, 183, 183 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 2, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, 2, 9, + 9, 9, 7, 4, 8, 8, 5, 7, 8, 5, + 5, 5, 5, 5, 5, 6, 5, 3, 0, 3, + 0, 3, 0, 3, 4, 4, 7, 3, 5, 5, + 5, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, + 2, 2, 1, 1, 1, 1, 3, 8, 8, 7, + 10, 11, 5, 7, 9, 9, 9, 6, 0, 3, + 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, + 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, + 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, + 0, 3, 0, 3, 0, 3, 4, 4, 4, 4, + 8, 8, 8, 8, 0, 3, 0, 3, 0, 3, + 0, 3, 0, 3, 0, 3, 0, 3, 3, 6, + 9, 9, 4, 4, 4, 4, 2, 2, 2, 2, + 2, 3, 8, 8, 8, 8, 8, 8, 0, 3, + 0, 3, 0, 3, 0, 3, 4, 4, 5, 5, + 5, 5, 5, 9, 9, 9, 0, 3, 0, 3, + 0, 3, 0, 3, 0, 3, 5, 3, 7, 7, + 5, 3, 7, 3, 7, 7, 4, 1, 1, 1, + 1, 3, 1, 3, 7, 7, 3, 4, 6, 1, + 0, 5, 1, 0, 4, 0, 8, 0, 1, 0, + 2, 1, 1, 0, 1, 1, 0, 1, 1, 1, + 0, 1, 1, 0, 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 2, 94, 92, 188, 192, 0, 0, 0, 0, + 243, 3, 0, 243, 0, 229, 227, 4, 104, 106, + 118, 120, 138, 136, 142, 140, 134, 144, 0, 124, + 0, 0, 0, 0, 96, 98, 236, 240, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, + 6, 112, 194, 0, 0, 0, 236, 0, 0, 0, + 174, 172, 236, 0, 0, 168, 170, 146, 73, 72, + 5, 0, 0, 75, 88, 236, 64, 229, 40, 42, + 38, 66, 67, 65, 236, 116, 114, 186, 236, 236, + 108, 74, 122, 110, 0, 0, 227, 0, 227, 0, + 227, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 244, 0, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 59, 0, 0, 228, 0, + 0, 227, 227, 0, 227, 0, 227, 225, 225, 225, + 225, 225, 225, 0, 227, 60, 61, 0, 0, 227, + 227, 237, 238, 239, 0, 0, 241, 242, 0, 0, + 227, 0, 0, 158, 159, 160, 0, 156, 157, 0, + 0, 0, 0, 0, 0, 227, 55, 57, 0, 237, + 238, 239, 227, 56, 0, 0, 0, 0, 71, 53, + 52, 0, 0, 0, 0, 225, 0, 51, 0, 227, + 239, 227, 58, 0, 0, 0, 70, 0, 0, 0, + 227, 68, 69, 227, 227, 227, 1, 212, 95, 0, + 0, 209, 210, 93, 0, 0, 0, 189, 0, 0, + 193, 227, 0, 12, 13, 17, 0, 227, 0, 9, + 14, 15, 8, 62, 227, 0, 16, 11, 63, 227, + 0, 230, 0, 0, 0, 0, 207, 208, 105, 0, + 107, 101, 0, 119, 0, 103, 121, 139, 0, 222, + 0, 227, 137, 143, 141, 135, 145, 47, 125, 0, + 0, 97, 99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, + 76, 91, 113, 0, 195, 0, 54, 0, 0, 161, + 0, 175, 173, 0, 169, 0, 171, 147, 37, 0, + 89, 148, 0, 0, 219, 41, 43, 39, 117, 115, + 0, 187, 109, 123, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 0, 227, 227, 129, 0, 227, + 126, 0, 227, 128, 0, 227, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 154, 155, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 153, 177, 176, 0, 0, 45, 0, 44, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 201, + 0, 0, 31, 197, 0, 33, 0, 49, 0, 181, + 0, 0, 182, 0, 0, 48, 0, 0, 50, 0, + 30, 233, 203, 0, 213, 0, 0, 0, 0, 227, + 227, 227, 36, 82, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 32, 180, 34, + 0, 216, 178, 179, 0, 196, 0, 0, 29, 206, + 243, 0, 0, 233, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 232, 234, 0, 235, 0, 233, + 233, 0, 224, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, + 0, 87, 0, 149, 217, 0, 46, 200, 0, 0, + 245, 0, 0, 245, 0, 245, 0, 245, 0, 0, + 0, 0, 0, 0, 0, 221, 243, 0, 0, 0, + 0, 0, 79, 0, 0, 227, 0, 83, 0, 0, + 0, 0, 0, 27, 0, 0, 22, 0, 0, 0, + 0, 246, 131, 0, 245, 133, 245, 130, 0, 132, + 0, 24, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 162, 163, 78, 0, 0, 0, 164, + 165, 28, 0, 166, 167, 218, 202, 198, 199, 85, + 150, 151, 84, 86, 204, 205, 214, 215, 0, 19, + 20, 21, 183, 0, 184, 0, 185, 226, 0, 80, + 81 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 94, 205, 203, 204, 199, 172, 96, 95, 149, + 150, 133, 135, 131, 132, 213, 215, 173, 208, 207, + 134, 136, 214, 144, 141, 138, 137, 140, 139, 142, + 195, 192, 194, 187, 186, 210, 98, 160, 100, 175, + 227, 221, 256, 257, 258, 223, 218, 263, 324, 325, + 267, 268, 269, 270, 271, 259, 125, 126, 478, 155, + 158, 116, 552 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -483 +static const yytype_int16 yypact[] = +{ + 504, -483, -483, -483, -78, -55, 16, 141, -53, 18, + 34, -483, 19, 75, 20, -483, 1, -483, -483, -483, + -49, -32, -483, -483, -483, -483, -483, -483, -30, -483, + 51, 92, 127, 145, -483, -483, 17, 79, 45, 146, + 158, 177, 193, 194, 188, 196, 200, 21, 89, -483, + -483, -483, 90, 203, 202, 205, 67, 204, 207, 96, + -483, -483, 67, 209, 210, 99, 101, -483, -483, -483, + -483, 102, 215, -483, 104, 190, -483, -483, -483, -483, + -483, -483, -483, -483, 67, -483, -483, 105, 67, 67, + -483, -483, -483, -483, 222, 220, 12, 218, 47, 219, + 47, 110, 221, -483, 223, 224, 225, 226, 118, 229, + -483, 230, 231, 232, -483, 233, 237, 125, 236, -483, + 238, 239, 240, 130, 241, -483, 244, 133, -483, 245, + 135, 14, 14, 138, 53, 138, 53, 22, 22, 22, + 22, 22, 247, 248, 53, -483, -483, 140, 142, 14, + 14, 144, 147, 148, 251, 6, -483, -483, 7, 254, + 47, 149, 150, -483, -483, -483, 151, -483, -483, 152, + 255, 258, 220, 220, 263, 47, -483, -483, 153, -483, + -483, -483, 64, -483, 154, 264, 268, 268, -483, -483, + -483, 269, 268, 270, 268, 247, 271, -483, 272, 98, + 276, 274, -483, 23, 23, 23, -483, 138, 138, 275, + 47, -483, -483, 14, 53, 14, -483, 167, -483, 168, + 279, -483, -483, -483, 157, 173, 174, -483, 169, 175, + -483, 164, 179, -483, -483, -483, 180, 165, 181, -483, + -483, -483, -483, -483, 166, 182, -483, -483, -483, 170, + 186, -483, 284, 187, 285, 191, -483, -483, -483, 192, + -483, -483, 195, -483, 197, -483, -483, -483, 198, -483, + 289, 274, -483, -483, -483, -483, -483, -483, -483, 290, + 291, -483, -483, 293, 294, 295, 199, 201, 206, 0, + 208, 211, 2, 216, -483, 301, 302, 303, 277, 227, + -483, -483, -483, 228, -483, 305, -483, 214, 307, -483, + 234, -483, -483, 235, -483, 242, -483, -483, 243, 246, + -483, -483, 217, 306, -483, -483, -483, -483, -483, -483, + 249, -483, -483, -483, -483, 313, 315, 250, 316, 317, + 318, 319, 322, -483, 252, 171, 172, -483, 253, 176, + -483, 256, 178, -483, 257, 183, -483, 323, 259, 324, + 332, 334, 335, 336, 260, 261, -483, -483, 265, 266, + 267, 337, 8, 338, -45, 342, 343, 344, 37, 345, + 346, -483, -483, -483, -483, 347, 350, -483, 351, -483, + 352, 353, 354, 357, 358, 360, 273, 361, -483, -483, + 364, 262, 278, 280, 281, -483, 365, -483, 283, -483, + 286, 368, -483, 287, 369, -483, 288, 372, -483, 292, + -483, 82, -483, 298, -483, 299, 282, 376, 381, 274, + 274, 184, -483, -483, 304, 3, 300, 382, 296, 308, + 309, -483, 310, 383, 314, 311, 320, -483, -483, -483, + 321, -483, -483, -483, 312, -483, 325, 384, -483, -483, + 378, 385, 388, 88, 326, 389, 390, 327, 392, 328, + 394, 329, 398, -483, -483, -483, 333, -483, 339, 95, + 131, 399, -483, 340, 348, 349, -483, 355, 403, 38, + 404, 341, 356, 185, 359, 362, 363, 366, 405, 367, + 370, -483, 407, -483, 371, 373, -483, -483, 374, 375, + 401, 377, 379, 401, 380, 401, 386, 401, 387, 416, + 417, 391, 393, 396, 397, -483, 378, 419, 420, 421, + 400, 422, -483, 428, 444, 189, 423, -483, 462, 429, + 430, 431, 467, -483, 432, 433, -483, 434, 437, 438, + 439, -483, -483, 440, 401, -483, 401, -483, 441, -483, + 442, -483, -483, 450, 451, 453, 456, 494, 501, 502, + 503, -483, 505, -483, -483, -483, 507, 457, 458, -483, + -483, -483, 459, -483, -483, -483, -483, -483, -483, -483, + -483, -483, -483, -483, -483, -483, -483, -483, 460, -483, + -483, -483, -483, 461, -483, 508, -483, -483, 509, -483, + -483 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -483, -483, -483, -483, -483, -483, -483, -483, -483, -483, + -483, -483, -483, -483, -483, -483, -483, -483, -483, -483, + -483, -483, -483, -483, -483, -483, -483, -483, -483, -483, + -483, -483, -483, -483, -483, -483, -483, -483, -483, -483, + -84, 297, -483, -94, -98, -483, -61, -106, -129, -65, + 24, -483, -134, -483, -483, -16, 408, -483, -431, -20, + -483, -12, -482 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -224 +static const yytype_int16 yytable[] = +{ + 130, 122, 222, 374, 127, 378, 489, 128, 276, 287, + 290, 433, 288, 291, 434, 219, 230, 255, 128, 101, + 128, 108, 117, 123, 169, -223, 310, 151, 152, 153, + 266, 555, 509, 557, 260, 559, 182, 97, 278, 261, + 110, 265, 188, 111, 112, 113, 114, 115, 522, 524, + 226, 281, 282, 128, 145, 201, 262, 311, 312, 128, + 99, 317, 107, 314, 206, 316, -100, 306, 211, 212, + 128, 437, 590, 438, 591, 439, 294, 179, 180, 181, + 224, 119, 228, -102, 228, 143, 120, 114, 121, 156, + 157, 304, 473, 474, 475, 146, 476, 477, 473, 474, + 475, 219, 508, 477, 128, 473, 474, 475, 333, 521, + 477, 301, 302, 328, 329, 332, 129, 334, 264, 375, + 264, 379, 490, 289, 292, 435, 331, 220, 264, 220, + 147, 102, 154, 109, 118, 124, 170, -220, 323, 326, + 327, 473, 474, 475, 228, 523, 477, 103, 148, 161, + 104, 105, 106, 443, 531, 444, 532, 445, 533, 228, + 159, 162, 272, 273, 274, 275, 307, 343, 347, 350, + 128, 128, 128, 353, 407, 409, 128, 128, 128, 412, + 163, 415, 128, 224, 128, 322, 418, 486, 537, 128, + 128, 128, 575, 166, 228, 128, 164, 165, 264, 167, + 179, 180, 200, 168, 171, 174, 176, 177, 178, 183, + 184, 185, 189, 190, 191, 344, 193, 196, 197, 198, + 209, 348, 216, 217, 225, 229, 231, 232, 351, 233, + 234, 235, 236, 354, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 248, 246, 247, 249, 250, 251, 252, + -223, 253, 254, 220, 277, 365, 279, 286, 280, 283, + 293, 299, 284, 285, 300, 295, 296, 297, 298, 303, + 309, 310, 305, 308, 338, 313, 315, 318, 319, 321, + 128, 330, 384, 335, 336, 337, 341, 356, 358, 339, + 340, 342, 364, 366, 367, 345, 346, 349, 352, 368, + 369, 370, 355, 357, 381, 382, 383, 359, 387, 360, + 389, 361, 396, 363, 362, 371, 398, 372, 399, 401, + 402, 403, 404, 373, 376, 405, 420, 422, 377, 408, + 410, 388, 380, 413, 395, 423, 416, 424, 425, 419, + 432, 436, 426, 385, 386, 440, 441, 442, 446, 447, + 390, 391, 448, 449, 450, 451, 452, 453, 392, 393, + 454, 455, 394, 456, 458, 397, 400, 459, 464, 406, + 411, 467, 469, 414, 417, 471, 427, 421, 428, 482, + 460, 429, 430, 431, 483, 492, 497, 504, 506, 457, + 114, 507, 511, 512, 461, 514, 462, 516, 481, 463, + 465, 518, 525, 466, 468, 470, 530, 534, 543, 472, + 546, 551, 493, 484, 485, 487, 479, 480, 491, 561, + 562, 488, 568, 569, 570, 572, 494, 495, 496, 499, + 498, 502, 579, 580, 581, 583, 584, 585, 500, 501, + 586, 587, 588, 503, 510, 513, 515, 517, 505, 519, + 589, 592, 593, 594, 595, 520, 596, 535, 526, 597, + 604, 605, 606, 607, 608, 527, 528, 0, 0, 0, + 0, 0, 529, 0, 536, 539, 0, 538, 540, 541, + 0, 0, 0, 544, 542, 202, 545, 547, 0, 548, + 549, 550, 0, 0, 0, 553, 320, 554, 556, 0, + 0, 0, 0, 0, 558, 560, 0, 563, 0, 564, + 0, 1, 565, 566, 567, 0, 0, 0, 571, 576, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 0, 577, + 20, 21, 22, 23, 24, 25, 573, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 574, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 578, + 57, 58, 59, 582, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 598, 86, 87, 88, 89, 90, 91, 92, 93, 599, + 600, 601, 0, 602, 603, 0, 609, 610 +}; + +static const yytype_int16 yycheck[] = +{ + 16, 13, 96, 3, 3, 3, 3, 6, 142, 3, + 3, 3, 6, 6, 6, 3, 100, 3, 6, 3, + 6, 3, 3, 3, 3, 3, 3, 10, 11, 12, + 136, 513, 463, 515, 132, 517, 56, 115, 144, 133, + 6, 135, 62, 9, 10, 11, 12, 13, 479, 480, + 3, 149, 150, 6, 3, 75, 3, 186, 187, 6, + 115, 195, 115, 192, 84, 194, 115, 3, 88, 89, + 6, 116, 554, 118, 556, 120, 160, 10, 11, 12, + 96, 6, 98, 115, 100, 115, 11, 12, 13, 10, + 11, 175, 10, 11, 12, 3, 14, 15, 10, 11, + 12, 3, 14, 15, 6, 10, 11, 12, 214, 14, + 15, 172, 173, 207, 208, 213, 115, 215, 134, 119, + 136, 119, 119, 117, 117, 117, 210, 115, 144, 115, + 3, 115, 115, 115, 115, 115, 115, 115, 115, 204, + 205, 10, 11, 12, 160, 14, 15, 6, 3, 3, + 9, 10, 11, 116, 116, 118, 118, 120, 120, 175, + 115, 3, 138, 139, 140, 141, 182, 3, 3, 3, + 6, 6, 6, 3, 3, 3, 6, 6, 6, 3, + 3, 3, 6, 199, 6, 201, 3, 3, 3, 6, + 6, 6, 3, 5, 210, 6, 3, 3, 214, 3, + 10, 11, 12, 3, 115, 115, 3, 5, 3, 5, + 3, 115, 3, 3, 115, 231, 115, 115, 3, 115, + 115, 237, 0, 3, 6, 6, 116, 6, 244, 6, + 6, 6, 6, 249, 116, 6, 6, 6, 6, 6, + 3, 116, 6, 3, 6, 6, 116, 6, 4, 116, + 3, 6, 117, 115, 6, 271, 116, 6, 116, 115, + 6, 6, 115, 115, 6, 116, 116, 116, 116, 6, + 6, 3, 119, 119, 117, 6, 6, 6, 6, 3, + 6, 6, 5, 116, 116, 6, 117, 3, 3, 116, + 116, 116, 3, 3, 3, 116, 116, 116, 116, 6, + 6, 6, 116, 116, 3, 3, 3, 116, 3, 117, + 3, 116, 6, 115, 117, 116, 3, 116, 3, 3, + 3, 3, 3, 117, 116, 3, 3, 3, 117, 345, + 346, 117, 116, 349, 117, 3, 352, 3, 3, 355, + 3, 3, 6, 116, 116, 3, 3, 3, 3, 3, + 116, 116, 5, 3, 3, 3, 3, 3, 116, 116, + 3, 3, 116, 3, 3, 116, 116, 3, 3, 117, + 117, 3, 3, 117, 117, 3, 116, 118, 117, 3, + 118, 116, 116, 116, 3, 3, 3, 3, 3, 116, + 12, 3, 3, 3, 116, 3, 116, 3, 116, 118, + 117, 3, 3, 117, 117, 117, 3, 3, 3, 117, + 3, 10, 116, 429, 430, 431, 118, 118, 118, 3, + 3, 117, 3, 3, 3, 3, 118, 118, 118, 118, + 116, 119, 3, 3, 3, 3, 3, 3, 118, 118, + 3, 3, 3, 118, 118, 118, 118, 118, 460, 116, + 10, 10, 10, 3, 3, 116, 3, 116, 118, 3, + 3, 3, 3, 3, 3, 117, 117, -1, -1, -1, + -1, -1, 117, -1, 118, 116, -1, 493, 116, 116, + -1, -1, -1, 116, 118, 77, 116, 116, -1, 116, + 116, 116, -1, -1, -1, 118, 199, 118, 118, -1, + -1, -1, -1, -1, 118, 118, -1, 116, -1, 116, + -1, 7, 116, 116, 526, -1, -1, -1, 118, 535, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, -1, 116, + 36, 37, 38, 39, 40, 41, 118, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 118, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 117, + 76, 77, 78, 116, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 116, 107, 108, 109, 110, 111, 112, 113, 114, 118, + 118, 118, -1, 118, 117, -1, 118, 118 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 7, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, + 111, 112, 113, 114, 122, 129, 128, 115, 157, 115, + 159, 3, 115, 6, 9, 10, 11, 115, 3, 115, + 6, 9, 10, 11, 12, 13, 182, 3, 115, 6, + 11, 13, 182, 3, 115, 177, 178, 3, 6, 115, + 176, 134, 135, 132, 141, 133, 142, 147, 146, 149, + 148, 145, 150, 115, 144, 3, 3, 3, 3, 130, + 131, 10, 11, 12, 115, 180, 10, 11, 181, 115, + 158, 3, 3, 3, 3, 3, 5, 3, 3, 3, + 115, 115, 127, 138, 115, 160, 3, 5, 3, 10, + 11, 12, 180, 5, 3, 115, 155, 154, 180, 3, + 3, 115, 152, 115, 153, 151, 115, 3, 115, 126, + 12, 180, 177, 124, 125, 123, 180, 140, 139, 115, + 156, 180, 180, 136, 143, 137, 0, 3, 167, 3, + 115, 162, 164, 166, 176, 6, 3, 161, 176, 6, + 161, 116, 6, 6, 6, 6, 6, 116, 6, 6, + 6, 6, 6, 3, 116, 6, 6, 6, 3, 116, + 6, 4, 116, 6, 117, 3, 163, 164, 165, 176, + 165, 164, 3, 168, 176, 164, 168, 171, 172, 173, + 174, 175, 171, 171, 171, 171, 173, 6, 168, 116, + 116, 165, 165, 115, 115, 115, 6, 3, 6, 117, + 3, 6, 117, 6, 161, 116, 116, 116, 116, 6, + 6, 167, 167, 6, 161, 119, 3, 176, 119, 6, + 3, 169, 169, 6, 169, 6, 169, 173, 6, 6, + 162, 3, 176, 115, 169, 170, 170, 170, 164, 164, + 6, 161, 165, 168, 165, 116, 116, 6, 117, 116, + 116, 117, 116, 3, 176, 116, 116, 3, 176, 116, + 3, 176, 116, 3, 176, 116, 3, 116, 3, 116, + 117, 116, 117, 115, 3, 176, 3, 3, 6, 6, + 6, 116, 116, 117, 3, 119, 116, 117, 3, 119, + 116, 3, 3, 3, 5, 116, 116, 3, 117, 3, + 116, 116, 116, 116, 116, 117, 6, 116, 3, 3, + 116, 3, 3, 3, 3, 3, 117, 3, 176, 3, + 176, 117, 3, 176, 117, 3, 176, 117, 3, 176, + 3, 118, 3, 3, 3, 3, 6, 116, 117, 116, + 116, 116, 3, 3, 6, 117, 3, 116, 118, 120, + 3, 3, 3, 116, 118, 120, 3, 3, 5, 3, + 3, 3, 3, 3, 3, 3, 3, 116, 3, 3, + 118, 116, 116, 118, 3, 117, 117, 3, 117, 3, + 117, 3, 117, 10, 11, 12, 14, 15, 179, 118, + 118, 116, 3, 3, 176, 176, 3, 176, 117, 3, + 119, 118, 3, 116, 118, 118, 118, 3, 116, 118, + 118, 118, 119, 118, 3, 182, 3, 3, 14, 179, + 118, 3, 3, 118, 3, 118, 3, 118, 3, 116, + 116, 14, 179, 14, 179, 3, 118, 117, 117, 117, + 3, 116, 118, 120, 3, 116, 118, 3, 176, 116, + 116, 116, 118, 3, 116, 116, 3, 116, 116, 116, + 116, 10, 183, 118, 118, 183, 118, 183, 118, 183, + 118, 3, 3, 116, 116, 116, 116, 182, 3, 3, + 3, 118, 3, 118, 118, 3, 176, 116, 117, 3, + 3, 3, 116, 3, 3, 3, 3, 3, 3, 10, + 183, 183, 10, 10, 3, 3, 3, 3, 116, 118, + 118, 118, 118, 117, 3, 3, 3, 3, 3, 118, + 118 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 175 "rx-parse.y" + { as_bad (_("Unknown opcode: %s"), rx_init_start); } + break; + + case 3: +#line 180 "rx-parse.y" + { B1 (0x00); } + break; + + case 4: +#line 183 "rx-parse.y" + { B1 (0x01); } + break; + + case 5: +#line 186 "rx-parse.y" + { B1 (0x02); } + break; + + case 6: +#line 189 "rx-parse.y" + { B1 (0x03); } + break; + + case 7: +#line 194 "rx-parse.y" + { if (rx_disp3op ((yyvsp[(2) - (2)].exp))) + { B1 (0x08); rx_disp3 ((yyvsp[(2) - (2)].exp), 5); } + else if (rx_intop ((yyvsp[(2) - (2)].exp), 8, 8)) + { B1 (0x2e); PC1 ((yyvsp[(2) - (2)].exp)); } + else if (rx_intop ((yyvsp[(2) - (2)].exp), 16, 16)) + { B1 (0x38); PC2 ((yyvsp[(2) - (2)].exp)); } + else if (rx_intop ((yyvsp[(2) - (2)].exp), 24, 24)) + { B1 (0x04); PC3 ((yyvsp[(2) - (2)].exp)); } + else + { rx_relax (RX_RELAX_BRANCH, 0); + rx_linkrelax_branch (); + /* We'll convert this to a longer one later if needed. */ + B1 (0x08); rx_disp3 ((yyvsp[(2) - (2)].exp), 5); } } + break; + + case 8: +#line 209 "rx-parse.y" + { B1 (0x04); PC3 ((yyvsp[(3) - (3)].exp)); } + break; + + case 9: +#line 212 "rx-parse.y" + { B1 (0x08); rx_disp3 ((yyvsp[(3) - (3)].exp), 5); } + break; + + case 10: +#line 217 "rx-parse.y" + { if (rx_intop ((yyvsp[(2) - (2)].exp), 16, 16)) + { B1 (0x39); PC2 ((yyvsp[(2) - (2)].exp)); } + else if (rx_intop ((yyvsp[(2) - (2)].exp), 24, 24)) + { B1 (0x05); PC3 ((yyvsp[(2) - (2)].exp)); } + else + { rx_relax (RX_RELAX_BRANCH, 0); + rx_linkrelax_branch (); + B1 (0x39); PC2 ((yyvsp[(2) - (2)].exp)); } } + break; + + case 11: +#line 226 "rx-parse.y" + { B1 (0x05), PC3 ((yyvsp[(3) - (3)].exp)); } + break; + + case 12: +#line 231 "rx-parse.y" + { if ((yyvsp[(1) - (3)].regno) == COND_EQ || (yyvsp[(1) - (3)].regno) == COND_NE) + { B1 ((yyvsp[(1) - (3)].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[(3) - (3)].exp), 5); } + else + as_bad (_("Only BEQ and BNE may have .S")); } + break; + + case 13: +#line 239 "rx-parse.y" + { B1 (0x20); F ((yyvsp[(1) - (3)].regno), 4, 4); PC1 ((yyvsp[(3) - (3)].exp)); } + break; + + case 14: +#line 242 "rx-parse.y" + { B1 (0x2e), PC1 ((yyvsp[(3) - (3)].exp)); } + break; + + case 15: +#line 247 "rx-parse.y" + { B1 (0x38), PC2 ((yyvsp[(3) - (3)].exp)); } + break; + + case 16: +#line 249 "rx-parse.y" + { B1 (0x39), PC2 ((yyvsp[(3) - (3)].exp)); } + break; + + case 17: +#line 251 "rx-parse.y" + { if ((yyvsp[(1) - (3)].regno) == COND_EQ || (yyvsp[(1) - (3)].regno) == COND_NE) + { B1 ((yyvsp[(1) - (3)].regno) == COND_EQ ? 0x3a : 0x3b); PC2 ((yyvsp[(3) - (3)].exp)); } + else + as_bad (_("Only BEQ and BNE may have .W")); } + break; + + case 18: +#line 256 "rx-parse.y" + { if ((yyvsp[(1) - (2)].regno) == COND_EQ || (yyvsp[(1) - (2)].regno) == COND_NE) + { + rx_relax (RX_RELAX_BRANCH, 0); + rx_linkrelax_branch (); + B1 ((yyvsp[(1) - (2)].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[(2) - (2)].exp), 5); + } + else + { + rx_relax (RX_RELAX_BRANCH, 0); + /* This is because we might turn it into a + jump-over-jump long branch. */ + rx_linkrelax_branch (); + B1 (0x20); F ((yyvsp[(1) - (2)].regno), 4, 4); PC1 ((yyvsp[(2) - (2)].exp)); + } } + break; + + case 19: +#line 275 "rx-parse.y" + { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), BSIZE)) + { B2 (0x3c, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); } + else + { B2 (0xf8, 0x04); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, BSIZE); O1 ((yyvsp[(4) - (9)].exp)); + if ((yyvsp[(4) - (9)].exp).X_op != O_constant && (yyvsp[(4) - (9)].exp).X_op != O_big) rx_linkrelax_imm (12); } } + break; + + case 20: +#line 282 "rx-parse.y" + { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), WSIZE)) + { B2 (0x3d, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); } + else + { B2 (0xf8, 0x01); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, WSIZE); IMMW ((yyvsp[(4) - (9)].exp), 12); } } + break; + + case 21: +#line 288 "rx-parse.y" + { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), LSIZE)) + { B2 (0x3e, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); } + else + { B2 (0xf8, 0x02); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, LSIZE); IMM ((yyvsp[(4) - (9)].exp), 12); } } + break; + + case 22: +#line 296 "rx-parse.y" + { B2 (0x3f, 0); F ((yyvsp[(5) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); rtsd_immediate ((yyvsp[(3) - (7)].exp)); + if ((yyvsp[(5) - (7)].regno) == 0) + rx_error (_("RTSD cannot pop R0")); + if ((yyvsp[(5) - (7)].regno) > (yyvsp[(7) - (7)].regno)) + rx_error (_("RTSD first reg must be <= second reg")); } + break; + + case 23: +#line 305 "rx-parse.y" + { B2 (0x47, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); } + break; + + case 24: +#line 310 "rx-parse.y" + { B2 (0x44, 0); F ((yyvsp[(4) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(2) - (8)].exp), 6, BSIZE); } + break; + + case 25: +#line 313 "rx-parse.y" + { B3 (MEMEX, 0x04, 0); F ((yyvsp[(6) - (8)].regno), 8, 2); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); DSP ((yyvsp[(2) - (8)].exp), 14, sizemap[(yyvsp[(6) - (8)].regno)]); } + break; + + case 26: +#line 318 "rx-parse.y" + { B2 (0x5b, 0x00); F ((yyvsp[(2) - (5)].regno), 5, 1); F ((yyvsp[(3) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + break; + + case 27: +#line 323 "rx-parse.y" + { B2 (0x58, 0x00); F ((yyvsp[(2) - (7)].regno), 5, 1); F ((yyvsp[(4) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); } + break; + + case 28: +#line 326 "rx-parse.y" + { if ((yyvsp[(5) - (8)].regno) <= 7 && (yyvsp[(8) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(3) - (8)].exp), (yyvsp[(2) - (8)].regno))) + { B2 (0xb0, 0); F ((yyvsp[(2) - (8)].regno), 4, 1); F ((yyvsp[(5) - (8)].regno), 9, 3); F ((yyvsp[(8) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(3) - (8)].exp)); } + else + { B2 (0x58, 0x00); F ((yyvsp[(2) - (8)].regno), 5, 1); F ((yyvsp[(5) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(3) - (8)].exp), 6, (yyvsp[(2) - (8)].regno)); } } + break; + + case 29: +#line 334 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x60, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else + /* This is really an add, but we negate the immediate. */ + { B2 (0x70, 0); F ((yyvsp[(5) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); NIMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 30: +#line 341 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x61, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else if (rx_uintop ((yyvsp[(3) - (5)].exp), 8)) + { B2 (0x75, 0x50); F ((yyvsp[(5) - (5)].regno), 12, 4); UO1 ((yyvsp[(3) - (5)].exp)); } + else + { B2 (0x74, 0x00); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 31: +#line 349 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x62, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else + { B2 (0x70, 0); F ((yyvsp[(5) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 32: +#line 355 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x63, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else + { B2 (0x74, 0x10); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 33: +#line 361 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x64, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else + { B2 (0x74, 0x20); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 34: +#line 367 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x65, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else + { B2 (0x74, 0x30); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } } + break; + + case 35: +#line 373 "rx-parse.y" + { if (rx_uintop ((yyvsp[(4) - (6)].exp), 4)) + { B2 (0x66, 0); FE ((yyvsp[(4) - (6)].exp), 8, 4); F ((yyvsp[(6) - (6)].regno), 12, 4); } + else if (rx_uintop ((yyvsp[(4) - (6)].exp), 8)) + { B2 (0x75, 0x40); F ((yyvsp[(6) - (6)].regno), 12, 4); UO1 ((yyvsp[(4) - (6)].exp)); } + else + { B2 (0xfb, 0x02); F ((yyvsp[(6) - (6)].regno), 8, 4); IMM ((yyvsp[(4) - (6)].exp), 12); } } + break; + + case 36: +#line 381 "rx-parse.y" + { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4)) + { B2 (0x66, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + else if (rx_uintop ((yyvsp[(3) - (5)].exp), 8)) + { B2 (0x75, 0x40); F ((yyvsp[(5) - (5)].regno), 12, 4); UO1 ((yyvsp[(3) - (5)].exp)); } + else + { B2 (0xfb, 0x02); F ((yyvsp[(5) - (5)].regno), 8, 4); IMM ((yyvsp[(3) - (5)].exp), 12); } } + break; + + case 37: +#line 391 "rx-parse.y" + { B1 (0x67); rtsd_immediate ((yyvsp[(3) - (3)].exp)); } + break; + + case 38: +#line 395 "rx-parse.y" + { sub_op = 0; } + break; + + case 40: +#line 396 "rx-parse.y" + { sub_op = 1; } + break; + + case 42: +#line 397 "rx-parse.y" + { sub_op = 2; } + break; + + case 44: +#line 402 "rx-parse.y" + { + if ((yyvsp[(2) - (4)].regno) == (yyvsp[(4) - (4)].regno)) + { B2 (0x7e, 0x80); F (LSIZE, 10, 2); F ((yyvsp[(2) - (4)].regno), 12, 4); } + else + { B2 (0x6e, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); } + if ((yyvsp[(2) - (4)].regno) == 0) + rx_error (_("PUSHM cannot push R0")); + if ((yyvsp[(2) - (4)].regno) > (yyvsp[(4) - (4)].regno)) + rx_error (_("PUSHM first reg must be <= second reg")); } + break; + + case 45: +#line 415 "rx-parse.y" + { + if ((yyvsp[(2) - (4)].regno) == (yyvsp[(4) - (4)].regno)) + { B2 (0x7e, 0xb0); F ((yyvsp[(2) - (4)].regno), 12, 4); } + else + { B2 (0x6f, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); } + if ((yyvsp[(2) - (4)].regno) == 0) + rx_error (_("POPM cannot pop R0")); + if ((yyvsp[(2) - (4)].regno) > (yyvsp[(4) - (4)].regno)) + rx_error (_("POPM first reg must be <= second reg")); } + break; + + case 46: +#line 428 "rx-parse.y" + { B2 (0x70, 0x00); F ((yyvsp[(5) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); IMM ((yyvsp[(3) - (7)].exp), 6); } + break; + + case 47: +#line 433 "rx-parse.y" + { B2(0x75, 0x60), UO1 ((yyvsp[(3) - (3)].exp)); } + break; + + case 48: +#line 438 "rx-parse.y" + { B2 (0x78, 0); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); } + break; + + case 49: +#line 440 "rx-parse.y" + { B2 (0x7a, 0); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); } + break; + + case 50: +#line 445 "rx-parse.y" + { B2 (0x7c, 0x00); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); } + break; + + case 51: +#line 450 "rx-parse.y" + { B2 (0x7e, 0x30); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 52: +#line 452 "rx-parse.y" + { B2 (0x7e, 0x40); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 53: +#line 454 "rx-parse.y" + { B2 (0x7e, 0x50); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 54: +#line 459 "rx-parse.y" + { B2 (0x7e, 0x80); F ((yyvsp[(2) - (3)].regno), 10, 2); F ((yyvsp[(3) - (3)].regno), 12, 4); } + break; + + case 55: +#line 464 "rx-parse.y" + { B2 (0x7e, 0xb0); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 56: +#line 469 "rx-parse.y" + { if ((yyvsp[(2) - (2)].regno) < 16) + { B2 (0x7e, 0xc0); F ((yyvsp[(2) - (2)].regno), 12, 4); } + else + as_bad (_("PUSHC can only push the first 16 control registers")); } + break; + + case 57: +#line 477 "rx-parse.y" + { if ((yyvsp[(2) - (2)].regno) < 16) + { B2 (0x7e, 0xe0); F ((yyvsp[(2) - (2)].regno), 12, 4); } + else + as_bad (_("POPC can only pop the first 16 control registers")); } + break; + + case 58: +#line 485 "rx-parse.y" + { B2 (0x7f, 0xa0); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 59: +#line 487 "rx-parse.y" + { B2 (0x7f, 0xb0); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 60: +#line 492 "rx-parse.y" + { B2 (0x7f, 0x00); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 61: +#line 494 "rx-parse.y" + { B2 (0x7f, 0x10); F ((yyvsp[(2) - (2)].regno), 12, 4); } + break; + + case 62: +#line 496 "rx-parse.y" + { B2 (0x7f, 0x40); F ((yyvsp[(3) - (3)].regno), 12, 4); } + break; + + case 63: +#line 498 "rx-parse.y" + { B2 (0x7f, 0x50); F ((yyvsp[(3) - (3)].regno), 12, 4); } + break; + + case 64: +#line 503 "rx-parse.y" + { B2 (0x7f, 0x83); } + break; + + case 65: +#line 505 "rx-parse.y" + { B2 (0x7f, 0x87); } + break; + + case 66: +#line 507 "rx-parse.y" + { B2 (0x7f, 0x8b); } + break; + + case 67: +#line 509 "rx-parse.y" + { B2 (0x7f, 0x8f); } + break; + + case 68: +#line 514 "rx-parse.y" + { B2 (0x7f, 0x80); F ((yyvsp[(2) - (2)].regno), 14, 2); } + break; + + case 69: +#line 516 "rx-parse.y" + { B2 (0x7f, 0x84); F ((yyvsp[(2) - (2)].regno), 14, 2); } + break; + + case 70: +#line 518 "rx-parse.y" + { B2 (0x7f, 0x88); F ((yyvsp[(2) - (2)].regno), 14, 2); } + break; + + case 71: +#line 523 "rx-parse.y" + { B2 (0x7f, 0x8c); F ((yyvsp[(2) - (2)].regno), 14, 2); } + break; + + case 72: +#line 528 "rx-parse.y" + { B2 (0x7f, 0x94); } + break; + + case 73: +#line 530 "rx-parse.y" + { B2 (0x7f, 0x95); } + break; + + case 74: +#line 532 "rx-parse.y" + { B2 (0x7f, 0x96); } + break; + + case 75: +#line 534 "rx-parse.y" + { B2 (0x7f, 0x93); } + break; + + case 76: +#line 539 "rx-parse.y" + { B3 (0x75, 0x70, 0x00); FE ((yyvsp[(3) - (3)].exp), 20, 4); } + break; + + case 77: +#line 545 "rx-parse.y" + { if ((yyvsp[(3) - (8)].regno) <= 7 && (yyvsp[(7) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(5) - (8)].exp), (yyvsp[(2) - (8)].regno))) + { B2 (0x80, 0); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(7) - (8)].regno), 9, 3); F ((yyvsp[(3) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(5) - (8)].exp)); } + else + { B2 (0xc3, 0x00); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(7) - (8)].regno), 8, 4); F ((yyvsp[(3) - (8)].regno), 12, 4); DSP ((yyvsp[(5) - (8)].exp), 4, (yyvsp[(2) - (8)].regno)); }} + break; + + case 78: +#line 553 "rx-parse.y" + { if ((yyvsp[(5) - (8)].regno) <= 7 && (yyvsp[(8) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(3) - (8)].exp), (yyvsp[(2) - (8)].regno))) + { B2 (0x88, 0); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(5) - (8)].regno), 9, 3); F ((yyvsp[(8) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(3) - (8)].exp)); } + else + { B2 (0xcc, 0x00); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(5) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(3) - (8)].exp), 6, (yyvsp[(2) - (8)].regno)); } } + break; + + case 79: +#line 567 "rx-parse.y" + { B2 (0xc3, 0x00); F ((yyvsp[(2) - (7)].regno), 2, 2); F ((yyvsp[(6) - (7)].regno), 8, 4); F ((yyvsp[(3) - (7)].regno), 12, 4); } + break; + + case 80: +#line 572 "rx-parse.y" + { B2 (0xc0, 0); F ((yyvsp[(2) - (10)].regno), 2, 2); F ((yyvsp[(4) - (10)].regno), 8, 4); F ((yyvsp[(9) - (10)].regno), 12, 4); DSP ((yyvsp[(7) - (10)].exp), 4, (yyvsp[(2) - (10)].regno)); } + break; + + case 81: +#line 577 "rx-parse.y" + { B2 (0xc0, 0x00); F ((yyvsp[(2) - (11)].regno), 2, 2); F ((yyvsp[(5) - (11)].regno), 8, 4); F ((yyvsp[(10) - (11)].regno), 12, 4); DSP ((yyvsp[(3) - (11)].exp), 6, (yyvsp[(2) - (11)].regno)); DSP ((yyvsp[(8) - (11)].exp), 4, (yyvsp[(2) - (11)].regno)); } + break; + + case 82: +#line 582 "rx-parse.y" + { B2 (0xcf, 0x00); F ((yyvsp[(2) - (5)].regno), 2, 2); F ((yyvsp[(3) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); } + break; + + case 83: +#line 587 "rx-parse.y" + { B2 (0xcc, 0x00); F ((yyvsp[(2) - (7)].regno), 2, 2); F ((yyvsp[(4) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); } + break; + + case 84: +#line 592 "rx-parse.y" + { B2 (0xf0, 0x00); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); } + break; + + case 85: +#line 594 "rx-parse.y" + { B2 (0xf0, 0x08); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); } + break; + + case 86: +#line 596 "rx-parse.y" + { B2 (0xf4, 0x00); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); } + break; + + case 87: +#line 601 "rx-parse.y" + { B2 (0xf4, 0x08); F ((yyvsp[(2) - (6)].regno), 14, 2); F ((yyvsp[(5) - (6)].regno), 8, 4); DSP ((yyvsp[(3) - (6)].exp), 6, (yyvsp[(2) - (6)].regno)); } + break; + + case 88: +#line 605 "rx-parse.y" + { sub_op = 0; } + break; + + case 90: +#line 606 "rx-parse.y" + { sub_op = 1; sub_op2 = 1; } + break; + + case 92: +#line 607 "rx-parse.y" + { sub_op = 2; } + break; + + case 94: +#line 608 "rx-parse.y" + { sub_op = 3; sub_op2 = 2; } + break; + + case 96: +#line 609 "rx-parse.y" + { sub_op = 4; } + break; + + case 98: +#line 610 "rx-parse.y" + { sub_op = 5; } + break; + + case 100: +#line 611 "rx-parse.y" + { sub_op = 6; } + break; + + case 102: +#line 612 "rx-parse.y" + { sub_op = 7; } + break; + + case 104: +#line 613 "rx-parse.y" + { sub_op = 8; } + break; + + case 106: +#line 614 "rx-parse.y" + { sub_op = 9; } + break; + + case 108: +#line 615 "rx-parse.y" + { sub_op = 12; } + break; + + case 110: +#line 616 "rx-parse.y" + { sub_op = 13; } + break; + + case 112: +#line 617 "rx-parse.y" + { sub_op = 14; sub_op2 = 0; } + break; + + case 114: +#line 618 "rx-parse.y" + { sub_op = 14; } + break; + + case 116: +#line 619 "rx-parse.y" + { sub_op = 15; } + break; + + case 118: +#line 623 "rx-parse.y" + { sub_op = 6; } + break; + + case 120: +#line 624 "rx-parse.y" + { sub_op = 7; } + break; + + case 122: +#line 625 "rx-parse.y" + { sub_op = 16; } + break; + + case 124: +#line 626 "rx-parse.y" + { sub_op = 17; } + break; + + case 126: +#line 631 "rx-parse.y" + { id24 (1, 0x63, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); } + break; + + case 127: +#line 633 "rx-parse.y" + { id24 (1, 0x67, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); } + break; + + case 128: +#line 635 "rx-parse.y" + { id24 (1, 0x6b, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); } + break; + + case 129: +#line 637 "rx-parse.y" + { id24 (1, 0x6f, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); } + break; + + case 130: +#line 640 "rx-parse.y" + { id24 (1, 0x60, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); } + break; + + case 131: +#line 642 "rx-parse.y" + { id24 (1, 0x64, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); } + break; + + case 132: +#line 644 "rx-parse.y" + { id24 (1, 0x68, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); } + break; + + case 133: +#line 646 "rx-parse.y" + { id24 (1, 0x6c, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); } + break; + + case 134: +#line 650 "rx-parse.y" + { sub_op = 0; } + break; + + case 136: +#line 651 "rx-parse.y" + { sub_op = 1; } + break; + + case 138: +#line 652 "rx-parse.y" + { sub_op = 2; } + break; + + case 140: +#line 653 "rx-parse.y" + { sub_op = 3; } + break; + + case 142: +#line 654 "rx-parse.y" + { sub_op = 4; } + break; + + case 144: +#line 655 "rx-parse.y" + { sub_op = 5; } + break; + + case 146: +#line 656 "rx-parse.y" + { sub_op = 6; } + break; + + case 148: +#line 661 "rx-parse.y" + { id24 (1, 0xdb, 0x00); F ((yyvsp[(1) - (3)].regno), 20, 4); F ((yyvsp[(3) - (3)].regno), 16, 4); } + break; + + case 149: +#line 663 "rx-parse.y" + { id24 (1, 0xd0, 0x00); F ((yyvsp[(1) - (6)].regno), 20, 4); F ((yyvsp[(2) - (6)].regno), 12, 2); F ((yyvsp[(5) - (6)].regno), 16, 4); DSP ((yyvsp[(3) - (6)].exp), 14, (yyvsp[(2) - (6)].regno)); } + break; + + case 150: +#line 668 "rx-parse.y" + { id24 (1, 0xe0, 0x00); F ((yyvsp[(1) - (9)].regno), 20, 4); FE ((yyvsp[(3) - (9)].exp), 11, 3); + F ((yyvsp[(7) - (9)].regno), 16, 4); DSP ((yyvsp[(5) - (9)].exp), 14, BSIZE); } + break; + + case 151: +#line 674 "rx-parse.y" + { id24 (1, 0xe0, 0x0f); FE ((yyvsp[(3) - (9)].exp), 11, 3); F ((yyvsp[(7) - (9)].regno), 16, 4); + DSP ((yyvsp[(5) - (9)].exp), 14, BSIZE); } + break; + + case 152: +#line 680 "rx-parse.y" + { id24 (2, 0x00, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 153: +#line 682 "rx-parse.y" + { id24 (2, 0x01, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 154: +#line 684 "rx-parse.y" + { id24 (2, 0x04, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 155: +#line 686 "rx-parse.y" + { id24 (2, 0x05, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 156: +#line 692 "rx-parse.y" + { id24 (2, 0x17, 0x00); F ((yyvsp[(2) - (2)].regno), 20, 4); } + break; + + case 157: +#line 694 "rx-parse.y" + { id24 (2, 0x17, 0x10); F ((yyvsp[(2) - (2)].regno), 20, 4); } + break; + + case 158: +#line 696 "rx-parse.y" + { id24 (2, 0x1f, 0x00); F ((yyvsp[(2) - (2)].regno), 20, 4); } + break; + + case 159: +#line 698 "rx-parse.y" + { id24 (2, 0x1f, 0x20); F ((yyvsp[(2) - (2)].regno), 20, 4); } + break; + + case 160: +#line 700 "rx-parse.y" + { id24 (2, 0x1f, 0x10); F ((yyvsp[(2) - (2)].regno), 20, 4); } + break; + + case 161: +#line 703 "rx-parse.y" + { id24 (2, 0x18, 0x00); + if (rx_uintop ((yyvsp[(3) - (3)].exp), 4) && (yyvsp[(3) - (3)].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[(3) - (3)].exp), 4) && (yyvsp[(3) - (3)].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACW expects #1 or #2"));} + break; + + case 162: +#line 714 "rx-parse.y" + { id24 (2, 0x20, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(3) - (8)].regno), 20, 4); } + break; + + case 163: +#line 716 "rx-parse.y" + { id24 (2, 0x24, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(7) - (8)].regno), 16, 4); F ((yyvsp[(3) - (8)].regno), 20, 4); } + break; + + case 164: +#line 721 "rx-parse.y" + { id24 (2, 0x28, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); } + break; + + case 165: +#line 723 "rx-parse.y" + { id24 (2, 0x2c, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(5) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); } + break; + + case 166: +#line 728 "rx-parse.y" + { id24 (2, 0x38, 0); F ((yyvsp[(2) - (8)].regno), 15, 1); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); } + break; + + case 167: +#line 730 "rx-parse.y" + { id24 (2, 0x3c, 0); F ((yyvsp[(2) - (8)].regno), 15, 1); F ((yyvsp[(5) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); } + break; + + case 168: +#line 734 "rx-parse.y" + { sub_op = 6; } + break; + + case 170: +#line 735 "rx-parse.y" + { sub_op = 4; } + break; + + case 172: +#line 736 "rx-parse.y" + { sub_op = 5; } + break; + + case 174: +#line 737 "rx-parse.y" + { sub_op = 7; } + break; + + case 176: +#line 742 "rx-parse.y" + { id24 (2, 0x68, 0x00); F ((yyvsp[(4) - (4)].regno) % 16, 20, 4); F ((yyvsp[(4) - (4)].regno) / 16, 15, 1); + F ((yyvsp[(2) - (4)].regno), 16, 4); } + break; + + case 177: +#line 748 "rx-parse.y" + { id24 (2, 0x6a, 0); F ((yyvsp[(2) - (4)].regno), 15, 5); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 178: +#line 753 "rx-parse.y" + { id24 (2, 0x6e, 0); FE ((yyvsp[(3) - (5)].exp), 15, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); } + break; + + case 179: +#line 755 "rx-parse.y" + { id24 (2, 0x6c, 0); FE ((yyvsp[(3) - (5)].exp), 15, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); } + break; + + case 180: +#line 760 "rx-parse.y" + { id24 (2, 0x73, 0x00); F ((yyvsp[(5) - (5)].regno), 19, 5); IMM ((yyvsp[(3) - (5)].exp), 12); } + break; + + case 181: +#line 765 "rx-parse.y" + { id24 (2, 0xe0, 0x00); F ((yyvsp[(1) - (5)].regno), 16, 4); FE ((yyvsp[(3) - (5)].exp), 11, 5); + F ((yyvsp[(5) - (5)].regno), 20, 4); } + break; + + case 182: +#line 771 "rx-parse.y" + { id24 (2, 0xe0, 0xf0); FE ((yyvsp[(3) - (5)].exp), 11, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); } + break; + + case 183: +#line 776 "rx-parse.y" + { id24 (3, 0x00, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(6) - (9)].regno), 12, 4); F ((yyvsp[(8) - (9)].regno), 16, 4); F ((yyvsp[(3) - (9)].regno), 20, 4); } + break; + + case 184: +#line 779 "rx-parse.y" + { id24 (3, 0x40, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(4) - (9)].regno), 12, 4); F ((yyvsp[(6) - (9)].regno), 16, 4); F ((yyvsp[(9) - (9)].regno), 20, 4); } + break; + + case 185: +#line 782 "rx-parse.y" + { id24 (3, 0xc0, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(4) - (9)].regno), 12, 4); F ((yyvsp[(6) - (9)].regno), 16, 4); F ((yyvsp[(9) - (9)].regno), 20, 4); } + break; + + case 186: +#line 786 "rx-parse.y" + { sub_op = 0; } + break; + + case 188: +#line 787 "rx-parse.y" + { sub_op = 2; } + break; + + case 190: +#line 788 "rx-parse.y" + { sub_op = 3; } + break; + + case 192: +#line 789 "rx-parse.y" + { sub_op = 4; } + break; + + case 194: +#line 790 "rx-parse.y" + { sub_op = 5; } + break; + + case 196: +#line 796 "rx-parse.y" + { id24 (2, 0x70, 0x20); F ((yyvsp[(5) - (5)].regno), 20, 4); NBIMM ((yyvsp[(3) - (5)].exp), 12); } + break; + + case 197: +#line 806 "rx-parse.y" + { B2 (0x43 + (sub_op<<2), 0); F ((yyvsp[(1) - (3)].regno), 8, 4); F ((yyvsp[(3) - (3)].regno), 12, 4); } + break; + + case 198: +#line 808 "rx-parse.y" + { B2 (0x40 + (sub_op<<2), 0); F ((yyvsp[(3) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); DSP ((yyvsp[(1) - (7)].exp), 6, BSIZE); } + break; + + case 199: +#line 810 "rx-parse.y" + { B3 (MEMEX, sub_op<<2, 0); F ((yyvsp[(5) - (7)].regno), 8, 2); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); } + break; + + case 200: +#line 812 "rx-parse.y" + { id24 (4, sub_op<<4, 0), F ((yyvsp[(5) - (5)].regno), 12, 4), F ((yyvsp[(1) - (5)].regno), 16, 4), F ((yyvsp[(3) - (5)].regno), 20, 4); } + break; + + case 201: +#line 819 "rx-parse.y" + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); } + break; + + case 202: +#line 821 "rx-parse.y" + { B4 (MEMEX, 0xa0, 0x00 + sub_op, 0x00); + F ((yyvsp[(3) - (7)].regno), 24, 4); F ((yyvsp[(7) - (7)].regno), 28, 4); DSP ((yyvsp[(1) - (7)].exp), 14, LSIZE); } + break; + + case 203: +#line 829 "rx-parse.y" + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); } + break; + + case 204: +#line 831 "rx-parse.y" + { id24 (1, 0x00 + (sub_op<<2), 0x00); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, BSIZE); } + break; + + case 205: +#line 833 "rx-parse.y" + { B4 (MEMEX, 0x20 + ((yyvsp[(5) - (7)].regno) << 6), 0x00 + sub_op, 0x00); + F ((yyvsp[(3) - (7)].regno), 24, 4); F ((yyvsp[(7) - (7)].regno), 28, 4); DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); } + break; + + case 206: +#line 839 "rx-parse.y" + { id24 (2, 0x70, sub_op<<4); F ((yyvsp[(4) - (4)].regno), 20, 4); IMM ((yyvsp[(2) - (4)].exp), 12); } + break; + + case 211: +#line 854 "rx-parse.y" + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); } + break; + + case 212: +#line 856 "rx-parse.y" + { B2 (0x7e, sub_op2 << 4); F ((yyvsp[(1) - (1)].regno), 12, 4); } + break; + + case 213: +#line 862 "rx-parse.y" + { id24 (1, 0x03 + (sub_op<<2), 0); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); } + break; + + case 214: +#line 864 "rx-parse.y" + { id24 (1, 0x00 + (sub_op<<2), 0); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, BSIZE); } + break; + + case 215: +#line 866 "rx-parse.y" + { B4 (MEMEX, 0x20, 0x00 + sub_op, 0); F ((yyvsp[(5) - (7)].regno), 8, 2); F ((yyvsp[(3) - (7)].regno), 24, 4); F ((yyvsp[(7) - (7)].regno), 28, 4); + DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); } + break; + + case 216: +#line 873 "rx-parse.y" + { id24 (2, 0x60 + sub_op, 0); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); } + break; + + case 217: +#line 877 "rx-parse.y" + { B2 (0x68 + (sub_op<<1), 0); FE ((yyvsp[(2) - (4)].exp), 7, 5); F ((yyvsp[(4) - (4)].regno), 12, 4); } + break; + + case 218: +#line 879 "rx-parse.y" + { id24 (2, 0x80 + (sub_op << 5), 0); FE ((yyvsp[(2) - (6)].exp), 11, 5); F ((yyvsp[(4) - (6)].regno), 16, 4); F ((yyvsp[(6) - (6)].regno), 20, 4); } + break; + + case 220: +#line 885 "rx-parse.y" + { rx_check_float_support (); } + break; + + case 221: +#line 887 "rx-parse.y" + { id24 (2, 0x72, sub_op << 4); F ((yyvsp[(5) - (5)].regno), 20, 4); O4 ((yyvsp[(3) - (5)].exp)); } + break; + + case 223: +#line 892 "rx-parse.y" + { rx_check_float_support (); } + break; + + case 224: +#line 894 "rx-parse.y" + { id24 (1, 0x83 + (sub_op << 2), 0); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); } + break; + + case 225: +#line 895 "rx-parse.y" + { rx_check_float_support (); } + break; + + case 226: +#line 897 "rx-parse.y" + { id24 (1, 0x80 + (sub_op << 2), 0); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); DSP ((yyvsp[(2) - (8)].exp), 14, LSIZE); } + break; + + case 227: +#line 902 "rx-parse.y" + { (yyval.exp) = zero_expr (); } + break; + + case 228: +#line 903 "rx-parse.y" + { (yyval.exp) = (yyvsp[(1) - (1)].exp); } + break; + + case 229: +#line 906 "rx-parse.y" + { need_flag = 1; } + break; + + case 230: +#line 906 "rx-parse.y" + { need_flag = 0; (yyval.regno) = (yyvsp[(2) - (2)].regno); } + break; + + case 231: +#line 911 "rx-parse.y" + { (yyval.regno) = 0; } + break; + + case 232: +#line 912 "rx-parse.y" + { (yyval.regno) = 1; } + break; + + case 233: +#line 913 "rx-parse.y" + { (yyval.regno) = 2; } + break; + + case 234: +#line 914 "rx-parse.y" + { (yyval.regno) = 2; } + break; + + case 235: +#line 915 "rx-parse.y" + { (yyval.regno) = 3; } + break; + + case 236: +#line 918 "rx-parse.y" + { (yyval.regno) = LSIZE; } + break; + + case 237: +#line 919 "rx-parse.y" + { (yyval.regno) = BSIZE; } + break; + + case 238: +#line 920 "rx-parse.y" + { (yyval.regno) = WSIZE; } + break; + + case 239: +#line 921 "rx-parse.y" + { (yyval.regno) = LSIZE; } + break; + + case 240: +#line 924 "rx-parse.y" + { (yyval.regno) = 1; } + break; + + case 241: +#line 925 "rx-parse.y" + { (yyval.regno) = 0; } + break; + + case 242: +#line 926 "rx-parse.y" + { (yyval.regno) = 1; } + break; + + case 243: +#line 929 "rx-parse.y" + {} + break; + + case 244: +#line 930 "rx-parse.y" + {} + break; + + case 245: +#line 933 "rx-parse.y" + {} + break; + + case 246: +#line 934 "rx-parse.y" + {} + break; + + +/* Line 1267 of yacc.c. */ +#line 3333 "rx-parse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 937 "rx-parse.y" + +/* ====================================================================== */ + +static struct +{ + const char * string; + int token; + int val; +} +token_table[] = +{ + { "r0", REG, 0 }, + { "r1", REG, 1 }, + { "r2", REG, 2 }, + { "r3", REG, 3 }, + { "r4", REG, 4 }, + { "r5", REG, 5 }, + { "r6", REG, 6 }, + { "r7", REG, 7 }, + { "r8", REG, 8 }, + { "r9", REG, 9 }, + { "r10", REG, 10 }, + { "r11", REG, 11 }, + { "r12", REG, 12 }, + { "r13", REG, 13 }, + { "r14", REG, 14 }, + { "r15", REG, 15 }, + + { "psw", CREG, 0 }, + { "pc", CREG, 1 }, + { "usp", CREG, 2 }, + { "fpsw", CREG, 3 }, + /* reserved */ + /* reserved */ + /* reserved */ + { "wr", CREG, 7 }, + + { "bpsw", CREG, 8 }, + { "bpc", CREG, 9 }, + { "isp", CREG, 10 }, + { "fintv", CREG, 11 }, + { "intb", CREG, 12 }, + + { "pbp", CREG, 16 }, + { "pben", CREG, 17 }, + + { "bbpsw", CREG, 24 }, + { "bbpc", CREG, 25 }, + + { ".s", DOT_S, 0 }, + { ".b", DOT_B, 0 }, + { ".w", DOT_W, 0 }, + { ".l", DOT_L, 0 }, + { ".a", DOT_A , 0}, + { ".ub", DOT_UB, 0 }, + { ".uw", DOT_UW , 0}, + + { "c", FLAG, 0 }, + { "z", FLAG, 1 }, + { "s", FLAG, 2 }, + { "o", FLAG, 3 }, + { "i", FLAG, 8 }, + { "u", FLAG, 9 }, + +#define OPC(x) { #x, x, IS_OPCODE } + OPC(ABS), + OPC(ADC), + OPC(ADD), + { "and", AND_, IS_OPCODE }, + OPC(BCLR), + OPC(BCND), + OPC(BMCND), + OPC(BNOT), + OPC(BRA), + OPC(BRK), + OPC(BSET), + OPC(BSR), + OPC(BTST), + OPC(CLRPSW), + OPC(CMP), + OPC(DBT), + OPC(DIV), + OPC(DIVU), + OPC(EDIV), + OPC(EDIVU), + OPC(EMUL), + OPC(EMULU), + OPC(FADD), + OPC(FCMP), + OPC(FDIV), + OPC(FMUL), + OPC(FREIT), + OPC(FSUB), + OPC(FTOI), + OPC(INT), + OPC(ITOF), + OPC(JMP), + OPC(JSR), + OPC(MVFACHI), + OPC(MVFACMI), + OPC(MVFACLO), + OPC(MVFC), + OPC(MVTACHI), + OPC(MVTACLO), + OPC(MVTC), + OPC(MVTIPL), + OPC(MACHI), + OPC(MACLO), + OPC(MAX), + OPC(MIN), + OPC(MOV), + OPC(MOVU), + OPC(MUL), + OPC(MULHI), + OPC(MULLO), + OPC(MULU), + OPC(NEG), + OPC(NOP), + OPC(NOT), + OPC(OR), + OPC(POP), + OPC(POPC), + OPC(POPM), + OPC(PUSH), + OPC(PUSHA), + OPC(PUSHC), + OPC(PUSHM), + OPC(RACW), + OPC(REIT), + OPC(REVL), + OPC(REVW), + OPC(RMPA), + OPC(ROLC), + OPC(RORC), + OPC(ROTL), + OPC(ROTR), + OPC(ROUND), + OPC(RTE), + OPC(RTFI), + OPC(RTS), + OPC(RTSD), + OPC(SAT), + OPC(SATR), + OPC(SBB), + OPC(SCCND), + OPC(SCMPU), + OPC(SETPSW), + OPC(SHAR), + OPC(SHLL), + OPC(SHLR), + OPC(SMOVB), + OPC(SMOVF), + OPC(SMOVU), + OPC(SSTR), + OPC(STNZ), + OPC(STOP), + OPC(STZ), + OPC(SUB), + OPC(SUNTIL), + OPC(SWHILE), + OPC(TST), + OPC(WAIT), + OPC(XCHG), + OPC(XOR), +}; + +#define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0])) + +static struct +{ + char * string; + int token; +} +condition_opcode_table[] = +{ + { "b", BCND }, + { "bm", BMCND }, + { "sc", SCCND }, +}; + +#define NUM_CONDITION_OPCODES (sizeof (condition_opcode_table) / sizeof (condition_opcode_table[0])) + +static struct +{ + char * string; + int val; +} +condition_table[] = +{ + { "z", 0 }, + { "eq", 0 }, + { "geu", 2 }, + { "c", 2 }, + { "gtu", 4 }, + { "pz", 6 }, + { "ge", 8 }, + { "gt", 10 }, + { "o", 12}, + /* always = 14 */ + { "nz", 1 }, + { "ne", 1 }, + { "ltu", 3 }, + { "nc", 3 }, + { "leu", 5 }, + { "n", 7 }, + { "lt", 9 }, + { "le", 11 }, + { "no", 13 } + /* never = 15 */ +}; + +#define NUM_CONDITIONS (sizeof (condition_table) / sizeof (condition_table[0])) + +void +rx_lex_init (char * beginning, char * ending) +{ + rx_init_start = beginning; + rx_lex_start = beginning; + rx_lex_end = ending; + rx_in_brackets = 0; + rx_last_token = 0; + + setbuf (stdout, 0); +} + +static int +check_condition (char * base) +{ + char * cp; + unsigned int i; + + if ((unsigned) (rx_lex_end - rx_lex_start) < strlen (base) + 1) + return 0; + if (memcmp (rx_lex_start, base, strlen (base))) + return 0; + cp = rx_lex_start + strlen (base); + for (i = 0; i < NUM_CONDITIONS; i ++) + { + if (strcasecmp (cp, condition_table[i].string) == 0) + { + rx_lval.regno = condition_table[i].val; + return 1; + } + } + return 0; +} + +static int +rx_lex (void) +{ + unsigned int ci; + char * save_input_pointer; + + while (ISSPACE (*rx_lex_start) + && rx_lex_start != rx_lex_end) + rx_lex_start ++; + + rx_last_exp_start = rx_lex_start; + + if (rx_lex_start == rx_lex_end) + return 0; + + if (ISALPHA (*rx_lex_start) + || (rx_pid_register != -1 && memcmp (rx_lex_start, "%pidreg", 7) == 0) + || (rx_gp_register != -1 && memcmp (rx_lex_start, "%gpreg", 6) == 0) + || (*rx_lex_start == '.' && ISALPHA (rx_lex_start[1]))) + { + unsigned int i; + char * e; + char save; + + for (e = rx_lex_start + 1; + e < rx_lex_end && ISALNUM (*e); + e ++) + ; + save = *e; + *e = 0; + + if (strcmp (rx_lex_start, "%pidreg") == 0) + { + { + rx_lval.regno = rx_pid_register; + *e = save; + rx_lex_start = e; + rx_last_token = REG; + return REG; + } + } + + if (strcmp (rx_lex_start, "%gpreg") == 0) + { + { + rx_lval.regno = rx_gp_register; + *e = save; + rx_lex_start = e; + rx_last_token = REG; + return REG; + } + } + + if (rx_last_token == 0) + for (ci = 0; ci < NUM_CONDITION_OPCODES; ci ++) + if (check_condition (condition_opcode_table[ci].string)) + { + *e = save; + rx_lex_start = e; + rx_last_token = condition_opcode_table[ci].token; + return condition_opcode_table[ci].token; + } + + for (i = 0; i < NUM_TOKENS; i++) + if (strcasecmp (rx_lex_start, token_table[i].string) == 0 + && !(token_table[i].val == IS_OPCODE && rx_last_token != 0) + && !(token_table[i].token == FLAG && !need_flag)) + { + rx_lval.regno = token_table[i].val; + *e = save; + rx_lex_start = e; + rx_last_token = token_table[i].token; + return token_table[i].token; + } + *e = save; + } + + if (rx_last_token == 0) + { + rx_last_token = UNKNOWN_OPCODE; + return UNKNOWN_OPCODE; + } + + if (rx_last_token == UNKNOWN_OPCODE) + return 0; + + if (*rx_lex_start == '[') + rx_in_brackets = 1; + if (*rx_lex_start == ']') + rx_in_brackets = 0; + + if (rx_in_brackets + || rx_last_token == REG + || strchr ("[],#", *rx_lex_start)) + { + rx_last_token = *rx_lex_start; + return *rx_lex_start ++; + } + + save_input_pointer = input_line_pointer; + input_line_pointer = rx_lex_start; + rx_lval.exp.X_md = 0; + expression (&rx_lval.exp); + + /* We parse but ignore any : modifier on expressions. */ + if (*input_line_pointer == ':') + { + char *cp; + + for (cp = input_line_pointer + 1; *cp && cp < rx_lex_end; cp++) + if (!ISDIGIT (*cp)) + break; + if (cp > input_line_pointer+1) + input_line_pointer = cp; + } + + rx_lex_start = input_line_pointer; + input_line_pointer = save_input_pointer; + rx_last_token = EXPR; + return EXPR; +} + +int +rx_error (const char * str) +{ + int len; + + len = rx_last_exp_start - rx_init_start; + + as_bad ("%s", rx_init_start); + as_bad ("%*s^ %s", len, "", str); + return 0; +} + +static int +rx_intop (expressionS exp, int nbits, int opbits) +{ + long v; + long mask, msb; + + if (exp.X_op == O_big && nbits == 32) + return 1; + if (exp.X_op != O_constant) + return 0; + v = exp.X_add_number; + + msb = 1UL << (opbits - 1); + mask = (1UL << opbits) - 1; + + if ((v & msb) && ! (v & ~mask)) + v -= 1UL << opbits; + + switch (nbits) + { + case 4: + return -0x8 <= v && v <= 0x7; + case 5: + return -0x10 <= v && v <= 0x17; + case 8: + return -0x80 <= v && v <= 0x7f; + case 16: + return -0x8000 <= v && v <= 0x7fff; + case 24: + return -0x800000 <= v && v <= 0x7fffff; + case 32: + return 1; + default: + printf ("rx_intop passed %d\n", nbits); + abort (); + } + return 1; +} + +static int +rx_uintop (expressionS exp, int nbits) +{ + unsigned long v; + + if (exp.X_op != O_constant) + return 0; + v = exp.X_add_number; + + switch (nbits) + { + case 4: + return v <= 0xf; + case 8: + return v <= 0xff; + case 16: + return v <= 0xffff; + case 24: + return v <= 0xffffff; + default: + printf ("rx_uintop passed %d\n", nbits); + abort (); + } + return 1; +} + +static int +rx_disp3op (expressionS exp) +{ + unsigned long v; + + if (exp.X_op != O_constant) + return 0; + v = exp.X_add_number; + if (v < 3 || v > 10) + return 0; + return 1; +} + +static int +rx_disp5op (expressionS * exp, int msize) +{ + long v; + + if (exp->X_op != O_constant) + return 0; + v = exp->X_add_number; + + switch (msize) + { + case BSIZE: + if (0 < v && v <= 31) + return 1; + break; + case WSIZE: + if (v & 1) + return 0; + if (0 < v && v <= 63) + { + exp->X_add_number >>= 1; + return 1; + } + break; + case LSIZE: + if (v & 3) + return 0; + if (0 < v && v <= 127) + { + exp->X_add_number >>= 2; + return 1; + } + break; + } + return 0; +} + +/* Just like the above, but allows a zero displacement. */ + +static int +rx_disp5op0 (expressionS * exp, int msize) +{ + if (exp->X_op != O_constant) + return 0; + if (exp->X_add_number == 0) + return 1; + return rx_disp5op (exp, msize); +} + +static int +exp_val (expressionS exp) +{ + if (exp.X_op != O_constant) + { + rx_error (_("constant expected")); + return 0; + } + return exp.X_add_number; +} + +static expressionS +zero_expr (void) +{ + /* Static, so program load sets it to all zeros, which is what we want. */ + static expressionS zero; + zero.X_op = O_constant; + return zero; +} + +static int +immediate (expressionS exp, int type, int pos, int bits) +{ + /* We will emit constants ourself here, so negate them. */ + if (type == RXREL_NEGATIVE && exp.X_op == O_constant) + exp.X_add_number = - exp.X_add_number; + if (type == RXREL_NEGATIVE_BORROW) + { + if (exp.X_op == O_constant) + exp.X_add_number = - exp.X_add_number - 1; + else + rx_error (_("sbb cannot use symbolic immediates")); + } + + if (rx_intop (exp, 8, bits)) + { + rx_op (exp, 1, type); + return 1; + } + else if (rx_intop (exp, 16, bits)) + { + rx_op (exp, 2, type); + return 2; + } + else if (rx_uintop (exp, 16) && bits == 16) + { + rx_op (exp, 2, type); + return 2; + } + else if (rx_intop (exp, 24, bits)) + { + rx_op (exp, 3, type); + return 3; + } + else if (rx_intop (exp, 32, bits)) + { + rx_op (exp, 4, type); + return 0; + } + else if (type == RXREL_SIGNED) + { + /* This is a symbolic immediate, we will relax it later. */ + rx_relax (RX_RELAX_IMM, pos); + rx_op (exp, linkrelax ? 4 : 1, type); + return 1; + } + else + { + /* Let the linker deal with it. */ + rx_op (exp, 4, type); + return 0; + } +} + +static int +displacement (expressionS exp, int msize) +{ + int val; + int vshift = 0; + + if (exp.X_op == O_symbol + && exp.X_md) + { + switch (exp.X_md) + { + case BFD_RELOC_GPREL16: + switch (msize) + { + case BSIZE: + exp.X_md = BFD_RELOC_RX_GPRELB; + break; + case WSIZE: + exp.X_md = BFD_RELOC_RX_GPRELW; + break; + case LSIZE: + exp.X_md = BFD_RELOC_RX_GPRELL; + break; + } + O2 (exp); + return 2; + } + } + + if (exp.X_op == O_subtract) + { + exp.X_md = BFD_RELOC_RX_DIFF; + O2 (exp); + return 2; + } + + if (exp.X_op != O_constant) + { + rx_error (_("displacements must be constants")); + return -1; + } + val = exp.X_add_number; + + if (val == 0) + return 0; + + switch (msize) + { + case BSIZE: + break; + case WSIZE: + if (val & 1) + rx_error (_("word displacement not word-aligned")); + vshift = 1; + break; + case LSIZE: + if (val & 3) + rx_error (_("long displacement not long-aligned")); + vshift = 2; + break; + default: + as_bad (_("displacement with unknown size (internal bug?)\n")); + break; + } + + val >>= vshift; + exp.X_add_number = val; + + if (0 <= val && val <= 255 ) + { + O1 (exp); + return 1; + } + + if (0 <= val && val <= 65535) + { + O2 (exp); + return 2; + } + if (val < 0) + rx_error (_("negative displacements not allowed")); + else + rx_error (_("displacement too large")); + return -1; +} + +static void +rtsd_immediate (expressionS exp) +{ + int val; + + if (exp.X_op != O_constant) + { + rx_error (_("rtsd size must be constant")); + return; + } + val = exp.X_add_number; + if (val & 3) + rx_error (_("rtsd size must be multiple of 4")); + + if (val < 0 || val > 1020) + rx_error (_("rtsd size must be 0..1020")); + + val >>= 2; + exp.X_add_number = val; + O1 (exp); +} + +static void +rx_range (expressionS exp, int minv, int maxv) +{ + int val; + + if (exp.X_op != O_constant) + return; + + val = exp.X_add_number; + if (val < minv || val > maxv) + as_warn (_("Value %d out of range %d..%d"), val, minv, maxv); +} + +static void +rx_check_float_support (void) +{ + if (rx_cpu == RX100 || rx_cpu == RX200) + rx_error (_("target CPU type does not support floating point instructions")); +} + diff --git a/gas/rx-parse.h b/gas/rx-parse.h new file mode 100644 index 00000000000..0057b421221 --- /dev/null +++ b/gas/rx-parse.h @@ -0,0 +1,289 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + REG = 258, + FLAG = 259, + CREG = 260, + EXPR = 261, + UNKNOWN_OPCODE = 262, + IS_OPCODE = 263, + DOT_S = 264, + DOT_B = 265, + DOT_W = 266, + DOT_L = 267, + DOT_A = 268, + DOT_UB = 269, + DOT_UW = 270, + ABS = 271, + ADC = 272, + ADD = 273, + AND_ = 274, + BCLR = 275, + BCND = 276, + BMCND = 277, + BNOT = 278, + BRA = 279, + BRK = 280, + BSET = 281, + BSR = 282, + BTST = 283, + CLRPSW = 284, + CMP = 285, + DBT = 286, + DIV = 287, + DIVU = 288, + EDIV = 289, + EDIVU = 290, + EMUL = 291, + EMULU = 292, + FADD = 293, + FCMP = 294, + FDIV = 295, + FMUL = 296, + FREIT = 297, + FSUB = 298, + FTOI = 299, + INT = 300, + ITOF = 301, + JMP = 302, + JSR = 303, + MACHI = 304, + MACLO = 305, + MAX = 306, + MIN = 307, + MOV = 308, + MOVU = 309, + MUL = 310, + MULHI = 311, + MULLO = 312, + MULU = 313, + MVFACHI = 314, + MVFACMI = 315, + MVFACLO = 316, + MVFC = 317, + MVTACHI = 318, + MVTACLO = 319, + MVTC = 320, + MVTIPL = 321, + NEG = 322, + NOP = 323, + NOT = 324, + OR = 325, + POP = 326, + POPC = 327, + POPM = 328, + PUSH = 329, + PUSHA = 330, + PUSHC = 331, + PUSHM = 332, + RACW = 333, + REIT = 334, + REVL = 335, + REVW = 336, + RMPA = 337, + ROLC = 338, + RORC = 339, + ROTL = 340, + ROTR = 341, + ROUND = 342, + RTE = 343, + RTFI = 344, + RTS = 345, + RTSD = 346, + SAT = 347, + SATR = 348, + SBB = 349, + SCCND = 350, + SCMPU = 351, + SETPSW = 352, + SHAR = 353, + SHLL = 354, + SHLR = 355, + SMOVB = 356, + SMOVF = 357, + SMOVU = 358, + SSTR = 359, + STNZ = 360, + STOP = 361, + STZ = 362, + SUB = 363, + SUNTIL = 364, + SWHILE = 365, + TST = 366, + WAIT = 367, + XCHG = 368, + XOR = 369 + }; +#endif +/* Tokens. */ +#define REG 258 +#define FLAG 259 +#define CREG 260 +#define EXPR 261 +#define UNKNOWN_OPCODE 262 +#define IS_OPCODE 263 +#define DOT_S 264 +#define DOT_B 265 +#define DOT_W 266 +#define DOT_L 267 +#define DOT_A 268 +#define DOT_UB 269 +#define DOT_UW 270 +#define ABS 271 +#define ADC 272 +#define ADD 273 +#define AND_ 274 +#define BCLR 275 +#define BCND 276 +#define BMCND 277 +#define BNOT 278 +#define BRA 279 +#define BRK 280 +#define BSET 281 +#define BSR 282 +#define BTST 283 +#define CLRPSW 284 +#define CMP 285 +#define DBT 286 +#define DIV 287 +#define DIVU 288 +#define EDIV 289 +#define EDIVU 290 +#define EMUL 291 +#define EMULU 292 +#define FADD 293 +#define FCMP 294 +#define FDIV 295 +#define FMUL 296 +#define FREIT 297 +#define FSUB 298 +#define FTOI 299 +#define INT 300 +#define ITOF 301 +#define JMP 302 +#define JSR 303 +#define MACHI 304 +#define MACLO 305 +#define MAX 306 +#define MIN 307 +#define MOV 308 +#define MOVU 309 +#define MUL 310 +#define MULHI 311 +#define MULLO 312 +#define MULU 313 +#define MVFACHI 314 +#define MVFACMI 315 +#define MVFACLO 316 +#define MVFC 317 +#define MVTACHI 318 +#define MVTACLO 319 +#define MVTC 320 +#define MVTIPL 321 +#define NEG 322 +#define NOP 323 +#define NOT 324 +#define OR 325 +#define POP 326 +#define POPC 327 +#define POPM 328 +#define PUSH 329 +#define PUSHA 330 +#define PUSHC 331 +#define PUSHM 332 +#define RACW 333 +#define REIT 334 +#define REVL 335 +#define REVW 336 +#define RMPA 337 +#define ROLC 338 +#define RORC 339 +#define ROTL 340 +#define ROTR 341 +#define ROUND 342 +#define RTE 343 +#define RTFI 344 +#define RTS 345 +#define RTSD 346 +#define SAT 347 +#define SATR 348 +#define SBB 349 +#define SCCND 350 +#define SCMPU 351 +#define SETPSW 352 +#define SHAR 353 +#define SHLL 354 +#define SHLR 355 +#define SMOVB 356 +#define SMOVF 357 +#define SMOVU 358 +#define SSTR 359 +#define STNZ 360 +#define STOP 361 +#define STZ 362 +#define SUB 363 +#define SUNTIL 364 +#define SWHILE 365 +#define TST 366 +#define WAIT 367 +#define XCHG 368 +#define XOR 369 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 134 "rx-parse.y" +{ + int regno; + expressionS exp; +} +/* Line 1529 of yacc.c. */ +#line 282 "rx-parse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE rx_lval; + diff --git a/gdb/gcore b/gdb/gcore new file mode 100755 index 00000000000..d266a7b5281 --- /dev/null +++ b/gdb/gcore @@ -0,0 +1,103 @@ +#!/bin/sh + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. + +# 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# Script to generate a core file of a running program. +# It starts up gdb, attaches to the given PID and invokes the gcore command. +# + +if [ "$#" -eq "0" ] +then + echo "usage: i386-pc-linux-gnu-gcore [-o filename] pid" + exit 2 +fi + +# Need to check for -o option, but set default basename to "core". +name=core + +if [ "$1" = "-o" ] +then + if [ "$#" -lt "3" ] + then + # Not enough arguments. + echo "usage: i386-pc-linux-gnu-gcore [-o filename] pid" + exit 2 + fi + name=$2 + + # Shift over to start of pid list + shift; shift +fi + +# Attempt to fetch the absolute path to the gcore script that was +# called. +binary_path=`dirname "$0"` + +if test "x$binary_path" = x. ; then + # We got "." back as a path. This means the user executed + # the gcore script locally (i.e. ./gcore) or called the + # script via a shell interpreter (i.e. sh gcore). + binary_basename=`basename "$0"` + + # If the gcore script was called like "sh gcore" and the script + # lives in the current directory, "which" will not give us "gcore". + # So first we check if the script is in the current directory + # before using the output of "which". + if test -f "$binary_basename" ; then + # We have a local gcore script in ".". This covers the case of + # doing "./gcore" or "sh gcore". + binary_path="." + else + # The gcore script was not found in ".", which means the script + # was called from somewhere else in $PATH by "sh gcore". + # Extract the correct path now. + binary_path_from_env=`which "$0"` + binary_path=`dirname "$binary_path_from_env"` + fi +fi + +# Check if the GDB binary is in the expected path. If not, just +# quit with a message. +if [ ! -f "$binary_path"/i386-pc-linux-gnu-gdb ]; then + echo "gcore: GDB binary (${binary_path}/i386-pc-linux-gnu-gdb) not found" + exit 1 +fi + +# Initialise return code. +rc=0 + +# Loop through pids +for pid in $* +do + # `F%KO{l5Hc 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 z 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 literal 0 Hc-jL100001 diff --git a/gold/po/fi.gmo b/gold/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8e5149d3f52d1f7249928c557d01132cca4d84ca GIT binary patch literal 50651 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%0D+?T%XGA9M9YU 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 Q(zSd_#jCT?Ti$E^U#r!a2LJ#7 literal 0 Hc-jL100001 diff --git a/gold/po/id.gmo b/gold/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..bd5a80090efd9628d8560aad2a620ade85b528ad GIT binary patch literal 38664 zc-pOf34B~vb@vlXn}|IPTiG4~VcFK$au&yy*Rdqavb9AcJ2;M`yqWhjdY+j#lebus zv&Y#?60(x=L8046Y1s-bltNp!LJPEMOKH>6k3znbw(0kk0)?+YfzosC|J=9Dj4abn zKa{I?@44GK=br7}W4?01Gu~v-&;31y@p393dA4D^;%SEQ?3Wtq=ayF+#>=R@Rm!(f z`5Y=gLgfpo{39waqVn&kJdZnEg!c2PdjKwFYL$nbU(iD?8o?@ z=*M~=>qoyQ<@?7}{tT5DuE)Om*JFJL)&rmOR1Pq`a+1nkD(4E|i}?ch?>Z`Cxpo52_F+>G^nM(Q8i41E4*Gw}ZMLEvNiAlmm20?#K0 z!M|@F1Ref(5b)ok@|ip@A%7F|!4}Yacnj#zlKQt(xq;`~f^~dv3-JFU8gz)t9aQe- zd8oXM$`4WbbSnSv#pw49DS!47l%tn`k6V|3PXB|-gH(Q(%5f_9U5fedy%c!-=%tW9 zpT89IK5;4d?U|Q>-v_897BMQ9VPE&l_j@h_{NG##zW&i=;Ij+2qJIBY$d%ew;QP+4 zz}v5G1sxyX3i|%@R?z3$TYejAP@h32iE(NojB*_PQZ`s1RYvCG2a6_v5$}K1U;UR z?{DwKx?Z>o-|Ke){?IPKt;qMiyRhDm?gHJuxC`|9{x0DA!rdq@-i`Im?8ZJ0?}og% zaW~||?Yq(M(cPfO2X=#Qf4Upz`yXYT@9u_Nec>MT+pq`w-?<0yNA`dY-X6%k`}bh~ zzbWP8d$6zn*n@eVyBFhZq;izXU3vF!*_D81q~y-_bDeb<;4; z>m9?`-U!gV!W|Y@N0b(^nY{|c>MKI;N|xP?n|SPxBoc`Ik|N|@G`s~<6pfWbU3*meEOFC zkY|6kAN=&pF|=PYhW%YR2K=6)@(}NL4EDnR9)nzb^#QEo>I2w+>j3uiwgVXN(+9Bs ze>(v9SB_)8qvM$8{&CRdx5gn~zcda!z2qSJZ$AinRu2O1tp_3BK6w!E-9#tu_@50F(rI51$@0z+Mk>P z-p-o_-|n6UUYDlP{wveaf1jJi_&=Nm|Gj)h>?jDdab(xa8puV zcLm0MEcg`-54m@0-&8niA%j zEdgIq3HW)a1p2(cgnfLfgmIoMfnNV!!g$Y|6S~i#-|Ocfmrl;%oZK@9{`$}y`2I_C z;Nx#oSz@{$2LF@~15dwn81(quVbJ$q4`cl2A3^)pBly1N2=;rs)W2KmzbN(JKZ13b zSJK{CPf_WRFLL*l*yq2#9_xM9QS4{^QP6$cQS`s!DD>O%QJmk~k3w!gcog`3^eFh_ zZAUTB$BqJzUzG2Er*fFbzY60_Uj=*}y9#`B_f>%V-?<9=|CwVrciWEP zd*K-Nch51Lj}II}|BoL7o&J)_5td)aAZIsT4SIQ3LvG)8HRRKKuLeCnC*NPc8t~_n zakQ7u&vESQzT={gk7K@19S5HO{5baUz2o4YzH4Ad&0Pa}zx^8M<&fWUmlb1+5+ZVl74qDKp)<}0Q>jnr2l&b{*wa#n3P|U z@xCG7KVE>J{roD*2`cyVxbppHRmjO_En?r7F9J`;7lD@>7eSxjUc`F-hROrH|3%QJ z-vvGoyWpD}T=45XF8KLRT+r#8F6Mdd3GmO%35*w=fWErn1o-xSQvRKk&#nQ#J8D>$ zU&Fb1s0M!f{TlXT)Zy=r)!}#CTF1P1NcoXE===3L`1qm*{EpW*An$&g%6ZmX9{B8p z2Y!5u2YLQM5A*(shjo3|gT4Q{Cf4sY!Kc3{-yd&coNqO8u3p{3K6bXipFs=zd0PwP z{eBDm{-p)E@yhE!_rdE>zwJ8U@5FWBzelfwy!<$oHP+kL0iOqa;VU2C$9%|*vXAqB z+DE^)_}JfveaN{l_*l<3e606*0pKeT8#{uYH z2vJ@ULZ3t-=<&f2cz7xVpIs24JQM*>w?~lszZ-#We;I)f&p(O&8&5)C&P(~wNv!KL zCqdt@$@kAL!9Uu*1Ua^63HIvJ67YG;66}cgEMcGjw4_XDxgT1$^`|`F?x_=k5C|Sl_EoK_2y;k~qaF zoa4Dupo@J<{I^pW_Z_ET=YHxG#`&vLV&9*Vc+U0s?!O-NEnbiQ^VfsEw_FcB^HwQ8 zEbw2v9_#p*>#?5;Zy?&S{JH^f*WV!i=ncT%2XDZBp11+yKK({IyUf2g0`7-5V!W5$ z1UeRP5<7&-8I}__L5_U+CgAt{n-Lc&+zdR|ZpQv@ycvAs7=-hH$9)lxowGxq(} zn;~DmeKY9ul3TzJ#aqB9OSho@UAJJ~FW!Rjj9W4OMYn=aH{6Q#xKiGCEAaDyTd~j2 z-wHnbhg-q7FTD-*v$p|HjoTm>&)fz%@c!GNkDs^==VZfa>}&gJj6Z)G>o|QHONI5(4b!>(Gs8-CF5-Hr2e z-Wkk$@fqy%nlm_;x19kVe(4PO`~7D??>|2SJU@8`bo{{?oCEU>;FrNSV7^=5fcf9^ z2H@i3cBWFWe*YQ_3$(zwh6Jb-v_Y%)j$qjBDKsyxev# z_WAC6vA=KJi}U`{`#|3#_W^IecpujJSNDPb#v3v3;2SZ{jFc;Hgx>k(H-hhzmNN zAm49(6UP6n)PG;T@^SIMntS+mb!7NiLEx z?qYj^b!QK3x_f(ovmR+5q4E|!%T%71n)e<9Jj&b#-VE^1Ke3NTZGX+ND=Kdi_zML7 z>jvb-Ua6n&fnJ-&)sp(TQ(!Nrawq*>pV}k;yp!cL)m=)zz5%|sr0qxwE~NHr>Gz-I z`$qO_WUQ|mke}1?J(-*1l|A5d*41_oeAkaj+XUb<+RaQpa)W3e_#p?+N<-b-wqIHoo8EbH`_?L4W@$ z$EY|CCGCG};9NY1+9rA+gVH~*levCmh<$B9F7eNgrDQ!YMR1qUZwM3IDAC_b(*7?T z-(VR-bz6F1FY^z}pQAE?p>w-o;VXKEeyN&OA-{apic{8d!{G>(f&{deg1|H$8; zHQIkz_iteS$kFvy`u;UOQwHpa2Fu(Y=t7n^2X%kx_bK)fQe*r(pB?$`PmTKs$1)7~ z80?SS!8Sa>-O2nZ@Sk8gOn2IF+}{xDTi1U|;ml*}h;|$Z~?A!%Ci41 z`TGEsU*_01+dDnbm->fgF6+x*VjXKhr+k6!ECc%Ce1iWH>sJ|zb>%3>f9UrcGR6lC z$nt>d-p%|Wur(^5D}O)EcS{C*m;a_oTpKeh!8_+onnu1w`yWV}WC z`=j#r82$b82J|=oTw_2dUDX3ydszB^+JH^*J&sH8+InD9yo3E{fw_wDo#Mw+eE#V7 zuX6nV6w64~A$9!ss`>Gb`}Z1c+ZFS0$7YCp+*NHACT!1f&K zfvx;Z!OfFQW7akF{XPT!gE}kp{X01vT|sqsaKGMSz22-?q3c!6O0&^udSojOf+(lJk3^~f>I@``!N@ta0pU@lm0-LZ$vzJR`lO!Xi6n_5euPiwTT z&@zM2k1Ap0JKSeV2QM=+~Z?l8+yrN)cPfT+!7s~Qe%!X}J(L1=klUP_*>N)nPJ}Dd2%gn&f*8bE4jqpffU6ZQ zS4=B37ahxXeBN~zNSFRxW=IWEu{_gjhO|L~wOyasf!HS|aHZZ1ocK#&!&Us!T+o$j ze=ZTU(F#|Rns~=U7`y4!SBOq^TXp5Kyb?NrS_^%ht>Y>5JJqop@j{qqQ`ZX}-?Qqb z|TK(Zg*`(rb^uk0&}pfUU4>2zG)L#+gddfWcxK+3P*OHZ$>R5o{+mivk(_81P+)7Yf^vZ5X6wlhwo%Qqk8DJ zh*3M9hDPLNfrF3^aE-Q3YxN51kPvFBQG*U`4up41BZZ3&A%evJ67NC7CPLS1c9szR zenfKI@<^(z7eIv^AjTxrO1HR?#OQ)sC4mi9099dLa&e*ThGyBV76^52Ji^+#)!i_x zJLlAM>!m-@gwn0+gw2-Y#Yk%@w#t#2Do?u2C`glXk>tE;Xfirhc;*#M;my9%YDm$2^=M23WY_d-qN~;`5_9dDw_x_z%8x? zTVzd|CEpDbi$K0ov>v2ok`3q;U`Q%$%m0%e@-b4JE6$fj$0kRo=H`nN<6~3mpc8+T zMu+Fdr>9EH2(;8xAGhi?+14bG;_UE&`H}J29jU)r9VlA?I+QmQRD8F^Mk1}vU0{p% zq-&Xlxy^+FnmUcn*0$x@=JX7&V~3PK(dZjCm}Ap(T+B?U!d@YL=~hyIf~W!4IE(WO zKB?36-}8&MufCT_Rt3zD{G~V?f<`{;Tq0*1U7J3%z^;`6kG8Ohh~E93?Mbk zUj^33eB6lPT6EkPui5>^XNrv-CA|mCYBNl%;2eBj#T7?JW=BgUqiEYE9}tq&b=RvY zt17#;6}>H5$YL6vObS5fnqyA^K4hw~?poM71kk<}ScLBH>o4M7{=fmMf0v1(rfu)<|m?JD_xQ za^LiX(LuB~tQ81PwmmGu7WbfiS&APWElRUpNrlc%&yP-x{I|QafenMYgWfTS(~X4V zAVbmuWC$L@?p<&=3A8jlRh%4M1L#qL8y}7ZENO0a{`wNvg~cj~(XODm(IaDo*~7HT zWj0+ca0py{Is+?BDujaoq6gd|azUMG$BruOzO;=bqq7Adg9f=#RnytVWT0~#YW0!S ziAswZb>>RVI*EmzDcU{1We1lX7&K_S$f04Rs49 zT%*OZIwI$kX_=gg)eqnP@rhCO9~M-`{@J3ksf{tmb9|QI%J?$JM;N_MQZ1-b`-7@z zYtt$z-<&lkj4>T~Q3e%DF~nlXAoW9IoNaA!LQ6+xFU=j{baSo+`d;Bqd%I-jh8!P> z8x;*b$4SS15|; z6W?2%sixv!yIr;h8Cc)BE^?LS?=~8a?J})fev^b+7LLYK5!Y5T0C{L#B=L#x&azX9 z;5MKGY!EAuxU(KVfnzSI)bh})LawO6JSPxFqs6((c&X_493pQLI#Hxg2?Jva=UheK zSbzkApso!(0tsVszgrfeVl^@Nu5Htv6x{Ue_}KVV8^cXAZ*%;zyN%2?9SumZ zWWhDq;7nV6Y=Igqu8f%jBeNwHKh|1D=^Nj*Nr=XFNRWXrW@e|yW{Z=?OkN3ekp45i zgII1RSQ(g0i)47_l)#M7@o-k1kza8n62W18HwazQ1Za;PH!(k1;__A%4jhXZSls~$ zG^-pHo@VODjj*6+d0|=WaW=ke5R+Zmcch5@X2VnhRYB;mP~59-Et@3tJmvLKL&YJB zj*WH%`xrt5CoBR*aXY@jBLPPkjH5)ej#3UJcmjkNdv#S}b!#;AD-&LMtOfBb*T>NL zSdMPc>u20yiK{_nnpRcg+Ndtg6=&z#__j2D)u>UL866%kP9QMh6OQO0vd7W}3`YXR zuF==euouhvtCaZOTC-}|TXI5e7bycpd0On0sEM60bwt$am9tt>n^#PscBv}##YE>} z(r1a8D^r;aLL#zCo)h$4e0sPg=Xb|r2rYt@Aaok0-(-tUJJ|pr)W-)Ew*=)N(3WF2 z5M0cz4x^534Aa35D`6L%%^AJ`ZYhzktr*lmdum<{7p+hcJMz?tEw7kWyKMGTZQZeg znBxL-=Pq;Wrpwo-N2x0PlVZiv3aQnV2I33_1+$Au5*Tw6rIe`>+qn8>jX(I3ng_{& zrd=)77JJ~DM=kq=Rbd>>Et1=zN$j$SAO}1U2YiRQ(u|bPN_2KPY(`p;jv`L5FBtb5 zjQ(E!7@In5!j7t&Gf}xtc%N`9DjKDa;U#=~!?>cMeF@pFXM$L4;R@8I-psm4uaS30 zz6j0E22qnOXxd%4vZ>dYBhBcfJroY(z+sx}W^K9}cr@ zQ_lg80TsbM_Y+2{`t44sOJi9Q5Xk z6zG!dC-0WSt~QBxZ6zPuRhm0GF?!rMMjIbcj5+}QF%Vio?f9_)S~|6s$)NC8=nvv< zhYAt~CkLutG*E7ai^mP6Z&eVs>$?pFqC80=N=k|Ac!ThRVc~TND-!{d@Vn)$m@{+p z6Vt_!SR||ptbzEgLG}hibT6)3BYh*raPcrH2o*1lqaW%?2VhqnOd-tFWkwFm&7qF1 zik{SgU6LEV!Duy0ho_V>D#9u)3miPmeHQ9TMZ;a@ zaIac{7Oi48=YW*SQ#lKy3XRJvoc5}rOkK>D9pDAEl_vQJoq*UZW%othu4ho&ZGCce z!mhKCgz|kyO(!!Lwh9)&VsDViX_m=`CwXHVcGM#2$1X zoGd(eW438WxHJ)~iDBwzIhhIsp~bc)AV0oWiSPP$AVi{`3y`?3FPQzwJs^4!VX1z= z#7S9i#MfN~G2se|4Tkg%B=V5>?|{;Cw)YR#-ZgdOA!d)E^>b-%AIY9!G7<&TL^CFX zddZ{h3k{qII}#Qd0di4aa8UwA0$$))eKnQ67Pz)@4D@wl4Bef-6c;E`YuHTqn+KLo z9mdz!nYyc9DZ(PePl<0p##P;Q($X;LwT4AWV2V7oBjY2Za1Z098Ooc}(ME|cn#Ts0 z`|5QPKf6u*bzDir_G%-2>R9rnW$Ua}g z1IGBy0JpO%Sx1+VlGk!wMMK^3swD1|xYBQbXk8W3BvvJqr%gtK_2Jo<vDAo zo|=~3n<4WQIVP}D4PhE3jBN)-7GG~MKP!#I5o2g_vR;f<$X8qQjfj09D-8X4rb&A5 zEl96<+MqpO_KAxs?5=c!pgBXoxze?L)!|uA(Rt|BykvFmt5(0-%mC;%HCl=MweGEv zw`#k>+}RcY{E`8u-sYsB@UBIR5^dy>d6#)WqvQh~>_zlWm%{q z*DCm;?FYZvgsZPkHJ{|z$Hn`U*h7!8Z74bu7IHT%nl;jlp&v@I6xZF>3Lcda1YO;x zi=T8U3?zZP*sKkV1W9=dL2J$wNX{9`61<~@3ct6TiZ~}*n%`$HI7@MqRN^*9uAjO+2g^cbeM&Wd z`(sCA?JpoZLbl;J4S&XRidA1RxI?*JH?EP!x%!ojJg&(A6OZH?#TWu+Db zmB=Ty4cQuv1r)|qCaS#qZXbV@?#v)ov}~TVt$B4~7hI=qw|k|Uk?eVfJ}Xc~MFJQ| zrC~IzdOZi>aj>}iIG$RRch*ILfxWY=N<*D(Qh-@!g9{{Nthx3SR1z7iyxLWu+6G%% zWO>DQq?y(?tI`vbuiAnDLv;yM=MPa0I7) z$gDPLdlzrovVGH*UR>7{CWESL7xqQfpfJ}QGJ9vH=L+hv7Ii3$So}nnUy2n5x6}X3 zEtd~%*}8FX`z3<}SeSKAx&7;M5NAd#TzZ1S9Nckkr*{=hjE`@m{VGbjmyo1OV`_> z+%nROyT(h?g>Bm|+g{j`0P~EbK?+smK;JqK0lP zTdKvj9N$_b7bb}4lk@Fn$fV-uh)v&B33qe2$629`lTBquwTR}S2HUkr3F#SXjvmT$ zY2D%`E)W<`#^ES_&}~*p&egkR-tkRFEsXqB3SKT*4y){5*(L9;V?RPcq?SfI@_7fM zH!R7%%Z^)f>Jhoe-YOY*qRa!=3|-r*ao`OuG1U-yvT1b*ur#%Ik`#no$CksmA=G$+ zzp~>K5!4I+kfR@@&s!YjtEtvn)M!O@+8*_5MYO@1r8XgZATePjFk~+|bL&&2XS z;>$98&GDnas!86PiUHb$yM{{Th_u*EvYZ3d`;$sQORPKptZ&oh#S@e{@u$c#O0da%+;0C&~;|qqRWWN%yui z!k>7EOordNkJ6T2_!AG&z7R%RF2^v-J28I{YDp(HSRmT;?YXHW!)%v~uIqAkAz?Er zqLbYrnYK_xX)Z|V<*v=0tOGf}NGNOxRElOQu`sX1CpuDWjOLG)Z)Ns$*5(k>c--fD@6RM z?rX_!gc!=GO`PCG+KmM{3==Y+>nPGbZ`0FA?fH(d8&}PG>|=S)-WJS)6EtznifC1F z;^Xmr;v=S3f}boRwyNQEX4F3&2}TkpH441rRd@z1&l3kJ4Z9X7d4yy0S@vVg2X6wL zdM>Lmdq8z6rgKPM`x5EOcu#QR&T}i0X?Mci^Qzfc0rA34V&!-$RI)%g;+3U*_<(#M-x6U@uwg9b zy8#_MJUKz~a)u4sz|v=yH)e&h=#bXQCoAO0?4sFUwrbIOqm;yJ;>1cZ=Tkq}0WJJc zTe780l`#x-2*Wr)$Q~whuSD$J=w zBsMI5cR=joYZ0Z|&k{2!jd#ny6i=L}R8#RsuM)8bLRfcY*CPAzJi1#d<^Q)~v}?nj zi+lF0Oo+jbVy+Xxc^-VeNab@)++dP54+2jQP zViQ=o0?ae&OeK<6z}1^=S6+aVDHyMeLr_jVk_`)L{&+9p!?tP=Phl(YGWMt8lzxNf##*0(XXTp7^O9p7DjyW4`k>W^EctYD) z8)vJr(rjZ#ejQ^3kvdiZK&ExeGA&Za@GFYqDs_-MoS(W%yD=$dl18>t#X4xF8=*JT zO*&9hj>3pd!o2L(Q3}peO@)isfPU3oC#-6hI!>>GM`z59PmLWSLs+LzF@ZpznbEl- zS*q$RsNB+&n?jPuYVkjp<>u_#9JCUAwrix$cuQ1T}(rva)g5CSPzxZv!emaB%zE~YS+F)nniT5{W(%`-pb}$^eQ~%@lSy(P3*bXA#2VlJ8mI(!~XNQnsLlU+UfIrthOY9s-^VOA=V?Mtnyq` zfaGFi6{o2b=RW=`e>Rev7zqEG6Y@TCnv^_J68yq@D%ZA_)eO7tbk;Z>b8)6MH*>kj3txj#c|hs@tWl{e!Q^QVaRuHA_(#hH6|Pfx zzb#VgF#uS3C-QzVVrO%*E5pRt18Dj4R8NapIDML&)1KZJE*ABiK zO!cH`*yUg`EmY=z+JSFcSuttKvskf$9j3YtE~^c*JkgoJ>ipmmuuL4Y*xTYrkaq$k zqy?NU8`!)A7qk6zx_CM9tq4!JzL$+65q~7>yc1DKlWpqFthnrWN^|jlShp97b3 zgMn^0d+R3jo>`+)HQX#)Dpj}!8uAsqnnK&PS`3!>Lc18Y`9g^cq4cbz35QIB*mx?t zR$vWu=9M@~1>cQ2)|zY!xwHi>OOZn?2s|zap0kK&P&L$Rj0xwaGKo3R2?o^hHj*Ts zdgp>EYucM!lQTKT_fT5c@SSOUjd}-xoZ>|E9NRTkJX+)|VYVIy06q}ZkX9U3tst9M z?9v~w^U|5cHOG!vtsXaspH^b4qucwmmIl)7n%FY(?f`Gz_30rknLMjYUy+Gq(hp`y z4U;C+y|jYObY&|n-Br5a1&0!~*?UPmqUwwECAkzZS7}YLoC5)>)N2Q zlXFcKvdh6kfHDq%NW5hg^V5H6DP5a znhIO$pC0bAFCEdr9c#yh$Yru#iKIY_2vZt@7#AX+b!b8Sl=RJ;5kF$=CTt+1+*rr!`gFo{_Hn@u#!V_fs1=yXotAFd zr!=YbX?MMmzF+T|JX!8BqX4RZyC$K$yn{%;bd`U-E6c8_k%o{)myM@m z4pvP`s&#sve6DqN&ua0?q$S4e>f)uIY3UP|EIB!0`K6|u=IpGrES-s+IUKYFt?lCY zKp-}8_Kveda<;8*_d6tK^Id*&`r_k{d^@ed+Tdgzvd`SHMWc~^x+5uQvFz!3%Hxb} z_PN*e{#_ew2$;4#M9D`~fYPijVG#08SjihFk!#&V8i{%rj0}%SS(`Ny{xv!lDyw^K zE02XV=wE48nmOAdc9#u#k*c%0GiHtU$^=IG=2Q1{vph!8pBWP(mS0s%=XA?Mh(rVO zGtpe|CG~#PQM*Xe9+DjZcd}$wXo3xC;LgP$1eHb$%BzD>EB%dbP9Br=GDfQ-0v=}D)qa) zEt~n>t-Z^%sl4xQjgt1=r8$%J-32C_^qm0tNwBSgUeM=@q{)Hl6#H+KJD5olU zuq{I(I&JXrqww4b7x)BFlELLZN!)-$cj~$dm{BkKW@}ZY}?7q!N@two~ z&<=!36i?QfIX_yxb&hB#nXN(ewpI;(C}7(?L1c^XHB?+rx9AvX<^c_PlzEw)Ru{;R z>0+8@Uxcor#A4l}@*?!j1%i1k{wEk4me@>w#8?(pA@V`_k78cSlj_`~*_f?-H*cq` z##Rz0>Ck%(z2bE8Rju9FlSyzRE5`nJWZWj-kCklV&P}?UYqXf z>bG=b3Y}NP7lt)A)B!FaE$_-9TS9w%xJ2mS@pS^zXw+HgvaHSz&Q;_#WkZ4m)P%$5-3moKQ4jDspr8e{~#Ym$d8@yV;iE4v%Z|qOR94tSrYGM(CI%5@f6 zw&lck4?m=OB-!!Z!LteS`m~BvA~V^ocOF&cqpxKZ*|hmJ^++Yqp9}ojmy}7WUlli; zF)zm@$(fJeH$bGb(C+~6#_-)|(0A8jx=RQzsa;7Pt*QLQl+?~&QfKdd@%W)%JDnVK Qa+U8*u+t;6>xYd00>{JcRR910 literal 0 Hc-jL100001 diff --git a/gold/po/it.gmo b/gold/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b79d83af267817e170d8b0fefef805909aa8e2a0 GIT binary patch literal 50879 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 literal 0 Hc-jL100001 diff --git a/gold/po/vi.gmo b/gold/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c2d3d9619748bdd2ec6f67eb6be8255eff9539c4 GIT binary patch literal 55950 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%0DBYT{`;-Pgi1y~;Cj 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 literal 0 Hc-jL100001 diff --git a/gas/po/fi.gmo b/gas/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..72df64d4c651561cbb27c2cd737301713d77a470 GIT binary patch literal 442741 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 z zY%C8mo4ZH7Gn&EHT|~@PLJy7S$dP_`JD~R;tBxyE9r-O@dSv5~0F5Qct&nCc<4eGV z`BoV;)vDF&^xUeUNFqU=)6`rveUwgUf(BuV_&xv=+csT?W2=tGu;3w}0WU5PgUn>! zK+!Uf(3=-!q?*Tv8c)nk>M(o-ogDtdQbqzJ$ntJ@SZXI^;6Ybd)s)Cn@}Fx8?VF*; z6&bAYCfJCmBkSp7f{3{IpH)&OaD<`?xOdX_a!t+Yoi#i-p;$oqUDwSH%{qTPaFMe< zJD#;|CLTaeZub+yo{=nHMmjrdZ8iU*l&yoU=H^xt=kr!`XR9edO)3vGvG{qQ>#zcm zt1yrK*FQJ@X#TPNi@8N|woI(#87$jT^h0z?{eFrrZ*YN7^KgL`=tghI-e-_0=PVgY z7&O7Yp8?L-511hLhh}7?=+qSTP}aUcL&0#wR~H9XXg0r6n-c@tz#)h8d4zjsN7=yh zM?R!qf=bZKNs`MdXQSvlwy=H&G2@_Lz||XTrv2=;Q(WHf4DuDLH%Wh$V>xYFSjfrT zgpepARnY|HYWM%LBwL6|p*4DLE z{cPmnS;u2=5RHDuH^4(CQ;ZRj7KL}3{AlLE<8@Jfy*W&~+w+(>;R?PV6!-y0+{*!S z&%laigxF&!$XEx^b=~MA0`iLtgKivv9r&U&DBDJo8%VQhIJTskVD8Di2a_~04GmK zU^hR>B1cf>XBs<4g1wcM8a~ey0|p6`p*`w%x{w0di|QmAVuy$dcYZuWn8MNQR%I$Y z8%@EHn$Kx;ouCJce_UE-;n(E*Z{LmNIg{S2Shm za+n02CNf5_r@(adh7im~A*0t}5z?W2!~wyMs}~4^2Y@iRLFt%)L7vTFZ=yPVNXgQS zkd~Gj(u;z0O~9o>k17Rsp{yw5m+Y@~wypa3wtW|pE{OEH(gIp%bZK^7xP zqlr!`=PJIeAf{hei_JGny*x{w0e3s0{8D{f4F(h?xPP3D8@usRbT1tlVE2wXfrr11 z023;SBDDqJ)5Iv`XroU$J#cTZ@jQ;OXc=Ynntyq$f%MCgXacDYM zul2!5761rGDcw7=jqlsYPRo zZifjBcAQ&FI-XBz1Y5Hq3@rI%KDn8j9(gvO+zkAFUx>>Wbf@G>K0#~`osr`>{;WWB zLA*7aOPNZ=P_`^<<`i9b{p|BzIZvCeMgudL5Z6ZUcysR6QG6~5nAL;M;k=a$hVA~$ ztl)yF1af{k)1A)*M*Vs}y-)k>mt4--_cp}O}TEG4k47nY&qhWM0;@%x(xgN%BEhDMT(3v8c5KMFuS#T*d51|k5Rw?c$ z7nYN3amrgV@l*wOre}RkLxm-FenmU4kKB1?8^KKLoF1o$$}^1WdUYR>j!nq~F)T`fWOb9Rs1G*B4NmGiQ!kJq4O#f`rZ%mDto(F8)iY7s<__ z++7nMW5sNuwP<*NL7!4D0bFcLWY{Hk2{O{Gm`Nas zh35-%VGTy0Z0XPjV&6Y~l;9U-MzSo3*Mq8G+BVcI6`yNHOzHqrCdg`W!=Iypp`t{3?kyJNCobY^}Do>UaeUQ zC5Wht5F0MIn9!|k$g1H7g<~Il*kzAfY;5xlkgf#@x!A;96$QDK^0Xka6p&is^kflaqZQ^c2a(u@MlB>3RkDonWUE=UP1xalcyhGW+(6CXR@0Ch32g!S?lzI{Zm-m5 zCAo)5*RfI`j2|YCwFv(<3!1Zj@)zg7A6{-WqqWQ9^Hy`6IOjcx&q;g@;M?77EXT)P zW$58<<2F9#xV_bci`~sF`m4gR|$e|Ns2o1wW4Xlnx++Q3#!V>_Ge{&QLZ zdb4Cq(j{jZkcL@tty#s@aWouGe$qn9$^%3Y(ze=(S8bN!5L1j+A@ewx>_&WiI2f*8 zk2sGu!-is;>|uks%z8r!CN(u;+GevE>gM*M$_1*yTt1K(O%PyYh4U3BPX_xZcOKl! z%>O(eWcyjn_TT9A@#MR8*p9nY`2;~5n1EJf`p|2qaplq+{~u|Uo(+{QXCl21}TCGXAxap zd_MQl!Vua^(1cS2Fc~aSqEFgwj3*Od%lmW~=Xj;|@WbI*uCf3n_|iGFa8i}f8(Q6i zwtp0>ykIv=kxTA?DL2P7QPI3kLAEOB@l!SXT+T09$Mfj1%P|(^$Q90h^2p*YM^Zup z<7m`w&nCJSP6#7%=pyHfvSU+tzM@7_RD8M9nawnc4&Pwo0y-G`oxCxEo(J=6lfN z*vHi@AY2p98(0$6(SwHAYsrptNkXlWXHmNaXWdIt_Tr?V<&1}#lSO?o^pX!&@RV>6 z>L+7%)wM>vOM&4o#iaHUMOsZ?>(A(^+b+zUV`n&1l~&}kJ~)EkloV=@T60fYi;h}# zJb6B11RUH8?W{SdAsq8s-<%=iFwK(e#S8I|hG!c{{4}k7Y>*cJ-O&WX=LF!LGQJ_< zCAFnb9Q8Wt@$ktYyqMdE%J|XE(!9|H@^MfxN&I;<Pm)u$TeHBlCpz_7)=Gsctqiy|-if5|T)MiMET2$uMIyw)Ci9)^A$TuA7oNEOM>?h!vVGO zQ9|}$b=zY}CNa|V6erT`hBEYaimZyQ*$@Cx>i5n1ruo0-=H~9^PGi&bq35KCv%+Ol zi%2zXT^eH{H^0p8`J2f0pkt`C9ufkE@f{UA@ND+jCPHxD=ZoFvxEF~5T^ZW?+qBL8 zMia}&4e_kV4{7ohKQrdu{{Nv|n@cN$&1of}V)k#a+NdhV8 z=;ZjLVCV#t3oR;Fr>(8#=E3f!hK;CPogX-XTBoqy-TrDS|8jU1U0njEawxc5CA`X; z?_@p4|6ZUvijmaUN0<^&LrH!%>*s}|5l(G(6|P}4^%W`R+yN-(*&hO5nY)^;=ld8O zgPa>#-bA^AbPh+=o*T)}1uEk=SBL-oer_vtxA^Vh(ec^gTuLH5Ji9u)%+op7I;1)| z-2ZU6km_{*;PQO&J=uv_9l@>WCxJz2Mln!sOw)UjJF@1?b$>E3jf3l~Jy9X&7r@Jn z(AMSrg|)VpUB*I@nRo}}VD~M|G{B?p>vah0#p74E-+TNXhR|J)BCOHT6oShmsG?Uj z?_hecQy@7&eQ+l`R%|a!M}wXRrMCprU@&7U3)qtDUN`VXSBrVmIw9i&o!T&#n$7Qt z@~y=@#Vf?*7B`!kXfrxJe+zbA>r}gdw7E3p_R^FubCdxn1L)th#U6r=p5^|-t}BQVI@ObCQ-{GA;ZH;`T$A5B3=X{o+1Zl zC_LSn$Lh?$aR98tsA`}cn4iQ{-x}cwo~S!X!7kCALL&QDXugFvhj-36H*|!#2RrD; zonpu;n2A^5$Gfxl(L0v2FJ?F3Uw+bSr$e*;l~HN$TbmN7jM&QhzOD>%WtDK`2H8C>3B_RDzS-+-wI^OWGZgq8 z4$*^wqv435DY|UWvE|B~Ub^Xn!;v-T3X08unn9TE&Vx0#6jm*pD~ZN1lkptsebO9V z23l#@UBeo5Rlb6q#N}EKK<13#*VvKw;XMaEQ^VNF*jCG$!*+*Hn~z(j74z>;pJ6te z-`n`R+x-koDV@+(tM&iLSj|Ys5U6BlOoUIF4V7o`K%BW95$7R_id~zm-309nmMPb; z1kr$g{c7^W=1>YgL$!P5%B+gV@1GUYfIO$)z!M_QSR)#Z6F!L`{I*7%t7bLdg^NY= zxZ=_vxx`y8&I(-X^etBueJ3Tnfz-OdOhaK8LBwIv03yQuD~BYRWHkRWYyJR-eof{QKCD*T0(3I+ zq7xtim*Vh-i!2KiPez&HJJt-~v!VYoorOPDJD+J_j=|;ZdOB)fqaFS`7~C{2L18n7 z=xs=YRu#N&vmR#aXj)0>lWB)hKd-nRqMFLwY^$m5t&%Y?PiKxj#dH*J8B2sWM=MG> zKw!E|E3_g?9Ur8(Hhq^l98E+4nLz6U0NGT9GQFYlH7+Hi3@bB`O64cF8r0Ib26P<%-co2J`Ph(8AMoxA*9MTBUK(If4V0xQO0@>VK!&lh{~9OOZlIG(5u7 zG#%@m#+@lPw0n)XmWYCwn?eOf%BXoNe%i0u$Xvat;vF00AIXGMzw1F*wyT8gygEZ| zqby9|Sso;M^XcQ0!w-ip-PcM`i^@-n%;MGAa{~!e2ubb{s5M5`iwPz+^r$E~2i^yk z$*}UVJ{x1`?B+{w3h-*f=_g8%{G;UZI(W53{lc@Z%L%b~#ODZ#YiNnb@PSpyU{|md zcs!-gMjZ9WG9KEk(dFVV0l~!c_6o9_SX+n3Q=STAF#~)F?{Sw$B zkI1*q=Rbs~PxH^kc=|9?^6y4ZYGyLtHMuR~p9fd=J}+LgGn-!}bCjFUmN5&xSKkxo zv{p%zK!aPi`sxr*XtT=d8ZW*fow}rryskP*ytf`OuBuo8=HDn(h6mNwv0*AIlzKf{ zO;$Z3b_@?5j7#I&aR*$2O6tn0vau-@P%--Oh)#xrT2a>W_oNkfT2D;PJz_J!%@e8w zw5t0(Xs9sVy5gQ56MZ2L*CIVy>^A`QlP12Xdw!&nN zerT~UEbq@QE)U-xAD}lwLA`5ID#x3?)>Z(X4YZ`}2hhp|WS<~9Ao=w!E^44Z zTDpP0GytNN?TocaW4!`su+9Ol6P+BMy}SDD#S0r7@n0|0kCy&1#h5)^a;1NKP(Lak zjxLnB+_?q+%^VWVVh7cnH^({U&cg*#49k(#6gJUv&_l>en68DD8yfLwZbQcx*KZEr z9iMTQTQizIoE-md_U-mp_$WA}CJBfO_q`Eq#6E?^uR^F*D6M=r)o}lRM)y3@w^1ry zi4I)nSq<)n3iiYvo3oX=`Pwfs$l8lBkQy?EQkzpt0I^k{r0A}=QHRfpm*N!&pG{%9 zdVY(r3<`h~CNjuY3Z5Tt#xIe7=BOl{n77_CdpNpIx&DcfzuPNRG56n$-n#JhxTGTX`uv?kSEpsXG2}rwAzyJQj z;brUi{Oo&h+XOuB6qgn@V-a2vtDpU-nLCZxUrIY0 z&Y{)<5e_}VCD37&q@jtK188try*|2hUj2+6jtf(x8OP1WN{;?r3H??aH(ut+TaJ87 z*Um$w^ias1UWJ%hDNXUV3gf1*n!BuwipS0#7WGmzP*N;vX9P`ylxv=!?nuT8 zwMARxQ) z>EhrsYdLSo(D>;y{S@E+we>$cJ*JOh5R%r{)=No^K=m0<)!^ysN$s!5X$=T$Ix2fM z#A1x|cn;Ha)V}|0O%CGRZAvA^-fUJdMYQ7^n>{kn+u>ez%!xoz|LQ_ol*T9a3Hc=M z4v6z=Gp=5o(F_lWiuQISRx4O7@T>t&7M6s~l2+@~srWbmB$lATCScB!uoocKg4f1O znW?~ozar5JvgzY#vfoSO>Au*9_dXvvDteXLQ@!fNBNS8Mj9pCl4484vt~E>I^@`Sz zVj{95ls6)F23(33&?UiwiZ(B|o_Wm2l(%#0>QSjz8BH$zA} zWw#uRH~yAcN*g{FbU$uUuhCJ+fxFtR!=mPK4)#Kl2NHXmsy6i4R8`_^7)P5fdM01} z%2n&y@>`D0i^5BS{}-Xvt~0rH!-Ji;ubZGTF9QX2znU7Vc zuyVhgLehh(r-)!Ut=}m)&SB(XcamU~pBMnmIo=L!PmcJeY=0< zs6}yVXA5IURgx)1XIBFNReP?6)&z4{5$7VQLdt1EL5dDJ`OZutbVWq-siP1xZ?4{) zBQW$X9+{63bD{@H|NWngiLL37WFx+T;W3BKIy$1#NJD6d)@UBF9HjE38oojU?2(|W z2*F8`jMwHfz|0^RJ1^a|BFD_V&hQa&RWRe|3^hYonUp8UQU=ym=#f@6hQ(f2P;12=8+BILg_;b`C)2}N+{NS^F8ZGeF_1JU1bYbPfo7-@ zEG*(Cy@aL`6NKE{JiI;Hy=k@V07GI~Dr~EJ=1c-6&sx9sP^f9wJTgz(3-!9 zZB)y?jqw}V?uBi6mO1w^BO~)V6M{5hclUc8!^9kdEWp5W`f{vxLa+CWBg09Gz}yey z#x@?Ak&cw&x(mZOORq^UX>T3piO8q3gdz()`=RnCF_WLOOLKujh1hej5Svuno8qW* zJ2)BB_AgqOM1bKvB>j>mj@D18lSJmHZ?E^S&X3moQg9=jj=EGPzzSm{F=l}pmnqzI z>`{?f56m+0N(K4V>r{s4@YlE&AZ41hldv%_W!B1U2+1CA_ZEoAMi?+grDdFk{_eTUVK(b$)RbogKEWUU$;5S%9$; z1OiiA9Y=fMxP-PoIF;Z9{BMQmSRDc?!XY66J6#L{xv!#QEfN<63zNl=4}fj}6p`kM zLX5evP|Zir#mape(~kwE=r73IQSh6DT0E@vN29N^u_Hjw$-u#oYiYWIBu(8Gh~W0& z^M(qF+_7EAeL!BA9~~4jC>pRQT??o&Sf9%UBm$OOOo`iBgA8}d(MBZuL1F~$>8z8^ z;ePo%=He;DqV-6DMd>(++)%T?6Y7Wr_thlkLz#0)XVyk%fFdum<;Y$UNUEG9nMtDU zJy0q>ku%B61_3C)JQziL*o94cb@L_}OfbM~GP3s+BpKC?^UqwBQA7r}oJ9|-lto9s zrDqo!OtO4oX;*txE=16;gJ`VJeo_9Jpv10?1umtz;sRpqn0&c5W}$cda+udqRPxep_^2&Zf?jFf_Mk-f%_OU z1|ZRKr#J9Ltgf0{aBuJ}^y(c+?_qAwKn6 zpFy$>rn(!uojS+9k^0XRT$@$%nq}5&R1DGZcYt$)BJ7?DYoG1c^?rtH8dZAk93qgK z%4wZq2PhLIhKJfz&hFX!j}nF|XQ<=WKC2{bW?=G9#2ei7g@?2sK*L`Apu(X-*F?ZM z!jSfigIjf~x4@4`L%LONCfBzUM3$L!MEMVIfEscr{0>M4=T^PV#%pyo+J zT4?}w!DN6jCGvQl)^oGsB4Eu#W+}tIu>XdfNfQEO*{>u4@oJ2N2n;J`*}1(%tH%WL z|D_=6Cey^Q!xR; zWfhTE176rh8cnZZ$+@O+bB%k&l4Pp6Y5O`c?*VaC*VEB8oK7;X-uT;KZ1F6-R6vdO z1q4kXARms7o!`;8U6drDh_axzAOg0Xa9leC-6PNg>?VkIpwJ95M@RaZB?#?$IhS^I z8j0(NGpE&T_-$_*n%0Pi9jA#=i3C!O8P{2*sEbf?;R2i=0TGpDJ}*i|FdF7l*dm&j^C2 zy74T#p#%Vf5l8~rz1pzk zi-fd+ECDJBRhL9YHi%FL?Z7nmImvN^b9oYOk&Tbb-yY+a1Ie9hK)K3D^IU|!k+?&9 z5A3wCcQT6rWt4?M*2)%;3Y4HSeHYV;bm`AaS%9#s{#muTTK^T*^JM{#Q$6HAE$pc_ z`z%`HkS?6BC|S$riQ)mO{)9~R4y-%}=Wi}WD}z!4%u4jU#DT6TU2KAL2LRL)M{&6s zmN;di!-UcTx1&VUv}6F%Cpd*7;Hbl;D9N-lPH)IS0K`Bpvu<3VwNUIC?SElSKZ#j;odkZT&p7Q zlN!P1A7)mux2yU3{XVExToxR}3Gs9s0v$-MbK^dRY^#kFIcYx#G=QuIU>eggloLLu z0J8+4b*9kXVW|amgCuQFgJxutn8M+pI38}$-v{f(D2|H)N zK>Yt^&PJXUXP(cj`117OCwHHB9t|}6xYZ;-OG{5X+po}N=o;+25`_kKHeQ3TIcbFH zJ2+mIt<10ucxxney$%C%4owS~iuNTT53&L*d6Ocpd3UjRXv^LpU?^+bVkNPS$_ibw z8IFeN*g}dOXK=E?q%QW{RXWH4RFkrjXY~g&y$9o24oERTih%oS^>k5=yah=W1Q&Y$ z>f)eiogwqaCrV$IS zfDYb-!p?`QPQ+5V79n2^MN#qzOW_=2Dv4Xd-5kb+&HLZn)%S*G1t1J$9b}$|ql0fx z`#_;uI}-w0@Nk&)-RgtYG|rWDq&|GUQjbS8z|E!BABnTO7vxf|s(Kh3phcaITu6a8 zuZ57tlfJ=pGU^8bO~tvpJ#V-iqr4CWq-DtiSRQs^@AlPCpdTS?mzhKOjoDhsj&#$J z5kw=x8_MEk=?M;3=qG;uq1^1T$x>OIr&Y~iThDrZ)@b+ak=krhuYd9B=%{&o);hbs z*uT0uygVaYNFl}L;l)WTMRc=T=lvH=X&tw7-V`SIxReit6YzwCrqZ5b-by_SaRD0TbVP*H zm&3U4fD@?D+InmArGaIWAB7&RN9 zEu7t$5wcG7JqVsBS1f#cG>rXqbku85ISL zp|2@6uG85ta{Y9I*<3`!2${>8u<%@NRI%eM^;ut6?ohesb2rJ@o*hak)=!zxzKoF~hgAyI;YEg`#y*2onF&tMb z&Ma8fdC$-l-ppK;Qjjch4hRkLSw@oEy?5(&4xNWka!Qr(aeV>n$@u}P-z05Y^rm%j zc(8E@|B^*JXAAVW_fPDn!SC9!`9A=^0jw@A@wp8Su?rg<6exhpeD+?}p7apZ2P6=T zeSj&A)=Rj?+wcows{7SnoH=DSU(UNc4xQ{kq#l!D!_aZM^!O#%ciJ6A{ z!Tkan&>6>)mf7ShYwV88*Z}`fl3KZaZM|4hs97K~VaAoc6QydsPy5horl9z7eXD z%qJ7t?~4eu)6yaWI+qtwLHpz(?ZOt>2g4C*i3YmKR*;QD7j@8;1hFivJ4s4Vs4C-#Hm_Rzpj5ir0CO|jYs8IaUco6MYKs|VEgp6xi`@kpD`c8MA%;6kPVdDxol0UK6 zH_cU;cgHQR;E7FV`5_{axgdH<(}qfBiZdkNF$ETeNexJzVebo+YZ*ojWT3iJ9sGSZ znwkmz{}7`!#ce<{aR35{b;ZT7Hazr6lU~eE&a=*UHmpa930o++6L}lGBGlfJyWobS z4y;}^9!RV!3ZVv+KQ|4SvL=VfO+L0z(zWBDO9j2+fk9{&1yaur)IC@xBaQdd3gGF& zK#-uT)^A7Gr-zsC4*h7~3IYlH(mZCCn}V3+Oe8-Wfw3ZP!9oo2YMF|uKzCL=t`H@h zurO&bO^prfQ$dzLB9e968NWbXty(D{h_jnaXxPnxonq&BJ+#q=Qh`jnp`V`WZDNKiIX@7FFBsx)%K`1i!e__{7MFzoU5g#&dn6p!LG6fR209 zJ!01ZI3nI7SpGEKBx<Ln_7F#_qZ+K6Ef{6@?9utr8wPC{j7l@g^k+fO1mZ<3POb z4ULG=Q@t-fL&`hA)!8#6t#X*h$pL@&N8~{WaOkQS)QG`P=0}@LVGS zev)M+6mG)|32@2lgVrOYd<7Eglsrj>&aKn(7mYKsoq)CyQqc`X0qttdI|4RLlwUaz zu*RbKdsCaNDUK93WO1>rC`|cqD*28Wwm3sv_bBXd4u}hW2VF+Tw=nD+)f%JwWH0*u z*EKjd)S@(rvwy7D4ljpl9{h_hfpJ}3e^%E3FTq~|afZ4HNB)rHuLvn0p`-WRW|v?P z-1Ab7q{OwoqiARlb<(~$zfK*NbT)^?d7I~H(;iwh&(GjdAqb2fHCCUHOd8&!kAmJJ zCiB9tBFGkrFx?(=kiPND+Mg!->x*eVdNklpDs~PlUhu7QB@^gw`V;s!5z zb#mVl`>H&7IUzgL&Y>iuWLa%6T`(qDcOf9v)uLuC+D2v0%ROu-7$EHCUhw`t-9O=a z61Ug*>DTu#eFsFRT{B*k$_c>(Oe_)s(&C%HULDSlL^p2H@C;y=L*vEQzy*{e6~ZQ}($h zgSV9gJ){Cp%kJvzAs*8d5HL_$fLmZVCW(>x_TMPP{>*_bP`yYWH|F>wJh&yt(OS`(GfjWF@%MiJ(SAurZ*+^p{BKg8(c~bLCdv3v;feOGl<$4 zkiC3p2q1lS%@Dk+kTXng*vsxjsZQWqE_flX*yDP4G=l^n@Ev+qnxXJhK}TVrgpNny zw9ELVObyDzw=knYONx@%IJt$)Rpt(fk)jd%g8n7Dk_Xid(+fUVp@E4Lb_>W-7Nm5@ z*ZYcA_DPaN1B)4ws7a_;T6@b(dDX%;*W?0-ED4;KD`ePb#1;g9u#USGIJM)Q|JnW* zD9!Y&vUc_$kA-`U-WV1_Lbl4NM^lL^k_pCy(VTA*SKs&*Ai!xqC zp=trwHq?2P12vTpF%5WbftRlD&o-aO`N9{Gfyp(76WHG)3TsbuasB=+d}th7ED^uC zv_+Cfv79tCv&^HlZuXjpPH3z335uC@rd_q#Ak#~G>J3nRSPn5|>3T!6rlWpl?%ic0 z$={z>;5Hv;{C*?@SNhnSI>dM`#1GdaTxd(Lv-L){ztl*wrirbhY(($EG zm(nu>UBY54()_q>R=f=W?l4mN912D?uk;wDx|#(EuF#=VYGZH}uC|?8zJ>$KnI}EM z$8v-Zq2shJqEf>T$yI7ul_H(a-PaT1rxhxvpJOK_TO|r(`OV=Y95gs+&vZLt1PXpf z^#E9dq|OK2+J6+$P^{xaF+ijll^%SKY7$|c6T3S)h*O-~mpOOBDSF(_T z72U3!{rfN(y~2?;9ls;M&%eBmnicmYHVeJ9U3~-go2Kd$Ta))J2CvK?SUIT(LB_J% zugp5ie&g^p6@4C~b^0(;^;S=SkESZvc^{aYbvTs^vQIJ1_5vEuAv_1d7)h_wao)>t zT|lfnV~VTYaWG$P`v&9%@S|keLItnc$r9H7kUNar>l;xzJ!3 zu3jOaSr6T!WSEMj0ELU<@>sAU<;u75vW}^kS*LbJEw#fc2M-uV*eReV>5P`id@Vgw zEs{OCBH`CK(SxxT7@!1_CXYoEP!{0b*u9K{@!&>Z{sV>r%rO{89QsJ<97uYgWLpFj zhB{jkyo*_I3tOIp%{q>uoRS3CrCNo=r1>U??f_*m3JIcL1|Nr2u|i>JnRq|)xxgXO zoT46=qI#N7g;0qV-*3*s*OQjRrYAVwIQJ82F2}|Ica(H#ZUc68cPcV~MfS7Vg3hNn zJ4l%IR#CC~2PFvU^f=GZ%Pb<@=~ffm`-lCfg=8P|Wa6e`cW{ki-q>B9wz)j%_VT1J zJyJb3oW4R+I9pg7a;`(C=lz)Ga-iL{69iz+Q0m$CZI9Wc5$0#WZsUP)0VmG+N^X zZbtf{h(>Trn?9`1MUT?{>MlOlT6>BU=faWmRvq4g?UN6vhhYA$k#qyn5_Y|=+l!(D zr(t493`=5TCHI0r@x&?yWJkp$!2l!^CTc^VQOtj0Q>0@U)=G|2K!9)*6H*}sk$0js z5Z=~HI6URp$~+>MsK|fMJf)Hu=a4eC213)4x8)KKO(;g}Ek8|kb{)h*3h4>pbpwI2 ztRV(vfdW#>y{l5uqlA#}6nawokijIpc`5=Q2-^_6Ul`2Y<{~Od%?3l7bTb~|t0;t+ z2=EC4`v3gjrUz@2nIIkY!JwCCWJttt&uf`}*DT{QojNVFpD3}I8TXxJ96yLaWObYi zdH%kb+K6mM#2W}#RP8@5Nt!-RWAa_7Zf-Bl)ty{J5F!ohXYjE4b?N&&`@w=t0t>kI zC`PXDyigcA(z5B%KtQI)r>BQ+kN2+**Ey*h?8LLNW!a0~9KF51JUlr+xIR5S{&@Xn zzjb(haq_-(eSUP*I=s^ObL{xh_J-$P^zQQTT@<)U&F7FcRhFqWRP7*^p^ML2=Y@72 zA3~_${8)zC0(@IfCF|*fn$$l-%C%>-<8v1?7ur8;?O@P*WO$HkTv_1MM?oy20<*L# z6oy>-c|h-}F}fsi zz%K-HFBKRg>Zz@{;^<;ODpGq|g5P=y(-ziTOKnLYB(;E3L#tSQwbUISXcah@erO%P zu|dUB2>IpA8{hO^s~0WFEL2pVM#X$abloqldBh$rt^P+@jl}N`0IW$I4;}Z{(t&_IblS*^nF^Ba|a|AsNJ+@f0m3nAb)| z!93%cdSD+~X4QK{zYaa_Rh^60lToqC;UfwrV>0XKTV)e*P(T>JY*Im4H%GF^u6g06 zXAf)DP8{nuUz%@b_-4g?tc`G4{USa>6_7VJ=icU1z4<>s)gtpxz45t#y*Z!Va5sL6 zWB9j-d1t}B8@oUL_+zuN3kr6;+9`Slf?1i<%;w|EP5Q59B!?fn^xwBMg$;C{-GKWN z1uO;hlG#)d`wkf1$d)C=i!(<TiArME=2O=5=xdptOW?;F&xP+Zr z^s*M2f!;u{k;azmBXY_kn;{q7-M5Q&SLa#6!IwR=WpuwUuct*w5#;u9CkK#guwdI3 z5fFw7sw0ii)aKCTXpOW(uO&&ydI>KDvKF*ZK=1X2E#8Y5ET>S`^Q{*_v2_b+kNTZ% zZ{o29;WPftePEw*K!rk%>@FD>w}lUsrF{~j*XXQVKqdwvs>;E|lP59QX6j(rfjoHr zbW=HQ;tawQJj)!@^fC_EVMoIDs;VP|K)0MgiYk6*fQ?QG729=qf6@o>Z?)Q=xn>w) z$=~n?DL6wb#~oKg>Pq=>|L9=#!|#i=fTU1V^E8+5shDq=+KwmlFf5vRb0rhA%YyiU zhAD4?nwq#+_^UPyf!y>F4tDrwSN#Gy@;&u`E+=^qZH?A(Rq8K|vihz$VC8j}KXfUo z0%VYo4_5Eapr|;T=8J7Kr3#gI+7pt$uvKjeyW8rvYHe6>G)RWMJC zAIYKgpmX?|v&VyqcVc$?^&)2LC$v}Cl{K~%H8yoj0uG}+y~&2;jpva!pGUs+Jo4Rd zA-70F3mJBvN&mdZdG6C_tKL>~S<3BY317}39Ae~1`6KQHa?`~XFJU2JmMg%efDwQN zO}l*ISU|pb1<@WV`8ooMC@P*eo4jK(CirrieZ+hg)Y5jhciqoA$eoWvDA9;HN-6z)^nvE=_0?N7y83g5NdbQYvc*cgw-^KSyW(0r+Ps0e{S zC|<>8%36+W{!`f0VfMrdNy{di_4?$;&pGlvN{vNcaH`g({t}R6P$-+prAbEZ;x1JN zl(1;gJ9u;yy;oAX1iwZ03OijDbZ!XSD^hMw0=Da{Zz{#7;lbrRnzw}WQNls2?+JLn7*4EbEYp>7$ z;)^8U50eJz-X{3#eFPZ6KbwN1{F`X!8FQAIRR}~M5!e9!E&~NV(qYq1}tB`vxC_ zskap6ss)KD;GOvOeGxpi*Y8U|l!%PEgdPO7;X6Z-QEp<;IaWQSQTtz%x`VY!z|2BY`>S z$<7!_Jd1c{B=G>hR~+KBZn(IXx@DPAbSR2BXy?>B(2Q0NY$|I*ps~NOEtdNErETf# zYj4c_3fz*CVO?64{m`saiBAM0Fa#XyCU<^pbH8MCZv4KBdw!1RWjckv+ z1*P78(jqS38&2S`E2m4WKP?H4>T&Ms7f=`?Y(RjcM`c_2LZ5#v(a%!_8LY}@DEp|> zv99T@u4+FgaPf;tnrnr|Ko!KJYFMPov^RwgIOY~zftek3X+W9R8 z5y#YraB)2e9gL%VX0V{HM@fhoRNIfry#qEOXxbFzQfB)XwuYx z>AqkxSYk{AlgCg$I4{F6%;G8BxG`BL3gntKYRRA+2eB0Qm3#?WXriTdXd>X_jdjEf zO_6FlJR?{jth#A&x-;@dA%9!w+*9V$64%82Z9~vocL`*$|49fy=2iH6}1Y)NDSayD=aI-}OZPyn+7=l0O-+H0dA^u^bzH&i|se7Mr++9K{zGM?+Dz1P` zFeJR;D;XMvkt}4acHkYO@EF=Mv06I)Jk!7J91o-djJon(|Mo%u_7`iC4C)02qiMJwTBX{}ZH`;1U0`i056>tZs$s%3VIJZ^fI8XZ zE}N}-7jTFbrCAiLZ)GV>pQZZLf~D_Um95ib8o~0 zw$MnTj2Wc%x&#Wg(z;wJZDiLtR<8K^{9!>62eZt+QU6fGRR5}RrrB-cj1g9jPcv(- z7`?K7sR;{JQCXgBb%}Kw{TChf4gKS=tkOaHx-(Ky{>`5**Ku(P-H$2vDp}w9?u6nh z>%KdSK*vJZF%Z_YI8#3-JqQjXtm~S4t4&Sk=)Ey}*&!yRGaDe(+)(lL)+Jg+0#~Z9 ziZM?F_NM8r!8KT+2sI*S6b>dr)pF>ubW)YOIVcN;`8 z0Yw7A<0T3dW)%SCYP|N|zV?BxVOoA9g(Q?}eo4^;Xi2?$x_P#_F^kTkC?^vV?NDD+ z*er0JYZb@`A`omY+@wIOPSW*ZXmPBE#`GqRaECiMNz5Ula2XA)wtO8F!c%5az z8RvWP)7dYEe`|FO>1>5tg$65^4Cn3Bl1%H^&R9*)x3FeuhgNZkF(k9r0Ysa!tf`-b7QmWxYt{PJTJjhH*#CB!Y+& z=PAF&QbR14Aq^2T=Ur~kLq{J7l?p(%FHo$KsE1p0g)}&29KoD-4M5_Go;os`ZCDN^ zGX{gO(91IryjDOd%!yF9rCmlT6Yh2QQ4Aj!UH%(+2pOJpCV3-i5nYv-4{S_rm1@GdwE`|IU;5VuLS&IUm8hQr7(;lXM(2v-Aurv%-xLp8WJ3}VPku)2Uba|5*oJR`pSyyA_$|n zLgdt&N8535qPsK-Q&kuB=cykr{cA|itI)x`zh!y=0KqUhDcz5VvZu{Suj zK7iYu38AW%bydSx@uky8L8RF}s(lLbXY1r=U@T@UHNTR!PM$ILYna&)bXhU%%f;q0$hyM#meqa^QVarIw&{&G zjNdRT;nF0+bSb9tl?vy^fr#r$fg-xm+XDa0A9jhum*6PWOV3;)=Lda-+Z0b*l7lCO z2L5y$Ab}XS(fv!by;?@mZSL`zLaJ6(=4VI zT}CU#jkS5aSUzr}bRgDR$ffG9+O6uwmd33^b<4195^n!u2y;H&?I-m*jb|SL^an$q z(16+~xPomv2_J-3c4aLO;ofEfxMWgh?`PBexJ%wS+0tFhp zhtqTs^$7JDlxGsI@CIFOYf_<)r9s@*!X7=|gyA<5cB_>Q2)4bEbjz8t>YdWusjeWs zDRb`xM-I*Ghl&|ZfkE|VwbO`E4y4*V4H#m|$waArJEstdDvWY5~;*q^Ln@}dMrKd~mi4qRD_U>4F9^*+AygdBs*9A46NBG%FYSi+G~!~9;T z)@s=T!FK9OsJ`+slsGt^E<%nqj-*0)q5K-i;}|!< zkE3MdGmJ)5t5}Ypw>>FI%A+)3{|c$kDpGFW<^k)PNa~iqcp-5%rpU4gX+p5wa34=s zXo^Cs&Zv^_$Ol!&WfOYG$S?FF+CsgE#x_QP=4vS%2ot(hNt7|n=|l&beSO< z+bIG?k@Y!Ky;%m8l$K0_FjWx*l1OQ#p%H=B4G*e_K>wKn{g9#q;0MgG@-K9n&`7Pw zAhxP-l##vkt)L5S1!5(NOK)LKsEA;rlduxyVCXOGWnqkAEU*xion<+)fA`=Iw?G^p z$xC8U`t(U`OUsWt1lCRa%l@XMuU}&A5s6rygUq2qOL#G(mw57VwNhn)ysi z52#@3RWt!6mrmTjEI6X)FZN%bt*zd3f9>pe2mZc?sz3XFe`EIjC#|;+kKXO?(I~A_ z-4ocBxLkC|qY8j&F8JNl)IBz8wL`=$U=E6nXo zhnI8+-aETEQ^&^p#o-4}S1QlFru&VJda%jHT1SUrG>uXtm}^g^#bFqC&KbB+v01{~ zUTtB7j^#fi@q;biu=gvaVdQSS-k)@=-&@F}la3Z&dTItKx`zfFaM+h7LA{inJr>#eAq#c9^ny;=OuZVu}4>$OL%jTW4I~@O*zBWE0K%%=9DplE(hX5ieKAsaSxo#g}+@DFl3u+Mc9%92rrf=;va45CT%ji-2>HndhLw05g?C+&Q8 zzlPjJpwyOIl-g3ebr;m(ym8J2Xm}okVJ0S+85UTU7*JCR3omQ`q`Vi3_Z;Av46Dgr za>`Pi5IJiTOvSW_5NMCG^PExPjH?Ku?dSV;gD9^E&sBvjBe5A3cYEF|^VIM?vJg&( zZ@ks7Daa(&da>4joM?cL0gYPM^Ju8mq>B(KvDRDKMyqDS^&N`zZ@l%Q{nqi|hsNtC z@{~d)$f|ewT9qr25V(47F1A7;PQ|FNANX~pD zW=;Ey&Aa$8&Vl|I!3vb}hOQo~Jr~YhXM@NcYC#^%K!kI3r)G!M<#cQ<#Kvwg^-hy^ z;H8VKTql&fDgu+!6P_|w6lGGyZ_7bQ57&pTSv(&GFr&XRMUhn_`B8}wmFj8ANP-qN zBlo%0q?LEHc3GW-)f@1}J<25E^VZ~(RCP5I(&1FUa@D-HR+4-;M3m=hZP1PhOqO8( zp*i-^ik)|ySl9bXd^@FQsn`#PLEDL(6tbcd1XR$lo~3V}c^eWx1r0fM=N;`F;WhtD7Mj8h#G zHvfB28^8a+RvH?v9cM&$BjGl7A#+Jd?Nq~pIc=7B_Gd+$UkyJ)N9H|L@o;RBp(mk3 zHLQhN6d%98w(;f0)Ah}br@h`r|ErC!HoxqD^+cU1^#-fWWckMj_gpmBORX1yZKt(s zs{+-X2@gR8?Q{}QM1`=#t5uYTjUidgB5hhv>a{Bzc(3iYj>Oq zihQ?z^wVYc%r}5Z#G$ToEs?`L3 z&EW+Fmv!in^@)MRDuDx{EN}(@@8k`VWcZTGL8&SibQ8Ma3Uav(XYw_huJPDX_{g{g zM^UCmFyX}^f7U^+G;;>I?S5l#RBL$8ImnVu-fwaWt8tY*+{A%O*+O| zrw1cS?&;p?$+oTzn`hAF8O2A5p&T|g4j6@-a0s$pR@R1CPRNU55@wc6iNAcs$&m@} zV7(SAu}-V)ue;(o^42IP7oG=CBXDTWY>a~`ZcBZZa=b=^XR@i4J@c1@!H6bYoEV}t zzB~2l-3TqFQl7|a7&;qIn+K8%VQy1_I9Aqr1`|-mp^8jeu;P^kSf2Gd#1Gl^BrF~? zqY%^xiKgCP{_}B1>}(ik=7j!|w?~j2JjJ-4cBC+-Mh#w!OO@Kdw=9euMsiT_KWdSd z=cK_Zq%VeyKl5ctoCbfk~j-_HL|yv0$Ln<0EVHa1i% zt5Fr{S@QM*C&)%#!lwBc1`KW@$Ad`lLwKh+pnY#+Eg3GZplGZ_&DqM1L)YF1S~|ow zNm0gne9SH!+Ixmmzm4nbqNs zblu7go-S-Ly914lv!t+KY_oM6u?CKD)AcHoms@T$LB<R3m;j;!Gz>EgGr(IF_CjS8lc#4yJm^VAiJnkn9GS=l%^QijEaw~3G-73ZK6 z)+0dsinmYj(8^)@$tyv0$i{5US9lLxHl#T{UdrMEzX&E`ECItpC(trKK-qfvT(U%# zui@Q+!Ek6pPIYDpQ2`rGQ3#jP(oOZ6IWrPY!4O0tg5>RCI~h)58M>RZO5qbN*TC4^Ms0KjUxco@jj$qsjwAtxt0oK13lFHKaC@NB5~%9%0$%|)w>fSS0P zW|SL%eoa$fBJ-q>*NI)&@CE|-Kmtr$ySL@6LWRQ#E4|@c<;B@vGJI@b5&mqhIEd1% z*V{BcZ?)Q@!kM8*EW8pkH2L{em{7p-IK7SBJE(#;-x{|zVy(lI6RY_~x9x657eTnc z!+PuWs^K8$?+>=UHJ~aJ6&Mh+UfcB~2?c+!*9NtY4%+5=8vH}YOy;^|FDZk!VZuOs zmmO8tnWGejpf~?`30y&VGE7WVIe5y9fN#} zr!DT)?cI|DcOz4h(T;Z8UW&!gG}R@K%~uzNm@IY^&g`_!2fwf}#`M7^nzwO{oH?z= zKE_W-TgbxyMOKKV7J-=+c^F^*(YmQZ2r4;+pj2-$H4PF&hUxAmJRngfXHj`3l-D^S8vnhZd1Xm#=crr^;RiGD# z3)WvdFSZ$2)0kEtlN3FJi=XrA)HAeYo=m&j-^0<0-R78-p$E8RD+S&bBR2W21D+vER~4b7_C*V;kKL*pB zq5~6H?vtMBrV4*$Zm44N)~pG#tox_h|IW2qBe!=e+qilyov4}8kTMmLwXLRxeY)7I zT-~aVq}IB&ICP3P`u(AYyM@{y)wtEh3FJ zY(ozY_I6J9k6xQS?MyTU`V5i7jG|;{UzQXyDkAKweQrLQ)`%(}$t~dK`&@vj$|elT zJ9?emx3JE*rNz>4iuw#$@6j}U*5-5ySm}$p1{AJgS7^~hz+@)AlKQkhXr8=cB6iH- zsW9gszkh7~6;>oc$z&&SQ%4bsu|H}5a8@&9-1aiCiWK!Q2S3HoDV>E?A*fB+miG}e zvx08e{n)+h9(D)am)%phl>&e7G*?8*tt9RyY+ABOIZah1ZtD!P?z)J)4Fs2%UM<+0 z&JE1~ookFwfN%ls9Y;j2UJvZL#m?>86gJ-`Xz66wFnoJ2x8G@MSn)H5*-BPTN&9!q zS8?Va&9RGfkdzL|?v9#VbM1J?v%CdjCB%cG?ryi68GPWzt2NvYn~DHBX>Wfm;YilA z)XFmC8mdR$dcnEN7_m(gLfm>WVm&7b9d=_;WrYCEwp?!Po8v`vsGfbxk$Rdgd%+a~ z#)*j1NP)ArJ5Y8ij?Zc#t$ol|?r)KBaG!mNK-bPyKpID<#ah$1=t4;paH9Eb3bG0A zgB%uXLtTfW48~}+AQh7E*c+~4ior(#XwE~~1Vt3+IlV_G^-*jnM2I zKx%d0jRGS4%(R4ew+nW6N`f6gVd)vjq__Rrg`j$6y>?+-y|PieP*krxsa>d(AaA8h za8NvhbH)B^GG254>{tGLvg%$~cmLe1{JB~o-(0I+=vOX$S^2Yid$oQcs$8i)11{9B zT-2@wJT3*kAf?gVddJe`gipehU40WDoK^1sF6Ia{8^osuPT35U-+wy z>V?WPqL1V8ojn7v5n(FI0QuH=BJ;-ivJ30%w1 ziz$i|S)l;;k#p}HzYzvKXM-1&28a>S_-HC-oOtI{*w5r`=wJrKFT%t1vW%-uenE?y zb~0wBbZSs~53zQX$G=!C`7HRi9==&nJcBF$Cij9u^K`zARmJe8RR30mlfyuTa*%zq z4B5+d@mLEA3}Q{DSWa*yATw-4HCrVcJsCzpVvMdF{eDgd9V|&HlIUhzGxE&mWJE!g z7tJV&GOi?M^X1jM#r@5VJI{F5V6bx0ki>DF0@(3fA#KC{_A??_YaN4 zt4Q+Y{Up_1#2qN_OR}4jWGi5sO~ibxGEl_4ZRQ}(DyL~{os>9JWTq2A_ zzAU~j^0zVM;hWd5ULXDNTJF0~UE^{NESxnF^k)$isVbMb$a$h2k*r9I(ZO%G(FD`Y zlp8<1yAH~nZp6_?F|#QwjXdIH;x!I=U>v=RG$TCkJn3~l1{3tqZdv{vf&9Hdp|Qg| zN5?wZKSnz{3ve^b`N)-6ZzZ0Dg0_Rz~yZR=I{zQKH1yd-#OiWey}%-mV&3N8JV+snB_r0 zDyaoUH6RF8=yU9?Oc-2DBN z9_+KtSU{14P%>GyogR&li0u^T!{8ngD>OqWDTu932+Qw`(CWkC843j*@W|L~~lqFW`O1zG+v^2|PSiVin1UFu?!)TZBE@0q&fUU9ZVTG|KH- z^|}6yG7$nw`pL@T@15gGiqH`L{?LER6^ORHt04FLy?(#<)#}1Yh|l&9^Q&m+KQFIx z|1{n5&dV#JO`ZpgRci!atP&6^z~e9*v9Mt6*}QCa_t) z8Od+G8@%zSt1)~ikoCsjLeu1`46Z`|Gz`XD-is)~Ol9vI9qs~;2H9ZjUq*kzm6rE7 z_Xp+_j*28KOcz_gXBQ6l5BJOjt@TzHb{Oi!Kc!;F7>~LFCr*TgUak?7v3U08^o9S_ z(BYF2=xk4FB5Zk2VPh>E$LRg?U%(sWTV9gUpZT-?*B<}+Y$>5~7|UNTyz^gjj0eue ztLNmNU+b-{_4*5)M~@!8PvfvCDd}r*_@Q#6bzSr$8S6{I3{##*~&IhjR%HETbZdZlj{>-J}JOVN-ZUgd@I9 z;nCss5XKQlh!0fogA;G*7DFBX_kaFLSg7#RAD3y7E-&~=svi9FPcbwcm-uj?V5o-B z$HW{CIl*S5pMT0n)0>}v!slgCfr(Y9{KF|a9pmrr+(Czf_voAuC^0Y701ld#vNxrM2`4e$e{(I||d6Pc7pJdp{!$n`Xv7TyhiIQT^6n7+&s zFCk|tZ(%MAZjw!L6-X;u5jev|Fs3gLlLazDX8{C;pZ^8#5rxAP7LNCbcJbZV3^{sE7v9;hId5!;_ zhQJ^}tPdlUf#A*l_kaFDzE$`sYl5%C$4!FKC;++umneo;Uk_7U#YNDAIco0zt@`>f zP}&@N32+RBY$1FC2rBjyq0iUwnN$aryR=J20q$?=1!fOfKSfvNK|OveKc1*n_^l{)(Ijwp4N_aYt=-`gvW`sNdI9rZyzth}5PT~&!qdx`i5O@lF zOqew$xPX7~J$SkG;Om|4?`*ttKA$Is0Mv@%SNg&KF;(a_@vx}p9iJQx_6CEalYI}F z2z;*qdu#u1ebw{5)5F1fe|2YlbvEgmMY`6NUk~8-+0FV^v;J(-bxrzqXMKGp?S?h* zjoAa=*sw@9XmTgv?X#1;w-rJVQws#WOLIao0OpUU1}p&zg6D%ABoYuimPY9a#H}cg z%TXC6!E$fL2;Rz<#U(`F71;=l!JA%V^`$U|HAnm}2$Gcy4-@*;gB>s}e*PEkfEoSg zX$B_=d}_^R=#M3T91Y{J--Tzz=|=)sg(uJG$cF`cO_6%ba=@Y0e41hGREfL*^B8FU zFqN|YpIV$bE=p(;QNeKF8Pq1nUt8N`5eE5MZ45)^4|WA7#ki%h-l*csh7-$e4qD-i z=KNICmYUGq)rN~l4}BH*EIX(Fn4=oPo8-+ z@K))vV9w6`_IK^@V0-)fz1Oeb45->^2!d&Fi~H8vs9UqzpQx2scwt0`NCC1tuQC*) ze*P)(U|Gfyi2!))&DYs&fbN-~K)L4&6yT(jf)2bHeV{KK#YvVjP=pjwc@efot=%d5 z-r?l8m>@EM%vw_Z-t$L~W@%~PIAaJpD?5}^=K6zbl5=K4?&1H_F3`yVC3&F`ydn0=sN2|I^SSipOuwVRa zfmv{9Iv=CGA+j3|c8*T=)*I#$gq4scA|+LW>EM@Y+b46jebUtS&75uDG&KHl&If-< z$^j}*c)Ti+i#~O3_4#J7cXqNi?}sVnSPo@!QAf;v{z=4UwPQ)N{^w-P9sOJH(W60$ zx^M2^lrbKuCD%jt9IDEHym?(=TFNMsIHHeq|39X1+W&_ooHyuI=0WTzWq`R~v<$2c zzWgme$zc7f)rvr@o(O^fm)TaNBr8Y`Jo!gRkXIifq&;Ywqh%MA*zn3H^O05w5W&`Z`-i*U>HgmC(csk9NJr6xPUQekYvF5fXop1#OjpsT>Z}5` z3?~w-WW~^yx$hu`ImM_5X97rQM^giAGHQ!bK!)vbDUu-~1-&UHd&)Q%0kg&+5BSg?|f&7;2+8aCqi%dOb=DCA$3t5B={rI``A- z8;~YYw+Q&L{4~Z(fsK`UZ?|86xBcwRo5B8!M~_O744Bk=^X7DK@3rSVofbkQLJvOV z5|*bo`0?=B_Q_lINo)(5LN)>x15{ps5@v}rhbBll&!C?u&wM;3eTl^L`?N^3NhOcO zmIRYhU;xWFC}26FP6LZi1Tka)(2iCQ&}oUiTBUI0~(J-tDN)hb_ zu@eHDS|RgVh>A8D1jlGcM{r2IlHA)_1Kag|40LBdu&alFaHr1gkW5$!C`1VcE%CBN zT;ov@>G{6|i6HjHO{ICE89y#`I=M#3hHj(Db!di+3+#5|{LURRGt%ep&@Xkn!JAmG zo2wx_>(cL6&n4ytwCekQec=_-8eaK4ub*n%dT_e^d~jdmKRmQCVygI}Bb8=zUkCX$ zt*U3=;DY|vDE`=69*%;%9K%9_1y|BC0=|A7s`Vdu+)DZi1O*zBWG80wX;h7n)qKKobgVbuCi?UPv#4sXM$vLr@H(DI+ zy6;`>^y?V|5N;7@X2BNMoFpeSjD+J1xKoMgbqUPo7{$$*uY`k;G34&+Oq%BnR{2od zpcBvic=}z4_gS1|yxs@S>T~o$?ui%XgWTNQux`pV5*WX6te4+DdURTnbpu%rZ87`q z7JT|12x@6GCWRiJfqF1XhoGnyP2}jgc$5;=>e=nuYS-g`;2^jO1XT*JpTU)$49uvn ztQqP8pXf3_!T@X|7OqeCor3vT@aEOz-Ngo9o2RAt065ZMf z8!BYtNJOH5vS;rJ2rRQY5;jz(gzB}OUgG(QYutNfZ8gY zCQvJP1YEr;V7vy)0?EtQe-gu*hcRjQT zq?B5$on!ozhW*#H1(C^yWR@fN2^dX4jM{j)f;hN^j}^$m6t%zEK+tX>s0$ysNE%Nf z(2&RiXbF(iVz)*25kbs(vc1dUAi<SOPDV;}cg6WIpI*14K>4SMbR4GxK-6hE=s zmz**%AIOCH-Owue$h?b?G}$F_ed8!>?*bY`8(UXif}1XAGX$69#il&h(3lVY1l7cZ zY)WwIAs*#TVC?-tkWe3Y89g>N@|Uo>=;`L_yJNp7Lsx?qjRcp0?O9?E37Q+>)S-Nb z#$NXg0gBU_XTYm%pZ*`GD}%Qu8}R$GOz6BHx<13Rzx6@a=O)eHy4Icf+`jqV``&lk zul5f2U8{t0P@9`%x9SOWh|4^&4$!Dn@}}r_`&skRFa=d^Ivq!b8R6UcoZslHls8`& z45ZG!Zxt3*j0Ma;N@NjnO*&<#adcazD8%uLzH076uQ!iEKTt}Q$PeUi(RHXJ8-TT^ znyaD7dj<DA8VPS1YX?fNgS%GPfL;{T>3_`B8>&`@`KghqnuT7CS zzi{RoYiFV2xPsqxw4(=otdkaL5+oSjp~$sJQU*CS9Klgae@N@Ma`N0iD)9^;dCN$C z5Y?d~8IU}H1JMG3NK!u}*+ZC}^o*w-0UNZjy&sbD`WJMo6Q+GEvco++j2q84y2ioH z?z3TN?;f;9{ybas5(UU;?>A|tjDABaFpB!Rn7y!-!;1wGZS?fwpZ_%-Vzmij?w2hN z_-kIY#q=7Uifoq6rNGv;adJw+sP5Xm#hqh;HeZn7eeF{dUASFyViP8XNCxq!WRV@u z7j&Udquh??3Jd1fS7>4k6IN{NbK7Q?fh*IG8cyPHEIvNhzY1 zS5Xh(48s^jlF`^{fn01nj_v{@d|Ag?Ng-s=Y?;6x_c1*EHxT`<2a=>K)h8huD zfwSnCBab+sM2UyoeXFR_p!2g@8CWrd+M-B(VW?|3@ihphe>DlOa_@UsaAJ($h$a%~ z5IK_!@y17iVXHILXL^=K@<7S4>jlKYRE#aA@f0|&Le#1;mTUGJgMF&fvWEdS9yYl1 zEd#BRPw_^-X?umX&=61ueXE0!xPhqSIosbgwf_&#uZIemAYw~_ouUB7F%G^Xkv?$T(2p)YE)V9dKn5)Z6NwI*>Fv)yjq>S~b^=V+_S+NRb~JWzi^94< zs3rX3_;Pu~F>d5q#mXJNY)9UPwXa|uM(`Ne6M2B)c!guW25A_jGZnYp7DlHunc#M^ zvBk^fcJc&&TUI0bh(M9@-}N*mVUryEH{)z&f{4Z@sJif;Vx5W<14d9(%tz$}I0Bke z&}cJz0PEEObhMj&`()?4nGs>?@s2?hHzKyQIx<0`@4J7{0Z+YN@53w~r){D&J>V$^ z++6kYYOr^3u-7#NC@o_IypE-U@oZUR8Ru*M+NQs{YBmjf(XAVLUL6NvrTuza`*p9f zT2(WU6IWN)8k)(C#%8s>t(x`qD24v^j;jkkd%xCy`ldu<(= zH$+BV>ww!kHjcSXAly~~O+0%a6vZbp`h4(&v;O3fA%_tud^TQ>0{xZXEQhnYI#b$0 z4^LWLv?3G9fl!IV=?FVL$0WA3FWG$6z}<1deuFgMQiAK+mxjCQJ{p#u3ft1}bI-bi zUTDdz;IC%sG!98tmu}dw(&+K>H1jYDB#mwmKQEGCmmso-kQec=zdma&?D|3d_3B)t zF-TAs7Y!1_ZIE1}>2T?rXI{Vew70hG0ioECBQ=D^J>$I0%(nsE1`*g*U&CiuHM+&I zQDF-epA2?G>Tc5)>n_X@|NHXj)Q`(i$lJ$y63iJ6Yxfu@kGgMK4>t81d0eL6h6&xpq&1jvRif_^4(`97>NE4EEf!7`p7k`P%TJ zfkW-R-Fs&RN}~-?Iw0N4<$=vyP^nxp5k;AVmi(j`23z%9v8XHl`xfcv_UV(=rni2j zVkd{>tdS^6irm8{rg8Z2#-Y`E?cuH0tmgfPH}BicZ`U8*{&t;vAfpQ7QTw`}v^Lq2 zKhiRcqe{Rzcd$s=z&*K5MLi&6x#7lQuBr81?^$;?XV)$Ha;%=K^~2%}Wr!9i{P}-v zZgm~SH=N5zf(GYdI?lRe|Dm?I*}e!ovoV1_FB+WuEV>-7_fPs;j&1xV;J~{P8hSt{ z)H$cpB|E^HW<)v(yq9~Y+g&$P6SRvrgYUj4TkrR84v%NB5KIxo?I#ix{Mu8`zTcp6 zuN?z=fwgcIiv7ZU15Ox$U(kS2vtCeC8HPymk}>WBlq?hi;(e9~`G!?z0d_G71$+|C zQ+9|lywpt^XoC_vypjoscKVau1|yOVW~H>9!raJ?s9EbcT852v`laqOt~!1#^tn_g zy?|xL*}a9+r)yl56{$MPFovMKhOodmy@+RBA22iH6kBY;J(?$Y$rRNhid(TW1t##! zbj-#-BpTzlWJ{(Km~n>!C-yLEGptwo`7(A=`rO#@1^mA1*f zjS*5sH|%<2^uAZd%&}ap?d-AMJ?wepj4{uWM2Y*K2cPIq4XGU*$vdJ5bd7nS=$P3q z=3jTbrMDdPzL;-$*_3=sQ`d6IU>?2Yj`#0`;c|vS$7c$R^4T-YreCCNdMr@a#{kRi zlS5zZXOZm=)p^k*eLs(bixHfTz6laDq)ysV$9r+IzG~6I900eY7+;4D3wTk)4#WkvILlR$l@AK(%3phZOz%h&){BRa2d=%j97>$rWwjt-V!YOyJhda z-~X?#y#LdKe?QDey~gBg^U~|y|M!3X`PpI)|JoL|JRHHe5u1r34FaOVD&kjC)qo@4 zLh|u&lusbXWa33J2H|3eRW?cE^s21HSpEDH!JeRHafr`df(9^2nDHYx42wf=1^1ax znRfqLM%rE&=hTrg;PRm_&$AOE*tpV*E}Q6o{z-S&OdyGktq(M=_xn2Hkty*Zm}5{N z8qDhI-VPW})17aRBLD5|c}k+AbR=7YQHdd~9Z@)Ii0Vy3eD4++Tar-rVN~eMmRUm? zrIT9+&d2@xd|(P z3+kmA>WN${wCq0LkmXLooytIfYu`OxSzlePCaME-{`{M0JYL)UmVbGQKM_*y+s+re z$0ujce>~k2k0(3fF&`Ae)zAfx(fCaE^5}F9s_%X{I@z6rZXUA1^V75a*SmY~@WZKG z9{z4DeD$o>~QV^V!e2|HY1XPR@>Aycq1=M>sscLdoTeVVGTb zlNy@8X}Tng(rzCfX2InV-HrVgL>9Xb<&@M5Q7%xpgO&e zXfOtLbhv*!nAMFYYV6H`Wa)eXysT!;qfjs@mSRt(0)=EgoyN%FIkyYMfFwl{le}*= zl!tYVatbQ}2dhrh4i$0^)C=fH%!rWeN{p8tm5v*=rA3Vf?uXYSHtk@18K-Ysc0qOG zVzNXi!gLQ?nl~iF7M>nF2e+wczGXa0voeiIlV9RjLWaLM+=2ruO(GD{ih$Onr7yR& zqGywpU~$;%^{|TDtcDi6Mn?s< zQ2F5)yNx&KqMb{r!^XtQMt)8`)w0}VuQA3S#z!S8kgi~RC?{r-wc?Nb-1Pp=8-`&& z0$%){hbSyEjOS9SJRRSmIyQAQ{1#4PZ*g@~O=UWy)Hj-$%Q68rpK<~Qp*_pgCHOF= zvBE$=;wFL|7Bp;e?_(H%o^uJyDn_)hWJ^BaV!7oWLm6y@68E24Q1B+_m%}r3F9dOX zW`JX{Hdkk{^f{DDD=GBFZz+r(7Hk-!y-BFV)qv{?mtF7QbAxQCqYF7REzg2cSWv8J z$--<4y@6^V9(EmFCxN_VV>{O3UD?Hr$(pwnr~f3JCV^rEIul1AM&u+q|H>Xz0;MxH zxX^KqS1M%7aiPFOd)_ImVaX?Qw1NCY7|2@ScZ3d8G|UyqcEy%GEz@SoVnHs7$jJs2EVwCx1; zrNb9HXD7qc;OY>x4ZOJo6M%=_T7UUBnD)W(8|Z!yO%$~Uto;@bct3M0@ved5I6l}_ z(McovfJ(`p-DtnL5m0@oJRJT6CYfuXPLdv;5`STgS(D<;i;n|R6zuuqUVPHg)RBK42NM{D6_`k_;7ph z%5gk0&-lChve=zcz=4sF4GIs*jCkVG5%Io2qF9&zfNFfHPJ_-;78msOwQfvbU7MBY zU5VW-StoEloi2C&{TrAa(2spS{#~ssww5P1X{Kiv;g;LvRP^loiAL;5*fx2(_rQK>0i4 zNP|GLXI@6CQXx_Dz)7ZNq?>{iLa@{Lj2uT_c>wpT(p9-@?V&$Bdb{s;z2j5*XWOUU zeSG@df|&NDt)CU^{YQ_e)(K7W=0?|aWO}#>tPTnuT9lYfFG@o3bqYBqgoX$v?kO{G zQUvv*@Err)E2KYMl?aFg(ie!fx+SHsknRk3DdZ2oAlY~+depCI!#EJCNRPSkRxhmE z*RmQF zg9m`n`0RatP3wb~I-3pH)Mlp_B)BRzDL$V3d7sp>lE3tt)_3La4>&^@uQ_w3f#5ft zMd;6-NCoNr+xJb=?*MK%pCGN6V1UU64Bh?@pTg{HTPk*x4W_9DtG9H$k0IM$b?4cL?V31gA$A_y zOhI2@b3+U#ve}67>>a%D&EyeSfRzr>5_6p}Xc40WRLHB*_=?uAqsll<6(wcoF}PW+ zw}sh>QG|ToG-7;Mk0;@!y##G-t3CP^o$z#)2yB?{$5?JshBIN9C^|vko@`*!xQv`UMB=AFxynrI zEOt0f-_q4ea;@*A*3!nmh=U2o#^;ZatBGC;dL@}EwDm^C%Cf+Q2OH<4v%^P|RlQ(t zZG!3pr62+^fLYHK9C3Iki;F-y$FmpwzqXWT&>6)|H}mF3JlD_;Q>M=HYkUitcU%pA zQ%tq`7}Nwy(BhHIZNkXMgbw*$xGP2h0pF9_8(@eN+dy^)M_YP%E%@WxyN~H)l>1g+ zZ|{EKOEZQ5PgjE$F^JpFYIAp$76?a$VZ^1w8eblr!cel|q$?=}!wJ#ZA=N8Q`2anj z#P7raN(eTF^NSJJ{+Nd+J@OwdVQDMX^cw8>BEu3(EYvE{;8u=ezxHh)m>o;-Q9z|8 z(8y(;1>$XE6!?JgG82Yh98`wt0brz@E#A#1b)IBxY~vylEH-%4>8{8!e4&E)RY+yOd!u8eF`*NhQ49M}0N2KVRyA~mT96niH#RD3D-t`+B8y){Jg`uPv zVhq$=uM!pOIJ}dd#=rw-48!#FVge^478drnS#xJ-lKBOl0q?JLmuKO9^Q_-(aJ*NU zV2}iYWOi#anC&csBY1ciT})E%lv-8>Q$>w`0Cs#G?A?11!Yct;hGjLGAs|2d$-!3Qc z!9T&jPw?N3RsQ!0{!3TZ>B{XV5DZ}QKLK042#UXBb18D$%zMg0^BzWYNI9B%RF=68 z9ndC4!+j!QKEpiIGRN-V*tR}$ws7Y1UYCYDnDp%~FdU?z8zic9RH4MqsOIWCugY!( zV*Q9}s#u@Xh`1aCR2vqUFnWTQXSQ0mS|R!RsyDuj z)0Oe%b>y|S>~D-raY-1nSuWn*$=)g1ym#q0t1DK9aD0*v7!@RU`U}ebWA%zH(gZPV+?056obNLxj)$6qEeUR%NgA^ z$NJpcC9qNIQ*>nlQbJiw$^RsmapH<8Kv7UA54mrxqsOH4GHyj*3KJdCH@vE`!4AlI&^ob%wUmtjh-E^GO(t9;qxEsy>2mcN2_K zS_>F*l#))Nl1Ymc1~M9joImDs4_$4J&K@bK8&>om+9hpZ61(ujl5%9*>VTzc_)i0jW`JZteOol!c z>P9t>U|C!N1i5OSUKWbTcDB}K6(pu2*>0b%OB2|bZYeQ4$kRk-a$DMsZUXCjH}~O_ zUPhi~EWFKq<=%T5^@qx+RRTL@1ncUyw4>Lwa6|#A7^u4M3P?cIZy>5utv6BC$u=6u z-qxs|v}qZ-QN7K2e?}X)iLL5wYRGO*n+eFxSm?gFbq&4LZVfk^+st?(w3+clWs+Di zCJEb<6s%DGa#_V#W+OtE%B|x`Vw8wxBnw^`oBBKPpY}*7Ac1LYskug|x~lt~Y_F4T zavY<&hm8#9iKFvLFqsNC&kXCvEW1WDxj_i~C|3R|$H+0hD9x(ec~eyo__qC~E)n*C zUh}zh1EQRv^XM5c(+?Nim~t7Gp>)4Oo!;*EAs+)jp7|2v!pzcXZ8Sx7j!r8BDC1x_ zoWn|m01pcFie&4RTa2MW!>ki6U!OZv=8Tdy>nm)`tDzBggDziT+XswHpJ9lhVXHRm z6vFAWU>)j2T0(0=+Yx)woCQxsg$1O_A7@S>jlt|;xDZe?=9{aRJjg1TWn@$G$D94t zdrW0Ov9j5Jva-3pD#ki$d_IYWSK)njwoSoq#IW2TfwPQZ&Eq04hxU1zj>6eiC3Cpq z{#TtphlYD5Z%{T<6;kWBCEgDZI! z!8LHJpcek@Egk=GvI75mw{m>ELneQTNDt2AumZ96a%X2NVWmfifW~!IE;#Ld*s}Mv zN19q6;rP6NGV4P=rhtGNCl7&2uvXVmr1un2#1rCG@G5#-{Z|%(vazXgXu7g4e zf1Tt1=I_2OChnxj_gxt?!I1mjfD{STkO3!!_RTD zcW|_`eY*YpVDIc;|G5?Rt3D4fq+g0MU$67p4wynErzV9hCg=;*gW00AC#H$MW2->- z9if#B3Q{!c=O>$r6%zMb2f>0;qXe)RdS=Q|3Zk0e>FDNIst7*usY1Huf<%Sg18;w~ z54O`&!Za(?^ZDD2`@G3RZsKSuD%J_aP3jJJ4&JT#?b%m4t1s5oO?1k=ZZnKCe0GtR zNl~dLim_EW)=7a448m1_wGi3OxpVa9^{HjLw1p~69kXm-C{&oYYKeBf?=8)X^>j9) z$taTyM?06U)9dv*y`7`OLrx~=G;U1I>n(fVc&ncw#7<><^r-)aHZe7NV4HHeEzhsp zl&Ol{?ES|Zw%e+--g*KyLmL#5EWh_||Fqtsl50qi?uxoZEfzm>rN*Bsm}(GaOSD~uaKBZ!JYPLrnZ!ITvo0(piCM-c!hfnacH^&~g-(~zRUofOrGyN7mx9-Uer z^41&~50mk*2w&`0g6c8zR}W|fe$ZQcl#0rjCtTH9h^lj9(9GNty{gD?TeAmG*StNn z%vKI(8|9b|iB;HF;_4+8ehs1)1I(3laP%->D@ra?EAG^6L>E89-IN!X(HXn|5K~}S z6Br1R5P*dc>2`5G#MoE0B?ttSf+)x@A&4s~UcBf~n+#+Lj4r~hFn2p(%P@5l&zd>X zPGt%_Ofe-y1(sBJfYQjF@LVJFl@75AJyes2u(#Zv!3=FKZ_x2X5rP;_i342C|H;V2pb&DJUqRH zQS10oW>3vz3O~y&G|g&$?>-(LDKbg(YCjXx~!)00OYi5rku4V zhjmFp))Oahg9IyoH!M(GY?FyzYV=n+aT7mAWs&1VNP%uUyQUZB58El-cC>+Lkt{l#WPvM44rrQ&w78kgF8QFIVz)KG?KxH1?&)Df}S*{ zjPfcFS>wlWpT^CTHa5a{NosQMOT$Sp4uAP`uR-ari8jrvFS-o>O4F~<rM}04b$WztS4#EwrfsH3_42X(EAeQX>8~yL|Ub( z;@0Z+XBnn%M5(3z*k4jN*lL(knu-|Qg0l@HyE+7F4%{3g|9)xnBAr~BH1@^Z%K|PE?-UQ{l^A|u)2XHn ztg?X^Cu$sATt`U@$Rm0MRY28z)VIM+P^zAP4fDg+E1H9PDI6EkF!a((s|O-XYP_!X z1gw)PvL)Kt%Ys?$`K-*ZtAy>UQ-+1P(lVdj=R^8SFO^b0CyCjO!Q>@(A?84;C1U-^l{^La%0Ow7@aZ~Y&cS4?gZS)l9s!wFb0;j;AA|f z`tKOe_rQH%g9yn(%sJtDGzy75k71fH0$af8%*d+C$T6vAQ9K%z9fZ8ZSt!#Hjo_4(%l!4B3Si8AvfU8i0# z&3;d2{JTAlp2oEm&hp^4LEy#c90mwO@h6t_Tq|(A1G)koqreJj&wCsiSYb{;l-;(= zy_T8a9!iD}ljqVQdMmY7FdmN)9z$&*j*=SC7dQN6%9e~TH*52kJs*^-Est`+xs0Kb z4`SfZXj;c(k$ExCw03h}6=AX539gztd9vy`Clyo6M44$H8cl+B}~;vN3yeF4-z(K>UKzG|zYtar99}kq3x{s6b&cYy@t+ zJ=p(2?#nw=Ls@&Bo)mtZ-^__Yy4dSt?l0zlVCfO_W|Ok$&`lp})J8>sVMQFGkn<#X zVfOP+DRI{_+VY5^a^`nd?-pY^IPH>wVd5mYXsm#w&FsnDY#Cb}?^W*^+Eu#<&w}O7 z;jdv=dCd#DJ6!0jZ5l)vOyQcgK4jexV!~M04GP1G*Xe4#wCX%SEmuZcPl=Y_%oYtqmYFfA2&{qgjP8r1| zbAgU%(lk3XEvE+q8@#iT>?qMWYL~us_HTLbSA7I;bw~t&os-u6`x?L=sgrE3BT0}? zd=B-rm%IfJ?_rSB`q~_%Ynz7FLVaC?cCR}XVD9a~zB*!?ZV}>l({*}$_0B~$39lO4 zU?_7i@w3pJ|FcN$>!SJbA)z^^;;(FZj1XN1qf$9G8y@C%)%>_T3dTO}*On*g`?~pr zLPj}DF`6JtV1#Wc*4l(g?DTqVOeL9=oeE)JE9#%T6jT!9fO zKzRHUrc=bcR{xa6g>P32A;}oU;VDR_A{dMUEL#9VI6A`#VzTq6BF<+ZSaQ`V8~&L? zx~Umf7?l^ZbLOH%`ydEDOd2OaXWKiEu7E$RT*k;{+~?}kbjxFzRS%@|op~>$f>r zV%|9pP**4>9J>^Y=b%!IhBOtYtjwv+Jvh<|uCP=z{`p_iVu~|_$_R-#Y*-}p6xu@8sf_h2Z41Np+mmYLLQFt?_CC0s&}RN1 zk7p6E(QYpy&sGy1kgdTpy%DYr>M zdV;MVwDi(%=>;Y*@Sb|;#N(1PN}#)^yC=V0cN)wx29f;m=py*Pe>gK2)ZfLg8{7luWdrBMf(UB;D09BZliB?}e5RkQ&Ft_O%=PB% zA@-kaKD5WXad;K1L$B`+_g-#yy>GpzueumZwYl-idvUNm_zth(AF$_U^|4|10rb=f zyrS+!`n;!`C--$T*I+j7Ua&QF1Jm=s(R_JtKQo7eM+-6F#8EOS=Do^2kvH}hI&MUI4 zNlphJ#2_n0p)uJe8haN+5JRqtK?U^5KE@obg6BZmetf}fsocXW@9Z2 z@)L+0WCO`RMg^rKN5`GP(j-vu7m+KOQ?ny z2un$@;J?610u`JeS_mVP5#*1<+YLg~gP%|27yWaSe#tHZ`7ONFKfhGJJf&Y?^&<+b z>wM?;sFcScc`rh=xc=JeCO;d0+mzqd^fmY`Fu!IO@_Szs^bG<0dX57~xCWhiOd$a} zD*N+z`+zex^GKEV#XrNFV4<^rc<5VYj52hxW5GDGw27|g^>W{lxuvY7K3$P-U^Vs5 zw*A&Ru1n?TO{aOIjdZ(Vu8I%~^#D8B^5DL%-(-ajV$d!uHMqhgKg zm;9gZt%%%0nmy#&)Q5Hv8lKG_HQwl;>mqQrQTT(7&D=wDcx){Ye?guC@0DJ|q=M4$ zFI#m%t!<**h_Dx0TA18)pr6_N$ml9geAx6FO#{a#zR8UXT8T%&HDVUH#6M0j#)5Mc ziShZs_(&Hc#6MOX&1w512YO=Pgn7sza2SEi0dOh+fs5CqR7|p=P1Bjs)^wUzqLz%- zs{Qn(0^{s#7oZ8B^Qp~&+~m_>Uw;u$am4MCjz)E`!`T^=b!F=6@hfykfNd)G=+W^| zMYA;9$zl0t21u>|HFMSXw@Ujrq5hdPQkLJ1G!$4=Y zwanRaom+0qY&p;1-GJj((w(ChFU0JpH-}46#TRZPb714U%ACWDsvXf+D^2n(544UpMI*<1ht=-BdhvZa-3}{u#aH1^lznd8=}2 zcyHB&*j(a+kWm;~?Nb8@X-VvRu$f^sE-$!`M2<$hRm2?_ATSD-M!y1C&xj|vudfes z_OEy0H~^kl5~{rgPg3~`X?6iezt4C#92wrF>a`4{Y8^0`;+wDcM?N>{QDAAMFAf3&^n19p4tlYx63y!<9ORbP|#m1Ceg5vsG)YurN6vtgQqv97WL; z9y#ZjRZmL~b>&Gliwnub9pLE0`E@!eOga>4yo35VO{%P=195NunDmsJzY}2-&sCfTIf+^v_Rm?Hx(TqZP%S9D>6`_LLd1$g6bQ4( zs()8Rj&2H@0mFO+E&3+t48jp79~9RiR+mnC-|dqxP{M%C^@Agk?AcQZvrF6mJ101X zE0vOM54cxUx!d;2E){xT0%H?VT%XP=c+I=z`RO|+5tnQc=}|Ld59OXI3%gTYsYU{@ z+W5N_yrh0v=<_G$bKVHC)z9``?7X&h336-kV!aI_5DkE>G<LB`u%&zlE6GzxHy*1mXSZvsXSYmP!^rFGsakw+bx3l+7T3eW z_34`u>9YviN){2q<;Ab>M^Scm9j$GiUB(;{PTq3WK!QZ@lrPfES7nNL6HcbrV^zdi1$^dY zti%)>{X{we0zybb>GfWynqGrCRqqXV(QncryLegCmSeX-y}3D-1V!8GM-(?Yos*uG zH@sy#h4H{_I5FXL-ed3WaB8zjRb`zzb4U zq>z9(@+#2TX{w7Dy-lx7aZOMrO{%8@Hbul`p|p|2`mTyfZG)G`KFVgb>sr#n(655Z zN?7x)OO?3BSsbwJLmi7=Zv+A`)kbrxwzWxbssr(Jz!a&4KoC(qYsxWy2kvvWfiES! zg9T@)!+w=-k|rTSDTM+*%^(eCo4I*&5t=Mj+HB=ZyQIjQD1^tLJ5}iMJf-`K`QotY zEa6}V8l|gS-~}CA0nNKouGV4HC4c-mTjtG-K)B#)K+Uk#0(RQF?ArR? zsulEJfq@NktZaq0_ReOTS?dq$w5C?kR+D`qwsT=GJ6K+i6c>zBLRXFo z&9iK^RV`Ztx~fb>zOCyb1vLN;HX_!c*AJjYPvcvbpVZC;aU{M&do$>7w^$)19*LJq zxkx&%q^9vhlmN@7%-L~)jaTMa+yBuE@+)s}db0oeW!D@0c=-J20QuB|x`46A-rl?8 zli58qTv}*)5U1Nx>YGw+$#shRPPwnz-DwV`OqJu1dqoA$5X@9FR`Wd%C0E8f*goFj zBpy5VnS$E_xCkNx3=ylvpbJ$Yh+uUkXxH0CiG2^2fdfopjze1>hZRYp2>e!Q;x2nH z7*z_LAX*kf|8TlOkx~bN_s!zP;>EX8o+6~sKich}m019Dxv?x0upLSm7y}#eIEcqs zfp4zqW0g&%&cejB4T^t5mUeFs2t%PXtd>sbJXI!U*siU(q3y_T!Bn)EwnHR7kul~$|3#JBX=k;_n z73&xxNTh;wz-LESv!+OgTULCR7YMh3yMNcjD7NB2ad|In`u4@K2>|ZwuC2ax9q>oZ zVP{8Nej0-~V2gwvo}dAm2D!2g8QdokMdria?=ATL6(&LFRDuB^T;#uFs&s&o5)7I= zPoV1q6DO?zPkogZ!xb6fIT;?O!`9%D3e2p|8cJ6Q5XP69s z>u#MCp(M&m8_sN?&NFgr7o?aqc)mX~gpPIIFz>CQ`&|@yQ(ENr0UQmgb|Be6P>~1= z5z0n^M(SC-06pL~oMIj4+rW+)#1(-qQ`uij%T3*YzDBMCnzjs=vYkp%h|a_@GOxHC z>?p{xfFvm&B|?&(s`n@mCFTHwT=b2lXUle)kJ}=fgs8HkKcW)4U$aa--`U;Y@kw%X zm;iH^8#vq9?QMgGXff1^gXrwN-aR-vIMj9n+Skp>DZLQX7zAf>F(IeujuNYY4(})|EGO%gh|Sxr z(dz+czyPHXn*%x=spxX;F^;snp2lSQM6H4tI_?WQgh?FX+D$|(3L^nMqmgZS6`!r+ z%9Kmm%c@h#nYCN=q2lePl{gpz8Vy-(Z(OaCA8Y)}Tk^xh6dI*Cu-8<}VmQ&*KmJZmG=zPUsr3`=M_`aH?`O^`w%ROSM=Ohqak`+$ zTOIxP+^@v0(Gu}ib*nn0P3xVW!@TN&W3JZYI07)}$;~S6{1`{-FeXmC+&RF_HNjLD z?Vh4II70tTo$auUtKaT{)F)}H%+Z}!N8g=p9~`~f9&C9B7?q;}ftB9_)?ixX!6+2G z)ff9GgVUP+Mxx8$4M;QFJA1D9lECyUpO4G>4L(I91sX^}RLX0Gd$+L0x42mgN+*AD zyzR|~j7n{QC>10Y*xVoba1uOUoNOQN`4U)G(Y>B-S(ex>!isru@^%h6@P)!?FVdkh zj=_RVl>dfLTo)V%r6xSogE&PK@vR6XuOyyFeFv-!rERHboBTjQXFW~WW)A{VRQVP8 zsVXR`Bd1j|E=JUGq@d*_PvF(YvOev@nhzv?h_n^G(o|l_KqEM z56gKU+`IRDn|s^c^Kn|I1pDZnw@t{C>V(YM;nmzTJa31WwxucZZI{$9=@htTa2`Eu z3Gt-gRu>$sN~|%kHg!k81op-3J+g>Bsn%gV=}!Bv>$1dCh%%Vt3#r7 z>p478w)0816D6}@Q9Igj{W7US(t{82@hlIoo-L9U z2_tmnPt_NimCiwGq8bt|tW@W~h~a<3BV;rM`N-BxBvyyT444ul0@C8*LDafIJDgVF zd-bPaOjVGS_+CU>YGe!vwImHaW21j)xBq*sy_o$}A5I5|oyWZt?#t?K!blIcGy}~= zs=~shFu^6dKUIK$6Lr3rf8A94Z4m@a5g{bHAdr+TTL6Fg`i*5lC;7p>Bte&pxx`l+ zkMHvryW$Zl*j)4S=v0C;MZu(G16)zF?>OdD7ipR;3S@BYbzUC(A#g=B8&D|{W3iHW zXq=Zn$8tot-g z4YxTC1VqCh9lqGWL9~3U*~bYv=NXD84r-zp`|fqhT0wA(-|eqZth8^1yla-@MjTDA zhoM4jdO$O_UlN~H#2n^z5Re5CB!f|q1sD<(Qt(aH*^^o|4q+Eins?3m*6Vy10Qc7A zjA$OM;9^6EwrjW>6P?y>GXu3^oi*i0gSTE#*C>*UBgy5?!THt2i`yR;9yLH zKvxh;5Y|k}9f%(qONg<}+Bd-28UvDiI1)Sw+dPigebcFxvL#No{8eL7AVwD;S(!OWKR?X|CrcELJ62MMVAHqfluE9Tr= zQV+CUep~fn*hpO#G*@n*x$sjf>cEa0vJ`jy1ak;Ax2eT;&TI+`a&Qq~DX4$=oQg<* z7xwtkV-O{`2G><5Co=Ixg%}fd*EVezYgb3ow1K1e^=VTcF=5u^&VzFvUn(A36UGK! zGgYXE%>8X-FCvS@zyhu&Uv<>IWC6qR(0Cqtnx7L6DG zU*_I+y=@~~6XoCNDv+IMM%oc6k&+dM6K6-ZS?o?f z&-|F1$dCN%Ysd}cPR^B_S|3%ls!$*)Ir}`PXLd{hs}_Jlp=#Coc;9HPoZZ|aSj>9h zIXo`{e<)f}YBI*vr&M=b?Lb$d+z1?70U$wjwTp{#SX^8u1!=-#)r^No z!>IP*h+<56qp;hjy}13_Yc)VO_sem9b@f<9e(6q8Rrf1M*a9pxR&lB(E<7Uv+vY?H>-YnVlq4Ij>xV3w=`Ar|R z4!EtB>Oz~uYQ)!+4UN`UDjdwnA-ft%sYdb+!PMW!HhnHIW%~N^W}wh7enHa z;p4FgWB!&<-Q2R#AOgjOrx9 z_}+c`Cg`U@qfUmVo*bq)r4vG6?}}9#vYdP+{KxRf3z<1{>(brIUyLnrx}P;NiH`rp*eypO&LQC>(r8jLvbTS zZOvWe8E0B+d}T=={Yboi3_Wk3DQ`A2yZy0BDn@AO5;x$leaL^ z=`Qu|7EDhU^?>Hd+qfJ+ETyD7;i)b5XST=O%K?-+ML)HVk9g|Jv62Ott*n!tdEd(1 z6K4u6Bgm%@AExcFPMc@Pb#;EA2IC-L*M2nGeLA>Mb7`6M*(5BQy12ZIYt>Y6R~SOV zq4QEJOQpRAl}R+yV#0-8?jnf=5|y?Y4Rmo~p&@*|J7YytlmHP@g_z0LXi^%qHLz9} zi&?n1d9ns1(UGFDigj0HX-7X3`?8o~w$>(q_?n~ugmmL_F4LZ?)LVpVnGd=0PS&?Xa9tQj`<1Xaz=<-0Q3sO_`IsW*MP0e7ALfu}e*T zDqkTC>N=;`Ex3eF5y@8qyp@vakV4yT^%egA`~v3lqz_Z+ntqx>WW+}AQ zhOW&WL+&MG*;OFr#%d2$z49o@5?R+V7go}?R(nj0Bhh?}1;J>4rs-8n{ol#^4@e3A zkQUkeCTiA(i4m!IOIwA&afI4NbK3YA*-d39{ypJD8c_l+s}C!<+AsDF58aZMD*mvR zJ9z!-cp2G1olHO|SWi=x1DMnhfi+rVD;0U(fI|zY)ehdEkYT_FU7}Fvc5WNA?#3ET zL!xN%HF`b@`N?ThZ)Yo)e{pucBNHOX=jjD|{6=6C#Bt@8`_u3pJ1sWhFLLkMo_VNz zuqR(0oSnRR;KRIBv%_J0nG6l(YX}+~5HRtMrbYPbm9$bE5K3;_6MS{Pe|8Rwh%&jj z=4)APo(EQV`3U~oQEI_99?+=e<43En-xeFelY0_JFOS~UL!PkbTsC+;RX?uM9^wXd zl|;`I0KN}?6RjFB@Nj(Akv)6$rhdeq-K1CL=Kg&-iF@Vd%LHph^uTHb!~r<-FpvA2 zXHbrV?2&VN4Vqxt&huHB6ww(W?09Y5CYm|1wx6B42>+ZM-8e~Uuccd>hYsGFmXL0W zc2~bnLPs;Y7Fi&01I;E9o$3@s#FqC5wLDgYTcHf z_IM9eOERMbUjD;%Q@h7@hm%_wZHc-TB5-| zi4zE8>%R@kB4?l2$#zqR4_b4?Oo-umdl{*d-DRZSEv4(-cHK4%7Q)M3Z?n9l1<-s; zwHr5FnNq>ZFAOfT!%s0@9T<5L{= zN1H`CLI+(9Rh6#W@%OgAgkh;EC^XjEt$yvMjl{dFd-S^Fm;^Ne8{^kniOCjtY9{R` z`eO<+X?aKW*TgwMB`##}%~=y}?Q-MeMt|dP%OIFKy2B8ruGR3zzdq5B^fa`pOH4JN z+q0Vibc<69%^HBq*?KK~m#O%NFl$!kkk|qyEkHVXJ**8<$Q{!--r4@TAC@D#qDlNVL8;E|yK3wpv{Ym4r;FX_9JxhA3tljLN|jFU(TmLD2qt&&JK>w^!8hR$oxg-#B3005L>5^YKn`~k+BA@?9oG2%bfco|qU z@F!@D4W{HUsIWBzbxYqJ?33!1!QB9JYME6$uLWZ(dnTuW?E- z97wk_A-e!c;(ZGxX)U{T80HMP4zgSeNEV>EK6K{34C;cBYrV`HCotWciN~$cb!v`b zZJ?5>8FD@N!tmq+%k(7DpY-+wc$J{XO_~!i4qby%Hx{LHG9jcL1uX~(A-WxCsWEwWOqN+EZK6|eo=NHu@ zA1t=JhAFTPFB;g;WdC^(4&L+@-n@Y{fR#zVbKLYIRxjNJ-ogIi0(Jk!SPAv|kY^8q z^$`3prK@&sPc?#1jvY=P#+RKZ4Gi!*ECTz_Kl|)6;24TsSO!{z)%inn-nlIya=j5X zuRBVNLG=lAGD({^YA_O4=Idj<0^V}g-wn`EeKtxt*7^mqtgR`vl$X%%JJzBm3c{| zqBf4sPIk7pH12PX<#7&nA_@4QD5FtNeHo)-4Clbb^TB)+qjWHVIlIJkH1TQp|D)FT z?e>=V-I*)cw!ho$d6FF=+3DEd+w=4*LHm1qu3$$9&QrO)Eq*_lE7%r-^PX+zYw`Q3 z`2EeCMo*rI-@D@X*K-=}iYx7kEA7s^(yn@)_IF$Sp3_g;O3?o9h~L}d_m22Ir!TiV zqETm_;P$TgJ*Ovj#4YWJTiR(q5x?gs*xyn2WPd;5-|FX_Mt>EJ{%RZjb#9{{cDBD3 zzn}7N^>fZk+u0V+Av$GeZl{QWxFZJQjv9!#;+(53Yut}+(rZWyrTI%wGDM2e)&|G< z5?C{&Qtfvp5MW)PQSG~q>JVqp*NjY%5^v@RAyI{W#1k_BV~}l3BG#g0I65cO9!2T)cnht4CHK9 zMqkFITy$vXqQ*j&$C%sTQk#Z=w~yjG)wDN=UY?zty@;G8EF^aHcJJLXQZJVhT1wTc zrGz|HKjjku0mg9IYTr<36|uu*Tg9D$Ex=K7viQ6Dbdwdf6%R65F)3}H(F(P8U}W_2 z>?*x}_AM9~-`V+x2ZLb2CeHv`9?Gnrq|i0f0(C&w#@C7ZrM3n3kI{5k(lP$kPw(h& z^#dEKuFl5=9W%d&N!FO`Y!u(~MfC69Fdfq&{#C@~bV5h; z&t5(b8Ws9~-cDu{F)Z~S2D&9?x02Yol`AVmdS!D2xO=eSNMiJ8y2xY(h6JsKru50i(ZIgBJQMKrhs0 zm+D$vdC;e>BMr)8- zlxD{J3|{9!Qr=F*D5RsPgaF-IhkMWWA!VG57CfVgb!{h@nhmT##I8~^ibzB^7ck&8 zl_TPvfFWy2R^TS4YIePLvn{Q(fu!S7$v_PQ6^BWVV$obOa}6oDj5~I5Ke-noU4~es zzBN3aTjsTlzC(jKXy&|dJ9Jf3=GELK&oiJuYp$ELS>C6S)_d1`95Ly~yD8>$+ z22u#nk*lk7nF_;+$(-Ri0(CT2zw7+N$ksvd_ZC`&lv~02a~O@_G$srg)qj#aZJhSH@^Q)Bq8i_)iD_ zIcs++4yWCxH@$Wnv10LOC;G)4FJOP}?oq9cC{h@;18=qXfNc>!J;dBeQCPh*1A|+A zA59sGXzo2f=*H1nKe>vP0m)dlxn)GH>NDH1dVTh;n*DrwsRqe>EhJQ@2&<`mJw}nP z;wcWw#W4rTYyJO&~QPxFbfZc@JL&9RR z(o}<>7*nkof9ub_ZU55wW#>C|NxhC=`woiR`4}<~?^a##MRX2#t2R?e`=#E`k=h{Q z4?2N0rb_H5-Bqe-{MrMoLJrZm1^tFT9>!2t{qsc|yXcD!01ltzACpOwOT6(9;HEeB z8lZgUL+~ZV7)N(#!CohM#;L^xfg5GXFy#cPqQ;|vjq2piEP-XJCulIslUpS2rnLs# zLaJv!r(Boe=Lo{|TT`uucZpj2Qi6zfWy@i4-CtI6*dNu1ss;8E7-)aRs1*laVG&H? zt8k!~vJdxDXQL8|yYO(3yPbeCt*JL=ik=#6_A7$2CR5eHt&!8^0nG^Z3vrVW=^~au z7Ix?M{nfaftgSaqO4oiW85Ub(HQDr{Z=vhZZ{ymnV#Bm=I9m-HhnheWfO*q?OC)2) zC|;_!m^yKgasNeAygRe1Eoz$qPdj=`2FVT1R}N5%87_PsetoevKks4}CK>n(rsO=p zZs>oECs)xspsK|!Ey8*OPbr$2TNtWasf^2EKaM`X9>bKg%rI8sHw)w`QNZDpBqXj> zW-`H_yurnRPIr5o-vF2^r0B)1$Py|Cng39w9uuZu2@fXMWSJuqfSPKk>k0LbvCT*FWhCJ^ zlpzWGZhRtr!w0}UY4MleBBdA`Qf zVQyf-(_;9w-K*N@(;NsyOa?pi?Ptbs4fUymANUdQ11}k!)KT(e;k9cu1@6a=ik~5u zBFZ#r3`ehuvKGZEb3Q(y7~zS?l8ZAT1K$MXpHaG{Jxv>5&I(kEVloM>+=9l2_QIe0 zZO5}odVNza-#D|a8LsZZZL$6w5D(#2L*rWmr|BHepIi_Rmsu%*utyg#ejVr<#O`sBL=rkycMq!o)L*&$ zCn^Qg4$H(bkR{dFx`nZaHXWcRcG+apewbg!W6<}`~$9n!=6jKq| z^Ju1Z)=gWCoC=;qhi{ZP5(A~p#~KUwVrO8@#|(|Tl#C;6)afW z73yBTeHPurf1r-wSh7;D-t#wNz7LH3+-lcBbd}yu$L-zLW12m+tuWOhLvBP$0oJ}m zA1}jpLJ0fF(v@nGO5F{)oLx8r)q_>#s%F!3dbwMK^lKVCeV}~p8>x9_={0k>W0Ped ziAC3$BR6Cioc68M zo0NwoZNOsJt%K2LGT#%fSu|n$OG0AIZq#iMwyvJ|oIw0#dMz4_muoaqrg}UXiH4Kq z8cvdHuVJxV!vdJ$OtUhckCXe>4GP5X8D;=W%Ui7vpG9h?qk}1i=}hk-%NmcQYPB~M zNiil)a5F4Ebn6@S%pYn)Xx<&>30%d)B56Wp79jfc=UuvAujNizvZFs$sn|dW^{i$tCu1nu=xvp0=tXIYPK(poo6{C6;gn7wuaB3Nv z(=pkcca={@g~5AQ;kB0PFuuUMetb)K0s94`cSCIeW}*G-47}_tS(0y1GEJ&(dc}VlPv5x$RjSO z?M*f%;pD9 zaC=IH8fwHsyh+`UbzsY@o4x5;lBF4cpY2_TK&8~o9)OMh05#j4`D#qm8~8Mm)Y`Ph zY{8N}woFg{;)baxFEU(2Lw6XjC|l|}P==#VH%`v?n$k!Hz%Y&TLm)LcQ7O6SRXIcq zl2WH0mIZAWwI4-LpCwKPz(8aJ|M4&Itx;YD=GZXBK~`DpZ*%yEcq0s;u}Qi()~5il zJ~k1*%w%mOqEZji7S+Vo_=~y)1WFhgd=pJ-&}!_XZMM3KgmY`_I<@3KG!Q#h*4?Bx zhymY?u8K*o9X*S#`f3<9s<6ZWrQKR-{A7y8e`_{xlHpjwQ>q3TtelXrofK(g3X5-J zQ6#4WMHT`HtU&c{VLnQz5SihV9+$wPt?Du4%})mW)v*(u3Z;!7$EiDxyfcUTH_wx`+y3x*-ZWMg+;YPdWnZDj#y3yCW-016_tu5%!uXoz~ z?-Tv+lZSOMXxaodo1g>!qr2eiCtJPYl1e}nn>F?|y2>)&oJjD_+4{O@1;Eu>?qA~rdz$3A3{7(ft%rcoyPuc+CKj?JVB%U2(92S_7s z>zM=r4xt)#uZAUtQ${eCLQO#3NL1w8y&Fa5Q(ztb4Yg^SBuY>Rn&@fH8(5%WFdqAQ zZ9_~&ewZ@x76h609oMo$|AS*9jT@(XB84!Av>Vl_T=O%C0a&n9>*!BF%LewIsE*1o znoogQ%xD$w2Qp_)1%S)xh>;0|-;)#RN5dG)zLl}GT%%#Ekv~S$p>BF4sl37Rux#F# zbDvE|0+(6s<%)TU9&@xoRG!mBf)Ni`AYQ<~WDzM{sw@EPnw8 z^M1AX0NWHj!C^OEFVIy-vPIgA6LbkpSn6je8S6D2rpX=K<~llSK4(Z~yn$pIWVnwr zDa;Un0~jtcC)9B#*ZUW$&IndcnM8qoYhb^PIUh5%L9e73mATI9L|$*E^+x&_h=AKb zP#F=qCBpo`p8!K{HkyAuK7HBb>6TX3`4=-7D={(L@}DA{T23c-u|+_&uz6>;sd=4D zM$M_J(lzb4eboc1U6%R`?FE@(tQD=nKYEYyj0ir~&9;fWCs>7*Qo4oOW?v6sj!MfAt$f(qq8Yw7CxmR+Oc#YqkCLF^_00uEf7gMxjRf{Ys;^MQjAO=ZJfrS}Yq zqKii4%9=W>12hIa==X6p`|L9vsKL_B1R_z;8}RJ`oVxiOIK%sw2=3MWp9NTgQKQbQ ze^~fx++Z(L)3}lxrz^CDFU+uXq8>`SfsQb~ENb64J9<&kQA@CQBEo~9ET8WH#^Nia zGrt(+cg5IE1jND@@S2^7MP$kpPX*~mcdjEBb&w|*M zk42C@&+R6&S)buxGaH&V2+m8$c^(1+HpwV@1A&XidG0#(Wcb=#qLz-grnT$JtAqVp z?R)Al^?I&KPJ*vQ`@d5*#oWinEqlNnvG7rB9RKpc-4JeDd2BaNZhi+)M#0=WslkA* zHhtucIGGLgHc2(pW1c=WwZ@leCF282JqhfK{Z1mEm8vF{eVdH1LdTMbN6|TghI`y& zBI^?^)H24RN;ylKP_%Im(T$ub8vyLMg2O^+$bJ`XcUrDZ{4LSjuc|ZOHIR^{X&_o{ zY7Qjvw$!u|fTPDrA}3&cc({ER;;W7T2U3Gg=4*ke-#;ZcgdK?Sr`b?5lz+3^blx~S z$2R5V`y5JTY~0fD3wEd^w{h2r@~N-H)G%z)vbo;a*B%7zwxK8| z!5#nPz$egS$3xEe!%_e&y#Qdw*bGc{nNXU`*)&6x)4NV{OZ~sj*4FOUllIn1<9s?u zy%HBluTyqIiqMydi20hz82p0Ltfg8bDu}W`er(dt6CIV1wTsxKvE?o{IFvX$pXr*2 z)k5rxoL#;f+krr+t{bqeWr8jx9}EG2(MZ&Qbz=RqI{Gn*2Y9mN;2Lf0F*0cPE4qHe zDCL;mihsa!6%YV*EB`r=mBwhvV#bM~?zM02du^FRe%bC|uQNx%K&(HV&=bNCeR$Y^q`>zgO?}r^^ z!JFNGeZGI{WNaJzpsOz&|s zmvUMK7AO(g8p3{Yj&|8TX&CI=BV)A^yXag(P-K&VhYW+0WTI0s+wUb=OF@tbp(Gz?@YSB4@gvYBi9i}s7#1TN?ASnjP46&z6 zjzwfu$CJL6*qmZwR%TOKG?|}yne`dlj_IA5;Uc+Pz&{A3S`^fTKcDFNbL_I!t>>)=MHTn~Jtqz_KKOZe?WN zsC7-fkJ%r;-(V68r8sF}D2Tdc5{Ck4ZC1`XQ(QZi;3Yu*uljc4!lG4<=zpLPRE-Z#fh6RGh-s7X`?~YmGD0%$u+#ZfBq-O6^s@Lq$f1~ z)t`rF07%uvsXp*VGTfWF8&^G0nw{wA&7lreXaLD!Iv!7N?Tt4(mTsq-R-k=ZGwLa} zP|YPeO*c+9ClT}z_pK205_3dy>!gO+^61xGJ8w3;sxuAV2(0Xf`e+)<(&q4CHpXd# zWN;S_gv)$K9>BN-!#Cw3?*6K*LDlTjB)= zy&5J^_OlfSSpPDP=TT+3gGh#^5nFaPhNNJrGkgoC%pNk>N!mQD!1$m%_bl>_{8@&D ziSZ47p}!soNa6ZoVk>{NoctL_Jb2sX<<3GfcR7e{^$-^mQUqC`_+#St2q9j)U0sae z3~+7E_SdKo(`k`f#-o(dxzwd+&`rME8$VLaj~ci;oR|q_Z}SY0g}RJ|!dgrjfYt$d z?zD&Jw}ZE??@&Xf2{SVq0Nkhxv~2a0c`zdQG&kN}R6GxNkfIxBqB-Z16KEpCB&fEH zH<=oNX)~8KTC2T4mIfs#uz^t|Q&>3eLQHv$69aijF$6>koHB%x%ir62fNF~ zL(H5UpPp~F4vyeomwP^1t3JwlS7tX!Z7z5Pnr;%hBGkmC51S)MM2zMYS$@zBcJ*NH z1Lfd6Q`2TpiHlw;ie~#XI!a1#hbq?JB$DPJ&&Zf_BrPE2Y7Zx4S>=lrS!^*IR2+C^ zQUeZhF~F0Q!j(Fz=?IV2jEx3u^nSJfL1S5hZ8nZ4MRHN*y$eiJ`+S8bZKtDCSid1! zjs7{g?yRjA>l?Jb!#Fv|J+!`R0I$~h#9V2058E9L&B{=dRS~rz_eCr`3yc7?7oe2b z1hAxpAXKp{BCj7pjJ-_TTRgYounnpKl;iRAnR}WhF(LE}r%oM#cc7^8oTEF3pg3^E zgzju1*=hx?#tzjmkPTj@_3yaBohRboN$7l?g7C9Qe4t?G3bIPUPqNOyr+rUds9lX@ zVOUbK;GG!-kkl77bsW_(AoQ$KRqwQ3AX0bQt}|i|fRxkzMLZr4XBSuKl<^0qal0a0 zpJh7>w{C@+THaN_F{^Zq1zREzS8)n@WUS$DjiDo=h(>hNX6{lRsEKB2Xjm@lpABI) zVjQq@S-sCo5RgA?7EA%*^qcmv>iLr2cQUP%!B?z(D~&z#n+h1q**GyfNE3YF1V?)n$=;LEX?iA8-hah7 z0oW_(7&;rzOGnVp&8x>LMo({SfPxie1o$Jx7?yj2wl3flF!kvLF9ri+4gEG$Q&K|3 zfi$)Tm9>(e%F*tGcyQ*d$^%40CiJ{N`0Ni^@msOH?ZNU%!5HcD{GC zcYgf3zJYt~#!14(N#iY1PB|xDRHQK^ug>~}$So>1CaY7c!lNwCwDa6tc>|Nap$!gk zm)}^_wzft9`{98pB0#cW#kftpIR}w^OX1lwg#*kkAi{fJs(a9}AA&+6TA;XmrcPlQ ztCjUAged$sk4T6RKe@SAz3d}gLB+8$6?UGom)D`_d7zSScIPUYA`E-Xd9MUate4&z|9<09` z$T)5Nnhso>wAUMN_ujcF?EUC)|Md^&KYsREs2cY#pM{T~)f_LQR|kjtH7Cz&j=v2b zZ@hhV(v&$`5;X)qQw^#ta~q(IB(<06`)KTd00TUS;F|O0R0S{D+#qiz0Y}e8h4z{| zyYPCsO$kpOQv3GcDIn2ttpXQ-0W{`BIxqK3(M826IRW|s5M&vNZoHI)VkXzW)OSe_hYibZl} zu9?VE7=)omH21?%F?qYI>eOCuPgI!Zb7ByGjO1NWgm@$^%{Eaa9-PP+y9F>1TVqyWhu?7l`ccD0BD|$wV zwxvnwQ_E#X9YwSP=jb-b0+=G#QWStDfA?>1_fO9bj$i-VXP;RD3t#0QLqgr zOW(kzQAhW%)Gc@o^~Haj0bKcTb~7tYZjhe1)kxmps8yxtlRpe#%sxC+oB77ubW%>i z0XUK{Vo*GZ7wp5_ix#V`aFX@2{=H}@^wO}?y`JUjQSLBQYx1K9M6TNSiTfUNr({sp zMCw7i@~<-GJIiny^0j)6|rC@9u+! zJTqUapR%qY(QvhQ@^@vys5-^ekoy80z=XdyX=7E@uVLQHsdFA}PpgB9{Hqcf zL{z3(L*mMeLP-QL$vINW4Ab6=)dH~M;zCyK^Q>GqY-~kEupb;O7KEcSx^)12k-S=Z zOhjv8Tj}t79N}XXR~H{yXV7bS$Qm(g5!k`Mq-;=*1dafm*1ChtGKp)1If8@f~9^ z8TtA6{JQrJRrfngG}dPz@Uj=Q(UiJgDh-n1Leu|-jJC1bQB&~6O~!JoNMMYBxB&>$ zb%OE$mTw>gjPO`%>pIAfu2)mRCus;6;Sc0UG^%%ZK25b#&SF%@S3K-_G1sFG*K`oT zc=#wCi>cSeGs(`QTX>_A(jJOZ9gJ56LZjCD4sJcJH8NgSZxoYhV zf;}4(Y}XFKzchpeXwxVS;Z6e+7;I!mWZ^OXCG075y>Hxbv*t9dwHc9;z|vG48AGu# ztMIY;{>Lo(^5xm{^NWMmFZbW+7eaUIve+aZCd5rVyfV018ryf7hT%4%_UMc1p|$nU zv9GEJn<2^XtB2lys2($WDDa}%{0n%3s<1V+^f~F$x>H{-WT3@r^zfp3I~s4^7BIdW zH3$#xY(&<^Gt4^1A{~~|?49*Y{ZHp9f!#nsZknCNRIFkK|DNP|9$X~g|`B4GK0 zi%F@(=P=}C@cCjV`^yUD1||2U;qXgwCwglNm!J?=`&LQ_g~O~|K!~Fxn*x(BWf})Y z3K z9|-zXDi?zqsmjbr>!x)rR{QL{sCZc1B138BIVu019BdAd2yEsRR7$D|=Zr`*aqG1&IL<D~Gou4p$Jm;3JZ+35-`qyn_5Sr^T!(=TTuh82o6AFch&M zj-;JuLww$3yURBS7*;98f7Bd`F;hYhe{p>Da__teNYgoDQV2CVl*H2~m>>-o9m1?P zwoFJ8p?ShJG=<@|nB1hx1J&z-2vD9v&T(EA@c@GLm`Wt&C_vP71)xA@R?w~Dx(Bma zKDpj(72~*!2v}aW$cm&DJGueCk@N>vPSCX8)A6JdUS4EKW`d zUr77;2qxBSy3}|Tw|f%c$LKWZtU0(m3s>iCSBl3A=Q_N(ur6>3v3LoA= z$d4qHti_Sl&*`2v3IuxX1mRNXfbJeyyyGdZlsLKby62bFcmCKLh7?3DvLlnIB2T4} zU^Zhuo*W!WW>_#-SnNvnPLFJ1mBS^+ zCP|S@?h^OORQCx#&GWM}$LUegQ6#;R(?IR5bk)Z>q`5ZU7;b#rxZgP1INSJP<6PE~ zsqg(E>R=FUk_IPgZxQ)qU!NKH#pV?3}83%K)syHg0IJfZ2ec84ev4CRCQL zGFmSicRJLJ}M&M*%l4Mw~;Ep~($-oy_$o>WtPi3Iat&g~X+?TaDULR%`1s*; z@dbA7D@%N#b{QD*g6!cb7`DM{2>du37xq3>&KU}3yf~s(BGiL6C&s>^(WIyodhnEN zn>uhjX=R!5Zv>RS|4{cR{ICm7S6AJdy0m(kc`ESDkw7)Y2*!z9K)h7nRTM4Xw5BU) zp!lYQV8noWaj!Ad&jyE!9_Kp9dG?SJZ!ea~@H6cC-aZn?ap`Bs&VEuID@4s9@O|@DPF44M60Dypr+RXS z?dRn%pvHin>2^{zfzS!%M8XtMj37o{_`(T6eSSSww#oQ&M8T5T1U@Z9<8pFwJ<%Wx zlwtt$sX_nw93)1`Xn{zK3&LeFsic)rJp}qOEk#JHAyQ1qe&ft^%NEN-HxgxrA?)gt zj^No3&P|vR9uV3)kPn=_FlO)t*D_s$Ypyh0+^jm}HCc;+nVHkV#Vpb(4#ND@w`72G zCZbdb6y3f zNK~@^+{q2rl#sKghj>Kg#nmLfUa3kDNQe}IORWS|ful$Db#eid{>3G*9wis(@vT){ z-=yX;>Tub+i1TR)m?alwe$l&$Cm1YVX@G-z^L8}WFgM|r?rND*(D+}j0B^o6z1w1^Bt0Q)fFl-Hs-4McS9BVWk#)pjs&(etWUJ<6F z6tsm@ZF7##5T1cJjKzhe^GsymN+c1Oxi|{Mu(_xE@0x<}sAaB#>nTDJ7O{Qr;y8R_ zVA<=kMUWW&@%yYl)94Q+Mx3%iEM4t9wWUU(YQpJsc1De5;2#YQ(k%MNG~-;!($f%` zjDmp{9N>ZoXA&x}oNA!N>^-CS0^zGx5==|rC zeg68zo!9{-=buqB$%RZ&BUV+5c)`|kOe#at!0&A!tgi zN`I%Z^BL-o4B>OU58Y$}#&%YPo6W@J1Kk_`q&PS1)-u=+A%DKKooJI?(DV-&&svfk zyMh@u#o2^Y&i$?y(tK|?Cx+m;t<6NJ;WSOjc(6`iUi!12CvL2tXxl)9apIa8$zLVvlah>nSA$F`Ax~G_3SkAc z)ap{UvQ7H;qql6ShhCkc@fo&JjhqmApp6S?KM8*tbDFLe&Fa;cZY#NG4c`P6bbZo| zz{eZ98A)}kEIkSR<4{>AA(q(}A0oD<8)kcv)$R0V01>M$17rUR;% z4gZ2_9sacw(>NYrcfo9$(#yET|5E9KxRenjw0lob6#EZ{=6=w7=c|CX3pKrJO*m=K zy}%-!%A|%7di%7Hay9$H8MK9?ZCmQ-D`->&-7LzY5Q>~sH| zdkU#u+U)V@H2517i{x!sPer8ai0r~FLhkQwEgn_E{LUP*Gemk); z7<_=xpYw7Oq~EmAi=TFf-3IGXo5;gD+@gsU{%}6J#{W73o&rMC{_!Nf;F@kF4iO6AxI?qoa-) z@RVwJmewxD$6ePuP~PKqsF$nxfyWwW+RIo6&kOif>vW*joYv}H*R#~9C3aEM9S5W! zAyX)(>w`>FoF+KbQ+ z7?YdeO_`2|@j8jeL-^oz%_>JM-FTp3hr^uV0=a~4@f{WUbka-O)xfV{>=uozj7bM@ zYuaG0g=yPEyw#=`?iRSry17X%nM`fHU?pbcTMJ`?0hrSc&XK3v4Jdfc=SgmnWSg!M zBEZud6qk{FDRDQOj*Ol9mQQQ1Bl5>G?r0Bz99^amkp}=t@Q*jg>Z5Fql-Y2lKF}r` zS|iAF%rYp2b@ZYg<#xVEo^ShiVXkD#MO8Zop*^Uy93OE)kLk?09cYl50F0 zN~eZ9qjG0c4~CxJl405?;D$R}5WF>@!jb>{>}3DN=05xv_JI=3 z!^?!RDl*WqcPPKv)Fkd0{&wgxm?GTXN(~N%gt>u2Y{Y80O`Lt@BnOj3%^!rfX{HoP zA2JbphjU!Qz>6<|(>raHACfm>z?Zbxm!N4jOshgqt1`krI1^)PwTPCw!~>eoxwxCU z@(H)$q|iR>W+KsD((uFF!tf~u!g0&Qhe;PuHSQp@(-C~WRtITLpZxN|}JI$J>Bf zC<3-`+~P|VNp)(y7PZqZqql=<1h3O!m+M!QQHhsS2gpIlk}B}eXHKzppnfCj7vrYK zq#g_8P|EQ15FsH~tQ;2CeNGjtIX~==>IGWKut-9SLrC^21AJ+}N-iLHqt@SHGSSeS z^Mx_@JVR!k2MHrO-~1ME1H;z89Rbr* zVOZ`41GCxC`yNhkL$^CQ#t;funI-C(88Teg6n3NkYb&C#VL7X47~~@?eGF+A=ekG- zi6D{lbOG0rDbOQqOtFc;RsDUHPn@AilIeqow7PC0bK+go`3dX&7`TIvH|a2ObU}oY zRv~1Ki9Mzmou6>_|Drj6-sn25llIw>$-g$DZ&BtuPfH6p)i&_gUquFN>p2m<*)-S4 zq#|PMG>o6+`R%p@Gzx*@BN7))*RUgXWZ}|n@Akeu9epROYQKHy{rx}rZ*w83;M**7 zp7&cPtni)c6Y&CEN%QC+W&dzwboR}6(7Ryi_?`Pbu$yeCZoF>qt|RK0J-vU@tYPO6 zXpe|+gD6!=>40)3QR}XZFNeuRs%%vCSv&4hS&!)XicR_s0CL!3b|Hb8p8!**e%$)a zbtt2H$bOMwwOR~;DD5*oLbRp=2A8l}EpFr4=q~I|cz_b_eK6xY5O@Y~Zc2kN3M`yY;;dyVyv^G~P?MZ~mvSyEHP&3~I zLPc^qNFkl8sS~x#gK89QDQY{@y@HDmT(@|{4uj-xBh^i~z~e*;zDs49$F1V;>l^#0 znKzsMQ~t5ef51NfgEzAxx~$ss#PH@cESLQnWnQB3B)A$j#4?H6+=`G-RK|%0k5MQ0 z^G-o)-~SY*;5K2hB=WRadtX|kGXtJ_vT(Z3e@U>c?6k89I00wIP84eEcg22F_8aoroYFrKvArXt=IiAfR>(7)FCvxi~@Js6= zv{nX!N4eV025?N{#%!2s)Dq;_qg~M6bB|qGdwP5rSJ|9^Y|vbe)EF;wG?^}bQP z;L1s|L@I}2I&rn4uLCxz>LH+z!n!g71`4o<#@S%1cIBFE7I!{eVQmUoZI}_NXD~G- z$3C4(zzQJ0cH?yT3iM5uu|SK?LyP zb~+j_A&X%`5(aa4MraOV1)JNxA$%j5tvN!NG9d;iKQ1C$iTFC`P4w>wydCk-gBm0^ zQB>w8UCPXhLx9pAPs^MNmKGQJYA-5y!0s=2o5deIc!yHWhG!EiR-rO~K#&9D7|X`B z8k`$t@SCDFOb%w^i}9Ulf#=Mg&zopOkP0hrMH5?fuMblO_5*csBLK+`raPI6{;pf+ z-?e0AYPRbqh4E!F$(H(}bM#%shD8gDc1+b5*A14lY*ylXHqKC{tR~jJ+gu08e1Sak z!l~eLwnE_g9wF)grBgtphW@LpyBK4B06k!kdI1GN!1f|!1H&}fX~U(&@Nzt)Dx2FU z$=K(K*v^+J;1vS8B+^b%APKpw^cK}6YW)Rwc9;Wu%X z;-kw<1WW}9q$AK*hapvKj8uVlx=|$jDqtsaJDyk6Wn)V3lMdd+YO-Vq&hp09Vwejh zqP~5coW6}1aZYLA!-$h-Phg;444y%9Gjnq&2a=rm%hi5MX}Vr~7qxJLI5{D5CPsXg z5?cy-skVZ}eFUXeN8(`j1~KVzJV+>FHGztGQwuL)jKmf@U`cU1Cj`~-_plL3HFVj~ z$-xT^yndaO7ivQST506ML`;259Mz-_S6)6n0lMK6XlijS)EamrF7QPTlfj1LEk#|6uGvucbW zjsr+-;p8o=>oy*!HLc-$W&pJ&jAVv@)0hM(2h^Mr4q$12{pRd^?`ZG*__e9M1$rM5 zeZ)LQwvjs z7Ah0rsJt3mvyI4mH@8$u_q@rkU(`H1)e0o*$q4`h>H(--=t@?}q3hjpPR|}JNie{%itxkN!3^#6r>%6RKq0VrV+q|fJeomUJ z^X0l|&hbz>qoibmC-~UR?@<+MpNmr&Gv7feSlE^elT+fd!pwd4bJ#KfYvw#mw|if! z#gffM{Z4C|O_IMwgA_7ZC|OT}F(w!rmjwWxQj0!a3M7CAgikPxqSfC#UI^K|>-!X}IvXH%W$@muVJHW^+ZxnEEwo3@!63-f`2y zZw`zGq1MruXR`)^R@H((v-MXJoFM*~<2QSPC9i-HM2XZ(4m=4yo zYk8v)>+-A~6PPqdB+RjT{i77{ZPXi@z}TIb92b^0DE0mUw}K5l7kaZ*5c?bR1x8q# zf|~*uBpjP0eSoh~3ZP|kk5H>1pyiNq2a5v?mg~@`-;Frr^1X1Z1!XY!`h9brnC2tq zoLXL-@_;Dkw%g;ybW#+yMj}gTHj0_4 zDQ}l^!4PDIojo<0!g&1^)OT81HzH&FHrO$^9Posnr}987>q_%Qh}zZyQ&yG95C3;8 zhq1iQI?RRB5@cy3-djU-Sq4QK2IE?L=Jjo(%_&$lGVx>*@__(n!8KpTqDVPwN!5j^ zrB_4aXuEUT(GVf|6gRkuA?L@E|zNQh!Li=>_gF6Q){MJf?zZ)R%R z8Wb}P>ZkMXF=?inKpBUcQtFlKf3jFcp%x{6Qgs=cp%(hS^j>_yy1$cb~L7HLYlc(Fua^ zoqY+OB3HOFp!7YcsrL?v$D=iT2T`o7yh}BO^lqRQqWrkN6xKT@&scO1i02kmz3bu) z;QV2d00vXDx2QE<(Z2(03|?%5ipjtZgjLBsscgl41B&f<#MuWV9O+%R{f%15MuG|o5BcXD36tDLkk#9xXM5{V=?6V(VAW`*K6C# zhYcbrcIRGNHb+0A7ex4^%ht9Aq*54I2GmjYyr#^dBzENbuut`?iDRp+frQV#qP=w|s&-8X9R-~;G|84~J_;;KHucG&+I zPp&#lK{!uPBT{f#EjyI!-i;292fz~jHvjQo)CQ6w)JNW5cfZn9eZ0Sm)Pr$6DWLw3 zKkN%|tcw=@77ns4m`{ak{gGt7ACFrfF{ghh_^RVaDf*iTyX!<-tH*9WiIhX>Q5&XF zEFKATMXSU6hqp3mwc0k^+Huqb9)i?(PjWT6D5jU?Y>X8Nk86)l{zccbU8 zUS6E;A0EHBI669bckz7hZ2#iq@Xgu9@vB#7`{yQI!#slK;}$x8INkrD>E)%*ZBSX7 z45A9?@7#TxLw0$(rU-HGO@BwIiRVzN)oWX)x9< zU^s>7Xq4VFWa|Y)_t;Os2nV`OL$;9M2@WNlUNyS%OY8=C7s(=|8!-bFQWYQ`mc_#h zT!vz1xVA%>M&8B2(NT5e4w7P!%*vUm1TqJhL3y6v(XZraj^au0=9x=Z9OfM)>AU-) zr&jgJ@=Zor0=u`~@-2!YX(I9U1DZe)#{Kg0fJ(EJ^tVp=!*|5sOr7SP652)y0xkH| zi~?L3HWltkgq#Yq8ooN&i|S)Um8bhLb+bLNDQsIR4&us)P?KQz7HTkerTfxt04aQT zRnoz?X9v$2EzP4oyi6n2ub1gFzt>zmBt7%Yk%{JNh?;u~&fnwPT_E)Lx##t$QjY{M z=OJdoFp2vD3Q@uKZoD@FxV3qO=#EXA zM-}>VBgqwsgE+3Z*R7Dp+u_DaP%I(1oj-mj=&Mi=gBHv%p{Y3!uhJVkSPx@HrcD;7 zE~J#Jj1&FB+5;q`l>3gfdp0#+6wp+KA<@Hvhj})WS+}T%S}niBAF5)iR7`7B=oXSq zJCdG|V7vC#;!DG9`@Y%v&u=y&^`B<@Lr_y^Nli*o`A(f>A-x%%}L{qONwkyjaYT|HKpe4W9z*iZmIhjO?5)la65 zR=+KrGYeA&gPgy5YH3AB(`lf96bc4BK3&4vLNdmIH;3@;66_Atrf3^9DCU+0q?@}S8nm-2A+l_ikJ+kU+^!~k9}o)U za&Y0DffHUvvw^rNAi)-1dbEbepCPmL)8V`I<@5mXRkNaOVcY7fsJTE_m+dXJpYh|u z!L#^n+Pb1%KI~tqCf+h?0>&0vw{p+y5?KPaGt`dUgSZ@S^2?+iKz*&zx8ACN@ zmO1HTNOCmtZOY+9wV^_=;j}WZ0MvPnH8)fyHxD`iL0Wm8RigP(es|BKyJk#*1mbqq zpPwz%Fq@|#gOnEgssY~=4n@tHxg?v8E|ZDRUN4N~;DqN$Y%r8}$U0i9nIGKtlyfCf zZ^O-G)mGh!M;WT3{f1qL8^N@j@KN;{78HA2cd5Ap18liAbwImeRkD!pw_$&@q-0Un zOCpc^g4qi03_*r1#IXMz0*uT0S29#n^{=e0&pm(kpI_9Uw@IpMGSr|JVUfBi(DV(w z^K+^yJfRSoS= z*3kK64cnirVfVj61G-t4Z2#obnpdy>&^xBZ=>z2jUg!Kr=$cK# z$$8UESi=92$WnvwVVGT+FOMeKa{kQxh{g-2XvqRz&1hX#&T&w>xA~A+24aDp2@|Kt zSU5GD0}zaN7Km2wD!mvM{kWnM8dG$e$~@{CyI9?x*{F7Du!BythcaNP+3k?72d+6z5vcJhi#~?B3>sZ*K8Hk2+{1xBt$Mxe{wRR_*s2o-XjI?N zR(wpuH#?Y>0}kkTEjSHZZYkcn0t65jyd0k+RQ+thHrtW@+k>Ph$=@C#j+M>}8UTLR zEkuBZYAno|=uE|6LQy8)n+Op-9cDL?mWuyN-Hd?1sM|OSB3fPN7qCc(1VW^}hh?b( z4qQK}(Izpy0ee0zF4Uf@B~j2+_aA!ZX`Ehc8nR;#^*=`L{u z1;uKol405v@*30byv`$Ll)#ofri>b&C>{6X!~1oO&SDD)Ea;+%;P^6uFHFl=V5?Q+ z#~a>i>Vp6(O$ZrgBXZEEoH}J4M$3g~X@QQy)d4+`=~`4>AfE zxh!F757O#6oi^t{0wG?Gy~IQ4s|eQlE;jCRdxWnD{!;K^)&q!r-5B;KhIn4`^C%O= z%DHu+s!5-a?~79Xa?`QxR;CL-)p%<h=X7_;bQ=qx zW%XBzf5OKwo0%MJm~?IflwTtj`403UOt%$G8E6B5>acuRpu{b&Z?@Ku2S5dordMBy5x0krQhND@z&kO-?5ye92^FlhwS>fJOj3kIA& z4sB`}13Xfkc{r7#_K$()aP1ib37X#W+f}Zp14~nnH((oRX780_SA_MbaSaHyayUxN z{IbC%F$C9GQxt;_!3udBz>jIF?J@F%nNg++Rf@+OOO@W}2)+rUaN(diuFI9oLaomj zpjhmS!{g%<5$BO~?L%cjdhqINYWuEs=q6ze_E@#cWMIK^cyQ|l%3-D*OFrJH{lBV?B59fU6go0d9C1-o)6X2Z3NXmgds zZ9Zu_MKp$XTXIO7`smDVldH}o@FbD-F$NU094edWLxGnO4Pv!5a-s}4^LjPmm^V^1 zM*WL;JRZ(2uF`vFF_>InfdH%lDc1uJT(A|IkD5P$+{j2H34P>RByxkG$tJlaZU58k zT8QgQO?ANuLwZj$)C-=-vAf66ug2+vXN?ypXUZ5KPs>OjEbZy{_UDI&egT13MI0o! zpmQ;700OMa-L&ZS{L?wWwB+XRn*8YSdClNR&O#xh^NK^qA~h^7Fd^S_2L)t-oH#Ws z8E%ZF)f+<&>e#t7d&SJ(nh?OD=nRa2P3%R~LnO&Yd*=oWU=IYvs#P@xKa%p)5!vNk=>^8^TWc`qIs$1L(g zsa<(IO3F!E{Sw`Kmd-+R&`iCRBShOHxlzmsx=s~BPJEkbv^e!QEaJH+J!&I$Ro%P#{bK5=i(c!s|!uOGgP{7S8a)5~V% zWaxQ=9jH3Gyh$=+u)Ak+v0(S}k6Gz{?0&za-`)HrszRJNFpVs}8z=e>%;&pL)QcJB z6?WLY3rHVfEU*g6S`Lvk2MGFY~HKn17+epl&CMPZW zA*Y#c0JE)Jm2a&sGyUNd^e=al$}(u@-^Q-T0catJo^w1!e}spH&Aw#4LJxR;S9T34 zHQtO{^Wd0(DDM-uu=eDv_N0r)lQ1Gr%_Cdn8OT+r>ty^OAeRBrA*c2ejWFH|?+mM4 zVS~a=7#vdldap;wFZ#!a;P~N&3|cWoN_T#R!pqyR-ly-?ws)h|YOOc4J5mpZ*a>;q zoqiQ`24V~LO(GR>BwmxYKM~p$*;Zg%=7Fqc$#slN8>Ld9iRK)0_f5_z6E@L)Gxs#k zB+ij)IMlrqbu4*=?J00pkaMxR>vyWX8+I2APmiX)WdJVaX-xo?WG*E<3}UgDHWh>h zss1Lt$zoILfL=r5(^hv@#5#WisjBg+0u@Vsbc7Ay0wy;j0%|wD8l^Xx;xDKxPmzl{ zOYYH|V683T>~R8W2@+|*Y{ocI#&HJvWB5o=NPXM@jSd!@H~FI46P7h zIyi5noX>JUjRX-+LNC2pIwh}S{HIO)V0&dw7f&A_`&3;uRZ` zrqmz^@O}RAds^aZmaF-&feuB+2x4B*NI=ki?(Hsxd&t=&m>Uy0W_7Y*5$b^OIS!li zV6x6)9jSEGqYKoaP9m0qoL*&`4UJhtnNe~2Tdy2Y3^L22nvlm#FR5RIApUZ^4|+D+ zL?itazGMU zjU0kS%Wb5-GqCh*9haHs@#Bld9m>}8?$QN0b!xi93`}}Hzm18kFJkZoCI1Lz^I(PD z`g%D8$Y-&4deo%UUhc>+p0tcgn*pErz z@a(YZ0XH*+ip35r0ryX${$WcfJ$du|EIN4s1jz8`;i>-hMK8|^9bnR`s2NV6dj1TY za(f;2FBl{O!?cdRLf_6XSEKHlw$u9d1Cwn*`IQ>G7aAub$I0ehwRcTykR$ibHk6v; zmYWNR0p204Zhz#8tM7Hve&XDx{v7nfa))F$xP83t^_sN*L!L%WEQXDZ^Z*kM)wT3~ zf@6knU!6o}Cr%0SI0z@txD|z3MosxmRV`)BKK*t~3!r4vEPj@|wLqK54xcldGQZ)c~gSYGY~^ ziOH^zI=1e&VU0ff`StnUyNm7P6Sw3xh@Myz0e0#;VoOY|)+`CH>PM0F9a=BF#to{K zhYMP9^fRpjSz)p6Je%$lPQ^o~gx~m1Eqrl?bat{WZnRQj&zzSg;?4hpS~4ZJJ04+c zfO-VktI=)nD0p9hS#E^Q)a}OVmXhW;pQ!l@9LJC{AaAf-UUvxmloY4gpQuv0rv4%&WbH;y+z?`_5NWMMRE;Uwu#!CK2e z;_c)H$2}p>kUNVB(QYJIaWM7TF!)%Wd&{;%MrX|}w1i~6QKg-Zg<60KYHeXFTEwUw z^Dr-L6ZkZ7XW^HLKSmMR41~M&s2fq8H+}4l5IT^P176qFI%5X6;(>wkaLdo$ zq#>aS0DDL%;0q5(dF~Fmmn4WL-1Mv6?L!+QI1@D<_A6cJ>_WsVIXT}@|F?%7aB}{< z>s*;!=nl`$LOkn50^l|2?a$!!H_i!mr+rDezlUQ$6wfTBeMC1 z6x2wZxvi#I*L^2*q^9D%n-Q&T1bym`^0&(96ds!bDvTLl0&{}JkDuF8%;b1nEsi1N zc~=x1tU2&Tr+Uzuo zdCD2%2mqSV22U1H)sH2UQ>s=`-C`5E3AfDiZX#L;32PS~SbuG#ehRtX?#UUTxDN|Z!xHTa=Ig1;5t0kF3C>#Rr zLPXD`a6fatOK_WJQ!Scs=|I_uR*>@v#4RpFI5{E>f)Vre& zTxZTEkM~Sw?rn@As6H(;zjjF=)jITy>ErAyv`&qTLemMAJU}&sWp07mIgf2hB#blD zjM)KW@>*Jk0=NzGfn>7+Etm$=DItVE1vV-hh>#Z71s@aRh~os+)F4gG4PrmgS{MJE zQxSH3FR@jfWPzhGmwJIhFQc9xNPvOwtQ_}#%iJ_A5j0A|Gy5$Y#X*#C=~BAc0fqgIe%GJ&M` zYF=_!i(@T7y+fRpqEb1znW0Y$K1qzb+gRw@yN&2)G-LnQx-EIBiY+1Yzw9|MnW+!~ zQ&&V?rmcQxMaQN2s(**vc@xG*z|ql3tAPPz%T6Q9FU?Z#$Pl-Z$U(FoBlZ?z1rbg? zVrY^MKo1-a;sWcWEG8!{sEu*{F`0~e7re$7?^pXDTn_Y*1b%9P<1ICn08Eza?-L=w z0A-YYEQf7~Cu+gn)v&d+c`4nWds|h?1DnAibll?7vo^8rS0|NS@IPqv2$l!t7#rWrwbc4Z!biw>hd zG$@xdyjSY@KPJgFbkRTm(|W$0p`*i`v{R4+2}3U1lDWi>yr9HRNJ5stJH(9;5Sk*% zq6?g3nH=ktI+ul5P!kfd5w5(1u{!B@ok+Ze zrXrs}3vZ);gQd&pgjIiGjihJ=TQnpU6~Y@*lpBuRX3BU2WCGjz4)RUl88XgKz~pnt zz?w2%dcgbEm?XV?(#I06i!3iMU{3BgDzxsf(3ovX8V;y)RyAHQAsbkR$Fne5d}Gv` z64w*j9YGlk9HzPu&B}*`A>5>cdbB}-BZ4baJ#>GX^<%6vSuL7|heI-dIz!{zXVG?B z&erM+Q=71B_mGVmh7W6+Q1wCF;5l?N?&992u7zJ$>F}4D{3ZABo%y^uvkc)hbxk*W z80WVTX!(w?&Xmp;SK_x};3k>2dLSKV0Y{TWRM`tJb_K@Mc1QK@mr7peQw#JVKbcIP2 zi&tG^2v!JgbsjhO z2&3BH>+AJie*0$G4`vdrPMuUD+wX|qFeK)AHmQCuSF8Z!s0;>w{EqtqHYNnoG>HAYn_&BF)-zqJ+>;C+hHI z`HZY9jVh^PnG4ccgApjmHXG8G(fZZ~DR5{Z1|1BgW?sYyVYwbv5_SzBm`Tlr)zHOF z!K0M6JdAyaT1aq|1YQ)(p*4l_>j~y+@A*NOa_WqzyN&fdHGay9&W)RsWaqtb^bqFJ zx6xKtr!)_>q3tsc@#GiVv`+ngl$cIxH`%^01#;+xXTM@PQ6IT=eMW105c~?Ac+o@- zi15i*^G=?e{WW~z6tATLy2jIx`?Bl8hb3uKpJ}pW07DE&N~d5Q;6z41VKE=&1(=sY zNHaR(Jk5&iA|C_RG?6IWtFewnkB4mLa%48WjjxdCn?`9TcUcEX0iU?9m@6;#ufSFQlm6L6a;?^koaej66I9wz0h44SY zYBtL0EN7|k6mxlq;~{1he!+Ny!GuET5eN|3g6Sh%7v-yzxi%|WaqV6iwivel!1?5C zn|WH$Nd=XhkhP$egS$AcV%s2W6&C5Kl@a#$rNl1O^{qI_ZndPXPlpdmHOOXV6hj0U zw;TuO2F0+|;1%6g08Xb_sqC*oDcTbJ6AQQv(w&%Zl7VR*`rfPWf=J0G& z{pSt2`O2x9TgcJhN8i?Dfa$?Bxsg)X#OH-r9FW3sb03Ku5i`&lA>JfR&qgy<$(ViU zp}|pP0(CSrdY36iB_V7Fc1eM=kPDn<{V5!;##IXvY6~&?Z8w3_Ai2pA$(bo=UY)$r z--QV{;<+h|B$;z65?tZ5S1XpWJ4~%!8uMvDJ~6tE)ub;+<(fA0Lv1wo5UvuY-FXe6 zngRTOlAds`ut-w9ou~Na*-6ttsg(01&wqS#^n7W(=TMfg{4JAsCtALR=F5QbQ3G77 zUn?TStA&VcaFb|YYxo*om7xqExk1m*%VBZd|9o}WrxEyoX2bqSw-XU_C=*G_Ze-KB z0;G8Dov(MEZtw0qZMAkf-|T#|`*r7=Ckxwc`O?M5M_tF#1bFDuF4jcEJ6&|$&1=JM zVJWVp?`;|^jDay*wvH#{dW(7;gu_C1M~`p(|84E+cH1_xu&(nI>}CzPSV^&+G)=t- zx~`KJ1{x=bonnDDFldR6SWA>vq#S#TK1eTmx6hCl$cycqznL?`Aw?z)5ZETq84k(e z%$f7^eJ+0I!KDQiHKDIQR#g*Vh;w{j`>w)fRUED1lwT4Q2t_O;zYC295^dQZx+U?G zZWvsfqKDTrJIUi0uO2`$81n;A?SZa|q1+;42~r6Rdn@qyA;PE2gTZhGtlTxC)YRqU z9KMI$!O|=fHX=~t3-iqY_L#WZnBY8>;kdH_Jqs*D;I@VbA=dCe0V%zj%n0>bD($f~ z<=tfdHdQ=`nF|9ZIs@v0#;ir&-lc8_i&~N#%B9?o>8Qp(*t!$8RV-BP?J#q(V1|}; zF4qM(3rK^U;T{w_43ClrIvTk7wCg+njh*5aviZq1E6h;okin*v8k>B4xnm|I=5@x z%^=y(L4z7ga*|Az1#Dq2uGZIdm#OPk^$1o(mGD zm+mTnyZD{Wjb(ZM{QUKiU)R#=m&vD)V`5DlVNH8-Y#GTShL}sMNHHA^~NDpvxgE~NoGDvR_O{2!u55wDTf$lvojomt0q@V3~LXT>lJR#e!+wV zsv@AP62~zR=G^7PX?~a-KPWGnQx>(+%JSzADV;8WMH8Iz}{d*9OgFjjvTIB zt9*lT>puUz+r5Vapf*CQ)9eEtoXfgS9~-{U8w6P&lSTc&)fdh~NdwO*y#WNBV}y+%sB>8T|%VqH$Wj;}??7ZFw9P%cYcNxV;H; zkMpfF5Vf1l%A_#pOO2i&| zr=~Tq^RDpVV)#y>X0_-LSh0s)qZFf09HH_xHwC?V-a*I!SQZ0~#FUAb96Y%Z&U2dO zQk)cQg*)b%Nh+#a{4GLf^*MfhWQuScIPBkICSy!hVQwVgcSvD>X;Weaa3LC_a{WX} z1~mwknZqV0tjjIh{w&RG$ud~8Dctu>Ixus>(#-mnV8>X+8XTPoC}5nd<`uqosy5#> z^ZLY$c&wceq7YqJASUjiSu7DAq(E~OUoAYDUzZ#5ezW;a5%6pVi#Tz}iu-%D87n% zn_Qy~QEsR-$|Go2zK#VXXjHLRQAWNU6fW>VX9;rTmpugMnpt>s^siYSC*LWhLO=r= zrI6C7z9n$A^YC3#aoV3>Fxd;cltONq-(>z({`e87(ZVy!Fl#L?6#$Q_UsU8Tk2QWDA?1W9d9AyBw< zYej=jwzX1e-I$4z z9!Pm~Cuc{={vj=hcPp|f@2nf$4)-BhpBwPXKY-W*dXWa#mbes{KPsx$srkgg=Z*O! zj)E5}&6#-PDy}n-f{3YCRRO_oV-S6NkIs930!c3t1Vazr5iwj*rwaWP*N!mkIz>k< zxkVHzAYxPAAuuIaQ5o8=N6%jWsAd|Bu^bkmwH1bxGSyaP46KU4jKY!2AXMlZjd(6U zvnkD|D$tu<+iBJn^0AT|$cxE*GtEXao@nyX^6)C_9~s=z{LhVj+6o)qK+a+3-w z2X;SL=8zYO zW#29pMP1bzHJnuCu|AROt7AuW%m!v+$I)byTNvvc&_*c($Y)qm^e>PhqhT?pV_yZD zwS-L9c}*D06&GC8hg;|YLSUxCbdQ$Gz}V6HD4W6fV_BvI9~bfICJL8=1HG`7j*7N$ z;zi|a-pyCXuSa&H)YPL&7l-YXYQIcaCJ|VoB5l2X1C9sA`2{l(t2e#UXAMCX2sV~k z*Cd;3g*?&y1063^j3S=UlMX`XKb~1=<164JG9jSbbsQSihtvl zZ=o*Y*AqmWIn?B1I=d9CsOi89q$V-g%|OKFTx$D390IZ+MEo0FEAv$wA?? zpAzS}B?+^Dp}y?cd}n6jxeRVOh8h3-=(`hp;+{SO)}dKl;AZQGb3Ygt$h#C)4QxE)--@kCqu(Z?N1M4qJg!p!tqW~-YTC$I&1|~cf%x|zfbQ*yuznQ?M%T7g|(WtOdf@4hYo(I!vs z|2&(&#sACv?e6i*)3ft0lW&{a*pTr!GGb>46Zy%sH_L#GaNNNhCXvf2OC z*ihQ1SXU2gwi;#h>DWlf?#{-aU&EIXOs@5JRbOUYffuug>I-v36u;HL(hfc+3~c_& zY)oRf^CHo0j97@}2q!U8KGjbElcv88Dgb&S5W^^UWHf6gTrQs35xsYh-LL7Eua>Jyc&&=yT(CB&GZtJCu^5As-geVJ zC0~de%!6R?BNS!sVL$p!pgdBFE8}3GCNA-`wl>f{4!m5XW+D3MJlkQgPAhnu>f_1s zkw=w7Wz6iT444xsaeqH(g^e$V&>?xiBn21`p1e4)(4EHja!6cvx_-cYpKhMCs1cBL zCEFqKD1G<+vyt0EUL$*7+ga60^6c1+2sze*l!&n2E=SPo1~U$t=gO&FbU-1!I@wF} zY%y)$l@w5;n!ilR6R#EB+dXxhcg%9v?%K3y?c|t66C^P?^{Z929;r53PWcZN;%jCb zlM(wI)PT5i*0hyhV1QJqrfq;$nS2vJ(@+)i4ZL&=$2?UR=J%)Wy=C3H4wfdRCV)VA zxA28joPUa-;p$zOXSsCcz$y{likz5bYCf{Gbah{;W|nO}$2m|;%4nfWF*IgAZx@5h zIH-c~4XZ4z)F~WE4bimRrJoSK>%d4YH)dJ1n28idsgq%fpw6ZixAt_oxtwQ+vLrd{ zGRm=IV9-7_+n1XI#a>t-M+g&j#AMSR!Vmk%E_w(*>LXkA5dNxm{3a7w+*CjBGFA zNgv^=yKtYEanPsXM}369>hmy+@Kx4beA+{_$Ge^``pEWZxJSEHpN5}wm+Uc)zv(X7 zW2k-esE2I#r;xv2EN(jv%d%Q8i+AaI(NlcC>%-F;{Z+bNu$#PtDrE+=&NJ1V?;>$)o-w^5qalWVF^?$ z1g7G~0|sUOzO%7ReZ(IJey1u)tEYblez8BbY+AWZ2TDO+yppjwaGadR#p3F~^|HM7 zas?45S>u9vO<~<0bRHQMFwPI#Lf97qr3>zJ;2WY8>zj=Qk1Tai9VxsiMgPysOvUPP z(m;rUq#2@doV+QsIN4M*(Har3Dl%!|3$W%DX$ybGA!%kR*-5G7PKdmQ`MayLduklKlnSuTZ>CE|? z)AQ#qj?Q16a%-w{`y=REjjp>UchFIe5S1}op1!!;1LS)drE?O7y3 zBp9UZ;lN-DdDR1o`K5k-(ju@D2X2_*y(!EOZ=73}U76h%;MF%V1)46p;m z;LYCOdH;NGc4tm}CuVl<_41^w@oJs=&%dNjS6$)V={lWNIh}6NYn}eTgY6A;YN$IT zn5@u5VTM8jg-;b$QU8;ru!O?j9k^e#lYy>+!cv`B*FeTy1P3Xsq|j5Lhguh`u#~Zq z)7e00s;+g}pTW3Ogw*($hfKQ=wT;=7%WksPLS^`U-z2Y^|`G zse!JY!U3k-4^`Mt;R%HeGzZNLbORMMRM=IakHYo}4+y?g*g;_xbLI_FI9TBZg$)&c zQaD6mrCtWQE()jj;{HB`12lpx40MWG-N4=ky3PuRDzs6!x;Os4R5)B=<37llr?8uL zU7@qW+I`VGqc8raD6FgTYsvcNmiRYCVH<^86`Co$ZwW7z`r)s0Kjz2w!=IN5qZC%P zGSDqkcvzv2W^R82-3^5&75XWRv^LPyQ25W9I969qsT9$*9zYzoDy*vT^Z@L-r?9BP zp9=p|XgJV7S5aZffyAYO!X^s)55ztng+mn{RcNKKj16%ZVuM|4Y~ZEQAOoGX!a0M8 z|4qTdwu)zkrncnCB3pQRq_C~RT6X9etgwf|6?X7@OJR8xpW=hztByVSG|C=3;uM-I z%&}*F3kT$nSJ+75DTRF%W;r0Yv7>>mx56=w@Vv(nK0Z2Pe_1C3-BN{<6b5U2I-xJf z89bw~xx##B{A}dH_319e@30GY{B}WZCs*uqbH)A`SM)zt=%ui(8~M1{jr_Re#=PHd z@YQ_?dgd!!qs46qdc21k==vx;Ciq*SyFzn!16>Qn*CuzaUms?mo1n1VaP)=@CvF!7 z3x-oaT}K$`rYM{|0z00Kz_0Qnxo@wqyO#GOsn6t**!^cD^E-|rU%f_gKXw#xO&>*^ zi+ON=pa*j1C~T%M(F1>TJQq~Z-sRfE}u#tJTjGjnmLs?>83HS z(=@IR6$}&Hsj!~H8-iaHmQq-8I`SGSY^wREaF53Gboj6DgI$gaTWS5t2Y*iZkQbRg z)Mp7_16@rm4!-O&4hm~)cKgzg7WxDJ-k?4L{^;Q&>b{ zg2KXDKNh^?oK`?id~`NMC`8TdC~26oMw0guOL zVAsPL_*r@;@+}k^X@1Q_&lH8l6hw>x8Iv6u45SXS_pcCaeYo0yepAe_Bx5gyrM2~Q z$k(_z=-(yta_3MNx^Q(aQ1xFaoW6Bnu7R$a*4O3|=Q0uS)ir{A@{S-smqxH39E~8a zYDbbErjg{We*gS^%>mS3s zNiodZrLeW)?S;a|N?-Yn*x4f%e^*0IhZ=GB} zyO+L^wU@lFun)i5@8i1XKJ>5MM_h00W1Yc%tko3<($SZOf>~7P}Oa8Brb1i68Nn~tDA z=?L?m96|2yBk)%HD1FT0C~_SXR?&DnN_^HFrLOlL#g5FQ)XmqU^y6a37&kvgyey8< z|3)3-zTYwOC;AxuKKU4S{yT=>9gf4_*yH#SbDVfxI*$H~UcerMB=j^+ zVxCJ9a($Did4BrMR_)#u}{?$B%yfGDYNJ0Pj6ymiY1-;u+kaI!qzfGaui(P{6 z7MGYm;1cyP_7ZlkyhNTQTq3`oUn0(>FSEYSW#o>#j6X|deCRUsA6({rRiRYkSUi=u znWeJdk5A>izbTb-)6P`ldoY#v9B*X)msI$ub_MTFu5kb1733ORr7v{4 z%KcGSiR*%^tUrB~y8U<+yK7&=zFyam<97`nVy@9QE-UP>9C>n$ylIj~ya%Qcw-sru zyP78ZNSf>;cX%Ehe24cI@pp)a?k>F6xQm=#cZoyfUFvPSj4$3Le_q@rZbtX8x4uF* zb)M*Z55D5=b3fxg>+WLt)K#rV z@ZI?ladvq`J_SAE`Rwo`_&EEB`gr{aJ!Kx_N2ABosnuhy4|zT!XXtf%hJSv~m>2sDo=!cZex5!ff6Hefw@ViB@ytShL>B&S%wm3G z7WRM7LVtzl$hUaTd!C8UnZM^b@w@(IDL?DwNJ#;{1eYv4xiA!>l62{ z2!8s+zEbfse%OEJeB>{9=ri|oK1<*FLSFa(Lf(3P!Jc_v;Q7E8_&N85I{5yDd}{g? zKP|q(|AepP(Xy}X4@YEt>nr`{>sRDg|3;j<3J(4TuU_BSUv_>&Z|*nb|M^Cq)&Gv% z&fg`!zvKU8g@rV|-`RhozRPpMcjA`xUF!BbepL8DURnQOKM47Oox6YV9_6}Vrr>MA zZ-NGS%rBXT9c}WcL+d>3@ya8w7Utn^QXcu8m52R5WnAGW{x|;#pS^$5N8NuScg9cp z5cGpvN!PP5cFKk-x~d1HaJo>=*X^{DuB1`CM-wx-)XL3G$@~y0^@S8el@tgb~@f&-W{w8m?{bpU-Z{+>>&3n2!fAFW( zAM(#p#{Pe(mkodL@9`hj7y65zP5%-%hrie{?=N|L^e=h&`7d%B{^S0DfArTGf=B)# z|AX9bS%5sZ0?t263aF1u1=w$(Gt|p#Dd?b3tIq(1nteMJYWi<0)OasxV5rZx#tJo_ z-4tr_0}WVzK%o}@dj_ogqEO45R)&W9zHVd4{1FPZIImKunnJU!c7OGIohXcmQOEG4CjzX>9RxmNt zWf-dZGvWTf!mO)T#897igNtxIOre%{I}~d1zFCBM`7&-&6n`BArx%5{6$-Vu>@AAk zT!mU*RV-$xkDHZ3ZNCdI#=5l%wfZ_)4F5jKxcYzSb5N+&)13d9AEQt^FP#y*rcleP z#|pJPHYjeW&+{t9;ib7k?emU_#qlqpIB|I|<2oe__4Q(>Q0rUsN-#e~q4qwhVo5{& zd1hou{EjWj{HrD5->?*ZwkpMa*HZW!u2Ac{CraVhlTzeUvC{a}y)=0}pgF zd+lW$Q4YQjm&32CGX7o;J4%*^=S~XspX-+=PdycCeSNkP&;G%G<7N;ukQnf1a>8()v{C`wc z_&KIfdoTQ?DthZwGt{5+ZL7h{ifY(>xf=JsE7U$;uV39z|2{psI(!+|fR8#g7gs(pewfD9yYf(=#YLPed zYr(^zTEy|GLhbY8O0}sgkJ|XTRq(Y!t?xFiW2k?A^r!Pj8eL%(Z1_?%sj>$_!qw;q1~RjBQ+wd>Oty45Ey-Rg6FT7B|!aeeyI zmipvbLVe=;MCKbdU|h8U_VjFke2)h37|{UU_B9|5cN!q)Qv>vtX-NLJZpi!rg3}w) z*VoDTbVJr>$^3r}(OExn$cHhHbei3X7tH>&B$k6bFfNt>}cB@-W+A@+Z?;1o6}!TG{^3%&GF+) zbL3WQ0S{eTFyE~O`ezF6YC#@k$h@yD$iwn2;k{2w_Kl$}kvq91af)t99vyATzJ8@8 z`{<*V#4o2Mb!5~ExgA=Oe@?CNYicX_TF^>(YDJxWZ-qaFT1y_Z#*enG;mfu)ek^GX z5Buc)Eg64kP5jHW0ow^W3i`JpZfo1%PjVaT^FtffH)=~>^l!`jv2Edfep~$9)fT(X zv?Y)3w1uCaZHeE1?U3KG9dbvt!{7DokbATp@@}^yFFv_Gg-c7WF<9guUr19AG;0lg+2vA;n_^!Dfo|KmDhZ>&P? ze3&6vt`qVGcEX-e!JVCud#e-cvOA%_R%i6~?Tp<%o#A6=XXM;f*iStd7Vd&Swp|T% zxmrGUB|pY=gV)*J*x$BygQthxh=)OUmAA&~T-Kejy_wX58F?0MM*f~MgQs_9&07b?`=OP%fuuPHLtSu(G2$xWIUnsBWT+dZy$2mc-u1I(-DF$r+h&XX$8E`nR9pPdwodeWJN5=SweF z?A$B((UrV!>qb7iyPc<(qw>=?qjc|+v6cL;vn8$zCB z55cceL*b>}P~zk?6h3^0GJpF}J$LjJxU;VD zFzmJ$3>!wA4h@5sCkmBl-QQuza~sL?Xw*o~pXno+-*6OhupforA)|=nrcv;kIEr)Z zzft&Y;laG|9{4ri1K!REzV)E)DvjpcYdM`C5RDb(Jh%<_c4 zMV|0+z>_?`>xupEJ&ALRG1xtM3_PtLgFn{GIxYI&#YTkQaS?s83HH8GrJzr$X($?Q|KRka4a* z`PX^|^QX-q4>u_sso6OL9$L(VPy3nZoj(&h_6t6mDRBuP4;u$?ezFU|zPSO!B|d<> zd>_EN!hx*o5QzWwfz-cup!9FSJ}Cm~{t&sfTO9)X|$@_Stf?nBQO)emTyP=jmCjJ2VTwZwThig16cs zVBZktdxsFuRUyRlW(aXE8cJX56H2~>g_1|7Ly1>rC~`{8rXD)X=K7@B*tumke%%oK zDOfj*_bLOz;Cpu%ygUda-i7BF>b7h9@fmoQ&q4xPq+&tp?V;=lBoR5AF!G-hj^T>Sk zJe`k!f94y?_ZQLYvH<^r7tlxcFTnoWay>_`S6|4!Yq}8L#w?^hq8DP<&4uu9vl)g}O8G0Hm!w-vP@G^QC^A{{*-i~GDN3x7RF2lbP%UM@vIr@4nhv%Wo z;bYly^zV{+7v=t|<;1DV3eao?bvJee@s3@Af5|J5`)URD6s(XquarKs68Ym-GB123 z@;0u-k7T)?BlAsGF~8L+_QU?G$oEOB(7SjQ`Fwa4yj+&~FXei{D(bYtYVyuvHFA7b zQy0;zvHSXJ?0vr)dy1_w)Y)rwyoUGVbJxh{8EcrAyM}$GXcX8ziaeMcMSqBkqR(bT z@gA{KH0Tmd-mFzPM(dN&_)~c;_H|l|{&8#RgG<-S{w^Ddc z<5gi#wI4TG&-`&Q_`fO!`!2+gPv2tbd-XSvANCul_o*AOXa5G`aeV{!d=;#^k@@Bu z84s6n#75$=btC+z3cggReGjK#Bkz63Z^Ey8o5;5^v4;BZAvKNVdAVII`PM^lYAk$i zi^bl@vD8cPIO?oJ9QF=~L*9fq_y~_f&(=8RKZ_%uif$(E?KZ>9xXswTW;1=~%x30& z*-YQ5zJ)$)wT1d0A{em+yAEwZ-rFtmo^mVpm~BPx@U8GOPp)s@N?ek+QWu}MlJDiW zF>bky`F7j5K6#s*FSd~f`?sOz>Ne!R-^Tt^aXa%Ix8r}ncI2$vjvptt6VF%M$>aZa z5Whw{=%Y4*esX=|4){#o!T$VY2kWcs#DCMB_~E5c`+Rwg;Fg`_(LurYJBd@%UD#_b z=q0#v7w_fccM97tYmY-~Wi;Pai3Efce%3$YZYq_!E7A zbKT_w@KoX;em6Zx-|2Z!-rF9O`Z~z^Z3nUE&O!3!`$0J`9pd_cL)bCt5P7mh@c1F- zKRG1tOAiy*j)$q&;fLk@uHe4I_TMAkTx*WydiASm1*+;Q&7U%Mc$#xyr_?%+HR; z?qBiv_g?~b)Jb66IRQB~3FO6?1o+yJ!1~Jx$bTsKDFORT&SF>Nv*@!tOW*J~EB)du zd@MdIpX;2(j;m+U`&h1jJqtgD&(Z(tpF>{HbL73-IquIoNBq{G!~Vo`@SlE;KJxP% z`PVfOIo65X_e>;@A`&G}1rH~}`^`l9!H-0q!!rwjNKc!9Vry+EFxl>4tQuwNBVl5={EJ~60PICQP3i6($5XaB5zQiT^ZG%hLYkvv-!Iz}ZU&7z`OXS~+ zOZZdrGIE<=mb|#kb+^mZ|BTDrdYx4mmgE`ztr$x%*A#yWGUifSa6$j^1Ry{dg0*Yu#dOaf|WvTgZvJ zML$cuMIHRRMW1YOoB1BM(ZBLGd|kXv9(}w`|1F;efA!OlYo11&Jk#K5QJUiB^=#ISiyd&rRJII@Q2mPyMUdkQTW!xc-`3i?==YYHLKl?8J#NB1y{kyV1 z-o?&}_lR4&dyGfkW8JKK#BJj}>fq8n_Ti`Zh+F0R?61AF{Eo&isIMhfsc7^IreWF&MR5uZ|^Mf)ICeyYi8l^V!3}N3w?KG{5uQ# z%0GwaPS4?U^mFoQ?Q{G%_?&oTJV*bp=jg5af;gDIAfCfsFmL$_>_7AZev)3u=NK>G z@%;`V zS-fW6$k*6Ca;;P1jW@;#6@%)j*pIp5`e z`M2=Z@vVFw@|Jx%>Mi!{d5iwkx3Yh}#lDj7h*yJmj5`V1ypzu*-r=Y3J9t~5Q2V`s z%kSXzj^NXG(nsFO_iA$RuTKu~^Usm7|5AZYggM9ByaQ6rL z@|_RxlJfyS3_pSmK4NFTkI3=)h#kv5irpWH!}E{W^Fz?^6W2?AVqM)&tn2xSe3|lz zd<>EM+hqRvPsHQiC;WK#2|YzWGr!4a@?+3v;_UMozcziQADsG(-LF5xOR+E5-}MW5 zK1RktUwEG0sZjg(a&N!L{`*DVvwfBKY+sRY^_BY`UztDeEB$22SL{prN?yE>>*c@6 zx^J@X8-C7{@z!tHnfeVqx!>fx_Z|D1f5$(U@0=UveCIvOsqf@f%6EAW^quoe#UFkaOw}_}uXW9#dqT`-6SqzdYnv*WcLV{~Nobe&g@y-|+k4H{au|{|C9= zf4IN=4}K;8;k{z+A9!i}SKf#HmG@zP<$dB`_UAKy<-GEj^=1EYzUcCgyqxk6IkErf zhbR6q|K&gOp?HD37c7wXf(7!uy#lHK0{BWSAYUIA5Z4cKy}Zsy&vz?@8b78o9;#3~ z&w4A=e{Vsd{(B1wHU6>`YI&QlP~UeAjP(7Xqe6{W8w1u&R;ckAYQX$hg_?b*6>9#y zko)Bfk=st8mL~%QrzotU|91mMdjAhA)bjDE;6H_$|22%T&rG4lmzNQC%~q)Y-nS8U zr5T~`s}cT|Gd9xKVQWE8g<8I?Q>gKGU7;42?}F7$SZ`s%JP(Chyw@ny`gfWMew8YO z-KK@`!(E}q_v}L08B+-RQVPM_n?lIb6*ki6b-TjM^Hiwi&C zc&!-n{t34FkNA%GkNflg6T1~^_4E8c_^4bQ?5~dbRvNymlrhrx2XlqmzT;a4xm(KM-wnBM zTo&wH79PFJa(_cv;(4bm`BAK#k-pFMD2G2G3iY2eltcbog<5~AR386_mnRQn$`jwy z<*`4zJiHaJfZiq*kndiB>&q$-?|l`ho0~HJRDrrHTakHfD#E8tMe29D;G&AG+g6cy zq*SCX-&Q0}x=Kd+eYUznZ69wdXjzH+8d{0E2&zQiSXBwV`(=E+5^;Gg<1&@;ubD#a z^El_q$lF|5`c`H1XH_P@e#-T7RmjgCRj_w-73`f`1v_^NUKD&*g}(Tw3jM8PRpwh( zB@SMKo2$}yG8Jm?vx-(D9{m(*-}9ea4Lh$@qfRSThkuvq^tpxAiQCEQ=)12_>))ko z5Wjjgu-{5>dJX1pP^j&{XB29mA6~D)y7o2k-?AqB4y%d3vuZMblZ+45q@ShLB%e#x zVqMQ#@Z>1tpjyaTS&O(FsYO1f)gm6owV7YDHhlM~&HWLzspA#3;q$m$PpeJ5jO&0^ z>L913LhU@$uMYk>%Ju0oUM%B1b>J;op>}TkBG(P-BEMQ)>TzIQ?)%myU&8B>hX?Dj z@1@j*-}`lmKJRu&Y@U@_cX; z?3vqyI38^RKWR;n|Gf!$Te2x}tJ9QzW7U*-W18ase8D4vkDFqD;b!DfWx*B-_3w|G zA>XzcevNO2UmKbs|ESEr-HbS9%h;qj^QtP;e_y*fa{4sq{;=loFkNs}bNc16=J1-{ z9QnVSQ#X}cFt2k9_;GE){mFuhTEOqF7U;R#f_#480=b1-a=l4Q_~_M=I`fq4p)Jv~ zwk7@JltS&f^=nJyv}uKZ)~(R*B^cU@xU6XfkI8cVek=NXZY%sL(;7ZIw5Dz>TBFy# zHFkTqCLU3(sk8HP{e5ftP31P|Y1)SCu5GY0ybb;5tYCf{>ZfB{=1*@+{%>weKBcv# zkN#@QKH0k+`4p(oMf1NM_J3)Io+9my^zYBwwP(Md*`D|vZBJdKwnu)k4)E8t19|AC zQ2YMkM1|V>tK%K$55GFVf18fTcj$=z5E*ai$o8tNFzdp+{$1e1xeI#yyWmGm7vh`Pg?z{r%$M~=x?*S9u8ivow(N?Y z&RyvTy}M$!zg&-ybt}4}cWYO8xY(7ve9@Ku_N^=WYji`eRX652cf%jQZuq;f8~rX$ z<|TB4->coI!w=oysZ@9Js9|^F{C#pO49qA6Q$=%sE9?1A#cl4C$ zft*@BIL~zM0iU)#@YlTu@$~M2+@K!BIl2dS9q&OtruQIU3-^?I?@535?1}spJ<+?T zC-$C|d3Spfue_e{QQcJP-;}YnDSnJF#ja_l*coC9k5Q)BdEAt~mn`!#WPP@bf1BcO z5i{(nXof!)X81AOjQ$jAM!v2$BkxnqurtSu^KMCV^!7HV4|)iOniJ;@=EzGmhnIKe z$gA25Kl}Bs`Iz=Up%O{@V+CN?2fbV+(leXh9wfun_$g$P1P0D=e^Y zmt4PW!FfB=f;_F;8~b|ohA$66|K99l3wz`Dk>2opuQz%8Ue;CY!?;r)=8sV5sQ-Oz zBmL)GPx`=Dy}sDjw=Z?*(HDOr`x4*HeUTU67kQ8SqOXu8yw$XX9~(>V&#>fvoF#qs zlqLP+jV1Y5uAlU|e)KVieq5j1PoA&)5%08q$onAoD_L>9gBA1atYm+(g3q;9@Nv)z zUem15``L=PRqu};kiTXF$g7D1$cyy@@Z-<`?6^Jv9(4nm-+CZ+xew&|Z~j2)^};~*wZ8+A z*U1L{JZqi1TO{Tb?rlZP_L{1M(9b;Om}T ze<$;5IO5kJM|hm!NIh&3OmHMG(jD2q-#DVDwi7(rIbmO*6Y`cjan4AR>+hVfPv?yM z+RpM^AmdTa@V3~Q{&3Nm{J8Io9wQg}TzePt-OB|Y=DU!OTV2qX?7}{o>q39};XQL7G8H!zX-N~aq?(jI$o&1e*r;d-w{kQJCA2JyRFI|Vpdxc@h3mV4#&BO33 zUC>}SdYTRAzRhst%@N!*9DC0Ur*1Q4zTpVs+h7EF=`@16oFLX#&LhZIO==MIO4K$9DOo= z9P#}=j<`1*&-`BFkw0`iaq^Mt^TxAov)q3;9z9}RPnsS8~I{#Onl-`fYUkGck+ z-y;A!R|K$rpIpBaK)xFWGOiOS=N3VqK>UpkWL`=jcE1WlUx^^>Y7)eK#~|Y5BjdOr z{74K!Z%z>TRwkHz*&-Nu1A?WG29t-&gV~3YgV~4kgIQmA7T97I`C>ndcu$;#-iTT9 zUThX}AJ3wGOhWLdWeD~R4&fXW96}u(3t`@a5abzzvc764a(jis!{ktT9t%Z(YAEYo zgi`m#XS2?3HrHp$c(dS@+4Q?Fv+=K47OCinJZL(H^&{rs z$J#mM%f&h5!}mGVU-NKz{tSoD&~Wy{qv7zJ9L~P_Je)fF8IHVCbIG5sb6GcBaOGU; z=h9sE=ghhI^KLHum5qSk4iWI<8Ub%}<@(_W^83DAe-nXy6(Y%_j*-|iIFkAs7s>nx z!RScxe0L=Ib0Ly_^jjoxC_j(mAJ{gZe)3GP#sccaZ2|py{sMU2vw-K5%M0+U&_ek@2^C{O`I5-Yplwuk#|-&soH}ZHt(nxCpzl7YVi5WUO1tIk@^#)-_$q zecPqznYL8k_bw&>cFFa`rRdFEDxa?|<$12vGUj($M%*2i!JE%A;ug7#dWl&^o}XC; zFV~jQk6$k%uS+gxe!J!5Q@`ct9kHDG0n4#}wTutRylcym`*Jz?_1-KaTp|0%3hXYrQr=&$WPj}?V0%y^4O+cs2dgeKmYVuBM;tT}_;xt|pE@ zR>Mo>HFEx518+`ixIS$S@mjEkxa?SiJt=FD`*02X=%V1iP89jlEsFJ4QS`HsQP>?F z#rz{t^ufDP_**QR`m7yIoezm--ppwHTo;X>N21YlDH{1%(b)A%u<}~`>a>=5u4}nI zeJyfV2p(KZU%0WBy3nm-UGsJLZ?lf`jMqBi<0rUw9d^X8!>?QGu)pwn_^Yv=y0uu3 zo@wi`W0~CFy&nE=t;ep{>*1wP4A<+#U`OW|`i)zR^qCm+$HkBb7h}lVbeUfeLtfU| zfPLm0(C4^;cm-}i{<00s+p&TEcxeOm@NEP6X|j=VrHzam%ebqIt!3;k<4GH_Cv+om zU%8RIj}ts7^Uulnmf%yl{z0%nu=FPG*V#m$Y`ux=W}DDwCu0v8`v^t|M$7%(GCm`C zUGV89`1vgIO=6i}L9k&g^E$KdHzKWx7mDvpT+AQB=*i5}I+Dx9G z+f4ubyjkjf3whOg3-vu<3-iWrAwSk{p}x;-LGQCI*k5cbd01yF_1SwXdF;8BdZJh#|RK6`G*&w%Z6uG!AI zOWS3i*iIdm+`&HIV+Z;IcEHo#9q{*f2Ys{XPU^*aCv`P-C;e#cPWk+DC;H#-H8TZ=_@7}wK|9pkJ4OAQ2ja_~Af>ZZ$ zj@+P7`?Hi=6lSac*`_c~;iCQAZ+VbD)BYg+$mSq+kCt)pLF`(oFhi}|t#G-qiq~PD zV=A67(*Lg5FooLR589(p`<+Omlkhj_Bs?uT$$od^BIqIrB0r8K!N-Rr-Y<2yXr%wWw!n+%OS_1j^^=WsXxKBIB zr5NcVv~!5UH=4XlM!Hb#Jam~nyLXwsk*6?F`~E^Iag0o*Za1Wo=ciJ6K75wSe)TSu zIR8kceoI^-FWX+>z557-W3~7y)c(C~xvRYY7<+Veu1 zd@h}ao?mI$X?}-#+jWP}kO5~niv$dC34*Jvo0O?@nEL03TH{kmIIshSu*gSl=|0 zbzYhHzatZVzGh;-^+O}wLv4S22oJ%J_+0*~VEM;JI&ZE2D;%cyy7CzRnmjeq&D8cg zg|=G0J%umRXJFVf>LyvC_V*?Yvd|luMO{73;(nFq^dZORoWIsR$L?D)F8u;K`o5qJ zmcHQryBGN1^d)j;zN8-)+D%ZwMN`!~Tv6wZGfyt#G*h-#1X_ zjdRG$EjjS=R-yKHYRz-0^R!&@y5W2LnfIRjKKUNLEj|$MRUgQQoDamM)JG%z?+Lqo z#LsIVvA^0U@^RcJ<}dt2{0}IM(as&86@Mzen-zA}{vO>Ic&+i>NdI>`UB9zW4*O32 zFBClbUA}Mio&H(;2k+6$e~`~}e{elP@QYk;lm~Ca^XLaF@;GNC=J6ilRvvj<^rw;T zsuusB@L%>9b`AK&c-}Aey9>WK|K=(`Skm(`Sh!s`Q%kjKK8c%4WBc9 zW8cl+*i-lqeXi0U_VX5hc)v9856_QIg2Vp6!f70Kl?BK)%-_YyZvMR`hUdt%0KeILIHK=sL)9Ny>$GIDc~HKTtL6QTOiLP1@!UC zDw_I#&#O@X{d|S`e|Mlzn;)%E^E*MI*3Yji)bjb8!qWQRtvBZHawydQKA=MV-(ys$ z?JpS$^`G|`vd+ek`(X;Tcpori{d0xdK3&epSnr>y5%MP~)aollq5j`3D%9QwKUJvz zJyL~QUoUKI%)e(>sO{gw1#c9DVqAAssO9f?g<77hDh40diox&OV)$9{KlFB1 zsO{I|{=>f@h1xm&q(UuUuPD^=KTYOUD-NHn6rNV~->*3FG%97x?!EuE@+nebNoDs*g|-SWRYG6os>ZtG+CEnm-VCdOU8`|_ zS~YmxRt-OHDeR~U>W{)_+WVYZ#`=A~d~M<#R2zNq3STQd?`y-yy?Vy_K3}pv^1bTg z|7L~Sc_XVn{Pb>MtlytcD0I~SzPGWy&LbMa+ogucd)E-V>NPS}HKFQAVO9O_VH5WU z3LEKv7aOe63|{*v)Xodu&8VZ}&A9(huwip!eSflP&b*-J%u7)?Tk%}7g|RMH`L(Pi zcD89l9Cj=8)#_WJb`BfV)>yw!ZB^){|NUm-;?a&eT&YkyCmXlNPp|g)nW#|fTLvBQ zvv&vh4OTcz`T0uWRi(do7h~NlZU661{VnZIymA#<>%aenz6m|ZpY=VEe_Nr}|I79? z*8l#IRZr^uSWoi&twOC|{_RPhFffIerl$Bg*pxb&ZAu)sn8NErxo&7?tbZ=6uTa}Z z`kRs8W6Y?N&1UGkpiny>{4m4r#^&V15Od_MGbi89o0CuP&6!`bm$Cji%~qlQ?_u?# zZv`sU_Nh$@wSDhJFZ`@wVa&fzwm|+03*_ClK%QZ5>b!k#)&gp754@TY4Z`qK!( zS$(iCrVspH?jw2B2i_a@HP%0GIQ2!}^1kqOp)d3D`_d=tTEg3KOY(cRCHc42lKM@v z#Eu&MK<9q!N6Y)c@8N#Pz0r^O6tbcpcCf;~K34GVZv}5ra(%BA``i;N`r2O^SL_dV z=#PAd{@kC^pE%9$53lk4;qz;M_-$)V|CwS<{+_Vre!eyRyvqQ1>py@#F>V0<>>Pl+ z=L3jem4VpjK9KoK2hs=k4P?JdAILuZaUgYG-Uhzg*udXN8~6*if%n5UTgRQSZ<5m8Mf#vXNO%K?cmGC4!vG>7Bc-~<2of#~7J6Q78Uii1CKTNTw-=)~o=RVt0=fxeUCl?3&S>%A7 z@ear{c7(s4j`%;$5xbW-QtyWxu`}5bJ4-rYzm*gD9iUKqPqEzzy@^i5@1e}A=FIv5 z&cuDSGx_|$89VZwv7?s@`5xrLx#E-yeim}Y{vNLQH`Nt6F|PE#r>@Ma>;@l$+=%}K zH~3rT27gIz*puUiAJvCohw~8XW#$m-VBHY<#pxlee=>yiWro6Ym!a6PbSQS69?H58 zL(yB(oqB8MPM%G0hu5`o{hW;R1ZxbVpIHo}F1?1qXMjTOJ=!XT+VlU8Vbtf@VXV6| z486aGVQ-b;*xO?`ahWolc*hJ!{k;@9G=luzF@k>lXassHk3?Qi zK`+5IBbk3eq4vHiZzOs9SMIkPg`VLGwexxdBw-BwAky1d|9jB~z3Dqf6X`pa6VW?!BG->9oUiTQ6WM3OCXr81C!t3- z*;xOcqUmJh227@JY?(|vE=(p5pHHUljHeLKMhYLO^Mv&j_^3aPcz8|Yyt-@}^Ao0V z|JgM1zu|P|^_osSj+>6WIn#;Dj_K&VBiFx9$FE90)RUDD@elK%KcDr%-oHMa=d1g| z+elyPBHEWcOZ4S@{K=R3hJNU&+KkIw=)92j< z1O3V8wf@p?{PFvtKhFVq{^;*FgS;3!1O2OK;BUeVc*vRok0oZpU)Pz~A3Bq~TQQTo z%a{qz6$8lkE&=rONdf4M2*8fb0pwXi0DT}gK>9`?>$?PUeP|%hEwcmh<5nR1RG!Q$ z9|Z56g3#lqPCIm3o>>9wZ1FMUX#M5!mG)K|XGbz>l*L@bNx^I9H0KADBk6 zeoiEDO^u{JvgLlodD!bVkLwZh;Nkc@{P{Z%zI)84{{+q_emCaBd-iCl+8|>H_@ux&R*PEF^CB3&}&jh3HFOh(4o5#`^bcPK)s4_#*87vxxo0 zY%%?6`eN#N^{uwS>7`K_07j`d&4x(f=IsJ{1o zDfJe<9J@~~=lLXOIdYn>z;E{z#BbFK&im&TYVV8FR}i<(E73n(aLG#YDq$sgQf3wV zMR&oFRrq~j74wU%hQCg$iNEJ+*3Dhb`RL$k;&yR0bz{7Sy6n3KyGE=bKNhb+-Z8oV zat-qStzn<48Abj&MbZBP1Xo58m%UM(qY9!p7xarp{*Y+q&5I`9anZ#0YBYWPLp1Lz znyzIZZo8KFbz6&{?rY(5%UbI6u3T@j4!b6=BaS=PaXz^&_*n40;9tQK>*1@$dg{%3 zJ^p*G$G#QoksmMj4P&skP7Hc_$B^e z9u3<--Ynk$Pe~hC_eri7*+|^FZbVPOMtE7i5k8M>MBlZI)LFJd?emy=o5=T8o9O%F zH=!?l6Ly@~guh=l(Z{RC(zje=IcF@5MgP`V*4>XqUeP%CvxsB8eH{J-#&JI;j`-Y< zV;^X?89Bo@(`T1&rjD-2xWX1={rh^GE$rJdTUeL11v@KjrO(<5#%$$%)tjxX@4Ah8 zo4yUXN4GJrU>obLx1&E|J9&0;J9d8C4qq*I(AOvIz>gz4;QQ_l=9k}zeA}J$pXED= z)6Jde`?Hh0u-rwyd+lO=@GkbHv%AQr*Sn~rGP}{&W;f@AnY-z;QM;L+v>RS?ceAei z9{lLJ2YYAk!T#fWkn?E|c6Hv1U4DD9f6HF_(hG&!d*aIbjCJbhs%x|leis~qm$QdN z&LMf9c$j(`cNl(S57RF)2b+#?emrvo`TrfoZquXm<$$C3d-f=P zK03-d*W?)aHRu@6Q(?!j>*g`pzmLO1jpOt&%j4wdkmIuNA7}qsdz`*{{5bpWHHF&e zdv#C1SHuZ;N<2Y){++;Y)04*f&x0aQGCy0PtM;6HO5S^&q96V|MSeCqjXdwu^!4qh z@$>O%?pHn|{r(JouM&K41|F-&^IR}2p1e60Pd|MSPrm($r@wSgU_2}Vx$6?>t4|ZK zyYX3Yir`5>-8t;(cMiRC&T;+HIru7-2)~^ZiI-O*^G+ucpMQzOqxyOJ#-Q`e_c~8s ziaAeQj-JQH_k@1vg)ypC(?QJ_{vb&)_8D7nnr8Mkm4F^(5pN zUnFj(7wId(7vUxCB6gNcX1;kc`7Me!`kv7x`e2t! z*fm3;_IYTW!d3d;31z?7a+&k-ZH3zB)juxFd!AI{yEK*Y?Nsu~=nChTu~)F?_!aW+ zhr(!WzrJd$Td47PmHm3?HO>Q(*BI}YamF>`q`OXi^}dduGh}@1I`#YZI{K^JfG6u4 z^o7V9%s+aAI{tivI%#r~^H|7D`p&YO$T@ivf8N}r9-7`Fe&M&srz^Lp-?Fzkj|{yH z|C?@euF1Vk{R~Xwc{46e>Ml+C!X54h+#!xP?hqe?yXbFym$-}&Tyq!uuH7a7zTGAN zO5Y>@+TG*&fP3tdeexmrKJ$0o$DRzCS0tUh z=#Wmm4ol};5S9+#ap~mYopj_BdqCgn_(0ybK0xoR2iUj%0r_m@e0iAAy}8u`hTFZhHhzPaaWcB_0zm%g5wH@MG+|@|gP0eGG4Po^Wn4dxAf1 zPvCFX6Z+q=C)oY)34Q<16YMShl>F)T6ubSN!t?s4_?!F`dtM2ae?}j(ct*Yqd&c_N z&**3I&xp(2XYlj+8FK4n5x2fs?CYbmIQRHxVRvK}^&FQ)USwsluGn+zZuOjgV*8xu zho#Tix9&ejZ_ab{8oj{Z+ApZ@zAxZo!3*NM{{?dIy&%u>1)IMFhY2ndyzr7d`t}mO z8@$2}w^#7A_7(9+dIg`aULn79Hhy-<#;$(Z==aQKUtN?XKHlIB_3rV8zOhE3_C2kPH{?&-xA^b5VIQco%AbsNht#P`aVk(4q}B6JaLZ5neC=O+KIZa^c^7|C zCpo{U!~gQh^QQUoK1#-8Wjr?@zqTsuYNVbA^U14P|FFm5ANPI#5vODS$oES!E?FS? zUBGim-vavI-~#lFFCgzC3#g-Y1=M>|0sN*HPyaE(z zyc|=g|D9lknw_-`O!WEWs8Gw-nF=*~&MMUM`lUks=U4{Ft!rqa*WW>*#+Q{sEB){3 zF+QzO<2B0=c~y)|^z}SUp}rp})b}HW`p+X2YWr|WV-vkU{S|8YGDo5QJgQL3yMGFc zsJJ&bG12E~hoUC>&tXH0;^z;ATK?55hJEe|^?x5&p_b+2G%FIAFpXN6i_k5H)P|5Syw^uH@-!oMdgi9d#=O!WEFr4;sBE7bCF zaw+1wM4^^HrxofyrzwS>`EtEZY5X@WjeSm~(KEF)aavxQdB;l=ue+tu_fMhz-yfDS z(f1{bGTe_*sP&f=!Td7#+p;WUhqCZBPodW56UxFwt>F9*ND<?Joo#RXMI3<^dyugelHYi=gC49O!Vh>M}^w^Eqj)-ln)$L?2$d9iiy>uw$5 z@wE{u6^rcisH*{^V`mKSx&!%g+DE2SR(=GG(MTh}+ypM$5>r~e$O58tWvng6Fg z`sy~I512Q=pG6I*tE>j-t=bU#oEoxzfx>mFKPNOKe_Wc9-wPCKeR^k8>MFGYC3^P?rnf|&VJmoP-U_>Cw}P+KR`i+jtxfdb z)9K!tz8T$`IHa{kU&S_z9owL1Z5wz@RH&U>zqWxFv$n_|)fT&Vw-+tTXxU(HTD1 zcE-*Vg2r9QFS{=2S=j}DF3I(Lh1&bs?p@Khv@5(^@5(+|4}}x{mKfoffem-Zd?Vb6*Sm8*71G8!gC_6Bfj&zycmR^k%+CZ}K2q z@L+G`JrXqTLw+~!L;X4T!TybX;OBWC?5*Dy|Ht;Fj<@uMw+DU6tBRKN7c)!vm~Bbi z;w`c3nDBKY4JsKl4jiV~>qB z=b|~**mKz$KEGH?zaKzc?FNu93kSf{?E&~vFo6EoV<2@fbRd0V&OqX~V<2{%8c6(K z4kSK>ZP<5e*x;9&4gFxb4eKA-z?*ImdbkY==>4T+D4yGP&4JO`3_SA7Rd+e~X$FDGZ_}yoZ z{HONhVO0n6V2lHDb~;e!4;`?llp|>7Nc~K8gujK3@O0RbbICnN_c6g6PMrH*I}z7>C+e-KGxBVmv2&s`*AFApl_0}?;<%+%QU6FU(6}}(4$~rglu%#RJy13!* zJU9H&^|O z4?G?!=l!9?tGPS!-QAfN$Qd<-)4$n!$$nNWV%KkYX`__&pUU$Z$r=k~p_VfoxvHCp{B+^FU6L=*kLN2)Q2d<#>k zeO|L^68qNvN!WFE5`E_LB>H5V$<*=W$;5H@Wa{YYWb!3%GWu#vVcca3{0*N%eQuw^ zKJ;b^`+NDR^v5w%nZJ1|ee&{D>Y?N`^x98@|K-#0^MK&fY3vuJrX$B@I&obvow`3f z9X=jUM{h+R;?>KCeQt^mJRkMJ-&a1Yuk1^HnfX$;qkWMV;ftI@f{%Ua`$hds^q=RL z`B4v>{J4M3k39P6$9`DXpE_{!$Bsq*#P75}anAF{uQoHlku#{P@&52zIU!JSmtNLVf&^ag9(D{pSLvq4>Qrl=X)~ z$&b8H{BAs(=eohOnZIu~b#D+x9GZraw`0PH*Pbx!{2fM})R{w`b(w>o-g7ty#?2uP zALh_En}oxsO*r`!8cx3K3n#B0hLhKY=h9!y<`O4A!Gm+@FYo4ZPO2G!yy5@T_8#z2 z7SI29=p+mp9-t-$seH}B7d~Y46>z#4b z$9m(*N6+!p@0Z7O-0mIE@sjU#(y#S8^)2~z+TmAUr#>#ybpPw*^Xu0s_k0tmZ}lfo zE=dz8mzO6{KbKA5_&q*>^^}-MeQY|Bc6ii8w)6Nz*8BHF`YVr3()imXmZwi*eRK8w z>?G<_;mOpCI+Mv)lD@w*neARXnQ}imnR@=sWb*gu6w0~56!P6=3gLZID9_27zghE- zPvJcM(-ih|-Knf^@Kn;DGL>}KO(owarc#~-r?G#drg0wYI*s`$(>RW&PvdwwG>!EB znMOH0GM#D7>C}@>(@B5mboR@F>6Gtoh5JU|3(a7=s?MN3w3tCT`)08IoioVqkr^EC zU(Voocw{E|tU8nO?>Lj=dEiWr#|<+%E`FX#{i;2S<rdr{MsbJZ>j{1KYJOw;r8sHYFlXWD5#`)AU8%4gqv@_$y}f1b~ND6)WQ z`2~!ZHCmwS@C9t=t_8F+R~L}~rxud`+6y@zJ1!*tkcAu<(-#u&+(OFp-bHL*^+oKj z-itVXCoiIWPAnon*A@{zcro=PY%%Rw>|*NAoW-;w`xX=L`^9W`@g=nL(Mu@j7niVK zwk{#xH%isAU$~s@{9rld@Y`}-pRS-hUS7d*y>$iq=OR+sPk(A9^=IfxwrBZDj=u{l$=`je z*sj*A$oI>uD2F|(==XlTiuF`kO+3$Pws+xb&Zp;Bv!9~Y5Wd?QzRy`hd-Bd2j*DN{ zaNSUUEyu@eYbn1YYgzBjwdAwLI=0WTj_cWF>qz&Pb(B~2^?ZL}JZT&|Ka!>91mZ-LA;=iq*HDq z+t+?0;|;HDWIai!DSk+P22NIqWP#C9#;#P=(ksCT6{bKKS1tZ`a>AFb~zHnTs^ zZKmCNWDDgNxrOq}L@M85S+<3K$!1OSZKeLS-O71+&{py{ZY%p|$5yuI{8op+my$Jw^`rAdpX}U+spTHds)w}y<9I}-^+Sp-{Cl0{to-^ zt9NL}Zfbh(KGs`tAN9D2riuF~pI7&BT&&(ly}7uL{QS9(_OIlA$~|&F`^CSX^UCb~ zq;o{`zu(Vsf8PQ6$4w7VZ>AieUT!-;{keXC_!ZtIe8+d0|Ju9Mk8SU=Jm?_pUDboM z_stHnp1ub;KaDs@zhe18>dn4`l+U$;lvn5>zIQ)FyD|9??dh>Y9Iy8trX4ABnC)nN zm~_()Q(of^b9}8jOnDqaD)+QMJxsZNeVG08*J1MCJ>MMBIOBWtKc9Gy`V{dV>+Sy@tnN4>B3KJ_W- zeadyx`y8M9-zWUZKT7jcO3dnd^M z4<~33{y9NCtbdYxrJm$C$UI3twx49XKRd~B6LgC7A34SHhNmd6L`^51(*3DZg#Yps z_4e;ml)L>j`>*?H(s}JP?ZKMUP>vlwp`DuW3CGV@pRnGaJ|X{QKP8^r$ zoa1)*=bX1EeolV&e@?nLK4&{3&XaDv^Q4z~o_6E)^Q?ExdGdYoJmq%J1MqN zyuki?=K}lh_Y1@?{RPKO#21uH^Di{+_XX=)^#$ehV> z{)*$_-LF{B<*&$h$k!^@uQ?8ff6aZdgI{ah;2V~A_(tv4H#*;cLpyTsx6FS=(_Y_l zJiY!c`P}_2^`gjS(rb8`^gNeY--gT7$7`1fSK>R$FZw(7`+)B_-ll#>e_+>lr1Rx> zY;WoB*)I*hr(An}Py7Mj(~i&mp7X=*?g`hN9$`XTwR@V)&N$~)l-+cn_|`+fBl z>dV0^tmnrowA;mg;P`0x1IxSoKs_7w1LZLN2i>3kfqGK z2giP7dxNgBzbanU{=7>4a$lu=UvZW2?_Q;T{C1Ucss9tp(=;9P6Zu)G>8C%j-%I>V zyVdMx=4brOep~)C<$n5S_Rk+bbDY%sh4l~mh4y6QFU0@l7q-95HOj5UHR@Z!HTKW6 zYn030Ym~<)*Qgg2u9J@EI_=Q<>(q-M^}Xt^l#g4}8NafgcYbC0tmW0`kiUr-`So4`o7?I(mV4z<@(4UT$jfDLAYUm zP!HDrLAibL2m9fkn|$wdlYG5$Q}yU3<#F&P<@?J`%HzR5sdtV)^_2ggk{>^dy#6P4v@E^8o$3JYx<$oAw zeBxiyANsHEWByD0_jU1bPlPsw?JXOS1C-q_Js-OFU)pMLn`{c2dUVrvq)up zUeodiixf8OK?9^RUOOWdy?+j=%okHMT~&m1-`4VrMM(Egq++igEXwy9NJah~kc!=U zp(y1%4{4gXRSMTIxG=vj7fia7kcysd4yN4BBNe@REQI;ZHT8y&?%WWz_stOEUqCAB zgZ#w`8+I|a80G0iD*8Q1(~psg{ykZ|u%UN7i?hEMBbD{pw@76@SF;4)CzPQ4&zE33 zo-9eZcPPpF1|k*veGsYGqjM$MpC#{Mzc;>zavgjR3S_cj8xYBKOmKP;LrQX&*P=}Ub8gcyO!p7 z@F5j{ePwC#u>+~hV`oZJU&=qg^4JI1&iDt2zwiOd;mrpKckBU~3F_Y}q%t4xdxGt| z{siepJ;`yM`Xu#Y?33*GZBNo3eEKB$_*wJIJyqE7bDBTJ{!Z6)*;5?n=bj?}rERRg zqK*C1*v9_tX`@~8AZ=p&{aB8RGd8y4M}03{hI$=ZhVAW8hWV*wD9_$Ir6il9O)b` z$98>Rj&dthp7IGV&+?AtS#Ks%iAyXfPrbcdp6#qrfp)8B11=_Cz71*v~ z6*+z@R-}GJSERf%DpC%sD^ma8R=AHUvL9|#q<)4~;`|d|iSyW;N`yOGiTd+*9bZ-^%{})pE&RCVFX=leiO?!S4sY~qG)0Cg<8P+ov zsm$YtkjnXsN}<$?A)##dxKP5K3}rvuV`u-=M=JhQC#3Ry%GGxAS0aq^?-IuTdO3{s zZwaFuz6c||N2=1!b*f6bldG~H_Eu%Te^Zrs_k`1~)(t1${lY1)ap8np6Ha-b3g`Iv zKAiR-Uj*xKhE&$ggCkh~xCrX$fe4PnOZxs-1josvk%f)8L1-lVzrMbALn`aUev!1l z8Ii32l}PfrI+FVK5mNE{{zNMAqwpxE4Wo$PHi~?9(|3=iL!wy!t4PJ~njS^Ie~x1P zg{txW!D^Jl)72=iHr0sdt42A#T8;X+sT%PvS0jHnt8si(tj=~lTb+8|vpVsIR;QfD zS7-n2u1-0BTb+7Pqz3iBO%2+;lp4x!4UVtrTE3$O$HA!@)W^#;Snq>1nIB%0^+(qv zeFsumpTAg>^U%1O)W5kkIled4B>mGhIeveu$?;RB7Uk5V7W22%qTJ8dVtuX<|{G`^VoMzUh9v`etIh@z`e`}M^hw7*v)M5Sg>u`SPQ-|$-u@2!U)nUJ^Qn)>J zs2>*;|HnEU=l|AWztyWtJJ+W!`)_1j^1ZGu?c}Ap)T@wsoEIYN5pF;|%4@o&TkBE3 zPuC-S(fX82xTgK;v)`B0XM2vi>65>7Rs0Q%>G!j+05zw7p2-iIplB2_Ec)g`6ad`=c~Cb$>)bHX}9lhMZIX( ziv5$^O4n`wruCzwp`b}htzBQJx}VxWTbMh`WjNXXWXSd=Y#D?CGPuod(HzzIO$oLBDa z%zmrfnR?i>Gxcba=D*pQJ0uUl)#pf4b0qRO(8&{#~hO z8@f`Sr@B&3#k;W`4Z86?p&RvSYB$Q^LN~VK?{3ta2Hi<_V0ZTGuI`l6Rb6Y_{`{0U&?u5U)tw)kxHEPOU(~=aNKor zu%G5TbiLsq-Rln8+lS(*=e6V6@2+^lE!Ff)JnJixK)tJ)!0|Ca(+LTzZ+!yga4LcI z1t-#O*%Rq!B`0#-`J%pmkjQp@qwkfS)aOP{(jDfcJmxyd-+m|Mf89xYP%w%5R5gis zt&=#OMkNt%RTBH>!z7N2pk&&u2a`!BESde>Aer)Lm&|&-$($D_CbOQU$<)i^NM%3j zpJejWE~T)sZ~HWm%b0z_j&rhqd)mR*`IbRUn={%Q7Zcsju<+zQE1#@THseJ?5d^ zY3Lz-4-e`3Jsdw1J>+kS4J7)RSHV zI9_HAVEOg|^oK4E;P`pkOTEbSlK&B2&btS^gfHmh_zd&0-i|)%oyW)io#3PY^S+Pz zSKiNYALnO#Qv95UHu`Bd-}F(nM_+`ave52 zll*^@$?;loAnj}0fwVs(22!p&2hvV{ja1HcHy=d#%pAn=ds5S)gV|s82eTgkV9H~| zV2uBx zcvw12*8#(H9Wac1{yU8Q)$j$jYt#!IpW9!c|8o8X$~E%E!p7h2biT-WB=tqk8_Qp0 zeP>^!9DaL|?W+C~rab?6nQ<%o zE3~68y+S_Ud4+cB=U1qojfb%f8C-5cewaX1_|h zyI*BLU(xqRU!&Y(UZdPbzQ*>i(DzHPv7ZZ!px)LS!S}u+*shuSeqaRc<3A%P_h&|O zeDoj5{EU&Lw`e5W|ISF(8#Ib?X*f#PADRvu#rCWoMZEV%v7J{&k?$&_DTl73+0L<} zseh+Nv;5|0!dDqXc_fV?{PZzw$9rR_UsuO)TvQxOzT?NTKNpRqzjSUa@d}Nj9@QSl z`Qepu#6O_vU*o9PQRBG|={25sOUBb*{&+m$D!)#DrO)f^mwvA^jy3jm(mnk;_28ii zltb4Er1Re%bX&)bk>fIbYPAOu2QR%zB4SCcRafel(f=Sa6E2+oo{dYd%Hepi{`l*eM)O zi>8pjx2Le)(^~%Z6zbDoQ>gdVr|PHF!q^uKP*rJfX?$M)2iM?b?kkNgjxN55djJng4>)R&9%sCW0w=X#*) ze8TsgPyU9_XMe7mPrZ0&KKt+E`P8%D=d=Gq7LZ=W1>`?&0pW)&V7*foke{^+)Q&8m z9$nG=;Dvmzypa7Ay^#9feIezXwvhAN(uM5LPZo0C$-jv5@34saHe?a&U$KaEPc9(}jTV!iK8v~T7_^w}8?l(}nXm6}XnJ@t>3^}9{S>lY7OZ>yq0=YeJ$nQcP+>5=(Uvp(zTSwA$<>CNBGcnlvkH^v|H|Vl+(&} zq;p~&_2I8|)YtpgQ!k%gPd)0ro^&$T)7~vyPxuS#N%w}nm)OAfavS(wN8j7)d$PVi zzkzh8Y+(Pa*+6^pmZm2a{u_P&Thmf+Fu#JPbv5nq2FsJ*puRt+`4iq?earNHx4xg$ z^gB)SZDjew8~GllX|$$2H?qHc8%ckx!Y|Zxo5CH{@-H{CeSd6JzBeh~oA_Q=-`i>G z+(h{2^nLOs*0*vK$HzOH*#Dnv`lrG@yqWcdY1(8n<=J&J{gnQjseem1vp-L4ra$x3 zX09Vbw=f;Fh2vuX7V6JeTR8qIZl!%o+RAY|dn@(w=vI!OYg?($4{f8K_S(kzVuHRO z-A1_tZ72Lg+c{6v-Oh2>Ydhhd-%fqppy}D|j*}fb*v{W}kbcNc z@>OOh$5Zp2Y`0I}7wjb5`#UMWOFKEg1nr_;$Lyk=^Y5a5uh>Pq_{}bkm#S})pMIJy zdz0(Gi*J&jI=k79LAzPLdN=#+o825=1@_Q?v+v>f_Uz#}o3@AcZ2uni=bwAXPpP-a zcfGfCJ^2>tYh2-yI1sUIA`yxdCHdt2KYE35>m%r`B z=OTcah2KBmza!clir+h+mk;U3sQVb6x2W(B0fR2H;@L8mP8=WCw)J-)TdQ&UYpLw&ERp1qAa z$D*#SNZp`S8g)hD{ea51q4v?^;Pnsi{4QwhMLlnWuL5{)rtNtjvi}%-RRoQ<#HN9c z9W?HRTxKh+Hc0Er->pLWqSC!j`A-48FO=3=l)qmjt6jf=W=N{#rBC{{#5jq&o2& z;2Yz)0_c8MRK8CKc}PGze^%XFK;sX*e+4>4G`~CO>_t5#r9VK=WzpGpM1IJhjPgpL zEjYWogY>TU;m11!AO2h1+WXSuegD$*0k6We?Y74;ICDcwWB zd&|Nzmgqq*qhE>vZX0kss&|WlGZVj-Az82kAdCK5E`M+I5bF6{+5>v=fJ*?6KO%3s z^3fV~9S6)=iNs=*$+KM!n@gw;=fI1$;ZwKEQbm=}ZfsM@q=|3o(`~{3HYZ ze&oNW^jE5kzDC{v;QtIho&x+M_*O1lhb{dvM90-X$p11}&UeCgqW+iF9);lfEb{8%Jq_j2X!~ig@2K-r zQ2D>VEjf4tsLX%KAG=SC%#u%xdHPjVC#ro1i#N)`g$Yi^+b6nezLwE4&3~J84Z}? zpfyloe?j>H$o60SzOvYm&t$x5eZK+rNBmA%=!c*@Kgy$#mkzqW0k^Pe3sk=*BTWR{ z5TsS0pU1T?A_0FzWiTPk`Q0h51wLlESS9FJGbj41R0DLo(=%)Urq&+vSU8m-{cEWe=9~xv<;$ z<@=XtH{OSWzYBQoEjB{NE7A$bpRcwlKhn;i^%vTF6nJA)$2tKn3bN=2dQFgj2Ja83 z+=?qN*HPw2+wZ~eF~C+u{y@m39B8)0^D>364BS%MXX5)^l(`qbhb&`rAKIJ|BIlxE zcaZ-DaO>iIC3u^sFctA!3uQfYzH=kpgtnXp?o{NjlzAC=Rq&e!*i`WGkK!J;)U`y% z%$vxogF1#<^yO#yn~uPHUi+}R%tL^0t}y+PUPa!Q`Q>lEqOGWNh2p*-ewNtt67pS9 z_$}Jz!g&4!@X?n3`a|iL0lg2v>v6nK1-%!Mo&{ek0RJxPohUv7%8MzjEr2Oxnae(q zxe+{kukTv{+XJ|JK;sp(tu1IYK>e*0zXQrEps%+ACsFcHRtRZLc|04wfyD#lva9eXD#uhUXN(zF8zYpXHHX1u*OK%ip^VGX5U? zan#)kyj)hD{S`>|PcF6nbAq$e%(Wqtdz;v}MMZgKhkF2)J!-61wv z=2dO$Av}AvJx_rCcEH?&Un}6ekNREUryHK%EGlR0F~;#82^sEI+w&gs<$L{YK`%eb zBT!Zz@D)L;viR}H55xOo`HiJ%(9__fG@d&me>#3;3uTv0253xE8N3G?so?*R+JKSZ zb1}-&WiAG;8|h4KM<{sx8}BxYk68_{598MkJYEBh5`cM9<}^I_126Zf{Mz98Me!-c z=F6U~^qc9kg8ob3|8JB}C?bC+nEA8uoGSh@%5I1c3|cw}so{}bgKa;$Sc)P9|Zx@X}zQv63*j{*M?S>plc zFn&u={*lV|AoyB`-xLdd`Sx)k+H(rGT^O~QcwPv+{NU9G+D-6Vq&iRx`8(0x@!>Ey~o6_2H#5o`v%@GgU)N(cZ-o0(Y8EAMd!Z-CBbq!Gw_ z9?zZSo8NdokG%Gv`6uYr7h9xsB~})W{5gQxh`e2p!6Ll3MLqezOGW$!sXirZ-+YUWL>SgR~Yp7s!TSc-gTC7(M#=FSKwDiJ#T_W zn5>&sK2t#NOR-1dGXi&-MHZt0*9>qTq!L35L0TL2l+?a&0Gdx*c-^Tq9mxAo^V?f^ zc}{!?z+6+lpAnxQw625BONHeQlg?AhL%KO9qW`{D-I7@A)4;0+zNZ7X1ZWONd78@q zHQ+8oUQ3j%0uLSW{G`Q3U54D|0{=Yl_livN8%NWES_1BM@O6*!{b&*S+wzzjK|2$C z)mNS-iZ7tD-e_t2->P?CgZ5M%E8FpWAL{X$woYX+0(ozNj>HYCX`A`4;b=TH3e~G|wxKHI;79{Kl2kpeh!c4};!4T0RJA zCf?tL3`U_{bG1Ed(eC%~TLt_M5?d>1d^*C2&B{Od+vJ5%R|nwyqVh;rooiK8?x|s{ z$rw=n{=|C;ZQmNrO90)4Du+d=Ckl0Z1iG~>x>EwM!z^vAo?|Z93jW{4FG>7L%X<1d zi9_l0RIzuK*xx6zo>886;W-?5C$zkT%IQJzzrg=rCXYDlT^fvuJiu z9{&N|4AlLWzyhv5(i6aa6lqDVvmc(zD|{GazZr5I1)R&s8;A5d>SzzxMdDA%_?I{v z(rt=U9q;*2_O8k^2J)(}d>lYqu4w)c;P{Hk-vq$C26``}o-3enQhZqX+ZD*`1YUkX z-p5EQgYIvD4*~p7vThX~@a#wa71gURRX#P5-x<7L!|w^mAwTLZ0GvLcJyHK4=`$)<}OcB$Ocd)4OnUWx{ z&{7>q0R9zi-vDh#5u~-iS9j3*4bMxpUCTA?EH(!Ho`SNzpxuly~5>cDGbuGh4DS~0o9j(5-R>xy$=Xak;Clbt&I{kv>qFU(OGpj{5;W0`I??F;V4rt;G%`p^n9} z_6Ki0P#y=mvy@&n@E9t-6Y_WIcrS>&mVj*r-fw{CPbCH>^A7krhjzCHtnv2~MBd8d zccAA2-Y=pTO6LOP(g-w;n(;N+)77$yfW24h08KZ3<5fq7h##&x{hZ3-UF5xDu2BJ3 z0Obpi_YC-GFY9H%$vJ~!c;Aladr(Iyq@SQ{HtI|S`~{hda@dd|#pQ1#K|WgdWr>%m z{Q4=MHq^UI_Kv}CBGN8^JqVgTw7jIWTjFbqw^HH(C|{1c`^emgI(8}Vl>rkC{Qly* zfZk2O^@eP}2TTR+uLzXS0*yjCPKuN;K4Z=?Dtk+Ke@uK1zzxECC#`p(;@>B_i+bCZ zl)neXyq3!A56CZVkwJgZI0yJRq&LOKL3t0$xc}DT$G!@@4T}34U@sSu??Ax5frp!l zvl-7F@Jm*>4rtdTiQ$9(V6?T5^7E<45HPO-wh?f9YCW~Ub8T(+ml9V6{EsqE0_Li= zZv}9j<{mzt$05HQ(oBmFH&^yR%=y-0Khq`NAmdT=N%oTz=8EhYDbL4HXB6r*?x_Iw ze&EC)uLttx0lsWe`Q8Qi2A_*TqcEO7Q~7>hO#U_(c!hk9=9BN9z!m_nv+Q4K+n0jo zoNXu#| zof+WqSMYzY*k{oC3p6%}EC3g)?UK7RUm&k1@Lxhb6-7?q@ng{Mjr4h>{Z)4x0Iry2 z+?@uU7cDmByw<-U$9~Sez2W@&7^laLX#qmB&*5}Bpp|~me1x5A@7# zene9T;C@5qd!nxeAG`QMIsA)@$bSkvw3YP)aDO)Aw}2gkyo-3Bi~Kdg z^0ya}CprV#EoARgY?|0HP(;bI?2i9{K|AOYj(iUxw%$^8W(<5R~---R`m`$ZShFC#SK?o?&!K(wvBZ!d%kfA{Yu+XBwgK;M zyk7>rju!u0#99~l-NDbJfJxIf|6!5K`+%>Zybe*^1{T>2*ABm_ebm_EdrwDwbCDkp z+2>cCt${Y~LS8CpeSp-De4oV6K&K_z_>E78JBs_7!A55Io7*R|o1I1G=MS zzY{ReqP~7wpPX%7f$|O#e^(wC0zXn>&gS_H)YS;TImoMF#)))1Ua{EZ9kQka%ub}w z0)B_YP{3PrkrU_#<9RUZpH@h|CkEN$`J~LNV$W12B>`JUb-NAP=2aPWD`A+apk=cD z)Bc}_ym7LQ!utt1V=R7?_%w?1fyfDT<-UGt@G=4KZ$l=lEo<=o$oE3N6_7VtVgsrJ z8#I+O_YGAJ3zV;s5+jv;IIZXR{KlWXXUxj74t_=J`9Nj#HhB43;yd8C4){17EZ;Rl zT_~Rkn(3hb6v~HNWO@lSPUYA?X^Hon;*ZPzoY+a!UmmhL2YUMcPPr7+QyUM zc`lxlkfs7J8a$LjJuC6v0O@);f2casTkCJ4W9FRr3aI;{WsLl78FTF{`ClXdGbxi8 zn!E7V%a@r&NaI)_sF$QhhKPub(ns!5eSH&vKfJsK2@LmkyZs zB{q!mWfottFWx_wJ!jcxRJ&Y9^RtoZ)oqgiyg2%bBG-xR(l$>7xUK;A(2DyZQuL2gHi{iZ+`n8gr z8B+Vy0W?1bOc-#U*Sap}5^J2HJSJ;f4gr5fLHSN0=0MR))YsHpN6CJloEwq-Zp+x8 z1lVH=(?jBDsHcFO&3_T~CCFJXynk-72T2xsacJB9sP8_& zOxLyz)-w5f=nau~2sA2zetn5y<9Q!=YJ~iX;J*j>cmed}?phHYA7Ow!C3}YwpF(;V zzvaNWA9by@tfzjpw7F(3x;PE6yR{!GTXbYUp5<@$_EUX$89a3}_eNCk4+FOi>TQjm z4dtJpd^h0BqMl8t_gnF|!G9^Vqm{%l<;<$YaOF&yoS9O7<|ti1aKh!xf%e$}zXH4*SOqRy95=g+bZ1`U^-sg^xA)hiol)UxnV4>)Q1egS3o zLOx^Uj)t6ZG0&$+%olS0L*YgP=aASEIbSX3U%^{E@-A3(qoBk~!RK+{-bC4UIcp2J z6M%03xJKgN${ilSt(S9PcwcAH{q_1>+v4}WA!o=$H!XSP&A1TYUjm(9QMOsjpGI5W z01q>@uLdK3xWt~c9p#XgGUIs2cY^*7^BxHJl6zFIf^I?N|0U-lRUW@0{X_fUN7bRV zIrb+!a&}Sr)-sN&OAG{bQh;C(TEQ$hb9)KwikWa4?Kw($UPilh7@csh^rAMo3OK1c+9H#xVca_fS;UigJe z|EjHt(zYK3treiL6ucM4uL@{&gPhZ}yqn5;v3dSq&Lb&*7tpr)a&B2-?B;%!%4Y)V zllyvqC|(6Q*Ms)HgZvdpuZf?lbSBAOyxd;_f4gPvfOZAT88h$^Ec2e6Z&kUKm-Bww zhUWoOSk4*(uZ`M=&T>W?yeB9>4+FlR=)UN<)^`Q)t&l$tFeAaQ+>?J(?#x*Fd$gQO zlYLg;Hc?rulo%a&x`?s}@jXEECDHq0+;*J>9tr~H1?|^+=VOq;{W)xREZ&=|zU>e{9x!DT{ycbCgYxw# z|48ft+U}HbtTbks=NVA;1L|*q{P$4j0}^kRvtlaqf5dj+y^@@d2aPsJ&sccaAbU*6 zYYBP{@w`;~;XLXpiuU(3_oU_AnaZGxoRcueiO3uq^Zo06M>`ZoMb50nocD z`>M+SL#Q(aFh29H74kRZxdQsDgvwxxoOuHMdS+YDj>!@qk~=cyzJTi4N3zxd5C6(u ziI$a79>>U?Ad77q2fC+Z&lR-xX`3!t`sN3H?xged51L<2?wEmQ71iAz<@}E5u(tD6 zP2Z9jC!TjI-^JyQ25=k_JG1yQ=Y>~==^-%^yl)d*hrGo|uc5Ba7QQZ7Y}t6(!^HbZ zv6H}EhxXXeo{q>56TLC_z;eWM8p!%iVrp{sTIF*Vb#(_$3-J?Ge`6&UA@Myq4+Nh3 z$sUEpHa>&0Q79{?{r8e(ZRVD9&f+gf><0A@fb72q?t3yH$r)>{V-xC#m)MV-4-=Yl z#{m343!L8KGm0FncOF4!5Pk#YoGEbr#&dT$w~1eKi=0l#+29;^CKp)NTsAqo1N@TU z?-x0@tTOsTbXnrz3O8T;U|AQ*eMh9vKnCF!UvjUGjm0|F<-0zoPp2!0-s7=xU_ku|r(MPv_I z&gRHDC>cW%Uyw6#;sZ;}PwP1+`&8nC17`?+W99rC>MaO*WyD4+pK)@}PR@jAJ2O#N zW$@A)uyc@Jl>2Df-bm2+25?_VLnR(y8Doo8FIJ1~!B4(5^roEUQJL+RI~0J~C;qtb zEO#8_+`XkA$4X30>H^LTl>H0XWF3>UMQ1?cMTxI!8~@Vu0N~4jc0bVSr92e|{1(uP zN4gyRek%4s&QaodtHNxAT#Cq@OyE5vwn^6Fcs~T3X~11B`&E|lyFtz-i;oAmr)1wy z_A%scrNsyTTlf^2%iT=#oTM2y0>6_iur-i>0d!tB&#}vWA=&3edP?SeXQ62@{*?51~)OFDA2blX*W{;sQ`Es1``cBSHXn6;~Zm{V00_E)o9ZSbi zZj<|b+K2DrISjn~C1+xgcLKN_q^%O$lzXY-^Wk|V+F2Flmq72n;>K0QpaOEn1a#j} zeg8u19I0&&)xIoY;diLa=g9w5b!!@EUIR}F5>t^oh_V+~)Yz5@dK~ZJfSrl5DRKr; z>3t~Y<3#UdFBWajhrV8gUuD_1ld~A2&v=gkk;g6jYG-6E1(?Ty`+=-CWe-4UHnix( zB)Oj_JSgsXi#|t*-=yu$kNl57W54)9D&LP(_64-fPSp7{e#b!n9>5mY{EBGz@8%gg z;4G27aft({9`{AvGh|;qhwVQsHVSa*=H4Xgy+`(6Wu2$=CdwUL;H9IkB}i+7-+xhF zUVI(Y6(Z|#l$EuN^;Ez-fL}YUZw+83g6DY>hXULdxnnEwTsem>=S=`R!y>ckz}utm zeStFo_{#uuQ|=m?_ef+L$QT7&nw*70*%`<&UEAhB z`JZ_IAjf{Cd>3Rq@JB1$GL#RN^9@KtWlf4Uj>7L7<@cJ7+hDm@A!pt2`%&g=l}T4K z#x8xJb+naxJhF}gf0?Qa&x?O9{xr&tApb1tIt!XLkY7#WwlbH>Jw>FUDr5P^;X^Xc z(Y9&eV=3|@L>%5@->`-|>BYuU*68x`G+fiNiP65BVV74o}^yOt8q;Si%pexe(a<4}Aaf{y? z!&)QzfMR2F`PRjC;IvXYp93bJ_|d3)ppKPckXH!ayQ!@2x5&H}@^?u*z+wyKyQ?wa zF9f^~1uxGkKc}_bt&ksw`aY9*75Hf&=QLHO)d92DJQs<2&uV@!;A0@mHGq9s=481m zD(gwL2@a+0MO`Vux3*Ef^>kBw5xFBGF%vnrBIi(KOe&2AvcE2O;N^^h><@{LsPaD| z_m;&5i`|wruq(2;e$%%0vvhX6 z_{(^|DRUXx-&b|{L8ZG;))x4k1W&I?JXqWQjLPHTg2q+XteB;i7eeY+yV64T#O407 z_S05v^E29>Qy}oN+-H>d2kKuhu`DJf8P%tpRnk`0MxhE zTq|pz^aPC`QBPsHuUuIEt`+RI_VGfw)1o>&P|mTb{xsCQ%b-zA_BsKdih2jhI78lS z@K#dJ5+Hws@^wJ&SE@|yau38Zmd@b)3-DT8c{ToyJL>9d-nT@3FUyHwv>fc9w6 z*(did<=!gFBjr4k#I|HlTkg~3=>I{0ds+5}#Wtdz)qov__p5;aQ0~jf-n5+E5xL7f z0lBM}V~(zBdG^ct&r)6wIK|~m8|vOId&D}P=E_+kxzj4~I&*JZ<@|!2M>D_YA~82J z9tFO>5kCcODwl(YAvza?S;p4`+J|ibTNC9Y6{m~Ew&VlM0)_ho^*<)Dcgx&yS?O)p zew$?}t0yrBSsy6f&1l;rx!B#e<;;lOO_wuB_(jY2mSjxJojN(QDd%%Q>r1t3PPuog za$1hImykU*(NVx86qdiQhBo21O8auZ=$*v)RZh>MY^LhhH-M=sdoDTm|K)7E?1M>6 z7-db(dml0{h|h-Ko?`Mh%;2AkKO*P*CH^D(ui|@1j2E!^Wp4>(Q6bssyUo33mEXG( z(-xm!zI&CQfeZN?K&cWFEh>K-Pxk^qvrLXVAw^`&0lqZK#>-h@q&KuZ@_n)TvgStH z?fBINt>48y%DFD&e}mt6`JR{TqiP=>L-`}3r)XCVw67s>;*h#zpIvMlaKmK%W8q<< z#RskddOrbYfXu^k#u{ZMWi2A-U(9c7;C;BvA95~Jz9%JTM36=ReuwgLQ`ULnzsa}7 z9o1riLOjnVumBt=16rV zyVIPgH__z?Z*=?<^c?rZY!C% z_Kjkj6?3@P*iYU@HMQXuHSjOboHx zoo+Cb09HjF&P02n!|w<-vTR|(U#QLLPY4SY*~dF=3WWxGMQEvmL(Jv}8>y`yctWl2 z#HPQ3uICp?qrdz!#y|`RFOsnpDic^(n}Z7yHcGt{0puFHA1c@o#ITF zh9@Fd@-qAuP!rPc@FqL`HvJdKb)`8)lhV=yxgn^tX;gS;lXjgDdpldM|Jp#$Y>vc! z=sI+fFU8~aXYXW)+5u%vwYidP=^mfYg`Nq6400#eMS78{3@lsQcI|ya&gu0--0_2L z{uF0c|AI_gh}?pc9o~^7S~$?-O|+#!@~-q$m(vHNgge&l8=MyJN%cXWJm@;NBMtwD zxz)6>14babsKj}Gn1_B2;wsxvYaR8u_z(>(*h9xBO$lpU57b|t}? zSjFZ@fTct$JizpxSn66x%j8Ft^7h-l0^8Iosz*z8mJ-g=dlSW~oWK(<`p8p($dW(_BMx zjvRYjlXkJuQMqxV4j9@3?U#iEN#I4b~&cbThA3u=vOcSHq<1=SFy2P-Q~=}s(>K*Syu zS=DZ@Q4Rka6qV%}Bs<+suUO}(NZ?nkQBD3Y0Mdma24b70wq`M{qjPBAK(F}wS;ho2 zBr6vcbh(KVu=Q?_+gXL=jMcJRs?0vWy8JH46N{bOZOu#xmp?@|I(>syU48P%k z63DPdVtYLC{m|{Ck%S2`)vjhcU|GmwAQyZ(yGqiuzTKYU@TC}fQoo*|l??)mOL5qw)TS~Qy+}y)_>2Ia0xJz?YI-hfuM~*S z=pS?P6gSB^$fZ5y^2evzV%o-a?AW-q#kCav60OcTneiYiAvGh>nayv{bM*QXQjB?8 z){90c&Xu6+Tn8#e8+B;qsH4ZTGuoR5^*!u;Z6~k!+i(#$&->za(R7zgNN+R@#ZQ+bZS{ONnTId9a!*rG9=lT zKnL6}mW0`CogJx0=+)y&P#1+o5_t}mcu;0|pUjBxP#gaTb1uVAjI+lr1$~eergdg5 zwv52B=E4`Xn{H42Yy&+!7rZeZFS@8e6H^O~` zJbeCgEM9nuzJbY&zs?F=;8Jy>U? zI2{puj$l%>d7GNV5?!Xs9b>*<`w9ttByNPlilU4qt}Y91E}v zcyXui2xa7c{bkcnl*FDq4Z!-B+e85B9kg%}RE5EZ{2U2f=3qUj-;=&D8L z^7OwfVskhF#;(_G29typjlpF4Z3ary+o`8VRN7K+miMIo2l1mD=cSZ)h(Q56)SgSI z*{ofPObnr81cpqDDv_&Ti<1_piPqFalxTDIXtBh|az(UMCs-kYb+L0$I;s{VL%_0i z<#T4h=y}rBO0cU5XE-bNv_a`cH5%k~)v6KRwY?eJ1w#z}8@pK9LfNw00E2C;<+9LY zBv)5>Sz{D#T%(Q^J64VB99yl53gxc5Bi9HY2!z^IfVuTZcG=$ADKWODF|oPSpO|PA zfMK6g=2gQxG8hRn9nq{EXHrVfwIvXN$BosYpxWu#*v&mfne&oTT?x9(YMIy6GSITS z$K6{o+euiX7`Ux+$IaSRPIM)~eq&uP+sU#J2L(gs#-EbQ#(#4&Ta<{ZH+{QB5nP^XO zC8rSmF3i~7@sTSVxe&^QiLQ6<-R`-A1Qe2F2NU<%Ikp*_L(bfEIZJ0!~27eXRfz&;d6T@ zn$amazQkp;*9BKctSt%Ma?V4lN|wNp)6GRqE+V^qyeT==6OZ*K+-uXCTMo~pX4!bc zX>INd^$M~v-q8pKCned^(p-Za0T&^gWha3YjH?#6w!En^9nvp%hH7^iizCCkmT?UG z+!S(lCZJV`BzD`GHb z3a)uGUz{0xeYHJY#$q)+<<_1wq7gjBU?_qkA;Fo>qg#zS$Lje8UnmU-41s8e zHh`XRnEDf2+Y+1NA&K)Ml;90>C(d*XKrWd{6a!vW6pRtuH?SFd7L zIne7!&kB*~)oNuE6uZM~*s!~(G0LnlD6liwD7Hz9+)jmL zKN=}(=WM6F1kFOFN&8McLZ1noe+UZ;>y?MKyLIU!XU4>^1}KCYSrQ^~JI&)0T34Dc z!X8n>9v+^h)ZFK@6lCK*`(8>8B2l*^5|x{NnW#0Y0U{z7R4uqI>MaA&M9smoB4rNp zq4OQy`aL2dYYmO8UZa=MLp-Nrlt8n)=As*c_(LW-%#&CA21dx8?B_&n2_5FzU)CkG z=@lAB1nc2{J?uW0d1|d!1DknXRxE?eT4wlF10?8Pq9^*|{kd%iqJkvV%F?eTjtWyx|Rro91xZVYriam0(YIx|jhn#-SMXf1fe%D$++rT=oQxdUC8 z=60re+^&TBJsf`jP$L8YMU!ZtvA*Z(-vlCx8_q)FEz-yy`0QJuLM4sG=Gb))Qj-^t zi90c(rg+c@2z3Y(!0~Y6q}#Q5mC`6OH4sFzUj2u6hGxqxY-IW0n?}b*pX! zU~|zE#vB4<#Y6?dvw`4jfPl}Rniv^nZJy6x6$=)4OqdcQqi$^;mNWL`goN8nv$EK! zT(7<@GOSiuL=|)SV)zz7B86O)J5RnXVP%sZx>A{?C5y5@FKqy@f zX$;K~PtW5-h2i(c#YN{b8-ZvfCYM{Rr_q|6D4bC`M|ah+tRxIiKfA@a#b#K}grxa1 z+|K%zL*%A=tdSUX19G4EGiy~3&#jFeQ`Cu&!|cYyBF84_jtWi|w)20$c3RLQ{s;63 z3x4GPfFEha&y4!-_?c0pU@XiTXSADf#z06-_GKA@bYWGSXq@ymwg-LLW0GmQyuXEx zNyRL>1D)I4wa_D5*&=gU7lOn`9*{dC<{GpdYYb1CGkYAy9dlQ4n7qTdGD~4xV?5ll z4l`Ugk#?J?$k<3M6ay2pYy>B{oT-Vojy=$0$THXFYf4ghS|ZBU@B5VdV1bbHMhqng!70ZNO4B0 zP&fV2fTDVA?Haed^@DA&1CRsn0_2Vzo^6Zf_7SJtx;+~zob$@QDn`E1;c{|I zqELZTPytmi=ncx#qGltj(I^o)ZHz;$OkPe>HtQp^jgaN}Lf$}>fsM`rp=4)X1FU0K ztjjpUo?u*JlM@>ZHCX5sAG$0(Te)@4h<(STKKp7apFtONIvBWd(*d z@JR37(1(Q)SG11Az#TCoWF&yVsNky`WUCy@RiRuuu4^n2VQ|D@v4)k5E6HJ1 zf^1J4mrMJ|S*2IdFOF)=>p$kld6B)DqRK`UdhI=A^!Hnb0B`kT|l*o>1w|tRBYEfQ;L)0A$JgQXK~Ff?_HZj z)VK@MUE?~oi*3^_qQ;#;yVq)!?NaKHTGrUxtx*o2Gg(|lCoia*7?F8kz;nF?N32XP z6HY=NlMQ&)1KEac=E#BRcZ->_RfgUUs$#SCut)Z;Z5w98|9jmHg1|=*A>!^a0yUJW z;L9Euk)2WuK6ipsw>^W($myfxbe(G)$qvKY)uZlW+r;Or$#EovBrV%7!^pea^B0DuEfSY?v#ltQO-*_wy9ol7D+dccQi2 z%%-B0wH_=B%+H4ZsTUb6j%lt~X&DfKBRyS$0rAcxIb|jDlyxr86;GBrUYBe@s5%>m zj3;Um<;rQx+HrOyf8yRHH?$s!`$LVL|2UVNn)QqX8dkNt)*H^=}YVzG?f|K8?F|jLxwe z0vl!Q!pSLMFhMwpmD~kbi!SYAo8ArJUBSgQ?${@$ZPVzk?2~vS+@gor`t(Vtf$`_+ zV?Z@-6c?Qh;SQwlqB-rG#P(^|tXW+29U&9rla0BwJm${?<77(UjFsVhHH~iEsksr@ zNJI$DT6}n@t$do(_a|98U62AJj;%$QI@LPq*v{aQsTG7WFa*iZM!9=$E=b1v>M z15ujD)8K)XzZzbY%5(wbL@W?6iYudOx}Ll<$G)8KMxJ2EgMkw`++iF7Mwb~^_w4a?7KUt z5CJp3i{f%qsmKFfjm&Ww$xdLo@d`7p*A;9Hb5xKMD~}3t@{(5tevco|#`kVqf$szjt|Oufs}Nqp z6j+8EmYUzkNP?e7k8g0g_+g0(Aj^nkH^iK1)AL9k9u+dm2YND66ZNv!K&JynrW;-Vy2zEiOj z&WM8sRjLs7bapR?L(b1Lq#|ZL1Y}Ex;yeAf!w^x~e4Zq~@tKr#SGqIRxcwz9x*blI zf_Ze>wyrww9?O(Jx-A2~^A3}^{LJsRYj3Y;3wpgc6?2^pEPFOV;kX=6G z0KX9g4GSO|2gn?m4p*w4;jlGr8W|QYp&JP%IlT&M8dh{zJjkS)?i8(Qwy?2*P$%nX znoc}{_VP0eAdbhwjv^{+^wkM+IIqpXt~Ff zlSsr}6X{`XiseP!nf9%l26onSFORX5_p%a$m5{#F>AV(4n|=%|s1lg=4(@}6Sr$mZ z_0#1V`0WuM8WqtisM64(m9#<$uFKU*Co_#X#3MT$JR)W3djaTODPZ!`0SmIhHlPRDg{>T1!L!Ve zI8>T^)y245WOz?@JJuiddqhPJtx>I4aInO8j0w*$XnHg~u7$B7mUR|T=6}8X6&xIF zc*(|>RP1(Nig9)_!EZMl7kdI-37a!bk7C=IffZ(g*Od;x-k0_L9NFMN4++h<7D|U3 zX@Og7#wq4BmwX$~+`%%r<6fdWYi=`7R6Bger}qLi2>03PldO49B{ADxR-1O6V?u51 zJIb$-42||38)skb+7;8D?vIKL4mNtskZO%;p(Yg*pU*i6fIIm*gWjDNtqC#uh3YOB zN+5SQ8|?4ftmL}NnIXepOmZb>@Lo-jd=9|vlj{kJD>Jz+DC|5-g31GdBp5@U8nUc^ zgcSooZlM_;)-cbq)-~cW#}{^>WL!%% z0bd_L=;Zo6d?`i`Q#&2mzWa8|-E65Ku0@S%Mg)GSsT}$i(9S@qzW0(=%F&!Wq=n+V z-%(Id8=|B$$UYJ)pIhUP%iiFZ|CL)Z)l&~my;`30jO+8BHEi5=-lPUHCHY#N6RVj4_B3Qc;_6*w3dQDW#vU-oLKs0?XJ8ep`udf!Jp2 zHw421U|BKK>>ne|StGxDY6OOi&(7SbW~tHiN$yZ{h<$+dyQ_h_KY<*drIv!vJ7$LDI;NBJ(BdP(oEb#2c27p6byZMf1C6#`%-m-f1_5kR^i3Zkg4L z3aY3)(!{ZVbqg3fv2_2BwJ&dM+eq@|zt*QflHrrILqZ~T#F67{WLa{wqiaRk@jO4T z43VJ3F|Q#=9W$Bl{<^O2>IOhkp3Ux9V0TpmX!KEC$FE?zz%n-UmRPvkp84*V#e#zz z?nodtlkBQ>ZaNFr`zt)!x27;v&L?IY0@G>z!q#6v*kl34<*86y!d7B#a!Qf;mZYLb zlD{CMwCu0S6+Kv&pjL92-R-6$^LBS=vIn`$%6UGu64kZ*R;hmtmz_$z&+phEG+c5G z?q;Agu!mZ!AhK}P&Ce?^`pu~Ms#=^g@>?Jlf=1(SH`#<-qyCneC9OU-Up|i&I!x~Y zngkdw4sa{S#mNSnVgvRFg`uV^b>|$!U{o|xlKu*!FSA-Eh~LsjCh(1R*h+O!fB@*qf0QCJ8Lq^zc=%9_-4{>@ceb|^FsQ~Zfk74V89AYpZz~5*RfJ4s?z|X} z$~{66wAG8H0j+d!2SOB^ZU+^B8HvDZzL<+pQ9h`#7g2^sBIG6ib$@-d_G!}?u)>!; z0@uNTM6C!v`L4=o+d8n;2Y&SRX)^ihj3TtsB!Y3)hs9*hs5Y&AGPnC&HT|3gP`*`P zpX9%lQ_kZx^m zF4NQnK;d2-L`dIF20g$$AEY~*o3N+A-^XS-_vy$y$Ecq~Kp5fq08TOe^pP7Gm_=sM zBOFcA6e4iah&YPdfdlOG+S%O>TQcKsss6RE)w(zgJ9gTeCc`D#*eCVvX%7JXu8=8s znh@o2X{^UQNMrO&sKyFUWoJ{7Fw=hO)I1hU+U)C<0DuXPzaCt_jb7qfz_k730C3@0 zOC&I}SvLMfP##r;ld2Y$e|9J4i~eE$-GP6%H|gIU_!mpIu;l)a4D?RvAJfsmtVjO> zcEXTaYQ11mSj-47{OE$>h_Ib(tao3qWCjBRqiM!@$uLJstxcL?dza1PCV{f3(U2b6 zMJZsZw@pONNkB@@J=`>tMn3~FjGSM5#A1^7*|rSJcp_)o0hQIKBl2T)EkI>AnbZ-# zN2B3wHX1g&b&x1tfRGGyNM zJ{*;DgU;T(D1f98+x=v_(cFCD(YMpd6zrkq9AoP8^jiTv&~0r-gKmGcG3eg)e2(U} z5z@#&4Jwt~WQGgmgs6#eHhW0MF0n@ayo4S*ET9F2(zr(YuNxyEetiK2W>`YVGakDD zB<3De_M6BLrfnC9Q75LFRiKSuV8PN2RHzq~R>Mr>!DCTzZ=7v)@)e2L{Ar=?j?LDm zYq>Y)*LKGC7h6dqK?iRW|-raES?;7^5h6+EEr;izN2^Y1#G6Kp9&+H(U46(tIzFl zu2y7o^dFMhV3-CDCUFOv!y#SpNRB?=%Y|(ECS{!s9|Gv6UY}eQ-5*GDU2>Jb<*X0T zbxZXKd9FQyJi3w1Zl<6cayxf8P&$k^MZGB!r)S*TO*=;oPFXsJX;o(}P8vG}bG zwf6VC)(t?yz zMd&s__hvFmIyVS%1L^hBTw|lb!fwFF*pN@ko|567HGEpCJAuyA7Oq|Vez{@(_i^Lm z;sDjD?BSQ(cxap&dFtK4!D<#+N+2W!_=?9}H#2)FZX~oVn6qSTMNNZOu?L7XV0)$14d5GgUT_#Zl2e4k#XCI(tWeBW((O{L`OSG z0aKxo&tv>cR0szO9ea3m4SjogcyfNQf3^SSba4Lu48m&083CwBD6;8@5-+%dSFq1riOKywgYbWF-_I&>99QCl z^V3sEV1V&a;J_cRM?XiK-$lnX?g~iyNHd>gw(k4-i-qF6hOgEOTckFUI# zG7gze=*Zsz_um-s5?oY{3e>O>Ur3T~y|u&}BsZ|^cG4+o$73Tz!Dci~+Fn=%}z+x~@CE_%zP@Q`cGGkcVB`OPZM9aP6 zVwT(+W*Ns`ba2G$l76np#Rv6Rn;nDi0Op%vb4z~A>L|*%-R)hQ$An7zfS8jw8;^$c zh(Ln={y;<={j8I?(S{I2lzdoR0PK@x#4tA73Ru`-s4dNB)`(u;b2_r98fN;=B%cj$ zS#ud24f&^VPy!725qN3XD3#cB4&%brM`Q69ll2K|H(>Oq-94Ev@$x*c+#Kul1|f@D z2g~lWER(vCc{G{7df0JnLj|XD=}O=aUxp>~uqI(A(}4_0mC>_Ol5w4;4f_|ae| z1-h)DF6PSosO6yPI2b}jq>D$ZDS%;S#|DTVHr@b7;367YaJ=sl4#I*eH%O)nK1PR# zAfrG67X@Dh-eWS+os9(}y~r5x#vJc)dr|3!3|(R8-w7#_UBkb+l=6V6{DG!Dj(b)j{Y@p zat@_ga}UD12a9iwGfvQ^WvC5fZ}@ct!HCk-wr(Vq$f+Oc%`Hix%}QtTKq2zEu;pTgPt z$s;|fAq7+SGNjYd@VL1G!E(iv;w4UMPBCnTuy1357cq5UG4beuM&?T7$|=mi~zGY3yJ35 zjfr){H*Nj>#GF0o-G~Nb%`tp5xScuHac7svg5z0s$0TZluq$>6R}sgki=rAs@Vb-B zGy>bs6cD;?=v7>?Kqk-J_AMKW!ScHjLqM&3`nU~GSc$V6Gk?CK|G(G?Fm#8|M=(^^ zW;exSeVn!X%WaHm-Yw0e`U`HmXNJ#>d>dF zTH!4<y_AR0JTW=r3;m^!@oG`Xp^bK8|v?AZ`P{AwsKtX3aaW&f-p zG+(0RYtnnk#wM-U%^2Pdb2U?-C53ldGLgy<6^Du+;ge-%y@u155j@}|I)&7`qWIv6 zX2cxxQO%0YV-JB2c#eA@JG@4I38KGNpTp^~O_SSa57DK0)CdJ0rEnpAB^<9!1=TWY zI!13>A9+*NmUTRyn(f-I-_y38zpNsH@Y3hM%hF8hWeD2rIs=cW9LxvGNnd*u3hdNc zGg_4F5VA%`R5`1*vvho4COwu^!b@PKT9hdJA+AU|tyNL>j_xhm+&qQH#ewNaiIZ z<{>P7#?8obZPFMcJ?@(GITheEGnCi)&3)% zw&0^R0cehYui&J`Mty-Pak1ssF03?06)5>!X;kQE$EV$ z^SWfui+Ym7bUT5maHD~g4CU2HYY_!{K_Pe#DpJit1+LdvFpeP&H{B}hU3hXh&gJ%b*ur^{0iKjf+9j* zbcO9PL|g@wU;)QfHTzoJx+a*zo4XsP|Aj-HMHDJ*K2H|hq<|p2Rn|)eG=~ar;i@g? z1Sc4RU@^kVux<9f1WuO#?dIeLjeSJRvspwZ=Fop{7U$cvGlz01qWhncXWSg9%^GF8-gjvL@sD*;$RcZBsGfm9x8jFB$_mK_dJ~uV@Nshl|8c><;fOPaRN^Iu(ktsHzVh9aPqP5cUSqDEd-{8`*iZli|`>*h@=zW1|+Hc zr&TOzah2BRcQ8pZ*zJE6gtoj25h<%3T%Q?tjL%uWlGteO`|G$rm2KM`-KGFTqvSnE zpprZ!Pc>8q6C~WP(|%SAL4YEM=tLZyC%b`m2-GJ`R@sMRp_!!{W^kB4y5Ypzb@n2X zf}j=PqGzU@H}0IX8J(WLjkcYvZ%Flf*_c^bk)gXFIt}RTp%knVpn_uPL%RXjsFNQ+ z)whqJRD)Cka63L+V)|(ALtYsqrJ`DSAE)k2!Sg}VH!6b9L|T)~Ax`b@?_a))>c5y} zfz;d`hdqd&y|VxI^2Div5;+S%A4=4-J{O>Dx_=4gTMWiR{ zh}bkE8?`xUQScKUL;&>H(4IPCizWpL^7ixi&X^slJ$wBrxu^UGpE&w4@&hB;s z8xBU*mo>EWztNEOit5h@aOd>=!|z_cr{cSBEqaaJ?Iqu1tFfS^MswLN+1mMEd8lvg zlkEueKi&cOWar=dwmS=3TDp688jG4*zJGTYK2~#QcgeOM2kC9HW!n3AdiZX?7X4y6 zrv|1zc(bFE{nl?#20zN@61K6e+c5Ol2)+}y!fh^SW@k||OFhi4ZUwlp8SIs3J@Fa48#GsObt=G`75?CL)P$3Mfwn~l43Ci8l zjAqdo{&S5yo3YI~i+Ll2$q0L4orMjwV=5{u-OnZObW+MJ0&+2CvhC zi;sFxYecqd|t}g%(`Z` zs98lj=ZLh+n(Thwb4oWN=|*NW|1R^Vx@C5 zLudBb>-RuUVsE;CxmmC8U;bzhR%|z?b4=yU{>kyXGqnQ4!!%%D-Xgc`%A3~3;ekEe zCFFt^MQ3=lyv?1xV`h+3#v%NI!j|$GN0)Is{QSDm(;Aa$D0>Vc%a36!v5KpRg6AX| z4L0MrxwBJwlbAh%JWHG(0u@d?*O9`)s1a{8V>ilSJ-76h*u9K-5GNr{vq6>Be z(w!6;8?c4DWD-#>sTC~XBeKelYlFODY!iu6s+%2gO>!KY!D>F$IyIEie$Pi_aD?d7 zEraJ1y}+I{&uOaBm;`wrM_<#Si=>Ga4cVa>W~|1!8hb->IvZwN&98MLjPIC>1Qc~G z@lD{otQP*g=;vzoO95eqAa(O8agVmIE3 z?LETj2rOqXNyBPF$)|K-SSPl$HQpDMrD;9(D0*5WE>&LEq`m07YW5vJW;W{rkQ-r~ ztnRI10Kq?R{&@JK^RMWwr{V1=hFYNgr8<)4VdrIM8YrcBn}GwI(dzU!$?&TZj@`gl zMpD8@3LxjroAquj9C#+aA5aP!K2KGRR#V6vA)bhFbnK2on5|WWJZ9(C=q=hjD__}k zRh=R_a1S))Vi5F9R8VZaBH7P~*G{``nk_)~fe|2U*j?9Y5pT>!FrATnMDQ&{Yu4Xu zOd;~yF=fS*-zVqTp|Fq95GREu;ZP<0hvX@PmrA9=e`rQ6AA#h==PievvSn1**JjL z!rU-Kj8J423e}7`?&}!4M>JM#$|Z@JJzahVN8+46ob{FK_~>QcABF&}Vz&Dg0j#5D zCKnKJ*O{Vf$D4aX(4~ZHwq#9aQOZQ9%lxILU6K*45?l*}GcQ`s?YN^OMzuJm3)?9e%vH z3|XvV#Q(Vx{AMv*yRRd~XsG-~MZftBA@{)JR~7-!?HM2i!GRN#cj+hw z>+`3Y`MKJzwtvArK|GB+;w7OIr}D;plTvss5{c8AYYivA(;3;56{bPj<{?%?wIZx6 z3;9sfm**m-nEEhP|8!7`K7qSrwevX!ay!Yo(c3p|1aJ1Ry8{}v7DaDbmmc|lwJzsS z-&o;&+4c+EFrUHgX(AM#VS(kstQVLK$n@3**urWPm|v5-85=$HX4XL9JMUM z1zKfDsc<}O!^UP+$02Mk!9h}()RJW8n@GA(8}@<=Z2Smj{j-hu(bV_hFXdJGzkW!* z;h#-7*4`%Jo4H_`nztPIy2H2)(M^@N%9BF}L*ia0pur!GE^L7J+s5VxWvMtXwq>7F zdIC@}{tn?KMx4t=gH$07>a1w-ilp{IAT8(*N&A6dTb;j|PYZ8}qF{h<#W?&hK}xOb z=nSpX2U(98^ML1&PecUKn36UXJk4>pxCM(_I@Zs+Tv8QzdNZ&PTiDaz+Pw#WD`MDJ z(I_^L5_YK$5A3&4GJ$hs)`N978K&?9c6G?E+=cj87>jsSVRekG++S4EJ*5;jRJ;r> zarAx*KDgkKBci0QdoiQ3^;@IjAm=%X3K*TgledhcpBd~0oEs745Sv<0%i*Heu=|16 zXwHdh|8h8=;1bvE%f9M`n)d4)=EK+|inB8_Ywb62nlt7%Gi$6GJUmjeMMI&Ma5f}VEmXpH ze!VrM;-J{;__blzIsf>#y?Y4PF!LQEYRpi>)CS<$7~PrwnVka@1c5T91F0XoprQkN zd*@n4{Mvc}mp!YQhv*GmN;?>&ELFdqv5XW^CO+BiRE1feAsEKIadyOUL0Tiwtx25 zs91aEv`>eg3CT%cXj-Zqnq}h2nFuL5xHB#)N3Gi7xJQwu6xxShcZSH!kfDsVwWf5K zqBnsAqQX9JR>MQ=T3IXlg+7%=vKpbK51by%a~m>TLb7%;=|IOJECD8i#xo}UhA}J; z3r79uQ2gQdB64f7bm|~)%hdTx!f0Hj^L3!v#5G2yK%oJV$8ZL~eNb6}1bh4^sz91f z=^NSp=h1D3w#K3BXD~EEHT3ypW*7c7){o|AV@mc+7(`gT% zhRxEnq!p9kX|1$|M^RBVZ7ub3enqf{nr4_HI8SX{o8@ytg&wF<`}f&MCHS<(&VG42 zqEJlLVwS>phQ0gCYt=iH+kwZWki&~q zwOr;+Y3#@tO)yqN!|2M~L*0R*v?s_D}Yr{pmCz z=o$-jb(bapUS$^6qvOlgRq#lN@({P)n+yb6nyhtRJ%G%4stscl9GLiNz~P zCY|DDeRQ!O6$cMbL3gMIKNyvfJnzPSbh&?esO-@k5CPH)#MDPa%P$Z*0PLh43~f^ALPAn` z*&wGmG$atup-lSI$=D<2aWsdgOO7q>acv-Cp4OsxXzxidDVx6BmMGaWX0cydTQWk# zpsB%(wY6-#UciK7d0`JJs)c<7wDC>R8|*B417yAZrk5wyuHprEH4CJ%kl##gh@4vL zE8T}*l=R;9n^N3AhxE;LL-#h14OYIklL zhASu}R_*v!N9cXu?ifQ9)peHMLf)hK+8`sIxS? z^Z*T6xK%q2#)@T||BMa^aY$g+X%J_np1d%K2hum<4k|qVD(4w>yCD^-yMx=Z8VLq_ zJ2C(E+S*ElQfoCM$k1vgKx2kkMb@T}h#vev9VF$uv-b)r8MY60hkwk8(#%$sV+J=8S-Z(i|URQ4VI?+w^o=Xv17^;pn5LkxFZ{}!@ zs`_>^HVY}@pQ1qst-rX@ckBr{HsskI$=f_9sQ5Ud9G8$@3L!SlumwG4>@1d!2tkI2 zxN1$t07(Hf-$nHgRtaJat(`4D zD}EH>v(IyOe)RtA;O$}Szu{(*mYx6NPvWBz@?L6x{M;iK5ZrV-Im3w_E( zcay^Xn1^BR;bS^XdRmtWk5;#oQahN<<`d+1?9B#^Klq~gnO+2H#rIRhV=!E+hOhx) zqc%x&ucJrm>rV{6@&}5;+^)DrI13|suc~IfHn<6D-HhdFeDnI#=<6RvO;dHgL1sfz zZ0Hd>@KN?8eAx-*I}IGC z9IkTw-q+;2cxvYEr(G1OATgg=LXHJ$E74y2b#V8K}FCpBOX<)))NdqH3~0Zx7CfGSoZ9s zY!Q+g&R1Sno)mTqSc8{C)$?(<4OxC2S6v)UEtCgl&B@=xZ=5!hVwRly$z0YJW{j04gC)_>!KAEf_=m592 zUe=xiowI(@y;AzgHTaf2mj_TQ&?}3QO5qMi*nq|K&<&mG*a+uKvpE-06w(WPML_*; z-nZ}}truo8F}-MJP7k~9e$>B54L$PF60Q^C$a1?}d-QD(n*7g{+bVa9f~L-4pxBOA zL9zL6DH?OPB5>n5OxjU*`o>l9+la}~o?q3s5dc2Jo%^_WGIFk}YOx#)0KW}JDf#Fs?Mvl23~dfWvb7o= z0=OK5^NMs<=&+V`n2lZBmr**}Ltp6mgd8xvH2rM2G{^RH8Frq_uwMMAUJRY-t0Gd`hPjBiAHXL7KwFE!g7V878ACrRg#+;!4fo z-N^p#^)!dQmnj>fH~+MU=u|k9N&Z2jnUz!m|B7QlAB?(_Yc?8K42kX}0n@=T9Quc1 z&>-9h$LE|7oCr0i62B+jHy0qx_w^%#VcG0=;OK#0&4WK85GXvZK+kci5G9(6!i0F| z=#YuPGroXZ*^DdfVtstMSv$UL_+Evc&hxm)idnRB4o3Gk8|I$}d^MsK6R5HWGAF5b zfp7QaZwHNrVp8XXg>Q**DiG~38vCg}?s|O~Fm$Tpz!Vry;D!oYgF|EReY+HlKDXXW z3;b`uIpCM5KL*etbEMK0vP=za4ds2IaQcPkEJ1PjS- z0^V9JW+5bdP#r8suko7mZV?yGcJw7n5Pw z;&Bkxqi#KnPA(#V<`bvba#{eOqcBiAjw`tnY%kO30sjEgqo%PY-!3I~bY6F^qd+0v zsUvg>oNmD7o6A96vi`r_Uc4AxrtppeM)CU0O(Ty|g4DYsk_7j>TJx}%PW6LsxPPCS z5lpiRkYcRIegGVM;@JF0lQn|;kZ1&obJEg;oUndK2O4#2|6axGfEQVH><62Y&05A; zEy_j_=ydFXchGwzKLo2T*DYk?nhYxIyvJ2E?u}DW)@8BJrF3qKx&>7B$s~37eEHUW za*;+b@&{2c#O)-59m`H@g?Td(a1B8AhjIG6(U-xJ4pFQKJ9Tk@9(`so^oFw@dK#v4 zSDl6US~MKScai( ziZb4nvFmWhkVM5+l3$+NGD>LYwRYpfD~MN|B};r{F7}4f>-F-qoF8-%3%QPHs+*aS z^{&ir2f^oN%xtbr0PTcLdeEQ0PIPC&ZVF-rsL4q%j9BR&U{CnsqXVQIbRhWJ%<}0q z2%38`HNf*fiY@>$2eWEOvVb^f>ARJnpcW;9x8{NLEK4UYu0Hjia-G2e!D}k&sxhet zDgWXeAAEKQJtwJpP14P!;PpjLWa8%l=kqUruC`a#*#V)jEr+8nO=3t7A*}Mm{PqUy z+f{3lz;Pr(caZWJ{ID4gLoL9ku#`r~@3ncsfD>!48=L=K zeEN)uNEXu#=Mb93g(rN?S-MLo3km5gRD>ZqU^p@4h$XTFTyZ{(0BuD#(zY}Q=NFez zuVbDAr5RV=y4v;;ft1owXb5~@{zEX)Mr(FM`kCjDc<=l6xOMS<;X}PO!qy3(hWke> zsyw=|4_$l@LvYURAK`~EwOgwC>acai?!Rc2)2!mFb%DNGelxKp6ZOIgKsFsnOHqrX z$mWx|`V$!BX0U6?+rE+`JAHflQ9=8#zKbi*X8k^xz!U0*wQAedK~{NtM<**p06|PfE0Td z7t!xgKfc~-a$Fz&+TET6P=YVQ3-4xK4Gr=M_a=_CyYEiR>kge-E zf&u|dqfvU2HdpLLYG~0ygWfR^vqYaGeg=!qzL(?6bwQ@TUd}N{mrwl=G}ZLPX7&q5 z4}Ea)6UxBpt5e5eYPn1B<7{<0!Nb9@tsP=%2#l`L-ijNE1__(Dg)Sl3}X}33~=ATeUT|jHZ%IU@!F;3YkSwfi4O*R-mf!`54 zkGV8^UY^lHp!Pe1jchtt$&*;;MkQ#6l?jBL#=C0xyRZ>st4 z!aZs1$e>h2xzVLZWZL1(=`h3BZfXy;PVMjRb(TTqu(Xt$@%ejvz^E#MR6gF?1So$f zi1X@1Yo~g20(Zqv$Wb!m5x`o3nb1*5V&n({JV^yxvRgRPQ%r7P4n;hJ7jx)*5oOe# z2mxyvd%%Yhwa`tN441yyxRW@eL>Z5)_`QFy#LY{b>vCFEWzFU_=P#(;Iz4!g9!uF? zu3)8d^41Fy#XtoJK5bHfnLN+Qxjt)}51fw2Xt+q)Umuc5rvPo_^a0=hsoMG8LZf%M)Cxi9aG{|+sNRPkf+W5toKpfb-yrNoV2HtdFZdNtXdeeO z2yioJJF^RMLQVPEXlmW7ak$3c#@F{5``^r&eG{j*a@jcj$V=Dp(-9>SJ0Yzcq}?MW zX%W)%V@!0kXu1$q8|KInct++q;kkSPbNQUpZ&XfnmR=mWHo+xemQ3j#eEfYBN=`=T z^k1`{LyF|sJmctrgE&xUZ;_Mnh++j8 zKYr;1;q2N=!TX(VZEr>jO}8yTqa2AxhcE=-Fio8{8=IBWgY(P7D38D!MfHCUNA-XG zEt~Y3H`(Mx6#dgkzyCrj3KT-WnR4?I$uOhc8@-{-)Y=0%dEGXVnU?$J<9JPEJ##=p z%x|c221=j5J)XV(WFGSm^J1SJ6cvZcKoAQI6`(wPQwUn+=Q2cCYL2MMp3LGfu)!sG zyTg-Z8leasznzr|+73WvCW!V9p3FH5|EalCVIza!kR85x@#2L==2Q=~iQ9W1xz^PinxppiOzNX8b{YNh@zI(vU=xNzaJXJgdsBRpru z*{Tc`r67dp97($kmu*rSob>dkWT^0B)4^09Jy2?*6sfR=mtP9?tf_m9)o#rD>w^YFNXknO61 zT^EXc_PjwhHWl*|=<&b||0CANMq^W5H|G*I+;yWdkFu#Kn@xAUHLra`=&rZs5;hg# zye7A{)b-9>!iFN8_io!is_U2P`lmTeJ3H!nS6%-&hiO;cX;zYxK5t(K;x=ys-qQAND`auYbFsdI9^^==P6XU5EVI{rGY9`cWpbI^WB|d*H=rLR zko1Ow!=-`Wij?Mfa6<3foZXc*|K+t^8|M!FeDyzf`TeD>{6xO>SISeE1Q9 z<#DdXhi6xpe|1%D459Ci@+D3aXwz`yiCp&}$|iS^%V2{Ln~vnM2d4)4i3XT!%2opr zPqqSYIP5sm5=R+Z|K;;4Y6|)=23SK{4=h`Sv^uhbh^@&$=w0M3SrqWt4mr6TNteNW z^f#SCDyJb@A^_ack_yfRMiHXQ>f-YJU{QUv1}=az96DsTYTp_8!F^*YL?*)=pX|Rm zJh7GJii$9Xu4qb_beyUni`cVD2<#r=|8_48W`4+7N1oR%TbdAjNaUpr)hPe@L%%Q3sG2euHT9_t%sOF8#0CaND6bca*XT7{+S zA?y<~sl7gV#?9J+*R?Ul!(8nGlzETf>VO~;u zpUbnlF3+YEistao!F^^%kIal2^%D-l+Q2_e{L?Z=9`Cfj`|_@BPHBJ0Wi$H2mS=E2 z^8OQH0ro%VIbro7)$B7e6GB(`AKEHNUIt_P{+r`KK*7j^LN=C%na$m!-Wknc>n>FFmsHNPxx?nGVq`)tZGW+Df!Peh4#(R8Gnd%33O^v)U{oKP&F{I2U}hi08W9=OO^pB>NIHWLpZC%5|vVb4gG zFC(3uwYHjnQOefAR&#T!iSv1@xwF+2peB_Enppfi&~;dW$W@rf{_CF`e>DHt{>9uP zIa?-H@(h;kDEc8frG7s}mp8aTsCl@+3Us44WbZS`lyjC0B@CKi-_HQ&>jzAb`$ID_ zQgmvHdMImOprK$m;;V}TD>R#5sm+N2ZQzi@`8>kCv!iU_`6D0FFF_^f2)tjWh%CVd_EiB|@?!qm>Kf@4_?CIo6luNOq zJr=Z2rw_)#21Z!Ko$sVbNKlpYiOk*zGP1Jw{n{N*Cu{54s(v=|@T}u8IEY3+;~U^1 zlPSiCNQ=TdO@1`<;PJXBzup|C-R*fyoNxu-4+{K%Bktt@xo2QSGeYb!6lAOe=(=w7 z5drx{hCw$DKyuqeHT()t_d7}S-R&6WPyUmd%DeK~0iCQ=ZZhaKd_v4F4Y5N+g*!i#@;bz zlw|9KAi>r#g7?aVLRZnywpFmJkQy^@6BZhWVR3$Oq|B>gP4a*O);8;#kBx43y>i|W zzd3!L7k4tr57s5EU|pT=93I0tNf(&Pe3uMoDoYtT;47N4bU93dP7@g;*i&FSdP4|i zqma?-un6f;KH`92$JGmj!2>`T+@N$!z#z}&us2biKBQ!6Mo3Fb4e3Qex~47Aw%D;t zvKsBN?iAwFkXXR6q>O+T(87rzw(#g~eTQ=a;$V7Yl3Hs%onW`lrK0?ty$t>FT&ggh zhK_E;J`3ek4&G;+KsHjreoz3IT{BBjuBDhu;2d*0#~_Q5q|rntm2(weRuI##tHtJ< zrCu;wLG#su#+T>*?d1kohyU#se*5>EXn9Q(fcuLE3(k8OS3#s})lO{IxV@+%kw7`M zp!lenY1Le}WYq%9b_=gPj|g*PPVUvpHJ2P5xA9f;)H8B9Gri@IZSlpZ9Z z`E~RN|A4!lP=2XCt_A~&65Kz|#*N*0DY}=A46u7goxsE2Mt}*GM3LG8@M&TcaaP55}Zgmp=HvgHOHhd4ByD_C_{rdYW-XPf|~)`Kn} zMO^r95u|)`)5nDOxDY>dLDTdBvT*?&pzS+PNLun;e_2o=OrJyPx6BMoQRMy0n_LHH zKEl1*Z_qsuPEtfU#UT2pA}}JBnBa@zhEl(A84N*;=+vSyMYqEQ20PBJB^}QvHG-|# z5C)cfGN0VcO^-aAPi_W&zc0k)3%XNsC7&R+ht9}x9Di0Ix**<~&81AGVklddHFJut zyMFe0ubih%SEGR$Oo(fvcf2|G>L@;!1kCC|=WyOi2E%rLW>#>)R027_oaxSI0;7Jt zpWdf^_De43?E9ROVz8WH;4_ep7LCv#Ud(y1q3%j^)U*2#fE<@{W&Z7WsF%~fJ~}=* zj7T$NrUw36lR4Z^vT5W-(E3W{oK`nFzwH4M8awA&tdC*(z#<#k80b7jp({%=^Kqh( zzdq{LX=#lS28fk?lB7)LgZ6|#D+nBX*cJ5pzOi|IztyaWBdMR1p{86nO@|OlVYVFc zOQO9v2wjGKe`QlI$s$EYnGMN$K?o)~i7dDjnupMbcdHcllMBm9wm9W2nRu##JJYki zrlG7KJ2o`EjG6K21wU}gj{T5u8M-(N_kq4SPDq3@Om-IrgewGsL=}Zn1e`cL!%ZF ziz->hc(Tx1pht!Hr>dgR)9Cf5#dZErr0YkL#83P1Q9u3dbuA9tU}_2aJL z`f+=66MFT>?FRqdk-t0N(9O`?2DG&S4Q*g6rm>yPcKNpw>CqHQ+W#s`P2x(jG#H%(-afm5KtB`pdOm-taJ{$~JuSc9mn_)w-P4=+CTxPwY z1e2N?F>SNi40UsRQRM>FU@jj>j3x*$vcma_lP81ylRFRYW#)gL53>C%X8Uh+`gro) zI&8;Xs(gZ=4NO2QGJWW^)3|bJj{lFeO3#K$mot&xt6UPU&gDRC9#tMTc*&aRD8S{Z8JPUSQO`ROuV=dsvWNaAE|BZyNo6e)$$s z%Yr|yFd#@nCl^p!e3#hca$%@RSK{$Bf$RDXsPu8wBJ(}yaqQ!277(rp=M5~0>gYj3 z?6qXaxg??1$g`;3g0t?WD0^{I&~nB@&B>y^7<$PED|kvc2=$XOyXsma-lf2Bmts=>{nIKfUw)cIq5(bt8TynApI*Fx1Iu6pDCA>6x1ZpGW2#Xa`vWm`0-rf( z$uzzSkGjfa-El=uwASRJG$qJmvruJr2xj<>?zD`i_txowOj>}(Fr!3SZ9H3d>p}v` zePVM*Nn|`2-J3UXu9t>ot`?_tv45!!Pv-Y~Kb>AOo+a4;Ql6y(+;*-~X?tZ_ZDmtNk}8hq)EJ^*=v2RXOa6b=rin zf`a;$b3hBf(4@Tq$8t{&!v$&$F$&ge3c%bVmoCd&$m#=FJOh8Fq;wD`=rSiE>Le56rU5DG1x@6lvv_*w79P3*@B|Y}6}sJq$7i zLD~(LPFTzUJg^d8vm*&kD{g zv6<_B9%8uDY=BQs>et@f#6vC6!$M5Tgw6|;zIMRDXr|()UHz??dJ>88e<=2KEA8LfhmidaEqz^JFoF&0~h~a=*`6wZKu)6KBB$F6vdWsWi zc0(C@J4IH-)@%rXDE0ehebfA3b8~ZdbEmOs`p|Py#9868sYRrkwl0makegp-_xw#{ zd(bgdS`P^U!}yMh9e6f-Y!e|k@AJj(bKHx>fUXQ}{cYN2f1`=z z;M1qe;ojggoL|7P`SmArLjLh{Gxm@vKQ#lk|t`c75&3Ce%<9{zu9mPoM>my7F zsG%f3oAvX;(FmtDy9(DZn)-?qbM63?^Xw0SugqP|*7JP~jzP|iEN`M*K{|({YR`@2 z=K_`So2$eBem}Prx?BAA@aXvLa4sbg9-dttUgqhXYaLRZ9PWQOTu61ge{gxe_@3;< ztd8JT^pn7%G@}?OH>T;m$Q@a8=DI(bn8v|%)}E-4^9$hRMriAD{=!;Y%PwP~$V|Kg zah9V@mM zrlUd6gVI}qX)u^El?80cb*~%vqN~NcX`PVqflh50OU>r@METZYp5hf^a*LZyO|%)E zp1%bUE2o5MS2oEtjA+=CtT<4!ST70kpd@Z;Ut`{*6Z z*%z}L@Gn2)arB&;gF*0cp$Ap#VObFO18*)Zv$c-G&KTSt~YUN-5!(3d! z)}oWv2?{nKGHL&Pzr*Uy==A-G(}ZHMZr|+nw%QXfof!)J4u|N$z|nBT&=g&^=h$*( zPA}c`!Qsf7a|Oj_K+Pabcjv*HTMDa|&6PxBn8|pK^gd~hE(5JJ?5<%Ax+-76PU3Q{ z2Ox7s@N4YI`|zHFo~dE%WNfQt&0)L4r_IML(~9}`r_V5(&F^je-R*t`rj$--tJV5{ zWUOYSV+d5TGbX~P%!bM{cp%Q)j)?ORMa8a7)^37!2FsLdSb}IkzkW4&Vsj`3pP|~l za%EP<#e8zKq2iVr_toL^pT#K))b*X3zg<40QOt`r74kY!JofGwNdC>`wfJc0C=nuh9A~Rg#pK;_5pBKijCSu=%ax|DXXI6c>@^ z3HL%ujuMrE0=wiI#T>39Hc4l79%)FC31FpvS3f6wosFkRc1k!(>T<>CB7^z& zAZX#~y4!p7KCRNY=p4ZTOI$>6LG`~=?MZAbqNPY7BpM#!X_}7pPUFrL8``}_TuVej z%uS&JBW2V)6+i9QY-Fz9RPl}t@{eS~so(V=EZbGWc3z#Kwow))@GK7!z4`R<$>E1X zm+osNs72+cMP~8p?74x2DTE~V2-F%Q>%{~U8+uffoCEIz%Vb#jSf7nCbawM4I0bmM z;q((FNd8fBc^$mkqJH67*X4v*JmPZ%#Wl3VWB9fkw@fP=kp&z)TjC9Vmy7A zDfxG!Cp9w}@0#2e@y~-Rd!HAt*_q9+k~zxFXUmv{-mCA4b6TsUNua^4TYYtiC$w2* zb&VI_kWO9FMqXDPCEi;P7*|!S0P}AYD#L?n>)0?A6-vDxttP7;5j%zl55}eO?YILj zK_zu%RoU2-3aA);ctj^dL9Hlj`FqleJFO?C<{q&b;N}Tc0$SDm9yC;#?(&n1H;X1QQ zhqHPJFNoO{2w?(zXK={2WQ*^{F1U&w)uz6j`ICX&TaKRADT$Prc!Dhaxb-SLP|c{e1PV6+uFRfK~9 z@lGH?79fb%qH6W7w+4fL-3D4x_5*0;0%67)uq_JKB zG+5^V*NILJ&)!}A_Tq(&jrgw@>PJiem}1PHF1gY_KBym+4@VcuT<+Y0|7H$}X0d~6 z&YR<$a_8X!DTd|9Y6_cZIp`teB}~`C$_Dwq3uS5r~^Q;DULj`+ckImUi z-F)pA8D#Cn7)T8nL#fTFC4ktfPf~PO+^EB6#Y^!DgwLihT|K`=SOx{a2@@G)D+SMw zH{+McKl4_@d*+5=_<|j`>OwHZ39?UW!sxc$jvDdfv)=HIlNV4gV)dX0P>YCphR;P# zk7n$m{nr%lfd}TMIn849cr9w0OW3W<<(9b=_ynX~so#J9;qbC`e17&lxNQO+cZy33 zo3RM5h*eRz-&uGO%V@ff#FmbB^hFgl$v4$boy?s^>@TIA4d+m6fe42l;S%VuO4888 z%mFmGtX>~oIf(z5nQK!hfd5q69OL81=i4-4}PD7zVHzoU#NI!vAKFf zm7grjRhL(IiOu}_OmiXtF6k+25oT|XhS^s0tKeG3cg(8{fT7bn8xji$^N`KtF!uYL zoCK_B$|nR+OnBdP;-d>|pNqKi5nY%IlTte|QsCj01`{kU=uLsN!SYzYr$({rp#2}!C#SR1=;lRG}-SZ z@^oM9!+W2P92LDv?Wtb%;t`4|aK$FQ0ZagngwnZ%wWu9~id=i|>$v-#{VPrvsQ{g&vl%%FYZfPk~2e zrinyZvxkW#7Cbt)BE(glW` zk-qoe95eIo_VUa;K9D)-@(|EFK;;WsQXmKVYEj5(^aZLKyQ>wsD5H{ADqmoqLW#r; zIS_5wY1dTaR9mfJE*J=;#wO6cEF&j6*{d*_n^QNvG?V1f$St?vPzn3>@Ckz^=d}b6 zfX$?j<}7RG&o;7T6%_|}hXX(iE?5JGISH?_Zs(9P4_w%X4#=%2kk@`}hv_PDe>sHd z3WE^4uKd&6)|;#Af{Nbw`gu&wN*pR%3SRop|2h0zK`R`IM<6A4I75qR5Ks z&HCrg4CtlGhAI#4PlQs!GfFL%HHMLTe&{8wIpwe0-eBqMkMGR6VA_Mkx^#T>+{PJI z!x{Gc>YLdBEE(vLgJ`H`-zQX5wyS#7-83P*V{~+5k7ymq9JG!{M1s8XaVVycg%@)X zO!_?^u6Zpp3(@3u1B{@(w$gobe0;^`5+jFGG>&`u#mvX5Q&_oQP9f<*)l)<;oYwCY z9Op3duscaG%1;b{<{WQ_HYh#JkdbpR3SHFIurVB*pT6C{a@3+YwX=mWq$CciNU{;%!0?zuXB{0;X`~@EL~AsUSPoKoQVn0B0rp7HRfOOqNycmQ8DM4*jGdQm zT9ISsUg!k(R=OHS<)qh1m8Yt%o?wa!5bR2tm*nRP3RwdL(pFl?;6it3onf^?5hknHp+g5eT~B`B4D>qx8^N){tmylfr-7Tcc@gs8mM{i3#n zn30iroe4pju)F)cj$vXBK^9Kap+f9AScpxk?M-pixgDI0Y5NzgOCrGV9+G}Z z6G!VO)JY=q)3?|ASLa7-ekr&SPDfoT6JUk0kr=Z;jms2nI`*i@tOsV9c%_2;>UAo^ zbNFjq3y?C++R51SAojnz(%<+$B}fBGt-BY0w>_EGfm+zPRfB`U5I?+}+2)eVYJwVi zloDQ7=}q|!(e16YsB2qaZblFTI0_8uq|pU9bHW`h8fUmlF2 zJ?z3Jy}Egm3?>+0HW}G_3X+U!$N6Wj$|xd(Th5|~Rm!5H-_o-S4JKK>u(Yc^Dit;+Lt-oVk~8hd-9DH|Ga`YNoQCKJyEZqMxEc-EaXb}TR@QBJHk zQX*}8jB34v})KHH|7gcMcIqP35#su>+Ke62n7nDrfiX z{YMEyl{3_FYoApTHZw5!C*lom`ocrn51?T$eo*01p=%=G9AQX%#=)&R)mz|4q#@lZ zHlCH$V+J6n+OJ19bPBOOqg`jv2UCyU$T=9AL^vc#C<8OSZ#@XXHhu z3XEW${a^e&gmx5Ut8r4(Ao`i=A11C`MYNdV z%IB#Kb`k>gBaeDG^0au8SyO)srgZD_`9*Z~*Na12?PmnRQ{8x$-EsXO`Dz}D0zoDL zc(b|-csP+Yjxy?*_y3wck$F>8Elg@g(@+9{!3ZRQ>|SkH@k{y$5z$*gKg;fHKO$AZuj{ zNCiqznZAo@MY{Cor7S?$RsXEoT&@3#>iM#O$EhCjpBDC1n|&6oaYz@=SCp*f^F;9g zRewUJdIwgXgY!3+qLo3Z0cIt7UgAJklrA>GxdQ;|iKDpO3`?9c(P2Vqf!k4{X<9M> z=@Xnn5pdMuQj}!c8K*a7AOK<@msvM1&{`;VD@NlMZ3!$!GOW;dV?_QfF4+j&0}h-v z*MTLqk_SjYY8_|1KhPNR7{tyXN0gAj+^cTy;c#yp6|Pm0_eqUl^A9tt*xS{7{eB-* zD=rHT;)HlQ4uK9N*ST?@LblaLik!3`1R6kA12B#07|IEsQ-E25&^l9S@37Q@x=yiEc9T6RP!Zvvy_z>Vv@n;}$YJExJj2k7o@N#cBp#gj_3{LO37m0N*zQJ< zmHnaD0Us5ca6{HHfLic|L=F>Cjf}9HQL(Sb1Nqb&nJLf*3j;(WVUG~}%gX+=r%?-SU_hLE|(cdOvEy;DDL)Cq1X~Ix) z6=>7@2d8I-wZt-5-$_@LC85hHiDN2ehlLb|c*1E1DAR}qS3n1ELSg5_RVQMpT#Jye zhN39>gr#tfF_pwE;cgD&!sh*N?&^C(vjPwXvJNuO!_mRFr+uJMt(^%0EqFLg`fl~X zY8vNCI#M4#U#Z6<8sO$q>yO0Q-3xLlS5-ZX4bY-aM=qqmo7X}}<4NCOIvMqYfTrTy z-JUmGj!|BS0@AYN0W1%@uy_0FC(w_Owad&Q{KjmpWJkK`$Oxhl;SFW+vh)OpEA$gT z|4?rB*kq|J&eN*qu&rmkK5Mjl_DF3usn@^wbad1_K5Ly_U+iC99bTT1Eu@g*^6=s$ ztVZww?U;vPr04;rA2a*fLoo*?4d(jpi>k(w%*GuMxRz*)miEHa9ne_iM`H0E@*=uf zt@HkirnHXRId2LRd|b+h!U=f7K~rf@F>j@wg}4BXaylZy>C53<8nLYdvta^@$m#o& z)`t1#y%hpqp^%DtGILO*<2XC5py!$c8$!5^DmYj01&o>v&=$^a%m`U0`W^(&ldNWs zs5q!tk!*!eOv-^CsR)13@G>Z%7T@*(l47;ZG&D>@*o=w-#?aRk8`tS<7`c8r!E7#~ zVT8bz&@3U6kvN-0Q| zI0uA=_$(vI?cTd}JBQ9gC^@A{__)4+_2m43)NhiuEqc?sI6T-mgn!ARowEgc-1{f? z)8KdQ*!&-W-vCw@m-yTUhuDP;4hj^&Wj=c^YfpLz>H`u8#y-H5Mr){Nlu>>xHdb9b zwD{CwC(EKnQ=t-+(7Y@oL1~)AAL9NXSW?Nc?X64&LAlLK2G~t`n@WNyF=1lJKqRZN#>IY?e|3l+G%MK0iDZ> zsGxoFkal5?VPv&qAr?7Da9Lb;9>zn2(%)8?jSMbE9v-}W| z$XpOTrD;PYGsPK_@0bD$!=wfz&#?Ce%C!um1~O3HsSf@=8%@mw|9^6Q3qD98V@Aa6@^d(%AcDC zOj(mdzX$A0fVIWA*RqMB->(j%_cZYto zZv}ybeQ6#u%S}N{awd|WjlftDw_qWLc(qK$RG>R69#@DGPFR>Un5M>t^{F7s9}&sA z?TlZbu2!uS5X9L{CN%8kz)rDqydK(UL#aTf-O$g^i9dd=D}Kamz1o=;?(LTnD0Rh7 z*B|U!YKy9EcU_Bq7J^?~X?$X2#NSaoeB-&kQP6r}RzSzS=^nA`02~qT5iEb2ZW1-z z@1HLRzd+H?Z~5Z?~U7ys`wQ` z{~?v)ZDV)c6(2enw~E3B$W{rD9Tce?=y;Qo1VA~d?r|Vq_l8Eq=&9ZppCRQP;Ogv| zkybg(hN*s*s2~2j~5A zq`7|7#O$n5Qbz|!#3U%Bkk4Bmlr~~XSb#4iGAHbL55g9!c0b9o5(>9rh6K3e^+D?q zQoaI-bxNKjL+93M`HRMx*-k)P390CYqJVa_<{beWCd#iI2v}p${Jp77))YsI8?w0A zRurauIF)=y3|pKbu6q>rHwVN8zk@EL<69VZj%tn3eXhhEkI>QkZnH};2<~|)M^fV2-cd9(h&pNC zoL{F7OFElF;=IlCv}q45n&)Tms1O83j~c5_NG1*M(MLgV5tDi0R}o~3M3`=mIY{65 zW$jOs{q@B(A3YjyClxz~6)*VKP^W1J!*l?KD|#TnG;xC$y*jyXiG5X`yqu67YUfar zQL?Nym@XKTth*49>S|H57Hy+4=j9%@6ATb`b1!&*pYESUCnZ+O56~_H>kQGKd?5UD7(*|0GqK7?&h+DjY=+R zC;xn)YG4PKl44Ra+4Txs5(98-#9p)bW|qWR!~Q-?vnl)Blfm0cf*w+Vr)76__7IP0 z3J4e|Ex;`>9FxSzeEV+{Vt?kq7N}mNj~jFR5gy!<>@|rYa1CC0A#FA_`=32{xNQoo zC@CoCNeMvELQ|b@7n~v_b?30sO)$SHT3k9S@-xgc9A(K6jvg308Vi-F1<(J&I$c;) zR!F#qh^^O{3#qUg6|H_foO%Gu488+etBUT7k={Y19|h`x>BJFX-lcJI5H21~y5JEL ztCO>7whtS*sR8%vyUAz<;4O>%-}!w1h-Vrc=Y${$LNI_do7I3wuwEGhP%p;u=+?^w zf#`^ysu;q;%^pf+c+;Db`cTu_zzr@XhoI$JAX)%u$r(g#49H$SGz5@7yJiU9Rmd5p zH|%A1qEsjFEf>5HSL|`UJDNcP5cm!~E6q^&si31UP(sI}aN1@3QlLtI)v23A+VkDGO3MNz^1% zEUmp|ro3uln`?3bM3w~3%M~*0Ghz#ZKUl}z3Y^;U&i`!x3zTMhR#`iHkjKJ2Eg1yB zpo$RUS*0Y^g)$un6#O|QENO0S5T#T|>r50n-79<8Q7{rYV3*D4^YC6FZ3 zR+=(fU&sST&K#2|R9s!`UJ(yI@7LNZIJ1uJ@p2tJ}ifrvUI(nS<_KJGxzSYk>u~sD{z~SGk!mkfh&FN zO&wx97vhKO5iYc)*V%d_SInQeC-HcGU{-KXFU4)l5$X6+s7vXYfi7V&7HNLmHY?r+ z0CyNEeGUbqnpb*^QeDl01Xt+LDYY@U3Rl}sEnmZd<;;^F;bS?%htP3a7g4Fw? zsd}p?z(-RR?7R=m%{rXQ1=**VW_tmR=MbI)VT`2L={WCYxGo@8o-xJM?l_pQw*5;R zc(YOf37G*p#mLvdYgkcaKZVlDuu(}SDF)&Sfrm zad|9Qk#gnRcv;6(%&b#8qn6rXm4gQiBkUB=lXOPQWWJW3sTRqeT#@i=oan(=3k*;K zNt4H-2`CHjZtPyh!FX_^FaH5U0p=KtBMyC}bPgmvP_iuo3PYVO3EsslxP>jx!Db!D zP){6{lV$yt*LwA6(7=;AUFN2T6s#u{gv`oAo`CQFZ=CyyG?!yzfICXMG`9h}x;qsaz#{wEY(eK!oE;?0daI~d{eu#Obb6d; z=w%j>?sTgO?)}65(?YV3c`|WRu{*fNFmLQGPupCcbbEQymmaAe8%|%LDV!~=4LR4L z)AN2zb2-rN+6e+M=W>t(a^NL3k6|`k`k8Qi;%-a{tIHlmbSKL+BCr%u4f+JVDl)vM;2u*8R<|kVaM}ug=4x$3XwaZob>?Bqe{e z@+uHY?J<{Ri~3HZvA5G`&g05J6|(xL)nb}C11KXKTpF!$0yiW5P(&lRrA;5!=b}ex ze{~n1Ypp%SiF4t|d8-a@!S=}q)I%_T*GRenX$iYt*X>2ofzvQCB!(riv66d1pm<^x z1G1xHl3)Om2@|y;&?x3Vu_@9q3~MDvDIh>NiV3NZg2+438VGOeB^;h|Y-JviOH|~) zXP#2YjB`jCTLYnK$=h;?hb9yw_LiR}I=c>HA%*k=@VbFOS=JDPvOobT<=$1P=utw* zcM3hJeaK)E-aHk74}@(9-Y*R1ZgUZpq-KL5O}ZJ6@KqE-Oa%A@0sVjeZ_|Ud$xM)r z`e4w@GcqJ%xaYM@ziXCpnNFP++E0{N%#8a^GL9caAhJ5ng*<;>Ol?FqBjOE&E2{P% zmn2Oer!o01R5!Pm=ITzaAqbI%^)q-_{krshp8a4!CV>T9dlVzrcU~wA9ckJ0Xdocd z$TnkviG8me{>%h1JVt@A=Vj}IYKaDFU9Z2`Wmr;_#b zK~3tPA?4aL+VQ!InG5Y7wstV+Ju*DVHLfgh>Z2eQQGr=n6$(Qx{XC%e)R^8=XvicJ zsM}rVhX;M*YcooU#>Zr4WJAW5N2z_1jQxxa{-#aZ^!fmtyk7HyxhHxHTY3LTwxd!C zafU1QjuFa{yO0cG&UlKJ63lBOqhOx#Og*p&d8CDSxp&brHarD-69j~I^gE%=j7GRrgk#cy44ND`Ob&9AwkFg$kjH$_^D8cqHN;(?^ zFD#m}63TE1Lj#7_a^QUEr4Wdt=mQargWLjMPBXCFU|hmZEqYmt%s_7-*hpi`^$|Jc zk-pA;pxC;Fv`76;w>RnX3Y%_H*>_8qof4Zq0H*p5x37%z+X?ht4 z?64zYdsWpDLZDktAVn3wGr&ftgo^Dtyg%uK__tc^&s;N%u;g#}gA|;hmE(@9A$6tv zxPNr8`r-G*T0l}Ls(G5r_f*U`Ol`-Lc^DSWyt$Hz*=0feK*N+bK}}6uEc{g)hCpum z2nRd-v#Wjq9r>R6KbMm{h_*)SxGMFRMp=E=9I*1b%OAQFRRJ>(on&cZ1(#!a#*^M?0-K?~c@nONc2437ACFQZ zN(%QW?O5`EiuR{sErst|ZaNE6CTxsHM(m^ zg`{PZ&3b+Ex5=p8&diry=!T!LSz zT*C8H8D(!CWzUaQK)CK|&ry!1{%h-aZCA*7JP?7y7Ls$F{${g#!vVEzX!X z%~T-}Nktyz>1e2HL&ezz2%Z{|O|W|6EG(y}Qg|F8?IYz{yNz})s_q+p2tNjkaYp`7 z#^NuRYHApe{t1P(-sOY$Ql|Z?Q1G#M%f1BN@G)S#tUJE%Wyduo8qy2%SJiSeRuJ#s zk_NJeW`et_)^hq5@d7tEOV+puq`dYw^S$5L+Xqy)}E5jfs&LC_#oznlpCZ6oQWoS7rH z;LtL6IRYG`gE#~nNYNUWs)%b8_BOGGif6TIB+-?ZtBg702ovzsSaxCZn`DVHEp5To zq-1@-AwZ?fUBS9;?46*fOOxygTf7Tu#Vt39gVeYWV*<}Gv9LwN<%R_2peK98NaCZI zM@AA4@Ovc@4(qy)YiV2N1BwnsF$e9Ob_KfL%7IN~Z3r~>fo-wW&qLeN*;n6~_bYT? z&(zNnd5Jwcn5*iN-Z7aK%|tRQrRA7-5y2Rcifd$WTx0`(wxn4(=tj0j-hxuEpEQrt z_Z=s2=*sC5>rYdHqk6o%_5}=v2pbUK=rP$=EuqhzO7!zb0~u_}XBhja$Jo~NHdn2m z6L#@#I?Sv>QY57CjHo`2fp3WVV)z>iCIAyyVw_L zG8tCD>m|cqnVgDywn+*002Xx2u2N<2Nm33=u-3e-x`EIlT){^55!4Tf_o5xs9>U|B zH1aTxvWdZhwjL!RW>9TEDwD$j&ofo4BqBM_?QlrsG~Fv;-Pp5++F^`AFppCW@v~^+ujAi z0%6rnwbNaYHwyQ+xyF<-pGsU4_qT?iS9b|zTm3Fxa=2pPjK?1$LIY>WB(y7r1K-eC zrgmF`Gd3C`O3u90zn0NIZ8{DqJ&Kgz6=4}*LCC(i{eT}OIDkgtE@4!M(Njzn7XmS} zzbtt_Q@GhYg0|a>ZymvJ?N9AUF~naq>MIwd_~_p!9Cx3PiZ5xRk%=oH6ATG&_)3n( zU?d9}s~vd9DLjrgAE=fdpJ(=`?UOU90AsGau|K`FKmAz^l0&`YiYgrBP)O-zS=lzh zcT>Oq&He0>tnHPWIGT$4kt)^hZgbp9=>lt0S#&|+P!$7a39|?f0@TSCnryaeci|8l z=WbH4j_ZEIy;5S=H7@0Y_5{T7&A!i z^$84YrMg@wZKP`)8&`aJ{IH;ihgqg?ls{B&Xn(Xg)9g0!`Uo?pMI-C3IK8rbsR|3# zP$^Hgxx~7S{f!R$3jWwFRXWIC_j)SIzx&nSb$nbx|6|I%Le{svn^Ih5*>|T1Y%GM1 zfl$NZ4gHMtAUM3ox~^HUQq^<@?v>fg9x)-EX@F37!^GFCOEilFuGC%?W1a}?Rl{3? zYfzyGB_gjE9wtKJPQ`+~>-_)OzZWRAjZDh!zAaEUAlr!iz2L}U?f8#>Jon}bDJFgb)6!we%;NgJk45KWADjohSQdZO(W6ITp>VJc6z_7*0U6y1tR&F?Z zp&^Px`!eH%Id=uO5LevBT+W79V^ZTr@hD2jCP+~;gXn`mbHdVy$4Nw2%;zK{jIkk_ zWGw|z(_*V)Kfb;}uqCR8$>|dK;5!Evfp#5t;`5U+aIRITsSDrlHjEPjiUfj%MG6#V z6#(UGy!J+4drQ|aEkBk*5=J$@qG$rNq~1N*xY$^qM5ie7G$qjv^)-Xd0@t}#fqWnW z!REqE2E>h5G**u#g^*!M4Axp}Y|1kWLE(OT|7iQ*<<71u@C1Z6qfvOl`Cj~V_KV@~ zR$W6nt#F&rVB?bEynULI!!ow>Q%R7Joz-dLvv4(yU5({JG@E)Nfij9O5#PeVz+keH z$$peI!>8?6IK|;+4&T@l&!sF^Dz@_~n!+vhB85BIRca06o|s7lF(=MbevMK?l*^F1 zh?(>LZqHpu9|)BSz-?ckSS3*pm*_HSaK<=-Iqw#L#1}nnWHj5bJWAde9Ku378-d`p z3`$`}gtjfMGD?~7ultW;__+A$H{>B?c+QFBm89eNI>&rqXKEvN58ibX(B_(M>XsP{j)V!MII@@R-ry?LgmbF`E|f3*se=%iXJ&jjBXp&gAkdJxS+vp8 z!g9tqWMZK+j65?Qg2bBzUp)&}8x_DB#sZ=4nWs9Nu)!7-oRiJq;zZh?L zA~@EHx-*yIGj?s>0=wDRX}3fa(upcSA$1%2$c{dhYS4?YOd4-;j#NQ37rl*Y(S%vS zH{*G0Dm%l9i%xY=K0Y?5Ql&0j!IvN5?zASJYf@;<@RJG!4Yy7YZB$D`!4MTijwtc6S&&g^}IAw+1bJ9;uOBB3Po^ZkRf0|TJ#a_GlY>Yf5hiRkR*^RwV&yBQpu zHl;9(A!mZB^<7QCz0CZK`w|iywP9m>W;<3$s}dTv;+5cp?_m)|d{Ojj;@W<-cM_bPs1M+?b0Jj4vaY84 zCLWbGBSoJNtghIbNX%fl){``FvB~Z{@@e7RA$JR~wW-p)cczgCG6ZMT!y1G9*lTPSpfpWskhm5Vk{Au{$$1n0+Y0E%=bQQ=Myxk7cqJT8)kV}J%x5s3Nw~rb zbg8aMfj*H2NnH!wd%OwVuOw_1D;p4OdnM_nH)O>-xw})GL3UAQ!726}n(2p%8O?w} zwI{W+h*2J-+AIwiV#>=zDSbPy5Q#4!I`#9_;qj}A7Hm^eNC3UDV@$GV>2d5&wlI0| z0D7OQ!7l?>mLiyiblJR5%X>nG!DZfFQgtGh(g9e)ky69_UZ~bu*#g0K%1Wrc@*$Eq zK6sbBOKMa&wr=RwIPS~B5T_nN^JTUOIo3Fm3gu(t*T6lFaRXXOJb2$?7>&48u^d5f z+ftI0d+EUb4N{*fQm$`vhiy$HbE`Gql{gz$WLbnXA=s+8kEbg%MWNMZRLOVbgR0?g z6L!VO5A-6|LOqYhHb#KvYAGBD6Zut1j4{k(Vub!hjLCYk#1M`36rrIQbvRSKS_YMr zmXQQunj#1!kt5z8}>c~oc#A5Y+tq#u^w^+)mYyDW_-K2zxd1x&qyCcxyv#Q#mf z5k24AKe||5nR0*i;$$0spF-7{e800k`TpbD+lR-m_jjq6s#JFh%Mz!H4S6&HFx3UW ztD5@9MyYm)xCPunvG}?f{0Rk&e_3)tdu6KWB>$rCB_Cmz8Qr*;>WBhad+p#QERa_J z#H25ehjOb8tum~0fa0YS$?Q4d?s^qMZN-@pP9nej7`2H9rWUiemoy08d(^!!$Htra z-rK-dD$jzd`<0E_u*mvWM~7}y_0l4kTTi9hVHkJL>$p&{St8h4so4lU%m0YP54L#2 z+Aoxbk-N!SCvB*oYsiF2!-_9$GlCS|Lmdt|?8}m%UdqlMMYmX`l`gqPA~ z?|t;{-NC)#6_zZ&t}@>JuHkBGYkYJHf}ycpZs!9UUy~OnLWc3D{Z*n8|MqWe z*{eF+H%nL7yxogTZRzT|cM;U*LeVfulq6JYU1wz2kHM;V*5WC#>@v?NwwqWew0NmPBNkwR{YE^6Ui38^L- zK94Ibk)SHd2`?zVK|!7uaP`7mHJ)8@YZff+LkWRz6l-OO>(g#4#rs&sf#FRU=Luz~ zS{hSR`_Dp!!Qumg+ZGHqtOg_F{{6FHZ51!HbVaX5xeQL}3KvAn!Vjp&Z_txU6kdR_ zH;q`%gCV4sbvKN$;Ad0dj_?gYu$)9BwhB!}LA>;h#dPWtH&$s1z_0xw{Z3(w7Rs1yT7{8N;_*61C(~wVFT%G;9pNDHE3<6ii}=q+RRCB z>U)^f-}(#OvR3`*&KoqkS<^0^)UJN8GC_lLVn6Nfn&8$e9^%`I=5s|U(JyGIHORzs z>h?HA1AC!}iM!3IqcFYO_S*dX^_$Mx#qfBib^rl?kZ;!PJ9)Tggmm-(Ax;u{<6 zW##Y>GacCHy9s5=7(+p$T6zZ2r257ayiN<+suWhcwYrmaKKoxo?jlfX%`Hl8Dc!mY z%W&Q}<^nW43&JoH6U+OWpI zz=x1}ZR>ed)M~Oth>TbpEN-Dyv*P+TMfz9X+N-~Ha`sc@^;3Du*d)lBcX?{cl}HF& zIX4$up%7Xiub>q_v>L~l`AsKssQMvZ}x zGZW{x|92_%P0a{t&|q zl=6nY9&0@p-d%5j$Q^1y9?VdLb91L;hqdK&v=*YV8(h89K|SzNca*OY%3TqG$>W5l zjEbTh6!F_K5YnTyo^KYf}~{stt`d$t{!FV(%oG6JzJ7sN`L$xFZ`O_Gm! zf2!okp%FRp6Kub|lb03KP%kh;X#*h&@gGzc!DM4%?67IzX$+Itn8z+`Eih;bmAQ?x znfqZFV9;0JRsfr|g{ihZ3;oX7iAqYFrN#M=FAtyJ>lx=ZCT#Zipf;_}JzH65xO$us z%SOU&bRly|No^Fvf;nxL_Uy05Np{`)3LTkKsFGe^k)bD{K{c#}S`?pFXLbGC^(Si^ z>rdM4_0D(e-)(%``R=hfQ_2lis>!ks_vSpVu9sRa0$We3YpVj)oeK{^1nprOQbdJp ziPtMaQ*ke|aN6aHF%1qfyj0``CxZ$)WLl0k=AWyKxTQN@1x3DFKKkjhf95;DB-){Z zwP{@=_vH5B$@1axD?fD}H_5U$G9R!nfEBw212KtvhmHw~4>k4CasF+7V5)A8;qhFQ z+=&tmIk#x1lj@u{qFmp@h(vdT<)=28n2dDw)W9j3a@A%4pK^G?n9Dje$oj-UVuio~ zQ5HA@fLHQ5NiuxN$|BJQLHQUXyTSCS zp?*ScN4Myhstk#f63b;$PR(oxSlkmFs4Nfo=`>PbAs@mhOp(1h2oQm4x zf%ct`!Hc7pBK2m{V%~K1x5_r{N2Q}v0;JhS5hl@dSz1Le6G?$H!ouv@OnW$vMXiNB zckBkC)CQ{*Olm~-Z4S`Uzc5e&uK(dxo4`pp3%y;U`u!r>B%5ze2hHI6GHnK?nkl3SJsG;@ zp(Sw1dQw}B+k^>-Er(LZJa9_g?kQo@l$_i?i3fG)#-aG`Dv_>PxWU7PEhaOt*f@&@ z3r3r*>xeCIjGwMo7`#lm(F7TSoiMh(u>Tw~38d_}3MjR48$&s=`&u9ZwKj zQSbHTfr(& zY8|u!v@DTq5V4)?y#yC!{5$@PBbD#8Qi} znT@k3x%!>DX+j7JIfdkSGvRTVSk7eRhE%OTU{1HU)?J>zNd+Kza?@50cIH_H34p=r zp`ZU(A41~Vam;Y_<597l{8W4F!X={$GLDS|@Fn=H%PY~-$&y@smZn`QD}o@ zDhX=_QNMwv4)~%hK*e|7?*$-P5B?fUom(@B;Fd5hJb(Ws=S9 z!|j)NJ~$>tB~8&5Z+QW~imV!G*6+S&_pQ2E!!hzl$-Co^h6hmFhVL@EwfB6x*QS0J zxmnW?Ys!#?#$F%g{u}76MvA(FvJdlZ;a_Dzv+DNL`U_q0cY;?j^K*n5rDWqEZSbOV zL4MQ4CDov!gsJXy9YLE+?_Vc`@BVdi6XQQO{M!xvW?2;K>0m8xe>@8W60cB0LoY^u zE$Bfk>hksm**vhwlbzU2&?i5HA2W&$9Kdu>+m1~U{>t4j#pKnf z39_vJt6BfvwNfLWyUI2$UK^%nq%5RNfn;^Fs$qvNwhLD`%RMQzE=>-b;*EZP;BYrr zx`mYqaVhyX#%u$qxYiDK;$HA^n1db(BEaj#(*e1(zkYL*yrut!@!Q4i`U{qZbQ$`n*Y7HwEV51#FApYIxb&;g(tF?xR_asPK{e0&cAq7ho!G6AtAay-xmHs55SHK6g7sd4$w^ zR1Ke6oL&Jdd(qZ_!a3{Jt}wk?us6LMb_4XTF+Ksp1^9P75xICh z)OCx!+od6_zD>~5gI-1V^;)jKQ`NBGjV#`!ncY`=K8E8bx1@J*0bq-9C>aLi7d7z3 ztG0!oqC36`U7Ud-(6qXG2=`HDE$z@+6t~$*s-~p=8S_=V@kev){0tWifS|#pxK(smApA##D?nWTb|TYbvX#H5im|flu8O5y`3{-r{egm8q(4S zt=;_<2?zJ-O9Z-hX#&zXIxVr9zM_jHQNWAl*A!$E+y^-B6{p<#FjknFRM%x&#NsGdNfDZ)tzk|Fu*2_3?^- zVa@+_qwwoWfqY}Nc%f6c@NMDO;_a34g}88~_zbvEzS1pS85gdUde$kCte37lE=W{QtWJ|*m0t!(@e#fj0_0Pf??y?ydhHs~1} z>=hayMnvVKshIH~xTL~wCHAPTy-`w`fvB;QUaDRL2apu8{1ZeEhD zfNfS0^Rdc65wo_LfjBFK?DBW#j6>`80pY3)M^|x)FcSH)_`1m7#*l|EkN$9U{L_)# z_n*4T`WX0SA} zn3IWDIpl$H^t!_l;dy6+cH={sqK9@<`F8~Jw~In!gIA7?b<*W3)s8VE8JastRpT6v ztKjJPBx58siwa4%Y*s3DnBzRmwfi+jLwv(V6$Oi5Em`%9b{+gEuMTz&cb*gZtFv?X zQ8mEntpjs-2ArJk?(A=$Z#_TQokUB))5VO;NgO755Rgi0K~W6|LKXTNx#a@}7veBA zLkF`7{Z1~o*;ROubvJAnh)`%hlCcN3*k&xCNJ1!?tkzDCMo7eV zO0r%!g+zsB2qguvl?h?`T@YG*)Vn~Tph4b_q(g*; zXzlk}uebuyW^f&5txmhsX@9pecN*cdTZh?o+-p70ud~+qa5K2fuVI-Da!{?Z-(L^% z_AtGkJ2^gYZDT?*7RucT(FE36SzT?duCzLjgVoOF%F1t7K+*%k)@g+G1~gr#weoGN z^CVbZ-&|S$?Mese4#I5QI+p+yjNRQ!KmXGE{7V{lgF{qiU|;+Gs?R_Do<4Q^GWr49 z4X*R>I%=IqVINyX7*O#2I1PJw_xJn{_SjKwf+#n4xPQ3o24S_mGPlieCarTSXpAwZ z%W$g1Sj^=HaTmwWUY_r@o;W(}D}tHrO5KCa;0Y|AxswDvT&=xf+RrwFU@)TJvuB;B z0sr`HaS;3vtS&vBd)<1$aUA%*2gCO;bwMy%ZLiNYg4#cCU{J0?Shkq6G~atWJ8cHE zkI1bD|Eq75jXwV(Q8!6w@YUfMU+~;&-)*eSwJz&;gzsQu!ARwtU9qEKPTabAggKaF z2La2s|%H7GQe8+vFIU3fpfqm@p)x9F`uXey12YOg6B)C|DE&ID@igQO>^M zrMcE%SlLUM4&>Pj!ek6nTRQ6n9Wkl|OsihbyISPv{?VL8At|_~&1&ER=nL z&wO^Wb-E278j)!#KQ!iq#fa9KW<0Edgo^_!3HmTCHdRL)(o^ zhFXgvJ>U;rP0avWtgXD-oNFCdPn1*8 zhj7{#ifM>`8)N8W7?h(5mS8lb~W`r=3!>EfwsEs0RE!w9lnoD)3*JxS#Z9;z5aR=p3GJiG%>)B z^pAXx&%Y#W10GD=3EE_y7)3cb+JP6`UWQt#wwm*H$Kzt}4>iru=vS zKTmGfQO!D&N!KjttL?S5iL~pgH1L_1+7r64&B1*LK}2(hzApM8yYoYf9GJgLrv^Qo7Uvu_~iJf-BX-K zhg+}DPIh;9=JeN`%AiMch$H4d{{pgdFV7|ksf9m1df{PWPfyNQ#MrCoK72^h`(n)8 z$wrKU1BDy_Yx!Oe@8pAd?Y=(WJvzfc2i*VjL1dzR36rcBZBA-@YUk)+0rv@%N-v{q zi1i5~5~tB%GaH96PmzUbp4;ZZKmH^5CiutyoWus^b)N9H$byWwXh2X|D!1Mpm?cIt zk6{TT+&~>|Yxnu1M@B#(GN*~;1Ii-({P#Y!8x3Q&Sd4Y^gL^g)QKnH0_V!=z?9}o= z88yD<_eP;TLU7-1L^HNWd!qjMtrx-dXpr~oxJf}{-Y|faGqAK!Ky&0tFa)u9tQr5| zWPiK1lW_h7;Q^L=nr)O7!2l>ZOlY+|zOl>%&2Y zBQ5XZWXE%=A7`|*Rim@*3EwUf5t#{#Eg#R?@^Pu<%bA_`f`^&T4i__KmkLGjnL}@=7k4fzkJwhN3$W|h2K2zF)}%N0x=#GEmPE zgTtL*Z-4v8eGr_yv#p!PGDPu!`(@UM-u-YXCeZ|8+VJ*{M%o9L`1xTnj#7+{sgTZ~ z!QV4E3JCERk6H@qL7NG-LvsVEznC48F-J5+p_#eWi_ijWO59KAq-h~ijA;?=@cHqG8n*;#9afZIy}1yT0_l))_%o<%z6^mw+JRwHdLYvI_A|5 za@;b=aTJeJ10X_9%g$JW;ZkepMB2@;0LnD#&>*b%QWjn{L3Z(jEyLW`G$Tq zErny0RM?cAD6kO16lxj07o}O48i=#Q&ExT966_zHou5BH&^zwfnk(N$IS8Yk(UK+* zrNQ#9JYjPwSmiNRy+;Lm?JyY&x)^#V@RA(`k6YfB?8ziAz^{aEQ1pwU{)es(K5;2Y zFHBA*fp1r+UW$*~qPO8xL|mWZ=+aQEj5d$9iUl2^t@iB#u@a(a21%rGtKN zlbfu?Uj9;VLylj7Cjc+9t?~pZKWx(Ixqf7<>P+rNXQpmsHN!UPE7tYh_3)|LngRa>hgmchoHV?C0ax1c?92GN#o=7!LXxX7EH4v~@XX(o`Uz|?Nu(Q9zUV0K z$xq}ClAp=`NR8lY^6p$BgQfbQJsD z4zwGB*M5i|PHp2U7{Utr|V%7uz3e6E` zC2X2qpw<{cdu$e$z=g;hp)#Iu&QQ!$3vmE%qOb@0YW?e9g|{LUBnxJk2_)$AFTFe- zn`6)(U12`?Yyf4M<+lZptWe?3(1^l%CwlC{Za2-jw9_$G$kEcO+{D_^1o5nNW%_`64UQ8}1P#B^t7cJ6r=9BU+-%!jm$TW>d zElT2USqKL>v2m#wv$yl25kW>d-?^+W&W^V`@{>clL9vOt|*#;L~sQj))L-qr35=nKF}T_u21^PL)LBpvp0 zqcOwe%3%8I{Y2S=8f4I=M@tqKp6?U9lD#fxvxeqwF-W+-*BjkW3#2lc|e z7b&BATE&n|&1L6Oc{m=(A3JPKNnADC5BC7+1_wdFqlY82@5*czw+{&!t^VC;x}%B( z^CufCuTO$S>#GDgs^maJw+Nh|oTuk;b5;#bC|ZxwbeTxn)vRTeiR_vH0hS@`4T);=>M?HP%!Uz+w#FAwGWyW{NiAx4F8) zDNb-@H2XNXipH3q6jcXDiT9)8Id0jA2c!kxxb;4Y

fnFl%0i>i;1MZRo*3R{5sUi6v}nAwbv;!7Ay3PfW-{CRG!MWVm{byje+9?4 zm-jOhiTOf4F}UY5z}u;%;N#C1ilY2Rshlg8DuuQA_g0pQL1KPwV-=nR@?Tbz==%KM|%S)U)hWTh}h*^zqylPUTgTiiVz9;1Htkz4>I zg(U|6Zb{SOQgj%Q#A{oRCfv#%uMNJ|A@b>4OAwg|pI#BM$8YKDJ>Lo&{6b;2C3Vr9ZyduzK=t?7&eTu zb%Bk=5`J0x+89ws1gK#+XQE8-@?eYx51kAyBP7dlO=*j3#g*7EVY^gMO*Z$ZeL3aq z@k5B<6phKZ0H;*L1PvqYV6(~KBFG+>(lN({5!CNZbrF|lV#<5ocwJzoUsE5_iClhJ zaM)Akr)4dTXSb8b_*3#lKxOCPx7NmzQT<|m=^t1hHJv=D_+e)VEO+F#65m*@K1w( z5rX+22mh~wrs7&r?nTK@%lVnhiN$;&SE^iHD{QRfN+j+7-$wcc^E;?q7^rqr>w{7W zN7XVl?N&Nhs4=dVMb(JWrt4B6OCK)yXCy#7`Ym%;&ECT8#8ajc=A9^=5qyWGY$1E? z15>VJ=E}wK88u7n(z?D*lH#u@$fU$r1nGn~Bh*6V{t$s$y0pHKFRe%9cJf4He-kuo z)f>3MYt;}x9kw=j_~`t?JUTtt%6z5CFnAj!yWOWQA%`w41$U(1lb{HCtV(vioWGha zuNC1l{UM~-$gi$%2w5U0O0BI{77N*>Qrvx=7G&1~N2(XwQAI*aQ^g5Kbv%I}GW#yL zLZ|#6+;q`>o6j&TSB5vDMR&@O)SsgjZlB?5AG^jAdAEG-nKNIPr<7oTP$UNFXLuc` zr$F>x*f;t;|VT32ME%oSQ*K9usahmY)3}o7JwGeu26#gp9t8n3)~9Au5c)Wg|N(q3B*=L z*e8;BQE2(y_*erNKb$Qt<;t_tPuWZ8Fv<~dbGzm%-^cF{g0sIXMkEupV}$ zx^*M925OYwo7?sL;9q?^H8>}@tlD|B4k$~IilKM;{o^Pwh_8Xo_*aiGkITnQO8-0r z*QRx!eZ1=kJZ7c7o(XQWKJK+RCIByP_{b84H^&;d=52lm@lBu-Dx2y0LccjWm{QaK>pMU>M7AP%)*ny1XuaUOWKcX>$+ULUa zYb)HA(ZhpxIbh&fxHXnFpFz14^kd{?gRHY z?UQct0iF~m>LeWlqfhzl{&`wXcUx&{e|@c#zh>QdeAiV<^UJvfesXp3+5-FlPmc8x z%SYZN=rG&lH}D7-^D#0Gzf%qznr+iw((C1{0~k_T-fHc(t6M!-L$Ec13&9n^V@wYx zH5VeaTdy^$Hldkmlj(8#FFBeYPj-I{j0{E0immgNQxY?zL&^Wn(t9%EXYfBm%#(*w zn1}kK=^^EB+O6^`yz)e%SeaYQul~?Ex!h)d(0p78D=X32@gD(s{ z7D#}*t(wWlgdr?YhvdLCaU2GI*~iSdMJDu=y8Q_3e=mYyRLXWjF)+lRhggUK)lVF5 z&9rl~5>D(`lBg&HD2728TtN5$bFp!P$;ll^Y04%;Lg~^tfDzEvvNYT~4r-Gx>d$lS zsE~WV_Db?|=m_ZsP>D${<_e^)BM?mK@1sI&ym$~X8Mo~Wk(3w_`ER;cu!|3)P114z zY%O^Ro-N%DIJS5p=YrBgR%L(p-2@d;pn`5(iBfKUqnIyiMI}6eL|p*-B@@Vpxmq7m znQJf*XZrY&Mwn2zw45sxtc$O-T!d>*{D5n&6noD(7h41dmhW0N)H@T2QaL+U$XT5z zXDjpXWs6J9d>a`UWmo{fa6ML8o{jLzuNB(`RF>un%&9(da={bZFda;$-{?}=LZ0<( zhajL?94OFciiP*hQYxm69q_RrhBEFz`R!*7}#B2@UL z*#{Ih?~sj8D|D@%1hPBxmASQLH7O5xO&eCV153Rw3Nt2|1C<#9+MU+a*Gpp(_YP9f zDiz1*X{k77PX+andn$=X^wi(WP+$6*ZeP}%&-!bc9GlS_1KCt8A|_H;$c{cy1vs(B znJA#{ohYkgeN8xGk_zkok-oqk9yLmj$E2bsx;1x3G@-jMn28pb4L7kmw;cIx^`}(6 z9cF&sr#!@s{Qz<|+o$_@uD6EqrTpvghWC0)8+JsnYrglk3f#7oCdcXAd^&j`EHKVV^ zh^-YefX8nve_Pr#1I0dAiD5X0+pY}?FCyeai-;3J584?)V2LRF2deVed&=6)!xWFQ zC!-I>7mLG4#?ou--pjj4^lA)IBZv%NpV$bH7I`36TFR|j*7JX}{i+TXyTW(_`)SpP|}ghx`(`qb<-X&t3& zWVCo6WDD!d*-8;uM%Pt}5Ge2jMM+2LB2`YE=qP5(7-xfaXlXhW9d5KCQ)g8+w`-M~ zyWL8Azk5S|z>tN@$QvdFSq>aVvHFReKs;E${Vj}QH1ser zN!4U;jeN~Iguw9A5Oh66pO7LY*DA=_kZFjc%Oyu6ZVk8GltB4uSR4Bt%2#Uz(aKV}xW|HwxzE3%_!9M8h)K6I- zb7;u?)>=7;QU)Ok`aOSu{;|@6gjAUX*h~8G6KU>BG@` z5SM`S&4?abN_%$++?SOi;;F-~gh{#rqN_x^Fh=<`mGc3mEcpIUfCa;=*F!#P__5s? z2F-L!u9OJiK!3$FU~ML@t`)N7yrFi5^Mo-cj7@65Gh0WP4arO%g^wAymq4+}o9(lt zlQI#`^85TAasiVWfkJ2qrR3c_$Lt2cy^#iM}ss_`&(2n}#}$M|}v@*W>PHo$H~D0PkK2CY$@o zP}oui9;b&-#PB(g0v*Tkn==rDQ8=_=zhyJEOAsKb?PjamGui^tIknqpcLC@_{I=b` zeChO!bQ^m+k&T!=cuh^b>NrA)?)#E0RuHm|lYT!iaEb9ar!=64>|^i(PXs(rSZ^#n zuVjW&XAq+`N#bB^%O_HDAYdj>%YWwiaR=_2Py0jr*SUDUb7_QL@^q1GM0P>NpX;;L z2phrl-sX-}*}%Vwa-|A2YI$;gbp~@Cnx9vi?Z1d+7Bg<21wT8Nw{8uTnq=DDzRX?% z-w>k`kI7E+lw+z8U@pl{%BMMe9Dqu2yQk;{Oy^lk8o)v^OYP9$@Z2SLc2i|(KA)@E zJI&xj3(-$nx)E8+ObW3v!^%j+o?jyuh?zvZUjHzw&(H;uo!^I%^~{PD5*k8z&JCR+ zkVr7;*ohUZC;k88SRCnygnWl)?~d3N?MOlwDSNCr<*3JXGuwGx&rci=lMtiDTC&$S zL?b7#@+_nrxqXcge(1%=Anh-ntgyaM@SQ%^zje|cgz^+4G`WWJg7G~M z7{-uP+TeEcFpk-a9j{kREncgDB}cj~n#($@)rli-WW%y>ZBnJEmvD@yt9=8dupS#7mHats<0ZNEVbyX8=qeh5z0ty8Sfnh@i#V2kYl99;s7w#X{^Zo({|WK5#r^gDvrLG6gj_Xr2p{;fUU(oRPtkXaY(L6C?3f;)URQJ(JWgK`6 zbx*jdeuv~cb=)8*JxByNgY6!X^qDL9K2VroJna@9)!2PBcxf5vcx1yMM|Vz&@ndu> z##D08+Osz1q4lMa1!F85zFpqe0SnO4k%;9O>O|Gq-Q& z22*mN4#7ZZ7+WG323e>hFGqkr#RMFj%Dec)TLUYR&VyImG)LeaCmRZRi_?)jN+Ee(UYh(cDH&gwqjPX45xKV2AtJ} zF}!feq8Wk&HidtDL|9giDlp#pF9Wld6|=^;;h%8QA5z-e;!iNOx7m@*D}>(mvPjhT_ICx>7;$QZct$8LK3wFhJ#a!Hu?}5HGa<-CrW{Jr z#vjp177q$Tl`~y3JBy!zpHDRs}m`yW>@u&p8z+1h=7&r2N;Jtb*CB!ulelyd?^K1ZcH^0 zU+5H6aovI+D^6RSwL7Yfs3vmjKfO3J8{hA1rLAhS?(MeLFr!9Mxf^(04fL;^cO;w| zx$mR;4LAcFNIm$8_OXybSr#R5w;tZp&n0w)(dEF5UK$J-tQ?0T5a?tMPR4xENh2fq zqhvt1yDEDpGuRTpJ{+dQY4TL=GYkEimlDpClG!{{a*WgWl;K@Xe<)F_24N!Xv2OX@ z^eM1`>%zgWOZ(f2k}TbP#lWK&DrQD>EzN~K9-ZM&A}NariTH#gYQ97373`+I6%pfK zKbej7s<)zi4{Ru2Z_m{ydaSUrzIOcDXlHP~QSr$nsDYeHu;a~zb-ah62CemwBJB+x zOV7ZI3Z2;^T@o#=8~N46u(YS37C!ajvuN2Z-j9UP4Yu1emp!?)LX+e5wHYB)Nt*A& zpp8dkX=FHcF8YxiQ8wJ4Pe*jq8GlH-RH<}&jlD)MZj>Ci77F^R?o`AVsZ=|i>g`Hv z^B?M4y-Ky&*x9SpZ?(lA^;!gD^eVJ>F=q#nHC)w)x$zR(IZnBFMMj2BBpQ2L9mp89zdN-#oeACqm6m>n`cLQ4$NUH-nz)>!p~Und z?!yC>3Fla`Qdqe-Tba3BSz0TP)J|CC>n`9^l8M$Fk3ddkoHf^&&dFdeq~YXV@VWMc z($^`}jiH$Z+}3he@-|3e)k&BaWwK*c}^Gx4B7WsWyU6N2?rJhU{*r$ zj61Dfy4l(aQ@`)-J%4ICosKwC*X|y#;q1poL?|+U2NSMtE>~ETiH>6+1DNv*y z`#+`jS}DOGRQGD%Kbt_Lc<92;))u^bznV1PPyhel>d*MCTpw?-qs3>MfbX;`KGJ5j zTTfMMwNAa;ty3-(Z<0yt_K!Fbo}VHc3y1>#)e*rsBPNc@6E5LEh@D8pvOSIV>_-{H zTb67dMBV>8FFJGTwUw)5? zl#WnFdZIuf98s1#6*m5#`1}~$+(VKxJC=UW5JEXdyB58#z4Q#6VFvdgkQS97L`Cz3 zr99bZpT?ORpl%QRQyO7yth?4>LuFMN@(@q;BN zt{kNy<7Wl`U=bn}JS6LP4s}$h-eeR4!mE z@=58c?Ak=wpBh$4+(vFu8=OdfHkOq{Wg01OMxH;{)xZ&1l*gkppZ9}bY`1$I`3=HJ zcTmeGPsM{k2r_CdI2cNJscJ7u@o`b=G0-06uKiX5Mo4|`6#(J#7rKJr8nHy8;~5R- z4AM1A8=juXo7K()23hc=7_l-w*KNa^6)cq2FktcyO8O>nm=ss}8<3Ew0x3g@5cDci zCu00LmS9VDKO}-tjN^+4$TQ&hP<}uyjeTSAt!ypicuEH7S%k=Dp3NL1DU+mQ0{17l zp-^9g8{SF03PBFHMk|#Wu~;xlxsj-m=l6)^GVJB0Tysp0Z}X#ePrC$4gv{S~)scx# zeT!VpLta4Q4LJeD!I>&`j>>rCizE_%n87>b1WD=22<4WYrR>we44D)ME!0hrsV>Ty zT85+yK^jhsauqlpMIQGdl}^IHqfNy9geyvT8kT8>4k5-l{`id?fU8JiO`7z;c){2a z7|ASEsl(!YbgHyOImpG0KQ=)2*E zf{W<%_K=GZKSLoAYEyLU?cVLS&-JZa?^UXs-Aa2aW0dY;?)VBQ13#Wd?>6&UWi$M! ziH~frMFU&PkQ>9%(U&j5xc>Pa4gp2yy6;$328!Qf3$xi}6}+uXAt&=N?ZKX0noe|E zyA=pAY;9L=)T_06ryIX}Fa;TWOyDz{WQZsNf-x_BC9wFn_0%yt@vVp@=jsnIq8CpAc4=b)2I>}cAOEo?V% znRmS#gaTolKtv-5Cf!E&O)K0#sI~ECs)Ym@W0Ps|sxP@l)5fB`SDoA2R_SS`+b_u} zJK{Gsax0+m_UawdtCK@8{tXIr`16wZ^LD%2u5altl$H|Q2>#tqaR}ex6_hQmD7K5H zSeoa@BvfABSef&avR!(;=+PbvFqwu&4k2*ya2!z5sI0Cspe!=Pl|bIlu8~k=Go>$3 z0qA6CL$(ye2qmt)z^czR%kz+~VF%wg0@+ouuYie}h>Bng@i8F1spE@}BxCVgfq@wr zJr#uo#r$ATiWbY-V(n zk={o9rlWGg&~0;p7)_gbA-%V`4_HVi^+fIg^FnW7R<)5nq<;cX@VGOqCy_=NyLhRb zO&ZH(9FWvRY%KK<{p?vccsPU!wE1<(^(me`K)6d(bu{+6dx=rd;~Y3nW9f-o3e3EI z@1dJ-zjYz*T|M^YOzhj)__sGNCT=>>E$)tytYnb5xm(SgJ9iE<2+9@rPg-<47f_N* z!ATfTyXS&naE};}jlGW>QYec=FM~U0PBI3}sK5N$RBk+3yv;P?{^pG(57KrDX3AL-~l#_s?jum3xwDSGs>HqVL4G*x5_guB?(7 z!sf9(0BP@7IJHDc-^_Sbd?B4sUj8!N{*R;xL}F z-W}!vdAAp*0YZil)KE0r@hORohpHUig!bGL_YN8=na{Zsj@J+Ad!j+m;y$UBh6OZf z21XJmXpIJ0Bjz=#E7}V%Vzknj4bUH^P3V=fTeD)UAByy2P{ojIGbuI#$oTnJ)Y*mj z6F9;!;^JFJ=7~ZM;7fTH8G5zhJH$#!>-AgUoHTd>kaYPp_7L;ukf0FT5Oy0-UN5dK z&E?Cb5oq3bV8UH%TO77vgyJ=ByN&Dv O(KtZl4;t3UCH_AOG^&*V literal 0 Hc-jL100001 diff --git a/bfd/po/vi.gmo b/bfd/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0687a749e69832a45be292d892f563c95fefb9eb GIT binary patch literal 159371 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 literal 0 Hc-jL100001 diff --git a/bfd/po/zh_CN.gmo b/bfd/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..65998865d3a8f6281dfca807fb97ee9c6deee143 GIT binary patch literal 28121 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 literal 0 Hc-jL100001 diff --git a/binutils/arlex.c b/binutils/arlex.c new file mode 100644 index 00000000000..80bb125986e --- /dev/null +++ b/binutils/arlex.c @@ -0,0 +1,2035 @@ + +#line 3 "arlex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 40 +#define YY_END_OF_BUFFER 41 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[177] = + { 0, + 0, 0, 41, 40, 39, 38, 35, 32, 33, 36, + 40, 34, 37, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 36, 31, 37, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 7, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 22, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + + 35, 35, 35, 10, 11, 12, 35, 15, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 25, 26, 27, + 35, 30, 35, 35, 35, 3, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 18, 35, 35, 35, 35, + 35, 35, 35, 1, 2, 4, 5, 35, 35, 35, + 35, 35, 16, 17, 19, 20, 35, 35, 35, 35, + 35, 35, 8, 9, 13, 14, 35, 23, 24, 28, + 29, 35, 35, 6, 21, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 4, 1, 1, 1, 5, + 6, 7, 8, 9, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 10, 1, + 1, 1, 1, 1, 11, 12, 13, 14, 15, 16, + 4, 17, 18, 4, 4, 19, 20, 21, 22, 23, + 4, 24, 25, 26, 27, 28, 4, 29, 30, 4, + 1, 4, 1, 1, 4, 1, 31, 32, 33, 34, + + 35, 36, 4, 37, 38, 4, 4, 39, 40, 41, + 42, 43, 4, 44, 45, 46, 47, 48, 4, 49, + 50, 4, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[51] = + { 0, + 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 + } ; + +static yyconst flex_int16_t yy_base[180] = + { 0, + 0, 0, 193, 194, 194, 194, 0, 194, 194, 0, + 190, 194, 0, 177, 32, 37, 32, 163, 174, 170, + 164, 171, 174, 169, 149, 15, 22, 17, 135, 146, + 142, 136, 143, 146, 141, 0, 0, 194, 0, 161, + 159, 158, 153, 147, 156, 143, 149, 148, 141, 150, + 141, 135, 138, 127, 125, 124, 119, 113, 122, 109, + 115, 114, 107, 116, 107, 101, 104, 43, 136, 135, + 130, 129, 0, 119, 123, 118, 114, 118, 119, 122, + 124, 25, 104, 103, 98, 97, 0, 87, 91, 86, + 82, 86, 87, 90, 92, 105, 100, 97, 94, 93, + + 105, 106, 102, 0, 0, 0, 104, 0, 92, 75, + 70, 67, 64, 63, 75, 76, 72, 0, 0, 0, + 74, 0, 62, 91, 88, 0, 86, 85, 73, 85, + 79, 83, 70, 62, 59, 0, 57, 56, 44, 56, + 50, 54, 41, 0, 0, 0, 0, 63, 58, 59, + 67, 66, 0, 0, 0, 0, 38, 33, 34, 42, + 41, 51, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 43, 21, 0, 0, 194, 65, 66, 69 + } ; + +static yyconst flex_int16_t yy_def[180] = + { 0, + 176, 1, 176, 176, 176, 176, 177, 176, 176, 178, + 176, 176, 179, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 178, 176, 179, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 0, 176, 176, 176 + } ; + +static yyconst flex_int16_t yy_nxt[245] = + { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 7, 15, 16, 17, 18, 19, 7, 20, 7, + 7, 21, 7, 22, 23, 7, 7, 24, 7, 7, + 25, 7, 26, 27, 28, 29, 30, 7, 31, 7, + 7, 32, 7, 33, 34, 7, 7, 35, 7, 7, + 41, 43, 45, 55, 44, 42, 57, 59, 56, 58, + 46, 96, 97, 110, 111, 60, 37, 36, 37, 39, + 175, 39, 174, 173, 172, 171, 170, 169, 168, 167, + 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, + 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, + + 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, + 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, + 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, + 116, 115, 114, 113, 112, 109, 108, 107, 106, 105, + 104, 103, 102, 101, 100, 99, 98, 95, 94, 93, + 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, + 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, + 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, + 62, 61, 54, 53, 52, 51, 50, 49, 48, 47, + 40, 38, 176, 3, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176 + } ; + +static yyconst flex_int16_t yy_chk[245] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 15, 16, 17, 26, 16, 15, 27, 28, 26, 27, + 17, 68, 68, 82, 82, 28, 178, 177, 178, 179, + 173, 179, 172, 167, 162, 161, 160, 159, 158, 157, + 152, 151, 150, 149, 148, 143, 142, 141, 140, 139, + 138, 137, 135, 134, 133, 132, 131, 130, 129, 128, + + 127, 125, 124, 123, 121, 117, 116, 115, 114, 113, + 112, 111, 110, 109, 107, 103, 102, 101, 100, 99, + 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, + 88, 86, 85, 84, 83, 81, 80, 79, 78, 77, + 76, 75, 74, 72, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, + 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, + 44, 43, 42, 41, 40, 35, 34, 33, 32, 31, + 30, 29, 25, 24, 23, 22, 21, 20, 19, 18, + 14, 11, 3, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "arlex.l" +#define YY_NO_INPUT 1 +#line 4 "arlex.l" +/* arlex.l - Strange script language lexer */ + +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + + +/* Contributed by Steve Chamberlain . */ + +#define DONTDECLARE_MALLOC +#include "ansidecl.h" +#include "libiberty.h" +#include "arparse.h" + +#ifndef YY_NO_UNPUT +#define YY_NO_UNPUT +#endif + +extern int yylex (void); + +int linenumber; +#line 598 "arlex.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 45 "arlex.l" + + +#line 781 "arlex.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 177 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 194 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 47 "arlex.l" +{ return ADDLIB; } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 48 "arlex.l" +{ return ADDMOD; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 49 "arlex.l" +{ return CLEAR; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 50 "arlex.l" +{ return CREATE; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 51 "arlex.l" +{ return DELETE; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 52 "arlex.l" +{ return DIRECTORY; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 53 "arlex.l" +{ return END; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 54 "arlex.l" +{ return EXTRACT; } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 55 "arlex.l" +{ return FULLDIR; } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 56 "arlex.l" +{ return HELP; } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 57 "arlex.l" +{ return LIST; } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 58 "arlex.l" +{ return OPEN; } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 59 "arlex.l" +{ return REPLACE; } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 60 "arlex.l" +{ return VERBOSE; } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 61 "arlex.l" +{ return SAVE; } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 62 "arlex.l" +{ return ADDLIB; } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 63 "arlex.l" +{ return ADDMOD; } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 64 "arlex.l" +{ return CLEAR; } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 65 "arlex.l" +{ return CREATE; } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 66 "arlex.l" +{ return DELETE; } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 67 "arlex.l" +{ return DIRECTORY; } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 68 "arlex.l" +{ return END; } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 69 "arlex.l" +{ return EXTRACT; } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 70 "arlex.l" +{ return FULLDIR; } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 71 "arlex.l" +{ return HELP; } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 72 "arlex.l" +{ return LIST; } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 73 "arlex.l" +{ return OPEN; } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 74 "arlex.l" +{ return REPLACE; } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 75 "arlex.l" +{ return VERBOSE; } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 76 "arlex.l" +{ return SAVE; } + YY_BREAK +case 31: +/* rule 31 can match eol */ +YY_RULE_SETUP +#line 77 "arlex.l" +{ linenumber ++; } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 78 "arlex.l" +{ return '('; } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 79 "arlex.l" +{ return ')'; } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 80 "arlex.l" +{ return ','; } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 81 "arlex.l" +{ + yylval.name = xstrdup (yytext); + return FILENAME; + } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 85 "arlex.l" +{ } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 86 "arlex.l" +{ } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 87 "arlex.l" +{ } + YY_BREAK +case 39: +/* rule 39 can match eol */ +YY_RULE_SETUP +#line 88 "arlex.l" +{ linenumber ++; return NEWLINE; } + YY_BREAK +case 40: +YY_RULE_SETUP +#line 90 "arlex.l" +ECHO; + YY_BREAK +#line 1069 "arlex.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 177 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 177 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 176); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 90 "arlex.l" + + +#ifndef yywrap +/* Needed for lex, though not flex. */ +int yywrap(void) { return 1; } +#endif + diff --git a/binutils/arparse.c b/binutils/arparse.c new file mode 100644 index 00000000000..04505a91816 --- /dev/null +++ b/binutils/arparse.c @@ -0,0 +1,1769 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NEWLINE = 258, + VERBOSE = 259, + FILENAME = 260, + ADDLIB = 261, + LIST = 262, + ADDMOD = 263, + CLEAR = 264, + CREATE = 265, + DELETE = 266, + DIRECTORY = 267, + END = 268, + EXTRACT = 269, + FULLDIR = 270, + HELP = 271, + QUIT = 272, + REPLACE = 273, + SAVE = 274, + OPEN = 275 + }; +#endif +/* Tokens. */ +#define NEWLINE 258 +#define VERBOSE 259 +#define FILENAME 260 +#define ADDLIB 261 +#define LIST 262 +#define ADDMOD 263 +#define CLEAR 264 +#define CREATE 265 +#define DELETE 266 +#define DIRECTORY 267 +#define END 268 +#define EXTRACT 269 +#define FULLDIR 270 +#define HELP 271 +#define QUIT 272 +#define REPLACE 273 +#define SAVE 274 +#define OPEN 275 + + + + +/* Copy the first part of user declarations. */ +#line 1 "arparse.y" + +/* arparse.y - Stange script language parser */ + +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + + +/* Contributed by Steve Chamberlain + sac@cygnus.com + +*/ +#define DONTDECLARE_MALLOC +#include "sysdep.h" +#include "bfd.h" +#include "arsup.h" +extern int verbose; +extern int yylex (void); +static int yyerror (const char *); + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 37 "arparse.y" +{ + char *name; +struct list *list ; + +} +/* Line 193 of yacc.c. */ +#line 178 "arparse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 191 "arparse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 34 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 24 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 22 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 42 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 53 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 275 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 21, 22, 2, 2, 23, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 4, 7, 10, 11, 14, 16, 18, + 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, + 40, 42, 44, 45, 48, 51, 53, 56, 59, 61, + 63, 66, 69, 73, 78, 80, 81, 85, 86, 90, + 91, 93, 94 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 25, 0, -1, -1, 26, 27, -1, 27, 28, -1, + -1, 29, 3, -1, 37, -1, 38, -1, 45, -1, + 40, -1, 39, -1, 32, -1, 34, -1, 36, -1, + 30, -1, 31, -1, 33, -1, 35, -1, 13, -1, + 1, -1, 5, -1, -1, 14, 43, -1, 18, 43, + -1, 9, -1, 11, 43, -1, 8, 43, -1, 7, + -1, 19, -1, 20, 5, -1, 10, 5, -1, 6, + 5, 42, -1, 12, 5, 42, 41, -1, 5, -1, + -1, 21, 43, 22, -1, -1, 43, 44, 5, -1, + -1, 23, -1, -1, 4, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 68, 68, 68, 72, 73, 77, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 101, 106, 111, 116, 120, 125, 130, + 137, 142, 148, 152, 159, 161, 165, 168, 172, 178, + 183, 184, 189 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "NEWLINE", "VERBOSE", "FILENAME", + "ADDLIB", "LIST", "ADDMOD", "CLEAR", "CREATE", "DELETE", "DIRECTORY", + "END", "EXTRACT", "FULLDIR", "HELP", "QUIT", "REPLACE", "SAVE", "OPEN", + "'('", "')'", "','", "$accept", "start", "@1", "session", "command_line", + "command", "extract_command", "replace_command", "clear_command", + "delete_command", "addmod_command", "list_command", "save_command", + "open_command", "create_command", "addlib_command", "directory_command", + "optional_filename", "modulelist", "modulename", "optcomma", + "verbose_command", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 40, 41, 44 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 24, 26, 25, 27, 27, 28, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 41, 42, 42, 43, 43, + 44, 44, 45 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 2, 0, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 2, 2, 1, 2, 2, 1, 1, + 2, 2, 3, 4, 1, 0, 3, 0, 3, 0, + 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 2, 0, 5, 1, 0, 20, 42, 21, 0, 28, + 39, 25, 0, 39, 0, 19, 39, 39, 29, 0, + 4, 0, 15, 16, 12, 17, 13, 18, 14, 7, + 8, 11, 10, 9, 37, 27, 31, 26, 37, 23, + 24, 30, 6, 39, 32, 40, 0, 35, 41, 38, + 34, 33, 36 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 1, 2, 4, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 51, 44, 35, + 46, 33 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -14 +static const yytype_int8 yypact[] = +{ + -14, 1, -14, -14, 5, -14, -14, -14, 2, -14, + -14, -14, 21, -14, 22, -14, -14, -14, -14, 23, + -14, 26, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, 10, -3, -14, -3, 10, -3, + -3, -14, -14, -14, -14, -14, 27, 28, -1, -14, + -14, -14, -14 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -4, -13, + -14, -14 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -42 +static const yytype_int8 yytable[] = +{ + 37, 3, -41, 39, 40, -3, 5, 34, -22, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 45, 52, 45, 17, 18, 19, 36, 38, 41, 42, + 48, 43, 49, 50, 47 +}; + +static const yytype_uint8 yycheck[] = +{ + 13, 0, 5, 16, 17, 0, 1, 5, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 23, 22, 23, 18, 19, 20, 5, 5, 5, 3, + 43, 21, 5, 5, 38 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 25, 26, 0, 27, 1, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 45, 5, 43, 5, 43, 5, 43, + 43, 5, 3, 21, 42, 23, 44, 42, 43, 5, + 5, 41, 22 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 68 "arparse.y" + { prompt(); } + break; + + case 6: +#line 77 "arparse.y" + { prompt(); } + break; + + case 19: +#line 93 "arparse.y" + { ar_end(); return 0; } + break; + + case 21: +#line 95 "arparse.y" + { yyerror("foo"); } + break; + + case 23: +#line 102 "arparse.y" + { ar_extract((yyvsp[(2) - (2)].list)); } + break; + + case 24: +#line 107 "arparse.y" + { ar_replace((yyvsp[(2) - (2)].list)); } + break; + + case 25: +#line 112 "arparse.y" + { ar_clear(); } + break; + + case 26: +#line 117 "arparse.y" + { ar_delete((yyvsp[(2) - (2)].list)); } + break; + + case 27: +#line 121 "arparse.y" + { ar_addmod((yyvsp[(2) - (2)].list)); } + break; + + case 28: +#line 126 "arparse.y" + { ar_list(); } + break; + + case 29: +#line 131 "arparse.y" + { ar_save(); } + break; + + case 30: +#line 138 "arparse.y" + { ar_open((yyvsp[(2) - (2)].name),0); } + break; + + case 31: +#line 143 "arparse.y" + { ar_open((yyvsp[(2) - (2)].name),1); } + break; + + case 32: +#line 149 "arparse.y" + { ar_addlib((yyvsp[(2) - (3)].name),(yyvsp[(3) - (3)].list)); } + break; + + case 33: +#line 153 "arparse.y" + { ar_directory((yyvsp[(2) - (4)].name), (yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].name)); } + break; + + case 34: +#line 160 "arparse.y" + { (yyval.name) = (yyvsp[(1) - (1)].name); } + break; + + case 35: +#line 161 "arparse.y" + { (yyval.name) = 0; } + break; + + case 36: +#line 166 "arparse.y" + { (yyval.list) = (yyvsp[(2) - (3)].list); } + break; + + case 37: +#line 168 "arparse.y" + { (yyval.list) = 0; } + break; + + case 38: +#line 173 "arparse.y" + { struct list *n = (struct list *) malloc(sizeof(struct list)); + n->next = (yyvsp[(1) - (3)].list); + n->name = (yyvsp[(3) - (3)].name); + (yyval.list) = n; + } + break; + + case 39: +#line 178 "arparse.y" + { (yyval.list) = 0; } + break; + + case 42: +#line 190 "arparse.y" + { verbose = !verbose; } + break; + + +/* Line 1267 of yacc.c. */ +#line 1545 "arparse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 194 "arparse.y" + + +static int +yyerror (const char *x ATTRIBUTE_UNUSED) +{ + extern int linenumber; + + printf (_("Syntax error in archive script, line %d\n"), linenumber + 1); + return 0; +} + diff --git a/binutils/arparse.h b/binutils/arparse.h new file mode 100644 index 00000000000..7fd60ef8c49 --- /dev/null +++ b/binutils/arparse.h @@ -0,0 +1,102 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NEWLINE = 258, + VERBOSE = 259, + FILENAME = 260, + ADDLIB = 261, + LIST = 262, + ADDMOD = 263, + CLEAR = 264, + CREATE = 265, + DELETE = 266, + DIRECTORY = 267, + END = 268, + EXTRACT = 269, + FULLDIR = 270, + HELP = 271, + QUIT = 272, + REPLACE = 273, + SAVE = 274, + OPEN = 275 + }; +#endif +/* Tokens. */ +#define NEWLINE 258 +#define VERBOSE 259 +#define FILENAME 260 +#define ADDLIB 261 +#define LIST 262 +#define ADDMOD 263 +#define CLEAR 264 +#define CREATE 265 +#define DELETE 266 +#define DIRECTORY 267 +#define END 268 +#define EXTRACT 269 +#define FULLDIR 270 +#define HELP 271 +#define QUIT 272 +#define REPLACE 273 +#define SAVE 274 +#define OPEN 275 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 37 "arparse.y" +{ + char *name; +struct list *list ; + +} +/* Line 1529 of yacc.c. */ +#line 95 "arparse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/deflex.c b/binutils/deflex.c new file mode 100644 index 00000000000..a59f99b6b21 --- /dev/null +++ b/binutils/deflex.c @@ -0,0 +1,2064 @@ + +#line 3 "deflex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 42 +#define YY_END_OF_BUFFER 43 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[199] = + { 0, + 0, 0, 43, 42, 34, 36, 35, 33, 42, 28, + 42, 31, 41, 39, 27, 32, 38, 40, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 0, 29, 28, 0, 30, 31, 27, + 32, 37, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 12, 6, 28, + 7, 28, 28, 28, 28, 28, 28, 28, 28, 1, + + 28, 28, 28, 16, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 17, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 14, 28, 28, 28, 19, 21, 28, 28, + 28, 28, 28, 28, 18, 9, 28, 10, 28, 28, + 2, 28, 28, 15, 28, 28, 28, 28, 11, 13, + 28, 5, 28, 28, 22, 28, 8, 28, 28, 28, + 28, 28, 28, 20, 4, 28, 28, 28, 24, 28, + 26, 28, 3, 28, 28, 23, 25, 0 + + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 1, 6, 1, 7, 1, 1, 8, 1, + 1, 9, 1, 10, 7, 11, 12, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 7, 14, 12, + 15, 12, 7, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 7, 26, 27, 28, 29, 30, 31, + 7, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 1, 1, 1, 1, 7, 1, 22, 22, 22, 22, + + 22, 22, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 22, + 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[41] = + { 0, + 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, + 1, 4, 5, 1, 1, 4, 6, 6, 6, 6, + 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 + } ; + +static yyconst flex_int16_t yy_base[206] = + { 0, + 0, 0, 230, 231, 231, 231, 231, 231, 223, 0, + 220, 0, 231, 231, 0, 0, 212, 0, 209, 195, + 24, 186, 202, 14, 197, 186, 27, 188, 198, 25, + 197, 196, 184, 209, 231, 0, 206, 231, 0, 0, + 0, 231, 0, 180, 27, 178, 178, 27, 193, 178, + 183, 189, 179, 177, 175, 178, 185, 182, 183, 170, + 181, 165, 164, 170, 173, 172, 159, 174, 171, 170, + 158, 156, 156, 151, 152, 149, 161, 34, 145, 160, + 145, 146, 154, 157, 147, 141, 139, 0, 0, 138, + 0, 139, 135, 137, 135, 135, 29, 149, 140, 0, + + 136, 139, 145, 0, 136, 139, 132, 132, 30, 132, + 135, 138, 129, 119, 118, 126, 116, 122, 119, 115, + 115, 124, 127, 109, 112, 121, 119, 106, 111, 108, + 106, 0, 106, 103, 112, 99, 91, 97, 99, 95, + 88, 99, 0, 93, 103, 94, 0, 0, 97, 91, + 87, 90, 84, 83, 0, 0, 95, 0, 97, 80, + 0, 92, 91, 0, 78, 70, 91, 74, 0, 0, + 82, 0, 89, 88, 0, 84, 0, 82, 85, 83, + 69, 66, 56, 0, 0, 39, 36, 35, 0, 44, + 0, 43, 0, 40, 39, 0, 0, 231, 67, 71, + + 77, 83, 85, 91, 95 + } ; + +static yyconst flex_int16_t yy_def[206] = + { 0, + 198, 1, 198, 198, 198, 198, 198, 198, 199, 200, + 201, 202, 198, 198, 203, 204, 198, 205, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 199, 198, 200, 201, 198, 202, 203, + 204, 198, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 0, 198, 198, + + 198, 198, 198, 198, 198 + } ; + +static yyconst flex_int16_t yy_nxt[272] = + { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 4, 15, 16, 17, 18, 10, 19, 20, 21, + 22, 10, 10, 23, 24, 10, 25, 26, 27, 10, + 28, 29, 30, 31, 10, 32, 33, 10, 10, 10, + 46, 50, 51, 54, 47, 58, 66, 70, 59, 60, + 101, 118, 129, 119, 130, 67, 55, 71, 61, 197, + 196, 195, 194, 193, 192, 191, 102, 34, 34, 34, + 34, 34, 34, 36, 36, 36, 36, 37, 37, 37, + 37, 37, 37, 39, 190, 39, 39, 39, 39, 40, + 40, 41, 189, 41, 41, 41, 41, 43, 188, 187, + + 43, 186, 185, 184, 183, 182, 181, 180, 179, 178, + 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, + 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, + 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, + 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, + 137, 136, 135, 134, 133, 132, 131, 128, 127, 126, + 125, 124, 123, 122, 121, 120, 117, 116, 115, 114, + 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, + 103, 100, 99, 98, 97, 96, 95, 94, 93, 92, + 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, + + 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, + 69, 68, 65, 38, 35, 64, 63, 62, 57, 56, + 53, 52, 49, 48, 45, 44, 42, 38, 35, 198, + 3, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198 + } ; + +static yyconst flex_int16_t yy_chk[272] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 21, 24, 24, 27, 21, 30, 45, 48, 30, 30, + 78, 97, 109, 97, 109, 45, 27, 48, 30, 195, + 194, 192, 190, 188, 187, 186, 78, 199, 199, 199, + 199, 199, 199, 200, 200, 200, 200, 201, 201, 201, + 201, 201, 201, 202, 183, 202, 202, 202, 202, 203, + 203, 204, 182, 204, 204, 204, 204, 205, 181, 180, + + 205, 179, 178, 176, 174, 173, 171, 168, 167, 166, + 165, 163, 162, 160, 159, 157, 154, 153, 152, 151, + 150, 149, 146, 145, 144, 142, 141, 140, 139, 138, + 137, 136, 135, 134, 133, 131, 130, 129, 128, 127, + 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, + 116, 115, 114, 113, 112, 111, 110, 108, 107, 106, + 105, 103, 102, 101, 99, 98, 96, 95, 94, 93, + 92, 90, 87, 86, 85, 84, 83, 82, 81, 80, + 79, 77, 76, 75, 74, 73, 72, 71, 70, 69, + 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, + + 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, + 47, 46, 44, 37, 34, 33, 32, 31, 29, 28, + 26, 25, 23, 22, 20, 19, 17, 11, 9, 3, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "deflex.l" +#define YY_NO_INPUT 1 +#line 4 "deflex.l" + +/* Copyright (C) 1995-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + + +/* Contributed by Steve Chamberlain: sac@cygnus.com */ + +#define DONTDECLARE_MALLOC +#include "libiberty.h" +#include "defparse.h" +#include "dlltool.h" + +int linenumber; + +#line 608 "deflex.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 35 "deflex.l" + +#line 790 "deflex.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 231 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 36 "deflex.l" +{ return NAME;} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 37 "deflex.l" +{ return LIBRARY;} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 38 "deflex.l" +{ return DESCRIPTION;} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 39 "deflex.l" +{ return STACKSIZE;} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 40 "deflex.l" +{ return HEAPSIZE;} + YY_BREAK +case 6: +YY_RULE_SETUP +#line 41 "deflex.l" +{ return CODE;} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 42 "deflex.l" +{ return DATA;} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 43 "deflex.l" +{ return SECTIONS;} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 44 "deflex.l" +{ return EXPORTS;} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 45 "deflex.l" +{ return IMPORTS;} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 46 "deflex.l" +{ return VERSIONK;} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 47 "deflex.l" +{ return BASE;} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 48 "deflex.l" +{ return CONSTANT; } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 49 "deflex.l" +{ return NONAME; } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 50 "deflex.l" +{ return PRIVATE; } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 51 "deflex.l" +{ return READ;} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 52 "deflex.l" +{ return WRITE;} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 53 "deflex.l" +{ return EXECUTE;} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 54 "deflex.l" +{ return SHARED;} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 55 "deflex.l" +{ return NONSHARED;} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 56 "deflex.l" +{ return SINGLE;} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 57 "deflex.l" +{ return MULTIPLE;} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 58 "deflex.l" +{ return INITINSTANCE;} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 59 "deflex.l" +{ return INITGLOBAL;} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 60 "deflex.l" +{ return TERMINSTANCE;} + YY_BREAK +case 26: +YY_RULE_SETUP +#line 61 "deflex.l" +{ return TERMGLOBAL;} + YY_BREAK +case 27: +YY_RULE_SETUP +#line 63 "deflex.l" +{ yylval.number = strtol (yytext,0,0); + return NUMBER; } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 66 "deflex.l" +{ + yylval.id = xstrdup (yytext); + return ID; + } + YY_BREAK +case 29: +/* rule 29 can match eol */ +YY_RULE_SETUP +#line 71 "deflex.l" +{ + yylval.id = xstrdup (yytext+1); + yylval.id[yyleng-2] = 0; + return ID; + } + YY_BREAK +case 30: +/* rule 30 can match eol */ +YY_RULE_SETUP +#line 77 "deflex.l" +{ + yylval.id = xstrdup (yytext+1); + yylval.id[yyleng-2] = 0; + return ID; + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 82 "deflex.l" +{ } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 83 "deflex.l" +{ } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 84 "deflex.l" +{ } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 85 "deflex.l" +{ } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 86 "deflex.l" +{ } + YY_BREAK +case 36: +/* rule 36 can match eol */ +YY_RULE_SETUP +#line 87 "deflex.l" +{ linenumber ++ ;} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 88 "deflex.l" +{ return EQUAL;} + YY_BREAK +case 38: +YY_RULE_SETUP +#line 89 "deflex.l" +{ return '=';} + YY_BREAK +case 39: +YY_RULE_SETUP +#line 90 "deflex.l" +{ return '.';} + YY_BREAK +case 40: +YY_RULE_SETUP +#line 91 "deflex.l" +{ return '@';} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 92 "deflex.l" +{ return ',';} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 93 "deflex.l" +ECHO; + YY_BREAK +#line 1098 "deflex.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 199 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 198); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 93 "deflex.l" + + +#ifndef yywrap +/* Needed for lex, though not flex. */ +int yywrap(void) { return 1; } +#endif + diff --git a/binutils/defparse.c b/binutils/defparse.c new file mode 100644 index 00000000000..6a3c79112c7 --- /dev/null +++ b/binutils/defparse.c @@ -0,0 +1,2141 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NAME = 258, + LIBRARY = 259, + DESCRIPTION = 260, + STACKSIZE = 261, + HEAPSIZE = 262, + CODE = 263, + DATA = 264, + SECTIONS = 265, + EXPORTS = 266, + IMPORTS = 267, + VERSIONK = 268, + BASE = 269, + CONSTANT = 270, + READ = 271, + WRITE = 272, + EXECUTE = 273, + SHARED = 274, + NONSHARED = 275, + NONAME = 276, + PRIVATE = 277, + SINGLE = 278, + MULTIPLE = 279, + INITINSTANCE = 280, + INITGLOBAL = 281, + TERMINSTANCE = 282, + TERMGLOBAL = 283, + EQUAL = 284, + ID = 285, + NUMBER = 286 + }; +#endif +/* Tokens. */ +#define NAME 258 +#define LIBRARY 259 +#define DESCRIPTION 260 +#define STACKSIZE 261 +#define HEAPSIZE 262 +#define CODE 263 +#define DATA 264 +#define SECTIONS 265 +#define EXPORTS 266 +#define IMPORTS 267 +#define VERSIONK 268 +#define BASE 269 +#define CONSTANT 270 +#define READ 271 +#define WRITE 272 +#define EXECUTE 273 +#define SHARED 274 +#define NONSHARED 275 +#define NONAME 276 +#define PRIVATE 277 +#define SINGLE 278 +#define MULTIPLE 279 +#define INITINSTANCE 280 +#define INITGLOBAL 281 +#define TERMINSTANCE 282 +#define TERMGLOBAL 283 +#define EQUAL 284 +#define ID 285 +#define NUMBER 286 + + + + +/* Copy the first part of user declarations. */ +#line 1 "defparse.y" + /* defparse.y - parser for .def files */ + +/* Copyright (C) 1995-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "libiberty.h" +#include "dlltool.h" + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 28 "defparse.y" +{ + char *id; + const char *id_const; + int number; +} +/* Line 193 of yacc.c. */ +#line 191 "defparse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 204 "defparse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 66 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 141 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 36 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 26 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 98 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 139 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 286 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 34, 2, 32, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 33, 2, 2, 35, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 12, 17, 20, 23, 27, + 31, 34, 37, 40, 43, 46, 51, 52, 55, 64, + 67, 69, 78, 87, 94, 101, 108, 115, 120, 125, + 128, 130, 133, 137, 139, 141, 142, 145, 146, 148, + 150, 152, 154, 156, 158, 160, 162, 163, 165, 166, + 168, 169, 171, 172, 174, 176, 178, 180, 182, 184, + 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, + 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, + 227, 230, 234, 238, 240, 241, 244, 245, 248, 249, + 252, 253, 257, 258, 259, 263, 265, 267, 269 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 37, 0, -1, 37, 38, -1, 38, -1, 3, 55, + 59, -1, 4, 55, 59, 60, -1, 11, 39, -1, + 5, 30, -1, 6, 31, 47, -1, 7, 31, 47, + -1, 8, 45, -1, 9, 45, -1, 10, 43, -1, + 12, 41, -1, 13, 31, -1, 13, 31, 32, 31, + -1, -1, 39, 40, -1, 30, 58, 56, 50, 49, + 51, 52, 57, -1, 41, 42, -1, 42, -1, 30, + 33, 30, 32, 30, 32, 30, 57, -1, 30, 33, + 30, 32, 30, 32, 31, 57, -1, 30, 33, 30, + 32, 30, 57, -1, 30, 33, 30, 32, 31, 57, + -1, 30, 32, 30, 32, 30, 57, -1, 30, 32, + 30, 32, 31, 57, -1, 30, 32, 30, 57, -1, + 30, 32, 31, 57, -1, 43, 44, -1, 44, -1, + 30, 45, -1, 45, 46, 48, -1, 48, -1, 34, + -1, -1, 34, 31, -1, -1, 16, -1, 17, -1, + 18, -1, 19, -1, 20, -1, 23, -1, 24, -1, + 15, -1, -1, 21, -1, -1, 9, -1, -1, 22, + -1, -1, 3, -1, 5, -1, 6, -1, 7, -1, + 8, -1, 9, -1, 10, -1, 11, -1, 12, -1, + 13, -1, 14, -1, 15, -1, 21, -1, 22, -1, + 16, -1, 17, -1, 18, -1, 19, -1, 20, -1, + 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, + 28, -1, 30, -1, 32, 53, -1, 32, 54, -1, + 53, 32, 54, -1, 30, 32, 54, -1, 54, -1, + -1, 35, 31, -1, -1, 29, 54, -1, -1, 33, + 54, -1, -1, 14, 33, 31, -1, -1, -1, 60, + 46, 61, -1, 25, -1, 26, -1, 27, -1, 28, + -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 48, 48, 49, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 68, 70, 74, 79, + 80, 84, 86, 88, 90, 92, 94, 96, 98, 103, + 104, 108, 112, 113, 117, 118, 120, 121, 125, 126, + 127, 128, 129, 130, 131, 135, 136, 140, 141, 145, + 146, 150, 151, 154, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 185, 186, + 192, 198, 204, 211, 212, 216, 217, 221, 222, 226, + 227, 230, 231, 234, 236, 240, 241, 242, 243 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "NAME", "LIBRARY", "DESCRIPTION", + "STACKSIZE", "HEAPSIZE", "CODE", "DATA", "SECTIONS", "EXPORTS", + "IMPORTS", "VERSIONK", "BASE", "CONSTANT", "READ", "WRITE", "EXECUTE", + "SHARED", "NONSHARED", "NONAME", "PRIVATE", "SINGLE", "MULTIPLE", + "INITINSTANCE", "INITGLOBAL", "TERMINSTANCE", "TERMGLOBAL", "EQUAL", + "ID", "NUMBER", "'.'", "'='", "','", "'@'", "$accept", "start", + "command", "explist", "expline", "implist", "impline", "seclist", + "secline", "attr_list", "opt_comma", "opt_number", "attr", + "opt_CONSTANT", "opt_NONAME", "opt_DATA", "opt_PRIVATE", + "keyword_as_name", "opt_name2", "opt_name", "opt_ordinal", + "opt_import_name", "opt_equal_name", "opt_base", "option_list", "option", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 46, 61, 44, 64 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 36, 37, 37, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 39, 39, 40, 41, + 41, 42, 42, 42, 42, 42, 42, 42, 42, 43, + 43, 44, 45, 45, 46, 46, 47, 47, 48, 48, + 48, 48, 48, 48, 48, 49, 49, 50, 50, 51, + 51, 52, 52, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, + 54, 54, 54, 55, 55, 56, 56, 57, 57, 58, + 58, 59, 59, 60, 60, 61, 61, 61, 61 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 3, 4, 2, 2, 3, 3, + 2, 2, 2, 2, 2, 4, 0, 2, 8, 2, + 1, 8, 8, 6, 6, 6, 6, 4, 4, 2, + 1, 2, 3, 1, 1, 0, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 3, 3, 1, 0, 2, 0, 2, 0, 2, + 0, 3, 0, 0, 3, 1, 1, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 84, 84, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 0, 3, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, + 71, 65, 66, 72, 73, 74, 75, 76, 77, 78, + 0, 0, 83, 92, 92, 7, 37, 37, 38, 39, + 40, 41, 42, 43, 44, 10, 33, 11, 0, 12, + 30, 6, 0, 13, 20, 14, 1, 2, 0, 79, + 80, 0, 0, 4, 93, 0, 8, 9, 34, 0, + 31, 29, 90, 17, 0, 0, 19, 0, 82, 81, + 0, 5, 36, 32, 0, 86, 88, 88, 0, 15, + 91, 0, 89, 0, 48, 0, 0, 27, 28, 0, + 95, 96, 97, 98, 94, 85, 47, 46, 87, 88, + 88, 88, 88, 45, 50, 25, 26, 0, 23, 24, + 49, 52, 88, 88, 51, 88, 21, 22, 18 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 12, 13, 61, 83, 63, 64, 59, 60, 55, + 79, 76, 56, 124, 117, 131, 135, 41, 42, 43, + 104, 107, 95, 73, 91, 114 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -96 +static const yytype_int8 yypact[] = +{ + 38, 61, 61, -22, -1, 8, 39, 39, -7, -96, + 23, 59, 92, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, -96, -96, -96, 62, + 61, 79, -96, 96, 96, -96, 80, 80, -96, -96, + -96, -96, -96, -96, -96, -13, -96, -13, 39, -7, + -96, 82, 1, 23, -96, 81, -96, -96, 61, 79, + -96, 61, 83, -96, -96, 84, -96, -96, -96, 39, + -13, -96, 85, -96, 5, 87, -96, 88, -96, -96, + 89, -12, -96, -96, 61, 86, -20, 93, 91, -96, + -96, -8, -96, 94, 103, 61, 30, -96, -96, 76, + -96, -96, -96, -96, -96, -96, -96, 111, -96, 93, + 93, 0, 93, -96, 118, -96, -96, 78, -96, -96, + -96, 106, 93, 93, -96, 93, -96, -96, -96 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -96, -96, 117, -96, -96, -96, 67, -96, 72, -6, + 41, 90, 54, -96, -96, -96, -96, 95, -40, 132, + -96, -95, -96, 97, -96, -96 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -36 +static const yytype_int16 yytable[] = +{ + 70, 57, 108, -35, -35, -35, -35, -35, 45, 105, + -35, -35, 106, -35, -35, -35, -35, 110, 111, 112, + 113, 78, 78, 58, 125, 126, 128, 129, 88, 105, + 46, 89, 127, 84, 85, 96, 97, 136, 137, 47, + 138, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 80, 62, 102, 48, 49, 50, 51, 52, + 119, 120, 53, 54, 14, 118, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 65, 39, 66, 40, 68, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 121, 122, 132, 133, + 72, 71, 82, 87, 75, 92, 90, 98, 94, 99, + 100, 103, 105, 109, 116, 115, 123, 130, 134, 67, + 86, 81, 101, 93, 44, 69, 0, 77, 0, 0, + 0, 74 +}; + +static const yytype_int16 yycheck[] = +{ + 40, 7, 97, 16, 17, 18, 19, 20, 30, 29, + 23, 24, 32, 25, 26, 27, 28, 25, 26, 27, + 28, 34, 34, 30, 119, 120, 121, 122, 68, 29, + 31, 71, 32, 32, 33, 30, 31, 132, 133, 31, + 135, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 58, 30, 94, 16, 17, 18, 19, 20, + 30, 31, 23, 24, 3, 105, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 31, 30, 0, 32, 32, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 30, 31, 30, 31, + 14, 32, 30, 32, 34, 31, 33, 30, 33, 31, + 31, 35, 29, 32, 21, 31, 15, 9, 22, 12, + 63, 59, 91, 79, 2, 40, -1, 47, -1, -1, + -1, 44 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 37, 38, 3, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, + 32, 53, 54, 55, 55, 30, 31, 31, 16, 17, + 18, 19, 20, 23, 24, 45, 48, 45, 30, 43, + 44, 39, 30, 41, 42, 31, 0, 38, 32, 53, + 54, 32, 14, 59, 59, 34, 47, 47, 34, 46, + 45, 44, 30, 40, 32, 33, 42, 32, 54, 54, + 33, 60, 31, 48, 33, 58, 30, 31, 30, 31, + 31, 46, 54, 35, 56, 29, 32, 57, 57, 32, + 25, 26, 27, 28, 61, 31, 21, 50, 54, 30, + 31, 30, 31, 15, 49, 57, 57, 32, 57, 57, + 9, 51, 30, 31, 22, 52, 57, 57, 57 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: +#line 53 "defparse.y" + { def_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].number)); } + break; + + case 5: +#line 54 "defparse.y" + { def_library ((yyvsp[(2) - (4)].id), (yyvsp[(3) - (4)].number)); } + break; + + case 7: +#line 56 "defparse.y" + { def_description ((yyvsp[(2) - (2)].id));} + break; + + case 8: +#line 57 "defparse.y" + { def_stacksize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} + break; + + case 9: +#line 58 "defparse.y" + { def_heapsize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} + break; + + case 10: +#line 59 "defparse.y" + { def_code ((yyvsp[(2) - (2)].number));} + break; + + case 11: +#line 60 "defparse.y" + { def_data ((yyvsp[(2) - (2)].number));} + break; + + case 14: +#line 63 "defparse.y" + { def_version ((yyvsp[(2) - (2)].number),0);} + break; + + case 15: +#line 64 "defparse.y" + { def_version ((yyvsp[(2) - (4)].number),(yyvsp[(4) - (4)].number));} + break; + + case 18: +#line 76 "defparse.y" + { def_exports ((yyvsp[(1) - (8)].id), (yyvsp[(2) - (8)].id), (yyvsp[(3) - (8)].number), (yyvsp[(4) - (8)].number), (yyvsp[(5) - (8)].number), (yyvsp[(6) - (8)].number), (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id));} + break; + + case 21: +#line 85 "defparse.y" + { def_import ((yyvsp[(1) - (8)].id),(yyvsp[(3) - (8)].id),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].id), 0, (yyvsp[(8) - (8)].id)); } + break; + + case 22: +#line 87 "defparse.y" + { def_import ((yyvsp[(1) - (8)].id),(yyvsp[(3) - (8)].id),(yyvsp[(5) - (8)].id), 0,(yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id)); } + break; + + case 23: +#line 89 "defparse.y" + { def_import ((yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0,(yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); } + break; + + case 24: +#line 91 "defparse.y" + { def_import ((yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0, 0,(yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); } + break; + + case 25: +#line 93 "defparse.y" + { def_import ( 0,(yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); } + break; + + case 26: +#line 95 "defparse.y" + { def_import ( 0,(yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0,(yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); } + break; + + case 27: +#line 97 "defparse.y" + { def_import ( 0,(yyvsp[(1) - (4)].id), 0,(yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); } + break; + + case 28: +#line 99 "defparse.y" + { def_import ( 0,(yyvsp[(1) - (4)].id), 0, 0,(yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].id)); } + break; + + case 31: +#line 108 "defparse.y" + { def_section ((yyvsp[(1) - (2)].id),(yyvsp[(2) - (2)].number));} + break; + + case 36: +#line 120 "defparse.y" + { (yyval.number)=(yyvsp[(2) - (2)].number);} + break; + + case 37: +#line 121 "defparse.y" + { (yyval.number)=-1;} + break; + + case 38: +#line 125 "defparse.y" + { (yyval.number) = 1; } + break; + + case 39: +#line 126 "defparse.y" + { (yyval.number) = 2; } + break; + + case 40: +#line 127 "defparse.y" + { (yyval.number) = 4; } + break; + + case 41: +#line 128 "defparse.y" + { (yyval.number) = 8; } + break; + + case 42: +#line 129 "defparse.y" + { (yyval.number) = 0; } + break; + + case 43: +#line 130 "defparse.y" + { (yyval.number) = 0; } + break; + + case 44: +#line 131 "defparse.y" + { (yyval.number) = 0; } + break; + + case 45: +#line 135 "defparse.y" + {(yyval.number)=1;} + break; + + case 46: +#line 136 "defparse.y" + {(yyval.number)=0;} + break; + + case 47: +#line 140 "defparse.y" + {(yyval.number)=1;} + break; + + case 48: +#line 141 "defparse.y" + {(yyval.number)=0;} + break; + + case 49: +#line 145 "defparse.y" + { (yyval.number) = 1; } + break; + + case 50: +#line 146 "defparse.y" + { (yyval.number) = 0; } + break; + + case 51: +#line 150 "defparse.y" + { (yyval.number) = 1; } + break; + + case 52: +#line 151 "defparse.y" + { (yyval.number) = 0; } + break; + + case 53: +#line 154 "defparse.y" + { (yyval.id_const) = "NAME"; } + break; + + case 54: +#line 159 "defparse.y" + { (yyval.id_const) = "DESCRIPTION"; } + break; + + case 55: +#line 160 "defparse.y" + { (yyval.id_const) = "STACKSIZE"; } + break; + + case 56: +#line 161 "defparse.y" + { (yyval.id_const) = "HEAPSIZE"; } + break; + + case 57: +#line 162 "defparse.y" + { (yyval.id_const) = "CODE"; } + break; + + case 58: +#line 163 "defparse.y" + { (yyval.id_const) = "DATA"; } + break; + + case 59: +#line 164 "defparse.y" + { (yyval.id_const) = "SECTIONS"; } + break; + + case 60: +#line 165 "defparse.y" + { (yyval.id_const) = "EXPORTS"; } + break; + + case 61: +#line 166 "defparse.y" + { (yyval.id_const) = "IMPORTS"; } + break; + + case 62: +#line 167 "defparse.y" + { (yyval.id_const) = "VERSION"; } + break; + + case 63: +#line 168 "defparse.y" + { (yyval.id_const) = "BASE"; } + break; + + case 64: +#line 169 "defparse.y" + { (yyval.id_const) = "CONSTANT"; } + break; + + case 65: +#line 170 "defparse.y" + { (yyval.id_const) = "NONAME"; } + break; + + case 66: +#line 171 "defparse.y" + { (yyval.id_const) = "PRIVATE"; } + break; + + case 67: +#line 172 "defparse.y" + { (yyval.id_const) = "READ"; } + break; + + case 68: +#line 173 "defparse.y" + { (yyval.id_const) = "WRITE"; } + break; + + case 69: +#line 174 "defparse.y" + { (yyval.id_const) = "EXECUTE"; } + break; + + case 70: +#line 175 "defparse.y" + { (yyval.id_const) = "SHARED"; } + break; + + case 71: +#line 176 "defparse.y" + { (yyval.id_const) = "NONSHARED"; } + break; + + case 72: +#line 177 "defparse.y" + { (yyval.id_const) = "SINGLE"; } + break; + + case 73: +#line 178 "defparse.y" + { (yyval.id_const) = "MULTIPLE"; } + break; + + case 74: +#line 179 "defparse.y" + { (yyval.id_const) = "INITINSTANCE"; } + break; + + case 75: +#line 180 "defparse.y" + { (yyval.id_const) = "INITGLOBAL"; } + break; + + case 76: +#line 181 "defparse.y" + { (yyval.id_const) = "TERMINSTANCE"; } + break; + + case 77: +#line 182 "defparse.y" + { (yyval.id_const) = "TERMGLOBAL"; } + break; + + case 78: +#line 185 "defparse.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 79: +#line 187 "defparse.y" + { + char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id_const)) + 2); + sprintf (name, ".%s", (yyvsp[(2) - (2)].id_const)); + (yyval.id) = name; + } + break; + + case 80: +#line 193 "defparse.y" + { + char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id)) + 2); + sprintf (name, ".%s", (yyvsp[(2) - (2)].id)); + (yyval.id) = name; + } + break; + + case 81: +#line 199 "defparse.y" + { + char *name = xmalloc (strlen ((yyvsp[(1) - (3)].id_const)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id_const), (yyvsp[(3) - (3)].id)); + (yyval.id) = name; + } + break; + + case 82: +#line 205 "defparse.y" + { + char *name = xmalloc (strlen ((yyvsp[(1) - (3)].id)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + (yyval.id) = name; + } + break; + + case 83: +#line 211 "defparse.y" + { (yyval.id) =(yyvsp[(1) - (1)].id); } + break; + + case 84: +#line 212 "defparse.y" + { (yyval.id)=""; } + break; + + case 85: +#line 216 "defparse.y" + { (yyval.number)=(yyvsp[(2) - (2)].number);} + break; + + case 86: +#line 217 "defparse.y" + { (yyval.number)=-1;} + break; + + case 87: +#line 221 "defparse.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 88: +#line 222 "defparse.y" + { (yyval.id) = 0; } + break; + + case 89: +#line 226 "defparse.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 90: +#line 227 "defparse.y" + { (yyval.id) = 0; } + break; + + case 91: +#line 230 "defparse.y" + { (yyval.number)= (yyvsp[(3) - (3)].number);} + break; + + case 92: +#line 231 "defparse.y" + { (yyval.number)=-1;} + break; + + +/* Line 1267 of yacc.c. */ +#line 1928 "defparse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + diff --git a/binutils/defparse.h b/binutils/defparse.h new file mode 100644 index 00000000000..206663eb416 --- /dev/null +++ b/binutils/defparse.h @@ -0,0 +1,124 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NAME = 258, + LIBRARY = 259, + DESCRIPTION = 260, + STACKSIZE = 261, + HEAPSIZE = 262, + CODE = 263, + DATA = 264, + SECTIONS = 265, + EXPORTS = 266, + IMPORTS = 267, + VERSIONK = 268, + BASE = 269, + CONSTANT = 270, + READ = 271, + WRITE = 272, + EXECUTE = 273, + SHARED = 274, + NONSHARED = 275, + NONAME = 276, + PRIVATE = 277, + SINGLE = 278, + MULTIPLE = 279, + INITINSTANCE = 280, + INITGLOBAL = 281, + TERMINSTANCE = 282, + TERMGLOBAL = 283, + EQUAL = 284, + ID = 285, + NUMBER = 286 + }; +#endif +/* Tokens. */ +#define NAME 258 +#define LIBRARY 259 +#define DESCRIPTION 260 +#define STACKSIZE 261 +#define HEAPSIZE 262 +#define CODE 263 +#define DATA 264 +#define SECTIONS 265 +#define EXPORTS 266 +#define IMPORTS 267 +#define VERSIONK 268 +#define BASE 269 +#define CONSTANT 270 +#define READ 271 +#define WRITE 272 +#define EXECUTE 273 +#define SHARED 274 +#define NONSHARED 275 +#define NONAME 276 +#define PRIVATE 277 +#define SINGLE 278 +#define MULTIPLE 279 +#define INITINSTANCE 280 +#define INITGLOBAL 281 +#define TERMINSTANCE 282 +#define TERMGLOBAL 283 +#define EQUAL 284 +#define ID 285 +#define NUMBER 286 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 28 "defparse.y" +{ + char *id; + const char *id_const; + int number; +} +/* Line 1529 of yacc.c. */ +#line 117 "defparse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/doc/addr2line.1 b/binutils/doc/addr2line.1 new file mode 100644 index 00000000000..08e38a90623 --- /dev/null +++ b/binutils/doc/addr2line.1 @@ -0,0 +1,315 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "ADDR2LINE 1" +.TH ADDR2LINE 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +addr2line \- convert addresses into file names and line numbers. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +addr2line [\fB\-a\fR|\fB\-\-addresses\fR] + [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR] + [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]] + [\fB\-e\fR \fIfilename\fR|\fB\-\-exe=\fR\fIfilename\fR] + [\fB\-f\fR|\fB\-\-functions\fR] [\fB\-s\fR|\fB\-\-basename\fR] + [\fB\-i\fR|\fB\-\-inlines\fR] + [\fB\-p\fR|\fB\-\-pretty\-print\fR] + [\fB\-j\fR|\fB\-\-section=\fR\fIname\fR] + [\fB\-H\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] + [addr addr ...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBaddr2line\fR translates addresses into file names and line numbers. +Given an address in an executable or an offset in a section of a relocatable +object, it uses the debugging information to figure out which file name and +line number are associated with it. +.PP +The executable or relocatable object to use is specified with the \fB\-e\fR +option. The default is the file \fIa.out\fR. The section in the relocatable +object to use is specified with the \fB\-j\fR option. +.PP +\&\fBaddr2line\fR has two modes of operation. +.PP +In the first, hexadecimal addresses are specified on the command line, +and \fBaddr2line\fR displays the file name and line number for each +address. +.PP +In the second, \fBaddr2line\fR reads hexadecimal addresses from +standard input, and prints the file name and line number for each +address on standard output. In this mode, \fBaddr2line\fR may be used +in a pipe to convert dynamically chosen addresses. +.PP +The format of the output is \fB\s-1FILENAME:LINENO\s0\fR. By default +each input address generates one line of output. +.PP +Two options can generate additional lines before each +\&\fB\s-1FILENAME:LINENO\s0\fR line (in that order). +.PP +If the \fB\-a\fR option is used then a line with the input address +is displayed. +.PP +If the \fB\-f\fR option is used, then a line with the +\&\fB\s-1FUNCTIONNAME\s0\fR is displayed. This is the name of the function +containing the address. +.PP +One option can generate additional lines after the +\&\fB\s-1FILENAME:LINENO\s0\fR line. +.PP +If the \fB\-i\fR option is used and the code at the given address is +present there because of inlining by the compiler then additional +lines are displayed afterwards. One or two extra lines (if the +\&\fB\-f\fR option is used) are displayed for each inlined function. +.PP +Alternatively if the \fB\-p\fR option is used then each input +address generates a single, long, output line containing the address, +the function name, the file name and the line number. If the +\&\fB\-i\fR option has also been used then any inlined functions will +be displayed in the same manner, but on separate lines, and prefixed +by the text \fB(inlined by)\fR. +.PP +If the file name or function name can not be determined, +\&\fBaddr2line\fR will print two question marks in their place. If the +line number can not be determined, \fBaddr2line\fR will print 0. +.SH "OPTIONS" +.IX Header "OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-addresses\fR" 4 +.IX Item "--addresses" +.PD +Display the address before the function name, file and line number +information. The address is printed with a \fB0x\fR prefix to easily +identify it. +.IP "\fB\-b\fR \fIbfdname\fR" 4 +.IX Item "-b bfdname" +.PD 0 +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +.PD +Specify that the object-code format for the object files is +\&\fIbfdname\fR. +.IP "\fB\-C\fR" 4 +.IX Item "-C" +.PD 0 +.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4 +.IX Item "--demangle[=style]" +.PD +Decode (\fIdemangle\fR) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes \*(C+ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. +.IP "\fB\-e\fR \fIfilename\fR" 4 +.IX Item "-e filename" +.PD 0 +.IP "\fB\-\-exe=\fR\fIfilename\fR" 4 +.IX Item "--exe=filename" +.PD +Specify the name of the executable for which addresses should be +translated. The default file is \fIa.out\fR. +.IP "\fB\-f\fR" 4 +.IX Item "-f" +.PD 0 +.IP "\fB\-\-functions\fR" 4 +.IX Item "--functions" +.PD +Display function names as well as file and line number information. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-basenames\fR" 4 +.IX Item "--basenames" +.PD +Display only the base of each file name. +.IP "\fB\-i\fR" 4 +.IX Item "-i" +.PD 0 +.IP "\fB\-\-inlines\fR" 4 +.IX Item "--inlines" +.PD +If the address belongs to a function that was inlined, the source +information for all enclosing scopes back to the first non-inlined +function will also be printed. For example, if \f(CW\*(C`main\*(C'\fR inlines +\&\f(CW\*(C`callee1\*(C'\fR which inlines \f(CW\*(C`callee2\*(C'\fR, and address is from +\&\f(CW\*(C`callee2\*(C'\fR, the source information for \f(CW\*(C`callee1\*(C'\fR and \f(CW\*(C`main\*(C'\fR +will also be printed. +.IP "\fB\-j\fR" 4 +.IX Item "-j" +.PD 0 +.IP "\fB\-\-section\fR" 4 +.IX Item "--section" +.PD +Read offsets relative to the specified section instead of absolute addresses. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-pretty\-print\fR" 4 +.IX Item "--pretty-print" +.PD +Make the output more human friendly: each location are printed on one line. +If option \fB\-i\fR is specified, lines for all enclosing scopes are +prefixed with \fB(inlined by)\fR. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/ar.1 b/binutils/doc/ar.1 new file mode 100644 index 00000000000..a6f91e598c4 --- /dev/null +++ b/binutils/doc/ar.1 @@ -0,0 +1,471 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "AR 1" +.TH AR 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ar \- create, modify, and extract from archives +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +ar [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR] [\fB\-\-plugin\fR \fIname\fR] [\fB\-\-target\fR \fIbfdname\fR] [\fIrelpos\fR] [\fIcount\fR] \fIarchive\fR [\fImember\fR...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \s-1GNU \s0\fBar\fR program creates, modifies, and extracts from +archives. An \fIarchive\fR is a single file holding a collection of +other files in a structure that makes it possible to retrieve +the original individual files (called \fImembers\fR of the archive). +.PP +The original files' contents, mode (permissions), timestamp, owner, and +group are preserved in the archive, and can be restored on +extraction. +.PP +\&\s-1GNU \s0\fBar\fR can maintain archives whose members have names of any +length; however, depending on how \fBar\fR is configured on your +system, a limit on member-name length may be imposed for compatibility +with archive formats maintained with other tools. If it exists, the +limit is often 15 characters (typical of formats related to a.out) or 16 +characters (typical of formats related to coff). +.PP +\&\fBar\fR is considered a binary utility because archives of this sort +are most often used as \fIlibraries\fR holding commonly needed +subroutines. +.PP +\&\fBar\fR creates an index to the symbols defined in relocatable +object modules in the archive when you specify the modifier \fBs\fR. +Once created, this index is updated in the archive whenever \fBar\fR +makes a change to its contents (save for the \fBq\fR update operation). +An archive with such an index speeds up linking to the library, and +allows routines in the library to call each other without regard to +their placement in the archive. +.PP +You may use \fBnm \-s\fR or \fBnm \-\-print\-armap\fR to list this index +table. If an archive lacks the table, another form of \fBar\fR called +\&\fBranlib\fR can be used to add just the table. +.PP +\&\s-1GNU \s0\fBar\fR can optionally create a \fIthin\fR archive, +which contains a symbol index and references to the original copies +of the member files of the archive. This is useful for building +libraries for use within a local build tree, where the relocatable +objects are expected to remain available, and copying the contents of +each object would only waste time and space. +.PP +An archive can either be \fIthin\fR or it can be normal. It cannot +be both at the same time. Once an archive is created its format +cannot be changed without first deleting it and then creating a new +archive in its place. +.PP +Thin archives are also \fIflattened\fR, so that adding one thin +archive to another thin archive does not nest it, as would happen with +a normal archive. Instead the elements of the first archive are added +individually to the second archive. +.PP +The paths to the elements of the archive are stored relative to the +archive itself. For security reasons absolute paths and paths with a +\&\f(CW\*(C`/../\*(C'\fR component are not allowed. +.PP +\&\s-1GNU \s0\fBar\fR is designed to be compatible with two different +facilities. You can control its activity using command-line options, +like the different varieties of \fBar\fR on Unix systems; or, if you +specify the single command-line option \fB\-M\fR, you can control it +with a script supplied via standard input, like the \s-1MRI \s0\*(L"librarian\*(R" +program. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\s-1GNU \s0\fBar\fR allows you to mix the operation code \fIp\fR and modifier +flags \fImod\fR in any order, within the first command-line argument. +.PP +If you wish, you may begin the first command-line argument with a +dash. +.PP +The \fIp\fR keyletter specifies what operation to execute; it may be +any of the following, but you must specify only one of them: +.IP "\fBd\fR" 4 +.IX Item "d" +\&\fIDelete\fR modules from the archive. Specify the names of modules to +be deleted as \fImember\fR...; the archive is untouched if you +specify no files to delete. +.Sp +If you specify the \fBv\fR modifier, \fBar\fR lists each module +as it is deleted. +.IP "\fBm\fR" 4 +.IX Item "m" +Use this operation to \fImove\fR members in an archive. +.Sp +The ordering of members in an archive can make a difference in how +programs are linked using the library, if a symbol is defined in more +than one member. +.Sp +If no modifiers are used with \f(CW\*(C`m\*(C'\fR, any members you name in the +\&\fImember\fR arguments are moved to the \fIend\fR of the archive; +you can use the \fBa\fR, \fBb\fR, or \fBi\fR modifiers to move them to a +specified place instead. +.IP "\fBp\fR" 4 +.IX Item "p" +\&\fIPrint\fR the specified members of the archive, to the standard +output file. If the \fBv\fR modifier is specified, show the member +name before copying its contents to standard output. +.Sp +If you specify no \fImember\fR arguments, all the files in the archive are +printed. +.IP "\fBq\fR" 4 +.IX Item "q" +\&\fIQuick append\fR; Historically, add the files \fImember\fR... to the end of +\&\fIarchive\fR, without checking for replacement. +.Sp +The modifiers \fBa\fR, \fBb\fR, and \fBi\fR do \fInot\fR affect this +operation; new members are always placed at the end of the archive. +.Sp +The modifier \fBv\fR makes \fBar\fR list each file as it is appended. +.Sp +Since the point of this operation is speed, implementations of +\&\fBar\fR have the option of not updating the archive's symbol +table if one exists. Too many different systems however assume that +symbol tables are always up-to-date, so \s-1GNU \s0\fBar\fR will +rebuild the table even with a quick append. +.Sp +Note \- \s-1GNU \s0\fBar\fR treats the command \fBqs\fR as a +synonym for \fBr\fR \- replacing already existing files in the +archive and appending new ones at the end. +.IP "\fBr\fR" 4 +.IX Item "r" +Insert the files \fImember\fR... into \fIarchive\fR (with +\&\fIreplacement\fR). This operation differs from \fBq\fR in that any +previously existing members are deleted if their names match those being +added. +.Sp +If one of the files named in \fImember\fR... does not exist, \fBar\fR +displays an error message, and leaves undisturbed any existing members +of the archive matching that name. +.Sp +By default, new members are added at the end of the file; but you may +use one of the modifiers \fBa\fR, \fBb\fR, or \fBi\fR to request +placement relative to some existing member. +.Sp +The modifier \fBv\fR used with this operation elicits a line of +output for each file inserted, along with one of the letters \fBa\fR or +\&\fBr\fR to indicate whether the file was appended (no old member +deleted) or replaced. +.IP "\fBs\fR" 4 +.IX Item "s" +Add an index to the archive, or update it if it already exists. Note +this command is an exception to the rule that there can only be one +command letter, as it is possible to use it as either a command or a +modifier. In either case it does the same thing. +.IP "\fBt\fR" 4 +.IX Item "t" +Display a \fItable\fR listing the contents of \fIarchive\fR, or those +of the files listed in \fImember\fR... that are present in the +archive. Normally only the member name is shown; if you also want to +see the modes (permissions), timestamp, owner, group, and size, you can +request that by also specifying the \fBv\fR modifier. +.Sp +If you do not specify a \fImember\fR, all files in the archive +are listed. +.Sp +If there is more than one file with the same name (say, \fBfie\fR) in +an archive (say \fBb.a\fR), \fBar t b.a fie\fR lists only the +first instance; to see them all, you must ask for a complete +listing\-\-\-in our example, \fBar t b.a\fR. +.IP "\fBx\fR" 4 +.IX Item "x" +\&\fIExtract\fR members (named \fImember\fR) from the archive. You can +use the \fBv\fR modifier with this operation, to request that +\&\fBar\fR list each name as it extracts it. +.Sp +If you do not specify a \fImember\fR, all files in the archive +are extracted. +.Sp +Files cannot be extracted from a thin archive. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Displays the list of command line options supported by \fBar\fR +and then exits. +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +Displays the version information of \fBar\fR and then exits. +.PP +A number of modifiers (\fImod\fR) may immediately follow the \fIp\fR +keyletter, to specify variations on an operation's behavior: +.IP "\fBa\fR" 4 +.IX Item "a" +Add new files \fIafter\fR an existing member of the +archive. If you use the modifier \fBa\fR, the name of an existing archive +member must be present as the \fIrelpos\fR argument, before the +\&\fIarchive\fR specification. +.IP "\fBb\fR" 4 +.IX Item "b" +Add new files \fIbefore\fR an existing member of the +archive. If you use the modifier \fBb\fR, the name of an existing archive +member must be present as the \fIrelpos\fR argument, before the +\&\fIarchive\fR specification. (same as \fBi\fR). +.IP "\fBc\fR" 4 +.IX Item "c" +\&\fICreate\fR the archive. The specified \fIarchive\fR is always +created if it did not exist, when you request an update. But a warning is +issued unless you specify in advance that you expect to create it, by +using this modifier. +.IP "\fBD\fR" 4 +.IX Item "D" +Operate in \fIdeterministic\fR mode. When adding files and the archive +index use zero for UIDs, GIDs, timestamps, and use consistent file modes +for all files. When this option is used, if \fBar\fR is used with +identical options and identical input files, multiple runs will create +identical output files regardless of the input files' owners, groups, +file modes, or modification times. +.Sp +If \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default. +It can be disabled with the \fBU\fR modifier, below. +.IP "\fBf\fR" 4 +.IX Item "f" +Truncate names in the archive. \s-1GNU \s0\fBar\fR will normally permit file +names of any length. This will cause it to create archives which are +not compatible with the native \fBar\fR program on some systems. If +this is a concern, the \fBf\fR modifier may be used to truncate file +names when putting them in the archive. +.IP "\fBi\fR" 4 +.IX Item "i" +Insert new files \fIbefore\fR an existing member of the +archive. If you use the modifier \fBi\fR, the name of an existing archive +member must be present as the \fIrelpos\fR argument, before the +\&\fIarchive\fR specification. (same as \fBb\fR). +.IP "\fBl\fR" 4 +.IX Item "l" +This modifier is accepted but not used. +.IP "\fBN\fR" 4 +.IX Item "N" +Uses the \fIcount\fR parameter. This is used if there are multiple +entries in the archive with the same name. Extract or delete instance +\&\fIcount\fR of the given name from the archive. +.IP "\fBo\fR" 4 +.IX Item "o" +Preserve the \fIoriginal\fR dates of members when extracting them. If +you do not specify this modifier, files extracted from the archive +are stamped with the time of extraction. +.IP "\fBP\fR" 4 +.IX Item "P" +Use the full path name when matching names in the archive. \s-1GNU +\&\s0\fBar\fR can not create an archive with a full path name (such archives +are not \s-1POSIX\s0 complaint), but other archive creators can. This option +will cause \s-1GNU \s0\fBar\fR to match file names using a complete path +name, which can be convenient when extracting a single file from an +archive created by another tool. +.IP "\fBs\fR" 4 +.IX Item "s" +Write an object-file index into the archive, or update an existing one, +even if no other change is made to the archive. You may use this modifier +flag either with any operation, or alone. Running \fBar s\fR on an +archive is equivalent to running \fBranlib\fR on it. +.IP "\fBS\fR" 4 +.IX Item "S" +Do not generate an archive symbol table. This can speed up building a +large library in several steps. The resulting archive can not be used +with the linker. In order to build a symbol table, you must omit the +\&\fBS\fR modifier on the last execution of \fBar\fR, or you must run +\&\fBranlib\fR on the archive. +.IP "\fBT\fR" 4 +.IX Item "T" +Make the specified \fIarchive\fR a \fIthin\fR archive. If it already +exists and is a regular archive, the existing members must be present +in the same directory as \fIarchive\fR. +.IP "\fBu\fR" 4 +.IX Item "u" +Normally, \fBar r\fR... inserts all files +listed into the archive. If you would like to insert \fIonly\fR those +of the files you list that are newer than existing members of the same +names, use this modifier. The \fBu\fR modifier is allowed only for the +operation \fBr\fR (replace). In particular, the combination \fBqu\fR is +not allowed, since checking the timestamps would lose any speed +advantage from the operation \fBq\fR. +.IP "\fBU\fR" 4 +.IX Item "U" +Do \fInot\fR operate in \fIdeterministic\fR mode. This is the inverse +of the \fBD\fR modifier, above: added files and the archive index will +get their actual \s-1UID, GID,\s0 timestamp, and file mode values. +.Sp +This is the default unless \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR. +.IP "\fBv\fR" 4 +.IX Item "v" +This modifier requests the \fIverbose\fR version of an operation. Many +operations display additional information, such as filenames processed, +when the modifier \fBv\fR is appended. +.IP "\fBV\fR" 4 +.IX Item "V" +This modifier shows the version number of \fBar\fR. +.PP +\&\fBar\fR ignores an initial option spelt \fB\-X32_64\fR, for +compatibility with \s-1AIX. \s0 The behaviour produced by this option is the +default for \s-1GNU \s0\fBar\fR. \fBar\fR does not support any of the other +\&\fB\-X\fR options; in particular, it does not support \fB\-X32\fR +which is the default for \s-1AIX \s0\fBar\fR. +.PP +The optional command line switch \fB\-\-plugin\fR \fIname\fR causes +\&\fBar\fR to load the plugin called \fIname\fR which adds support +for more file formats. This option is only available if the toolchain +has been built with plugin support enabled. +.PP +The optional command line switch \fB\-\-target\fR \fIbfdname\fR +specifies that the archive members are in an object code format +different from your system's default format. See +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fInm\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/binutils.info b/binutils/doc/binutils.info new file mode 100644 index 00000000000..a483f38dffe --- /dev/null +++ b/binutils/doc/binutils.info @@ -0,0 +1,4957 @@ +This is binutils.info, produced by makeinfo version 4.8 from +binutils.texi. + + Copyright (C) 1991-2014 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled "GNU +Free Documentation License". + +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Binutils: (binutils). The GNU binary utilities. +END-INFO-DIR-ENTRY + +INFO-DIR-SECTION Individual utilities +START-INFO-DIR-ENTRY +* addr2line: (binutils)addr2line. Convert addresses to file and line. +* ar: (binutils)ar. Create, modify, and extract from archives. +* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols. +* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt. +* dlltool: (binutils)dlltool. Create files needed to build and use DLLs. +* nlmconv: (binutils)nlmconv. Converts object code into an NLM. +* nm: (binutils)nm. List symbols from object files. +* objcopy: (binutils)objcopy. Copy and translate object files. +* objdump: (binutils)objdump. Display information from object files. +* ranlib: (binutils)ranlib. Generate index to archive contents. +* readelf: (binutils)readelf. Display the contents of ELF format files. +* size: (binutils)size. List section sizes and total size. +* strings: (binutils)strings. List printable strings from files. +* strip: (binutils)strip. Discard symbols. +* elfedit: (binutils)elfedit. Update the ELF header of ELF files. +* windmc: (binutils)windmc. Generator for Windows message resources. +* windres: (binutils)windres. Manipulate Windows resources. +END-INFO-DIR-ENTRY + + +File: binutils.info, Node: Top, Next: ar, Up: (dir) + +Introduction +************ + +This brief manual contains documentation for the GNU binary utilities +(GNU Binutils) version 2.25: + + This document is distributed under the terms of the GNU Free +Documentation License version 1.3. A copy of the license is included +in the section entitled "GNU Free Documentation License". + +* Menu: + +* ar:: Create, modify, and extract from archives +* nm:: List symbols from object files +* objcopy:: Copy and translate object files +* objdump:: Display information from object files +* ranlib:: Generate index to archive contents +* size:: List section sizes and total size +* strings:: List printable strings from files +* strip:: Discard symbols +* c++filt:: Filter to demangle encoded C++ symbols +* cxxfilt: c++filt. MS-DOS name for c++filt +* addr2line:: Convert addresses to file and line +* nlmconv:: Converts object code into an NLM +* windmc:: Generator for Windows message resources +* windres:: Manipulate Windows resources +* dlltool:: Create files needed to build and use DLLs +* readelf:: Display the contents of ELF format files +* elfedit:: Update the ELF header of ELF files +* Common Options:: Command-line options for all utilities +* Selecting the Target System:: How these utilities determine the target +* Reporting Bugs:: Reporting Bugs +* GNU Free Documentation License:: GNU Free Documentation License +* Binutils Index:: Binutils Index + + +File: binutils.info, Node: ar, Next: nm, Prev: Top, Up: Top + +1 ar +**** + + ar [-]P[MOD] [`--plugin' NAME] [`--target' BFDNAME] [RELPOS] [COUNT] ARCHIVE [MEMBER...] + ar -M [ '), and continues executing even after errors. If you +redirect standard input to a script file, no prompts are issued, and +`ar' abandons execution (with a nonzero exit code) on any error. + + The `ar' command language is _not_ designed to be equivalent to the +command-line options; in fact, it provides somewhat less control over +archives. The only purpose of the command language is to ease the +transition to GNU `ar' for developers who already have scripts written +for the MRI "librarian" program. + + The syntax for the `ar' command language is straightforward: + * commands are recognized in upper or lower case; for example, `LIST' + is the same as `list'. In the following descriptions, commands are + shown in upper case for clarity. + + * a single command may appear on each line; it is the first word on + the line. + + * empty lines are allowed, and have no effect. + + * comments are allowed; text after either of the characters `*' or + `;' is ignored. + + * Whenever you use a list of names as part of the argument to an `ar' + command, you can separate the individual names with either commas + or blanks. Commas are shown in the explanations below, for + clarity. + + * `+' is used as a line continuation character; if `+' appears at + the end of a line, the text on the following line is considered + part of the current command. + + Here are the commands you can use in `ar' scripts, or when using +`ar' interactively. Three of them have special significance: + + `OPEN' or `CREATE' specify a "current archive", which is a temporary +file required for most of the other commands. + + `SAVE' commits the changes so far specified by the script. Prior to +`SAVE', commands affect only the temporary copy of the current archive. + +`ADDLIB ARCHIVE' +`ADDLIB ARCHIVE (MODULE, MODULE, ... MODULE)' + Add all the contents of ARCHIVE (or, if specified, each named + MODULE from ARCHIVE) to the current archive. + + Requires prior use of `OPEN' or `CREATE'. + +`ADDMOD MEMBER, MEMBER, ... MEMBER' + Add each named MEMBER as a module in the current archive. + + Requires prior use of `OPEN' or `CREATE'. + +`CLEAR' + Discard the contents of the current archive, canceling the effect + of any operations since the last `SAVE'. May be executed (with no + effect) even if no current archive is specified. + +`CREATE ARCHIVE' + Creates an archive, and makes it the current archive (required for + many other commands). The new archive is created with a temporary + name; it is not actually saved as ARCHIVE until you use `SAVE'. + You can overwrite existing archives; similarly, the contents of any + existing file named ARCHIVE will not be destroyed until `SAVE'. + +`DELETE MODULE, MODULE, ... MODULE' + Delete each listed MODULE from the current archive; equivalent to + `ar -d ARCHIVE MODULE ... MODULE'. + + Requires prior use of `OPEN' or `CREATE'. + +`DIRECTORY ARCHIVE (MODULE, ... MODULE)' +`DIRECTORY ARCHIVE (MODULE, ... MODULE) OUTPUTFILE' + List each named MODULE present in ARCHIVE. The separate command + `VERBOSE' specifies the form of the output: when verbose output is + off, output is like that of `ar -t ARCHIVE MODULE...'. When + verbose output is on, the listing is like `ar -tv ARCHIVE + MODULE...'. + + Output normally goes to the standard output stream; however, if you + specify OUTPUTFILE as a final argument, `ar' directs the output to + that file. + +`END' + Exit from `ar', with a `0' exit code to indicate successful + completion. This command does not save the output file; if you + have changed the current archive since the last `SAVE' command, + those changes are lost. + +`EXTRACT MODULE, MODULE, ... MODULE' + Extract each named MODULE from the current archive, writing them + into the current directory as separate files. Equivalent to `ar -x + ARCHIVE MODULE...'. + + Requires prior use of `OPEN' or `CREATE'. + +`LIST' + Display full contents of the current archive, in "verbose" style + regardless of the state of `VERBOSE'. The effect is like `ar tv + ARCHIVE'. (This single command is a GNU `ar' enhancement, rather + than present for MRI compatibility.) + + Requires prior use of `OPEN' or `CREATE'. + +`OPEN ARCHIVE' + Opens an existing archive for use as the current archive (required + for many other commands). Any changes as the result of subsequent + commands will not actually affect ARCHIVE until you next use + `SAVE'. + +`REPLACE MODULE, MODULE, ... MODULE' + In the current archive, replace each existing MODULE (named in the + `REPLACE' arguments) from files in the current working directory. + To execute this command without errors, both the file, and the + module in the current archive, must exist. + + Requires prior use of `OPEN' or `CREATE'. + +`VERBOSE' + Toggle an internal flag governing the output from `DIRECTORY'. + When the flag is on, `DIRECTORY' output matches output from `ar + -tv '.... + +`SAVE' + Commit your changes to the current archive, and actually save it + as a file with the name specified in the last `CREATE' or `OPEN' + command. + + Requires prior use of `OPEN' or `CREATE'. + + + +File: binutils.info, Node: nm, Next: objcopy, Prev: ar, Up: Top + +2 nm +**** + + nm [`-A'|`-o'|`--print-file-name'] [`-a'|`--debug-syms'] + [`-B'|`--format=bsd'] [`-C'|`--demangle'[=STYLE]] + [`-D'|`--dynamic'] [`-f'FORMAT|`--format='FORMAT] + [`-g'|`--extern-only'] [`-h'|`--help'] + [`-l'|`--line-numbers'] [`-n'|`-v'|`--numeric-sort'] + [`-P'|`--portability'] [`-p'|`--no-sort'] + [`-r'|`--reverse-sort'] [`-S'|`--print-size'] + [`-s'|`--print-armap'] [`-t' RADIX|`--radix='RADIX] + [`-u'|`--undefined-only'] [`-V'|`--version'] + [`-X 32_64'] [`--defined-only'] [`--no-demangle'] + [`--plugin' NAME] [`--size-sort'] [`--special-syms'] + [`--synthetic'] [`--target='BFDNAME] + [OBJFILE...] + + GNU `nm' lists the symbols from object files OBJFILE.... If no +object files are listed as arguments, `nm' assumes the file `a.out'. + + For each symbol, `nm' shows: + + * The symbol value, in the radix selected by options (see below), or + hexadecimal by default. + + * The symbol type. At least the following types are used; others + are, as well, depending on the object file format. If lowercase, + the symbol is usually local; if uppercase, the symbol is global + (external). There are however a few lowercase symbols that are + shown for special global symbols (`u', `v' and `w'). + + `A' + The symbol's value is absolute, and will not be changed by + further linking. + + `B' + `b' + The symbol is in the uninitialized data section (known as + BSS). + + `C' + The symbol is common. Common symbols are uninitialized data. + When linking, multiple common symbols may appear with the + same name. If the symbol is defined anywhere, the common + symbols are treated as undefined references. For more + details on common symbols, see the discussion of -warn-common + in *Note Linker options: (ld.info)Options. + + `D' + `d' + The symbol is in the initialized data section. + + `G' + `g' + The symbol is in an initialized data section for small + objects. Some object file formats permit more efficient + access to small data objects, such as a global int variable + as opposed to a large global array. + + `i' + For PE format files this indicates that the symbol is in a + section specific to the implementation of DLLs. For ELF + format files this indicates that the symbol is an indirect + function. This is a GNU extension to the standard set of ELF + symbol types. It indicates a symbol which if referenced by a + relocation does not evaluate to its address, but instead must + be invoked at runtime. The runtime execution will then + return the value to be used in the relocation. + + `I' + The symbol is an indirect reference to another symbol. + + `N' + The symbol is a debugging symbol. + + `p' + The symbols is in a stack unwind section. + + `R' + `r' + The symbol is in a read only data section. + + `S' + `s' + The symbol is in an uninitialized data section for small + objects. + + `T' + `t' + The symbol is in the text (code) section. + + `U' + The symbol is undefined. + + `u' + The symbol is a unique global symbol. This is a GNU + extension to the standard set of ELF symbol bindings. For + such a symbol the dynamic linker will make sure that in the + entire process there is just one symbol with this name and + type in use. + + `V' + `v' + The symbol is a weak object. When a weak defined symbol is + linked with a normal defined symbol, the normal defined + symbol is used with no error. When a weak undefined symbol + is linked and the symbol is not defined, the value of the + weak symbol becomes zero with no error. On some systems, + uppercase indicates that a default value has been specified. + + `W' + `w' + The symbol is a weak symbol that has not been specifically + tagged as a weak object symbol. When a weak defined symbol + is linked with a normal defined symbol, the normal defined + symbol is used with no error. When a weak undefined symbol + is linked and the symbol is not defined, the value of the + symbol is determined in a system-specific manner without + error. On some systems, uppercase indicates that a default + value has been specified. + + `-' + The symbol is a stabs symbol in an a.out object file. In + this case, the next values printed are the stabs other field, + the stabs desc field, and the stab type. Stabs symbols are + used to hold debugging information. + + `?' + The symbol type is unknown, or object file format specific. + + * The symbol name. + + The long and short forms of options, shown here as alternatives, are +equivalent. + +`-A' +`-o' +`--print-file-name' + Precede each symbol by the name of the input file (or archive + member) in which it was found, rather than identifying the input + file once only, before all of its symbols. + +`-a' +`--debug-syms' + Display all symbols, even debugger-only symbols; normally these + are not listed. + +`-B' + The same as `--format=bsd' (for compatibility with the MIPS `nm'). + +`-C' +`--demangle[=STYLE]' + Decode ("demangle") low-level symbol names into user-level names. + Besides removing any initial underscore prepended by the system, + this makes C++ function names readable. Different compilers have + different mangling styles. The optional demangling style argument + can be used to choose an appropriate demangling style for your + compiler. *Note c++filt::, for more information on demangling. + +`--no-demangle' + Do not demangle low-level symbol names. This is the default. + +`-D' +`--dynamic' + Display the dynamic symbols rather than the normal symbols. This + is only meaningful for dynamic objects, such as certain types of + shared libraries. + +`-f FORMAT' +`--format=FORMAT' + Use the output format FORMAT, which can be `bsd', `sysv', or + `posix'. The default is `bsd'. Only the first character of + FORMAT is significant; it can be either upper or lower case. + +`-g' +`--extern-only' + Display only external symbols. + +`-h' +`--help' + Show a summary of the options to `nm' and exit. + +`-l' +`--line-numbers' + For each symbol, use debugging information to try to find a + filename and line number. For a defined symbol, look for the line + number of the address of the symbol. For an undefined symbol, + look for the line number of a relocation entry which refers to the + symbol. If line number information can be found, print it after + the other symbol information. + +`-n' +`-v' +`--numeric-sort' + Sort symbols numerically by their addresses, rather than + alphabetically by their names. + +`-p' +`--no-sort' + Do not bother to sort the symbols in any order; print them in the + order encountered. + +`-P' +`--portability' + Use the POSIX.2 standard output format instead of the default + format. Equivalent to `-f posix'. + +`-r' +`--reverse-sort' + Reverse the order of the sort (whether numeric or alphabetic); let + the last come first. + +`-S' +`--print-size' + Print both value and size of defined symbols for the `bsd' output + style. This option has no effect for object formats that do not + record symbol sizes, unless `--size-sort' is also used in which + case a calculated size is displayed. + +`-s' +`--print-armap' + When listing symbols from archive members, include the index: a + mapping (stored in the archive by `ar' or `ranlib') of which + modules contain definitions for which names. + +`-t RADIX' +`--radix=RADIX' + Use RADIX as the radix for printing the symbol values. It must be + `d' for decimal, `o' for octal, or `x' for hexadecimal. + +`-u' +`--undefined-only' + Display only undefined symbols (those external to each object + file). + +`-V' +`--version' + Show the version number of `nm' and exit. + +`-X' + This option is ignored for compatibility with the AIX version of + `nm'. It takes one parameter which must be the string `32_64'. + The default mode of AIX `nm' corresponds to `-X 32', which is not + supported by GNU `nm'. + +`--defined-only' + Display only defined symbols for each object file. + +`--plugin NAME' + Load the plugin called NAME to add support for extra target types. + This option is only available if the toolchain has been built + with plugin support enabled. + +`--size-sort' + Sort symbols by size. The size is computed as the difference + between the value of the symbol and the value of the symbol with + the next higher value. If the `bsd' output format is used the + size of the symbol is printed, rather than the value, and `-S' + must be used in order both size and value to be printed. + +`--special-syms' + Display symbols which have a target-specific special meaning. + These symbols are usually used by the target for some special + processing and are not normally helpful when included in the + normal symbol lists. For example for ARM targets this option + would skip the mapping symbols used to mark transitions between + ARM code, THUMB code and data. + +`--synthetic' + Include synthetic symbols in the output. These are special symbols + created by the linker for various purposes. They are not shown by + default since they are not part of the binary's original source + code. + +`--target=BFDNAME' + Specify an object code format other than your system's default + format. *Note Target Selection::, for more information. + + + +File: binutils.info, Node: objcopy, Next: objdump, Prev: nm, Up: Top + +3 objcopy +********* + + objcopy [`-F' BFDNAME|`--target='BFDNAME] + [`-I' BFDNAME|`--input-target='BFDNAME] + [`-O' BFDNAME|`--output-target='BFDNAME] + [`-B' BFDARCH|`--binary-architecture='BFDARCH] + [`-S'|`--strip-all'] + [`-g'|`--strip-debug'] + [`-K' SYMBOLNAME|`--keep-symbol='SYMBOLNAME] + [`-N' SYMBOLNAME|`--strip-symbol='SYMBOLNAME] + [`--strip-unneeded-symbol='SYMBOLNAME] + [`-G' SYMBOLNAME|`--keep-global-symbol='SYMBOLNAME] + [`--localize-hidden'] + [`-L' SYMBOLNAME|`--localize-symbol='SYMBOLNAME] + [`--globalize-symbol='SYMBOLNAME] + [`-W' SYMBOLNAME|`--weaken-symbol='SYMBOLNAME] + [`-w'|`--wildcard'] + [`-x'|`--discard-all'] + [`-X'|`--discard-locals'] + [`-b' BYTE|`--byte='BYTE] + [`-i' [BREADTH]|`--interleave'[=BREADTH]] + [`--interleave-width='WIDTH] + [`-j' SECTIONPATTERN|`--only-section='SECTIONPATTERN] + [`-R' SECTIONPATTERN|`--remove-section='SECTIONPATTERN] + [`-p'|`--preserve-dates'] + [`-D'|`--enable-deterministic-archives'] + [`-U'|`--disable-deterministic-archives'] + [`--debugging'] + [`--gap-fill='VAL] + [`--pad-to='ADDRESS] + [`--set-start='VAL] + [`--adjust-start='INCR] + [`--change-addresses='INCR] + [`--change-section-address' SECTIONPATTERN{=,+,-}VAL] + [`--change-section-lma' SECTIONPATTERN{=,+,-}VAL] + [`--change-section-vma' SECTIONPATTERN{=,+,-}VAL] + [`--change-warnings'] [`--no-change-warnings'] + [`--set-section-flags' SECTIONPATTERN=FLAGS] + [`--add-section' SECTIONNAME=FILENAME] + [`--dump-section' SECTIONNAME=FILENAME] + [`--rename-section' OLDNAME=NEWNAME[,FLAGS]] + [`--long-section-names' {enable,disable,keep}] + [`--change-leading-char'] [`--remove-leading-char'] + [`--reverse-bytes='NUM] + [`--srec-len='IVAL] [`--srec-forceS3'] + [`--redefine-sym' OLD=NEW] + [`--redefine-syms='FILENAME] + [`--weaken'] + [`--keep-symbols='FILENAME] + [`--strip-symbols='FILENAME] + [`--strip-unneeded-symbols='FILENAME] + [`--keep-global-symbols='FILENAME] + [`--localize-symbols='FILENAME] + [`--globalize-symbols='FILENAME] + [`--weaken-symbols='FILENAME] + [`--alt-machine-code='INDEX] + [`--prefix-symbols='STRING] + [`--prefix-sections='STRING] + [`--prefix-alloc-sections='STRING] + [`--add-gnu-debuglink='PATH-TO-FILE] + [`--keep-file-symbols'] + [`--only-keep-debug'] + [`--strip-dwo'] + [`--extract-dwo'] + [`--extract-symbol'] + [`--writable-text'] + [`--readonly-text'] + [`--pure'] + [`--impure'] + [`--file-alignment='NUM] + [`--heap='SIZE] + [`--image-base='ADDRESS] + [`--section-alignment='NUM] + [`--stack='SIZE] + [`--subsystem='WHICH:MAJOR.MINOR] + [`--compress-debug-sections'] + [`--decompress-debug-sections'] + [`--dwarf-depth=N'] + [`--dwarf-start=N'] + [`-v'|`--verbose'] + [`-V'|`--version'] + [`--help'] [`--info'] + INFILE [OUTFILE] + + The GNU `objcopy' utility copies the contents of an object file to +another. `objcopy' uses the GNU BFD Library to read and write the +object files. It can write the destination object file in a format +different from that of the source object file. The exact behavior of +`objcopy' is controlled by command-line options. Note that `objcopy' +should be able to copy a fully linked file between any two formats. +However, copying a relocatable object file between any two formats may +not work as expected. + + `objcopy' creates temporary files to do its translations and deletes +them afterward. `objcopy' uses BFD to do all its translation work; it +has access to all the formats described in BFD and thus is able to +recognize most formats without being told explicitly. *Note BFD: +(ld.info)BFD. + + `objcopy' can be used to generate S-records by using an output +target of `srec' (e.g., use `-O srec'). + + `objcopy' can be used to generate a raw binary file by using an +output target of `binary' (e.g., use `-O binary'). When `objcopy' +generates a raw binary file, it will essentially produce a memory dump +of the contents of the input object file. All symbols and relocation +information will be discarded. The memory dump will start at the load +address of the lowest section copied into the output file. + + When generating an S-record or a raw binary file, it may be helpful +to use `-S' to remove sections containing debugging information. In +some cases `-R' will be useful to remove sections which contain +information that is not needed by the binary file. + + Note--`objcopy' is not able to change the endianness of its input +files. If the input format has an endianness (some formats do not), +`objcopy' can only copy the inputs into file formats that have the same +endianness or which have no endianness (e.g., `srec'). (However, see +the `--reverse-bytes' option.) + +`INFILE' +`OUTFILE' + The input and output files, respectively. If you do not specify + OUTFILE, `objcopy' creates a temporary file and destructively + renames the result with the name of INFILE. + +`-I BFDNAME' +`--input-target=BFDNAME' + Consider the source file's object format to be BFDNAME, rather than + attempting to deduce it. *Note Target Selection::, for more + information. + +`-O BFDNAME' +`--output-target=BFDNAME' + Write the output file using the object format BFDNAME. *Note + Target Selection::, for more information. + +`-F BFDNAME' +`--target=BFDNAME' + Use BFDNAME as the object format for both the input and the output + file; i.e., simply transfer data from source to destination with no + translation. *Note Target Selection::, for more information. + +`-B BFDARCH' +`--binary-architecture=BFDARCH' + Useful when transforming a architecture-less input file into an + object file. In this case the output architecture can be set to + BFDARCH. This option will be ignored if the input file has a + known BFDARCH. You can access this binary data inside a program + by referencing the special symbols that are created by the + conversion process. These symbols are called + _binary_OBJFILE_start, _binary_OBJFILE_end and + _binary_OBJFILE_size. e.g. you can transform a picture file into + an object file and then access it in your code using these symbols. + +`-j SECTIONPATTERN' +`--only-section=SECTIONPATTERN' + Copy only the indicated sections from the input file to the output + file. This option may be given more than once. Note that using + this option inappropriately may make the output file unusable. + Wildcard characters are accepted in SECTIONPATTERN. + +`-R SECTIONPATTERN' +`--remove-section=SECTIONPATTERN' + Remove any section matching SECTIONPATTERN from the output file. + This option may be given more than once. Note that using this + option inappropriately may make the output file unusable. Wildcard + characters are accepted in SECTIONPATTERN. Using both the `-j' + and `-R' options together results in undefined behaviour. + +`-S' +`--strip-all' + Do not copy relocation and symbol information from the source file. + +`-g' +`--strip-debug' + Do not copy debugging symbols or sections from the source file. + +`--strip-unneeded' + Strip all symbols that are not needed for relocation processing. + +`-K SYMBOLNAME' +`--keep-symbol=SYMBOLNAME' + When stripping symbols, keep symbol SYMBOLNAME even if it would + normally be stripped. This option may be given more than once. + +`-N SYMBOLNAME' +`--strip-symbol=SYMBOLNAME' + Do not copy symbol SYMBOLNAME from the source file. This option + may be given more than once. + +`--strip-unneeded-symbol=SYMBOLNAME' + Do not copy symbol SYMBOLNAME from the source file unless it is + needed by a relocation. This option may be given more than once. + +`-G SYMBOLNAME' +`--keep-global-symbol=SYMBOLNAME' + Keep only symbol SYMBOLNAME global. Make all other symbols local + to the file, so that they are not visible externally. This option + may be given more than once. + +`--localize-hidden' + In an ELF object, mark all symbols that have hidden or internal + visibility as local. This option applies on top of + symbol-specific localization options such as `-L'. + +`-L SYMBOLNAME' +`--localize-symbol=SYMBOLNAME' + Make symbol SYMBOLNAME local to the file, so that it is not + visible externally. This option may be given more than once. + +`-W SYMBOLNAME' +`--weaken-symbol=SYMBOLNAME' + Make symbol SYMBOLNAME weak. This option may be given more than + once. + +`--globalize-symbol=SYMBOLNAME' + Give symbol SYMBOLNAME global scoping so that it is visible + outside of the file in which it is defined. This option may be + given more than once. + +`-w' +`--wildcard' + Permit regular expressions in SYMBOLNAMEs used in other command + line options. The question mark (?), asterisk (*), backslash (\) + and square brackets ([]) operators can be used anywhere in the + symbol name. If the first character of the symbol name is the + exclamation point (!) then the sense of the switch is reversed for + that symbol. For example: + + -w -W !foo -W fo* + + would cause objcopy to weaken all symbols that start with "fo" + except for the symbol "foo". + +`-x' +`--discard-all' + Do not copy non-global symbols from the source file. + +`-X' +`--discard-locals' + Do not copy compiler-generated local symbols. (These usually + start with `L' or `.'.) + +`-b BYTE' +`--byte=BYTE' + If interleaving has been enabled via the `--interleave' option + then start the range of bytes to keep at the BYTEth byte. BYTE + can be in the range from 0 to BREADTH-1, where BREADTH is the + value given by the `--interleave' option. + +`-i [BREADTH]' +`--interleave[=BREADTH]' + Only copy a range out of every BREADTH bytes. (Header data is not + affected). Select which byte in the range begins the copy with + the `--byte' option. Select the width of the range with the + `--interleave-width' option. + + This option is useful for creating files to program ROM. It is + typically used with an `srec' output target. Note that `objcopy' + will complain if you do not specify the `--byte' option as well. + + The default interleave breadth is 4, so with `--byte' set to 0, + `objcopy' would copy the first byte out of every four bytes from + the input to the output. + +`--interleave-width=WIDTH' + When used with the `--interleave' option, copy WIDTH bytes at a + time. The start of the range of bytes to be copied is set by the + `--byte' option, and the extent of the range is set with the + `--interleave' option. + + The default value for this option is 1. The value of WIDTH plus + the BYTE value set by the `--byte' option must not exceed the + interleave breadth set by the `--interleave' option. + + This option can be used to create images for two 16-bit flashes + interleaved in a 32-bit bus by passing `-b 0 -i 4 + --interleave-width=2' and `-b 2 -i 4 --interleave-width=2' to two + `objcopy' commands. If the input was '12345678' then the outputs + would be '1256' and '3478' respectively. + +`-p' +`--preserve-dates' + Set the access and modification dates of the output file to be the + same as those of the input file. + +`-D' +`--enable-deterministic-archives' + Operate in _deterministic_ mode. When copying archive members and + writing the archive index, use zero for UIDs, GIDs, timestamps, + and use consistent file modes for all files. + + If `binutils' was configured with + `--enable-deterministic-archives', then this mode is on by default. + It can be disabled with the `-U' option, below. + +`-U' +`--disable-deterministic-archives' + Do _not_ operate in _deterministic_ mode. This is the inverse of + the `-D' option, above: when copying archive members and writing + the archive index, use their actual UID, GID, timestamp, and file + mode values. + + This is the default unless `binutils' was configured with + `--enable-deterministic-archives'. + +`--debugging' + Convert debugging information, if possible. This is not the + default because only certain debugging formats are supported, and + the conversion process can be time consuming. + +`--gap-fill VAL' + Fill gaps between sections with VAL. This operation applies to + the _load address_ (LMA) of the sections. It is done by increasing + the size of the section with the lower address, and filling in the + extra space created with VAL. + +`--pad-to ADDRESS' + Pad the output file up to the load address ADDRESS. This is done + by increasing the size of the last section. The extra space is + filled in with the value specified by `--gap-fill' (default zero). + +`--set-start VAL' + Set the start address of the new file to VAL. Not all object file + formats support setting the start address. + +`--change-start INCR' +`--adjust-start INCR' + Change the start address by adding INCR. Not all object file + formats support setting the start address. + +`--change-addresses INCR' +`--adjust-vma INCR' + Change the VMA and LMA addresses of all sections, as well as the + start address, by adding INCR. Some object file formats do not + permit section addresses to be changed arbitrarily. Note that + this does not relocate the sections; if the program expects + sections to be loaded at a certain address, and this option is + used to change the sections such that they are loaded at a + different address, the program may fail. + +`--change-section-address SECTIONPATTERN{=,+,-}VAL' +`--adjust-section-vma SECTIONPATTERN{=,+,-}VAL' + Set or change both the VMA address and the LMA address of any + section matching SECTIONPATTERN. If `=' is used, the section + address is set to VAL. Otherwise, VAL is added to or subtracted + from the section address. See the comments under + `--change-addresses', above. If SECTIONPATTERN does not match any + sections in the input file, a warning will be issued, unless + `--no-change-warnings' is used. + +`--change-section-lma SECTIONPATTERN{=,+,-}VAL' + Set or change the LMA address of any sections matching + SECTIONPATTERN. The LMA address is the address where the section + will be loaded into memory at program load time. Normally this is + the same as the VMA address, which is the address of the section + at program run time, but on some systems, especially those where a + program is held in ROM, the two can be different. If `=' is used, + the section address is set to VAL. Otherwise, VAL is added to or + subtracted from the section address. See the comments under + `--change-addresses', above. If SECTIONPATTERN does not match any + sections in the input file, a warning will be issued, unless + `--no-change-warnings' is used. + +`--change-section-vma SECTIONPATTERN{=,+,-}VAL' + Set or change the VMA address of any section matching + SECTIONPATTERN. The VMA address is the address where the section + will be located once the program has started executing. Normally + this is the same as the LMA address, which is the address where + the section will be loaded into memory, but on some systems, + especially those where a program is held in ROM, the two can be + different. If `=' is used, the section address is set to VAL. + Otherwise, VAL is added to or subtracted from the section address. + See the comments under `--change-addresses', above. If + SECTIONPATTERN does not match any sections in the input file, a + warning will be issued, unless `--no-change-warnings' is used. + +`--change-warnings' +`--adjust-warnings' + If `--change-section-address' or `--change-section-lma' or + `--change-section-vma' is used, and the section pattern does not + match any sections, issue a warning. This is the default. + +`--no-change-warnings' +`--no-adjust-warnings' + Do not issue a warning if `--change-section-address' or + `--adjust-section-lma' or `--adjust-section-vma' is used, even if + the section pattern does not match any sections. + +`--set-section-flags SECTIONPATTERN=FLAGS' + Set the flags for any sections matching SECTIONPATTERN. The FLAGS + argument is a comma separated string of flag names. The + recognized names are `alloc', `contents', `load', `noload', + `readonly', `code', `data', `rom', `share', and `debug'. You can + set the `contents' flag for a section which does not have + contents, but it is not meaningful to clear the `contents' flag of + a section which does have contents-just remove the section + instead. Not all flags are meaningful for all object file formats. + +`--add-section SECTIONNAME=FILENAME' + Add a new section named SECTIONNAME while copying the file. The + contents of the new section are taken from the file FILENAME. The + size of the section will be the size of the file. This option only + works on file formats which can support sections with arbitrary + names. Note - it may be necessary to use the `--set-section-flags' + option to set the attributes of the newly created section. + +`--dump-section SECTIONNAME=FILENAME' + Place the contents of section named SECTIONNAME into the file + FILENAME, overwriting any contents that may have been there + previously. This option is the inverse of `--add-section'. This + option is similar to the `--only-section' option except that it + does not create a formatted file, it just dumps the contents as + raw binary data, without applying any relocations. The option can + be specified more than once. + +`--rename-section OLDNAME=NEWNAME[,FLAGS]' + Rename a section from OLDNAME to NEWNAME, optionally changing the + section's flags to FLAGS in the process. This has the advantage + over usng a linker script to perform the rename in that the output + stays as an object file and does not become a linked executable. + + This option is particularly helpful when the input format is + binary, since this will always create a section called .data. If + for example, you wanted instead to create a section called .rodata + containing binary data you could use the following command line to + achieve it: + + objcopy -I binary -O -B \ + --rename-section .data=.rodata,alloc,load,readonly,data,contents \ + + +`--long-section-names {enable,disable,keep}' + Controls the handling of long section names when processing `COFF' + and `PE-COFF' object formats. The default behaviour, `keep', is + to preserve long section names if any are present in the input + file. The `enable' and `disable' options forcibly enable or + disable the use of long section names in the output object; when + `disable' is in effect, any long section names in the input object + will be truncated. The `enable' option will only emit long + section names if any are present in the inputs; this is mostly the + same as `keep', but it is left undefined whether the `enable' + option might force the creation of an empty string table in the + output file. + +`--change-leading-char' + Some object file formats use special characters at the start of + symbols. The most common such character is underscore, which + compilers often add before every symbol. This option tells + `objcopy' to change the leading character of every symbol when it + converts between object file formats. If the object file formats + use the same leading character, this option has no effect. + Otherwise, it will add a character, or remove a character, or + change a character, as appropriate. + +`--remove-leading-char' + If the first character of a global symbol is a special symbol + leading character used by the object file format, remove the + character. The most common symbol leading character is + underscore. This option will remove a leading underscore from all + global symbols. This can be useful if you want to link together + objects of different file formats with different conventions for + symbol names. This is different from `--change-leading-char' + because it always changes the symbol name when appropriate, + regardless of the object file format of the output file. + +`--reverse-bytes=NUM' + Reverse the bytes in a section with output contents. A section + length must be evenly divisible by the value given in order for + the swap to be able to take place. Reversing takes place before + the interleaving is performed. + + This option is used typically in generating ROM images for + problematic target systems. For example, on some target boards, + the 32-bit words fetched from 8-bit ROMs are re-assembled in + little-endian byte order regardless of the CPU byte order. + Depending on the programming model, the endianness of the ROM may + need to be modified. + + Consider a simple file with a section containing the following + eight bytes: `12345678'. + + Using `--reverse-bytes=2' for the above example, the bytes in the + output file would be ordered `21436587'. + + Using `--reverse-bytes=4' for the above example, the bytes in the + output file would be ordered `43218765'. + + By using `--reverse-bytes=2' for the above example, followed by + `--reverse-bytes=4' on the output file, the bytes in the second + output file would be ordered `34127856'. + +`--srec-len=IVAL' + Meaningful only for srec output. Set the maximum length of the + Srecords being produced to IVAL. This length covers both address, + data and crc fields. + +`--srec-forceS3' + Meaningful only for srec output. Avoid generation of S1/S2 + records, creating S3-only record format. + +`--redefine-sym OLD=NEW' + Change the name of a symbol OLD, to NEW. This can be useful when + one is trying link two things together for which you have no + source, and there are name collisions. + +`--redefine-syms=FILENAME' + Apply `--redefine-sym' to each symbol pair "OLD NEW" listed in the + file FILENAME. FILENAME is simply a flat file, with one symbol + pair per line. Line comments may be introduced by the hash + character. This option may be given more than once. + +`--weaken' + Change all global symbols in the file to be weak. This can be + useful when building an object which will be linked against other + objects using the `-R' option to the linker. This option is only + effective when using an object file format which supports weak + symbols. + +`--keep-symbols=FILENAME' + Apply `--keep-symbol' option to each symbol listed in the file + FILENAME. FILENAME is simply a flat file, with one symbol name + per line. Line comments may be introduced by the hash character. + This option may be given more than once. + +`--strip-symbols=FILENAME' + Apply `--strip-symbol' option to each symbol listed in the file + FILENAME. FILENAME is simply a flat file, with one symbol name + per line. Line comments may be introduced by the hash character. + This option may be given more than once. + +`--strip-unneeded-symbols=FILENAME' + Apply `--strip-unneeded-symbol' option to each symbol listed in + the file FILENAME. FILENAME is simply a flat file, with one + symbol name per line. Line comments may be introduced by the hash + character. This option may be given more than once. + +`--keep-global-symbols=FILENAME' + Apply `--keep-global-symbol' option to each symbol listed in the + file FILENAME. FILENAME is simply a flat file, with one symbol + name per line. Line comments may be introduced by the hash + character. This option may be given more than once. + +`--localize-symbols=FILENAME' + Apply `--localize-symbol' option to each symbol listed in the file + FILENAME. FILENAME is simply a flat file, with one symbol name + per line. Line comments may be introduced by the hash character. + This option may be given more than once. + +`--globalize-symbols=FILENAME' + Apply `--globalize-symbol' option to each symbol listed in the file + FILENAME. FILENAME is simply a flat file, with one symbol name + per line. Line comments may be introduced by the hash character. + This option may be given more than once. + +`--weaken-symbols=FILENAME' + Apply `--weaken-symbol' option to each symbol listed in the file + FILENAME. FILENAME is simply a flat file, with one symbol name + per line. Line comments may be introduced by the hash character. + This option may be given more than once. + +`--alt-machine-code=INDEX' + If the output architecture has alternate machine codes, use the + INDEXth code instead of the default one. This is useful in case a + machine is assigned an official code and the tool-chain adopts the + new code, but other applications still depend on the original code + being used. For ELF based architectures if the INDEX alternative + does not exist then the value is treated as an absolute number to + be stored in the e_machine field of the ELF header. + +`--writable-text' + Mark the output text as writable. This option isn't meaningful + for all object file formats. + +`--readonly-text' + Make the output text write protected. This option isn't + meaningful for all object file formats. + +`--pure' + Mark the output file as demand paged. This option isn't + meaningful for all object file formats. + +`--impure' + Mark the output file as impure. This option isn't meaningful for + all object file formats. + +`--prefix-symbols=STRING' + Prefix all symbols in the output file with STRING. + +`--prefix-sections=STRING' + Prefix all section names in the output file with STRING. + +`--prefix-alloc-sections=STRING' + Prefix all the names of all allocated sections in the output file + with STRING. + +`--add-gnu-debuglink=PATH-TO-FILE' + Creates a .gnu_debuglink section which contains a reference to + PATH-TO-FILE and adds it to the output file. + +`--keep-file-symbols' + When stripping a file, perhaps with `--strip-debug' or + `--strip-unneeded', retain any symbols specifying source file + names, which would otherwise get stripped. + +`--only-keep-debug' + Strip a file, removing contents of any sections that would not be + stripped by `--strip-debug' and leaving the debugging sections + intact. In ELF files, this preserves all note sections in the + output. + + The intention is that this option will be used in conjunction with + `--add-gnu-debuglink' to create a two part executable. One a + stripped binary which will occupy less space in RAM and in a + distribution and the second a debugging information file which is + only needed if debugging abilities are required. The suggested + procedure to create these files is as follows: + + 1. Link the executable as normal. Assuming that is is called + `foo' then... + + 2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file + containing the debugging info. + + 3. Run `objcopy --strip-debug foo' to create a stripped + executable. + + 4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link + to the debugging info into the stripped executable. + + Note--the choice of `.dbg' as an extension for the debug info file + is arbitrary. Also the `--only-keep-debug' step is optional. You + could instead do this: + + 1. Link the executable as normal. + + 2. Copy `foo' to `foo.full' + + 3. Run `objcopy --strip-debug foo' + + 4. Run `objcopy --add-gnu-debuglink=foo.full foo' + + i.e., the file pointed to by the `--add-gnu-debuglink' can be the + full executable. It does not have to be a file created by the + `--only-keep-debug' switch. + + Note--this switch is only intended for use on fully linked files. + It does not make sense to use it on object files where the + debugging information may be incomplete. Besides the + gnu_debuglink feature currently only supports the presence of one + filename containing debugging information, not multiple filenames + on a one-per-object-file basis. + +`--strip-dwo' + Remove the contents of all DWARF .dwo sections, leaving the + remaining debugging sections and all symbols intact. This option + is intended for use by the compiler as part of the `-gsplit-dwarf' + option, which splits debug information between the .o file and a + separate .dwo file. The compiler generates all debug information + in the same file, then uses the `--extract-dwo' option to copy the + .dwo sections to the .dwo file, then the `--strip-dwo' option to + remove those sections from the original .o file. + +`--extract-dwo' + Extract the contents of all DWARF .dwo sections. See the + `--strip-dwo' option for more information. + +`--file-alignment NUM' + Specify the file alignment. Sections in the file will always + begin at file offsets which are multiples of this number. This + defaults to 512. [This option is specific to PE targets.] + +`--heap RESERVE' +`--heap RESERVE,COMMIT' + Specify the number of bytes of memory to reserve (and optionally + commit) to be used as heap for this program. [This option is + specific to PE targets.] + +`--image-base VALUE' + Use VALUE as the base address of your program or dll. This is the + lowest memory location that will be used when your program or dll + is loaded. To reduce the need to relocate and improve performance + of your dlls, each should have a unique base address and not + overlap any other dlls. The default is 0x400000 for executables, + and 0x10000000 for dlls. [This option is specific to PE targets.] + +`--section-alignment NUM' + Sets the section alignment. Sections in memory will always begin + at addresses which are a multiple of this number. Defaults to + 0x1000. [This option is specific to PE targets.] + +`--stack RESERVE' +`--stack RESERVE,COMMIT' + Specify the number of bytes of memory to reserve (and optionally + commit) to be used as stack for this program. [This option is + specific to PE targets.] + +`--subsystem WHICH' +`--subsystem WHICH:MAJOR' +`--subsystem WHICH:MAJOR.MINOR' + Specifies the subsystem under which your program will execute. The + legal values for WHICH are `native', `windows', `console', + `posix', `efi-app', `efi-bsd', `efi-rtd', `sal-rtd', and `xbox'. + You may optionally set the subsystem version also. Numeric values + are also accepted for WHICH. [This option is specific to PE + targets.] + +`--extract-symbol' + Keep the file's section flags and symbols but remove all section + data. Specifically, the option: + + * removes the contents of all sections; + + * sets the size of every section to zero; and + + * sets the file's start address to zero. + + This option is used to build a `.sym' file for a VxWorks kernel. + It can also be a useful way of reducing the size of a + `--just-symbols' linker input file. + +`--compress-debug-sections' + Compress DWARF debug sections using zlib. + +`--decompress-debug-sections' + Decompress DWARF debug sections using zlib. + +`-V' +`--version' + Show the version number of `objcopy'. + +`-v' +`--verbose' + Verbose output: list all object files modified. In the case of + archives, `objcopy -V' lists all members of the archive. + +`--help' + Show a summary of the options to `objcopy'. + +`--info' + Display a list showing all architectures and object formats + available. + + +File: binutils.info, Node: objdump, Next: ranlib, Prev: objcopy, Up: Top + +4 objdump +********* + + objdump [`-a'|`--archive-headers'] + [`-b' BFDNAME|`--target=BFDNAME'] + [`-C'|`--demangle'[=STYLE] ] + [`-d'|`--disassemble'] + [`-D'|`--disassemble-all'] + [`-z'|`--disassemble-zeroes'] + [`-EB'|`-EL'|`--endian='{big | little }] + [`-f'|`--file-headers'] + [`-F'|`--file-offsets'] + [`--file-start-context'] + [`-g'|`--debugging'] + [`-e'|`--debugging-tags'] + [`-h'|`--section-headers'|`--headers'] + [`-i'|`--info'] + [`-j' SECTION|`--section='SECTION] + [`-l'|`--line-numbers'] + [`-S'|`--source'] + [`-m' MACHINE|`--architecture='MACHINE] + [`-M' OPTIONS|`--disassembler-options='OPTIONS] + [`-p'|`--private-headers'] + [`-P' OPTIONS|`--private='OPTIONS] + [`-r'|`--reloc'] + [`-R'|`--dynamic-reloc'] + [`-s'|`--full-contents'] + [`-W[lLiaprmfFsoRt]'| + `--dwarf'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] + [`-G'|`--stabs'] + [`-t'|`--syms'] + [`-T'|`--dynamic-syms'] + [`-x'|`--all-headers'] + [`-w'|`--wide'] + [`--start-address='ADDRESS] + [`--stop-address='ADDRESS] + [`--prefix-addresses'] + [`--[no-]show-raw-insn'] + [`--adjust-vma='OFFSET] + [`--special-syms'] + [`--prefix='PREFIX] + [`--prefix-strip='LEVEL] + [`--insn-width='WIDTH] + [`-V'|`--version'] + [`-H'|`--help'] + OBJFILE... + + `objdump' displays information about one or more object files. The +options control what particular information to display. This +information is mostly useful to programmers who are working on the +compilation tools, as opposed to programmers who just want their +program to compile and work. + + OBJFILE... are the object files to be examined. When you specify +archives, `objdump' shows information on each of the member object +files. + + The long and short forms of options, shown here as alternatives, are +equivalent. At least one option from the list +`-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x' must be +given. + +`-a' +`--archive-header' + If any of the OBJFILE files are archives, display the archive + header information (in a format similar to `ls -l'). Besides the + information you could list with `ar tv', `objdump -a' shows the + object file format of each archive member. + +`--adjust-vma=OFFSET' + When dumping information, first add OFFSET to all the section + addresses. This is useful if the section addresses do not + correspond to the symbol table, which can happen when putting + sections at particular addresses when using a format which can not + represent section addresses, such as a.out. + +`-b BFDNAME' +`--target=BFDNAME' + Specify that the object-code format for the object files is + BFDNAME. This option may not be necessary; OBJDUMP can + automatically recognize many formats. + + For example, + objdump -b oasys -m vax -h fu.o + displays summary information from the section headers (`-h') of + `fu.o', which is explicitly identified (`-m') as a VAX object file + in the format produced by Oasys compilers. You can list the + formats available with the `-i' option. *Note Target Selection::, + for more information. + +`-C' +`--demangle[=STYLE]' + Decode ("demangle") low-level symbol names into user-level names. + Besides removing any initial underscore prepended by the system, + this makes C++ function names readable. Different compilers have + different mangling styles. The optional demangling style argument + can be used to choose an appropriate demangling style for your + compiler. *Note c++filt::, for more information on demangling. + +`-g' +`--debugging' + Display debugging information. This attempts to parse STABS and + IEEE debugging format information stored in the file and print it + out using a C like syntax. If neither of these formats are found + this option falls back on the `-W' option to print any DWARF + information in the file. + +`-e' +`--debugging-tags' + Like `-g', but the information is generated in a format compatible + with ctags tool. + +`-d' +`--disassemble' + Display the assembler mnemonics for the machine instructions from + OBJFILE. This option only disassembles those sections which are + expected to contain instructions. + +`-D' +`--disassemble-all' + Like `-d', but disassemble the contents of all sections, not just + those expected to contain instructions. + + If the target is an ARM architecture this switch also has the + effect of forcing the disassembler to decode pieces of data found + in code sections as if they were instructions. + +`--prefix-addresses' + When disassembling, print the complete address on each line. This + is the older disassembly format. + +`-EB' +`-EL' +`--endian={big|little}' + Specify the endianness of the object files. This only affects + disassembly. This can be useful when disassembling a file format + which does not describe endianness information, such as S-records. + +`-f' +`--file-headers' + Display summary information from the overall header of each of the + OBJFILE files. + +`-F' +`--file-offsets' + When disassembling sections, whenever a symbol is displayed, also + display the file offset of the region of data that is about to be + dumped. If zeroes are being skipped, then when disassembly + resumes, tell the user how many zeroes were skipped and the file + offset of the location from where the disassembly resumes. When + dumping sections, display the file offset of the location from + where the dump starts. + +`--file-start-context' + Specify that when displaying interlisted source code/disassembly + (assumes `-S') from a file that has not yet been displayed, extend + the context to the start of the file. + +`-h' +`--section-headers' +`--headers' + Display summary information from the section headers of the object + file. + + File segments may be relocated to nonstandard addresses, for + example by using the `-Ttext', `-Tdata', or `-Tbss' options to + `ld'. However, some object file formats, such as a.out, do not + store the starting address of the file segments. In those + situations, although `ld' relocates the sections correctly, using + `objdump -h' to list the file section headers cannot show the + correct addresses. Instead, it shows the usual addresses, which + are implicit for the target. + +`-H' +`--help' + Print a summary of the options to `objdump' and exit. + +`-i' +`--info' + Display a list showing all architectures and object formats + available for specification with `-b' or `-m'. + +`-j NAME' +`--section=NAME' + Display information only for section NAME. + +`-l' +`--line-numbers' + Label the display (using debugging information) with the filename + and source line numbers corresponding to the object code or relocs + shown. Only useful with `-d', `-D', or `-r'. + +`-m MACHINE' +`--architecture=MACHINE' + Specify the architecture to use when disassembling object files. + This can be useful when disassembling object files which do not + describe architecture information, such as S-records. You can + list the available architectures with the `-i' option. + + If the target is an ARM architecture then this switch has an + additional effect. It restricts the disassembly to only those + instructions supported by the architecture specified by MACHINE. + If it is necessary to use this switch because the input file does + not contain any architecture information, but it is also desired to + disassemble all the instructions use `-marm'. + +`-M OPTIONS' +`--disassembler-options=OPTIONS' + Pass target specific information to the disassembler. Only + supported on some targets. If it is necessary to specify more + than one disassembler option then multiple `-M' options can be + used or can be placed together into a comma separated list. + + If the target is an ARM architecture then this switch can be used + to select which register name set is used during disassembler. + Specifying `-M reg-names-std' (the default) will select the + register names as used in ARM's instruction set documentation, but + with register 13 called 'sp', register 14 called 'lr' and register + 15 called 'pc'. Specifying `-M reg-names-apcs' will select the + name set used by the ARM Procedure Call Standard, whilst + specifying `-M reg-names-raw' will just use `r' followed by the + register number. + + There are also two variants on the APCS register naming scheme + enabled by `-M reg-names-atpcs' and `-M reg-names-special-atpcs' + which use the ARM/Thumb Procedure Call Standard naming + conventions. (Either with the normal register names or the + special register names). + + This option can also be used for ARM architectures to force the + disassembler to interpret all instructions as Thumb instructions by + using the switch `--disassembler-options=force-thumb'. This can be + useful when attempting to disassemble thumb code produced by other + compilers. + + For the x86, some of the options duplicate functions of the `-m' + switch, but allow finer grained control. Multiple selections from + the following may be specified as a comma separated string. + `x86-64', `i386' and `i8086' select disassembly for the given + architecture. `intel' and `att' select between intel syntax mode + and AT&T syntax mode. `intel-mnemonic' and `att-mnemonic' select + between intel mnemonic mode and AT&T mnemonic mode. + `intel-mnemonic' implies `intel' and `att-mnemonic' implies `att'. + `addr64', `addr32', `addr16', `data32' and `data16' specify the + default address size and operand size. These four options will be + overridden if `x86-64', `i386' or `i8086' appear later in the + option string. Lastly, `suffix', when in AT&T mode, instructs the + disassembler to print a mnemonic suffix even when the suffix could + be inferred by the operands. + + For PowerPC, `booke' controls the disassembly of BookE + instructions. `32' and `64' select PowerPC and PowerPC64 + disassembly, respectively. `e300' selects disassembly for the + e300 family. `440' selects disassembly for the PowerPC 440. + `ppcps' selects disassembly for the paired single instructions of + the PPC750CL. + + For MIPS, this option controls the printing of instruction mnemonic + names and register names in disassembled instructions. Multiple + selections from the following may be specified as a comma separated + string, and invalid options are ignored: + + `no-aliases' + Print the 'raw' instruction mnemonic instead of some pseudo + instruction mnemonic. I.e., print 'daddu' or 'or' instead of + 'move', 'sll' instead of 'nop', etc. + + `msa' + Disassemble MSA instructions. + + `virt' + Disassemble the virtualization ASE instructions. + + `xpa' + Disassemble the eXtended Physical Address (XPA) ASE + instructions. + + `gpr-names=ABI' + Print GPR (general-purpose register) names as appropriate for + the specified ABI. By default, GPR names are selected + according to the ABI of the binary being disassembled. + + `fpr-names=ABI' + Print FPR (floating-point register) names as appropriate for + the specified ABI. By default, FPR numbers are printed + rather than names. + + `cp0-names=ARCH' + Print CP0 (system control coprocessor; coprocessor 0) + register names as appropriate for the CPU or architecture + specified by ARCH. By default, CP0 register names are + selected according to the architecture and CPU of the binary + being disassembled. + + `hwr-names=ARCH' + Print HWR (hardware register, used by the `rdhwr' + instruction) names as appropriate for the CPU or architecture + specified by ARCH. By default, HWR names are selected + according to the architecture and CPU of the binary being + disassembled. + + `reg-names=ABI' + Print GPR and FPR names as appropriate for the selected ABI. + + `reg-names=ARCH' + Print CPU-specific register names (CP0 register and HWR names) + as appropriate for the selected CPU or architecture. + + For any of the options listed above, ABI or ARCH may be specified + as `numeric' to have numbers printed rather than names, for the + selected types of registers. You can list the available values of + ABI and ARCH using the `--help' option. + + For VAX, you can specify function entry addresses with `-M + entry:0xf00ba'. You can use this multiple times to properly + disassemble VAX binary files that don't contain symbol tables (like + ROM dumps). In these cases, the function entry mask would + otherwise be decoded as VAX instructions, which would probably + lead the rest of the function being wrongly disassembled. + +`-p' +`--private-headers' + Print information that is specific to the object file format. The + exact information printed depends upon the object file format. + For some object file formats, no additional information is printed. + +`-P OPTIONS' +`--private=OPTIONS' + Print information that is specific to the object file format. The + argument OPTIONS is a comma separated list that depends on the + format (the lists of options is displayed with the help). + + For XCOFF, the available options are: `header', `aout', + `sections', `syms', `relocs', `lineno', `loader', `except', + `typchk', `traceback', `toc' and `ldinfo'. + +`-r' +`--reloc' + Print the relocation entries of the file. If used with `-d' or + `-D', the relocations are printed interspersed with the + disassembly. + +`-R' +`--dynamic-reloc' + Print the dynamic relocation entries of the file. This is only + meaningful for dynamic objects, such as certain types of shared + libraries. As for `-r', if used with `-d' or `-D', the + relocations are printed interspersed with the disassembly. + +`-s' +`--full-contents' + Display the full contents of any sections requested. By default + all non-empty sections are displayed. + +`-S' +`--source' + Display source code intermixed with disassembly, if possible. + Implies `-d'. + +`--prefix=PREFIX' + Specify PREFIX to add to the absolute paths when used with `-S'. + +`--prefix-strip=LEVEL' + Indicate how many initial directory names to strip off the + hardwired absolute paths. It has no effect without + `--prefix='PREFIX. + +`--show-raw-insn' + When disassembling instructions, print the instruction in hex as + well as in symbolic form. This is the default except when + `--prefix-addresses' is used. + +`--no-show-raw-insn' + When disassembling instructions, do not print the instruction + bytes. This is the default when `--prefix-addresses' is used. + +`--insn-width=WIDTH' + Display WIDTH bytes on a single line when disassembling + instructions. + +`-W[lLiaprmfFsoRt]' +`--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]' + Displays the contents of the debug sections in the file, if any are + present. If one of the optional letters or words follows the + switch then only data found in those specific sections will be + dumped. + + Note that there is no single letter option to display the content + of trace sections or .gdb_index. + + Note: the output from the `=info' option can also be affected by + the options `--dwarf-depth', the `--dwarf-start' and the + `--dwarf-check'. + +`--dwarf-depth=N' + Limit the dump of the `.debug_info' section to N children. This + is only useful with `--dwarf=info'. The default is to print all + DIEs; the special value 0 for N will also have this effect. + + With a non-zero value for N, DIEs at or deeper than N levels will + not be printed. The range for N is zero-based. + +`--dwarf-start=N' + Print only DIEs beginning with the DIE numbered N. This is only + useful with `--dwarf=info'. + + If specified, this option will suppress printing of any header + information and all DIEs before the DIE numbered N. Only siblings + and children of the specified DIE will be printed. + + This can be used in conjunction with `--dwarf-depth'. + +`--dwarf-check' + Enable additional checks for consistency of Dwarf information. + +`-G' +`--stabs' + Display the full contents of any sections requested. Display the + contents of the .stab and .stab.index and .stab.excl sections from + an ELF file. This is only useful on systems (such as Solaris 2.0) + in which `.stab' debugging symbol-table entries are carried in an + ELF section. In most other file formats, debugging symbol-table + entries are interleaved with linkage symbols, and are visible in + the `--syms' output. + +`--start-address=ADDRESS' + Start displaying data at the specified address. This affects the + output of the `-d', `-r' and `-s' options. + +`--stop-address=ADDRESS' + Stop displaying data at the specified address. This affects the + output of the `-d', `-r' and `-s' options. + +`-t' +`--syms' + Print the symbol table entries of the file. This is similar to + the information provided by the `nm' program, although the display + format is different. The format of the output depends upon the + format of the file being dumped, but there are two main types. + One looks like this: + + [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss + [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred + + where the number inside the square brackets is the number of the + entry in the symbol table, the SEC number is the section number, + the FL value are the symbol's flag bits, the TY number is the + symbol's type, the SCL number is the symbol's storage class and + the NX value is the number of auxilary entries associated with the + symbol. The last two fields are the symbol's value and its name. + + The other common output format, usually seen with ELF based files, + looks like this: + + 00000000 l d .bss 00000000 .bss + 00000000 g .text 00000000 fred + + Here the first number is the symbol's value (sometimes refered to + as its address). The next field is actually a set of characters + and spaces indicating the flag bits that are set on the symbol. + These characters are described below. Next is the section with + which the symbol is associated or _*ABS*_ if the section is + absolute (ie not connected with any section), or _*UND*_ if the + section is referenced in the file being dumped, but not defined + there. + + After the section name comes another field, a number, which for + common symbols is the alignment and for other symbol is the size. + Finally the symbol's name is displayed. + + The flag characters are divided into 7 groups as follows: + `l' + `g' + `u' + `!' + The symbol is a local (l), global (g), unique global (u), + neither global nor local (a space) or both global and local + (!). A symbol can be neither local or global for a variety + of reasons, e.g., because it is used for debugging, but it is + probably an indication of a bug if it is ever both local and + global. Unique global symbols are a GNU extension to the + standard set of ELF symbol bindings. For such a symbol the + dynamic linker will make sure that in the entire process + there is just one symbol with this name and type in use. + + `w' + The symbol is weak (w) or strong (a space). + + `C' + The symbol denotes a constructor (C) or an ordinary symbol (a + space). + + `W' + The symbol is a warning (W) or a normal symbol (a space). A + warning symbol's name is a message to be displayed if the + symbol following the warning symbol is ever referenced. + + `I' + + `i' + The symbol is an indirect reference to another symbol (I), a + function to be evaluated during reloc processing (i) or a + normal symbol (a space). + + `d' + `D' + The symbol is a debugging symbol (d) or a dynamic symbol (D) + or a normal symbol (a space). + + `F' + + `f' + + `O' + The symbol is the name of a function (F) or a file (f) or an + object (O) or just a normal symbol (a space). + +`-T' +`--dynamic-syms' + Print the dynamic symbol table entries of the file. This is only + meaningful for dynamic objects, such as certain types of shared + libraries. This is similar to the information provided by the `nm' + program when given the `-D' (`--dynamic') option. + +`--special-syms' + When displaying symbols include those which the target considers + to be special in some way and which would not normally be of + interest to the user. + +`-V' +`--version' + Print the version number of `objdump' and exit. + +`-x' +`--all-headers' + Display all available header information, including the symbol + table and relocation entries. Using `-x' is equivalent to + specifying all of `-a -f -h -p -r -t'. + +`-w' +`--wide' + Format some lines for output devices that have more than 80 + columns. Also do not truncate symbol names when they are + displayed. + +`-z' +`--disassemble-zeroes' + Normally the disassembly output will skip blocks of zeroes. This + option directs the disassembler to disassemble those blocks, just + like any other data. + + +File: binutils.info, Node: ranlib, Next: size, Prev: objdump, Up: Top + +5 ranlib +******** + + ranlib [`--plugin' NAME] [`-DhHvVt'] ARCHIVE + + `ranlib' generates an index to the contents of an archive and stores +it in the archive. The index lists each symbol defined by a member of +an archive that is a relocatable object file. + + You may use `nm -s' or `nm --print-armap' to list this index. + + An archive with such an index speeds up linking to the library and +allows routines in the library to call each other without regard to +their placement in the archive. + + The GNU `ranlib' program is another form of GNU `ar'; running +`ranlib' is completely equivalent to executing `ar -s'. *Note ar::. + +`-h' +`-H' +`--help' + Show usage information for `ranlib'. + +`-v' +`-V' +`--version' + Show the version number of `ranlib'. + +`-D' + Operate in _deterministic_ mode. The symbol map archive member's + header will show zero for the UID, GID, and timestamp. When this + option is used, multiple runs will produce identical output files. + + If `binutils' was configured with + `--enable-deterministic-archives', then this mode is on by + default. It can be disabled with the `-U' option, described below. + +`-t' + Update the timestamp of the symbol map of an archive. + +`-U' + Do _not_ operate in _deterministic_ mode. This is the inverse of + the `-D' option, above: the archive index will get actual UID, + GID, timestamp, and file mode values. + + If `binutils' was configured _without_ + `--enable-deterministic-archives', then this mode is on by default. + + + +File: binutils.info, Node: size, Next: strings, Prev: ranlib, Up: Top + +6 size +****** + + size [`-A'|`-B'|`--format='COMPATIBILITY] + [`--help'] + [`-d'|`-o'|`-x'|`--radix='NUMBER] + [`--common'] + [`-t'|`--totals'] + [`--target='BFDNAME] [`-V'|`--version'] + [OBJFILE...] + + The GNU `size' utility lists the section sizes--and the total +size--for each of the object or archive files OBJFILE in its argument +list. By default, one line of output is generated for each object file +or each module in an archive. + + OBJFILE... are the object files to be examined. If none are +specified, the file `a.out' will be used. + + The command line options have the following meanings: + +`-A' +`-B' +`--format=COMPATIBILITY' + Using one of these options, you can choose whether the output from + GNU `size' resembles output from System V `size' (using `-A', or + `--format=sysv'), or Berkeley `size' (using `-B', or + `--format=berkeley'). The default is the one-line format similar + to Berkeley's. + + Here is an example of the Berkeley (default) format of output from + `size': + $ size --format=Berkeley ranlib size + text data bss dec hex filename + 294880 81920 11592 388392 5ed28 ranlib + 294880 81920 11888 388688 5ee50 size + + This is the same data, but displayed closer to System V + conventions: + + $ size --format=SysV ranlib size + ranlib : + section size addr + .text 294880 8192 + .data 81920 303104 + .bss 11592 385024 + Total 388392 + + + size : + section size addr + .text 294880 8192 + .data 81920 303104 + .bss 11888 385024 + Total 388688 + +`--help' + Show a summary of acceptable arguments and options. + +`-d' +`-o' +`-x' +`--radix=NUMBER' + Using one of these options, you can control whether the size of + each section is given in decimal (`-d', or `--radix=10'); octal + (`-o', or `--radix=8'); or hexadecimal (`-x', or `--radix=16'). + In `--radix=NUMBER', only the three values (8, 10, 16) are + supported. The total size is always given in two radices; decimal + and hexadecimal for `-d' or `-x' output, or octal and hexadecimal + if you're using `-o'. + +`--common' + Print total size of common symbols in each file. When using + Berkeley format these are included in the bss size. + +`-t' +`--totals' + Show totals of all objects listed (Berkeley format listing mode + only). + +`--target=BFDNAME' + Specify that the object-code format for OBJFILE is BFDNAME. This + option may not be necessary; `size' can automatically recognize + many formats. *Note Target Selection::, for more information. + +`-V' +`--version' + Display the version number of `size'. + + +File: binutils.info, Node: strings, Next: strip, Prev: size, Up: Top + +7 strings +********* + + strings [`-afovV'] [`-'MIN-LEN] + [`-n' MIN-LEN] [`--bytes='MIN-LEN] + [`-t' RADIX] [`--radix='RADIX] + [`-e' ENCODING] [`--encoding='ENCODING] + [`-'] [`--all'] [`--print-file-name'] + [`-T' BFDNAME] [`--target='BFDNAME] + [`-w'] [`--include-all-whitespace'] + [`--help'] [`--version'] FILE... + + For each FILE given, GNU `strings' prints the printable character +sequences that are at least 4 characters long (or the number given with +the options below) and are followed by an unprintable character. + + Depending upon how the strings program was configured it will default +to either displaying all the printable sequences that it can find in +each file, or only those sequences that are in loadable, initialized +data sections. If the file type in unrecognizable, or if strings is +reading from stdin then it will always display all of the printable +sequences that it can find. + + For backwards compatibility any file that occurs after a command line +option of just `-' will also be scanned in full, regardless of the +presence of any `-d' option. + + `strings' is mainly useful for determining the contents of non-text +files. + +`-a' +`--all' +`-' + Scan the whole file, regardless of what sections it contains or + whether those sections are loaded or initialized. Normally this is + the default behaviour, but strings can be configured so that the + `-d' is the default instead. + + The `-' option is position dependent and forces strings to perform + full scans of any file that is mentioned after the `-' on the + command line, even if the `-d' option has been specified. + +`-d' +`--data' + Only print strings from initialized, loaded data sections in the + file. This may reduce the amount of garbage in the output, but it + also exposes the strings program to any security flaws that may be + present in the BFD library used to scan and load sections. Strings + can be configured so that this option is the default behaviour. In + such cases the `-a' option can be used to avoid using the BFD + library and instead just print all of the strings found in the + file. + +`-f' +`--print-file-name' + Print the name of the file before each string. + +`--help' + Print a summary of the program usage on the standard output and + exit. + +`-MIN-LEN' +`-n MIN-LEN' +`--bytes=MIN-LEN' + Print sequences of characters that are at least MIN-LEN characters + long, instead of the default 4. + +`-o' + Like `-t o'. Some other versions of `strings' have `-o' act like + `-t d' instead. Since we can not be compatible with both ways, we + simply chose one. + +`-t RADIX' +`--radix=RADIX' + Print the offset within the file before each string. The single + character argument specifies the radix of the offset--`o' for + octal, `x' for hexadecimal, or `d' for decimal. + +`-e ENCODING' +`--encoding=ENCODING' + Select the character encoding of the strings that are to be found. + Possible values for ENCODING are: `s' = single-7-bit-byte + characters (ASCII, ISO 8859, etc., default), `S' = + single-8-bit-byte characters, `b' = 16-bit bigendian, `l' = 16-bit + littleendian, `B' = 32-bit bigendian, `L' = 32-bit littleendian. + Useful for finding wide character strings. (`l' and `b' apply to, + for example, Unicode UTF-16/UCS-2 encodings). + +`-T BFDNAME' +`--target=BFDNAME' + Specify an object code format other than your system's default + format. *Note Target Selection::, for more information. + +`-v' +`-V' +`--version' + Print the program version number on the standard output and exit. + +`-w' +`--include-all-whitespace' + By default tab and space characters are included in the strings + that are displayed, but other whitespace characters, such a + newlines and carriage returns, are not. The `-w' option changes + this so that all whitespace characters are considered to be part + of a string. + + +File: binutils.info, Node: strip, Next: c++filt, Prev: strings, Up: Top + +8 strip +******* + + strip [`-F' BFDNAME |`--target='BFDNAME] + [`-I' BFDNAME |`--input-target='BFDNAME] + [`-O' BFDNAME |`--output-target='BFDNAME] + [`-s'|`--strip-all'] + [`-S'|`-g'|`-d'|`--strip-debug'] + [`--strip-dwo'] + [`-K' SYMBOLNAME |`--keep-symbol='SYMBOLNAME] + [`-N' SYMBOLNAME |`--strip-symbol='SYMBOLNAME] + [`-w'|`--wildcard'] + [`-x'|`--discard-all'] [`-X' |`--discard-locals'] + [`-R' SECTIONNAME |`--remove-section='SECTIONNAME] + [`-o' FILE] [`-p'|`--preserve-dates'] + [`-D'|`--enable-deterministic-archives'] + [`-U'|`--disable-deterministic-archives'] + [`--keep-file-symbols'] + [`--only-keep-debug'] + [`-v' |`--verbose'] [`-V'|`--version'] + [`--help'] [`--info'] + OBJFILE... + + GNU `strip' discards all symbols from object files OBJFILE. The +list of object files may include archives. At least one object file +must be given. + + `strip' modifies the files named in its argument, rather than +writing modified copies under different names. + +`-F BFDNAME' +`--target=BFDNAME' + Treat the original OBJFILE as a file with the object code format + BFDNAME, and rewrite it in the same format. *Note Target + Selection::, for more information. + +`--help' + Show a summary of the options to `strip' and exit. + +`--info' + Display a list showing all architectures and object formats + available. + +`-I BFDNAME' +`--input-target=BFDNAME' + Treat the original OBJFILE as a file with the object code format + BFDNAME. *Note Target Selection::, for more information. + +`-O BFDNAME' +`--output-target=BFDNAME' + Replace OBJFILE with a file in the output format BFDNAME. *Note + Target Selection::, for more information. + +`-R SECTIONNAME' +`--remove-section=SECTIONNAME' + Remove any section named SECTIONNAME from the output file. This + option may be given more than once. Note that using this option + inappropriately may make the output file unusable. The wildcard + character `*' may be given at the end of SECTIONNAME. If so, then + any section starting with SECTIONNAME will be removed. + +`-s' +`--strip-all' + Remove all symbols. + +`-g' +`-S' +`-d' +`--strip-debug' + Remove debugging symbols only. + +`--strip-dwo' + Remove the contents of all DWARF .dwo sections, leaving the + remaining debugging sections and all symbols intact. See the + description of this option in the `objcopy' section for more + information. + +`--strip-unneeded' + Remove all symbols that are not needed for relocation processing. + +`-K SYMBOLNAME' +`--keep-symbol=SYMBOLNAME' + When stripping symbols, keep symbol SYMBOLNAME even if it would + normally be stripped. This option may be given more than once. + +`-N SYMBOLNAME' +`--strip-symbol=SYMBOLNAME' + Remove symbol SYMBOLNAME from the source file. This option may be + given more than once, and may be combined with strip options other + than `-K'. + +`-o FILE' + Put the stripped output in FILE, rather than replacing the + existing file. When this argument is used, only one OBJFILE + argument may be specified. + +`-p' +`--preserve-dates' + Preserve the access and modification dates of the file. + +`-D' +`--enable-deterministic-archives' + Operate in _deterministic_ mode. When copying archive members and + writing the archive index, use zero for UIDs, GIDs, timestamps, + and use consistent file modes for all files. + + If `binutils' was configured with + `--enable-deterministic-archives', then this mode is on by default. + It can be disabled with the `-U' option, below. + +`-U' +`--disable-deterministic-archives' + Do _not_ operate in _deterministic_ mode. This is the inverse of + the `-D' option, above: when copying archive members and writing + the archive index, use their actual UID, GID, timestamp, and file + mode values. + + This is the default unless `binutils' was configured with + `--enable-deterministic-archives'. + +`-w' +`--wildcard' + Permit regular expressions in SYMBOLNAMEs used in other command + line options. The question mark (?), asterisk (*), backslash (\) + and square brackets ([]) operators can be used anywhere in the + symbol name. If the first character of the symbol name is the + exclamation point (!) then the sense of the switch is reversed for + that symbol. For example: + + -w -K !foo -K fo* + + would cause strip to only keep symbols that start with the letters + "fo", but to discard the symbol "foo". + +`-x' +`--discard-all' + Remove non-global symbols. + +`-X' +`--discard-locals' + Remove compiler-generated local symbols. (These usually start + with `L' or `.'.) + +`--keep-file-symbols' + When stripping a file, perhaps with `--strip-debug' or + `--strip-unneeded', retain any symbols specifying source file + names, which would otherwise get stripped. + +`--only-keep-debug' + Strip a file, removing contents of any sections that would not be + stripped by `--strip-debug' and leaving the debugging sections + intact. In ELF files, this preserves all note sections in the + output. + + The intention is that this option will be used in conjunction with + `--add-gnu-debuglink' to create a two part executable. One a + stripped binary which will occupy less space in RAM and in a + distribution and the second a debugging information file which is + only needed if debugging abilities are required. The suggested + procedure to create these files is as follows: + + 1. Link the executable as normal. Assuming that is is called + `foo' then... + + 2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file + containing the debugging info. + + 3. Run `objcopy --strip-debug foo' to create a stripped + executable. + + 4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link + to the debugging info into the stripped executable. + + Note--the choice of `.dbg' as an extension for the debug info file + is arbitrary. Also the `--only-keep-debug' step is optional. You + could instead do this: + + 1. Link the executable as normal. + + 2. Copy `foo' to `foo.full' + + 3. Run `strip --strip-debug foo' + + 4. Run `objcopy --add-gnu-debuglink=foo.full foo' + + i.e., the file pointed to by the `--add-gnu-debuglink' can be the + full executable. It does not have to be a file created by the + `--only-keep-debug' switch. + + Note--this switch is only intended for use on fully linked files. + It does not make sense to use it on object files where the + debugging information may be incomplete. Besides the + gnu_debuglink feature currently only supports the presence of one + filename containing debugging information, not multiple filenames + on a one-per-object-file basis. + +`-V' +`--version' + Show the version number for `strip'. + +`-v' +`--verbose' + Verbose output: list all object files modified. In the case of + archives, `strip -v' lists all members of the archive. + + +File: binutils.info, Node: c++filt, Next: addr2line, Prev: strip, Up: Top + +9 c++filt +********* + + c++filt [`-_'|`--strip-underscore'] + [`-n'|`--no-strip-underscore'] + [`-p'|`--no-params'] + [`-t'|`--types'] + [`-i'|`--no-verbose'] + [`-s' FORMAT|`--format='FORMAT] + [`--help'] [`--version'] [SYMBOL...] + + The C++ and Java languages provide function overloading, which means +that you can write many functions with the same name, providing that +each function takes parameters of different types. In order to be able +to distinguish these similarly named functions C++ and Java encode them +into a low-level assembler name which uniquely identifies each +different version. This process is known as "mangling". The `c++filt' +(1) program does the inverse mapping: it decodes ("demangles") low-level +names into user-level names so that they can be read. + + Every alphanumeric word (consisting of letters, digits, underscores, +dollars, or periods) seen in the input is a potential mangled name. If +the name decodes into a C++ name, the C++ name replaces the low-level +name in the output, otherwise the original word is output. In this way +you can pass an entire assembler source file, containing mangled names, +through `c++filt' and see the same source file containing demangled +names. + + You can also use `c++filt' to decipher individual symbols by passing +them on the command line: + + c++filt SYMBOL + + If no SYMBOL arguments are given, `c++filt' reads symbol names from +the standard input instead. All the results are printed on the +standard output. The difference between reading names from the command +line versus reading names from the standard input is that command line +arguments are expected to be just mangled names and no checking is +performed to separate them from surrounding text. Thus for example: + + c++filt -n _Z1fv + + will work and demangle the name to "f()" whereas: + + c++filt -n _Z1fv, + + will not work. (Note the extra comma at the end of the mangled name +which makes it invalid). This command however will work: + + echo _Z1fv, | c++filt -n + + and will display "f(),", i.e., the demangled name followed by a +trailing comma. This behaviour is because when the names are read from +the standard input it is expected that they might be part of an +assembler source file where there might be extra, extraneous characters +trailing after a mangled name. For example: + + .type _Z1fv, @function + +`-_' +`--strip-underscore' + On some systems, both the C and C++ compilers put an underscore in + front of every name. For example, the C name `foo' gets the + low-level name `_foo'. This option removes the initial + underscore. Whether `c++filt' removes the underscore by default + is target dependent. + +`-n' +`--no-strip-underscore' + Do not remove the initial underscore. + +`-p' +`--no-params' + When demangling the name of a function, do not display the types of + the function's parameters. + +`-t' +`--types' + Attempt to demangle types as well as function names. This is + disabled by default since mangled types are normally only used + internally in the compiler, and they can be confused with + non-mangled names. For example, a function called "a" treated as + a mangled type name would be demangled to "signed char". + +`-i' +`--no-verbose' + Do not include implementation details (if any) in the demangled + output. + +`-s FORMAT' +`--format=FORMAT' + `c++filt' can decode various methods of mangling, used by + different compilers. The argument to this option selects which + method it uses: + + `auto' + Automatic selection based on executable (the default method) + + `gnu' + the one used by the GNU C++ compiler (g++) + + `lucid' + the one used by the Lucid compiler (lcc) + + `arm' + the one specified by the C++ Annotated Reference Manual + + `hp' + the one used by the HP compiler (aCC) + + `edg' + the one used by the EDG compiler + + `gnu-v3' + the one used by the GNU C++ compiler (g++) with the V3 ABI. + + `java' + the one used by the GNU Java compiler (gcj) + + `gnat' + the one used by the GNU Ada compiler (GNAT). + +`--help' + Print a summary of the options to `c++filt' and exit. + +`--version' + Print the version number of `c++filt' and exit. + + _Warning:_ `c++filt' is a new utility, and the details of its user + interface are subject to change in future releases. In particular, + a command-line option may be required in the future to decode a + name passed as an argument on the command line; in other words, + + c++filt SYMBOL + + may in a future release become + + c++filt OPTION SYMBOL + + ---------- Footnotes ---------- + + (1) MS-DOS does not allow `+' characters in file names, so on MS-DOS +this program is named `CXXFILT'. + + +File: binutils.info, Node: addr2line, Next: nlmconv, Prev: c++filt, Up: Top + +10 addr2line +************ + + addr2line [`-a'|`--addresses'] + [`-b' BFDNAME|`--target='BFDNAME] + [`-C'|`--demangle'[=STYLE]] + [`-e' FILENAME|`--exe='FILENAME] + [`-f'|`--functions'] [`-s'|`--basename'] + [`-i'|`--inlines'] + [`-p'|`--pretty-print'] + [`-j'|`--section='NAME] + [`-H'|`--help'] [`-V'|`--version'] + [addr addr ...] + + `addr2line' translates addresses into file names and line numbers. +Given an address in an executable or an offset in a section of a +relocatable object, it uses the debugging information to figure out +which file name and line number are associated with it. + + The executable or relocatable object to use is specified with the +`-e' option. The default is the file `a.out'. The section in the +relocatable object to use is specified with the `-j' option. + + `addr2line' has two modes of operation. + + In the first, hexadecimal addresses are specified on the command +line, and `addr2line' displays the file name and line number for each +address. + + In the second, `addr2line' reads hexadecimal addresses from standard +input, and prints the file name and line number for each address on +standard output. In this mode, `addr2line' may be used in a pipe to +convert dynamically chosen addresses. + + The format of the output is `FILENAME:LINENO'. By default each +input address generates one line of output. + + Two options can generate additional lines before each +`FILENAME:LINENO' line (in that order). + + If the `-a' option is used then a line with the input address is +displayed. + + If the `-f' option is used, then a line with the `FUNCTIONNAME' is +displayed. This is the name of the function containing the address. + + One option can generate additional lines after the `FILENAME:LINENO' +line. + + If the `-i' option is used and the code at the given address is +present there because of inlining by the compiler then additional lines +are displayed afterwards. One or two extra lines (if the `-f' option +is used) are displayed for each inlined function. + + Alternatively if the `-p' option is used then each input address +generates a single, long, output line containing the address, the +function name, the file name and the line number. If the `-i' option +has also been used then any inlined functions will be displayed in the +same manner, but on separate lines, and prefixed by the text `(inlined +by)'. + + If the file name or function name can not be determined, `addr2line' +will print two question marks in their place. If the line number can +not be determined, `addr2line' will print 0. + + The long and short forms of options, shown here as alternatives, are +equivalent. + +`-a' +`--addresses' + Display the address before the function name, file and line number + information. The address is printed with a `0x' prefix to easily + identify it. + +`-b BFDNAME' +`--target=BFDNAME' + Specify that the object-code format for the object files is + BFDNAME. + +`-C' +`--demangle[=STYLE]' + Decode ("demangle") low-level symbol names into user-level names. + Besides removing any initial underscore prepended by the system, + this makes C++ function names readable. Different compilers have + different mangling styles. The optional demangling style argument + can be used to choose an appropriate demangling style for your + compiler. *Note c++filt::, for more information on demangling. + +`-e FILENAME' +`--exe=FILENAME' + Specify the name of the executable for which addresses should be + translated. The default file is `a.out'. + +`-f' +`--functions' + Display function names as well as file and line number information. + +`-s' +`--basenames' + Display only the base of each file name. + +`-i' +`--inlines' + If the address belongs to a function that was inlined, the source + information for all enclosing scopes back to the first non-inlined + function will also be printed. For example, if `main' inlines + `callee1' which inlines `callee2', and address is from `callee2', + the source information for `callee1' and `main' will also be + printed. + +`-j' +`--section' + Read offsets relative to the specified section instead of absolute + addresses. + +`-p' +`--pretty-print' + Make the output more human friendly: each location are printed on + one line. If option `-i' is specified, lines for all enclosing + scopes are prefixed with `(inlined by)'. + + +File: binutils.info, Node: nlmconv, Next: windmc, Prev: addr2line, Up: Top + +11 nlmconv +********** + +`nlmconv' converts a relocatable object file into a NetWare Loadable +Module. + + _Warning:_ `nlmconv' is not always built as part of the binary + utilities, since it is only useful for NLM targets. + + nlmconv [`-I' BFDNAME|`--input-target='BFDNAME] + [`-O' BFDNAME|`--output-target='BFDNAME] + [`-T' HEADERFILE|`--header-file='HEADERFILE] + [`-d'|`--debug'] [`-l' LINKER|`--linker='LINKER] + [`-h'|`--help'] [`-V'|`--version'] + INFILE OUTFILE + + `nlmconv' converts the relocatable `i386' object file INFILE into +the NetWare Loadable Module OUTFILE, optionally reading HEADERFILE for +NLM header information. For instructions on writing the NLM command +file language used in header files, see the `linkers' section, +`NLMLINK' in particular, of the `NLM Development and Tools Overview', +which is part of the NLM Software Developer's Kit ("NLM SDK"), +available from Novell, Inc. `nlmconv' uses the GNU Binary File +Descriptor library to read INFILE; see *Note BFD: (ld.info)BFD, for +more information. + + `nlmconv' can perform a link step. In other words, you can list +more than one object file for input if you list them in the definitions +file (rather than simply specifying one input file on the command line). +In this case, `nlmconv' calls the linker for you. + +`-I BFDNAME' +`--input-target=BFDNAME' + Object format of the input file. `nlmconv' can usually determine + the format of a given file (so no default is necessary). *Note + Target Selection::, for more information. + +`-O BFDNAME' +`--output-target=BFDNAME' + Object format of the output file. `nlmconv' infers the output + format based on the input format, e.g. for a `i386' input file the + output format is `nlm32-i386'. *Note Target Selection::, for more + information. + +`-T HEADERFILE' +`--header-file=HEADERFILE' + Reads HEADERFILE for NLM header information. For instructions on + writing the NLM command file language used in header files, see + see the `linkers' section, of the `NLM Development and Tools + Overview', which is part of the NLM Software Developer's Kit, + available from Novell, Inc. + +`-d' +`--debug' + Displays (on standard error) the linker command line used by + `nlmconv'. + +`-l LINKER' +`--linker=LINKER' + Use LINKER for any linking. LINKER can be an absolute or a + relative pathname. + +`-h' +`--help' + Prints a usage summary. + +`-V' +`--version' + Prints the version number for `nlmconv'. + + +File: binutils.info, Node: windmc, Next: windres, Prev: nlmconv, Up: Top + +12 windmc +********* + +`windmc' may be used to generator Windows message resources. + + _Warning:_ `windmc' is not always built as part of the binary + utilities, since it is only useful for Windows targets. + + windmc [options] input-file + + `windmc' reads message definitions from an input file (.mc) and +translate them into a set of output files. The output files may be of +four kinds: + +`h' + A C header file containing the message definitions. + +`rc' + A resource file compilable by the `windres' tool. + +`bin' + One or more binary files containing the resource data for a + specific message language. + +`dbg' + A C include file that maps message id's to their symbolic name. + + The exact description of these different formats is available in +documentation from Microsoft. + + When `windmc' converts from the `mc' format to the `bin' format, +`rc', `h', and optional `dbg' it is acting like the Windows Message +Compiler. + +`-a' +`--ascii_in' + Specifies that the input file specified is ASCII. This is the + default behaviour. + +`-A' +`--ascii_out' + Specifies that messages in the output `bin' files should be in + ASCII format. + +`-b' +`--binprefix' + Specifies that `bin' filenames should have to be prefixed by the + basename of the source file. + +`-c' +`--customflag' + Sets the customer bit in all message id's. + +`-C CODEPAGE' +`--codepage_in CODEPAGE' + Sets the default codepage to be used to convert input file to + UTF16. The default is ocdepage 1252. + +`-d' +`--decimal_values' + Outputs the constants in the header file in decimal. Default is + using hexadecimal output. + +`-e EXT' +`--extension EXT' + The extension for the header file. The default is .h extension. + +`-F TARGET' +`--target TARGET' + Specify the BFD format to use for a bin file as output. This is a + BFD target name; you can use the `--help' option to see a list of + supported targets. Normally `windmc' will use the default format, + which is the first one listed by the `--help' option. *Note + Target Selection::. + +`-h PATH' +`--headerdir PATH' + The target directory of the generated header file. The default is + the current directory. + +`-H' +`--help' + Displays a list of command line options and then exits. + +`-m CHARACTERS' +`--maxlength CHARACTERS' + Instructs `windmc' to generate a warning if the length of any + message exceeds the number specified. + +`-n' +`--nullterminate' + Terminate message text in `bin' files by zero. By default they are + terminated by CR/LF. + +`-o' +`--hresult_use' + Not yet implemented. Instructs `windmc' to generate an OLE2 header + file, using HRESULT definitions. Status codes are used if the flag + is not specified. + +`-O CODEPAGE' +`--codepage_out CODEPAGE' + Sets the default codepage to be used to output text files. The + default is ocdepage 1252. + +`-r PATH' +`--rcdir PATH' + The target directory for the generated `rc' script and the + generated `bin' files that the resource compiler script includes. + The default is the current directory. + +`-u' +`--unicode_in' + Specifies that the input file is UTF16. + +`-U' +`--unicode_out' + Specifies that messages in the output `bin' file should be in UTF16 + format. This is the default behaviour. + +`-v' + +`--verbose' + Enable verbose mode. + +`-V' + +`--version' + Prints the version number for `windmc'. + +`-x PATH' +`--xdgb PATH' + The path of the `dbg' C include file that maps message id's to the + symbolic name. No such file is generated without specifying the + switch. + + +File: binutils.info, Node: windres, Next: dlltool, Prev: windmc, Up: Top + +13 windres +********** + +`windres' may be used to manipulate Windows resources. + + _Warning:_ `windres' is not always built as part of the binary + utilities, since it is only useful for Windows targets. + + windres [options] [input-file] [output-file] + + `windres' reads resources from an input file and copies them into an +output file. Either file may be in one of three formats: + +`rc' + A text format read by the Resource Compiler. + +`res' + A binary format generated by the Resource Compiler. + +`coff' + A COFF object or executable. + + The exact description of these different formats is available in +documentation from Microsoft. + + When `windres' converts from the `rc' format to the `res' format, it +is acting like the Windows Resource Compiler. When `windres' converts +from the `res' format to the `coff' format, it is acting like the +Windows `CVTRES' program. + + When `windres' generates an `rc' file, the output is similar but not +identical to the format expected for the input. When an input `rc' +file refers to an external filename, an output `rc' file will instead +include the file contents. + + If the input or output format is not specified, `windres' will guess +based on the file name, or, for the input file, the file contents. A +file with an extension of `.rc' will be treated as an `rc' file, a file +with an extension of `.res' will be treated as a `res' file, and a file +with an extension of `.o' or `.exe' will be treated as a `coff' file. + + If no output file is specified, `windres' will print the resources +in `rc' format to standard output. + + The normal use is for you to write an `rc' file, use `windres' to +convert it to a COFF object file, and then link the COFF file into your +application. This will make the resources described in the `rc' file +available to Windows. + +`-i FILENAME' +`--input FILENAME' + The name of the input file. If this option is not used, then + `windres' will use the first non-option argument as the input file + name. If there are no non-option arguments, then `windres' will + read from standard input. `windres' can not read a COFF file from + standard input. + +`-o FILENAME' +`--output FILENAME' + The name of the output file. If this option is not used, then + `windres' will use the first non-option argument, after any used + for the input file name, as the output file name. If there is no + non-option argument, then `windres' will write to standard output. + `windres' can not write a COFF file to standard output. Note, for + compatibility with `rc' the option `-fo' is also accepted, but its + use is not recommended. + +`-J FORMAT' +`--input-format FORMAT' + The input format to read. FORMAT may be `res', `rc', or `coff'. + If no input format is specified, `windres' will guess, as + described above. + +`-O FORMAT' +`--output-format FORMAT' + The output format to generate. FORMAT may be `res', `rc', or + `coff'. If no output format is specified, `windres' will guess, + as described above. + +`-F TARGET' +`--target TARGET' + Specify the BFD format to use for a COFF file as input or output. + This is a BFD target name; you can use the `--help' option to see + a list of supported targets. Normally `windres' will use the + default format, which is the first one listed by the `--help' + option. *Note Target Selection::. + +`--preprocessor PROGRAM' + When `windres' reads an `rc' file, it runs it through the C + preprocessor first. This option may be used to specify the + preprocessor to use, including any leading arguments. The default + preprocessor argument is `gcc -E -xc-header -DRC_INVOKED'. + +`--preprocessor-arg OPTION' + When `windres' reads an `rc' file, it runs it through the C + preprocessor first. This option may be used to specify additional + text to be passed to preprocessor on its command line. This + option can be used multiple times to add multiple options to the + preprocessor command line. + +`-I DIRECTORY' +`--include-dir DIRECTORY' + Specify an include directory to use when reading an `rc' file. + `windres' will pass this to the preprocessor as an `-I' option. + `windres' will also search this directory when looking for files + named in the `rc' file. If the argument passed to this command + matches any of the supported FORMATS (as described in the `-J' + option), it will issue a deprecation warning, and behave just like + the `-J' option. New programs should not use this behaviour. If a + directory happens to match a FORMAT, simple prefix it with `./' to + disable the backward compatibility. + +`-D TARGET' +`--define SYM[=VAL]' + Specify a `-D' option to pass to the preprocessor when reading an + `rc' file. + +`-U TARGET' +`--undefine SYM' + Specify a `-U' option to pass to the preprocessor when reading an + `rc' file. + +`-r' + Ignored for compatibility with rc. + +`-v' + Enable verbose mode. This tells you what the preprocessor is if + you didn't specify one. + +`-c VAL' + +`--codepage VAL' + Specify the default codepage to use when reading an `rc' file. + VAL should be a hexadecimal prefixed by `0x' or decimal codepage + code. The valid range is from zero up to 0xffff, but the validity + of the codepage is host and configuration dependent. + +`-l VAL' + +`--language VAL' + Specify the default language to use when reading an `rc' file. + VAL should be a hexadecimal language code. The low eight bits are + the language, and the high eight bits are the sublanguage. + +`--use-temp-file' + Use a temporary file to instead of using popen to read the output + of the preprocessor. Use this option if the popen implementation + is buggy on the host (eg., certain non-English language versions + of Windows 95 and Windows 98 are known to have buggy popen where + the output will instead go the console). + +`--no-use-temp-file' + Use popen, not a temporary file, to read the output of the + preprocessor. This is the default behaviour. + +`-h' + +`--help' + Prints a usage summary. + +`-V' + +`--version' + Prints the version number for `windres'. + +`--yydebug' + If `windres' is compiled with `YYDEBUG' defined as `1', this will + turn on parser debugging. + + +File: binutils.info, Node: dlltool, Next: readelf, Prev: windres, Up: Top + +14 dlltool +********** + +`dlltool' is used to create the files needed to create dynamic link +libraries (DLLs) on systems which understand PE format image files such +as Windows. A DLL contains an export table which contains information +that the runtime loader needs to resolve references from a referencing +program. + + The export table is generated by this program by reading in a `.def' +file or scanning the `.a' and `.o' files which will be in the DLL. A +`.o' file can contain information in special `.drectve' sections with +export information. + + _Note:_ `dlltool' is not always built as part of the binary + utilities, since it is only useful for those targets which support + DLLs. + + dlltool [`-d'|`--input-def' DEF-FILE-NAME] + [`-b'|`--base-file' BASE-FILE-NAME] + [`-e'|`--output-exp' EXPORTS-FILE-NAME] + [`-z'|`--output-def' DEF-FILE-NAME] + [`-l'|`--output-lib' LIBRARY-FILE-NAME] + [`-y'|`--output-delaylib' LIBRARY-FILE-NAME] + [`--export-all-symbols'] [`--no-export-all-symbols'] + [`--exclude-symbols' LIST] + [`--no-default-excludes'] + [`-S'|`--as' PATH-TO-ASSEMBLER] [`-f'|`--as-flags' OPTIONS] + [`-D'|`--dllname' NAME] [`-m'|`--machine' MACHINE] + [`-a'|`--add-indirect'] + [`-U'|`--add-underscore'] [`--add-stdcall-underscore'] + [`-k'|`--kill-at'] [`-A'|`--add-stdcall-alias'] + [`-p'|`--ext-prefix-alias' PREFIX] + [`-x'|`--no-idata4'] [`-c'|`--no-idata5'] + [`--use-nul-prefixed-import-tables'] + [`-I'|`--identify' LIBRARY-FILE-NAME] [`--identify-strict'] + [`-i'|`--interwork'] + [`-n'|`--nodelete'] [`-t'|`--temp-prefix' PREFIX] + [`-v'|`--verbose'] + [`-h'|`--help'] [`-V'|`--version'] + [`--no-leading-underscore'] [`--leading-underscore'] + [object-file ...] + + `dlltool' reads its inputs, which can come from the `-d' and `-b' +options as well as object files specified on the command line. It then +processes these inputs and if the `-e' option has been specified it +creates a exports file. If the `-l' option has been specified it +creates a library file and if the `-z' option has been specified it +creates a def file. Any or all of the `-e', `-l' and `-z' options can +be present in one invocation of dlltool. + + When creating a DLL, along with the source for the DLL, it is +necessary to have three other files. `dlltool' can help with the +creation of these files. + + The first file is a `.def' file which specifies which functions are +exported from the DLL, which functions the DLL imports, and so on. This +is a text file and can be created by hand, or `dlltool' can be used to +create it using the `-z' option. In this case `dlltool' will scan the +object files specified on its command line looking for those functions +which have been specially marked as being exported and put entries for +them in the `.def' file it creates. + + In order to mark a function as being exported from a DLL, it needs to +have an `-export:' entry in the `.drectve' section of +the object file. This can be done in C by using the asm() operator: + + asm (".section .drectve"); + asm (".ascii \"-export:my_func\""); + + int my_func (void) { ... } + + The second file needed for DLL creation is an exports file. This +file is linked with the object files that make up the body of the DLL +and it handles the interface between the DLL and the outside world. +This is a binary file and it can be created by giving the `-e' option to +`dlltool' when it is creating or reading in a `.def' file. + + The third file needed for DLL creation is the library file that +programs will link with in order to access the functions in the DLL (an +`import library'). This file can be created by giving the `-l' option +to dlltool when it is creating or reading in a `.def' file. + + If the `-y' option is specified, dlltool generates a delay-import +library that can be used instead of the normal import library to allow +a program to link to the dll only as soon as an imported function is +called for the first time. The resulting executable will need to be +linked to the static delayimp library containing __delayLoadHelper2(), +which in turn will import LoadLibraryA and GetProcAddress from kernel32. + + `dlltool' builds the library file by hand, but it builds the exports +file by creating temporary files containing assembler statements and +then assembling these. The `-S' command line option can be used to +specify the path to the assembler that dlltool will use, and the `-f' +option can be used to pass specific flags to that assembler. The `-n' +can be used to prevent dlltool from deleting these temporary assembler +files when it is done, and if `-n' is specified twice then this will +prevent dlltool from deleting the temporary object files it used to +build the library. + + Here is an example of creating a DLL from a source file `dll.c' and +also creating a program (from an object file called `program.o') that +uses that DLL: + + gcc -c dll.c + dlltool -e exports.o -l dll.lib dll.o + gcc dll.o exports.o -o dll.dll + gcc program.o dll.lib -o program + + `dlltool' may also be used to query an existing import library to +determine the name of the DLL to which it is associated. See the +description of the `-I' or `--identify' option. + + The command line options have the following meanings: + +`-d FILENAME' +`--input-def FILENAME' + Specifies the name of a `.def' file to be read in and processed. + +`-b FILENAME' +`--base-file FILENAME' + Specifies the name of a base file to be read in and processed. The + contents of this file will be added to the relocation section in + the exports file generated by dlltool. + +`-e FILENAME' +`--output-exp FILENAME' + Specifies the name of the export file to be created by dlltool. + +`-z FILENAME' +`--output-def FILENAME' + Specifies the name of the `.def' file to be created by dlltool. + +`-l FILENAME' +`--output-lib FILENAME' + Specifies the name of the library file to be created by dlltool. + +`-y FILENAME' +`--output-delaylib FILENAME' + Specifies the name of the delay-import library file to be created + by dlltool. + +`--export-all-symbols' + Treat all global and weak defined symbols found in the input object + files as symbols to be exported. There is a small list of symbols + which are not exported by default; see the `--no-default-excludes' + option. You may add to the list of symbols to not export by using + the `--exclude-symbols' option. + +`--no-export-all-symbols' + Only export symbols explicitly listed in an input `.def' file or in + `.drectve' sections in the input object files. This is the default + behaviour. The `.drectve' sections are created by `dllexport' + attributes in the source code. + +`--exclude-symbols LIST' + Do not export the symbols in LIST. This is a list of symbol names + separated by comma or colon characters. The symbol names should + not contain a leading underscore. This is only meaningful when + `--export-all-symbols' is used. + +`--no-default-excludes' + When `--export-all-symbols' is used, it will by default avoid + exporting certain special symbols. The current list of symbols to + avoid exporting is `DllMain@12', `DllEntryPoint@0', `impure_ptr'. + You may use the `--no-default-excludes' option to go ahead and + export these special symbols. This is only meaningful when + `--export-all-symbols' is used. + +`-S PATH' +`--as PATH' + Specifies the path, including the filename, of the assembler to be + used to create the exports file. + +`-f OPTIONS' +`--as-flags OPTIONS' + Specifies any specific command line options to be passed to the + assembler when building the exports file. This option will work + even if the `-S' option is not used. This option only takes one + argument, and if it occurs more than once on the command line, + then later occurrences will override earlier occurrences. So if + it is necessary to pass multiple options to the assembler they + should be enclosed in double quotes. + +`-D NAME' +`--dll-name NAME' + Specifies the name to be stored in the `.def' file as the name of + the DLL when the `-e' option is used. If this option is not + present, then the filename given to the `-e' option will be used + as the name of the DLL. + +`-m MACHINE' +`-machine MACHINE' + Specifies the type of machine for which the library file should be + built. `dlltool' has a built in default type, depending upon how + it was created, but this option can be used to override that. + This is normally only useful when creating DLLs for an ARM + processor, when the contents of the DLL are actually encode using + Thumb instructions. + +`-a' +`--add-indirect' + Specifies that when `dlltool' is creating the exports file it + should add a section which allows the exported functions to be + referenced without using the import library. Whatever the hell + that means! + +`-U' +`--add-underscore' + Specifies that when `dlltool' is creating the exports file it + should prepend an underscore to the names of _all_ exported + symbols. + +`--no-leading-underscore' + +`--leading-underscore' + Specifies whether standard symbol should be forced to be prefixed, + or not. + +`--add-stdcall-underscore' + Specifies that when `dlltool' is creating the exports file it + should prepend an underscore to the names of exported _stdcall_ + functions. Variable names and non-stdcall function names are not + modified. This option is useful when creating GNU-compatible + import libs for third party DLLs that were built with MS-Windows + tools. + +`-k' +`--kill-at' + Specifies that when `dlltool' is creating the exports file it + should not append the string `@ '. These numbers are + called ordinal numbers and they represent another way of accessing + the function in a DLL, other than by name. + +`-A' +`--add-stdcall-alias' + Specifies that when `dlltool' is creating the exports file it + should add aliases for stdcall symbols without `@ ' in + addition to the symbols with `@ '. + +`-p' +`--ext-prefix-alias PREFIX' + Causes `dlltool' to create external aliases for all DLL imports + with the specified prefix. The aliases are created for both + external and import symbols with no leading underscore. + +`-x' +`--no-idata4' + Specifies that when `dlltool' is creating the exports and library + files it should omit the `.idata4' section. This is for + compatibility with certain operating systems. + +`--use-nul-prefixed-import-tables' + Specifies that when `dlltool' is creating the exports and library + files it should prefix the `.idata4' and `.idata5' by zero an + element. This emulates old gnu import library generation of + `dlltool'. By default this option is turned off. + +`-c' +`--no-idata5' + Specifies that when `dlltool' is creating the exports and library + files it should omit the `.idata5' section. This is for + compatibility with certain operating systems. + +`-I FILENAME' +`--identify FILENAME' + Specifies that `dlltool' should inspect the import library + indicated by FILENAME and report, on `stdout', the name(s) of the + associated DLL(s). This can be performed in addition to any other + operations indicated by the other options and arguments. + `dlltool' fails if the import library does not exist or is not + actually an import library. See also `--identify-strict'. + +`--identify-strict' + Modifies the behavior of the `--identify' option, such that an + error is reported if FILENAME is associated with more than one DLL. + +`-i' +`--interwork' + Specifies that `dlltool' should mark the objects in the library + file and exports file that it produces as supporting interworking + between ARM and Thumb code. + +`-n' +`--nodelete' + Makes `dlltool' preserve the temporary assembler files it used to + create the exports file. If this option is repeated then dlltool + will also preserve the temporary object files it uses to create + the library file. + +`-t PREFIX' +`--temp-prefix PREFIX' + Makes `dlltool' use PREFIX when constructing the names of + temporary assembler and object files. By default, the temp file + prefix is generated from the pid. + +`-v' +`--verbose' + Make dlltool describe what it is doing. + +`-h' +`--help' + Displays a list of command line options and then exits. + +`-V' +`--version' + Displays dlltool's version number and then exits. + + +* Menu: + +* def file format:: The format of the dlltool `.def' file + + +File: binutils.info, Node: def file format, Up: dlltool + +14.1 The format of the `dlltool' `.def' file +============================================ + +A `.def' file contains any number of the following commands: + +`NAME' NAME `[ ,' BASE `]' + The result is going to be named NAME`.exe'. + +`LIBRARY' NAME `[ ,' BASE `]' + The result is going to be named NAME`.dll'. Note: If you want to + use LIBRARY as name then you need to quote. Otherwise this will + fail due a necessary hack for libtool (see PR binutils/13710 for + more details). + +`EXPORTS ( ( (' NAME1 `[ = ' NAME2 `] ) | ( ' NAME1 `=' MODULE-NAME `.' EXTERNAL-NAME `) ) [ == ' ITS_NAME `]' + +`[' INTEGER `] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *' + Declares NAME1 as an exported symbol from the DLL, with optional + ordinal number INTEGER, or declares NAME1 as an alias (forward) of + the function EXTERNAL-NAME in the DLL. If ITS_NAME is specified, + this name is used as string in export table. MODULE-NAME. Note: + The `EXPORTS' has to be the last command in .def file, as keywords + are treated - beside `LIBRARY' - as simple name-identifiers. If + you want to use LIBRARY as name then you need to quote it. + +`IMPORTS ( (' INTERNAL-NAME `=' MODULE-NAME `.' INTEGER `) | [' INTERNAL-NAME `= ]' MODULE-NAME `.' EXTERNAL-NAME `) [ == ) ITS_NAME `]' *' + Declares that EXTERNAL-NAME or the exported function whose ordinal + number is INTEGER is to be imported from the file MODULE-NAME. If + INTERNAL-NAME is specified then this is the name that the imported + function will be referred to in the body of the DLL. If ITS_NAME + is specified, this name is used as string in import table. Note: + The `IMPORTS' has to be the last command in .def file, as keywords + are treated - beside `LIBRARY' - as simple name-identifiers. If + you want to use LIBRARY as name then you need to quote it. + +`DESCRIPTION' STRING + Puts STRING into the output `.exp' file in the `.rdata' section. + +`STACKSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]' + +`HEAPSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]' + Generates `--stack' or `--heap' NUMBER-RESERVE,NUMBER-COMMIT in + the output `.drectve' section. The linker will see this and act + upon it. + +`CODE' ATTR `+' + +`DATA' ATTR `+' + +`SECTIONS (' SECTION-NAME ATTR` + ) *' + Generates `--attr' SECTION-NAME ATTR in the output `.drectve' + section, where ATTR is one of `READ', `WRITE', `EXECUTE' or + `SHARED'. The linker will see this and act upon it. + + + +File: binutils.info, Node: readelf, Next: elfedit, Prev: dlltool, Up: Top + +15 readelf +********** + + readelf [`-a'|`--all'] + [`-h'|`--file-header'] + [`-l'|`--program-headers'|`--segments'] + [`-S'|`--section-headers'|`--sections'] + [`-g'|`--section-groups'] + [`-t'|`--section-details'] + [`-e'|`--headers'] + [`-s'|`--syms'|`--symbols'] + [`--dyn-syms'] + [`-n'|`--notes'] + [`-r'|`--relocs'] + [`-u'|`--unwind'] + [`-d'|`--dynamic'] + [`-V'|`--version-info'] + [`-A'|`--arch-specific'] + [`-D'|`--use-dynamic'] + [`-x' |`--hex-dump='] + [`-p' |`--string-dump='] + [`-R' |`--relocated-dump='] + [`-c'|`--archive-index'] + [`-w[lLiaprmfFsoRt]'| + `--debug-dump'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] + [`--dwarf-depth=N'] + [`--dwarf-start=N'] + [`-I'|`--histogram'] + [`-v'|`--version'] + [`-W'|`--wide'] + [`-H'|`--help'] + ELFFILE... + + `readelf' displays information about one or more ELF format object +files. The options control what particular information to display. + + ELFFILE... are the object files to be examined. 32-bit and 64-bit +ELF files are supported, as are archives containing ELF files. + + This program performs a similar function to `objdump' but it goes +into more detail and it exists independently of the BFD library, so if +there is a bug in BFD then readelf will not be affected. + + The long and short forms of options, shown here as alternatives, are +equivalent. At least one option besides `-v' or `-H' must be given. + +`-a' +`--all' + Equivalent to specifying `--file-header', `--program-headers', + `--sections', `--symbols', `--relocs', `--dynamic', `--notes' and + `--version-info'. + +`-h' +`--file-header' + Displays the information contained in the ELF header at the start + of the file. + +`-l' +`--program-headers' +`--segments' + Displays the information contained in the file's segment headers, + if it has any. + +`-S' +`--sections' +`--section-headers' + Displays the information contained in the file's section headers, + if it has any. + +`-g' +`--section-groups' + Displays the information contained in the file's section groups, + if it has any. + +`-t' +`--section-details' + Displays the detailed section information. Implies `-S'. + +`-s' +`--symbols' +`--syms' + Displays the entries in symbol table section of the file, if it + has one. + +`--dyn-syms' + Displays the entries in dynamic symbol table section of the file, + if it has one. + +`-e' +`--headers' + Display all the headers in the file. Equivalent to `-h -l -S'. + +`-n' +`--notes' + Displays the contents of the NOTE segments and/or sections, if any. + +`-r' +`--relocs' + Displays the contents of the file's relocation section, if it has + one. + +`-u' +`--unwind' + Displays the contents of the file's unwind section, if it has one. + Only the unwind sections for IA64 ELF files, as well as ARM + unwind tables (`.ARM.exidx' / `.ARM.extab') are currently + supported. + +`-d' +`--dynamic' + Displays the contents of the file's dynamic section, if it has one. + +`-V' +`--version-info' + Displays the contents of the version sections in the file, it they + exist. + +`-A' +`--arch-specific' + Displays architecture-specific information in the file, if there + is any. + +`-D' +`--use-dynamic' + When displaying symbols, this option makes `readelf' use the + symbol hash tables in the file's dynamic section, rather than the + symbol table sections. + +`-x ' +`--hex-dump=' + Displays the contents of the indicated section as a hexadecimal + bytes. A number identifies a particular section by index in the + section table; any other string identifies all sections with that + name in the object file. + +`-R ' +`--relocated-dump=' + Displays the contents of the indicated section as a hexadecimal + bytes. A number identifies a particular section by index in the + section table; any other string identifies all sections with that + name in the object file. The contents of the section will be + relocated before they are displayed. + +`-p ' +`--string-dump=' + Displays the contents of the indicated section as printable + strings. A number identifies a particular section by index in the + section table; any other string identifies all sections with that + name in the object file. + +`-c' +`--archive-index' + Displays the file symbol index information contained in the header + part of binary archives. Performs the same function as the `t' + command to `ar', but without using the BFD library. *Note ar::. + +`-w[lLiaprmfFsoRt]' +`--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]' + Displays the contents of the debug sections in the file, if any are + present. If one of the optional letters or words follows the + switch then only data found in those specific sections will be + dumped. + + Note that there is no single letter option to display the content + of trace sections or .gdb_index. + + Note: the `=decodedline' option will display the interpreted + contents of a .debug_line section whereas the `=rawline' option + dumps the contents in a raw format. + + Note: the `=frames-interp' option will display the interpreted + contents of a .debug_frame section whereas the `=frames' option + dumps the contents in a raw format. + + Note: the output from the `=info' option can also be affected by + the options `--dwarf-depth' and `--dwarf-start'. + +`--dwarf-depth=N' + Limit the dump of the `.debug_info' section to N children. This + is only useful with `--debug-dump=info'. The default is to print + all DIEs; the special value 0 for N will also have this effect. + + With a non-zero value for N, DIEs at or deeper than N levels will + not be printed. The range for N is zero-based. + +`--dwarf-start=N' + Print only DIEs beginning with the DIE numbered N. This is only + useful with `--debug-dump=info'. + + If specified, this option will suppress printing of any header + information and all DIEs before the DIE numbered N. Only siblings + and children of the specified DIE will be printed. + + This can be used in conjunction with `--dwarf-depth'. + +`-I' +`--histogram' + Display a histogram of bucket list lengths when displaying the + contents of the symbol tables. + +`-v' +`--version' + Display the version number of readelf. + +`-W' +`--wide' + Don't break output lines to fit into 80 columns. By default + `readelf' breaks section header and segment listing lines for + 64-bit ELF files, so that they fit into 80 columns. This option + causes `readelf' to print each section header resp. each segment + one a single line, which is far more readable on terminals wider + than 80 columns. + +`-H' +`--help' + Display the command line options understood by `readelf'. + + + +File: binutils.info, Node: elfedit, Next: Common Options, Prev: readelf, Up: Top + +16 elfedit +********** + + elfedit [`--input-mach='MACHINE] + [`--input-type='TYPE] + [`--input-osabi='OSABI] + `--output-mach='MACHINE + `--output-type='TYPE + `--output-osabi='OSABI + [`-v'|`--version'] + [`-h'|`--help'] + ELFFILE... + + `elfedit' updates the ELF header of ELF files which have the +matching ELF machine and file types. The options control how and which +fields in the ELF header should be updated. + + ELFFILE... are the ELF files to be updated. 32-bit and 64-bit ELF +files are supported, as are archives containing ELF files. + + The long and short forms of options, shown here as alternatives, are +equivalent. At least one of the `--output-mach', `--output-type' and +`--output-osabi' options must be given. + +`--input-mach=MACHINE' + Set the matching input ELF machine type to MACHINE. If + `--input-mach' isn't specified, it will match any ELF machine + types. + + The supported ELF machine types are, L1OM, K1OM and X86-64. + +`--output-mach=MACHINE' + Change the ELF machine type in the ELF header to MACHINE. The + supported ELF machine types are the same as `--input-mach'. + +`--input-type=TYPE' + Set the matching input ELF file type to TYPE. If `--input-type' + isn't specified, it will match any ELF file types. + + The supported ELF file types are, REL, EXEC and DYN. + +`--output-type=TYPE' + Change the ELF file type in the ELF header to TYPE. The supported + ELF types are the same as `--input-type'. + +`--input-osabi=OSABI' + Set the matching input ELF file OSABI to OSABI. If + `--input-osabi' isn't specified, it will match any ELF OSABIs. + + The supported ELF OSABIs are, NONE, HPUX, NETBSD, GNU, LINUX + (alias for GNU), SOLARIS, AIX, IRIX, FREEBSD, TRU64, MODESTO, + OPENBSD, OPENVMS, NSK, AROS and FENIXOS. + +`--output-osabi=OSABI' + Change the ELF OSABI in the ELF header to OSABI. The supported + ELF OSABI are the same as `--input-osabi'. + +`-v' +`--version' + Display the version number of `elfedit'. + +`-h' +`--help' + Display the command line options understood by `elfedit'. + + + +File: binutils.info, Node: Common Options, Next: Selecting the Target System, Prev: elfedit, Up: Top + +17 Common Options +***************** + +The following command-line options are supported by all of the programs +described in this manual. + +`@FILE' + Read command-line options from FILE. The options read are + inserted in place of the original @FILE option. If FILE does not + exist, or cannot be read, then the option will be treated + literally, and not removed. + + Options in FILE are separated by whitespace. A whitespace + character may be included in an option by surrounding the entire + option in either single or double quotes. Any character + (including a backslash) may be included by prefixing the character + to be included with a backslash. The FILE may itself contain + additional @FILE options; any such options will be processed + recursively. + +`--help' + Display the command-line options supported by the program. + +`--version' + Display the version number of the program. + + + +File: binutils.info, Node: Selecting the Target System, Next: Reporting Bugs, Prev: Common Options, Up: Top + +18 Selecting the Target System +****************************** + +You can specify two aspects of the target system to the GNU binary file +utilities, each in several ways: + + * the target + + * the architecture + + In the following summaries, the lists of ways to specify values are +in order of decreasing precedence. The ways listed first override those +listed later. + + The commands to list valid values only list the values for which the +programs you are running were configured. If they were configured with +`--enable-targets=all', the commands list most of the available values, +but a few are left out; not all targets can be configured in at once +because some of them can only be configured "native" (on hosts with the +same type as the target system). + +* Menu: + +* Target Selection:: +* Architecture Selection:: + + +File: binutils.info, Node: Target Selection, Next: Architecture Selection, Up: Selecting the Target System + +18.1 Target Selection +===================== + +A "target" is an object file format. A given target may be supported +for multiple architectures (*note Architecture Selection::). A target +selection may also have variations for different operating systems or +architectures. + + The command to list valid target values is `objdump -i' (the first +column of output contains the relevant information). + + Some sample values are: `a.out-hp300bsd', `ecoff-littlemips', +`a.out-sunos-big'. + + You can also specify a target using a configuration triplet. This is +the same sort of name that is passed to `configure' to specify a +target. When you use a configuration triplet as an argument, it must be +fully canonicalized. You can see the canonical version of a triplet by +running the shell script `config.sub' which is included with the +sources. + + Some sample configuration triplets are: `m68k-hp-bsd', +`mips-dec-ultrix', `sparc-sun-sunos'. + +`objdump' Target +---------------- + +Ways to specify: + + 1. command line option: `-b' or `--target' + + 2. environment variable `GNUTARGET' + + 3. deduced from the input file + +`objcopy' and `strip' Input Target +---------------------------------- + +Ways to specify: + + 1. command line options: `-I' or `--input-target', or `-F' or + `--target' + + 2. environment variable `GNUTARGET' + + 3. deduced from the input file + +`objcopy' and `strip' Output Target +----------------------------------- + +Ways to specify: + + 1. command line options: `-O' or `--output-target', or `-F' or + `--target' + + 2. the input target (see "`objcopy' and `strip' Input Target" above) + + 3. environment variable `GNUTARGET' + + 4. deduced from the input file + +`nm', `size', and `strings' Target +---------------------------------- + +Ways to specify: + + 1. command line option: `--target' + + 2. environment variable `GNUTARGET' + + 3. deduced from the input file + + +File: binutils.info, Node: Architecture Selection, Prev: Target Selection, Up: Selecting the Target System + +18.2 Architecture Selection +=========================== + +An "architecture" is a type of CPU on which an object file is to run. +Its name may contain a colon, separating the name of the processor +family from the name of the particular CPU. + + The command to list valid architecture values is `objdump -i' (the +second column contains the relevant information). + + Sample values: `m68k:68020', `mips:3000', `sparc'. + +`objdump' Architecture +---------------------- + +Ways to specify: + + 1. command line option: `-m' or `--architecture' + + 2. deduced from the input file + +`objcopy', `nm', `size', `strings' Architecture +----------------------------------------------- + +Ways to specify: + + 1. deduced from the input file + + +File: binutils.info, Node: Reporting Bugs, Next: GNU Free Documentation License, Prev: Selecting the Target System, Up: Top + +19 Reporting Bugs +***************** + +Your bug reports play an essential role in making the binary utilities +reliable. + + Reporting a bug may help you by bringing a solution to your problem, +or it may not. But in any case the principal function of a bug report +is to help the entire community by making the next version of the binary +utilities work better. Bug reports are your contribution to their +maintenance. + + In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. + +* Menu: + +* Bug Criteria:: Have you found a bug? +* Bug Reporting:: How to report bugs + + +File: binutils.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs + +19.1 Have You Found a Bug? +========================== + +If you are not sure whether you have found a bug, here are some +guidelines: + + * If a binary utility gets a fatal signal, for any input whatever, + that is a bug. Reliable utilities never crash. + + * If a binary utility produces an error message for valid input, + that is a bug. + + * If you are an experienced user of binary utilities, your + suggestions for improvement are welcome in any case. + + +File: binutils.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs + +19.2 How to Report Bugs +======================= + +A number of companies and individuals offer support for GNU products. +If you obtained the binary utilities from a support organization, we +recommend you contact that organization first. + + You can find contact information for many support companies and +individuals in the file `etc/SERVICE' in the GNU Emacs distribution. + + In any event, we also recommend that you send bug reports for the +binary utilities to `http://www.sourceware.org/bugzilla/'. + + The fundamental principle of reporting bugs usefully is this: +*report all the facts*. If you are not sure whether to state a fact or +leave it out, state it! + + Often people omit facts because they think they know what causes the +problem and assume that some details do not matter. Thus, you might +assume that the name of a file you use in an example does not matter. +Well, probably it does not, but one cannot be sure. Perhaps the bug is +a stray memory reference which happens to fetch from the location where +that pathname is stored in memory; perhaps, if the pathname were +different, the contents of that location would fool the utility into +doing the right thing despite the bug. Play it safe and give a +specific, complete example. That is the easiest thing for you to do, +and the most helpful. + + Keep in mind that the purpose of a bug report is to enable us to fix +the bug if it is new to us. Therefore, always write your bug reports +on the assumption that the bug has not been reported previously. + + Sometimes people give a few sketchy facts and ask, "Does this ring a +bell?" This cannot help us fix a bug, so it is basically useless. We +respond by asking for enough details to enable us to investigate. You +might as well expedite matters by sending them to begin with. + + To enable us to fix the bug, you should include all these things: + + * The version of the utility. Each utility announces it if you + start it with the `--version' argument. + + Without this, we will not know whether there is any point in + looking for the bug in the current version of the binary utilities. + + * Any patches you may have applied to the source, including any + patches made to the `BFD' library. + + * The type of machine you are using, and the operating system name + and version number. + + * What compiler (and its version) was used to compile the + utilities--e.g. "`gcc-2.7'". + + * The command arguments you gave the utility to observe the bug. To + guarantee you will not omit something important, list them all. A + copy of the Makefile (or the output from make) is sufficient. + + If we were to try to guess the arguments, we would probably guess + wrong and then we might not encounter the bug. + + * A complete input file, or set of input files, that will reproduce + the bug. If the utility is reading an object file or files, then + it is generally most helpful to send the actual object files. + + If the source files were produced exclusively using GNU programs + (e.g., `gcc', `gas', and/or the GNU `ld'), then it may be OK to + send the source files rather than the object files. In this case, + be sure to say exactly what version of `gcc', or whatever, was + used to produce the object files. Also say how `gcc', or + whatever, was configured. + + * A description of what behavior you observe that you believe is + incorrect. For example, "It gets a fatal signal." + + Of course, if the bug is that the utility gets a fatal signal, + then we will certainly notice it. But if the bug is incorrect + output, we might not notice unless it is glaringly wrong. You + might as well not give us a chance to make a mistake. + + Even if the problem you experience is a fatal signal, you should + still say so explicitly. Suppose something strange is going on, + such as your copy of the utility is out of sync, or you have + encountered a bug in the C library on your system. (This has + happened!) Your copy might crash and ours would not. If you told + us to expect a crash, then when ours fails to crash, we would know + that the bug was not happening for us. If you had not told us to + expect a crash, then we would not be able to draw any conclusion + from our observations. + + * If you wish to suggest changes to the source, send us context + diffs, as generated by `diff' with the `-u', `-c', or `-p' option. + Always send diffs from the old file to the new file. If you wish + to discuss something in the `ld' source, refer to it by context, + not by line number. + + The line numbers in our development sources will not match those + in your sources. Your line numbers would convey no useful + information to us. + + Here are some things that are not necessary: + + * A description of the envelope of the bug. + + Often people who encounter a bug spend a lot of time investigating + which changes to the input file will make the bug go away and which + changes will not affect it. + + This is often time consuming and not very useful, because the way + we will find the bug is by running a single example under the + debugger with breakpoints, not by pure deduction from a series of + examples. We recommend that you save your time for something else. + + Of course, if you can find a simpler example to report _instead_ + of the original one, that is a convenience for us. Errors in the + output will be easier to spot, running under the debugger will take + less time, and so on. + + However, simplification is not vital; if you do not want to do + this, report the bug anyway and send us the entire test case you + used. + + * A patch for the bug. + + A patch for the bug does help us if it is a good one. But do not + omit the necessary information, such as the test case, on the + assumption that a patch is all we need. We might see problems + with your patch and decide to fix the problem another way, or we + might not understand it at all. + + Sometimes with programs as complicated as the binary utilities it + is very hard to construct an example that will make the program + follow a certain path through the code. If you do not send us the + example, we will not be able to construct one, so we will not be + able to verify that the bug is fixed. + + And if we cannot understand what bug you are trying to fix, or why + your patch should be an improvement, we will not install it. A + test case will help us to understand. + + * A guess about what the bug is or what it depends on. + + Such guesses are usually wrong. Even we cannot guess right about + such things without first using the debugger to find the facts. + + +File: binutils.info, Node: GNU Free Documentation License, Next: Binutils Index, Prev: Reporting Bugs, Up: Top + +Appendix A GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + `http://fsf.org/' + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + 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 + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + 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 + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + 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 + 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 + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + 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 + replace the old one, on explicit permission from the previous + publisher that added the old one. + + 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 + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + 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 + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + 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 + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly + and finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from + you under this License. If your rights have been terminated and + not permanently reinstated, receipt of a copy of some or all of + the same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents +==================================================== + +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 +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + 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 + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + + +File: binutils.info, Node: Binutils Index, Prev: GNU Free Documentation License, Up: Top + +Binutils Index +************** + +[index] +* Menu: + +* --enable-deterministic-archives <1>: objcopy. (line 303) +* --enable-deterministic-archives <2>: ranlib. (line 44) +* --enable-deterministic-archives <3>: ar cmdline. (line 151) +* --enable-deterministic-archives <4>: strip. (line 115) +* --enable-deterministic-archives <5>: ar cmdline. (line 224) +* --enable-deterministic-archives: objcopy. (line 293) +* .stab: objdump. (line 420) +* Add prefix to absolute paths: objdump. (line 363) +* addr2line: addr2line. (line 6) +* address to file name and line number: addr2line. (line 6) +* all header information, object file: objdump. (line 538) +* ar: ar. (line 6) +* ar compatibility: ar. (line 61) +* architecture: objdump. (line 197) +* architectures available: objdump. (line 182) +* archive contents: ranlib. (line 6) +* Archive file symbol index information: readelf. (line 155) +* archive headers: objdump. (line 67) +* archives: ar. (line 6) +* base files: dlltool. (line 124) +* bug criteria: Bug Criteria. (line 6) +* bug reports: Bug Reporting. (line 6) +* bugs: Reporting Bugs. (line 6) +* bugs, reporting: Bug Reporting. (line 6) +* c++filt: c++filt. (line 6) +* changing object addresses: objcopy. (line 338) +* changing section address: objcopy. (line 348) +* changing section LMA: objcopy. (line 357) +* changing section VMA: objcopy. (line 370) +* changing start address: objcopy. (line 333) +* collections of files: ar. (line 6) +* compatibility, ar: ar. (line 61) +* contents of archive: ar cmdline. (line 97) +* crash: Bug Criteria. (line 9) +* creating archives: ar cmdline. (line 145) +* creating thin archive: ar cmdline. (line 210) +* cxxfilt: c++filt. (line 14) +* dates in archive: ar cmdline. (line 184) +* debug symbols: objdump. (line 420) +* debugging symbols: nm. (line 147) +* deleting from archive: ar cmdline. (line 26) +* demangling C++ symbols: c++filt. (line 6) +* demangling in nm: nm. (line 155) +* demangling in objdump <1>: objdump. (line 95) +* demangling in objdump: addr2line. (line 84) +* deterministic archives <1>: ranlib. (line 32) +* deterministic archives <2>: objcopy. (line 293) +* deterministic archives <3>: ar cmdline. (line 224) +* deterministic archives <4>: strip. (line 105) +* deterministic archives <5>: ar cmdline. (line 151) +* deterministic archives <6>: ranlib. (line 44) +* deterministic archives: objcopy. (line 303) +* disassembling object code: objdump. (line 117) +* disassembly architecture: objdump. (line 197) +* disassembly endianness: objdump. (line 137) +* disassembly, with source: objdump. (line 359) +* discarding symbols: strip. (line 6) +* DLL: dlltool. (line 6) +* dlltool: dlltool. (line 6) +* DWARF: objdump. (line 385) +* dynamic relocation entries, in object file: objdump. (line 347) +* dynamic symbol table entries, printing: objdump. (line 522) +* dynamic symbols: nm. (line 167) +* ELF dynamic section information: readelf. (line 113) +* ELF dynamic symbol table information: readelf. (line 88) +* ELF file header information: readelf. (line 57) +* ELF file information: readelf. (line 6) +* ELF notes: readelf. (line 97) +* ELF object file format: objdump. (line 420) +* ELF program header information: readelf. (line 63) +* ELF reloc information: readelf. (line 101) +* ELF section group information: readelf. (line 74) +* ELF section information: readelf. (line 79) +* ELF segment information: readelf. (line 63) +* ELF symbol table information: readelf. (line 84) +* ELF version sections information: readelf. (line 117) +* elfedit: elfedit. (line 6) +* endianness: objdump. (line 137) +* error on valid input: Bug Criteria. (line 12) +* external symbols: nm. (line 179) +* extract from archive: ar cmdline. (line 112) +* fatal signal: Bug Criteria. (line 9) +* file name: nm. (line 141) +* header information, all: objdump. (line 538) +* input .def file: dlltool. (line 120) +* input file name: nm. (line 141) +* Instruction width: objdump. (line 380) +* libraries: ar. (line 25) +* listings strings: strings. (line 6) +* load plugin: nm. (line 252) +* machine instructions: objdump. (line 117) +* moving in archive: ar cmdline. (line 34) +* MRI compatibility, ar: ar scripts. (line 8) +* name duplication in archive: ar cmdline. (line 106) +* name length: ar. (line 18) +* nm: nm. (line 6) +* nm compatibility: nm. (line 173) +* nm format: nm. (line 173) +* not writing archive index: ar cmdline. (line 203) +* objdump: objdump. (line 6) +* object code format <1>: strings. (line 93) +* object code format <2>: nm. (line 278) +* object code format <3>: addr2line. (line 79) +* object code format <4>: objdump. (line 81) +* object code format: size. (line 84) +* object file header: objdump. (line 143) +* object file information: objdump. (line 6) +* object file offsets: objdump. (line 148) +* object file sections: objdump. (line 354) +* object formats available: objdump. (line 182) +* operations on archive: ar cmdline. (line 22) +* printing from archive: ar cmdline. (line 46) +* printing strings: strings. (line 6) +* quick append to archive: ar cmdline. (line 54) +* radix for section sizes: size. (line 66) +* ranlib <1>: ranlib. (line 6) +* ranlib: ar cmdline. (line 91) +* readelf: readelf. (line 6) +* relative placement in archive: ar cmdline. (line 133) +* relocation entries, in object file: objdump. (line 341) +* removing symbols: strip. (line 6) +* repeated names in archive: ar cmdline. (line 106) +* replacement in archive: ar cmdline. (line 73) +* reporting bugs: Reporting Bugs. (line 6) +* scripts, ar: ar scripts. (line 8) +* section addresses in objdump: objdump. (line 73) +* section headers: objdump. (line 164) +* section information: objdump. (line 187) +* section sizes: size. (line 6) +* sections, full contents: objdump. (line 354) +* size: size. (line 6) +* size display format: size. (line 27) +* size number format: size. (line 66) +* sorting symbols: nm. (line 202) +* source code context: objdump. (line 157) +* source disassembly: objdump. (line 359) +* source file name: nm. (line 141) +* source filenames for object files: objdump. (line 191) +* stab: objdump. (line 420) +* start-address: objdump. (line 429) +* stop-address: objdump. (line 433) +* strings: strings. (line 6) +* strings, printing: strings. (line 6) +* strip: strip. (line 6) +* Strip absolute paths: objdump. (line 366) +* symbol index <1>: ar. (line 28) +* symbol index: ranlib. (line 6) +* symbol index, listing: nm. (line 224) +* symbol line numbers: nm. (line 187) +* symbol table entries, printing: objdump. (line 438) +* symbols: nm. (line 6) +* symbols, discarding: strip. (line 6) +* thin archives: ar. (line 40) +* undefined symbols: nm. (line 235) +* Unix compatibility, ar: ar cmdline. (line 8) +* unwind information: readelf. (line 106) +* Update ELF header: elfedit. (line 6) +* updating an archive: ar cmdline. (line 215) +* version: Top. (line 6) +* VMA in objdump: objdump. (line 73) +* wide output, printing: objdump. (line 544) +* writing archive index: ar cmdline. (line 197) + + + +Tag Table: +Node: Top1896 +Node: ar3606 +Node: ar cmdline6832 +Node: ar scripts17174 +Node: nm22862 +Node: objcopy32756 +Node: objdump65189 +Node: ranlib87468 +Node: size89073 +Node: strings92077 +Node: strip96157 +Node: c++filt103389 +Ref: c++filt-Footnote-1108230 +Node: addr2line108336 +Node: nlmconv112907 +Node: windmc115512 +Node: windres119161 +Node: dlltool125522 +Node: def file format138402 +Node: readelf140941 +Node: elfedit148496 +Node: Common Options150750 +Node: Selecting the Target System151790 +Node: Target Selection152722 +Node: Architecture Selection154704 +Node: Reporting Bugs155532 +Node: Bug Criteria156311 +Node: Bug Reporting156864 +Node: GNU Free Documentation License163734 +Node: Binutils Index188913 + +End Tag Table diff --git a/binutils/doc/cxxfilt.man b/binutils/doc/cxxfilt.man new file mode 100644 index 00000000000..a1466d2f48f --- /dev/null +++ b/binutils/doc/cxxfilt.man @@ -0,0 +1,345 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "C++FILT 1" +.TH C++FILT 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +cxxfilt \- Demangle C++ and Java symbols. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +c++filt [\fB\-_\fR|\fB\-\-strip\-underscore\fR] + [\fB\-n\fR|\fB\-\-no\-strip\-underscore\fR] + [\fB\-p\fR|\fB\-\-no\-params\fR] + [\fB\-t\fR|\fB\-\-types\fR] + [\fB\-i\fR|\fB\-\-no\-verbose\fR] + [\fB\-s\fR \fIformat\fR|\fB\-\-format=\fR\fIformat\fR] + [\fB\-\-help\fR] [\fB\-\-version\fR] [\fIsymbol\fR...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \*(C+ and Java languages provide function overloading, which means +that you can write many functions with the same name, providing that +each function takes parameters of different types. In order to be +able to distinguish these similarly named functions \*(C+ and Java +encode them into a low-level assembler name which uniquely identifies +each different version. This process is known as \fImangling\fR. The +\&\fBc++filt\fR +[1] +program does the inverse mapping: it decodes (\fIdemangles\fR) low-level +names into user-level names so that they can be read. +.PP +Every alphanumeric word (consisting of letters, digits, underscores, +dollars, or periods) seen in the input is a potential mangled name. +If the name decodes into a \*(C+ name, the \*(C+ name replaces the +low-level name in the output, otherwise the original word is output. +In this way you can pass an entire assembler source file, containing +mangled names, through \fBc++filt\fR and see the same source file +containing demangled names. +.PP +You can also use \fBc++filt\fR to decipher individual symbols by +passing them on the command line: +.PP +.Vb 1 +\& c++filt +.Ve +.PP +If no \fIsymbol\fR arguments are given, \fBc++filt\fR reads symbol +names from the standard input instead. All the results are printed on +the standard output. The difference between reading names from the +command line versus reading names from the standard input is that +command line arguments are expected to be just mangled names and no +checking is performed to separate them from surrounding text. Thus +for example: +.PP +.Vb 1 +\& c++filt \-n _Z1fv +.Ve +.PP +will work and demangle the name to \*(L"f()\*(R" whereas: +.PP +.Vb 1 +\& c++filt \-n _Z1fv, +.Ve +.PP +will not work. (Note the extra comma at the end of the mangled +name which makes it invalid). This command however will work: +.PP +.Vb 1 +\& echo _Z1fv, | c++filt \-n +.Ve +.PP +and will display \*(L"f(),\*(R", i.e., the demangled name followed by a +trailing comma. This behaviour is because when the names are read +from the standard input it is expected that they might be part of an +assembler source file where there might be extra, extraneous +characters trailing after a mangled name. For example: +.PP +.Vb 1 +\& .type _Z1fv, @function +.Ve +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-_\fR" 4 +.IX Item "-_" +.PD 0 +.IP "\fB\-\-strip\-underscore\fR" 4 +.IX Item "--strip-underscore" +.PD +On some systems, both the C and \*(C+ compilers put an underscore in front +of every name. For example, the C name \f(CW\*(C`foo\*(C'\fR gets the low-level +name \f(CW\*(C`_foo\*(C'\fR. This option removes the initial underscore. Whether +\&\fBc++filt\fR removes the underscore by default is target dependent. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-no\-strip\-underscore\fR" 4 +.IX Item "--no-strip-underscore" +.PD +Do not remove the initial underscore. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-no\-params\fR" 4 +.IX Item "--no-params" +.PD +When demangling the name of a function, do not display the types of +the function's parameters. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-types\fR" 4 +.IX Item "--types" +.PD +Attempt to demangle types as well as function names. This is disabled +by default since mangled types are normally only used internally in +the compiler, and they can be confused with non-mangled names. For example, +a function called \*(L"a\*(R" treated as a mangled type name would be +demangled to \*(L"signed char\*(R". +.IP "\fB\-i\fR" 4 +.IX Item "-i" +.PD 0 +.IP "\fB\-\-no\-verbose\fR" 4 +.IX Item "--no-verbose" +.PD +Do not include implementation details (if any) in the demangled +output. +.IP "\fB\-s\fR \fIformat\fR" 4 +.IX Item "-s format" +.PD 0 +.IP "\fB\-\-format=\fR\fIformat\fR" 4 +.IX Item "--format=format" +.PD +\&\fBc++filt\fR can decode various methods of mangling, used by +different compilers. The argument to this option selects which +method it uses: +.RS 4 +.ie n .IP """auto""" 4 +.el .IP "\f(CWauto\fR" 4 +.IX Item "auto" +Automatic selection based on executable (the default method) +.ie n .IP """gnu""" 4 +.el .IP "\f(CWgnu\fR" 4 +.IX Item "gnu" +the one used by the \s-1GNU \*(C+\s0 compiler (g++) +.ie n .IP """lucid""" 4 +.el .IP "\f(CWlucid\fR" 4 +.IX Item "lucid" +the one used by the Lucid compiler (lcc) +.ie n .IP """arm""" 4 +.el .IP "\f(CWarm\fR" 4 +.IX Item "arm" +the one specified by the \*(C+ Annotated Reference Manual +.ie n .IP """hp""" 4 +.el .IP "\f(CWhp\fR" 4 +.IX Item "hp" +the one used by the \s-1HP\s0 compiler (aCC) +.ie n .IP """edg""" 4 +.el .IP "\f(CWedg\fR" 4 +.IX Item "edg" +the one used by the \s-1EDG\s0 compiler +.ie n .IP """gnu\-v3""" 4 +.el .IP "\f(CWgnu\-v3\fR" 4 +.IX Item "gnu-v3" +the one used by the \s-1GNU \*(C+\s0 compiler (g++) with the V3 \s-1ABI.\s0 +.ie n .IP """java""" 4 +.el .IP "\f(CWjava\fR" 4 +.IX Item "java" +the one used by the \s-1GNU\s0 Java compiler (gcj) +.ie n .IP """gnat""" 4 +.el .IP "\f(CWgnat\fR" 4 +.IX Item "gnat" +the one used by the \s-1GNU\s0 Ada compiler (\s-1GNAT\s0). +.RE +.RS 4 +.RE +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Print a summary of the options to \fBc++filt\fR and exit. +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +Print the version number of \fBc++filt\fR and exit. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "FOOTNOTES" +.IX Header "FOOTNOTES" +.IP "1." 4 +MS-DOS does not allow \f(CW\*(C`+\*(C'\fR characters in file names, so on +MS-DOS this program is named \fB\s-1CXXFILT\s0\fR. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/dlltool.1 b/binutils/doc/dlltool.1 new file mode 100644 index 00000000000..2b9a55a49ce --- /dev/null +++ b/binutils/doc/dlltool.1 @@ -0,0 +1,538 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "DLLTOOL 1" +.TH DLLTOOL 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +dlltool \- Create files needed to build and use DLLs. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +dlltool [\fB\-d\fR|\fB\-\-input\-def\fR \fIdef-file-name\fR] + [\fB\-b\fR|\fB\-\-base\-file\fR \fIbase-file-name\fR] + [\fB\-e\fR|\fB\-\-output\-exp\fR \fIexports-file-name\fR] + [\fB\-z\fR|\fB\-\-output\-def\fR \fIdef-file-name\fR] + [\fB\-l\fR|\fB\-\-output\-lib\fR \fIlibrary-file-name\fR] + [\fB\-y\fR|\fB\-\-output\-delaylib\fR \fIlibrary-file-name\fR] + [\fB\-\-export\-all\-symbols\fR] [\fB\-\-no\-export\-all\-symbols\fR] + [\fB\-\-exclude\-symbols\fR \fIlist\fR] + [\fB\-\-no\-default\-excludes\fR] + [\fB\-S\fR|\fB\-\-as\fR \fIpath-to-assembler\fR] [\fB\-f\fR|\fB\-\-as\-flags\fR \fIoptions\fR] + [\fB\-D\fR|\fB\-\-dllname\fR \fIname\fR] [\fB\-m\fR|\fB\-\-machine\fR \fImachine\fR] + [\fB\-a\fR|\fB\-\-add\-indirect\fR] + [\fB\-U\fR|\fB\-\-add\-underscore\fR] [\fB\-\-add\-stdcall\-underscore\fR] + [\fB\-k\fR|\fB\-\-kill\-at\fR] [\fB\-A\fR|\fB\-\-add\-stdcall\-alias\fR] + [\fB\-p\fR|\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR] + [\fB\-x\fR|\fB\-\-no\-idata4\fR] [\fB\-c\fR|\fB\-\-no\-idata5\fR] + [\fB\-\-use\-nul\-prefixed\-import\-tables\fR] + [\fB\-I\fR|\fB\-\-identify\fR \fIlibrary-file-name\fR] [\fB\-\-identify\-strict\fR] + [\fB\-i\fR|\fB\-\-interwork\fR] + [\fB\-n\fR|\fB\-\-nodelete\fR] [\fB\-t\fR|\fB\-\-temp\-prefix\fR \fIprefix\fR] + [\fB\-v\fR|\fB\-\-verbose\fR] + [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] + [\fB\-\-no\-leading\-underscore\fR] [\fB\-\-leading\-underscore\fR] + [object\-file ...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBdlltool\fR reads its inputs, which can come from the \fB\-d\fR and +\&\fB\-b\fR options as well as object files specified on the command +line. It then processes these inputs and if the \fB\-e\fR option has +been specified it creates a exports file. If the \fB\-l\fR option +has been specified it creates a library file and if the \fB\-z\fR option +has been specified it creates a def file. Any or all of the \fB\-e\fR, +\&\fB\-l\fR and \fB\-z\fR options can be present in one invocation of +dlltool. +.PP +When creating a \s-1DLL,\s0 along with the source for the \s-1DLL,\s0 it is necessary +to have three other files. \fBdlltool\fR can help with the creation of +these files. +.PP +The first file is a \fI.def\fR file which specifies which functions are +exported from the \s-1DLL,\s0 which functions the \s-1DLL\s0 imports, and so on. This +is a text file and can be created by hand, or \fBdlltool\fR can be used +to create it using the \fB\-z\fR option. In this case \fBdlltool\fR +will scan the object files specified on its command line looking for +those functions which have been specially marked as being exported and +put entries for them in the \fI.def\fR file it creates. +.PP +In order to mark a function as being exported from a \s-1DLL,\s0 it needs to +have an \fB\-export:\fR entry in the \fB.drectve\fR +section of the object file. This can be done in C by using the +\&\fIasm()\fR operator: +.PP +.Vb 2 +\& asm (".section .drectve"); +\& asm (".ascii \e"\-export:my_func\e""); +\& +\& int my_func (void) { ... } +.Ve +.PP +The second file needed for \s-1DLL\s0 creation is an exports file. This file +is linked with the object files that make up the body of the \s-1DLL\s0 and it +handles the interface between the \s-1DLL\s0 and the outside world. This is a +binary file and it can be created by giving the \fB\-e\fR option to +\&\fBdlltool\fR when it is creating or reading in a \fI.def\fR file. +.PP +The third file needed for \s-1DLL\s0 creation is the library file that programs +will link with in order to access the functions in the \s-1DLL \s0(an `import +library'). This file can be created by giving the \fB\-l\fR option to +dlltool when it is creating or reading in a \fI.def\fR file. +.PP +If the \fB\-y\fR option is specified, dlltool generates a delay-import +library that can be used instead of the normal import library to allow +a program to link to the dll only as soon as an imported function is +called for the first time. The resulting executable will need to be +linked to the static delayimp library containing _\|\fI_delayLoadHelper2()\fR, +which in turn will import LoadLibraryA and GetProcAddress from kernel32. +.PP +\&\fBdlltool\fR builds the library file by hand, but it builds the +exports file by creating temporary files containing assembler statements +and then assembling these. The \fB\-S\fR command line option can be +used to specify the path to the assembler that dlltool will use, +and the \fB\-f\fR option can be used to pass specific flags to that +assembler. The \fB\-n\fR can be used to prevent dlltool from deleting +these temporary assembler files when it is done, and if \fB\-n\fR is +specified twice then this will prevent dlltool from deleting the +temporary object files it used to build the library. +.PP +Here is an example of creating a \s-1DLL\s0 from a source file \fBdll.c\fR and +also creating a program (from an object file called \fBprogram.o\fR) +that uses that \s-1DLL:\s0 +.PP +.Vb 4 +\& gcc \-c dll.c +\& dlltool \-e exports.o \-l dll.lib dll.o +\& gcc dll.o exports.o \-o dll.dll +\& gcc program.o dll.lib \-o program +.Ve +.PP +\&\fBdlltool\fR may also be used to query an existing import library +to determine the name of the \s-1DLL\s0 to which it is associated. See the +description of the \fB\-I\fR or \fB\-\-identify\fR option. +.SH "OPTIONS" +.IX Header "OPTIONS" +The command line options have the following meanings: +.IP "\fB\-d\fR \fIfilename\fR" 4 +.IX Item "-d filename" +.PD 0 +.IP "\fB\-\-input\-def\fR \fIfilename\fR" 4 +.IX Item "--input-def filename" +.PD +Specifies the name of a \fI.def\fR file to be read in and processed. +.IP "\fB\-b\fR \fIfilename\fR" 4 +.IX Item "-b filename" +.PD 0 +.IP "\fB\-\-base\-file\fR \fIfilename\fR" 4 +.IX Item "--base-file filename" +.PD +Specifies the name of a base file to be read in and processed. The +contents of this file will be added to the relocation section in the +exports file generated by dlltool. +.IP "\fB\-e\fR \fIfilename\fR" 4 +.IX Item "-e filename" +.PD 0 +.IP "\fB\-\-output\-exp\fR \fIfilename\fR" 4 +.IX Item "--output-exp filename" +.PD +Specifies the name of the export file to be created by dlltool. +.IP "\fB\-z\fR \fIfilename\fR" 4 +.IX Item "-z filename" +.PD 0 +.IP "\fB\-\-output\-def\fR \fIfilename\fR" 4 +.IX Item "--output-def filename" +.PD +Specifies the name of the \fI.def\fR file to be created by dlltool. +.IP "\fB\-l\fR \fIfilename\fR" 4 +.IX Item "-l filename" +.PD 0 +.IP "\fB\-\-output\-lib\fR \fIfilename\fR" 4 +.IX Item "--output-lib filename" +.PD +Specifies the name of the library file to be created by dlltool. +.IP "\fB\-y\fR \fIfilename\fR" 4 +.IX Item "-y filename" +.PD 0 +.IP "\fB\-\-output\-delaylib\fR \fIfilename\fR" 4 +.IX Item "--output-delaylib filename" +.PD +Specifies the name of the delay-import library file to be created by dlltool. +.IP "\fB\-\-export\-all\-symbols\fR" 4 +.IX Item "--export-all-symbols" +Treat all global and weak defined symbols found in the input object +files as symbols to be exported. There is a small list of symbols which +are not exported by default; see the \fB\-\-no\-default\-excludes\fR +option. You may add to the list of symbols to not export by using the +\&\fB\-\-exclude\-symbols\fR option. +.IP "\fB\-\-no\-export\-all\-symbols\fR" 4 +.IX Item "--no-export-all-symbols" +Only export symbols explicitly listed in an input \fI.def\fR file or in +\&\fB.drectve\fR sections in the input object files. This is the default +behaviour. The \fB.drectve\fR sections are created by \fBdllexport\fR +attributes in the source code. +.IP "\fB\-\-exclude\-symbols\fR \fIlist\fR" 4 +.IX Item "--exclude-symbols list" +Do not export the symbols in \fIlist\fR. This is a list of symbol names +separated by comma or colon characters. The symbol names should not +contain a leading underscore. This is only meaningful when +\&\fB\-\-export\-all\-symbols\fR is used. +.IP "\fB\-\-no\-default\-excludes\fR" 4 +.IX Item "--no-default-excludes" +When \fB\-\-export\-all\-symbols\fR is used, it will by default avoid +exporting certain special symbols. The current list of symbols to avoid +exporting is \fBDllMain@12\fR, \fBDllEntryPoint@0\fR, +\&\fBimpure_ptr\fR. You may use the \fB\-\-no\-default\-excludes\fR option +to go ahead and export these special symbols. This is only meaningful +when \fB\-\-export\-all\-symbols\fR is used. +.IP "\fB\-S\fR \fIpath\fR" 4 +.IX Item "-S path" +.PD 0 +.IP "\fB\-\-as\fR \fIpath\fR" 4 +.IX Item "--as path" +.PD +Specifies the path, including the filename, of the assembler to be used +to create the exports file. +.IP "\fB\-f\fR \fIoptions\fR" 4 +.IX Item "-f options" +.PD 0 +.IP "\fB\-\-as\-flags\fR \fIoptions\fR" 4 +.IX Item "--as-flags options" +.PD +Specifies any specific command line options to be passed to the +assembler when building the exports file. This option will work even if +the \fB\-S\fR option is not used. This option only takes one argument, +and if it occurs more than once on the command line, then later +occurrences will override earlier occurrences. So if it is necessary to +pass multiple options to the assembler they should be enclosed in +double quotes. +.IP "\fB\-D\fR \fIname\fR" 4 +.IX Item "-D name" +.PD 0 +.IP "\fB\-\-dll\-name\fR \fIname\fR" 4 +.IX Item "--dll-name name" +.PD +Specifies the name to be stored in the \fI.def\fR file as the name of +the \s-1DLL\s0 when the \fB\-e\fR option is used. If this option is not +present, then the filename given to the \fB\-e\fR option will be +used as the name of the \s-1DLL.\s0 +.IP "\fB\-m\fR \fImachine\fR" 4 +.IX Item "-m machine" +.PD 0 +.IP "\fB\-machine\fR \fImachine\fR" 4 +.IX Item "-machine machine" +.PD +Specifies the type of machine for which the library file should be +built. \fBdlltool\fR has a built in default type, depending upon how +it was created, but this option can be used to override that. This is +normally only useful when creating DLLs for an \s-1ARM\s0 processor, when the +contents of the \s-1DLL\s0 are actually encode using Thumb instructions. +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-add\-indirect\fR" 4 +.IX Item "--add-indirect" +.PD +Specifies that when \fBdlltool\fR is creating the exports file it +should add a section which allows the exported functions to be +referenced without using the import library. Whatever the hell that +means! +.IP "\fB\-U\fR" 4 +.IX Item "-U" +.PD 0 +.IP "\fB\-\-add\-underscore\fR" 4 +.IX Item "--add-underscore" +.PD +Specifies that when \fBdlltool\fR is creating the exports file it +should prepend an underscore to the names of \fIall\fR exported symbols. +.IP "\fB\-\-no\-leading\-underscore\fR" 4 +.IX Item "--no-leading-underscore" +.PD 0 +.IP "\fB\-\-leading\-underscore\fR" 4 +.IX Item "--leading-underscore" +.PD +Specifies whether standard symbol should be forced to be prefixed, or +not. +.IP "\fB\-\-add\-stdcall\-underscore\fR" 4 +.IX Item "--add-stdcall-underscore" +Specifies that when \fBdlltool\fR is creating the exports file it +should prepend an underscore to the names of exported \fIstdcall\fR +functions. Variable names and non-stdcall function names are not modified. +This option is useful when creating GNU-compatible import libs for third +party DLLs that were built with MS-Windows tools. +.IP "\fB\-k\fR" 4 +.IX Item "-k" +.PD 0 +.IP "\fB\-\-kill\-at\fR" 4 +.IX Item "--kill-at" +.PD +Specifies that when \fBdlltool\fR is creating the exports file it +should not append the string \fB@ \fR. These numbers are +called ordinal numbers and they represent another way of accessing the +function in a \s-1DLL,\s0 other than by name. +.IP "\fB\-A\fR" 4 +.IX Item "-A" +.PD 0 +.IP "\fB\-\-add\-stdcall\-alias\fR" 4 +.IX Item "--add-stdcall-alias" +.PD +Specifies that when \fBdlltool\fR is creating the exports file it +should add aliases for stdcall symbols without \fB@ \fR +in addition to the symbols with \fB@ \fR. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-ext\-prefix\-alias\fR \fIprefix\fR" 4 +.IX Item "--ext-prefix-alias prefix" +.PD +Causes \fBdlltool\fR to create external aliases for all \s-1DLL\s0 +imports with the specified prefix. The aliases are created for both +external and import symbols with no leading underscore. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-no\-idata4\fR" 4 +.IX Item "--no-idata4" +.PD +Specifies that when \fBdlltool\fR is creating the exports and library +files it should omit the \f(CW\*(C`.idata4\*(C'\fR section. This is for compatibility +with certain operating systems. +.IP "\fB\-\-use\-nul\-prefixed\-import\-tables\fR" 4 +.IX Item "--use-nul-prefixed-import-tables" +Specifies that when \fBdlltool\fR is creating the exports and library +files it should prefix the \f(CW\*(C`.idata4\*(C'\fR and \f(CW\*(C`.idata5\*(C'\fR by zero an +element. This emulates old gnu import library generation of +\&\f(CW\*(C`dlltool\*(C'\fR. By default this option is turned off. +.IP "\fB\-c\fR" 4 +.IX Item "-c" +.PD 0 +.IP "\fB\-\-no\-idata5\fR" 4 +.IX Item "--no-idata5" +.PD +Specifies that when \fBdlltool\fR is creating the exports and library +files it should omit the \f(CW\*(C`.idata5\*(C'\fR section. This is for compatibility +with certain operating systems. +.IP "\fB\-I\fR \fIfilename\fR" 4 +.IX Item "-I filename" +.PD 0 +.IP "\fB\-\-identify\fR \fIfilename\fR" 4 +.IX Item "--identify filename" +.PD +Specifies that \fBdlltool\fR should inspect the import library +indicated by \fIfilename\fR and report, on \f(CW\*(C`stdout\*(C'\fR, the name(s) +of the associated \s-1DLL\s0(s). This can be performed in addition to any +other operations indicated by the other options and arguments. +\&\fBdlltool\fR fails if the import library does not exist or is not +actually an import library. See also \fB\-\-identify\-strict\fR. +.IP "\fB\-\-identify\-strict\fR" 4 +.IX Item "--identify-strict" +Modifies the behavior of the \fB\-\-identify\fR option, such +that an error is reported if \fIfilename\fR is associated with +more than one \s-1DLL.\s0 +.IP "\fB\-i\fR" 4 +.IX Item "-i" +.PD 0 +.IP "\fB\-\-interwork\fR" 4 +.IX Item "--interwork" +.PD +Specifies that \fBdlltool\fR should mark the objects in the library +file and exports file that it produces as supporting interworking +between \s-1ARM\s0 and Thumb code. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-nodelete\fR" 4 +.IX Item "--nodelete" +.PD +Makes \fBdlltool\fR preserve the temporary assembler files it used to +create the exports file. If this option is repeated then dlltool will +also preserve the temporary object files it uses to create the library +file. +.IP "\fB\-t\fR \fIprefix\fR" 4 +.IX Item "-t prefix" +.PD 0 +.IP "\fB\-\-temp\-prefix\fR \fIprefix\fR" 4 +.IX Item "--temp-prefix prefix" +.PD +Makes \fBdlltool\fR use \fIprefix\fR when constructing the names of +temporary assembler and object files. By default, the temp file prefix +is generated from the pid. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +.PD +Make dlltool describe what it is doing. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Displays a list of command line options and then exits. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Displays dlltool's version number and then exits. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +The Info pages for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/elfedit.1 b/binutils/doc/elfedit.1 new file mode 100644 index 00000000000..5c51e8a1e36 --- /dev/null +++ b/binutils/doc/elfedit.1 @@ -0,0 +1,242 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "ELFEDIT 1" +.TH ELFEDIT 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +elfedit \- Update the ELF header of ELF files. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +elfedit [\fB\-\-input\-mach=\fR\fImachine\fR] + [\fB\-\-input\-type=\fR\fItype\fR] + [\fB\-\-input\-osabi=\fR\fIosabi\fR] + \fB\-\-output\-mach=\fR\fImachine\fR + \fB\-\-output\-type=\fR\fItype\fR + \fB\-\-output\-osabi=\fR\fIosabi\fR + [\fB\-v\fR|\fB\-\-version\fR] + [\fB\-h\fR|\fB\-\-help\fR] + \fIelffile\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBelfedit\fR updates the \s-1ELF\s0 header of \s-1ELF\s0 files which have +the matching \s-1ELF\s0 machine and file types. The options control how and +which fields in the \s-1ELF\s0 header should be updated. +.PP +\&\fIelffile\fR... are the \s-1ELF\s0 files to be updated. 32\-bit and +64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files. +.SH "OPTIONS" +.IX Header "OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. At least one of the \fB\-\-output\-mach\fR, +\&\fB\-\-output\-type\fR and \fB\-\-output\-osabi\fR options must be given. +.IP "\fB\-\-input\-mach=\fR\fImachine\fR" 4 +.IX Item "--input-mach=machine" +Set the matching input \s-1ELF\s0 machine type to \fImachine\fR. If +\&\fB\-\-input\-mach\fR isn't specified, it will match any \s-1ELF\s0 +machine types. +.Sp +The supported \s-1ELF\s0 machine types are, \fIL1OM\fR, \fIK1OM\fR and +\&\fIx86\-64\fR. +.IP "\fB\-\-output\-mach=\fR\fImachine\fR" 4 +.IX Item "--output-mach=machine" +Change the \s-1ELF\s0 machine type in the \s-1ELF\s0 header to \fImachine\fR. The +supported \s-1ELF\s0 machine types are the same as \fB\-\-input\-mach\fR. +.IP "\fB\-\-input\-type=\fR\fItype\fR" 4 +.IX Item "--input-type=type" +Set the matching input \s-1ELF\s0 file type to \fItype\fR. If +\&\fB\-\-input\-type\fR isn't specified, it will match any \s-1ELF\s0 file types. +.Sp +The supported \s-1ELF\s0 file types are, \fIrel\fR, \fIexec\fR and \fIdyn\fR. +.IP "\fB\-\-output\-type=\fR\fItype\fR" 4 +.IX Item "--output-type=type" +Change the \s-1ELF\s0 file type in the \s-1ELF\s0 header to \fItype\fR. The +supported \s-1ELF\s0 types are the same as \fB\-\-input\-type\fR. +.IP "\fB\-\-input\-osabi=\fR\fIosabi\fR" 4 +.IX Item "--input-osabi=osabi" +Set the matching input \s-1ELF\s0 file \s-1OSABI\s0 to \fIosabi\fR. If +\&\fB\-\-input\-osabi\fR isn't specified, it will match any \s-1ELF\s0 OSABIs. +.Sp +The supported \s-1ELF\s0 OSABIs are, \fInone\fR, \fI\s-1HPUX\s0\fR, \fINetBSD\fR, +\&\fI\s-1GNU\s0\fR, \fILinux\fR (alias for \fI\s-1GNU\s0\fR), +\&\fISolaris\fR, \fI\s-1AIX\s0\fR, \fIIrix\fR, +\&\fIFreeBSD\fR, \fI\s-1TRU64\s0\fR, \fIModesto\fR, \fIOpenBSD\fR, \fIOpenVMS\fR, +\&\fI\s-1NSK\s0\fR, \fI\s-1AROS\s0\fR and \fIFenixOS\fR. +.IP "\fB\-\-output\-osabi=\fR\fIosabi\fR" 4 +.IX Item "--output-osabi=osabi" +Change the \s-1ELF OSABI\s0 in the \s-1ELF\s0 header to \fIosabi\fR. The +supported \s-1ELF OSABI\s0 are the same as \fB\-\-input\-osabi\fR. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Display the version number of \fBelfedit\fR. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Display the command line options understood by \fBelfedit\fR. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/nlmconv.1 b/binutils/doc/nlmconv.1 new file mode 100644 index 00000000000..5465ff8f40a --- /dev/null +++ b/binutils/doc/nlmconv.1 @@ -0,0 +1,251 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "NLMCONV 1" +.TH NLMCONV 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +nlmconv \- converts object code into an NLM. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +nlmconv [\fB\-I\fR \fIbfdname\fR|\fB\-\-input\-target=\fR\fIbfdname\fR] + [\fB\-O\fR \fIbfdname\fR|\fB\-\-output\-target=\fR\fIbfdname\fR] + [\fB\-T\fR \fIheaderfile\fR|\fB\-\-header\-file=\fR\fIheaderfile\fR] + [\fB\-d\fR|\fB\-\-debug\fR] [\fB\-l\fR \fIlinker\fR|\fB\-\-linker=\fR\fIlinker\fR] + [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] + \fIinfile\fR \fIoutfile\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBnlmconv\fR converts the relocatable \fBi386\fR object file +\&\fIinfile\fR into the NetWare Loadable Module \fIoutfile\fR, optionally +reading \fIheaderfile\fR for \s-1NLM\s0 header information. For instructions +on writing the \s-1NLM\s0 command file language used in header files, see the +\&\fBlinkers\fR section, \fB\s-1NLMLINK\s0\fR in particular, of the \fI\s-1NLM\s0 +Development and Tools Overview\fR, which is part of the \s-1NLM\s0 Software +Developer's Kit (\*(L"\s-1NLM SDK\*(R"\s0), available from Novell, Inc. +\&\fBnlmconv\fR uses the \s-1GNU\s0 Binary File Descriptor library to read +\&\fIinfile\fR; +.PP +\&\fBnlmconv\fR can perform a link step. In other words, you can list +more than one object file for input if you list them in the definitions +file (rather than simply specifying one input file on the command line). +In this case, \fBnlmconv\fR calls the linker for you. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-I\fR \fIbfdname\fR" 4 +.IX Item "-I bfdname" +.PD 0 +.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4 +.IX Item "--input-target=bfdname" +.PD +Object format of the input file. \fBnlmconv\fR can usually determine +the format of a given file (so no default is necessary). +.IP "\fB\-O\fR \fIbfdname\fR" 4 +.IX Item "-O bfdname" +.PD 0 +.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4 +.IX Item "--output-target=bfdname" +.PD +Object format of the output file. \fBnlmconv\fR infers the output +format based on the input format, e.g. for a \fBi386\fR input file the +output format is \fBnlm32\-i386\fR. +.IP "\fB\-T\fR \fIheaderfile\fR" 4 +.IX Item "-T headerfile" +.PD 0 +.IP "\fB\-\-header\-file=\fR\fIheaderfile\fR" 4 +.IX Item "--header-file=headerfile" +.PD +Reads \fIheaderfile\fR for \s-1NLM\s0 header information. For instructions on +writing the \s-1NLM\s0 command file language used in header files, see see the +\&\fBlinkers\fR section, of the \fI\s-1NLM\s0 Development and Tools +Overview\fR, which is part of the \s-1NLM\s0 Software Developer's Kit, available +from Novell, Inc. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-\-debug\fR" 4 +.IX Item "--debug" +.PD +Displays (on standard error) the linker command line used by \fBnlmconv\fR. +.IP "\fB\-l\fR \fIlinker\fR" 4 +.IX Item "-l linker" +.PD 0 +.IP "\fB\-\-linker=\fR\fIlinker\fR" 4 +.IX Item "--linker=linker" +.PD +Use \fIlinker\fR for any linking. \fIlinker\fR can be an absolute or a +relative pathname. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Prints a usage summary. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Prints the version number for \fBnlmconv\fR. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/nm.1 b/binutils/doc/nm.1 new file mode 100644 index 00000000000..3c338cbf3e4 --- /dev/null +++ b/binutils/doc/nm.1 @@ -0,0 +1,539 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "NM 1" +.TH NM 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +nm \- list symbols from object files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +nm [\fB\-A\fR|\fB\-o\fR|\fB\-\-print\-file\-name\fR] [\fB\-a\fR|\fB\-\-debug\-syms\fR] + [\fB\-B\fR|\fB\-\-format=bsd\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]] + [\fB\-D\fR|\fB\-\-dynamic\fR] [\fB\-f\fR\fIformat\fR|\fB\-\-format=\fR\fIformat\fR] + [\fB\-g\fR|\fB\-\-extern\-only\fR] [\fB\-h\fR|\fB\-\-help\fR] + [\fB\-l\fR|\fB\-\-line\-numbers\fR] [\fB\-n\fR|\fB\-v\fR|\fB\-\-numeric\-sort\fR] + [\fB\-P\fR|\fB\-\-portability\fR] [\fB\-p\fR|\fB\-\-no\-sort\fR] + [\fB\-r\fR|\fB\-\-reverse\-sort\fR] [\fB\-S\fR|\fB\-\-print\-size\fR] + [\fB\-s\fR|\fB\-\-print\-armap\fR] [\fB\-t\fR \fIradix\fR|\fB\-\-radix=\fR\fIradix\fR] + [\fB\-u\fR|\fB\-\-undefined\-only\fR] [\fB\-V\fR|\fB\-\-version\fR] + [\fB\-X 32_64\fR] [\fB\-\-defined\-only\fR] [\fB\-\-no\-demangle\fR] + [\fB\-\-plugin\fR \fIname\fR] [\fB\-\-size\-sort\fR] [\fB\-\-special\-syms\fR] + [\fB\-\-synthetic\fR] [\fB\-\-target=\fR\fIbfdname\fR] + [\fIobjfile\fR...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1GNU \s0\fBnm\fR lists the symbols from object files \fIobjfile\fR.... +If no object files are listed as arguments, \fBnm\fR assumes the file +\&\fIa.out\fR. +.PP +For each symbol, \fBnm\fR shows: +.IP "\(bu" 4 +The symbol value, in the radix selected by options (see below), or +hexadecimal by default. +.IP "\(bu" 4 +The symbol type. At least the following types are used; others are, as +well, depending on the object file format. If lowercase, the symbol is +usually local; if uppercase, the symbol is global (external). There +are however a few lowercase symbols that are shown for special global +symbols (\f(CW\*(C`u\*(C'\fR, \f(CW\*(C`v\*(C'\fR and \f(CW\*(C`w\*(C'\fR). +.RS 4 +.ie n .IP """A""" 4 +.el .IP "\f(CWA\fR" 4 +.IX Item "A" +The symbol's value is absolute, and will not be changed by further +linking. +.ie n .IP """B""" 4 +.el .IP "\f(CWB\fR" 4 +.IX Item "B" +.PD 0 +.ie n .IP """b""" 4 +.el .IP "\f(CWb\fR" 4 +.IX Item "b" +.PD +The symbol is in the uninitialized data section (known as \s-1BSS\s0). +.ie n .IP """C""" 4 +.el .IP "\f(CWC\fR" 4 +.IX Item "C" +The symbol is common. Common symbols are uninitialized data. When +linking, multiple common symbols may appear with the same name. If the +symbol is defined anywhere, the common symbols are treated as undefined +references. +.ie n .IP """D""" 4 +.el .IP "\f(CWD\fR" 4 +.IX Item "D" +.PD 0 +.ie n .IP """d""" 4 +.el .IP "\f(CWd\fR" 4 +.IX Item "d" +.PD +The symbol is in the initialized data section. +.ie n .IP """G""" 4 +.el .IP "\f(CWG\fR" 4 +.IX Item "G" +.PD 0 +.ie n .IP """g""" 4 +.el .IP "\f(CWg\fR" 4 +.IX Item "g" +.PD +The symbol is in an initialized data section for small objects. Some +object file formats permit more efficient access to small data objects, +such as a global int variable as opposed to a large global array. +.ie n .IP """i""" 4 +.el .IP "\f(CWi\fR" 4 +.IX Item "i" +For \s-1PE\s0 format files this indicates that the symbol is in a section +specific to the implementation of DLLs. For \s-1ELF\s0 format files this +indicates that the symbol is an indirect function. This is a \s-1GNU\s0 +extension to the standard set of \s-1ELF\s0 symbol types. It indicates a +symbol which if referenced by a relocation does not evaluate to its +address, but instead must be invoked at runtime. The runtime +execution will then return the value to be used in the relocation. +.ie n .IP """I""" 4 +.el .IP "\f(CWI\fR" 4 +.IX Item "I" +The symbol is an indirect reference to another symbol. +.ie n .IP """N""" 4 +.el .IP "\f(CWN\fR" 4 +.IX Item "N" +The symbol is a debugging symbol. +.ie n .IP """p""" 4 +.el .IP "\f(CWp\fR" 4 +.IX Item "p" +The symbols is in a stack unwind section. +.ie n .IP """R""" 4 +.el .IP "\f(CWR\fR" 4 +.IX Item "R" +.PD 0 +.ie n .IP """r""" 4 +.el .IP "\f(CWr\fR" 4 +.IX Item "r" +.PD +The symbol is in a read only data section. +.ie n .IP """S""" 4 +.el .IP "\f(CWS\fR" 4 +.IX Item "S" +.PD 0 +.ie n .IP """s""" 4 +.el .IP "\f(CWs\fR" 4 +.IX Item "s" +.PD +The symbol is in an uninitialized data section for small objects. +.ie n .IP """T""" 4 +.el .IP "\f(CWT\fR" 4 +.IX Item "T" +.PD 0 +.ie n .IP """t""" 4 +.el .IP "\f(CWt\fR" 4 +.IX Item "t" +.PD +The symbol is in the text (code) section. +.ie n .IP """U""" 4 +.el .IP "\f(CWU\fR" 4 +.IX Item "U" +The symbol is undefined. +.ie n .IP """u""" 4 +.el .IP "\f(CWu\fR" 4 +.IX Item "u" +The symbol is a unique global symbol. This is a \s-1GNU\s0 extension to the +standard set of \s-1ELF\s0 symbol bindings. For such a symbol the dynamic linker +will make sure that in the entire process there is just one symbol with +this name and type in use. +.ie n .IP """V""" 4 +.el .IP "\f(CWV\fR" 4 +.IX Item "V" +.PD 0 +.ie n .IP """v""" 4 +.el .IP "\f(CWv\fR" 4 +.IX Item "v" +.PD +The symbol is a weak object. When a weak defined symbol is linked with +a normal defined symbol, the normal defined symbol is used with no error. +When a weak undefined symbol is linked and the symbol is not defined, +the value of the weak symbol becomes zero with no error. On some +systems, uppercase indicates that a default value has been specified. +.ie n .IP """W""" 4 +.el .IP "\f(CWW\fR" 4 +.IX Item "W" +.PD 0 +.ie n .IP """w""" 4 +.el .IP "\f(CWw\fR" 4 +.IX Item "w" +.PD +The symbol is a weak symbol that has not been specifically tagged as a +weak object symbol. When a weak defined symbol is linked with a normal +defined symbol, the normal defined symbol is used with no error. +When a weak undefined symbol is linked and the symbol is not defined, +the value of the symbol is determined in a system-specific manner without +error. On some systems, uppercase indicates that a default value has been +specified. +.ie n .IP """\-""" 4 +.el .IP "\f(CW\-\fR" 4 +.IX Item "-" +The symbol is a stabs symbol in an a.out object file. In this case, the +next values printed are the stabs other field, the stabs desc field, and +the stab type. Stabs symbols are used to hold debugging information. +.ie n .IP """?""" 4 +.el .IP "\f(CW?\fR" 4 +.IX Item "?" +The symbol type is unknown, or object file format specific. +.RE +.RS 4 +.RE +.IP "\(bu" 4 +The symbol name. +.SH "OPTIONS" +.IX Header "OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. +.IP "\fB\-A\fR" 4 +.IX Item "-A" +.PD 0 +.IP "\fB\-o\fR" 4 +.IX Item "-o" +.IP "\fB\-\-print\-file\-name\fR" 4 +.IX Item "--print-file-name" +.PD +Precede each symbol by the name of the input file (or archive member) +in which it was found, rather than identifying the input file once only, +before all of its symbols. +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-debug\-syms\fR" 4 +.IX Item "--debug-syms" +.PD +Display all symbols, even debugger-only symbols; normally these are not +listed. +.IP "\fB\-B\fR" 4 +.IX Item "-B" +The same as \fB\-\-format=bsd\fR (for compatibility with the \s-1MIPS \s0\fBnm\fR). +.IP "\fB\-C\fR" 4 +.IX Item "-C" +.PD 0 +.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4 +.IX Item "--demangle[=style]" +.PD +Decode (\fIdemangle\fR) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes \*(C+ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. +.IP "\fB\-\-no\-demangle\fR" 4 +.IX Item "--no-demangle" +Do not demangle low-level symbol names. This is the default. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +.PD 0 +.IP "\fB\-\-dynamic\fR" 4 +.IX Item "--dynamic" +.PD +Display the dynamic symbols rather than the normal symbols. This is +only meaningful for dynamic objects, such as certain types of shared +libraries. +.IP "\fB\-f\fR \fIformat\fR" 4 +.IX Item "-f format" +.PD 0 +.IP "\fB\-\-format=\fR\fIformat\fR" 4 +.IX Item "--format=format" +.PD +Use the output format \fIformat\fR, which can be \f(CW\*(C`bsd\*(C'\fR, +\&\f(CW\*(C`sysv\*(C'\fR, or \f(CW\*(C`posix\*(C'\fR. The default is \f(CW\*(C`bsd\*(C'\fR. +Only the first character of \fIformat\fR is significant; it can be +either upper or lower case. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-\-extern\-only\fR" 4 +.IX Item "--extern-only" +.PD +Display only external symbols. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Show a summary of the options to \fBnm\fR and exit. +.IP "\fB\-l\fR" 4 +.IX Item "-l" +.PD 0 +.IP "\fB\-\-line\-numbers\fR" 4 +.IX Item "--line-numbers" +.PD +For each symbol, use debugging information to try to find a filename and +line number. For a defined symbol, look for the line number of the +address of the symbol. For an undefined symbol, look for the line +number of a relocation entry which refers to the symbol. If line number +information can be found, print it after the other symbol information. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.IP "\fB\-\-numeric\-sort\fR" 4 +.IX Item "--numeric-sort" +.PD +Sort symbols numerically by their addresses, rather than alphabetically +by their names. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-no\-sort\fR" 4 +.IX Item "--no-sort" +.PD +Do not bother to sort the symbols in any order; print them in the order +encountered. +.IP "\fB\-P\fR" 4 +.IX Item "-P" +.PD 0 +.IP "\fB\-\-portability\fR" 4 +.IX Item "--portability" +.PD +Use the \s-1POSIX.2\s0 standard output format instead of the default format. +Equivalent to \fB\-f posix\fR. +.IP "\fB\-r\fR" 4 +.IX Item "-r" +.PD 0 +.IP "\fB\-\-reverse\-sort\fR" 4 +.IX Item "--reverse-sort" +.PD +Reverse the order of the sort (whether numeric or alphabetic); let the +last come first. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-print\-size\fR" 4 +.IX Item "--print-size" +.PD +Print both value and size of defined symbols for the \f(CW\*(C`bsd\*(C'\fR output style. +This option has no effect for object formats that do not record symbol +sizes, unless \fB\-\-size\-sort\fR is also used in which case a +calculated size is displayed. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-print\-armap\fR" 4 +.IX Item "--print-armap" +.PD +When listing symbols from archive members, include the index: a mapping +(stored in the archive by \fBar\fR or \fBranlib\fR) of which modules +contain definitions for which names. +.IP "\fB\-t\fR \fIradix\fR" 4 +.IX Item "-t radix" +.PD 0 +.IP "\fB\-\-radix=\fR\fIradix\fR" 4 +.IX Item "--radix=radix" +.PD +Use \fIradix\fR as the radix for printing the symbol values. It must be +\&\fBd\fR for decimal, \fBo\fR for octal, or \fBx\fR for hexadecimal. +.IP "\fB\-u\fR" 4 +.IX Item "-u" +.PD 0 +.IP "\fB\-\-undefined\-only\fR" 4 +.IX Item "--undefined-only" +.PD +Display only undefined symbols (those external to each object file). +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Show the version number of \fBnm\fR and exit. +.IP "\fB\-X\fR" 4 +.IX Item "-X" +This option is ignored for compatibility with the \s-1AIX\s0 version of +\&\fBnm\fR. It takes one parameter which must be the string +\&\fB32_64\fR. The default mode of \s-1AIX \s0\fBnm\fR corresponds +to \fB\-X 32\fR, which is not supported by \s-1GNU \s0\fBnm\fR. +.IP "\fB\-\-defined\-only\fR" 4 +.IX Item "--defined-only" +Display only defined symbols for each object file. +.IP "\fB\-\-plugin\fR \fIname\fR" 4 +.IX Item "--plugin name" +Load the plugin called \fIname\fR to add support for extra target +types. This option is only available if the toolchain has been built +with plugin support enabled. +.IP "\fB\-\-size\-sort\fR" 4 +.IX Item "--size-sort" +Sort symbols by size. The size is computed as the difference between +the value of the symbol and the value of the symbol with the next higher +value. If the \f(CW\*(C`bsd\*(C'\fR output format is used the size of the symbol +is printed, rather than the value, and \fB\-S\fR must be used in order +both size and value to be printed. +.IP "\fB\-\-special\-syms\fR" 4 +.IX Item "--special-syms" +Display symbols which have a target-specific special meaning. These +symbols are usually used by the target for some special processing and +are not normally helpful when included in the normal symbol lists. +For example for \s-1ARM\s0 targets this option would skip the mapping symbols +used to mark transitions between \s-1ARM\s0 code, \s-1THUMB\s0 code and data. +.IP "\fB\-\-synthetic\fR" 4 +.IX Item "--synthetic" +Include synthetic symbols in the output. These are special symbols +created by the linker for various purposes. They are not shown by +default since they are not part of the binary's original source code. +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +Specify an object code format other than your system's default format. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/objcopy.1 b/binutils/doc/objcopy.1 new file mode 100644 index 00000000000..141c95297be --- /dev/null +++ b/binutils/doc/objcopy.1 @@ -0,0 +1,1033 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "OBJCOPY 1" +.TH OBJCOPY 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +objcopy \- copy and translate object files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +objcopy [\fB\-F\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR] + [\fB\-I\fR \fIbfdname\fR|\fB\-\-input\-target=\fR\fIbfdname\fR] + [\fB\-O\fR \fIbfdname\fR|\fB\-\-output\-target=\fR\fIbfdname\fR] + [\fB\-B\fR \fIbfdarch\fR|\fB\-\-binary\-architecture=\fR\fIbfdarch\fR] + [\fB\-S\fR|\fB\-\-strip\-all\fR] + [\fB\-g\fR|\fB\-\-strip\-debug\fR] + [\fB\-K\fR \fIsymbolname\fR|\fB\-\-keep\-symbol=\fR\fIsymbolname\fR] + [\fB\-N\fR \fIsymbolname\fR|\fB\-\-strip\-symbol=\fR\fIsymbolname\fR] + [\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR] + [\fB\-G\fR \fIsymbolname\fR|\fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR] + [\fB\-\-localize\-hidden\fR] + [\fB\-L\fR \fIsymbolname\fR|\fB\-\-localize\-symbol=\fR\fIsymbolname\fR] + [\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR] + [\fB\-W\fR \fIsymbolname\fR|\fB\-\-weaken\-symbol=\fR\fIsymbolname\fR] + [\fB\-w\fR|\fB\-\-wildcard\fR] + [\fB\-x\fR|\fB\-\-discard\-all\fR] + [\fB\-X\fR|\fB\-\-discard\-locals\fR] + [\fB\-b\fR \fIbyte\fR|\fB\-\-byte=\fR\fIbyte\fR] + [\fB\-i\fR [\fIbreadth\fR]|\fB\-\-interleave\fR[=\fIbreadth\fR]] + [\fB\-\-interleave\-width=\fR\fIwidth\fR] + [\fB\-j\fR \fIsectionpattern\fR|\fB\-\-only\-section=\fR\fIsectionpattern\fR] + [\fB\-R\fR \fIsectionpattern\fR|\fB\-\-remove\-section=\fR\fIsectionpattern\fR] + [\fB\-p\fR|\fB\-\-preserve\-dates\fR] + [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR] + [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\fR] + [\fB\-\-debugging\fR] + [\fB\-\-gap\-fill=\fR\fIval\fR] + [\fB\-\-pad\-to=\fR\fIaddress\fR] + [\fB\-\-set\-start=\fR\fIval\fR] + [\fB\-\-adjust\-start=\fR\fIincr\fR] + [\fB\-\-change\-addresses=\fR\fIincr\fR] + [\fB\-\-change\-section\-address\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] + [\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] + [\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] + [\fB\-\-change\-warnings\fR] [\fB\-\-no\-change\-warnings\fR] + [\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR=\fIflags\fR] + [\fB\-\-add\-section\fR \fIsectionname\fR=\fIfilename\fR] + [\fB\-\-dump\-section\fR \fIsectionname\fR=\fIfilename\fR] + [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR[,\fIflags\fR]] + [\fB\-\-long\-section\-names\fR {enable,disable,keep}] + [\fB\-\-change\-leading\-char\fR] [\fB\-\-remove\-leading\-char\fR] + [\fB\-\-reverse\-bytes=\fR\fInum\fR] + [\fB\-\-srec\-len=\fR\fIival\fR] [\fB\-\-srec\-forceS3\fR] + [\fB\-\-redefine\-sym\fR \fIold\fR=\fInew\fR] + [\fB\-\-redefine\-syms=\fR\fIfilename\fR] + [\fB\-\-weaken\fR] + [\fB\-\-keep\-symbols=\fR\fIfilename\fR] + [\fB\-\-strip\-symbols=\fR\fIfilename\fR] + [\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR] + [\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR] + [\fB\-\-localize\-symbols=\fR\fIfilename\fR] + [\fB\-\-globalize\-symbols=\fR\fIfilename\fR] + [\fB\-\-weaken\-symbols=\fR\fIfilename\fR] + [\fB\-\-alt\-machine\-code=\fR\fIindex\fR] + [\fB\-\-prefix\-symbols=\fR\fIstring\fR] + [\fB\-\-prefix\-sections=\fR\fIstring\fR] + [\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR] + [\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR] + [\fB\-\-keep\-file\-symbols\fR] + [\fB\-\-only\-keep\-debug\fR] + [\fB\-\-strip\-dwo\fR] + [\fB\-\-extract\-dwo\fR] + [\fB\-\-extract\-symbol\fR] + [\fB\-\-writable\-text\fR] + [\fB\-\-readonly\-text\fR] + [\fB\-\-pure\fR] + [\fB\-\-impure\fR] + [\fB\-\-file\-alignment=\fR\fInum\fR] + [\fB\-\-heap=\fR\fIsize\fR] + [\fB\-\-image\-base=\fR\fIaddress\fR] + [\fB\-\-section\-alignment=\fR\fInum\fR] + [\fB\-\-stack=\fR\fIsize\fR] + [\fB\-\-subsystem=\fR\fIwhich\fR:\fImajor\fR.\fIminor\fR] + [\fB\-\-compress\-debug\-sections\fR] + [\fB\-\-decompress\-debug\-sections\fR] + [\fB\-\-dwarf\-depth=\fR\fIn\fR] + [\fB\-\-dwarf\-start=\fR\fIn\fR] + [\fB\-v\fR|\fB\-\-verbose\fR] + [\fB\-V\fR|\fB\-\-version\fR] + [\fB\-\-help\fR] [\fB\-\-info\fR] + \fIinfile\fR [\fIoutfile\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \s-1GNU \s0\fBobjcopy\fR utility copies the contents of an object +file to another. \fBobjcopy\fR uses the \s-1GNU BFD\s0 Library to +read and write the object files. It can write the destination object +file in a format different from that of the source object file. The +exact behavior of \fBobjcopy\fR is controlled by command-line options. +Note that \fBobjcopy\fR should be able to copy a fully linked file +between any two formats. However, copying a relocatable object file +between any two formats may not work as expected. +.PP +\&\fBobjcopy\fR creates temporary files to do its translations and +deletes them afterward. \fBobjcopy\fR uses \s-1BFD\s0 to do all its +translation work; it has access to all the formats described in \s-1BFD\s0 +and thus is able to recognize most formats without being told +explicitly. +.PP +\&\fBobjcopy\fR can be used to generate S\-records by using an output +target of \fBsrec\fR (e.g., use \fB\-O srec\fR). +.PP +\&\fBobjcopy\fR can be used to generate a raw binary file by using an +output target of \fBbinary\fR (e.g., use \fB\-O binary\fR). When +\&\fBobjcopy\fR generates a raw binary file, it will essentially produce +a memory dump of the contents of the input object file. All symbols and +relocation information will be discarded. The memory dump will start at +the load address of the lowest section copied into the output file. +.PP +When generating an S\-record or a raw binary file, it may be helpful to +use \fB\-S\fR to remove sections containing debugging information. In +some cases \fB\-R\fR will be useful to remove sections which contain +information that is not needed by the binary file. +.PP +Note\-\-\-\fBobjcopy\fR is not able to change the endianness of its input +files. If the input format has an endianness (some formats do not), +\&\fBobjcopy\fR can only copy the inputs into file formats that have the +same endianness or which have no endianness (e.g., \fBsrec\fR). +(However, see the \fB\-\-reverse\-bytes\fR option.) +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fIinfile\fR" 4 +.IX Item "infile" +.PD 0 +.IP "\fIoutfile\fR" 4 +.IX Item "outfile" +.PD +The input and output files, respectively. +If you do not specify \fIoutfile\fR, \fBobjcopy\fR creates a +temporary file and destructively renames the result with +the name of \fIinfile\fR. +.IP "\fB\-I\fR \fIbfdname\fR" 4 +.IX Item "-I bfdname" +.PD 0 +.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4 +.IX Item "--input-target=bfdname" +.PD +Consider the source file's object format to be \fIbfdname\fR, rather than +attempting to deduce it. +.IP "\fB\-O\fR \fIbfdname\fR" 4 +.IX Item "-O bfdname" +.PD 0 +.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4 +.IX Item "--output-target=bfdname" +.PD +Write the output file using the object format \fIbfdname\fR. +.IP "\fB\-F\fR \fIbfdname\fR" 4 +.IX Item "-F bfdname" +.PD 0 +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +.PD +Use \fIbfdname\fR as the object format for both the input and the output +file; i.e., simply transfer data from source to destination with no +translation. +.IP "\fB\-B\fR \fIbfdarch\fR" 4 +.IX Item "-B bfdarch" +.PD 0 +.IP "\fB\-\-binary\-architecture=\fR\fIbfdarch\fR" 4 +.IX Item "--binary-architecture=bfdarch" +.PD +Useful when transforming a architecture-less input file into an object file. +In this case the output architecture can be set to \fIbfdarch\fR. This +option will be ignored if the input file has a known \fIbfdarch\fR. You +can access this binary data inside a program by referencing the special +symbols that are created by the conversion process. These symbols are +called _binary_\fIobjfile\fR_start, _binary_\fIobjfile\fR_end and +_binary_\fIobjfile\fR_size. e.g. you can transform a picture file into +an object file and then access it in your code using these symbols. +.IP "\fB\-j\fR \fIsectionpattern\fR" 4 +.IX Item "-j sectionpattern" +.PD 0 +.IP "\fB\-\-only\-section=\fR\fIsectionpattern\fR" 4 +.IX Item "--only-section=sectionpattern" +.PD +Copy only the indicated sections from the input file to the output file. +This option may be given more than once. Note that using this option +inappropriately may make the output file unusable. Wildcard +characters are accepted in \fIsectionpattern\fR. +.IP "\fB\-R\fR \fIsectionpattern\fR" 4 +.IX Item "-R sectionpattern" +.PD 0 +.IP "\fB\-\-remove\-section=\fR\fIsectionpattern\fR" 4 +.IX Item "--remove-section=sectionpattern" +.PD +Remove any section matching \fIsectionpattern\fR from the output file. +This option may be given more than once. Note that using this option +inappropriately may make the output file unusable. Wildcard +characters are accepted in \fIsectionpattern\fR. Using both the +\&\fB\-j\fR and \fB\-R\fR options together results in undefined +behaviour. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-strip\-all\fR" 4 +.IX Item "--strip-all" +.PD +Do not copy relocation and symbol information from the source file. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-\-strip\-debug\fR" 4 +.IX Item "--strip-debug" +.PD +Do not copy debugging symbols or sections from the source file. +.IP "\fB\-\-strip\-unneeded\fR" 4 +.IX Item "--strip-unneeded" +Strip all symbols that are not needed for relocation processing. +.IP "\fB\-K\fR \fIsymbolname\fR" 4 +.IX Item "-K symbolname" +.PD 0 +.IP "\fB\-\-keep\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--keep-symbol=symbolname" +.PD +When stripping symbols, keep symbol \fIsymbolname\fR even if it would +normally be stripped. This option may be given more than once. +.IP "\fB\-N\fR \fIsymbolname\fR" 4 +.IX Item "-N symbolname" +.PD 0 +.IP "\fB\-\-strip\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--strip-symbol=symbolname" +.PD +Do not copy symbol \fIsymbolname\fR from the source file. This option +may be given more than once. +.IP "\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--strip-unneeded-symbol=symbolname" +Do not copy symbol \fIsymbolname\fR from the source file unless it is needed +by a relocation. This option may be given more than once. +.IP "\fB\-G\fR \fIsymbolname\fR" 4 +.IX Item "-G symbolname" +.PD 0 +.IP "\fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--keep-global-symbol=symbolname" +.PD +Keep only symbol \fIsymbolname\fR global. Make all other symbols local +to the file, so that they are not visible externally. This option may +be given more than once. +.IP "\fB\-\-localize\-hidden\fR" 4 +.IX Item "--localize-hidden" +In an \s-1ELF\s0 object, mark all symbols that have hidden or internal visibility +as local. This option applies on top of symbol-specific localization options +such as \fB\-L\fR. +.IP "\fB\-L\fR \fIsymbolname\fR" 4 +.IX Item "-L symbolname" +.PD 0 +.IP "\fB\-\-localize\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--localize-symbol=symbolname" +.PD +Make symbol \fIsymbolname\fR local to the file, so that it is not +visible externally. This option may be given more than once. +.IP "\fB\-W\fR \fIsymbolname\fR" 4 +.IX Item "-W symbolname" +.PD 0 +.IP "\fB\-\-weaken\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--weaken-symbol=symbolname" +.PD +Make symbol \fIsymbolname\fR weak. This option may be given more than once. +.IP "\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--globalize-symbol=symbolname" +Give symbol \fIsymbolname\fR global scoping so that it is visible +outside of the file in which it is defined. This option may be given +more than once. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +.PD 0 +.IP "\fB\-\-wildcard\fR" 4 +.IX Item "--wildcard" +.PD +Permit regular expressions in \fIsymbolname\fRs used in other command +line options. The question mark (?), asterisk (*), backslash (\e) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: +.Sp +.Vb 1 +\& \-w \-W !foo \-W fo* +.Ve +.Sp +would cause objcopy to weaken all symbols that start with \*(L"fo\*(R" +except for the symbol \*(L"foo\*(R". +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-discard\-all\fR" 4 +.IX Item "--discard-all" +.PD +Do not copy non-global symbols from the source file. +.IP "\fB\-X\fR" 4 +.IX Item "-X" +.PD 0 +.IP "\fB\-\-discard\-locals\fR" 4 +.IX Item "--discard-locals" +.PD +Do not copy compiler-generated local symbols. +(These usually start with \fBL\fR or \fB.\fR.) +.IP "\fB\-b\fR \fIbyte\fR" 4 +.IX Item "-b byte" +.PD 0 +.IP "\fB\-\-byte=\fR\fIbyte\fR" 4 +.IX Item "--byte=byte" +.PD +If interleaving has been enabled via the \fB\-\-interleave\fR option +then start the range of bytes to keep at the \fIbyte\fRth byte. +\&\fIbyte\fR can be in the range from 0 to \fIbreadth\fR\-1, where +\&\fIbreadth\fR is the value given by the \fB\-\-interleave\fR option. +.IP "\fB\-i [\fR\fIbreadth\fR\fB]\fR" 4 +.IX Item "-i [breadth]" +.PD 0 +.IP "\fB\-\-interleave[=\fR\fIbreadth\fR\fB]\fR" 4 +.IX Item "--interleave[=breadth]" +.PD +Only copy a range out of every \fIbreadth\fR bytes. (Header data is +not affected). Select which byte in the range begins the copy with +the \fB\-\-byte\fR option. Select the width of the range with the +\&\fB\-\-interleave\-width\fR option. +.Sp +This option is useful for creating files to program \s-1ROM. \s0 It is +typically used with an \f(CW\*(C`srec\*(C'\fR output target. Note that +\&\fBobjcopy\fR will complain if you do not specify the +\&\fB\-\-byte\fR option as well. +.Sp +The default interleave breadth is 4, so with \fB\-\-byte\fR set to 0, +\&\fBobjcopy\fR would copy the first byte out of every four bytes +from the input to the output. +.IP "\fB\-\-interleave\-width=\fR\fIwidth\fR" 4 +.IX Item "--interleave-width=width" +When used with the \fB\-\-interleave\fR option, copy \fIwidth\fR +bytes at a time. The start of the range of bytes to be copied is set +by the \fB\-\-byte\fR option, and the extent of the range is set with +the \fB\-\-interleave\fR option. +.Sp +The default value for this option is 1. The value of \fIwidth\fR plus +the \fIbyte\fR value set by the \fB\-\-byte\fR option must not exceed +the interleave breadth set by the \fB\-\-interleave\fR option. +.Sp +This option can be used to create images for two 16\-bit flashes interleaved +in a 32\-bit bus by passing \fB\-b 0 \-i 4 \-\-interleave\-width=2\fR +and \fB\-b 2 \-i 4 \-\-interleave\-width=2\fR to two \fBobjcopy\fR +commands. If the input was '12345678' then the outputs would be +\&'1256' and '3478' respectively. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-preserve\-dates\fR" 4 +.IX Item "--preserve-dates" +.PD +Set the access and modification dates of the output file to be the same +as those of the input file. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +.PD 0 +.IP "\fB\-\-enable\-deterministic\-archives\fR" 4 +.IX Item "--enable-deterministic-archives" +.PD +Operate in \fIdeterministic\fR mode. When copying archive members +and writing the archive index, use zero for UIDs, GIDs, timestamps, +and use consistent file modes for all files. +.Sp +If \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default. +It can be disabled with the \fB\-U\fR option, below. +.IP "\fB\-U\fR" 4 +.IX Item "-U" +.PD 0 +.IP "\fB\-\-disable\-deterministic\-archives\fR" 4 +.IX Item "--disable-deterministic-archives" +.PD +Do \fInot\fR operate in \fIdeterministic\fR mode. This is the +inverse of the \fB\-D\fR option, above: when copying archive members +and writing the archive index, use their actual \s-1UID, GID,\s0 timestamp, +and file mode values. +.Sp +This is the default unless \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR. +.IP "\fB\-\-debugging\fR" 4 +.IX Item "--debugging" +Convert debugging information, if possible. This is not the default +because only certain debugging formats are supported, and the +conversion process can be time consuming. +.IP "\fB\-\-gap\-fill\fR \fIval\fR" 4 +.IX Item "--gap-fill val" +Fill gaps between sections with \fIval\fR. This operation applies to +the \fIload address\fR (\s-1LMA\s0) of the sections. It is done by increasing +the size of the section with the lower address, and filling in the extra +space created with \fIval\fR. +.IP "\fB\-\-pad\-to\fR \fIaddress\fR" 4 +.IX Item "--pad-to address" +Pad the output file up to the load address \fIaddress\fR. This is +done by increasing the size of the last section. The extra space is +filled in with the value specified by \fB\-\-gap\-fill\fR (default zero). +.IP "\fB\-\-set\-start\fR \fIval\fR" 4 +.IX Item "--set-start val" +Set the start address of the new file to \fIval\fR. Not all object file +formats support setting the start address. +.IP "\fB\-\-change\-start\fR \fIincr\fR" 4 +.IX Item "--change-start incr" +.PD 0 +.IP "\fB\-\-adjust\-start\fR \fIincr\fR" 4 +.IX Item "--adjust-start incr" +.PD +Change the start address by adding \fIincr\fR. Not all object file +formats support setting the start address. +.IP "\fB\-\-change\-addresses\fR \fIincr\fR" 4 +.IX Item "--change-addresses incr" +.PD 0 +.IP "\fB\-\-adjust\-vma\fR \fIincr\fR" 4 +.IX Item "--adjust-vma incr" +.PD +Change the \s-1VMA\s0 and \s-1LMA\s0 addresses of all sections, as well as the start +address, by adding \fIincr\fR. Some object file formats do not permit +section addresses to be changed arbitrarily. Note that this does not +relocate the sections; if the program expects sections to be loaded at a +certain address, and this option is used to change the sections such +that they are loaded at a different address, the program may fail. +.IP "\fB\-\-change\-section\-address\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 +.IX Item "--change-section-address sectionpattern{=,+,-}val" +.PD 0 +.IP "\fB\-\-adjust\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 +.IX Item "--adjust-section-vma sectionpattern{=,+,-}val" +.PD +Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of any section +matching \fIsectionpattern\fR. If \fB=\fR is used, the section +address is set to \fIval\fR. Otherwise, \fIval\fR is added to or +subtracted from the section address. See the comments under +\&\fB\-\-change\-addresses\fR, above. If \fIsectionpattern\fR does not +match any sections in the input file, a warning will be issued, unless +\&\fB\-\-no\-change\-warnings\fR is used. +.IP "\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 +.IX Item "--change-section-lma sectionpattern{=,+,-}val" +Set or change the \s-1LMA\s0 address of any sections matching +\&\fIsectionpattern\fR. The \s-1LMA\s0 address is the address where the +section will be loaded into memory at program load time. Normally +this is the same as the \s-1VMA\s0 address, which is the address of the +section at program run time, but on some systems, especially those +where a program is held in \s-1ROM,\s0 the two can be different. If \fB=\fR +is used, the section address is set to \fIval\fR. Otherwise, +\&\fIval\fR is added to or subtracted from the section address. See the +comments under \fB\-\-change\-addresses\fR, above. If +\&\fIsectionpattern\fR does not match any sections in the input file, a +warning will be issued, unless \fB\-\-no\-change\-warnings\fR is used. +.IP "\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 +.IX Item "--change-section-vma sectionpattern{=,+,-}val" +Set or change the \s-1VMA\s0 address of any section matching +\&\fIsectionpattern\fR. The \s-1VMA\s0 address is the address where the +section will be located once the program has started executing. +Normally this is the same as the \s-1LMA\s0 address, which is the address +where the section will be loaded into memory, but on some systems, +especially those where a program is held in \s-1ROM,\s0 the two can be +different. If \fB=\fR is used, the section address is set to +\&\fIval\fR. Otherwise, \fIval\fR is added to or subtracted from the +section address. See the comments under \fB\-\-change\-addresses\fR, +above. If \fIsectionpattern\fR does not match any sections in the +input file, a warning will be issued, unless +\&\fB\-\-no\-change\-warnings\fR is used. +.IP "\fB\-\-change\-warnings\fR" 4 +.IX Item "--change-warnings" +.PD 0 +.IP "\fB\-\-adjust\-warnings\fR" 4 +.IX Item "--adjust-warnings" +.PD +If \fB\-\-change\-section\-address\fR or \fB\-\-change\-section\-lma\fR or +\&\fB\-\-change\-section\-vma\fR is used, and the section pattern does not +match any sections, issue a warning. This is the default. +.IP "\fB\-\-no\-change\-warnings\fR" 4 +.IX Item "--no-change-warnings" +.PD 0 +.IP "\fB\-\-no\-adjust\-warnings\fR" 4 +.IX Item "--no-adjust-warnings" +.PD +Do not issue a warning if \fB\-\-change\-section\-address\fR or +\&\fB\-\-adjust\-section\-lma\fR or \fB\-\-adjust\-section\-vma\fR is used, even +if the section pattern does not match any sections. +.IP "\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR\fB=\fR\fIflags\fR" 4 +.IX Item "--set-section-flags sectionpattern=flags" +Set the flags for any sections matching \fIsectionpattern\fR. The +\&\fIflags\fR argument is a comma separated string of flag names. The +recognized names are \fBalloc\fR, \fBcontents\fR, \fBload\fR, +\&\fBnoload\fR, \fBreadonly\fR, \fBcode\fR, \fBdata\fR, \fBrom\fR, +\&\fBshare\fR, and \fBdebug\fR. You can set the \fBcontents\fR flag +for a section which does not have contents, but it is not meaningful +to clear the \fBcontents\fR flag of a section which does have +contents\*(--just remove the section instead. Not all flags are +meaningful for all object file formats. +.IP "\fB\-\-add\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 +.IX Item "--add-section sectionname=filename" +Add a new section named \fIsectionname\fR while copying the file. The +contents of the new section are taken from the file \fIfilename\fR. The +size of the section will be the size of the file. This option only +works on file formats which can support sections with arbitrary names. +Note \- it may be necessary to use the \fB\-\-set\-section\-flags\fR +option to set the attributes of the newly created section. +.IP "\fB\-\-dump\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 +.IX Item "--dump-section sectionname=filename" +Place the contents of section named \fIsectionname\fR into the file +\&\fIfilename\fR, overwriting any contents that may have been there +previously. This option is the inverse of \fB\-\-add\-section\fR. +This option is similar to the \fB\-\-only\-section\fR option except +that it does not create a formatted file, it just dumps the contents +as raw binary data, without applying any relocations. The option can +be specified more than once. +.IP "\fB\-\-rename\-section\fR \fIoldname\fR\fB=\fR\fInewname\fR\fB[,\fR\fIflags\fR\fB]\fR" 4 +.IX Item "--rename-section oldname=newname[,flags]" +Rename a section from \fIoldname\fR to \fInewname\fR, optionally +changing the section's flags to \fIflags\fR in the process. This has +the advantage over usng a linker script to perform the rename in that +the output stays as an object file and does not become a linked +executable. +.Sp +This option is particularly helpful when the input format is binary, +since this will always create a section called .data. If for example, +you wanted instead to create a section called .rodata containing binary +data you could use the following command line to achieve it: +.Sp +.Vb 3 +\& objcopy \-I binary \-O \-B \e +\& \-\-rename\-section .data=.rodata,alloc,load,readonly,data,contents \e +\& +.Ve +.IP "\fB\-\-long\-section\-names {enable,disable,keep}\fR" 4 +.IX Item "--long-section-names {enable,disable,keep}" +Controls the handling of long section names when processing \f(CW\*(C`COFF\*(C'\fR +and \f(CW\*(C`PE\-COFF\*(C'\fR object formats. The default behaviour, \fBkeep\fR, +is to preserve long section names if any are present in the input file. +The \fBenable\fR and \fBdisable\fR options forcibly enable or disable +the use of long section names in the output object; when \fBdisable\fR +is in effect, any long section names in the input object will be truncated. +The \fBenable\fR option will only emit long section names if any are +present in the inputs; this is mostly the same as \fBkeep\fR, but it +is left undefined whether the \fBenable\fR option might force the +creation of an empty string table in the output file. +.IP "\fB\-\-change\-leading\-char\fR" 4 +.IX Item "--change-leading-char" +Some object file formats use special characters at the start of +symbols. The most common such character is underscore, which compilers +often add before every symbol. This option tells \fBobjcopy\fR to +change the leading character of every symbol when it converts between +object file formats. If the object file formats use the same leading +character, this option has no effect. Otherwise, it will add a +character, or remove a character, or change a character, as +appropriate. +.IP "\fB\-\-remove\-leading\-char\fR" 4 +.IX Item "--remove-leading-char" +If the first character of a global symbol is a special symbol leading +character used by the object file format, remove the character. The +most common symbol leading character is underscore. This option will +remove a leading underscore from all global symbols. This can be useful +if you want to link together objects of different file formats with +different conventions for symbol names. This is different from +\&\fB\-\-change\-leading\-char\fR because it always changes the symbol name +when appropriate, regardless of the object file format of the output +file. +.IP "\fB\-\-reverse\-bytes=\fR\fInum\fR" 4 +.IX Item "--reverse-bytes=num" +Reverse the bytes in a section with output contents. A section length must +be evenly divisible by the value given in order for the swap to be able to +take place. Reversing takes place before the interleaving is performed. +.Sp +This option is used typically in generating \s-1ROM\s0 images for problematic +target systems. For example, on some target boards, the 32\-bit words +fetched from 8\-bit ROMs are re-assembled in little-endian byte order +regardless of the \s-1CPU\s0 byte order. Depending on the programming model, the +endianness of the \s-1ROM\s0 may need to be modified. +.Sp +Consider a simple file with a section containing the following eight +bytes: \f(CW12345678\fR. +.Sp +Using \fB\-\-reverse\-bytes=2\fR for the above example, the bytes in the +output file would be ordered \f(CW21436587\fR. +.Sp +Using \fB\-\-reverse\-bytes=4\fR for the above example, the bytes in the +output file would be ordered \f(CW43218765\fR. +.Sp +By using \fB\-\-reverse\-bytes=2\fR for the above example, followed by +\&\fB\-\-reverse\-bytes=4\fR on the output file, the bytes in the second +output file would be ordered \f(CW34127856\fR. +.IP "\fB\-\-srec\-len=\fR\fIival\fR" 4 +.IX Item "--srec-len=ival" +Meaningful only for srec output. Set the maximum length of the Srecords +being produced to \fIival\fR. This length covers both address, data and +crc fields. +.IP "\fB\-\-srec\-forceS3\fR" 4 +.IX Item "--srec-forceS3" +Meaningful only for srec output. Avoid generation of S1/S2 records, +creating S3\-only record format. +.IP "\fB\-\-redefine\-sym\fR \fIold\fR\fB=\fR\fInew\fR" 4 +.IX Item "--redefine-sym old=new" +Change the name of a symbol \fIold\fR, to \fInew\fR. This can be useful +when one is trying link two things together for which you have no +source, and there are name collisions. +.IP "\fB\-\-redefine\-syms=\fR\fIfilename\fR" 4 +.IX Item "--redefine-syms=filename" +Apply \fB\-\-redefine\-sym\fR to each symbol pair "\fIold\fR \fInew\fR" +listed in the file \fIfilename\fR. \fIfilename\fR is simply a flat file, +with one symbol pair per line. Line comments may be introduced by the hash +character. This option may be given more than once. +.IP "\fB\-\-weaken\fR" 4 +.IX Item "--weaken" +Change all global symbols in the file to be weak. This can be useful +when building an object which will be linked against other objects using +the \fB\-R\fR option to the linker. This option is only effective when +using an object file format which supports weak symbols. +.IP "\fB\-\-keep\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--keep-symbols=filename" +Apply \fB\-\-keep\-symbol\fR option to each symbol listed in the file +\&\fIfilename\fR. \fIfilename\fR is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. +.IP "\fB\-\-strip\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--strip-symbols=filename" +Apply \fB\-\-strip\-symbol\fR option to each symbol listed in the file +\&\fIfilename\fR. \fIfilename\fR is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. +.IP "\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--strip-unneeded-symbols=filename" +Apply \fB\-\-strip\-unneeded\-symbol\fR option to each symbol listed in +the file \fIfilename\fR. \fIfilename\fR is simply a flat file, with one +symbol name per line. Line comments may be introduced by the hash +character. This option may be given more than once. +.IP "\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--keep-global-symbols=filename" +Apply \fB\-\-keep\-global\-symbol\fR option to each symbol listed in the +file \fIfilename\fR. \fIfilename\fR is simply a flat file, with one +symbol name per line. Line comments may be introduced by the hash +character. This option may be given more than once. +.IP "\fB\-\-localize\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--localize-symbols=filename" +Apply \fB\-\-localize\-symbol\fR option to each symbol listed in the file +\&\fIfilename\fR. \fIfilename\fR is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. +.IP "\fB\-\-globalize\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--globalize-symbols=filename" +Apply \fB\-\-globalize\-symbol\fR option to each symbol listed in the file +\&\fIfilename\fR. \fIfilename\fR is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. +.IP "\fB\-\-weaken\-symbols=\fR\fIfilename\fR" 4 +.IX Item "--weaken-symbols=filename" +Apply \fB\-\-weaken\-symbol\fR option to each symbol listed in the file +\&\fIfilename\fR. \fIfilename\fR is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. +.IP "\fB\-\-alt\-machine\-code=\fR\fIindex\fR" 4 +.IX Item "--alt-machine-code=index" +If the output architecture has alternate machine codes, use the +\&\fIindex\fRth code instead of the default one. This is useful in case +a machine is assigned an official code and the tool-chain adopts the +new code, but other applications still depend on the original code +being used. For \s-1ELF\s0 based architectures if the \fIindex\fR +alternative does not exist then the value is treated as an absolute +number to be stored in the e_machine field of the \s-1ELF\s0 header. +.IP "\fB\-\-writable\-text\fR" 4 +.IX Item "--writable-text" +Mark the output text as writable. This option isn't meaningful for all +object file formats. +.IP "\fB\-\-readonly\-text\fR" 4 +.IX Item "--readonly-text" +Make the output text write protected. This option isn't meaningful for all +object file formats. +.IP "\fB\-\-pure\fR" 4 +.IX Item "--pure" +Mark the output file as demand paged. This option isn't meaningful for all +object file formats. +.IP "\fB\-\-impure\fR" 4 +.IX Item "--impure" +Mark the output file as impure. This option isn't meaningful for all +object file formats. +.IP "\fB\-\-prefix\-symbols=\fR\fIstring\fR" 4 +.IX Item "--prefix-symbols=string" +Prefix all symbols in the output file with \fIstring\fR. +.IP "\fB\-\-prefix\-sections=\fR\fIstring\fR" 4 +.IX Item "--prefix-sections=string" +Prefix all section names in the output file with \fIstring\fR. +.IP "\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR" 4 +.IX Item "--prefix-alloc-sections=string" +Prefix all the names of all allocated sections in the output file with +\&\fIstring\fR. +.IP "\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR" 4 +.IX Item "--add-gnu-debuglink=path-to-file" +Creates a .gnu_debuglink section which contains a reference to \fIpath-to-file\fR +and adds it to the output file. +.IP "\fB\-\-keep\-file\-symbols\fR" 4 +.IX Item "--keep-file-symbols" +When stripping a file, perhaps with \fB\-\-strip\-debug\fR or +\&\fB\-\-strip\-unneeded\fR, retain any symbols specifying source file names, +which would otherwise get stripped. +.IP "\fB\-\-only\-keep\-debug\fR" 4 +.IX Item "--only-keep-debug" +Strip a file, removing contents of any sections that would not be +stripped by \fB\-\-strip\-debug\fR and leaving the debugging sections +intact. In \s-1ELF\s0 files, this preserves all note sections in the output. +.Sp +The intention is that this option will be used in conjunction with +\&\fB\-\-add\-gnu\-debuglink\fR to create a two part executable. One a +stripped binary which will occupy less space in \s-1RAM\s0 and in a +distribution and the second a debugging information file which is only +needed if debugging abilities are required. The suggested procedure +to create these files is as follows: +.RS 4 +.IP "1." 4 +.IX Item "1." +\&\f(CW\*(C`foo\*(C'\fR then... +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +create a file containing the debugging info. +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +stripped executable. +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +to add a link to the debugging info into the stripped executable. +.RE +.RS 4 +.Sp +Note\-\-\-the choice of \f(CW\*(C`.dbg\*(C'\fR as an extension for the debug info +file is arbitrary. Also the \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR step is +optional. You could instead do this: +.IP "1." 4 +.IX Item "1." +.PD 0 +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.RE +.RS 4 +.PD +.Sp +i.e., the file pointed to by the \fB\-\-add\-gnu\-debuglink\fR can be the +full executable. It does not have to be a file created by the +\&\fB\-\-only\-keep\-debug\fR switch. +.Sp +Note\-\-\-this switch is only intended for use on fully linked files. It +does not make sense to use it on object files where the debugging +information may be incomplete. Besides the gnu_debuglink feature +currently only supports the presence of one filename containing +debugging information, not multiple filenames on a one-per-object-file +basis. +.RE +.IP "\fB\-\-strip\-dwo\fR" 4 +.IX Item "--strip-dwo" +Remove the contents of all \s-1DWARF \s0.dwo sections, leaving the +remaining debugging sections and all symbols intact. +This option is intended for use by the compiler as part of +the \fB\-gsplit\-dwarf\fR option, which splits debug information +between the .o file and a separate .dwo file. The compiler +generates all debug information in the same file, then uses +the \fB\-\-extract\-dwo\fR option to copy the .dwo sections to +the .dwo file, then the \fB\-\-strip\-dwo\fR option to remove +those sections from the original .o file. +.IP "\fB\-\-extract\-dwo\fR" 4 +.IX Item "--extract-dwo" +Extract the contents of all \s-1DWARF \s0.dwo sections. See the +\&\fB\-\-strip\-dwo\fR option for more information. +.IP "\fB\-\-file\-alignment\fR \fInum\fR" 4 +.IX Item "--file-alignment num" +Specify the file alignment. Sections in the file will always begin at +file offsets which are multiples of this number. This defaults to +512. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-heap\fR \fIreserve\fR" 4 +.IX Item "--heap reserve" +.PD 0 +.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--heap reserve,commit" +.PD +Specify the number of bytes of memory to reserve (and optionally commit) +to be used as heap for this program. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4 +.IX Item "--image-base value" +Use \fIvalue\fR as the base address of your program or dll. This is +the lowest memory location that will be used when your program or dll +is loaded. To reduce the need to relocate and improve performance of +your dlls, each should have a unique base address and not overlap any +other dlls. The default is 0x400000 for executables, and 0x10000000 +for dlls. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-section\-alignment\fR \fInum\fR" 4 +.IX Item "--section-alignment num" +Sets the section alignment. Sections in memory will always begin at +addresses which are a multiple of this number. Defaults to 0x1000. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-stack\fR \fIreserve\fR" 4 +.IX Item "--stack reserve" +.PD 0 +.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 +.IX Item "--stack reserve,commit" +.PD +Specify the number of bytes of memory to reserve (and optionally commit) +to be used as stack for this program. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4 +.IX Item "--subsystem which" +.PD 0 +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4 +.IX Item "--subsystem which:major" +.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4 +.IX Item "--subsystem which:major.minor" +.PD +Specifies the subsystem under which your program will execute. The +legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR, +\&\f(CW\*(C`console\*(C'\fR, \f(CW\*(C`posix\*(C'\fR, \f(CW\*(C`efi\-app\*(C'\fR, \f(CW\*(C`efi\-bsd\*(C'\fR, +\&\f(CW\*(C`efi\-rtd\*(C'\fR, \f(CW\*(C`sal\-rtd\*(C'\fR, and \f(CW\*(C`xbox\*(C'\fR. You may optionally set +the subsystem version also. Numeric values are also accepted for +\&\fIwhich\fR. +[This option is specific to \s-1PE\s0 targets.] +.IP "\fB\-\-extract\-symbol\fR" 4 +.IX Item "--extract-symbol" +Keep the file's section flags and symbols but remove all section data. +Specifically, the option: +.RS 4 +.IP "*" 4 +.IX Item "*" +.PD 0 +.IP "*" 4 +.IX Item "*" +.IP "*" 4 +.IX Item "*" +.RE +.RS 4 +.PD +.Sp +This option is used to build a \fI.sym\fR file for a VxWorks kernel. +It can also be a useful way of reducing the size of a \fB\-\-just\-symbols\fR +linker input file. +.RE +.IP "\fB\-\-compress\-debug\-sections\fR" 4 +.IX Item "--compress-debug-sections" +Compress \s-1DWARF\s0 debug sections using zlib. +.IP "\fB\-\-decompress\-debug\-sections\fR" 4 +.IX Item "--decompress-debug-sections" +Decompress \s-1DWARF\s0 debug sections using zlib. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Show the version number of \fBobjcopy\fR. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +.PD +Verbose output: list all object files modified. In the case of +archives, \fBobjcopy \-V\fR lists all members of the archive. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Show a summary of the options to \fBobjcopy\fR. +.IP "\fB\-\-info\fR" 4 +.IX Item "--info" +Display a list showing all architectures and object formats available. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIld\fR\|(1), \fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/objdump.1 b/binutils/doc/objdump.1 new file mode 100644 index 00000000000..b7521749434 --- /dev/null +++ b/binutils/doc/objdump.1 @@ -0,0 +1,859 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "OBJDUMP 1" +.TH OBJDUMP 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +objdump \- display information from object files. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +objdump [\fB\-a\fR|\fB\-\-archive\-headers\fR] + [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR] + [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR] ] + [\fB\-d\fR|\fB\-\-disassemble\fR] + [\fB\-D\fR|\fB\-\-disassemble\-all\fR] + [\fB\-z\fR|\fB\-\-disassemble\-zeroes\fR] + [\fB\-EB\fR|\fB\-EL\fR|\fB\-\-endian=\fR{big | little }] + [\fB\-f\fR|\fB\-\-file\-headers\fR] + [\fB\-F\fR|\fB\-\-file\-offsets\fR] + [\fB\-\-file\-start\-context\fR] + [\fB\-g\fR|\fB\-\-debugging\fR] + [\fB\-e\fR|\fB\-\-debugging\-tags\fR] + [\fB\-h\fR|\fB\-\-section\-headers\fR|\fB\-\-headers\fR] + [\fB\-i\fR|\fB\-\-info\fR] + [\fB\-j\fR \fIsection\fR|\fB\-\-section=\fR\fIsection\fR] + [\fB\-l\fR|\fB\-\-line\-numbers\fR] + [\fB\-S\fR|\fB\-\-source\fR] + [\fB\-m\fR \fImachine\fR|\fB\-\-architecture=\fR\fImachine\fR] + [\fB\-M\fR \fIoptions\fR|\fB\-\-disassembler\-options=\fR\fIoptions\fR] + [\fB\-p\fR|\fB\-\-private\-headers\fR] + [\fB\-P\fR \fIoptions\fR|\fB\-\-private=\fR\fIoptions\fR] + [\fB\-r\fR|\fB\-\-reloc\fR] + [\fB\-R\fR|\fB\-\-dynamic\-reloc\fR] + [\fB\-s\fR|\fB\-\-full\-contents\fR] + [\fB\-W[lLiaprmfFsoRt]\fR| + \fB\-\-dwarf\fR[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] + [\fB\-G\fR|\fB\-\-stabs\fR] + [\fB\-t\fR|\fB\-\-syms\fR] + [\fB\-T\fR|\fB\-\-dynamic\-syms\fR] + [\fB\-x\fR|\fB\-\-all\-headers\fR] + [\fB\-w\fR|\fB\-\-wide\fR] + [\fB\-\-start\-address=\fR\fIaddress\fR] + [\fB\-\-stop\-address=\fR\fIaddress\fR] + [\fB\-\-prefix\-addresses\fR] + [\fB\-\-[no\-]show\-raw\-insn\fR] + [\fB\-\-adjust\-vma=\fR\fIoffset\fR] + [\fB\-\-special\-syms\fR] + [\fB\-\-prefix=\fR\fIprefix\fR] + [\fB\-\-prefix\-strip=\fR\fIlevel\fR] + [\fB\-\-insn\-width=\fR\fIwidth\fR] + [\fB\-V\fR|\fB\-\-version\fR] + [\fB\-H\fR|\fB\-\-help\fR] + \fIobjfile\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBobjdump\fR displays information about one or more object files. +The options control what particular information to display. This +information is mostly useful to programmers who are working on the +compilation tools, as opposed to programmers who just want their +program to compile and work. +.PP +\&\fIobjfile\fR... are the object files to be examined. When you +specify archives, \fBobjdump\fR shows information on each of the member +object files. +.SH "OPTIONS" +.IX Header "OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. At least one option from the list +\&\fB\-a,\-d,\-D,\-e,\-f,\-g,\-G,\-h,\-H,\-p,\-P,\-r,\-R,\-s,\-S,\-t,\-T,\-V,\-x\fR must be given. +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-archive\-header\fR" 4 +.IX Item "--archive-header" +.PD +If any of the \fIobjfile\fR files are archives, display the archive +header information (in a format similar to \fBls \-l\fR). Besides the +information you could list with \fBar tv\fR, \fBobjdump \-a\fR shows +the object file format of each archive member. +.IP "\fB\-\-adjust\-vma=\fR\fIoffset\fR" 4 +.IX Item "--adjust-vma=offset" +When dumping information, first add \fIoffset\fR to all the section +addresses. This is useful if the section addresses do not correspond to +the symbol table, which can happen when putting sections at particular +addresses when using a format which can not represent section addresses, +such as a.out. +.IP "\fB\-b\fR \fIbfdname\fR" 4 +.IX Item "-b bfdname" +.PD 0 +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +.PD +Specify that the object-code format for the object files is +\&\fIbfdname\fR. This option may not be necessary; \fIobjdump\fR can +automatically recognize many formats. +.Sp +For example, +.Sp +.Vb 1 +\& objdump \-b oasys \-m vax \-h fu.o +.Ve +.Sp +displays summary information from the section headers (\fB\-h\fR) of +\&\fIfu.o\fR, which is explicitly identified (\fB\-m\fR) as a \s-1VAX\s0 object +file in the format produced by Oasys compilers. You can list the +formats available with the \fB\-i\fR option. +.IP "\fB\-C\fR" 4 +.IX Item "-C" +.PD 0 +.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4 +.IX Item "--demangle[=style]" +.PD +Decode (\fIdemangle\fR) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes \*(C+ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-\-debugging\fR" 4 +.IX Item "--debugging" +.PD +Display debugging information. This attempts to parse \s-1STABS\s0 and \s-1IEEE\s0 +debugging format information stored in the file and print it out using +a C like syntax. If neither of these formats are found this option +falls back on the \fB\-W\fR option to print any \s-1DWARF\s0 information in +the file. +.IP "\fB\-e\fR" 4 +.IX Item "-e" +.PD 0 +.IP "\fB\-\-debugging\-tags\fR" 4 +.IX Item "--debugging-tags" +.PD +Like \fB\-g\fR, but the information is generated in a format compatible +with ctags tool. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-\-disassemble\fR" 4 +.IX Item "--disassemble" +.PD +Display the assembler mnemonics for the machine instructions from +\&\fIobjfile\fR. This option only disassembles those sections which are +expected to contain instructions. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +.PD 0 +.IP "\fB\-\-disassemble\-all\fR" 4 +.IX Item "--disassemble-all" +.PD +Like \fB\-d\fR, but disassemble the contents of all sections, not just +those expected to contain instructions. +.Sp +If the target is an \s-1ARM\s0 architecture this switch also has the effect +of forcing the disassembler to decode pieces of data found in code +sections as if they were instructions. +.IP "\fB\-\-prefix\-addresses\fR" 4 +.IX Item "--prefix-addresses" +When disassembling, print the complete address on each line. This is +the older disassembly format. +.IP "\fB\-EB\fR" 4 +.IX Item "-EB" +.PD 0 +.IP "\fB\-EL\fR" 4 +.IX Item "-EL" +.IP "\fB\-\-endian={big|little}\fR" 4 +.IX Item "--endian={big|little}" +.PD +Specify the endianness of the object files. This only affects +disassembly. This can be useful when disassembling a file format which +does not describe endianness information, such as S\-records. +.IP "\fB\-f\fR" 4 +.IX Item "-f" +.PD 0 +.IP "\fB\-\-file\-headers\fR" 4 +.IX Item "--file-headers" +.PD +Display summary information from the overall header of +each of the \fIobjfile\fR files. +.IP "\fB\-F\fR" 4 +.IX Item "-F" +.PD 0 +.IP "\fB\-\-file\-offsets\fR" 4 +.IX Item "--file-offsets" +.PD +When disassembling sections, whenever a symbol is displayed, also +display the file offset of the region of data that is about to be +dumped. If zeroes are being skipped, then when disassembly resumes, +tell the user how many zeroes were skipped and the file offset of the +location from where the disassembly resumes. When dumping sections, +display the file offset of the location from where the dump starts. +.IP "\fB\-\-file\-start\-context\fR" 4 +.IX Item "--file-start-context" +Specify that when displaying interlisted source code/disassembly +(assumes \fB\-S\fR) from a file that has not yet been displayed, extend the +context to the start of the file. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-section\-headers\fR" 4 +.IX Item "--section-headers" +.IP "\fB\-\-headers\fR" 4 +.IX Item "--headers" +.PD +Display summary information from the section headers of the +object file. +.Sp +File segments may be relocated to nonstandard addresses, for example by +using the \fB\-Ttext\fR, \fB\-Tdata\fR, or \fB\-Tbss\fR options to +\&\fBld\fR. However, some object file formats, such as a.out, do not +store the starting address of the file segments. In those situations, +although \fBld\fR relocates the sections correctly, using \fBobjdump +\&\-h\fR to list the file section headers cannot show the correct addresses. +Instead, it shows the usual addresses, which are implicit for the +target. +.IP "\fB\-H\fR" 4 +.IX Item "-H" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Print a summary of the options to \fBobjdump\fR and exit. +.IP "\fB\-i\fR" 4 +.IX Item "-i" +.PD 0 +.IP "\fB\-\-info\fR" 4 +.IX Item "--info" +.PD +Display a list showing all architectures and object formats available +for specification with \fB\-b\fR or \fB\-m\fR. +.IP "\fB\-j\fR \fIname\fR" 4 +.IX Item "-j name" +.PD 0 +.IP "\fB\-\-section=\fR\fIname\fR" 4 +.IX Item "--section=name" +.PD +Display information only for section \fIname\fR. +.IP "\fB\-l\fR" 4 +.IX Item "-l" +.PD 0 +.IP "\fB\-\-line\-numbers\fR" 4 +.IX Item "--line-numbers" +.PD +Label the display (using debugging information) with the filename and +source line numbers corresponding to the object code or relocs shown. +Only useful with \fB\-d\fR, \fB\-D\fR, or \fB\-r\fR. +.IP "\fB\-m\fR \fImachine\fR" 4 +.IX Item "-m machine" +.PD 0 +.IP "\fB\-\-architecture=\fR\fImachine\fR" 4 +.IX Item "--architecture=machine" +.PD +Specify the architecture to use when disassembling object files. This +can be useful when disassembling object files which do not describe +architecture information, such as S\-records. You can list the available +architectures with the \fB\-i\fR option. +.Sp +If the target is an \s-1ARM\s0 architecture then this switch has an +additional effect. It restricts the disassembly to only those +instructions supported by the architecture specified by \fImachine\fR. +If it is necessary to use this switch because the input file does not +contain any architecture information, but it is also desired to +disassemble all the instructions use \fB\-marm\fR. +.IP "\fB\-M\fR \fIoptions\fR" 4 +.IX Item "-M options" +.PD 0 +.IP "\fB\-\-disassembler\-options=\fR\fIoptions\fR" 4 +.IX Item "--disassembler-options=options" +.PD +Pass target specific information to the disassembler. Only supported on +some targets. If it is necessary to specify more than one +disassembler option then multiple \fB\-M\fR options can be used or +can be placed together into a comma separated list. +.Sp +If the target is an \s-1ARM\s0 architecture then this switch can be used to +select which register name set is used during disassembler. Specifying +\&\fB\-M reg-names-std\fR (the default) will select the register names as +used in \s-1ARM\s0's instruction set documentation, but with register 13 called +\&'sp', register 14 called 'lr' and register 15 called 'pc'. Specifying +\&\fB\-M reg-names-apcs\fR will select the name set used by the \s-1ARM\s0 +Procedure Call Standard, whilst specifying \fB\-M reg-names-raw\fR will +just use \fBr\fR followed by the register number. +.Sp +There are also two variants on the \s-1APCS\s0 register naming scheme enabled +by \fB\-M reg-names-atpcs\fR and \fB\-M reg-names-special-atpcs\fR which +use the ARM/Thumb Procedure Call Standard naming conventions. (Either +with the normal register names or the special register names). +.Sp +This option can also be used for \s-1ARM\s0 architectures to force the +disassembler to interpret all instructions as Thumb instructions by +using the switch \fB\-\-disassembler\-options=force\-thumb\fR. This can be +useful when attempting to disassemble thumb code produced by other +compilers. +.Sp +For the x86, some of the options duplicate functions of the \fB\-m\fR +switch, but allow finer grained control. Multiple selections from the +following may be specified as a comma separated string. +\&\fBx86\-64\fR, \fBi386\fR and \fBi8086\fR select disassembly for +the given architecture. \fBintel\fR and \fBatt\fR select between +intel syntax mode and \s-1AT&T\s0 syntax mode. +\&\fBintel-mnemonic\fR and \fBatt-mnemonic\fR select between +intel mnemonic mode and \s-1AT&T\s0 mnemonic mode. \fBintel-mnemonic\fR +implies \fBintel\fR and \fBatt-mnemonic\fR implies \fBatt\fR. +\&\fBaddr64\fR, \fBaddr32\fR, +\&\fBaddr16\fR, \fBdata32\fR and \fBdata16\fR specify the default +address size and operand size. These four options will be overridden if +\&\fBx86\-64\fR, \fBi386\fR or \fBi8086\fR appear later in the +option string. Lastly, \fBsuffix\fR, when in \s-1AT&T\s0 mode, +instructs the disassembler to print a mnemonic suffix even when the +suffix could be inferred by the operands. +.Sp +For PowerPC, \fBbooke\fR controls the disassembly of BookE +instructions. \fB32\fR and \fB64\fR select PowerPC and +PowerPC64 disassembly, respectively. \fBe300\fR selects +disassembly for the e300 family. \fB440\fR selects disassembly for +the PowerPC 440. \fBppcps\fR selects disassembly for the paired +single instructions of the \s-1PPC750CL.\s0 +.Sp +For \s-1MIPS,\s0 this option controls the printing of instruction mnemonic +names and register names in disassembled instructions. Multiple +selections from the following may be specified as a comma separated +string, and invalid options are ignored: +.RS 4 +.ie n .IP """no\-aliases""" 4 +.el .IP "\f(CWno\-aliases\fR" 4 +.IX Item "no-aliases" +Print the 'raw' instruction mnemonic instead of some pseudo +instruction mnemonic. I.e., print 'daddu' or 'or' instead of 'move', +\&'sll' instead of 'nop', etc. +.ie n .IP """msa""" 4 +.el .IP "\f(CWmsa\fR" 4 +.IX Item "msa" +Disassemble \s-1MSA\s0 instructions. +.ie n .IP """virt""" 4 +.el .IP "\f(CWvirt\fR" 4 +.IX Item "virt" +Disassemble the virtualization \s-1ASE\s0 instructions. +.ie n .IP """xpa""" 4 +.el .IP "\f(CWxpa\fR" 4 +.IX Item "xpa" +Disassemble the eXtended Physical Address (\s-1XPA\s0) \s-1ASE\s0 instructions. +.ie n .IP """gpr\-names=\f(CIABI\f(CW""" 4 +.el .IP "\f(CWgpr\-names=\f(CIABI\f(CW\fR" 4 +.IX Item "gpr-names=ABI" +Print \s-1GPR \s0(general-purpose register) names as appropriate +for the specified \s-1ABI. \s0 By default, \s-1GPR\s0 names are selected according to +the \s-1ABI\s0 of the binary being disassembled. +.ie n .IP """fpr\-names=\f(CIABI\f(CW""" 4 +.el .IP "\f(CWfpr\-names=\f(CIABI\f(CW\fR" 4 +.IX Item "fpr-names=ABI" +Print \s-1FPR \s0(floating-point register) names as +appropriate for the specified \s-1ABI. \s0 By default, \s-1FPR\s0 numbers are printed +rather than names. +.ie n .IP """cp0\-names=\f(CIARCH\f(CW""" 4 +.el .IP "\f(CWcp0\-names=\f(CIARCH\f(CW\fR" 4 +.IX Item "cp0-names=ARCH" +Print \s-1CP0 \s0(system control coprocessor; coprocessor 0) register names +as appropriate for the \s-1CPU\s0 or architecture specified by +\&\fI\s-1ARCH\s0\fR. By default, \s-1CP0\s0 register names are selected according to +the architecture and \s-1CPU\s0 of the binary being disassembled. +.ie n .IP """hwr\-names=\f(CIARCH\f(CW""" 4 +.el .IP "\f(CWhwr\-names=\f(CIARCH\f(CW\fR" 4 +.IX Item "hwr-names=ARCH" +Print \s-1HWR \s0(hardware register, used by the \f(CW\*(C`rdhwr\*(C'\fR instruction) names +as appropriate for the \s-1CPU\s0 or architecture specified by +\&\fI\s-1ARCH\s0\fR. By default, \s-1HWR\s0 names are selected according to +the architecture and \s-1CPU\s0 of the binary being disassembled. +.ie n .IP """reg\-names=\f(CIABI\f(CW""" 4 +.el .IP "\f(CWreg\-names=\f(CIABI\f(CW\fR" 4 +.IX Item "reg-names=ABI" +Print \s-1GPR\s0 and \s-1FPR\s0 names as appropriate for the selected \s-1ABI.\s0 +.ie n .IP """reg\-names=\f(CIARCH\f(CW""" 4 +.el .IP "\f(CWreg\-names=\f(CIARCH\f(CW\fR" 4 +.IX Item "reg-names=ARCH" +Print CPU-specific register names (\s-1CP0\s0 register and \s-1HWR\s0 names) +as appropriate for the selected \s-1CPU\s0 or architecture. +.RE +.RS 4 +.Sp +For any of the options listed above, \fI\s-1ABI\s0\fR or +\&\fI\s-1ARCH\s0\fR may be specified as \fBnumeric\fR to have numbers printed +rather than names, for the selected types of registers. +You can list the available values of \fI\s-1ABI\s0\fR and \fI\s-1ARCH\s0\fR using +the \fB\-\-help\fR option. +.Sp +For \s-1VAX,\s0 you can specify function entry addresses with \fB\-M +entry:0xf00ba\fR. You can use this multiple times to properly +disassemble \s-1VAX\s0 binary files that don't contain symbol tables (like +\&\s-1ROM\s0 dumps). In these cases, the function entry mask would otherwise +be decoded as \s-1VAX\s0 instructions, which would probably lead the rest +of the function being wrongly disassembled. +.RE +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-private\-headers\fR" 4 +.IX Item "--private-headers" +.PD +Print information that is specific to the object file format. The exact +information printed depends upon the object file format. For some +object file formats, no additional information is printed. +.IP "\fB\-P\fR \fIoptions\fR" 4 +.IX Item "-P options" +.PD 0 +.IP "\fB\-\-private=\fR\fIoptions\fR" 4 +.IX Item "--private=options" +.PD +Print information that is specific to the object file format. The +argument \fIoptions\fR is a comma separated list that depends on the +format (the lists of options is displayed with the help). +.Sp +For \s-1XCOFF,\s0 the available options are: \fBheader\fR, \fBaout\fR, +\&\fBsections\fR, \fBsyms\fR, \fBrelocs\fR, \fBlineno\fR, +\&\fBloader\fR, \fBexcept\fR, \fBtypchk\fR, \fBtraceback\fR, +\&\fBtoc\fR and \fBldinfo\fR. +.IP "\fB\-r\fR" 4 +.IX Item "-r" +.PD 0 +.IP "\fB\-\-reloc\fR" 4 +.IX Item "--reloc" +.PD +Print the relocation entries of the file. If used with \fB\-d\fR or +\&\fB\-D\fR, the relocations are printed interspersed with the +disassembly. +.IP "\fB\-R\fR" 4 +.IX Item "-R" +.PD 0 +.IP "\fB\-\-dynamic\-reloc\fR" 4 +.IX Item "--dynamic-reloc" +.PD +Print the dynamic relocation entries of the file. This is only +meaningful for dynamic objects, such as certain types of shared +libraries. As for \fB\-r\fR, if used with \fB\-d\fR or +\&\fB\-D\fR, the relocations are printed interspersed with the +disassembly. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-full\-contents\fR" 4 +.IX Item "--full-contents" +.PD +Display the full contents of any sections requested. By default all +non-empty sections are displayed. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-source\fR" 4 +.IX Item "--source" +.PD +Display source code intermixed with disassembly, if possible. Implies +\&\fB\-d\fR. +.IP "\fB\-\-prefix=\fR\fIprefix\fR" 4 +.IX Item "--prefix=prefix" +Specify \fIprefix\fR to add to the absolute paths when used with +\&\fB\-S\fR. +.IP "\fB\-\-prefix\-strip=\fR\fIlevel\fR" 4 +.IX Item "--prefix-strip=level" +Indicate how many initial directory names to strip off the hardwired +absolute paths. It has no effect without \fB\-\-prefix=\fR\fIprefix\fR. +.IP "\fB\-\-show\-raw\-insn\fR" 4 +.IX Item "--show-raw-insn" +When disassembling instructions, print the instruction in hex as well as +in symbolic form. This is the default except when +\&\fB\-\-prefix\-addresses\fR is used. +.IP "\fB\-\-no\-show\-raw\-insn\fR" 4 +.IX Item "--no-show-raw-insn" +When disassembling instructions, do not print the instruction bytes. +This is the default when \fB\-\-prefix\-addresses\fR is used. +.IP "\fB\-\-insn\-width=\fR\fIwidth\fR" 4 +.IX Item "--insn-width=width" +Display \fIwidth\fR bytes on a single line when disassembling +instructions. +.IP "\fB\-W[lLiaprmfFsoRt]\fR" 4 +.IX Item "-W[lLiaprmfFsoRt]" +.PD 0 +.IP "\fB\-\-dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]\fR" 4 +.IX Item "--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]" +.PD +Displays the contents of the debug sections in the file, if any are +present. If one of the optional letters or words follows the switch +then only data found in those specific sections will be dumped. +.Sp +Note that there is no single letter option to display the content of +trace sections or .gdb_index. +.Sp +Note: the output from the \fB=info\fR option can also be affected +by the options \fB\-\-dwarf\-depth\fR, the \fB\-\-dwarf\-start\fR and +the \fB\-\-dwarf\-check\fR. +.IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4 +.IX Item "--dwarf-depth=n" +Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children. +This is only useful with \fB\-\-dwarf=info\fR. The default is +to print all DIEs; the special value 0 for \fIn\fR will also have this +effect. +.Sp +With a non-zero value for \fIn\fR, DIEs at or deeper than \fIn\fR +levels will not be printed. The range for \fIn\fR is zero-based. +.IP "\fB\-\-dwarf\-start=\fR\fIn\fR" 4 +.IX Item "--dwarf-start=n" +Print only DIEs beginning with the \s-1DIE\s0 numbered \fIn\fR. This is only +useful with \fB\-\-dwarf=info\fR. +.Sp +If specified, this option will suppress printing of any header +information and all DIEs before the \s-1DIE\s0 numbered \fIn\fR. Only +siblings and children of the specified \s-1DIE\s0 will be printed. +.Sp +This can be used in conjunction with \fB\-\-dwarf\-depth\fR. +.IP "\fB\-\-dwarf\-check\fR" 4 +.IX Item "--dwarf-check" +Enable additional checks for consistency of Dwarf information. +.IP "\fB\-G\fR" 4 +.IX Item "-G" +.PD 0 +.IP "\fB\-\-stabs\fR" 4 +.IX Item "--stabs" +.PD +Display the full contents of any sections requested. Display the +contents of the .stab and .stab.index and .stab.excl sections from an +\&\s-1ELF\s0 file. This is only useful on systems (such as Solaris 2.0) in which +\&\f(CW\*(C`.stab\*(C'\fR debugging symbol-table entries are carried in an \s-1ELF\s0 +section. In most other file formats, debugging symbol-table entries are +interleaved with linkage symbols, and are visible in the \fB\-\-syms\fR +output. +.IP "\fB\-\-start\-address=\fR\fIaddress\fR" 4 +.IX Item "--start-address=address" +Start displaying data at the specified address. This affects the output +of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options. +.IP "\fB\-\-stop\-address=\fR\fIaddress\fR" 4 +.IX Item "--stop-address=address" +Stop displaying data at the specified address. This affects the output +of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-syms\fR" 4 +.IX Item "--syms" +.PD +Print the symbol table entries of the file. +This is similar to the information provided by the \fBnm\fR program, +although the display format is different. The format of the output +depends upon the format of the file being dumped, but there are two main +types. One looks like this: +.Sp +.Vb 2 +\& [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss +\& [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred +.Ve +.Sp +where the number inside the square brackets is the number of the entry +in the symbol table, the \fIsec\fR number is the section number, the +\&\fIfl\fR value are the symbol's flag bits, the \fIty\fR number is the +symbol's type, the \fIscl\fR number is the symbol's storage class and +the \fInx\fR value is the number of auxilary entries associated with +the symbol. The last two fields are the symbol's value and its name. +.Sp +The other common output format, usually seen with \s-1ELF\s0 based files, +looks like this: +.Sp +.Vb 2 +\& 00000000 l d .bss 00000000 .bss +\& 00000000 g .text 00000000 fred +.Ve +.Sp +Here the first number is the symbol's value (sometimes refered to as +its address). The next field is actually a set of characters and +spaces indicating the flag bits that are set on the symbol. These +characters are described below. Next is the section with which the +symbol is associated or \fI*ABS*\fR if the section is absolute (ie +not connected with any section), or \fI*UND*\fR if the section is +referenced in the file being dumped, but not defined there. +.Sp +After the section name comes another field, a number, which for common +symbols is the alignment and for other symbol is the size. Finally +the symbol's name is displayed. +.Sp +The flag characters are divided into 7 groups as follows: +.RS 4 +.ie n .IP """l""" 4 +.el .IP "\f(CWl\fR" 4 +.IX Item "l" +.PD 0 +.ie n .IP """g""" 4 +.el .IP "\f(CWg\fR" 4 +.IX Item "g" +.ie n .IP """u""" 4 +.el .IP "\f(CWu\fR" 4 +.IX Item "u" +.ie n .IP """!""" 4 +.el .IP "\f(CW!\fR" 4 +.IX Item "!" +.PD +The symbol is a local (l), global (g), unique global (u), neither +global nor local (a space) or both global and local (!). A +symbol can be neither local or global for a variety of reasons, e.g., +because it is used for debugging, but it is probably an indication of +a bug if it is ever both local and global. Unique global symbols are +a \s-1GNU\s0 extension to the standard set of \s-1ELF\s0 symbol bindings. For such +a symbol the dynamic linker will make sure that in the entire process +there is just one symbol with this name and type in use. +.ie n .IP """w""" 4 +.el .IP "\f(CWw\fR" 4 +.IX Item "w" +The symbol is weak (w) or strong (a space). +.ie n .IP """C""" 4 +.el .IP "\f(CWC\fR" 4 +.IX Item "C" +The symbol denotes a constructor (C) or an ordinary symbol (a space). +.ie n .IP """W""" 4 +.el .IP "\f(CWW\fR" 4 +.IX Item "W" +The symbol is a warning (W) or a normal symbol (a space). A warning +symbol's name is a message to be displayed if the symbol following the +warning symbol is ever referenced. +.ie n .IP """I""" 4 +.el .IP "\f(CWI\fR" 4 +.IX Item "I" +.PD 0 +.ie n .IP """i""" 4 +.el .IP "\f(CWi\fR" 4 +.IX Item "i" +.PD +The symbol is an indirect reference to another symbol (I), a function +to be evaluated during reloc processing (i) or a normal symbol (a +space). +.ie n .IP """d""" 4 +.el .IP "\f(CWd\fR" 4 +.IX Item "d" +.PD 0 +.ie n .IP """D""" 4 +.el .IP "\f(CWD\fR" 4 +.IX Item "D" +.PD +The symbol is a debugging symbol (d) or a dynamic symbol (D) or a +normal symbol (a space). +.ie n .IP """F""" 4 +.el .IP "\f(CWF\fR" 4 +.IX Item "F" +.PD 0 +.ie n .IP """f""" 4 +.el .IP "\f(CWf\fR" 4 +.IX Item "f" +.ie n .IP """O""" 4 +.el .IP "\f(CWO\fR" 4 +.IX Item "O" +.PD +The symbol is the name of a function (F) or a file (f) or an object +(O) or just a normal symbol (a space). +.RE +.RS 4 +.RE +.IP "\fB\-T\fR" 4 +.IX Item "-T" +.PD 0 +.IP "\fB\-\-dynamic\-syms\fR" 4 +.IX Item "--dynamic-syms" +.PD +Print the dynamic symbol table entries of the file. This is only +meaningful for dynamic objects, such as certain types of shared +libraries. This is similar to the information provided by the \fBnm\fR +program when given the \fB\-D\fR (\fB\-\-dynamic\fR) option. +.IP "\fB\-\-special\-syms\fR" 4 +.IX Item "--special-syms" +When displaying symbols include those which the target considers to be +special in some way and which would not normally be of interest to the +user. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Print the version number of \fBobjdump\fR and exit. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-all\-headers\fR" 4 +.IX Item "--all-headers" +.PD +Display all available header information, including the symbol table and +relocation entries. Using \fB\-x\fR is equivalent to specifying all of +\&\fB\-a \-f \-h \-p \-r \-t\fR. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +.PD 0 +.IP "\fB\-\-wide\fR" 4 +.IX Item "--wide" +.PD +Format some lines for output devices that have more than 80 columns. +Also do not truncate symbol names when they are displayed. +.IP "\fB\-z\fR" 4 +.IX Item "-z" +.PD 0 +.IP "\fB\-\-disassemble\-zeroes\fR" 4 +.IX Item "--disassemble-zeroes" +.PD +Normally the disassembly output will skip blocks of zeroes. This +option directs the disassembler to disassemble those blocks, just like +any other data. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fInm\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/ranlib.1 b/binutils/doc/ranlib.1 new file mode 100644 index 00000000000..607af53b73f --- /dev/null +++ b/binutils/doc/ranlib.1 @@ -0,0 +1,227 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "RANLIB 1" +.TH RANLIB 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +ranlib \- generate index to archive. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +ranlib [\fB\-\-plugin\fR \fIname\fR] [\fB\-DhHvVt\fR] \fIarchive\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBranlib\fR generates an index to the contents of an archive and +stores it in the archive. The index lists each symbol defined by a +member of an archive that is a relocatable object file. +.PP +You may use \fBnm \-s\fR or \fBnm \-\-print\-armap\fR to list this index. +.PP +An archive with such an index speeds up linking to the library and +allows routines in the library to call each other without regard to +their placement in the archive. +.PP +The \s-1GNU \s0\fBranlib\fR program is another form of \s-1GNU \s0\fBar\fR; running +\&\fBranlib\fR is completely equivalent to executing \fBar \-s\fR. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-H\fR" 4 +.IX Item "-H" +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Show usage information for \fBranlib\fR. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Show the version number of \fBranlib\fR. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +Operate in \fIdeterministic\fR mode. The symbol map archive member's +header will show zero for the \s-1UID, GID,\s0 and timestamp. When this +option is used, multiple runs will produce identical output files. +.Sp +If \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by +default. It can be disabled with the \fB\-U\fR option, described +below. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +Update the timestamp of the symbol map of an archive. +.IP "\fB\-U\fR" 4 +.IX Item "-U" +Do \fInot\fR operate in \fIdeterministic\fR mode. This is the +inverse of the \fB\-D\fR option, above: the archive index will get +actual \s-1UID, GID,\s0 timestamp, and file mode values. +.Sp +If \fIbinutils\fR was configured \fIwithout\fR +\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by +default. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIar\fR\|(1), \fInm\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/readelf.1 b/binutils/doc/readelf.1 new file mode 100644 index 00000000000..71b97b513aa --- /dev/null +++ b/binutils/doc/readelf.1 @@ -0,0 +1,457 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "READELF 1" +.TH READELF 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +readelf \- Displays information about ELF files. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +readelf [\fB\-a\fR|\fB\-\-all\fR] + [\fB\-h\fR|\fB\-\-file\-header\fR] + [\fB\-l\fR|\fB\-\-program\-headers\fR|\fB\-\-segments\fR] + [\fB\-S\fR|\fB\-\-section\-headers\fR|\fB\-\-sections\fR] + [\fB\-g\fR|\fB\-\-section\-groups\fR] + [\fB\-t\fR|\fB\-\-section\-details\fR] + [\fB\-e\fR|\fB\-\-headers\fR] + [\fB\-s\fR|\fB\-\-syms\fR|\fB\-\-symbols\fR] + [\fB\-\-dyn\-syms\fR] + [\fB\-n\fR|\fB\-\-notes\fR] + [\fB\-r\fR|\fB\-\-relocs\fR] + [\fB\-u\fR|\fB\-\-unwind\fR] + [\fB\-d\fR|\fB\-\-dynamic\fR] + [\fB\-V\fR|\fB\-\-version\-info\fR] + [\fB\-A\fR|\fB\-\-arch\-specific\fR] + [\fB\-D\fR|\fB\-\-use\-dynamic\fR] + [\fB\-x\fR |\fB\-\-hex\-dump=\fR] + [\fB\-p\fR |\fB\-\-string\-dump=\fR] + [\fB\-R\fR |\fB\-\-relocated\-dump=\fR] + [\fB\-c\fR|\fB\-\-archive\-index\fR] + [\fB\-w[lLiaprmfFsoRt]\fR| + \fB\-\-debug\-dump\fR[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] + [\fB\-\-dwarf\-depth=\fR\fIn\fR] + [\fB\-\-dwarf\-start=\fR\fIn\fR] + [\fB\-I\fR|\fB\-\-histogram\fR] + [\fB\-v\fR|\fB\-\-version\fR] + [\fB\-W\fR|\fB\-\-wide\fR] + [\fB\-H\fR|\fB\-\-help\fR] + \fIelffile\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBreadelf\fR displays information about one or more \s-1ELF\s0 format object +files. The options control what particular information to display. +.PP +\&\fIelffile\fR... are the object files to be examined. 32\-bit and +64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files. +.PP +This program performs a similar function to \fBobjdump\fR but it +goes into more detail and it exists independently of the \s-1BFD\s0 +library, so if there is a bug in \s-1BFD\s0 then readelf will not be +affected. +.SH "OPTIONS" +.IX Header "OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. At least one option besides \fB\-v\fR or \fB\-H\fR must be +given. +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-all\fR" 4 +.IX Item "--all" +.PD +Equivalent to specifying \fB\-\-file\-header\fR, +\&\fB\-\-program\-headers\fR, \fB\-\-sections\fR, \fB\-\-symbols\fR, +\&\fB\-\-relocs\fR, \fB\-\-dynamic\fR, \fB\-\-notes\fR and +\&\fB\-\-version\-info\fR. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-file\-header\fR" 4 +.IX Item "--file-header" +.PD +Displays the information contained in the \s-1ELF\s0 header at the start of the +file. +.IP "\fB\-l\fR" 4 +.IX Item "-l" +.PD 0 +.IP "\fB\-\-program\-headers\fR" 4 +.IX Item "--program-headers" +.IP "\fB\-\-segments\fR" 4 +.IX Item "--segments" +.PD +Displays the information contained in the file's segment headers, if it +has any. +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.PD 0 +.IP "\fB\-\-sections\fR" 4 +.IX Item "--sections" +.IP "\fB\-\-section\-headers\fR" 4 +.IX Item "--section-headers" +.PD +Displays the information contained in the file's section headers, if it +has any. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-\-section\-groups\fR" 4 +.IX Item "--section-groups" +.PD +Displays the information contained in the file's section groups, if it +has any. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-section\-details\fR" 4 +.IX Item "--section-details" +.PD +Displays the detailed section information. Implies \fB\-S\fR. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-symbols\fR" 4 +.IX Item "--symbols" +.IP "\fB\-\-syms\fR" 4 +.IX Item "--syms" +.PD +Displays the entries in symbol table section of the file, if it has one. +.IP "\fB\-\-dyn\-syms\fR" 4 +.IX Item "--dyn-syms" +Displays the entries in dynamic symbol table section of the file, if it +has one. +.IP "\fB\-e\fR" 4 +.IX Item "-e" +.PD 0 +.IP "\fB\-\-headers\fR" 4 +.IX Item "--headers" +.PD +Display all the headers in the file. Equivalent to \fB\-h \-l \-S\fR. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-notes\fR" 4 +.IX Item "--notes" +.PD +Displays the contents of the \s-1NOTE\s0 segments and/or sections, if any. +.IP "\fB\-r\fR" 4 +.IX Item "-r" +.PD 0 +.IP "\fB\-\-relocs\fR" 4 +.IX Item "--relocs" +.PD +Displays the contents of the file's relocation section, if it has one. +.IP "\fB\-u\fR" 4 +.IX Item "-u" +.PD 0 +.IP "\fB\-\-unwind\fR" 4 +.IX Item "--unwind" +.PD +Displays the contents of the file's unwind section, if it has one. Only +the unwind sections for \s-1IA64 ELF\s0 files, as well as \s-1ARM\s0 unwind tables +(\f(CW\*(C`.ARM.exidx\*(C'\fR / \f(CW\*(C`.ARM.extab\*(C'\fR) are currently supported. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-\-dynamic\fR" 4 +.IX Item "--dynamic" +.PD +Displays the contents of the file's dynamic section, if it has one. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\-info\fR" 4 +.IX Item "--version-info" +.PD +Displays the contents of the version sections in the file, it they +exist. +.IP "\fB\-A\fR" 4 +.IX Item "-A" +.PD 0 +.IP "\fB\-\-arch\-specific\fR" 4 +.IX Item "--arch-specific" +.PD +Displays architecture-specific information in the file, if there +is any. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +.PD 0 +.IP "\fB\-\-use\-dynamic\fR" 4 +.IX Item "--use-dynamic" +.PD +When displaying symbols, this option makes \fBreadelf\fR use the +symbol hash tables in the file's dynamic section, rather than the +symbol table sections. +.IP "\fB\-x \fR" 4 +.IX Item "-x " +.PD 0 +.IP "\fB\-\-hex\-dump=\fR" 4 +.IX Item "--hex-dump=" +.PD +Displays the contents of the indicated section as a hexadecimal bytes. +A number identifies a particular section by index in the section table; +any other string identifies all sections with that name in the object file. +.IP "\fB\-R \fR" 4 +.IX Item "-R " +.PD 0 +.IP "\fB\-\-relocated\-dump=\fR" 4 +.IX Item "--relocated-dump=" +.PD +Displays the contents of the indicated section as a hexadecimal +bytes. A number identifies a particular section by index in the +section table; any other string identifies all sections with that name +in the object file. The contents of the section will be relocated +before they are displayed. +.IP "\fB\-p \fR" 4 +.IX Item "-p " +.PD 0 +.IP "\fB\-\-string\-dump=\fR" 4 +.IX Item "--string-dump=" +.PD +Displays the contents of the indicated section as printable strings. +A number identifies a particular section by index in the section table; +any other string identifies all sections with that name in the object file. +.IP "\fB\-c\fR" 4 +.IX Item "-c" +.PD 0 +.IP "\fB\-\-archive\-index\fR" 4 +.IX Item "--archive-index" +.PD +Displays the file symbol index information contained in the header part +of binary archives. Performs the same function as the \fBt\fR +command to \fBar\fR, but without using the \s-1BFD\s0 library. +.IP "\fB\-w[lLiaprmfFsoRt]\fR" 4 +.IX Item "-w[lLiaprmfFsoRt]" +.PD 0 +.IP "\fB\-\-debug\-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]\fR" 4 +.IX Item "--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]" +.PD +Displays the contents of the debug sections in the file, if any are +present. If one of the optional letters or words follows the switch +then only data found in those specific sections will be dumped. +.Sp +Note that there is no single letter option to display the content of +trace sections or .gdb_index. +.Sp +Note: the \fB=decodedline\fR option will display the interpreted +contents of a .debug_line section whereas the \fB=rawline\fR option +dumps the contents in a raw format. +.Sp +Note: the \fB=frames\-interp\fR option will display the interpreted +contents of a .debug_frame section whereas the \fB=frames\fR option +dumps the contents in a raw format. +.Sp +Note: the output from the \fB=info\fR option can also be affected +by the options \fB\-\-dwarf\-depth\fR and \fB\-\-dwarf\-start\fR. +.IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4 +.IX Item "--dwarf-depth=n" +Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children. +This is only useful with \fB\-\-debug\-dump=info\fR. The default is +to print all DIEs; the special value 0 for \fIn\fR will also have this +effect. +.Sp +With a non-zero value for \fIn\fR, DIEs at or deeper than \fIn\fR +levels will not be printed. The range for \fIn\fR is zero-based. +.IP "\fB\-\-dwarf\-start=\fR\fIn\fR" 4 +.IX Item "--dwarf-start=n" +Print only DIEs beginning with the \s-1DIE\s0 numbered \fIn\fR. This is only +useful with \fB\-\-debug\-dump=info\fR. +.Sp +If specified, this option will suppress printing of any header +information and all DIEs before the \s-1DIE\s0 numbered \fIn\fR. Only +siblings and children of the specified \s-1DIE\s0 will be printed. +.Sp +This can be used in conjunction with \fB\-\-dwarf\-depth\fR. +.IP "\fB\-I\fR" 4 +.IX Item "-I" +.PD 0 +.IP "\fB\-\-histogram\fR" 4 +.IX Item "--histogram" +.PD +Display a histogram of bucket list lengths when displaying the contents +of the symbol tables. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Display the version number of readelf. +.IP "\fB\-W\fR" 4 +.IX Item "-W" +.PD 0 +.IP "\fB\-\-wide\fR" 4 +.IX Item "--wide" +.PD +Don't break output lines to fit into 80 columns. By default +\&\fBreadelf\fR breaks section header and segment listing lines for +64\-bit \s-1ELF\s0 files, so that they fit into 80 columns. This option causes +\&\fBreadelf\fR to print each section header resp. each segment one a +single line, which is far more readable on terminals wider than 80 columns. +.IP "\fB\-H\fR" 4 +.IX Item "-H" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Display the command line options understood by \fBreadelf\fR. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/size.1 b/binutils/doc/size.1 new file mode 100644 index 00000000000..3b3411a7448 --- /dev/null +++ b/binutils/doc/size.1 @@ -0,0 +1,275 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SIZE 1" +.TH SIZE 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +size \- list section sizes and total size. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +size [\fB\-A\fR|\fB\-B\fR|\fB\-\-format=\fR\fIcompatibility\fR] + [\fB\-\-help\fR] + [\fB\-d\fR|\fB\-o\fR|\fB\-x\fR|\fB\-\-radix=\fR\fInumber\fR] + [\fB\-\-common\fR] + [\fB\-t\fR|\fB\-\-totals\fR] + [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-V\fR|\fB\-\-version\fR] + [\fIobjfile\fR...] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \s-1GNU \s0\fBsize\fR utility lists the section sizes\-\-\-and the total +size\-\-\-for each of the object or archive files \fIobjfile\fR in its +argument list. By default, one line of output is generated for each +object file or each module in an archive. +.PP +\&\fIobjfile\fR... are the object files to be examined. +If none are specified, the file \f(CW\*(C`a.out\*(C'\fR will be used. +.SH "OPTIONS" +.IX Header "OPTIONS" +The command line options have the following meanings: +.IP "\fB\-A\fR" 4 +.IX Item "-A" +.PD 0 +.IP "\fB\-B\fR" 4 +.IX Item "-B" +.IP "\fB\-\-format=\fR\fIcompatibility\fR" 4 +.IX Item "--format=compatibility" +.PD +Using one of these options, you can choose whether the output from \s-1GNU +\&\s0\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR, +or \fB\-\-format=sysv\fR), or Berkeley \fBsize\fR (using \fB\-B\fR, or +\&\fB\-\-format=berkeley\fR). The default is the one-line format similar to +Berkeley's. +.Sp +Here is an example of the Berkeley (default) format of output from +\&\fBsize\fR: +.Sp +.Vb 4 +\& $ size \-\-format=Berkeley ranlib size +\& text data bss dec hex filename +\& 294880 81920 11592 388392 5ed28 ranlib +\& 294880 81920 11888 388688 5ee50 size +.Ve +.Sp +This is the same data, but displayed closer to System V conventions: +.Sp +.Vb 7 +\& $ size \-\-format=SysV ranlib size +\& ranlib : +\& section size addr +\& .text 294880 8192 +\& .data 81920 303104 +\& .bss 11592 385024 +\& Total 388392 +\& +\& +\& size : +\& section size addr +\& .text 294880 8192 +\& .data 81920 303104 +\& .bss 11888 385024 +\& Total 388688 +.Ve +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Show a summary of acceptable arguments and options. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-o\fR" 4 +.IX Item "-o" +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.IP "\fB\-\-radix=\fR\fInumber\fR" 4 +.IX Item "--radix=number" +.PD +Using one of these options, you can control whether the size of each +section is given in decimal (\fB\-d\fR, or \fB\-\-radix=10\fR); octal +(\fB\-o\fR, or \fB\-\-radix=8\fR); or hexadecimal (\fB\-x\fR, or +\&\fB\-\-radix=16\fR). In \fB\-\-radix=\fR\fInumber\fR, only the three +values (8, 10, 16) are supported. The total size is always given in two +radices; decimal and hexadecimal for \fB\-d\fR or \fB\-x\fR output, or +octal and hexadecimal if you're using \fB\-o\fR. +.IP "\fB\-\-common\fR" 4 +.IX Item "--common" +Print total size of common symbols in each file. When using Berkeley +format these are included in the bss size. +.IP "\fB\-t\fR" 4 +.IX Item "-t" +.PD 0 +.IP "\fB\-\-totals\fR" 4 +.IX Item "--totals" +.PD +Show totals of all objects listed (Berkeley format listing mode only). +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +Specify that the object-code format for \fIobjfile\fR is +\&\fIbfdname\fR. This option may not be necessary; \fBsize\fR can +automatically recognize many formats. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Display the version number of \fBsize\fR. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/strings.1 b/binutils/doc/strings.1 new file mode 100644 index 00000000000..516957f38fd --- /dev/null +++ b/binutils/doc/strings.1 @@ -0,0 +1,304 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "STRINGS 1" +.TH STRINGS 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +strings \- print the strings of printable characters in files. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +strings [\fB\-afovV\fR] [\fB\-\fR\fImin-len\fR] + [\fB\-n\fR \fImin-len\fR] [\fB\-\-bytes=\fR\fImin-len\fR] + [\fB\-t\fR \fIradix\fR] [\fB\-\-radix=\fR\fIradix\fR] + [\fB\-e\fR \fIencoding\fR] [\fB\-\-encoding=\fR\fIencoding\fR] + [\fB\-\fR] [\fB\-\-all\fR] [\fB\-\-print\-file\-name\fR] + [\fB\-T\fR \fIbfdname\fR] [\fB\-\-target=\fR\fIbfdname\fR] + [\fB\-w\fR] [\fB\-\-include\-all\-whitespace\fR] + [\fB\-\-help\fR] [\fB\-\-version\fR] \fIfile\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +For each \fIfile\fR given, \s-1GNU \s0\fBstrings\fR prints the +printable character sequences that are at least 4 characters long (or +the number given with the options below) and are followed by an +unprintable character. +.PP +Depending upon how the strings program was configured it will default +to either displaying all the printable sequences that it can find in +each file, or only those sequences that are in loadable, initialized +data sections. If the file type in unrecognizable, or if strings is +reading from stdin then it will always display all of the printable +sequences that it can find. +.PP +For backwards compatibility any file that occurs after a command line +option of just \fB\-\fR will also be scanned in full, regardless of +the presence of any \fB\-d\fR option. +.PP +\&\fBstrings\fR is mainly useful for determining the contents of +non-text files. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-all\fR" 4 +.IX Item "--all" +.IP "\fB\-\fR" 4 +.IX Item "-" +.PD +Scan the whole file, regardless of what sections it contains or +whether those sections are loaded or initialized. Normally this is +the default behaviour, but strings can be configured so that the +\&\fB\-d\fR is the default instead. +.Sp +The \fB\-\fR option is position dependent and forces strings to +perform full scans of any file that is mentioned after the \fB\-\fR +on the command line, even if the \fB\-d\fR option has been +specified. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-\-data\fR" 4 +.IX Item "--data" +.PD +Only print strings from initialized, loaded data sections in the +file. This may reduce the amount of garbage in the output, but it +also exposes the strings program to any security flaws that may be +present in the \s-1BFD\s0 library used to scan and load sections. Strings +can be configured so that this option is the default behaviour. In +such cases the \fB\-a\fR option can be used to avoid using the \s-1BFD\s0 +library and instead just print all of the strings found in the file. +.IP "\fB\-f\fR" 4 +.IX Item "-f" +.PD 0 +.IP "\fB\-\-print\-file\-name\fR" 4 +.IX Item "--print-file-name" +.PD +Print the name of the file before each string. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Print a summary of the program usage on the standard output and exit. +.IP "\fB\-\fR\fImin-len\fR" 4 +.IX Item "-min-len" +.PD 0 +.IP "\fB\-n\fR \fImin-len\fR" 4 +.IX Item "-n min-len" +.IP "\fB\-\-bytes=\fR\fImin-len\fR" 4 +.IX Item "--bytes=min-len" +.PD +Print sequences of characters that are at least \fImin-len\fR characters +long, instead of the default 4. +.IP "\fB\-o\fR" 4 +.IX Item "-o" +Like \fB\-t o\fR. Some other versions of \fBstrings\fR have \fB\-o\fR +act like \fB\-t d\fR instead. Since we can not be compatible with both +ways, we simply chose one. +.IP "\fB\-t\fR \fIradix\fR" 4 +.IX Item "-t radix" +.PD 0 +.IP "\fB\-\-radix=\fR\fIradix\fR" 4 +.IX Item "--radix=radix" +.PD +Print the offset within the file before each string. The single +character argument specifies the radix of the offset\-\-\-\fBo\fR for +octal, \fBx\fR for hexadecimal, or \fBd\fR for decimal. +.IP "\fB\-e\fR \fIencoding\fR" 4 +.IX Item "-e encoding" +.PD 0 +.IP "\fB\-\-encoding=\fR\fIencoding\fR" 4 +.IX Item "--encoding=encoding" +.PD +Select the character encoding of the strings that are to be found. +Possible values for \fIencoding\fR are: \fBs\fR = single\-7\-bit\-byte +characters (\s-1ASCII, ISO 8859,\s0 etc., default), \fBS\fR = +single\-8\-bit\-byte characters, \fBb\fR = 16\-bit bigendian, \fBl\fR = +16\-bit littleendian, \fBB\fR = 32\-bit bigendian, \fBL\fR = 32\-bit +littleendian. Useful for finding wide character strings. (\fBl\fR +and \fBb\fR apply to, for example, Unicode \s-1UTF\-16/UCS\-2\s0 encodings). +.IP "\fB\-T\fR \fIbfdname\fR" 4 +.IX Item "-T bfdname" +.PD 0 +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +.PD +Specify an object code format other than your system's default format. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Print the program version number on the standard output and exit. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +.PD 0 +.IP "\fB\-\-include\-all\-whitespace\fR" 4 +.IX Item "--include-all-whitespace" +.PD +By default tab and space characters are included in the strings that +are displayed, but other whitespace characters, such a newlines and +carriage returns, are not. The \fB\-w\fR option changes this so +that all whitespace characters are considered to be part of a string. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), \fIreadelf\fR\|(1) +and the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/strip.1 b/binutils/doc/strip.1 new file mode 100644 index 00000000000..e42487c06f7 --- /dev/null +++ b/binutils/doc/strip.1 @@ -0,0 +1,436 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "STRIP 1" +.TH STRIP 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +strip \- Discard symbols from object files. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +strip [\fB\-F\fR \fIbfdname\fR |\fB\-\-target=\fR\fIbfdname\fR] + [\fB\-I\fR \fIbfdname\fR |\fB\-\-input\-target=\fR\fIbfdname\fR] + [\fB\-O\fR \fIbfdname\fR |\fB\-\-output\-target=\fR\fIbfdname\fR] + [\fB\-s\fR|\fB\-\-strip\-all\fR] + [\fB\-S\fR|\fB\-g\fR|\fB\-d\fR|\fB\-\-strip\-debug\fR] + [\fB\-\-strip\-dwo\fR] + [\fB\-K\fR \fIsymbolname\fR |\fB\-\-keep\-symbol=\fR\fIsymbolname\fR] + [\fB\-N\fR \fIsymbolname\fR |\fB\-\-strip\-symbol=\fR\fIsymbolname\fR] + [\fB\-w\fR|\fB\-\-wildcard\fR] + [\fB\-x\fR|\fB\-\-discard\-all\fR] [\fB\-X\fR |\fB\-\-discard\-locals\fR] + [\fB\-R\fR \fIsectionname\fR |\fB\-\-remove\-section=\fR\fIsectionname\fR] + [\fB\-o\fR \fIfile\fR] [\fB\-p\fR|\fB\-\-preserve\-dates\fR] + [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR] + [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\fR] + [\fB\-\-keep\-file\-symbols\fR] + [\fB\-\-only\-keep\-debug\fR] + [\fB\-v\fR |\fB\-\-verbose\fR] [\fB\-V\fR|\fB\-\-version\fR] + [\fB\-\-help\fR] [\fB\-\-info\fR] + \fIobjfile\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1GNU \s0\fBstrip\fR discards all symbols from object files +\&\fIobjfile\fR. The list of object files may include archives. +At least one object file must be given. +.PP +\&\fBstrip\fR modifies the files named in its argument, +rather than writing modified copies under different names. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-F\fR \fIbfdname\fR" 4 +.IX Item "-F bfdname" +.PD 0 +.IP "\fB\-\-target=\fR\fIbfdname\fR" 4 +.IX Item "--target=bfdname" +.PD +Treat the original \fIobjfile\fR as a file with the object +code format \fIbfdname\fR, and rewrite it in the same format. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Show a summary of the options to \fBstrip\fR and exit. +.IP "\fB\-\-info\fR" 4 +.IX Item "--info" +Display a list showing all architectures and object formats available. +.IP "\fB\-I\fR \fIbfdname\fR" 4 +.IX Item "-I bfdname" +.PD 0 +.IP "\fB\-\-input\-target=\fR\fIbfdname\fR" 4 +.IX Item "--input-target=bfdname" +.PD +Treat the original \fIobjfile\fR as a file with the object +code format \fIbfdname\fR. +.IP "\fB\-O\fR \fIbfdname\fR" 4 +.IX Item "-O bfdname" +.PD 0 +.IP "\fB\-\-output\-target=\fR\fIbfdname\fR" 4 +.IX Item "--output-target=bfdname" +.PD +Replace \fIobjfile\fR with a file in the output format \fIbfdname\fR. +.IP "\fB\-R\fR \fIsectionname\fR" 4 +.IX Item "-R sectionname" +.PD 0 +.IP "\fB\-\-remove\-section=\fR\fIsectionname\fR" 4 +.IX Item "--remove-section=sectionname" +.PD +Remove any section named \fIsectionname\fR from the output file. This +option may be given more than once. Note that using this option +inappropriately may make the output file unusable. The wildcard +character \fB*\fR may be given at the end of \fIsectionname\fR. If +so, then any section starting with \fIsectionname\fR will be removed. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-strip\-all\fR" 4 +.IX Item "--strip-all" +.PD +Remove all symbols. +.IP "\fB\-g\fR" 4 +.IX Item "-g" +.PD 0 +.IP "\fB\-S\fR" 4 +.IX Item "-S" +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.IP "\fB\-\-strip\-debug\fR" 4 +.IX Item "--strip-debug" +.PD +Remove debugging symbols only. +.IP "\fB\-\-strip\-dwo\fR" 4 +.IX Item "--strip-dwo" +Remove the contents of all \s-1DWARF \s0.dwo sections, leaving the +remaining debugging sections and all symbols intact. +See the description of this option in the \fBobjcopy\fR section +for more information. +.IP "\fB\-\-strip\-unneeded\fR" 4 +.IX Item "--strip-unneeded" +Remove all symbols that are not needed for relocation processing. +.IP "\fB\-K\fR \fIsymbolname\fR" 4 +.IX Item "-K symbolname" +.PD 0 +.IP "\fB\-\-keep\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--keep-symbol=symbolname" +.PD +When stripping symbols, keep symbol \fIsymbolname\fR even if it would +normally be stripped. This option may be given more than once. +.IP "\fB\-N\fR \fIsymbolname\fR" 4 +.IX Item "-N symbolname" +.PD 0 +.IP "\fB\-\-strip\-symbol=\fR\fIsymbolname\fR" 4 +.IX Item "--strip-symbol=symbolname" +.PD +Remove symbol \fIsymbolname\fR from the source file. This option may be +given more than once, and may be combined with strip options other than +\&\fB\-K\fR. +.IP "\fB\-o\fR \fIfile\fR" 4 +.IX Item "-o file" +Put the stripped output in \fIfile\fR, rather than replacing the +existing file. When this argument is used, only one \fIobjfile\fR +argument may be specified. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +.PD 0 +.IP "\fB\-\-preserve\-dates\fR" 4 +.IX Item "--preserve-dates" +.PD +Preserve the access and modification dates of the file. +.IP "\fB\-D\fR" 4 +.IX Item "-D" +.PD 0 +.IP "\fB\-\-enable\-deterministic\-archives\fR" 4 +.IX Item "--enable-deterministic-archives" +.PD +Operate in \fIdeterministic\fR mode. When copying archive members +and writing the archive index, use zero for UIDs, GIDs, timestamps, +and use consistent file modes for all files. +.Sp +If \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default. +It can be disabled with the \fB\-U\fR option, below. +.IP "\fB\-U\fR" 4 +.IX Item "-U" +.PD 0 +.IP "\fB\-\-disable\-deterministic\-archives\fR" 4 +.IX Item "--disable-deterministic-archives" +.PD +Do \fInot\fR operate in \fIdeterministic\fR mode. This is the +inverse of the \fB\-D\fR option, above: when copying archive members +and writing the archive index, use their actual \s-1UID, GID,\s0 timestamp, +and file mode values. +.Sp +This is the default unless \fIbinutils\fR was configured with +\&\fB\-\-enable\-deterministic\-archives\fR. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +.PD 0 +.IP "\fB\-\-wildcard\fR" 4 +.IX Item "--wildcard" +.PD +Permit regular expressions in \fIsymbolname\fRs used in other command +line options. The question mark (?), asterisk (*), backslash (\e) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: +.Sp +.Vb 1 +\& \-w \-K !foo \-K fo* +.Ve +.Sp +would cause strip to only keep symbols that start with the letters +\&\*(L"fo\*(R", but to discard the symbol \*(L"foo\*(R". +.IP "\fB\-x\fR" 4 +.IX Item "-x" +.PD 0 +.IP "\fB\-\-discard\-all\fR" 4 +.IX Item "--discard-all" +.PD +Remove non-global symbols. +.IP "\fB\-X\fR" 4 +.IX Item "-X" +.PD 0 +.IP "\fB\-\-discard\-locals\fR" 4 +.IX Item "--discard-locals" +.PD +Remove compiler-generated local symbols. +(These usually start with \fBL\fR or \fB.\fR.) +.IP "\fB\-\-keep\-file\-symbols\fR" 4 +.IX Item "--keep-file-symbols" +When stripping a file, perhaps with \fB\-\-strip\-debug\fR or +\&\fB\-\-strip\-unneeded\fR, retain any symbols specifying source file names, +which would otherwise get stripped. +.IP "\fB\-\-only\-keep\-debug\fR" 4 +.IX Item "--only-keep-debug" +Strip a file, removing contents of any sections that would not be +stripped by \fB\-\-strip\-debug\fR and leaving the debugging sections +intact. In \s-1ELF\s0 files, this preserves all note sections in the output. +.Sp +The intention is that this option will be used in conjunction with +\&\fB\-\-add\-gnu\-debuglink\fR to create a two part executable. One a +stripped binary which will occupy less space in \s-1RAM\s0 and in a +distribution and the second a debugging information file which is only +needed if debugging abilities are required. The suggested procedure +to create these files is as follows: +.RS 4 +.IP "1." 4 +.IX Item "1." +\&\f(CW\*(C`foo\*(C'\fR then... +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +create a file containing the debugging info. +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +stripped executable. +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +to add a link to the debugging info into the stripped executable. +.RE +.RS 4 +.Sp +Note\-\-\-the choice of \f(CW\*(C`.dbg\*(C'\fR as an extension for the debug info +file is arbitrary. Also the \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR step is +optional. You could instead do this: +.IP "1." 4 +.IX Item "1." +.PD 0 +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.ie n .IP "1." 4 +.el .IP "1." 4 +.IX Item "1." +.RE +.RS 4 +.PD +.Sp +i.e., the file pointed to by the \fB\-\-add\-gnu\-debuglink\fR can be the +full executable. It does not have to be a file created by the +\&\fB\-\-only\-keep\-debug\fR switch. +.Sp +Note\-\-\-this switch is only intended for use on fully linked files. It +does not make sense to use it on object files where the debugging +information may be incomplete. Besides the gnu_debuglink feature +currently only supports the presence of one filename containing +debugging information, not multiple filenames on a one-per-object-file +basis. +.RE +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Show the version number for \fBstrip\fR. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +.PD +Verbose output: list all object files modified. In the case of +archives, \fBstrip \-v\fR lists all members of the archive. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/windmc.1 b/binutils/doc/windmc.1 new file mode 100644 index 00000000000..fca17d6bd2a --- /dev/null +++ b/binutils/doc/windmc.1 @@ -0,0 +1,360 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "WINDMC 1" +.TH WINDMC 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +windmc \- generates Windows message resources. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +windmc [options] input-file +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBwindmc\fR reads message definitions from an input file (.mc) and +translate them into a set of output files. The output files may be of +four kinds: +.ie n .IP """h""" 4 +.el .IP "\f(CWh\fR" 4 +.IX Item "h" +A C header file containing the message definitions. +.ie n .IP """rc""" 4 +.el .IP "\f(CWrc\fR" 4 +.IX Item "rc" +A resource file compilable by the \fBwindres\fR tool. +.ie n .IP """bin""" 4 +.el .IP "\f(CWbin\fR" 4 +.IX Item "bin" +One or more binary files containing the resource data for a specific +message language. +.ie n .IP """dbg""" 4 +.el .IP "\f(CWdbg\fR" 4 +.IX Item "dbg" +A C include file that maps message id's to their symbolic name. +.PP +The exact description of these different formats is available in +documentation from Microsoft. +.PP +When \fBwindmc\fR converts from the \f(CW\*(C`mc\*(C'\fR format to the \f(CW\*(C`bin\*(C'\fR +format, \f(CW\*(C`rc\*(C'\fR, \f(CW\*(C`h\*(C'\fR, and optional \f(CW\*(C`dbg\*(C'\fR it is acting like the +Windows Message Compiler. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-a\fR" 4 +.IX Item "-a" +.PD 0 +.IP "\fB\-\-ascii_in\fR" 4 +.IX Item "--ascii_in" +.PD +Specifies that the input file specified is \s-1ASCII.\s0 This is the default +behaviour. +.IP "\fB\-A\fR" 4 +.IX Item "-A" +.PD 0 +.IP "\fB\-\-ascii_out\fR" 4 +.IX Item "--ascii_out" +.PD +Specifies that messages in the output \f(CW\*(C`bin\*(C'\fR files should be in \s-1ASCII\s0 +format. +.IP "\fB\-b\fR" 4 +.IX Item "-b" +.PD 0 +.IP "\fB\-\-binprefix\fR" 4 +.IX Item "--binprefix" +.PD +Specifies that \f(CW\*(C`bin\*(C'\fR filenames should have to be prefixed by the +basename of the source file. +.IP "\fB\-c\fR" 4 +.IX Item "-c" +.PD 0 +.IP "\fB\-\-customflag\fR" 4 +.IX Item "--customflag" +.PD +Sets the customer bit in all message id's. +.IP "\fB\-C\fR \fIcodepage\fR" 4 +.IX Item "-C codepage" +.PD 0 +.IP "\fB\-\-codepage_in\fR \fIcodepage\fR" 4 +.IX Item "--codepage_in codepage" +.PD +Sets the default codepage to be used to convert input file to \s-1UTF16.\s0 The +default is ocdepage 1252. +.IP "\fB\-d\fR" 4 +.IX Item "-d" +.PD 0 +.IP "\fB\-\-decimal_values\fR" 4 +.IX Item "--decimal_values" +.PD +Outputs the constants in the header file in decimal. Default is using +hexadecimal output. +.IP "\fB\-e\fR \fIext\fR" 4 +.IX Item "-e ext" +.PD 0 +.IP "\fB\-\-extension\fR \fIext\fR" 4 +.IX Item "--extension ext" +.PD +The extension for the header file. The default is .h extension. +.IP "\fB\-F\fR \fItarget\fR" 4 +.IX Item "-F target" +.PD 0 +.IP "\fB\-\-target\fR \fItarget\fR" 4 +.IX Item "--target target" +.PD +Specify the \s-1BFD\s0 format to use for a bin file as output. This +is a \s-1BFD\s0 target name; you can use the \fB\-\-help\fR option to see a list +of supported targets. Normally \fBwindmc\fR will use the default +format, which is the first one listed by the \fB\-\-help\fR option. +.IP "\fB\-h\fR \fIpath\fR" 4 +.IX Item "-h path" +.PD 0 +.IP "\fB\-\-headerdir\fR \fIpath\fR" 4 +.IX Item "--headerdir path" +.PD +The target directory of the generated header file. The default is the +current directory. +.IP "\fB\-H\fR" 4 +.IX Item "-H" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Displays a list of command line options and then exits. +.IP "\fB\-m\fR \fIcharacters\fR" 4 +.IX Item "-m characters" +.PD 0 +.IP "\fB\-\-maxlength\fR \fIcharacters\fR" 4 +.IX Item "--maxlength characters" +.PD +Instructs \fBwindmc\fR to generate a warning if the length +of any message exceeds the number specified. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +.PD 0 +.IP "\fB\-\-nullterminate\fR" 4 +.IX Item "--nullterminate" +.PD +Terminate message text in \f(CW\*(C`bin\*(C'\fR files by zero. By default they are +terminated by \s-1CR/LF.\s0 +.IP "\fB\-o\fR" 4 +.IX Item "-o" +.PD 0 +.IP "\fB\-\-hresult_use\fR" 4 +.IX Item "--hresult_use" +.PD +Not yet implemented. Instructs \f(CW\*(C`windmc\*(C'\fR to generate an \s-1OLE2\s0 header +file, using \s-1HRESULT\s0 definitions. Status codes are used if the flag is not +specified. +.IP "\fB\-O\fR \fIcodepage\fR" 4 +.IX Item "-O codepage" +.PD 0 +.IP "\fB\-\-codepage_out\fR \fIcodepage\fR" 4 +.IX Item "--codepage_out codepage" +.PD +Sets the default codepage to be used to output text files. The default +is ocdepage 1252. +.IP "\fB\-r\fR \fIpath\fR" 4 +.IX Item "-r path" +.PD 0 +.IP "\fB\-\-rcdir\fR \fIpath\fR" 4 +.IX Item "--rcdir path" +.PD +The target directory for the generated \f(CW\*(C`rc\*(C'\fR script and the generated +\&\f(CW\*(C`bin\*(C'\fR files that the resource compiler script includes. The default +is the current directory. +.IP "\fB\-u\fR" 4 +.IX Item "-u" +.PD 0 +.IP "\fB\-\-unicode_in\fR" 4 +.IX Item "--unicode_in" +.PD +Specifies that the input file is \s-1UTF16.\s0 +.IP "\fB\-U\fR" 4 +.IX Item "-U" +.PD 0 +.IP "\fB\-\-unicode_out\fR" 4 +.IX Item "--unicode_out" +.PD +Specifies that messages in the output \f(CW\*(C`bin\*(C'\fR file should be in \s-1UTF16\s0 +format. This is the default behaviour. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD 0 +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +.PD +Enable verbose mode. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Prints the version number for \fBwindmc\fR. +.IP "\fB\-x\fR \fIpath\fR" 4 +.IX Item "-x path" +.PD 0 +.IP "\fB\-\-xdgb\fR \fIpath\fR" 4 +.IX Item "--xdgb path" +.PD +The path of the \f(CW\*(C`dbg\*(C'\fR C include file that maps message id's to the +symbolic name. No such file is generated without specifying the switch. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/doc/windres.1 b/binutils/doc/windres.1 new file mode 100644 index 00000000000..dafbd56457c --- /dev/null +++ b/binutils/doc/windres.1 @@ -0,0 +1,368 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "WINDRES 1" +.TH WINDRES 1 "2014-12-23" "binutils-2.25" "GNU Development Tools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +windres \- manipulate Windows resources. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +windres [options] [input\-file] [output\-file] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBwindres\fR reads resources from an input file and copies them into +an output file. Either file may be in one of three formats: +.ie n .IP """rc""" 4 +.el .IP "\f(CWrc\fR" 4 +.IX Item "rc" +A text format read by the Resource Compiler. +.ie n .IP """res""" 4 +.el .IP "\f(CWres\fR" 4 +.IX Item "res" +A binary format generated by the Resource Compiler. +.ie n .IP """coff""" 4 +.el .IP "\f(CWcoff\fR" 4 +.IX Item "coff" +A \s-1COFF\s0 object or executable. +.PP +The exact description of these different formats is available in +documentation from Microsoft. +.PP +When \fBwindres\fR converts from the \f(CW\*(C`rc\*(C'\fR format to the \f(CW\*(C`res\*(C'\fR +format, it is acting like the Windows Resource Compiler. When +\&\fBwindres\fR converts from the \f(CW\*(C`res\*(C'\fR format to the \f(CW\*(C`coff\*(C'\fR +format, it is acting like the Windows \f(CW\*(C`CVTRES\*(C'\fR program. +.PP +When \fBwindres\fR generates an \f(CW\*(C`rc\*(C'\fR file, the output is similar +but not identical to the format expected for the input. When an input +\&\f(CW\*(C`rc\*(C'\fR file refers to an external filename, an output \f(CW\*(C`rc\*(C'\fR file +will instead include the file contents. +.PP +If the input or output format is not specified, \fBwindres\fR will +guess based on the file name, or, for the input file, the file contents. +A file with an extension of \fI.rc\fR will be treated as an \f(CW\*(C`rc\*(C'\fR +file, a file with an extension of \fI.res\fR will be treated as a +\&\f(CW\*(C`res\*(C'\fR file, and a file with an extension of \fI.o\fR or +\&\fI.exe\fR will be treated as a \f(CW\*(C`coff\*(C'\fR file. +.PP +If no output file is specified, \fBwindres\fR will print the resources +in \f(CW\*(C`rc\*(C'\fR format to standard output. +.PP +The normal use is for you to write an \f(CW\*(C`rc\*(C'\fR file, use \fBwindres\fR +to convert it to a \s-1COFF\s0 object file, and then link the \s-1COFF\s0 file into +your application. This will make the resources described in the +\&\f(CW\*(C`rc\*(C'\fR file available to Windows. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-i\fR \fIfilename\fR" 4 +.IX Item "-i filename" +.PD 0 +.IP "\fB\-\-input\fR \fIfilename\fR" 4 +.IX Item "--input filename" +.PD +The name of the input file. If this option is not used, then +\&\fBwindres\fR will use the first non-option argument as the input file +name. If there are no non-option arguments, then \fBwindres\fR will +read from standard input. \fBwindres\fR can not read a \s-1COFF\s0 file from +standard input. +.IP "\fB\-o\fR \fIfilename\fR" 4 +.IX Item "-o filename" +.PD 0 +.IP "\fB\-\-output\fR \fIfilename\fR" 4 +.IX Item "--output filename" +.PD +The name of the output file. If this option is not used, then +\&\fBwindres\fR will use the first non-option argument, after any used +for the input file name, as the output file name. If there is no +non-option argument, then \fBwindres\fR will write to standard output. +\&\fBwindres\fR can not write a \s-1COFF\s0 file to standard output. Note, +for compatibility with \fBrc\fR the option \fB\-fo\fR is also +accepted, but its use is not recommended. +.IP "\fB\-J\fR \fIformat\fR" 4 +.IX Item "-J format" +.PD 0 +.IP "\fB\-\-input\-format\fR \fIformat\fR" 4 +.IX Item "--input-format format" +.PD +The input format to read. \fIformat\fR may be \fBres\fR, \fBrc\fR, or +\&\fBcoff\fR. If no input format is specified, \fBwindres\fR will +guess, as described above. +.IP "\fB\-O\fR \fIformat\fR" 4 +.IX Item "-O format" +.PD 0 +.IP "\fB\-\-output\-format\fR \fIformat\fR" 4 +.IX Item "--output-format format" +.PD +The output format to generate. \fIformat\fR may be \fBres\fR, +\&\fBrc\fR, or \fBcoff\fR. If no output format is specified, +\&\fBwindres\fR will guess, as described above. +.IP "\fB\-F\fR \fItarget\fR" 4 +.IX Item "-F target" +.PD 0 +.IP "\fB\-\-target\fR \fItarget\fR" 4 +.IX Item "--target target" +.PD +Specify the \s-1BFD\s0 format to use for a \s-1COFF\s0 file as input or output. This +is a \s-1BFD\s0 target name; you can use the \fB\-\-help\fR option to see a list +of supported targets. Normally \fBwindres\fR will use the default +format, which is the first one listed by the \fB\-\-help\fR option. +.IP "\fB\-\-preprocessor\fR \fIprogram\fR" 4 +.IX Item "--preprocessor program" +When \fBwindres\fR reads an \f(CW\*(C`rc\*(C'\fR file, it runs it through the C +preprocessor first. This option may be used to specify the preprocessor +to use, including any leading arguments. The default preprocessor +argument is \f(CW\*(C`gcc \-E \-xc\-header \-DRC_INVOKED\*(C'\fR. +.IP "\fB\-\-preprocessor\-arg\fR \fIoption\fR" 4 +.IX Item "--preprocessor-arg option" +When \fBwindres\fR reads an \f(CW\*(C`rc\*(C'\fR file, it runs it through +the C preprocessor first. This option may be used to specify additional +text to be passed to preprocessor on its command line. +This option can be used multiple times to add multiple options to the +preprocessor command line. +.IP "\fB\-I\fR \fIdirectory\fR" 4 +.IX Item "-I directory" +.PD 0 +.IP "\fB\-\-include\-dir\fR \fIdirectory\fR" 4 +.IX Item "--include-dir directory" +.PD +Specify an include directory to use when reading an \f(CW\*(C`rc\*(C'\fR file. +\&\fBwindres\fR will pass this to the preprocessor as an \fB\-I\fR +option. \fBwindres\fR will also search this directory when looking for +files named in the \f(CW\*(C`rc\*(C'\fR file. If the argument passed to this command +matches any of the supported \fIformats\fR (as described in the \fB\-J\fR +option), it will issue a deprecation warning, and behave just like the +\&\fB\-J\fR option. New programs should not use this behaviour. If a +directory happens to match a \fIformat\fR, simple prefix it with \fB./\fR +to disable the backward compatibility. +.IP "\fB\-D\fR \fItarget\fR" 4 +.IX Item "-D target" +.PD 0 +.IP "\fB\-\-define\fR \fIsym\fR\fB[=\fR\fIval\fR\fB]\fR" 4 +.IX Item "--define sym[=val]" +.PD +Specify a \fB\-D\fR option to pass to the preprocessor when reading an +\&\f(CW\*(C`rc\*(C'\fR file. +.IP "\fB\-U\fR \fItarget\fR" 4 +.IX Item "-U target" +.PD 0 +.IP "\fB\-\-undefine\fR \fIsym\fR" 4 +.IX Item "--undefine sym" +.PD +Specify a \fB\-U\fR option to pass to the preprocessor when reading an +\&\f(CW\*(C`rc\*(C'\fR file. +.IP "\fB\-r\fR" 4 +.IX Item "-r" +Ignored for compatibility with rc. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Enable verbose mode. This tells you what the preprocessor is if you +didn't specify one. +.IP "\fB\-c\fR \fIval\fR" 4 +.IX Item "-c val" +.PD 0 +.IP "\fB\-\-codepage\fR \fIval\fR" 4 +.IX Item "--codepage val" +.PD +Specify the default codepage to use when reading an \f(CW\*(C`rc\*(C'\fR file. +\&\fIval\fR should be a hexadecimal prefixed by \fB0x\fR or decimal +codepage code. The valid range is from zero up to 0xffff, but the +validity of the codepage is host and configuration dependent. +.IP "\fB\-l\fR \fIval\fR" 4 +.IX Item "-l val" +.PD 0 +.IP "\fB\-\-language\fR \fIval\fR" 4 +.IX Item "--language val" +.PD +Specify the default language to use when reading an \f(CW\*(C`rc\*(C'\fR file. +\&\fIval\fR should be a hexadecimal language code. The low eight bits are +the language, and the high eight bits are the sublanguage. +.IP "\fB\-\-use\-temp\-file\fR" 4 +.IX Item "--use-temp-file" +Use a temporary file to instead of using popen to read the output of +the preprocessor. Use this option if the popen implementation is buggy +on the host (eg., certain non-English language versions of Windows 95 and +Windows 98 are known to have buggy popen where the output will instead +go the console). +.IP "\fB\-\-no\-use\-temp\-file\fR" 4 +.IX Item "--no-use-temp-file" +Use popen, not a temporary file, to read the output of the preprocessor. +This is the default behaviour. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +.PD 0 +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +.PD +Prints a usage summary. +.IP "\fB\-V\fR" 4 +.IX Item "-V" +.PD 0 +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +.PD +Prints the version number for \fBwindres\fR. +.IP "\fB\-\-yydebug\fR" 4 +.IX Item "--yydebug" +If \fBwindres\fR is compiled with \f(CW\*(C`YYDEBUG\*(C'\fR defined as \f(CW1\fR, +this will turn on parser debugging. +.IP "\fB@\fR\fIfile\fR" 4 +.IX Item "@file" +Read command-line options from \fIfile\fR. The options read are +inserted in place of the original @\fIfile\fR option. If \fIfile\fR +does not exist, or cannot be read, then the option will be treated +literally, and not removed. +.Sp +Options in \fIfile\fR are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The \fIfile\fR may itself contain additional +@\fIfile\fR options; any such options will be processed recursively. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +the Info entries for \fIbinutils\fR. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (c) 1991\-2014 Free Software Foundation, Inc. +.PP +Permission is granted to copy, distribute and/or modify this document +under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R". diff --git a/binutils/mcparse.c b/binutils/mcparse.c new file mode 100644 index 00000000000..a70730ffd1f --- /dev/null +++ b/binutils/mcparse.c @@ -0,0 +1,2155 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NL = 258, + MCIDENT = 259, + MCFILENAME = 260, + MCLINE = 261, + MCCOMMENT = 262, + MCTOKEN = 263, + MCENDLINE = 264, + MCLANGUAGENAMES = 265, + MCFACILITYNAMES = 266, + MCSEVERITYNAMES = 267, + MCOUTPUTBASE = 268, + MCMESSAGEIDTYPEDEF = 269, + MCLANGUAGE = 270, + MCMESSAGEID = 271, + MCSEVERITY = 272, + MCFACILITY = 273, + MCSYMBOLICNAME = 274, + MCNUMBER = 275 + }; +#endif +/* Tokens. */ +#define NL 258 +#define MCIDENT 259 +#define MCFILENAME 260 +#define MCLINE 261 +#define MCCOMMENT 262 +#define MCTOKEN 263 +#define MCENDLINE 264 +#define MCLANGUAGENAMES 265 +#define MCFACILITYNAMES 266 +#define MCSEVERITYNAMES 267 +#define MCOUTPUTBASE 268 +#define MCMESSAGEIDTYPEDEF 269 +#define MCLANGUAGE 270 +#define MCMESSAGEID 271 +#define MCSEVERITY 272 +#define MCFACILITY 273 +#define MCSYMBOLICNAME 274 +#define MCNUMBER 275 + + + + +/* Copy the first part of user declarations. */ +#line 1 "mcparse.y" + /* mcparse.y -- parser for Windows mc files + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + Parser for Windows mc files + Written by Kai Tietz, Onevision. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +/* This is a parser for Windows rc files. It is based on the parser + by Gunther Ebert . */ + +#include "sysdep.h" +#include "bfd.h" +#include "bucomm.h" +#include "libiberty.h" +#include "windmc.h" +#include "safe-ctype.h" + +static rc_uint_type mc_last_id = 0; +static rc_uint_type mc_sefa_val = 0; +static unichar *mc_last_symbol = NULL; +static const mc_keyword *mc_cur_severity = NULL; +static const mc_keyword *mc_cur_facility = NULL; +static mc_node *cur_node = NULL; + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 44 "mcparse.y" +{ + rc_uint_type ival; + unichar *ustr; + const mc_keyword *tok; + mc_node *nod; +} +/* Line 193 of yacc.c. */ +#line 185 "mcparse.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 198 "mcparse.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 114 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 26 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 29 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 82 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 125 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 275 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 22, 23, 2, 25, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 24, 2, + 2, 21, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 6, 9, 11, 13, 15, 17, + 23, 29, 33, 36, 42, 48, 52, 55, 61, 67, + 71, 74, 78, 82, 86, 89, 91, 94, 96, 101, + 105, 108, 110, 113, 115, 120, 124, 127, 129, 132, + 134, 141, 148, 153, 157, 160, 161, 164, 167, 168, + 173, 177, 181, 184, 185, 187, 190, 193, 194, 197, + 200, 203, 207, 211, 215, 217, 220, 225, 227, 230, + 232, 235, 237, 240, 246, 252, 258, 263, 266, 268, + 270, 271, 272 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 27, 0, -1, 28, -1, -1, 28, 29, -1, 30, + -1, 38, -1, 49, -1, 1, -1, 12, 21, 22, + 31, 23, -1, 12, 21, 22, 31, 1, -1, 12, + 21, 1, -1, 12, 1, -1, 10, 21, 22, 35, + 23, -1, 10, 21, 22, 35, 1, -1, 10, 21, + 1, -1, 10, 1, -1, 11, 21, 22, 33, 23, + -1, 11, 21, 22, 33, 1, -1, 11, 21, 1, + -1, 11, 1, -1, 13, 21, 20, -1, 14, 21, + 4, -1, 14, 21, 1, -1, 14, 1, -1, 32, + -1, 31, 32, -1, 1, -1, 51, 21, 20, 37, + -1, 51, 21, 1, -1, 51, 1, -1, 34, -1, + 33, 34, -1, 1, -1, 51, 21, 20, 37, -1, + 51, 21, 1, -1, 51, 1, -1, 36, -1, 35, + 36, -1, 1, -1, 51, 21, 20, 54, 24, 5, + -1, 51, 21, 20, 54, 24, 1, -1, 51, 21, + 20, 1, -1, 51, 21, 1, -1, 51, 1, -1, + -1, 24, 4, -1, 24, 1, -1, -1, 40, 42, + 39, 46, -1, 16, 21, 41, -1, 16, 21, 1, + -1, 16, 1, -1, -1, 20, -1, 25, 20, -1, + 25, 1, -1, -1, 42, 43, -1, 42, 44, -1, + 42, 45, -1, 17, 21, 8, -1, 18, 21, 8, + -1, 19, 21, 4, -1, 47, -1, 46, 47, -1, + 50, 53, 48, 9, -1, 6, -1, 48, 6, -1, + 1, -1, 48, 1, -1, 7, -1, 49, 7, -1, + 15, 52, 21, 8, 3, -1, 15, 52, 21, 4, + 3, -1, 15, 52, 21, 51, 1, -1, 15, 52, + 21, 1, -1, 15, 1, -1, 4, -1, 8, -1, + -1, -1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 66, 66, 69, 71, 73, 74, 75, 80, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 102, 106, 110, 117, 118, 119, 123, 127, + 128, 132, 133, 134, 138, 142, 143, 147, 148, 149, + 153, 157, 158, 159, 160, 165, 168, 172, 177, 176, + 189, 190, 191, 195, 198, 202, 206, 211, 218, 224, + 230, 238, 246, 254, 261, 262, 266, 276, 280, 292, + 293, 296, 297, 311, 315, 320, 325, 330, 337, 338, + 342, 346, 350 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "NL", "MCIDENT", "MCFILENAME", "MCLINE", + "MCCOMMENT", "MCTOKEN", "MCENDLINE", "MCLANGUAGENAMES", + "MCFACILITYNAMES", "MCSEVERITYNAMES", "MCOUTPUTBASE", + "MCMESSAGEIDTYPEDEF", "MCLANGUAGE", "MCMESSAGEID", "MCSEVERITY", + "MCFACILITY", "MCSYMBOLICNAME", "MCNUMBER", "'='", "'('", "')'", "':'", + "'+'", "$accept", "input", "entities", "entity", "global_section", + "severitymaps", "severitymap", "facilitymaps", "facilitymap", "langmaps", + "langmap", "alias_name", "message", "@1", "id", "vid", "sefasy_def", + "severity", "facility", "symbol", "lang_entities", "lang_entity", + "lines", "comments", "lang", "token", "lex_want_nl", "lex_want_line", + "lex_want_filename", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 61, 40, 41, 58, 43 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 26, 27, 28, 28, 29, 29, 29, 29, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 31, 31, 31, 32, 32, + 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, + 36, 36, 36, 36, 36, 37, 37, 37, 39, 38, + 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, + 42, 43, 44, 45, 46, 46, 47, 48, 48, 48, + 48, 49, 49, 50, 50, 50, 50, 50, 51, 51, + 52, 53, 54 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 0, 2, 1, 1, 1, 1, 5, + 5, 3, 2, 5, 5, 3, 2, 5, 5, 3, + 2, 3, 3, 3, 2, 1, 2, 1, 4, 3, + 2, 1, 2, 1, 4, 3, 2, 1, 2, 1, + 6, 6, 4, 3, 2, 0, 2, 2, 0, 4, + 3, 3, 2, 0, 1, 2, 2, 0, 2, 2, + 2, 3, 3, 3, 1, 2, 4, 1, 2, 1, + 2, 1, 2, 5, 5, 5, 4, 2, 1, 1, + 0, 0, 0 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 3, 0, 0, 1, 8, 71, 0, 0, 0, 0, + 0, 0, 4, 5, 6, 57, 7, 16, 0, 20, + 0, 12, 0, 0, 24, 0, 52, 0, 48, 72, + 15, 0, 19, 0, 11, 0, 21, 23, 22, 51, + 54, 0, 50, 0, 0, 0, 0, 58, 59, 60, + 39, 78, 79, 0, 37, 0, 33, 0, 31, 0, + 27, 0, 25, 0, 56, 55, 0, 0, 0, 0, + 49, 64, 81, 14, 13, 38, 44, 0, 18, 17, + 32, 36, 0, 10, 9, 26, 30, 0, 61, 62, + 63, 77, 0, 65, 0, 43, 0, 35, 45, 29, + 45, 0, 69, 67, 0, 42, 0, 0, 34, 28, + 76, 78, 79, 0, 70, 68, 66, 0, 47, 46, + 74, 73, 75, 41, 40 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 1, 2, 12, 13, 61, 62, 57, 58, 53, + 54, 108, 14, 46, 15, 42, 28, 47, 48, 49, + 70, 71, 104, 16, 72, 55, 92, 94, 106 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -34 +static const yytype_int8 yypact[] = +{ + -34, 62, 70, -34, -34, -34, 15, 22, 30, -15, + 34, 37, -34, -34, -34, -34, 56, -34, 10, -34, + 12, -34, 20, 25, -34, 52, -34, 0, 80, -34, + -34, 71, -34, 84, -34, 86, -34, -34, -34, -34, + -34, 45, -34, 1, 68, 74, 76, -34, -34, -34, + -34, -34, -34, 4, -34, 38, -34, 6, -34, 39, + -34, 29, -34, 40, -34, -34, 93, 94, 99, 43, + 76, -34, -34, -34, -34, -34, -34, 46, -34, -34, + -34, -34, 47, -34, -34, -34, -34, 49, -34, -34, + -34, -34, 83, -34, 3, -34, 2, -34, 81, -34, + 81, 92, -34, -34, 48, -34, 82, 72, -34, -34, + -34, 104, 105, 108, -34, -34, -34, 73, -34, -34, + -34, -34, -34, -34, -34 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -34, -34, -34, -34, -34, -34, 50, -34, 53, -34, + 59, 13, -34, -34, -34, -34, -34, -34, -34, -34, + -34, 44, -34, -34, -34, -33, -34, -34, -34 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -83 +static const yytype_int8 yytable[] = +{ + 59, 39, 63, 105, 102, 73, 23, 78, 51, 103, + 51, 30, 52, 32, 52, -53, 17, -53, -53, -53, + 40, 34, 66, 19, 59, 41, -82, 74, 63, 79, + 83, 21, 31, 51, 33, 24, 18, 52, 26, 76, + 81, 86, 35, 20, 91, 36, 64, 95, 97, 114, + 99, 22, 84, 37, 115, 25, 38, 116, 27, 77, + 82, 87, 3, 29, -80, 65, 96, 98, 113, 100, + -2, 4, 50, 118, 123, 51, 119, 5, 124, 52, + 6, 7, 8, 9, 10, 56, 11, 60, 51, 67, + 51, 69, 52, 110, 52, 68, 111, 43, 44, 45, + 112, 88, 89, 90, 101, 107, 117, 120, 121, 122, + 80, 85, 75, 109, 93 +}; + +static const yytype_uint8 yycheck[] = +{ + 33, 1, 35, 1, 1, 1, 21, 1, 4, 6, + 4, 1, 8, 1, 8, 15, 1, 17, 18, 19, + 20, 1, 21, 1, 57, 25, 24, 23, 61, 23, + 1, 1, 22, 4, 22, 1, 21, 8, 1, 1, + 1, 1, 22, 21, 1, 20, 1, 1, 1, 1, + 1, 21, 23, 1, 6, 21, 4, 9, 21, 21, + 21, 21, 0, 7, 21, 20, 20, 20, 101, 20, + 0, 1, 1, 1, 1, 4, 4, 7, 5, 8, + 10, 11, 12, 13, 14, 1, 16, 1, 4, 21, + 4, 15, 8, 1, 8, 21, 4, 17, 18, 19, + 8, 8, 8, 4, 21, 24, 24, 3, 3, 1, + 57, 61, 53, 100, 70 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 27, 28, 0, 1, 7, 10, 11, 12, 13, + 14, 16, 29, 30, 38, 40, 49, 1, 21, 1, + 21, 1, 21, 21, 1, 21, 1, 21, 42, 7, + 1, 22, 1, 22, 1, 22, 20, 1, 4, 1, + 20, 25, 41, 17, 18, 19, 39, 43, 44, 45, + 1, 4, 8, 35, 36, 51, 1, 33, 34, 51, + 1, 31, 32, 51, 1, 20, 21, 21, 21, 15, + 46, 47, 50, 1, 23, 36, 1, 21, 1, 23, + 34, 1, 21, 1, 23, 32, 1, 21, 8, 8, + 4, 1, 52, 47, 53, 1, 20, 1, 20, 1, + 20, 21, 1, 6, 48, 1, 54, 24, 37, 37, + 1, 4, 8, 51, 1, 6, 9, 24, 1, 4, + 3, 3, 1, 1, 5 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 7: +#line 76 "mcparse.y" + { + cur_node = mc_add_node (); + cur_node->user_text = (yyvsp[(1) - (1)].ustr); + } + break; + + case 8: +#line 80 "mcparse.y" + { mc_fatal ("syntax error"); } + break; + + case 10: +#line 85 "mcparse.y" + { mc_fatal ("missing ')' in SeverityNames"); } + break; + + case 11: +#line 86 "mcparse.y" + { mc_fatal ("missing '(' in SeverityNames"); } + break; + + case 12: +#line 87 "mcparse.y" + { mc_fatal ("missing '=' for SeverityNames"); } + break; + + case 14: +#line 89 "mcparse.y" + { mc_fatal ("missing ')' in LanguageNames"); } + break; + + case 15: +#line 90 "mcparse.y" + { mc_fatal ("missing '(' in LanguageNames"); } + break; + + case 16: +#line 91 "mcparse.y" + { mc_fatal ("missing '=' for LanguageNames"); } + break; + + case 18: +#line 93 "mcparse.y" + { mc_fatal ("missing ')' in FacilityNames"); } + break; + + case 19: +#line 94 "mcparse.y" + { mc_fatal ("missing '(' in FacilityNames"); } + break; + + case 20: +#line 95 "mcparse.y" + { mc_fatal ("missing '=' for FacilityNames"); } + break; + + case 21: +#line 97 "mcparse.y" + { + if ((yyvsp[(3) - (3)].ival) != 10 && (yyvsp[(3) - (3)].ival) != 16) + mc_fatal ("OutputBase allows 10 or 16 as value"); + mcset_out_values_are_decimal = ((yyvsp[(3) - (3)].ival) == 10 ? 1 : 0); + } + break; + + case 22: +#line 103 "mcparse.y" + { + mcset_msg_id_typedef = (yyvsp[(3) - (3)].ustr); + } + break; + + case 23: +#line 107 "mcparse.y" + { + mc_fatal ("MessageIdTypedef expects an identifier"); + } + break; + + case 24: +#line 111 "mcparse.y" + { + mc_fatal ("missing '=' for MessageIdTypedef"); + } + break; + + case 27: +#line 119 "mcparse.y" + { mc_fatal ("severity ident missing"); } + break; + + case 28: +#line 124 "mcparse.y" + { + mc_add_keyword ((yyvsp[(1) - (4)].ustr), MCTOKEN, "severity", (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].ustr)); + } + break; + + case 29: +#line 127 "mcparse.y" + { mc_fatal ("severity number missing"); } + break; + + case 30: +#line 128 "mcparse.y" + { mc_fatal ("severity missing '='"); } + break; + + case 33: +#line 134 "mcparse.y" + { mc_fatal ("missing ident in FacilityNames"); } + break; + + case 34: +#line 139 "mcparse.y" + { + mc_add_keyword ((yyvsp[(1) - (4)].ustr), MCTOKEN, "facility", (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].ustr)); + } + break; + + case 35: +#line 142 "mcparse.y" + { mc_fatal ("facility number missing"); } + break; + + case 36: +#line 143 "mcparse.y" + { mc_fatal ("facility missing '='"); } + break; + + case 39: +#line 149 "mcparse.y" + { mc_fatal ("missing ident in LanguageNames"); } + break; + + case 40: +#line 154 "mcparse.y" + { + mc_add_keyword ((yyvsp[(1) - (6)].ustr), MCTOKEN, "language", (yyvsp[(3) - (6)].ival), (yyvsp[(6) - (6)].ustr)); + } + break; + + case 41: +#line 157 "mcparse.y" + { mc_fatal ("missing filename in LanguageNames"); } + break; + + case 42: +#line 158 "mcparse.y" + { mc_fatal ("missing ':' in LanguageNames"); } + break; + + case 43: +#line 159 "mcparse.y" + { mc_fatal ("missing language code in LanguageNames"); } + break; + + case 44: +#line 160 "mcparse.y" + { mc_fatal ("missing '=' for LanguageNames"); } + break; + + case 45: +#line 165 "mcparse.y" + { + (yyval.ustr) = NULL; + } + break; + + case 46: +#line 169 "mcparse.y" + { + (yyval.ustr) = (yyvsp[(2) - (2)].ustr); + } + break; + + case 47: +#line 172 "mcparse.y" + { mc_fatal ("illegal token in identifier"); (yyval.ustr) = NULL; } + break; + + case 48: +#line 177 "mcparse.y" + { + cur_node = mc_add_node (); + cur_node->symbol = mc_last_symbol; + cur_node->facility = mc_cur_facility; + cur_node->severity = mc_cur_severity; + cur_node->id = ((yyvsp[(1) - (2)].ival) & 0xffffUL); + cur_node->vid = ((yyvsp[(1) - (2)].ival) & 0xffffUL) | mc_sefa_val; + mc_last_id = (yyvsp[(1) - (2)].ival); + } + break; + + case 50: +#line 189 "mcparse.y" + { (yyval.ival) = (yyvsp[(3) - (3)].ival); } + break; + + case 51: +#line 190 "mcparse.y" + { mc_fatal ("missing number in MessageId"); (yyval.ival) = 0; } + break; + + case 52: +#line 191 "mcparse.y" + { mc_fatal ("missing '=' for MessageId"); (yyval.ival) = 0; } + break; + + case 53: +#line 195 "mcparse.y" + { + (yyval.ival) = ++mc_last_id; + } + break; + + case 54: +#line 199 "mcparse.y" + { + (yyval.ival) = (yyvsp[(1) - (1)].ival); + } + break; + + case 55: +#line 203 "mcparse.y" + { + (yyval.ival) = mc_last_id + (yyvsp[(2) - (2)].ival); + } + break; + + case 56: +#line 206 "mcparse.y" + { mc_fatal ("missing number after MessageId '+'"); } + break; + + case 57: +#line 211 "mcparse.y" + { + (yyval.ival) = 0; + mc_sefa_val = (mcset_custom_bit ? 1 : 0) << 29; + mc_last_symbol = NULL; + mc_cur_severity = NULL; + mc_cur_facility = NULL; + } + break; + + case 58: +#line 219 "mcparse.y" + { + if ((yyvsp[(1) - (2)].ival) & 1) + mc_warn (_("duplicate definition of Severity")); + (yyval.ival) = (yyvsp[(1) - (2)].ival) | 1; + } + break; + + case 59: +#line 225 "mcparse.y" + { + if ((yyvsp[(1) - (2)].ival) & 2) + mc_warn (_("duplicate definition of Facility")); + (yyval.ival) = (yyvsp[(1) - (2)].ival) | 2; + } + break; + + case 60: +#line 231 "mcparse.y" + { + if ((yyvsp[(1) - (2)].ival) & 4) + mc_warn (_("duplicate definition of SymbolicName")); + (yyval.ival) = (yyvsp[(1) - (2)].ival) | 4; + } + break; + + case 61: +#line 239 "mcparse.y" + { + mc_sefa_val &= ~ (0x3UL << 30); + mc_sefa_val |= (((yyvsp[(3) - (3)].tok)->nval & 0x3UL) << 30); + mc_cur_severity = (yyvsp[(3) - (3)].tok); + } + break; + + case 62: +#line 247 "mcparse.y" + { + mc_sefa_val &= ~ (0xfffUL << 16); + mc_sefa_val |= (((yyvsp[(3) - (3)].tok)->nval & 0xfffUL) << 16); + mc_cur_facility = (yyvsp[(3) - (3)].tok); + } + break; + + case 63: +#line 255 "mcparse.y" + { + mc_last_symbol = (yyvsp[(3) - (3)].ustr); + } + break; + + case 66: +#line 267 "mcparse.y" + { + mc_node_lang *h; + h = mc_add_node_lang (cur_node, (yyvsp[(1) - (4)].tok), cur_node->vid); + h->message = (yyvsp[(3) - (4)].ustr); + if (mcset_max_message_length != 0 && unichar_len (h->message) > mcset_max_message_length) + mc_warn ("message length to long"); + } + break; + + case 67: +#line 277 "mcparse.y" + { + (yyval.ustr) = (yyvsp[(1) - (1)].ustr); + } + break; + + case 68: +#line 281 "mcparse.y" + { + unichar *h; + rc_uint_type l1,l2; + l1 = unichar_len ((yyvsp[(1) - (2)].ustr)); + l2 = unichar_len ((yyvsp[(2) - (2)].ustr)); + h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1) memcpy (h, (yyvsp[(1) - (2)].ustr), l1 * sizeof (unichar)); + if (l2) memcpy (&h[l1], (yyvsp[(2) - (2)].ustr), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.ustr) = h; + } + break; + + case 69: +#line 292 "mcparse.y" + { mc_fatal ("missing end of message text"); (yyval.ustr) = NULL; } + break; + + case 70: +#line 293 "mcparse.y" + { mc_fatal ("missing end of message text"); (yyval.ustr) = (yyvsp[(1) - (2)].ustr); } + break; + + case 71: +#line 296 "mcparse.y" + { (yyval.ustr) = (yyvsp[(1) - (1)].ustr); } + break; + + case 72: +#line 298 "mcparse.y" + { + unichar *h; + rc_uint_type l1,l2; + l1 = unichar_len ((yyvsp[(1) - (2)].ustr)); + l2 = unichar_len ((yyvsp[(2) - (2)].ustr)); + h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1) memcpy (h, (yyvsp[(1) - (2)].ustr), l1 * sizeof (unichar)); + if (l2) memcpy (&h[l1], (yyvsp[(2) - (2)].ustr), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.ustr) = h; + } + break; + + case 73: +#line 312 "mcparse.y" + { + (yyval.tok) = (yyvsp[(4) - (5)].tok); + } + break; + + case 74: +#line 316 "mcparse.y" + { + (yyval.tok) = NULL; + mc_fatal (_("undeclared language identifier")); + } + break; + + case 75: +#line 321 "mcparse.y" + { + (yyval.tok) = NULL; + mc_fatal ("missing newline after Language"); + } + break; + + case 76: +#line 326 "mcparse.y" + { + (yyval.tok) = NULL; + mc_fatal ("missing ident for Language"); + } + break; + + case 77: +#line 331 "mcparse.y" + { + (yyval.tok) = NULL; + mc_fatal ("missing '=' for Language"); + } + break; + + case 78: +#line 337 "mcparse.y" + { (yyval.ustr) = (yyvsp[(1) - (1)].ustr); } + break; + + case 79: +#line 338 "mcparse.y" + { (yyval.ustr) = (yyvsp[(1) - (1)].tok)->usz; } + break; + + case 80: +#line 342 "mcparse.y" + { mclex_want_nl = 1; } + break; + + case 81: +#line 346 "mcparse.y" + { mclex_want_line = 1; } + break; + + case 82: +#line 350 "mcparse.y" + { mclex_want_filename = 1; } + break; + + +/* Line 1267 of yacc.c. */ +#line 1938 "mcparse.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 353 "mcparse.y" + + +/* Something else. */ + diff --git a/binutils/mcparse.h b/binutils/mcparse.h new file mode 100644 index 00000000000..008aa86c463 --- /dev/null +++ b/binutils/mcparse.h @@ -0,0 +1,103 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NL = 258, + MCIDENT = 259, + MCFILENAME = 260, + MCLINE = 261, + MCCOMMENT = 262, + MCTOKEN = 263, + MCENDLINE = 264, + MCLANGUAGENAMES = 265, + MCFACILITYNAMES = 266, + MCSEVERITYNAMES = 267, + MCOUTPUTBASE = 268, + MCMESSAGEIDTYPEDEF = 269, + MCLANGUAGE = 270, + MCMESSAGEID = 271, + MCSEVERITY = 272, + MCFACILITY = 273, + MCSYMBOLICNAME = 274, + MCNUMBER = 275 + }; +#endif +/* Tokens. */ +#define NL 258 +#define MCIDENT 259 +#define MCFILENAME 260 +#define MCLINE 261 +#define MCCOMMENT 262 +#define MCTOKEN 263 +#define MCENDLINE 264 +#define MCLANGUAGENAMES 265 +#define MCFACILITYNAMES 266 +#define MCSEVERITYNAMES 267 +#define MCOUTPUTBASE 268 +#define MCMESSAGEIDTYPEDEF 269 +#define MCLANGUAGE 270 +#define MCMESSAGEID 271 +#define MCSEVERITY 272 +#define MCFACILITY 273 +#define MCSYMBOLICNAME 274 +#define MCNUMBER 275 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 44 "mcparse.y" +{ + rc_uint_type ival; + unichar *ustr; + const mc_keyword *tok; + mc_node *nod; +} +/* Line 1529 of yacc.c. */ +#line 96 "mcparse.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/nlmheader.c b/binutils/nlmheader.c new file mode 100644 index 00000000000..25e99cd0731 --- /dev/null +++ b/binutils/nlmheader.c @@ -0,0 +1,2697 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + CHECK = 258, + CODESTART = 259, + COPYRIGHT = 260, + CUSTOM = 261, + DATE = 262, + DEBUG_K = 263, + DESCRIPTION = 264, + EXIT = 265, + EXPORT = 266, + FLAG_ON = 267, + FLAG_OFF = 268, + FULLMAP = 269, + HELP = 270, + IMPORT = 271, + INPUT = 272, + MAP = 273, + MESSAGES = 274, + MODULE = 275, + MULTIPLE = 276, + OS_DOMAIN = 277, + OUTPUT = 278, + PSEUDOPREEMPTION = 279, + REENTRANT = 280, + SCREENNAME = 281, + SHARELIB = 282, + STACK = 283, + START = 284, + SYNCHRONIZE = 285, + THREADNAME = 286, + TYPE = 287, + VERBOSE = 288, + VERSIONK = 289, + XDCDATA = 290, + STRING = 291, + QUOTED_STRING = 292 + }; +#endif +/* Tokens. */ +#define CHECK 258 +#define CODESTART 259 +#define COPYRIGHT 260 +#define CUSTOM 261 +#define DATE 262 +#define DEBUG_K 263 +#define DESCRIPTION 264 +#define EXIT 265 +#define EXPORT 266 +#define FLAG_ON 267 +#define FLAG_OFF 268 +#define FULLMAP 269 +#define HELP 270 +#define IMPORT 271 +#define INPUT 272 +#define MAP 273 +#define MESSAGES 274 +#define MODULE 275 +#define MULTIPLE 276 +#define OS_DOMAIN 277 +#define OUTPUT 278 +#define PSEUDOPREEMPTION 279 +#define REENTRANT 280 +#define SCREENNAME 281 +#define SHARELIB 282 +#define STACK 283 +#define START 284 +#define SYNCHRONIZE 285 +#define THREADNAME 286 +#define TYPE 287 +#define VERBOSE 288 +#define VERSIONK 289 +#define XDCDATA 290 +#define STRING 291 +#define QUOTED_STRING 292 + + + + +/* Copy the first part of user declarations. */ +#line 1 "nlmheader.y" +/* nlmheader.y - parse NLM header specification keywords. + Copyright (C) 1993-2014 Free Software Foundation, Inc. + + This file is part of GNU Binutils. + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* Written by Ian Lance Taylor . + + This bison file parses the commands recognized by the NetWare NLM + linker, except for lists of object files. It stores the + information in global variables. + + This implementation is based on the description in the NetWare Tool + Maker Specification manual, edition 1.0. */ + +#include "sysdep.h" +#include "safe-ctype.h" +#include "bfd.h" +#include "nlm/common.h" +#include "nlm/internal.h" +#include "bucomm.h" +#include "nlmconv.h" + +/* Information is stored in the structures pointed to by these + variables. */ + +Nlm_Internal_Fixed_Header *fixed_hdr; +Nlm_Internal_Variable_Header *var_hdr; +Nlm_Internal_Version_Header *version_hdr; +Nlm_Internal_Copyright_Header *copyright_hdr; +Nlm_Internal_Extended_Header *extended_hdr; + +/* Procedure named by CHECK. */ +char *check_procedure; +/* File named by CUSTOM. */ +char *custom_file; +/* Whether to generate debugging information (DEBUG). */ +bfd_boolean debug_info; +/* Procedure named by EXIT. */ +char *exit_procedure; +/* Exported symbols (EXPORT). */ +struct string_list *export_symbols; +/* List of files from INPUT. */ +struct string_list *input_files; +/* Map file name (MAP, FULLMAP). */ +char *map_file; +/* Whether a full map has been requested (FULLMAP). */ +bfd_boolean full_map; +/* File named by HELP. */ +char *help_file; +/* Imported symbols (IMPORT). */ +struct string_list *import_symbols; +/* File named by MESSAGES. */ +char *message_file; +/* Autoload module list (MODULE). */ +struct string_list *modules; +/* File named by OUTPUT. */ +char *output_file; +/* File named by SHARELIB. */ +char *sharelib_file; +/* Start procedure name (START). */ +char *start_procedure; +/* VERBOSE. */ +bfd_boolean verbose; +/* RPC description file (XDCDATA). */ +char *rpc_file; + +/* The number of serious errors that have occurred. */ +int parse_errors; + +/* The current symbol prefix when reading a list of import or export + symbols. */ +static char *symbol_prefix; + +/* Parser error message handler. */ +#define yyerror(msg) nlmheader_error (msg); + +/* Local functions. */ +static int yylex (void); +static void nlmlex_file_push (const char *); +static bfd_boolean nlmlex_file_open (const char *); +static int nlmlex_buf_init (void); +static char nlmlex_buf_add (int); +static long nlmlex_get_number (const char *); +static void nlmheader_identify (void); +static void nlmheader_warn (const char *, int); +static void nlmheader_error (const char *); +static struct string_list * string_list_cons (char *, struct string_list *); +static struct string_list * string_list_append (struct string_list *, + struct string_list *); +static struct string_list * string_list_append1 (struct string_list *, + char *); +static char *xstrdup (const char *); + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 112 "nlmheader.y" +{ + char *string; + struct string_list *list; +} +/* Line 193 of yacc.c. */ +#line 285 "nlmheader.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 298 "nlmheader.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 64 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 73 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 40 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 11 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 52 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 82 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 292 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 38, 39, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 6, 9, 12, 15, 18, 21, + 26, 28, 31, 34, 35, 39, 42, 45, 47, 50, + 53, 54, 58, 61, 63, 66, 69, 72, 74, 76, + 79, 81, 83, 86, 89, 92, 95, 97, 100, 103, + 105, 110, 114, 117, 118, 120, 122, 124, 127, 130, + 134, 136, 137 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 41, 0, -1, 42, -1, -1, 43, 42, -1, 3, + 36, -1, 4, 36, -1, 5, 37, -1, 6, 36, + -1, 7, 36, 36, 36, -1, 8, -1, 9, 37, + -1, 10, 36, -1, -1, 11, 44, 46, -1, 12, + 36, -1, 13, 36, -1, 14, -1, 14, 36, -1, + 15, 36, -1, -1, 16, 45, 46, -1, 17, 50, + -1, 18, -1, 18, 36, -1, 19, 36, -1, 20, + 50, -1, 21, -1, 22, -1, 23, 36, -1, 24, + -1, 25, -1, 26, 37, -1, 27, 36, -1, 28, + 36, -1, 29, 36, -1, 30, -1, 31, 37, -1, + 32, 36, -1, 33, -1, 34, 36, 36, 36, -1, + 34, 36, 36, -1, 35, 36, -1, -1, 47, -1, + 49, -1, 48, -1, 47, 49, -1, 47, 48, -1, + 38, 36, 39, -1, 36, -1, -1, 36, 50, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 143, 143, 148, 150, 156, 160, 165, 182, 186, + 204, 208, 224, 229, 228, 236, 241, 246, 251, 256, + 261, 260, 268, 272, 276, 280, 284, 288, 292, 296, + 303, 307, 311, 327, 331, 336, 340, 344, 360, 365, + 369, 393, 409, 419, 422, 433, 437, 441, 445, 454, + 465, 482, 485 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "CHECK", "CODESTART", "COPYRIGHT", + "CUSTOM", "DATE", "DEBUG_K", "DESCRIPTION", "EXIT", "EXPORT", "FLAG_ON", + "FLAG_OFF", "FULLMAP", "HELP", "IMPORT", "INPUT", "MAP", "MESSAGES", + "MODULE", "MULTIPLE", "OS_DOMAIN", "OUTPUT", "PSEUDOPREEMPTION", + "REENTRANT", "SCREENNAME", "SHARELIB", "STACK", "START", "SYNCHRONIZE", + "THREADNAME", "TYPE", "VERBOSE", "VERSIONK", "XDCDATA", "STRING", + "QUOTED_STRING", "'('", "')'", "$accept", "file", "commands", "command", + "@1", "@2", "symbol_list_opt", "symbol_list", "symbol_prefix", "symbol", + "string_list", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 40, 41, 42, 42, 43, 43, 43, 43, 43, + 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, + 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 46, 46, 47, 47, 47, 47, 48, + 49, 50, 50 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 0, 2, 2, 2, 2, 2, 4, + 1, 2, 2, 0, 3, 2, 2, 1, 2, 2, + 0, 3, 2, 1, 2, 2, 2, 1, 1, 2, + 1, 1, 2, 2, 2, 2, 1, 2, 2, 1, + 4, 3, 2, 0, 1, 1, 1, 2, 2, 3, + 1, 0, 2 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 3, 0, 0, 0, 0, 0, 10, 0, 0, 13, + 0, 0, 17, 0, 20, 51, 23, 0, 51, 27, + 28, 0, 30, 31, 0, 0, 0, 0, 36, 0, + 0, 39, 0, 0, 0, 2, 3, 5, 6, 7, + 8, 0, 11, 12, 43, 15, 16, 18, 19, 43, + 51, 22, 24, 25, 26, 29, 32, 33, 34, 35, + 37, 38, 0, 42, 1, 4, 0, 50, 0, 14, + 44, 46, 45, 21, 52, 41, 9, 0, 48, 47, + 40, 49 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 34, 35, 36, 44, 49, 69, 70, 71, 72, + 51 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -20 +static const yytype_int8 yypact[] = +{ + -3, -1, 1, 2, 4, 5, -20, 6, 8, -20, + 9, 10, 11, 12, -20, 13, 14, 16, 13, -20, + -20, 17, -20, -20, 18, 20, 21, 22, -20, 23, + 25, -20, 26, 27, 38, -20, -3, -20, -20, -20, + -20, 28, -20, -20, -2, -20, -20, -20, -20, -2, + 13, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, 30, -20, -20, -20, 31, -20, 32, -20, + -2, -20, -20, -20, -20, 33, -20, 3, -20, -20, + -20, -20 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -20, -20, 34, -20, -20, -20, 24, -20, -19, -16, + 15 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 54, 67, 37, 68, 38, 64, 39, + 40, 41, 81, 42, 43, 45, 46, 47, 48, 50, + 52, 78, 53, 55, 79, 56, 57, 58, 59, 0, + 60, 61, 62, 63, 66, 74, 75, 76, 77, 80, + 65, 0, 0, 73 +}; + +static const yytype_int8 yycheck[] = +{ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 18, 36, 36, 38, 36, 0, 37, + 36, 36, 39, 37, 36, 36, 36, 36, 36, 36, + 36, 70, 36, 36, 70, 37, 36, 36, 36, -1, + 37, 36, 36, 36, 36, 50, 36, 36, 36, 36, + 36, -1, -1, 49 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 41, 42, 43, 36, 36, 37, + 36, 36, 37, 36, 44, 36, 36, 36, 36, 45, + 36, 50, 36, 36, 50, 36, 37, 36, 36, 36, + 37, 36, 36, 36, 0, 42, 36, 36, 38, 46, + 47, 48, 49, 46, 50, 36, 36, 36, 48, 49, + 36, 39 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 5: +#line 157 "nlmheader.y" + { + check_procedure = (yyvsp[(2) - (2)].string); + } + break; + + case 6: +#line 161 "nlmheader.y" + { + nlmheader_warn (_("CODESTART is not implemented; sorry"), -1); + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 7: +#line 166 "nlmheader.y" + { + int len; + + strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10); + len = strlen ((yyvsp[(2) - (2)].string)); + if (len >= NLM_MAX_COPYRIGHT_MESSAGE_LENGTH) + { + nlmheader_warn (_("copyright string is too long"), + NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1); + len = NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1; + } + copyright_hdr->copyrightMessageLength = len; + strncpy (copyright_hdr->copyrightMessage, (yyvsp[(2) - (2)].string), len); + copyright_hdr->copyrightMessage[len] = '\0'; + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 8: +#line 183 "nlmheader.y" + { + custom_file = (yyvsp[(2) - (2)].string); + } + break; + + case 9: +#line 187 "nlmheader.y" + { + /* We don't set the version stamp here, because we use the + version stamp to detect whether the required VERSION + keyword was given. */ + version_hdr->month = nlmlex_get_number ((yyvsp[(2) - (4)].string)); + version_hdr->day = nlmlex_get_number ((yyvsp[(3) - (4)].string)); + version_hdr->year = nlmlex_get_number ((yyvsp[(4) - (4)].string)); + free ((yyvsp[(2) - (4)].string)); + free ((yyvsp[(3) - (4)].string)); + free ((yyvsp[(4) - (4)].string)); + if (version_hdr->month < 1 || version_hdr->month > 12) + nlmheader_warn (_("illegal month"), -1); + if (version_hdr->day < 1 || version_hdr->day > 31) + nlmheader_warn (_("illegal day"), -1); + if (version_hdr->year < 1900 || version_hdr->year > 3000) + nlmheader_warn (_("illegal year"), -1); + } + break; + + case 10: +#line 205 "nlmheader.y" + { + debug_info = TRUE; + } + break; + + case 11: +#line 209 "nlmheader.y" + { + int len; + + len = strlen ((yyvsp[(2) - (2)].string)); + if (len > NLM_MAX_DESCRIPTION_LENGTH) + { + nlmheader_warn (_("description string is too long"), + NLM_MAX_DESCRIPTION_LENGTH); + len = NLM_MAX_DESCRIPTION_LENGTH; + } + var_hdr->descriptionLength = len; + strncpy (var_hdr->descriptionText, (yyvsp[(2) - (2)].string), len); + var_hdr->descriptionText[len] = '\0'; + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 12: +#line 225 "nlmheader.y" + { + exit_procedure = (yyvsp[(2) - (2)].string); + } + break; + + case 13: +#line 229 "nlmheader.y" + { + symbol_prefix = NULL; + } + break; + + case 14: +#line 233 "nlmheader.y" + { + export_symbols = string_list_append (export_symbols, (yyvsp[(3) - (3)].list)); + } + break; + + case 15: +#line 237 "nlmheader.y" + { + fixed_hdr->flags |= nlmlex_get_number ((yyvsp[(2) - (2)].string)); + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 16: +#line 242 "nlmheader.y" + { + fixed_hdr->flags &=~ nlmlex_get_number ((yyvsp[(2) - (2)].string)); + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 17: +#line 247 "nlmheader.y" + { + map_file = ""; + full_map = TRUE; + } + break; + + case 18: +#line 252 "nlmheader.y" + { + map_file = (yyvsp[(2) - (2)].string); + full_map = TRUE; + } + break; + + case 19: +#line 257 "nlmheader.y" + { + help_file = (yyvsp[(2) - (2)].string); + } + break; + + case 20: +#line 261 "nlmheader.y" + { + symbol_prefix = NULL; + } + break; + + case 21: +#line 265 "nlmheader.y" + { + import_symbols = string_list_append (import_symbols, (yyvsp[(3) - (3)].list)); + } + break; + + case 22: +#line 269 "nlmheader.y" + { + input_files = string_list_append (input_files, (yyvsp[(2) - (2)].list)); + } + break; + + case 23: +#line 273 "nlmheader.y" + { + map_file = ""; + } + break; + + case 24: +#line 277 "nlmheader.y" + { + map_file = (yyvsp[(2) - (2)].string); + } + break; + + case 25: +#line 281 "nlmheader.y" + { + message_file = (yyvsp[(2) - (2)].string); + } + break; + + case 26: +#line 285 "nlmheader.y" + { + modules = string_list_append (modules, (yyvsp[(2) - (2)].list)); + } + break; + + case 27: +#line 289 "nlmheader.y" + { + fixed_hdr->flags |= 0x2; + } + break; + + case 28: +#line 293 "nlmheader.y" + { + fixed_hdr->flags |= 0x10; + } + break; + + case 29: +#line 297 "nlmheader.y" + { + if (output_file == NULL) + output_file = (yyvsp[(2) - (2)].string); + else + nlmheader_warn (_("ignoring duplicate OUTPUT statement"), -1); + } + break; + + case 30: +#line 304 "nlmheader.y" + { + fixed_hdr->flags |= 0x8; + } + break; + + case 31: +#line 308 "nlmheader.y" + { + fixed_hdr->flags |= 0x1; + } + break; + + case 32: +#line 312 "nlmheader.y" + { + int len; + + len = strlen ((yyvsp[(2) - (2)].string)); + if (len >= NLM_MAX_SCREEN_NAME_LENGTH) + { + nlmheader_warn (_("screen name is too long"), + NLM_MAX_SCREEN_NAME_LENGTH); + len = NLM_MAX_SCREEN_NAME_LENGTH; + } + var_hdr->screenNameLength = len; + strncpy (var_hdr->screenName, (yyvsp[(2) - (2)].string), len); + var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0'; + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 33: +#line 328 "nlmheader.y" + { + sharelib_file = (yyvsp[(2) - (2)].string); + } + break; + + case 34: +#line 332 "nlmheader.y" + { + var_hdr->stackSize = nlmlex_get_number ((yyvsp[(2) - (2)].string)); + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 35: +#line 337 "nlmheader.y" + { + start_procedure = (yyvsp[(2) - (2)].string); + } + break; + + case 36: +#line 341 "nlmheader.y" + { + fixed_hdr->flags |= 0x4; + } + break; + + case 37: +#line 345 "nlmheader.y" + { + int len; + + len = strlen ((yyvsp[(2) - (2)].string)); + if (len >= NLM_MAX_THREAD_NAME_LENGTH) + { + nlmheader_warn (_("thread name is too long"), + NLM_MAX_THREAD_NAME_LENGTH); + len = NLM_MAX_THREAD_NAME_LENGTH; + } + var_hdr->threadNameLength = len; + strncpy (var_hdr->threadName, (yyvsp[(2) - (2)].string), len); + var_hdr->threadName[len] = '\0'; + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 38: +#line 361 "nlmheader.y" + { + fixed_hdr->moduleType = nlmlex_get_number ((yyvsp[(2) - (2)].string)); + free ((yyvsp[(2) - (2)].string)); + } + break; + + case 39: +#line 366 "nlmheader.y" + { + verbose = TRUE; + } + break; + + case 40: +#line 370 "nlmheader.y" + { + long val; + + strncpy (version_hdr->stamp, "VeRsIoN#", 8); + version_hdr->majorVersion = nlmlex_get_number ((yyvsp[(2) - (4)].string)); + val = nlmlex_get_number ((yyvsp[(3) - (4)].string)); + if (val < 0 || val > 99) + nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"), + -1); + else + version_hdr->minorVersion = val; + val = nlmlex_get_number ((yyvsp[(4) - (4)].string)); + if (val < 0) + nlmheader_warn (_("illegal revision number (must be between 0 and 26)"), + -1); + else if (val > 26) + version_hdr->revision = 0; + else + version_hdr->revision = val; + free ((yyvsp[(2) - (4)].string)); + free ((yyvsp[(3) - (4)].string)); + free ((yyvsp[(4) - (4)].string)); + } + break; + + case 41: +#line 394 "nlmheader.y" + { + long val; + + strncpy (version_hdr->stamp, "VeRsIoN#", 8); + version_hdr->majorVersion = nlmlex_get_number ((yyvsp[(2) - (3)].string)); + val = nlmlex_get_number ((yyvsp[(3) - (3)].string)); + if (val < 0 || val > 99) + nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"), + -1); + else + version_hdr->minorVersion = val; + version_hdr->revision = 0; + free ((yyvsp[(2) - (3)].string)); + free ((yyvsp[(3) - (3)].string)); + } + break; + + case 42: +#line 410 "nlmheader.y" + { + rpc_file = (yyvsp[(2) - (2)].string); + } + break; + + case 43: +#line 419 "nlmheader.y" + { + (yyval.list) = NULL; + } + break; + + case 44: +#line 423 "nlmheader.y" + { + (yyval.list) = (yyvsp[(1) - (1)].list); + } + break; + + case 45: +#line 434 "nlmheader.y" + { + (yyval.list) = string_list_cons ((yyvsp[(1) - (1)].string), NULL); + } + break; + + case 46: +#line 438 "nlmheader.y" + { + (yyval.list) = NULL; + } + break; + + case 47: +#line 442 "nlmheader.y" + { + (yyval.list) = string_list_append1 ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].string)); + } + break; + + case 48: +#line 446 "nlmheader.y" + { + (yyval.list) = (yyvsp[(1) - (2)].list); + } + break; + + case 49: +#line 455 "nlmheader.y" + { + if (symbol_prefix != NULL) + free (symbol_prefix); + symbol_prefix = (yyvsp[(2) - (3)].string); + } + break; + + case 50: +#line 466 "nlmheader.y" + { + if (symbol_prefix == NULL) + (yyval.string) = (yyvsp[(1) - (1)].string); + else + { + (yyval.string) = xmalloc (strlen (symbol_prefix) + strlen ((yyvsp[(1) - (1)].string)) + 2); + sprintf ((yyval.string), "%s@%s", symbol_prefix, (yyvsp[(1) - (1)].string)); + free ((yyvsp[(1) - (1)].string)); + } + } + break; + + case 51: +#line 482 "nlmheader.y" + { + (yyval.list) = NULL; + } + break; + + case 52: +#line 486 "nlmheader.y" + { + (yyval.list) = string_list_cons ((yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].list)); + } + break; + + +/* Line 1267 of yacc.c. */ +#line 2014 "nlmheader.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 491 "nlmheader.y" + + +/* If strerror is just a macro, we want to use the one from libiberty + since it will handle undefined values. */ +#undef strerror +extern char *strerror (int); + +/* The lexer is simple, too simple for flex. Keywords are only + recognized at the start of lines. Everything else must be an + argument. A comma is treated as whitespace. */ + +/* The states the lexer can be in. */ + +enum lex_state +{ + /* At the beginning of a line. */ + BEGINNING_OF_LINE, + /* In the middle of a line. */ + IN_LINE +}; + +/* We need to keep a stack of files to handle file inclusion. */ + +struct input +{ + /* The file to read from. */ + FILE *file; + /* The name of the file. */ + char *name; + /* The current line number. */ + int lineno; + /* The current state. */ + enum lex_state state; + /* The next file on the stack. */ + struct input *next; +}; + +/* The current input file. */ + +static struct input current; + +/* The character which introduces comments. */ +#define COMMENT_CHAR '#' + +/* Start the lexer going on the main input file. */ + +bfd_boolean +nlmlex_file (const char *name) +{ + current.next = NULL; + return nlmlex_file_open (name); +} + +/* Start the lexer going on a subsidiary input file. */ + +static void +nlmlex_file_push (const char *name) +{ + struct input *push; + + push = (struct input *) xmalloc (sizeof (struct input)); + *push = current; + if (nlmlex_file_open (name)) + current.next = push; + else + { + current = *push; + free (push); + } +} + +/* Start lexing from a file. */ + +static bfd_boolean +nlmlex_file_open (const char *name) +{ + current.file = fopen (name, "r"); + if (current.file == NULL) + { + fprintf (stderr, "%s:%s: %s\n", program_name, name, strerror (errno)); + ++parse_errors; + return FALSE; + } + current.name = xstrdup (name); + current.lineno = 1; + current.state = BEGINNING_OF_LINE; + return TRUE; +} + +/* Table used to turn keywords into tokens. */ + +struct keyword_tokens_struct +{ + const char *keyword; + int token; +}; + +static struct keyword_tokens_struct keyword_tokens[] = +{ + { "CHECK", CHECK }, + { "CODESTART", CODESTART }, + { "COPYRIGHT", COPYRIGHT }, + { "CUSTOM", CUSTOM }, + { "DATE", DATE }, + { "DEBUG", DEBUG_K }, + { "DESCRIPTION", DESCRIPTION }, + { "EXIT", EXIT }, + { "EXPORT", EXPORT }, + { "FLAG_ON", FLAG_ON }, + { "FLAG_OFF", FLAG_OFF }, + { "FULLMAP", FULLMAP }, + { "HELP", HELP }, + { "IMPORT", IMPORT }, + { "INPUT", INPUT }, + { "MAP", MAP }, + { "MESSAGES", MESSAGES }, + { "MODULE", MODULE }, + { "MULTIPLE", MULTIPLE }, + { "OS_DOMAIN", OS_DOMAIN }, + { "OUTPUT", OUTPUT }, + { "PSEUDOPREEMPTION", PSEUDOPREEMPTION }, + { "REENTRANT", REENTRANT }, + { "SCREENNAME", SCREENNAME }, + { "SHARELIB", SHARELIB }, + { "STACK", STACK }, + { "STACKSIZE", STACK }, + { "START", START }, + { "SYNCHRONIZE", SYNCHRONIZE }, + { "THREADNAME", THREADNAME }, + { "TYPE", TYPE }, + { "VERBOSE", VERBOSE }, + { "VERSION", VERSIONK }, + { "XDCDATA", XDCDATA } +}; + +#define KEYWORD_COUNT (sizeof (keyword_tokens) / sizeof (keyword_tokens[0])) + +/* The lexer accumulates strings in these variables. */ +static char *lex_buf; +static int lex_size; +static int lex_pos; + +/* Start accumulating strings into the buffer. */ +#define BUF_INIT() \ + ((void) (lex_buf != NULL ? lex_pos = 0 : nlmlex_buf_init ())) + +static int +nlmlex_buf_init (void) +{ + lex_size = 10; + lex_buf = xmalloc (lex_size + 1); + lex_pos = 0; + return 0; +} + +/* Finish a string in the buffer. */ +#define BUF_FINISH() ((void) (lex_buf[lex_pos] = '\0')) + +/* Accumulate a character into the buffer. */ +#define BUF_ADD(c) \ + ((void) (lex_pos < lex_size \ + ? lex_buf[lex_pos++] = (c) \ + : nlmlex_buf_add (c))) + +static char +nlmlex_buf_add (int c) +{ + if (lex_pos >= lex_size) + { + lex_size *= 2; + lex_buf = xrealloc (lex_buf, lex_size + 1); + } + + return lex_buf[lex_pos++] = c; +} + +/* The lexer proper. This is called by the bison generated parsing + code. */ + +static int +yylex (void) +{ + int c; + +tail_recurse: + + c = getc (current.file); + + /* Commas are treated as whitespace characters. */ + while (ISSPACE (c) || c == ',') + { + current.state = IN_LINE; + if (c == '\n') + { + ++current.lineno; + current.state = BEGINNING_OF_LINE; + } + c = getc (current.file); + } + + /* At the end of the file we either pop to the previous file or + finish up. */ + if (c == EOF) + { + fclose (current.file); + free (current.name); + if (current.next == NULL) + return 0; + else + { + struct input *next; + + next = current.next; + current = *next; + free (next); + goto tail_recurse; + } + } + + /* A comment character always means to drop everything until the + next newline. */ + if (c == COMMENT_CHAR) + { + do + { + c = getc (current.file); + } + while (c != '\n'); + ++current.lineno; + current.state = BEGINNING_OF_LINE; + goto tail_recurse; + } + + /* An '@' introduces an include file. */ + if (c == '@') + { + do + { + c = getc (current.file); + if (c == '\n') + ++current.lineno; + } + while (ISSPACE (c)); + BUF_INIT (); + while (! ISSPACE (c) && c != EOF) + { + BUF_ADD (c); + c = getc (current.file); + } + BUF_FINISH (); + + ungetc (c, current.file); + + nlmlex_file_push (lex_buf); + goto tail_recurse; + } + + /* A non-space character at the start of a line must be the start of + a keyword. */ + if (current.state == BEGINNING_OF_LINE) + { + BUF_INIT (); + while (ISALNUM (c) || c == '_') + { + BUF_ADD (TOUPPER (c)); + c = getc (current.file); + } + BUF_FINISH (); + + if (c != EOF && ! ISSPACE (c) && c != ',') + { + nlmheader_identify (); + fprintf (stderr, _("%s:%d: illegal character in keyword: %c\n"), + current.name, current.lineno, c); + } + else + { + unsigned int i; + + for (i = 0; i < KEYWORD_COUNT; i++) + { + if (lex_buf[0] == keyword_tokens[i].keyword[0] + && strcmp (lex_buf, keyword_tokens[i].keyword) == 0) + { + /* Pushing back the final whitespace avoids worrying + about \n here. */ + ungetc (c, current.file); + current.state = IN_LINE; + return keyword_tokens[i].token; + } + } + + nlmheader_identify (); + fprintf (stderr, _("%s:%d: unrecognized keyword: %s\n"), + current.name, current.lineno, lex_buf); + } + + ++parse_errors; + /* Treat the rest of this line as a comment. */ + ungetc (COMMENT_CHAR, current.file); + goto tail_recurse; + } + + /* Parentheses just represent themselves. */ + if (c == '(' || c == ')') + return c; + + /* Handle quoted strings. */ + if (c == '"' || c == '\'') + { + int quote; + int start_lineno; + + quote = c; + start_lineno = current.lineno; + + c = getc (current.file); + BUF_INIT (); + while (c != quote && c != EOF) + { + BUF_ADD (c); + if (c == '\n') + ++current.lineno; + c = getc (current.file); + } + BUF_FINISH (); + + if (c == EOF) + { + nlmheader_identify (); + fprintf (stderr, _("%s:%d: end of file in quoted string\n"), + current.name, start_lineno); + ++parse_errors; + } + + /* FIXME: Possible memory leak. */ + yylval.string = xstrdup (lex_buf); + return QUOTED_STRING; + } + + /* Gather a generic argument. */ + BUF_INIT (); + while (! ISSPACE (c) + && c != ',' + && c != COMMENT_CHAR + && c != '(' + && c != ')') + { + BUF_ADD (c); + c = getc (current.file); + } + BUF_FINISH (); + + ungetc (c, current.file); + + /* FIXME: Possible memory leak. */ + yylval.string = xstrdup (lex_buf); + return STRING; +} + +/* Get a number from a string. */ + +static long +nlmlex_get_number (const char *s) +{ + long ret; + char *send; + + ret = strtol (s, &send, 10); + if (*send != '\0') + nlmheader_warn (_("bad number"), -1); + return ret; +} + +/* Prefix the nlmconv warnings with a note as to where they come from. + We don't use program_name on every warning, because then some + versions of the emacs next-error function can't recognize the line + number. */ + +static void +nlmheader_identify (void) +{ + static int done; + + if (! done) + { + fprintf (stderr, _("%s: problems in NLM command language input:\n"), + program_name); + done = 1; + } +} + +/* Issue a warning. */ + +static void +nlmheader_warn (const char *s, int imax) +{ + nlmheader_identify (); + fprintf (stderr, "%s:%d: %s", current.name, current.lineno, s); + if (imax != -1) + fprintf (stderr, " (max %d)", imax); + fprintf (stderr, "\n"); +} + +/* Report an error. */ + +static void +nlmheader_error (const char *s) +{ + nlmheader_warn (s, -1); + ++parse_errors; +} + +/* Add a string to a string list. */ + +static struct string_list * +string_list_cons (char *s, struct string_list *l) +{ + struct string_list *ret; + + ret = (struct string_list *) xmalloc (sizeof (struct string_list)); + ret->next = l; + ret->string = s; + return ret; +} + +/* Append a string list to another string list. */ + +static struct string_list * +string_list_append (struct string_list *l1, struct string_list *l2) +{ + register struct string_list **pp; + + for (pp = &l1; *pp != NULL; pp = &(*pp)->next) + ; + *pp = l2; + return l1; +} + +/* Append a string to a string list. */ + +static struct string_list * +string_list_append1 (struct string_list *l, char *s) +{ + struct string_list *n; + register struct string_list **pp; + + n = (struct string_list *) xmalloc (sizeof (struct string_list)); + n->next = NULL; + n->string = s; + for (pp = &l; *pp != NULL; pp = &(*pp)->next) + ; + *pp = n; + return l; +} + +/* Duplicate a string in memory. */ + +static char * +xstrdup (const char *s) +{ + unsigned long len; + char *ret; + + len = strlen (s); + ret = xmalloc (len + 1); + strcpy (ret, s); + return ret; +} + diff --git a/binutils/nlmheader.h b/binutils/nlmheader.h new file mode 100644 index 00000000000..bf6be3ca814 --- /dev/null +++ b/binutils/nlmheader.h @@ -0,0 +1,135 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + CHECK = 258, + CODESTART = 259, + COPYRIGHT = 260, + CUSTOM = 261, + DATE = 262, + DEBUG_K = 263, + DESCRIPTION = 264, + EXIT = 265, + EXPORT = 266, + FLAG_ON = 267, + FLAG_OFF = 268, + FULLMAP = 269, + HELP = 270, + IMPORT = 271, + INPUT = 272, + MAP = 273, + MESSAGES = 274, + MODULE = 275, + MULTIPLE = 276, + OS_DOMAIN = 277, + OUTPUT = 278, + PSEUDOPREEMPTION = 279, + REENTRANT = 280, + SCREENNAME = 281, + SHARELIB = 282, + STACK = 283, + START = 284, + SYNCHRONIZE = 285, + THREADNAME = 286, + TYPE = 287, + VERBOSE = 288, + VERSIONK = 289, + XDCDATA = 290, + STRING = 291, + QUOTED_STRING = 292 + }; +#endif +/* Tokens. */ +#define CHECK 258 +#define CODESTART 259 +#define COPYRIGHT 260 +#define CUSTOM 261 +#define DATE 262 +#define DEBUG_K 263 +#define DESCRIPTION 264 +#define EXIT 265 +#define EXPORT 266 +#define FLAG_ON 267 +#define FLAG_OFF 268 +#define FULLMAP 269 +#define HELP 270 +#define IMPORT 271 +#define INPUT 272 +#define MAP 273 +#define MESSAGES 274 +#define MODULE 275 +#define MULTIPLE 276 +#define OS_DOMAIN 277 +#define OUTPUT 278 +#define PSEUDOPREEMPTION 279 +#define REENTRANT 280 +#define SCREENNAME 281 +#define SHARELIB 282 +#define STACK 283 +#define START 284 +#define SYNCHRONIZE 285 +#define THREADNAME 286 +#define TYPE 287 +#define VERBOSE 288 +#define VERSIONK 289 +#define XDCDATA 290 +#define STRING 291 +#define QUOTED_STRING 292 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 112 "nlmheader.y" +{ + char *string; + struct string_list *list; +} +/* Line 1529 of yacc.c. */ +#line 128 "nlmheader.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + diff --git a/binutils/po/bg.gmo b/binutils/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..00bb37882135ffd2fff89acef1dae1dfacc547bc GIT binary patch literal 113540 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