From 7fa393306ed8b93019d225548474c0540b8928f7 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Thu, 2 Mar 2017 10:17:52 +0100 Subject: [PATCH] Add generated files --- bfd/ChangeLog | 9 + bfd/configure | 20 +- bfd/development.sh | 2 +- bfd/doc/aoutx.texi | 213 + bfd/doc/archive.texi | 105 + bfd/doc/archures.texi | 752 + bfd/doc/bfd.info | 14468 ++++++++++++++++++ bfd/doc/bfdio.texi | 95 + bfd/doc/bfdt.texi | 961 ++ bfd/doc/bfdver.texi | 4 + bfd/doc/bfdwin.texi | 2 + bfd/doc/cache.texi | 65 + bfd/doc/coffcode.texi | 697 + 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 | 482 + bfd/doc/mmo.texi | 369 + bfd/doc/opncls.texi | 533 + bfd/doc/reloc.texi | 4370 ++++++ bfd/doc/section.texi | 1088 ++ bfd/doc/syms.texi | 481 + bfd/doc/targets.texi | 631 + bfd/po/da.gmo | Bin 0 -> 153643 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/sr.gmo | Bin 0 -> 202462 bytes bfd/po/sv.gmo | Bin 0 -> 155196 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 -> 17843 bytes bfd/version.m4 | 2 +- binutils/ChangeLog | 4 + binutils/arlex.c | 2034 +++ binutils/arparse.c | 1668 +++ binutils/arparse.h | 110 + binutils/configure | 20 +- binutils/deflex.c | 2063 +++ binutils/defparse.c | 2071 +++ binutils/defparse.h | 132 + binutils/doc/addr2line.1 | 315 + binutils/doc/ar.1 | 470 + binutils/doc/binutils.info | 5253 +++++++ binutils/doc/cxxfilt.man | 345 + binutils/doc/dlltool.1 | 542 + binutils/doc/elfedit.1 | 242 + binutils/doc/nlmconv.1 | 251 + binutils/doc/nm.1 | 548 + binutils/doc/objcopy.1 | 1196 ++ binutils/doc/objdump.1 | 997 ++ binutils/doc/ranlib.1 | 227 + binutils/doc/readelf.1 | 475 + binutils/doc/size.1 | 275 + binutils/doc/strings.1 | 315 + binutils/doc/strip.1 | 485 + binutils/doc/windmc.1 | 360 + binutils/doc/windres.1 | 368 + binutils/mcparse.c | 2074 +++ binutils/mcparse.h | 111 + binutils/nlmheader.c | 2617 ++++ binutils/nlmheader.h | 143 + binutils/po/bg.gmo | Bin 0 -> 113540 bytes binutils/po/ca.gmo | Bin 0 -> 218675 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 -> 217407 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 -> 204533 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 -> 93100 bytes binutils/po/zh_TW.gmo | Bin 0 -> 121475 bytes binutils/rcparse.c | 4682 ++++++ binutils/rcparse.h | 306 + binutils/sysinfo.c | 1859 +++ binutils/sysinfo.h | 85 + binutils/syslex.c | 1905 +++ etc/config.log | 151 + gas/ChangeLog | 4 + gas/bfin-lex.c | 3553 +++++ gas/bfin-parse.c | 7972 ++++++++++ gas/bfin-parse.h | 422 + gas/configure | 20 +- gas/doc/as.1 | 2073 +++ gas/doc/as.info | 28078 +++++++++++++++++++++++++++++++++++ gas/doc/asconfig.texi | 108 + gas/itbl-lex.c | 1919 +++ gas/itbl-parse.c | 1906 +++ gas/itbl-parse.h | 96 + gas/m68k-parse.c | 2772 ++++ gas/po/es.gmo | Bin 0 -> 438926 bytes gas/po/fi.gmo | Bin 0 -> 442741 bytes gas/po/fr.gmo | Bin 0 -> 501939 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 -> 647441 bytes gas/po/zh_CN.gmo | Bin 0 -> 3779 bytes gas/rl78-parse.c | 4786 ++++++ gas/rl78-parse.h | 307 + gas/rx-parse.c | 4678 ++++++ gas/rx-parse.h | 335 + gdb/gcore | 103 + gdb/testsuite/lib/pdtrace | 1033 ++ gold/po/es.gmo | Bin 0 -> 51373 bytes gold/po/fi.gmo | Bin 0 -> 81582 bytes gold/po/fr.gmo | Bin 0 -> 86912 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 gold/po/zh_CN.gmo | Bin 0 -> 8988 bytes gprof/ChangeLog | 4 + gprof/bsd_callg_bl.c | 124 + gprof/config.texi | 1 + gprof/configure | 20 +- gprof/flat_bl.c | 44 + gprof/fsf_callg_bl.c | 99 + gprof/gprof.1 | 772 + gprof/gprof.info | 2478 ++++ gprof/po/bg.gmo | Bin 0 -> 12825 bytes gprof/po/da.gmo | Bin 0 -> 10415 bytes gprof/po/de.gmo | Bin 0 -> 10545 bytes gprof/po/eo.gmo | Bin 0 -> 10469 bytes gprof/po/es.gmo | Bin 0 -> 10523 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 -> 10513 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/ChangeLog | 4 + ld/configdoc.texi | 33 + ld/configure | 20 +- ld/deffilep.c | 3362 +++++ ld/deffilep.h | 132 + ld/ld.1 | 2747 ++++ ld/ld.info | 8693 +++++++++++ ld/ldgram.c | 4770 ++++++ ld/ldgram.h | 357 + ld/ldlex.c | 4425 ++++++ 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 -> 62481 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 -> 54302 bytes ld/po/zh_TW.gmo | Bin 0 -> 54554 bytes opcodes/ChangeLog | 4 + opcodes/configure | 20 +- 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 -> 30871 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 -> 15777 bytes 208 files changed, 148893 insertions(+), 62 deletions(-) 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/sr.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/ca.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/po/zh_CN.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 100755 gdb/testsuite/lib/pdtrace create mode 100644 gold/po/es.gmo create mode 100644 gold/po/fi.gmo create mode 100644 gold/po/fr.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 gold/po/zh_CN.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/ChangeLog b/bfd/ChangeLog index ce8793220b5..85c6a817e5f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2017-03-02 Tristan Gingold + + * version.m4: Bump version to 2.28 + * configure: Regenerate. + +2017-03-02 Tristan Gingold + + * development.sh: Set development to false. + 2017-02-28 Alan Modra PR 20995 diff --git a/bfd/configure b/bfd/configure index e4b1a93df02..97693870c46 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for bfd 2.27.90. +# Generated by GNU Autoconf 2.64 for bfd 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bfd' PACKAGE_TARNAME='bfd' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='bfd 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='bfd 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1354,7 +1354,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bfd 2.27.90 to adapt to many kinds of systems. +\`configure' configures bfd 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1425,7 +1425,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bfd 2.27.90:";; + short | recursive ) echo "Configuration of bfd 2.28:";; esac cat <<\_ACEOF @@ -1546,7 +1546,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bfd configure 2.27.90 +bfd configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2188,7 +2188,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bfd $as_me 2.27.90, which was +It was created by bfd $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3997,7 +3997,7 @@ fi # Define the identity of the package. PACKAGE='bfd' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -16613,7 +16613,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bfd $as_me 2.27.90, which was +This file was extended by bfd $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16677,7 +16677,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -bfd config.status 2.27.90 +bfd config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/bfd/development.sh b/bfd/development.sh index cd31410a8ec..b001a888ea9 100644 --- a/bfd/development.sh +++ b/bfd/development.sh @@ -16,4 +16,4 @@ # along with this program. If not, see . # Controls whether to enable development-mode features by default. -development=true +development=false 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..41a65f71807 --- /dev/null +++ b/bfd/doc/archures.texi @@ -0,0 +1,752 @@ +@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. */ +#define bfd_mach_sparc_v8plusc 11 /* with UA2005 and T1 add'ns. */ +#define bfd_mach_sparc_v9c 12 /* with UA2005 and T1 add'ns. */ +#define bfd_mach_sparc_v8plusd 13 /* with UA2007 and T3 add'ns. */ +#define bfd_mach_sparc_v9d 14 /* with UA2007 and T3 add'ns. */ +#define bfd_mach_sparc_v8pluse 15 /* with OSA2001 and T4 add'ns (no IMA). */ +#define bfd_mach_sparc_v9e 16 /* with OSA2001 and T4 add'ns (no IMA). */ +#define bfd_mach_sparc_v8plusv 17 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ +#define bfd_mach_sparc_v9v 18 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ +#define bfd_mach_sparc_v8plusm 19 /* with OSA2015 and M7 add'ns. */ +#define bfd_mach_sparc_v9m 20 /* with OSA2015 and M7 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_v9m \ + && (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 \ + && (mach) != bfd_mach_sparc_v8plusc \ + && (mach) != bfd_mach_sparc_v8plusd \ + && (mach) != bfd_mach_sparc_v8pluse \ + && (mach) != bfd_mach_sparc_v8plusv \ + && (mach) != bfd_mach_sparc_v8plusm) + 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_octeon3 6503 +#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_iamcu, /* Intel MCU */ +#define bfd_mach_iamcu (1 << 8) +#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) +#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) + 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_a4 0 +#define bfd_mach_arc_a5 1 +#define bfd_mach_arc_arc600 2 +#define bfd_mach_arc_arc601 4 +#define bfd_mach_arc_arc700 3 +#define bfd_mach_arc_arcv2 5 + 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_ft32, /* The ft32 processor */ +#define bfd_mach_ft32 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_riscv, +#define bfd_mach_riscv32 132 +#define bfd_mach_riscv64 164 + 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, /* Nios II */ +#define bfd_mach_nios2 0 +#define bfd_mach_nios2r1 1 +#define bfd_mach_nios2r2 2 + bfd_arch_visium, /* Visium */ +#define bfd_mach_visium 1 + 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..e3b6cf144da --- /dev/null +++ b/bfd/doc/bfd.info @@ -0,0 +1,14468 @@ +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-2017 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 + }; + + enum bfd_plugin_format + { + bfd_plugin_unknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + }; + + struct bfd_build_id + { + bfd_size_type size; + bfd_byte data[1]; + }; + + 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 : 20; + + /* 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 + + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ + #define BFD_COMPRESS_GABI 0x20000 + + /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this + BFD. */ + #define BFD_CONVERT_ELF_COMMON 0x40000 + + /* Use the ELF STT_COMMON type in this BFD. */ + #define BFD_USE_ELF_STT_COMMON 0x80000 + + /* Flags bits to be saved in bfd_preserve_save. */ + #define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ + | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON) + + /* 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 \ + | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON) + + /* 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; + + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + + /* 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; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; + }; + + /* 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 vprintf. + + + typedef void (*bfd_error_handler_type) (const char *, va_list); + +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.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. + + +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_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.14 `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.15 `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.16 `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.17 `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.18 `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.19 `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.20 `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.21 `bfd_update_compression_header' +........................................ + +*Synopsis* + void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); + *Description* +Set the compression header at CONTENTS of SEC in ABFD and update +elf_section_flags for compression. + +2.3.1.22 `bfd_check_compression_header' +....................................... + +*Synopsis* + bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); + *Description* +Check the compression header at CONTENTS of SEC in ABFD and store the +uncompressed size in UNCOMPRESSED_SIZE if the compression header is +valid. + + *Returns* +Return TRUE if the compression header is valid. + +2.3.1.23 `bfd_get_compression_header_size' +.......................................... + +*Synopsis* + int bfd_get_compression_header_size (bfd *abfd, asection *sec); + *Description* +Return the size of the compression header of SEC in ABFD. + + *Returns* +Return the size of the compression header in bytes. + +2.3.1.24 `bfd_convert_section_size' +................................... + +*Synopsis* + bfd_size_type bfd_convert_section_size + (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size); + *Description* +Convert the size SIZE of the section ISEC in input BFD IBFD to the +section size in output BFD OBFD. + +2.3.1.25 `bfd_convert_section_contents' +....................................... + +*Synopsis* + bfd_boolean bfd_convert_section_contents + (bfd *ibfd, asection *isec, bfd *obfd, + bfd_byte **ptr, bfd_size_type *ptr_size); + *Description* +Convert the contents, stored in *PTR, of the section ISEC in input BFD +IBFD to output BFD OBFD if needed. The original buffer pointed to by +*PTR may be freed and *PTR is returned with memory malloc'd by this +function, and the new size written to PTR_SIZE. + +2.3.1.26 `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.27 `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.28 `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.29 `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. */ + unsigned int id; + + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ + unsigned 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 + + /* This section should be compressed. This is for ELF linker + internal use only. */ + #define SEC_ELF_COMPRESS 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 + + /* This section should be renamed. This is for ELF linker + internal use only. */ + #define SEC_ELF_RENAME 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 + + /* This section contains vliw code. This is for Toshiba MeP only. */ + #define SEC_MEP_VLIW 0x20000000 + + /* Indicate that section has the no read flag set. This happens + when memory read flag isn't set. */ + #define SEC_COFF_NOREAD 0x40000000 + + /* Indicate that section has the purecode flag set. */ + #define SEC_ELF_PURECODE 0x80000000 + + /* 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 + #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 + + /* 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, SYM, NAME, IDX, FLAGS) \ + /* 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 (bfd *ibfd, 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, or if no such section exists in the same BFD and IBFD is +non-NULL, the next section with the same name in any input BFD +following IBFD. Return NULL on finding no section. + +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_get_next_section_id' +.................................. + +*Synopsis* + int bfd_get_next_section_id (void); + *Description* +Returns the id that the next section created will have. + +2.6.5.13 `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.14 `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.15 `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.16 `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.17 `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.18 `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.19 `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.20 `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.21 `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.22 `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.23 `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_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) + + /* An ELF common symbol. */ + #define BSF_ELF_COMMON (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_MIPS16_16_PCREL_S1 + MIPS16 PC-relative relocation. + + -- : 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_FT32_10 + -- : BFD_RELOC_FT32_20 + -- : BFD_RELOC_FT32_17 + -- : BFD_RELOC_FT32_18 + FT32 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 + -- : BFD_RELOC_386_GOT32X + 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 + -- : BFD_RELOC_X86_64_GOTPCRELX + -- : BFD_RELOC_X86_64_REX_GOTPCRELX + 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_PPC_16DX_HA + -- : BFD_RELOC_PPC_REL16DX_HA + -- : 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 + -- : BFD_RELOC_PPC64_ENTRY + 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_THUMB_ALU_ABS_G0_NC + -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC + -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC + -- : BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC + Thumb1 relocations to support execute-only code. + + -- : 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_NONE + -- : BFD_RELOC_ARC_8 + -- : BFD_RELOC_ARC_16 + -- : BFD_RELOC_ARC_24 + -- : BFD_RELOC_ARC_32 + -- : BFD_RELOC_ARC_N8 + -- : BFD_RELOC_ARC_N16 + -- : BFD_RELOC_ARC_N24 + -- : BFD_RELOC_ARC_N32 + -- : BFD_RELOC_ARC_SDA + -- : BFD_RELOC_ARC_SECTOFF + -- : BFD_RELOC_ARC_S21H_PCREL + -- : BFD_RELOC_ARC_S21W_PCREL + -- : BFD_RELOC_ARC_S25H_PCREL + -- : BFD_RELOC_ARC_S25W_PCREL + -- : BFD_RELOC_ARC_SDA32 + -- : BFD_RELOC_ARC_SDA_LDST + -- : BFD_RELOC_ARC_SDA_LDST1 + -- : BFD_RELOC_ARC_SDA_LDST2 + -- : BFD_RELOC_ARC_SDA16_LD + -- : BFD_RELOC_ARC_SDA16_LD1 + -- : BFD_RELOC_ARC_SDA16_LD2 + -- : BFD_RELOC_ARC_S13_PCREL + -- : BFD_RELOC_ARC_W + -- : BFD_RELOC_ARC_32_ME + -- : BFD_RELOC_ARC_32_ME_S + -- : BFD_RELOC_ARC_N32_ME + -- : BFD_RELOC_ARC_SECTOFF_ME + -- : BFD_RELOC_ARC_SDA32_ME + -- : BFD_RELOC_ARC_W_ME + -- : BFD_RELOC_AC_SECTOFF_U8 + -- : BFD_RELOC_AC_SECTOFF_U8_1 + -- : BFD_RELOC_AC_SECTOFF_U8_2 + -- : BFD_RELOC_AC_SECTOFF_S9 + -- : BFD_RELOC_AC_SECTOFF_S9_1 + -- : BFD_RELOC_AC_SECTOFF_S9_2 + -- : BFD_RELOC_ARC_SECTOFF_ME_1 + -- : BFD_RELOC_ARC_SECTOFF_ME_2 + -- : BFD_RELOC_ARC_SECTOFF_1 + -- : BFD_RELOC_ARC_SECTOFF_2 + -- : BFD_RELOC_ARC_SDA_12 + -- : BFD_RELOC_ARC_SDA16_ST2 + -- : BFD_RELOC_ARC_32_PCREL + -- : BFD_RELOC_ARC_PC32 + -- : BFD_RELOC_ARC_GOT32 + -- : BFD_RELOC_ARC_GOTPC32 + -- : BFD_RELOC_ARC_PLT32 + -- : BFD_RELOC_ARC_COPY + -- : BFD_RELOC_ARC_GLOB_DAT + -- : BFD_RELOC_ARC_JMP_SLOT + -- : BFD_RELOC_ARC_RELATIVE + -- : BFD_RELOC_ARC_GOTOFF + -- : BFD_RELOC_ARC_GOTPC + -- : BFD_RELOC_ARC_S21W_PCREL_PLT + -- : BFD_RELOC_ARC_S25H_PCREL_PLT + -- : BFD_RELOC_ARC_TLS_DTPMOD + -- : BFD_RELOC_ARC_TLS_TPOFF + -- : BFD_RELOC_ARC_TLS_GD_GOT + -- : BFD_RELOC_ARC_TLS_GD_LD + -- : BFD_RELOC_ARC_TLS_GD_CALL + -- : BFD_RELOC_ARC_TLS_IE_GOT + -- : BFD_RELOC_ARC_TLS_DTPOFF + -- : BFD_RELOC_ARC_TLS_DTPOFF_S9 + -- : BFD_RELOC_ARC_TLS_LE_S9 + -- : BFD_RELOC_ARC_TLS_LE_32 + -- : BFD_RELOC_ARC_S25W_PCREL_PLT + -- : BFD_RELOC_ARC_S21H_PCREL_PLT + -- : BFD_RELOC_ARC_NPS_CMEM16 + ARC relocs. + + -- : 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_RISCV_HI20 + -- : BFD_RELOC_RISCV_PCREL_HI20 + -- : BFD_RELOC_RISCV_PCREL_LO12_I + -- : BFD_RELOC_RISCV_PCREL_LO12_S + -- : BFD_RELOC_RISCV_LO12_I + -- : BFD_RELOC_RISCV_LO12_S + -- : BFD_RELOC_RISCV_GPREL12_I + -- : BFD_RELOC_RISCV_GPREL12_S + -- : BFD_RELOC_RISCV_TPREL_HI20 + -- : BFD_RELOC_RISCV_TPREL_LO12_I + -- : BFD_RELOC_RISCV_TPREL_LO12_S + -- : BFD_RELOC_RISCV_TPREL_ADD + -- : BFD_RELOC_RISCV_CALL + -- : BFD_RELOC_RISCV_CALL_PLT + -- : BFD_RELOC_RISCV_ADD8 + -- : BFD_RELOC_RISCV_ADD16 + -- : BFD_RELOC_RISCV_ADD32 + -- : BFD_RELOC_RISCV_ADD64 + -- : BFD_RELOC_RISCV_SUB8 + -- : BFD_RELOC_RISCV_SUB16 + -- : BFD_RELOC_RISCV_SUB32 + -- : BFD_RELOC_RISCV_SUB64 + -- : BFD_RELOC_RISCV_GOT_HI20 + -- : BFD_RELOC_RISCV_TLS_GOT_HI20 + -- : BFD_RELOC_RISCV_TLS_GD_HI20 + -- : BFD_RELOC_RISCV_JMP + -- : BFD_RELOC_RISCV_TLS_DTPMOD32 + -- : BFD_RELOC_RISCV_TLS_DTPREL32 + -- : BFD_RELOC_RISCV_TLS_DTPMOD64 + -- : BFD_RELOC_RISCV_TLS_DTPREL64 + -- : BFD_RELOC_RISCV_TLS_TPREL32 + -- : BFD_RELOC_RISCV_TLS_TPREL64 + -- : BFD_RELOC_RISCV_ALIGN + -- : BFD_RELOC_RISCV_RVC_BRANCH + -- : BFD_RELOC_RISCV_RVC_JUMP + -- : BFD_RELOC_RISCV_RVC_LUI + -- : BFD_RELOC_RISCV_GPREL_I + -- : BFD_RELOC_RISCV_GPREL_S + -- : BFD_RELOC_RISCV_TPREL_I + -- : BFD_RELOC_RISCV_TPREL_S + -- : BFD_RELOC_RISCV_RELAX + -- : BFD_RELOC_RISCV_CFA + -- : BFD_RELOC_RISCV_SUB6 + -- : BFD_RELOC_RISCV_SET6 + -- : BFD_RELOC_RISCV_SET8 + -- : BFD_RELOC_RISCV_SET16 + -- : BFD_RELOC_RISCV_SET32 + RISC-V relocations. + + -- : 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 + -- : BFD_RELOC_RL78_SADDR + 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 + -- : BFD_RELOC_NIOS2_R2_S12 + -- : BFD_RELOC_NIOS2_R2_I10_1_PCREL + -- : BFD_RELOC_NIOS2_R2_T1I7_1_PCREL + -- : BFD_RELOC_NIOS2_R2_T1I7_2 + -- : BFD_RELOC_NIOS2_R2_T2I4 + -- : BFD_RELOC_NIOS2_R2_T2I4_1 + -- : BFD_RELOC_NIOS2_R2_T2I4_2 + -- : BFD_RELOC_NIOS2_R2_X1I7_2 + -- : BFD_RELOC_NIOS2_R2_X2L5 + -- : BFD_RELOC_NIOS2_R2_F1I5_2 + -- : BFD_RELOC_NIOS2_R2_L5I4X1 + -- : BFD_RELOC_NIOS2_R2_T1X1I6 + -- : BFD_RELOC_NIOS2_R2_T1X1I6_2 + 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_SUBTRACTOR32 + Symbol will be substracted. Must be followed by a BFD_RELOC_32. + + -- : BFD_RELOC_MACH_O_SUBTRACTOR64 + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + + -- : 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_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_MACH_O_ARM64_ADDEND + Addend for PAGE or PAGEOFF. + + -- : BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21 + Relative offset to page of GOT slot. + + -- : BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12 + Relative offset within page of GOT slot. + + -- : BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT + Address of a GOT entry. + + -- : 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_NULL + Deprecated AArch64 null relocation code. + + -- : 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_MOVW_GOTOFF_G0_NC + Unsigned 16 bit byte offset for 64 bit load/store from the GOT + entry for this symbol. Valid in LP64 ABI only. + + -- : BFD_RELOC_AARCH64_MOVW_GOTOFF_G1 + Unsigned 16 bit byte higher offset for 64 bit load/store from the + GOT entry for this symbol. Valid in LP64 ABI only. + + -- : BFD_RELOC_AARCH64_LD64_GOTOFF_LO15 + Unsigned 15 bit byte offset for 64 bit load/store from the page of + the GOT entry for this symbol. Valid in LP64 ABI only. + + -- : BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14 + Scaled 14 bit byte offset to the page base of the global offset + table. + + -- : BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15 + Scaled 15 bit byte offset to the page base of the global offset + table. + + -- : 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_ADR_PREL21 + AArch64 TLS General Dynamic + + -- : 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_TLSGD_MOVW_G0_NC + AArch64 TLS General Dynamic relocation. + + -- : BFD_RELOC_AARCH64_TLSGD_MOVW_G1 + AArch64 TLS General Dynamic 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_TLSIE_MOVW_GOTTPREL_G0_NC + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 + AArch64 TLS INITIAL EXEC relocation. + + -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12 + bit[23:12] of byte offset to module TLS base address. + + -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12 + Unsigned 12 bit byte offset to module TLS base address. + + -- : BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC + No overflow check version of + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. + + -- : BFD_RELOC_AARCH64_TLSLD_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_TLSLD_ADR_PAGE21. + + -- : BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21 + GOT entry page address for AArch64 TLS Local Dynamic, used with + ADRP instruction. + + -- : BFD_RELOC_AARCH64_TLSLD_ADR_PREL21 + GOT entry address for AArch64 TLS Local Dynamic, used with ADR + instruction. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12 + bit[11:1] of byte offset to module TLS base address, encoded in + ldst instructions. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no + overflow check. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12 + bit[11:2] of byte offset to module TLS base address, encoded in + ldst instructions. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no + overflow check. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12 + bit[11:3] of byte offset to module TLS base address, encoded in + ldst instructions. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no + overflow check. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12 + bit[11:0] of byte offset to module TLS base address, encoded in + ldst instructions. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no + overflow check. + + -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 + bit[15:0] of byte offset to module TLS base address. + + -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC + No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 + + -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 + bit[31:16] of byte offset to module TLS base address. + + -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC + No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 + + -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2 + bit[47:32] of byte offset to module TLS base address. + + -- : 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_TLSLD_LDST_DTPREL_LO12 + AArch64 pseudo relocation code for TLS local dynamic mode. It's + to be used internally by the AArch64 assembler and not (currently) + written to any object files. + + -- : BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no + overflow check. + + -- : 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. + + -- : BFD_RELOC_VISIUM_HI16 + -- : BFD_RELOC_VISIUM_LO16 + -- : BFD_RELOC_VISIUM_IM16 + -- : BFD_RELOC_VISIUM_REL16 + -- : BFD_RELOC_VISIUM_HI16_PCREL + -- : BFD_RELOC_VISIUM_LO16_PCREL + -- : BFD_RELOC_VISIUM_IM16_PCREL + Visium Relocations. + + + 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 + { + /* N.B. Update bfd_flavour_name if you change this. */ + 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 *, struct bfd_link_info *); + /* 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##_get_symbol_version_string, \ + 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)) + const char *(*_bfd_get_symbol_version_string) + (bfd *, struct bfd_symbol *, bfd_boolean *); + #define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h)) + 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_link_check_relocs, \ + 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 *); + + /* Check the relocations in the bfd for validity. */ + bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *); + + /* 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_iterate_over_targets' +................................... + +*Synopsis* + const bfd_target *bfd_iterate_over_targets + (int (*func) (const bfd_target *, void *), + void *data); + *Description* +Call FUNC for each target in the list of BFD target vectors, passing +DATA to FUNC. Stop iterating if FUNC returns a non-zero result, and +return that target vector. Return NULL if FUNC always returns zero. + +2.12.1.6 `bfd_flavour_name' +........................... + +*Synopsis* + const char *bfd_flavour_name (enum bfd_flavour flavour); + *Description* +Return the string form of FLAVOUR. + + +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. */ + #define bfd_mach_sparc_v8plusc 11 /* with UA2005 and T1 add'ns. */ + #define bfd_mach_sparc_v9c 12 /* with UA2005 and T1 add'ns. */ + #define bfd_mach_sparc_v8plusd 13 /* with UA2007 and T3 add'ns. */ + #define bfd_mach_sparc_v9d 14 /* with UA2007 and T3 add'ns. */ + #define bfd_mach_sparc_v8pluse 15 /* with OSA2001 and T4 add'ns (no IMA). */ + #define bfd_mach_sparc_v9e 16 /* with OSA2001 and T4 add'ns (no IMA). */ + #define bfd_mach_sparc_v8plusv 17 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ + #define bfd_mach_sparc_v9v 18 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */ + #define bfd_mach_sparc_v8plusm 19 /* with OSA2015 and M7 add'ns. */ + #define bfd_mach_sparc_v9m 20 /* with OSA2015 and M7 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_v9m \ + && (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 \ + && (mach) != bfd_mach_sparc_v8plusc \ + && (mach) != bfd_mach_sparc_v8plusd \ + && (mach) != bfd_mach_sparc_v8pluse \ + && (mach) != bfd_mach_sparc_v8plusv \ + && (mach) != bfd_mach_sparc_v8plusm) + 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_octeon3 6503 + #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_iamcu, /* Intel MCU */ + #define bfd_mach_iamcu (1 << 8) + #define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) + #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) + 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_a4 0 + #define bfd_mach_arc_a5 1 + #define bfd_mach_arc_arc600 2 + #define bfd_mach_arc_arc601 4 + #define bfd_mach_arc_arc700 3 + #define bfd_mach_arc_arcv2 5 + 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_ft32, /* The ft32 processor */ + #define bfd_mach_ft32 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_riscv, + #define bfd_mach_riscv32 132 + #define bfd_mach_riscv64 164 + 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, /* Nios II */ + #define bfd_mach_nios2 0 + #define bfd_mach_nios2r1 1 + #define bfd_mach_nios2r2 2 + bfd_arch_visium, /* Visium */ + #define bfd_mach_visium 1 + 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 buildid); + *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, const char *dir, bfd_boolean include_dirs, + get_func_type get, check_func_type check); + *Description* +Searches for a debug information file corresponding to ABFD. The name +of the separate debug info file is returned by the GET function. This +function scans various fixed locations in the filesystem, including the +file tree rooted at DIR. If the INCLUDE_DIRS parameter is true then +the directory components of ABFD's filename will be included in the +searched locations. + + Returns the filename of the first file to be found which receives a +TRUE result from the CHECK function. 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, the search will take place starting at the current +directory. + + *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, the search will take place starting at the current +directory. + + *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. + +2.14.1.26 `get_build_id' +........................ + +*Synopsis* + struct bfd_build_id * get_build_id + (bfd *abfd); + *Description* +Finds the build-id associated with ABFD. If the build-id is extracted +from the note section then a build-id structure is built for it, using +memory allocated to ABFD, and this is then attached to the ABFD. + + Returns a pointer to the build-id structure if a build-id could be +found. If no build-id is found NULL is returned and error code is set. + +2.14.1.27 `get_build_id_name' +............................. + +*Synopsis* + char * get_build_id_name + (bfd *abfd, unsigned long *build_id_out) + *Description* +Searches ABFD for a build-id, and then constructs a pathname from it. +The path is computed as .build-id/NN/NN+NN.debug where NNNN+NN is the +build-id value as a hexadecimal string. + + Returns the constructed filename or NULL upon error. It is the +caller's responsibility to free the memory used to hold the filename. +If a filename is returned then the BUILD_ID_OUT parameter is set to a +pointer to the build_id structure. + +2.14.1.28 `check_build_id_file' +............................... + +*Synopsis* + bfd_boolean check_build_id_file + (char *name, unsigned long buildid); + *Description* +Checks to see if NAME is a readable file and if its build-id matches +BUILDID. + + Returns TRUE if the file exists, is readable, and contains a build-id +which matches BUILD-ID. + +2.14.1.29 `bfd_follow_build_id_debuglink' +......................................... + +*Synopsis* + char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir); + *Description* +Takes ABFD and searches it for a .note.gnu.build-id section. If this +section is found, it extracts the value of the NT_GNU_BUILD_ID note, +which should be a hexadecimal value NNNN+NN (for 32+ hex digits). It +then searches the filesystem for a file named .BUILD-ID/NN/NN+NN.DEBUG +in a set of standard locations, including the directory tree rooted at +DIR. The filename of the first matching file to be found is returned. +A matching file should contain a .note.gnu.build-id section with the +same NNNN+NN note as ABFD, although this check is currently not +implemented. + + If DIR is NULL, the search will take place starting at the current +directory. + + *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. + + +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. + +2.17.3.9 `bfd_link_check_relocs' +................................ + +*Synopsis* + bfd_boolean bfd_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); + *Description* +Checks the relocs in ABFD for validity. Does not execute the relocs. +Return TRUE if everything is OK, FALSE otherwise. This is the external +entry point to this code. + +2.17.3.10 `_bfd_generic_link_check_relocs' +.......................................... + +*Synopsis* + bfd_boolean _bfd_generic_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); + *Description* +Stub function for targets that do not implement reloc checking. Return +TRUE. This is an internal function. It should not be called from +outside the BFD library. + +2.17.3.11 `bfd_merge_private_bfd_data' +...................................... + +*Synopsis* + bfd_boolean bfd_merge_private_bfd_data + (bfd *ibfd, struct bfd_link_info *info); + *Description* +Merge private BFD information from the BFD IBFD to the the output file +BFD 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, info) \ + BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \ + (ibfd, info)) + +2.17.3.12 `_bfd_generic_verify_endian_match' +............................................ + +*Synopsis* + bfd_boolean _bfd_generic_verify_endian_match + (bfd *ibfd, struct bfd_link_info *info); + *Description* +Can be used from / for bfd_merge_private_bfd_data to check that +endianness matches between input and output file. Returns TRUE for a +match, otherwise returns FALSE and emits an error. + + +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 + }; + + typedef asection * (*coff_gc_mark_hook_fn) + (asection *, struct bfd_link_info *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *); +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_link_check_relocs: Writing the symbol table. + (line 114) +* _bfd_generic_make_empty_symbol: symbol handling functions. + (line 92) +* _bfd_generic_verify_endian_match: Writing the symbol table. + (line 143) +* _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 290) +* bfd_arch_bits_per_address: Architectures. (line 630) +* bfd_arch_bits_per_byte: Architectures. (line 622) +* bfd_arch_default_fill: Architectures. (line 711) +* bfd_arch_get_compatible: Architectures. (line 565) +* bfd_arch_list: Architectures. (line 556) +* bfd_arch_mach_octets_per_byte: Architectures. (line 699) +* BFD_ARELOC_BFIN_ADD: howto manager. (line 1208) +* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1259) +* BFD_ARELOC_BFIN_AND: howto manager. (line 1229) +* BFD_ARELOC_BFIN_COMP: howto manager. (line 1250) +* BFD_ARELOC_BFIN_CONST: howto manager. (line 1205) +* BFD_ARELOC_BFIN_DIV: howto manager. (line 1217) +* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1256) +* BFD_ARELOC_BFIN_LAND: howto manager. (line 1238) +* BFD_ARELOC_BFIN_LEN: howto manager. (line 1244) +* BFD_ARELOC_BFIN_LOR: howto manager. (line 1241) +* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1223) +* BFD_ARELOC_BFIN_MOD: howto manager. (line 1220) +* BFD_ARELOC_BFIN_MULT: howto manager. (line 1214) +* BFD_ARELOC_BFIN_NEG: howto manager. (line 1247) +* BFD_ARELOC_BFIN_OR: howto manager. (line 1232) +* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1253) +* BFD_ARELOC_BFIN_PUSH: howto manager. (line 1202) +* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1226) +* BFD_ARELOC_BFIN_SUB: howto manager. (line 1211) +* BFD_ARELOC_BFIN_XOR: howto manager. (line 1235) +* 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_compression_header: Miscellaneous. (line 362) +* 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_convert_section_contents: Miscellaneous. (line 398) +* bfd_convert_section_size: Miscellaneous. (line 388) +* bfd_copy_private_bfd_data: Miscellaneous. (line 160) +* bfd_copy_private_header_data: Miscellaneous. (line 142) +* bfd_copy_private_section_data: section prototypes. (line 288) +* 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 392) +* bfd_decode_symclass: symbol handling functions. + (line 111) +* bfd_default_arch_struct: Architectures. (line 577) +* bfd_default_compatible: Architectures. (line 639) +* bfd_default_reloc_type_lookup: howto manager. (line 3800) +* bfd_default_scan: Architectures. (line 648) +* bfd_default_set_arch_mach: Architectures. (line 595) +* bfd_demangle: Miscellaneous. (line 341) +* bfd_emul_get_commonpagesize: Miscellaneous. (line 321) +* bfd_emul_get_maxpagesize: Miscellaneous. (line 301) +* bfd_emul_set_commonpagesize: Miscellaneous. (line 332) +* bfd_emul_set_maxpagesize: Miscellaneous. (line 312) +* bfd_errmsg: Error reporting. (line 67) +* bfd_fdopenr: Opening and Closing. + (line 57) +* bfd_fill_in_gnu_debuglink_section: Opening and Closing. + (line 406) +* bfd_find_target: bfd_target. (line 475) +* bfd_find_version_for_sym: Writing the symbol table. + (line 81) +* bfd_flavour_name: bfd_target. (line 538) +* bfd_follow_build_id_debuglink: Opening and Closing. + (line 464) +* bfd_follow_gnu_debugaltlink: Opening and Closing. + (line 372) +* bfd_follow_gnu_debuglink: Opening and Closing. + (line 351) +* 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 314) +* bfd_generic_gc_sections: howto manager. (line 3831) +* bfd_generic_get_relocated_section_contents: howto manager. (line 3861) +* bfd_generic_is_group_section: section prototypes. (line 306) +* bfd_generic_lookup_section_flags: howto manager. (line 3841) +* bfd_generic_merge_sections: howto manager. (line 3851) +* bfd_generic_relax_section: howto manager. (line 3818) +* bfd_get_alt_debug_link_info: Opening and Closing. + (line 300) +* bfd_get_arch: Architectures. (line 606) +* bfd_get_arch_info: Architectures. (line 658) +* bfd_get_arch_size: Miscellaneous. (line 63) +* bfd_get_compression_header_size: Miscellaneous. (line 377) +* bfd_get_debug_link_info: Opening and Closing. + (line 289) +* bfd_get_error: Error reporting. (line 48) +* bfd_get_gp_size: Miscellaneous. (line 106) +* bfd_get_linker_section: section prototypes. (line 38) +* bfd_get_mach: Architectures. (line 614) +* bfd_get_mtime: Miscellaneous. (line 451) +* bfd_get_next_mapent: Archives. (line 58) +* bfd_get_next_section_by_name: section prototypes. (line 26) +* bfd_get_next_section_id: section prototypes. (line 156) +* bfd_get_reloc_code_name: howto manager. (line 3809) +* 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 47) +* bfd_get_section_contents: section prototypes. (line 261) +* bfd_get_sign_extend_vma: Miscellaneous. (line 78) +* bfd_get_size <1>: Miscellaneous. (line 460) +* bfd_get_size: Internal. (line 25) +* bfd_get_symtab_upper_bound: symbol handling functions. + (line 6) +* bfd_get_target_info: bfd_target. (line 491) +* bfd_get_unique_section_name: section prototypes. (line 66) +* 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_iterate_over_targets: bfd_target. (line 526) +* bfd_link_check_relocs: Writing the symbol table. + (line 103) +* bfd_link_split_section: Writing the symbol table. + (line 44) +* bfd_log2: Internal. (line 164) +* bfd_lookup_arch: Architectures. (line 666) +* 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 145) +* bfd_make_section_anyway: section prototypes. (line 116) +* bfd_make_section_anyway_with_flags: section prototypes. (line 98) +* bfd_make_section_old_way: section prototypes. (line 78) +* bfd_make_section_with_flags: section prototypes. (line 132) +* bfd_make_writable: Opening and Closing. + (line 211) +* bfd_malloc_and_get_section: section prototypes. (line 278) +* bfd_map_over_sections: section prototypes. (line 188) +* bfd_merge_private_bfd_data: Writing the symbol table. + (line 125) +* bfd_mmap: Miscellaneous. (line 489) +* bfd_octets_per_byte: Architectures. (line 689) +* 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 677) +* bfd_printable_name: Architectures. (line 537) +* 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 2596) +* BFD_RELOC_16C_ABS20_C: howto manager. (line 2597) +* BFD_RELOC_16C_ABS24: howto manager. (line 2598) +* BFD_RELOC_16C_ABS24_C: howto manager. (line 2599) +* BFD_RELOC_16C_DISP04: howto manager. (line 2576) +* BFD_RELOC_16C_DISP04_C: howto manager. (line 2577) +* BFD_RELOC_16C_DISP08: howto manager. (line 2578) +* BFD_RELOC_16C_DISP08_C: howto manager. (line 2579) +* BFD_RELOC_16C_DISP16: howto manager. (line 2580) +* BFD_RELOC_16C_DISP16_C: howto manager. (line 2581) +* BFD_RELOC_16C_DISP24: howto manager. (line 2582) +* BFD_RELOC_16C_DISP24_C: howto manager. (line 2583) +* BFD_RELOC_16C_DISP24a: howto manager. (line 2584) +* BFD_RELOC_16C_DISP24a_C: howto manager. (line 2585) +* BFD_RELOC_16C_IMM04: howto manager. (line 2600) +* BFD_RELOC_16C_IMM04_C: howto manager. (line 2601) +* BFD_RELOC_16C_IMM16: howto manager. (line 2602) +* BFD_RELOC_16C_IMM16_C: howto manager. (line 2603) +* BFD_RELOC_16C_IMM20: howto manager. (line 2604) +* BFD_RELOC_16C_IMM20_C: howto manager. (line 2605) +* BFD_RELOC_16C_IMM24: howto manager. (line 2606) +* BFD_RELOC_16C_IMM24_C: howto manager. (line 2607) +* BFD_RELOC_16C_IMM32: howto manager. (line 2608) +* BFD_RELOC_16C_IMM32_C: howto manager. (line 2609) +* BFD_RELOC_16C_NUM08: howto manager. (line 2570) +* BFD_RELOC_16C_NUM08_C: howto manager. (line 2571) +* BFD_RELOC_16C_NUM16: howto manager. (line 2572) +* BFD_RELOC_16C_NUM16_C: howto manager. (line 2573) +* BFD_RELOC_16C_NUM32: howto manager. (line 2574) +* BFD_RELOC_16C_NUM32_C: howto manager. (line 2575) +* BFD_RELOC_16C_REG04: howto manager. (line 2586) +* BFD_RELOC_16C_REG04_C: howto manager. (line 2587) +* BFD_RELOC_16C_REG04a: howto manager. (line 2588) +* BFD_RELOC_16C_REG04a_C: howto manager. (line 2589) +* BFD_RELOC_16C_REG14: howto manager. (line 2590) +* BFD_RELOC_16C_REG14_C: howto manager. (line 2591) +* BFD_RELOC_16C_REG16: howto manager. (line 2592) +* BFD_RELOC_16C_REG16_C: howto manager. (line 2593) +* BFD_RELOC_16C_REG20: howto manager. (line 2594) +* BFD_RELOC_16C_REG20_C: howto manager. (line 2595) +* 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 592) +* BFD_RELOC_386_GLOB_DAT: howto manager. (line 593) +* BFD_RELOC_386_GOT32: howto manager. (line 590) +* BFD_RELOC_386_GOT32X: howto manager. (line 614) +* BFD_RELOC_386_GOTOFF: howto manager. (line 596) +* BFD_RELOC_386_GOTPC: howto manager. (line 597) +* BFD_RELOC_386_IRELATIVE: howto manager. (line 613) +* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 594) +* BFD_RELOC_386_PLT32: howto manager. (line 591) +* BFD_RELOC_386_RELATIVE: howto manager. (line 595) +* BFD_RELOC_386_TLS_DESC: howto manager. (line 612) +* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 611) +* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 607) +* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 608) +* BFD_RELOC_386_TLS_GD: howto manager. (line 602) +* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 610) +* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 600) +* BFD_RELOC_386_TLS_IE: howto manager. (line 599) +* BFD_RELOC_386_TLS_IE_32: howto manager. (line 605) +* BFD_RELOC_386_TLS_LDM: howto manager. (line 603) +* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 604) +* BFD_RELOC_386_TLS_LE: howto manager. (line 601) +* BFD_RELOC_386_TLS_LE_32: howto manager. (line 606) +* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 598) +* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 609) +* BFD_RELOC_390_12: howto manager. (line 2179) +* BFD_RELOC_390_20: howto manager. (line 2291) +* BFD_RELOC_390_COPY: howto manager. (line 2188) +* BFD_RELOC_390_GLOB_DAT: howto manager. (line 2191) +* BFD_RELOC_390_GOT12: howto manager. (line 2182) +* BFD_RELOC_390_GOT16: howto manager. (line 2203) +* BFD_RELOC_390_GOT20: howto manager. (line 2292) +* BFD_RELOC_390_GOT64: howto manager. (line 2233) +* BFD_RELOC_390_GOTENT: howto manager. (line 2239) +* BFD_RELOC_390_GOTOFF64: howto manager. (line 2242) +* BFD_RELOC_390_GOTPC: howto manager. (line 2200) +* BFD_RELOC_390_GOTPCDBL: howto manager. (line 2230) +* BFD_RELOC_390_GOTPLT12: howto manager. (line 2245) +* BFD_RELOC_390_GOTPLT16: howto manager. (line 2248) +* BFD_RELOC_390_GOTPLT20: howto manager. (line 2293) +* BFD_RELOC_390_GOTPLT32: howto manager. (line 2251) +* BFD_RELOC_390_GOTPLT64: howto manager. (line 2254) +* BFD_RELOC_390_GOTPLTENT: howto manager. (line 2257) +* BFD_RELOC_390_IRELATIVE: howto manager. (line 2297) +* BFD_RELOC_390_JMP_SLOT: howto manager. (line 2194) +* BFD_RELOC_390_PC12DBL: howto manager. (line 2206) +* BFD_RELOC_390_PC16DBL: howto manager. (line 2212) +* BFD_RELOC_390_PC24DBL: howto manager. (line 2218) +* BFD_RELOC_390_PC32DBL: howto manager. (line 2224) +* BFD_RELOC_390_PLT12DBL: howto manager. (line 2209) +* BFD_RELOC_390_PLT16DBL: howto manager. (line 2215) +* BFD_RELOC_390_PLT24DBL: howto manager. (line 2221) +* BFD_RELOC_390_PLT32: howto manager. (line 2185) +* BFD_RELOC_390_PLT32DBL: howto manager. (line 2227) +* BFD_RELOC_390_PLT64: howto manager. (line 2236) +* BFD_RELOC_390_PLTOFF16: howto manager. (line 2260) +* BFD_RELOC_390_PLTOFF32: howto manager. (line 2263) +* BFD_RELOC_390_PLTOFF64: howto manager. (line 2266) +* BFD_RELOC_390_RELATIVE: howto manager. (line 2197) +* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 2286) +* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 2287) +* BFD_RELOC_390_TLS_GD32: howto manager. (line 2272) +* BFD_RELOC_390_TLS_GD64: howto manager. (line 2273) +* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 2270) +* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 2274) +* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 2294) +* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 2275) +* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 2276) +* BFD_RELOC_390_TLS_IE32: howto manager. (line 2279) +* BFD_RELOC_390_TLS_IE64: howto manager. (line 2280) +* BFD_RELOC_390_TLS_IEENT: howto manager. (line 2281) +* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 2271) +* BFD_RELOC_390_TLS_LDM32: howto manager. (line 2277) +* BFD_RELOC_390_TLS_LDM64: howto manager. (line 2278) +* BFD_RELOC_390_TLS_LDO32: howto manager. (line 2284) +* BFD_RELOC_390_TLS_LDO64: howto manager. (line 2285) +* BFD_RELOC_390_TLS_LE32: howto manager. (line 2282) +* BFD_RELOC_390_TLS_LE64: howto manager. (line 2283) +* BFD_RELOC_390_TLS_LOAD: howto manager. (line 2269) +* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 2288) +* 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 2724) +* BFD_RELOC_860_GLOB_DAT: howto manager. (line 2725) +* BFD_RELOC_860_HAGOT: howto manager. (line 2750) +* BFD_RELOC_860_HAGOTOFF: howto manager. (line 2751) +* BFD_RELOC_860_HAPC: howto manager. (line 2752) +* BFD_RELOC_860_HIGH: howto manager. (line 2753) +* BFD_RELOC_860_HIGHADJ: howto manager. (line 2749) +* BFD_RELOC_860_HIGOT: howto manager. (line 2754) +* BFD_RELOC_860_HIGOTOFF: howto manager. (line 2755) +* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 2726) +* BFD_RELOC_860_LOGOT0: howto manager. (line 2738) +* BFD_RELOC_860_LOGOT1: howto manager. (line 2740) +* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 2742) +* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 2744) +* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 2746) +* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 2747) +* BFD_RELOC_860_LOPC: howto manager. (line 2748) +* BFD_RELOC_860_LOW0: howto manager. (line 2731) +* BFD_RELOC_860_LOW1: howto manager. (line 2733) +* BFD_RELOC_860_LOW2: howto manager. (line 2735) +* BFD_RELOC_860_LOW3: howto manager. (line 2737) +* BFD_RELOC_860_PC16: howto manager. (line 2730) +* BFD_RELOC_860_PC26: howto manager. (line 2728) +* BFD_RELOC_860_PLT26: howto manager. (line 2729) +* BFD_RELOC_860_RELATIVE: howto manager. (line 2727) +* BFD_RELOC_860_SPGOT0: howto manager. (line 2739) +* BFD_RELOC_860_SPGOT1: howto manager. (line 2741) +* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 2743) +* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 2745) +* BFD_RELOC_860_SPLIT0: howto manager. (line 2732) +* BFD_RELOC_860_SPLIT1: howto manager. (line 2734) +* BFD_RELOC_860_SPLIT2: howto manager. (line 2736) +* 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 3170) +* BFD_RELOC_AARCH64_16_PCREL: howto manager. (line 3177) +* BFD_RELOC_AARCH64_32: howto manager. (line 3169) +* BFD_RELOC_AARCH64_32_PCREL: howto manager. (line 3176) +* BFD_RELOC_AARCH64_64: howto manager. (line 3168) +* BFD_RELOC_AARCH64_64_PCREL: howto manager. (line 3175) +* BFD_RELOC_AARCH64_ADD_LO12: howto manager. (line 3242) +* BFD_RELOC_AARCH64_ADR_GOT_PAGE: howto manager. (line 3299) +* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL: howto manager. (line 3237) +* BFD_RELOC_AARCH64_ADR_HI21_PCREL: howto manager. (line 3233) +* BFD_RELOC_AARCH64_ADR_LO21_PCREL: howto manager. (line 3229) +* BFD_RELOC_AARCH64_BRANCH19: howto manager. (line 3257) +* BFD_RELOC_AARCH64_CALL26: howto manager. (line 3267) +* BFD_RELOC_AARCH64_COPY: howto manager. (line 3499) +* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP: howto manager. (line 3533) +* BFD_RELOC_AARCH64_GLOB_DAT: howto manager. (line 3502) +* BFD_RELOC_AARCH64_GOT_LD_PREL19: howto manager. (line 3292) +* BFD_RELOC_AARCH64_IRELATIVE: howto manager. (line 3523) +* BFD_RELOC_AARCH64_JUMP26: howto manager. (line 3262) +* BFD_RELOC_AARCH64_JUMP_SLOT: howto manager. (line 3505) +* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC: howto manager. (line 3309) +* BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14: howto manager. (line 3326) +* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: howto manager. (line 3304) +* BFD_RELOC_AARCH64_LD64_GOTOFF_LO15: howto manager. (line 3322) +* BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15: howto manager. (line 3330) +* BFD_RELOC_AARCH64_LD_GOT_LO12_NC: howto manager. (line 3551) +* BFD_RELOC_AARCH64_LD_LO19_PCREL: howto manager. (line 3224) +* BFD_RELOC_AARCH64_LDST128_LO12: howto manager. (line 3287) +* BFD_RELOC_AARCH64_LDST16_LO12: howto manager. (line 3272) +* BFD_RELOC_AARCH64_LDST32_LO12: howto manager. (line 3277) +* BFD_RELOC_AARCH64_LDST64_LO12: howto manager. (line 3282) +* BFD_RELOC_AARCH64_LDST8_LO12: howto manager. (line 3247) +* BFD_RELOC_AARCH64_LDST_LO12: howto manager. (line 3537) +* BFD_RELOC_AARCH64_MOVW_G0: howto manager. (line 3181) +* BFD_RELOC_AARCH64_MOVW_G0_NC: howto manager. (line 3185) +* BFD_RELOC_AARCH64_MOVW_G0_S: howto manager. (line 3209) +* BFD_RELOC_AARCH64_MOVW_G1: howto manager. (line 3189) +* BFD_RELOC_AARCH64_MOVW_G1_NC: howto manager. (line 3193) +* BFD_RELOC_AARCH64_MOVW_G1_S: howto manager. (line 3214) +* BFD_RELOC_AARCH64_MOVW_G2: howto manager. (line 3197) +* BFD_RELOC_AARCH64_MOVW_G2_NC: howto manager. (line 3201) +* BFD_RELOC_AARCH64_MOVW_G2_S: howto manager. (line 3219) +* BFD_RELOC_AARCH64_MOVW_G3: howto manager. (line 3205) +* BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC: howto manager. (line 3314) +* BFD_RELOC_AARCH64_MOVW_GOTOFF_G1: howto manager. (line 3318) +* BFD_RELOC_AARCH64_NONE: howto manager. (line 3165) +* BFD_RELOC_AARCH64_NULL: howto manager. (line 3162) +* BFD_RELOC_AARCH64_RELATIVE: howto manager. (line 3508) +* BFD_RELOC_AARCH64_RELOC_END: howto manager. (line 3526) +* BFD_RELOC_AARCH64_RELOC_START: howto manager. (line 3156) +* BFD_RELOC_AARCH64_TLS_DTPMOD: howto manager. (line 3511) +* BFD_RELOC_AARCH64_TLS_DTPREL: howto manager. (line 3514) +* BFD_RELOC_AARCH64_TLS_TPREL: howto manager. (line 3517) +* BFD_RELOC_AARCH64_TLSDESC: howto manager. (line 3520) +* BFD_RELOC_AARCH64_TLSDESC_ADD: howto manager. (line 3493) +* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager. (line 3481) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: howto manager. (line 3472) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: howto manager. (line 3469) +* BFD_RELOC_AARCH64_TLSDESC_CALL: howto manager. (line 3496) +* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager. (line 3478) +* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager. (line 3475) +* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC: howto manager. (line 3559) +* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19: howto manager. (line 3466) +* BFD_RELOC_AARCH64_TLSDESC_LDR: howto manager. (line 3490) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC: howto manager. (line 3487) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G1: howto manager. (line 3484) +* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: howto manager. (line 3343) +* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21: howto manager. (line 3334) +* BFD_RELOC_AARCH64_TLSGD_ADR_PREL21: howto manager. (line 3340) +* BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC: howto manager. (line 3348) +* BFD_RELOC_AARCH64_TLSGD_MOVW_G1: howto manager. (line 3351) +* BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager. + (line 3354) +* BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager. + (line 3360) +* BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager. + (line 3357) +* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager. + (line 3555) +* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 3363) +* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager. + (line 3366) +* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager. (line 3369) +* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12: howto manager. (line 3372) +* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: howto manager. (line 3375) +* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: howto manager. (line 3378) +* BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC: howto manager. (line 3382) +* BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21: howto manager. (line 3387) +* BFD_RELOC_AARCH64_TLSLD_ADR_PREL21: howto manager. (line 3391) +* BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12: howto manager. (line 3395) +* BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC: howto manager. + (line 3399) +* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 3403) +* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC: howto manager. + (line 3407) +* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 3411) +* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: howto manager. + (line 3415) +* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager. (line 3419) +* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: howto manager. + (line 3423) +* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager. (line 3542) +* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC: howto manager. + (line 3547) +* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0: howto manager. (line 3427) +* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: howto manager. (line 3430) +* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: howto manager. (line 3433) +* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: howto manager. (line 3436) +* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: howto manager. (line 3439) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager. (line 3457) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager. (line 3460) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager. (line 3463) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager. (line 3451) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager. (line 3454) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager. (line 3445) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager. (line 3448) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager. (line 3442) +* BFD_RELOC_AARCH64_TSTBR14: howto manager. (line 3252) +* BFD_RELOC_AC_SECTOFF_S9: howto manager. (line 1110) +* BFD_RELOC_AC_SECTOFF_S9_1: howto manager. (line 1111) +* BFD_RELOC_AC_SECTOFF_S9_2: howto manager. (line 1112) +* BFD_RELOC_AC_SECTOFF_U8: howto manager. (line 1107) +* BFD_RELOC_AC_SECTOFF_U8_1: howto manager. (line 1108) +* BFD_RELOC_AC_SECTOFF_U8_2: howto manager. (line 1109) +* 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_16: howto manager. (line 1079) +* BFD_RELOC_ARC_24: howto manager. (line 1080) +* BFD_RELOC_ARC_32: howto manager. (line 1081) +* BFD_RELOC_ARC_32_ME: howto manager. (line 1101) +* BFD_RELOC_ARC_32_ME_S: howto manager. (line 1102) +* BFD_RELOC_ARC_32_PCREL: howto manager. (line 1119) +* BFD_RELOC_ARC_8: howto manager. (line 1078) +* BFD_RELOC_ARC_COPY: howto manager. (line 1124) +* BFD_RELOC_ARC_GLOB_DAT: howto manager. (line 1125) +* BFD_RELOC_ARC_GOT32: howto manager. (line 1121) +* BFD_RELOC_ARC_GOTOFF: howto manager. (line 1128) +* BFD_RELOC_ARC_GOTPC: howto manager. (line 1129) +* BFD_RELOC_ARC_GOTPC32: howto manager. (line 1122) +* BFD_RELOC_ARC_JMP_SLOT: howto manager. (line 1126) +* BFD_RELOC_ARC_N16: howto manager. (line 1083) +* BFD_RELOC_ARC_N24: howto manager. (line 1084) +* BFD_RELOC_ARC_N32: howto manager. (line 1085) +* BFD_RELOC_ARC_N32_ME: howto manager. (line 1103) +* BFD_RELOC_ARC_N8: howto manager. (line 1082) +* BFD_RELOC_ARC_NONE: howto manager. (line 1077) +* BFD_RELOC_ARC_NPS_CMEM16: howto manager. (line 1144) +* BFD_RELOC_ARC_PC32: howto manager. (line 1120) +* BFD_RELOC_ARC_PLT32: howto manager. (line 1123) +* BFD_RELOC_ARC_RELATIVE: howto manager. (line 1127) +* BFD_RELOC_ARC_S13_PCREL: howto manager. (line 1099) +* BFD_RELOC_ARC_S21H_PCREL: howto manager. (line 1088) +* BFD_RELOC_ARC_S21H_PCREL_PLT: howto manager. (line 1143) +* BFD_RELOC_ARC_S21W_PCREL: howto manager. (line 1089) +* BFD_RELOC_ARC_S21W_PCREL_PLT: howto manager. (line 1130) +* BFD_RELOC_ARC_S25H_PCREL: howto manager. (line 1090) +* BFD_RELOC_ARC_S25H_PCREL_PLT: howto manager. (line 1131) +* BFD_RELOC_ARC_S25W_PCREL: howto manager. (line 1091) +* BFD_RELOC_ARC_S25W_PCREL_PLT: howto manager. (line 1142) +* BFD_RELOC_ARC_SDA: howto manager. (line 1086) +* BFD_RELOC_ARC_SDA16_LD: howto manager. (line 1096) +* BFD_RELOC_ARC_SDA16_LD1: howto manager. (line 1097) +* BFD_RELOC_ARC_SDA16_LD2: howto manager. (line 1098) +* BFD_RELOC_ARC_SDA16_ST2: howto manager. (line 1118) +* BFD_RELOC_ARC_SDA32: howto manager. (line 1092) +* BFD_RELOC_ARC_SDA32_ME: howto manager. (line 1105) +* BFD_RELOC_ARC_SDA_12: howto manager. (line 1117) +* BFD_RELOC_ARC_SDA_LDST: howto manager. (line 1093) +* BFD_RELOC_ARC_SDA_LDST1: howto manager. (line 1094) +* BFD_RELOC_ARC_SDA_LDST2: howto manager. (line 1095) +* BFD_RELOC_ARC_SECTOFF: howto manager. (line 1087) +* BFD_RELOC_ARC_SECTOFF_1: howto manager. (line 1115) +* BFD_RELOC_ARC_SECTOFF_2: howto manager. (line 1116) +* BFD_RELOC_ARC_SECTOFF_ME: howto manager. (line 1104) +* BFD_RELOC_ARC_SECTOFF_ME_1: howto manager. (line 1113) +* BFD_RELOC_ARC_SECTOFF_ME_2: howto manager. (line 1114) +* BFD_RELOC_ARC_TLS_DTPMOD: howto manager. (line 1132) +* BFD_RELOC_ARC_TLS_DTPOFF: howto manager. (line 1138) +* BFD_RELOC_ARC_TLS_DTPOFF_S9: howto manager. (line 1139) +* BFD_RELOC_ARC_TLS_GD_CALL: howto manager. (line 1136) +* BFD_RELOC_ARC_TLS_GD_GOT: howto manager. (line 1134) +* BFD_RELOC_ARC_TLS_GD_LD: howto manager. (line 1135) +* BFD_RELOC_ARC_TLS_IE_GOT: howto manager. (line 1137) +* BFD_RELOC_ARC_TLS_LE_32: howto manager. (line 1141) +* BFD_RELOC_ARC_TLS_LE_S9: howto manager. (line 1140) +* BFD_RELOC_ARC_TLS_TPOFF: howto manager. (line 1133) +* BFD_RELOC_ARC_W: howto manager. (line 1100) +* BFD_RELOC_ARC_W_ME: howto manager. (line 1106) +* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 963) +* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 949) +* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 907) +* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 906) +* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 909) +* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 908) +* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 910) +* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 921) +* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 920) +* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 923) +* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 922) +* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 924) +* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 959) +* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 960) +* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 881) +* BFD_RELOC_ARM_GOT32: howto manager. (line 882) +* BFD_RELOC_ARM_GOT_PREL: howto manager. (line 887) +* BFD_RELOC_ARM_GOTOFF: howto manager. (line 885) +* BFD_RELOC_ARM_GOTPC: howto manager. (line 886) +* BFD_RELOC_ARM_HVC: howto manager. (line 956) +* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 970) +* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 948) +* BFD_RELOC_ARM_IN_POOL: howto manager. (line 966) +* BFD_RELOC_ARM_IRELATIVE: howto manager. (line 939) +* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 880) +* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 917) +* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 918) +* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 919) +* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 931) +* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 932) +* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 933) +* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 964) +* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 911) +* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 912) +* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 913) +* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 925) +* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 926) +* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 927) +* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 914) +* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 915) +* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 916) +* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 928) +* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 929) +* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 930) +* BFD_RELOC_ARM_LITERAL: howto manager. (line 965) +* BFD_RELOC_ARM_MOVT: howto manager. (line 871) +* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 873) +* BFD_RELOC_ARM_MOVW: howto manager. (line 870) +* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 872) +* BFD_RELOC_ARM_MULTI: howto manager. (line 958) +* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 844) +* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 967) +* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 815) +* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 811) +* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 825) +* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 829) +* BFD_RELOC_ARM_PLT32: howto manager. (line 883) +* BFD_RELOC_ARM_PREL31: howto manager. (line 867) +* BFD_RELOC_ARM_RELATIVE: howto manager. (line 884) +* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 856) +* BFD_RELOC_ARM_SBREL32: howto manager. (line 859) +* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 954) +* BFD_RELOC_ARM_SMC: howto manager. (line 955) +* BFD_RELOC_ARM_SWI: howto manager. (line 957) +* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 951) +* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 953) +* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 961) +* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 962) +* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 952) +* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 950) +* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 969) +* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 968) +* BFD_RELOC_ARM_TARGET1: howto manager. (line 852) +* BFD_RELOC_ARM_TARGET2: howto manager. (line 862) +* BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 900) +* BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 902) +* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 971) +* BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC: howto manager. (line 942) +* BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC: howto manager. (line 943) +* BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC: howto manager. (line 944) +* BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC: howto manager. (line 945) +* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 972) +* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 875) +* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 877) +* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 874) +* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 876) +* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 848) +* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 973) +* BFD_RELOC_ARM_TLS_CALL: howto manager. (line 899) +* BFD_RELOC_ARM_TLS_DESC: howto manager. (line 903) +* BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 901) +* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 894) +* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 893) +* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 890) +* BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 898) +* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 896) +* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 892) +* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 891) +* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 897) +* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 895) +* BFD_RELOC_ARM_V4BX: howto manager. (line 936) +* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1932) +* BFD_RELOC_AVR_16_PM: howto manager. (line 1936) +* BFD_RELOC_AVR_6: howto manager. (line 2023) +* BFD_RELOC_AVR_6_ADIW: howto manager. (line 2027) +* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1928) +* BFD_RELOC_AVR_8_HI: howto manager. (line 2035) +* BFD_RELOC_AVR_8_HLO: howto manager. (line 2039) +* BFD_RELOC_AVR_8_LO: howto manager. (line 2031) +* BFD_RELOC_AVR_CALL: howto manager. (line 2015) +* BFD_RELOC_AVR_DIFF16: howto manager. (line 2044) +* BFD_RELOC_AVR_DIFF32: howto manager. (line 2045) +* BFD_RELOC_AVR_DIFF8: howto manager. (line 2043) +* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1948) +* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1967) +* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1996) +* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 2010) +* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1944) +* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1990) +* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1962) +* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1986) +* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 2005) +* BFD_RELOC_AVR_LDI: howto manager. (line 2019) +* BFD_RELOC_AVR_LDS_STS_16: howto manager. (line 2053) +* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1940) +* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1980) +* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1957) +* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1976) +* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 2001) +* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1953) +* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1972) +* BFD_RELOC_AVR_PORT5: howto manager. (line 2061) +* BFD_RELOC_AVR_PORT6: howto manager. (line 2057) +* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 1162) +* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 1165) +* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 1168) +* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 1171) +* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 1150) +* BFD_RELOC_BFIN_16_IMM: howto manager. (line 1147) +* BFD_RELOC_BFIN_16_LOW: howto manager. (line 1159) +* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 1174) +* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 1177) +* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 1153) +* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 1156) +* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 1183) +* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 1184) +* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 1185) +* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 1186) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 1188) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 1189) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 1190) +* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 1187) +* BFD_RELOC_BFIN_GOT: howto manager. (line 1196) +* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 1180) +* BFD_RELOC_BFIN_GOTHI: howto manager. (line 1181) +* BFD_RELOC_BFIN_GOTLO: howto manager. (line 1182) +* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 1191) +* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1192) +* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1193) +* BFD_RELOC_BFIN_PLTPC: howto manager. (line 1199) +* BFD_RELOC_C6000_ABS_H16: howto manager. (line 1751) +* BFD_RELOC_C6000_ABS_L16: howto manager. (line 1750) +* BFD_RELOC_C6000_ABS_S16: howto manager. (line 1749) +* BFD_RELOC_C6000_ALIGN: howto manager. (line 1772) +* BFD_RELOC_C6000_COPY: howto manager. (line 1767) +* BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1765) +* BFD_RELOC_C6000_EHTYPE: howto manager. (line 1769) +* BFD_RELOC_C6000_FPHEAD: howto manager. (line 1773) +* BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1768) +* BFD_RELOC_C6000_NOCMP: howto manager. (line 1774) +* BFD_RELOC_C6000_PCR_H16: howto manager. (line 1770) +* BFD_RELOC_C6000_PCR_L16: howto manager. (line 1771) +* BFD_RELOC_C6000_PCR_S10: howto manager. (line 1747) +* BFD_RELOC_C6000_PCR_S12: howto manager. (line 1746) +* BFD_RELOC_C6000_PCR_S21: howto manager. (line 1745) +* BFD_RELOC_C6000_PCR_S7: howto manager. (line 1748) +* BFD_RELOC_C6000_PREL31: howto manager. (line 1766) +* BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1764) +* BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1763) +* BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1762) +* BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1759) +* BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1760) +* BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1761) +* BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1756) +* BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1757) +* BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1758) +* BFD_RELOC_C6000_SBR_S16: howto manager. (line 1755) +* BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1752) +* BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1753) +* BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1754) +* bfd_reloc_code_type: howto manager. (line 10) +* BFD_RELOC_CR16_ABS20: howto manager. (line 2624) +* BFD_RELOC_CR16_ABS24: howto manager. (line 2625) +* BFD_RELOC_CR16_DISP16: howto manager. (line 2635) +* BFD_RELOC_CR16_DISP20: howto manager. (line 2636) +* BFD_RELOC_CR16_DISP24: howto manager. (line 2637) +* BFD_RELOC_CR16_DISP24a: howto manager. (line 2638) +* BFD_RELOC_CR16_DISP4: howto manager. (line 2633) +* BFD_RELOC_CR16_DISP8: howto manager. (line 2634) +* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2644) +* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2642) +* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2643) +* BFD_RELOC_CR16_IMM16: howto manager. (line 2628) +* BFD_RELOC_CR16_IMM20: howto manager. (line 2629) +* BFD_RELOC_CR16_IMM24: howto manager. (line 2630) +* BFD_RELOC_CR16_IMM32: howto manager. (line 2631) +* BFD_RELOC_CR16_IMM32a: howto manager. (line 2632) +* BFD_RELOC_CR16_IMM4: howto manager. (line 2626) +* BFD_RELOC_CR16_IMM8: howto manager. (line 2627) +* BFD_RELOC_CR16_NUM16: howto manager. (line 2613) +* BFD_RELOC_CR16_NUM32: howto manager. (line 2614) +* BFD_RELOC_CR16_NUM32a: howto manager. (line 2615) +* BFD_RELOC_CR16_NUM8: howto manager. (line 2612) +* BFD_RELOC_CR16_REGREL0: howto manager. (line 2616) +* BFD_RELOC_CR16_REGREL14: howto manager. (line 2619) +* BFD_RELOC_CR16_REGREL14a: howto manager. (line 2620) +* BFD_RELOC_CR16_REGREL16: howto manager. (line 2621) +* BFD_RELOC_CR16_REGREL20: howto manager. (line 2622) +* BFD_RELOC_CR16_REGREL20a: howto manager. (line 2623) +* BFD_RELOC_CR16_REGREL4: howto manager. (line 2617) +* BFD_RELOC_CR16_REGREL4a: howto manager. (line 2618) +* BFD_RELOC_CR16_SWITCH16: howto manager. (line 2640) +* BFD_RELOC_CR16_SWITCH32: howto manager. (line 2641) +* BFD_RELOC_CR16_SWITCH8: howto manager. (line 2639) +* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2715) +* BFD_RELOC_CRIS_16_GOT: howto manager. (line 2691) +* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2711) +* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2717) +* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2697) +* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2719) +* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2714) +* BFD_RELOC_CRIS_32_GD: howto manager. (line 2712) +* BFD_RELOC_CRIS_32_GOT: howto manager. (line 2688) +* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2710) +* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2716) +* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2694) +* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2700) +* BFD_RELOC_CRIS_32_IE: howto manager. (line 2721) +* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2703) +* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2706) +* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2718) +* BFD_RELOC_CRIS_BDISP8: howto manager. (line 2669) +* BFD_RELOC_CRIS_COPY: howto manager. (line 2682) +* BFD_RELOC_CRIS_DTP: howto manager. (line 2713) +* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2720) +* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2683) +* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2684) +* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2677) +* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2685) +* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2675) +* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2671) +* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2673) +* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2676) +* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2678) +* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2670) +* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2672) +* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2674) +* BFD_RELOC_CRX_ABS16: howto manager. (line 2657) +* BFD_RELOC_CRX_ABS32: howto manager. (line 2658) +* BFD_RELOC_CRX_IMM16: howto manager. (line 2662) +* BFD_RELOC_CRX_IMM32: howto manager. (line 2663) +* BFD_RELOC_CRX_NUM16: howto manager. (line 2660) +* BFD_RELOC_CRX_NUM32: howto manager. (line 2661) +* BFD_RELOC_CRX_NUM8: howto manager. (line 2659) +* BFD_RELOC_CRX_REGREL12: howto manager. (line 2653) +* BFD_RELOC_CRX_REGREL22: howto manager. (line 2654) +* BFD_RELOC_CRX_REGREL28: howto manager. (line 2655) +* BFD_RELOC_CRX_REGREL32: howto manager. (line 2656) +* BFD_RELOC_CRX_REL16: howto manager. (line 2650) +* BFD_RELOC_CRX_REL24: howto manager. (line 2651) +* BFD_RELOC_CRX_REL32: howto manager. (line 2652) +* BFD_RELOC_CRX_REL4: howto manager. (line 2647) +* BFD_RELOC_CRX_REL8: howto manager. (line 2648) +* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2649) +* BFD_RELOC_CRX_SWITCH16: howto manager. (line 2665) +* BFD_RELOC_CRX_SWITCH32: howto manager. (line 2666) +* BFD_RELOC_CRX_SWITCH8: howto manager. (line 2664) +* BFD_RELOC_CTOR: howto manager. (line 805) +* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1266) +* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1262) +* BFD_RELOC_D10V_18: howto manager. (line 1271) +* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1274) +* BFD_RELOC_D30V_15: howto manager. (line 1289) +* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1293) +* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1297) +* BFD_RELOC_D30V_21: howto manager. (line 1302) +* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1306) +* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1310) +* BFD_RELOC_D30V_32: howto manager. (line 1315) +* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1318) +* BFD_RELOC_D30V_6: howto manager. (line 1277) +* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1280) +* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1284) +* BFD_RELOC_DLX_HI16_S: howto manager. (line 1321) +* BFD_RELOC_DLX_JMP26: howto manager. (line 1327) +* BFD_RELOC_DLX_LO16: howto manager. (line 1324) +* BFD_RELOC_EPIPHANY_HIGH: howto manager. (line 3761) +* BFD_RELOC_EPIPHANY_IMM11: howto manager. (line 3770) +* BFD_RELOC_EPIPHANY_IMM8: howto manager. (line 3774) +* BFD_RELOC_EPIPHANY_LOW: howto manager. (line 3764) +* BFD_RELOC_EPIPHANY_SIMM11: howto manager. (line 3767) +* BFD_RELOC_EPIPHANY_SIMM24: howto manager. (line 3758) +* BFD_RELOC_EPIPHANY_SIMM8: howto manager. (line 3755) +* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1796) +* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1804) +* BFD_RELOC_FR30_20: howto manager. (line 1780) +* BFD_RELOC_FR30_48: howto manager. (line 1777) +* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1784) +* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1788) +* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1792) +* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1800) +* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 506) +* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 507) +* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 508) +* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 509) +* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 511) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 512) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 513) +* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 510) +* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 517) +* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 530) +* BFD_RELOC_FRV_GOT12: howto manager. (line 503) +* BFD_RELOC_FRV_GOTHI: howto manager. (line 504) +* BFD_RELOC_FRV_GOTLO: howto manager. (line 505) +* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 514) +* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 515) +* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 516) +* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 519) +* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 520) +* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 521) +* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 525) +* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 526) +* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 527) +* BFD_RELOC_FRV_GPREL12: howto manager. (line 498) +* BFD_RELOC_FRV_GPREL32: howto manager. (line 500) +* BFD_RELOC_FRV_GPRELHI: howto manager. (line 501) +* BFD_RELOC_FRV_GPRELLO: howto manager. (line 502) +* BFD_RELOC_FRV_GPRELU12: howto manager. (line 499) +* BFD_RELOC_FRV_HI16: howto manager. (line 497) +* BFD_RELOC_FRV_LABEL16: howto manager. (line 494) +* BFD_RELOC_FRV_LABEL24: howto manager. (line 495) +* BFD_RELOC_FRV_LO16: howto manager. (line 496) +* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 529) +* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 518) +* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 532) +* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 522) +* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 523) +* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 524) +* BFD_RELOC_FRV_TLSOFF: howto manager. (line 528) +* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 531) +* BFD_RELOC_FT32_10: howto manager. (line 488) +* BFD_RELOC_FT32_17: howto manager. (line 490) +* BFD_RELOC_FT32_18: howto manager. (line 491) +* BFD_RELOC_FT32_20: howto manager. (line 489) +* BFD_RELOC_GPREL16: howto manager. (line 125) +* BFD_RELOC_GPREL32: howto manager. (line 126) +* BFD_RELOC_H8_DIR16A8: howto manager. (line 2784) +* BFD_RELOC_H8_DIR16R8: howto manager. (line 2785) +* BFD_RELOC_H8_DIR24A8: howto manager. (line 2786) +* BFD_RELOC_H8_DIR24R8: howto manager. (line 2787) +* BFD_RELOC_H8_DIR32A16: howto manager. (line 2788) +* BFD_RELOC_H8_DISP32A16: howto manager. (line 2789) +* 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 802) +* BFD_RELOC_I960_CALLJ: howto manager. (line 132) +* BFD_RELOC_IA64_COPY: howto manager. (line 2444) +* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 2389) +* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 2388) +* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 2391) +* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 2390) +* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 2454) +* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 2453) +* BFD_RELOC_IA64_DTPREL14: howto manager. (line 2456) +* BFD_RELOC_IA64_DTPREL22: howto manager. (line 2457) +* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 2460) +* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 2459) +* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 2458) +* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 2462) +* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 2461) +* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 2406) +* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 2405) +* BFD_RELOC_IA64_FPTR64I: howto manager. (line 2404) +* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 2408) +* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 2407) +* BFD_RELOC_IA64_GPREL22: howto manager. (line 2392) +* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 2395) +* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 2394) +* BFD_RELOC_IA64_GPREL64I: howto manager. (line 2393) +* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 2397) +* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 2396) +* BFD_RELOC_IA64_IMM14: howto manager. (line 2385) +* BFD_RELOC_IA64_IMM22: howto manager. (line 2386) +* BFD_RELOC_IA64_IMM64: howto manager. (line 2387) +* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 2443) +* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 2442) +* BFD_RELOC_IA64_LDXMOV: howto manager. (line 2446) +* BFD_RELOC_IA64_LTOFF22: howto manager. (line 2398) +* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 2445) +* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 2399) +* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 2455) +* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 2463) +* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 2420) +* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 2423) +* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 2422) +* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 2421) +* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 2425) +* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 2424) +* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 2452) +* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 2439) +* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 2438) +* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 2441) +* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 2440) +* BFD_RELOC_IA64_PCREL21B: howto manager. (line 2409) +* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 2410) +* BFD_RELOC_IA64_PCREL21F: howto manager. (line 2412) +* BFD_RELOC_IA64_PCREL21M: howto manager. (line 2411) +* BFD_RELOC_IA64_PCREL22: howto manager. (line 2413) +* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 2417) +* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 2416) +* BFD_RELOC_IA64_PCREL60B: howto manager. (line 2414) +* BFD_RELOC_IA64_PCREL64I: howto manager. (line 2415) +* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 2419) +* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 2418) +* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 2400) +* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 2401) +* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 2403) +* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 2402) +* BFD_RELOC_IA64_REL32LSB: howto manager. (line 2435) +* BFD_RELOC_IA64_REL32MSB: howto manager. (line 2434) +* BFD_RELOC_IA64_REL64LSB: howto manager. (line 2437) +* BFD_RELOC_IA64_REL64MSB: howto manager. (line 2436) +* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 2431) +* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 2430) +* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 2433) +* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 2432) +* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 2427) +* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 2426) +* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 2429) +* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 2428) +* BFD_RELOC_IA64_TPREL14: howto manager. (line 2447) +* BFD_RELOC_IA64_TPREL22: howto manager. (line 2448) +* BFD_RELOC_IA64_TPREL64I: howto manager. (line 2449) +* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 2451) +* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 2450) +* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 2337) +* BFD_RELOC_IP2K_BANK: howto manager. (line 2334) +* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 2345) +* BFD_RELOC_IP2K_FR9: howto manager. (line 2331) +* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 2358) +* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 2344) +* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 2349) +* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 2343) +* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 2348) +* BFD_RELOC_IP2K_PAGE3: howto manager. (line 2340) +* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 2352) +* BFD_RELOC_IP2K_TEXT: howto manager. (line 2355) +* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2908) +* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2909) +* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2910) +* BFD_RELOC_LM32_16_GOT: howto manager. (line 3015) +* BFD_RELOC_LM32_BRANCH: howto manager. (line 3014) +* BFD_RELOC_LM32_CALL: howto manager. (line 3013) +* BFD_RELOC_LM32_COPY: howto manager. (line 3018) +* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 3019) +* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 3016) +* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 3017) +* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 3020) +* BFD_RELOC_LM32_RELATIVE: howto manager. (line 3021) +* 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 1330) +* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1332) +* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1333) +* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1331) +* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1340) +* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1344) +* BFD_RELOC_M32R_24: howto manager. (line 1336) +* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1347) +* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1366) +* BFD_RELOC_M32R_COPY: howto manager. (line 1367) +* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1368) +* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1377) +* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1376) +* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1378) +* BFD_RELOC_M32R_GOT24: howto manager. (line 1365) +* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1371) +* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1373) +* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1372) +* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1374) +* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1375) +* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1380) +* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1379) +* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1381) +* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1354) +* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1350) +* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1369) +* BFD_RELOC_M32R_LO16: howto manager. (line 1358) +* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1370) +* BFD_RELOC_M32R_SDA16: howto manager. (line 1361) +* BFD_RELOC_M68HC11_24: howto manager. (line 2499) +* BFD_RELOC_M68HC11_3B: howto manager. (line 2474) +* BFD_RELOC_M68HC11_HI8: howto manager. (line 2466) +* BFD_RELOC_M68HC11_LO16: howto manager. (line 2488) +* BFD_RELOC_M68HC11_LO8: howto manager. (line 2470) +* BFD_RELOC_M68HC11_PAGE: howto manager. (line 2494) +* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 2483) +* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 2477) +* BFD_RELOC_M68HC12_10_PCREL: howto manager. (line 2559) +* BFD_RELOC_M68HC12_16B: howto manager. (line 2553) +* BFD_RELOC_M68HC12_5B: howto manager. (line 2505) +* BFD_RELOC_M68HC12_9_PCREL: howto manager. (line 2556) +* BFD_RELOC_M68HC12_9B: howto manager. (line 2550) +* BFD_RELOC_M68HC12_HI8XG: howto manager. (line 2566) +* BFD_RELOC_M68HC12_LO8XG: howto manager. (line 2562) +* BFD_RELOC_MACH_O_ARM64_ADDEND: howto manager. (line 3061) +* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21: howto manager. (line 3064) +* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12: howto manager. (line 3067) +* BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT: howto manager. (line 3070) +* BFD_RELOC_MACH_O_LOCAL_SECTDIFF: howto manager. (line 3028) +* BFD_RELOC_MACH_O_PAIR: howto manager. (line 3031) +* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 3024) +* BFD_RELOC_MACH_O_SUBTRACTOR32: howto manager. (line 3034) +* BFD_RELOC_MACH_O_SUBTRACTOR64: howto manager. (line 3037) +* BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 3040) +* BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 3041) +* BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 3045) +* BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 3048) +* BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 3052) +* BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 3055) +* BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 3058) +* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1811) +* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1809) +* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1810) +* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1808) +* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1812) +* BFD_RELOC_MCORE_RVA: howto manager. (line 1813) +* BFD_RELOC_MEP_16: howto manager. (line 1817) +* BFD_RELOC_MEP_32: howto manager. (line 1818) +* BFD_RELOC_MEP_8: howto manager. (line 1816) +* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1833) +* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1835) +* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1834) +* BFD_RELOC_MEP_GPREL: howto manager. (line 1827) +* BFD_RELOC_MEP_HI16S: howto manager. (line 1826) +* BFD_RELOC_MEP_HI16U: howto manager. (line 1825) +* BFD_RELOC_MEP_LOW16: howto manager. (line 1824) +* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1823) +* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1820) +* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1821) +* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1822) +* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1819) +* BFD_RELOC_MEP_TPREL: howto manager. (line 1828) +* BFD_RELOC_MEP_TPREL7: howto manager. (line 1829) +* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1830) +* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1831) +* BFD_RELOC_MEP_UIMM24: howto manager. (line 1832) +* BFD_RELOC_METAG_COPY: howto manager. (line 1857) +* BFD_RELOC_METAG_GETSET_GOT: howto manager. (line 1849) +* BFD_RELOC_METAG_GETSET_GOTOFF: howto manager. (line 1848) +* BFD_RELOC_METAG_GETSETOFF: howto manager. (line 1841) +* BFD_RELOC_METAG_GLOB_DAT: howto manager. (line 1860) +* BFD_RELOC_METAG_GOTOFF: howto manager. (line 1855) +* BFD_RELOC_METAG_HI16_GOTOFF: howto manager. (line 1846) +* BFD_RELOC_METAG_HI16_GOTPC: howto manager. (line 1850) +* BFD_RELOC_METAG_HI16_PLT: howto manager. (line 1852) +* BFD_RELOC_METAG_HIADDR16: howto manager. (line 1838) +* BFD_RELOC_METAG_HIOG: howto manager. (line 1842) +* BFD_RELOC_METAG_JMP_SLOT: howto manager. (line 1858) +* BFD_RELOC_METAG_LO16_GOTOFF: howto manager. (line 1847) +* BFD_RELOC_METAG_LO16_GOTPC: howto manager. (line 1851) +* BFD_RELOC_METAG_LO16_PLT: howto manager. (line 1853) +* BFD_RELOC_METAG_LOADDR16: howto manager. (line 1839) +* BFD_RELOC_METAG_LOOG: howto manager. (line 1843) +* BFD_RELOC_METAG_PLT: howto manager. (line 1856) +* BFD_RELOC_METAG_REL16: howto manager. (line 1845) +* BFD_RELOC_METAG_REL8: howto manager. (line 1844) +* BFD_RELOC_METAG_RELATIVE: howto manager. (line 1859) +* BFD_RELOC_METAG_RELBRANCH: howto manager. (line 1840) +* BFD_RELOC_METAG_RELBRANCH_PLT: howto manager. (line 1854) +* BFD_RELOC_METAG_TLS_DTPMOD: howto manager. (line 1871) +* BFD_RELOC_METAG_TLS_DTPOFF: howto manager. (line 1872) +* BFD_RELOC_METAG_TLS_GD: howto manager. (line 1861) +* BFD_RELOC_METAG_TLS_IE: howto manager. (line 1866) +* BFD_RELOC_METAG_TLS_IENONPIC: howto manager. (line 1867) +* BFD_RELOC_METAG_TLS_IENONPIC_HI16: howto manager. (line 1868) +* BFD_RELOC_METAG_TLS_IENONPIC_LO16: howto manager. (line 1869) +* BFD_RELOC_METAG_TLS_LDM: howto manager. (line 1862) +* BFD_RELOC_METAG_TLS_LDO: howto manager. (line 1865) +* BFD_RELOC_METAG_TLS_LDO_HI16: howto manager. (line 1863) +* BFD_RELOC_METAG_TLS_LDO_LO16: howto manager. (line 1864) +* BFD_RELOC_METAG_TLS_LE: howto manager. (line 1873) +* BFD_RELOC_METAG_TLS_LE_HI16: howto manager. (line 1874) +* BFD_RELOC_METAG_TLS_LE_LO16: howto manager. (line 1875) +* BFD_RELOC_METAG_TLS_TPOFF: howto manager. (line 1870) +* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 3117) +* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 3073) +* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 3077) +* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 3081) +* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 3085) +* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 3089) +* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD: howto manager. (line 3138) +* BFD_RELOC_MICROBLAZE_32_TLSDTPREL: howto manager. (line 3141) +* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 3103) +* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 3112) +* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 3098) +* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 3093) +* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 3107) +* BFD_RELOC_MICROBLAZE_64_TLS: howto manager. (line 3125) +* BFD_RELOC_MICROBLAZE_64_TLSDTPREL: howto manager. (line 3144) +* BFD_RELOC_MICROBLAZE_64_TLSGD: howto manager. (line 3128) +* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL: howto manager. (line 3148) +* BFD_RELOC_MICROBLAZE_64_TLSLD: howto manager. (line 3133) +* BFD_RELOC_MICROBLAZE_64_TLSTPREL: howto manager. (line 3152) +* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 3121) +* 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 426) +* BFD_RELOC_MICROMIPS_CALL_HI16: howto manager. (line 432) +* BFD_RELOC_MICROMIPS_CALL_LO16: howto manager. (line 434) +* BFD_RELOC_MICROMIPS_GOT16: howto manager. (line 424) +* BFD_RELOC_MICROMIPS_GOT_DISP: howto manager. (line 442) +* BFD_RELOC_MICROMIPS_GOT_HI16: howto manager. (line 428) +* BFD_RELOC_MICROMIPS_GOT_LO16: howto manager. (line 430) +* BFD_RELOC_MICROMIPS_GOT_OFST: howto manager. (line 440) +* BFD_RELOC_MICROMIPS_GOT_PAGE: howto manager. (line 438) +* BFD_RELOC_MICROMIPS_GPREL16: howto manager. (line 417) +* BFD_RELOC_MICROMIPS_HI16: howto manager. (line 418) +* BFD_RELOC_MICROMIPS_HI16_S: howto manager. (line 419) +* BFD_RELOC_MICROMIPS_HIGHER: howto manager. (line 451) +* BFD_RELOC_MICROMIPS_HIGHEST: howto manager. (line 449) +* BFD_RELOC_MICROMIPS_JALR: howto manager. (line 457) +* BFD_RELOC_MICROMIPS_JMP: howto manager. (line 343) +* BFD_RELOC_MICROMIPS_LITERAL: howto manager. (line 400) +* BFD_RELOC_MICROMIPS_LO16: howto manager. (line 420) +* BFD_RELOC_MICROMIPS_SCN_DISP: howto manager. (line 453) +* BFD_RELOC_MICROMIPS_SUB: howto manager. (line 436) +* BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16: howto manager. (line 467) +* BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16: howto manager. (line 469) +* BFD_RELOC_MICROMIPS_TLS_GD: howto manager. (line 463) +* BFD_RELOC_MICROMIPS_TLS_GOTTPREL: howto manager. (line 471) +* BFD_RELOC_MICROMIPS_TLS_LDM: howto manager. (line 465) +* BFD_RELOC_MICROMIPS_TLS_TPREL_HI16: howto manager. (line 475) +* BFD_RELOC_MICROMIPS_TLS_TPREL_LO16: howto manager. (line 477) +* BFD_RELOC_MIPS16_16_PCREL_S1: howto manager. (line 408) +* 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 413) +* BFD_RELOC_MIPS_19_PCREL_S2: howto manager. (line 414) +* BFD_RELOC_MIPS_21_PCREL_S2: howto manager. (line 411) +* BFD_RELOC_MIPS_26_PCREL_S2: howto manager. (line 412) +* BFD_RELOC_MIPS_CALL16: howto manager. (line 425) +* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 431) +* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 433) +* BFD_RELOC_MIPS_COPY: howto manager. (line 481) +* BFD_RELOC_MIPS_DELETE: howto manager. (line 447) +* BFD_RELOC_MIPS_EH: howto manager. (line 478) +* BFD_RELOC_MIPS_GOT16: howto manager. (line 423) +* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 441) +* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 427) +* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 429) +* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 439) +* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 437) +* BFD_RELOC_MIPS_HIGHER: howto manager. (line 450) +* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 448) +* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 445) +* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 446) +* BFD_RELOC_MIPS_JALR: howto manager. (line 456) +* BFD_RELOC_MIPS_JMP: howto manager. (line 342) +* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 482) +* BFD_RELOC_MIPS_LITERAL: howto manager. (line 399) +* BFD_RELOC_MIPS_REL16: howto manager. (line 454) +* BFD_RELOC_MIPS_RELGOT: howto manager. (line 455) +* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 452) +* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 443) +* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 444) +* BFD_RELOC_MIPS_SUB: howto manager. (line 435) +* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 458) +* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 460) +* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 459) +* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 461) +* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 466) +* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 468) +* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 462) +* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 470) +* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 464) +* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 472) +* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 473) +* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 474) +* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 476) +* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1904) +* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1908) +* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1920) +* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1884) +* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1886) +* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1887) +* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1888) +* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1885) +* BFD_RELOC_MMIX_GETA: howto manager. (line 1878) +* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1879) +* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1880) +* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1881) +* BFD_RELOC_MMIX_JMP: howto manager. (line 1898) +* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1899) +* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1900) +* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1901) +* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1924) +* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1891) +* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1892) +* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1893) +* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1894) +* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1895) +* BFD_RELOC_MMIX_REG: howto manager. (line 1916) +* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1912) +* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 586) +* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 582) +* BFD_RELOC_MN10300_ALIGN: howto manager. (line 567) +* BFD_RELOC_MN10300_COPY: howto manager. (line 550) +* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 553) +* BFD_RELOC_MN10300_GOT16: howto manager. (line 546) +* BFD_RELOC_MN10300_GOT24: howto manager. (line 542) +* BFD_RELOC_MN10300_GOT32: howto manager. (line 538) +* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 535) +* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 556) +* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 559) +* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 562) +* BFD_RELOC_MN10300_TLS_DTPMOD: howto manager. (line 577) +* BFD_RELOC_MN10300_TLS_DTPOFF: howto manager. (line 578) +* BFD_RELOC_MN10300_TLS_GD: howto manager. (line 571) +* BFD_RELOC_MN10300_TLS_GOTIE: howto manager. (line 574) +* BFD_RELOC_MN10300_TLS_IE: howto manager. (line 575) +* BFD_RELOC_MN10300_TLS_LD: howto manager. (line 572) +* BFD_RELOC_MN10300_TLS_LDO: howto manager. (line 573) +* BFD_RELOC_MN10300_TLS_LE: howto manager. (line 576) +* BFD_RELOC_MN10300_TLS_TPOFF: howto manager. (line 579) +* BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 485) +* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2830) +* BFD_RELOC_MSP430_16: howto manager. (line 2832) +* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2834) +* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2831) +* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2833) +* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2835) +* BFD_RELOC_MSP430_ABS8: howto manager. (line 2837) +* BFD_RELOC_MSP430_ABS_HI16: howto manager. (line 2849) +* BFD_RELOC_MSP430_PREL31: howto manager. (line 2850) +* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2836) +* BFD_RELOC_MSP430_SYM_DIFF: howto manager. (line 2851) +* BFD_RELOC_MSP430X_ABS16: howto manager. (line 2848) +* BFD_RELOC_MSP430X_ABS20_ADR_DST: howto manager. (line 2845) +* BFD_RELOC_MSP430X_ABS20_ADR_SRC: howto manager. (line 2844) +* BFD_RELOC_MSP430X_ABS20_EXT_DST: howto manager. (line 2842) +* BFD_RELOC_MSP430X_ABS20_EXT_ODST: howto manager. (line 2843) +* BFD_RELOC_MSP430X_ABS20_EXT_SRC: howto manager. (line 2841) +* BFD_RELOC_MSP430X_PCR16: howto manager. (line 2846) +* BFD_RELOC_MSP430X_PCR20_CALL: howto manager. (line 2847) +* BFD_RELOC_MSP430X_PCR20_EXT_DST: howto manager. (line 2839) +* BFD_RELOC_MSP430X_PCR20_EXT_ODST: howto manager. (line 2840) +* BFD_RELOC_MSP430X_PCR20_EXT_SRC: howto manager. (line 2838) +* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2824) +* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2821) +* BFD_RELOC_MT_HI16: howto manager. (line 2815) +* BFD_RELOC_MT_LO16: howto manager. (line 2818) +* BFD_RELOC_MT_PC16: howto manager. (line 2812) +* BFD_RELOC_MT_PCINSN8: howto manager. (line 2827) +* BFD_RELOC_NDS32_10_UPCREL: howto manager. (line 1533) +* BFD_RELOC_NDS32_10IFCU_PCREL: howto manager. (line 1566) +* BFD_RELOC_NDS32_15_FIXED: howto manager. (line 1487) +* BFD_RELOC_NDS32_15_PCREL: howto manager. (line 1395) +* BFD_RELOC_NDS32_17_FIXED: howto manager. (line 1488) +* BFD_RELOC_NDS32_17_PCREL: howto manager. (line 1398) +* BFD_RELOC_NDS32_17IFC_PCREL: howto manager. (line 1565) +* BFD_RELOC_NDS32_20: howto manager. (line 1384) +* BFD_RELOC_NDS32_25_ABS: howto manager. (line 1560) +* BFD_RELOC_NDS32_25_FIXED: howto manager. (line 1489) +* BFD_RELOC_NDS32_25_PCREL: howto manager. (line 1401) +* BFD_RELOC_NDS32_25_PLTREL: howto manager. (line 1462) +* BFD_RELOC_NDS32_5: howto manager. (line 1530) +* BFD_RELOC_NDS32_9_FIXED: howto manager. (line 1486) +* BFD_RELOC_NDS32_9_PCREL: howto manager. (line 1387) +* BFD_RELOC_NDS32_9_PLTREL: howto manager. (line 1461) +* BFD_RELOC_NDS32_COPY: howto manager. (line 1463) +* BFD_RELOC_NDS32_DATA: howto manager. (line 1563) +* BFD_RELOC_NDS32_DIFF16: howto manager. (line 1554) +* BFD_RELOC_NDS32_DIFF32: howto manager. (line 1555) +* BFD_RELOC_NDS32_DIFF8: howto manager. (line 1553) +* BFD_RELOC_NDS32_DIFF_ULEB128: howto manager. (line 1556) +* BFD_RELOC_NDS32_DWARF2_LEB: howto manager. (line 1513) +* BFD_RELOC_NDS32_DWARF2_OP1: howto manager. (line 1511) +* BFD_RELOC_NDS32_DWARF2_OP2: howto manager. (line 1512) +* BFD_RELOC_NDS32_EMPTY: howto manager. (line 1557) +* BFD_RELOC_NDS32_GLOB_DAT: howto manager. (line 1464) +* BFD_RELOC_NDS32_GOT15S2: howto manager. (line 1526) +* BFD_RELOC_NDS32_GOT17S2: howto manager. (line 1527) +* BFD_RELOC_NDS32_GOT20: howto manager. (line 1460) +* BFD_RELOC_NDS32_GOT_HI20: howto manager. (line 1471) +* BFD_RELOC_NDS32_GOT_LO12: howto manager. (line 1472) +* BFD_RELOC_NDS32_GOT_LO15: howto manager. (line 1522) +* BFD_RELOC_NDS32_GOT_LO19: howto manager. (line 1523) +* BFD_RELOC_NDS32_GOT_SUFF: howto manager. (line 1541) +* BFD_RELOC_NDS32_GOTOFF: howto manager. (line 1467) +* BFD_RELOC_NDS32_GOTOFF_HI20: howto manager. (line 1468) +* BFD_RELOC_NDS32_GOTOFF_LO12: howto manager. (line 1469) +* BFD_RELOC_NDS32_GOTOFF_LO15: howto manager. (line 1524) +* BFD_RELOC_NDS32_GOTOFF_LO19: howto manager. (line 1525) +* BFD_RELOC_NDS32_GOTOFF_SUFF: howto manager. (line 1542) +* BFD_RELOC_NDS32_GOTPC20: howto manager. (line 1470) +* BFD_RELOC_NDS32_GOTPC_HI20: howto manager. (line 1473) +* BFD_RELOC_NDS32_GOTPC_LO12: howto manager. (line 1474) +* BFD_RELOC_NDS32_GOTTPOFF: howto manager. (line 1574) +* BFD_RELOC_NDS32_HI20: howto manager. (line 1404) +* BFD_RELOC_NDS32_INSN16: howto manager. (line 1477) +* BFD_RELOC_NDS32_JMP_SLOT: howto manager. (line 1465) +* BFD_RELOC_NDS32_LABEL: howto manager. (line 1478) +* BFD_RELOC_NDS32_LO12S0: howto manager. (line 1420) +* BFD_RELOC_NDS32_LO12S0_ORI: howto manager. (line 1424) +* BFD_RELOC_NDS32_LO12S1: howto manager. (line 1416) +* BFD_RELOC_NDS32_LO12S2: howto manager. (line 1412) +* BFD_RELOC_NDS32_LO12S2_DP: howto manager. (line 1507) +* BFD_RELOC_NDS32_LO12S2_SP: howto manager. (line 1508) +* BFD_RELOC_NDS32_LO12S3: howto manager. (line 1408) +* BFD_RELOC_NDS32_LOADSTORE: howto manager. (line 1485) +* BFD_RELOC_NDS32_LONGCALL1: howto manager. (line 1479) +* BFD_RELOC_NDS32_LONGCALL2: howto manager. (line 1480) +* BFD_RELOC_NDS32_LONGCALL3: howto manager. (line 1481) +* BFD_RELOC_NDS32_LONGCALL4: howto manager. (line 1490) +* BFD_RELOC_NDS32_LONGCALL5: howto manager. (line 1491) +* BFD_RELOC_NDS32_LONGCALL6: howto manager. (line 1492) +* BFD_RELOC_NDS32_LONGJUMP1: howto manager. (line 1482) +* BFD_RELOC_NDS32_LONGJUMP2: howto manager. (line 1483) +* BFD_RELOC_NDS32_LONGJUMP3: howto manager. (line 1484) +* BFD_RELOC_NDS32_LONGJUMP4: howto manager. (line 1493) +* BFD_RELOC_NDS32_LONGJUMP5: howto manager. (line 1494) +* BFD_RELOC_NDS32_LONGJUMP6: howto manager. (line 1495) +* BFD_RELOC_NDS32_LONGJUMP7: howto manager. (line 1496) +* BFD_RELOC_NDS32_MINUEND: howto manager. (line 1551) +* BFD_RELOC_NDS32_MULCALL_SUFF: howto manager. (line 1544) +* BFD_RELOC_NDS32_PLT_GOT_SUFF: howto manager. (line 1543) +* BFD_RELOC_NDS32_PLT_GOTREL_HI20: howto manager. (line 1501) +* BFD_RELOC_NDS32_PLT_GOTREL_LO12: howto manager. (line 1502) +* BFD_RELOC_NDS32_PLT_GOTREL_LO15: howto manager. (line 1520) +* BFD_RELOC_NDS32_PLT_GOTREL_LO19: howto manager. (line 1521) +* BFD_RELOC_NDS32_PLT_GOTREL_LO20: howto manager. (line 1519) +* BFD_RELOC_NDS32_PLTBLOCK: howto manager. (line 1548) +* BFD_RELOC_NDS32_PLTREL_HI20: howto manager. (line 1499) +* BFD_RELOC_NDS32_PLTREL_LO12: howto manager. (line 1500) +* BFD_RELOC_NDS32_PTR: howto manager. (line 1545) +* BFD_RELOC_NDS32_PTR_COUNT: howto manager. (line 1546) +* BFD_RELOC_NDS32_PTR_RESOLVED: howto manager. (line 1547) +* BFD_RELOC_NDS32_RELATIVE: howto manager. (line 1466) +* BFD_RELOC_NDS32_RELAX_ENTRY: howto manager. (line 1540) +* BFD_RELOC_NDS32_RELAX_REGION_BEGIN: howto manager. (line 1549) +* BFD_RELOC_NDS32_RELAX_REGION_END: howto manager. (line 1550) +* BFD_RELOC_NDS32_SDA12S2_DP: howto manager. (line 1505) +* BFD_RELOC_NDS32_SDA12S2_SP: howto manager. (line 1506) +* BFD_RELOC_NDS32_SDA15S0: howto manager. (line 1440) +* BFD_RELOC_NDS32_SDA15S1: howto manager. (line 1436) +* BFD_RELOC_NDS32_SDA15S2: howto manager. (line 1432) +* BFD_RELOC_NDS32_SDA15S3: howto manager. (line 1428) +* BFD_RELOC_NDS32_SDA16S3: howto manager. (line 1444) +* BFD_RELOC_NDS32_SDA17S2: howto manager. (line 1448) +* BFD_RELOC_NDS32_SDA18S1: howto manager. (line 1452) +* BFD_RELOC_NDS32_SDA19S0: howto manager. (line 1456) +* BFD_RELOC_NDS32_SDA_FP7U2_RELA: howto manager. (line 1537) +* BFD_RELOC_NDS32_SUBTRAHEND: howto manager. (line 1552) +* BFD_RELOC_NDS32_TLS_IE_HI20: howto manager. (line 1575) +* BFD_RELOC_NDS32_TLS_IE_LO12S2: howto manager. (line 1576) +* BFD_RELOC_NDS32_TLS_LE_15S0: howto manager. (line 1579) +* BFD_RELOC_NDS32_TLS_LE_15S1: howto manager. (line 1580) +* BFD_RELOC_NDS32_TLS_LE_15S2: howto manager. (line 1581) +* BFD_RELOC_NDS32_TLS_LE_20: howto manager. (line 1578) +* BFD_RELOC_NDS32_TLS_LE_ADD: howto manager. (line 1572) +* BFD_RELOC_NDS32_TLS_LE_HI20: howto manager. (line 1570) +* BFD_RELOC_NDS32_TLS_LE_LO12: howto manager. (line 1571) +* BFD_RELOC_NDS32_TLS_LE_LS: howto manager. (line 1573) +* BFD_RELOC_NDS32_TLS_TPOFF: howto manager. (line 1577) +* BFD_RELOC_NDS32_TPOFF: howto manager. (line 1569) +* BFD_RELOC_NDS32_TRAN: howto manager. (line 1564) +* BFD_RELOC_NDS32_UPDATE_TA: howto manager. (line 1516) +* BFD_RELOC_NDS32_WORD_9_PCREL: howto manager. (line 1391) +* BFD_RELOC_NIOS2_ALIGN: howto manager. (line 2868) +* BFD_RELOC_NIOS2_CACHE_OPX: howto manager. (line 2858) +* BFD_RELOC_NIOS2_CALL16: howto manager. (line 2870) +* BFD_RELOC_NIOS2_CALL26: howto manager. (line 2856) +* BFD_RELOC_NIOS2_CALL26_NOAT: howto manager. (line 2888) +* BFD_RELOC_NIOS2_CALL_HA: howto manager. (line 2892) +* BFD_RELOC_NIOS2_CALL_LO: howto manager. (line 2891) +* BFD_RELOC_NIOS2_CALLR: howto manager. (line 2867) +* BFD_RELOC_NIOS2_CJMP: howto manager. (line 2866) +* BFD_RELOC_NIOS2_COPY: howto manager. (line 2883) +* BFD_RELOC_NIOS2_GLOB_DAT: howto manager. (line 2884) +* BFD_RELOC_NIOS2_GOT16: howto manager. (line 2869) +* BFD_RELOC_NIOS2_GOT_HA: howto manager. (line 2890) +* BFD_RELOC_NIOS2_GOT_LO: howto manager. (line 2889) +* BFD_RELOC_NIOS2_GOTOFF: howto manager. (line 2887) +* BFD_RELOC_NIOS2_GOTOFF_HA: howto manager. (line 2872) +* BFD_RELOC_NIOS2_GOTOFF_LO: howto manager. (line 2871) +* BFD_RELOC_NIOS2_GPREL: howto manager. (line 2864) +* BFD_RELOC_NIOS2_HI16: howto manager. (line 2861) +* BFD_RELOC_NIOS2_HIADJ16: howto manager. (line 2863) +* BFD_RELOC_NIOS2_IMM5: howto manager. (line 2857) +* BFD_RELOC_NIOS2_IMM6: howto manager. (line 2859) +* BFD_RELOC_NIOS2_IMM8: howto manager. (line 2860) +* BFD_RELOC_NIOS2_JUMP_SLOT: howto manager. (line 2885) +* BFD_RELOC_NIOS2_LO16: howto manager. (line 2862) +* BFD_RELOC_NIOS2_PCREL_HA: howto manager. (line 2874) +* BFD_RELOC_NIOS2_PCREL_LO: howto manager. (line 2873) +* BFD_RELOC_NIOS2_R2_F1I5_2: howto manager. (line 2902) +* BFD_RELOC_NIOS2_R2_I10_1_PCREL: howto manager. (line 2894) +* BFD_RELOC_NIOS2_R2_L5I4X1: howto manager. (line 2903) +* BFD_RELOC_NIOS2_R2_S12: howto manager. (line 2893) +* BFD_RELOC_NIOS2_R2_T1I7_1_PCREL: howto manager. (line 2895) +* BFD_RELOC_NIOS2_R2_T1I7_2: howto manager. (line 2896) +* BFD_RELOC_NIOS2_R2_T1X1I6: howto manager. (line 2904) +* BFD_RELOC_NIOS2_R2_T1X1I6_2: howto manager. (line 2905) +* BFD_RELOC_NIOS2_R2_T2I4: howto manager. (line 2897) +* BFD_RELOC_NIOS2_R2_T2I4_1: howto manager. (line 2898) +* BFD_RELOC_NIOS2_R2_T2I4_2: howto manager. (line 2899) +* BFD_RELOC_NIOS2_R2_X1I7_2: howto manager. (line 2900) +* BFD_RELOC_NIOS2_R2_X2L5: howto manager. (line 2901) +* BFD_RELOC_NIOS2_RELATIVE: howto manager. (line 2886) +* BFD_RELOC_NIOS2_S16: howto manager. (line 2854) +* BFD_RELOC_NIOS2_TLS_DTPMOD: howto manager. (line 2880) +* BFD_RELOC_NIOS2_TLS_DTPREL: howto manager. (line 2881) +* BFD_RELOC_NIOS2_TLS_GD16: howto manager. (line 2875) +* BFD_RELOC_NIOS2_TLS_IE16: howto manager. (line 2878) +* BFD_RELOC_NIOS2_TLS_LDM16: howto manager. (line 2876) +* BFD_RELOC_NIOS2_TLS_LDO16: howto manager. (line 2877) +* BFD_RELOC_NIOS2_TLS_LE16: howto manager. (line 2879) +* BFD_RELOC_NIOS2_TLS_TPREL: howto manager. (line 2882) +* BFD_RELOC_NIOS2_U16: howto manager. (line 2855) +* BFD_RELOC_NIOS2_UJMP: howto manager. (line 2865) +* BFD_RELOC_NONE: howto manager. (line 135) +* BFD_RELOC_NS32K_DISP_16: howto manager. (line 657) +* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 660) +* BFD_RELOC_NS32K_DISP_32: howto manager. (line 658) +* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 661) +* BFD_RELOC_NS32K_DISP_8: howto manager. (line 656) +* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 659) +* BFD_RELOC_NS32K_IMM_16: howto manager. (line 651) +* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 654) +* BFD_RELOC_NS32K_IMM_32: howto manager. (line 652) +* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 655) +* BFD_RELOC_NS32K_IMM_8: howto manager. (line 650) +* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 653) +* BFD_RELOC_OR1K_COPY: howto manager. (line 2765) +* BFD_RELOC_OR1K_GLOB_DAT: howto manager. (line 2766) +* BFD_RELOC_OR1K_GOT16: howto manager. (line 2761) +* BFD_RELOC_OR1K_GOTOFF_HI16: howto manager. (line 2763) +* BFD_RELOC_OR1K_GOTOFF_LO16: howto manager. (line 2764) +* BFD_RELOC_OR1K_GOTPC_HI16: howto manager. (line 2759) +* BFD_RELOC_OR1K_GOTPC_LO16: howto manager. (line 2760) +* BFD_RELOC_OR1K_JMP_SLOT: howto manager. (line 2767) +* BFD_RELOC_OR1K_PLT26: howto manager. (line 2762) +* BFD_RELOC_OR1K_REL_26: howto manager. (line 2758) +* BFD_RELOC_OR1K_RELATIVE: howto manager. (line 2768) +* BFD_RELOC_OR1K_TLS_DTPMOD: howto manager. (line 2781) +* BFD_RELOC_OR1K_TLS_DTPOFF: howto manager. (line 2780) +* BFD_RELOC_OR1K_TLS_GD_HI16: howto manager. (line 2769) +* BFD_RELOC_OR1K_TLS_GD_LO16: howto manager. (line 2770) +* BFD_RELOC_OR1K_TLS_IE_HI16: howto manager. (line 2775) +* BFD_RELOC_OR1K_TLS_IE_LO16: howto manager. (line 2776) +* BFD_RELOC_OR1K_TLS_LDM_HI16: howto manager. (line 2771) +* BFD_RELOC_OR1K_TLS_LDM_LO16: howto manager. (line 2772) +* BFD_RELOC_OR1K_TLS_LDO_HI16: howto manager. (line 2773) +* BFD_RELOC_OR1K_TLS_LDO_LO16: howto manager. (line 2774) +* BFD_RELOC_OR1K_TLS_LE_HI16: howto manager. (line 2777) +* BFD_RELOC_OR1K_TLS_LE_LO16: howto manager. (line 2778) +* BFD_RELOC_OR1K_TLS_TPOFF: howto manager. (line 2779) +* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 665) +* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 664) +* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 670) +* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 671) +* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 668) +* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 669) +* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 672) +* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 673) +* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 737) +* BFD_RELOC_PPC64_ADDR16_HIGH: howto manager. (line 748) +* BFD_RELOC_PPC64_ADDR16_HIGHA: howto manager. (line 749) +* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 738) +* BFD_RELOC_PPC64_ADDR64_LOCAL: howto manager. (line 750) +* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 790) +* BFD_RELOC_PPC64_DTPREL16_HIGH: howto manager. (line 798) +* BFD_RELOC_PPC64_DTPREL16_HIGHA: howto manager. (line 799) +* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 792) +* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 793) +* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 794) +* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 795) +* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 791) +* BFD_RELOC_PPC64_ENTRY: howto manager. (line 751) +* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 739) +* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 740) +* BFD_RELOC_PPC64_HIGHER: howto manager. (line 725) +* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 726) +* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 727) +* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 728) +* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 741) +* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 733) +* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 746) +* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 736) +* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 735) +* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 734) +* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 747) +* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 742) +* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 743) +* BFD_RELOC_PPC64_TOC: howto manager. (line 732) +* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 744) +* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 731) +* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 730) +* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 729) +* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 745) +* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 784) +* BFD_RELOC_PPC64_TPREL16_HIGH: howto manager. (line 796) +* BFD_RELOC_PPC64_TPREL16_HIGHA: howto manager. (line 797) +* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 786) +* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 787) +* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 788) +* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 789) +* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 785) +* BFD_RELOC_PPC_16DX_HA: howto manager. (line 723) +* BFD_RELOC_PPC_B16: howto manager. (line 679) +* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 681) +* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 680) +* BFD_RELOC_PPC_B26: howto manager. (line 676) +* BFD_RELOC_PPC_BA16: howto manager. (line 682) +* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 684) +* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 683) +* BFD_RELOC_PPC_BA26: howto manager. (line 677) +* BFD_RELOC_PPC_COPY: howto manager. (line 685) +* BFD_RELOC_PPC_DTPMOD: howto manager. (line 757) +* BFD_RELOC_PPC_DTPREL: howto manager. (line 767) +* BFD_RELOC_PPC_DTPREL16: howto manager. (line 763) +* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 766) +* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 765) +* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 764) +* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 704) +* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 699) +* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 691) +* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 694) +* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 693) +* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 692) +* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 690) +* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 705) +* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 700) +* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 703) +* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 702) +* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 701) +* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 698) +* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 696) +* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 697) +* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 695) +* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 686) +* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 780) +* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 783) +* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 782) +* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 781) +* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 768) +* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 771) +* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 770) +* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 769) +* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 772) +* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 775) +* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 774) +* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 773) +* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 776) +* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 779) +* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 778) +* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 777) +* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 687) +* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 689) +* BFD_RELOC_PPC_REL16DX_HA: howto manager. (line 724) +* BFD_RELOC_PPC_RELATIVE: howto manager. (line 688) +* BFD_RELOC_PPC_TLS: howto manager. (line 754) +* BFD_RELOC_PPC_TLSGD: howto manager. (line 755) +* BFD_RELOC_PPC_TLSLD: howto manager. (line 756) +* BFD_RELOC_PPC_TOC16: howto manager. (line 678) +* BFD_RELOC_PPC_TPREL: howto manager. (line 762) +* BFD_RELOC_PPC_TPREL16: howto manager. (line 758) +* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 761) +* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 760) +* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 759) +* BFD_RELOC_PPC_VLE_HA16A: howto manager. (line 713) +* BFD_RELOC_PPC_VLE_HA16D: howto manager. (line 714) +* BFD_RELOC_PPC_VLE_HI16A: howto manager. (line 711) +* BFD_RELOC_PPC_VLE_HI16D: howto manager. (line 712) +* BFD_RELOC_PPC_VLE_LO16A: howto manager. (line 709) +* BFD_RELOC_PPC_VLE_LO16D: howto manager. (line 710) +* BFD_RELOC_PPC_VLE_REL15: howto manager. (line 707) +* BFD_RELOC_PPC_VLE_REL24: howto manager. (line 708) +* BFD_RELOC_PPC_VLE_REL8: howto manager. (line 706) +* BFD_RELOC_PPC_VLE_SDA21: howto manager. (line 715) +* BFD_RELOC_PPC_VLE_SDA21_LO: howto manager. (line 716) +* BFD_RELOC_PPC_VLE_SDAREL_HA16A: howto manager. (line 721) +* BFD_RELOC_PPC_VLE_SDAREL_HA16D: howto manager. (line 722) +* BFD_RELOC_PPC_VLE_SDAREL_HI16A: howto manager. (line 719) +* BFD_RELOC_PPC_VLE_SDAREL_HI16D: howto manager. (line 720) +* BFD_RELOC_PPC_VLE_SDAREL_LO16A: howto manager. (line 717) +* BFD_RELOC_PPC_VLE_SDAREL_LO16D: howto manager. (line 718) +* BFD_RELOC_RELC: howto manager. (line 2798) +* BFD_RELOC_RISCV_ADD16: howto manager. (line 2080) +* BFD_RELOC_RISCV_ADD32: howto manager. (line 2081) +* BFD_RELOC_RISCV_ADD64: howto manager. (line 2082) +* BFD_RELOC_RISCV_ADD8: howto manager. (line 2079) +* BFD_RELOC_RISCV_ALIGN: howto manager. (line 2097) +* BFD_RELOC_RISCV_CALL: howto manager. (line 2077) +* BFD_RELOC_RISCV_CALL_PLT: howto manager. (line 2078) +* BFD_RELOC_RISCV_CFA: howto manager. (line 2106) +* BFD_RELOC_RISCV_GOT_HI20: howto manager. (line 2087) +* BFD_RELOC_RISCV_GPREL12_I: howto manager. (line 2071) +* BFD_RELOC_RISCV_GPREL12_S: howto manager. (line 2072) +* BFD_RELOC_RISCV_GPREL_I: howto manager. (line 2101) +* BFD_RELOC_RISCV_GPREL_S: howto manager. (line 2102) +* BFD_RELOC_RISCV_HI20: howto manager. (line 2065) +* BFD_RELOC_RISCV_JMP: howto manager. (line 2090) +* BFD_RELOC_RISCV_LO12_I: howto manager. (line 2069) +* BFD_RELOC_RISCV_LO12_S: howto manager. (line 2070) +* BFD_RELOC_RISCV_PCREL_HI20: howto manager. (line 2066) +* BFD_RELOC_RISCV_PCREL_LO12_I: howto manager. (line 2067) +* BFD_RELOC_RISCV_PCREL_LO12_S: howto manager. (line 2068) +* BFD_RELOC_RISCV_RELAX: howto manager. (line 2105) +* BFD_RELOC_RISCV_RVC_BRANCH: howto manager. (line 2098) +* BFD_RELOC_RISCV_RVC_JUMP: howto manager. (line 2099) +* BFD_RELOC_RISCV_RVC_LUI: howto manager. (line 2100) +* BFD_RELOC_RISCV_SET16: howto manager. (line 2110) +* BFD_RELOC_RISCV_SET32: howto manager. (line 2111) +* BFD_RELOC_RISCV_SET6: howto manager. (line 2108) +* BFD_RELOC_RISCV_SET8: howto manager. (line 2109) +* BFD_RELOC_RISCV_SUB16: howto manager. (line 2084) +* BFD_RELOC_RISCV_SUB32: howto manager. (line 2085) +* BFD_RELOC_RISCV_SUB6: howto manager. (line 2107) +* BFD_RELOC_RISCV_SUB64: howto manager. (line 2086) +* BFD_RELOC_RISCV_SUB8: howto manager. (line 2083) +* BFD_RELOC_RISCV_TLS_DTPMOD32: howto manager. (line 2091) +* BFD_RELOC_RISCV_TLS_DTPMOD64: howto manager. (line 2093) +* BFD_RELOC_RISCV_TLS_DTPREL32: howto manager. (line 2092) +* BFD_RELOC_RISCV_TLS_DTPREL64: howto manager. (line 2094) +* BFD_RELOC_RISCV_TLS_GD_HI20: howto manager. (line 2089) +* BFD_RELOC_RISCV_TLS_GOT_HI20: howto manager. (line 2088) +* BFD_RELOC_RISCV_TLS_TPREL32: howto manager. (line 2095) +* BFD_RELOC_RISCV_TLS_TPREL64: howto manager. (line 2096) +* BFD_RELOC_RISCV_TPREL_ADD: howto manager. (line 2076) +* BFD_RELOC_RISCV_TPREL_HI20: howto manager. (line 2073) +* BFD_RELOC_RISCV_TPREL_I: howto manager. (line 2103) +* BFD_RELOC_RISCV_TPREL_LO12_I: howto manager. (line 2074) +* BFD_RELOC_RISCV_TPREL_LO12_S: howto manager. (line 2075) +* BFD_RELOC_RISCV_TPREL_S: howto manager. (line 2104) +* BFD_RELOC_RL78_16_OP: howto manager. (line 2118) +* BFD_RELOC_RL78_16U: howto manager. (line 2122) +* BFD_RELOC_RL78_24_OP: howto manager. (line 2119) +* BFD_RELOC_RL78_24U: howto manager. (line 2123) +* BFD_RELOC_RL78_32_OP: howto manager. (line 2120) +* BFD_RELOC_RL78_8U: howto manager. (line 2121) +* BFD_RELOC_RL78_ABS16: howto manager. (line 2135) +* BFD_RELOC_RL78_ABS16_REV: howto manager. (line 2136) +* BFD_RELOC_RL78_ABS16U: howto manager. (line 2139) +* BFD_RELOC_RL78_ABS16UL: howto manager. (line 2141) +* BFD_RELOC_RL78_ABS16UW: howto manager. (line 2140) +* BFD_RELOC_RL78_ABS32: howto manager. (line 2137) +* BFD_RELOC_RL78_ABS32_REV: howto manager. (line 2138) +* BFD_RELOC_RL78_ABS8: howto manager. (line 2134) +* BFD_RELOC_RL78_CODE: howto manager. (line 2146) +* BFD_RELOC_RL78_DIFF: howto manager. (line 2125) +* BFD_RELOC_RL78_DIR3U_PCREL: howto manager. (line 2124) +* BFD_RELOC_RL78_GPRELB: howto manager. (line 2126) +* BFD_RELOC_RL78_GPRELL: howto manager. (line 2128) +* BFD_RELOC_RL78_GPRELW: howto manager. (line 2127) +* BFD_RELOC_RL78_HI16: howto manager. (line 2143) +* BFD_RELOC_RL78_HI8: howto manager. (line 2144) +* BFD_RELOC_RL78_LO16: howto manager. (line 2145) +* BFD_RELOC_RL78_NEG16: howto manager. (line 2115) +* BFD_RELOC_RL78_NEG24: howto manager. (line 2116) +* BFD_RELOC_RL78_NEG32: howto manager. (line 2117) +* BFD_RELOC_RL78_NEG8: howto manager. (line 2114) +* BFD_RELOC_RL78_OP_AND: howto manager. (line 2132) +* BFD_RELOC_RL78_OP_NEG: howto manager. (line 2131) +* BFD_RELOC_RL78_OP_SHRA: howto manager. (line 2133) +* BFD_RELOC_RL78_OP_SUBTRACT: howto manager. (line 2130) +* BFD_RELOC_RL78_RELAX: howto manager. (line 2142) +* BFD_RELOC_RL78_SADDR: howto manager. (line 2147) +* BFD_RELOC_RL78_SYM: howto manager. (line 2129) +* BFD_RELOC_RVA: howto manager. (line 104) +* BFD_RELOC_RX_16_OP: howto manager. (line 2154) +* BFD_RELOC_RX_16U: howto manager. (line 2158) +* BFD_RELOC_RX_24_OP: howto manager. (line 2155) +* BFD_RELOC_RX_24U: howto manager. (line 2159) +* BFD_RELOC_RX_32_OP: howto manager. (line 2156) +* BFD_RELOC_RX_8U: howto manager. (line 2157) +* BFD_RELOC_RX_ABS16: howto manager. (line 2169) +* BFD_RELOC_RX_ABS16_REV: howto manager. (line 2170) +* BFD_RELOC_RX_ABS16U: howto manager. (line 2173) +* BFD_RELOC_RX_ABS16UL: howto manager. (line 2175) +* BFD_RELOC_RX_ABS16UW: howto manager. (line 2174) +* BFD_RELOC_RX_ABS32: howto manager. (line 2171) +* BFD_RELOC_RX_ABS32_REV: howto manager. (line 2172) +* BFD_RELOC_RX_ABS8: howto manager. (line 2168) +* BFD_RELOC_RX_DIFF: howto manager. (line 2161) +* BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 2160) +* BFD_RELOC_RX_GPRELB: howto manager. (line 2162) +* BFD_RELOC_RX_GPRELL: howto manager. (line 2164) +* BFD_RELOC_RX_GPRELW: howto manager. (line 2163) +* BFD_RELOC_RX_NEG16: howto manager. (line 2151) +* BFD_RELOC_RX_NEG24: howto manager. (line 2152) +* BFD_RELOC_RX_NEG32: howto manager. (line 2153) +* BFD_RELOC_RX_NEG8: howto manager. (line 2150) +* BFD_RELOC_RX_OP_NEG: howto manager. (line 2167) +* BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 2166) +* BFD_RELOC_RX_RELAX: howto manager. (line 2176) +* BFD_RELOC_RX_SYM: howto manager. (line 2165) +* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 2319) +* BFD_RELOC_SCORE16_JMP: howto manager. (line 2316) +* BFD_RELOC_SCORE_BCMP: howto manager. (line 2322) +* BFD_RELOC_SCORE_BRANCH: howto manager. (line 2307) +* BFD_RELOC_SCORE_CALL15: howto manager. (line 2327) +* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 2303) +* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 2328) +* BFD_RELOC_SCORE_GOT15: howto manager. (line 2325) +* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 2326) +* BFD_RELOC_SCORE_GPREL15: howto manager. (line 2300) +* BFD_RELOC_SCORE_IMM30: howto manager. (line 2310) +* BFD_RELOC_SCORE_IMM32: howto manager. (line 2313) +* BFD_RELOC_SCORE_JMP: howto manager. (line 2304) +* BFD_RELOC_SH_ALIGN: howto manager. (line 999) +* BFD_RELOC_SH_CODE: howto manager. (line 1000) +* BFD_RELOC_SH_COPY: howto manager. (line 1005) +* BFD_RELOC_SH_COPY64: howto manager. (line 1030) +* BFD_RELOC_SH_COUNT: howto manager. (line 998) +* BFD_RELOC_SH_DATA: howto manager. (line 1001) +* BFD_RELOC_SH_DISP12: howto manager. (line 981) +* BFD_RELOC_SH_DISP12BY2: howto manager. (line 982) +* BFD_RELOC_SH_DISP12BY4: howto manager. (line 983) +* BFD_RELOC_SH_DISP12BY8: howto manager. (line 984) +* BFD_RELOC_SH_DISP20: howto manager. (line 985) +* BFD_RELOC_SH_DISP20BY8: howto manager. (line 986) +* BFD_RELOC_SH_FUNCDESC: howto manager. (line 1073) +* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 1006) +* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 1031) +* BFD_RELOC_SH_GOT10BY4: howto manager. (line 1034) +* BFD_RELOC_SH_GOT10BY8: howto manager. (line 1035) +* BFD_RELOC_SH_GOT20: howto manager. (line 1067) +* BFD_RELOC_SH_GOT_HI16: howto manager. (line 1013) +* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 1010) +* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 1012) +* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 1011) +* BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 1069) +* BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 1070) +* BFD_RELOC_SH_GOTOFF20: howto manager. (line 1068) +* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 1025) +* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 1022) +* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 1024) +* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 1023) +* BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 1071) +* BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 1072) +* BFD_RELOC_SH_GOTPC: howto manager. (line 1009) +* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 1029) +* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 1026) +* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 1028) +* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 1027) +* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 1036) +* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 1037) +* BFD_RELOC_SH_GOTPLT32: howto manager. (line 1038) +* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 1017) +* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 1014) +* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 1016) +* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 1015) +* BFD_RELOC_SH_IMM3: howto manager. (line 979) +* BFD_RELOC_SH_IMM3U: howto manager. (line 980) +* BFD_RELOC_SH_IMM4: howto manager. (line 987) +* BFD_RELOC_SH_IMM4BY2: howto manager. (line 988) +* BFD_RELOC_SH_IMM4BY4: howto manager. (line 989) +* BFD_RELOC_SH_IMM8: howto manager. (line 990) +* BFD_RELOC_SH_IMM8BY2: howto manager. (line 991) +* BFD_RELOC_SH_IMM8BY4: howto manager. (line 992) +* BFD_RELOC_SH_IMM_HI16: howto manager. (line 1056) +* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 1057) +* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 1050) +* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 1051) +* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 1054) +* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 1055) +* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 1052) +* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 1053) +* BFD_RELOC_SH_IMMS10: howto manager. (line 1044) +* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 1045) +* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 1046) +* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 1047) +* BFD_RELOC_SH_IMMS16: howto manager. (line 1048) +* BFD_RELOC_SH_IMMS6: howto manager. (line 1041) +* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 1042) +* BFD_RELOC_SH_IMMU16: howto manager. (line 1049) +* BFD_RELOC_SH_IMMU5: howto manager. (line 1040) +* BFD_RELOC_SH_IMMU6: howto manager. (line 1043) +* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 1007) +* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 1032) +* BFD_RELOC_SH_LABEL: howto manager. (line 1002) +* BFD_RELOC_SH_LOOP_END: howto manager. (line 1004) +* BFD_RELOC_SH_LOOP_START: howto manager. (line 1003) +* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 978) +* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 977) +* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 993) +* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 994) +* BFD_RELOC_SH_PLT_HI16: howto manager. (line 1021) +* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 1018) +* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 1020) +* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 1019) +* BFD_RELOC_SH_PT_16: howto manager. (line 1058) +* BFD_RELOC_SH_RELATIVE: howto manager. (line 1008) +* BFD_RELOC_SH_RELATIVE64: howto manager. (line 1033) +* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 1039) +* BFD_RELOC_SH_SWITCH16: howto manager. (line 995) +* BFD_RELOC_SH_SWITCH32: howto manager. (line 996) +* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 1064) +* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 1065) +* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 1059) +* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 1062) +* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 1060) +* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 1061) +* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 1063) +* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 1066) +* BFD_RELOC_SH_USES: howto manager. (line 997) +* 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 820) +* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 834) +* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 835) +* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 836) +* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 837) +* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 832) +* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 833) +* BFD_RELOC_TIC30_LDP: howto manager. (line 1718) +* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1736) +* BFD_RELOC_TIC54X_23: howto manager. (line 1733) +* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1741) +* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1723) +* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1728) +* BFD_RELOC_TILEGX_BROFF_X1: howto manager. (line 3655) +* BFD_RELOC_TILEGX_COPY: howto manager. (line 3651) +* BFD_RELOC_TILEGX_DEST_IMM8_X1: howto manager. (line 3662) +* BFD_RELOC_TILEGX_GLOB_DAT: howto manager. (line 3652) +* BFD_RELOC_TILEGX_HW0: howto manager. (line 3644) +* BFD_RELOC_TILEGX_HW0_LAST: howto manager. (line 3648) +* BFD_RELOC_TILEGX_HW1: howto manager. (line 3645) +* BFD_RELOC_TILEGX_HW1_LAST: howto manager. (line 3649) +* BFD_RELOC_TILEGX_HW2: howto manager. (line 3646) +* BFD_RELOC_TILEGX_HW2_LAST: howto manager. (line 3650) +* BFD_RELOC_TILEGX_HW3: howto manager. (line 3647) +* BFD_RELOC_TILEGX_IMM16_X0_HW0: howto manager. (line 3671) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT: howto manager. (line 3699) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST: howto manager. (line 3679) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager. (line 3707) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager. (line 3693) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager. + (line 3727) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager. (line 3721) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager. (line 3733) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager. (line 3717) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL: howto manager. (line 3685) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager. (line 3701) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: howto manager. (line 3713) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: howto manager. (line 3725) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: howto manager. (line 3715) +* BFD_RELOC_TILEGX_IMM16_X0_HW1: howto manager. (line 3673) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST: howto manager. (line 3681) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager. (line 3709) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager. (line 3695) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager. + (line 3729) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager. (line 3723) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager. (line 3735) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager. (line 3719) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL: howto manager. (line 3687) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager. (line 3703) +* BFD_RELOC_TILEGX_IMM16_X0_HW2: howto manager. (line 3675) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST: howto manager. (line 3683) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager. (line 3697) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager. + (line 3731) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL: howto manager. (line 3689) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager. (line 3705) +* BFD_RELOC_TILEGX_IMM16_X0_HW3: howto manager. (line 3677) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL: howto manager. (line 3691) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager. (line 3711) +* BFD_RELOC_TILEGX_IMM16_X1_HW0: howto manager. (line 3672) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT: howto manager. (line 3700) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST: howto manager. (line 3680) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager. (line 3708) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager. (line 3694) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager. + (line 3728) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager. (line 3722) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager. (line 3734) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager. (line 3718) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL: howto manager. (line 3686) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager. (line 3702) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: howto manager. (line 3714) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: howto manager. (line 3726) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: howto manager. (line 3716) +* BFD_RELOC_TILEGX_IMM16_X1_HW1: howto manager. (line 3674) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST: howto manager. (line 3682) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager. (line 3710) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager. (line 3696) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager. + (line 3730) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager. (line 3724) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager. (line 3736) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager. (line 3720) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL: howto manager. (line 3688) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager. (line 3704) +* BFD_RELOC_TILEGX_IMM16_X1_HW2: howto manager. (line 3676) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST: howto manager. (line 3684) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager. (line 3698) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager. + (line 3732) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL: howto manager. (line 3690) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager. (line 3706) +* BFD_RELOC_TILEGX_IMM16_X1_HW3: howto manager. (line 3678) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL: howto manager. (line 3692) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager. (line 3712) +* BFD_RELOC_TILEGX_IMM8_X0: howto manager. (line 3658) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: howto manager. (line 3749) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: howto manager. (line 3744) +* BFD_RELOC_TILEGX_IMM8_X1: howto manager. (line 3660) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: howto manager. (line 3750) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: howto manager. (line 3745) +* BFD_RELOC_TILEGX_IMM8_Y0: howto manager. (line 3659) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: howto manager. (line 3751) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3746) +* BFD_RELOC_TILEGX_IMM8_Y1: howto manager. (line 3661) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: howto manager. (line 3752) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3747) +* BFD_RELOC_TILEGX_JMP_SLOT: howto manager. (line 3653) +* BFD_RELOC_TILEGX_JUMPOFF_X1: howto manager. (line 3656) +* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT: howto manager. (line 3657) +* BFD_RELOC_TILEGX_MF_IMM14_X1: howto manager. (line 3664) +* BFD_RELOC_TILEGX_MMEND_X0: howto manager. (line 3666) +* BFD_RELOC_TILEGX_MMSTART_X0: howto manager. (line 3665) +* BFD_RELOC_TILEGX_MT_IMM14_X1: howto manager. (line 3663) +* BFD_RELOC_TILEGX_RELATIVE: howto manager. (line 3654) +* BFD_RELOC_TILEGX_SHAMT_X0: howto manager. (line 3667) +* BFD_RELOC_TILEGX_SHAMT_X1: howto manager. (line 3668) +* BFD_RELOC_TILEGX_SHAMT_Y0: howto manager. (line 3669) +* BFD_RELOC_TILEGX_SHAMT_Y1: howto manager. (line 3670) +* BFD_RELOC_TILEGX_TLS_DTPMOD32: howto manager. (line 3740) +* BFD_RELOC_TILEGX_TLS_DTPMOD64: howto manager. (line 3737) +* BFD_RELOC_TILEGX_TLS_DTPOFF32: howto manager. (line 3741) +* BFD_RELOC_TILEGX_TLS_DTPOFF64: howto manager. (line 3738) +* BFD_RELOC_TILEGX_TLS_GD_CALL: howto manager. (line 3743) +* BFD_RELOC_TILEGX_TLS_IE_LOAD: howto manager. (line 3748) +* BFD_RELOC_TILEGX_TLS_TPOFF32: howto manager. (line 3742) +* BFD_RELOC_TILEGX_TLS_TPOFF64: howto manager. (line 3739) +* BFD_RELOC_TILEPRO_BROFF_X1: howto manager. (line 3567) +* BFD_RELOC_TILEPRO_COPY: howto manager. (line 3563) +* BFD_RELOC_TILEPRO_DEST_IMM8_X1: howto manager. (line 3574) +* BFD_RELOC_TILEPRO_GLOB_DAT: howto manager. (line 3564) +* BFD_RELOC_TILEPRO_IMM16_X0: howto manager. (line 3577) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT: howto manager. (line 3593) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA: howto manager. (line 3599) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI: howto manager. (line 3597) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO: howto manager. (line 3595) +* BFD_RELOC_TILEPRO_IMM16_X0_HA: howto manager. (line 3583) +* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL: howto manager. (line 3591) +* BFD_RELOC_TILEPRO_IMM16_X0_HI: howto manager. (line 3581) +* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL: howto manager. (line 3589) +* BFD_RELOC_TILEPRO_IMM16_X0_LO: howto manager. (line 3579) +* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL: howto manager. (line 3587) +* BFD_RELOC_TILEPRO_IMM16_X0_PCREL: howto manager. (line 3585) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: howto manager. (line 3615) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: howto manager. (line 3621) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: howto manager. (line 3619) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: howto manager. (line 3617) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: howto manager. (line 3623) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: howto manager. (line 3629) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: howto manager. (line 3627) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: howto manager. (line 3625) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: howto manager. (line 3634) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: howto manager. (line 3640) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: howto manager. (line 3638) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: howto manager. (line 3636) +* BFD_RELOC_TILEPRO_IMM16_X1: howto manager. (line 3578) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT: howto manager. (line 3594) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA: howto manager. (line 3600) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI: howto manager. (line 3598) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO: howto manager. (line 3596) +* BFD_RELOC_TILEPRO_IMM16_X1_HA: howto manager. (line 3584) +* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL: howto manager. (line 3592) +* BFD_RELOC_TILEPRO_IMM16_X1_HI: howto manager. (line 3582) +* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL: howto manager. (line 3590) +* BFD_RELOC_TILEPRO_IMM16_X1_LO: howto manager. (line 3580) +* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL: howto manager. (line 3588) +* BFD_RELOC_TILEPRO_IMM16_X1_PCREL: howto manager. (line 3586) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: howto manager. (line 3616) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: howto manager. (line 3622) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: howto manager. (line 3620) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: howto manager. (line 3618) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: howto manager. (line 3624) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: howto manager. (line 3630) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: howto manager. (line 3628) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: howto manager. (line 3626) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: howto manager. (line 3635) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: howto manager. (line 3641) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: howto manager. (line 3639) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: howto manager. (line 3637) +* BFD_RELOC_TILEPRO_IMM8_X0: howto manager. (line 3570) +* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: howto manager. (line 3610) +* BFD_RELOC_TILEPRO_IMM8_X1: howto manager. (line 3572) +* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: howto manager. (line 3611) +* BFD_RELOC_TILEPRO_IMM8_Y0: howto manager. (line 3571) +* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: howto manager. (line 3612) +* BFD_RELOC_TILEPRO_IMM8_Y1: howto manager. (line 3573) +* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: howto manager. (line 3613) +* BFD_RELOC_TILEPRO_JMP_SLOT: howto manager. (line 3565) +* BFD_RELOC_TILEPRO_JOFFLONG_X1: howto manager. (line 3568) +* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT: howto manager. (line 3569) +* BFD_RELOC_TILEPRO_MF_IMM15_X1: howto manager. (line 3576) +* BFD_RELOC_TILEPRO_MMEND_X0: howto manager. (line 3602) +* BFD_RELOC_TILEPRO_MMEND_X1: howto manager. (line 3604) +* BFD_RELOC_TILEPRO_MMSTART_X0: howto manager. (line 3601) +* BFD_RELOC_TILEPRO_MMSTART_X1: howto manager. (line 3603) +* BFD_RELOC_TILEPRO_MT_IMM15_X1: howto manager. (line 3575) +* BFD_RELOC_TILEPRO_RELATIVE: howto manager. (line 3566) +* BFD_RELOC_TILEPRO_SHAMT_X0: howto manager. (line 3605) +* BFD_RELOC_TILEPRO_SHAMT_X1: howto manager. (line 3606) +* BFD_RELOC_TILEPRO_SHAMT_Y0: howto manager. (line 3607) +* BFD_RELOC_TILEPRO_SHAMT_Y1: howto manager. (line 3608) +* BFD_RELOC_TILEPRO_TLS_DTPMOD32: howto manager. (line 3631) +* BFD_RELOC_TILEPRO_TLS_DTPOFF32: howto manager. (line 3632) +* BFD_RELOC_TILEPRO_TLS_GD_CALL: howto manager. (line 3609) +* BFD_RELOC_TILEPRO_TLS_IE_LOAD: howto manager. (line 3614) +* BFD_RELOC_TILEPRO_TLS_TPOFF32: howto manager. (line 3633) +* bfd_reloc_type_lookup: howto manager. (line 3787) +* BFD_RELOC_V850_16_GOT: howto manager. (line 1682) +* BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1706) +* BFD_RELOC_V850_16_PCREL: howto manager. (line 1652) +* BFD_RELOC_V850_16_S1: howto manager. (line 1670) +* BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1667) +* BFD_RELOC_V850_17_PCREL: howto manager. (line 1655) +* BFD_RELOC_V850_22_PCREL: howto manager. (line 1587) +* BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1688) +* BFD_RELOC_V850_23: howto manager. (line 1658) +* BFD_RELOC_V850_32_ABS: howto manager. (line 1664) +* BFD_RELOC_V850_32_GOT: howto manager. (line 1685) +* BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1709) +* BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1679) +* BFD_RELOC_V850_32_PCREL: howto manager. (line 1661) +* BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1691) +* BFD_RELOC_V850_9_PCREL: howto manager. (line 1584) +* BFD_RELOC_V850_ALIGN: howto manager. (line 1645) +* BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1676) +* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1636) +* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1633) +* BFD_RELOC_V850_CODE: howto manager. (line 1712) +* BFD_RELOC_V850_COPY: howto manager. (line 1694) +* BFD_RELOC_V850_DATA: howto manager. (line 1715) +* BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1697) +* BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1700) +* BFD_RELOC_V850_LO16_S1: howto manager. (line 1673) +* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1648) +* BFD_RELOC_V850_LONGCALL: howto manager. (line 1639) +* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1642) +* BFD_RELOC_V850_RELATIVE: howto manager. (line 1703) +* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1593) +* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1590) +* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1625) +* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1615) +* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1622) +* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1618) +* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1604) +* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1612) +* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1608) +* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1600) +* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1597) +* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1629) +* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2807) +* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2808) +* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2809) +* BFD_RELOC_VISIUM_HI16: howto manager. (line 3777) +* BFD_RELOC_VISIUM_HI16_PCREL: howto manager. (line 3781) +* BFD_RELOC_VISIUM_IM16: howto manager. (line 3779) +* BFD_RELOC_VISIUM_IM16_PCREL: howto manager. (line 3783) +* BFD_RELOC_VISIUM_LO16: howto manager. (line 3778) +* BFD_RELOC_VISIUM_LO16_PCREL: howto manager. (line 3782) +* BFD_RELOC_VISIUM_REL16: howto manager. (line 3780) +* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 2361) +* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 2362) +* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 2366) +* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 2365) +* BFD_RELOC_X86_64_32S: howto manager. (line 624) +* BFD_RELOC_X86_64_COPY: howto manager. (line 619) +* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 625) +* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 630) +* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 626) +* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 620) +* BFD_RELOC_X86_64_GOT32: howto manager. (line 617) +* BFD_RELOC_X86_64_GOT64: howto manager. (line 635) +* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 633) +* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 634) +* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 640) +* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 637) +* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 623) +* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 636) +* BFD_RELOC_X86_64_GOTPCRELX: howto manager. (line 646) +* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 638) +* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 631) +* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 643) +* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 621) +* BFD_RELOC_X86_64_PC32_BND: howto manager. (line 644) +* BFD_RELOC_X86_64_PLT32: howto manager. (line 618) +* BFD_RELOC_X86_64_PLT32_BND: howto manager. (line 645) +* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 639) +* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 622) +* BFD_RELOC_X86_64_REX_GOTPCRELX: howto manager. (line 647) +* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 642) +* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 641) +* BFD_RELOC_X86_64_TLSGD: howto manager. (line 628) +* BFD_RELOC_X86_64_TLSLD: howto manager. (line 629) +* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 632) +* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 627) +* BFD_RELOC_XC16X_PAG: howto manager. (line 2801) +* BFD_RELOC_XC16X_POF: howto manager. (line 2802) +* BFD_RELOC_XC16X_SEG: howto manager. (line 2803) +* BFD_RELOC_XC16X_SOF: howto manager. (line 2804) +* BFD_RELOC_XGATE_24: howto manager. (line 2524) +* BFD_RELOC_XGATE_GPAGE: howto manager. (line 2521) +* BFD_RELOC_XGATE_IMM3: howto manager. (line 2541) +* BFD_RELOC_XGATE_IMM4: howto manager. (line 2544) +* BFD_RELOC_XGATE_IMM5: howto manager. (line 2547) +* BFD_RELOC_XGATE_IMM8_HI: howto manager. (line 2537) +* BFD_RELOC_XGATE_IMM8_LO: howto manager. (line 2533) +* BFD_RELOC_XGATE_LO16: howto manager. (line 2517) +* BFD_RELOC_XGATE_PCREL_10: howto manager. (line 2530) +* BFD_RELOC_XGATE_PCREL_9: howto manager. (line 2527) +* BFD_RELOC_XGATE_RL_GROUP: howto manager. (line 2512) +* BFD_RELOC_XGATE_RL_JUMP: howto manager. (line 2508) +* BFD_RELOC_XSTORMY16_12: howto manager. (line 2793) +* BFD_RELOC_XSTORMY16_24: howto manager. (line 2794) +* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2795) +* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2792) +* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2982) +* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2987) +* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2929) +* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2930) +* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2928) +* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2918) +* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2919) +* BFD_RELOC_XTENSA_OP0: howto manager. (line 2976) +* BFD_RELOC_XTENSA_OP1: howto manager. (line 2977) +* BFD_RELOC_XTENSA_OP2: howto manager. (line 2978) +* BFD_RELOC_XTENSA_PLT: howto manager. (line 2923) +* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2920) +* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2913) +* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2958) +* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2938) +* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2968) +* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2948) +* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2969) +* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2949) +* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2970) +* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2950) +* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2971) +* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2951) +* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2972) +* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2952) +* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2959) +* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2939) +* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2960) +* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2940) +* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2961) +* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2941) +* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2962) +* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2942) +* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2963) +* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2943) +* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2964) +* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2944) +* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2965) +* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2945) +* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2966) +* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2946) +* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2967) +* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2947) +* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2997) +* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2998) +* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2994) +* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2996) +* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2995) +* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2993) +* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2992) +* BFD_RELOC_Z80_DISP8: howto manager. (line 3001) +* BFD_RELOC_Z8K_CALLR: howto manager. (line 3007) +* BFD_RELOC_Z8K_DISP7: howto manager. (line 3004) +* BFD_RELOC_Z8K_IMM4L: howto manager. (line 3010) +* bfd_rename_section: section prototypes. (line 179) +* bfd_scan_arch: Architectures. (line 546) +* bfd_scan_vma: Miscellaneous. (line 126) +* 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 209) +* bfd_set_arch_info: Architectures. (line 587) +* bfd_set_archive_head: Archives. (line 75) +* bfd_set_assert_handler: Error reporting. (line 133) +* bfd_set_default_target: bfd_target. (line 465) +* 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 176) +* bfd_set_reloc: Miscellaneous. (line 34) +* bfd_set_section_contents: section prototypes. (line 240) +* bfd_set_section_flags: section prototypes. (line 164) +* bfd_set_section_size: section prototypes. (line 226) +* 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 517) +* bfd_update_compression_header: Miscellaneous. (line 352) +* bfd_write_bigendian_4byte_int: Internal. (line 13) +* bfd_zalloc: Opening and Closing. + (line 257) +* bfd_zalloc2: Opening and Closing. + (line 266) +* check_build_id_file: Opening and Closing. + (line 451) +* 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) +* get_build_id: Opening and Closing. + (line 421) +* get_build_id_name: Opening and Closing. + (line 435) +* Hash tables: Hash Tables. (line 6) +* internal object-file format: Canonical format. (line 11) +* Linker: Linker Functions. (line 6) +* Other functions: Miscellaneous. (line 191) +* separate_alt_debug_file_exists: Opening and Closing. + (line 323) +* separate_debug_file_exists: Opening and Closing. + (line 314) +* struct bfd_iovec: Miscellaneous. (line 411) +* 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 reporting25883 +Node: Miscellaneous30368 +Node: Memory Usage48842 +Node: Initialization50070 +Node: Sections50529 +Node: Section Input51012 +Node: Section Output52377 +Node: typedef asection54863 +Node: section prototypes81613 +Node: Symbols92210 +Node: Reading Symbols93805 +Node: Writing Symbols94912 +Node: Mini Symbols96653 +Node: typedef asymbol97627 +Node: symbol handling functions103698 +Node: Archives109040 +Node: Formats113069 +Node: Relocations116017 +Node: typedef arelent116744 +Node: howto manager132380 +Node: Core Files255901 +Node: Targets257939 +Node: bfd_target259909 +Node: Architectures283422 +Node: Opening and Closing312771 +Node: Internal329609 +Node: File Caching335954 +Node: Linker Functions337868 +Node: Creating a Linker Hash Table339541 +Node: Adding Symbols to the Hash Table341279 +Node: Differing file formats342179 +Node: Adding symbols from an object file343904 +Node: Adding symbols from an archive346055 +Node: Performing the Final Link348401 +Node: Information provided by the linker349643 +Node: Relocating the section contents350797 +Node: Writing the symbol table352548 +Node: Hash Tables358681 +Node: Creating and Freeing a Hash Table359879 +Node: Looking Up or Entering a String361129 +Node: Traversing a Hash Table362382 +Node: Deriving a New Hash Table Type363171 +Node: Define the Derived Structures364237 +Node: Write the Derived Creation Routine365318 +Node: Write Other Derived Routines367942 +Node: BFD back ends369257 +Node: What to Put Where369527 +Node: aout369707 +Node: coff376045 +Node: elf404878 +Node: mmo405279 +Node: File layout406152 +Node: Symbol-table412079 +Node: mmo section mapping415843 +Node: GNU Free Documentation License419495 +Node: BFD Index444578 + +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..d2bb630309e --- /dev/null +++ b/bfd/doc/bfdt.texi @@ -0,0 +1,961 @@ +@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 + @}; + +enum bfd_plugin_format + @{ + bfd_plugin_unknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + @}; + +struct bfd_build_id + @{ + bfd_size_type size; + bfd_byte data[1]; + @}; + +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 : 20; + + /* 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 + + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ +#define BFD_COMPRESS_GABI 0x20000 + + /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this + BFD. */ +#define BFD_CONVERT_ELF_COMMON 0x40000 + + /* Use the ELF STT_COMMON type in this BFD. */ +#define BFD_USE_ELF_STT_COMMON 0x80000 + + /* Flags bits to be saved in bfd_preserve_save. */ +#define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ + | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON) + + /* 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 \ + | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON) + + /* 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; + + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + + /* 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; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; +@}; + +/* 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 vprintf. + + +@example + +typedef void (*bfd_error_handler_type) (const char *, va_list); + +@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. + +@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. + +@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_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. + +@findex bfd_update_compression_header +@subsubsection @code{bfd_update_compression_header} +@strong{Synopsis} +@example +void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); +@end example +@strong{Description}@* +Set the compression header at CONTENTS of SEC in ABFD and update +elf_section_flags for compression. + +@findex bfd_check_compression_header +@subsubsection @code{bfd_check_compression_header} +@strong{Synopsis} +@example +bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); +@end example +@strong{Description}@* +Check the compression header at CONTENTS of SEC in ABFD and +store the uncompressed size in UNCOMPRESSED_SIZE if the +compression header is valid. + +@strong{Returns}@* +Return TRUE if the compression header is valid. + +@findex bfd_get_compression_header_size +@subsubsection @code{bfd_get_compression_header_size} +@strong{Synopsis} +@example +int bfd_get_compression_header_size (bfd *abfd, asection *sec); +@end example +@strong{Description}@* +Return the size of the compression header of SEC in ABFD. + +@strong{Returns}@* +Return the size of the compression header in bytes. + +@findex bfd_convert_section_size +@subsubsection @code{bfd_convert_section_size} +@strong{Synopsis} +@example +bfd_size_type bfd_convert_section_size + (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size); +@end example +@strong{Description}@* +Convert the size @var{size} of the section @var{isec} in input +BFD @var{ibfd} to the section size in output BFD @var{obfd}. + +@findex bfd_convert_section_contents +@subsubsection @code{bfd_convert_section_contents} +@strong{Synopsis} +@example +bfd_boolean bfd_convert_section_contents + (bfd *ibfd, asection *isec, bfd *obfd, + bfd_byte **ptr, bfd_size_type *ptr_size); +@end example +@strong{Description}@* +Convert the contents, stored in @var{*ptr}, of the section +@var{isec} in input BFD @var{ibfd} to output BFD @var{obfd} +if needed. The original buffer pointed to by @var{*ptr} may +be freed and @var{*ptr} is returned with memory malloc'd by this +function, and the new size written to @var{ptr_size}. + diff --git a/bfd/doc/bfdver.texi b/bfd/doc/bfdver.texi new file mode 100644 index 00000000000..1dd7eeac8c3 --- /dev/null +++ b/bfd/doc/bfdver.texi @@ -0,0 +1,4 @@ +@set VERSION 2.28 +@set VERSION_PACKAGE (GNU Binutils) +@set UPDATED March 2017 +@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..b318c8a6b7c --- /dev/null +++ b/bfd/doc/coffcode.texi @@ -0,0 +1,697 @@ +@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 +@}; + +typedef asection * (*coff_gc_mark_hook_fn) + (asection *, struct bfd_link_info *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *); + +@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..cee98717474 --- /dev/null +++ b/bfd/doc/linker.texi @@ -0,0 +1,482 @@ +@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. + +@findex bfd_link_check_relocs +@subsubsection @code{bfd_link_check_relocs} +@strong{Synopsis} +@example +bfd_boolean bfd_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); +@end example +@strong{Description}@* +Checks the relocs in ABFD for validity. +Does not execute the relocs. +Return TRUE if everything is OK, FALSE otherwise. +This is the external entry point to this code. + +@findex _bfd_generic_link_check_relocs +@subsubsection @code{_bfd_generic_link_check_relocs} +@strong{Synopsis} +@example +bfd_boolean _bfd_generic_link_check_relocs + (bfd *abfd, struct bfd_link_info *info); +@end example +@strong{Description}@* +Stub function for targets that do not implement reloc checking. +Return TRUE. +This is an internal function. It should not be called from +outside the BFD library. + +@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, struct bfd_link_info *info); +@end example +@strong{Description}@* +Merge private BFD information from the BFD @var{ibfd} to the +the output file BFD 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, info) \ + BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \ + (ibfd, info)) +@end example + +@findex _bfd_generic_verify_endian_match +@subsubsection @code{_bfd_generic_verify_endian_match} +@strong{Synopsis} +@example +bfd_boolean _bfd_generic_verify_endian_match + (bfd *ibfd, struct bfd_link_info *info); +@end example +@strong{Description}@* +Can be used from / for bfd_merge_private_bfd_data to check that +endianness matches between input and output file. Returns +TRUE for a match, otherwise returns FALSE and emits an error. + 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..fb552f21122 --- /dev/null +++ b/bfd/doc/opncls.texi @@ -0,0 +1,533 @@ + +@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 buildid); +@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, const char *dir, bfd_boolean include_dirs, + get_func_type get, check_func_type check); +@end example +@strong{Description}@* +Searches for a debug information file corresponding to @var{abfd}. +The name of the separate debug info file is returned by the @var{get} +function. This function scans various fixed locations in the +filesystem, including the file tree rooted at @var{dir}. If the +@var{include_dirs} parameter is true then the directory components of +@var{abfd}'s filename will be included in the searched locations. + +Returns the filename of the first file to be found which receives a +TRUE result from the @var{check} function. 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, the search will take place starting at +the current directory. + +@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, the search will take place starting at +the current directory. + +@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. + +@findex get_build_id +@subsubsection @code{get_build_id} +@strong{Synopsis} +@example +struct bfd_build_id * get_build_id + (bfd *abfd); +@end example +@strong{Description}@* +Finds the build-id associated with @var{abfd}. If the build-id is +extracted from the note section then a build-id structure is built +for it, using memory allocated to @var{abfd}, and this is then +attached to the @var{abfd}. + +Returns a pointer to the build-id structure if a build-id could be +found. If no build-id is found NULL is returned and error code is +set. + +@findex get_build_id_name +@subsubsection @code{get_build_id_name} +@strong{Synopsis} +@example +char * get_build_id_name + (bfd *abfd, unsigned long *build_id_out) +@end example +@strong{Description}@* +Searches @var{abfd} for a build-id, and then constructs a pathname +from it. The path is computed as .build-id/NN/NN+NN.debug where +NNNN+NN is the build-id value as a hexadecimal string. + +Returns the constructed filename or NULL upon error. +It is the caller's responsibility to free the memory used to hold the +filename. +If a filename is returned then the @var{build_id_out} parameter is +set to a pointer to the build_id structure. + +@findex check_build_id_file +@subsubsection @code{check_build_id_file} +@strong{Synopsis} +@example +bfd_boolean check_build_id_file + (char *name, unsigned long buildid); +@end example +@strong{Description}@* +Checks to see if @var{name} is a readable file and if its build-id +matches @var{buildid}. + +Returns TRUE if the file exists, is readable, and contains a build-id +which matches @var{build-id}. + +@findex bfd_follow_build_id_debuglink +@subsubsection @code{bfd_follow_build_id_debuglink} +@strong{Synopsis} +@example +char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir); +@end example +@strong{Description}@* +Takes @var{abfd} and searches it for a .note.gnu.build-id section. +If this section is found, it extracts the value of the NT_GNU_BUILD_ID +note, which should be a hexadecimal value @var{NNNN+NN} (for +32+ hex digits). It then searches the filesystem for a file named +@var{.build-id/NN/NN+NN.debug} in a set of standard locations, +including the directory tree rooted at @var{dir}. The filename +of the first matching file to be found is returned. A matching +file should contain a .note.gnu.build-id section with the same +@var{NNNN+NN} note as @var{abfd}, although this check is currently +not implemented. + +If @var{dir} is NULL, the search will take place starting at +the current directory. + +@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. + diff --git a/bfd/doc/reloc.texi b/bfd/doc/reloc.texi new file mode 100644 index 00000000000..ef6c5042d1d --- /dev/null +++ b/bfd/doc/reloc.texi @@ -0,0 +1,4370 @@ +@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_MIPS16_16_PCREL_S1 +MIPS16 PC-relative relocation. +@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_FT32_10 +@deffnx {} BFD_RELOC_FT32_20 +@deffnx {} BFD_RELOC_FT32_17 +@deffnx {} BFD_RELOC_FT32_18 +FT32 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 +@deffnx {} BFD_RELOC_386_GOT32X +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 +@deffnx {} BFD_RELOC_X86_64_GOTPCRELX +@deffnx {} BFD_RELOC_X86_64_REX_GOTPCRELX +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_PPC_16DX_HA +@deffnx {} BFD_RELOC_PPC_REL16DX_HA +@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 +@deffnx {} BFD_RELOC_PPC64_ENTRY +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_THUMB_ALU_ABS_G0_NC +@deffnx {} BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC +@deffnx {} BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC +@deffnx {} BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC +Thumb1 relocations to support execute-only code. +@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_NONE +@deffnx {} BFD_RELOC_ARC_8 +@deffnx {} BFD_RELOC_ARC_16 +@deffnx {} BFD_RELOC_ARC_24 +@deffnx {} BFD_RELOC_ARC_32 +@deffnx {} BFD_RELOC_ARC_N8 +@deffnx {} BFD_RELOC_ARC_N16 +@deffnx {} BFD_RELOC_ARC_N24 +@deffnx {} BFD_RELOC_ARC_N32 +@deffnx {} BFD_RELOC_ARC_SDA +@deffnx {} BFD_RELOC_ARC_SECTOFF +@deffnx {} BFD_RELOC_ARC_S21H_PCREL +@deffnx {} BFD_RELOC_ARC_S21W_PCREL +@deffnx {} BFD_RELOC_ARC_S25H_PCREL +@deffnx {} BFD_RELOC_ARC_S25W_PCREL +@deffnx {} BFD_RELOC_ARC_SDA32 +@deffnx {} BFD_RELOC_ARC_SDA_LDST +@deffnx {} BFD_RELOC_ARC_SDA_LDST1 +@deffnx {} BFD_RELOC_ARC_SDA_LDST2 +@deffnx {} BFD_RELOC_ARC_SDA16_LD +@deffnx {} BFD_RELOC_ARC_SDA16_LD1 +@deffnx {} BFD_RELOC_ARC_SDA16_LD2 +@deffnx {} BFD_RELOC_ARC_S13_PCREL +@deffnx {} BFD_RELOC_ARC_W +@deffnx {} BFD_RELOC_ARC_32_ME +@deffnx {} BFD_RELOC_ARC_32_ME_S +@deffnx {} BFD_RELOC_ARC_N32_ME +@deffnx {} BFD_RELOC_ARC_SECTOFF_ME +@deffnx {} BFD_RELOC_ARC_SDA32_ME +@deffnx {} BFD_RELOC_ARC_W_ME +@deffnx {} BFD_RELOC_AC_SECTOFF_U8 +@deffnx {} BFD_RELOC_AC_SECTOFF_U8_1 +@deffnx {} BFD_RELOC_AC_SECTOFF_U8_2 +@deffnx {} BFD_RELOC_AC_SECTOFF_S9 +@deffnx {} BFD_RELOC_AC_SECTOFF_S9_1 +@deffnx {} BFD_RELOC_AC_SECTOFF_S9_2 +@deffnx {} BFD_RELOC_ARC_SECTOFF_ME_1 +@deffnx {} BFD_RELOC_ARC_SECTOFF_ME_2 +@deffnx {} BFD_RELOC_ARC_SECTOFF_1 +@deffnx {} BFD_RELOC_ARC_SECTOFF_2 +@deffnx {} BFD_RELOC_ARC_SDA_12 +@deffnx {} BFD_RELOC_ARC_SDA16_ST2 +@deffnx {} BFD_RELOC_ARC_32_PCREL +@deffnx {} BFD_RELOC_ARC_PC32 +@deffnx {} BFD_RELOC_ARC_GOT32 +@deffnx {} BFD_RELOC_ARC_GOTPC32 +@deffnx {} BFD_RELOC_ARC_PLT32 +@deffnx {} BFD_RELOC_ARC_COPY +@deffnx {} BFD_RELOC_ARC_GLOB_DAT +@deffnx {} BFD_RELOC_ARC_JMP_SLOT +@deffnx {} BFD_RELOC_ARC_RELATIVE +@deffnx {} BFD_RELOC_ARC_GOTOFF +@deffnx {} BFD_RELOC_ARC_GOTPC +@deffnx {} BFD_RELOC_ARC_S21W_PCREL_PLT +@deffnx {} BFD_RELOC_ARC_S25H_PCREL_PLT +@deffnx {} BFD_RELOC_ARC_TLS_DTPMOD +@deffnx {} BFD_RELOC_ARC_TLS_TPOFF +@deffnx {} BFD_RELOC_ARC_TLS_GD_GOT +@deffnx {} BFD_RELOC_ARC_TLS_GD_LD +@deffnx {} BFD_RELOC_ARC_TLS_GD_CALL +@deffnx {} BFD_RELOC_ARC_TLS_IE_GOT +@deffnx {} BFD_RELOC_ARC_TLS_DTPOFF +@deffnx {} BFD_RELOC_ARC_TLS_DTPOFF_S9 +@deffnx {} BFD_RELOC_ARC_TLS_LE_S9 +@deffnx {} BFD_RELOC_ARC_TLS_LE_32 +@deffnx {} BFD_RELOC_ARC_S25W_PCREL_PLT +@deffnx {} BFD_RELOC_ARC_S21H_PCREL_PLT +@deffnx {} BFD_RELOC_ARC_NPS_CMEM16 +ARC relocs. +@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_RISCV_HI20 +@deffnx {} BFD_RELOC_RISCV_PCREL_HI20 +@deffnx {} BFD_RELOC_RISCV_PCREL_LO12_I +@deffnx {} BFD_RELOC_RISCV_PCREL_LO12_S +@deffnx {} BFD_RELOC_RISCV_LO12_I +@deffnx {} BFD_RELOC_RISCV_LO12_S +@deffnx {} BFD_RELOC_RISCV_GPREL12_I +@deffnx {} BFD_RELOC_RISCV_GPREL12_S +@deffnx {} BFD_RELOC_RISCV_TPREL_HI20 +@deffnx {} BFD_RELOC_RISCV_TPREL_LO12_I +@deffnx {} BFD_RELOC_RISCV_TPREL_LO12_S +@deffnx {} BFD_RELOC_RISCV_TPREL_ADD +@deffnx {} BFD_RELOC_RISCV_CALL +@deffnx {} BFD_RELOC_RISCV_CALL_PLT +@deffnx {} BFD_RELOC_RISCV_ADD8 +@deffnx {} BFD_RELOC_RISCV_ADD16 +@deffnx {} BFD_RELOC_RISCV_ADD32 +@deffnx {} BFD_RELOC_RISCV_ADD64 +@deffnx {} BFD_RELOC_RISCV_SUB8 +@deffnx {} BFD_RELOC_RISCV_SUB16 +@deffnx {} BFD_RELOC_RISCV_SUB32 +@deffnx {} BFD_RELOC_RISCV_SUB64 +@deffnx {} BFD_RELOC_RISCV_GOT_HI20 +@deffnx {} BFD_RELOC_RISCV_TLS_GOT_HI20 +@deffnx {} BFD_RELOC_RISCV_TLS_GD_HI20 +@deffnx {} BFD_RELOC_RISCV_JMP +@deffnx {} BFD_RELOC_RISCV_TLS_DTPMOD32 +@deffnx {} BFD_RELOC_RISCV_TLS_DTPREL32 +@deffnx {} BFD_RELOC_RISCV_TLS_DTPMOD64 +@deffnx {} BFD_RELOC_RISCV_TLS_DTPREL64 +@deffnx {} BFD_RELOC_RISCV_TLS_TPREL32 +@deffnx {} BFD_RELOC_RISCV_TLS_TPREL64 +@deffnx {} BFD_RELOC_RISCV_ALIGN +@deffnx {} BFD_RELOC_RISCV_RVC_BRANCH +@deffnx {} BFD_RELOC_RISCV_RVC_JUMP +@deffnx {} BFD_RELOC_RISCV_RVC_LUI +@deffnx {} BFD_RELOC_RISCV_GPREL_I +@deffnx {} BFD_RELOC_RISCV_GPREL_S +@deffnx {} BFD_RELOC_RISCV_TPREL_I +@deffnx {} BFD_RELOC_RISCV_TPREL_S +@deffnx {} BFD_RELOC_RISCV_RELAX +@deffnx {} BFD_RELOC_RISCV_CFA +@deffnx {} BFD_RELOC_RISCV_SUB6 +@deffnx {} BFD_RELOC_RISCV_SET6 +@deffnx {} BFD_RELOC_RISCV_SET8 +@deffnx {} BFD_RELOC_RISCV_SET16 +@deffnx {} BFD_RELOC_RISCV_SET32 +RISC-V relocations. +@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 +@deffnx {} BFD_RELOC_RL78_SADDR +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 +@deffnx {} BFD_RELOC_NIOS2_R2_S12 +@deffnx {} BFD_RELOC_NIOS2_R2_I10_1_PCREL +@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_1_PCREL +@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_2 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_1 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_2 +@deffnx {} BFD_RELOC_NIOS2_R2_X1I7_2 +@deffnx {} BFD_RELOC_NIOS2_R2_X2L5 +@deffnx {} BFD_RELOC_NIOS2_R2_F1I5_2 +@deffnx {} BFD_RELOC_NIOS2_R2_L5I4X1 +@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6 +@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6_2 +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_SUBTRACTOR32 +Symbol will be substracted. Must be followed by a BFD_RELOC_32. +@end deffn +@deffn {} BFD_RELOC_MACH_O_SUBTRACTOR64 +Symbol will be substracted. Must be followed by a BFD_RELOC_64. +@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_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_MACH_O_ARM64_ADDEND +Addend for PAGE or PAGEOFF. +@end deffn +@deffn {} BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21 +Relative offset to page of GOT slot. +@end deffn +@deffn {} BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12 +Relative offset within page of GOT slot. +@end deffn +@deffn {} BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT +Address of a GOT entry. +@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_NULL +Deprecated AArch64 null relocation code. +@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_MOVW_GOTOFF_G0_NC +Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry +for this symbol. Valid in LP64 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_MOVW_GOTOFF_G1 +Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry +for this symbol. Valid in LP64 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD64_GOTOFF_LO15 +Unsigned 15 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Valid in LP64 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14 +Scaled 14 bit byte offset to the page base of the global offset table. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15 +Scaled 15 bit byte offset to the page base of the global offset table. +@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_ADR_PREL21 +AArch64 TLS General Dynamic +@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_TLSGD_MOVW_G0_NC +AArch64 TLS General Dynamic relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSGD_MOVW_G1 +AArch64 TLS General Dynamic 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_TLSIE_MOVW_GOTTPREL_G0_NC +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 +AArch64 TLS INITIAL EXEC relocation. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12 +bit[23:12] of byte offset to module TLS base address. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12 +Unsigned 12 bit byte offset to module TLS base address. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC +No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_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_TLSLD_ADR_PAGE21. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21 +GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP +instruction. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_ADR_PREL21 +GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12 +bit[11:1] of byte offset to module TLS base address, encoded in ldst +instructions. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC +Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12 +bit[11:2] of byte offset to module TLS base address, encoded in ldst +instructions. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC +Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12 +bit[11:3] of byte offset to module TLS base address, encoded in ldst +instructions. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC +Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12 +bit[11:0] of byte offset to module TLS base address, encoded in ldst +instructions. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC +Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 +bit[15:0] of byte offset to module TLS base address. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC +No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 +bit[31:16] of byte offset to module TLS base address. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC +No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2 +bit[47:32] of byte offset to module TLS base address. +@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_TLSLD_LDST_DTPREL_LO12 +AArch64 pseudo relocation code for TLS local dynamic mode. It's to be +used internally by the AArch64 assembler and not (currently) written to +any object files. +@end deffn +@deffn {} BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC +Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check. +@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 +@deffn {} BFD_RELOC_VISIUM_HI16 +@deffnx {} BFD_RELOC_VISIUM_LO16 +@deffnx {} BFD_RELOC_VISIUM_IM16 +@deffnx {} BFD_RELOC_VISIUM_REL16 +@deffnx {} BFD_RELOC_VISIUM_HI16_PCREL +@deffnx {} BFD_RELOC_VISIUM_LO16_PCREL +@deffnx {} BFD_RELOC_VISIUM_IM16_PCREL +Visium Relocations. +@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..1cd27958e93 --- /dev/null +++ b/bfd/doc/section.texi @@ -0,0 +1,1088 @@ +@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. */ + unsigned int id; + + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ + unsigned 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 + + /* This section should be compressed. This is for ELF linker + internal use only. */ +#define SEC_ELF_COMPRESS 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 + + /* This section should be renamed. This is for ELF linker + internal use only. */ +#define SEC_ELF_RENAME 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 + + /* This section contains vliw code. This is for Toshiba MeP only. */ +#define SEC_MEP_VLIW 0x20000000 + + /* Indicate that section has the no read flag set. This happens + when memory read flag isn't set. */ +#define SEC_COFF_NOREAD 0x40000000 + + /* Indicate that section has the purecode flag set. */ +#define SEC_ELF_PURECODE 0x80000000 + + /* 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 +#define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 + + /* 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, SYM, NAME, IDX, FLAGS) \ + /* 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 (bfd *ibfd, 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, or if no such section exists in the same BFD and +IBFD is non-NULL, the next section with the same name in any input +BFD following IBFD. Return NULL on finding no section. + +@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_get_next_section_id +@subsubsection @code{bfd_get_next_section_id} +@strong{Synopsis} +@example +int bfd_get_next_section_id (void); +@end example +@strong{Description}@* +Returns the id that the next section created will have. + +@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..a5e522bf260 --- /dev/null +++ b/bfd/doc/syms.texi @@ -0,0 +1,481 @@ +@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_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) + + /* An ELF common symbol. */ +#define BSF_ELF_COMMON (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..4f03cf2835c --- /dev/null +++ b/bfd/doc/targets.texi @@ -0,0 +1,631 @@ +@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 +@{ + /* N.B. Update bfd_flavour_name if you change this. */ + 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 *, struct bfd_link_info *); + /* 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##_get_symbol_version_string, \ + 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)) + const char *(*_bfd_get_symbol_version_string) + (bfd *, struct bfd_symbol *, bfd_boolean *); +#define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h)) + 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_link_check_relocs, \ + 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 *); + + /* Check the relocations in the bfd for validity. */ + bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *); + + /* 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_iterate_over_targets +@subsubsection @code{bfd_iterate_over_targets} +@strong{Synopsis} +@example +const bfd_target *bfd_iterate_over_targets + (int (*func) (const bfd_target *, void *), + void *data); +@end example +@strong{Description}@* +Call @var{func} for each target in the list of BFD target +vectors, passing @var{data} to @var{func}. Stop iterating if +@var{func} returns a non-zero result, and return that target +vector. Return NULL if @var{func} always returns zero. + +@findex bfd_flavour_name +@subsubsection @code{bfd_flavour_name} +@strong{Synopsis} +@example +const char *bfd_flavour_name (enum bfd_flavour flavour); +@end example +@strong{Description}@* +Return the string form of @var{flavour}. + diff --git a/bfd/po/da.gmo b/bfd/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a7cf35b96b535af16b4f525cb600194b67f1f88c GIT binary patch literal 153643 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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/sr.gmo b/bfd/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5734100128e82949f0362733e7b2cb7bea792b91 GIT binary patch literal 202462 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 E0JNf6t^fc4 literal 0 Hc-jL100001 diff --git a/bfd/po/sv.gmo b/bfd/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d19a0e767233f78d33e5a55d65b867d3503fff31 GIT binary patch literal 155196 zc-pjG2Ygh;^S>k@5|OG>q&$!qS^|V31VK_sAdM8N7%sU>a&WneS3-hxP-%i9U{@@N z4U{H!5mCT`4G|TQqBIpz5gX!vX20|9-d&F7&p)5fG4Jip&d$!v&d!#%+0(ez5)=KK zP}^i`NpMGJlW9mDlWG2Nllu39$7HHU@I`{n2)<3QHNme5UP16Q!NvqH_nJ)Y33edZ zgJ7l?<)#yCLvR7XD1xg9HsE>)CJ_9F;MD}Lt_1x|fh7W`Rs#R-O4R!VL5<*+O3*zl zco$CqKW!&~pFRYe5*$LX6TxDFeVGq}y$Nn5*pJ{p1RD|TS7kD#a{X1vUraEb;JXBS z5xl6{WExEHT7n%3-b!!~!PNva2>v1IsT1*DLGW^duTBJCpAbwYcyuDlb-fAgnQ#;8 zUrMkEx9=wK{fgx8xC!$7M@1zz-2)O#Jl`UHnf1s&^DwC^U#UqY}u!Dk3I zB)DfP?CnR%KQ$G6G?@mvvD480)M=2%xM{GvrPH9_R|W5vX{hIt>8LkqI^O$D2cHGg zLEjV$@LGbm%|N@~5%@X5 zOWDq)+{qcB8#xpGpxsQgGifH|dBaT9?;v<3+q=9!H52u`Bk;gX^pjIFq5lT6&`++M z1$#^tIARv$G;S8^zhf5cZ@IkhB-oDaf?!>Om);DzO>c(0JKc=>vTlZ+O69#u;2k%k z{8KlB-uv>tPs-Q21+c>{kXMGhn+4u{3-taZL2_ZH=Ly!~{zI@9!Oge8ZnqJPBzREL ze-iwY1lzJ4Zh<^o--`U}1Sa1K`K1fAN&1{y!S4cjf8wDH2bYPk)L!Y^y(nkpWy9xLN410rf~ZggWq9` zVL#r*pnucOQejL@bA2iCPYMq%TK2H)A>E^2~CKdtWX`J@p<39P&8&=Ujm=Jq|q`mHh52 z$cDJTuYjH(Tmd`VvI6ygy8`WL^#tf=KLI+^o>iAYP4p5^_p?68fDf?{7T` z`w4#v_+6huy@gMqpWgNq>|~w5!%xAET0U(uaj0*98tb+qt`qeFK5hpye7VUq3E&M@~b?6^y>%jjV>%iYf z>);RSuZNt5t%qKgtVjNv>%ouddDPqIdD!2$=OMR8pNG75J`cTyZ$Q6@BRGcZ*?{st zZUFz$F93hg3z&zv<$dD|Xz%wgVBCp(5%^cVDDmTqz`Nl^=zH#q==U21hP{M-mMC!k zOYjdnUxFWQ_%iIT*UOMs(aX@&+?S!ptuI3#EnY!83tvG!cf0~QZ+Qjn{pJ@&4UT=5}eBARI_ZiK(wxDoC9ZX@in$s3?M=nag+jyFJm?i&~%UYGYhZy*k6 zvI*_!vzjxrTcM`O7 ze|Q)Eboskz$M^4|z83GHeVOk;50&phpHIC9yxs4?-Xh6eBd2f3k{_Mp2 zpx10W^fF{S@+WQw{pH)y&$e&Jc+=$r^p^=AK#q$(fSjKB0QK!7n8fqE4*|!02s>T% zA^Po!4?!>QBl!2#AEDoU`4Qw>=VPRI`566r*vGPN@iFXdtH2*W2H#hFg7WE~K>yxP z&=1#sBJqsmpZ)~#Ri_=0&%hl>ckF=f&{_5= z>f8P)^!=B>q@95Cc0!Jy?1X)t+6g)J{|tJY@fqrQ{xjIg5qTfHOX8GWuLoVw+M?d-UbMV*W3$)Yx1>SG_0&;oz3&{ENFVN2;zC^tp1z!Ip z-zgGmF z_zwJZ`5ySz?;-D{-$RZceh<0T`2q61<_C(El49gWRK! zq25u)p!ey=fdAYv#8IywL;QZ}kH9Y?IEnfE5%Oz%9PxX<U<= z(C}~IxBDCI&-)wtxI@x+{*8W8=QP^e|1|VddK%;3L#JijIF0_W>on}j^bhPK`XBH= z^B?$$cmIJMUugpMh{riA;|4HLXhVv&BMdg zcshq5x9bo=Ubp#+Ag^oIjllcm1bO}DDuUb}dlI~!?Vlj)Zv#P=$1eoApVY1uW(sFM z338m%njo)7^drdea~eUO*PCmh+<1b#o-(->>RBTAj}uhmaV_w-w-)H1Ajt7xWNoyk zt-ztRA&2P%Sx)N+vR^$$kmcL>BIL&toad=c8QnjrW0A0$1zPMBKfZ(IlU zUs(tFT?HoB0skWjvVDxN1HPuzLA#d-TtkrU`-3`Y_YVZwkN-xH`(2BR!Ds5lXzw_J z+|Td281z3T$m7m81i4?C>V_%%?MjgQgQYI?{8(Mk-(MH>zpo2^8bqQUR} z1x_Z&e(+&}JT822DeU0l`eDi+_NxzmCfA32mlNbTdk4Wnp8qs}eJp5zdfp+(?S@ESJ?Q|qA7jnK}xMv!AcBlM3_f*dDLYXtoJ z8lgWtN07&vR~tcY?=?dIJSydXZ-jmj*%)>e-x%#JX$-kM)EM=yC&+$hV`G&2x-r`S zle{-?0{WesKpyE$AipYt?2jIAg8p-?3Fx%D4DCoD$o}7Q8QQ<G7AN-5Hldo>qc9PRzX=?O1;~%(9Uu4KJ5zF)1oV2 zuWPP=e|hf;$nh(|`<@`LAD_Mg{ik+Q^p^%rVQ0;nLT+7~g75gIXy2Ho@RKu}g5E;G zf3PX~>-whP=cA_5{-)sPkEUpE^JaLDYX<+4+YERm&EOBKnn7N-H-r3FN&aqu$C|-D zOwG~0%bSB<*XBsiZVr33G>2U*XpVBP3H-1*+Pz=kk>;@L#x3BF5?Y`=ju!As zb6cSOZwdUa1=`c-$}kmAb-Gf<9eIC7-j81i`Ng&jQ{&svmhfLITf&ZhXbC;nYX!bL zwt^n=TA@E&Pq32Xk5;gcW39wqTZgG}vvX^-Kesi~U9HisSpw$~u7lIsexXxhW1X=kpHOUf2cvu z{}AN3yKUPr6))tqgOUy? z5m%vnm#fg9a;}2DCS8SkmRtq@y-Cs!T!ng0U4?pDw#R$7_Rv#Kd(d;Xhh5&;9_@Ui zJ>>dLd&uo%d-VVMQJ~v43U(PE1-$Gi=+zvBc2A0ee4mYiK6gZ+-oK*IFR#2B?TaGF zan>M#^RGtxKe`%p!=mxtBpUXW6pemAGaB?3N28yviw1x166CmSPc-c9iVk5ao@_&q z*Wbr=K>mpi=x1Fz!v0b_qMbJioYN8g{o#(NZ-cyV?FfDB=?J;~)e-%sO()c!(h2z^ z1bRE69g8}FkH-Z5C@{V={Orx0(H}qPjPWV53*J)+^18`%f;>;y(gk`y-354^V!~A1 zTtblNJu71%uYU+~oZK}wOvT%-Sm3WE$no@#v9QN}T~U4jl0p z>m8={L6UmIeungh-iriI?2UFT>J7dA)*JGVyaw_~Ajs=^u<76m>4$#5wIB4quOIBN!L@+> zu0=m8y%u^|B=G)gG2T8daP_s&%PZGnoc&1N_saXP1bKhHR)5H^Zh!F6PvEHjkXLno z_^F5cV_eKO z-lEf?htzcVJ$E|V{aQNW-jnI*XSD`noN784@0|q>7!3TOgV7J?42D10I2iqA?_k(N z?IDm;hau4axFM)__7KQx{SeGU4ikKh<7|R2Gv68L7w$~J1(~4#WG3{mEffB&UKZ?p zC_&y=nv?~*+m;3U-9vCb$3I!{FB7v756sAh+}38JAO4Vy{5m;+4RYYen&u$B=^^j& zIpBL(4)ii72lD(p2YmdV1N~ez6zxqOiupy+P}Jibiu^f4A=jsdg5TGM!Vi5S=||-K z@1gKBO>!}Qb;^Z*7?caV5xL;ko(sG2}ZAp9elh<-xDt zln4K_E)V*6I}dbs=7GOGd8qFffpzj_-kuM8=qfNVA9^Ur2mMF#p{FZvmV<+=(?9|1iT zk3jn-%KLnQkB&fpd1(av_Rk|A*GopqJbxtG6E_laO%XV9Bm zz)!A+{Wlzgcq3^H{GWRa{MjRtzIP1lt>F!j_aK6Y!pJ^vK!3P?EaYMv3%i~+7VUjN z(pQg#oVShzzsJX7KG?wwz4kPt-Gye@#T+yI!aZi_YquGC2`>WumPKf9-y+ygZV~!{ zxd`o_UIcr6vE&^Xa6+u6>i@{g3V)UDV#fXEe1-@7ee*PfH`-pWd7;nZ{ zpr1t+*!f2m#D}%5XwPsf#+eyb^pmZU-n<0w$tBSLk`nOubcyt<67>6vOVLk;m%=|x zECt{5N`e1SDcZN86!q_t^m=8`XZtenJzQXE8RRvg4DrP60$&k$xD5PVW`mrrvtgXi zw?R*1Z0L738}xaz!24~G`&t|H@`(-g9Jj#_)E$TX_T$jr`4$4A^42RFGvf1BigAaIAIe=hKAN&nUjK90I!Hy3-5u6dxpC=cY8>_I&@ zco3&ek@t;)zgOV59`JG0gL;0F^xq`?ltydf}f&2($^DC~%&@ z`=#7UFYI-z7xu7I-uDVT=7kB~yk?eR+3fA|FW|27j~Z-XX){@4ldi=GK6w`>CX+xiLU51S{TpMNOthvfYi z!HcXCxm7_ZwUJ#i}LqaRKMKYvU`e9>YW z_#HD1^T6fPU=K&8A4T-vYh7e+$;Z!fr*JHRM*b*Gq6F$2qrRe%pUG#+iF&W8S%QHt1hG z2k!-QkbmnOjEkG+z^+cuL45<~g6{2e5fAN{i*>21=V70yT;P^@*e_~3Kg_h0`|Etr zZFXCj+Q%-q4eLIeZbN&c79c*FwgC0KMUc;rUA_?fO(!^;`}sn&clhm)!@S!e_dT~G zUh8=W?8|)z;=P~mKz!YK5ypi(7oi{Aw+Q?^y9oC3{UVGfm);4zb-xpOcHRlOEV~nN z^T&5WzhR33a~7lChZaL#dlrMQW=l~2_$9I*xdidb{w1iV=~Bdx{g%RhrZ0sZys;GZ z{~BdFi=2>i%zZ1ih7bBLw}t282ZVlkAZIVa`f}z%aJ~JIpno_Iqapy z<9N?|9Pf8L4uAO0&QVW*uW1CW>^Gl4z3rZaoN}K; zJF1_A|GMi*v~$CgXvZf{g6}#{$-b1pl~19c)qNUvQus9NaNX0Od*W%>_m$6pPR=vP zpY;s%zxf&1dy|#OAGs2K@V1rU=S@l9w-R(NUj_Rcyb9xV^(yq6<*Q&H+X(XcqKlpd z-TY_ar|*3h_POa<$g9qCkV~KE;1_Rr4)kX~2YY-~-oKN4Z8h{Wcs1lUc{S==xf=R7 zx*B|3wFdcv)<8cK)?l1mwFd3pwg&c8cP;eOc`f1u`&!gHV=emgb8AuWS8KsXoptax z*RF#dIo6^7J--g?ugBJ5-!Ef5`p28=VK4Qb2Y-W~NBuLOM?2mWc=CD3v*QNneFQ;1 z|5LRA{pzC)klU#Zpr7yp_<7+4wEu?}AjeKGf}flh@jm-S$=~)2tJcuf_@$* zIF9|y8(3*>Qf3;2uKivDfhih5?t`^v4Lvtujxt+fsE?y(L2 zcb2?=unqNV?;t%>;N9<_T?gKQeQNK*9`fEr`ucZaXFtD-_H=p=^<4iR>Yeu<(qDd0 z?DIXyvD5pgckKJn%j)-0?%?~->*d?wCkAdu`^vT>{r>IXbIW$nKd~L-TKf;suRH=* zegOR*`~dRr@FDtd(T9kG=6{I(^$Edec)su<_*?c7;)Jh00$$6HVNb;$L(i)}hMoNQ zG5T+hPhdapPvAe-eFD6Q9mr4EA#stsZ{LCZ`kw-3d?CRr>doAP_wjqs z{yX=8?n?x#Ssr`PpNhW*-8;U9f8PEz{AAO;kZb?FsJ~(_?Cp`gat>=R^lj3oL{Ttwyd;@>$6}a;o@vGm4nI^Me{TA&!`Yrr;vxA^B=^*%9b5PDh9mKwNyF>7I z^93G01iMQ<40!ut*!k|m@PDn2$iCna$a&fkv}eT;(Tl*SqbNWADB8c_DEK^e6!CZW z?;xjH-@%Sw{|@}^7ufoH&>bak(f6S9&i5EE8vFn~6$@PQ1Nz&RA7GD{9fST-j-fxh zj-j3xk4Zcy=`DW5xMuzle1GsG>bd+l{L850=pRoV2j71jhhNC}3H9A8@X${v-}7h8 zt0w-8c6{+O_`Bj4&`J9Rc6Qe<;P0JZVBf#}0{usyz&LQ-39Oq9I|2EZoB+KQC(ut1 zoPZvpeucdh{tCS={T255&aa3YBTk|}w>c?(^(6XZ*-7~G#U~+$lPAGn|KCv0{NFH+ zZv748)*(sn`a9|!|2xLZ<-a38{15Os_z(22c?73&`9FY{_9yIo`Jb@k7ym^2w*HBA zqh0cT;7|0&U;f0ru=!u;U(^4>y2<9hAfK=P!nxfOf59$)`wQz#+9}8}<`mY?Q%+&s zBI^|5yRq_Kc?$TmPeE==PGP-p+bP+nI0gCrbPD!&>EE#5l)qtL6aR)hp8gwhJ@mJn z7dQ>Pey5?Aiqr7RD^8;w@16!9_5VS7`+vY^+CQjw=s&VvVANco3k_yx7N|5>LLy+x#EJ2PV9wf;6+enbd`9BG=JW|5KmE4CDO;|0_;hU#x;FUOQ5*EW7yPCdg)2YX`6AF6Ns#Sm>P3+6T7uW8 z^V#9b4@T7ipEnZZ{(lcaj$7X&IE?-G#o_qQh#>268$op*{9@2=To-)xA;{xaUR~(v z{<`3MYhBRYPmt~A@<`~TGeP!0y(1y_vPj@hjD*}56IAxM?%iuOZp|3 zpnMyG>U(E`Jg!v8`{S3O-fu5Ky?Vr;`2C$QX4S;VZ$bQr<@6QN)tpVEkAwhM|MFZ4xq5<^Nv?1gdN08S?6C0vj7C~M= z9!rqd8%qV=*bwDzY6yBu8$xc6HH2KZ5>)3X8i7uOM$lW^Mrh}NMrhadji4uQBiO|p zNnbDT+Z(}-{}ein8{@rwWAJ}%W5}bhG4dBShCCl`jP|Y}$o_Dvz;7C(K2sC;iOUGG zze{O?@{ zZH;zyYmN4fY>o8l)+oP-Adhd)wg%lzlD@As=$&p2ztFA?+L_Y^a;|T~ z4|<#+?R~O6JY8vU(nH2AEJ2L7}19@YVNbWI2NEk_5$7b^*J9QS(%^y{%5 zQEpjB)cbQs^yk!0;cA{bzZ3e|zD_7#zjL_yo_b_w@%x>jx3DhYt4kNyad{V{KhOo` zw-V&I^H;&kjR{xtojYT|@82=dUys;uH7_eA$on2|#6nN8U11mAuIRt_b%h_JzRnBbi}-|Pmzp4A<8Jfb`NtXJS|-J!ST-C!d!==VD3UD)7%fu*)ue zp_gKT<$dAzCkUL;SM<{teq(uG@Uc$bw-Mxh`dtLoJr8}+zna8Djy>Zc*HHrJ#G^eg z#DmVxc=Y@4;^7BR#Dl-f`oZo}`@x>p_JhCunINy{x41T3tpitF3;k}p7J6vVA9gsp zKlBQ{i*?I|5F3tzxNG*{Wrc2?`hXTZq)>NezNj9;2)Rw=z-yCJ~wV4 z>|(`0r2jY&ej+XbeqmYy{N_6eu;Y^nXh-|RaCOc+BN6zk6VV_4NrXQdn1p^^n1pfZ zi6oRen1uG%PevSONk;t-B!i!ClOg|hDd;~*Dd2l*3gWKkQ&7*Q6tpiQ745zz75=YW z;G$IUyCD_w`!*GP^ce&?m4ndlW(+lIjZ zHO_$F?4JStW@o_u?jv{$&xbN#hu366ZUZyH*Q89?@k^PAH}?uWoQZmmXTtvLXW{*_ zEa)MQAn#*2v*0H`&4NEVl?DCu&IVt@v%$}dZ1ndf+0e`CY?(J?W8D5L8}ezKgY-^0 zcpsPpxsJ#|`5SZ4FK^3%UhdBUzt81he0d=U^U%nlsK5SD__@AA(a*+6`uzg83`M{B zc_`!+l?(qGp9{Jfx!@x|7xmc%P7}B|7wvmO;LEwN-|e~3bNf8>+bn{-4|;E&%!38i z$%kB<=fiHV$%mh*%Ex%HG9Ub}%SSx1D_`Q9eAM?_KI9o$0DBxz06Xy%pr1cbfd00< z0RHKR0*sR_hrv&$50kib80wom4DFpY4F2){Vd&p0hCwf%3rO!hO2W1W`cLHJ&%OFyGEfMt46^Nz8D35n~#S5_Zp4yfAnbNKQbEqW8Y}3 zf3&$C(0o1Q{pj_O_h$kx9fSIl#-Lv>8H4`t{ut=9&JE$FFkZKy&a@EA+@@0c{Zfl$ zMrkAHnNUr46YNgE59zm%4B16#MFivNeI(%?$F;qtNGdbFHlB}$@j3{eS%x3bvrF=5 znrj+F)b#_tf0KyDMTDzG_|x8_G7n4nTj;r%@~)(M;^_C1;C)E>sbT&y z8`b&}p0AViI)uaVn!ym4H6 zFX67F^evLsipqD5z@3R7Q{Fd%f0wjqC44)5*5}GRszC*Y_aeE?ghm`)WSa6=F^gHPn zNAK4X?mLqH649P6G?!EQNJ(EOX)A=z2(j5-lz%7TwGYD`o&4{5X)E`w-zaadydNOA zCY;wR$*zTNipc#4y&s_Gd!?R}h!*)aP6UzIU`;C;HEx1DjuH;yZ`=wed<#kWo zuhW>ydg-^BeLT}6-Urvl9U(&q?_t7wnbO0A&s&Jz0Q!B&a_8}aa3Uq|Fu|W{@tqXp zcj&jDepegpvM#+pA-Lmf1@?t#;qwK7Zpz;!d6fcVDX%Z3KSr>Kc)W#Z?-M#6qPvXO z73BS^Ao{kTzQ_NZMB_No`jv1;6RlV2cag!qcha+&%H2!(3+Q)$End$>-sW1o)=O~~ z{qCT00|{zG?`f%bExlWUc;E&9+JqZUdGFJ&0pUMGI1}l47t^Bmw+QDb{V04idFXwy z$j?U5LO7?xalZhb^XfziRY?Rro0yJ?^#Xos31Qecnv9k3H_d7-%M#+Bz+{wrItL;A=obh zcgBp7dapFd{V{s(MmTLG&rGnI(z3-KvT7Ur5#ik)fqQE>7GBHi(3G~5#{upqCfo_c z^AcAC?)mH?e6%Avw+c-Mj|KF6Qu0>wc+5VL-e*$!Cq%2i@VJ7~ZlGU(`lUs9LK&!xQppmAv9VEj3K;z20HOl?hSQE4W4h8yiFXZQhpDq z>r@!-M%u<>t3gh0QM$Dj?w3>VM1MWcEeO6y>4${wO$4u$=ihitC7x~|I<4vV6U!$Y zcaPN-I?vPl<7!WY{0-sMr?Sf_tv}JV3QiMxZb`p&;p!>|jO+B=fyxw6`fN($bpwv& zlDUuReueUP)9(Pi_ab;R{o?5Pnp&z`nl9lwsLoDQ-c9fX@0HfV-Ac*_3!R=EGw`@3 z^34qLD^o)rA<0`sU$BjMpKj!WcuE#Y1)&%FhgEE%8iOyHNrWD5a3sHO6hw)jq+PKS;|9wvBX8!JrXilO0K2rC!1Y2`F zMCmK(*NyVpO1+QMvp0hGzG!^nb`ia|367GojlGd)kC^k?b$MQ*#`@1goWr}Ucyw;#RV zOz+Jpf1{-R!f`G=*Ei^?DVO1Rl6?u4Swz3tROWR`d&QuCp5x`RZ{E)pQijD=~qd=dG!7|+ZjFAqF)BJ(?P#<`tg2Y6Ore~RNhT>jwe`7 zWg19(-Sj?z-sjS95aC`W{B$7P>$pD<-g2q?DuKLCF_2@|TDUuz|3y&Vbi#i^aCWmD zvkipd{i`k=tAROfwc+oGdO1-2yIVU%~fJ`dq>Sf1}@ zJEZ67wfG({lW7B$nJDzUM9U?3Yl6a&Hz<9E$Y(x1-@|h(`i-c?_lJ?4@cfeAXVWh) z0{6kS49C4`{cGbsbpH2g81BAPI^h^rX#QM_?;oT1!_ZF7a!P(Z!p$<+Vlj^m5%_x_ zmkZCoMg;O)O89S3+7pytL6Fy){t%pI0y}Z6#$zJk_73uG%_y%q$7zJSQ1X6}ygvy) zHJta}$-l6VHSqQ`$8+3QI8S(s*5|PFzEg1j=CM)uC=fi}CrM(xP~K9>8(`ooCWyy2 z#NWG=mPNn4g#RAz7gE|ps^bXJxlibh68r_cUK7E0zsY=u@P>%YUk>9t-u$#@%Ck+6 zCu-w9)6E>~^SZThY>41<1r$SZ97XxD++XPzDQ)0&dM(JNhEV>O?0*Q3;_;Nr3(X1P ze7_v-`&08tY4;U`b2ZT%$FT~fT}JO3J%3I3Qw8S-dhV*v!w6no8}}=2FyZe5=>IZ= zx7)d&6OB8l+y;(G>Gv(=-Np7t&uwb)nGK3tiB1&T3Bd=sPL`uV27eKq z@rc*@q%EBZE)d!dT^>9R5dD?H!+v`IjDGiq<9@_TiB_r9+mXj&18?sTJrDbBf(3-n z_aX3}%!Hu6_B!iYA7dqNro4v`nEv=0^t=09D2Hv}HUp2_{2#&g+;hD18O5(a~?9(Aj6GdpfUIMBuLD@Y=Xj^9Fh^VgEyAZld3_RPUekel3-I zntr^#zdi!@ZjK_DD|J>;-a^8UAy`K64=R^Pd0E`wL{1m6{mOF=;e0H-c&YBMdEP;A z8IPru{;lxH`=q?K{Q#vU7~}a8CK^A|uN~nI<23FYQcu6yxLfxRN-Lq~ z+YK_Z^ST_-o6F;k;NND#-*VX;u8zT&%EEAGvi|Q=!Ml`s=f1-G43hRPz26mq0lhKN zPUW=}wo|I3gxBbJUP8Zi5$b9sQyIa_DSbctJQ;gB{VC;br}ro-w}jw7LT@z3B=YRl$2>jmq4dMNCPV3; zv#i6_pC~bHWxFK0)kLR})csd2zGs!@47~16Wy0teFLkdl==2tj(|FyBeqmHLoYy3U zMmgd4;;~QOn{({RP5` zWHH(hSK6hWdwH#y>itysYb5!Td2fO6zYE9T5L7--_}N6bL+JO5&`+w3zXg*jG@s!) zztEd4^k%W{^|c=<_Z__t;J!!j3Laafo*wl42>VilpXtG|HsS5!7+BIf5za>XZ8P|p z6YT4S&RAZzru<(hZ9A14ZII6~-e;h^7bq=)o=+O;dXe6X=*RacEtPcMD@^4zbNX$g zGS^TY-x5ykaNM75{PzjRemrLw=l;8*S>qY6|!vC$TU&8Mx@4Jb{lfvUCLc1fSJ#T359HKp3 zc>bXl?ig47nSCnnXR)maewx9aSMfa3gulH}NVvxg?S6&V^1{>+9n(Qxd*E?_*G~+( zd!N!j;24JBDJuUh@1L+=eZf10my^8CNY6R+E9P;7-un~m zqVKB_d|S#MW!vESGNmn(^5b~ThjHs_^e;anFJ6mEFx5?|s&KkIT7t#mvbx<`zPZS5 z)#}zgV@6cBKK80eQ{60cxmC+?+8iFM%TOxYWwANTc3%o5jW(io6@)Rs@R2KaTC6ce zX17&SDVoPwtaY$E%@)S$YA*J8&GwGS>#CP=I2|#*cDSr|DiYPxqB%=S+*S`gR%xT7 zdfKbTXi;uc-O6%vyr!iQ6U>5^X)Q0Zx?&V-iB7M>5|i(YG)2};&dAU>k%+qKJu)Xn zOSMr;5}CDJuEXrHIUR1TgKAEN%j&UOv{=;cwia`yR_vrahsWKKC}`?mio?>myXLMg zFLK(6bj&q&3oD_zf+}M6LZjI&dPb_v<@SWi$RLL7p)x?*PulA6miIez1#XYaTkJUt zg4aPU3!PtSb-B6OW|zxc&ElsFFEu@>%ZGy+9H#y9p-Xdv6csE z#ZyvBm9xEE5rn$rg|L^zQyV;cG)UCPM4;% zMd~qoG*6k8+Gr+XW)LGDyY*x%IiiscY78{>?Q zvWyYhT7T^(Zf0y;RhKhBZ8Dd2IZIvUa%m__AkSki9f*KNPSIMqxr*y69^XZa_C#wQv(2uN71)VPJ~dN>ri2w_r%~<@HY&w@O@@>M?YqJ# zo&fviqUq%qR--EAvT8QBX4XoSX?x1N4r))4S5##vW41YLj#AC$p*Jt}8`eV+i-~$| z04axNMbka11vUrQPP!+-D@C6j6O~gf7AG}=D=DEDYKxONA}YetS?K)F?AyxEmwhAV zzp8ea^x0f%2~l+vTix-7RExEQio@hM+2&&ZtM|ir@zF`FGuSNkL9K&gw4;{gW!Fl6 zfCO0Ot#C^R9iEVzm7X;yp6t`(GHc49sEx5Mx6AK2W0>IyHoKj9wUs)YF0!GbYHhg9 zVR24S%#4=K-_4=O2LFMKv(qmtA5vm$C%BU20-hSYm?GP^Q%GEF$qaFs{UQawFMpbBs5avZgK8 zDv)$pE9~ZCYdQ53N_IN}=>!u9Zj%3#P#s%I_lY(UOL7r%rmIh zY$vNy;??4{xK5pX$#xZRSREZT&WZ9Wb0)qz2Iq&!bQjxfBm_lOGq7Dmc1pvU=Ed%~P#Z7svr+kQ6Gorv@~| z>T=Og=eAP(Kn1A)lEHwlG{4rQso2uHwokM{IY{p5PbLDEE}Gr!DD_guL#xWoJ+AW-FcwZX<6!VSP-oE@ja7z=-xSttb?Ic0NE9u<#Mjq7c z2{a~5AJ`b})Sc~qx@w|8YA)soIt15*K$&`n3CJRE65t3ZYH+wIT2XG%*gNB@Lgf2w zxn>?uC4%~7Wi zMmTPdUy`KVGMBBqv>47sa5zL4jxkK?!)5QDi6-sZl!U}|pQU>p?B7crHn-I>z@#PS zBn(R7vL-DlJ5&9~|5I#55~X>pMl>r%fX+$m0 zs>Yx*@}E~`c3Cm!V>?wmsWgiiZU~vE=}tWB!G)kE-=>@jPt3Y#G>_xduAD*BF}0#4 z!B2X!dSDV|HkairVlT)_H)+FClGJ}GIVNp*O2QEOKR4f`jZRGIGloEFP6G8$C(Tkh zI5K-UZBX}a3^IU`Y3A^*czg}CVW~Ma(_n+$HMU4YLR@e{kKlx!!3n*52_pt2E?InffM8m%5>Aq<10Tl2cvcuQsSN09&{k)NPQqe4A$K{v%PZa15TL&WD2<8z0^ z;puUyvRVUHsh0!#6et=e+q2Y2XFsi$8Pw7NO|;x0 zkT~D%t>D#*5V-+4G(W0Pi6Wi~@=I3g-%d}NG^5;F?sQf6FETsE$523NwHp$N8^yZA zIzexk!>O^($prA`sIV2|i6*RZJR>6-oZz%u^fH2?Yf$N>!s_4|9jCjnBCI;EwaQxT zRgawGc9wVo<;p1&s8?&LIe6uU>JgH^oV2!#J&9Q>3P-Q}%d^g(&~)VnR#B5$c4hNA)TT4j;U`V6r>5RG+&LR2$iH6K>vILWER zskti69D@W+q+~V3NYOwLlM6jYS5s&I*c%Wz1?9P`-IZ3C{~fclVvox%oT^CEQ)p-! zylauyM*0?NI&GDsPw9=51LTC7bRb6$&1gV$cjUxUExl{DW(c1gMJ|ew%npau?$+CU zBdOV@+_&z1RfOZQ1x$I|l5X{dzl0Q1du*5e6`q5mz zJq|;*nj>TCFSBIdI)GSE@Qf)i#^m5Y1yd><)59*!<`$A>iXkd}YO)lS;+ce}S6ac^ zlqzrZnl0ziCO=xpHp!A>d_aV(MnEI)glJf1LbTn3l#6v)UIJnZ_pLQ)DcOmG^$9W; z1jjz>t|%$iR~@K5#U5pw2Ad(&a&vs$x^)xDT|0d76SjtoubNiim_W`*OQ((&sTV^j z!N!hKniljxF`M04st{7DimerDQCsEIt?R46_mHOAMKhyhUa#eU1|~9TQdF~URKS~7 z`i?@Xz9i$Tkl3kFXNC%_HNyirW%8=U1}+pEQl)12$NPF}*UQ&oQk^bxw$w=8(KBqK zMQXwSu-~C+c^-3lg-W5Q3QfuKb@O~)>y9*Cb#1z%l7=>mEM9SxH^3CtDOT}srg%O< z&5NS0LLin0XCrSM6IWp2i2^WHDuoAHGNGshjmO<08r(Fp9V-WaqsK-iM5}#(#4*aD zdmSOO#FE`1i3FB2pvLoDm8K$g8x1tEMK0yBsiSt(EVdHrO>Rs@%nq}?+HG^ItVmxu zwLijp2`UcJ745+yd{meeCALzp%Pjn! z6_pH#F=XGvttI8A=kf5T^h18c!Hb|oi4{G;M$(}{wbJJFx@8F{ur%*0GliH7rNF}X zDS$U*ioGtyA+v6`mYR#J$=XT_GjnKKXLWFxTF614*+cWDB8n6h6&rS+c*%JJsm$ZV zc8rxbb17TjDj{W4->_OOZknNbi?mXglg3^4T?z}Mt1N>>*}Z-jsTydl;%Jaq%S+2I z%o~}RpO9FXmzI@0LZ{C}h&Q($B5T${tgNbC9?IZ#Jsi0Whd99X`9(>O*17ea@xa5-uE z?Wu;5`?86KxrAny>B&YCzMVU@QP#m+%7*3PWVNl=(N~;&6z|i;b76B8>z-L+hsZKi z%j4*=+;acsMU*9`sG96W8=&=6Pq8&AdL0U%eL!(Bdsxzsm<8*EIZ>O2<*Ylk9mmtq zv(Yi4f+R78QO+U^bfz}@pX@w5Qlk+Qa&vf7OC1Ez&D^g6;>WD|o*Q#t4r*$WG6-3h zYFUsH!8L5mAn%oDn(OVXxK_ zl9S0rYk38UEE2VPsDm4!)F4Q4FU>S2XcNk8c0MLjVYjJSF8ZpX z6HKEfTe*e3`wS^0#tSo2$nP0YSxvn1L`0z`Q4l;|4KfM2ng0cu%#{3uK|-i&dP-Jy zR!(}-|3EJ*Jv%Q>=ymV?uL)64VhgEHO^DiO|+7g%Mz?&P3|0p*_JOVl?UD!wejQVy93UWlV|gkYoHYKp+L*F##NM zG1{f7b3}ehR$fA3LSANJUV3IuMtbT5POZxf+5NpRrYC-WGH$-NBze+bXayA9{6&0S_Z#pQKdLsxsAv@5%J>x#*ZZ&D+B;Z#+*mn6Xz$%Ke% z2^@KY32IqREhi&i`L>`K_}p^U3)75HqdxdAi3FD5aoOxJOh)|6Lo)EHt+X<81s_1< zLoa6E07ELe?i}QUCTJ?WGOlUHpAU~Ah!{(AEJq_bVd-t4@rLbR#q1S0Kl(qlLSj`V z^kRw|JgUQ-M+ryFM4Gbk#*vk0H18g+pcR(FxQt3?g&NP)0D*`JcMXqnXUn8*tlX2x>Slus>Rc*;0X4c2kII`yE( zUk&ck z^*Y`T^HP8Domtm7SN5-gPLpun$SMSeZb3oamh2)qFIyE5-IdVn*v|8fytKlcytIS> z+p@_1m_&^+J>p_xd&Hfkc*egg4$E^I=Y>|RFpy1z!1qt_1II;ut>?`6MZ^mEDUaDz zYW3*O+gzoO$$_JWkBl!gQ0*+pOUc7tqZ?~TasXkX60ocnge+b}CgCT+pNmLzejeE8 zKvWwxA#?pRml9rp_XV3t*#%koXz&GI#%lvh$x7{^BALLwW!=RL z^sRvDdUKu$v!eKdDDw#tUl?p$Csk+Xd6`I^Pq(8D)^h56zE*HqeP$Q0>7I)t5$r7m zuDANq{T2JXirv@4gV_j1BNtrZg?{xZEUu#DLeEvBy8$wJM@_ERy;y7gJHk20^p7=~;EJuH(Jxzq-OZyDuG1tD8C z3?RS50D9=&P5tW_8;b6kNX2S7b}Juz;|2R7mt9kfnHHOiqh|CbA3ei*4cnot<|f!H z%FH+uPJ;|jezXF&)qiSREw6WBx)foIQejG|)nRq*|8Bpff`AQH@_`G{Xf(PQwC!U74NBX z9DVBJRJ`HS5yNUH3ipX&$#m}>Q)JVRziIu z$#-Zl0p3ItE2hY-*lNas74&HzGK%Kq>gP?B9?tFvx)@xKS1t8-@og(f0;n1mIk<7> z;a>EuOoN`(Vtx&mk!iN`87+ORA{~2VMa#cIp&LS$)y+BCnd$k3sX1!9BLT*j<@6s1 zh9lOCG8swp8q}&1x!6_N3T8EU( zcwda0ml(s2Oj)BrtIT;}VR7#&bCInuIWIB4Fp&p6EWWDQr7F#fY6!5|+Hsgt)|E+8 z>Wqm6AH)UBgxtQuzP&2m#ZaSzWt_Q~&(-)))In?{kp^x3l~666K0Ot;{N` zN50q`8(KN}g~=nc5;D`1{HN(4V9t&8#V>|9ifKs*tHu@HYjXs}!YaB^Bqq3=d@Rj( z@HGL#&v!b>DjdGKf;wkOBTj#xdJ5EJOwB)iv9Vi=VWQPaW;PzrT|CFHEpcC5`GdZMcb!bvw3-WDC>wZ8-4|W*pG=m{u7Y)1# zg^sZlZpE4{PW}K9U-wk$C6tp2?Jx=qCy_~SK0ixCAv5foI0xWKGt~jDptjb;Iy1t* z?%oB)*$W>O=0joRW87}G1{orPUEFXz;!o$35jKN$sgo1wnF)hZ3iFb(3NuqO3$wEG z3;9rXvaxrFD13yl)|;3yB4G6!Htv@7)qpMf*ue5U1yWs6)-ExX_F@Z|23KXFHX;QN z99USK1`iXiawSE7|MFF;#tuHX;P2qU(g2$r;i@GRrIEq8##g_JmJRlFc-SKn2t(8#Su1c#G`)ndETZLl|g5wb0wPg^C7lM)_1k!k=g z$t%Vc9ki9NM&O(jEi*kQPah@F;bo~W21fuK=U%@%^H@MSHSWO~$^So5=T0#qe`H}w zZomR!fNAkpQ^7XI<@n39t}ZJ@sG7M1pAnRl*&==U5`W5JxHC_K{J6f=0sgQIA75)U z*vMDdCBE;i&OuC1#CI*~$atBxs*tUz&}bD37n|HT1uP$ad;PfvhJ3N3_yVjjqr=OG zOz>F6_>zR9nhKi3=H?B`@n!kMYEW32GJDPJtqNGKlUWoztXb>blfPNwGr=BfIr<0O z52>|B9Os29Mbm0crqv-!^05j&=&evf5ePsCO~YSDAOUn`wO?e>V=dKYnXwEFIww??{X=86itO`OU9 zKv8{)>vr?t_wR|ExrC=8*(n5`96?7?U*CFY24QDU(a}id!e;gXZ5)=G)4e-QtsPcg4+$R5e5WAw z#r&FaJ&%v-OuSsLR1q0i@`9!hL8WTe2Huq@#P^4?2(io3e`D!oHVzO1Lqk5z!CDPG z6QXbHgeu|YZfTr3+w`zKwB8ub`GBu?v>s5SYc~EY4K@K8` zfIPJf%Ez63=LihL4|g^eVwAUIK%tr%3CNbHN55Ch%TbnIMUBae+OOq~T*AAH6U^06 z{snF;=;%G-)Pkj2ictl6_w*$MAWAy-9a-v>qADc-wZQIine%cIa+CZ+kSdXukl|0M zQG?m*amG|oj-d`-(G5%wC}P;AFcdW``%Hv?92!8d(7afgBK$$$GJT z1W5)EQ|>M!uiR0EMEH_WA&Rtg#BJq}G4 z5<%JB;{r$o#+(L$8KT*mvSMjgh?;S_A=D?1hGp-7(quptF+?G&AR{A&zbw&@*Z4HW z7!|%2qOfr~8S3Dx9z_Nt25bn|=y1jv?|FF}8b8$~OPI@LB>PEGjtVRdYnf*`k95}g zBZe}Xs9+{grMSp9IX{cxUqA!Ta#ZTv3p8LY;46_Tn!%Ur!&7JqezW?o z6!QPkUjOFGxkv^V&MoZGr#GKj&Q4ABHQL`3e2c6X+Vu0P=YJAz%^F5f4ZV9xCB1w8 ze>TU=#;cCm8P9+RtjGI?u;86)1DU{WTMRcrj$Jlrg8Z%Tj!AK``m|XUF)Xmy%gtKU zRphVDmT_LSpURtLSINY{AJE1JuE_Zge3^ZF+`6|4@cPB-$U~7ea3ZU3mWdB>mldjD zT3v4%Vs(@!9xj(IWF0$b5yx<>%VKjEn_ZTGAzUrJ6HJUgPa-aBIW_WZBn&4T+?vwi z8Mkc=TNfPm%94Wr3!Tsdn%jR9CY)b4{!(pz=&`#CarXHF zspO;-;=oH`LUM9$N?u-JenMhKiq@ffT*n$r_WrNPUpRFKzEvvai=(3TQ)s@xItVjA ztspb;JaGe7-9jL77qD0j2fBjB4nL-Tlg>o{K{EC~9JhWHaEc4ZjavY|Lwuv7++zZ8)tP8HFkx6*Jo6f?F}v#-K9CPY zH4Hok9RHb#8oQ2XrD{75l*n`AxX*$TuO(#Uq$L#Q77ohEP02`0ACz|f*csWwfy{R! z6vp6oCZCls3StwEkGU0@p%&;ft2zJPqn81u?Jrq zs-H6K!cN>%rh)^GmU$eoYu7~v5s~B2=dn5BE0bc_V(@GcpxNy)^P(Qj!af+SyzHN@63j85?Ko6G{3z1D=5&x!x;f#k` za^f&oU&I<)L+&9r7@}|{*mzpx{7Yfh6Nqo*$s^xvkxw$5s@P1g-q~l0ug- z7pbo;-8B}c1JVP_N*A|kdC3Vl5DA`w6yn=-#IUaK9&$byCl|Ux0e=NoGMmvAxq;JXc zXLi0*SQabayr)bumwstxIew@qObb3dC@!-Wk9U(?$O`geWE5keN9tGw{;{-J|HB}@ z(JOQj@7ao^Q%AFFX?&@&4GWZf>26UFFM(KE2OmLoFRxOc>;~zj)zv&aP4(X`ra1GT zk2!PAzOroeX4ii~BH)jfTo{E5D;oIORT{ym*RDfz@PuL!C$-h3`bJ`ces`-T&z zA&V7K7?m(0bm23X&gRn0e)qT8hoP!*Z>(Ab!MSA| z*Dx2+7*9oWqEh3vm>7KR#{MnFrAisyr2Y|^j*h4ZCpgt7hKz=>;!E_~)-ioHI?-L$v=K$RU~(Y7h@Fa_JEP+w^LG`|LE%RV*z&a6>WQ zaPv|CN{R6^OT#`;ezbAA9#F*4nPgDqU~U3gd46^h3?c~s%(poc)?eFI31xS?=KP9O+%Xji!qcD@E?y1h^IpOj;Mf<&tRFs z7X=y3^vqaizfMTXxq}_M+}tb|u=q9W);I8cXF?UvvDUJ}5*II{xOsuQr&@BbsMYNp zx#A+|dWwJ#-$h2r!wXZ=3Ug8lnFfF6Pg3-4WvR(4ueKPct|A??T`k6vbLCGD_0xvx z@CxQq_?(e9M7zl6v+B^B)LZ0s$5hzWR9DXARJfca>gtk^2o|qehK@=^u54SX>$>Is z0_EfV@-6m%bACny|LJtO@uOPVOQ1L9KaN$yJoA0~XEd8KPbBW`9(@I(pJuLf@>xOr zeE}^axiB$3E4eT$dwBou9BX+iN?m4>Q)zKAs-OW66_nfDYS{=z8F1MRFnuR3aqCz= z-Z}OeLSdOjUsuupZk`yE=&ZzI^;wCZh*}y`$L>Q>Dzd7BcmZ_uKcOU--6O21(KGlW z@fx!CeP1Q}(?Iq43d0{8P*=tH);E2Z{-S{Kiv~3-3+~oH<7(YO&tO~G~BDoZoVbL)5EG7BF7j{7M(cc9W z(~nsxe7;=vO!#gtpj6F_8ranTaw~g0S;$Z{0t0YMjq?dS{P2eeen)%e;|I#T4EJm~ ze5VZ9FUS#Nw||w@5*hf4D}7ZWJq5LlQgItz;5|M81{buDYT|Pp{0qFrM{Z=$_y&s- z`lrzF*E7qlYJ8wLUHw%q`BM*pe_GR||9L9;8&&+8=>KTTzmFELjm@N99j#&XQA3+q zbqJ;Y|7-5emfOgZ1W~+-UlF}u##hjR34<8qyjTS(i53u$UetRgZa}lkSN#*t3`C3!Crj!Nj^0q0 zrt&6750ynid9FwILa`{-K!9dk__ZU~uWyv@lE*}445-P7Wb!$k^FO@hbRll@j=a3s zrJMt6R89o|Y;{iSEt5Q=W@-rivz5js5H?edr>aUpXU2)}*sn^sADyoup{xue<`A{% z0STCh3V2ClnrS5KJEicBeMfBvWNED}koA(%mKrfzJplf#D2+Xvpf#FI`?rqf5oiiW z&^dJyj@)H((&^-UT4LdDzbQ=tI?p6-a=Ef>3lt%1+RJaQ{U#=Z7vUuRX+30L+2 zesZ1o!hjU;==ucdn&y(D{o66@i5$LfAu>u4@wmzv@F_`xV@_oI-6Oj%gXI39S6NDc z$G%lb6Lik$IURDUQBHqJfr0UXCKfw(-{QDm^PKp&n=$&p+k>DiBY1-NksXGR>1%*; z{fql5SMnfHQ5?!d#y)&eBJmnIa0%ncfioHxTq4yT8O^Kas#;0!>pV1Q&fwH<=@xKG<*=jJ#;!e zAO!br|C{J8zI(9$U+MkO1%DhfqQB-4E&m>PV23;o%^Qv9RoQ^bzf3%QIPm|kYE5ZL zl-BIPyXWGKf0fEXC5UY5tO+v+tRnbn70)odK^6`O$aY*B1*c3#L}If=YQW`%5~W=! z#G@S%`4no-+xzF^*RK_m%koAUiW$6*f(h@_kQ23rF-{d#_M%+X!_YgVDnq93#AKn`~le6mKBjwF_$rqr{%7j>JJj0akTz!P!Hc!lZ6 ze&%T94vbBi)f}gV=V3d)_T=70yjo7rpANd z$)9IIP)|`XvY5?zA>#F76sX;%6_5`a9rVVv`Kglbu(wGNeW1$|XpHWKern3@!x^?z zih<08=n2jBa1mlMFzd0wml?b%G-vnL*~x%S>JBc?dM}R$$FB$VlO8!9SOtJ2w{G%8 z@5dyc!Z{VseA|`-m&$>oS)~)Ngpw~(1$A8YIEkfb<&=^?jKjl`gHEsZ<1T&m?)pzuB}G2btj9m65yr4q_BfZB&#Eu_0-QOFXUBQ-Z%EpMA9MOfKb;ZL&Koxw zXtDG)+&&;z#8gyhn;?!Tud6{`j1Bw70Vmqm-^&~gvR2R?t!`-GhyQ#2{5ks}vMtT6 zLiAim4m{tn|M131YO01l7aH{3{8A+=D+id#78xR5UzLO!+CSicRLRMm3N2?K<#f>| zrz%jXf~{1Mb~#wCQYm-ORq59NoUDgVHCsfWGq_UzS}ySGiyVA$1dP4*si<&jekD&4 zw=f5p1GWNYxgr8zMGKmuG=;kCKx9o!E~7MS0rG@5#qdnQDHV(Er@Xp%%DTkjF>E^P z3kt5-XjIzMI9`_z$bq2?_yIWK3(&f}j;SKfxVVefv?FH&H+=wqIwj4`9-0(NuiwO$@~ zUtm`DkJySoltaA*JYMEmS*2OxtWzpSI4f@{0~X~PRb=Mm{EXC4Ndhk=4I;dRb10~1 zS=~l3Tr!^)kc${`3n;Tb30#@fuu}_%Ew&{wEbm>B`uyk(Wq`Le+!^LP+nC;vd{=e&Wf!V_%#qT)y__TG6 zxu$!AR_FA6`=aYrsEh=(==#K!)2nN@VsYiP-x}1fFS;k*Ua)3?!%p`MqunQhk8o$_ zfZE%W8nOy#pC9%beMFMcY!dOPJpx2b$8wiMVU zwQ=enb}DDRj?TeCtegs5qatr-z5ZbEesI#bfH$`LgLdbvk&{9NsBwArFi^JvpFe0d zFR$B!=H+R(4DMT?20v|sgB`f_>7ez%^R3wN!(kkGkZ`!3SbLNImUL9CT-cFDN8^Bv zXwuGY?lTh^LfI^4K@!dR6i4DX+X zaWhjoDDxPV6&K|2Xuh7a&WRlrR-tpTm2^ah9~~Wf-s!fPkkDO|>C$1w8sxwAzBeIr ziO2)X*eG-H!%&ApU>OW1H#oW61~WX&H~FtJxxlMqT;%~Rhj9+efU`%JQex5Df495F z`dQ4;lBQl6n^a;-fJ)r2z&?eT$JC@=pGQsR1jd_au;T;oC0$#u>;Sh6exMnXnS{`& zHP&<yR#bCl@iW*7<)q?dQ;-Cf$C8`cO@*ze8K6>#n;`9!d31vTcJGh2_Cv99iD_FY3#wczuW>& zFGREM7v=XCrTe?=Izw-lOd@UASvg3{j}fwQ15rT@R`lat82Ji8qn0a9Gti6 z7d>6*!7f~-q>j42MtD8T6} zK2?fcnNU432f2fY#~R&{sFdCsOA6_zW3F$2HcNVu3y42X*VwW70h)HbPNyUJQ~GI%6+d~)pf2fa@VIK-Q;8ny?UqaVQF8t z`pv;rw{zO)^_rI#(1P3RMH_b(k=5}F6sU}omnuKe7H)-^b)D*m6TWVsM|f4kMAB?r z##=_|{M+FiH(+>o8&JBbN}HL&TjAU<8~vX;-S?JEatS<5y;Z?g!ZAIoTrPQ1@dwo~ zkx`8$^jcT{!JiB5n<5eayp!<%SQNEt{>*u7PUREvbhuQJ?m*c(S6xg90|L<)_XPcU z34hL(6AS^zby3Z|cK{WGAUqFK40^ncZc=%6+G%@xT*(=kW@$ZZegFX~+5pj!mIhEn zjXJy=&DIG?@v%H_UiLm@q)nr*E_^VE@`O!Ida^eQP(|5q6aLb4Dk7xJ~s+O*Lcwb&g;VE;Y zC?`R{*{@rL1Ou=4j?znvj3syv^<{_NTOeWk6?9^C!AU(@0DJ_%X#FytDMAR*hkVC8 zqr@<16`_a!Aq>nx$-mxzX1j|0Fh^irsDyRDd8p#6XQ$F_egDIYi=#vGriXj%W)_W7 z*NY3E24st0`1o6DhUi$tN_TK_-n{(AAn0uGZwY{|IFYSS4y)}7voBPUH!2(k50ybc zu;(iPu~IJ~>yH_vZEGHvC<}zGweBj6;DjxM>R)n*lEi%C`i6J5b}ruCo$QWPO=F$? z+%ECd-8;Ng6^!I7^QYdhQ3@5BX>rs8*) zz^@BeLJU_1{vh4At7uE&(WeR~N7g5VOtRudf@@|>cinn>@9^&U@bJ)QtNT6*mzb#- z@230Znq5ag+FMiA4Ha!=<-P-C02gy6?A}>D&#SA%Ap?hH2M+nV+w2<=0b9_t*g4gX zZu#_(Ad&&yY!sx(*SB=;Ap4CW5y1d zFlx9mv259p=lU_4cvYLT#l#Sz&foKN zIbJ^3fMyH=ml=fvZ*L)M_vka-vEQ3L@bpj)w|Q=zaRb?ZDKkL_M;=&KQdX=;?$5}+(Pxbjr z8;G;3ma)0VqUV}Jp~n~S{CW|gDzp^Ews-Jch$fYwKLGRxx?sa`F~Z(Oc0Yvs2^1M_mE7ony^RIJ^*>) zK8X_ciD6$K)|sM^?Kti2NEe+USp_N&hBxEEW}XaI>*Q8|*b|%d1Aqsv&lOdkO(`cH z#vd{mde<>B2hVZ^&tni3(dySzDHoi$?;EA%N;HH{Fdwuup8&W%*S9%V!PPvk1_A8Q4{?d(uF=3LF`G{O`Cg6XUV5ZADHbIXY6DF zEVm~*>VAY3H2UZqqqbuo)gfqCVONYOmQtxbm4ki2Ym0#m4;$ag;f5rx_wMze*{i=iM$L^=heLRBu{YWM zRMG%8tyGLns?$4vab!6?Iz?nr;blNwZz@%FwsFxrQ$9<`E~|E686(3)J2hpep z)>Qb;BuIfxt+Oodo>(FJyvFP-gNY^yJK5cWL_s=TF+-}dW?9iG)@j1AaNR1&dx(`x z)>Q|Kyf@kYVsh@YyOHZO5+x)nSUltegl*IQcvvO&wtIEb6~S?Ra$mShI4c8@!BRBr zw1z2gM^VBI4Q8Lj&ITvyTS|cP7z+_BZ_+aO_~ncE6;prOQmiam6F&+6EE0o;Rp5CP z2K_gVIX~f#U&P1ueaxahaq+f-Km7}yfaV(qTD-#S&9{)85aqqa*|zK@)??HMo5A8= zHh7J!S*U!ak%Q2J1|-tRY7>_WfBjG<*+S@c@9IJL(^(kAs@jB2ZrEv)(sF371@(yz zjH+6uoF&3=;l#;C=@Z{1nTCKDN-#bJEeK&^A-Uuvy(#C=DaHXO4}<(Uot=u4qoG-K zLXzCan3tfQe1Kvg-})R$yD*!Gy-N-F$0q>)B>BIcuyHIXyQUhXFvn^N*`#lAv7yAt`AT z#vBJIRM=YeYUStM^(T%^;9o6}Kg5#)coF^y&w^p})|7HQ@VLd)Y{Zr?x64H0Uom6R zGD$yG{wIclFTgcMVc>Ow3j zgDZy!wJ@|E7}iSrzY@g886`NZX??j}wOu=3zy&u9hyp5XKf^NDb`M|8?moFoF8M(y zsS@@P&U1w0Q4)|i(EKN`il!Eyk6^KyZd498_8vO_>{o{3 z+qb=9?YejBoIL1KJ6mt>o!H%V9uIM;Fq#KvF%norV}i1?0P=P4g3E|tk5zc{Ab4ds zn+`GTOZJr7#|N~+HPH|Q5EU@w9j|u!wkK zw{{2Z2KslOHM=11tE(54Qf!+wu@useR_v_Z-^n&;*P3iQ>7Fyqy?(BtxPPy&6O!8P zjpn<0uH`J((#*B=axEV&3*XF7v})OX)XTi;BKtiB6P{@=e5v)AJs03HmJOE(LlwJr zU;=%JY7z5g?J^dI4;?-Mc4EUWSE0VABQow9 zeIe-yN2~SQcc({3pVY5o^{c0T5+m@bGDdnDqi)?&AC1FV8hERb_ua1lYRrEQR-*xs zpzqXV>BcWa`O%-UGLGgW2_y_CSh^;$-x%dNiBee)pc9lQ8oTLSe6B9E#)U8N@e;%$ z^7B=+e=$^Ul?BC?3eUHK+c=sXRTU5kO(i5P1tZ;@^_0Zdu<2NgzcKych#)vY?po7E(L&}r=OzB`wo#5n- z)CFtt5}()xAPc)zFriS@4&b;(qp9OIoYyj$-jR`Nh*XldR^tcdU+nbv# z(ec)yeC*-*vhb`hYA<0;1>J!3%cPBPun91{YtAl2R0iDuZ^N4d-iA3d2n(HI!^WJPR08hUy5>cXu=$+C8@r5N?2gL1;GF}aT=(}jfOrL?#%u%Rdl~y8M2)m- z0bh11(UU|narSWhy5F%PYdNE0Y6ZB{U;;px=_1i}i*?aA7UC@k8$s{HxORx}!pcYf zC`lSn_+3gBnw?e~Mr)UHIg@Q8ksW_$_cmf3X9d_qak@5{woE*jgnXZ<&Q`Rfk}!=U zV^u+kkA~=QMbFxBlgV>sL35!MfGBh~tD`q6SWB1a8;0o@RFCR3-wGO7ixn(1@JQ_b z$9xqj@0_JVR9aNVTk*l6@r zxP7jhkqOzEr~J7kGiHGteO)o0WSzj_j9f%~vc)YuTRl9BLFeWw#9xw=ECcN329Fk+ z8e`U)DlVoHBXt+G=Azr<3>w+}V)7!RMAm4XAJ7jX^5sBzcl~2kkKI1+qC$^K@~-cW^&`2ccjZPT{^Bl$uB+pz zkf)kXKe3`9Q_E1GoT)J0WgG%C@>c!5Uv*Ky)`d$W0HXa3NI0=P9upYkNQE!nO0Yev zsGPKCU*5g%!qD(Y&a(i#z&+o<3)P&`jL z8S{U;vo$oKvtBU%j7*zqvMYnwO#&)Sm=KCQ3JosZgpjE5mdFD2@8h!=p@Q3A*4Uy& zvCG?@u!*x&+v|^;EA#nTrBF+&fKAAMVf9>_E1tEH&O|%Q0!t?a79#9=mGPVn-msB z5UK#I`0k+}Fb~15)db7^r<+wOIW;Q_6Pk%>`V70lNK{c;Ocl+U{Z=b3BMYp;TlDb6 zmT>$Qy`LO_aIryMohpdCQ*rKo?YYaD!;DL2MSmIQ7`OL=^r$FZ8)tGv`_WxdTdlCs z%eNLlvZbT26@izeDI88$S?**9A4+is*`#qeB6EqYbi{1UxVd6GL@d~5tP_@YfyaDi zga}$J%7G0~fNoN;CQR4+!fJSS;uw2U?KSzf3WjbsQQg>)cGh#l{9v^rbXHO_qWZx)T^dqDV$u#Hso~nf z1$4mVd_h%+VNbwbFzb-nR{XMiwpS|m+N4^M&_C-k0s#ar)R^jIx`Y7I!4Hx+4$)@MvPc;Jmy0z^9HpHFNRDe7&?=Kl} z@$Uiqw;#TOKkrwRF4FqGwd*Th@3y@OihFF|fo~x5P6n#~?z(-l9geJI_nTegzdf$F0)+ZYm@G7|`%6mq z!a}#21(_hOc$dS)q4=~0qu=GfN5jePF2Jz);q{@bEV4zJUcb&XDyifooO}z-Ql(fF zDrq*96b{)7s;=Z*8}MG@jJ0wKBx9POq(UQaymSYj{~T-y3!07!+K!9bHU+N;Uv6G! zS~EsS$-E`%fXZeb)Sf+ib`nmag@leg^BRk>{_R~azQ6%HgK5~Qe6hSOSxF@~4doZY zG@%2|ZvFt|Erqd*<6_2ibJjcQJKdF80&R^6kxi1Y*j5@*ND~S(3gSm4+TdTZCSEX# zm#9CHKza-jN1aZ=d)AyuR((wQ>s&znR@L$GFRr=4B06kop*2etJ4>~?0d2qf9S4Fu zF1<_!PnL(+LCW`(s>bQZciD<-nAs2PFn41v))3#|=&$<*CP60`1HDXotA$0xkhq$6 ze0cQAKRou24!y(Q*IpfecXasj5CHvdxS?1A1NX*1eC;2-@(y3s4qtzFczk%c(+ZN* z?_)u+SwIQ4{&kszH(nj1B$EWb_Ya@3p&F=$Ki$ALEt3?7^T!>P0?O})!Mx`6U>>66 z*84-c@{`SE75$8R1av*6Sp8_`J$qKtEY(AvT?X^TDx3zf)u9uQafhNhU$;W@&l)y-VS#+| z8Azj?F2_SOaFS93+5Ej|G5h+rggOj^_yrKtDR7GW4Dv$t3qSk%Q^wVb zwR~)6(O_ris^Npo0)us57sTFPx|~fhli*?z-hTZB!-hT1;Oi&h6wgA4`Hyy3mn9Lg z$!wi|cLd1&?=e9j>?s%+46y_X#0hzF{`J>5NmVsPV)xC%7LLqtyXFDmH|X(F|4~t@ zf|sy%aT^2(eal4&fXa=2^Yw2tAV3@TUfOvd#KBb3pHInm6&lZoY9>=prmBX3@QL2- zXXw4UU2oQK(d`uMOW*g@&Y~@Zxt(^-f$=37Ugh$G!vlm67&++dt-k)kH9r^;O&%&O zpkos#J;iI{C9Kx%AG{KL!3H)i+$0>;R)zjOs?LKiSUHJ}9+@*~M{=sr_tqHSXo~b{ z7EZkzoRAwC3Ks0FqwFdBujc*V|Mh>K!~avpKJrvKz@`+N;8vaa!6II+^d$21p$=1a zE?tOb>+UA%^Y?e`8I^vEqFy&KoHpTL+)d9337_&#*b^byk{8H|(zoM&Pj6u$2i_bF zW$FbW_{%z;PWHE-;G|;=fO(b&ZgP=SBd=2^_1u?%Tq82@@ZCL&; zUl7f+Uw|90@C$6vZ+*Aif{AcmK=^7_tI6#k?dUXs0}I48n~8g84tr#b$Cvjs);CcF zaOw-R_})Z!Frj>oKh(RI&C83L*SJgLfPGCOPV#N`7jWP}vArpXz33&BrV?#~HR*zl z_Y<(`%P*KQVdrP-4odtN`f~C=@yr0oYBd@zm#ME#po(|4b#VCi^CfVFXd_6UdsCF1 z*W4at9MR=FYZ?G0$caknnT1}BeYc7GuthobF0IIjByS$29|V@`B;$I*B<>yc3Cci-+L+Di7(NOIECBt)pziFzeaE+iyZ6u^?=QK z{#=@o#h#MxZQsKuSlUFABxIi#JWNJWj) zp3ZPzUWvAP9B|8acd( z6Ts^~XQ(qYf5zcR|0Suiobw&8rx>~(ZNC0ukdk1rf!SWhs!q0h5bo!jaJ1!{fC&$6 zlJNCcwB6!Nq6*q~&gk)70f^b!xrd~|cE`g*bt#KHU_NOcBvbnVCY=B>`F3~xog&=3 zOt3ffdtI}6hyyP(;DgMK-e_Q&VMfTP2kK0+*|spIzWj0Ek&{l4R&-pS;bTqNi!p;6ND~YP3$!e ze1&y+0mQ(Nhu~~6&Cwrc{GGR4a`4OCMxNUl7v=%vP&p$m7$a z2qTt{DX%0M7&R#s=P1@mfvzu$H2*; z1h@n51BK3`2mgV02?So~5B$|UOSp)%*N?;T=Pgrvec7yd9~$rRe@+`$@IfEy7x2ID z;j?}|Y5edB{yD#@19iSnQC4FcIJRCK9pXPNhEc&U1%MyUuZmiECmxYAxz%u-ZFre& zc$IBGWu9G{2OaCD2H1dn%s(mW zOb4A|+gN=!{UM4qttmwBwG9l4b_N?uh;u+-I7YBbR`iomc*zu|m-IBAnoSjuQv!C2 zahxvH#2(S@*I(jPHFz?Gw}H*sU`rCrQR#~UhX)7M3#RDc76;jfM9%{PVY-4!2!Iie!UH*g@*q@W$qUaDKhkTo+bCm#zc!BDCeLw7RHEK z+jO8ZbpQqt4TtxWi69fy@<6Ex9D#m;k?EU=y1c2sZb>`N#7*K54< zrJMY^BBxhWNhO%I82#acN#e6f>e(~>CjCRcE|!|c))S8u63JA*{sh+eb70(bdHB-jQ1w%7^R&^`q1 zIPPCzGs6d|f?fxd_LeE9Gyo3{)FxnlkGfsKrh&b*Tc^umh+2M6-2tKZ^Z)%{|7W+3 zwy4P4J^4fzz_R?YQtroP_%i)%cov>P7MfwyRdpB>ZKu3oz^2STBjbbLOcD_%dZwp4 z*q6GpoiJ3Ainh6F;}?LQ5V5SOH}mEQ$RU!i7Gs4#U>q;}gKP>Z50=2m2j0}qkB5UV z1%$r=8v@v-n$vExhxe!ttB3iorV@S{Vzp*;0Yk23^7R*F5JYR0ML{gcH{vl10|XF_ zJpm0Lp#l4tR;Hk$psylG6%Lwaw78489&I>mPlD+~d-d*#GWTF8E2&`Mj+sc<$Z!&` zfpz088ZHp4aui>aO$d`aF^P=>{$kEE9g;p9q^UlpyX)6a2EBKeXCKv?R><8>G0Vc< zgadZLXV=Z$lfB(K?1CHAF_F@OzQbGU;g9w1L2K-80{^3Xar{@xy<_CkVa78gzZe+k z>4LTgwQhphtQbz@5BOd3+;y5rg6V=dao~w{houmS5F~aO;z~||d7gaz8%FS4HP8I4 z6NWaba$wSYNy%`~R=KbHZ!GVw;Er}ah?{M_w>y$H6~(ujofL zk9En=un<5+VPhvLFOh5!wJ0zsR^QVdv1Bu4x(%HLt})YK@k->Pr_>uW+?Zc8ym5C) zWdUrbtYNYsM+j&BVL)iO#p5|9ft`4zJfh5$;}m02n0BLk(eTYqez+HhG-c-{*Hs;f zgqEV;>iNnCg-_}>X!@G%T^frax=_^5&U}xY1-#z%iO-R4Y7gN0!IURFef8G0&lDi* zlaoRH^?y^?4$N&x+Y+XgG&sRV62ucaLY3Rc8C03)-NBn5-eUo$L96ld*o;r^kC5ou z3_~0h?X;0~2lZ}S_s%X&7TH!r?MA zn+I_{@U6h!4HH&ABjp#`LXNe_Es-jsn(2dLI=zRr3@EYj5w^}Q`Y}x7XhRA^N@7^F z@iivl2yuhbqURP^LoUAlLJl9wYzkN0oc6MRqdaDHw$CgM<3z!pLY}pa`Mn?ejmutr zQ17(|y=MEW)ja=8W`=*np(N9gS-QEDh(-+pOCgJZ-$0jQ__Q(nM%?OR$bA)_@F$)i zBtU98={m*mg>5}D_R;)>$Td=cBX~>fSQZ&lrIhM5->EI&7u~$32M~^A2A_+;7r}^! z4Wwf?p}}t_n^x!CXFt$W4HRgEO$HGjKa96O&Ugxf0*F=7;u|pB0>~yxf-xT~_$)l| z7o9%Vv@65czg^FVzi~`kaXfNVn|+7(qDzJq_RKNT6@H*teWoPh&w#?q2{ZEghBvxF zJ~m46h&6DP8yYdhbmeo<0Zy$o1p2DK4`!Yq3pczfj~S-(E<}U)bfKwoA$qxvO}Io5 z&u#2!@yNd&f0`XXyl{tX;G2LLeO3W!s_IJsk-waceJ&d%?_qk7bN@c5TUyvyavm~phV#I>gkyZ~7i3t92>hb88|6Yc#x zO#cpFg;+WC9^^dKfIOnloWsOJiZ~Q!(v)pBizQk!DLmFVr2m~zKDa$FexTsSeZ=lk zx~PLfLGi!oFxR|)z^vJm)fQSt%Twi;e~ddMrV67Um?k23jlzu#v?QP$Wu`GQSK};z$pE&N1l!|%g3%|1M}R)gPZ$E`=0Q1IOrnmC>CLP6 znwiwEt1ee#V|B!Z-UN#oet?R1@BqSR;}G{)#UWZJIS-dsXl3QQvtEb5Wl3>ClQE7X zMQN;u6)E47Z8(EYa97@4YgY0X zy3)2i)N>M}iW1gs5g2iVUh9)mWt`WpX_T7Tp=r79HF_R-hm%*mX#cdTrm!Q3EqG)m z27^BXI=0A(E068{_)aN%Ef&ILo%v~26a#+RxxVcCkC>IMSRT<|l{+)Mzmd^v-k&CL zI%Y+*Z>&RubXpqfpps|#xaLf$%RpD7r{Ts#gM75Jif}jym=j<;<5*Z?D#m}B zQF!(!{#C0~Nf)42I;Z@1MjlV2G(@M(aAB(uERDf-1SgFj{6M)W4bjDkX*>pb&}~KC z<6uge6P6sj!FSOa@UOYcJt4gk$GU_ZzQFg#X}#4tdY#saBU91MTU8 znTLn_RriJbs$skpCq}3dGX#J$;rgS+IEqmu!DE|2s_u2`Zu0N6fr60oOmt=v&QL;LIlzT9d8!GxRIusZF7l$>x=+2WfJ8W zvHDmU1u2S1JPhRidT+=mZgJS_v_@#0#cwhWGm02#^D}vjM;p3Lvb)DH%sFnEkRVU* z+{akCmE)~)fvkw^2c>-H(l|k!xZV%mAJx%%I_8J*l^!;8^4-iNo=3+TES}eEjmw_n*WM7G-0SqUV(Traw?MjQNBTZ9)0LxW%B42&@Inr84fz zqzFTB6%1u!HYRtiPe^%zQDe)J5uU2)a%{{XJjbF(A$z3d z2*5qna%=VlKMsaG!LO@nFxt%%bluWU>5Nq*bA4NFyZtDc=Iow)PI>HSR*4UN33 z{^0B{m-Tk@)YGz^8emnDb(mOEL8S! zB=VhxoAs?;KkGsef0q2}V}z>&^G2AI8{WDglNVE{C*i?;uP7T1o+TS5A$q?{yzu?% zM^9v(4to+TVY^Q-JP^3%lsuq)-UiC2LlKw`3rq#nh&+Z2gt{wEHkB`9XWT52tcypF#NuiM0Yp8GKO*@fr7`QZ7NzQCB! zw@ z8i<6vt%pN%ri#Ng;RaNI_sFB~Is(P%VixF+_h+Vkz zgBmj38?O(b5$s#Vmke_)%Q>3W_%5?Vd&^3X+K?d5F|X>5p{MXl)eUCXk4gD$y!UxF zuNq#vdDRoz!}LKIV4pl`qOE#gYZnz=GoiJfaFXHfKw)8?teS32o?Kn_b3LfYjv*lu`c|)c%kCmfYIqL%! zU6k|>oZiGaV~=`^CXgIJhpgFccqbJLCFh$9&%P$?#%5)rSZ4-rjaKu`mM==M3Yau; zC?(TelHtfi>P=R_h<1AySL)e&Sr|XRA($ltK7r!$ETyrw7s$1Nism=3lnf;)LxGJY zzSd@2a1W_y5*L$lsndP48kU1ngv+^z^9J}K+y!0A@n;5-nE@*J6H_z{k|}0M$04)v zA_{S|o85)Pg1KalqskUJtT~X!;!pL67-?2Tx=!6xIOx49huVIC`Kun$U+tr*qe4gm z%bzzbI4pdgM-+1E+;_@5t(0;DBLnv)+~2H5QR5sq8d$A3BMnC24VwKEF8O0%PEjJc z^Xot0pE3_PVif$yKuTGPlqWHU&?VbD7hR8-H4e`U%MjXw9w%epU@KF*WRxxseDsI& ztD_?yIPx$qcE%PsW11?IgoqQMxScHPu-dVZuym7d@QT1gS}J$>2EOEt{0-;PjMxO$ zYi4a7^zpJyC*QR5m$Pw!gSGLer_4;s(uoPDut(sPU5o{~ib%^x<%dFaDdmc>T}}pP z^EBMWc(mFqOP0aYT!A}zN>;3T*F?W*evw10!sc@tq_b$mvlHej@39YZ?3fBWkdE4u zzm(}=n5V6USk|7h8fuO)l;Wb>xxS*PNaqo!Sin$>0;iwETyb=YVX}AE`wuUl10j5! z%R=s|y56oz(-9)cQ-U5-NTJ9RPc!2wXdS_e>6f^R;ny&DAAwr}{N@!UJ}1>R9lDpt zrolmbJp;b5cUAA6n!6V}ysNiNLl!+H)n7#;>jmf>={7q(3}A*8W8JfUTE++}JW~pm zTBJUZ5BKG{C(dUwti_!1vKT7_N0)nh{ye#bYhj-_H44jSNHhHm`55e`50a8_wu)gs z$;!It-_UFP@p26`Cigb8vYDQbc`emWX44H}EC4t1K7Wk+ zg7YEv#bs3T=svgibb*_6`J(V=_DY2+SuyeS+STYA_=WAAY=_Qd6HGFlDHL~x`DAQq znSABQx$a-|#U`6BeA3O9UH6)Cjv|?=2#Ug~FcBp#q#bJLsuX795<8K^$?4GizqSTzMd7f{@PU4pGAl#@$eBgLJb^_${ zxB6K=$|2NIIY!N*!r%I@UAznV z;G2>MJRI;6b(B|xgY;xc!6jj`B8xgRw6dY|on(TzXY;_@{U^9=w1CV;;C~Vk%m@TE zS7A%>7jQPo*%(L4GPKar+{I;tbf zIvBsvDSN->AmFg#?-PAnKNjJT@;Fbz#UpUqu1R5P{O8M@7sOqO`5<`ZdZx3EY;~|q z>@4NMViI9NHFlN)J|UGU<3-GG%wR*xN90MHt#e;98O%2I3NI*O297?A7F4tU$j<4K?9`>%dO3t)DfU8e zkFce{Aw57wW4yGu(xM~d832jh6JL@)j zy+OZz(rS2nN5}j5FMRWNLH-EbIeP?#InJVa##7Z1J92%fnB0TCTvu7GU5&%E96j7w zDS8fAPMu!4MMWisWA9Qp!c=5$gTyOcCxs4gMZH0M17fGVs<(754@1ilsT@2&*rF`P zn)tS1CIgG74(UpFaCLPG97?})+N*zP6nXWVVBr3x5KhzuaO#I~ICFuPbM+$mUahNC zK7PZH{lyDK&}DIW0PF77g&(GRAPC!}VW9j-J11#^Q$UQ=H zMs&9#yv9|j(0pDrh$x!@rVvbf)If)wQe4SHxD1|}S8rXts}H(^i>q#<^{#pG?kVuC z&QGEU$S}vOD^ocNrS1i4pF$FGfyZF4cLhy40|w3@WDT9<{_)w@Td7gd&#A~OR{@lb z&3fCzL$g0b%$R%t7t3)bUzM|u`8enxoYPMGtllq>%h|V1*dFCjfnIW10<2N>m-E!q z;Z2mZMX}Yu*`UvS9Ha-tn!w-4IBk+>nxbd#zwEfEY%S(vt#GtKR#p1g(6zF&aL-pCpuEE%OE?Y?wJIvb?)) zr@Av4wD6u9pwTMP%!OBa zYxF~NtpL7mD((>sBdkrBNH>$$!F`bV8kbza#P!bVWQq1|cj3%ZkqLYiFNbg~U`7Gj zg~Wh(Ll9km-Pp&+rJiE@0D(8nNWd8+5vt|Uv?qI< z-|6r{;b&UOzmE_eIR&PDPi$bJE}J-1XhW%Ct`SXPZiaA3(cA-%Rru%pD@=zZLT;J zY0(iyQ$JYV^W7^Xi)f&}r}Ghx2jpu7Qf5Ov*PLCE8rju!kwyeKz61srO>W8aNohaI zb#Du0;PP(J?TB(6m1&C`mKT_AUqvAd_MJ$26RgmVH6n0(&6Y^-gLrbl36NGP$|US| zqa*35Gr+LjWwT!31?wW)(j7hL-(i6AdH2Hrrv?+@_@*FNP8LUvkupS(>W8(1MQ8>e z>aFXB&bbp8YkV{TFTr-v=)>qy9cwa!{SB{Y9?F6f^(2-bdSUMYuyys1860DU18;zt zUxuTDIPi;(j>{0t#^dPW{_mP){gW`geFTD5XA6SaQpMQOAIWxfFelqSCwj2=Z~7SM z|G>96pW>AulWEz$xUe>UdH?pef68Na)~w*&Q_H^%NC{9`&t%mv2-GUFZe_uT{8)<`KBg zYWHK!iEv9yl>{5aS{uX9qp(!I4KR%FiW6X=Agl#u&As>8JxyTByvj+tYrygry9{P4 zttR&JO7zH_4xm_@yj7KK4W(SQV*zbZca%-V!+kOz$=%9W6z8mz_?~D#jfc@a62rTi zZNctaISm~E0Z^1&8#_!Ii%i|bv42{+BEzjLzwnHgiP(_*&9Y{WNI28(cL8h$_ac z-QtBgGO;>j2`5p|N|YiKX#yuPqT6Sm;i;|5qgZjYz#n*d;Z;U4OcH-JQ=Z}Q5GXiY z&Z~HNBY81O;MmrF!cX-n!MY*=CFT$>dv{4PMj8#b9ZY4xqPp${L?6{$`Cw&dGqG(J zh}|ss>%9jbV(K#fh`GWy(Uf92BmkjxHaKZso((QLKfOH?#&o?}VVzKX(PT8@H^cSK z_1WRn!V9Km)40jx7@EDTIhp8>;?1YG)Zlg;OHq4Oh?w0vWVvs~q1tW~mCk7BWw#hD z8*ng6AwCC@Rbz#o;;8cHj@+1w7ScT-NwT6c_t@o}XdyIW*M!P2As3|BI`jwE)d{!< zxrgfNV%G8niA_xySjMp>vBfZ?H3-I5^vYGKMPIvo50>ezQj6LNl8(5$(aPa0k_OIB>7uyI)nu3uN_b!SuLXw@}q&Pk{ z62?|%!;DJ(Y$D#SiGe0NiRDJ4J(MU#8>$@_DwP!VQ$bwg9rsVFVnA(C!G}XTr_jx3 z)^qcoyNdS;x;s&}L${mO;L?eed_o@PXS#v^s25d5m#jrM%Lyl)Lw3Xjv^s^;E2_+> z)EdP-zCoxb;K)LEW%Bj zb&|M-%0%*4?I`ZU*mqQIc2)0A*)UYnC$4<)4{teRRyeksdB|H5_i)^xN!$a_tEnkmYj!T}3%J@Fpfc}!p1AgT8f$_=)ALe5)p+ijyI4-13b%o&fz{F{p49`!CQ zwlM;YJJbGm9rw53E*xj)v?K}MT?rr02JXezUna0ylvql*+CXkGT=VIfb4s|w05U&wbZh8VU z>25ji2f8w{U!SJL*0r<;M~uF}coD(`CZ!1$!Ht*D=VnD3`iy8XsVQD9|P*qU2Gg&{u~iQ&&x&|A(I zE^!nYq}3yZJWg6L83$f<6bC?C6P?1jtcR&WSJ1<~uH~i;QGcC!iU%ae{nVT;5m_a@ zHuE2ZOzE3-=zvXOtFtA_w+?$}99hO(s47gODZDDt$#^+po`4?}uTDH!QM@|UnsgF* zJD0ZcSV^3~Umz@M5+uM#mBklEq%g!lpbh#fCn+l&rH9xF;;`8|u z>1oaT%fF#^X}KDpHjXH@VW%h=1BYs+0TN~)@^PTD;br{45C@9qjHKjkj!p+&{nk4I zf-;)&Z>8%-RR6wSDyp&_%RO{FJYX#M86-E+U3~W#B!8um@D9Y^$Aa*$d4$WqC%)No z^k{T%Y<#cE2e{>nF(P6CvxHRSud?p6X0+r;G*WcmJn-(hw)tPB(q$nwz7*7Tt*-$F3b~V(Q(<4F=EKr$uQ_c!l-WRo| zI1l4Y*q+uCH^2BdPTC@aNDR>(ZIqqyy4sFB4pGB!F@+tML^u zi*$;%@tsfYo98wQ3Z8SCi88T3e|VOe_h?CUNSU3S>=h@#u2_+1c6u2WX7})lA(u6* zk9_C7dHwq3Ywlym);wlqVc*GKv%LI8ty$AwzSWc50AyXKRGMtgK9Ur zL^oAcu}A3y?NI6m^JlvVT;!P0)06{papyltX9l9oz|IO}^UQY#muJ0~$Ajb7gZfF2 zJcD#KOp5ldx(G_r0NQw^uynFw zbRsJlRmmiUdQ#|NJd2R`vFp~dYLIgF)V%*-VHW@YKMzn*;Zcgly8{Z&)?$5FE4Uu4eapD1J1yvkmB ziw>kdIR*Hnw#m$)e}j25m=E#i$sFF{r!!lCbOPZuPH=MPiMAgm>hx zCS{AYqKH>$u^cQ{skfpugRmzkc=P}d6AY+E)tbnG=s+il#}xZsya`}keWf|LI06Ai zevc_pUxg|&S*chke?J}LB}{iXqsSA!XsT!$R`PGDJp>ia@Zq!NL`S`lwj2mkc_%5u z&i!=Y$WD0&0af{WqG91k48VipaJ6~-=8 z0tbbA+o^zzqF!{T=c+OTb_a?E=Y{Uu*30AW3oNMfk+I=VH*ytaIWpaqFOu&GP?dm(Z`>w zRt^aicY>HGFY z*Q-$3F=+AhrF43A?K%HdPW!Dv{raMN;_YEv3)(4)oL2YgdP3l{bHMNIX|ahDiSF~m zUZangP(xdaNg(_0&stdVFBnZN5zIl>r#BHY)qcHN-7Ystj7~`W-8*`&UDLZUoc_a3 z<*e7yVZFr6s<>g~U>ESXKN!3poHQ=rrS1Np-8pL%N%sQRxIB9lT(<%9F=#a}uiJy> z&Oc>Uarumq`1A9cvuCX)Ns$f1n~`fJeYHRL)BYiHsi50M^~W@ zoheRctoklgQPDpebxf?k)2E~D8o?dfECbdTil@g)s?5u!S=^Jka?H}q7k=uUce-tV zqxsW2w;zijAat+y^FB^oc1)a&bjBmNo~a-YbSe8{jtF2Eiks|LVvatYkw91F8>8j7 zIu3{H2?n`^P8St!$XZCPb3<8nO*&p?`02GU_?);ZT>|&}RQJMHjj>4&&%8oh^;q-9-QC+K*M)TcSO&3@dX<``rL%4b9 zPoS+m(%x?1yMI}X)dfM4XcgUS#LxmKfDR6RovC|Bd@(s5?Vb?J!v!xSjGNg8EAln; z`oUz-zCtE+fwO`6TznN?OYeYH(N;B*g2NylhN*fbb4BpdYv4;TIiYo*u8=qRRB4c7 zk7*`R%-iF=I>s%$iOeE~>Avcs^mosmJ=;YQja&WhhkE7x^(Bz}CS0rDyJo*%ca2i- znz^EbmGfq+(Hnf|w65C?x``|2%Kj~u$`shd`!Ou5^90#V?F=}9OX|FY56maxmNq#4 ziz(A!{2k0a%vDQ^72>_gG0o70Y%@6f{rwdcjyu7-GORoV_z2=u?Y|LULW?+)1BA91u4` zUaFc7Jy8__(HD^FR?4xx? zcZXL`@X9nGYKm1p^G3hft^8|U31ldHe?~Q<))n$JR9c;jCP-_8%etZzy%iA5=@9S0 zF_zPViAD|oPNl_G4EMhrsg~Trp{148DVD;!-}@$559vuEJcdpZY~}=_Sf*|OJSsQQ zWX{qaw(9s(@s`F?RFR8ka6_91cA0mV1anZgwfR4RW z_dK<)Tm9zXs@pkj^m@(93$OC^e{bUO#WhvMLc%?Mfx=^-Zp4(LLpGH*GfSLHk3C^H zA)Vxk-|SS{;S~ydU(%&=BW7z22(9gi0?CQ@!IJE4U7^*qShraQ}tHm z5*;&OJkKgkQUbtCM{_wsNB-Nv|K_9EGGHGz(Ihega1_zd+z`|j?#IU5d$)1cIJf0sjBJK`34YF8 z5R>3bEv=NJU2m#duqF6T-`k6q)?D=(Fif~yXP;HWHHg>AdI+4}tpU5nl~}??U$Ezx zUI$VjNz5>FEwKM?;s`|IPOOp&CCuo+F6L4S%vz~%Ao1(ec@slBR_-Yss>!k{-L5*l z=11o|%Sj&ePTw`oq~*i;$20r~b$eGmyr-|El8q2ppfQMbGg>-pw`tlVaIQC1H#kR_dmS2I69>GJEY>XXqx67AEin& z0wV1uzXAG#Ym;^dC+E#eo#VnX3>PJ~*p@vvgGsVwY{$0+nU&7q+cPV`vLuR9(?+M7 z?uz9~Q2$1@*A)=s0++>AH@BqQ%xOf}Mhx1=#e7OgwZ>-7eg9Fzs`QSI_3;$X0+s6v!!p^h+^x6w z4)2Z+4-b9zE!jUHiBFjv(Vc3%Mk@=7r>S9Xt<FW z5D%`q&AySLum$bkom2KHElO))(p&c4JzQr9fEulqLr8n?x=1$RA0(SSrkiI-l2K`n zB7?umQBfc%oD0=P)UOXt-ve*#?ZFu&rf{KY06=?E1_W4<;R({Ug1YS(zr)8%;i zT*H}BAQ)bBnISkG%w{t?OcREV^HO?W<{=XZ>v_sKc~nyVyGL}0o( zAT$txaJ3NYmIZEJtY63vFwRMy!0x3CX+ja5t>^%X>y9k1JpZ$P1Cl7;yrHXCNGZ## z)zh5>{x5By?T(7e=7sN$1M#L5p*}9e z*}G_5+V_lM3W^FE^r%?jEo$aOt_l+hA>P@Kk{exL5+iTXoT*)kM(R7?&%63MU}M_e|EFg2WzU6;X8;#1^a* z^ADoq>@&&CsP>5S3}Ux&(L^&dvx$#H;&jUKni`3cAa86Vpe(TF?QabHdr4Ni)x&P%6Iwb#y2YeHF{(KH|I1gq%CfGo8gz`bb4bvwb znlO$rDxI*lx2j05`PX!oe5&-LvH#)>NX1-94W3vT`cVpud3cv9v$nWtq+~`RH4(=* z8?6qf?ZoGiIXTgNSH{@1J8eX{O0=~_)xw) z{{GGPaDsGdR3xFjcdrM{Uj5}UiA7FXGpA~j>BU)NB(ZNtTO$?sY$wg?^v+)#`J{PE zD4N26=aLCk*jdSIT=dR-cHl#XURo!xf@8O-6hl5w(RbEU9fYPcrJHAYGX_zz4(Gk? zH$4j7MQu0N$dLj$#V;;yrTHO0_$uo8vu8Bp*fcLp|^)ric_3t9uYTu#x<5C6mS?D8Z@BPl%JPm(;Z!5$Z+Aw>o_~MjqsE z#P-maJ`Uv&?*~*+L>S)Bc_VVDDw4lg8-+qn9l^F%D=Iz{)0a)n1$0ekLgqmEU&qST z6h@2bzJrCTT@C;fIq*&|O7|oV{Hm zDb6YHscz|)!8!lDp6X{MR zr@&pl6%l*RZ-1u+V?szB2+bo|2x?w?nZkIGE|c{qMMn;8L*={Ff$wb1Ltg~i?p-|q z+zm0eKJ-Zp%>zLJ{X_!8i-n)axGERj}j~DMej^D)*qT^_qa`>G4CDu?|-~TWG(KYAJ&6Wx$z|ZRS z@#%ef%H4wUmgF_z;u`>aA@%mgo5Wj$6I1}C`^ty_&=ea?GKzJ7ku$8S!%cHCL6a+d zZ*j%mtn;4kPuKT)pSh_dvFki-d0FW@<`Eg=@fDQw9z;EjMuqruYGx;R&EgQ$wwa(; zFV)&Ik!Kd6F)T^pfKa@F|y z>t}Q;*hGo(l8o?>X$wiU^7HQc6NfPIuNG`rbR(c5gH@dJqM-0n=r+z`zz-mRSP?qa-wN3}4 zU(=CH+*WQI-(qo`v&}qF3Q#GM0v9R;|4`In3 zUrH2VatkQhHbx({JHkkz`|9GMNwT8Df79zyBr5EHiNf%2dQq-GkjnVRC0f_p`@0Et zbj~HqU8rc45?EkuiZq#a`6_zBwbu}Q72a%ztqf<=Ax5F{PE))5fY!VwYJGqS7vq}o zKU7D-O8A7~x7$ht=ydu8sl;=5_!ipQC8IrSw9)2wBf0)AdR#yV6Z01YK(`wht#Q`u zHctCR`Q5C9C6X3ee7oMedGpWO{hfj~UlfJ~PsrwAjY*#L3h?ww@$^(Jv)rRb^Ig5D z@vNw^S=87oYW#3nG8BF$Mu&o@z5I(W3cgh>SLp-P!55FfhTtGVnB7^B2yH~2o!ojl z#1Khl$ZnN-A4|X?thDjx1NOl_+B(s%M@g^IL?d}Ih0+WLqjb1>YM=1QJtiw##ryTw z)r!1`j7LFMN35lu(Q5tn-RaTMC-v)C{pzWo#LIlD#CV8NJ(bZZqGB}gRwM7bUH{dX z{~WAF10aLnsmauhU-(u+$L7j7nvYVsOU0ePCK)#lfP1;QiM5k6X58lsjq}@vnW79e zQ%!8io=_&>T;EOJ-eRbHo6AaP7S}Z};G3L|jul-xo`&3-utptFP}pGMLgF|q(uq%D zJ_;JKgiyGOW=q9as|g@hoG0L>AhrWmiNf7^ZC99(Eu|8GM4@gZYX%x@Fk)`!I^Y;Aq$bppbi9p%$b;NTqz1w#vVqmAd=+}Slm)4&T2f2t8w-Fmq*822lTNAY^0ekzM*5SgNw96 zNagmiuqohiI0rzMA~f6T&sn2$_JKzPrPA>y8GfTyjR} zmd)MkwAHhExO}(st9sEHp+jVy4@(2R{D9Gwl?1^=e=iJaa$yaeD(d0w zj$Z7J4D@^Pjkei!x}e~K?Ec=sbyPY%(vXH|vtOX5P3o3RE!P&J{i23Z5k3jxb4uP? z+*Ix*lx38&@?ky~lQrJ>`AXW;Jfy+aJJE4@%7cM?j)B*R#uT;6DLKo(nI%1U!c{D2 zEn_dt)JZ6^5xSAP<~?>^Se^D679>vB#@wux-ITRLj&G(|iV~!a|8AAxvUf>@kLm04HiH$)|=JQ8(}TVvvkd7OhmZ$M@7=%pu%rP{@|-wFfs;paf3iDpANG? z58SW6&c~$Gqr6G~vM-;HH_f=9wmP}fV0FxeUGgU(HgzR@kewe-iv)3s4qX-FpPW)W zFMRzVh~waXfD<@M2e2-a#UQ+c-JgbI2`y()=W%_J9y{GI4TIl;CxcWz0kUxjIl;AMSyX7^eX3h;tES) zQUMHey!zEjNL6Wk}ZPVuBZ#@+Ht(p*3nSbxsi#v+2C-CWtBi4js}89%O}E2c$^d z=|UuHxJ586b>6{7(*ry1%I&S}ui2sHO6S=5D5HF=ElRPjxdn5FRk6a8skAQrWSy1D zHCg}(EXsP1mnxkCxm`#MY_!e~_}6^CWb(OA1wnPktMi3~F-W83>Rtsk%vFNmOjab8 zUI8bsCuRZMQ7ORT%9{^$l{zfov{-@^io-!N$$9D~qtO99`zbhZoXph=g-mCKA(ZA4#$dHIF`=3f{y1HjgiWpT+A+4#%yf+}$Fsi!&3CMWS^ zElPlAV0Aq8XFBdU0fx-7;Yi9JsewU7UiR?fF8GKgK?@M$*++XgGwbaayLbRQWD?cp3Y1X-VM0kbTx3Y4$s>Yea`+)#iX7Z zQtUe_*(ypc$2GnpG^tKvphrL~J@(q?|8{39Rj5i}UcbjC z8``;WvEX6dVsa>tQ-ph)I@=|zM5iY{up1AHgRog1EehKp*~ha)nQ*-Bh!qkSAZF{bDf5-dPe^b1VD5gjme zDZy1_09jv_WC;#1PAZm!;W$n#*4en(O75f=FfJttV&cbDx6XD~sxm9oS4a6~K#9=< z(V6x$#x0U#E2;Y{xdSU=7v~MtIm+!cer)X^CnLy-d+-F?!dp;ufR+XlIXAD@@8-wV&M}jti;apmR8bxB&_j)1n|)8 z30ta*`KjVitYL|~V4W@1*L?EshR0Tnex!5A(P*!{4Dco^39bW+X<@fzQ= z;oDc9?{L{pxj3o}K6yefnJhP}xHwfghES;iB=QS7l1R=O z31?ucyOi4u9lSAy+MQ=gEmU;E zTrZp?T!vSrhqfNgZ*`OhJ|LZ0MLr4>1oPRzoNUV2+yU zan9qC2sobI7q)siaqc=7xw(rt)M2s`1=FH}U+6Vn+8>$yX#6|OH5}zyj`J;>9OCfh z=C#w7vs9~OjG~#TZ014j*|TRoQ)lIwhj~ZTZ|{2XC0Yh(6hTzehP{QRYGSozXt$JZ}j?Q`~eVta)!RW*+pgEeAs8SUWFD0EMLI8fu z%8uBmR!ZO8tfvJEj90$WXJYc6xa{?7O3JQ2f6Fjjz}#@u{C(SqYGmvX_PV(GvYZ=n z60pigI2XGnpNXmHY{RO=>y$1PhPnxKnroI<*_Y7QZnbg#RWoMkk&c=|3vK~1X2x=R z$&C)ul1y2Q5b|M|*hT_{G@2VbVYM#TYOAKh{3M$0MD*=Sf8q<8Bv!brVMJNctb4;M zgcSN~s#qJHySC;8lxl_0Uo}tBe)pR&oVgfE+38$m?A!{OO*J8boP3U1aKO8X3o#e> zqT0@QV;Ki(>U!1fT%0ufJ=2RxIFb$5+G9oC=Jt3&d~#?o+CGYy|Jezab}NxMtEHJS n?Luw2rqI$lE>}rqyq41@LXKoV4QQ!U)-HNYNM%3BGV=cd)uk#S literal 0 Hc-jL100001 diff --git a/bfd/po/tr.gmo b/bfd/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..74c0ea8fc2dd2a8c37d0b53df79112dcd1895bc4 GIT binary patch literal 69529 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%0A4vf%EVYfW@^)3YXP<`p*F(ba+dHF~~O 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 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..50ce6af769606a933ed30208141e38d0b613f4f2 GIT binary patch literal 17843 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 + + * configure: Regenerate. + 2017-01-18 Bernhard Rosenkranzer PR 21059 diff --git a/binutils/arlex.c b/binutils/arlex.c new file mode 100644 index 00000000000..cda560db1e3 --- /dev/null +++ b/binutils/arlex.c @@ -0,0 +1,2034 @@ + +#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 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +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-2017 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 601 "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 784 "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 1072 "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" + + + diff --git a/binutils/arparse.c b/binutils/arparse.c new file mode 100644 index 00000000000..4439ae58e71 --- /dev/null +++ b/binutils/arparse.c @@ -0,0 +1,1668 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "arparse.y" /* yacc.c:339 */ + +/* arparse.y - Strange script language parser */ + +/* Copyright (C) 1992-2017 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 *); + +#line 102 "arparse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_ARPARSE_H_INCLUDED +# define YY_YY_ARPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 37 "arparse.y" /* yacc.c:355 */ + + char *name; +struct list *list ; + + +#line 188 "arparse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_ARPARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 203 "arparse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 53 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 275 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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 || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -14 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-14))) + +#define YYTABLE_NINF -42 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { prompt(); } +#line 1297 "arparse.c" /* yacc.c:1661 */ + break; + + case 6: +#line 77 "arparse.y" /* yacc.c:1661 */ + { prompt(); } +#line 1303 "arparse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 93 "arparse.y" /* yacc.c:1661 */ + { ar_end(); return 0; } +#line 1309 "arparse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 95 "arparse.y" /* yacc.c:1661 */ + { yyerror("foo"); } +#line 1315 "arparse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 102 "arparse.y" /* yacc.c:1661 */ + { ar_extract((yyvsp[0].list)); } +#line 1321 "arparse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 107 "arparse.y" /* yacc.c:1661 */ + { ar_replace((yyvsp[0].list)); } +#line 1327 "arparse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 112 "arparse.y" /* yacc.c:1661 */ + { ar_clear(); } +#line 1333 "arparse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 117 "arparse.y" /* yacc.c:1661 */ + { ar_delete((yyvsp[0].list)); } +#line 1339 "arparse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 121 "arparse.y" /* yacc.c:1661 */ + { ar_addmod((yyvsp[0].list)); } +#line 1345 "arparse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 126 "arparse.y" /* yacc.c:1661 */ + { ar_list(); } +#line 1351 "arparse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 131 "arparse.y" /* yacc.c:1661 */ + { ar_save(); } +#line 1357 "arparse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 138 "arparse.y" /* yacc.c:1661 */ + { ar_open((yyvsp[0].name),0); } +#line 1363 "arparse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 143 "arparse.y" /* yacc.c:1661 */ + { ar_open((yyvsp[0].name),1); } +#line 1369 "arparse.c" /* yacc.c:1661 */ + break; + + case 32: +#line 149 "arparse.y" /* yacc.c:1661 */ + { ar_addlib((yyvsp[-1].name),(yyvsp[0].list)); } +#line 1375 "arparse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 153 "arparse.y" /* yacc.c:1661 */ + { ar_directory((yyvsp[-2].name), (yyvsp[-1].list), (yyvsp[0].name)); } +#line 1381 "arparse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 160 "arparse.y" /* yacc.c:1661 */ + { (yyval.name) = (yyvsp[0].name); } +#line 1387 "arparse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 161 "arparse.y" /* yacc.c:1661 */ + { (yyval.name) = 0; } +#line 1393 "arparse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 166 "arparse.y" /* yacc.c:1661 */ + { (yyval.list) = (yyvsp[-1].list); } +#line 1399 "arparse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 168 "arparse.y" /* yacc.c:1661 */ + { (yyval.list) = 0; } +#line 1405 "arparse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 173 "arparse.y" /* yacc.c:1661 */ + { struct list *n = (struct list *) malloc(sizeof(struct list)); + n->next = (yyvsp[-2].list); + n->name = (yyvsp[0].name); + (yyval.list) = n; + } +#line 1415 "arparse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 178 "arparse.y" /* yacc.c:1661 */ + { (yyval.list) = 0; } +#line 1421 "arparse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 190 "arparse.y" /* yacc.c:1661 */ + { verbose = !verbose; } +#line 1427 "arparse.c" /* yacc.c:1661 */ + break; + + +#line 1431 "arparse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 194 "arparse.y" /* yacc.c:1906 */ + + +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..7d8f192bb56 --- /dev/null +++ b/binutils/arparse.h @@ -0,0 +1,110 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_ARPARSE_H_INCLUDED +# define YY_YY_ARPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 37 "arparse.y" /* yacc.c:1915 */ + + char *name; +struct list *list ; + + +#line 100 "arparse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_ARPARSE_H_INCLUDED */ diff --git a/binutils/configure b/binutils/configure index 51ad35625e6..baddf348d08 100755 --- a/binutils/configure +++ b/binutils/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for binutils 2.27.90. +# Generated by GNU Autoconf 2.64 for binutils 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='binutils' PACKAGE_TARNAME='binutils' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='binutils 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='binutils 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1338,7 +1338,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures binutils 2.27.90 to adapt to many kinds of systems. +\`configure' configures binutils 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1409,7 +1409,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of binutils 2.27.90:";; + short | recursive ) echo "Configuration of binutils 2.28:";; esac cat <<\_ACEOF @@ -1530,7 +1530,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -binutils configure 2.27.90 +binutils configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2172,7 +2172,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by binutils $as_me 2.27.90, which was +It was created by binutils $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3981,7 +3981,7 @@ fi # Define the identity of the package. PACKAGE='binutils' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -15223,7 +15223,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by binutils $as_me 2.27.90, which was +This file was extended by binutils $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15287,7 +15287,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -binutils config.status 2.27.90 +binutils config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/binutils/deflex.c b/binutils/deflex.c new file mode 100644 index 00000000000..64eb5bb0826 --- /dev/null +++ b/binutils/deflex.c @@ -0,0 +1,2063 @@ + +#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 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +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-2017 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 611 "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 793 "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 1101 "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" + + + diff --git a/binutils/defparse.c b/binutils/defparse.c new file mode 100644 index 00000000000..89f926aaa06 --- /dev/null +++ b/binutils/defparse.c @@ -0,0 +1,2071 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "defparse.y" /* yacc.c:339 */ + /* defparse.y - parser for .def files */ + +/* Copyright (C) 1995-2017 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" + +#line 93 "defparse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_DEFPARSE_H_INCLUDED +# define YY_YY_DEFPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 28 "defparse.y" /* yacc.c:355 */ + + char *id; + const char *id_const; + int number; + +#line 201 "defparse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_DEFPARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 216 "defparse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 139 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 286 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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 || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -96 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-96))) + +#define YYTABLE_NINF -36 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { def_name ((yyvsp[-1].id), (yyvsp[0].number)); } +#line 1375 "defparse.c" /* yacc.c:1661 */ + break; + + case 5: +#line 54 "defparse.y" /* yacc.c:1661 */ + { def_library ((yyvsp[-2].id), (yyvsp[-1].number)); } +#line 1381 "defparse.c" /* yacc.c:1661 */ + break; + + case 7: +#line 56 "defparse.y" /* yacc.c:1661 */ + { def_description ((yyvsp[0].id));} +#line 1387 "defparse.c" /* yacc.c:1661 */ + break; + + case 8: +#line 57 "defparse.y" /* yacc.c:1661 */ + { def_stacksize ((yyvsp[-1].number), (yyvsp[0].number));} +#line 1393 "defparse.c" /* yacc.c:1661 */ + break; + + case 9: +#line 58 "defparse.y" /* yacc.c:1661 */ + { def_heapsize ((yyvsp[-1].number), (yyvsp[0].number));} +#line 1399 "defparse.c" /* yacc.c:1661 */ + break; + + case 10: +#line 59 "defparse.y" /* yacc.c:1661 */ + { def_code ((yyvsp[0].number));} +#line 1405 "defparse.c" /* yacc.c:1661 */ + break; + + case 11: +#line 60 "defparse.y" /* yacc.c:1661 */ + { def_data ((yyvsp[0].number));} +#line 1411 "defparse.c" /* yacc.c:1661 */ + break; + + case 14: +#line 63 "defparse.y" /* yacc.c:1661 */ + { def_version ((yyvsp[0].number),0);} +#line 1417 "defparse.c" /* yacc.c:1661 */ + break; + + case 15: +#line 64 "defparse.y" /* yacc.c:1661 */ + { def_version ((yyvsp[-2].number),(yyvsp[0].number));} +#line 1423 "defparse.c" /* yacc.c:1661 */ + break; + + case 18: +#line 76 "defparse.y" /* yacc.c:1661 */ + { def_exports ((yyvsp[-7].id), (yyvsp[-6].id), (yyvsp[-5].number), (yyvsp[-4].number), (yyvsp[-3].number), (yyvsp[-2].number), (yyvsp[-1].number), (yyvsp[0].id));} +#line 1429 "defparse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 85 "defparse.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-7].id),(yyvsp[-5].id),(yyvsp[-3].id),(yyvsp[-1].id), 0, (yyvsp[0].id)); } +#line 1435 "defparse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 87 "defparse.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-7].id),(yyvsp[-5].id),(yyvsp[-3].id), 0,(yyvsp[-1].number), (yyvsp[0].id)); } +#line 1441 "defparse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 89 "defparse.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-5].id),(yyvsp[-3].id), 0,(yyvsp[-1].id), 0, (yyvsp[0].id)); } +#line 1447 "defparse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 91 "defparse.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-5].id),(yyvsp[-3].id), 0, 0,(yyvsp[-1].number), (yyvsp[0].id)); } +#line 1453 "defparse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 93 "defparse.y" /* yacc.c:1661 */ + { def_import ( 0,(yyvsp[-5].id),(yyvsp[-3].id),(yyvsp[-1].id), 0, (yyvsp[0].id)); } +#line 1459 "defparse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 95 "defparse.y" /* yacc.c:1661 */ + { def_import ( 0,(yyvsp[-5].id),(yyvsp[-3].id), 0,(yyvsp[-1].number), (yyvsp[0].id)); } +#line 1465 "defparse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 97 "defparse.y" /* yacc.c:1661 */ + { def_import ( 0,(yyvsp[-3].id), 0,(yyvsp[-1].id), 0, (yyvsp[0].id)); } +#line 1471 "defparse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 99 "defparse.y" /* yacc.c:1661 */ + { def_import ( 0,(yyvsp[-3].id), 0, 0,(yyvsp[-1].number), (yyvsp[0].id)); } +#line 1477 "defparse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 108 "defparse.y" /* yacc.c:1661 */ + { def_section ((yyvsp[-1].id),(yyvsp[0].number));} +#line 1483 "defparse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 120 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)=(yyvsp[0].number);} +#line 1489 "defparse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 121 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)=-1;} +#line 1495 "defparse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 125 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 1; } +#line 1501 "defparse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 126 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 2; } +#line 1507 "defparse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 127 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 4; } +#line 1513 "defparse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 128 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 8; } +#line 1519 "defparse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 129 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1525 "defparse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 130 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1531 "defparse.c" /* yacc.c:1661 */ + break; + + case 44: +#line 131 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1537 "defparse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 135 "defparse.y" /* yacc.c:1661 */ + {(yyval.number)=1;} +#line 1543 "defparse.c" /* yacc.c:1661 */ + break; + + case 46: +#line 136 "defparse.y" /* yacc.c:1661 */ + {(yyval.number)=0;} +#line 1549 "defparse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 140 "defparse.y" /* yacc.c:1661 */ + {(yyval.number)=1;} +#line 1555 "defparse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 141 "defparse.y" /* yacc.c:1661 */ + {(yyval.number)=0;} +#line 1561 "defparse.c" /* yacc.c:1661 */ + break; + + case 49: +#line 145 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 1; } +#line 1567 "defparse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 146 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1573 "defparse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 150 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 1; } +#line 1579 "defparse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 151 "defparse.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1585 "defparse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 154 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "NAME"; } +#line 1591 "defparse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 159 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "DESCRIPTION"; } +#line 1597 "defparse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 160 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "STACKSIZE"; } +#line 1603 "defparse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 161 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "HEAPSIZE"; } +#line 1609 "defparse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 162 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "CODE"; } +#line 1615 "defparse.c" /* yacc.c:1661 */ + break; + + case 58: +#line 163 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "DATA"; } +#line 1621 "defparse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 164 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "SECTIONS"; } +#line 1627 "defparse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 165 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "EXPORTS"; } +#line 1633 "defparse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 166 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "IMPORTS"; } +#line 1639 "defparse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 167 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "VERSION"; } +#line 1645 "defparse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 168 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "BASE"; } +#line 1651 "defparse.c" /* yacc.c:1661 */ + break; + + case 64: +#line 169 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "CONSTANT"; } +#line 1657 "defparse.c" /* yacc.c:1661 */ + break; + + case 65: +#line 170 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "NONAME"; } +#line 1663 "defparse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 171 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "PRIVATE"; } +#line 1669 "defparse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 172 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "READ"; } +#line 1675 "defparse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 173 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "WRITE"; } +#line 1681 "defparse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 174 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "EXECUTE"; } +#line 1687 "defparse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 175 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "SHARED"; } +#line 1693 "defparse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 176 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "NONSHARED"; } +#line 1699 "defparse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 177 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "SINGLE"; } +#line 1705 "defparse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 178 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "MULTIPLE"; } +#line 1711 "defparse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 179 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "INITINSTANCE"; } +#line 1717 "defparse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 180 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "INITGLOBAL"; } +#line 1723 "defparse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 181 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "TERMINSTANCE"; } +#line 1729 "defparse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 182 "defparse.y" /* yacc.c:1661 */ + { (yyval.id_const) = "TERMGLOBAL"; } +#line 1735 "defparse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 185 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1741 "defparse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 187 "defparse.y" /* yacc.c:1661 */ + { + char *name = xmalloc (strlen ((yyvsp[0].id_const)) + 2); + sprintf (name, ".%s", (yyvsp[0].id_const)); + (yyval.id) = name; + } +#line 1751 "defparse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 193 "defparse.y" /* yacc.c:1661 */ + { + char *name = xmalloc (strlen ((yyvsp[0].id)) + 2); + sprintf (name, ".%s", (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1761 "defparse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 199 "defparse.y" /* yacc.c:1661 */ + { + char *name = xmalloc (strlen ((yyvsp[-2].id_const)) + 1 + strlen ((yyvsp[0].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[-2].id_const), (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1771 "defparse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 205 "defparse.y" /* yacc.c:1661 */ + { + char *name = xmalloc (strlen ((yyvsp[-2].id)) + 1 + strlen ((yyvsp[0].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[-2].id), (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1781 "defparse.c" /* yacc.c:1661 */ + break; + + case 83: +#line 211 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) =(yyvsp[0].id); } +#line 1787 "defparse.c" /* yacc.c:1661 */ + break; + + case 84: +#line 212 "defparse.y" /* yacc.c:1661 */ + { (yyval.id)=""; } +#line 1793 "defparse.c" /* yacc.c:1661 */ + break; + + case 85: +#line 216 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)=(yyvsp[0].number);} +#line 1799 "defparse.c" /* yacc.c:1661 */ + break; + + case 86: +#line 217 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)=-1;} +#line 1805 "defparse.c" /* yacc.c:1661 */ + break; + + case 87: +#line 221 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1811 "defparse.c" /* yacc.c:1661 */ + break; + + case 88: +#line 222 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) = 0; } +#line 1817 "defparse.c" /* yacc.c:1661 */ + break; + + case 89: +#line 226 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1823 "defparse.c" /* yacc.c:1661 */ + break; + + case 90: +#line 227 "defparse.y" /* yacc.c:1661 */ + { (yyval.id) = 0; } +#line 1829 "defparse.c" /* yacc.c:1661 */ + break; + + case 91: +#line 230 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)= (yyvsp[0].number);} +#line 1835 "defparse.c" /* yacc.c:1661 */ + break; + + case 92: +#line 231 "defparse.y" /* yacc.c:1661 */ + { (yyval.number)=-1;} +#line 1841 "defparse.c" /* yacc.c:1661 */ + break; + + +#line 1845 "defparse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} diff --git a/binutils/defparse.h b/binutils/defparse.h new file mode 100644 index 00000000000..438f8440a30 --- /dev/null +++ b/binutils/defparse.h @@ -0,0 +1,132 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_DEFPARSE_H_INCLUDED +# define YY_YY_DEFPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 28 "defparse.y" /* yacc.c:1915 */ + + char *id; + const char *id_const; + int number; + +#line 122 "defparse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_DEFPARSE_H_INCLUDED */ diff --git a/binutils/doc/addr2line.1 b/binutils/doc/addr2line.1 new file mode 100644 index 00000000000..253bdd23faa --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..61b05c20e9c --- /dev/null +++ b/binutils/doc/ar.1 @@ -0,0 +1,470 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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. +.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\-2017 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..fcdf89d1abb --- /dev/null +++ b/binutils/doc/binutils.info @@ -0,0 +1,5253 @@ +This is binutils.info, produced by makeinfo version 4.8 from +binutils.texi. + + Copyright (C) 1991-2017 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.28: + + 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'] [`--with-symbol-versions'] [`--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. For ELF objects symbol sizes are read from + the ELF, for other object types the symbol sizes are 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. + +`--with-symbol-versions' + Enables the display of symbol version information if any exists. + The version string is displayed as a suffix to the symbol name, + preceeded by an @ character. For example `foo@VER_1'. If the + version is the default version to be used when resolving + unversioned references to the symbol then it is displayed as a + suffix preceeded by two @ characters. For example `foo@@VER_2'. + +`--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] + [`--remove-relocations='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] + [`--update-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] + [`--add-symbol' NAME=[SECTION:]VALUE[,FLAGS] + [`--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'] + [`--elf-stt-common=VAL'] + [`-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. + + If the first character of SECTIONPATTERN is the exclamation point + (!) then matching sections will not be copied, even if earlier use + of `--only-section' on the same command line would otherwise copy + it. For example: + + --only-section=.text.* --only-section=!.text.foo + + will copy all sectinos maching '.text.*' but not the section + '.text.foo'. + +`-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. + + If the first character of SECTIONPATTERN is the exclamation point + (!) then matching sections will not be removed even if an earlier + use of `--remove-section' on the same command line would otherwise + remove it. For example: + + --remove-section=.text.* --remove-section=!.text.foo + + will remove all sections matching the pattern '.text.*', but will + not remove the section '.text.foo'. + +`--remove-relocations=SECTIONPATTERN' + Remove relocations from the output file for any section matching + SECTIONPATTERN. 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. + For example: + + --remove-relocations=.text.* + + will remove the relocations for all sections matching the patter + '.text.*'. + + If the first character of SECTIONPATTERN is the exclamation point + (!) then matching sections will not have their relocation removed + even if an earlier use of `--remove-relocations' on the same + command line would otherwise cause the relocations to be removed. + For example: + + --remove-relocations=.text.* --remove-relocations=!.text.foo + + will remove all relocations for sections matching the pattern + '.text.*', but will not remove relocations for the section + '.text.foo'. + +`-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' + Convert a global or weak symbol called SYMBOLNAME into a local + symbol, so that it is not visible externally. This option may be + given more than once. Note - unique symbols are not converted. + +`-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. + +`--update-section SECTIONNAME=FILENAME' + Replace the existing contents of a section named SECTIONNAME with + the contents of file FILENAME. The size of the section will be + adjusted to the size of the file. The section flags for + SECTIONNAME will be unchanged. For ELF format files the section + to segment mapping will also remain unchanged, something which is + not possible using `--remove-section' followed by `--add-section'. + The option can be specified more than once. + + Note - it is possible to use `--rename-section' and + `--update-section' to both update and rename a section from one + command line. In this case, pass the original section name to + `--update-section', and the original and new section names to + `--rename-section'. + +`--add-symbol NAME=[SECTION:]VALUE[,FLAGS]' + Add a new symbol named NAME while copying the file. This option + may be specified multiple times. If the SECTION is given, the + symbol will be associated with and relative to that section, + otherwise it will be an ABS symbol. Specifying an undefined + section will result in a fatal error. There is no check for the + value, it will be taken as specified. Symbol flags can be + specified and not all flags will be meaningful for all object file + formats. By default, the symbol will be global. The special flag + 'before=OTHERSYM' will insert the new symbol in front of the + specified OTHERSYM, otherwise the symbol(s) will be added at the + end of the symbol table in the order they appear. + +`--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. Note: the file at + PATH-TO-FILE must exist. Part of the process of adding the + .gnu_debuglink section involves embedding a checksum of the + contents of the debug info file into the section. + + If the debug info file is built in one location but it is going to + be installed at a later time into a different location then do not + use the path to the installed location. The `--add-gnu-debuglink' + option will fail because the installed file does not exist yet. + Instead put the debug info file in the current directory and use + the `--add-gnu-debuglink' option without any directory components, + like this: + + objcopy --add-gnu-debuglink=foo.debug + + At debug time the debugger will attempt to look for the separate + debug info file in a set of known locations. The exact set of + these locations varies depending upon the distribution being used, + but it typically includes: + + `* The same directory as the executable.' + + `* A sub-directory of the directory containing the executable' + called .debug + + `* A global debug directory such as /usr/lib/debug.' + + As long as the debug info file has been installed into one of these + locations before the debugger is run everything should work + correctly. + +`--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. + + Note - the section headers of the stripped sections are preserved, + including their sizes, but the contents of the section are + discarded. The section headers are preserved so that other tools + can match up the debuginfo file with the real executable, even if + that executable has been relocated to a different address space. + + 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 with SHF_COMPRESSED from + the ELF ABI. Note - if compression would actually make a section + _larger_, then it is not compressed. + +`--compress-debug-sections=none' +`--compress-debug-sections=zlib' +`--compress-debug-sections=zlib-gnu' +`--compress-debug-sections=zlib-gabi' + For ELF files, these options control how DWARF debug sections are + compressed. `--compress-debug-sections=none' is equivalent to + `--decompress-debug-sections'. `--compress-debug-sections=zlib' + and `--compress-debug-sections=zlib-gabi' are equivalent to + `--compress-debug-sections'. `--compress-debug-sections=zlib-gnu' + compresses DWARF debug sections using zlib. The debug sections + are renamed to begin with `.zdebug' instead of `.debug'. Note - + if compression would actually make a section _larger_, then it is + not compressed nor renamed. + +`--decompress-debug-sections' + Decompress DWARF debug sections using zlib. The original section + names of the compressed sections are restored. + +`--elf-stt-common=yes' +`--elf-stt-common=no' + For ELF files, these options control whether common symbols should + be converted to the `STT_COMMON' or `STT_OBJECT' type. + `--elf-stt-common=yes' converts common symbol type to + `STT_COMMON'. `--elf-stt-common=no' converts common symbol type to + `STT_OBJECT'. + +`-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] + [`--dwarf-depth=N'] + [`--dwarf-start=N'] + [`--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. + + This option also has a subtle effect on the disassembly of + instructions in code sections. When option `-d' is in effect + objdump will assume that any symbols present in a code section + occur on the boundary between instructions and it will refuse to + disassemble across such a boundary. When option `-D' is in effect + however this assumption is supressed. This means that it is + possible for the output of `-d' and `-D' to differ if, for + example, data is stored in code sections. + + 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. + + Note, in some cases it is possible for a section to have both the + READONLY and the NOREAD attributes set. In such cases the NOREAD + attribute takes precedence, but `objdump' will report both since + the exact setting of the flag bits might be important. + +`-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. + + For ARC, `dsp' controls the printing of DSP instructions, `spfp' + selects the printing of FPX single precision FP instructions, + `dpfp' selects the printing of FPX double precision FP + instructions, `quarkse_em' selects the printing of special + QuarkSE-EM instructions, `fpuda' selects the printing of double + precision assist instructions, `fpus' selects the printing of FPU + single precision FP instructions, while `fpud' selects the + printing of FPU souble precision FP instructions. + + 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' + `i8086' + Select disassembly for the given architecture. + + `intel' + `att' + Select between intel syntax mode and AT&T syntax mode. + + `amd64' + `intel64' + Select between AMD64 ISA and Intel64 ISA. + + `intel-mnemonic' + `att-mnemonic' + Select between intel mnemonic mode and AT&T mnemonic mode. + Note: `intel-mnemonic' implies `intel' and `att-mnemonic' + implies `att'. + + `addr64' + `addr32' + `addr16' + `data32' + `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. + + `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' + + `ldinfo' + + Not all object formats support this option. In particular the ELF + format does not use it. + +`-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]' +`--dwarf[=aranges,=macro,=frames,=frames-interp,=str,=loc]' +`--dwarf[=Ranges,=pubtypes,=trace_info,=trace_abbrev]' +`--dwarf[=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. + + The output format is similar to that produced by the `--syms' + option, except that an extra field is inserted before the symbol's + name, giving the version information associated with the symbol. + If the version is the default version to be used when resolving + unversioned references to the symbol then it's displayed as is, + otherwise it's put into parentheses. + +`--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'] + [`-s'] [`--output-separator'SEP_STRING] + [`--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. + +`-s' +`--output-separator' + By default, output strings are delimited by a new-line. This option + allows you to supply any string to be used as the output record + separator. Useful with -include-all-whitespace where strings may + contain new-lines internally. + + +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] + [`--remove-relocations='SECTIONPATTERN] + [`-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, in + addition to whatever sections would otherwise be removed. 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. + + If the first character of SECTIONPATTERN is the exclamation point + (!) then matching sections will not be removed even if an earlier + use of `--remove-section' on the same command line would otherwise + remove it. For example: + + --remove-section=.text.* --remove-section=!.text.foo + + will remove all sections matching the pattern '.text.*', but will + not remove the section '.text.foo'. + +`--remove-relocations=SECTIONPATTERN' + Remove relocations from the output file for any section matching + SECTIONPATTERN. 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. + For example: + + --remove-relocations=.text.* + + will remove the relocations for all sections matching the patter + '.text.*'. + + If the first character of SECTIONPATTERN is the exclamation point + (!) then matching sections will not have their relocation removed + even if an earlier use of `--remove-relocations' on the same + command line would otherwise cause the relocations to be removed. + For example: + + --remove-relocations=.text.* --remove-relocations=!.text.foo + + will remove all relocations for sections matching the pattern + '.text.*', but will not remove relocations for the section + '.text.foo'. + +`-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, emptying the contents of any sections that would not + be stripped by `--strip-debug' and leaving the debugging sections + intact. In ELF files, this preserves all the note sections in the + output as well. + + Note - the section headers of the stripped sections are preserved, + including their sizes, but the contents of the section are + discarded. The section headers are preserved so that other tools + can match up the debuginfo file with the real executable, even if + that executable has been relocated to a different address space. + + 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 `@' suffixes should be omitted from the + names of stdcall functions that will be imported from the DLL. + This is useful when creating an import library for a DLL which + exports stdcall functions but without the usual `@' symbol + name suffix. + + This does not change the naming of symbols provided by the import + library to programs linked against it, but only the entries in the + import table (ie the .idata section). + +`-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='] + [`-z'|`--decompress'] + [`-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. If a symbol has version information associated with it + then this is displayed as well. The version string is displayed + as a suffix to the symbol name, preceeded by an @ character. For + example `foo@VER_1'. If the version is the default version to be + used when resolving unversioned references to the symbol then it is + displayed as a suffix preceeded by two @ characters. For example + `foo@@VER_2'. + +`--dyn-syms' + Displays the entries in dynamic symbol table section of the file, + if it has one. The output format is the same as the format used + by the `--syms' option. + +`-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. + +`-z' +`--decompress' + Requests that the section(s) being dumped by `x', `R' or `p' + options are decompressed before being displayed. If the + section(s) are not compressed then they are displayed as is. + +`-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, I386, IAMCU, 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 350) +* --enable-deterministic-archives <2>: ranlib. (line 44) +* --enable-deterministic-archives <3>: ar cmdline. (line 151) +* --enable-deterministic-archives <4>: strip. (line 151) +* --enable-deterministic-archives <5>: ar cmdline. (line 224) +* --enable-deterministic-archives: objcopy. (line 340) +* .stab: objdump. (line 496) +* Add prefix to absolute paths: objdump. (line 436) +* addr2line: addr2line. (line 6) +* address to file name and line number: addr2line. (line 6) +* all header information, object file: objdump. (line 621) +* ar: ar. (line 6) +* ar compatibility: ar. (line 60) +* architecture: objdump. (line 216) +* architectures available: objdump. (line 201) +* archive contents: ranlib. (line 6) +* Archive file symbol index information: readelf. (line 169) +* archive headers: objdump. (line 72) +* 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 385) +* changing section address: objcopy. (line 395) +* changing section LMA: objcopy. (line 404) +* changing section VMA: objcopy. (line 417) +* changing start address: objcopy. (line 380) +* collections of files: ar. (line 6) +* compatibility, ar: ar. (line 60) +* 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 496) +* 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 100) +* demangling in objdump: addr2line. (line 84) +* deterministic archives <1>: ranlib. (line 32) +* deterministic archives <2>: objcopy. (line 340) +* deterministic archives <3>: ar cmdline. (line 224) +* deterministic archives <4>: strip. (line 141) +* deterministic archives <5>: ar cmdline. (line 151) +* deterministic archives <6>: ranlib. (line 44) +* deterministic archives: objcopy. (line 350) +* disassembling object code: objdump. (line 122) +* disassembly architecture: objdump. (line 216) +* disassembly endianness: objdump. (line 151) +* disassembly, with source: objdump. (line 432) +* discarding symbols: strip. (line 6) +* DLL: dlltool. (line 6) +* dlltool: dlltool. (line 6) +* DWARF: objdump. (line 461) +* dynamic relocation entries, in object file: objdump. (line 420) +* dynamic symbol table entries, printing: objdump. (line 598) +* dynamic symbols: nm. (line 167) +* ELF dynamic section information: readelf. (line 121) +* ELF dynamic symbol table information: readelf. (line 95) +* ELF file header information: readelf. (line 58) +* ELF file information: readelf. (line 6) +* ELF notes: readelf. (line 105) +* ELF object file format: objdump. (line 496) +* ELF program header information: readelf. (line 64) +* ELF reloc information: readelf. (line 109) +* ELF section group information: readelf. (line 75) +* ELF section information: readelf. (line 80) +* ELF segment information: readelf. (line 64) +* ELF symbol table information: readelf. (line 85) +* ELF version sections information: readelf. (line 125) +* elfedit: elfedit. (line 6) +* endianness: objdump. (line 151) +* 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 621) +* input .def file: dlltool. (line 120) +* input file name: nm. (line 141) +* Instruction width: objdump. (line 453) +* libraries: ar. (line 25) +* listings strings: strings. (line 6) +* load plugin: nm. (line 252) +* machine instructions: objdump. (line 122) +* 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 94) +* object code format <2>: nm. (line 287) +* object code format <3>: addr2line. (line 79) +* object code format <4>: objdump. (line 86) +* object code format: size. (line 84) +* object file header: objdump. (line 157) +* object file information: objdump. (line 6) +* object file offsets: objdump. (line 162) +* object file sections: objdump. (line 427) +* object formats available: objdump. (line 201) +* 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 414) +* 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 78) +* section headers: objdump. (line 178) +* section information: objdump. (line 206) +* section sizes: size. (line 6) +* sections, full contents: objdump. (line 427) +* 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 171) +* source disassembly: objdump. (line 432) +* source file name: nm. (line 141) +* source filenames for object files: objdump. (line 210) +* stab: objdump. (line 496) +* start-address: objdump. (line 505) +* stop-address: objdump. (line 509) +* strings: strings. (line 6) +* strings, printing: strings. (line 6) +* strip: strip. (line 6) +* Strip absolute paths: objdump. (line 439) +* 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 514) +* 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 114) +* Update ELF header: elfedit. (line 6) +* updating an archive: ar cmdline. (line 215) +* version: Top. (line 6) +* VMA in objdump: objdump. (line 78) +* wide output, printing: objdump. (line 627) +* writing archive index: ar cmdline. (line 197) + + + +Tag Table: +Node: Top1896 +Node: ar3606 +Node: ar cmdline6744 +Node: ar scripts17086 +Node: nm22774 +Node: objcopy33217 +Node: objdump72145 +Node: ranlib96598 +Node: size98203 +Node: strings101207 +Node: strip105615 +Node: c++filt114737 +Ref: c++filt-Footnote-1119578 +Node: addr2line119684 +Node: nlmconv124255 +Node: windmc126860 +Node: windres130509 +Node: dlltool136870 +Node: def file format149977 +Node: readelf152516 +Node: elfedit160831 +Node: Common Options163103 +Node: Selecting the Target System164143 +Node: Target Selection165075 +Node: Architecture Selection167057 +Node: Reporting Bugs167885 +Node: Bug Criteria168664 +Node: Bug Reporting169217 +Node: GNU Free Documentation License176087 +Node: Binutils Index201266 + +End Tag Table diff --git a/binutils/doc/cxxfilt.man b/binutils/doc/cxxfilt.man new file mode 100644 index 00000000000..85b53dab9b9 --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..5fa789188e1 --- /dev/null +++ b/binutils/doc/dlltool.1 @@ -0,0 +1,542 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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 \fB@\fR suffixes should be omitted from the names +of stdcall functions that will be imported from the \s-1DLL. \s0 This is +useful when creating an import library for a \s-1DLL\s0 which exports stdcall +functions but without the usual \fB@\fR symbol name suffix. +.Sp +This does not change the naming of symbols provided by the import library +to programs linked against it, but only the entries in the import table +(ie the .idata section). +.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\-2017 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..dcf8a26413b --- /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 "2017-03-02" "binutils-2.28" "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, \fIi386\fR, \fI\s-1IAMCU\s0\fR, \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\-2017 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..1cc315288af --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..c89ac80ad65 --- /dev/null +++ b/binutils/doc/nm.1 @@ -0,0 +1,548 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-\-with\-symbol\-versions\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. For \s-1ELF\s0 objects symbol sizes are read from the +\&\s-1ELF,\s0 for other object types the symbol sizes are 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\-\-with\-symbol\-versions\fR" 4 +.IX Item "--with-symbol-versions" +Enables the display of symbol version information if any exists. The +version string is displayed as a suffix to the symbol name, preceeded by +an @ character. For example \fBfoo@VER_1\fR. If the version is +the default version to be used when resolving unversioned references +to the symbol then it is displayed as a suffix preceeded by two @ +characters. For example \fBfoo@@VER_2\fR. +.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\-2017 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..0b0199b8e1f --- /dev/null +++ b/binutils/doc/objcopy.1 @@ -0,0 +1,1196 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-\-remove\-relocations=\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\-\-update\-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\-\-add\-symbol\fR \fIname\fR=[\fIsection\fR:]\fIvalue\fR[,\fIflags\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\-\-elf\-stt\-common=\fR\fIval\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. +.Sp +If the first character of \fIsectionpattern\fR is the exclamation +point (!) then matching sections will not be copied, even if earlier +use of \fB\-\-only\-section\fR on the same command line would +otherwise copy it. For example: +.Sp +.Vb 1 +\& \-\-only\-section=.text.* \-\-only\-section=!.text.foo +.Ve +.Sp +will copy all sectinos maching '.text.*' but not the section +\&'.text.foo'. +.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. +.Sp +If the first character of \fIsectionpattern\fR is the exclamation +point (!) then matching sections will not be removed even if an +earlier use of \fB\-\-remove\-section\fR on the same command line +would otherwise remove it. For example: +.Sp +.Vb 1 +\& \-\-remove\-section=.text.* \-\-remove\-section=!.text.foo +.Ve +.Sp +will remove all sections matching the pattern '.text.*', but will not +remove the section '.text.foo'. +.IP "\fB\-\-remove\-relocations=\fR\fIsectionpattern\fR" 4 +.IX Item "--remove-relocations=sectionpattern" +Remove relocations from the output file for any section matching +\&\fIsectionpattern\fR. 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. +For example: +.Sp +.Vb 1 +\& \-\-remove\-relocations=.text.* +.Ve +.Sp +will remove the relocations for all sections matching the patter +\&'.text.*'. +.Sp +If the first character of \fIsectionpattern\fR is the exclamation +point (!) then matching sections will not have their relocation +removed even if an earlier use of \fB\-\-remove\-relocations\fR on the +same command line would otherwise cause the relocations to be removed. +For example: +.Sp +.Vb 1 +\& \-\-remove\-relocations=.text.* \-\-remove\-relocations=!.text.foo +.Ve +.Sp +will remove all relocations for sections matching the pattern +\&'.text.*', but will not remove relocations for the section +\&'.text.foo'. +.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 +Convert a global or weak symbol called \fIsymbolname\fR into a local +symbol, so that it is not visible externally. This option may be +given more than once. Note \- unique symbols are not converted. +.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\-\-update\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 +.IX Item "--update-section sectionname=filename" +Replace the existing contents of a section named \fIsectionname\fR +with the contents of file \fIfilename\fR. The size of the section +will be adjusted to the size of the file. The section flags for +\&\fIsectionname\fR will be unchanged. For \s-1ELF\s0 format files the section +to segment mapping will also remain unchanged, something which is not +possible using \fB\-\-remove\-section\fR followed by +\&\fB\-\-add\-section\fR. The option can be specified more than once. +.Sp +Note \- it is possible to use \fB\-\-rename\-section\fR and +\&\fB\-\-update\-section\fR to both update and rename a section from one +command line. In this case, pass the original section name to +\&\fB\-\-update\-section\fR, and the original and new section names to +\&\fB\-\-rename\-section\fR. +.IP "\fB\-\-add\-symbol\fR \fIname\fR\fB=[\fR\fIsection\fR\fB:]\fR\fIvalue\fR\fB[,\fR\fIflags\fR\fB]\fR" 4 +.IX Item "--add-symbol name=[section:]value[,flags]" +Add a new symbol named \fIname\fR while copying the file. This option may be +specified multiple times. If the \fIsection\fR is given, the symbol will be +associated with and relative to that section, otherwise it will be an \s-1ABS\s0 +symbol. Specifying an undefined section will result in a fatal error. There +is no check for the value, it will be taken as specified. Symbol flags can +be specified and not all flags will be meaningful for all object file +formats. By default, the symbol will be global. The special flag +\&'before=\fIothersym\fR' will insert the new symbol in front of the specified +\&\fIothersym\fR, otherwise the symbol(s) will be added at the end of the +symbol table in the order they appear. +.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. Note: the file at +\&\fIpath-to-file\fR must exist. Part of the process of adding the +\&.gnu_debuglink section involves embedding a checksum of the contents +of the debug info file into the section. +.Sp +If the debug info file is built in one location but it is going to be +installed at a later time into a different location then do not use +the path to the installed location. The \fB\-\-add\-gnu\-debuglink\fR +option will fail because the installed file does not exist yet. +Instead put the debug info file in the current directory and use the +\&\fB\-\-add\-gnu\-debuglink\fR option without any directory components, +like this: +.Sp +.Vb 1 +\& objcopy \-\-add\-gnu\-debuglink=foo.debug +.Ve +.Sp +At debug time the debugger will attempt to look for the separate debug +info file in a set of known locations. The exact set of these +locations varies depending upon the distribution being used, but it +typically includes: +.RS 4 +.ie n .IP """* The same directory as the executable.""" 4 +.el .IP "\f(CW* The same directory as the executable.\fR" 4 +.IX Item "* The same directory as the executable." +.PD 0 +.ie n .IP """* A sub\-directory of the directory containing the executable""" 4 +.el .IP "\f(CW* A sub\-directory of the directory containing the executable\fR" 4 +.IX Item "* A sub-directory of the directory containing the executable" +.PD +called .debug +.ie n .IP """* A global debug directory such as /usr/lib/debug.""" 4 +.el .IP "\f(CW* A global debug directory such as /usr/lib/debug.\fR" 4 +.IX Item "* A global debug directory such as /usr/lib/debug." +.RE +.RS 4 +.Sp +As long as the debug info file has been installed into one of these +locations before the debugger is run everything should work +correctly. +.RE +.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 +Note \- the section headers of the stripped sections are preserved, +including their sizes, but the contents of the section are discarded. +The section headers are preserved so that other tools can match up the +debuginfo file with the real executable, even if that executable has +been relocated to a different address space. +.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 with \s-1SHF_COMPRESSED\s0 from the +\&\s-1ELF ABI. \s0 Note \- if compression would actually make a section +\&\fIlarger\fR, then it is not compressed. +.IP "\fB\-\-compress\-debug\-sections=none\fR" 4 +.IX Item "--compress-debug-sections=none" +.PD 0 +.IP "\fB\-\-compress\-debug\-sections=zlib\fR" 4 +.IX Item "--compress-debug-sections=zlib" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gnu\fR" 4 +.IX Item "--compress-debug-sections=zlib-gnu" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gabi\fR" 4 +.IX Item "--compress-debug-sections=zlib-gabi" +.PD +For \s-1ELF\s0 files, these options control how \s-1DWARF\s0 debug sections are +compressed. \fB\-\-compress\-debug\-sections=none\fR is equivalent +to \fB\-\-decompress\-debug\-sections\fR. +\&\fB\-\-compress\-debug\-sections=zlib\fR and +\&\fB\-\-compress\-debug\-sections=zlib\-gabi\fR are equivalent to +\&\fB\-\-compress\-debug\-sections\fR. +\&\fB\-\-compress\-debug\-sections=zlib\-gnu\fR compresses \s-1DWARF\s0 debug +sections using zlib. The debug sections are renamed to begin with +\&\fB.zdebug\fR instead of \fB.debug\fR. Note \- if compression would +actually make a section \fIlarger\fR, then it is not compressed nor +renamed. +.IP "\fB\-\-decompress\-debug\-sections\fR" 4 +.IX Item "--decompress-debug-sections" +Decompress \s-1DWARF\s0 debug sections using zlib. The original section +names of the compressed sections are restored. +.IP "\fB\-\-elf\-stt\-common=yes\fR" 4 +.IX Item "--elf-stt-common=yes" +.PD 0 +.IP "\fB\-\-elf\-stt\-common=no\fR" 4 +.IX Item "--elf-stt-common=no" +.PD +For \s-1ELF\s0 files, these options control whether common symbols should be +converted to the \f(CW\*(C`STT_COMMON\*(C'\fR or \f(CW\*(C`STT_OBJECT\*(C'\fR type. +\&\fB\-\-elf\-stt\-common=yes\fR converts common symbol type to +\&\f(CW\*(C`STT_COMMON\*(C'\fR. \fB\-\-elf\-stt\-common=no\fR converts common symbol +type to \f(CW\*(C`STT_OBJECT\*(C'\fR. +.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\-2017 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..1c66a055cf9 --- /dev/null +++ b/binutils/doc/objdump.1 @@ -0,0 +1,997 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-\-dwarf\-depth=\fR\fIn\fR] + [\fB\-\-dwarf\-start=\fR\fIn\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 +This option also has a subtle effect on the disassembly of +instructions in code sections. When option \fB\-d\fR is in effect +objdump will assume that any symbols present in a code section occur +on the boundary between instructions and it will refuse to disassemble +across such a boundary. When option \fB\-D\fR is in effect however +this assumption is supressed. This means that it is possible for the +output of \fB\-d\fR and \fB\-D\fR to differ if, for example, data +is stored in code sections. +.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. +.Sp +Note, in some cases it is possible for a section to have both the +\&\s-1READONLY\s0 and the \s-1NOREAD\s0 attributes set. In such cases the \s-1NOREAD\s0 +attribute takes precedence, but \fBobjdump\fR will report both +since the exact setting of the flag bits might be important. +.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 +For \s-1ARC, \s0\fBdsp\fR controls the printing of \s-1DSP\s0 instructions, +\&\fBspfp\fR selects the printing of \s-1FPX\s0 single precision \s-1FP\s0 +instructions, \fBdpfp\fR selects the printing of \s-1FPX\s0 double +precision \s-1FP\s0 instructions, \fBquarkse_em\fR selects the printing of +special QuarkSE-EM instructions, \fBfpuda\fR selects the printing +of double precision assist instructions, \fBfpus\fR selects the +printing of \s-1FPU\s0 single precision \s-1FP\s0 instructions, while \fBfpud\fR +selects the printing of \s-1FPU\s0 souble precision \s-1FP\s0 instructions. +.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. +.RS 4 +.ie n .IP """x86\-64""" 4 +.el .IP "\f(CWx86\-64\fR" 4 +.IX Item "x86-64" +.PD 0 +.ie n .IP """i386""" 4 +.el .IP "\f(CWi386\fR" 4 +.IX Item "i386" +.ie n .IP """i8086""" 4 +.el .IP "\f(CWi8086\fR" 4 +.IX Item "i8086" +.PD +Select disassembly for the given architecture. +.ie n .IP """intel""" 4 +.el .IP "\f(CWintel\fR" 4 +.IX Item "intel" +.PD 0 +.ie n .IP """att""" 4 +.el .IP "\f(CWatt\fR" 4 +.IX Item "att" +.PD +Select between intel syntax mode and \s-1AT&T\s0 syntax mode. +.ie n .IP """amd64""" 4 +.el .IP "\f(CWamd64\fR" 4 +.IX Item "amd64" +.PD 0 +.ie n .IP """intel64""" 4 +.el .IP "\f(CWintel64\fR" 4 +.IX Item "intel64" +.PD +Select between \s-1AMD64 ISA\s0 and Intel64 \s-1ISA.\s0 +.ie n .IP """intel\-mnemonic""" 4 +.el .IP "\f(CWintel\-mnemonic\fR" 4 +.IX Item "intel-mnemonic" +.PD 0 +.ie n .IP """att\-mnemonic""" 4 +.el .IP "\f(CWatt\-mnemonic\fR" 4 +.IX Item "att-mnemonic" +.PD +Select between intel mnemonic mode and \s-1AT&T\s0 mnemonic mode. +Note: \f(CW\*(C`intel\-mnemonic\*(C'\fR implies \f(CW\*(C`intel\*(C'\fR and +\&\f(CW\*(C`att\-mnemonic\*(C'\fR implies \f(CW\*(C`att\*(C'\fR. +.ie n .IP """addr64""" 4 +.el .IP "\f(CWaddr64\fR" 4 +.IX Item "addr64" +.PD 0 +.ie n .IP """addr32""" 4 +.el .IP "\f(CWaddr32\fR" 4 +.IX Item "addr32" +.ie n .IP """addr16""" 4 +.el .IP "\f(CWaddr16\fR" 4 +.IX Item "addr16" +.ie n .IP """data32""" 4 +.el .IP "\f(CWdata32\fR" 4 +.IX Item "data32" +.ie n .IP """data16""" 4 +.el .IP "\f(CWdata16\fR" 4 +.IX Item "data16" +.PD +Specify the default address size and operand size. These four options +will be overridden if \f(CW\*(C`x86\-64\*(C'\fR, \f(CW\*(C`i386\*(C'\fR or \f(CW\*(C`i8086\*(C'\fR +appear later in the option string. +.ie n .IP """suffix""" 4 +.el .IP "\f(CWsuffix\fR" 4 +.IX Item "suffix" +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. +.RE +.RS 4 +.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: +.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: +.RS 4 +.ie n .IP """header""" 4 +.el .IP "\f(CWheader\fR" 4 +.IX Item "header" +.PD 0 +.ie n .IP """aout""" 4 +.el .IP "\f(CWaout\fR" 4 +.IX Item "aout" +.ie n .IP """sections""" 4 +.el .IP "\f(CWsections\fR" 4 +.IX Item "sections" +.ie n .IP """syms""" 4 +.el .IP "\f(CWsyms\fR" 4 +.IX Item "syms" +.ie n .IP """relocs""" 4 +.el .IP "\f(CWrelocs\fR" 4 +.IX Item "relocs" +.ie n .IP """lineno,""" 4 +.el .IP "\f(CWlineno,\fR" 4 +.IX Item "lineno," +.ie n .IP """loader""" 4 +.el .IP "\f(CWloader\fR" 4 +.IX Item "loader" +.ie n .IP """except""" 4 +.el .IP "\f(CWexcept\fR" 4 +.IX Item "except" +.ie n .IP """typchk""" 4 +.el .IP "\f(CWtypchk\fR" 4 +.IX Item "typchk" +.ie n .IP """traceback""" 4 +.el .IP "\f(CWtraceback\fR" 4 +.IX Item "traceback" +.ie n .IP """toc""" 4 +.el .IP "\f(CWtoc\fR" 4 +.IX Item "toc" +.ie n .IP """ldinfo""" 4 +.el .IP "\f(CWldinfo\fR" 4 +.IX Item "ldinfo" +.RE +.RS 4 +.PD +.Sp +Not all object formats support this option. In particular the \s-1ELF\s0 +format does not use it. +.RE +.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]\fR" 4 +.IX Item "--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames]" +.IP "\fB\-\-dwarf[=aranges,=macro,=frames,=frames\-interp,=str,=loc]\fR" 4 +.IX Item "--dwarf[=aranges,=macro,=frames,=frames-interp,=str,=loc]" +.IP "\fB\-\-dwarf[=Ranges,=pubtypes,=trace_info,=trace_abbrev]\fR" 4 +.IX Item "--dwarf[=Ranges,=pubtypes,=trace_info,=trace_abbrev]" +.IP "\fB\-\-dwarf[=trace_aranges,=gdb_index]\fR" 4 +.IX Item "--dwarf[=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. +.Sp +The output format is similar to that produced by the \fB\-\-syms\fR +option, except that an extra field is inserted before the symbol's +name, giving the version information associated with the symbol. +If the version is the default version to be used when resolving +unversioned references to the symbol then it's displayed as is, +otherwise it's put into parentheses. +.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\-2017 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..cb224aded7e --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..5bae76ca814 --- /dev/null +++ b/binutils/doc/readelf.1 @@ -0,0 +1,475 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-z\fR|\fB\-\-decompress\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. +If a symbol has version information associated with it then this is +displayed as well. The version string is displayed as a suffix to the +symbol name, preceeded by an @ character. For example +\&\fBfoo@VER_1\fR. If the version is the default version to be used +when resolving unversioned references to the symbol then it is +displayed as a suffix preceeded by two @ characters. For example +\&\fBfoo@@VER_2\fR. +.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. The output format is the same as the format used by the +\&\fB\-\-syms\fR option. +.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\-z\fR" 4 +.IX Item "-z" +.PD 0 +.IP "\fB\-\-decompress\fR" 4 +.IX Item "--decompress" +.PD +Requests that the section(s) being dumped by \fBx\fR, \fBR\fR or +\&\fBp\fR options are decompressed before being displayed. If the +section(s) are not compressed then they are displayed as is. +.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\-2017 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..efeee78626f --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..c47b23b5e17 --- /dev/null +++ b/binutils/doc/strings.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 "STRINGS 1" +.TH STRINGS 1 "2017-03-02" "binutils-2.28" "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\-s\fR] [\fB\-\-output\-separator\fR\fIsep_string\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\-s\fR" 4 +.IX Item "-s" +.PD 0 +.IP "\fB\-\-output\-separator\fR" 4 +.IX Item "--output-separator" +.PD +By default, output strings are delimited by a new-line. This option +allows you to supply any string to be used as the output record +separator. Useful with \-\-include\-all\-whitespace where strings +may contain new-lines internally. +.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\-2017 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..4d530058502 --- /dev/null +++ b/binutils/doc/strip.1 @@ -0,0 +1,485 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-\-remove\-relocations=\fR\fIsectionpattern\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, in +addition to whatever sections would otherwise be removed. 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. +.Sp +If the first character of \fIsectionpattern\fR is the exclamation +point (!) then matching sections will not be removed even if an +earlier use of \fB\-\-remove\-section\fR on the same command line +would otherwise remove it. For example: +.Sp +.Vb 1 +\& \-\-remove\-section=.text.* \-\-remove\-section=!.text.foo +.Ve +.Sp +will remove all sections matching the pattern '.text.*', but will not +remove the section '.text.foo'. +.IP "\fB\-\-remove\-relocations=\fR\fIsectionpattern\fR" 4 +.IX Item "--remove-relocations=sectionpattern" +Remove relocations from the output file for any section matching +\&\fIsectionpattern\fR. 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. +For example: +.Sp +.Vb 1 +\& \-\-remove\-relocations=.text.* +.Ve +.Sp +will remove the relocations for all sections matching the patter +\&'.text.*'. +.Sp +If the first character of \fIsectionpattern\fR is the exclamation +point (!) then matching sections will not have their relocation +removed even if an earlier use of \fB\-\-remove\-relocations\fR on the +same command line would otherwise cause the relocations to be removed. +For example: +.Sp +.Vb 1 +\& \-\-remove\-relocations=.text.* \-\-remove\-relocations=!.text.foo +.Ve +.Sp +will remove all relocations for sections matching the pattern +\&'.text.*', but will not remove relocations for the section +\&'.text.foo'. +.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, emptying the 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 the note sections in the +output as well. +.Sp +Note \- the section headers of the stripped sections are preserved, +including their sizes, but the contents of the section are discarded. +The section headers are preserved so that other tools can match up the +debuginfo file with the real executable, even if that executable has +been relocated to a different address space. +.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\-2017 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..86fdc07600b --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..8a97011033b --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..e6d66c489b6 --- /dev/null +++ b/binutils/mcparse.c @@ -0,0 +1,2074 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "mcparse.y" /* yacc.c:339 */ + /* mcparse.y -- parser for Windows mc files + Copyright (C) 2007-2017 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; + + +#line 108 "mcparse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_MCPARSE_H_INCLUDED +# define YY_YY_MCPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 44 "mcparse.y" /* yacc.c:355 */ + + rc_uint_type ival; + unichar *ustr; + const mc_keyword *tok; + mc_node *nod; + +#line 195 "mcparse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_MCPARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 210 "mcparse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 125 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 275 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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 || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -34 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-34))) + +#define YYTABLE_NINF -83 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { + cur_node = mc_add_node (); + cur_node->user_text = (yyvsp[0].ustr); + } +#line 1358 "mcparse.c" /* yacc.c:1661 */ + break; + + case 8: +#line 80 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("syntax error"); } +#line 1364 "mcparse.c" /* yacc.c:1661 */ + break; + + case 10: +#line 85 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ')' in SeverityNames"); } +#line 1370 "mcparse.c" /* yacc.c:1661 */ + break; + + case 11: +#line 86 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '(' in SeverityNames"); } +#line 1376 "mcparse.c" /* yacc.c:1661 */ + break; + + case 12: +#line 87 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '=' for SeverityNames"); } +#line 1382 "mcparse.c" /* yacc.c:1661 */ + break; + + case 14: +#line 89 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ')' in LanguageNames"); } +#line 1388 "mcparse.c" /* yacc.c:1661 */ + break; + + case 15: +#line 90 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '(' in LanguageNames"); } +#line 1394 "mcparse.c" /* yacc.c:1661 */ + break; + + case 16: +#line 91 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '=' for LanguageNames"); } +#line 1400 "mcparse.c" /* yacc.c:1661 */ + break; + + case 18: +#line 93 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ')' in FacilityNames"); } +#line 1406 "mcparse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 94 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '(' in FacilityNames"); } +#line 1412 "mcparse.c" /* yacc.c:1661 */ + break; + + case 20: +#line 95 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '=' for FacilityNames"); } +#line 1418 "mcparse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 97 "mcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[0].ival) != 10 && (yyvsp[0].ival) != 16) + mc_fatal ("OutputBase allows 10 or 16 as value"); + mcset_out_values_are_decimal = ((yyvsp[0].ival) == 10 ? 1 : 0); + } +#line 1428 "mcparse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 103 "mcparse.y" /* yacc.c:1661 */ + { + mcset_msg_id_typedef = (yyvsp[0].ustr); + } +#line 1436 "mcparse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 107 "mcparse.y" /* yacc.c:1661 */ + { + mc_fatal ("MessageIdTypedef expects an identifier"); + } +#line 1444 "mcparse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 111 "mcparse.y" /* yacc.c:1661 */ + { + mc_fatal ("missing '=' for MessageIdTypedef"); + } +#line 1452 "mcparse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 119 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("severity ident missing"); } +#line 1458 "mcparse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 124 "mcparse.y" /* yacc.c:1661 */ + { + mc_add_keyword ((yyvsp[-3].ustr), MCTOKEN, "severity", (yyvsp[-1].ival), (yyvsp[0].ustr)); + } +#line 1466 "mcparse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 127 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("severity number missing"); } +#line 1472 "mcparse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 128 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("severity missing '='"); } +#line 1478 "mcparse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 134 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ident in FacilityNames"); } +#line 1484 "mcparse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 139 "mcparse.y" /* yacc.c:1661 */ + { + mc_add_keyword ((yyvsp[-3].ustr), MCTOKEN, "facility", (yyvsp[-1].ival), (yyvsp[0].ustr)); + } +#line 1492 "mcparse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 142 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("facility number missing"); } +#line 1498 "mcparse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 143 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("facility missing '='"); } +#line 1504 "mcparse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 149 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ident in LanguageNames"); } +#line 1510 "mcparse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 154 "mcparse.y" /* yacc.c:1661 */ + { + mc_add_keyword ((yyvsp[-5].ustr), MCTOKEN, "language", (yyvsp[-3].ival), (yyvsp[0].ustr)); + } +#line 1518 "mcparse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 157 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing filename in LanguageNames"); } +#line 1524 "mcparse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 158 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing ':' in LanguageNames"); } +#line 1530 "mcparse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 159 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing language code in LanguageNames"); } +#line 1536 "mcparse.c" /* yacc.c:1661 */ + break; + + case 44: +#line 160 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '=' for LanguageNames"); } +#line 1542 "mcparse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 165 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ustr) = NULL; + } +#line 1550 "mcparse.c" /* yacc.c:1661 */ + break; + + case 46: +#line 169 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ustr) = (yyvsp[0].ustr); + } +#line 1558 "mcparse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 172 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("illegal token in identifier"); (yyval.ustr) = NULL; } +#line 1564 "mcparse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 177 "mcparse.y" /* yacc.c:1661 */ + { + 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].ival) & 0xffffUL); + cur_node->vid = ((yyvsp[-1].ival) & 0xffffUL) | mc_sefa_val; + mc_last_id = (yyvsp[-1].ival); + } +#line 1578 "mcparse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 189 "mcparse.y" /* yacc.c:1661 */ + { (yyval.ival) = (yyvsp[0].ival); } +#line 1584 "mcparse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 190 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing number in MessageId"); (yyval.ival) = 0; } +#line 1590 "mcparse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 191 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing '=' for MessageId"); (yyval.ival) = 0; } +#line 1596 "mcparse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 195 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ival) = ++mc_last_id; + } +#line 1604 "mcparse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 199 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ival) = (yyvsp[0].ival); + } +#line 1612 "mcparse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 203 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ival) = mc_last_id + (yyvsp[0].ival); + } +#line 1620 "mcparse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 206 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing number after MessageId '+'"); } +#line 1626 "mcparse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 211 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ival) = 0; + mc_sefa_val = (mcset_custom_bit ? 1 : 0) << 29; + mc_last_symbol = NULL; + mc_cur_severity = NULL; + mc_cur_facility = NULL; + } +#line 1638 "mcparse.c" /* yacc.c:1661 */ + break; + + case 58: +#line 219 "mcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].ival) & 1) + mc_warn (_("duplicate definition of Severity")); + (yyval.ival) = (yyvsp[-1].ival) | 1; + } +#line 1648 "mcparse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 225 "mcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].ival) & 2) + mc_warn (_("duplicate definition of Facility")); + (yyval.ival) = (yyvsp[-1].ival) | 2; + } +#line 1658 "mcparse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 231 "mcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].ival) & 4) + mc_warn (_("duplicate definition of SymbolicName")); + (yyval.ival) = (yyvsp[-1].ival) | 4; + } +#line 1668 "mcparse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 239 "mcparse.y" /* yacc.c:1661 */ + { + mc_sefa_val &= ~ (0x3UL << 30); + mc_sefa_val |= (((yyvsp[0].tok)->nval & 0x3UL) << 30); + mc_cur_severity = (yyvsp[0].tok); + } +#line 1678 "mcparse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 247 "mcparse.y" /* yacc.c:1661 */ + { + mc_sefa_val &= ~ (0xfffUL << 16); + mc_sefa_val |= (((yyvsp[0].tok)->nval & 0xfffUL) << 16); + mc_cur_facility = (yyvsp[0].tok); + } +#line 1688 "mcparse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 255 "mcparse.y" /* yacc.c:1661 */ + { + mc_last_symbol = (yyvsp[0].ustr); + } +#line 1696 "mcparse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 267 "mcparse.y" /* yacc.c:1661 */ + { + mc_node_lang *h; + h = mc_add_node_lang (cur_node, (yyvsp[-3].tok), cur_node->vid); + h->message = (yyvsp[-1].ustr); + if (mcset_max_message_length != 0 && unichar_len (h->message) > mcset_max_message_length) + mc_warn ("message length to long"); + } +#line 1708 "mcparse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 277 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.ustr) = (yyvsp[0].ustr); + } +#line 1716 "mcparse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 281 "mcparse.y" /* yacc.c:1661 */ + { + unichar *h; + rc_uint_type l1,l2; + l1 = unichar_len ((yyvsp[-1].ustr)); + l2 = unichar_len ((yyvsp[0].ustr)); + h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1) memcpy (h, (yyvsp[-1].ustr), l1 * sizeof (unichar)); + if (l2) memcpy (&h[l1], (yyvsp[0].ustr), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.ustr) = h; + } +#line 1732 "mcparse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 292 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing end of message text"); (yyval.ustr) = NULL; } +#line 1738 "mcparse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 293 "mcparse.y" /* yacc.c:1661 */ + { mc_fatal ("missing end of message text"); (yyval.ustr) = (yyvsp[-1].ustr); } +#line 1744 "mcparse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 296 "mcparse.y" /* yacc.c:1661 */ + { (yyval.ustr) = (yyvsp[0].ustr); } +#line 1750 "mcparse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 298 "mcparse.y" /* yacc.c:1661 */ + { + unichar *h; + rc_uint_type l1,l2; + l1 = unichar_len ((yyvsp[-1].ustr)); + l2 = unichar_len ((yyvsp[0].ustr)); + h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1) memcpy (h, (yyvsp[-1].ustr), l1 * sizeof (unichar)); + if (l2) memcpy (&h[l1], (yyvsp[0].ustr), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.ustr) = h; + } +#line 1766 "mcparse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 312 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.tok) = (yyvsp[-1].tok); + } +#line 1774 "mcparse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 316 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.tok) = NULL; + mc_fatal (_("undeclared language identifier")); + } +#line 1783 "mcparse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 321 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.tok) = NULL; + mc_fatal ("missing newline after Language"); + } +#line 1792 "mcparse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 326 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.tok) = NULL; + mc_fatal ("missing ident for Language"); + } +#line 1801 "mcparse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 331 "mcparse.y" /* yacc.c:1661 */ + { + (yyval.tok) = NULL; + mc_fatal ("missing '=' for Language"); + } +#line 1810 "mcparse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 337 "mcparse.y" /* yacc.c:1661 */ + { (yyval.ustr) = (yyvsp[0].ustr); } +#line 1816 "mcparse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 338 "mcparse.y" /* yacc.c:1661 */ + { (yyval.ustr) = (yyvsp[0].tok)->usz; } +#line 1822 "mcparse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 342 "mcparse.y" /* yacc.c:1661 */ + { mclex_want_nl = 1; } +#line 1828 "mcparse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 346 "mcparse.y" /* yacc.c:1661 */ + { mclex_want_line = 1; } +#line 1834 "mcparse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 350 "mcparse.y" /* yacc.c:1661 */ + { mclex_want_filename = 1; } +#line 1840 "mcparse.c" /* yacc.c:1661 */ + break; + + +#line 1844 "mcparse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 353 "mcparse.y" /* yacc.c:1906 */ + + +/* Something else. */ diff --git a/binutils/mcparse.h b/binutils/mcparse.h new file mode 100644 index 00000000000..6739f4f1d98 --- /dev/null +++ b/binutils/mcparse.h @@ -0,0 +1,111 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_MCPARSE_H_INCLUDED +# define YY_YY_MCPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 44 "mcparse.y" /* yacc.c:1915 */ + + rc_uint_type ival; + unichar *ustr; + const mc_keyword *tok; + mc_node *nod; + +#line 101 "mcparse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_MCPARSE_H_INCLUDED */ diff --git a/binutils/nlmheader.c b/binutils/nlmheader.c new file mode 100644 index 00000000000..7ff05b9f5e9 --- /dev/null +++ b/binutils/nlmheader.c @@ -0,0 +1,2617 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "nlmheader.y" /* yacc.c:339 */ +/* nlmheader.y - parse NLM header specification keywords. + Copyright (C) 1993-2017 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 *); + + +#line 176 "nlmheader.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_NLMHEADER_H_INCLUDED +# define YY_YY_NLMHEADER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 112 "nlmheader.y" /* yacc.c:355 */ + + char *string; + struct string_list *list; + +#line 295 "nlmheader.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_NLMHEADER_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 310 "nlmheader.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 82 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 292 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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 || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -20 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-20))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -20, -20, 34, -20, -20, -20, 24, -20, -19, -16, + 15 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 34, 35, 36, 44, 49, 69, 70, 71, 72, + 51 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { + check_procedure = (yyvsp[0].string); + } +#line 1427 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 6: +#line 161 "nlmheader.y" /* yacc.c:1661 */ + { + nlmheader_warn (_("CODESTART is not implemented; sorry"), -1); + free ((yyvsp[0].string)); + } +#line 1436 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 7: +#line 166 "nlmheader.y" /* yacc.c:1661 */ + { + int len; + + strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10); + len = strlen ((yyvsp[0].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[0].string), len); + copyright_hdr->copyrightMessage[len] = '\0'; + free ((yyvsp[0].string)); + } +#line 1457 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 8: +#line 183 "nlmheader.y" /* yacc.c:1661 */ + { + custom_file = (yyvsp[0].string); + } +#line 1465 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 9: +#line 187 "nlmheader.y" /* yacc.c:1661 */ + { + /* 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].string)); + version_hdr->day = nlmlex_get_number ((yyvsp[-1].string)); + version_hdr->year = nlmlex_get_number ((yyvsp[0].string)); + free ((yyvsp[-2].string)); + free ((yyvsp[-1].string)); + free ((yyvsp[0].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); + } +#line 1487 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 10: +#line 205 "nlmheader.y" /* yacc.c:1661 */ + { + debug_info = TRUE; + } +#line 1495 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 11: +#line 209 "nlmheader.y" /* yacc.c:1661 */ + { + int len; + + len = strlen ((yyvsp[0].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[0].string), len); + var_hdr->descriptionText[len] = '\0'; + free ((yyvsp[0].string)); + } +#line 1515 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 12: +#line 225 "nlmheader.y" /* yacc.c:1661 */ + { + exit_procedure = (yyvsp[0].string); + } +#line 1523 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 13: +#line 229 "nlmheader.y" /* yacc.c:1661 */ + { + symbol_prefix = NULL; + } +#line 1531 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 14: +#line 233 "nlmheader.y" /* yacc.c:1661 */ + { + export_symbols = string_list_append (export_symbols, (yyvsp[0].list)); + } +#line 1539 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 15: +#line 237 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= nlmlex_get_number ((yyvsp[0].string)); + free ((yyvsp[0].string)); + } +#line 1548 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 16: +#line 242 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags &=~ nlmlex_get_number ((yyvsp[0].string)); + free ((yyvsp[0].string)); + } +#line 1557 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 17: +#line 247 "nlmheader.y" /* yacc.c:1661 */ + { + map_file = ""; + full_map = TRUE; + } +#line 1566 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 18: +#line 252 "nlmheader.y" /* yacc.c:1661 */ + { + map_file = (yyvsp[0].string); + full_map = TRUE; + } +#line 1575 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 19: +#line 257 "nlmheader.y" /* yacc.c:1661 */ + { + help_file = (yyvsp[0].string); + } +#line 1583 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 20: +#line 261 "nlmheader.y" /* yacc.c:1661 */ + { + symbol_prefix = NULL; + } +#line 1591 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 21: +#line 265 "nlmheader.y" /* yacc.c:1661 */ + { + import_symbols = string_list_append (import_symbols, (yyvsp[0].list)); + } +#line 1599 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 22: +#line 269 "nlmheader.y" /* yacc.c:1661 */ + { + input_files = string_list_append (input_files, (yyvsp[0].list)); + } +#line 1607 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 23: +#line 273 "nlmheader.y" /* yacc.c:1661 */ + { + map_file = ""; + } +#line 1615 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 24: +#line 277 "nlmheader.y" /* yacc.c:1661 */ + { + map_file = (yyvsp[0].string); + } +#line 1623 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 25: +#line 281 "nlmheader.y" /* yacc.c:1661 */ + { + message_file = (yyvsp[0].string); + } +#line 1631 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 26: +#line 285 "nlmheader.y" /* yacc.c:1661 */ + { + modules = string_list_append (modules, (yyvsp[0].list)); + } +#line 1639 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 27: +#line 289 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= 0x2; + } +#line 1647 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 28: +#line 293 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= 0x10; + } +#line 1655 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 29: +#line 297 "nlmheader.y" /* yacc.c:1661 */ + { + if (output_file == NULL) + output_file = (yyvsp[0].string); + else + nlmheader_warn (_("ignoring duplicate OUTPUT statement"), -1); + } +#line 1666 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 30: +#line 304 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= 0x8; + } +#line 1674 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 31: +#line 308 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= 0x1; + } +#line 1682 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 32: +#line 312 "nlmheader.y" /* yacc.c:1661 */ + { + int len; + + len = strlen ((yyvsp[0].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[0].string), len); + var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0'; + free ((yyvsp[0].string)); + } +#line 1702 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 33: +#line 328 "nlmheader.y" /* yacc.c:1661 */ + { + sharelib_file = (yyvsp[0].string); + } +#line 1710 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 34: +#line 332 "nlmheader.y" /* yacc.c:1661 */ + { + var_hdr->stackSize = nlmlex_get_number ((yyvsp[0].string)); + free ((yyvsp[0].string)); + } +#line 1719 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 35: +#line 337 "nlmheader.y" /* yacc.c:1661 */ + { + start_procedure = (yyvsp[0].string); + } +#line 1727 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 36: +#line 341 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->flags |= 0x4; + } +#line 1735 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 37: +#line 345 "nlmheader.y" /* yacc.c:1661 */ + { + int len; + + len = strlen ((yyvsp[0].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[0].string), len); + var_hdr->threadName[len] = '\0'; + free ((yyvsp[0].string)); + } +#line 1755 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 38: +#line 361 "nlmheader.y" /* yacc.c:1661 */ + { + fixed_hdr->moduleType = nlmlex_get_number ((yyvsp[0].string)); + free ((yyvsp[0].string)); + } +#line 1764 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 39: +#line 366 "nlmheader.y" /* yacc.c:1661 */ + { + verbose = TRUE; + } +#line 1772 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 40: +#line 370 "nlmheader.y" /* yacc.c:1661 */ + { + long val; + + strncpy (version_hdr->stamp, "VeRsIoN#", 8); + version_hdr->majorVersion = nlmlex_get_number ((yyvsp[-2].string)); + val = nlmlex_get_number ((yyvsp[-1].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[0].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].string)); + free ((yyvsp[-1].string)); + free ((yyvsp[0].string)); + } +#line 1800 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 41: +#line 394 "nlmheader.y" /* yacc.c:1661 */ + { + long val; + + strncpy (version_hdr->stamp, "VeRsIoN#", 8); + version_hdr->majorVersion = nlmlex_get_number ((yyvsp[-1].string)); + val = nlmlex_get_number ((yyvsp[0].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[-1].string)); + free ((yyvsp[0].string)); + } +#line 1820 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 42: +#line 410 "nlmheader.y" /* yacc.c:1661 */ + { + rpc_file = (yyvsp[0].string); + } +#line 1828 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 43: +#line 419 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = NULL; + } +#line 1836 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 44: +#line 423 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = (yyvsp[0].list); + } +#line 1844 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 45: +#line 434 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = string_list_cons ((yyvsp[0].string), NULL); + } +#line 1852 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 46: +#line 438 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = NULL; + } +#line 1860 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 47: +#line 442 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = string_list_append1 ((yyvsp[-1].list), (yyvsp[0].string)); + } +#line 1868 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 48: +#line 446 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = (yyvsp[-1].list); + } +#line 1876 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 49: +#line 455 "nlmheader.y" /* yacc.c:1661 */ + { + if (symbol_prefix != NULL) + free (symbol_prefix); + symbol_prefix = (yyvsp[-1].string); + } +#line 1886 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 50: +#line 466 "nlmheader.y" /* yacc.c:1661 */ + { + if (symbol_prefix == NULL) + (yyval.string) = (yyvsp[0].string); + else + { + (yyval.string) = xmalloc (strlen (symbol_prefix) + strlen ((yyvsp[0].string)) + 2); + sprintf ((yyval.string), "%s@%s", symbol_prefix, (yyvsp[0].string)); + free ((yyvsp[0].string)); + } + } +#line 1901 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 51: +#line 482 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = NULL; + } +#line 1909 "nlmheader.c" /* yacc.c:1661 */ + break; + + case 52: +#line 486 "nlmheader.y" /* yacc.c:1661 */ + { + (yyval.list) = string_list_cons ((yyvsp[-1].string), (yyvsp[0].list)); + } +#line 1917 "nlmheader.c" /* yacc.c:1661 */ + break; + + +#line 1921 "nlmheader.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 491 "nlmheader.y" /* yacc.c:1906 */ + + +/* 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..4a4cdb3377f --- /dev/null +++ b/binutils/nlmheader.h @@ -0,0 +1,143 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_NLMHEADER_H_INCLUDED +# define YY_YY_NLMHEADER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 112 "nlmheader.y" /* yacc.c:1915 */ + + char *string; + struct string_list *list; + +#line 133 "nlmheader.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_NLMHEADER_H_INCLUDED */ 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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

+8t9gmRrJSTIn&72U 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 Z1X~~=%B>qI`^}?!bW64DpHn2f{|_O=4&wj- literal 0 Hc-jL100001 diff --git a/binutils/po/ca.gmo b/binutils/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..dfe96448d372223a2a7905cb9b2799be93096c97 GIT binary patch literal 218675 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%0AHwI{;ma4Q~g}EPNcdAK{hgAqU0v8$+WH| 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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..573df4158208b9f8c88d5513bdca1bcdbb036c8a GIT binary patch literal 217407 zc-q8$2Ut``*Z%@m>^*9tYr)E5Hx^Klq9`B&_JRv6u)6HxE+D9}n`rF4cg5bZ_g-SJ z(P(0CvG?x(oclWqOVQ;0-tT+jAd5iCt`BEez=lL;0ecx*K2{5cx*zYwfIu;3V#Di^`}V?fVq4C=$j0Dpv(S4jCR z!HNW55-daT`>~i;qp{$t6Tu$|#u9YnegyLqd?4@x!5;|b9*1$Oj063;1S=8jG7j{9 zCg@3U0l|g@?-8ua@*7V)@;C&Guv`f`65K?vB+HASH_ww`1AtRANPrncQC*vf|UujCg@49Cc()Bs}npj8T`JVjQ$m;fRBJF z;Hxh|7lQMr0PnQ4f1U#QSDC6(H73|_D&*2ybDez-g({xJqWrIY)WtdL3e`tro#@h&Hx<`g6#m9?PZ#Dx{&^PwR$KtNH(3CG@+a7Vpn+g0!GjCL zjuwKB=R(NAv=DssUkJY&w-9tT6LjT%3n5pBMSwppg4}x$tj2z`2!45C5$v*Ll1f#Z z$4`R24VLnnB+$D}kV2lS>|)HL{bH2IE(ZOBi=nsoixIDCErGqZT!Q*u1nVw34FN}{5dUyUfM51zX8h-FSjfM-j!wGE6;M3syW9$f-MM+UXF1u zEr-1oS^>NWg1!W2OZo2=7^mDy;I&-|zLu_ppWPzZh~w5O_(9kzl;^F2|6N-JITc$C zdcmu~=g8HlKOoS4jY{Q1u<;t$`|vfO_xl>~U34wtOvqZ)4_^!aJG2(#gs-}P8`Mi6YmcDo+)c(@*R z=ah_iT_+iK*)kd9MF{LC?UR$?FDsHU-tJ`ZcUt;o-GFvA!SV!aZ$SSJ8{k(xH-NuU z8!*rL(!OB>{Qvj{@N-x2-fVz9s77!#>yhAHici@#!44j8hMiT~0=Whg{FV77 zNK3M+%vRDhuiFAAZd0jf>Z-);q!*&2*`ZRMC)jQ$#WODNCL72?>&hOLYOy`Z`5>)v zlq0M^tWx=9r*+~a&4um#0`((BbiSxk-RJe`DcLTsyU!qp3j!ZJ!+btJgTEJgj`-E+ zIo8L>=a7$C;OOVj*Rto3<59tX@*MH!yB8>Xzd(P}3&_9s3&?8{!R#D2q`dnD;=@hp zSLh|iaeaw(sXf7>tml_l7bm?$98P`-`nz9(-fu54{@It%m)$G)Z^>7fr^hSMY4-}_ z8ec&#<6dEX-th`~%5`bCe+}sL8hkZ>jd6QQ{Z9htzJ|T+dyW3*UPGR*UW2aV8?tp? z=iXp_8~p};e)VKk0rUP%>Ysc7zu7*bT^tr1$^EAg86;?0zT9#J7r$31UU`_5#)H--vmEO*B&c8a|;BFOe&Ajt9_Pmtx3M3C2^D+GCc{ywXnB3B=REU!KUS&rKY z@;Y%QE53Nv)d_g!aF<0(Mov&LAK9T zQa&W`Ms~>W6G7I;4>^G6F0f+`$lH>>bWpZOM&46f64{E zClh2l+b{Unr2RuK*j?e=c8Yyh%?n| z+kAP@uX!He1?IuH-SYtdXM((5FV6$ITM2SJ`Ay&-(*C#fe=m3i^TNK%<%JxY5@dhx zmKXCd6Xf_kA}_|DkQa76D=+vypBM7|Tk6Z?gI#vW2fLh>4|oR&DtTEx$T?4b*m?c@ zm}hi;=x<^}kv!Cpoa)Pz2D0Ajk2>1o=Fm8^Nv|SBrrDfg zR0TWL8_HWQSG7~cvOKHXsjg6avl@0Pe>*D2%c&{P&{MZosE9wfqD!5{trmpDk?+ST^xuRdZE9m{|3Ok$T z3OhM2{eE`^y<4t`b1#L?cW#)U#tq}vbi=%T-N1L4z`kx6XOiG8bpyS91UWA`>jrt$ zY6Q8qZiF~#ZiMkCHiG}oZG^bCs}bb+m*8b@3_VnC47vF?#yS<=81_7>G3K?eG3@S5 zW2`sTngF(Gg7vIV6U=XZ6WG_mCRjI~HbLC`+yrtf?hZbj-NBcyJN&kXJMad(gYImp z-|r6kSKPs;LsRfqsVUa6)=l9bjZQ+UbI8Tf>!xQ}O_k`cx^n`u9^u)aLdx5{&UeHqqFZi!T>W6xP-ZC%n zd&&!T@W=~v?7e|k${YIe@D{mv!@dT4!yd+aLr%-RMb6%!_tabRhGr<2Xa;-wQJ{Y_ z#5G+r$bURR&X?9TLtM(&9QtY89C{0Ej(E|nIpXQ;=8((j=9urt=8%Wl2jeyNfjxKj zfjw${K(D`#I=L1TgsmV=JEq9?g#l- z^n=`5`XO(L_k%s`_JbWf@B{rf0y#*tJahU(Kjr;l7ft=q-oYR1c&OBOm-0Y=$Zxnm zw%d6=RnA*L=d1`5c+isg4~Qj z$PfAlVZM8V5SOk7K~E0Bh(lF^!AGlL(2oj+oQDQOAG3l%Z&NVxr^CUJXP!2&r{Znk z=VjZVzk3_-*Hy~B+koDbHqgiFHi*yr+902O)dur-X^Z&Nqb>9~yDj+L+ZJ-T*B1PI zXbZnD(hhX%w!=97?I8Ca?U3&cZ-@0@cRTU-c8Eit+JWE7?LohJd&tk&9{K9H_K1_G z+k;QL4xm@71LW1c1LQHL1NfQS0eaio0rNiH0s4K^0si{F1MJMRBVb2?F#>C=aWw2kDVdEA3KBZPMtw-d}rA80fKGW zo(S?eeT6QVZ~rdvr`25`pOXR~cainAE9h72igBBF1z#h&!mbZ?g?uk`g?#KoV7G-r zAP=Vy$ggGy*1dKikXwI(4xHx;{&c}#5dwK^34t6=O8dJI#Nk}s&|gjP49~Y4%V3M>%{{+oxwUSdPB-xw4M|34fGKfg$jTwC=g!S@8K zhr@2FMnJwjBEVN%1pIDf1pH)i1mw3S0{(L(0&+bc0Xe@BSTquTQYR92?-L39&XJIF zR3z*rArkg5J`(d@ABp*1mhu;Ze2!cp3j6-JD9j@{3ih%u3iO^wfnR$){JXdwajUBy z^dt1(^A|nrX{jE1xu!?_d#y*_RIxk83+RseIo-j}sqX0isyqCxSP%4f>w)xF&p^x>^puaU5bgo2${?lmSWivuvC5@PG9V6XF~nKlONMPdx}-Y*9B`)dsJu_^}oIvIn!{f@xzd!jwCC+J&x zg1_-SfxogR^s&Du?Bl-R=Qm@%HO%0%iy84?fRxvm(eJF3-QXh5Disy)W#4XFLtpLt zBhJM2ha89Xhx}*vhhJ=z^6~zV*KMi)+#hs`41nAl4?um70g&gQ0nqoz0pM%a0Q6rv z0ORc)fOvF%0P=|Y10eU30})p=1JSSEK#cD>5PIl55PmRzAnbncK={>*f!LRSHwbhC z20^ajgP^zZgFts9L4H2IXAsVdatsFj;KA?{!(hl|;9!h1dob+j#9+kJ*MntWG#Gl! zIRtj|-4K*34S{}s90Iy-L*#s52*%795Ed0 z?dIX&>&i@B;@Y?o=)ZOZ;>6_< zuot_LX#a5}%t$>1w!GRFCJGVFiLWax3%Wa#&tz`K(%?)%AzJN8q6Uvvui_3lddsHEdDnE<<5Q`3oFVzu4A@JT8K5_G2KpyS{SGPLo&h=^ zXCNMwoC&=&nhCoJnhCxvGa=WRGa;WnGa=W%WUeVm+yac)T2ezu&$&qlnfC1u~)@PqENG43z3C2q`y{I<@!8 zcKTv2_)yJ*TuRJ?J_F__o9+~;H6Z9X6N7C#^MGju-e zckFywSLY*soR|+jRSUphS%EDU0MEPtuNEo{KF6KlK-aPRE7dYve-7%NGLg z>_XY^NqdDwh*K>V!M|e{$@$nK==IPd`03q6&_lr_%%fTo?4VH+{tRl-&rEhpO+#&x(n>H6!Y02@Z?h1 z@%^Q+<1EV{H}x{exydrfFH*|mrMzVs?DW<$_``S0F^}rY5idNJL!WJygYS50pSm3Q z%a>z*`<7$AH@ld-zJoYv)S%$K{oH-yz2; z%(ulV)Eib|yy>eTkK|R*=XohVUj;gaR-;^PHRcm0*|c&f4A0Qz8}_sZjSZfqwspf+a~KVU$6Ce9^@}@QKC8Ph)WULz_l3@=^lVK0PCBrY@CBr^{ z*Z?|}2!<)||JkX!u%B#zJYR2s9&&GlKEL0H{w^CKx4@0Cr(PT7x#&j7W$s4Ef7M3N z*(2>2H)7nI8{t2XH)7xMbR+grl{aC(8nX%IwVN=Hx0^7JqMIS7dYf^67QY#C*|r&S zIkp*imo|g%51ZjXxwgo2fGw~O_bpfl1Ga!a{TA3)f2p4+^((hv-ut#-obyt?vju+s zR_Nv4iuhb|EA;9lWtXj3XXdDYkkduzN6^g3<>|N3o^cj7k4 zdDb?`v!(vZHpCy*cFZsPcF3#ncF4cxcKDyycFZqiJNS;>jyO9^@Rn?cy=@bCS@7OT zd!8MjtKI=SYqSIL$a@Fkj&TR(wPpwM=QlerznVKSFXK+cx#2ru|Lb=`@0)kRj-ClD zx(nkp+y%XLkn*5inD^XW@}88yi@Pwthr6J+Y`ejK>D}P3(Qb?zu^a3E*xgu1cJIdg z@9qZu?0cYBr#;b(gdobRvJ;)O-NqernpkH?{<{PmW`Wd(v@>;YP z_Oo&?^ty8|_&u=~#K`K$E1 zwh#0^?*spN_k-WM`_WIkAAAkl4|z=64}P}nNB>g-AMeL_xep-zRX%`ns{`m~H~{^O zJOKHxIsp4QegNZMKLGjWJSgWf2N8cY2cdT#DH{*M|9?FQ|NHGA{S z;9rqsdpTFbU6+c&pQdbczP1=Yt}dgzDJybKg>G?yWDyTa=3O1a(j3R z=ci>(!ymhz#`-phU?;{qjdMHKGj^(u><4FH*Ei3=k5p&DN8YnIe{Omf&s`P>e0~=4 za6f0KYQ^XB=MevvpMxCkoP(V5pND;yKM(vS=OO=&=Me{gIS+a4K9BjoK94-w-jNF!&+a1h;Cd1E(d8oaIrbvtvE(B9Cll1Oom@n`uJ^m0^1gKc-@(V> z-$CE*669Co67&;s3H*(_1iVAiuDXnI>RiV8w%=vYn|~S4^Zve!accYlIVb!9JJ~Pg zKmLIKRlI`t^O|0PoaSAD-R`&ozc_vcbc~+zs$?`v%^} zt9BFq-uou_9dQ%(viK(A#D<$#zxE4!B(Uf$z{a<*u14L09rw8fd5pUS`@4Dz_WJ%7 z;zOz1D0|;V{Oo=kcGdSb;?daK@Y_Ywepuk;+u{eep^q|mpvTBNnD?wZ@Si((pocGa z;I}32BJNkb3xD&v3;E2s3;wd)gZ-AdC-3hG47&&aPPhko%(;hot-J@hzPkr|t$rW! z?QtLWwEsT*@zZ^@cX$9jPkaD-zW4y=)Q*3HUW>ocZ!$st{m{w3f&cwO%s1pA{C?s? z*yrho@R$1!p~o_hAdeo85J%SveDVl(qj?Pb(m$5xJdY87Za>C(XoV+`qwxv&Soj3v zUVVaiS@0>KFG2qO*w0Tf-}_I&Z_{UpA7h>&kNxu*+RHshKGj#?&gaO>RWC4Z_zUz~ z@dEPt@B(=4UV{H=FCmAEFXcV=SCD(xR~To~E6}<83Vf7(jpu2m*BEE_YqXbtW2cJZ zb^Q(E*!edY=gS-Tsry^VWA0nn@pXYO-$Jh0-+>Rmcd(bS@8BmZrF`Ta?B&io$Ad=Gk_@3HQ*doRzg-b0UD-lPAs_psA!ALRY3572kh53uKsAK+hcA3$%!2l&P8 z53s8>AF#gMly>`%Sg(qF1f2#SK{xOt#*6s~yrI%Q^&{fynva;rQK`TD5&rS~BlcaT zKjHa^A3;d%-_NoJH2U+Y@ffVPe zWVKh-vFG0r*sEfxygmm(TKFqD5?u%K?|k;EgOmXMR?uFRL?6AHk`o|Dtc}*k8@?T1j<#m`K=S{B&vfX_q$aYl83;lW!%-ddxKNY;eXKioDxe-C-9DpFN>%$1Lootu-i-PyU8}lgB z%wAdl{F-6hgl6Dtn$+)W2EHCQ!+6D-quohhtLBhjVsqe6mhv8H|C1ocha5hbXAgoL z|5o{6y!$?ouVV|ysY(m<^ATuif%aJhmEUW%06*7Tz@8ji+AHf`_%;5 z-uDsY=d5=Akataj94Gz#fj7(_{pb6G@4ZrAw3WTGPE~J(aeP_NXRV;;iUEL~1dbu7oL@=#cY+*Oa<|4fo~>c8U0Opg6A5yByhxCLm(VZ}avmjc zV<7naD-e2q7YKgJ2ch1BAm=Gvf}r1pLBRVf2zKTe3|Kc9at#f}{DuaD&LV=mF7FS9 z{!Rx&pRa?#r&Al0JGTLy5d=B@Z)yX6KM>@+&abV#k`MmW7W@n+$j?Vl5#;>0TswOu ze)nq!z3guXfB4)Ea&c~NudF{_1UZkI*dF?P)*j=P?O?BJ!}($d@V%WNuP1+Wz`V5JHJu^9 z=A9w0sLrtCQ3N@jFC)nNk;4Rey?;-T*O|Iq0NZx~UT=X@yP*HZE*Sr;l=E~2tkM;D z%?NUSsOt(o)^tVO{EZ;5o4G?UpB^D-pB#dIYeS&7lOdSL2Z6=9L5{V$VVuBjn6HT- zuU})k!QS_E1HHT5peK8+y^?2_)FS@Y)WSY`Xb}&m6XbPqp%(VGRSW;Ws)gUa(t=*; zPFsuvq;m}vEaLlinl)HvQFVn*j_s)gGFUsmL&kh7Re=z9~ z7gph;Gdl`v!uVxg= zkx}rMMNzPemr>xiu^xWWhal&p`}FY3Jl)Z+cz5vAj-c{)2)bk3gWaLuY&{UCOZR~O zeF<`&8q)*wS=j^q_w<1MU+5unB&cOM8tj!kDBJ+~#~aW-*8o3VY=A%CFhHIaq9Ko1 zf}YBIfW$v36JD>}k-` zI)c1k+dmC{lxI5Z<%j7gSDudby#93b>oy(pi=7U>5~pLlX;R)W9eO)I9sc-2>I=?* zd}$^FMwaG7DA3q7Ghrdg^>GC3(;@ZLhyZVA@r7e zk*qt5P~U73#_PWb_Pcoz^nH5~~Dq(T)P5s_tFZ)*H0@jZrPQPQ}dO`Yl2o{ zyih5dS0Y~?xDs+3Bju$lG0rBzJH8TrctzlgmC&c-D!>W^`FBuFS7AJ_RiG2F3UQ(9 zD#)w*D$uj60w04`LH^?fKS^M+z`d(5zf-Fq&$p|P=T%t^dHk{(c$-&a+=Hu;Pn=#Y zc^*Mu<#{jcBxViT$E^WBGo*f@ln<p^D>L4M9KeLeIwe?9cDWj*ZofWW)!F`t~t&`YUg$WxPy`81TW zm$U~-IW!sbi%G^hKOhhOq*#tixvI%i~@h0R+ zS2m$v(an&D?`G)9xEb+d`eyVyvKe}KxEcEs)fUJzXbbEnWDCZP+5$fww*_%wo7CUg z0($wj!j2kkMV#)u75Ur(f_#qnVk_*n@ixr!mu={myiMe>4gEiEgP)h!4*50S4*Te| z9qkF*p_j?q(f{mr*qi+h#OK00FmGQe5845JZQTJruJ1sc*X%@|6}}Ve$%37T!`FAh z{tEAcylU@4x!W$#8L$g>vUnHhZP*2U*zE@VPGB{G-n+qnm))3W@7)-G!fyEe(cM@t zKJJEG8t;K$8TNqw%srUry*;2)Y%luN-iy33VlVQ-?vHAe`I(Ptf{`vsyx4=R8PsM|1uX_-3 zk2nat*#!A_0$UCu-t0IidD}tg_xeHb_30qwQ{@o)c^pFA?nFR*gS~ z^)uf|#Gjax;JeRB#HA@G;qSXnLVm|iLJu!ag1_vifLB9chf}bpfl{7#3iCd43jTOQ zVAj*H<4UKY@2;nDUNH7F?BT*`?02%BfgJ~*fgemb1AAC>26A|C2J3+8EaX$>EaFzr zvyfZjS=h(?v(Wq5vyi{jIru}9b7;4mL!P?u9M=21=TYD6JorsGkNM0v4?Ep=9`n3* z9(<@SAU`U40dnyaXe5}Q5d|j@AZs%**XUvrPKd&L~=e`a(1z(5W zM_k8xwL$71T*v&%+yMXXH!z;@2G;QjH_&g%4fyLB!FzB6d>6Y3z8c&FU+r!}F7Y?v zuj6il{z}0+eiQT_+=QMB-+~@oZy{cFy9K`wC&Y;F1KN4 z+S_uTbsO`VdK>(myp8qb`EA%=sXM6ebO(I(yMwqn`wseDAjt0(YKgnp zpK9-79?R}xJvww3dCU2`@R!>JBY0nR4|#vzdx#r{?m-@}rM}>O=&Q?poCD9fk2v$< zKKQEt0Q5Q#AHYBEKfrn0rw8z>Mt>u|{Q5WI(q)3}ct7?K?E@bI|M)}joA(ju zfBy)2a(#sO)$S4Wpnrt;Jn9kb=kz1cEB+XA>iHP!;0faF7s0FZ6n@$6Df~SADe|FSPeE_+Q{c@JxaTSS^X60dd4*?~ z-;d8g$LksFG4L7uu;(+(XU#Ln|LrrxcaP`LZ`^al%k9rG&oj>vXB}UFUc(pY*Zc+K zI^hNE?ynb^*V`A!Q;WVtf7h4jANvw^wCE+~wc;h@z3V0H`t(cK&mF;g{Sx#(y##+H zU%}q|UID-REBHbGSMbweufX@pSMaBOuVBZ2zk(f?eGNaV^cwR|d=38hyoMg~yutpY z*&FOL`n-XkY?Oe=Y>#j4RpWWzO7J%SKI9$pk00Md{@(9lpY7g5Up?Mq{9oQ< zeIE55=QYXi;s0CSga4cFp{E=lK&Rpd%(vbL=)Vm?er~M&06*CJ0e)EGBl3!{kBHZ^ z2^u*Le?)v}`3Zg>`w8)I?kCLm#3$$}$7k59%V*Sg_zXXt@EP{M_cQp*_678+egVDU zFS0-R0)BUV!Msm=f&bk20(oYm=*04FK#=Wg5JA?@5rRDaGlINc7PE6u(`GU z>phep`{zW0tk2a1Sx$EZX0-<_PmuZWAjo_K+oN9;LFMnO+GD&m1gj|NfCJutaR6Qo z2hi~)$Z@L&!AQ1$f=XP^;-JW(9YLO7Un$QesOF- z*^gySPh`&nt@OL3?~2@V%KJ$D>1eK<^qs&YxZoRDNGB#EEEIS`k6$L-Li$WgvrJSP} z@M{!~O^12gP0{lmnfIp2S$m_-*CEy3@lAzb2B>Z!DN$7t= zN!aDblHe!z_YO+_Q}}z>TgUHV*QW0wuYTV{Zn$`F9-ID?{!%D?{%2D`Wh!mC?_=GV~i*S?sp5$Wh8k zl@aGQ2;Qg4u#XZ|z-RR;SSMRnL0lS2koN^!svw@_sfzgILXgi3O;s`9y;UKvCskqJ z6`dj9HqMw|A7_j=%^Cb`6!@nz_|B%mJd0_7S5*T$ZcdQ%X^RH(9H>DYo25Zq+oZud zdqV2}&_FM*q`sI7=$ChapVyJHmkZk4y1=i)q`i*|Dz4!)idjD{6p`qcy(rWPzg`n`@76@z%2NyD zHLnFZb*qK`(Y3Jt_o)T@U0DnLH`GF&v#l29`B`9v+R&qaZS+s9jd}f28+qCUf_>Qk z>cIYn)q!3Y)InU@S_gi8vJT{`stY;QstbGQSQmZ}Ul(#1Ru^=V>SCNdb+P^*uM7YA zy)Nc=xh~d;B0oAP&qu=v^7HytKSHkg>w*8;^$=e=6Xf?m*VY4ndFsPn%hv~9z53v{ zTYdOPTz$xMV|~PhEA)tJVPgc4~n7#0K!A`BFaFK-Pf-l5ke?G&c6CtpTLWBycgz)ja@iGn{^$z-DeMM4x)9{^ zoSts5qqT1E?>BCUKh+w6kGhS(Uvq)_MwrL1jgSX!lKNAP5Eq^`!Z@WHV}A7;!;ium z1Ajnc$ah*}$Z1Vu#K9|#5r1zJ58Zi0CAz6tc<;tsoO>yCV5AVJ=L z{_GAq7u~Tw7HtYVzozJ)&=hfcMN_P+C!2zwtR9fl_a2D1wLPG}ASw6sz^9gF>qj3?$ZxJE*4K5Ou)8y!;N!I?{H%%>#_8;ZJfgQ3_}=7&{N=G1 zf)%}{S_2DyxF z2L9GJLtMDq4CB0%_N>iOuGAd-*Kdw|p+|G%Ukj!ETyx0bc60FM=mWbb;{!Q1^ntu| zKFFI!O8p5R*wI@lS7-tG2DE@bCbmHPC@F6fc(MiNakB;VowX&()d}*sRbWfRlld(X zH+Bj&Q%hwEsqs z-#fQ!1%K+^3UP2#E9A9y0a&NJ1F+8+5&(YB1i)^~w1!-2wMJaE{wqe#){@Wh36`Qj zagy%aXG?9*PUZb{HP6C(d&*bo{v}=69nhZOfbYQYzYPxfw!#e=U{x0R_LM^^y`0q6 z!k+YMkMeoKIqJZFH=cN;am&~+*G&4Cr20Jesr61&HqjzBjq3ce^4SRGseINz<;GOr zPjINsnEbCL(Q1?x_akVG@3P>#2K+CHaEHja*=6oC`8!&4jimY*YX6P;UZg&Uvhd&P zr#QedL-^}LZ9&qXwmYhVLSuo@k0yRzv275}5W+2)h5ydK$cWm0;dPB*ZK@wb?az6= zCEVRqc9nVem-%d?`WIB+gJTkn^M>a{S4>v^+y1mZv#tpDF_lMBc{g3t=zg2@uWlp9 z%Xav-#3X7zNcT6hrnb2Y{&T|L!rv2-IZbEZrSWetZNk|~a2~;l1P=@CP-^d=1>cWw z7rFGJ{!vtyi!OeCw2b=v!Mc=jMhl$HJkd3b@VZIe)U0WBnTzVTNZVQ(bBgfx6ZMHC z+`IN^@qMYhi}xthew_L_5>8FJTGRDCjpa#KU7~S`+N;xbpRTFA#&Uj7ef88{mD(Ru z-wQ&sHub$k^?%V7ZR0Pm?D;ne_&1R4ho8~d@KcoPlH~q0>xRY>Gg8gt^FHfbi2m;! zAE>bx;ceivOscz0JhY)P`}5yC=Y4z@KIc58C$5Y!+)Mm+&%Cna0X2|^k!kv%>-^d8G+PCPqqrkz^m;bK& z0J@K&J}2pVP3@1Ut_j@-(0Iurmts`!kj`I^QJW9-9m>y;_&rCP_IezDvf{fy$%HdD ztMXc+YKX{y-<$kQ<)>7?iC{A-&!j%vsJxuY`-#>Ky6mZMg4os-g7$>BgP#=;&aZUe zmT<~azh9|*U&cR3eLm7T=M%9koxEx{1^`j_%{B-)y>f=WqImJWEjdFBvPR z;Fp$hz9(91;$H_Q&-yJ<=7d8rTo24@Jh&zEujW;tc!@1GDp)jt+K zTH(yB)YUkR@s`HP+$Z1kpv?CslKy`6JQs zC!7^F@kU4O6{#+3Ha_E~wT78^Z(K<`_ybowg{h|fuB;ou?Z3_i2KhfcL=U_p=`x?g$i13qR;NDvH%_efvIBo3M%HNR zbAscI@?3!S2s}SKe80(Ac%to*>MXBo1l!5{M@#>oIe#J=qX~D2;D@qJ5*~k(Vk5ys z&e_h43HI<(W;{+N#RSycSZOJ@pG^-P`!kE~@AEvHJ-RA=Kv`T~TbS1QWR3 z9^V4Xp*+V)?dwUjN@P_j`!{d;-*3uyacG@);P30uo|5k0(|w2?zV*ca#<5Kcji+|} zeI1I8HZ=QFzht?eOMN?K#rMOe^O|9YZ!2-Wea$8|)h7M|IG-S#B#v{`W+B*{e_v-K zn+i0RugIeewW(#?1IlwAl7+~{Y9{=x((N|9?WTr;S@HcO{`ZF3>J!c$g1_?`kd2>L z(OikvHTI>f_!d}BA^3scXOa6@!nrPUh~qp}CEstN{_a`ut-1u8v8z$tRVnY|d|2$W zJJEBd>x%GB+Y#k^Y_|Vqb9|>h{Qf}@$NO}#lK(9gzAmyaao$RBDZ%_yze>hxZ-d`T z>T=iwvR8x~Onkm1IFRbA$~e`CP6&;AjO()SGdt2Jm2=6Mt!(0rhT7e@jrs=B{V#;m zCM$nuiNE1Qv6*P(r|Wm=n}zVyM6UzY1u@@*H%MgBS$N~$Sso|6?YzIB_Q6^4Ev#Og zT}Lc`T4H$T^Ig0$Y!qbcKF_34XJBGbmvl^B0{4V|LtoBU_4iqy(svEPs+J-1uoktirK>buOQ_#P8(MD(_fNVu39aYC=T^cgN_7^_5!kk*{g92Hbrw1|d4I_{ zF`q5beICK#GmVyl^E1);K=-is3M6XB}} z;T@*?r*y5PYaOo#(zmH~T&nY-x((@K!XaxuNwnWl+cXD$R!{g;?nh&s5xh1umr+#T zhb}k5i6L6EIp3vvEnVx_hv{+@de1oj6WJG{J|(H%Xx+O>J)f)1BO1M_-AwSaHBaNU zk8^!0e`o89RG&|92J*85so!j~&Lvu9!oRIfw_nRg<(&@ruH<>TKfz}V1f%KNZp{NY zXQg{H#}T1xVVP5ze-{GmGg1-4*Z;bj`{3)ntr-1SudUg|Fr=wXZWjJ+nLWN?%b$e!n~2tbFL-_DHG|_8 z^{q$ke-NA{?Gw`3gAd{E%!=>F)}i|_)~C#;BaLz09^Y){-`y9Z`%%_&AkmkTHNTNQ zE(EvHW#(L!<2dg-Ifo(Gl<4o~xl5llLaQ;y8Q$AaJ-zNM&sKA%(3faV^kn`it}Ozd{a9wwIAgCh{~HBRA2o!g7ALjy}sbM6OF&+ z{s{4P%?9^2;pO0bOZZyIIjDp3Ss(1J1nw4m3;Q{rV+h~l`5ceeJu2s>emx03qw4|N zunOM*ePSbvIecD7_#?97JG1Kyo%~xS$W}D!#q;? zXO7u~Q(D>@uzu)%8h;Ou?hg>n&HOHk%y$NrOORdeC7eQRAACl~XaAfR*sMoWvt`ub z7NU`taB|96zJ&9f>MV4{)BRcYO`_SwhR!{Q$T<95&cmjk ziRzyb{$v`fEx|xOn;~AWv;9+fGvWTic{|UW*#5mXDkhIIc<#%;oO zPxp^GCR4w@L__&a4VC=_e>&BD;4?<+nFHa^kuhe_oV3Kt57Zu#mEX1F@3Yd{noXtr zHpH3AO|$SfQc1>iU(24~|D!g#-$D4(vnVeRs;+Rp>A>G`C7n=vKmNWV)n~JwMNr*v zdwdUf67Mmneg&2H*k`nZhD4(RwKukDOQQZOc#p^5mFBp?IUwEl6#eqwaoJ--<1OLW zrZ%0>7{D^HQ~ngO>PZ%r^1I~-f?ud?wB~kv9_D~=`kv$SN|DiK8+}xBQ2vZE_V%1d z@%qpEOsVTe_Z^8&Vd=xa>v9wx3i7!X)$iwbN~FCU=S$S?$vIQHHS31RZZ6>zqq)qo z@fioYkF&Ao$3)|X@=hblpZL69`nQqsD^s5?ytk#XCfJNKi0KG!IJMugvEz=^_l5A< zoWGqZw0YVSEcsPylxXtPN8{O@Cyo`Jw+C+9r!!Nv@Y|RnvLFOQC(w^-*|%j`}Z#P z%1=&I2{LA5>+=!*?J=JN&=o=1_vSNZwr?tz=Dmo>>=XN!(EC$(96;@h zsGZ;02+N9ZfAhcPR5#DY#v|mu7SZ43p!}I0l`fNgeTd-gAzCZxisStNuSs-&i1Q+j zXT)27jvIvAi0&s5>@V{l&gTI{w}~CT|K5<=`2B@jd`8B8Yt2Pf_+IxRs(a1nkOb?{ zI2-xh6oMV-YM2e*=-wdn&rLKsXA;{TsPB5hDK2g1bU0m^4)txt{w-}YM1NJN{%@-H z5?OSm`%hH&jM}d{@O#FREAkpZ<8-n;d*X8(ULOdbeW`0_&xHx*0WA&drspI;*L=nm{?@XeP}?XeUm*Iw@!y{m9-C8JfpljO zRS35s)rC^ucwT$5;G5@KnM*6`Q$y~%$y{n=!FT4}c)g&yJ8Tbh|AzNULidpk?? zL&{wVF6DC!eg-Uju4G%Z&VlNS@Uu7>v$FMh8t2^9m!C)XwxQijc=F@5o9^H685{K- z&v^&0b40H+mHEBWG1Pukg>R|zdlX~%`4sQ-g%!!3i?&aeZ?Vuh!}}X)Hc@>Uyj0FCmzV`H=n> zcuzy^ci48)<@S?k%xFGS;k_ckXM}q~aHbHAvK&)w{QLmjH{$1}RR4u_OZ|sZzXkl< zmF|C{`WnJ7ziaWH+QOwgpPza2-b~8<2)7sA|4i^ls-MEoJESe%>Nk82n9kP+30%!* zntUF}dug^Q;_XMe{Haec@89VDp-tR3h%Q>##Ex^hv!m3($8vKU6N1&uwH z*I*kO-^snd@VSy`*5!RI;f~|?E~q|+<2dgTIDYZEAbra7{>1vch48BpP90v;`8k5j z^Qw%~j%8_mroqp83Fj31CBdTv2N0~x`w@PQ!ZC;AB;A)KdSNogXI@h|Kee6*QCohQ z-w2i+)z9U#KZ0?*rxU&C`HYpzs_Wg!39ct7BfR z&(#^`bP8{fQ$l$s+?_%J&dMaMs>W-Y|)#HE>zXYJv7v;i&y){ zMThFl4b)DCa8=GQQ@Ach8>v%Ubg{8|W28l`HS5&+NTbQD3#VR=jzNjhp(cYx9bq;_ ztDP(j95boxE!mU?4&DzQ`qU%j!1 zI>MkO8L1nnxhg1DYmQZ$B2rk4(rLp<;0;o{6I!bn7BUHd?t^q;v7`=ltch+Tqjknu zb+k4nhNh`B2S@4Do_aGOnaqjmU~Q;Dr>cxt%^wP(MMd@H7rWl@x)}RpT)W)Jyho^89t5BlJ(Y;f6mlTW$ z9xG#`lL$;{jxd>{wXvjMr6JO6ii;uJgw#4Y)rsq(?&f5vsAhXnhnbAATD{Stc8as& zC}OV27-pTp6sA@BS^H~QS*b#>>2C;EhbG2CNmh$d7*#6FVNv>c5)J#9Qem;^qC*Xd z>hQSe7}mda0EKIhHmO}bw8o0D>PQ-q$D&DFc!DYT%qR=m!xTpx7)`Mx12VoiV=o4J zV}vOMmAk1NJ@po?b?`Lf@?g{$W6&nDs)&@1hl(RI+E_?7b?VjY(d0>)QEG$Y64p9} zNTN|2tq-#f4jcWt;KCJ6>LEF6-+z{OT&CTWkf4mrHoz3f8d)mZc&*-`*bR#zJawKD zMOcPjh6pjR#2Cel6=kq_H^6OkT|x$hu>zQd=6XvkT$l&w<`QX)bBWSgqAIFG@m&WSk6ff?%nfk<5S8)hC*xaD+Y~E(SJY)ak-0P8#%~W-Yl&Ig0Z% z54A?E4=34i_)bXarr0{q(O0mQF>NPlYwKx*?{BiM5orVu)6r9;iXu_6Tv^7g6sNbS zEpah1CUY#Y$DC>cs%bPaW_`RiRwqG%DF>MK(acM;R>3GjGR-AMQdM9^7gae1WzKaP zLra50dLkoHhihZC99LPzE?>jZg~mljvf(gx8Y~wYD#D--i~YK&QgKNsEa87f#bh(q z0Ey6w&`-_&77OrEb+ZHWrukfZO-&advRGn>k!$7cQM*@iOEp&qt=@Kr=E z2it@^UNgu}t+TORPq-;uN2?)Eo9IiNvxaVEjA$(dTcda}(UAxc7H2loTqx|N*q%_N zwTRavGLUquu(R62>obp)8i;JWut7-ZNnI=~8H_$nhje3n8~I;TwF*mF?*1L_zr`Yt zz#{rh^z@p@99eI%m0600)8V#BLra}f0kcvTQ5fkrmg6+$-B#k0k~-?sgo|`;k!d#$ zq?Z4vhc!2~{EJXz2v=50#fjNaQ$r)krB+RKsGin*oiSc-HW_&>ff9B{RfZN?B&yd-P^UD+m@F1OE5TK~tWg6pfap#k zN^0H9WbV<$S*@>CudcH?I*c{|oisW_M3+7qgRZY8RQHp!IwmH}nUqZ%h?LQIN%B*7 za*a0YHI^{5J|?zHN}Iw&N-2orP?~>U#@Mu#G9M+=R{OAA)6MN)&_Flae`!esb6`o^ zo_-5q-3i!iDTt%5QsDm9el|>c1#!n7%n-5g&EDxp|3@ks4Ox%I5*r?-H5fFsRFmbh z#+aHqwWzqiV5L~K-iWPKgf>iPO)p$h35WO6njO#i6lESr6Z{J(8gIvo2jkb z&#Y6Z>C9#lMXxBGQ5_v;h}FlCgM0e=T5NP`pw)^bZEGm(7O7lVqLdv-sE!smin0kh z-Vdp@MjKnQA!js^eMD$!Fso>2avn4YYecD6OTBe~G<`D@O)DcU?IKE+Wa1a*#)ArGm z=LE%SX(>wi=b_kiTr}NUmp3KK{x6Xcb~**>h|73gco!+h8B-TRlX3teExd$VqLh25 zDi-_)A}-1tL$t~%l}mUpll2&dvI7hLp9axD3z#k1*AY!&Y4N^>NFEo0jKm@x(j&T? zBjc1+9D7QxY8s~}&++kWfOVF3{7R(cG*_ptTU$d3fU+G&KA;psxeI!GaM)Cm8{Ryr ziL6VFABD1KyAVHjkHA(T&HUShI90EiK#O(C@L$1@jZO+8C^a*fLbX;mkwlD=I9=*2 zu#eP-r>{weWsKJv^yHefHlfB>OB>A?Ep7Rf8KmK#7fmuWbZ zMjdX_A>Y@LuPEz6=jx7`qjI{*+*uUdSd&Rj@yC$(6>M&&=s?khHyOy@{}n2mv4O*Y za<&jg+u~U1X9|xKF>*0=j?!S=Ri`%ir;%l=Aij52yEpYw&SG8UlGY3SzVPA57I-rA)4wqx++=Px0)oAONik_h-3!T0OeSkEKQ6h zz-)@whvV=U7;XGp`nPK5&u-xB?-kNKASB4!L&A-^l2cq|ph>_28Dvhh3sFuhZL=_S zxPcF!(4Z{LvL4CCCPUgquAsG8J1Ye;MmAbgT&%i@tFe)_4`mE&CXH<6$;*V)vYE-L zo*1P@6H3H1ipjb1E#Ea#2a?&+>Zo{Cq|T@_YdO4fyTYS%r6pMHO8-M2n`3O6Tnur> z=|&oSgF!LkG(0N!rU>c6k|BBUEhSDSHBFH3DS32BB|?5<(14PZC`Cd#ph&Z<)Rwh& zG3&`kG&oUrRX`(kE2=V+mQxZ5imeeT3r$KV8Ad6j8znLO;u_p-Cs4OuH%|MSMX@Hb8lVK}j29l?+P`v13eni3wlL6ul%HlA`j=BPHwm zO0M{i*&-!_9HJFdft56}WmRc}acHfNg`^h+v{1DxDKS;!L5W6_F%jpM8V&TTAvEce zX#%NizRZcr{1L3v=U5tz^*ASG$7!vnWG*Z*vX|agJIZ3HQ~S|Ky;#74n`yeKR(I6K zd^6qrSGlH3ID311COwr*t+ow!NcXLNmy*@VAwjy1b^fVios1nb6LLBUb7VoorY%q)0{TfNL=Y=VLg?*HjxAd~f=eqp9)N|~&VnAZ41 zwP8JIhZ?R1l5$*w4MsYtdH&Brcbcugkn&~^SC*A@(KvvXrIZ47=8X{$rKgYWmeds! zQuqkO-jq8Sg&)4>s7W+UVR~ihQi6uHn~?NPVJ6+GX|rOIq%*MM$5Dm7f)A~1qZ{Q7 zVSK=n+Gq;x&TGHo7?4T|x)2NcPnT`!*Cx}GicAh=TvB3d8!@DGp*7Q9|Lzz^)Anoj zY(0Nr;aN|zQ{NEauG;@HK??mJ<}T7b>?GEM(;^)Fj3SwN@s}4U^A(z(pzkw%t^lsA?^Svp`7`N-cmJg{4(G`pzPon(zy-uVC} zqctf=zv`u1^wgEix)_}n8#!Gh_bRU7NewKv2vgzk=zxfMj7IHN{jT4 z<%NlclvkX(^T0^a=l|% zX8&UIPl+TZc@nMIDo{cFEB(IKN$DdmMqzK-AoaM%+hEcvC)5E-0v1hq7B-Q1h>ML$ z1H3(vp!BdFqog?z@YNb4 zlN_wXIjhx_?4%SGbpN<$g^=vk)wWMhtb6;Wc+IJ;ULHO8hbN?-5~L&W?>h!4M?tBa zDv~2n1u6S@wG)m3tPjKanVMN28fSfTN8vG&_E&LcU4s-cDD}$dRt?$Ir)=)!aTEsV zq`VK;CG`a^P85|qB{tEjhH`34Sc+)kt&*}n^TPvZZCrxlqt#3i%BIVyT=lvM4N~{h z{6Y}FiIKjE$4IRU(DJiu;>{V!P)fgW$4ro{{7HSFF1`Ujb4+=pXG1t;@=oC@{zubBmcz4!pYJ$+b<2`UKpPetm-_4=O?P!A$;~SN_pI2^`Zr7&zr~ku!)JN? zsDpwFMT%&C@D!^L(`fNJr{&vEm#qf?rtr8h4iPpKtk$YLa^J zIl3n(@LWQ5QQCMt$u7Of|36JKy}JI7rmIY{`PUnNBpt;Y?T`ThXEpH}QkkZ*8PgM$Y8jNrh)V7>P=G8#I07No}EklkqiC#e~`s zg1gQ-`FZuH@_nkoD6FdYS!dezloQCc&3265&1pXb6~mGyrfXulm}dEc!w zM5IVcmNPlt3ylc33A*kUOI*sc3uReSc(8`U6l~_DmCf>&88PeT#+YWA`wFq9e3YR# z(zXXy97{o%@=~=cml~y6x46a`t^z*w7Nt&O;A3|=Vat4ascT@UiIj=%{HB1FLvY4x zq78HMpvU?)YsP;bCL@VG*5-{@8?`yB^${sAgE`6$Sa!zbz}i@yB|Wv6#FPz7HEo!3 zo|Y1BE!M*gu$-w@-TpVV>h@n~HB}RC|0|mKKagD@Q8eqKO+-(2BW`K3kU*s^Wv602 zj$}u+p+toEg&`$$^Yf2PchU->)Kf)ex;8(YNayO2%E4%O3f1&)uGr8^wL9y1WrdWt zORe@RM0%ON&6;PsR$u8FXOx%Zzdb9wQ6Q+HiMFrhTIrdLhD1#d%JMZC-^StBv}4pd za;HR!e>5Z7#VCRXYC0MDr*MbC-O?qHva<y)d6$>7(rg

_0@k$ z05U9$a-vQNMA{YaA9gVr38i>2p4Vo0p*7tM((Dh|(QKD1n;&a1A13uz&()x010UQX z-_xapK0G5yIWW@%IV(Yrsx_9>mv4~~S$}Sj?uUL#JWB1RHFL%;Z=c}VEshyd_Xm=j zNCrun9m~>^^0Ft7qp|Seq}5OP-rAMiTzN?;1)H~3TIC_ICC#YPVEb4lO%RptiAJjB zv^brGKpe9WXZ_Ws66b8VSBi1QOjOlgU8`nD-P-A_qmukEl;cGcZy#T;e{(v^c!~=+ zXXXRnN-f(uXXbwY&gT?6)iMDwAdU4W8#W}YwuPqj!$)v$C6?NBO_$rI{H#wNa8h70 zb3{?XtGs5$NrG5D|3oS?M$)QKjtatTsicg=2?L^0+Jw5nX~VEDmom+9U=V z&veABtIxNIDS3ho6(zP=OmXHgUAmX#lznZ2TH2JC%#`EA)FBg7qFh8A$s}c%3?kv? zuW~^Nit^)UMC?fC%u{_UxeQqdhcKH3jcMr8(4e3aY54~laTXpdOu@9oCW1^eMKmOM zOXiDLB^ueR?WNdVWo3O13U+TAgx``%V70Q;u9Lx6uZ=NBM|fLIfw5iGCY!U|PHseo zkByz(@FHzE3QWk^4Q~iLyT!zXD$mcT#;i3)@=dfh%uE;&W~JWd&_Sv+_z}6Y8?A88 zZj@X&y9G*DqQ=LZX?sP6hlVKYlCxVZ?W=Vm-~jhlKBOc(*mma^ubkb&;y|N|ZuP&6l(1ki@mMf%xd+}f94ACj8rf}%y=kC$m$KUH~#L^s(5G_GxTHO_+m0fH) zw&YDb>qDNjKR-_Wk-U{HzjWcn1~QfbNgpqFndF@ruf)}YITm^AzgdPw=Od*cUISU?hD)oBxD zYpr6$7VF=jP;!Mz%7UZ`Qas%UMyYgi^YjVK_)-#A@-M`6tU;VWDw4+vr)-Cqkii-6 zWbyA_lq5Xe!U(pM$9z@ZYAl0@v8V0s9Tp!ro>>brB<^@ zRx!CqoZ@B-W~RzGv?wqDl2AqfQ9yu;lro#wex5(jZ&T_v8=HswH2tRhC-Y0j*Rx;= z22-lO-Ivv^44lPra8`Fe?w{`(wn}_08mT$AiiPPdb^EU{YFm7~jbQ^G#b@jN(?9R; zoZE%Nt{9vfJ)N*Qm|=ItIObvXGzw6a2*Y|22Y(66X|}i={N*Yw7nkQC z_?J;ROd_lS(h&Z0J;DFR(Unl?-MqwK--S2f;vDo4xd1QE7fG65Zqy&Eqb1KmtJwmn z7uN3d8a@TJ$l0hIGduKsm8rs89HZk>mBRaE5?sK}{Jv06^SGEb$9Z~-UGn2!Xe-5{tBY4*&wMCBgF%4!I^;Si46G|Mho!+o#{u&IL{-6cgP3 z!T>qAkt|Cx>yEnCdGx!onD%bQ;rh|;Zhz<0-4rB6%nfDL#nz$QbWXc)U0uu#LbfbE z^qVd!-M@Z(va_qwvTc{7V!JL1n4mBWlW=;?umQb(bqq;|vA)0a7B*>Dkw-4%=m%=x zYIu(lDtMYE+}~uZh0+l=a(#`rwhxZFt?d#^g_$ZVWi_@gDSYF1s)MX3b-k&~Izztz zX=bVl3pU}z4TKnbw7OikY!UXQQbB-+fhk1xnYh1NZBL^*I`}kobpO{^N4F@V{|l?5 zYYODx5enpn#`GG>Ja7%$_JW{H@jlBoeI9DT-&Nf%?lUNXO&f=fZeK{v)iiEeQ$Dk4 z+zQ83jn*+X2b=C{%PM;N;6GAt&;B{6CP#(nb%K6)bx&fPemncSf#lnb7?wKg*t=?b zucR8j1=xmRT$vPX;W-ZT_b?|2c7`Zu%UHeNOm9ANOo8+d+EJWTqqr|k_ZA!8jZdb| zB@11w$Km@pZ62=qT7?w!8<|?r#%T??LHvhhA@Zjk+wR^1-l+^!Q`21|nrX*GYn$ z2A5W8+;4-M6{=WT#&E??j!6tDL-izbvt5ppy`OYUx1~-KEf*;mDeDR_8 zqceW9|F-BA*cxgGHppWIX@3DWz?%@2c8$j2FMB)o{r;!C`R3Pn^Bmv&gGfvA`r9y1 z5smbNB+GDU@{jX0;2ji3Nj)S6-}1Z`W8f|+rrxTNj}})RYUa8)@XYf@TwVT0E|S`C z66e!|J-9q-;z8)uu#CFPryG|uLFJP|#ueL`1c9W|MsOP;s@g>oD^3{JpGfAU!?8rO zQ3N#8_;%xLS-$2R&H^%Q_X^SHVmZsCq*tboS?KzKjTb+N@!$tM-RBzIZ(uEO zQ6`%AV=EGeN2<3!H<_xW;nHc4LzHauS9ubKr350#yv^}Mj7s-_3^Fg7a5Pn~$sXyk z*XS;BLoG?{H4N-nlD7!cUXd!ubcXAjmgNcE;Psrl1&fxJzjxF&e4~QWiPW)sKp2q} z-$>(qT%&;m$mtmGiFC#R=Ue7++kC6Gg+yOy3u*eJ0Ab4won+ijsf`ZT=~mQ+I$r9z zX&6h#mD60huz=ufnN@1K9lPWnqUIcD6>>0PvSFR*+`Mu7ONnym4DmyMO|2yTMTlsN zgc|J~VaOXD??~U9B6PGsDWz~7hm&AUtZ9+K0Lc=hT@n?Af@D7BoPcT|8Ljkmp7twU zJAEvYiU>1MJ}>8sUuekCmk~>O_76do79(I__p$!Z&S+NIah{k$u-ea*V8fK}5kA3~ z!M9V}HhFVU`{nkcf1GVxIok-~e=S>6yw%8O%$Pm4B&2gtp-z%fGQDTcH6K3IowK^~ z`qMmyKHc4CI?G>eLfC$U{=oKzFlueyc-Ozk*Xi*sXM|$Luwq#9Ao%iCJ#DQNciw4u z6)Z#>#5&+8dP8VWU2W5iFgfeyzA7FZ#>H42Mjb>?0w1qtJyz7;n_ zkRAztU}T)fO;$4E+p#w(4B8(ZNNpZDyaB;~dH-t}1E#k9Zm_kxIrzgL{tzs^VboDJ z3?}?wvY>cTaAq8J7Uqw8f+t6w~o^(V!?)03%xZfAnzK2g_&y zT!*iL0a|Tcy;OuODp%Wz9I!C5`rxEF2(OaiDi8lbc$bXJad0$&qYozLp1qydK{!ZK zD&l0>PvRnn838(2^iN2L$EA##F_V_zkpjNavnEpLhN2QCLvdE941%GaI;jNB>P7?z zuMkciT~3$vjuZHfYrG;kJUR_7@XjC<@KI8q11$+|K>!`W>vGtN@?kJM39X|MtD}L$ zBdV^leFwU1h)XS#z#?1%eLYV%zYdld6QXNVVLFS2kq_Hpvs(iyVbChKV8tYTM!``w zb+e&>pL@@-)1eR47(fR=RF-OHZI6 zX+x5sYdZ%DGiKhEcx75=ufIvm;i#;p6q*2{J8bTJfh$S83;D%jIL2`-1{Z`-jJ=qb z<~?!>`&A|~d;>e_!RgkOhP-H!rnRt~Oj~NvS-+vljwQPj`A5M>_v@KFC zzi0#g_1h$$njjt`G+o~pm^6#PjB36i0Ecoh0bF)RS2iZe9K;=>N=#|hNX^BLze%s@ z`YZ~JX&r}KD*fCsa$uaq!k-yM7Si!z6N)k#y_WF|rtYTlLK_XhK~Z%A`w(L`K@$gD zLv~hIifR0x*(D#4ucA4N!e?@S%~94IPczFt^y&xlIs0tkWpu9ViyvIjG!9vy+b#{w zS?}AIFVxzmC(%6%mGkAIw5tUNU%oo$f(TYHnHH!dK!tl_c`57>7Nvq$@X8wG_q0GU zM!8ayB2;Yq+_}O+p3H&6{(bC?q8E!$x&RsQ>3U*HU5A z&JOc)!?T%(ioZa0i>ikz<<1U-V{?C?W%%Ez_7B7a7-#+FNXjz)u6 zfD*Fgtnbx{*rbsHVW6qH>sN-QPrcG(3gLstR_e``)4WWFbQz1*{iKaKdsAzh07cE5 zKaZ|enLTg)uWJRrp~9h8SZ}13iYGyMiCp3tySkH!1b@^;YmJNe5;-}qO0Yz*cEJ3e zCFk6}i%?A0pz3NjL3|u!c$A&Zrr&K)iKSJ&+ zf-Fyf&q9NI#7?1-k_DW|LiFU^OX8=(BQ-SmFQFT$HCP&6t^{yE!B=oEOwD|uzF=CV zM~h5_^LRoq2&~_qA}$og$%}7cbjU|W!V#Jm8qaE^c;ivLFzBtAN$2M%87EfGQSeaD z+Oro3x~&ehv8Q(yz-3*3rNk;(2vPcqBEexaM}yYr*P$$5V8fU)CTr^P7Zh$rWiGUiU0LgMYFoq;X0wavm(JIM7#Nmh&;BE+{pFL$TVyH5n#Av7Y0U zsE#rG67DmrIW&DoW%*`$wNBY)Fy(AA4X)v!D865{Y{SH#UW7YgXP4DudHpo8F<7co z;;-)d?;%n@>@MMC5{u^_l2y=aOEAY_f||7KdS<1ODIP@y&1L_<)#eOfol@a{4=Tt} z!A8rS@?oV*OnH`JcLymA89epAENAD!(yF2FKNmu zs~JiRlJDHTz88p>#jLIDx2r}opaGSPs=*|f==Ow7%lNbl1)FTshK|hc5-A9dDsZ$* zc(X7N1qE`*PxvZeDI84=q`h?ivI}O5Ahj$H^CZM?z!h0fbHc&5OXM9#xLy+Zg)kOE zyV#egnRtst&GFkiyRD|sh^}oe?w{ZrjgW^nM)*CcQD9@}XMH_C4I0X>E z0%Y(NVaK^D+(hI=6bZA`gqmoGTR$!fiVS!KlP<+i*b37uO@^=mUriL3xMQ&MtQRP| z$yop9r-rp*lSce{Q_Dl&;HqJ87*F3J4}s9Jw7NM;7}cAgZEzSc)*#hdR&+k#A>peF zys{;~=c(?|;?@fFIR@O`;qK8uEI51AR2XEsO(IAP1tWI~!{81i&Wn>uLr>|33{fFp zZq)kIVd7LE^q@Ik3B4X=`2fwqdiF|{s>sgg)p6q5HKhf;O5(hq?-d`I74?br2DpVZ z)s-`R)#wI1Dz)yH^v4Xq{8fxEK7J7XuS$ca*@Pg-2Lc&@-0;j#Xs9EdF}vQJQ^qa* z_)+q!Jz|g=&?v%-OneaCa~0j`1kHhw5}GU1X(v0vnjC=?t3V4AC&pk#veCjCKa-Lu z%uORmxVR4-iBsxw7#!S}U1NSEKn~^3j)JY*u?X&dybk2D(Ijw!AhL>3nOQ*Njs}o) zFyQwtDbA$XB5`xG5Z75M-8CjtO+xR%6twOcjZEkjL9mDj4Vx)iL{JilU8>7LxRMFD zDnV=DO4tv-M}e)#Mtr%!Hz?+2k9d^@Iuo)fd;x5?h|qO~>y9p~r5v2y)7Tgekg1d7 ztnQ2kH^CVV97=LLbbCi)K-&8hKOtCxDT;g%8!zC99v&U;;D1kd{*Kqiqz+mV3F`@- zb%$9?H&AgnPVpbyL+Y9&@9#AV5T|@qsexe~O}k!WHmU91OU!D#%3n&ty$PLz7Sgd~ zRvyucrkdW%SIHV|M1J!H8q*>2>RXCDwx_0I4mw=} z^b+k*J`mlAjEU)r$$@NZiVI~?+Qhz<*mFnf+Dthvj<{P^s2YcVv5RefneJGNwu!Da zZTs6QWDOjEBwyuOIVpnXw*{QrmEb*ECyJ+GGHPjIAh}(M6IFq`YacsXbl~p%EVaJ)ThW(5h}0*YQwEUT%rMBbaKCE)Jvq=BlOi(WF^OK`;Mmh z-Q&L3|_@VjB=48L+;nSn$Kqdc1!cj4E6p+dPNCbqV|@@tR_xg5RFQR!-xE%CTVU zXm{7c%j}5vW?>AqjVn553pwH$z*(`VYl@aq|Ht z(EE54-~VVZ3DmU{olniZ6LP@|jOdts=tUoTcYy&L{^6?+&!2sG{^gIgK2>-&bQm21 zKfH{A>XR`VXkb+IyRK`?-s=(1T+ALK=Brr-S$Zvvr+btqUEd=SrGX~j21CtIq66;p zt)qj_13BbeI&JX%3U1(tJtCla1Rft*j=3%K{x$286t|MsHx;S zncgc}mEi{(L7+UeYm_zPJa>Y}dLrtB9z5-#2On~~`NU9F56z0^Nddw|qj(YY5vmX= zVI;gf7F{FW`Xamna|wu(rzSNL-IO8QN!BpRc;k)Y2l%DAA(zrI1~}tWSD8)rZ9n5} zNbd;t>5L5iLGGk*Xb<1)_c)9YgUKKuGMZxGj!l!U!TH-bj*}+Xyu(Jsv3uvMCo9VR z%Z`~XN6U9VRy}QEYape7x~!)}g$#NEezhDte};SK^Dh})zs>v7=iK?FnXVpPc!I&Y zQNvknUU)Hqj{=7PErP>ixxaj|JX(Iey#J$~91d~;d8DL~z>ucsWiivSuL#zIf9zeL zmZ1+nzv7=iz#D#q$LC+lGres+c=-aKyPv+fJ~9ffESqMBEjxOxUUIGLrWY2&BpD=W zWAmMGH87T&{jI${gJQgCDx-p^0!2d3&oYYQwpADs2A&AWa|~JkZ{-4G*@yx+Am_iB z{fsW|gO%~nUlvlEn~KcQ!_wfV$fz=dr;6BY{f$x+YqA6yrTGbjrF5 zbi@X2L^H>i21aVqMov|^#GiJ9uEE?ZwSKlPN8BgLe% zIe%utHA}uW$PLHD|8CU4lGS;gi%|q&vvi#O9_dC2oLL4>(mi?Q^%iULlK3p6vtTJW z!EUV0xrQ0{=5+V@m*y+pIF+k&u64$}**)dGio-GAu|3ebk6@+EAEVn1@MP#6ev1a7 zOh}A~j0T|`jm&24Zh9q5tPo>kgcw7aP4cv0!Vt}lP?lkT0uK)x^q{PG;NtoJ&B;#x z4eFz}IzWA}JZe1wO}!FE>jqU8X&JjIOCRppq9&Npj&B zxJRDD;`g<1yk?zln&3Au8{J?{7S$9Jt$x!9Z8B{#HU8&^fzHqLagZN!=-gR@ooZiAfS=pu@@Y5d2Q)I+t2Mh~d3 zufcyd$YhN809bNv5#uIqRVZ}8_Vjq)Fz%Op@Y)ld7+p&XSEp?YY2d{SWeq0u#u+mk zBuJD3kfH_%iq+;g`nq-rhwn?P>Ft-%@GsDM2fnBSy8Q2DXkLw4} zw7CBYRM<9F&afi{uSd&n^_St}jIZMGdI=9Fvpr7Y92Xe+NRaL(LzOt$nXxui_!wwJ z(WD1!w`SqdMs!;2`Y3DGemzEL|Bu)!KMfJ)F{EaFama|BmCz9V>+IG;mL*}nU70#V znR6GTY^%Y|HmVw2Yjx<}0+2<@6MK;0aqsHv-{?Im8--q$sSS4aofDnMqF_@W=(Ttr zj~GQxgRwYE&HHKzggc$yvk1@(1{a4#f?gDvSOB3sjF&WpUX-I=jX8855xx?yL3NYn zbNunpWLtR46A|b#u$vxW{`kUgmwf%0ec{-r0%mL1n^NvBWzKHKLdr`;X zKRcxJYyc2~&9CD_w2bcPwh@i1&|cZS(L?Vk5s}o#9kB;G=JLQ??~C(2gC6cLL+~6_^&{ zAZC~NdfP(RULGH*PiX*`dGV5&I=LfYQUoWem(=b2mbb`-DCqo_V_o4x2MMkkq^ph2 z!YEn|RxU0BoqW*HVN9%w?iO68Oyj!=!CD3@@nyF|C zhUBQ5qL4zGCrpm-5+p*-)uPZ^pbRtuOf%oVjR++SWgV)ko|guUR}yI@%rVAH&=zafUXtBFVw<+5-jBCq>jgQxZ@+5va z*ue;UvHeXYZ*I20s%iOwc*iQ1-YTcUp`J`eXglTTIZ?mKBl6!CivLCh4>NK#FeZMz z;5J7vY;LbXh&G`6{LA*i$wsh ze7kef-#a>ND*2Al=4E!_A)vF*Fk)Skm8z>tVUjH5o`;P|`9qr7q{tbwX)w{$$uYDO zznYFMq@fZz{>PFCZOA+o)!tMZ^u1B9Z-FVK{cGB8VQ5MV;SIa$n@G-3j zHXYN-$}Z%s6Lo;9Y&f|7Xb?p=%oo;?RUXUcw<>{vWre{0c1a6Q2JF&b&rJ=OS;X-m zs_nb2Rp%^G@px}2&dBx-7Q5>kSgk=D(S;zv8f0G&rL^kX*+9UW{7bO)`AV&{6}wFG zV){V8YuS`=rspqOS%FR|3`MAf8hV*mlQ|>PN{{f?Pt-U;--;}uPA^$ANy<}Opm-Uo zk1zNUmH44Dgudhz@-%8*4jByiDdIjq^Q}#V>}wr{V$2}Qd|YWJZ9iW3Xrg}@+dTh_ zw(cPJ@zfMT*!-&$7_z8Y!EMV)7*g43G+p$>@`!AX-be6!HyLr7l~>m)ZX1?|WK+_4 zG^*E~vCl=y#i7p$4h!0hu8f*#W`aFYJUHCdN~U+x+hjgbCD~b|#Pt~m9c04n=XYy` z#U>b-$nj))KO>)BEKp|THiAr`GIIF2!V((y5;h(|tYEyuAiOFhUQ*}|q!Ou7EWd+z zRp1D2Ln9b)dBY{|9PLult#`tjr{X$9Xkcb(u~n%0!Xc&RmZ^krN!`v8h{s3ALcCq<6F#}nvz3C>yK>debEyzevjtWrvEM;4H8^KDIYH=J zdUqmi)KCVs&$yuFF0c|MB{xS8*K{(@}%f`k4hJbXzeo88U}@nGn@SS%zAGS0ANCscYZ%L{zo zVG}_&oGWeJuaxjBdDEA#8q0kp+59hqF-=&V$0@NOL~D^{jr=%@!^@z5-0h%Z_0Ty% zR~yF%<^zZ@CGMUmy5BI2;Huql7zin}3hBmNd@E+ie6YV54uh0-v|vGkDl+ve>a6YP zp;AmYx}CM7zELi2pp4p4RD@>e&6kLrP=iu%6aJ}^;61}HKEh?Pp}3!AIL4gAF4*lw zD3T9tkJ8xGK*ZuUsS|I*&4BM{OJBi=t}S^3y^eSwzead5>=rE3%~5%q5L{*}jiZ~vCB;n z(wodG0-v@jH1oJOj?o=v>&s`)o^@VlS7m`aX)n9%AutHx1W@o;JOeqVl5?L?J0QB9 ztuMY{oAn`vAP`G1IwPC13?P&!hT@z`krG=*YF071ofNZP<}}b^N!8|9NYoRe+9oEw zpbTI~6X#45(l*n)pVCoX4lb(fo&DI+nrl$lD&A;&nsqDmda|Naqy^&SmASP~!!jGfE3eum7wwy`Q&Hmo& zlg*Pq(>g_GfR3XBZ=*_?h^e7@Zo1JQZn5f5?FS6xmV*2(h><8t0<3{(t3hS_YGU~3 zS2VXfW>~Cd(%z|f?&d3|osbcgFwA3gLGHz)%OIj46jq_>d@hB4VA|L~v7jYPajt{{Ht9Z10@xz1`UkPXBzo)7jqJsT?e{1v5en$uJ2o7P6^&J9 zmBf?sE9_ABG$C_0zS9ntB3OHugPU>qB>2sG@Rh9!FPOB^-ap(?04g5J*P)4tBVHMu zHgG8Xdc#jSksI_~u;bn&zzVJq3DF}>O5j|kqhesLar1z4zd0VLaI^jA!(ge;T03Xk zdD6iMK@V-rt!12zc{%v{=rp(tC4lbs@nfo`G1N0vu=_jPWFyBsn>qUlVTh%2>5(Nw z55y89RM86dYejG;{nHXhIB6woW6?4LLU;WruNt!zAIzLUda%Yin+&ikL&Ta^D8@E^ z!{+0qi{(eLxUi_1Br$lx3^e5{|Im^R0)UgPyOMgOu_9jCJA6Nn!0e5w+l<9AmhE3j>9Uq9d72EIVqBoo|niPEG~ZpLEY7 z<}i0ii9(JC_+tF9JG6-i0U;E>nLQ_<>fMKNYU93xxL7O zgW4ND>(!TBvS6l?Eu6ob0j~a$Q=V)hQ^#a-rF$s2Vr;{UcOZy4wru2-e7HiYAvJlo zr69#C*6mp14wSo4Z-y~e3UanhQnLx$Vr&d)PjXySqY!zJip5EiI`&f+1i zL4_q6EWVQ_#Q?D9$g*w1AqBq#rP3-VN!F2MtCqAYCLaxMsemhe@ZHQED>#X5Z7k+! zLE8(VYKJ&tznH`btOX-Pm!pHt>SkR_*_GG;aIBB6(mBalGS%uXMt@fyRX`?fxN;J( z1>9yhRAkc_jYdUhFLjJfu{s>QabavcY%)uNZYqic#-w6d?&}mVyk_q91c{JA1N>{; zJY0JK#jolxjezk*}^PwcoFW!4H>11`~^$_2MF8<~N&Z!jINzgKLHiwS;__Bk;Z zlPnuiL&YpnZ}-W>#nqVq#ukdJQD(^{3ng+bF_!qG6cJ0}1=99dq|VD&ZxJl^7KV#9 zm2A6KJ#rv&Bile841bE_$qY%Zp6v>9^;}nu`%{cty#%&}js9J*gvJr^lV#X|mk{(} z2tU6Kme|e`(+`3r*o&_4XWt;hqw~=o!p>i2kiHMXE8cW~7!l|2{B^KIIzIS$8Z4de z_up9k_g zd=shw{*!*GTpCbt;tR5H02yx|8w`0Uo8Z+_VT`;KbAi?hl#m@U#{f>N!P!D_Zqv%N zAr*sMqVcdK8h%FuXTk=E?jam8{*r?;6oGjb!#>)WZKBxq?K5X#`2Kx2dI1}^5=US0 z-I2}6S~9FusumTC3AS(vrxKd`;As2J{?6y0e-1zU$FE*K(|^B(A1oS}CP@fm-h%y` zLXfn{B7pyOv>9K(h#VwC7(Ebv@@zE1ZR8GabP00awD z;Psom{p|s8wMz_3B_ZD+0c~Gse>G*lK7yj+j{!SrHZs?*rpPz%wl<+Vw);mtTyq3+ zUg$LzXR`ewl;3}M+{dsJuu0!e3QQhM#rjhR8;hK7p1$dG8S=QQ6*@lN8oWJ#V`4HH z0%M83u)|7MP?5eA!5@|E6K%;P=ay7oaiYzb5HyqUkGass5k)r#lCOt+D-A;3`1rz99{#l!sx*;aN1X;1pgKfV`LN$BVYjH>FYi%g`vNFbq+I^Zxc&Nd}l`M zjIQvj+}$5A*Nq)6;`s_yGssES#S10G9-7%s#K7P%3r02mu_1!@Z>T6K_r;r&TqQYG zET!O8k(f3d60V1%8kX--Db;AwxCw-&J@frkE{!`JtfTH0ny`r#(tgN8^w8Q%jG2FB zvx&%FYleA_U{;sGg7J{2YAG%`uoH{6Au!2(6#h2^=of7szkXtM4%+ztvo#20ne~)QB0#rn+Y&XLDvX3lC~udholzfJ*jC*B7#9d$EhGsV?lt;{QY%zAsFe zN%d)C%Y{jH%QvdiTil)=5k8>N+K%hrCeid->|3WCn922A!{EkHG8@Jbb|Rdp@39M< zyNYAh^^m8e_=iriv+nwHQB%F9i^eL&QLW$Q}#$+Zuy-%BYi=jt_V@qremmNh_Ep zAS809!l%$I%Rs0B^N$R$Mdj9ia}ezH=?bg==Y!Wr`vLOs9YkLzQ$N>e6Glk`oi0RV zw@;SY&{yODKMW}p{j_3C2TVubKbeX#iahkik%VhDc9(bq*xrQfJF^7Mg`^&zSj%eNGXin|!V*0IB}@7w=&>=b%VB4e!L%H%Z-#mQ^5ndb9_RrLy@-ulLeH~oNSq}}_4AnK|3XwXepqhRn6G*jK@cxf;=Db< zpkkGXbAl_Oja6`+!RMVZW7T7-=l(&kGFSOJEAG`x>0)~nP9E{DnRQy;hraXH!Vb@E zI11DAf1bZ{e(lfgm`RAxs|ThGD1H#EVJI#f1HyRm8W@ zffe}X@K1+F?+$@Q`F!Pbj8twDFg~a7Ab1NS8LL6(jlo?QUK0am;}YQOya1|BVQa03 zel()}$k|9>NvsAF&qU%6&DF`q$=EY{W@R2kOR3|%#R@} z4;sj+#iuK~l2qPpD5Rr+J3=jgo~{&R7U@Ybz)+Bihl^EkN=YcRwG>B(KSc%bdcFgU z@j&)(n(__!k@kjnKdR`-5$qE?-)`+Y2|O1e!7xPDV)rJ5p}L~xT0d`I@xcvhcdqDe zS}GuRa>qhp9vnV@_VU>?=l)d@M92jY1cbr%9te<>@7AN+=SNqg^T6Od(wY+Jf|~Od z?^hT>sARKur|>BYJ}eh%Dq3?lr7LV(VF}=+U_(inEsJCTQ^NwGUSy>$eK2}8uh?=` zBcj$EryZng<>V#h<1`QWLZ6IV-GM1$J62|jqe>nNvufBwhfPC%;W{T*@&$j^s56@0 z(d-1~6~dmyzAiD{L%1{0dw!0m!I6)1Cxe6rjXA!QMq_1&jK|Y)>|0tX8L#S5iK9-j zOJEaTF}HO)}F>umtw26at{>%HcN`Ml}OTFLy5B*HtTtC);s?p8c+V37t^~R z&%%r0HdH(~%#MrxX?gP&3-l(V@+!dyp$I+zDSR_PSOoAyopr8yIQBoFJAjpyU;gq> zdzI-4sDtth{%S3t;n7vy)6Mm?$_mpjG3tQQw8wz(&Ai?hv?+7`X_z0!p@u^zh-hgiN3j!y^s zN1NMvX@>+6oe1`?cbkW&JKMp+-EV*$5x~%8HoE0|go=X|V*f_V3z04Bo?WC9_Lbe# z>oCW{duGm8ItG@MS<9|XASE2>o8v3SY{zk5CaVD0ZSPTv6V(A(GgfN0ppV&7ByZ59 zGFIQLvWXN|+ZJtcmxk$Dh;gwgYkF&f&cs<+IMG~~=Vc`Nk^kE{t6-{}LsB24i}<{AX5~e;0){Q(Y!XJ0Gu0eO z!UdvGdE+?5re2mKcC5p-_?J7zVEIe5sLO7p^Ow@}eq)_&Eo+Ll)6e~~ivO)3W9Tk7 zWRgh{IKirdCE%fhzr0y|(!n-bUoj1(=OV&Fn-TwO6qAih$KwI;3RnDs-Skz`#dS3D zO3~q~d(3cl;eaEIQr3tUe zq6VdSUaPz(Q*u%a-B+mr4#?X0D7<%0O<-IR3uFQXMs!U+jw5U6!Cuu9mkomL;o>qH zpwHs~HrYW~-XXK+K#F?V@F5M^4Cuk8^7PyD>2EBS$87~Ia2MO>%0D1HTuwPwE~<7J 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 literal 0 Hc-jL100001 diff --git a/binutils/po/hr.gmo b/binutils/po/hr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..14c292de03882b95904c28bd890780b75a708ba2 GIT binary patch literal 21549 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 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=( 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 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;$ zg1*at(`2m^i}7j2WLGb$Hc~@FeHs{`;%J377&w1mp=NQ*=)o|E+KXKY1TNmj$S5vW zfdNQ6cUI{rZ2RP^wAgg{HnEz-Hk)+L=m|gM?tX-+ZX9tD&&Q~kK~b{qUML}!(d4!z z1_q1Gq@Lp+BhkFSM_Ea^FP@#`HpySbQVN=?ifO|lVSG5MVHuA~sYa8=T_9xbp6ye< zMq1*)9eEeg8k<;Q-Tk~p7p=X-KJ%|^Hc_?Dnw54Nfvt9uVdE`N#Tvkjn#W%j47fgi za)-b6RE}>#k3plD=@i;V!ib`C zh4ZKxDWqucMWwt#%6pMA2Fu@MJ+yg?E^gHeOM@%KHQtn$yyC*Gv?0$~P2c2Xsipc^ zv5v{iTB8*!$3;O9CVKZnjcG+(rO-*WqsP$&r~=s+1q(7_KzJ(wB*AX5s%KvWFYhOT zSZ;GyTrC_+sXa2&J39*E=vC4Y)taAMpOHhSO_$n)We)dhb*!*`EQdi&>s+TT7j>d< z1%2I2FH%0&vQZ_<%OQd$F}3pah)CH=ONVIvxeR>z?3xiXkWF>(NKWR&FbOYeK6>zX zhQXEWlddmh_x5NPSySEFm&F%~G<+|Zkdx})#+D1M<{`hRb`Fs|T_BV|)Y^{AAJ(d! zJ+W`?aF8a~iwy%EL(b-QTE$6(8}&X;f%8_e%(@=(niRh=?~{1mXZn>r933-I|9hAn z4#BE-Fk|0|IIqkCf4yQoWW@Yn#lM^ilq-n7u~Io4*mh+_4wiluQvz!-zLM?;I2?zI zfe#{k4CCL{7{pUXt)z5)K--K6lSMv_;Wq&!kvA2-g?d>ALJ8P^WPmLyx7B+K$=oVE zVXgjj;m*>0f;@Z)k=V)9&o$bFRnnlR!&TZWwVV=|D6yOEQ1%o~Df!HAS15XYC$PB# z-elFkz_NXmjA&x265-jHXW~O;aeldD=_MQcq_6aa1+2c^W+IK*Q}o`NCybkK8jcBL zCl7aD817C;I9gar{tH8vhPf*o+bF3Vz_!96*j6&izUzkmim<>@?91c*SJLeS?aS84 zKGUnFUvUl?=3{i@)wz#VP+iuD!0oE*F?%e^*j0LkESpzI(n9Imo zaL+-OMyGNl7QwZK`yMk6m98yK!{Q2}*_vDAbcoFvm7eZ64WUmRs zTW9{O%(ZU#_r=&i`STpRSFSicA#To_9yYG_bjP1z+I-(v87AHp9fWw7B!Jz4HF1n%9uTS)@L57O;K5E1=q< zs0z4T1v)YN+Vs5hf%hVOFbt73>^-Q!QteWAt!p@+_~ZbUK)dvWEd>y6xn$8Z7Z$Hw zy>a!b^GvItBjhOva>VA$9LSlJ?v|rR>I)a6`@ld$(wP#pgPe~S(<=-*)Me{yb-(qCcGfw1W4*GqJp%<77Msi2 z>RR{U70gg>)w{bj3@VBk1@MI*5D2mWe$ixYsJf2b6zHj7Z0wsi{&Y>5nSe4V&){E$ z88o7LVFsB@_$Xc&8@=+XtHwZisLsA6qyv4Do&H5~W*b)hD~Zan2V2YCIk@GS3+2D< zH80+64#0gByC5qObqwjo zE9S-KXN#ATeKZW(O2sknARQ~cVook*mLE5*)<-25gcCxE2cIMehP>Wv-tV?hDA7_s zu%$FmQV#6g$$l%JU6kGCImyk=rd4W!^osAiF1(3#?5%QC=Hp~}ZF7EUYDVAoutEeh z0{Zpp)Z*IgOfr1*Jzz%!V|0{lbNRU;@WVp5;Ogjb)#i2YE>a!)I&qqH*khGrX3ob- z2Fa9J%OU%LlyIb$PInpR9oK!7j0b?)9-|Z|ssl253`!ONmf2h+Z_uVP#^J28sVWq= z&06494cj#n8)TE$%vKA1j+@=g2>`=9FY9Uv7t9vxu>6JvcPkXpK~Mw;i$p2ef51>~z;L|Ed7wJZ6-O7t>EDR)Ky;Z3~N=H-R6CMyn*V|7k z*wvkGo&E3dEdK0>p;~@cy`;x(tn{<4nf+*)8O>|57T4eQ^D1Px;*z0P-8NTQ%MvHP zRWbrRbn>%%moAsEkJhD3qwl#Ove0LQ46CPP3RCiU0DS2c_hI+@IO*a_8muKN@r(2N zaCHM#wq%cM38CAj))sI5fJBXUl|CR82xI@DIs-@#`Cp*RFQ)qbPeb%gcuf{H=!@sv z$~2ii*RpN5DYer9SsQ-}@7<;@F#L$cJAn*!dQIO?tJWTbov&Li8wBKGYp1%2u92HS zWH&3_BV_g*6jCo41`r@uYd|7f;$T9naZeX$v@`~$+nPKU$mqH33+5le*1 zC6c?+|2pY7_sAs^##m1)2Wd28quD4cNh&G)qoWkS2^OJ_mgR>WBWRBvgn2WU7(^Lk z55k#4j@0>*Igb$XS)2`qGv~J4F_$9{a4(xh57n!|OLj3VB&Ax*RB~s1oPPqeetH^n zyT^7L{&PqyuQBgvG|h`zVLrtPl?-C_PTi%Y=FbQ_ap&&L=F05+()8xaD^sD$zvKW_ z!^8!}>2olTVRD2=ak8{b70yT0G7>ri`{a&?=^6LhP$@wy2l5`tm|Mqi?r>ij`%=Am zxe5lvX|o%-s07V-XPYD*VzzDxCl^ivjLB|`1C;Js^e{gnZY+r2D5a_?1rU-`X)wXz zGV9YE&E_R%63jK?WX&)!w}bjbL4SRs^7TlZpad$ zn;N)h9v39~Rr)U=J(9v=p|h)>%q}C5PI@V#dhs&|L)txxjKbm*#1n${I0_zdMdOYZ z*0E+%qKo#o7>}`bz^p38OsSS|Y2kkwJHVHA%pa_JVFi;uH&o(Y#aJfmTsdf>B+3YR z$l;=k9XlzM)Wn!nQR4KHB{OqV^Gh$yzE;Asz>FGE6MWs&<1FT7VGdy@oNW39^YR1P zT4k3E$(PaKgUr|Y)p2u$z@AM$!)Mr{PM`~mcx011m0kM-Cbf#^+O0)7UFZBeL=b_Q z(c<0Mvf$|YmJ)j&4PL9L|F)Q~Q`ak0&6O0fr|R~P83Dx@#ao2fdz+!1qOHI|8lj$w zUBq>8D_&F!#bWm;oFWt<#p$*|{*-^5OW9n7f*p`Z4yHLA&RQ>J+E9E_s*3o6gDe>& z%FRx5Q;ga+$z}`v1PN(ezVeVcKP=@Y@jTLk^dWXV@>o&Xj&^p zklloZs!M_GT6?<-;-O<4YT(pGYp?LL_tQ zMg=ghuBEC)B*Hj!KpkjmilPm$q**;|Zq}fzUY<(4{NECvXQy`5ZDj?CE{7AmvF2)Z zo?e5GS;=`IR>?d?^dKk35B)~ycruqOv5kvzt*v(L0PiT`!*T7535=%53%X5YAHXJ= zbGDG#Mx94H-ESVi)(LVD+ApS85W*!xzyE$&Ua?uwfC4XioHjPh4E2+mQ@oAnB96U(tmZlz&_9LeC9glj2Zke>u| zRhQBu!rrJEVIDX%8c;q(5hn5}WcEQxjw?ToUe}%$J?G{xV8XgjZF(Rm?rC@~l1m25 z);lY35%mFT^s)t6i2?U*71YI=*iz%DUveYbz{J-&KQNmKf*p5d%! z!q-OHN4+xe{6dbS)D2DrQVW5RPmsl%aH|t^YsbDDd~i(rG&zl{DG!*9n7y6zZgjE_s(Ci4W$JG6(vZL*X^5F1ofA z(yFx`LOt%39KvCrP11B<4FT`nT_b4kAb4z*DHHMP9KO;-svwo{+~V@RwUX7(<%y${ z#?*r}c$y8jDpgb_RlJ+qC$?4@h(YOpfzK+PrlS~4%2e^sifizDWH3LVWk&v!NA{3Q zGP%(SPl~VuyV_f;${9PP@#e?f3ssSifcCmBj%W9oSH#EBlr*> z&S$u4GBANLKV^*N9b3Iu)O_U^5sL(mbfML*?Cw`+G@Cda7=&psSufQQnknn}aU;z~ zmw!+IEEsR2dUOR9u5GBxivWS#e=@d}+1E7w(x~qn*a0ua`~X%%4>A4?lk5LtBUSoU z!w7r&hs{PFF(+-2cukM}n4XkJ z<2@MNi|e+>fgzkVA3$bExFK8LFH2;?kYDwN)NL znc!cIvmH8dbg>&X@oDuc*yo^KN=wQ=7e+%D-ih~t<}MBm)oS$8QO}dTCi<0Y>eW2n z|N8I`x*IkJ{Vd3pOd6QArzx#LYx{M5V$o#NZ7P_68Rkr1IyXPN@bl(C|b!ch{ zi7s(SDC^M=yB+DL<(1sdbpj?zvrnm4QB#nu@Z(Gk5kaU$jF-pmk0f%MkiIICx?f4y z^S+p7d=-M@s|bTc5(3q;f0~{f^G;aeDXS(W4$+R3K2uLK8^zQH0rZ^sec#Jo#( zKBXQ1Hhsim-!^g`s#h#yFRs%HkI1%x~bxVmj=ZJx)++a|)1>!aQ&kOWGfiP{G zK+@z6L9-IU)+`13mr&_KQjMB?G|>13p@seD^&n60#Ac%t%OT|3Hytw`A|;N(Q}V5_TWk|q5r8iwOeRH}>%ylZ+#r3^4QN%(UdU_9eOGJS2&AD9cw)Sus0sWC z7Xh1NPnJ+z@RSv4RUu}gGDNQ$7@N7Bb^1smV_1z15}&i?#DE~KZba=V2z9#DQBI#2 ze7WN|2CjN_+4%2rMGE*si97(BWZP507l=dwf5u7(=W4Vj4!^D@td?&lNzlf%t+ZOe zCb{oZj%&rR=;iF$w*~n%S~a>qbWIq$zE_WLYDBl_*ie|skvRM+*omoVLY<6aqTvQF z@={5-iS$)nU2Kf5;NtdM+c$mnpwAT{TL6}Ao8{s<7r{Z4W z8K6@V9~P|0VEJ_5Op^;!oZ=Y92LE}XcU^9Y+r6_gogAc_k-62RNO9)sO@P<6MV)W{ zaOaNy8>bxKG^=71>Lu8iwdV8kEJgDm>>D{$;_mcQJ*52Gb<{B*t$!HI!m+x@bv@Up z;3p5?%g4<5?AOe+A?^hV=j+mx=Vn-d$qTD5fLtn;8tc zl}sZ>$z9UF%sKDECdlLWkA}Po@STFp<4cTw@B{hxmi+tACGl1xSyBEbg{0@j=0>j` zPfB_@;vb|G(C$+$=102Y{*Cs5?r)Vw^~`CKRp}dsjNWvOlG0Mdt|^2lZr%^FMjW|* zIr8y_{U~=tK<0VO5rS^NF*ocD7v_Rz&iSAhRtYsoL}?DyyJPz0+3BCK+hA3^3f#!1 zCg1F9b87=+yL)ebegQ#bGoRJ|Awp&)aAB1fZ05yg5FRwyt)YU`WLRCBS{bC(0j>Ph z&H`!lsAoZU*w3G)C`zF%Nevk-fC3&(<`o2zWJ~7XF6mCPP&?#K+#x?GQ;6v++zFy# zWJn?PI7&t&?v=?eTLmTZebxPnPO9br5@emyAqoN-JhY)Pokqo>r5kv1XB>4Eb*2dZ zS5iw#6c9@foG|js?IyXD&Q;4MLc&(9(e1#}l&_Cnzd80VSBDr-s=Scx)~e+@-QBFb z)*MHCsj_DM@ou9#)@<(%EibK=`IV#DD9=)$;Wl$+c_a*I#_$>h-HvhY;tzyoQjrbtI1C$@!no&z`(_{`kpT=U<+m zoPU~}|M~pv{EPF)@bm1+hso{z8e9tX%0Z)czge$s{}}e^{j{?WviTS+*(B7+(o}gZ ztpFdhnzpy_(!7l@5Qye@*=B(SY7Z^UEzH`cK%T3Yq0BWX zbN%uUhf2>4SI3_#J$L>Wn6j^7%HDeJ{5R(hVM3miCiE0i9-n`H{^=%TqEFt&qFM~=I!&M<{BnB!6_j}M$vaOzc=8T3IW%)cCj?lF=NQh=s#?-fm|!nnpy&W-MR&kxn63MJEgX@05lx zcqe*RQ_zo(q39`1*oU}fzvfXuB@byc;-=;~q(y~)v5_xvyHf|&&;Kan#a#ip-+?5c zzzMA|_w2OS^x!$I!a3czP;LIu+&a)^jke|IvMt^U^PiF)3o_z1gBHHV*>d*`Kc6T8 zVMh!+Lv)(p_~3JuTL34*{HATqvxrOf9`+oj{>0XYGnn{m3Ny_5dcPUqY+%rs{+p7 zk3Zuwd_^bq9h%>S&g3UV&d-pZ*?~}dxyp4q#tN!qLV&l-`$Qmv38tSXOh&ZouV{&# z3k4g6+W(59M3uzE% zOi3PMEp**|O_wHbjo4J529?lOu@?|-$0z@qKix#=bbIkEc;sSSHunGEqk_YP(f^uS z64J(8jdNVw-C{Wls)T8kxwB+EW(&ZOp$#HLT6zpwVtgGUYJfN7Lpp&YQ05Dnm&f#q zU=uGtU27Mr{Vznd_=fnDrxH2oGx`&^32`l_FfVjEK7o`^DBaHe_lN0`3r6`{+%ca5 ze*+UsSVy)6moA<;ZRi2f?dgvs-<(5J1G<^pu775(F-ABX4i;yR?z&HjfpvEl4r9!0 ze5PwW4Ub)R$LwY24#i%&7CpLk{yXzMyx;yEM*bK2{QG_^Q8-P}+a}0UFi|;z5iO%U zw>x`Zn9+JCW$faW(D0DcfZl&-sducVF?GuvWXZ#_V$nHBQGW?e^Ot>YjlvAUZTm>J z@o5iA;$H0m@f>)Y4^juyxddqi&`+Slm}JcvAj|jqR7LBq$M(rP1GMZ?yz=?U|N862 zs*vOeAM%mMt^_!$80PFiE-&P4pXYbKXha4m?Dz+z7 z5#|%RhqRS?poUMpZiN4g%RN1ey z7pUr+bwqjgsGK)Q1;N5UWjWp*+8I3E!m(VqzC!kO@Ty|`*TrVXyH8@B3B(Iu9*Y%t z8gZv54OeXosfbuB2PkS0tc$DWn6U zZYIR^0hfcvW2ltR#lw;4NG4sSL1YP%+YaqLnH&%LS84CBZ<1N;VY7XIV>GGVc=6U~ zvX7u8>*ch*v+;Vlo<1mVrEiQTt=9Hv(%I|oZ<)RTEiW%5>(B_wAZ6t`H%tb%pY|gS zo(>#!%Nf?+;QQx1x1Z7sMe5=5NJJ7mSWo^H?hV$CB!r#InTKQo;tK^r;6 zUJrF+pcM?Z#OJupdes}$3blQuH9-Ym!Z>M^=f6AunCtvp1|%c6Q0-2ip%v=wg&HZB zE7fW_>r~O1oB#sb8R6kr&8r+ydn#dqzohdTh_K9hi8A656?&8C8BuIjth4$KDRv<7 zkgSa|G#%bQ5R0r`#JHO~`g2>npt0o!P;i*@CWC=E8~t4>WuQ^C$zcFl0_t4 zq`v-?l!9<)4EfEFC9KoTUwXG7+IjD(xr5e>JO*65wV51cxn@TcLfBCZ3u>}tA0Di5u=Rz>^vo#Qgc zYsnGz-!fBx`~yu~!m0()9+TW^>Yy2XC`=E%+xq2ZW3E(pN4`<7_FfYipGB_m*-fQbbuTV0 zn45^?6X5{)DdJOpSl|;aWJqQWTCtUNv$Wjk*2|1TkXFn5x?SdgJ4x^+0K2k=1{DAG zCQGyS!w;0h3i?f2SeAF`jZ&IDK4v7B@KpRwd#S`MuAv~l_Y00o1ZOHPA5KPe(si>H zXKZf!`HC_E_1t8ij7$oI8P9(M{r`-n4rljmQh93H2j~CB_W%pa4{;*LnbVEGqj=g1 z*t)lF8opk{fBQ_qDodC1r_0oD?o4_@ig4^Dvml=m`$5FZOv3QkwSO)g6vm}on3`T$ zB1Ey_tJjZY9J%j~y6+^YMYfH7Hf9wn>H(O#!iB*vmp7D$*g69g>SaZ zb#AJNe|d{vN%`1+PDJueR6>k<6ZXORCvriXSB!VPj{ga{QoLk!{gJ(TPwAz7dpaQn zI_sA|C!NciYAPY75SZt`T^$;%7JXDXi@XZIr4;T|3@#q$n#9{;pq51OO`Ga%M@`}@ zk50c)UGjXSb@Ao$iI|*(!^>~AuZR%6!yC%{=j<#?>*9Iyd(BzjkIp}4IA4%K{_Xq& zvUVAh|C205l2cq{D-g?+m_Hl~)ehkyaMJ$a9Y|h4?&O3h)ti=BaRLAxKF{~rGO&H2A03j!o?esOm5<>k%QyVJy( zm`hILF@_tA8)ESiJ)#KhHP4`{WC?B1%(q-X7H5J6gJ$KWh?bs zB`XqRkubpCe@Kt;xQO)P2ZSy8@$JT>)&{bVr7x2?R?6qxysUhhb7lxqv56xDg?LzW zo;MxF{B)8z_P2A!E~M?W`Sh}TtZMo^jfO5r!)S1Po3wiWYRSlCa7^UpW$i!F2jrt- zOAtt9P(R0NEt)p>?3jw#!ZoBWGlOmFzvOuGJv@cYlcGG)3^{eIXp>~}wYd(X$ zI=H*N?RM_C-0n7VJ2J1U;8zHu_G|~kjFbpPUpQ|&kEL$L`M9mR+uZsYk@|Cz?S$VZ zPR&^(di!{nckAaof|>bwJA!^nhVu`s6e>drvXK2@&O9QwC5vU%r_wx>%LLL#M;Nz- zS#&-|{tOx2bNIdP&G~m8>F)6O3Dj~fC2?=?}~+I(x!@WoLL^` zkxoLz9$Z0spwt`D*HUXDi0j+OyN9(#pzE;wH+FRadUQyHo%AMBxL9EUUHydLDxY3g z(MwSg*HHv@)57Deb&%TWg*r(ZznOnW__KYS{WLU1@}&BpsvkUMRX^~mDp>cTMVHGi z)aRP|1fD$KwclIAH&%tP=HpW+R}iW`%i9+Lxy09Q8Ytln&C&d_Ea2q%7hiE2gUUT&c%H zeaDrzqOeAzXfMy3G4`D5-n=5tjXqjSs$szwd+8i7eQIg6u!ge=h^-;lN zP(<{9NJ8G*{1z5#LprnCUk-U%VMJQER~*T_&)eTSYI$Z(_B}b-1#ch&y(bzA>)gZQ zz>kLISBeN$PhQz4UV#aa)LiK)(tb;F?UpYy?$m%KOWT|HY0`b(c}Bvbw7T7sNx2}W zB6Xs(Hb?R6D~dYg(q8kC^F(A*UT4Hj3tLJDRtu3n5c)v$YmhHxCRU|APJ3WDr66sf-CyrKHF5j==Ro;1)l}nfF zgK}Vzr5y0?+%J@LVzVuqU0xCCHsgKh6n*l}XqXQ2qw`Jf#YQ>5nTUrj>Y}uK*HO_$+rJaCnV}>GV(leM|5zW zzfA6t@PF6vyLn8b@A&!0x5Jg2ET(Ygmh}7@kQ9ZroXXDZQ~iZ%qzVHKzw1ZLZ75l3Pk0M6eNhTseP=`Y?Z zp`0&$(MqIs$NzTRd2${Z&iH-6zR?@cSt;o`i@^3|^j3C}d2G#MO&V7xuGr&R^+Qxe zI!2sg!Rf#9kOhg_CcaM#W!{I7I6D5mz1nydbvx7HJ-U`+4>`O691k*jd!_KJN`RTJ zvBm9K=(VA%_%_Sy<7Rzgn^GMEus3cl?|nyJ47mgAt^xH%;5dyx&)8Uo6dK66zpb0= z`w6yX7wuEaAMon(v}Yt3y4?>hNv)DYaM4Sq{5B@D^aWS|WQA`afjk$tjjtGWvS$ zYBZ^Q{VFFuM;_-eS@ij4myMK%Z**}7dgkD~`$YLpn`uN|CeN@dWPlX2gAXa-I9tYF zrV2u|1$3MV7oVDcES8g^L}2&$Q|5NbhWhmUGX_riPK-tWk%po)LKdKqU5)dq;=XF| zCtN=tU-RTT{ZLPQ26o8NeHJ#?t2I}DJ7{}6I)d`LZ4dioa^b<{SPpK`WcP+w)ZRr# zH&}x_zGhb0s>uTq*$fmm=nU$NY%tjRLTk4bxWg%`K0h3H4E^ixA&(9!hYne$I;NkA zRbvcbT(1+=E{h|yW4D=CmOY*Qrm3$rnTXHtQ&l5s`w5uV{{WJJMisvY!tlN|VDjEn z1=a!0FFz1a33|XiB^xr8I)l2Xp_yK40$*$r2g!G=BcN+N$sSdY)Lix}>Q!j6Hq={r z7`Es;5@NN{MnCV@EZiKPOnvzuF!X#M{xNeQL&ryZv?eZVc+gtbscn}vYWq;q|36^gV2M`7ZxkzG2-hC^--7j?~2g3|DND9i9VXREHntF zF21d9%MZEUUK;&aR|7YE9|wU3k8fCeFv*PX-phpMS9x3tb&XZkk(GQsTnFs=tI*D2 zt(rz23BHCF-ZNVJMCL~1Jx7IOy^4ufN?yF07}IvLJsEn&dWyom(R)|$Mkrpc!SD9a z{~Go&;$QQlnpr+!74=d4lPCX5qJww$13yE4AV#yF1cq%!n$#gOAhJ?8{WuFa+Or%F>M%jfgGS~+%o!CaK30OZ zU>$X7*r*am;M%l(0F=7YNweH5$5%w#|L*eFUy*8$H1$`QM|3cPPIH$(A1XcIDwvu{ zif;dj{{-8A;yc>@cJEF6L-yW(o?Wm49pUh_WdU}bhzUPX{!68-t}@Nb%X%J%9NQT{3s5nkGXBwm}*zIMs=-5It22A`Klj2OJxj z!Y_#dd_is92BIpb)r-#*1EQQcaAH0z)mdcffSZxln~nN$`F@(_Cr%Bu1eNoT%Ghu( zSYNDf3?3Ro!EEAUEt>JNW#vT7M1|CDWXJ5D26x!r9>jWof=|gfh#u9d_i=nog>};` zQQc@q5%ESItlE+D)5|$!4|e^KIK6sxyV9-}n$uXG@5x_Cqp$wjiN19pBp^d}7i_K3DHD)*(I`FVM!~{$A&WsY%b%glR$ggiRIMVv zXnpZ8h+zJ$h9h{Fh9V9Cp(;e~1Qe-l;A+4R3D{GO4fEo^4^NEG4$oS0#Gde==y@tSvJ;gu%A_z(KN9%x`) z#j8^p4zi1bG+6X>6BkUP0YrF|L)ebZ-fPK?>zlVivyl-WE1d0SQIYgxxMF@oXp8@T z{yUi6-wbU25ET3!k+0Dh{kn*r|CP}goqYzxmB>T|YZnDsS>iMfs1M2kz6Dy$9juzT z1gG8}OKP!z`C4+(NX1mcZ!f|=w1hArie{hTMDT}uR?oeH`IXD~G`JM##>tcZWv54Y zdjE3%KS%kWv9Ym1=iy&kOUphF>DU(g0tTOAes zZI-3`7~*Q+YGX*%WD`mL>1W!eht7vB&IBzgH~3U7+Og%@p_^C&%y>lLPyB{xOk+u> zdnQp1Se6v%p?8H_biGma8s6!`T9}x2g>z;e-FmKyMjfygeYxT6j>fe{15k`2!7@-| zFl2OOSEpXna5e2_-?VAEjrICugnPaZLG*d@>#~b~f<1VN*0NLC%KCDlBO-kWq|{@9 zV%B4O*)ZQhPd|q117D9nF2`qv^x^CE`C6sb-ru>KHCH+tV&z~BE7m8RrWsiO;pjvT zIpmR(_O-?99-Rmxb3Dd$GOBQVDb$%JNoB(Ty?OpM zlv5mBu1~NqMknam<1MzSGkq}zR(}1T!7x7Abghc~(QPtAt;T}xVDm|Kgr{Mm*C-7M z^8fnDJ6_WpLl-kUC*{c0%3br`WOqivULfYsFtfcKnS+z>K&gzJpInYG`fGIJIJl|X z$i*s;E(bg5^CsF*4JDFeI6#@7XQup z{|CSSY$S!ifj$0a6jtt3gBAarPPOQxqvIIl+OwikF1m)TlN($JxS@7g;sOiPTHu8v zi88vk%$swbX(3U$JbTB4nw(G(-2)-B7FIa~2WPR+CCn|Y@L*5=$nvZ~b3BtQc>PBE zC92rjd8c0-<>4fvoax^yE&EM-#L_n_SM zD46vF;}d#E%X6B@p%(2@=*ALzweyub<-10V6@<6GV1TXxZ>$k(;_`K$1B~rYGt)}} zaMSe(;txMK|8T=!509^Nu(62UmG?3WMtEv1fpsdP>Yv_rJ=~GtvDdTb8|BB}ze_L> zMQ5yZJ5AVaqlC%Q=;EIPGzgjN-R)XcOIF(Z`sZFt|4OU7PR-?m8~W?#m4gb}Jq$1~ zAyE)Hfjvdp?!~K#yjy-kJSlDTUxxDNFVl9@K8srO z>r*~Qc&rm@_OaNooGOOp$y1OTrZSak6=TXyz~%5;=iKLfwC&9j+&J$l=!gp%PDLgs z60X&0ve_zX@tHJvJJ+Q8;c=sB)`z)4R}W$YPrYDTiS?-|64C9%t~Z+Hjcl)ZSZ-Gi zfv{$c-iA^=Vh%a2dcNH@rc%GoVDq?-J9`tvZv55bTnZRS2{0yG%oh6{(o3SW4<(Wn z_s#(LIhr|9WjOagL{{Bd?;z`la-E0cO|227Xd?|56h#b75KHGN6 zSKTR>4NuR^$Vei?_fhXRZ4dtcGlNbH~hOwU3$0w_xc~VB_+SGIn|9 z_AcMH$xF@vr3dKX1#M6wV~e#hh)MRv+jq=yPSmmS%(>GQhtd_p9 z;SvJ}qOA|wD(uy&)imyw#pwFK4z|GW&Obc=5A|a|Gw*y6mP4KTY1Zc5MtjVhaCKjq z;4W&%T6}^&A@B)nKS{4nkBquXyK$yt->o;d`t{@4cf&KgdPx_V`%>5u#FeHBP&)eD zUx|>m>e+NrB~K=ePeNL`pEi2$*=Igz310t+&OCRb-y=h;eZk3)Da=KLpl&!`RNM`V z+M*rd+3#n$_njE;eK+=d-=Ya0v&@~eT~8|qDaM=7m~iz`L)E zCd3-^?pBE2*V%vAHFuhf+|BRcQu17KsKOOepAa&^x2_dEjayzV-fnh;KWih(-ec zstP(MWIGEQPO4b(NcWxTl>`}ty+K}|c<{o5@*73_vj4dL#82GPcj~kB-j}wWOUrKz z*i{xiX)6W;sqa_5-R?e%P9A(~oqXzU~SJNUz6$Hl?XoW|qP^xv~? z53*u64`PqqytK7Gx55Lg@QFsBy!d0REJOgNf{PlXJBCWP({0#8jUL?j`A1?J^oU-W zRDM)neMSOx;BeV!^y6}D(^7Lg&GvS>dL#aZ8fnTwChFUe(9@4^_zFl9AEVdeEQSjb zN^}0)p7xp9nC3Gpq`QN>eHT=E!EO({mwFD*(bV;rR_gUnp6R>>%C4fuvElh=+Hk1e zDrlM3Da@PeNZ+aT6j;%wu%VZp=?FbtR`IH0!>>NmhAZ`s;s%$uo7I${+>HV4WC3EW zo8^C<`p#{(Zxs7Dl-L8<<3KP+KFLu%edeK47Vt~j59VTvI`S<05jg00W-fIgn8kg0 zN;SttJNwY|@QjU)FUHXH8YeyH0Il6^?5B-Rl#hw4xV#wmnCEwe*n?W7wz-#9TEG~- z>4mg?Po$!+IbAokQuaDn$gJ?`{Jgs_!r;9E0-%<}Jg_-p<0_*>jMBC(8 zK&W)&S8Yp4Y?~)W!uDKOoM+_=IbT5~zm#Yw2B4^CC)hp+rKfMPBLgAWKTB|hZw-)r z=;%XPxX_b2u|{A$pRaN!-W z_v}FnpFOx>rzZz1L3jS{=n0+%2sLzC|E^~yzGr*QO9aIJEV*%A4eS|OJeuj&O+V9Z z+MphMxC@tck_=ZT2}wV?2?@;i-3vx;@WW>lNOBo9$m7vfW?X#8X802XKQD=g)z@ll z%%{@WMMJ+cekGOi`OM_Aq`4HDe~^6Z!_|#mdBq8bm4>SZCTqDUl~7C; zSrdwKJFI@80)u7OTpu~;%x6hY zN+SJM|NhU^VJ})e=lzq7pD@TF`V(B&_P9JDtxd$#98QlP2f)-Pe&L>gE`BrqqqWA8 zW53Nad8`vC3scFHcgD;`#OHz+hQ2)H5@%isxsv$OK4DA8hF&}=+R0y3{K1Nup zujO6!)Iy>?Qd#6gB^2YAGp3i+7+-xv&c}PkJA#5#p%a*h;u3w%_8Yx}67_5988u-- zD!DOvWDIU=rXU})-;?7v!de+e*^^|1L&~^S2M&tk`D3UV^BXJ>1;+yt(Yvr4aw$h$ zyrQ{C5pD_Sq~A-ul+_`YUq>}M&$vU0KEA@7=^(_#kNFhnV(6ZCww4p-%K3)-WDL&( z;|ZMvVUErBUhTmiz*urgGEi%NW7t~QR`LSwMzZatRs15-xN8k*1Bq{ScQ;W`Hy0Ca zt$6WBiGgyXH@Mbs3q+%RSx0PlH_1}}yMZXl=g#+`_kCK>ape83zF0rv?opJv;jRhi zM!}<$u}Z}L0slG)*sGJ^T0QaDt)iYecdHxGj^&B*eA?G8z=LY5C^RP=hz|+e?r-BV zMwBx4YUOLU^aK0KzUdbvL0^Z*Y(I8b9B;p(2S8R=Q`qr$MOOcd6CV96qF9y(yxashf`>?C zrvJD%L>WynSXfj%(O78Sb>M^W=uLjwkLn7c{m2^TaE32wXJcH?v9aPK_mFLYoaJ%W z#Zyo_;mo6NFG`+~Z^yS1JDRiLX()8ai8hDa!*94|JOTBt_^I~InH6Rfn{zKfbTp@X zn+{MhA{n%5_2zCj-P}rdYYmeAX--&ngSO)Bd?27%rwwWzV& zazEzVLY0^OF9a13ay1RiLqH86n;V<5%L7&y=PCxP%&53?(Lj?vRe2Xopms52^DT8o z4CQRv;(>C6My0+v(vHHUzJ|yROXQEEN?@PP99uY<+ z&IU364jjvqx5s!~Zpwck6_@XWRy<&JK@TvhDU&4o^DBCLlM9!XEFc|g7@?=@ORf)o z+kVr1TkfMT$c(J$KdYR0;Y1a)??fWZy3)7rhU-@0RV~VBckd$cBC5nzewc77W+)Gt zYZ^~tRrIilE*Q;YPgy8C`k@V<%gRaj1&r`)j;M1VScI1MJP@dS%Y7=nNL3&7Rc`v% z@SypD4>c^sU?nUM+_%I)eHkPZ=UE@VQQc4)$UlNey%a{-<7sHite0QAaec$sEB-d| zVWG{djQ1iaC_c`6%8*vIdF$qesfq)X{EC>mx2;k;s0QC|&LWjbO&9N%^BBZc?QS@R zq`yrJM%j()Wy$!+e+uJrGaHFt?u!e=0L+D6A*T84{F5?YC0EE8Uw?hq?M36=tuOZJ zfYm#ZOq{H%3T4A%N2xAUJZuDNo7_kL9*o|Uo)$kTx*eXf_Mmd8^DD^p0pBF5qC)TV zkInV*KDrH%x`9vFo6n|cXIM|!h2_4B_f7=P#scWXFtgrqT#_wf7Pht;w)RL(JwEe6 ztBlN&_h-g>*1~$ewt=3$)VFJMFj=Zx2kGPsPrh~GZRuTb{a)|c@PlU#5;>{=@%?U_ zjGy3FV$(T*9Saq%pMZK z7JoVCkE5_J;@vBrN})9Z)!Gcl5`vC+h?8oD#kErfc>_P<2S8$Geiq>8?vxS65|ae))Y^%=+n^;13)C$HkNB zu8jtLH-k2JvF?^g`vtL(VEk1_wns2;S-_XS!Gnj?e-=hC3j7G-bU5j(($NMq06z9{ zF+J?I5pu?gk#vKJ^+)K-q~mBwRxff<$K^?gYV@MPey?#Z#Gwjqen4H)A_@HIvTO01 zscVm2Nb@N;$*ki|eN{aCy%>DWeIEmt+zDB5I`;kv_~U(dxky_1)O_9M8~i=rkL>F5 z6jx1_>s@m8we&nzRl@2VU6n<~d{1wBX3^R}am`IiqBT(a25C^??^8uiMBz3Bw6_E`y~ z8o3Etn>$BH8JR$$Evy{3oT%r;4o~X(QuL~+U0qw|<{B;nV4Q6bRJHWB{;P3*>Xh*( z>0FkXBmNOoRdwL-68w|#u#R?|w^S_)b*JWRsm;tcn#=HGdjyef z2Wbs39>A`f8%Ub>{C2ogLivmZ888qWk(|&Ae5u<6+zeO&N(N3cKh|-O`zINhfqpi# z=N#nbf%nv_~X^sJ!TJM6PaJ-k^my4>XRxsiw=(@f^dd><0$MaVG&>b`Q)hmA&636e0-+MfwQ2$XiCXn&}D{RroeKDb6QV@CeM<&#btO z0XuxE$3?Yz{QcUQiDReEo;+7Wk_xpfe-)0--+u(8s?&OcAKJ2l=6s{3Gc)C{zy=1t z$E(JQ6K1wCA6b2%6}g9AURT{*Xw`IbHdMl}_lUVMwb-@CtL4JE+S_N}t&vF){HFIc z@8`XYtf)foDKo9+bZ0;7s?}%9*XJ2J>id8GCyf4xCW5IzzYm%WrbRsQ6wQU*R4Auh z`g_-drvJ}xtkbH`w-@WJ=6t6{N-5Z?7!=*435g9V?#8}c6?>TcyoUXmN3yE@nMS2@ z#-z0ytc`l@L}pzq$X_d62!TLUys8I^p=q$;t_-hqt>(XoBlfPdn9p73d|p%(Fu4rn$ zXGv#y=t4E4Y>IWC-_o(P`n)1&2y9T!1~IyJ>FqoM2>Byq%iy`cw<#TzxTWatYfx~_ zcso}tw>=m-l0{thLuA(kU^HW~hRRX!a2h@^wy@MeXx0uIZHQPj@T}*b=_?!t>8w3E za2+5ci%I5Ugpl(|8%WL012CJ`(CO+>;C5Av&#aJ)`lA1+`j~dfkIdvIDcd~f2z)R< z7zSy73Q)&6Ad=Zj^!*mzp?dHYF_U;{NIm#!bRxlDwajLQGH6C;ME&`HSl$9Vz8>Vx z2<>?t0b|!BZ-B{H@KUL^KK4`pMW-o@r((9g)RR3=Vf0-hhs_%ih%AmtPlCXri1Y{^ z{g-b+-x~qF@1oVcJd*(O@2U34!^E@L>nP_ONlb>oBFqpFncjv#>MO z4y&Wl?9^vw+vyyBmNaQN4E*|<$eGiS(tQIa7(Gurs%;zFoC!OnCA6Pcwa+hfnuDt*FS6Rq)`?TzfKAlaUBz7SUHa5NS!QT#x(GBe-?@5bN=c- zt4sDY=@h;+J!Yrb_-FMYdlgO(RjqawIx&r&=!A40k_Z#dL5G;T18+#b zZHSY){{bo9T#P!cusOZ02Cg|h@-H4ccjm=#!{ZH-sJ&i%Kf!>gudC(fB{Eri?(FL& zq|4}kgUQBr!8B%{Vt2G!mI6-MY__Ulh{pPyamqgqrVhoYfNpMasZ%ueMZ+%mb_TzL z>N%|;xYQ|bvG6@}_TW-YPT6xAoY;MBiKF6uhq|Ih@!f4k7(f5BR$&QF;^r8yWlWo` zBX1IY+fz&*WD2An&$GSHrbZuS%+rQ|+FnNvWIR74RY4<@#JZ5l%j{gpx$LRIG#LLp z9HhbE`4mi;a>R|penz|ErHiS_56{zA`1z#vqswK?kBlu z*{%M1dYvlIOgqG4Rjs$DXJ%?M^94(_+tG{I>Az6x+g)YiuUc0S)U3Al7-2KzFnF`j zl8KTxM$`$4ipn$rg7<=4`Y;#{_WamonBk4)V*RSduN;Xh zJcg|i*q_v794Oqp!8NuesW0;Rr%Z-HwGPLR$m@4D$MnoxeYSSJKD#7cy5Xwnb(r`w zN#P~aDS826u z5OCsXICt$L4Y%Ox=uWBluW&h~rPD5@Y)+SGWb2-AzKUkO78f<@DVK9BemDF2CQZu4mK+P}ZtxO{bB z>-o-C2)$S{6jCnL5*UXrU(Juf7Pn%#0sGNU3IGy=)fI?3oJ_sdojX-_x}vFUPK9@Y z?;#@MhA|MC+B%jD$&XrBIEy-_+^d@igcH8Vm@oA+oQM;nu|rbP@kshI2A!2CSJaDh zzLlix=jqE}+LISkS#`H|)+hpd3`bz+vmTi464nP|It0}y2#jYWOS1brjeG*_>DQ) zNTX^N1S#XEH1QXG{ezYNbO8v0<0GhD5GSMw&vZi4qCgOS<^op)7epU8>*FRY3{NCkqihv zCxu?t0-oa{M^M3M-Vfo;+%buS$?Rdk))@t3XRg_rnXa}MS{n2Ic**?L5GX~MLrP1AQf4B-_u@;=ttu>Vem852;5y4l6s5(>(N=K^EhV&Gsv z&0fU=0{UhGjZsTjlUQ_kwO4Rb_)mn%s-H)yJ=9zZn*guh1v#l743 z*d85l(4?g&A{!6GSCCjzWfuKWU-+HuW45ox&3KE{!E;uBxMv3Z5T!o7$ybx37bB;j zOO74S2{iwtX73L>chrUN_uLyiIY;{w`l_}JVj3-*{p`nJO)*T9fS0lb3+mSz$hJ)+ zHhoOf+{}UY|2AU1b&vYi4@c)sHOhwNqU(_%bfX?}W`ELADRBn1VLfFSE@4Y?w?X{i zXlRu6nLTj7MF!4&ts0KjY0fRe873UKyD{Q6&NmftvIwIQte(Z@yivL>C&Fj?j_x$! zxhno*jfq|GSl%=74o0Z3;=9oARV%+=nwkF4TBhF;doS9h8}Q^`mp71&uqf4KV%7J`(@3 zJZGM1q<5WYVwKrBE<$3-Q^exdCZ=jvS~}pXKPmNmmoo7s=RC0)z$QL|(qpH#>R%CI zMp!|zw4~bXGKUZMHRA~v?9nv<$z@S`1MsY9i8%r4GNDY)qsDc5tz_nS#V@IUQIq$X z8VHOU48MCd@kF_S1+=$bOljpHY z{VU^!agh45rFycdb*5!c)GNcw1a#iyzPHZ}AlOpA>RYYF^YhLFb;yF(iK*F!ZZL|C zcBt;)`_1wMvuAGE2Tkuo%0~P2f|=H^8tDsc0w8z6XdWZ}vAN24o31u?qvc0Zw_T&g ze`Svjk5L{d`xWCdRUbwp)14WQ2)b?`%?`{q#u52(1r9U#xf_!lqE&0g-{#p0SQaV; zmLnkRc}%0Ht889@v~~5G)xX*m@^tg{=RkW@U_^76Flrq*&^|B?oa_cyiAU)GaiH&Y zYqXg)EOj4psW)K|+PR}~N|CNs=(fJestbtl2imF{&^uw| zVY#9Fg(c2cw2>>9%Oa;2rfYvfsp7Os5|ff!6hoC9HVk?}hCZo(Vv9P=D9G@B!W{%q z2G4oKFhpMTZ8*?vV@|v0sAQysz!w5_Yz?Zz_en-;`HHeXfHcf>&MYr#O!U^&BhFi& z^C?-(yXwb;cG}yA(gAS2Pe(j7C(`A^zPu=wwH<=0}lqgbC2A=o3s zvg}gU`p!ThqBre@!p43g=ZShrxB@sfdBd!%-8G-;MVT0|`;-^N)vJISO|OByQTsGw zrUm<`P6gVbZf{%U5z{hVGu&$=w=9N~k}!QvduUBHaN<<$*y)MMNm77fYAx#ks4}=zAwFOrAP-Hmr{w0S4EF z-wtuF_mDXgFOaEQ1X}lYIalbBQ46JAiOAu-bB~^`_jkTAy}m`RM)mbRUr8?Dl9hKe zg0tbgEKY>1bZh_t+B+?d$1ARzLIN7KVWt=+;(tjF07y*SZG z;zeCaO!9%PtN^l;1j1gzJNbUnA#l_6v_UQ{p6$p^7fdvAZfKXwpJ=mLH$s|{1J{Rx zAb5z~9kWo%3jVA^wBsNT;qf(|lVGdzsUCNfpJr>uHL@q+;DOtyd?t%VBoRY^b#;`Ggb0`I5QVU?I~#@xa09n2 zlhj{u`}0p~a)|I)vF(IV$NAnEo_f8guKOgqLRJ`1_KVgU-&bpW$A$OBF9 z?>|NLLXtA1>ui1)eRR*lF>25#7$&ibSVvNS$#GwyIj}_q3|zsN z=)%LmT9JFvinz}u`m$Jut$$MU%k#+#&|dHsH-ai&EiMGIv1Z%%ytidK~eg z4taYeJBVS-bLWAVdS-5Mc4m5}Q(Ih^neQ}P^j1U8ifyP6@<&Ek9nQmJ@_&s@+Kp@tBf|E7|<^}=<~|30j?>dMFUamGs~}y9nN3oYQqCdsmxgjZQWS8uB(5w77$PkmG{S#oXt8-0>BFdhvXvWQmbXeG@N6 zPD|S_($C&2crhD|N4rOPhLR2tj_M!^&hJljNAM@dRER5*dcgS4-FS$2Gy>Q8V&~4z zYUGNpcZ3VP;@#B8vTt-%Jkx7lXAX8+S|o3JpHS zeDP)2;IS;nSyuwGlkCl%yGA+Cob@%1vZ5~BXJ|EYoZZ{`sj9AOQI*V7@$wFXDH*~8 zhqVM)OdKprD~3g{{A=n;{DS_;Q>f+Iv7D9KeueQeOefBUy9ZXYX~ZXL#;`M^7C>ps`lVk=tMnrmw^=#D8QnB)BlUoVt>_ptjKE zOdpJB$y)VwYWp$jfIv2n#Sr?I&SlK#CmC}zGZ}?OG)ZuCVC=s*A=K7j06l*3An?!9 zpE52Ln1P%Ka`t7KLk+!~=17UVx25vYnLwFLyY&BV8DnqR6r(M&LUHp`1^yd@W1g>W zU8ad)xKTp;N12P!#>`!`T!t>O0`TjyPs=lM;QQDnPcY%8U>HI{UY<&&2ku*x64o+x z2$%9fSk`{qRtxP`%6e6;{k-$F6#U&1r-vklMHOD(uSust)@Qmh^@+u)r- zTzwUD!3f8SHP;WuiFeVC&R7mHd9W z4g?sb+g2N$6^9;0Vvub;S?}6yBW?!X6W#zDzL2M^r||Ku;*ne*p1)8J^#fsc;U>K& zEazc;#7z^cv;bq(^(%_OOUqevLsxU4Jr)!*`xnkh3^TaMdop!r)CO8PwBu<&XD;g2 zSp#A7EDJAZT53ooc@U)S^Qb9BQ&T=+(IVy$(Kg2b)7G5_?TJmTL7=X|e`E9|x&Oz2 z)_T93xNv5yx!kE=hOgg-47tq$e&od3D*@Ra(;VTYZJ#I}f-;z_v_l`Ug3OgNmk$ zNq=PD8+S^wK6&oK8PY6o)j+t-fv`Le8$HOr)WV82>Ye%@k zjgRWBE4Ax$^^yFABl#OR5tAKMom(8xFLmqbvnPxgy(YdH&+S29ERZe@o}eTN1$b!i zR^Z@~t{g*v&JbScUrWTlW-;?<%rs0Glf|X>wOVJkT_eI0$()Gyy>q^{H2>lJ!bh5| zCp-Szvs%p8qN2Kk0p}wLt1mcs@41A%L)lo+-HXYaRIcrJBPf z7zoI*oiBY{myfL^k`@*li*ZC^5XU=AkNOiMSRW6nCDrWJk4;|3K#qh&J(WH7ReUu+ z?|fdhS?g{072+yubxJJSi+4|`PUlB3ecR{UHArj=_V9Gy3Sg;GbNvpkt7uh3xw|}q zvefCgOjWw|Pxe*?X2Cows^mxCdNF7o3(X_MuTT6^&Nb|P`MBO?oasa+(C+T#gz#=} z*RYlxawTl$p(-Ruq#H!4K||_U7uP<8qyFdk;Z)E8ZnC{>Btt;nv{Cg?hKC`nyXB#S z*%3y&3eho1aYLY^v*#;FvDfRDYGzE&{Q&`qAuuJ1`CQ>!aq0qguadD-_OAS{!(oU-x4o`wZHTX`2Vj#}0A z)Ih+1T?XPDdPVz`qkHY^Gmg6<6B9GW&}=NL*0iDFRtAK$AEp z#`4^2#!oaE*pMqQ>ee*?F~LIr*x>(dla<2P&+%=W5eW=RO#}9lC+INMBs$&VTAh#> z?nmLNSg$gl!`#+J(^heHLGq}L3OuHateb;+l&*q4YI-Q&+bBp@#2NRtnVf5=s1Tr8 zT)u#yH|H|ay6G{Z$+Dr=2wptsmW-$vRt4tZ>c;5jnL6D5R0(^IhmqP<#a^1OusqXw z*|gIZ(VL9RgSx*kBnWNq_>}3EJdpsnTOPG}k^KV!BLged<~?%?jKdRXFhTeEpQ`5~ z-OqCr1S;f(8%Xk!=R~A9fGN;1h*>{71{`xQgCDs5=IV=sIPV|{PqXa}4NN^I z+JnM326FQ4B57mHZtF#1rg|>U%s1y3N>yNtG;6$>xm@%LxWCz(#>lGNT%K+&cFH|| zXalMWIyV-luYFjq2ec$%sHW$zH2O7mTJ`DX#$LnF_a?gM*_$C2F5!1*$1iHS3 z=>e+iLJh@R=*8hrk8=Y)tdb1N;YdRuf}NKFr@0}UgdOZVv;k$NUe}%!t;?M9gnUGe zIXp&jHS5+Tg1^CW7@;1}`aJ*#{FgdZ#NwY^tjd{&&Ka+xp)QCR4Gpj=@PKfSh!}gG zM@NRt3|(W-09YOIu4?oLa|8wx1HK2gr>Vw;zSc*6Pj+42t^f&td zh)JkNF61uQCwIkKHJ+baE^)s*b$hthrHU;b1L?#vRe8?AIvt0e@a1zim9oY6mhlWY zSfIi46H9^4T-`+@K!UcB=O1M>P>c3!6dGs@_~Aoer++hl&w*&13x;uJJt4N!HJ%K zr07E;<9m#?v2LM&vo`z1Zce*l%toA%*v!=E?wFwvg6CTQfH zs8l5Xo2HF3J;6$+FTU%x_ehm{sl!45Na-sV`R>GwOUvaZr*C8q#1LRdLSe!XrdRGL zdEDWW+pnNF5@8&-O&gw(?G*MwznE=9+KP5t4+6vx;==&cBRVB-TB0pOV-wg`3o_1I ztu|(7wS*BE3pP_Fu?%vz2nz(T69o0)&Se8B|!1f(lpy%bg=Bi>n#%l%=&#QfZVhY+XRqZxV zb#>|7aJQ&xcy3!OJ-lDJz5BhB=Wz`5H2+dN+7kD^`@ws(`LnP0v2#knT_;bS)^CnU z&_^Sgc<=cOC*GbU^MOCN=g~2ouH@0_vce~(c3E6QAt&BCRhyd728#1%cZnB8mfPo6`=P|(N$ImTl( zwQup~6!WQ}0d|mbMBgw%qyi$7=7L`2Z%?Gp(Qbg<2SHQ{L)&d?rGfNmk}d zNN|Cq{OJ7`iXQA47*@f9QOTl*dS>y?RRQ#pSOh}C;6sB%OW`x zZf9P_td`RglT&7a#cBi%Sp<55v{J|-yy|vDT5(;?>P4J9^+Dvx^ip8506)Ru=jA4U zJ2`dYOzqgj>C>i5lB34grwGh#k&Hs-AKga?C)e84@wZGXWD;YnU=>WcEg~$SXC!YX zD}CzBi3_GYKjq_s;6F7hc<%VIGv`f7jZpqN93u>S3GI!~MC<2{<80@(c(IZ1P*O75 zkyCG*84hIpdNKWEXS)UmFK??>^ZNYc@hMoVpV@B+-p5ZY@kgWNo;ldjZKoIlwMS9hg?Eol#lMiJcx(g*IhJrMv%eU>cV@D7;?!{sJLHknZq84_4%}+XoIHQ#+;P1} z+MO13YV7s5C#TL%oXHPzLC!St#TGkt=Iyui#-xvH@!f{*vNt&y7k)WtJG|@ksk8s# znj!%QclE4Sfz?cAy*=~J@rd{q*WR$VPF}FcPC5}L%!&6;ojv?&(E|9<%>3b3YmsH} z17$3JpbMTrd+~$GiT6%K_@kJD*ND!lI9ogY)`f{<((NDS`g7z_76x%#9Oz5pItV0F z#qatyIz-08K&~Jb;fJ_NrEL2{x0`HlRU+Y-t{hMWyZ#tv5d*n$(uw(j>KjYBpD!_P zB>lj-0L{R`PWAAPS`_R`v~CubkRBH^^N|3#Ex{-icgf3hq+N-~Dsa6I4)cHi@!wbl zj#ydblCzlB7;CSP_21(da9L&gR0h-}yeh`ZMUI)Y2O^-(dx7_fHdz2}-sX_|r=hQZ z6EjOKN}9Ac-D7PtgfVZ#@}Dxs5ti-R3mD8uiraxXeEl&!JjDaD4aSt-ok|Re0nt)~ z-u{t(9;oEixAY!N(5uIl)QEN333~P7f?jUWytH25O@jfdEy7)wWM3yTTP|RlndqDI zr8s&g%KSplph>EbY(=1X&4!E;kkL~MTlJXrkw$#9I;6Wi;$!jkSL?Z5ER}4a+h7$3 z2w`h{Gg?J7L`{V1cflucrL(=@UT6cAt{a^A|HTLsxPAeZv=%N|HvVuL|;#j4qLf}z( z#FmGCxoZ2Y)?~Dqg3S4A5*Oxxdo&KkZHWi?ics-h$kTjk?)hG$&!}Ch4NOP6?+5H+ zA%Ai=OSBi|bcY|1wwQb53hdisOOP->yUY>E==MA1CRND1%$Vps9uARXVI_IU-#+TC z4B(*Djr}|Bi%gYWS7m1Zmf5&aAjW74^0lt~okoSw40Fy>i|mmh#EiJjZkVPp21{`u z()tP7@`*0G&;JDP=CN@eF=pzqVOn2+|i?i-Wb;mWo-PN|n5NA!4ukhXu_ zvIhMX_CD%vsP+@k)v@glvNuPHFvia;DL$)@7(Bo+1##d26df>@S^oA%jBW*zZ}<2L)+FSR-(Rp>1lHG5c z(;Pee4s*Ny#D8SsYd9=%l{yaN-VHI+JtnLEnfXRorGSLfP?#Te^6fX6qi`RP3SaE} ztRrZ8_4q;Ea!(WH=;^UeVewQpg4HF11;TAH9EPA-u53QOhu1UUNQT!V3p}jDu1s#C z_K4CCP0!EaKM~@f7eWz$@bI7@fpN7NM8?m!R%z(0?SR|b@}46P6ftV{)DEkE20`*!((Z(p;8UN8P!sZ^9xidwS1pxXMl-; zCQo1BQ;-sZvHnD;nGF=IAi*Y?UxUX9D^ZG5W;3bq_AFd|)1a)_JT7fv-XOKD@hk3OP*)A*_koku_ zkepomeH?$Eq23OUu`E6mi?UuX3=uj$o;BuH;>?-gwicPI;f`VawuY|PsGubm-q9G$ z(wLL+FM2#|WVV5yw2!;%3YU#1LFn0+UadN0j!@{?=DI(8d_SDPA45J)V?l^|Rpxi(@h3EiIASI9C2z`=&1TU`^6Cf5OrX)7GQH%-nw) zDb*UMdJ4IM5;{kfGF3BjUg4>RBdky4(i=$F%n?z=IhJ8PthvpX`8E+_f)+9V(d5$X zD!+-|V@dVDEzZbe<;bqRQZH1>s4Wzy8ty^;f%#*G(UC}`FM8E?Q3o6*aF0Bl?E)nQ z7M)p%#O5&68h`oBK^S4f5+|KXsUGZUF48V$Q{0HLz)%U5SuqN0C|rQp(KA^uxk2eU z%~*#>pMj;d~ocv8B*^K z$t*y31n!L}F&-EiPl(WO%aO*(4$~+Gm5SteI2s;i@F$Awy6P#R-s^~C*)k$#xKwSU zW|+v+R8^ii`^urihYk(&sW1?m8o$Zko~a!_b@HV3HTn{urJ9CxxP5QATsFNoU&f6^ zk?OBG)6*AULf4{_h3p4^*Cg@}0^dIcjAFM3QG$Dv$%;9wkz#3AH3OAzX`_b~#Cr@eLF=k4}n8S0ZV6H zQbhU(^vjvky}|wAv@#&lQN+&uP$EvX2l`D8dp@fE>iO2I5~px9tYzG|=?{&$#oxEuo#j7XtY4l!er0C%%-MzW z?a8U7>+k6ss*AHrS7+uyot`Y(qw06}x2g*r=-=r`cPS5tT}YMsw8~>+zu;5+lX|OL zVE*?@CCb42)a4?td6@E?mAV#0mo7>+>EMP-`_|O{RW!KMW{3(e;uNn0gnM_mF5Rz)!qy-S~!O}bm|1_!#^RqYL%%|!6HR$F4Y7|Uk45=Gp z$p`wV2z4P2w9C1`F*npAw7X;eM%k#yUtV)y3Qqcz6E^a12GoZ^?^{6kW}ttOQw+jf zF=rP5#=NaxV_Oh2hD;kriTgx==)Baoo?p@HiHeBWps!xs3PuKm$8ao!ucYZckT-*C zY)Xo5la_IdMhDGxD=P!1@f8MJz|ZLXRPFS+iQ|^U1Jjh&$@{N!kIm>J3hDt!THI0A z*FA%edf^50turQBE!Z95?ZXdLDo1Q{jVxC8oT-A+m z2}Pa?PLy}iZRCF@EPesg3DIN}M2K}L;xI1IIK<3LAnYY1H;E4Xf~ngv)_qM?Qsg{8$%^mm(GJaBmF zQtpMBE8=JTcXsj3kpJuGI8=5?T?Iu^Y#A`Cm())(*wts$gla#&sH5EKPuWE-U8RTP z5*+c)viS)dD}7i8yDl}#NDPP8t;GbXrbxvsxn~1QY zi$d^?@!k5Y#fHk-NYJCeJ5{n)sJ&FN_pva+QvoA0oe^oefo>PG2dMzKJ1IO)X_~Wf!4&o zHXQ3pq_Sv5>cg&jh6rQ;Z4C@(v(Q2+sP>y!a-&vja$ z9WCRN8skn~blP$Utg%X|Doc5Uhp(yVu}t*cm3*2`TmxG*(z?N|f0}L^43`LkefavQ z8Yzgh<#+{lQQtFiwRUMgPgW9YyqQICfTDE?ob+2KkJm1oIDPI|?ZSH#sYxiY0%{7H ze*FE%WKU$7)D$gQd^oQ|L9e85gmtW_4A|8xVA%Djn2~f7k23J>7zo}ie5gA+f6<&L z9ux#=-dAKAQOPQ0(w3JwG0c~}9=e`98Ds3K$st%N8a#o*V8kB*#BKkUtKk;aaC)iw zR+0)J1`P$f;A#kGZ<+{RwpmEe^zx=2O8bb4q zeWvbV=ErWzrb!&qd$UVaM^BgFVj3?HG}gv+%&~9Nj~V5M@f>EjN@P0i2mbgd^Ye49 zv=`j~tMg+#QURlo)Pbf{gaJ6-Kt6LTAjIamW-kjy3otQPB!@vJQ<5YoP>^_ znmB##?Gqp9-NfGlk?!KDv-WhVVa`t|NH#UNTWSP?$vl~Q@CZ!RuL2A2`Gt>~ zEg%q{?6j7qJGBeV&Qfb0Hbt2~B_kV^;Ibg}h(oQ%F}GTFN8*Mm#myRj^BTO8Pt6=xOnA4|up(w_Y>KJz08Xh|B zG4>4J7+~Ke?e{{{dsp2FIBOk7l~EAMXJ`2af#pfB%m@oQi*OxWt`I)RLe3d>)zi%K z55wNJC<>Y-(r|))XPo|y`GHv#5}BC|#BS<$o?!w&z0s(37HZQ=tyXisQ`3C+?Zx_Z zlW8=WA=aN=h}_0%n)8j?<=KVl561<`5AjF1fi&VA8;0`b8IU}{``RMj#BQX{SYJT5 z&eX)pOfSsMEzGl`f};w<1+dz&GFO)7LDe<&*nZGAU35L_B%~C4GZu!>tWWh^nNbz# zu~#qS#-bQ}NzB;`Mu1K?5XmzKRIF5cbX(2(tf_JxVyu6QNKzz;N*EUy);U-IuvxSC z0N&X&{Emw1#|xgW#MEjvrx#k$H^kYdAwUK9x7A}`nVD@G=>}2DZ2fX`w#=k3_p8TD z&I#|;$dZfomg+#K*&1?6QSs~b)=d5K?68B??$leIp}!g|HSBkTrP>QiEwNk-^Hw^_ z)}SfDslf_#kE}Tm)-cRCebk!iu-VvE&uUTZ3ECC6nPzTlaRT1>sXJ3%*f{}IE3h6d zX$@=ul)ka8IS&RIorz-WmPfO6kw75SX>(ZI%(e@jgte%xCpd4$?utDNm&%){QkW(0Ql@lv0Bwyf$7c=C9P z9VF0OyUsr%7cIyK+F9eHh1yIbi-c4qITVGEXcpTS*~eD=(#C3XW?1NU=nq+g@U}(r z((DN!lN1$&w+^@(38x2vKA*ONoSctL1{Un2Fi%%pzJs`$dn6}mp-pyr1JiZGu^^L2 zTfF`(Al)zp`h2Qbc_q(5lLZ>3oCc}Sdqa8CeLU*w=(Jhk6LmPt!BU~-M)M1X1SENP zUHZ#NX$prM20j#{A#N9os4f9E^s04Cht3hqq%wvHs>*t!Q8oDW3E{nN(qlVti+uqw zv2ZNZO3#(=cjoT0ZkQ$Xzy}w@6p>+z?P^Kz)`DU5dpU61-wF!qDHA$`b6PU- z`WLKxe;VKtJHOadlxSpNL#g_JC|E4qna zNs`$X7XXhb8Uo@b4bZHBd#uKNI-bF89Kz&NVzerm$Sgd9bY08`scX`9^kHiW&Idyk_s-1W4~PZU@K?PNWsZkO zxb1Q)*V~KqNP6)2tq9n&24hhr{MMdV$)?j+0YK*J&K)ip+V`ib7ew$P*sff}8!5Xn zgf~(Y%u-lv5e17Nv9sVL-Sq4t0tcrxQH@rV*B8`1xSo(L_-LSyx%*5d6nT;scjrscA z%(Riu3!iV(%gwArsxy@}m#3SH9aop2?ky@fyHIa5Te~ROxv@BX?ZXlUB{@e((XXGSuDn!V8QlD}eb%Eya)|*-RwJI;{ZtlX2tdibr$GH$h7I zO-r5(D5dXdbwwLx8}mnzeV(#5;rrUaqxqN|CkYiuU7>9x!ER_VBWCQ1$RMrN6KrZl zc5%kZNtsrpgu_RHGeu1ry;xqq|4p-NQEMbVUfXU`_si#riHr!Ivutc>pgJYV07M-b z1Q_p|^!1uVM}KL`qj?QDV4Tf~uzL}Eg8Ay_oID~rJ)A+L;eMgR5$Yk%a zNx5;+UkfdIa3IxaBWW#Zlai%P zhR1a8K;0^L=G`+ZdZs?YKV-z_8z%buz{}8#jB{QKja7_D>1EVSSY}@ipr@yVM!TXF z-Cl`3N%#=dXa8CD(r1rsv`oLfBAHK`Vm8tsBUbZ2l&GynER))K@Mm}GQj-Pf6i29et zNtJ1KW*)5H_^Dir4Kt-&Gj6B0oOL6K@x2C|Td@3UGkS7`EQBeg|aI<`aElj0nRqFIi_Ws%14)BeK>( zZ}`cC5vHt@^sClmmt_tGEbz`3pI!nLx0r+iTq5P-30(!bmLM0%dD2)#-^bj4@QiTRg;LUsjW(tL6{ zMplLle3SkRRO;=;{7A0;^%7(-v^(|7wVC;jvDzJ9i$5=x$|HZugMA9ky){l-@5NT} zfT=y)&(bU#E}eK+ZTy3(jo^a4mdO2kn?>f!aHM(MKc*Jr22BMW(nL4yPHSfVYVBHG zTWJdmA1*BlZk$_ApeW2v%Tf`dH+|PnNU9#uI zV8FQOIw@X;&euU6QXzWeqyU~E;UHMb{M+_}pgkG%w(mUid>mRwk8M@vl*EBLGWC@Q zF1#RCL6&GH{tBtUU3YHt6@QJgUyP2=lim*0SDc%lsa`u9gnV_S-2Y|jraUVzAXcsk zJQO@OB=onf>E_dN0@JljjP9A>Bk5u>rp65TK}w~d#yzBEWgI>W)8nySDdbi1>MC~X51{0b zVn=> zg#k7Qy;docxOB0p-)2$$+HH=G?0KLyi=~LD-mY6?+jklj5%3IZKNKHKLpk-z6|dBT zXbf9x`k~o5X4gGq-m(;C(dtT+sU(G298gK$1H=@I^ce2N_0)Tmp&cGH`t|AY);BZb&2sxlH#MB*&Yc`3pzjKQEPj)PlO+ z+{=I^Ea{RTROmWh^K?~q{UW373m%QACmYt*+%pFJo9<|Ld-@id`b-VQ<2sF2iu;1G zAZnhhY`7&Pjv##Oa&e51DmO)1}_NE&3x zc*%@@d%ndT;7+a8@3q)>5q!BTJz{dokvw00rueAdx{@EO&(7v2TgWA$-psF-E76A5 z;p5lG_D`@!_+%L|wV3EK;TL|L`2F?7@Bb1Buo*2*dsG>ChxBAd>#*daIIy`;>4Y=y z_IRGf4s2Q6&}>9P`Yf$22n~wsF5_q`hHdPI)j3>m0tjhu7S@h2J+ChT-T%Q?M~bf>9?4Qxc@hyn^i2gm&Vn1GFTLRQQl}Hyd5eHS zC;v)Bzk>**;TpXB`#V4G+}rt5EjB-@%#nW4?BWh< zEyb6eu2SY;>ucs1M>YcN(OQriy7!cTfncbO8ZdLzQz}C>7H5P&YcHBOmI<;Q5$@_| LALlVWp6vet?F3s* literal 0 Hc-jL100001 diff --git a/binutils/po/sv.gmo b/binutils/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f0b831df69f4859050a201a6d90cd72fac04a74f GIT binary patch literal 204533 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

ua# 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

+>T|L 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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 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�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

03-pp+ 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 Vx_af^cXs`Kz~|N22i(+Z{Xg0xNRa>l literal 0 Hc-jL100001 diff --git a/gold/po/zh_CN.gmo b/gold/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a72a072c8136dca8eb3fd8d81314a9946605737f GIT binary patch literal 8988 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 literal 0 Hc-jL100001 diff --git a/gprof/ChangeLog b/gprof/ChangeLog index 6a61d61fee1..cc57e0d8724 100644 --- a/gprof/ChangeLog +++ b/gprof/ChangeLog @@ -1,3 +1,7 @@ +2017-03-02 Tristan Gingold + + * configure: Regenerate. + 2017-01-02 Alan Modra Update year range in copyright notice of all files. diff --git a/gprof/bsd_callg_bl.c b/gprof/bsd_callg_bl.c new file mode 100644 index 00000000000..945ba430bac --- /dev/null +++ b/gprof/bsd_callg_bl.c @@ -0,0 +1,124 @@ +/* ==> 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) +{ + 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-2017 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/configure b/gprof/configure index f201737ed27..43e0dac0418 100755 --- a/gprof/configure +++ b/gprof/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for gprof 2.27.90. +# Generated by GNU Autoconf 2.64 for gprof 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gprof' PACKAGE_TARNAME='gprof' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='gprof 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='gprof 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1302,7 +1302,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gprof 2.27.90 to adapt to many kinds of systems. +\`configure' configures gprof 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1373,7 +1373,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gprof 2.27.90:";; + short | recursive ) echo "Configuration of gprof 2.28:";; esac cat <<\_ACEOF @@ -1479,7 +1479,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gprof configure 2.27.90 +gprof configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -1844,7 +1844,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gprof $as_me 2.27.90, which was +It was created by gprof $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3653,7 +3653,7 @@ fi # Define the identity of the package. PACKAGE='gprof' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -12787,7 +12787,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gprof $as_me 2.27.90, which was +This file was extended by gprof $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12851,7 +12851,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -gprof config.status 2.27.90 +gprof config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/gprof/flat_bl.c b/gprof/flat_bl.c new file mode 100644 index 00000000000..b1c57694178 --- /dev/null +++ b/gprof/flat_bl.c @@ -0,0 +1,44 @@ +/* ==> 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) +{ + 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-2017 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..6c48447f7f0 --- /dev/null +++ b/gprof/fsf_callg_bl.c @@ -0,0 +1,99 @@ +/* ==> 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) +{ + 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-2017 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..6bcb685aa87 --- /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 "2017-03-02" "binutils-2.28" "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\-2017 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..7277064ceb1 --- /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-2017 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.28. + + 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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 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..2e7a1082622a9892c33e316e77b097a80a7b9e83 GIT binary patch literal 10523 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 literal 0 Hc-jL100001 diff --git a/gprof/po/fi.gmo b/gprof/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..874e40599adaf0793ade36cd656af383cfb5c3a5 GIT binary patch literal 11200 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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 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 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..f0d405d5d7dd0c57feafb14cbf65538249a56592 GIT binary patch literal 10513 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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 + + * configure: Regenerate. + 2017-02-28 Alan Modra * testsuite/ld-elf/merge.d: xfail for nios. diff --git a/ld/configdoc.texi b/ld/configdoc.texi new file mode 100644 index 00000000000..27b8198268b --- /dev/null +++ b/ld/configdoc.texi @@ -0,0 +1,33 @@ +@c Copyright (C) 2012-2017 Free Software Foundation, Inc. +@c For copying conditions, see the file ld.texinfo. + +@c ------------------------------ CONFIGURATION VARS: +@c 1. Inclusiveness of this manual +@set GENERIC + +@c 2. Specific target machines +@set ARM +@set C6X +@set H8300 +@set HPPA +@set I960 +@set M68HC11 +@set M68K +@set MIPS +@set MMIX +@set MSP430 +@set NDS32 +@set NIOSII +@set POWERPC +@set POWERPC64 +@set Renesas +@set SPU +@set TICOFF +@set WIN32 +@set XTENSA + +@c 3. Properties of this configuration +@clear SingleFormat +@set UsesEnvVars +@c ------------------------------ end CONFIGURATION VARS + diff --git a/ld/configure b/ld/configure index b89177c1da4..36af9695b1c 100755 --- a/ld/configure +++ b/ld/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for ld 2.27.90. +# Generated by GNU Autoconf 2.64 for ld 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ld' PACKAGE_TARNAME='ld' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='ld 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='ld 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1354,7 +1354,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ld 2.27.90 to adapt to many kinds of systems. +\`configure' configures ld 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1425,7 +1425,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ld 2.27.90:";; + short | recursive ) echo "Configuration of ld 2.28:";; esac cat <<\_ACEOF @@ -1550,7 +1550,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ld configure 2.27.90 +ld configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2259,7 +2259,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ld $as_me 2.27.90, which was +It was created by ld $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -4069,7 +4069,7 @@ fi # Define the identity of the package. PACKAGE='ld' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -17813,7 +17813,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ld $as_me 2.27.90, which was +This file was extended by ld $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17877,7 +17877,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -ld config.status 2.27.90 +ld config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/ld/deffilep.c b/ld/deffilep.c new file mode 100644 index 00000000000..f4a553c9b4e --- /dev/null +++ b/ld/deffilep.c @@ -0,0 +1,3362 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "deffilep.y" /* yacc.c:339 */ + /* deffilep.y - parser for .def files */ + +/* Copyright (C) 1995-2017 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 "libiberty.h" +#include "safe-ctype.h" +#include "bfd.h" +#include "ld.h" +#include "ldmisc.h" +#include "deffile.h" + +#define TRACE 0 + +#define ROUND_UP(a, b) (((a)+((b)-1))&~((b)-1)) + +/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), + as well as gratuitiously global symbol names, so we can have multiple + yacc generated parsers in ld. Note that these are only the variables + produced by yacc. If other parser generators (bison, byacc, etc) produce + additional global names that conflict at link time, then those parser + generators need to be fixed instead of adding those names to this list. */ + +#define yymaxdepth def_maxdepth +#define yyparse def_parse +#define yylex def_lex +#define yyerror def_error +#define yylval def_lval +#define yychar def_char +#define yydebug def_debug +#define yypact def_pact +#define yyr1 def_r1 +#define yyr2 def_r2 +#define yydef def_def +#define yychk def_chk +#define yypgo def_pgo +#define yyact def_act +#define yyexca def_exca +#define yyerrflag def_errflag +#define yynerrs def_nerrs +#define yyps def_ps +#define yypv def_pv +#define yys def_s +#define yy_yys def_yys +#define yystate def_state +#define yytmp def_tmp +#define yyv def_v +#define yy_yyv def_yyv +#define yyval def_val +#define yylloc def_lloc +#define yyreds def_reds /* With YYDEBUG defined. */ +#define yytoks def_toks /* With YYDEBUG defined. */ +#define yylhs def_yylhs +#define yylen def_yylen +#define yydefred def_yydefred +#define yydgoto def_yydgoto +#define yysindex def_yysindex +#define yyrindex def_yyrindex +#define yygindex def_yygindex +#define yytable def_yytable +#define yycheck def_yycheck + +typedef struct def_pool_str { + struct def_pool_str *next; + char data[1]; +} def_pool_str; + +static def_pool_str *pool_strs = NULL; + +static char *def_pool_alloc (size_t sz); +static char *def_pool_strdup (const char *str); +static void def_pool_free (void); + +static void def_description (const char *); +static void def_exports (const char *, const char *, int, int, const char *); +static void def_heapsize (int, int); +static void def_import (const char *, const char *, const char *, const char *, + int, const char *); +static void def_image_name (const char *, bfd_vma, int); +static void def_section (const char *, int); +static void def_section_alt (const char *, const char *); +static void def_stacksize (int, int); +static void def_version (int, int); +static void def_directive (char *); +static void def_aligncomm (char *str, int align); +static int def_parse (void); +static int def_error (const char *); +static int def_lex (void); + +static int lex_forced_token = 0; +static const char *lex_parse_string = 0; +static const char *lex_parse_string_end = 0; + + +#line 178 "deffilep.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_DEFFILEP_H_INCLUDED +# define YY_YY_DEFFILEP_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 113 "deffilep.y" /* yacc.c:355 */ + + char *id; + const char *id_const; + int number; + bfd_vma vma; + char *digits; + +#line 286 "deffilep.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_DEFFILEP_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 301 "deffilep.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 146 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 285 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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 || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -82 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-82))) + +#define YYTABLE_NINF -48 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { def_image_name ((yyvsp[-1].id), (yyvsp[0].vma), 0); } +#line 1463 "deffilep.c" /* yacc.c:1661 */ + break; + + case 5: +#line 144 "deffilep.y" /* yacc.c:1661 */ + { def_image_name ((yyvsp[-1].id), (yyvsp[0].vma), 1); } +#line 1469 "deffilep.c" /* yacc.c:1661 */ + break; + + case 6: +#line 145 "deffilep.y" /* yacc.c:1661 */ + { def_description ((yyvsp[0].id));} +#line 1475 "deffilep.c" /* yacc.c:1661 */ + break; + + case 7: +#line 146 "deffilep.y" /* yacc.c:1661 */ + { def_stacksize ((yyvsp[-1].number), (yyvsp[0].number));} +#line 1481 "deffilep.c" /* yacc.c:1661 */ + break; + + case 8: +#line 147 "deffilep.y" /* yacc.c:1661 */ + { def_heapsize ((yyvsp[-1].number), (yyvsp[0].number));} +#line 1487 "deffilep.c" /* yacc.c:1661 */ + break; + + case 9: +#line 148 "deffilep.y" /* yacc.c:1661 */ + { def_section ("CODE", (yyvsp[0].number));} +#line 1493 "deffilep.c" /* yacc.c:1661 */ + break; + + case 10: +#line 149 "deffilep.y" /* yacc.c:1661 */ + { def_section ("DATA", (yyvsp[0].number));} +#line 1499 "deffilep.c" /* yacc.c:1661 */ + break; + + case 14: +#line 153 "deffilep.y" /* yacc.c:1661 */ + { def_version ((yyvsp[0].number), 0);} +#line 1505 "deffilep.c" /* yacc.c:1661 */ + break; + + case 15: +#line 154 "deffilep.y" /* yacc.c:1661 */ + { def_version ((yyvsp[-2].number), (yyvsp[0].number));} +#line 1511 "deffilep.c" /* yacc.c:1661 */ + break; + + case 16: +#line 155 "deffilep.y" /* yacc.c:1661 */ + { def_directive ((yyvsp[0].id));} +#line 1517 "deffilep.c" /* yacc.c:1661 */ + break; + + case 17: +#line 156 "deffilep.y" /* yacc.c:1661 */ + { def_aligncomm ((yyvsp[-2].id), (yyvsp[0].number));} +#line 1523 "deffilep.c" /* yacc.c:1661 */ + break; + + case 21: +#line 171 "deffilep.y" /* yacc.c:1661 */ + { def_exports ((yyvsp[-6].id), (yyvsp[-5].id), (yyvsp[-4].number), (yyvsp[-2].number), (yyvsp[0].id)); } +#line 1529 "deffilep.c" /* yacc.c:1661 */ + break; + + case 22: +#line 177 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = (yyvsp[-2].number) | (yyvsp[0].number); } +#line 1535 "deffilep.c" /* yacc.c:1661 */ + break; + + case 23: +#line 178 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 0; } +#line 1541 "deffilep.c" /* yacc.c:1661 */ + break; + + case 24: +#line 181 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 1; } +#line 1547 "deffilep.c" /* yacc.c:1661 */ + break; + + case 25: +#line 182 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 1; } +#line 1553 "deffilep.c" /* yacc.c:1661 */ + break; + + case 26: +#line 183 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 2; } +#line 1559 "deffilep.c" /* yacc.c:1661 */ + break; + + case 27: +#line 184 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 2; } +#line 1565 "deffilep.c" /* yacc.c:1661 */ + break; + + case 28: +#line 185 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 4; } +#line 1571 "deffilep.c" /* yacc.c:1661 */ + break; + + case 29: +#line 186 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 4; } +#line 1577 "deffilep.c" /* yacc.c:1661 */ + break; + + case 30: +#line 187 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 8; } +#line 1583 "deffilep.c" /* yacc.c:1661 */ + break; + + case 31: +#line 188 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 8; } +#line 1589 "deffilep.c" /* yacc.c:1661 */ + break; + + case 34: +#line 197 "deffilep.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-7].id), (yyvsp[-5].id), (yyvsp[-3].id), (yyvsp[-1].id), -1, (yyvsp[0].id)); } +#line 1595 "deffilep.c" /* yacc.c:1661 */ + break; + + case 35: +#line 199 "deffilep.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-7].id), (yyvsp[-5].id), (yyvsp[-3].id), 0, (yyvsp[-1].number), (yyvsp[0].id)); } +#line 1601 "deffilep.c" /* yacc.c:1661 */ + break; + + case 36: +#line 201 "deffilep.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-5].id), (yyvsp[-3].id), 0, (yyvsp[-1].id), -1, (yyvsp[0].id)); } +#line 1607 "deffilep.c" /* yacc.c:1661 */ + break; + + case 37: +#line 203 "deffilep.y" /* yacc.c:1661 */ + { def_import ((yyvsp[-5].id), (yyvsp[-3].id), 0, 0, (yyvsp[-1].number), (yyvsp[0].id)); } +#line 1613 "deffilep.c" /* yacc.c:1661 */ + break; + + case 38: +#line 205 "deffilep.y" /* yacc.c:1661 */ + { def_import( 0, (yyvsp[-5].id), (yyvsp[-3].id), (yyvsp[-1].id), -1, (yyvsp[0].id)); } +#line 1619 "deffilep.c" /* yacc.c:1661 */ + break; + + case 39: +#line 207 "deffilep.y" /* yacc.c:1661 */ + { def_import ( 0, (yyvsp[-3].id), 0, (yyvsp[-1].id), -1, (yyvsp[0].id)); } +#line 1625 "deffilep.c" /* yacc.c:1661 */ + break; + + case 42: +#line 216 "deffilep.y" /* yacc.c:1661 */ + { def_section ((yyvsp[-1].id), (yyvsp[0].number));} +#line 1631 "deffilep.c" /* yacc.c:1661 */ + break; + + case 43: +#line 217 "deffilep.y" /* yacc.c:1661 */ + { def_section_alt ((yyvsp[-1].id), (yyvsp[0].id));} +#line 1637 "deffilep.c" /* yacc.c:1661 */ + break; + + case 44: +#line 221 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = (yyvsp[-2].number) | (yyvsp[0].number); } +#line 1643 "deffilep.c" /* yacc.c:1661 */ + break; + + case 45: +#line 222 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = (yyvsp[0].number); } +#line 1649 "deffilep.c" /* yacc.c:1661 */ + break; + + case 48: +#line 229 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number)=(yyvsp[0].number);} +#line 1655 "deffilep.c" /* yacc.c:1661 */ + break; + + case 49: +#line 230 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number)=-1;} +#line 1661 "deffilep.c" /* yacc.c:1661 */ + break; + + case 50: +#line 234 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 1;} +#line 1667 "deffilep.c" /* yacc.c:1661 */ + break; + + case 51: +#line 235 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = 2;} +#line 1673 "deffilep.c" /* yacc.c:1661 */ + break; + + case 52: +#line 236 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number)=4;} +#line 1679 "deffilep.c" /* yacc.c:1661 */ + break; + + case 53: +#line 237 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number)=8;} +#line 1685 "deffilep.c" /* yacc.c:1661 */ + break; + + case 54: +#line 241 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "BASE"; } +#line 1691 "deffilep.c" /* yacc.c:1661 */ + break; + + case 55: +#line 242 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "CODE"; } +#line 1697 "deffilep.c" /* yacc.c:1661 */ + break; + + case 56: +#line 243 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "CONSTANT"; } +#line 1703 "deffilep.c" /* yacc.c:1661 */ + break; + + case 57: +#line 244 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "constant"; } +#line 1709 "deffilep.c" /* yacc.c:1661 */ + break; + + case 58: +#line 245 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "DATA"; } +#line 1715 "deffilep.c" /* yacc.c:1661 */ + break; + + case 59: +#line 246 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "data"; } +#line 1721 "deffilep.c" /* yacc.c:1661 */ + break; + + case 60: +#line 247 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "DESCRIPTION"; } +#line 1727 "deffilep.c" /* yacc.c:1661 */ + break; + + case 61: +#line 248 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "DIRECTIVE"; } +#line 1733 "deffilep.c" /* yacc.c:1661 */ + break; + + case 62: +#line 249 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "EXECUTE"; } +#line 1739 "deffilep.c" /* yacc.c:1661 */ + break; + + case 63: +#line 250 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "EXPORTS"; } +#line 1745 "deffilep.c" /* yacc.c:1661 */ + break; + + case 64: +#line 251 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "HEAPSIZE"; } +#line 1751 "deffilep.c" /* yacc.c:1661 */ + break; + + case 65: +#line 252 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "IMPORTS"; } +#line 1757 "deffilep.c" /* yacc.c:1661 */ + break; + + case 66: +#line 259 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "NAME"; } +#line 1763 "deffilep.c" /* yacc.c:1661 */ + break; + + case 67: +#line 260 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "NONAME"; } +#line 1769 "deffilep.c" /* yacc.c:1661 */ + break; + + case 68: +#line 261 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "noname"; } +#line 1775 "deffilep.c" /* yacc.c:1661 */ + break; + + case 69: +#line 262 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "PRIVATE"; } +#line 1781 "deffilep.c" /* yacc.c:1661 */ + break; + + case 70: +#line 263 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "private"; } +#line 1787 "deffilep.c" /* yacc.c:1661 */ + break; + + case 71: +#line 264 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "READ"; } +#line 1793 "deffilep.c" /* yacc.c:1661 */ + break; + + case 72: +#line 265 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "SHARED"; } +#line 1799 "deffilep.c" /* yacc.c:1661 */ + break; + + case 73: +#line 266 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "STACKSIZE"; } +#line 1805 "deffilep.c" /* yacc.c:1661 */ + break; + + case 74: +#line 267 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "VERSION"; } +#line 1811 "deffilep.c" /* yacc.c:1661 */ + break; + + case 75: +#line 268 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id_const) = "WRITE"; } +#line 1817 "deffilep.c" /* yacc.c:1661 */ + break; + + case 76: +#line 271 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1823 "deffilep.c" /* yacc.c:1661 */ + break; + + case 77: +#line 273 "deffilep.y" /* yacc.c:1661 */ + { + char *name = xmalloc (strlen ((yyvsp[0].id_const)) + 2); + sprintf (name, ".%s", (yyvsp[0].id_const)); + (yyval.id) = name; + } +#line 1833 "deffilep.c" /* yacc.c:1661 */ + break; + + case 78: +#line 279 "deffilep.y" /* yacc.c:1661 */ + { + char *name = def_pool_alloc (strlen ((yyvsp[0].id)) + 2); + sprintf (name, ".%s", (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1843 "deffilep.c" /* yacc.c:1661 */ + break; + + case 79: +#line 285 "deffilep.y" /* yacc.c:1661 */ + { + char *name = def_pool_alloc (strlen ((yyvsp[-2].id_const)) + 1 + strlen ((yyvsp[0].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[-2].id_const), (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1853 "deffilep.c" /* yacc.c:1661 */ + break; + + case 80: +#line 291 "deffilep.y" /* yacc.c:1661 */ + { + char *name = def_pool_alloc (strlen ((yyvsp[-2].id)) + 1 + strlen ((yyvsp[0].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[-2].id), (yyvsp[0].id)); + (yyval.id) = name; + } +#line 1863 "deffilep.c" /* yacc.c:1661 */ + break; + + case 81: +#line 298 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1869 "deffilep.c" /* yacc.c:1661 */ + break; + + case 82: +#line 299 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = ""; } +#line 1875 "deffilep.c" /* yacc.c:1661 */ + break; + + case 83: +#line 302 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1881 "deffilep.c" /* yacc.c:1661 */ + break; + + case 84: +#line 303 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = 0; } +#line 1887 "deffilep.c" /* yacc.c:1661 */ + break; + + case 85: +#line 307 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = (yyvsp[0].number);} +#line 1893 "deffilep.c" /* yacc.c:1661 */ + break; + + case 86: +#line 308 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = -1;} +#line 1899 "deffilep.c" /* yacc.c:1661 */ + break; + + case 87: +#line 312 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1905 "deffilep.c" /* yacc.c:1661 */ + break; + + case 88: +#line 313 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = 0; } +#line 1911 "deffilep.c" /* yacc.c:1661 */ + break; + + case 89: +#line 316 "deffilep.y" /* yacc.c:1661 */ + { (yyval.vma) = (yyvsp[0].vma);} +#line 1917 "deffilep.c" /* yacc.c:1661 */ + break; + + case 90: +#line 317 "deffilep.y" /* yacc.c:1661 */ + { (yyval.vma) = (bfd_vma) -1;} +#line 1923 "deffilep.c" /* yacc.c:1661 */ + break; + + case 91: +#line 320 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1929 "deffilep.c" /* yacc.c:1661 */ + break; + + case 92: +#line 322 "deffilep.y" /* yacc.c:1661 */ + { + char *id = def_pool_alloc (strlen ((yyvsp[0].id)) + 2); + sprintf (id, ".%s", (yyvsp[0].id)); + (yyval.id) = id; + } +#line 1939 "deffilep.c" /* yacc.c:1661 */ + break; + + case 93: +#line 328 "deffilep.y" /* yacc.c:1661 */ + { + char *id = def_pool_alloc (strlen ((yyvsp[-3].id)) + 1 + strlen ((yyvsp[-1].digits)) + strlen ((yyvsp[0].id)) + 1); + sprintf (id, "%s.%s%s", (yyvsp[-3].id), (yyvsp[-1].digits), (yyvsp[0].id)); + (yyval.id) = id; + } +#line 1949 "deffilep.c" /* yacc.c:1661 */ + break; + + case 94: +#line 335 "deffilep.y" /* yacc.c:1661 */ + { (yyval.digits) = (yyvsp[0].digits); } +#line 1955 "deffilep.c" /* yacc.c:1661 */ + break; + + case 95: +#line 336 "deffilep.y" /* yacc.c:1661 */ + { (yyval.digits) = ""; } +#line 1961 "deffilep.c" /* yacc.c:1661 */ + break; + + case 96: +#line 339 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = (yyvsp[0].id); } +#line 1967 "deffilep.c" /* yacc.c:1661 */ + break; + + case 97: +#line 340 "deffilep.y" /* yacc.c:1661 */ + { (yyval.id) = ""; } +#line 1973 "deffilep.c" /* yacc.c:1661 */ + break; + + case 98: +#line 343 "deffilep.y" /* yacc.c:1661 */ + { (yyval.number) = strtoul ((yyvsp[0].digits), 0, 0); } +#line 1979 "deffilep.c" /* yacc.c:1661 */ + break; + + case 99: +#line 345 "deffilep.y" /* yacc.c:1661 */ + { (yyval.vma) = (bfd_vma) strtoull ((yyvsp[0].digits), 0, 0); } +#line 1985 "deffilep.c" /* yacc.c:1661 */ + break; + + +#line 1989 "deffilep.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 347 "deffilep.y" /* yacc.c:1906 */ + + +/***************************************************************************** + 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 separating options + - a NUL separating 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..04644f74dfe --- /dev/null +++ b/ld/deffilep.h @@ -0,0 +1,132 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_DEFFILEP_H_INCLUDED +# define YY_YY_DEFFILEP_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 113 "deffilep.y" /* yacc.c:1915 */ + + char *id; + const char *id_const; + int number; + bfd_vma vma; + char *digits; + +#line 122 "deffilep.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_DEFFILEP_H_INCLUDED */ diff --git a/ld/ld.1 b/ld/ld.1 new file mode 100644 index 00000000000..9a9beddffd2 --- /dev/null +++ b/ld/ld.1 @@ -0,0 +1,2747 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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. +.Sp +If this option is being used to force additional modules to be pulled +into the link, and if it is an error for the symbol to remain +undefined, then the option \fB\-\-require\-defined\fR should be used +instead. +.IP "\fB\-\-require\-defined=\fR\fIsymbol\fR" 4 +.IX Item "--require-defined=symbol" +Require that \fIsymbol\fR is defined in the output file. This option +is the same as option \fB\-\-undefined\fR except that if \fIsymbol\fR +is not defined in the output file then the linker will issue an error +and exit. The same effect can be achieved in a linker script by using +\&\f(CW\*(C`EXTERN\*(C'\fR, \f(CW\*(C`ASSERT\*(C'\fR and \f(CW\*(C`DEFINED\*(C'\fR together. This option +can be used multiple times to require additional symbols. +.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\-\-orphan\-handling=\fR\fI\s-1MODE\s0\fR" 4 +.IX Item "--orphan-handling=MODE" +Control how orphan sections are handled. An orphan section is one not +specifically mentioned in a linker script. +.Sp +\&\fI\s-1MODE\s0\fR can have any of the following values: +.RS 4 +.ie n .IP """place""" 4 +.el .IP "\f(CWplace\fR" 4 +.IX Item "place" +Orphan sections are placed into a suitable output section following +the strategy described in \fBOrphan Sections\fR. The option +\&\fB\-\-unique\fR also effects how sections are placed. +.ie n .IP """discard""" 4 +.el .IP "\f(CWdiscard\fR" 4 +.IX Item "discard" +All orphan sections are discarded, by placing them in the +\&\fB/DISCARD/\fR section. +.ie n .IP """warn""" 4 +.el .IP "\f(CWwarn\fR" 4 +.IX Item "warn" +The linker will place the orphan section as for \f(CW\*(C`place\*(C'\fR and also +issue a warning. +.ie n .IP """error""" 4 +.el .IP "\f(CWerror\fR" 4 +.IX Item "error" +The linker will exit with an error if any orphan section is found. +.RE +.RS 4 +.Sp +The default if \fB\-\-orphan\-handling\fR is not given is \f(CW\*(C`place\*(C'\fR. +.RE +.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 "\fBcommon\fR" 4 +.IX Item "common" +Generate common symbols with the \s-1STT_COMMON\s0 type druing a relocatable +link. +.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 "\fBnocommon\fR" 4 +.IX Item "nocommon" +Generate common symbols with the \s-1STT_OBJECT\s0 type druing a relocatable +link. +.IP "\fBnocopyreloc\fR" 4 +.IX Item "nocopyreloc" +Disable linker generated .dynbss variables used in place of variables +defined in shared libraries. May result in dynamic text relocations. +.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 "\fBtext\fR" 4 +.IX Item "text" +Treat \s-1DT_TEXTREL\s0 in shared object as error. +.IP "\fBnotext\fR" 4 +.IX Item "notext" +Don't treat \s-1DT_TEXTREL\s0 in shared object as error. +.IP "\fBtextoff\fR" 4 +.IX Item "textoff" +Don't treat \s-1DT_TEXTREL\s0 in shared object as error. +.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. +.IP "\fBnoextern-protected-data\fR" 4 +.IX Item "noextern-protected-data" +Don't treat protected data symbol as external when building shared +library. This option overrides linker backend default. It can be used +to workaround incorrect relocations against protected data symbols +generated by compiler. Updates on protected data symbols by another +module aren't visible to the resulting shared library. Supported for +i386 and x86\-64. +.IP "\fBnodynamic-undefined-weak\fR" 4 +.IX Item "nodynamic-undefined-weak" +Don't treat undefined weak symbols as dynamic when building executable. +This option overrides linker backend default. It can be used to avoid +dynamic relocations against undefined weak symbols in executable. +Supported for i386 and x86\-64. +.IP "\fBnoreloc-overflow\fR" 4 +.IX Item "noreloc-overflow" +Disable relocation overflow check. This can be used to disable +relocation overflow check if there will be no dynamic relocation +overflow at run-time. Supported for x86_64. +.IP "\fBcall\-nop=prefix\-addr\fR" 4 +.IX Item "call-nop=prefix-addr" +.PD 0 +.IP "\fBcall\-nop=prefix\-nop\fR" 4 +.IX Item "call-nop=prefix-nop" +.IP "\fBcall\-nop=suffix\-nop\fR" 4 +.IX Item "call-nop=suffix-nop" +.IP "\fBcall\-nop=prefix\-\fR\fIbyte\fR" 4 +.IX Item "call-nop=prefix-byte" +.IP "\fBcall\-nop=suffix\-\fR\fIbyte\fR" 4 +.IX Item "call-nop=suffix-byte" +.PD +Specify the 1\-byte \f(CW\*(C`NOP\*(C'\fR padding when transforming indirect call +to a locally defined function, foo, via its \s-1GOT\s0 slot. +\&\fBcall\-nop=prefix\-addr\fR generates \f(CW\*(C`0x67 call foo\*(C'\fR. +\&\fBcall\-nop=prefix\-nop\fR generates \f(CW\*(C`0x90 call foo\*(C'\fR. +\&\fBcall\-nop=suffix\-nop\fR generates \f(CW\*(C`call foo 0x90\*(C'\fR. +\&\fBcall\-nop=prefix\-\fR\fIbyte\fR generates \f(CW\*(C`\f(CIbyte\f(CW call foo\*(C'\fR. +\&\fBcall\-nop=suffix\-\fR\fIbyte\fR generates \f(CW\*(C`call foo \f(CIbyte\f(CW\*(C'\fR. +Supported for i386 and 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 can also be used with the +\&\fB\-\-export\-dynamic\fR option, when creating a position independent +executable, to bind references to global symbols to the definition within +the executable. This option is only meaningful on \s-1ELF\s0 platforms which +support shared libraries and position independent executables. +.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 can also be used with the \fB\-\-export\-dynamic\fR option, +when creating a position independent executable, to bind references +to global function symbols to the definition within the executable. +This option is only meaningful on \s-1ELF\s0 platforms which support shared +libraries and position independent executables. +.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\-\-no\-dynamic\-linker\fR" 4 +.IX Item "--no-dynamic-linker" +When producing an executable file, omit the request for a dynamic +linker to be used at load-time. This is only meaningful for \s-1ELF\s0 +executables that contain dynamic relocations, and usually requires +entry point code that is capable of processing these relocations. +.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. Note that garbage +collection for \s-1COFF\s0 and \s-1PE\s0 format targets is supported, but the +implementation is currently considered to be experimental. +.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\-\-gc\-keep\-exported\fR" 4 +.IX Item "--gc-keep-exported" +When \fB\-\-gc\-sections\fR is enabled, this option prevents garbage +collection of unused input sections that contain global symbols having +default or protected visibility. This option is intended to be used for +executables where unreferenced sections would otherwise be garbage +collected regardless of the external visibility of contained symbols. +Note that this option has no effect when linking shared objects since +it is already the default behaviour. This option is only supported for +\&\s-1ELF\s0 format targets. +.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\-\-print\-memory\-usage\fR" 4 +.IX Item "--print-memory-usage" +Print used size, total size and used size of memory regions created with +the \fB\s-1MEMORY\s0\fR command. This is useful on embedded targets to have a +quick view of amount of free memory. The format of the output has one +headline and one line per region. It is both human readable and easily +parsable by tools. Here is an example of an output: +.Sp +.Vb 3 +\& Memory region Used Size Region Size %age Used +\& ROM: 256 KB 1 MB 25.00% +\& RAM: 32 B 2 GB 0.00% +.Ve +.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\-\-out\-implib\fR \fIfile\fR" 4 +.IX Item "--out-implib file" +Create an import library in \fIfile\fR corresponding to the executable +the linker is generating (eg. a \s-1DLL\s0 or \s-1ELF\s0 program). This import +library (which should be called \f(CW\*(C`*.dll.a\*(C'\fR or \f(CW\*(C`*.a\*(C'\fR for DLLs) +may be used to link clients against the generated executable; this +behaviour makes it possible to skip a separate import library creation +step (eg. \f(CW\*(C`dlltool\*(C'\fR for DLLs). This option is only available for +the i386 \s-1PE\s0 and \s-1ELF\s0 targetted ports of the linker. +.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 path 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 +The tokens \fI\f(CI$ORIGIN\fI\fR and \fI\f(CI$LIB\fI\fR can appear in these search +directories. They will be replaced by the full path to the directory +containing the program or shared object in the case of \fI\f(CI$ORIGIN\fI\fR +and either \fBlib\fR \- for 32\-bit binaries \- or \fBlib64\fR \- for +64\-bit binaries \- in the case of \fI\f(CI$LIB\fI\fR. +.Sp +The alternative form of these tokens \- \fI${\s-1ORIGIN\s0}\fR and +\&\fI${\s-1LIB\s0}\fR can also be used. The token \fI\f(CI$PLATFORM\fI\fR is not +supported. +.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" +.PD 0 +.IP "\fB\-\-no\-eh\-frame\-hdr\fR" 4 +.IX Item "--no-eh-frame-hdr" +.PD +Request (\fB\-\-eh\-frame\-hdr\fR) or suppress +(\fB\-\-no\-eh\-frame\-hdr\fR) the 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\-\-compress\-debug\-sections=none\fR" 4 +.IX Item "--compress-debug-sections=none" +.PD 0 +.IP "\fB\-\-compress\-debug\-sections=zlib\fR" 4 +.IX Item "--compress-debug-sections=zlib" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gnu\fR" 4 +.IX Item "--compress-debug-sections=zlib-gnu" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gabi\fR" 4 +.IX Item "--compress-debug-sections=zlib-gabi" +.PD +On \s-1ELF\s0 platforms, these options control how \s-1DWARF\s0 debug sections are +compressed using zlib. +.Sp +\&\fB\-\-compress\-debug\-sections=none\fR doesn't compress \s-1DWARF\s0 debug +sections. \fB\-\-compress\-debug\-sections=zlib\-gnu\fR compresses +\&\s-1DWARF\s0 debug sections and renames them to begin with \fB.zdebug\fR +instead of \fB.debug\fR. \fB\-\-compress\-debug\-sections=zlib\-gabi\fR +also compresses \s-1DWARF\s0 debug sections, but rather than renaming them it +sets the \s-1SHF_COMPRESSED\s0 flag in the sections' headers. +.Sp +The \fB\-\-compress\-debug\-sections=zlib\fR option is an alias for +\&\fB\-\-compress\-debug\-sections=zlib\-gabi\fR. +.Sp +Note that this option overrides any compression in input debug +sections, so if a binary is linked with \fB\-\-compress\-debug\-sections=none\fR +for example, then any compressed debug sections in input files will be +uncompressed before they are copied into the output binary. +.Sp +The default compression behaviour varies depending upon the target +involved and the configure options used to build the toolchain. The +default can be determined by examining the output from the linker's +\&\fB\-\-help\fR option. +.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`.buildid\*(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 \s-1COFF\s0 object format add an extension that permits +the use of section names longer than eight characters, the normal limit +for \s-1COFF. \s0 By default, these names are only allowed in object files, as +fully-linked executable images do not carry the \s-1COFF\s0 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\-\-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 time 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 identical 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 entries 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 and branch relocation checks for \s-1ISA\s0 mode transitions 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. +.IP "\fB\-\-ignore\-branch\-isa\fR" 4 +.IX Item "--ignore-branch-isa" +.PD 0 +.IP "\fB\-\-no\-ignore\-branch\-isa\fR" 4 +.IX Item "--no-ignore-branch-isa" +.PD +These options control branch relocation checks for invalid \s-1ISA\s0 mode +transitions. If \fB\-\-ignore\-branch\-isa\fR is used, then the linker +accepts any branch relocations and any \s-1ISA\s0 mode transition required +is lost in relocation calculation, except for some cases of \f(CW\*(C`BAL\*(C'\fR +instructions which meet relaxation conditions and are converted to +equivalent \f(CW\*(C`JALX\*(C'\fR instructions as the associated relocation is +calculated. By default or if \fB\-\-no\-ignore\-branch\-isa\fR is used +a check is made causing the loss of an \s-1ISA\s0 mode transition to produce +an error. +.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\-2017 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..e1375350de4 --- /dev/null +++ b/ld/ld.info @@ -0,0 +1,8693 @@ +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.28. + + Copyright (C) 1991-2017 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.28. + + 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. + + If this option is being used to force additional modules to be + pulled into the link, and if it is an error for the symbol to + remain undefined, then the option `--require-defined' should be + used instead. + +`--require-defined=SYMBOL' + Require that SYMBOL is defined in the output file. This option is + the same as option `--undefined' except that if SYMBOL is not + defined in the output file then the linker will issue an error and + exit. The same effect can be achieved in a linker script by using + `EXTERN', `ASSERT' and `DEFINED' together. This option can be + used multiple times to require additional symbols. + +`-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. + +`--orphan-handling=MODE' + Control how orphan sections are handled. An orphan section is one + not specifically mentioned in a linker script. *Note Orphan + Sections::. + + MODE can have any of the following values: + + `place' + Orphan sections are placed into a suitable output section + following the strategy described in *Note Orphan Sections::. + The option `--unique' also effects how sections are placed. + + `discard' + All orphan sections are discarded, by placing them in the + `/DISCARD/' section (*note Output Section Discarding::). + + `warn' + The linker will place the orphan section as for `place' and + also issue a warning. + + `error' + The linker will exit with an error if any orphan section is + found. + + The default if `--orphan-handling' is not given is `place'. + +`--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. + + `common' + Generate common symbols with the STT_COMMON type druing a + relocatable link. + + `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. + + `nocommon' + Generate common symbols with the STT_OBJECT type druing a + relocatable link. + + `nocopyreloc' + Disable linker generated .dynbss variables used in place of + variables defined in shared libraries. May result in dynamic + text relocations. + + `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. + + `text' + Treat DT_TEXTREL in shared object as error. + + `notext' + Don't treat DT_TEXTREL in shared object as error. + + `textoff' + Don't treat DT_TEXTREL in shared object as error. + + `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. + + `noextern-protected-data' + Don't treat protected data symbol as external when building + shared library. This option overrides linker backend + default. It can be used to workaround incorrect relocations + against protected data symbols generated by compiler. + Updates on protected data symbols by another module aren't + visible to the resulting shared library. Supported for i386 + and x86-64. + + `nodynamic-undefined-weak' + Don't treat undefined weak symbols as dynamic when building + executable. This option overrides linker backend default. + It can be used to avoid dynamic relocations against undefined + weak symbols in executable. Supported for i386 and x86-64. + + `noreloc-overflow' + Disable relocation overflow check. This can be used to + disable relocation overflow check if there will be no dynamic + relocation overflow at run-time. Supported for x86_64. + + `call-nop=prefix-addr' + `call-nop=prefix-nop' + `call-nop=suffix-nop' + `call-nop=prefix-BYTE' + `call-nop=suffix-BYTE' + Specify the 1-byte `NOP' padding when transforming indirect + call to a locally defined function, foo, via its GOT slot. + `call-nop=prefix-addr' generates `0x67 call foo'. + `call-nop=prefix-nop' generates `0x90 call foo'. + `call-nop=suffix-nop' generates `call foo 0x90'. + `call-nop=prefix-BYTE' generates `BYTE call foo'. + `call-nop=suffix-BYTE' generates `call foo BYTE'. Supported + for i386 and 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 + can also be used with the `--export-dynamic' option, when creating + a position independent executable, to bind references to global + symbols to the definition within the executable. This option is + only meaningful on ELF platforms which support shared libraries + and position independent executables. + +`-Bsymbolic-functions' + When creating a shared library, bind references to global function + symbols to the definition within the shared library, if any. This + option can also be used with the `--export-dynamic' option, when + creating a position independent executable, to bind references to + global function symbols to the definition within the executable. + This option is only meaningful on ELF platforms which support + shared libraries and position independent executables. + +`--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 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. + +`--no-dynamic-linker' + When producing an executable file, omit the request for a dynamic + linker to be used at load-time. This is only meaningful for ELF + executables that contain dynamic relocations, and usually requires + entry point code that is capable of processing these relocations. + +`--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. Note that + garbage collection for COFF and PE format targets is supported, + but the implementation is currently considered to be experimental. + + `--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. + +`--gc-keep-exported' + When `--gc-sections' is enabled, this option prevents garbage + collection of unused input sections that contain global symbols + having default or protected visibility. This option is intended + to be used for executables where unreferenced sections would + otherwise be garbage collected regardless of the external + visibility of contained symbols. Note that this option has no + effect when linking shared objects since it is already the default + behaviour. This option is only supported for ELF format targets. + +`--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::). + +`--print-memory-usage' + Print used size, total size and used size of memory regions + created with the *Note MEMORY:: command. This is useful on + embedded targets to have a quick view of amount of free memory. + The format of the output has one headline and one line per region. + It is both human readable and easily parsable by tools. Here is + an example of an output: + + Memory region Used Size Region Size %age Used + ROM: 256 KB 1 MB 25.00% + RAM: 32 B 2 GB 0.00% + +`--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::. + +`--out-implib FILE' + Create an import library in FILE corresponding to the executable + the linker is generating (eg. a DLL or ELF program). This import + library (which should be called `*.dll.a' or `*.a' for DLLs) may + be used to link clients against the generated executable; this + behaviour makes it possible to skip a separate import library + creation step (eg. `dlltool' for DLLs). This option is only + available for the i386 PE and ELF targetted ports of the linker. + +`-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 path 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. + + The tokens $ORIGIN and $LIB can appear in these search + directories. They will be replaced by the full path to the + directory containing the program or shared object in the case of + $ORIGIN and either `lib' - for 32-bit binaries - or `lib64' - for + 64-bit binaries - in the case of $LIB. + + The alternative form of these tokens - ${ORIGIN} and ${LIB} can + also be used. The token $PLATFORM is not supported. + + 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' +`--no-eh-frame-hdr' + Request (`--eh-frame-hdr') or suppress (`--no-eh-frame-hdr') the + 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'. + +`--compress-debug-sections=none' +`--compress-debug-sections=zlib' +`--compress-debug-sections=zlib-gnu' +`--compress-debug-sections=zlib-gabi' + On ELF platforms, these options control how DWARF debug sections + are compressed using zlib. + + `--compress-debug-sections=none' doesn't compress DWARF debug + sections. `--compress-debug-sections=zlib-gnu' compresses DWARF + debug sections and renames them to begin with `.zdebug' instead of + `.debug'. `--compress-debug-sections=zlib-gabi' also compresses + DWARF debug sections, but rather than renaming them it sets the + SHF_COMPRESSED flag in the sections' headers. + + The `--compress-debug-sections=zlib' option is an alias for + `--compress-debug-sections=zlib-gabi'. + + Note that this option overrides any compression in input debug + sections, so if a binary is linked with + `--compress-debug-sections=none' for example, then any compressed + debug sections in input files will be uncompressed before they are + copied into the output binary. + + The default compression behaviour varies depending upon the target + involved and the configure options used to build the toolchain. + The default can be determined by examining the output from the + linker's `--help' option. + +`--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 `.buildid' 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] + +`--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 time 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 identical + 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 entries 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 and branch relocation checks for ISA mode transitions 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. + +`--ignore-branch-isa' +`--no-ignore-branch-isa' + These options control branch relocation checks for invalid ISA mode + transitions. If `--ignore-branch-isa' is used, then the linker + accepts any branch relocations and any ISA mode transition required + is lost in relocation calculation, except for some cases of `BAL' + instructions which meet relaxation conditions and are converted to + equivalent `JALX' instructions as the associated relocation is + calculated. By default or if `--no-ignore-branch-isa' is used a + check is made causing the loss of an ISA mode transition to produce + an error. + + + +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. + + Note that assertions are checked before the final stages of linking + take place. This means that expressions involving symbols PROVIDEd + inside section definitions will fail if the user has not set values + for those symbols. The only exception to this rule is PROVIDEd + symbols that just reference dot. Thus an assertion like this: + + .stack : + { + PROVIDE (__stack = .); + PROVIDE (__stack_size = 0x100); + ASSERT ((__stack > (_end + __stack_size)), "Error: No room left for the stack"); + } + + will fail if `__stack_size' is not defined elsewhere. Symbols + PROVIDEd outside of section definitions are evaluated earlier, so + they can be used inside ASSERTions. Thus: + + PROVIDE (__stack_size = 0x100); + .stack : + { + PROVIDE (__stack = .); + ASSERT ((__stack > (_end + __stack_size)), "Error: No room left for the stack"); + } + + will work. + +`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. + +`NOCROSSREFS_TO(TOSECTION FROMSECTION ...)' + This command may be used to tell `ld' to issue an error about any + references to one section from a list of other sections. + + The `NOCROSSREFS' command is useful when ensuring that two or more + output sections are entirely independent but there are situations + where a one-way dependency is needed. For example, in a multi-core + application there may be shared code that can be called from each + core but for safety must never call back. + + The `NOCROSSREFS_TO' command takes a list of output section names. + The first section can not be referenced from any of the other + sections. If `ld' detects any references to the first section + from any of the other sections, it reports an error and returns a + non-zero exit status. Note that the `NOCROSSREFS_TO' 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); + 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. +Alternatively the symbols can be treated as the names of vectors or +arrays and then the code will again work as expected: + + 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 how using this method does not require the use of `&' operators. + + +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. The EXCLUDE_FILE can also be placed +inside the section list, for example: + *(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors) + The result of this is identically to the previous example. +Supporting two syntaxes for EXCLUDE_FILE is useful if the section list +contains more than one section, as described below. + + 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. + + When using EXCLUDE_FILE with more than one section, if the exclusion +is within the section list then the exclusion only applies to the +immediately following section, for example: + *(EXCLUDE_FILE (*somefile.o) .text .rdata) + will cause all `.text' sections from all files except `somefile.o' +to be included, while all `.rdata' sections from all files, including +`somefile.o', will be included. To exclude the `.rdata' sections from +`somefile.o' the example could be modified to: + *(EXCLUDE_FILE (*somefile.o) .text EXCLUDE_FILE (*somefile.o) .rdata) + Alternatively, placing the EXCLUDE_FILE outside of the section list, +before the input file selection, will cause the exclusion to apply for +all sections. Thus the previous example can be rewritten as: + EXCLUDE_FILE (*somefile.o) *(.text .rdata) + + 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 many uses of the `MEMORY' command, +however, all memory blocks defined are treated as if they were +specified inside a single `MEMORY' command. The syntax for `MEMORY' 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. + +`PT_TLS' (7) + Indicates a segment containing thread local storage. + +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. + + The command line options `--orphan-handling' and `--unique' (*note +Command Line Options: Options.) can be used to control which output +sections an orphan is placed in. + + 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 when `LD_FEATURE + ("SANE_EXPR")' or inside an output section definition but an + absolute address otherwise. + + * 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(ABSOLUTE(.), 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) + + ((. + COMMONPAGESIZE - 1) & (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 +- ie ones which have been assembled with the `-EB' option. 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 `--fix-stm32l4xx-629360' switch enables a link-time workaround +for a bug in the bus matrix / memory controller for some of the STM32 +Cortex-M4 based products (STM32L4xx). When accessing off-chip memory +via the affected bus for bus reads of 9 words or more, the bus can +generate corrupt data and/or abort. These are only core-initiated +accesses (not DMA), and might affect any access: integer loads such as +LDM, POP and floating-point loads such as VLDM, VPOP. Stores are not +affected. + + The bug can be avoided by splitting memory accesses into the +necessary chunks to keep bus reads below 8 words. + + The workaround is not enabled by default, this is equivalent to use +`--fix-stm32l4xx-629360=none'. If you know you are using buggy +STM32L4xx hardware, you can enable the workaround by specifying the +linker option `--fix-stm32l4xx-629360', or the equivalent +`--fix-stm32l4xx-629360=default'. + + 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 in a +replacement sequence emulating the behaviour of the original one and a +branch back to the subsequent instruction. The original instruction is +then replaced with a branch to the veneer. + + The workaround does not always preserve the memory access order for +the LDMDB instruction, when the instruction loads the PC. + + The workaround is not able to handle problematic instructions when +they are in the middle of an IT block, since a branch is not allowed +there. In that case, the linker reports a warning and no replacement +occurs. + + The workaround is not able to replace problematic instructions with a +PC-relative branch instruction if the `.text' section is too large. In +that case, when the branch that replaces the original code cannot be +encoded, the linker reports a warning and no replacement occurs. + + 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. + + The `--no-apply-dynamic-relocs' option makes AArch64 linker do not +apply link-time values for dynamic relocations. + + All SG veneers are placed in the special output section +`.gnu.sgstubs'. Its start address must be set, either with the command +line option `--section-start' or in a linker script, to indicate where +to place these veneers in memory. + + The `--cmse-implib' option requests that the import libraries +specified by the `--out-implib' and `--in-implib' options are secure +gateway import libraries, suitable for linking a non-secure executable +against secure code as per ARMv8-M Security Extensions. + + The `--in-implib=file' specifies an input import library whose +symbols must keep the same address in the executable being produced. A +warning is given if no `--out-implib' is given but new symbols have +been introduced in the executable that should be listed in its import +library. Otherwise, if `--out-implib' is specified, the symbols are +added to the output import library. A warning is also given if some +symbols present in the input import library have disappeared from the +executable. This option is only effective for Secure Gateway import +libraries, ie. when `--cmse-implib' is specified. + + +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. + + The `--ignore-branch-isa' and `--no-ignore-branch-isa' options +control branch relocation checks for invalid ISA mode transitions. If +`--ignore-branch-isa' is used, then the linker accepts any branch +relocations and any ISA mode transition required is lost in relocation +calculation, except for some cases of `BAL' instructions which meet +relaxation conditions and are converted to equivalent `JALX' +instructions as the associated relocation is calculated. By default or +if `--no-ignore-branch-isa' is used a check is made causing the loss of +an ISA mode transition to produce an error. + + +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. + +`--save-restore-funcs' +`--no-save-restore-funcs' + These two options control whether PowerPC64 `ld' automatically + provides out-of-line register save and restore functions used by + `-Os' code. The default is to provide any such referenced + function for a normal final link, and to not do so for a + relocatable link. + +`--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. + +`--tls-get-addr-optimize' +`--no-tls-get-addr-optimize' + These options control whether PowerPC64 `ld' uses a special stub + to call __tls_get_addr. PowerPC64 glibc 2.22 and later support an + optimization that allows the second and subsequent calls to + `__tls_get_addr' for a given symbol to be resolved by the special + stub without calling in to glibc. By default the linker enables + this option when glibc advertises the availability of + __tls_get_addr_opt. Forcing this option on when using an older + glibc won't do much besides slow down your applications, but may + be useful if linking an application against an older glibc with + the expectation that it will normally be used on systems having a + newer glibc. + +`--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 823) +* --accept-unknown-input-arch: Options. (line 841) +* --add-needed: Options. (line 869) +* --add-stdcall-alias: Options. (line 1811) +* --allow-multiple-definition: Options. (line 1157) +* --allow-shlib-undefined: Options. (line 1163) +* --architecture=ARCH: Options. (line 123) +* --as-needed: Options. (line 851) +* --audit AUDITLIB: Options. (line 112) +* --auxiliary=NAME: Options. (line 255) +* --bank-window: Options. (line 2256) +* --base-file: Options. (line 1816) +* --be8: ARM. (line 28) +* --bss-plt: PowerPC ELF32. (line 16) +* --build-id: Options. (line 1773) +* --build-id=STYLE: Options. (line 1773) +* --check-sections: Options. (line 955) +* --cmse-implib: ARM. (line 236) +* --compress-debug-sections=none: Options. (line 1731) +* --compress-debug-sections=zlib: Options. (line 1731) +* --compress-debug-sections=zlib-gabi: Options. (line 1731) +* --compress-debug-sections=zlib-gnu: Options. (line 1731) +* --copy-dt-needed-entries: Options. (line 967) +* --cref: Options. (line 987) +* --default-imported-symver: Options. (line 1200) +* --default-script=SCRIPT: Options. (line 562) +* --default-symver: Options. (line 1196) +* --defsym=SYMBOL=EXP: Options. (line 1016) +* --demangle[=STYLE]: Options. (line 1028) +* --depaudit AUDITLIB: Options. (line 177) +* --disable-auto-image-base: Options. (line 1994) +* --disable-auto-import: Options. (line 2129) +* --disable-large-address-aware: Options. (line 1942) +* --disable-long-section-names: Options. (line 1826) +* --disable-new-dtags: Options. (line 1707) +* --disable-runtime-pseudo-reloc: Options. (line 2142) +* --disable-stdcall-fixup: Options. (line 1848) +* --discard-all: Options. (line 647) +* --discard-locals: Options. (line 651) +* --dll: Options. (line 1821) +* --dll-search-prefix: Options. (line 2000) +* --dotsyms: PowerPC64 ELF64. (line 33) +* --dsbt-index: Options. (line 2233) +* --dsbt-size: Options. (line 2228) +* --dynamic-linker=FILE: Options. (line 1041) +* --dynamic-list-cpp-new: Options. (line 947) +* --dynamic-list-cpp-typeinfo: Options. (line 951) +* --dynamic-list-data: Options. (line 944) +* --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 931) +* --dynamicbase: Options. (line 2182) +* --eh-frame-hdr: Options. (line 1696) +* --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 1985) +* --enable-auto-import: Options. (line 2009) +* --enable-extra-pe-debug: Options. (line 2147) +* --enable-long-section-names: Options. (line 1826) +* --enable-new-dtags: Options. (line 1707) +* --enable-runtime-pseudo-reloc: Options. (line 2134) +* --enable-stdcall-fixup: Options. (line 1848) +* --entry=ENTRY: Options. (line 187) +* --error-unresolved-symbols: Options. (line 1649) +* --exclude-all-symbols: Options. (line 1902) +* --exclude-libs: Options. (line 197) +* --exclude-modules-for-implib: Options. (line 208) +* --exclude-symbols: Options. (line 1896) +* --export-all-symbols: Options. (line 1872) +* --export-dynamic: Options. (line 221) +* --extra-overlay-stubs: SPU ELF. (line 19) +* --fatal-warnings: Options. (line 1054) +* --file-alignment: Options. (line 1906) +* --filter=NAME: Options. (line 276) +* --fix-arm1176: ARM. (line 112) +* --fix-cortex-a53-835769: ARM. (line 213) +* --fix-cortex-a8: ARM. (line 204) +* --fix-stm32l4xx-629360: ARM. (line 121) +* --fix-v4bx: ARM. (line 50) +* --fix-v4bx-interworking: ARM. (line 63) +* --force-dynamic: Options. (line 506) +* --force-exe-suffix: Options. (line 1059) +* --forceinteg: Options. (line 2187) +* --format=FORMAT: Options. (line 134) +* --format=VERSION: TI COFF. (line 6) +* --gc-keep-exported: Options. (line 1102) +* --gc-sections: Options. (line 1069) +* --got: Options. (line 2269) +* --got=TYPE: M68K. (line 6) +* --gpsize=VALUE: Options. (line 309) +* --hash-size=NUMBER: Options. (line 1717) +* --hash-style=STYLE: Options. (line 1725) +* --heap: Options. (line 1912) +* --help: Options. (line 1130) +* --high-entropy-va: Options. (line 2178) +* --ignore-branch-isa <1>: Options. (line 2291) +* --ignore-branch-isa: MIPS. (line 13) +* --image-base: Options. (line 1919) +* --in-implib=FILE: ARM. (line 241) +* --insert-timestamp: Options. (line 2210) +* --insn32 <1>: Options. (line 2282) +* --insn32: MIPS. (line 6) +* --just-symbols=FILE: Options. (line 529) +* --kill-at: Options. (line 1928) +* --large-address-aware: Options. (line 1933) +* --ld-generated-unwind-info: Options. (line 1702) +* --leading-underscore: Options. (line 1866) +* --library-path=DIR: Options. (line 367) +* --library=NAMESPEC: Options. (line 334) +* --local-store=lo:hi: SPU ELF. (line 24) +* --long-plt: ARM. (line 224) +* --major-image-version: Options. (line 1949) +* --major-os-version: Options. (line 1954) +* --major-subsystem-version: Options. (line 1958) +* --merge-exidx-entries: ARM. (line 221) +* --minor-image-version: Options. (line 1963) +* --minor-os-version: Options. (line 1968) +* --minor-subsystem-version: Options. (line 1972) +* --mri-script=MRI-CMDFILE: Options. (line 158) +* --multi-subspace: HPPA ELF32. (line 6) +* --nmagic: Options. (line 439) +* --no-accept-unknown-input-arch: Options. (line 841) +* --no-add-needed: Options. (line 869) +* --no-allow-shlib-undefined: Options. (line 1163) +* --no-apply-dynamic-relocs: ARM. (line 228) +* --no-as-needed: Options. (line 851) +* --no-bind: Options. (line 2201) +* --no-check-sections: Options. (line 955) +* --no-copy-dt-needed-entries: Options. (line 967) +* --no-define-common: Options. (line 1000) +* --no-demangle: Options. (line 1028) +* --no-dotsyms: PowerPC64 ELF64. (line 33) +* --no-dynamic-linker: Options. (line 1048) +* --no-eh-frame-hdr: Options. (line 1696) +* --no-enum-size-warning: ARM. (line 159) +* --no-export-dynamic: Options. (line 221) +* --no-fatal-warnings: Options. (line 1054) +* --no-fix-arm1176: ARM. (line 112) +* --no-fix-cortex-a53-835769: ARM. (line 213) +* --no-fix-cortex-a8: ARM. (line 204) +* --no-gc-sections: Options. (line 1069) +* --no-ignore-branch-isa <1>: Options. (line 2292) +* --no-ignore-branch-isa: MIPS. (line 13) +* --no-insn32 <1>: MIPS. (line 6) +* --no-insn32: Options. (line 2283) +* --no-isolation: Options. (line 2194) +* --no-keep-memory: Options. (line 1142) +* --no-leading-underscore: Options. (line 1866) +* --no-merge-exidx-entries <1>: Options. (line 2240) +* --no-merge-exidx-entries: ARM. (line 221) +* --no-multi-toc: PowerPC64 ELF64. (line 97) +* --no-omagic: Options. (line 454) +* --no-opd-optimize: PowerPC64 ELF64. (line 71) +* --no-overlays: SPU ELF. (line 9) +* --no-plt-align: PowerPC64 ELF64. (line 119) +* --no-plt-static-chain: PowerPC64 ELF64. (line 127) +* --no-plt-thread-safe: PowerPC64 ELF64. (line 133) +* --no-print-gc-sections: Options. (line 1093) +* --no-save-restore-funcs: PowerPC64 ELF64. (line 44) +* --no-seh: Options. (line 2197) +* --no-tls-get-addr-optimize: PowerPC64 ELF64. (line 57) +* --no-tls-optimize <1>: PowerPC64 ELF64. (line 52) +* --no-tls-optimize: PowerPC ELF32. (line 51) +* --no-toc-optimize: PowerPC64 ELF64. (line 83) +* --no-toc-sort: PowerPC64 ELF64. (line 109) +* --no-trampoline: Options. (line 2250) +* --no-undefined: Options. (line 1149) +* --no-undefined-version: Options. (line 1191) +* --no-warn-mismatch: Options. (line 1204) +* --no-warn-search-mismatch: Options. (line 1213) +* --no-wchar-size-warning: ARM. (line 166) +* --no-whole-archive: Options. (line 1217) +* --noinhibit-exec: Options. (line 1221) +* --non-overlapping-opd: PowerPC64 ELF64. (line 77) +* --nxcompat: Options. (line 2190) +* --oformat=OUTPUT-FORMAT: Options. (line 1233) +* --omagic: Options. (line 445) +* --orphan-handling=MODE: Options. (line 606) +* --out-implib: Options. (line 1246) +* --output-def: Options. (line 1977) +* --output=OUTPUT: Options. (line 460) +* --pic-executable: Options. (line 1255) +* --pic-veneer: ARM. (line 172) +* --plt-align: PowerPC64 ELF64. (line 119) +* --plt-static-chain: PowerPC64 ELF64. (line 127) +* --plt-thread-safe: PowerPC64 ELF64. (line 133) +* --plugin: SPU ELF. (line 6) +* --pop-state: Options. (line 494) +* --print-gc-sections: Options. (line 1093) +* --print-map: Options. (line 402) +* --print-memory-usage: Options. (line 1118) +* --print-output-format: Options. (line 1112) +* --push-state: Options. (line 476) +* --reduce-memory-overheads: Options. (line 1759) +* --relax: Options. (line 1271) +* --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) +* --require-defined=SYMBOL: Options. (line 588) +* --retain-symbols-file=FILENAME: Options. (line 1297) +* --save-restore-funcs: PowerPC64 ELF64. (line 44) +* --script=SCRIPT: Options. (line 553) +* --sdata-got: PowerPC ELF32. (line 33) +* --section-alignment: Options. (line 2152) +* --section-start=SECTIONNAME=ORG: Options. (line 1462) +* --secure-plt: PowerPC ELF32. (line 26) +* --sort-common: Options. (line 1404) +* --sort-section=alignment: Options. (line 1419) +* --sort-section=name: Options. (line 1415) +* --split-by-file: Options. (line 1423) +* --split-by-reloc: Options. (line 1428) +* --stack: Options. (line 2158) +* --stack-analysis: SPU ELF. (line 29) +* --stats: Options. (line 1441) +* --strip-all: Options. (line 540) +* --strip-debug: Options. (line 544) +* --stub-group-size: PowerPC64 ELF64. (line 6) +* --stub-group-size=N <1>: ARM. (line 177) +* --stub-group-size=N: HPPA ELF32. (line 12) +* --subsystem: Options. (line 2165) +* --support-old-code: ARM. (line 6) +* --sysroot=DIRECTORY: Options. (line 1445) +* --target-help: Options. (line 1134) +* --target1-abs: ARM. (line 33) +* --target1-rel: ARM. (line 33) +* --target2=TYPE: ARM. (line 38) +* --thumb-entry=ENTRY: ARM. (line 17) +* --tls-get-addr-optimize: PowerPC64 ELF64. (line 57) +* --trace: Options. (line 549) +* --trace-symbol=SYMBOL: Options. (line 657) +* --traditional-format: Options. (line 1450) +* --tsaware: Options. (line 2207) +* --undefined=SYMBOL: Options. (line 575) +* --unique[=SECTION]: Options. (line 632) +* --unresolved-symbols: Options. (line 1492) +* --use-blx: ARM. (line 75) +* --use-nul-prefixed-import-tables: ARM. (line 23) +* --verbose[=NUMBER]: Options. (line 1521) +* --version: Options. (line 641) +* --version-script=VERSION-SCRIPTFILE: Options. (line 1529) +* --vfp11-denorm-fix: ARM. (line 84) +* --warn-alternate-em: Options. (line 1641) +* --warn-common: Options. (line 1540) +* --warn-constructors: Options. (line 1608) +* --warn-multiple-gp: Options. (line 1613) +* --warn-once: Options. (line 1627) +* --warn-section-align: Options. (line 1631) +* --warn-shared-textrel: Options. (line 1638) +* --warn-unresolved-symbols: Options. (line 1644) +* --wdmdriver: Options. (line 2204) +* --whole-archive: Options. (line 1653) +* --wrap=SYMBOL: Options. (line 1667) +* -A ARCH: Options. (line 122) +* -a KEYWORD: Options. (line 105) +* -assert KEYWORD: Options. (line 876) +* -b FORMAT: Options. (line 134) +* -Bdynamic: Options. (line 879) +* -Bgroup: Options. (line 889) +* -Bshareable: Options. (line 1397) +* -Bstatic: Options. (line 896) +* -Bsymbolic: Options. (line 911) +* -Bsymbolic-functions: Options. (line 922) +* -c MRI-CMDFILE: Options. (line 158) +* -call_shared: Options. (line 879) +* -d: Options. (line 168) +* -dc: Options. (line 168) +* -dn: Options. (line 896) +* -dp: Options. (line 168) +* -dT SCRIPT: Options. (line 562) +* -dy: Options. (line 879) +* -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 1041) +* -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 1138) +* -N: Options. (line 445) +* -n: Options. (line 439) +* -no-relax: Options. (line 1271) +* -non_shared: Options. (line 896) +* -nostdlib: Options. (line 1227) +* -O LEVEL: Options. (line 466) +* -o OUTPUT: Options. (line 460) +* -P AUDITLIB: Options. (line 177) +* -pie: Options. (line 1255) +* -q: Options. (line 497) +* -qmagic: Options. (line 1265) +* -Qy: Options. (line 1268) +* -r: Options. (line 510) +* -R FILE: Options. (line 529) +* -rpath-link=DIR: Options. (line 1333) +* -rpath=DIR: Options. (line 1311) +* -S: Options. (line 544) +* -s: Options. (line 540) +* -shared: Options. (line 1397) +* -soname=NAME: Options. (line 316) +* -static: Options. (line 896) +* -t: Options. (line 549) +* -T SCRIPT: Options. (line 553) +* -Tbss=ORG: Options. (line 1471) +* -Tdata=ORG: Options. (line 1471) +* -Tldata-segment=ORG: Options. (line 1487) +* -Trodata-segment=ORG: Options. (line 1481) +* -Ttext-segment=ORG: Options. (line 1477) +* -Ttext=ORG: Options. (line 1471) +* -u SYMBOL: Options. (line 575) +* -Ur: Options. (line 596) +* -V: Options. (line 641) +* -v: Options. (line 641) +* -X: Options. (line 651) +* -x: Options. (line 647) +* -Y PATH: Options. (line 666) +* -y SYMBOL: Options. (line 657) +* -z defs: Options. (line 1149) +* -z KEYWORD: Options. (line 670) +* -z muldefs: Options. (line 1157) +* .: Location Counter. (line 6) +* /DISCARD/: Output Section Discarding. + (line 26) +* 32-bit PLT entries: ARM. (line 224) +* :PHDR: Output Section Phdr. + (line 6) +* =FILLEXP: Output Section Fill. + (line 6) +* >REGION: Output Section Region. + (line 6) +* [COMMON]: Input Section Common. + (line 29) +* AArch64 rela addend: ARM. (line 228) +* 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 115) +* 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 112) +* 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 1540) +* command files: Scripts. (line 6) +* command line: Options. (line 6) +* common allocation: Options. (line 168) +* common allocation in linker script: Miscellaneous Commands. + (line 51) +* 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: Output Section Keywords. + (line 19) +* constructors: Options. (line 596) +* constructors, arranging in link: Output Section Keywords. + (line 19) +* Cortex-A53 erratum 835769 workaround: ARM. (line 213) +* Cortex-A8 erratum workaround: ARM. (line 204) +* 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 987) +* cross references: Miscellaneous Commands. + (line 82) +* 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 104) +* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 110) +* dbx: Options. (line 1455) +* DEF files, creating: Options. (line 1977) +* default emulation: Environment. (line 21) +* default input format: Environment. (line 9) +* defined symbol: Options. (line 588) +* DEFINED(SYMBOL): Builtin Functions. (line 123) +* deleting local symbols: Options. (line 647) +* demangling, default: Environment. (line 29) +* demangling, from command line: Options. (line 1028) +* direct linking to a dll: WIN32. (line 239) +* discarding sections: Output Section Discarding. + (line 6) +* discontinuous memory: MEMORY. (line 6) +* DLLs, creating: Options. (line 1977) +* DLLs, linking to: Options. (line 2000) +* 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 1041) +* 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) +* EXCLUDE_FILE: Input Section Basics. + (line 17) +* 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 39) +* 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 50) +* FIX_V4BX_INTERWORKING: ARM. (line 63) +* FORCE_COMMON_ALLOCATION: Miscellaneous Commands. + (line 46) +* 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 1093) +* garbage collection <2>: Input Section Keep. (line 6) +* garbage collection: Options. (line 1069) +* 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 823) +* H8/300 support: H8/300. (line 6) +* header size: Builtin Functions. (line 191) +* heap size: Options. (line 1912) +* help: Options. (line 1130) +* 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 1919) +* 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 1653) +* incremental link: Options. (line 325) +* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. + (line 51) +* 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 import library: ARM. (line 241) +* 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 56) +* insert user script into default script: Miscellaneous Commands. + (line 56) +* 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 121) +* ldata segment origin, cmd line: Options. (line 1488) +* LDEMULATION: Environment. (line 21) +* len =: MEMORY. (line 74) +* LENGTH =: MEMORY. (line 74) +* LENGTH(MEMORY): Builtin Functions. (line 140) +* library search path in linker script: File Commands. (line 76) +* link map: Options. (line 402) +* link-time runtime library search path: Options. (line 1333) +* 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 143) +* loading, preventing: Output Section Type. + (line 22) +* local symbols, deleting: Options. (line 651) +* location counter: Location Counter. (line 6) +* LOG2CEIL(EXP): Builtin Functions. (line 147) +* 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 115) +* machine dependencies: Machine Dependent. (line 6) +* mapping input sections to output sections: Input Section. (line 6) +* MAX: Builtin Functions. (line 150) +* 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 1118) +* Merging exidx entries: ARM. (line 221) +* MIN: Builtin Functions. (line 153) +* MIPS branch relocation check control: MIPS. (line 13) +* 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 157) +* Nios II call relaxation: Nios II. (line 6) +* NMAGIC: Options. (line 439) +* NO_ENUM_SIZE_WARNING: ARM. (line 159) +* NO_WCHAR_SIZE_WARNING: ARM. (line 166) +* NOCROSSREFS(SECTIONS): Miscellaneous Commands. + (line 82) +* NOCROSSREFS_TO(TOSECTION FROMSECTIONS): Miscellaneous Commands. + (line 98) +* NOLOAD: Output Section Type. + (line 22) +* not enough room for program headers: Builtin Functions. (line 196) +* 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 454) +* 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 163) +* orphan: Orphan Sections. (line 6) +* orphan sections: Options. (line 606) +* output file after errors: Options. (line 1221) +* output file format in linker script: Format Commands. (line 10) +* output file name in linker script: File Commands. (line 66) +* output format: Options. (line 1112) +* 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 115) +* 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 172) +* Placement of SG veneers: ARM. (line 231) +* pop state governing input file handling: Options. (line 494) +* position independent executables: Options. (line 1257) +* 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 __tls_get_addr optimization: PowerPC64 ELF64. (line 57) +* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) +* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) +* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 97) +* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 71) +* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 77) +* PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 127) +* PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 133) +* PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 119) +* PowerPC64 register save/restore functions: PowerPC64 ELF64. + (line 44) +* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) +* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) +* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 52) +* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 83) +* PowerPC64 TOC sorting: PowerPC64 ELF64. (line 109) +* 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 196) +* 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 1271) +* 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 1297) +* rodata segment origin, cmd line: Options. (line 1482) +* 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 1311) +* 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 1631) +* 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 143) +* section name: Output Section Name. + (line 6) +* section name wildcard patterns: Input Section Wildcards. + (line 6) +* section size: Builtin Functions. (line 175) +* 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) +* sections, orphan: Options. (line 606) +* Secure gateway import library: ARM. (line 236) +* segment origins, cmd line: Options. (line 1471) +* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 166) +* segments, ELF: PHDRS. (line 6) +* shared libraries: Options. (line 1399) +* SHORT(EXPRESSION): Output Section Data. + (line 6) +* SIZEOF(SECTION): Builtin Functions. (line 175) +* SIZEOF_HEADERS: Builtin Functions. (line 191) +* 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 2158) +* standard Unix system: Options. (line 7) +* start of execution: Entry Point. (line 6) +* STARTUP(FILENAME): File Commands. (line 84) +* STM32L4xx erratum workaround: ARM. (line 121) +* strip all symbols: Options. (line 540) +* strip debugger symbols: Options. (line 544) +* stripping all but some symbols: Options. (line 1297) +* STUB_GROUP_SIZE: ARM. (line 177) +* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. + (line 6) +* suffixes for integers: Constants. (line 15) +* symbol defaults: Builtin Functions. (line 123) +* symbol definition, scripts: Assignments. (line 6) +* symbol names: Symbols. (line 6) +* symbol tracing: Options. (line 657) +* symbol versions: VERSION. (line 6) +* symbol-only input: Options. (line 529) +* symbolic constants: Symbolic Constants. (line 6) +* symbols, from command line: Options. (line 1016) +* symbols, relocatable and absolute: Expression Section. (line 6) +* symbols, require defined: Options. (line 588) +* symbols, retaining selectively: Options. (line 1297) +* synthesizing linker: Options. (line 1271) +* synthesizing on H8/300: H8/300. (line 14) +* TARGET(BFDNAME): Format Commands. (line 35) +* TARGET1: ARM. (line 33) +* TARGET2: ARM. (line 38) +* text segment origin, cmd line: Options. (line 1478) +* thumb entry point: ARM. (line 17) +* TI COFF versions: TI COFF. (line 6) +* traditional format: Options. (line 1450) +* trampoline generation on M68HC11: M68HC11/68HC12. (line 31) +* trampoline generation on M68HC12: M68HC11/68HC12. (line 31) +* unallocated address, next: Builtin Functions. (line 157) +* undefined symbol: Options. (line 575) +* undefined symbol in linker script: Miscellaneous Commands. + (line 39) +* undefined symbols, warnings on: Options. (line 1627) +* uninitialized data placement: Input Section Common. + (line 6) +* unspecified memory: Output Section Data. + (line 39) +* usage: Options. (line 1130) +* USE_BLX: ARM. (line 75) +* 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 1521) +* version: Options. (line 641) +* version script: VERSION. (line 6) +* version script, symbol versions: Options. (line 1529) +* VERSION {script text}: VERSION. (line 6) +* versions of symbols: VERSION. (line 6) +* VFP11_DENORM_FIX: ARM. (line 84) +* warnings, on combining symbols: Options. (line 1540) +* warnings, on section alignment: Options. (line 1631) +* warnings, on undefined symbols: Options. (line 1627) +* 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: Environment107171 +Node: Scripts108931 +Node: Basic Script Concepts110665 +Node: Script Format113373 +Node: Simple Example114236 +Node: Simple Commands117332 +Node: Entry Point117838 +Node: File Commands118771 +Node: Format Commands122891 +Node: REGION_ALIAS124847 +Node: Miscellaneous Commands129679 +Node: Assignments135218 +Node: Simple Assignments135729 +Node: HIDDEN137464 +Node: PROVIDE138094 +Node: PROVIDE_HIDDEN139287 +Node: Source Code Reference139531 +Node: SECTIONS143447 +Node: Output Section Description145338 +Node: Output Section Name146582 +Node: Output Section Address147458 +Node: Input Section149693 +Node: Input Section Basics150494 +Node: Input Section Wildcards155530 +Node: Input Section Common160737 +Node: Input Section Keep162219 +Node: Input Section Example162709 +Node: Output Section Data163677 +Node: Output Section Keywords166454 +Node: Output Section Discarding170023 +Node: Output Section Attributes171516 +Node: Output Section Type172617 +Node: Output Section LMA173688 +Node: Forced Output Alignment176759 +Node: Forced Input Alignment177189 +Node: Output Section Constraint177578 +Node: Output Section Region178006 +Node: Output Section Phdr178439 +Node: Output Section Fill179103 +Node: Overlay Description180245 +Node: MEMORY184691 +Node: PHDRS189068 +Node: VERSION194394 +Node: Expressions202487 +Node: Constants203416 +Node: Symbolic Constants204291 +Node: Symbols204842 +Node: Orphan Sections205589 +Node: Location Counter206926 +Node: Operators211362 +Node: Evaluation212284 +Node: Expression Section213648 +Node: Builtin Functions217627 +Node: Implicit Linker Scripts225867 +Node: Machine Dependent226642 +Node: H8/300227766 +Node: i960229828 +Node: M68HC11/68HC12231524 +Node: ARM232966 +Node: HPPA ELF32245208 +Node: M68K246831 +Node: MIPS247740 +Node: MMIX248856 +Node: MSP430250021 +Node: NDS32251061 +Node: Nios II252027 +Node: PowerPC ELF32253343 +Node: PowerPC64 ELF64256174 +Node: SPU ELF263506 +Node: TI COFF266138 +Node: WIN32266664 +Node: Xtensa286790 +Node: BFD289755 +Node: BFD outline291210 +Node: BFD information loss292496 +Node: Canonical format295013 +Node: Reporting Bugs299370 +Node: Bug Criteria300064 +Node: Bug Reporting300763 +Node: MRI307802 +Node: GNU Free Documentation License312445 +Node: LD Index337601 + +End Tag Table diff --git a/ld/ldgram.c b/ld/ldgram.c new file mode 100644 index 00000000000..faed4162958 --- /dev/null +++ b/ld/ldgram.c @@ -0,0 +1,4770 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 22 "ldgram.y" /* yacc.c:339 */ + +/* + + */ + +#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--; + +#line 105 "ldgram.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_LDGRAM_H_INCLUDED +# define YY_YY_LDGRAM_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + INT = 258, + NAME = 259, + LNAME = 260, + PLUSEQ = 261, + MINUSEQ = 262, + MULTEQ = 263, + DIVEQ = 264, + LSHIFTEQ = 265, + RSHIFTEQ = 266, + ANDEQ = 267, + OREQ = 268, + OROR = 269, + ANDAND = 270, + EQ = 271, + NE = 272, + LE = 273, + GE = 274, + LSHIFT = 275, + RSHIFT = 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, + NOCROSSREFS_TO = 332, + ORIGIN = 333, + FILL = 334, + LENGTH = 335, + CREATE_OBJECT_SYMBOLS = 336, + INPUT = 337, + GROUP = 338, + OUTPUT = 339, + CONSTRUCTORS = 340, + ALIGNMOD = 341, + AT = 342, + SUBALIGN = 343, + HIDDEN = 344, + PROVIDE = 345, + PROVIDE_HIDDEN = 346, + AS_NEEDED = 347, + CHIP = 348, + LIST = 349, + SECT = 350, + ABSOLUTE = 351, + LOAD = 352, + NEWLINE = 353, + ENDWORD = 354, + ORDER = 355, + NAMEWORD = 356, + ASSERT_K = 357, + LOG2CEIL = 358, + FORMAT = 359, + PUBLIC = 360, + DEFSYMEND = 361, + BASE = 362, + ALIAS = 363, + TRUNCATE = 364, + REL = 365, + INPUT_SCRIPT = 366, + INPUT_MRI_SCRIPT = 367, + INPUT_DEFSYM = 368, + CASE = 369, + EXTERN = 370, + START = 371, + VERS_TAG = 372, + VERS_IDENTIFIER = 373, + GLOBAL = 374, + LOCAL = 375, + VERSIONK = 376, + INPUT_VERSION_SCRIPT = 377, + KEEP = 378, + ONLY_IF_RO = 379, + ONLY_IF_RW = 380, + SPECIAL = 381, + INPUT_SECTION_FLAGS = 382, + ALIGN_WITH_INPUT = 383, + EXCLUDE_FILE = 384, + CONSTANT = 385, + INPUT_DYNAMIC_LIST = 386 + }; +#endif +/* Tokens. */ +#define INT 258 +#define NAME 259 +#define LNAME 260 +#define PLUSEQ 261 +#define MINUSEQ 262 +#define MULTEQ 263 +#define DIVEQ 264 +#define LSHIFTEQ 265 +#define RSHIFTEQ 266 +#define ANDEQ 267 +#define OREQ 268 +#define OROR 269 +#define ANDAND 270 +#define EQ 271 +#define NE 272 +#define LE 273 +#define GE 274 +#define LSHIFT 275 +#define RSHIFT 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 NOCROSSREFS_TO 332 +#define ORIGIN 333 +#define FILL 334 +#define LENGTH 335 +#define CREATE_OBJECT_SYMBOLS 336 +#define INPUT 337 +#define GROUP 338 +#define OUTPUT 339 +#define CONSTRUCTORS 340 +#define ALIGNMOD 341 +#define AT 342 +#define SUBALIGN 343 +#define HIDDEN 344 +#define PROVIDE 345 +#define PROVIDE_HIDDEN 346 +#define AS_NEEDED 347 +#define CHIP 348 +#define LIST 349 +#define SECT 350 +#define ABSOLUTE 351 +#define LOAD 352 +#define NEWLINE 353 +#define ENDWORD 354 +#define ORDER 355 +#define NAMEWORD 356 +#define ASSERT_K 357 +#define LOG2CEIL 358 +#define FORMAT 359 +#define PUBLIC 360 +#define DEFSYMEND 361 +#define BASE 362 +#define ALIAS 363 +#define TRUNCATE 364 +#define REL 365 +#define INPUT_SCRIPT 366 +#define INPUT_MRI_SCRIPT 367 +#define INPUT_DEFSYM 368 +#define CASE 369 +#define EXTERN 370 +#define START 371 +#define VERS_TAG 372 +#define VERS_IDENTIFIER 373 +#define GLOBAL 374 +#define LOCAL 375 +#define VERSIONK 376 +#define INPUT_VERSION_SCRIPT 377 +#define KEEP 378 +#define ONLY_IF_RO 379 +#define ONLY_IF_RW 380 +#define SPECIAL 381 +#define INPUT_SECTION_FLAGS 382 +#define ALIGN_WITH_INPUT 383 +#define EXCLUDE_FILE 384 +#define CONSTANT 385 +#define INPUT_DYNAMIC_LIST 386 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 60 "ldgram.y" /* yacc.c:355 */ + + 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 438 "ldgram.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_LDGRAM_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 453 "ldgram.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 17 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 2031 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 155 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 131 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 372 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 809 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 386 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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, 153, 2, 2, 2, 34, 21, 2, + 37, 150, 32, 30, 148, 31, 2, 33, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 16, 149, + 24, 10, 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, 151, 2, 152, 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, 154, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 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, 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, 147 +}; + +#if YYDEBUG + /* 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, 360, + 361, 363, 365, 367, 372, 372, 377, 380, 383, 386, + 389, 392, 396, 395, 401, 400, 406, 405, 413, 417, + 418, 419, 423, 425, 426, 426, 434, 438, 442, 449, + 456, 463, 470, 477, 484, 491, 498, 505, 512, 519, + 528, 546, 567, 580, 589, 600, 609, 620, 629, 638, + 642, 651, 655, 663, 665, 664, 671, 672, 676, 677, + 682, 687, 688, 693, 697, 697, 701, 700, 707, 708, + 711, 713, 717, 719, 721, 723, 725, 730, 737, 739, + 743, 745, 747, 749, 751, 753, 755, 757, 762, 762, + 767, 771, 779, 783, 787, 795, 795, 799, 802, 802, + 805, 806, 811, 810, 816, 815, 822, 830, 838, 839, + 843, 844, 848, 850, 855, 860, 861, 866, 868, 874, + 876, 878, 882, 884, 890, 893, 902, 913, 913, 919, + 921, 923, 925, 927, 929, 932, 934, 936, 938, 940, + 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, + 962, 964, 966, 968, 970, 972, 974, 977, 979, 981, + 983, 985, 987, 989, 991, 993, 995, 997, 999, 1008, + 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1028, 1029, 1033, + 1034, 1038, 1039, 1043, 1044, 1048, 1049, 1053, 1054, 1055, + 1056, 1059, 1064, 1067, 1073, 1075, 1059, 1082, 1084, 1086, + 1091, 1093, 1081, 1103, 1105, 1103, 1111, 1110, 1117, 1118, + 1119, 1120, 1121, 1125, 1126, 1127, 1131, 1132, 1137, 1138, + 1143, 1144, 1149, 1150, 1155, 1157, 1162, 1165, 1178, 1182, + 1187, 1189, 1180, 1197, 1200, 1202, 1206, 1207, 1206, 1216, + 1261, 1264, 1277, 1286, 1289, 1296, 1296, 1308, 1309, 1313, + 1317, 1326, 1326, 1340, 1340, 1350, 1351, 1355, 1359, 1363, + 1370, 1374, 1382, 1385, 1389, 1393, 1397, 1404, 1408, 1412, + 1416, 1421, 1420, 1434, 1433, 1443, 1447, 1451, 1455, 1459, + 1463, 1469, 1471 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", "PLUSEQ", + "MINUSEQ", "MULTEQ", "DIVEQ", "'='", "LSHIFTEQ", "RSHIFTEQ", "ANDEQ", + "OREQ", "'?'", "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQ", "NE", + "'<'", "'>'", "LE", "GE", "LSHIFT", "RSHIFT", "'+'", "'-'", "'*'", "'/'", + "'%'", "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", "NOCROSSREFS_TO", "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", "section_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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 61, 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, 386, 44, 59, + 41, 91, 93, 33, 126 +}; +# endif + +#define YYPACT_NINF -664 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-664))) + +#define YYTABLE_NINF -344 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 282, -664, -664, -664, -664, -664, 65, -664, -664, -664, + -664, -664, 49, -664, -23, -664, 58, -664, 932, 1765, + 125, 105, 67, -23, -664, 111, 58, -664, 479, 103, + 167, 89, 119, -664, 195, -664, 80, 179, 213, 242, + 243, 259, 261, 262, 270, 271, 285, -664, -664, 288, + 295, 299, -664, 300, 302, 303, 304, -664, 306, -664, + -664, -664, -664, 42, -664, -664, -664, -664, -664, -664, + -664, 197, -664, 340, 80, 342, 766, -664, 343, 357, + 362, -664, -664, 363, 373, 374, 766, 375, 382, 388, + -664, 390, 231, 766, -664, 392, -664, 370, 383, 339, + 253, 105, -664, -664, -664, 344, 255, -664, -664, -664, + -664, -664, -664, -664, -664, -664, -664, -664, -664, -664, + 401, 402, 403, 410, -664, -664, 53, 413, 414, 415, + 80, 80, 417, 80, 28, -664, 421, 421, -664, 389, + 80, 423, 424, 426, 394, -664, -664, -664, -664, 376, + 51, -664, 52, -664, -664, 766, 766, 766, 395, 396, + 398, 404, 405, -664, 407, 409, 411, 412, 416, 418, + 420, 422, 425, 427, 435, 436, 437, 438, 441, 766, + 766, 1553, 385, -664, 291, -664, 292, 15, -664, -664, + 514, 1817, 310, -664, -664, 313, -664, 443, -664, -664, + 1817, 440, 111, 111, 305, 117, 393, 331, 117, -664, + 766, -664, 1852, 34, -664, -664, -59, 346, -664, -664, + 80, 446, 0, -664, 351, 350, 352, 356, 358, 360, + 361, -664, -664, -37, 115, 23, 365, 366, 369, 39, + -664, 372, 484, 510, 513, 766, 378, -23, 766, 766, + -664, 766, 766, -664, -664, 942, 766, 766, 766, 766, + 766, 521, 522, 766, 523, 525, 526, 528, 766, 766, + 530, 531, 766, 766, 766, 532, -664, -664, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, + 1817, 533, 536, -664, 537, 766, 766, 1817, 146, 539, + -664, 41, -664, 397, 399, -664, -664, 543, -664, -664, + -664, 94, -664, 1817, 479, -664, 80, -664, -664, -664, + -664, -664, -664, -664, 546, -664, -664, 998, 517, -664, + -664, -664, 53, 551, -664, -664, -664, -664, -664, -664, + -664, 80, -664, 80, 421, -664, -664, -664, -664, -664, + -664, 519, 47, 408, -664, -664, -664, -664, 1573, -664, + 68, 1817, 1817, 1789, 1817, 1817, -664, 1131, 1151, 1593, + 1613, 1171, 428, 419, 1191, 430, 431, 432, 433, 1633, + 1685, 434, 442, 1211, 1705, 1231, 453, 1960, 1997, 1111, + 759, 1379, 1244, 675, 675, 341, 341, 341, 341, 297, + 297, 98, 98, -664, -664, -664, 1817, 1817, 1817, -664, + -664, -664, 1817, 1817, -664, -664, -664, -664, 553, 111, + 142, 117, 501, -664, -664, 95, 598, -664, 682, 598, + 766, 429, -664, 7, 544, 53, -664, 456, -664, -664, + -664, -664, -664, -664, 534, 44, -664, 457, 459, 461, + 564, -664, -664, 766, -664, -664, 766, 766, -664, 766, + -664, -664, -664, -664, -664, -664, 766, 766, -664, -664, + -664, 568, -664, -664, 766, -664, 439, 559, -664, -664, + -664, 230, 541, 1787, 571, 487, -664, -664, 1980, 520, + -664, 1817, 26, 609, -664, 610, 1, -664, 527, 579, + -664, 39, -664, -664, -664, 582, -664, -664, -664, 466, + 1265, 1285, 1305, 1325, 1345, 1365, 474, 1817, 117, 566, + 111, 111, -664, -664, -664, -664, -664, -664, 477, 766, + 247, 614, -664, 594, 601, 377, -664, -664, 487, 583, + 603, 605, -664, 493, -664, -664, -664, 635, 498, -664, + 16, 39, -664, -664, -664, -664, -664, -664, -664, -664, + -664, -664, 499, 439, -664, 1399, -664, 766, 615, 509, + -664, 550, -664, 766, 26, 766, 506, -664, -664, 560, + -664, 20, 39, 117, 600, 248, 1419, 766, -664, 550, + 620, -664, 1856, 1439, -664, 1459, -664, -664, 651, -664, + -664, 29, -664, 628, 650, -664, 1479, -664, 766, 611, + -664, -664, 26, -664, -664, 766, -664, -664, 130, 1499, + -664, -664, -664, 1533, -664, -664, -664, 612, -664, -664, + 634, -664, 37, 656, 838, -664, -664, -664, 345, -664, + -664, -664, -664, -664, -664, -664, 637, 638, 639, 640, + 80, 652, -664, -664, -664, 653, 654, 658, -664, 86, + -664, 659, 43, -664, -664, -664, 838, 629, 660, 42, + 657, 662, 22, 234, 70, 70, -664, -664, 674, -664, + 689, 70, -664, 677, -664, -66, 86, 681, 86, 685, + -664, -664, -664, -664, 838, 719, 621, 688, 690, 576, + 691, 580, 692, 694, 586, 587, 588, 838, 589, -664, + 766, 14, -664, 74, -664, 8, 90, -664, 86, 143, + -65, 86, 662, 590, 673, -664, 716, -664, 70, 70, + -664, 70, -664, 70, 70, -664, -664, -664, 707, -664, + 1725, 595, 596, 744, -664, 70, -664, -664, -664, -664, + 144, 621, -664, -664, 745, 62, 604, 606, 24, 608, + 622, -664, 746, -664, -664, -664, -664, -664, -664, -664, + -664, 749, -664, 623, 624, 70, 625, 627, 645, 62, + 62, -664, -664, 498, -664, -664, 648, -664, -664, 42, + -664, -664, -664, -664, -664, 498, 498, -664, -664 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 59, 10, 8, 341, 335, 0, 2, 62, 3, + 13, 6, 0, 4, 0, 5, 0, 1, 60, 11, + 0, 352, 0, 342, 345, 0, 336, 337, 0, 0, + 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 212, 213, 0, + 0, 0, 82, 0, 0, 0, 0, 114, 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, 358, 369, 357, 365, 367, 0, + 0, 352, 346, 365, 367, 0, 0, 338, 170, 171, + 172, 173, 217, 174, 175, 176, 177, 217, 111, 324, + 0, 0, 0, 0, 7, 85, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 214, 214, 94, 0, + 0, 0, 0, 0, 0, 54, 179, 178, 113, 0, + 0, 40, 0, 245, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 246, 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, 353, 0, 0, 340, 180, + 0, 181, 0, 0, 90, 91, 0, 0, 62, 192, + 0, 0, 186, 191, 0, 0, 0, 0, 0, 0, + 0, 206, 208, 186, 186, 214, 0, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 0, 223, 219, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 222, 224, 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, 363, 0, 0, 347, 360, 370, 359, 366, + 368, 0, 339, 218, 281, 108, 0, 287, 293, 110, + 109, 326, 323, 325, 0, 76, 78, 343, 198, 194, + 187, 185, 0, 0, 93, 73, 74, 84, 112, 204, + 205, 0, 209, 0, 214, 215, 87, 88, 81, 96, + 99, 0, 95, 0, 75, 217, 217, 217, 0, 89, + 0, 27, 28, 43, 29, 30, 220, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 243, 242, + 240, 239, 238, 232, 233, 236, 237, 234, 235, 230, + 231, 228, 229, 225, 226, 227, 15, 26, 24, 50, + 48, 44, 20, 21, 35, 34, 53, 57, 0, 0, + 354, 355, 0, 350, 348, 0, 304, 296, 0, 304, + 0, 0, 86, 0, 0, 189, 190, 0, 207, 210, + 216, 102, 98, 101, 0, 0, 83, 0, 0, 0, + 0, 344, 41, 0, 253, 259, 0, 0, 257, 0, + 244, 221, 248, 247, 249, 250, 0, 0, 264, 265, + 252, 0, 266, 251, 0, 58, 371, 368, 361, 351, + 349, 0, 0, 304, 0, 270, 111, 311, 0, 312, + 294, 329, 330, 0, 202, 0, 0, 200, 0, 0, + 92, 0, 106, 97, 100, 0, 182, 183, 184, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 372, 0, + 0, 0, 298, 299, 300, 301, 302, 305, 0, 0, + 0, 0, 307, 0, 272, 0, 310, 313, 270, 0, + 333, 0, 327, 0, 203, 199, 201, 0, 186, 195, + 0, 0, 104, 115, 254, 255, 256, 258, 261, 262, + 263, 364, 0, 371, 303, 0, 306, 0, 0, 274, + 297, 276, 111, 0, 330, 0, 0, 77, 217, 0, + 103, 0, 0, 356, 0, 304, 0, 0, 273, 276, + 0, 288, 0, 0, 331, 0, 328, 196, 0, 193, + 107, 0, 362, 0, 0, 269, 0, 282, 0, 0, + 295, 334, 330, 217, 105, 0, 308, 271, 280, 0, + 289, 332, 197, 0, 277, 278, 279, 0, 275, 318, + 304, 283, 0, 0, 160, 319, 290, 309, 137, 118, + 117, 162, 163, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 147, 149, 154, 0, 0, 0, 148, 0, + 119, 0, 0, 143, 151, 159, 161, 0, 0, 0, + 0, 315, 0, 0, 0, 0, 156, 217, 0, 144, + 0, 0, 116, 0, 136, 186, 0, 138, 0, 0, + 158, 284, 217, 146, 160, 0, 268, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 160, 0, 167, + 0, 0, 130, 0, 134, 0, 0, 139, 0, 186, + 186, 0, 315, 0, 0, 314, 0, 316, 0, 0, + 150, 0, 121, 0, 0, 122, 123, 129, 0, 153, + 0, 116, 0, 0, 132, 0, 133, 135, 141, 140, + 186, 268, 152, 320, 0, 169, 0, 0, 0, 0, + 0, 157, 0, 145, 131, 120, 142, 316, 316, 267, + 217, 0, 291, 0, 0, 0, 0, 0, 0, 169, + 169, 168, 317, 186, 125, 124, 0, 126, 127, 0, + 285, 321, 292, 128, 155, 186, 186, 286, 322 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -664, -664, -67, -664, -664, -664, -664, 505, -664, -664, + -664, -664, -664, -664, 616, -664, -664, -664, -664, 542, + -664, -664, -664, 562, -664, -480, -664, -664, -664, -664, + -474, -14, -664, -121, -363, -664, -664, 18, -434, 50, + -664, -664, 123, -664, -664, -664, -662, -664, 27, -532, + -664, -663, -584, -220, -664, 364, -664, 464, -664, -664, + -664, -664, -664, -664, 307, -664, -664, -664, -664, -664, + -664, -128, -111, -664, -76, 54, 260, -664, -664, 211, + -664, -664, -664, -664, -664, -664, -664, -664, -664, -664, + -664, -664, -664, -664, -664, -664, -478, 381, -664, -664, + 79, -503, -664, -664, -664, -664, -664, -664, -664, -664, + -664, -664, -534, -664, -664, -664, -664, 786, -664, -664, + -664, -664, -664, 567, -20, -664, 715, -17, -664, -664, + 249 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 6, 125, 11, 12, 9, 10, 19, 92, 250, + 187, 186, 184, 195, 196, 197, 311, 7, 8, 18, + 60, 139, 218, 238, 239, 362, 511, 592, 561, 61, + 212, 329, 144, 670, 671, 723, 672, 725, 695, 673, + 674, 721, 675, 688, 717, 676, 677, 678, 718, 782, + 117, 148, 63, 728, 64, 221, 222, 223, 338, 445, + 558, 609, 444, 506, 507, 65, 66, 233, 67, 234, + 68, 236, 719, 210, 255, 737, 544, 579, 599, 601, + 637, 330, 436, 628, 644, 732, 805, 438, 619, 639, + 681, 793, 439, 549, 496, 538, 494, 495, 499, 548, + 706, 765, 642, 680, 778, 806, 69, 213, 333, 440, + 586, 502, 552, 584, 15, 16, 26, 27, 105, 13, + 14, 70, 71, 23, 24, 435, 99, 100, 531, 429, + 529 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 181, 209, 342, 102, 62, 504, 211, 151, 106, 237, + 191, 504, 692, 351, 353, 541, 703, 200, 751, 303, + 452, 453, 545, 649, 452, 453, 692, 235, 692, 649, + 550, 560, 124, 452, 453, 21, -188, 649, 331, 649, + 650, 645, 734, 359, 360, 427, 650, 697, 513, 514, + 604, 452, 453, 20, 650, 748, 650, 219, 649, -188, + 679, 248, 251, 227, 228, 17, 230, 232, 693, 657, + 658, 659, 780, 241, 692, 650, 707, 708, 781, 253, + 254, 591, 341, 341, 124, 649, 727, 759, 631, 334, + 692, 335, 679, 332, 692, 753, 646, 693, 657, 658, + 659, 649, 650, 276, 277, 649, 300, 355, 602, 94, + 22, 341, 611, 350, 307, 94, 25, 614, 650, 220, + 679, 316, 650, 709, 454, 101, 21, 461, 454, 551, + 294, 295, 296, 679, 323, 93, 804, 454, 120, 121, + 693, 657, 658, 659, 707, 708, 316, 361, 341, 424, + 425, 555, 515, 339, 505, 454, 122, 666, 755, 667, + 505, 118, 643, 304, 455, 669, 590, 710, 455, 368, + 610, 354, 371, 372, 785, 374, 375, 455, 231, 624, + 377, 378, 379, 380, 381, 313, 314, 384, 667, 428, + 146, 147, 389, 390, 698, 455, 393, 394, 395, 249, + 252, 22, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 754, 119, 450, 433, 489, 422, + 423, 667, 123, 153, 154, 710, 95, 126, 692, 96, + 97, 98, 95, 434, 490, 96, 103, 104, 317, 649, + 127, 318, 319, 320, 457, 458, 459, 800, 801, 437, + 155, 156, 729, 341, 730, 352, 650, 157, 158, 159, + 634, 635, 636, 317, 789, 790, 318, 319, 487, 128, + 129, 160, 161, 162, 448, 540, 449, 613, 712, 713, + 163, 341, 341, 758, 776, 164, 130, 760, 131, 132, + 532, 533, 534, 535, 536, 165, 694, 133, 134, 699, + 166, 167, 168, 169, 170, 171, 172, 532, 533, 534, + 535, 536, 135, 62, 173, 136, 174, 292, 293, 294, + 295, 296, 137, 694, 149, 694, 138, 140, 589, 141, + 142, 143, 175, 145, 150, 199, 152, 182, 176, 177, + 102, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 493, 183, 498, 493, 501, 757, 185, 188, 694, 290, + 291, 292, 293, 294, 295, 296, 178, 189, 190, 192, + 537, 324, -116, 179, 180, 193, 202, 520, 153, 154, + 521, 522, 194, 523, 198, 298, 201, 537, 204, 203, + 524, 525, 205, 207, 208, 214, 215, 216, 527, 1, + 2, 3, 486, 580, 217, 155, 156, 224, 225, 226, + 4, 229, 157, 158, 159, 235, 240, 242, 243, 5, + 244, 245, 256, 257, 247, 258, 160, 161, 162, 301, + 302, 259, 260, 326, 261, 163, 262, 310, 263, 264, + 164, 327, 321, 265, 315, 266, 43, 267, 308, 268, + 165, 309, 269, 575, 270, 166, 167, 168, 169, 170, + 171, 172, 271, 272, 273, 274, 328, 607, 275, 173, + 322, 174, 54, 55, 56, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 365, 57, 336, 175, 312, 343, + 344, 596, 345, 176, 177, 340, 346, 603, 347, 605, + 348, 349, 632, 572, 573, 356, 357, 153, 154, 358, + 366, 616, 364, 367, 305, 382, 383, 385, 369, 386, + 387, 178, 388, 299, 391, 392, 396, 419, 179, 180, + 420, 421, 629, 426, 155, 156, 430, 432, 431, 633, + 441, 157, 158, 159, 443, 447, 451, 485, 456, 488, + 508, 711, 714, 715, 716, 160, 161, 162, 519, 470, + 724, 512, 526, 802, 163, 530, 469, 503, 539, 164, + 472, 473, 474, 475, 478, 807, 808, 542, 528, 165, + 543, 733, 479, 686, 166, 167, 168, 169, 170, 171, + 172, 153, 154, 483, 756, 711, 510, 516, 173, 517, + 174, 518, 547, 553, 554, 559, 563, 766, 767, 562, + 724, 557, 769, 770, 570, 571, 175, 574, 155, 156, + 576, 577, 176, 177, 775, 491, 158, 159, 492, 578, + 583, 582, 585, 587, 750, 588, 341, 756, 593, 160, + 161, 162, 597, 598, 600, 606, 608, 618, 163, 612, + 178, 623, 306, 164, 796, 625, 626, 179, 180, 630, + 641, 540, 647, 165, 682, 683, 684, 685, 166, 167, + 168, 169, 170, 171, 172, 153, 154, 705, 701, 687, + 689, 690, 173, 722, 174, 691, 696, 702, 497, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 175, 720, 155, 156, 726, 704, 176, 177, -116, 157, + 158, 159, 731, 735, 736, 738, 740, 739, 741, 743, + 742, 744, 763, 160, 161, 162, 745, 746, 747, 749, + 762, 764, 163, 771, 178, -137, 773, 164, 774, 779, + 788, 179, 180, 792, 783, 373, 784, 165, 786, 768, + 337, 246, 166, 167, 168, 169, 170, 171, 172, 153, + 154, 752, 787, 794, 795, 797, 173, 798, 174, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 175, 799, 155, 156, 803, 700, + 176, 177, 363, 157, 158, 159, 446, 791, 581, 509, + 617, 761, 107, 556, 370, 777, 206, 160, 161, 162, + 500, 0, 594, 0, 0, 0, 163, 0, 178, 0, + 0, 164, 0, 0, 0, 179, 180, 0, 0, 0, + 0, 165, 648, 0, 0, 0, 166, 167, 168, 169, + 170, 171, 172, 649, 0, 0, 0, 0, 0, 0, + 173, 0, 174, 0, 0, 0, 0, 0, 0, 0, + 650, 0, 0, 0, 0, 0, 0, 0, 175, 651, + 652, 653, 654, 655, 176, 177, 0, 0, 0, 0, + 0, 0, 656, 657, 658, 659, 0, 0, 0, 0, + 0, 0, 0, 0, 660, 0, 0, 0, 0, 0, + 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 0, 662, 28, 0, 0, 663, + 0, 0, 0, 54, 55, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 664, 278, 0, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 665, 29, 30, + 31, 666, 0, 667, 0, 0, 0, 668, 0, 669, + 0, 0, 0, 32, 33, 34, 35, 0, 36, 37, + 38, 39, 28, 0, 0, 0, 0, 0, 40, 41, + 42, 43, 0, 0, 0, 0, 0, 0, 0, 44, + 45, 46, 47, 48, 49, 50, 0, 0, 0, 0, + 51, 52, 53, 0, 442, 0, 0, 54, 55, 56, + 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 33, 34, 35, 58, 36, 37, 38, 39, 0, -343, + 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, + 0, 59, 0, 0, 0, 44, 45, 46, 47, 48, + 49, 50, 376, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 59, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 278, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 463, + 278, 464, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 465, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 468, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 471, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 480, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 482, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 564, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 565, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 566, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 567, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 568, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 278, 569, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 595, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 278, 615, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 278, 621, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 278, 622, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 278, 627, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 278, 638, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 297, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 460, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 278, 466, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 0, 467, 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 73, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 0, 0, 540, 462, 0, 73, 0, 0, + 0, 74, 278, 477, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 0, 481, 0, 74, 324, 0, 0, 0, + 324, 0, 0, 0, 0, 0, 0, 75, 0, 0, + 0, 0, 0, 772, 76, 77, 78, 79, 80, -43, + 81, 82, 83, 0, 0, 84, 85, 0, 86, 87, + 88, 75, 0, 0, 0, 89, 90, 91, 76, 77, + 78, 79, 80, 0, 81, 82, 83, 0, 0, 84, + 85, 325, 86, 87, 88, 620, 0, 0, 326, 89, + 90, 91, 326, 0, 0, 0, 327, 0, 0, 0, + 327, 43, 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 328, 0, 0, 0, 328, 0, 54, 55, 56, + 0, 54, 55, 56, 0, 0, 0, 0, 0, 0, + 57, 0, 0, 0, 57, 278, 484, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 278, 546, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296 +}; + +static const yytype_int16 yycheck[] = +{ + 76, 112, 222, 23, 18, 4, 117, 74, 25, 137, + 86, 4, 4, 233, 234, 493, 679, 93, 4, 4, + 4, 5, 496, 15, 4, 5, 4, 4, 4, 15, + 4, 511, 4, 4, 5, 58, 36, 15, 4, 15, + 32, 4, 704, 4, 5, 4, 32, 4, 4, 5, + 584, 4, 5, 4, 32, 717, 32, 4, 15, 59, + 644, 10, 10, 130, 131, 0, 133, 134, 54, 55, + 56, 57, 10, 140, 4, 32, 54, 55, 16, 155, + 156, 561, 148, 148, 4, 15, 152, 152, 622, 148, + 4, 150, 676, 59, 4, 21, 59, 54, 55, 56, + 57, 15, 32, 179, 180, 15, 182, 235, 582, 4, + 133, 148, 592, 150, 190, 4, 58, 595, 32, 66, + 704, 4, 32, 101, 108, 58, 58, 59, 108, 103, + 32, 33, 34, 717, 210, 10, 799, 108, 49, 50, + 54, 55, 56, 57, 54, 55, 4, 108, 148, 3, + 4, 150, 108, 220, 153, 108, 37, 143, 150, 145, + 153, 58, 640, 148, 148, 151, 150, 145, 148, 245, + 150, 148, 248, 249, 150, 251, 252, 148, 150, 150, + 256, 257, 258, 259, 260, 202, 203, 263, 145, 148, + 148, 149, 268, 269, 151, 148, 272, 273, 274, 148, + 148, 133, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 150, 58, 354, 133, 133, 305, + 306, 145, 37, 3, 4, 145, 131, 58, 4, 134, + 135, 136, 131, 149, 149, 134, 135, 136, 131, 15, + 37, 134, 135, 136, 365, 366, 367, 789, 790, 326, + 30, 31, 696, 148, 698, 150, 32, 37, 38, 39, + 140, 141, 142, 131, 777, 778, 134, 135, 136, 37, + 37, 51, 52, 53, 351, 37, 353, 39, 54, 55, + 60, 148, 148, 150, 150, 65, 37, 731, 37, 37, + 70, 71, 72, 73, 74, 75, 669, 37, 37, 672, + 80, 81, 82, 83, 84, 85, 86, 70, 71, 72, + 73, 74, 37, 337, 94, 37, 96, 30, 31, 32, + 33, 34, 37, 696, 137, 698, 37, 37, 558, 37, + 37, 37, 112, 37, 4, 114, 4, 4, 118, 119, + 370, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 436, 4, 438, 439, 440, 728, 4, 4, 731, 28, + 29, 30, 31, 32, 33, 34, 146, 4, 4, 4, + 150, 4, 37, 153, 154, 3, 16, 463, 3, 4, + 466, 467, 4, 469, 4, 10, 4, 150, 59, 16, + 476, 477, 149, 59, 149, 4, 4, 4, 484, 127, + 128, 129, 429, 36, 4, 30, 31, 4, 4, 4, + 138, 4, 37, 38, 39, 4, 37, 4, 4, 147, + 4, 37, 37, 37, 58, 37, 51, 52, 53, 148, + 148, 37, 37, 66, 37, 60, 37, 4, 37, 37, + 65, 74, 59, 37, 149, 37, 79, 37, 148, 37, + 75, 148, 37, 539, 37, 80, 81, 82, 83, 84, + 85, 86, 37, 37, 37, 37, 99, 588, 37, 94, + 149, 96, 105, 106, 107, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 10, 118, 150, 112, 58, 148, + 150, 577, 150, 118, 119, 59, 150, 583, 150, 585, + 150, 150, 623, 530, 531, 150, 150, 3, 4, 150, + 10, 597, 150, 10, 10, 4, 4, 4, 150, 4, + 4, 146, 4, 148, 4, 4, 4, 4, 153, 154, + 4, 4, 618, 4, 30, 31, 149, 4, 149, 625, + 4, 37, 38, 39, 37, 4, 37, 4, 150, 58, + 16, 682, 683, 684, 685, 51, 52, 53, 4, 150, + 691, 37, 4, 793, 60, 16, 148, 148, 37, 65, + 150, 150, 150, 150, 150, 805, 806, 16, 149, 75, + 103, 702, 150, 660, 80, 81, 82, 83, 84, 85, + 86, 3, 4, 150, 725, 726, 150, 150, 94, 150, + 96, 150, 92, 4, 4, 36, 150, 738, 739, 37, + 741, 94, 743, 744, 150, 59, 112, 150, 30, 31, + 16, 37, 118, 119, 755, 37, 38, 39, 40, 38, + 37, 58, 37, 150, 720, 10, 148, 768, 149, 51, + 52, 53, 37, 144, 104, 149, 96, 37, 60, 59, + 146, 10, 148, 65, 785, 37, 16, 153, 154, 58, + 58, 37, 16, 75, 37, 37, 37, 37, 80, 81, + 82, 83, 84, 85, 86, 3, 4, 25, 59, 37, + 37, 37, 94, 4, 96, 37, 37, 37, 16, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 112, 37, 30, 31, 37, 58, 118, 119, 37, 37, + 38, 39, 37, 4, 103, 37, 150, 37, 37, 37, + 150, 37, 59, 51, 52, 53, 150, 150, 150, 150, + 150, 25, 60, 36, 146, 150, 150, 65, 4, 4, + 4, 153, 154, 4, 150, 250, 150, 75, 150, 741, + 218, 145, 80, 81, 82, 83, 84, 85, 86, 3, + 4, 721, 150, 150, 150, 150, 94, 150, 96, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 112, 150, 30, 31, 150, 676, + 118, 119, 240, 37, 38, 39, 342, 780, 548, 445, + 599, 732, 26, 506, 247, 761, 101, 51, 52, 53, + 439, -1, 573, -1, -1, -1, 60, -1, 146, -1, + -1, 65, -1, -1, -1, 153, 154, -1, -1, -1, + -1, 75, 4, -1, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 15, -1, -1, -1, -1, -1, -1, + 94, -1, 96, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, -1, 112, 41, + 42, 43, 44, 45, 118, 119, -1, -1, -1, -1, + -1, -1, 54, 55, 56, 57, -1, -1, -1, -1, + -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, 146, -1, -1, -1, -1, -1, -1, 153, + 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 95, -1, 97, 4, -1, -1, 101, + -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 118, 15, -1, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 139, 46, 47, + 48, 143, -1, 145, -1, -1, -1, 149, -1, 151, + -1, -1, -1, 61, 62, 63, 64, -1, 66, 67, + 68, 69, 4, -1, -1, -1, -1, -1, 76, 77, + 78, 79, -1, -1, -1, -1, -1, -1, -1, 87, + 88, 89, 90, 91, 92, 93, -1, -1, -1, -1, + 98, 99, 100, -1, 36, -1, -1, 105, 106, 107, + -1, -1, -1, -1, 46, 47, 48, -1, -1, -1, + 118, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 131, 66, 67, 68, 69, -1, 137, + -1, -1, -1, -1, 76, 77, 78, 79, -1, -1, + -1, 149, -1, -1, -1, 87, 88, 89, 90, 91, + 92, 93, 150, -1, -1, -1, 98, 99, 100, -1, + -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, + 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, -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, 148, + 15, 150, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 150, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 150, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 150, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 150, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 15, 150, 17, 18, 19, 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, 15, 150, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 15, 150, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 15, 150, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 15, 150, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 15, 150, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 15, 150, 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, -1, 15, 150, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 15, 150, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 15, 150, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 15, 150, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 15, 150, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 15, 150, + 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, -1, -1, 150, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, 148, 17, 18, 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, 148, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 148, -1, -1, -1, -1, -1, -1, -1, 4, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, + -1, -1, 15, 38, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, -1, 37, 36, -1, 38, -1, -1, + -1, 66, 15, 148, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, -1, 148, -1, 66, 4, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, 102, -1, -1, + -1, -1, -1, 148, 109, 110, 111, 112, 113, 114, + 115, 116, 117, -1, -1, 120, 121, -1, 123, 124, + 125, 102, -1, -1, -1, 130, 131, 132, 109, 110, + 111, 112, 113, -1, 115, 116, 117, -1, -1, 120, + 121, 59, 123, 124, 125, 59, -1, -1, 66, 130, + 131, 132, 66, -1, -1, -1, 74, -1, -1, -1, + 74, 79, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 99, -1, -1, -1, 99, -1, 105, 106, 107, + -1, 105, 106, 107, -1, -1, -1, -1, -1, -1, + 118, -1, -1, -1, 118, 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, 18, 19, 20, 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, 127, 128, 129, 138, 147, 156, 172, 173, 160, + 161, 158, 159, 274, 275, 269, 270, 0, 174, 162, + 4, 58, 133, 278, 279, 58, 271, 272, 4, 46, + 47, 48, 61, 62, 63, 64, 66, 67, 68, 69, + 76, 77, 78, 79, 87, 88, 89, 90, 91, 92, + 93, 98, 99, 100, 105, 106, 107, 118, 131, 149, + 175, 184, 186, 207, 209, 220, 221, 223, 225, 261, + 276, 277, 4, 38, 66, 102, 109, 110, 111, 112, + 113, 115, 116, 117, 120, 121, 123, 124, 125, 130, + 131, 132, 163, 10, 4, 131, 134, 135, 136, 281, + 282, 58, 279, 135, 136, 273, 282, 272, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 205, 58, 58, + 49, 50, 37, 37, 4, 157, 58, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 176, + 37, 37, 37, 37, 187, 37, 148, 149, 206, 137, + 4, 157, 4, 3, 4, 30, 31, 37, 38, 39, + 51, 52, 53, 60, 65, 75, 80, 81, 82, 83, + 84, 85, 86, 94, 96, 112, 118, 119, 146, 153, + 154, 229, 4, 4, 167, 4, 166, 165, 4, 4, + 4, 229, 4, 3, 4, 168, 169, 170, 4, 114, + 229, 4, 16, 16, 59, 149, 281, 59, 149, 227, + 228, 227, 185, 262, 4, 4, 4, 4, 177, 4, + 66, 210, 211, 212, 4, 4, 4, 157, 157, 4, + 157, 150, 157, 222, 224, 4, 226, 226, 178, 179, + 37, 157, 4, 4, 4, 37, 169, 58, 10, 148, + 164, 10, 148, 229, 229, 229, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 229, 229, 15, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 148, 10, 148, + 229, 148, 148, 4, 148, 10, 148, 229, 148, 148, + 4, 171, 58, 282, 282, 149, 4, 131, 134, 135, + 136, 59, 149, 229, 4, 59, 66, 74, 99, 186, + 236, 4, 59, 263, 148, 150, 150, 174, 213, 157, + 59, 148, 208, 148, 150, 150, 150, 150, 150, 150, + 150, 208, 150, 208, 148, 226, 150, 150, 150, 4, + 5, 108, 180, 178, 150, 10, 10, 10, 229, 150, + 278, 229, 229, 162, 229, 229, 150, 229, 229, 229, + 229, 229, 4, 4, 229, 4, 4, 4, 4, 229, + 229, 4, 4, 229, 229, 229, 4, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 4, + 4, 4, 229, 229, 3, 4, 4, 4, 148, 284, + 149, 149, 4, 133, 149, 280, 237, 157, 242, 247, + 264, 4, 36, 37, 217, 214, 212, 4, 157, 157, + 226, 37, 4, 5, 108, 148, 150, 227, 227, 227, + 148, 59, 36, 148, 150, 150, 148, 148, 150, 148, + 150, 150, 150, 150, 150, 150, 148, 148, 150, 150, + 150, 148, 150, 150, 16, 4, 282, 136, 58, 133, + 149, 37, 40, 229, 251, 252, 249, 16, 229, 253, + 252, 229, 266, 148, 4, 153, 218, 219, 16, 210, + 150, 181, 37, 4, 5, 108, 150, 150, 150, 4, + 229, 229, 229, 229, 229, 229, 4, 229, 149, 285, + 16, 283, 70, 71, 72, 73, 74, 150, 250, 37, + 37, 251, 16, 103, 231, 185, 16, 92, 254, 248, + 4, 103, 267, 4, 4, 150, 219, 94, 215, 36, + 180, 183, 37, 150, 150, 150, 150, 150, 150, 150, + 150, 59, 282, 282, 150, 229, 16, 37, 38, 232, + 36, 231, 58, 37, 268, 37, 265, 150, 10, 208, + 150, 180, 182, 149, 285, 150, 229, 37, 144, 233, + 104, 234, 185, 229, 267, 229, 149, 227, 96, 216, + 150, 180, 59, 39, 251, 150, 229, 234, 37, 243, + 59, 150, 150, 10, 150, 37, 16, 150, 238, 229, + 58, 267, 227, 229, 140, 141, 142, 235, 150, 244, + 150, 58, 257, 251, 239, 4, 59, 16, 4, 15, + 32, 41, 42, 43, 44, 45, 54, 55, 56, 57, + 66, 95, 97, 101, 118, 139, 143, 145, 149, 151, + 188, 189, 191, 194, 195, 197, 200, 201, 202, 207, + 258, 245, 37, 37, 37, 37, 157, 37, 198, 37, + 37, 37, 4, 54, 189, 193, 37, 4, 151, 189, + 197, 59, 37, 206, 58, 25, 255, 54, 55, 101, + 145, 188, 54, 55, 188, 188, 188, 199, 203, 227, + 37, 196, 4, 190, 188, 192, 37, 152, 208, 193, + 193, 37, 240, 227, 201, 4, 103, 230, 37, 37, + 150, 37, 150, 37, 37, 150, 150, 150, 201, 150, + 229, 4, 194, 21, 150, 150, 188, 189, 150, 152, + 193, 255, 150, 59, 25, 256, 188, 188, 192, 188, + 188, 36, 148, 150, 4, 188, 150, 230, 259, 4, + 10, 16, 204, 150, 150, 150, 150, 150, 4, 256, + 256, 203, 4, 246, 150, 150, 188, 150, 150, 150, + 204, 204, 208, 150, 206, 241, 260, 208, 208 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 155, 156, 156, 156, 156, 156, 157, 159, 158, + 161, 160, 162, 162, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 164, 163, 163, 163, 165, 165, 165, 166, 166, 167, + 167, 168, 168, 168, 170, 169, 171, 171, 171, 173, + 172, 174, 174, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 176, 175, 175, 177, 175, 175, 175, 175, + 175, 175, 175, 175, 179, 178, 180, 180, 180, 180, + 180, 180, 181, 180, 182, 180, 183, 180, 184, 185, + 185, 185, 186, 186, 187, 186, 188, 188, 188, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 190, 190, 191, 192, 192, 193, 193, 194, 194, 194, + 194, 194, 194, 195, 196, 195, 197, 197, 197, 197, + 197, 197, 197, 197, 198, 197, 199, 197, 200, 200, + 201, 201, 202, 202, 202, 202, 202, 203, 204, 204, + 205, 205, 205, 205, 205, 205, 205, 205, 206, 206, + 207, 207, 207, 207, 207, 208, 208, 209, 210, 210, + 211, 211, 213, 212, 214, 212, 215, 216, 217, 217, + 218, 218, 219, 219, 220, 221, 221, 222, 222, 223, + 224, 224, 225, 225, 226, 226, 226, 228, 227, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 230, 230, 231, + 231, 232, 232, 233, 233, 234, 234, 235, 235, 235, + 235, 237, 238, 239, 240, 241, 236, 242, 243, 244, + 245, 246, 236, 247, 248, 236, 249, 236, 250, 250, + 250, 250, 250, 251, 251, 251, 252, 252, 252, 252, + 253, 253, 254, 254, 255, 255, 256, 256, 257, 258, + 259, 260, 257, 261, 262, 262, 264, 265, 263, 266, + 267, 267, 267, 268, 268, 270, 269, 271, 271, 272, + 273, 275, 274, 277, 276, 278, 278, 279, 279, 279, + 280, 280, 281, 281, 281, 281, 281, 282, 282, 282, + 282, 283, 282, 284, 282, 282, 282, 282, 282, 282, + 282, 285, 285 +}; + + /* YYR2[YYN] -- Number of symbols on the 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, 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { ldlex_defsym(); } +#line 2361 "ldgram.c" /* yacc.c:1661 */ + break; + + case 9: +#line 180 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate(); + lang_add_assignment (exp_defsym ((yyvsp[-2].name), (yyvsp[0].etree))); + } +#line 2370 "ldgram.c" /* yacc.c:1661 */ + break; + + case 10: +#line 188 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_mri_script (); + PUSH_ERROR (_("MRI style script")); + } +#line 2379 "ldgram.c" /* yacc.c:1661 */ + break; + + case 11: +#line 193 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + mri_draw_tree (); + POP_ERROR (); + } +#line 2389 "ldgram.c" /* yacc.c:1661 */ + break; + + case 16: +#line 208 "ldgram.y" /* yacc.c:1661 */ + { + einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),(yyvsp[0].name)); + } +#line 2397 "ldgram.c" /* yacc.c:1661 */ + break; + + case 17: +#line 211 "ldgram.y" /* yacc.c:1661 */ + { + config.map_filename = "-"; + } +#line 2405 "ldgram.c" /* yacc.c:1661 */ + break; + + case 20: +#line 217 "ldgram.y" /* yacc.c:1661 */ + { mri_public((yyvsp[-2].name), (yyvsp[0].etree)); } +#line 2411 "ldgram.c" /* yacc.c:1661 */ + break; + + case 21: +#line 219 "ldgram.y" /* yacc.c:1661 */ + { mri_public((yyvsp[-2].name), (yyvsp[0].etree)); } +#line 2417 "ldgram.c" /* yacc.c:1661 */ + break; + + case 22: +#line 221 "ldgram.y" /* yacc.c:1661 */ + { mri_public((yyvsp[-1].name), (yyvsp[0].etree)); } +#line 2423 "ldgram.c" /* yacc.c:1661 */ + break; + + case 23: +#line 223 "ldgram.y" /* yacc.c:1661 */ + { mri_format((yyvsp[0].name)); } +#line 2429 "ldgram.c" /* yacc.c:1661 */ + break; + + case 24: +#line 225 "ldgram.y" /* yacc.c:1661 */ + { mri_output_section((yyvsp[-2].name), (yyvsp[0].etree));} +#line 2435 "ldgram.c" /* yacc.c:1661 */ + break; + + case 25: +#line 227 "ldgram.y" /* yacc.c:1661 */ + { mri_output_section((yyvsp[-1].name), (yyvsp[0].etree));} +#line 2441 "ldgram.c" /* yacc.c:1661 */ + break; + + case 26: +#line 229 "ldgram.y" /* yacc.c:1661 */ + { mri_output_section((yyvsp[-2].name), (yyvsp[0].etree));} +#line 2447 "ldgram.c" /* yacc.c:1661 */ + break; + + case 27: +#line 231 "ldgram.y" /* yacc.c:1661 */ + { mri_align((yyvsp[-2].name),(yyvsp[0].etree)); } +#line 2453 "ldgram.c" /* yacc.c:1661 */ + break; + + case 28: +#line 233 "ldgram.y" /* yacc.c:1661 */ + { mri_align((yyvsp[-2].name),(yyvsp[0].etree)); } +#line 2459 "ldgram.c" /* yacc.c:1661 */ + break; + + case 29: +#line 235 "ldgram.y" /* yacc.c:1661 */ + { mri_alignmod((yyvsp[-2].name),(yyvsp[0].etree)); } +#line 2465 "ldgram.c" /* yacc.c:1661 */ + break; + + case 30: +#line 237 "ldgram.y" /* yacc.c:1661 */ + { mri_alignmod((yyvsp[-2].name),(yyvsp[0].etree)); } +#line 2471 "ldgram.c" /* yacc.c:1661 */ + break; + + case 33: +#line 241 "ldgram.y" /* yacc.c:1661 */ + { mri_name((yyvsp[0].name)); } +#line 2477 "ldgram.c" /* yacc.c:1661 */ + break; + + case 34: +#line 243 "ldgram.y" /* yacc.c:1661 */ + { mri_alias((yyvsp[-2].name),(yyvsp[0].name),0);} +#line 2483 "ldgram.c" /* yacc.c:1661 */ + break; + + case 35: +#line 245 "ldgram.y" /* yacc.c:1661 */ + { mri_alias ((yyvsp[-2].name), 0, (int) (yyvsp[0].bigint).integer); } +#line 2489 "ldgram.c" /* yacc.c:1661 */ + break; + + case 36: +#line 247 "ldgram.y" /* yacc.c:1661 */ + { mri_base((yyvsp[0].etree)); } +#line 2495 "ldgram.c" /* yacc.c:1661 */ + break; + + case 37: +#line 249 "ldgram.y" /* yacc.c:1661 */ + { mri_truncate ((unsigned int) (yyvsp[0].bigint).integer); } +#line 2501 "ldgram.c" /* yacc.c:1661 */ + break; + + case 40: +#line 253 "ldgram.y" /* yacc.c:1661 */ + { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); } +#line 2507 "ldgram.c" /* yacc.c:1661 */ + break; + + case 41: +#line 255 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 2513 "ldgram.c" /* yacc.c:1661 */ + break; + + case 42: +#line 257 "ldgram.y" /* yacc.c:1661 */ + { lang_add_entry ((yyvsp[0].name), FALSE); } +#line 2519 "ldgram.c" /* yacc.c:1661 */ + break; + + case 44: +#line 262 "ldgram.y" /* yacc.c:1661 */ + { mri_order((yyvsp[0].name)); } +#line 2525 "ldgram.c" /* yacc.c:1661 */ + break; + + case 45: +#line 263 "ldgram.y" /* yacc.c:1661 */ + { mri_order((yyvsp[0].name)); } +#line 2531 "ldgram.c" /* yacc.c:1661 */ + break; + + case 47: +#line 269 "ldgram.y" /* yacc.c:1661 */ + { mri_load((yyvsp[0].name)); } +#line 2537 "ldgram.c" /* yacc.c:1661 */ + break; + + case 48: +#line 270 "ldgram.y" /* yacc.c:1661 */ + { mri_load((yyvsp[0].name)); } +#line 2543 "ldgram.c" /* yacc.c:1661 */ + break; + + case 49: +#line 275 "ldgram.y" /* yacc.c:1661 */ + { mri_only_load((yyvsp[0].name)); } +#line 2549 "ldgram.c" /* yacc.c:1661 */ + break; + + case 50: +#line 277 "ldgram.y" /* yacc.c:1661 */ + { mri_only_load((yyvsp[0].name)); } +#line 2555 "ldgram.c" /* yacc.c:1661 */ + break; + + case 51: +#line 281 "ldgram.y" /* yacc.c:1661 */ + { (yyval.name) = NULL; } +#line 2561 "ldgram.c" /* yacc.c:1661 */ + break; + + case 54: +#line 288 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression (); } +#line 2567 "ldgram.c" /* yacc.c:1661 */ + break; + + case 55: +#line 290 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 2573 "ldgram.c" /* yacc.c:1661 */ + break; + + case 56: +#line 294 "ldgram.y" /* yacc.c:1661 */ + { ldlang_add_undef ((yyvsp[0].name), FALSE); } +#line 2579 "ldgram.c" /* yacc.c:1661 */ + break; + + case 57: +#line 296 "ldgram.y" /* yacc.c:1661 */ + { ldlang_add_undef ((yyvsp[0].name), FALSE); } +#line 2585 "ldgram.c" /* yacc.c:1661 */ + break; + + case 58: +#line 298 "ldgram.y" /* yacc.c:1661 */ + { ldlang_add_undef ((yyvsp[0].name), FALSE); } +#line 2591 "ldgram.c" /* yacc.c:1661 */ + break; + + case 59: +#line 302 "ldgram.y" /* yacc.c:1661 */ + { ldlex_both(); } +#line 2597 "ldgram.c" /* yacc.c:1661 */ + break; + + case 60: +#line 304 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate(); } +#line 2603 "ldgram.c" /* yacc.c:1661 */ + break; + + case 73: +#line 325 "ldgram.y" /* yacc.c:1661 */ + { lang_add_target((yyvsp[-1].name)); } +#line 2609 "ldgram.c" /* yacc.c:1661 */ + break; + + case 74: +#line 327 "ldgram.y" /* yacc.c:1661 */ + { ldfile_add_library_path ((yyvsp[-1].name), FALSE); } +#line 2615 "ldgram.c" /* yacc.c:1661 */ + break; + + case 75: +#line 329 "ldgram.y" /* yacc.c:1661 */ + { lang_add_output((yyvsp[-1].name), 1); } +#line 2621 "ldgram.c" /* yacc.c:1661 */ + break; + + case 76: +#line 331 "ldgram.y" /* yacc.c:1661 */ + { lang_add_output_format ((yyvsp[-1].name), (char *) NULL, + (char *) NULL, 1); } +#line 2628 "ldgram.c" /* yacc.c:1661 */ + break; + + case 77: +#line 334 "ldgram.y" /* yacc.c:1661 */ + { lang_add_output_format ((yyvsp[-5].name), (yyvsp[-3].name), (yyvsp[-1].name), 1); } +#line 2634 "ldgram.c" /* yacc.c:1661 */ + break; + + case 78: +#line 336 "ldgram.y" /* yacc.c:1661 */ + { ldfile_set_output_arch ((yyvsp[-1].name), bfd_arch_unknown); } +#line 2640 "ldgram.c" /* yacc.c:1661 */ + break; + + case 79: +#line 338 "ldgram.y" /* yacc.c:1661 */ + { command_line.force_common_definition = TRUE ; } +#line 2646 "ldgram.c" /* yacc.c:1661 */ + break; + + case 80: +#line 340 "ldgram.y" /* yacc.c:1661 */ + { command_line.inhibit_common_definition = TRUE ; } +#line 2652 "ldgram.c" /* yacc.c:1661 */ + break; + + case 82: +#line 343 "ldgram.y" /* yacc.c:1661 */ + { lang_enter_group (); } +#line 2658 "ldgram.c" /* yacc.c:1661 */ + break; + + case 83: +#line 345 "ldgram.y" /* yacc.c:1661 */ + { lang_leave_group (); } +#line 2664 "ldgram.c" /* yacc.c:1661 */ + break; + + case 84: +#line 347 "ldgram.y" /* yacc.c:1661 */ + { lang_add_map((yyvsp[-1].name)); } +#line 2670 "ldgram.c" /* yacc.c:1661 */ + break; + + case 85: +#line 349 "ldgram.y" /* yacc.c:1661 */ + { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); } +#line 2676 "ldgram.c" /* yacc.c:1661 */ + break; + + case 86: +#line 351 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 2682 "ldgram.c" /* yacc.c:1661 */ + break; + + case 87: +#line 353 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_nocrossref ((yyvsp[-1].nocrossref)); + } +#line 2690 "ldgram.c" /* yacc.c:1661 */ + break; + + case 88: +#line 357 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_nocrossref_to ((yyvsp[-1].nocrossref)); + } +#line 2698 "ldgram.c" /* yacc.c:1661 */ + break; + + case 90: +#line 362 "ldgram.y" /* yacc.c:1661 */ + { lang_add_insert ((yyvsp[0].name), 0); } +#line 2704 "ldgram.c" /* yacc.c:1661 */ + break; + + case 91: +#line 364 "ldgram.y" /* yacc.c:1661 */ + { lang_add_insert ((yyvsp[0].name), 1); } +#line 2710 "ldgram.c" /* yacc.c:1661 */ + break; + + case 92: +#line 366 "ldgram.y" /* yacc.c:1661 */ + { lang_memory_region_alias ((yyvsp[-3].name), (yyvsp[-1].name)); } +#line 2716 "ldgram.c" /* yacc.c:1661 */ + break; + + case 93: +#line 368 "ldgram.y" /* yacc.c:1661 */ + { lang_ld_feature ((yyvsp[-1].name)); } +#line 2722 "ldgram.c" /* yacc.c:1661 */ + break; + + case 94: +#line 372 "ldgram.y" /* yacc.c:1661 */ + { ldlex_inputlist(); } +#line 2728 "ldgram.c" /* yacc.c:1661 */ + break; + + case 95: +#line 374 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate(); } +#line 2734 "ldgram.c" /* yacc.c:1661 */ + break; + + case 96: +#line 378 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum, + (char *)NULL); } +#line 2741 "ldgram.c" /* yacc.c:1661 */ + break; + + case 97: +#line 381 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum, + (char *)NULL); } +#line 2748 "ldgram.c" /* yacc.c:1661 */ + break; + + case 98: +#line 384 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_search_file_enum, + (char *)NULL); } +#line 2755 "ldgram.c" /* yacc.c:1661 */ + break; + + case 99: +#line 387 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum, + (char *)NULL); } +#line 2762 "ldgram.c" /* yacc.c:1661 */ + break; + + case 100: +#line 390 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum, + (char *)NULL); } +#line 2769 "ldgram.c" /* yacc.c:1661 */ + break; + + case 101: +#line 393 "ldgram.y" /* yacc.c:1661 */ + { lang_add_input_file((yyvsp[0].name),lang_input_file_is_l_enum, + (char *)NULL); } +#line 2776 "ldgram.c" /* yacc.c:1661 */ + break; + + case 102: +#line 396 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } +#line 2783 "ldgram.c" /* yacc.c:1661 */ + break; + + case 103: +#line 399 "ldgram.y" /* yacc.c:1661 */ + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[-2].integer); } +#line 2789 "ldgram.c" /* yacc.c:1661 */ + break; + + case 104: +#line 401 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } +#line 2796 "ldgram.c" /* yacc.c:1661 */ + break; + + case 105: +#line 404 "ldgram.y" /* yacc.c:1661 */ + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[-2].integer); } +#line 2802 "ldgram.c" /* yacc.c:1661 */ + break; + + case 106: +#line 406 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = input_flags.add_DT_NEEDED_for_regular; + input_flags.add_DT_NEEDED_for_regular = TRUE; } +#line 2809 "ldgram.c" /* yacc.c:1661 */ + break; + + case 107: +#line 409 "ldgram.y" /* yacc.c:1661 */ + { input_flags.add_DT_NEEDED_for_regular = (yyvsp[-2].integer); } +#line 2815 "ldgram.c" /* yacc.c:1661 */ + break; + + case 112: +#line 424 "ldgram.y" /* yacc.c:1661 */ + { lang_add_entry ((yyvsp[-1].name), FALSE); } +#line 2821 "ldgram.c" /* yacc.c:1661 */ + break; + + case 114: +#line 426 "ldgram.y" /* yacc.c:1661 */ + {ldlex_expression ();} +#line 2827 "ldgram.c" /* yacc.c:1661 */ + break; + + case 115: +#line 427 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); + lang_add_assignment (exp_assert ((yyvsp[-3].etree), (yyvsp[-1].name))); } +#line 2834 "ldgram.c" /* yacc.c:1661 */ + break; + + case 116: +#line 435 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.cname) = (yyvsp[0].name); + } +#line 2842 "ldgram.c" /* yacc.c:1661 */ + break; + + case 117: +#line 439 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.cname) = "*"; + } +#line 2850 "ldgram.c" /* yacc.c:1661 */ + break; + + case 118: +#line 443 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.cname) = "?"; + } +#line 2858 "ldgram.c" /* yacc.c:1661 */ + break; + + case 119: +#line 450 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[0].cname); + (yyval.wildcard).sorted = none; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2869 "ldgram.c" /* yacc.c:1661 */ + break; + + case 120: +#line 457 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[0].cname); + (yyval.wildcard).sorted = none; + (yyval.wildcard).exclude_name_list = (yyvsp[-2].name_list); + (yyval.wildcard).section_flag_list = NULL; + } +#line 2880 "ldgram.c" /* yacc.c:1661 */ + break; + + case 121: +#line 464 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-1].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2891 "ldgram.c" /* yacc.c:1661 */ + break; + + case 122: +#line 471 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-1].cname); + (yyval.wildcard).sorted = by_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2902 "ldgram.c" /* yacc.c:1661 */ + break; + + case 123: +#line 478 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-1].cname); + (yyval.wildcard).sorted = by_none; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2913 "ldgram.c" /* yacc.c:1661 */ + break; + + case 124: +#line 485 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-2].cname); + (yyval.wildcard).sorted = by_name_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2924 "ldgram.c" /* yacc.c:1661 */ + break; + + case 125: +#line 492 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-2].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2935 "ldgram.c" /* yacc.c:1661 */ + break; + + case 126: +#line 499 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-2].cname); + (yyval.wildcard).sorted = by_alignment_name; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2946 "ldgram.c" /* yacc.c:1661 */ + break; + + case 127: +#line 506 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-2].cname); + (yyval.wildcard).sorted = by_alignment; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2957 "ldgram.c" /* yacc.c:1661 */ + break; + + case 128: +#line 513 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-1].cname); + (yyval.wildcard).sorted = by_name; + (yyval.wildcard).exclude_name_list = (yyvsp[-3].name_list); + (yyval.wildcard).section_flag_list = NULL; + } +#line 2968 "ldgram.c" /* yacc.c:1661 */ + break; + + case 129: +#line 520 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.wildcard).name = (yyvsp[-1].cname); + (yyval.wildcard).sorted = by_init_priority; + (yyval.wildcard).exclude_name_list = NULL; + (yyval.wildcard).section_flag_list = NULL; + } +#line 2979 "ldgram.c" /* yacc.c:1661 */ + break; + + case 130: +#line 529 "ldgram.y" /* yacc.c:1661 */ + { + struct flag_info_list *n; + n = ((struct flag_info_list *) xmalloc (sizeof *n)); + if ((yyvsp[0].name)[0] == '!') + { + n->with = without_flags; + n->name = &(yyvsp[0].name)[1]; + } + else + { + n->with = with_flags; + n->name = (yyvsp[0].name); + } + n->valid = FALSE; + n->next = NULL; + (yyval.flag_info_list) = n; + } +#line 3001 "ldgram.c" /* yacc.c:1661 */ + break; + + case 131: +#line 547 "ldgram.y" /* yacc.c:1661 */ + { + struct flag_info_list *n; + n = ((struct flag_info_list *) xmalloc (sizeof *n)); + if ((yyvsp[0].name)[0] == '!') + { + n->with = without_flags; + n->name = &(yyvsp[0].name)[1]; + } + else + { + n->with = with_flags; + n->name = (yyvsp[0].name); + } + n->valid = FALSE; + n->next = (yyvsp[-2].flag_info_list); + (yyval.flag_info_list) = n; + } +#line 3023 "ldgram.c" /* yacc.c:1661 */ + break; + + case 132: +#line 568 "ldgram.y" /* yacc.c:1661 */ + { + struct flag_info *n; + n = ((struct flag_info *) xmalloc (sizeof *n)); + n->flag_list = (yyvsp[-1].flag_info_list); + n->flags_initialized = FALSE; + n->not_with_flags = 0; + n->only_with_flags = 0; + (yyval.flag_info) = n; + } +#line 3037 "ldgram.c" /* yacc.c:1661 */ + break; + + case 133: +#line 581 "ldgram.y" /* yacc.c:1661 */ + { + struct name_list *tmp; + tmp = (struct name_list *) xmalloc (sizeof *tmp); + tmp->name = (yyvsp[0].cname); + tmp->next = (yyvsp[-1].name_list); + (yyval.name_list) = tmp; + } +#line 3049 "ldgram.c" /* yacc.c:1661 */ + break; + + case 134: +#line 590 "ldgram.y" /* yacc.c:1661 */ + { + struct name_list *tmp; + tmp = (struct name_list *) xmalloc (sizeof *tmp); + tmp->name = (yyvsp[0].cname); + tmp->next = NULL; + (yyval.name_list) = tmp; + } +#line 3061 "ldgram.c" /* yacc.c:1661 */ + break; + + case 135: +#line 601 "ldgram.y" /* yacc.c:1661 */ + { + struct wildcard_list *tmp; + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); + tmp->next = (yyvsp[-2].wildcard_list); + tmp->spec = (yyvsp[0].wildcard); + (yyval.wildcard_list) = tmp; + } +#line 3073 "ldgram.c" /* yacc.c:1661 */ + break; + + case 136: +#line 610 "ldgram.y" /* yacc.c:1661 */ + { + struct wildcard_list *tmp; + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); + tmp->next = NULL; + tmp->spec = (yyvsp[0].wildcard); + (yyval.wildcard_list) = tmp; + } +#line 3085 "ldgram.c" /* yacc.c:1661 */ + break; + + case 137: +#line 621 "ldgram.y" /* yacc.c:1661 */ + { + struct wildcard_spec tmp; + tmp.name = (yyvsp[0].name); + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = NULL; + lang_add_wild (&tmp, NULL, ldgram_had_keep); + } +#line 3098 "ldgram.c" /* yacc.c:1661 */ + break; + + case 138: +#line 630 "ldgram.y" /* yacc.c:1661 */ + { + struct wildcard_spec tmp; + tmp.name = (yyvsp[0].name); + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = (yyvsp[-1].flag_info); + lang_add_wild (&tmp, NULL, ldgram_had_keep); + } +#line 3111 "ldgram.c" /* yacc.c:1661 */ + break; + + case 139: +#line 639 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_wild (NULL, (yyvsp[-1].wildcard_list), ldgram_had_keep); + } +#line 3119 "ldgram.c" /* yacc.c:1661 */ + break; + + case 140: +#line 643 "ldgram.y" /* yacc.c:1661 */ + { + struct wildcard_spec tmp; + tmp.name = NULL; + tmp.exclude_name_list = NULL; + tmp.sorted = none; + tmp.section_flag_list = (yyvsp[-3].flag_info); + lang_add_wild (&tmp, (yyvsp[-1].wildcard_list), ldgram_had_keep); + } +#line 3132 "ldgram.c" /* yacc.c:1661 */ + break; + + case 141: +#line 652 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_wild (&(yyvsp[-3].wildcard), (yyvsp[-1].wildcard_list), ldgram_had_keep); + } +#line 3140 "ldgram.c" /* yacc.c:1661 */ + break; + + case 142: +#line 656 "ldgram.y" /* yacc.c:1661 */ + { + (yyvsp[-3].wildcard).section_flag_list = (yyvsp[-4].flag_info); + lang_add_wild (&(yyvsp[-3].wildcard), (yyvsp[-1].wildcard_list), ldgram_had_keep); + } +#line 3149 "ldgram.c" /* yacc.c:1661 */ + break; + + case 144: +#line 665 "ldgram.y" /* yacc.c:1661 */ + { ldgram_had_keep = TRUE; } +#line 3155 "ldgram.c" /* yacc.c:1661 */ + break; + + case 145: +#line 667 "ldgram.y" /* yacc.c:1661 */ + { ldgram_had_keep = FALSE; } +#line 3161 "ldgram.c" /* yacc.c:1661 */ + break; + + case 147: +#line 673 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_attribute(lang_object_symbols_statement_enum); + } +#line 3169 "ldgram.c" /* yacc.c:1661 */ + break; + + case 149: +#line 678 "ldgram.y" /* yacc.c:1661 */ + { + + lang_add_attribute(lang_constructors_statement_enum); + } +#line 3178 "ldgram.c" /* yacc.c:1661 */ + break; + + case 150: +#line 683 "ldgram.y" /* yacc.c:1661 */ + { + constructors_sorted = TRUE; + lang_add_attribute (lang_constructors_statement_enum); + } +#line 3187 "ldgram.c" /* yacc.c:1661 */ + break; + + case 152: +#line 689 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_data ((int) (yyvsp[-3].integer), (yyvsp[-1].etree)); + } +#line 3195 "ldgram.c" /* yacc.c:1661 */ + break; + + case 153: +#line 694 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_fill ((yyvsp[-1].fill)); + } +#line 3203 "ldgram.c" /* yacc.c:1661 */ + break; + + case 154: +#line 697 "ldgram.y" /* yacc.c:1661 */ + {ldlex_expression ();} +#line 3209 "ldgram.c" /* yacc.c:1661 */ + break; + + case 155: +#line 698 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); + lang_add_assignment (exp_assert ((yyvsp[-4].etree), (yyvsp[-2].name))); } +#line 3216 "ldgram.c" /* yacc.c:1661 */ + break; + + case 156: +#line 701 "ldgram.y" /* yacc.c:1661 */ + { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); } +#line 3222 "ldgram.c" /* yacc.c:1661 */ + break; + + case 157: +#line 703 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 3228 "ldgram.c" /* yacc.c:1661 */ + break; + + case 162: +#line 718 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = (yyvsp[0].token); } +#line 3234 "ldgram.c" /* yacc.c:1661 */ + break; + + case 163: +#line 720 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = (yyvsp[0].token); } +#line 3240 "ldgram.c" /* yacc.c:1661 */ + break; + + case 164: +#line 722 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = (yyvsp[0].token); } +#line 3246 "ldgram.c" /* yacc.c:1661 */ + break; + + case 165: +#line 724 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = (yyvsp[0].token); } +#line 3252 "ldgram.c" /* yacc.c:1661 */ + break; + + case 166: +#line 726 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = (yyvsp[0].token); } +#line 3258 "ldgram.c" /* yacc.c:1661 */ + break; + + case 167: +#line 731 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.fill) = exp_get_fill ((yyvsp[0].etree), 0, "fill value"); + } +#line 3266 "ldgram.c" /* yacc.c:1661 */ + break; + + case 168: +#line 738 "ldgram.y" /* yacc.c:1661 */ + { (yyval.fill) = (yyvsp[0].fill); } +#line 3272 "ldgram.c" /* yacc.c:1661 */ + break; + + case 169: +#line 739 "ldgram.y" /* yacc.c:1661 */ + { (yyval.fill) = (fill_type *) 0; } +#line 3278 "ldgram.c" /* yacc.c:1661 */ + break; + + case 170: +#line 744 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '+'; } +#line 3284 "ldgram.c" /* yacc.c:1661 */ + break; + + case 171: +#line 746 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '-'; } +#line 3290 "ldgram.c" /* yacc.c:1661 */ + break; + + case 172: +#line 748 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '*'; } +#line 3296 "ldgram.c" /* yacc.c:1661 */ + break; + + case 173: +#line 750 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '/'; } +#line 3302 "ldgram.c" /* yacc.c:1661 */ + break; + + case 174: +#line 752 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = LSHIFT; } +#line 3308 "ldgram.c" /* yacc.c:1661 */ + break; + + case 175: +#line 754 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = RSHIFT; } +#line 3314 "ldgram.c" /* yacc.c:1661 */ + break; + + case 176: +#line 756 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '&'; } +#line 3320 "ldgram.c" /* yacc.c:1661 */ + break; + + case 177: +#line 758 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = '|'; } +#line 3326 "ldgram.c" /* yacc.c:1661 */ + break; + + case 180: +#line 768 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_assignment (exp_assign ((yyvsp[-2].name), (yyvsp[0].etree), FALSE)); + } +#line 3334 "ldgram.c" /* yacc.c:1661 */ + break; + + case 181: +#line 772 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_assignment (exp_assign ((yyvsp[-2].name), + exp_binop ((yyvsp[-1].token), + exp_nameop (NAME, + (yyvsp[-2].name)), + (yyvsp[0].etree)), FALSE)); + } +#line 3346 "ldgram.c" /* yacc.c:1661 */ + break; + + case 182: +#line 780 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_assignment (exp_assign ((yyvsp[-3].name), (yyvsp[-1].etree), TRUE)); + } +#line 3354 "ldgram.c" /* yacc.c:1661 */ + break; + + case 183: +#line 784 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_assignment (exp_provide ((yyvsp[-3].name), (yyvsp[-1].etree), FALSE)); + } +#line 3362 "ldgram.c" /* yacc.c:1661 */ + break; + + case 184: +#line 788 "ldgram.y" /* yacc.c:1661 */ + { + lang_add_assignment (exp_provide ((yyvsp[-3].name), (yyvsp[-1].etree), TRUE)); + } +#line 3370 "ldgram.c" /* yacc.c:1661 */ + break; + + case 192: +#line 811 "ldgram.y" /* yacc.c:1661 */ + { region = lang_memory_region_lookup ((yyvsp[0].name), TRUE); } +#line 3376 "ldgram.c" /* yacc.c:1661 */ + break; + + case 193: +#line 814 "ldgram.y" /* yacc.c:1661 */ + {} +#line 3382 "ldgram.c" /* yacc.c:1661 */ + break; + + case 194: +#line 816 "ldgram.y" /* yacc.c:1661 */ + { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); } +#line 3388 "ldgram.c" /* yacc.c:1661 */ + break; + + case 195: +#line 818 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 3394 "ldgram.c" /* yacc.c:1661 */ + break; + + case 196: +#line 823 "ldgram.y" /* yacc.c:1661 */ + { + region->origin_exp = (yyvsp[0].etree); + region->current = region->origin; + } +#line 3403 "ldgram.c" /* yacc.c:1661 */ + break; + + case 197: +#line 831 "ldgram.y" /* yacc.c:1661 */ + { + region->length_exp = (yyvsp[0].etree); + } +#line 3411 "ldgram.c" /* yacc.c:1661 */ + break; + + case 198: +#line 838 "ldgram.y" /* yacc.c:1661 */ + { /* dummy action to avoid bison 1.25 error message */ } +#line 3417 "ldgram.c" /* yacc.c:1661 */ + break; + + case 202: +#line 849 "ldgram.y" /* yacc.c:1661 */ + { lang_set_flags (region, (yyvsp[0].name), 0); } +#line 3423 "ldgram.c" /* yacc.c:1661 */ + break; + + case 203: +#line 851 "ldgram.y" /* yacc.c:1661 */ + { lang_set_flags (region, (yyvsp[0].name), 1); } +#line 3429 "ldgram.c" /* yacc.c:1661 */ + break; + + case 204: +#line 856 "ldgram.y" /* yacc.c:1661 */ + { lang_startup((yyvsp[-1].name)); } +#line 3435 "ldgram.c" /* yacc.c:1661 */ + break; + + case 206: +#line 862 "ldgram.y" /* yacc.c:1661 */ + { ldemul_hll((char *)NULL); } +#line 3441 "ldgram.c" /* yacc.c:1661 */ + break; + + case 207: +#line 867 "ldgram.y" /* yacc.c:1661 */ + { ldemul_hll((yyvsp[0].name)); } +#line 3447 "ldgram.c" /* yacc.c:1661 */ + break; + + case 208: +#line 869 "ldgram.y" /* yacc.c:1661 */ + { ldemul_hll((yyvsp[0].name)); } +#line 3453 "ldgram.c" /* yacc.c:1661 */ + break; + + case 210: +#line 877 "ldgram.y" /* yacc.c:1661 */ + { ldemul_syslib((yyvsp[0].name)); } +#line 3459 "ldgram.c" /* yacc.c:1661 */ + break; + + case 212: +#line 883 "ldgram.y" /* yacc.c:1661 */ + { lang_float(TRUE); } +#line 3465 "ldgram.c" /* yacc.c:1661 */ + break; + + case 213: +#line 885 "ldgram.y" /* yacc.c:1661 */ + { lang_float(FALSE); } +#line 3471 "ldgram.c" /* yacc.c:1661 */ + break; + + case 214: +#line 890 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.nocrossref) = NULL; + } +#line 3479 "ldgram.c" /* yacc.c:1661 */ + break; + + case 215: +#line 894 "ldgram.y" /* yacc.c:1661 */ + { + struct lang_nocrossref *n; + + n = (struct lang_nocrossref *) xmalloc (sizeof *n); + n->name = (yyvsp[-1].name); + n->next = (yyvsp[0].nocrossref); + (yyval.nocrossref) = n; + } +#line 3492 "ldgram.c" /* yacc.c:1661 */ + break; + + case 216: +#line 903 "ldgram.y" /* yacc.c:1661 */ + { + struct lang_nocrossref *n; + + n = (struct lang_nocrossref *) xmalloc (sizeof *n); + n->name = (yyvsp[-2].name); + n->next = (yyvsp[0].nocrossref); + (yyval.nocrossref) = n; + } +#line 3505 "ldgram.c" /* yacc.c:1661 */ + break; + + case 217: +#line 913 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression (); } +#line 3511 "ldgram.c" /* yacc.c:1661 */ + break; + + case 218: +#line 915 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); (yyval.etree)=(yyvsp[0].etree);} +#line 3517 "ldgram.c" /* yacc.c:1661 */ + break; + + case 219: +#line 920 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop ('-', (yyvsp[0].etree)); } +#line 3523 "ldgram.c" /* yacc.c:1661 */ + break; + + case 220: +#line 922 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-1].etree); } +#line 3529 "ldgram.c" /* yacc.c:1661 */ + break; + + case 221: +#line 924 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop ((int) (yyvsp[-3].integer),(yyvsp[-1].etree)); } +#line 3535 "ldgram.c" /* yacc.c:1661 */ + break; + + case 222: +#line 926 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop ('!', (yyvsp[0].etree)); } +#line 3541 "ldgram.c" /* yacc.c:1661 */ + break; + + case 223: +#line 928 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[0].etree); } +#line 3547 "ldgram.c" /* yacc.c:1661 */ + break; + + case 224: +#line 930 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop ('~', (yyvsp[0].etree));} +#line 3553 "ldgram.c" /* yacc.c:1661 */ + break; + + case 225: +#line 933 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('*', (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3559 "ldgram.c" /* yacc.c:1661 */ + break; + + case 226: +#line 935 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('/', (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3565 "ldgram.c" /* yacc.c:1661 */ + break; + + case 227: +#line 937 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('%', (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3571 "ldgram.c" /* yacc.c:1661 */ + break; + + case 228: +#line 939 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('+', (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3577 "ldgram.c" /* yacc.c:1661 */ + break; + + case 229: +#line 941 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('-' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3583 "ldgram.c" /* yacc.c:1661 */ + break; + + case 230: +#line 943 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (LSHIFT , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3589 "ldgram.c" /* yacc.c:1661 */ + break; + + case 231: +#line 945 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (RSHIFT , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3595 "ldgram.c" /* yacc.c:1661 */ + break; + + case 232: +#line 947 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (EQ , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3601 "ldgram.c" /* yacc.c:1661 */ + break; + + case 233: +#line 949 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (NE , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3607 "ldgram.c" /* yacc.c:1661 */ + break; + + case 234: +#line 951 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (LE , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3613 "ldgram.c" /* yacc.c:1661 */ + break; + + case 235: +#line 953 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (GE , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3619 "ldgram.c" /* yacc.c:1661 */ + break; + + case 236: +#line 955 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('<' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3625 "ldgram.c" /* yacc.c:1661 */ + break; + + case 237: +#line 957 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('>' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3631 "ldgram.c" /* yacc.c:1661 */ + break; + + case 238: +#line 959 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('&' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3637 "ldgram.c" /* yacc.c:1661 */ + break; + + case 239: +#line 961 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('^' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3643 "ldgram.c" /* yacc.c:1661 */ + break; + + case 240: +#line 963 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop ('|' , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3649 "ldgram.c" /* yacc.c:1661 */ + break; + + case 241: +#line 965 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_trinop ('?' , (yyvsp[-4].etree), (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3655 "ldgram.c" /* yacc.c:1661 */ + break; + + case 242: +#line 967 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (ANDAND , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3661 "ldgram.c" /* yacc.c:1661 */ + break; + + case 243: +#line 969 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (OROR , (yyvsp[-2].etree), (yyvsp[0].etree)); } +#line 3667 "ldgram.c" /* yacc.c:1661 */ + break; + + case 244: +#line 971 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (DEFINED, (yyvsp[-1].name)); } +#line 3673 "ldgram.c" /* yacc.c:1661 */ + break; + + case 245: +#line 973 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_bigintop ((yyvsp[0].bigint).integer, (yyvsp[0].bigint).str); } +#line 3679 "ldgram.c" /* yacc.c:1661 */ + break; + + case 246: +#line 975 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (SIZEOF_HEADERS,0); } +#line 3685 "ldgram.c" /* yacc.c:1661 */ + break; + + case 247: +#line 978 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (ALIGNOF,(yyvsp[-1].name)); } +#line 3691 "ldgram.c" /* yacc.c:1661 */ + break; + + case 248: +#line 980 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (SIZEOF,(yyvsp[-1].name)); } +#line 3697 "ldgram.c" /* yacc.c:1661 */ + break; + + case 249: +#line 982 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (ADDR,(yyvsp[-1].name)); } +#line 3703 "ldgram.c" /* yacc.c:1661 */ + break; + + case 250: +#line 984 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (LOADADDR,(yyvsp[-1].name)); } +#line 3709 "ldgram.c" /* yacc.c:1661 */ + break; + + case 251: +#line 986 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (CONSTANT,(yyvsp[-1].name)); } +#line 3715 "ldgram.c" /* yacc.c:1661 */ + break; + + case 252: +#line 988 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop (ABSOLUTE, (yyvsp[-1].etree)); } +#line 3721 "ldgram.c" /* yacc.c:1661 */ + break; + + case 253: +#line 990 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[-1].etree)); } +#line 3727 "ldgram.c" /* yacc.c:1661 */ + break; + + case 254: +#line 992 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (ALIGN_K,(yyvsp[-3].etree),(yyvsp[-1].etree)); } +#line 3733 "ldgram.c" /* yacc.c:1661 */ + break; + + case 255: +#line 994 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (DATA_SEGMENT_ALIGN, (yyvsp[-3].etree), (yyvsp[-1].etree)); } +#line 3739 "ldgram.c" /* yacc.c:1661 */ + break; + + case 256: +#line 996 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (DATA_SEGMENT_RELRO_END, (yyvsp[-1].etree), (yyvsp[-3].etree)); } +#line 3745 "ldgram.c" /* yacc.c:1661 */ + break; + + case 257: +#line 998 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop (DATA_SEGMENT_END, (yyvsp[-1].etree)); } +#line 3751 "ldgram.c" /* yacc.c:1661 */ + break; + + case 258: +#line 1000 "ldgram.y" /* yacc.c:1661 */ + { /* 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[-1].etree), + exp_nameop (NAME, (yyvsp[-3].name))); } +#line 3764 "ldgram.c" /* yacc.c:1661 */ + break; + + case 259: +#line 1009 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop (ALIGN_K,(yyvsp[-1].etree)); } +#line 3770 "ldgram.c" /* yacc.c:1661 */ + break; + + case 260: +#line 1011 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (NAME,(yyvsp[0].name)); } +#line 3776 "ldgram.c" /* yacc.c:1661 */ + break; + + case 261: +#line 1013 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (MAX_K, (yyvsp[-3].etree), (yyvsp[-1].etree) ); } +#line 3782 "ldgram.c" /* yacc.c:1661 */ + break; + + case 262: +#line 1015 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_binop (MIN_K, (yyvsp[-3].etree), (yyvsp[-1].etree) ); } +#line 3788 "ldgram.c" /* yacc.c:1661 */ + break; + + case 263: +#line 1017 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_assert ((yyvsp[-3].etree), (yyvsp[-1].name)); } +#line 3794 "ldgram.c" /* yacc.c:1661 */ + break; + + case 264: +#line 1019 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (ORIGIN, (yyvsp[-1].name)); } +#line 3800 "ldgram.c" /* yacc.c:1661 */ + break; + + case 265: +#line 1021 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_nameop (LENGTH, (yyvsp[-1].name)); } +#line 3806 "ldgram.c" /* yacc.c:1661 */ + break; + + case 266: +#line 1023 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = exp_unop (LOG2CEIL, (yyvsp[-1].etree)); } +#line 3812 "ldgram.c" /* yacc.c:1661 */ + break; + + case 267: +#line 1028 "ldgram.y" /* yacc.c:1661 */ + { (yyval.name) = (yyvsp[0].name); } +#line 3818 "ldgram.c" /* yacc.c:1661 */ + break; + + case 268: +#line 1029 "ldgram.y" /* yacc.c:1661 */ + { (yyval.name) = 0; } +#line 3824 "ldgram.c" /* yacc.c:1661 */ + break; + + case 269: +#line 1033 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-1].etree); } +#line 3830 "ldgram.c" /* yacc.c:1661 */ + break; + + case 270: +#line 1034 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = 0; } +#line 3836 "ldgram.c" /* yacc.c:1661 */ + break; + + case 271: +#line 1038 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-1].etree); } +#line 3842 "ldgram.c" /* yacc.c:1661 */ + break; + + case 272: +#line 1039 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = 0; } +#line 3848 "ldgram.c" /* yacc.c:1661 */ + break; + + case 273: +#line 1043 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = ALIGN_WITH_INPUT; } +#line 3854 "ldgram.c" /* yacc.c:1661 */ + break; + + case 274: +#line 1044 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = 0; } +#line 3860 "ldgram.c" /* yacc.c:1661 */ + break; + + case 275: +#line 1048 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-1].etree); } +#line 3866 "ldgram.c" /* yacc.c:1661 */ + break; + + case 276: +#line 1049 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = 0; } +#line 3872 "ldgram.c" /* yacc.c:1661 */ + break; + + case 277: +#line 1053 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = ONLY_IF_RO; } +#line 3878 "ldgram.c" /* yacc.c:1661 */ + break; + + case 278: +#line 1054 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = ONLY_IF_RW; } +#line 3884 "ldgram.c" /* yacc.c:1661 */ + break; + + case 279: +#line 1055 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = SPECIAL; } +#line 3890 "ldgram.c" /* yacc.c:1661 */ + break; + + case 280: +#line 1056 "ldgram.y" /* yacc.c:1661 */ + { (yyval.token) = 0; } +#line 3896 "ldgram.c" /* yacc.c:1661 */ + break; + + case 281: +#line 1059 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression(); } +#line 3902 "ldgram.c" /* yacc.c:1661 */ + break; + + case 282: +#line 1064 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); ldlex_script (); } +#line 3908 "ldgram.c" /* yacc.c:1661 */ + break; + + case 283: +#line 1067 "ldgram.y" /* yacc.c:1661 */ + { + lang_enter_output_section_statement((yyvsp[-9].name), (yyvsp[-7].etree), + sectype, + (yyvsp[-5].etree), (yyvsp[-3].etree), (yyvsp[-6].etree), (yyvsp[-1].token), (yyvsp[-4].token)); + } +#line 3918 "ldgram.c" /* yacc.c:1661 */ + break; + + case 284: +#line 1073 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); ldlex_expression (); } +#line 3924 "ldgram.c" /* yacc.c:1661 */ + break; + + case 285: +#line 1075 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + lang_leave_output_section_statement ((yyvsp[0].fill), (yyvsp[-3].name), (yyvsp[-1].section_phdr), (yyvsp[-2].name)); + } +#line 3933 "ldgram.c" /* yacc.c:1661 */ + break; + + case 286: +#line 1080 "ldgram.y" /* yacc.c:1661 */ + {} +#line 3939 "ldgram.c" /* yacc.c:1661 */ + break; + + case 287: +#line 1082 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression (); } +#line 3945 "ldgram.c" /* yacc.c:1661 */ + break; + + case 288: +#line 1084 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); ldlex_script (); } +#line 3951 "ldgram.c" /* yacc.c:1661 */ + break; + + case 289: +#line 1086 "ldgram.y" /* yacc.c:1661 */ + { + lang_enter_overlay ((yyvsp[-5].etree), (yyvsp[-2].etree)); + } +#line 3959 "ldgram.c" /* yacc.c:1661 */ + break; + + case 290: +#line 1091 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); ldlex_expression (); } +#line 3965 "ldgram.c" /* yacc.c:1661 */ + break; + + case 291: +#line 1093 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + lang_leave_overlay ((yyvsp[-11].etree), (int) (yyvsp[-12].integer), + (yyvsp[0].fill), (yyvsp[-3].name), (yyvsp[-1].section_phdr), (yyvsp[-2].name)); + } +#line 3975 "ldgram.c" /* yacc.c:1661 */ + break; + + case 293: +#line 1103 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression (); } +#line 3981 "ldgram.c" /* yacc.c:1661 */ + break; + + case 294: +#line 1105 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + lang_add_assignment (exp_assign (".", (yyvsp[0].etree), FALSE)); + } +#line 3990 "ldgram.c" /* yacc.c:1661 */ + break; + + case 296: +#line 1111 "ldgram.y" /* yacc.c:1661 */ + { ldlex_script (); ldfile_open_command_file((yyvsp[0].name)); } +#line 3996 "ldgram.c" /* yacc.c:1661 */ + break; + + case 297: +#line 1113 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 4002 "ldgram.c" /* yacc.c:1661 */ + break; + + case 298: +#line 1117 "ldgram.y" /* yacc.c:1661 */ + { sectype = noload_section; } +#line 4008 "ldgram.c" /* yacc.c:1661 */ + break; + + case 299: +#line 1118 "ldgram.y" /* yacc.c:1661 */ + { sectype = noalloc_section; } +#line 4014 "ldgram.c" /* yacc.c:1661 */ + break; + + case 300: +#line 1119 "ldgram.y" /* yacc.c:1661 */ + { sectype = noalloc_section; } +#line 4020 "ldgram.c" /* yacc.c:1661 */ + break; + + case 301: +#line 1120 "ldgram.y" /* yacc.c:1661 */ + { sectype = noalloc_section; } +#line 4026 "ldgram.c" /* yacc.c:1661 */ + break; + + case 302: +#line 1121 "ldgram.y" /* yacc.c:1661 */ + { sectype = noalloc_section; } +#line 4032 "ldgram.c" /* yacc.c:1661 */ + break; + + case 304: +#line 1126 "ldgram.y" /* yacc.c:1661 */ + { sectype = normal_section; } +#line 4038 "ldgram.c" /* yacc.c:1661 */ + break; + + case 305: +#line 1127 "ldgram.y" /* yacc.c:1661 */ + { sectype = normal_section; } +#line 4044 "ldgram.c" /* yacc.c:1661 */ + break; + + case 306: +#line 1131 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-2].etree); } +#line 4050 "ldgram.c" /* yacc.c:1661 */ + break; + + case 307: +#line 1132 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (etree_type *)NULL; } +#line 4056 "ldgram.c" /* yacc.c:1661 */ + break; + + case 308: +#line 1137 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-3].etree); } +#line 4062 "ldgram.c" /* yacc.c:1661 */ + break; + + case 309: +#line 1139 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-7].etree); } +#line 4068 "ldgram.c" /* yacc.c:1661 */ + break; + + case 310: +#line 1143 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (yyvsp[-1].etree); } +#line 4074 "ldgram.c" /* yacc.c:1661 */ + break; + + case 311: +#line 1144 "ldgram.y" /* yacc.c:1661 */ + { (yyval.etree) = (etree_type *) NULL; } +#line 4080 "ldgram.c" /* yacc.c:1661 */ + break; + + case 312: +#line 1149 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = 0; } +#line 4086 "ldgram.c" /* yacc.c:1661 */ + break; + + case 313: +#line 1151 "ldgram.y" /* yacc.c:1661 */ + { (yyval.integer) = 1; } +#line 4092 "ldgram.c" /* yacc.c:1661 */ + break; + + case 314: +#line 1156 "ldgram.y" /* yacc.c:1661 */ + { (yyval.name) = (yyvsp[0].name); } +#line 4098 "ldgram.c" /* yacc.c:1661 */ + break; + + case 315: +#line 1157 "ldgram.y" /* yacc.c:1661 */ + { (yyval.name) = DEFAULT_MEMORY_REGION; } +#line 4104 "ldgram.c" /* yacc.c:1661 */ + break; + + case 316: +#line 1162 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.section_phdr) = NULL; + } +#line 4112 "ldgram.c" /* yacc.c:1661 */ + break; + + case 317: +#line 1166 "ldgram.y" /* yacc.c:1661 */ + { + struct lang_output_section_phdr_list *n; + + n = ((struct lang_output_section_phdr_list *) + xmalloc (sizeof *n)); + n->name = (yyvsp[0].name); + n->used = FALSE; + n->next = (yyvsp[-2].section_phdr); + (yyval.section_phdr) = n; + } +#line 4127 "ldgram.c" /* yacc.c:1661 */ + break; + + case 319: +#line 1182 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_script (); + lang_enter_overlay_section ((yyvsp[0].name)); + } +#line 4136 "ldgram.c" /* yacc.c:1661 */ + break; + + case 320: +#line 1187 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); ldlex_expression (); } +#line 4142 "ldgram.c" /* yacc.c:1661 */ + break; + + case 321: +#line 1189 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + lang_leave_overlay_section ((yyvsp[0].fill), (yyvsp[-1].section_phdr)); + } +#line 4151 "ldgram.c" /* yacc.c:1661 */ + break; + + case 326: +#line 1206 "ldgram.y" /* yacc.c:1661 */ + { ldlex_expression (); } +#line 4157 "ldgram.c" /* yacc.c:1661 */ + break; + + case 327: +#line 1207 "ldgram.y" /* yacc.c:1661 */ + { ldlex_popstate (); } +#line 4163 "ldgram.c" /* yacc.c:1661 */ + break; + + case 328: +#line 1209 "ldgram.y" /* yacc.c:1661 */ + { + lang_new_phdr ((yyvsp[-5].name), (yyvsp[-3].etree), (yyvsp[-2].phdr).filehdr, (yyvsp[-2].phdr).phdrs, (yyvsp[-2].phdr).at, + (yyvsp[-2].phdr).flags); + } +#line 4172 "ldgram.c" /* yacc.c:1661 */ + break; + + case 329: +#line 1217 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.etree) = (yyvsp[0].etree); + + if ((yyvsp[0].etree)->type.node_class == etree_name + && (yyvsp[0].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[0].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); + } + } + } + } +#line 4217 "ldgram.c" /* yacc.c:1661 */ + break; + + case 330: +#line 1261 "ldgram.y" /* yacc.c:1661 */ + { + memset (&(yyval.phdr), 0, sizeof (struct phdr_info)); + } +#line 4225 "ldgram.c" /* yacc.c:1661 */ + break; + + case 331: +#line 1265 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.phdr) = (yyvsp[0].phdr); + if (strcmp ((yyvsp[-2].name), "FILEHDR") == 0 && (yyvsp[-1].etree) == NULL) + (yyval.phdr).filehdr = TRUE; + else if (strcmp ((yyvsp[-2].name), "PHDRS") == 0 && (yyvsp[-1].etree) == NULL) + (yyval.phdr).phdrs = TRUE; + else if (strcmp ((yyvsp[-2].name), "FLAGS") == 0 && (yyvsp[-1].etree) != NULL) + (yyval.phdr).flags = (yyvsp[-1].etree); + else + einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"), + NULL, (yyvsp[-2].name)); + } +#line 4242 "ldgram.c" /* yacc.c:1661 */ + break; + + case 332: +#line 1278 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.phdr) = (yyvsp[0].phdr); + (yyval.phdr).at = (yyvsp[-2].etree); + } +#line 4251 "ldgram.c" /* yacc.c:1661 */ + break; + + case 333: +#line 1286 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.etree) = NULL; + } +#line 4259 "ldgram.c" /* yacc.c:1661 */ + break; + + case 334: +#line 1290 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.etree) = (yyvsp[-1].etree); + } +#line 4267 "ldgram.c" /* yacc.c:1661 */ + break; + + case 335: +#line 1296 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_version_file (); + PUSH_ERROR (_("dynamic list")); + } +#line 4276 "ldgram.c" /* yacc.c:1661 */ + break; + + case 336: +#line 1301 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + POP_ERROR (); + } +#line 4285 "ldgram.c" /* yacc.c:1661 */ + break; + + case 340: +#line 1318 "ldgram.y" /* yacc.c:1661 */ + { + lang_append_dynamic_list ((yyvsp[-1].versyms)); + } +#line 4293 "ldgram.c" /* yacc.c:1661 */ + break; + + case 341: +#line 1326 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_version_file (); + PUSH_ERROR (_("VERSION script")); + } +#line 4302 "ldgram.c" /* yacc.c:1661 */ + break; + + case 342: +#line 1331 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + POP_ERROR (); + } +#line 4311 "ldgram.c" /* yacc.c:1661 */ + break; + + case 343: +#line 1340 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_version_script (); + } +#line 4319 "ldgram.c" /* yacc.c:1661 */ + break; + + case 344: +#line 1344 "ldgram.y" /* yacc.c:1661 */ + { + ldlex_popstate (); + } +#line 4327 "ldgram.c" /* yacc.c:1661 */ + break; + + case 347: +#line 1356 "ldgram.y" /* yacc.c:1661 */ + { + lang_register_vers_node (NULL, (yyvsp[-2].versnode), NULL); + } +#line 4335 "ldgram.c" /* yacc.c:1661 */ + break; + + case 348: +#line 1360 "ldgram.y" /* yacc.c:1661 */ + { + lang_register_vers_node ((yyvsp[-4].name), (yyvsp[-2].versnode), NULL); + } +#line 4343 "ldgram.c" /* yacc.c:1661 */ + break; + + case 349: +#line 1364 "ldgram.y" /* yacc.c:1661 */ + { + lang_register_vers_node ((yyvsp[-5].name), (yyvsp[-3].versnode), (yyvsp[-1].deflist)); + } +#line 4351 "ldgram.c" /* yacc.c:1661 */ + break; + + case 350: +#line 1371 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.deflist) = lang_add_vers_depend (NULL, (yyvsp[0].name)); + } +#line 4359 "ldgram.c" /* yacc.c:1661 */ + break; + + case 351: +#line 1375 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.deflist) = lang_add_vers_depend ((yyvsp[-1].deflist), (yyvsp[0].name)); + } +#line 4367 "ldgram.c" /* yacc.c:1661 */ + break; + + case 352: +#line 1382 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versnode) = lang_new_vers_node (NULL, NULL); + } +#line 4375 "ldgram.c" /* yacc.c:1661 */ + break; + + case 353: +#line 1386 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[-1].versyms), NULL); + } +#line 4383 "ldgram.c" /* yacc.c:1661 */ + break; + + case 354: +#line 1390 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[-1].versyms), NULL); + } +#line 4391 "ldgram.c" /* yacc.c:1661 */ + break; + + case 355: +#line 1394 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versnode) = lang_new_vers_node (NULL, (yyvsp[-1].versyms)); + } +#line 4399 "ldgram.c" /* yacc.c:1661 */ + break; + + case 356: +#line 1398 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versnode) = lang_new_vers_node ((yyvsp[-5].versyms), (yyvsp[-1].versyms)); + } +#line 4407 "ldgram.c" /* yacc.c:1661 */ + break; + + case 357: +#line 1405 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[0].name), ldgram_vers_current_lang, FALSE); + } +#line 4415 "ldgram.c" /* yacc.c:1661 */ + break; + + case 358: +#line 1409 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern (NULL, (yyvsp[0].name), ldgram_vers_current_lang, TRUE); + } +#line 4423 "ldgram.c" /* yacc.c:1661 */ + break; + + case 359: +#line 1413 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), (yyvsp[0].name), ldgram_vers_current_lang, FALSE); + } +#line 4431 "ldgram.c" /* yacc.c:1661 */ + break; + + case 360: +#line 1417 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), (yyvsp[0].name), ldgram_vers_current_lang, TRUE); + } +#line 4439 "ldgram.c" /* yacc.c:1661 */ + break; + + case 361: +#line 1421 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.name) = ldgram_vers_current_lang; + ldgram_vers_current_lang = (yyvsp[-1].name); + } +#line 4448 "ldgram.c" /* yacc.c:1661 */ + break; + + case 362: +#line 1426 "ldgram.y" /* yacc.c:1661 */ + { + struct bfd_elf_version_expr *pat; + for (pat = (yyvsp[-2].versyms); pat->next != NULL; pat = pat->next); + pat->next = (yyvsp[-8].versyms); + (yyval.versyms) = (yyvsp[-2].versyms); + ldgram_vers_current_lang = (yyvsp[-3].name); + } +#line 4460 "ldgram.c" /* yacc.c:1661 */ + break; + + case 363: +#line 1434 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.name) = ldgram_vers_current_lang; + ldgram_vers_current_lang = (yyvsp[-1].name); + } +#line 4469 "ldgram.c" /* yacc.c:1661 */ + break; + + case 364: +#line 1439 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = (yyvsp[-2].versyms); + ldgram_vers_current_lang = (yyvsp[-3].name); + } +#line 4478 "ldgram.c" /* yacc.c:1661 */ + break; + + case 365: +#line 1444 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "global", ldgram_vers_current_lang, FALSE); + } +#line 4486 "ldgram.c" /* yacc.c:1661 */ + break; + + case 366: +#line 1448 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "global", ldgram_vers_current_lang, FALSE); + } +#line 4494 "ldgram.c" /* yacc.c:1661 */ + break; + + case 367: +#line 1452 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "local", ldgram_vers_current_lang, FALSE); + } +#line 4502 "ldgram.c" /* yacc.c:1661 */ + break; + + case 368: +#line 1456 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "local", ldgram_vers_current_lang, FALSE); + } +#line 4510 "ldgram.c" /* yacc.c:1661 */ + break; + + case 369: +#line 1460 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern (NULL, "extern", ldgram_vers_current_lang, FALSE); + } +#line 4518 "ldgram.c" /* yacc.c:1661 */ + break; + + case 370: +#line 1464 "ldgram.y" /* yacc.c:1661 */ + { + (yyval.versyms) = lang_new_vers_pattern ((yyvsp[-2].versyms), "extern", ldgram_vers_current_lang, FALSE); + } +#line 4526 "ldgram.c" /* yacc.c:1661 */ + break; + + +#line 4530 "ldgram.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 1474 "ldgram.y" /* yacc.c:1906 */ + +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..73bf5e7ccb7 --- /dev/null +++ b/ld/ldgram.h @@ -0,0 +1,357 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_LDGRAM_H_INCLUDED +# define YY_YY_LDGRAM_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + INT = 258, + NAME = 259, + LNAME = 260, + PLUSEQ = 261, + MINUSEQ = 262, + MULTEQ = 263, + DIVEQ = 264, + LSHIFTEQ = 265, + RSHIFTEQ = 266, + ANDEQ = 267, + OREQ = 268, + OROR = 269, + ANDAND = 270, + EQ = 271, + NE = 272, + LE = 273, + GE = 274, + LSHIFT = 275, + RSHIFT = 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, + NOCROSSREFS_TO = 332, + ORIGIN = 333, + FILL = 334, + LENGTH = 335, + CREATE_OBJECT_SYMBOLS = 336, + INPUT = 337, + GROUP = 338, + OUTPUT = 339, + CONSTRUCTORS = 340, + ALIGNMOD = 341, + AT = 342, + SUBALIGN = 343, + HIDDEN = 344, + PROVIDE = 345, + PROVIDE_HIDDEN = 346, + AS_NEEDED = 347, + CHIP = 348, + LIST = 349, + SECT = 350, + ABSOLUTE = 351, + LOAD = 352, + NEWLINE = 353, + ENDWORD = 354, + ORDER = 355, + NAMEWORD = 356, + ASSERT_K = 357, + LOG2CEIL = 358, + FORMAT = 359, + PUBLIC = 360, + DEFSYMEND = 361, + BASE = 362, + ALIAS = 363, + TRUNCATE = 364, + REL = 365, + INPUT_SCRIPT = 366, + INPUT_MRI_SCRIPT = 367, + INPUT_DEFSYM = 368, + CASE = 369, + EXTERN = 370, + START = 371, + VERS_TAG = 372, + VERS_IDENTIFIER = 373, + GLOBAL = 374, + LOCAL = 375, + VERSIONK = 376, + INPUT_VERSION_SCRIPT = 377, + KEEP = 378, + ONLY_IF_RO = 379, + ONLY_IF_RW = 380, + SPECIAL = 381, + INPUT_SECTION_FLAGS = 382, + ALIGN_WITH_INPUT = 383, + EXCLUDE_FILE = 384, + CONSTANT = 385, + INPUT_DYNAMIC_LIST = 386 + }; +#endif +/* Tokens. */ +#define INT 258 +#define NAME 259 +#define LNAME 260 +#define PLUSEQ 261 +#define MINUSEQ 262 +#define MULTEQ 263 +#define DIVEQ 264 +#define LSHIFTEQ 265 +#define RSHIFTEQ 266 +#define ANDEQ 267 +#define OREQ 268 +#define OROR 269 +#define ANDAND 270 +#define EQ 271 +#define NE 272 +#define LE 273 +#define GE 274 +#define LSHIFT 275 +#define RSHIFT 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 NOCROSSREFS_TO 332 +#define ORIGIN 333 +#define FILL 334 +#define LENGTH 335 +#define CREATE_OBJECT_SYMBOLS 336 +#define INPUT 337 +#define GROUP 338 +#define OUTPUT 339 +#define CONSTRUCTORS 340 +#define ALIGNMOD 341 +#define AT 342 +#define SUBALIGN 343 +#define HIDDEN 344 +#define PROVIDE 345 +#define PROVIDE_HIDDEN 346 +#define AS_NEEDED 347 +#define CHIP 348 +#define LIST 349 +#define SECT 350 +#define ABSOLUTE 351 +#define LOAD 352 +#define NEWLINE 353 +#define ENDWORD 354 +#define ORDER 355 +#define NAMEWORD 356 +#define ASSERT_K 357 +#define LOG2CEIL 358 +#define FORMAT 359 +#define PUBLIC 360 +#define DEFSYMEND 361 +#define BASE 362 +#define ALIAS 363 +#define TRUNCATE 364 +#define REL 365 +#define INPUT_SCRIPT 366 +#define INPUT_MRI_SCRIPT 367 +#define INPUT_DEFSYM 368 +#define CASE 369 +#define EXTERN 370 +#define START 371 +#define VERS_TAG 372 +#define VERS_IDENTIFIER 373 +#define GLOBAL 374 +#define LOCAL 375 +#define VERSIONK 376 +#define INPUT_VERSION_SCRIPT 377 +#define KEEP 378 +#define ONLY_IF_RO 379 +#define ONLY_IF_RW 380 +#define SPECIAL 381 +#define INPUT_SECTION_FLAGS 382 +#define ALIGN_WITH_INPUT 383 +#define EXCLUDE_FILE 384 +#define CONSTANT 385 +#define INPUT_DYNAMIC_LIST 386 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 60 "ldgram.y" /* yacc.c:1915 */ + + 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 347 "ldgram.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_LDGRAM_H_INCLUDED */ diff --git a/ld/ldlex.c b/ld/ldlex.c new file mode 100644 index 00000000000..2a8ea478e2f --- /dev/null +++ b/ld/ldlex.c @@ -0,0 +1,4425 @@ + +#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 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +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 199 +#define YY_END_OF_BUFFER 200 +/* 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[1775] = + { 0, + 0, 0, 179, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 200, 199, 197, 182, 181, 32, 197, 179, 38, 29, + 44, 43, 34, 35, 28, 36, 179, 37, 8, 8, + 45, 46, 39, 40, 27, 33, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 10, 9, 179, 120, + 118, 179, 42, 30, 41, 31, 196, 194, 199, 174, + 44, 43, 28, 199, 174, 199, 174, 198, 182, 32, + 198, 177, 38, 29, 44, 43, 34, 35, 28, 36, + + 177, 37, 8, 8, 45, 46, 39, 40, 27, 33, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 10, 9, 177, 177, + 42, 30, 41, 31, 174, 36, 174, 37, 8, 8, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 120, 118, 174, 31, 4, 3, 2, 4, 5, + 135, 32, 134, 173, 34, 35, 28, 36, 173, 37, + 8, 8, 45, 46, 40, 33, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 10, 9, + + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 31, 196, 195, 197, 189, 188, 183, 190, 191, + 187, 187, 187, 187, 192, 193, 182, 179, 15, 0, + 180, 8, 26, 24, 22, 20, 21, 1, 23, 8, + 8, 179, 18, 17, 14, 16, 19, 179, 179, 179, + 179, 179, 125, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 25, 13, 196, 174, 0, 1, 175, 174, + 15, 177, 6, 22, 20, 21, 0, 23, 8, 0, + 7, 7, 8, 7, 14, 177, 7, 7, 7, 177, + 177, 125, 7, 177, 177, 7, 177, 177, 177, 7, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 7, 177, + 8, 23, 8, 0, 174, 174, 174, 174, 174, 125, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 4, 4, 134, 134, 173, 6, 136, 22, 137, 173, + 7, 7, 7, 173, 173, 173, 7, 173, 7, 7, + 173, 173, 173, 173, 173, 173, 173, 173, 7, 173, + 173, 173, 7, 173, 7, 7, 173, 173, 173, 173, + 173, 173, 173, 173, 195, 188, 187, 0, 187, 187, + 187, 11, 12, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 93, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 72, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 121, 119, 179, 176, + 175, 174, 8, 178, 8, 177, 7, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 62, 63, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 8, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 93, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 72, 62, + 174, 63, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 121, 119, + 174, 4, 8, 173, 173, 173, 173, 173, 138, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 155, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 187, 187, 187, 179, 59, + 179, 179, 179, 179, 179, 53, 179, 100, 179, 112, + + 179, 179, 179, 179, 179, 179, 179, 89, 179, 179, + 179, 179, 179, 113, 179, 179, 179, 131, 179, 179, + 179, 98, 179, 68, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 96, 179, 179, 179, 179, 179, 179, + 107, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 174, 177, 59, 177, 177, 177, 53, 177, 177, 112, + 177, 177, 177, 177, 177, 177, 177, 113, 177, 131, + 177, 177, 177, 68, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 174, 59, 174, 174, + 174, 174, 53, 174, 100, 174, 112, 174, 174, 174, + + 174, 174, 174, 174, 89, 174, 174, 174, 174, 174, + 113, 174, 174, 174, 131, 174, 174, 174, 174, 98, + 174, 68, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 96, 174, 174, 174, 174, 174, 174, 107, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 173, 173, + 173, 142, 150, 141, 173, 173, 152, 145, 148, 173, + 173, 153, 173, 173, 173, 173, 173, 159, 167, 158, + 173, 173, 170, 162, 165, 173, 173, 171, 173, 173, + 187, 187, 187, 179, 87, 55, 179, 179, 179, 52, + 179, 179, 179, 179, 111, 66, 179, 179, 95, 179, + + 78, 179, 179, 179, 77, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 124, 179, 179, + 179, 179, 179, 99, 179, 179, 179, 97, 179, 179, + 179, 179, 179, 179, 179, 174, 177, 55, 177, 177, + 52, 177, 177, 177, 111, 177, 78, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 174, 87, 55, 174, 174, + 52, 174, 174, 174, 174, 111, 66, 174, 174, 95, + 174, 78, 174, 174, 174, 77, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 124, + + 174, 174, 174, 174, 174, 99, 174, 174, 174, 97, + 174, 174, 174, 174, 174, 174, 174, 173, 143, 140, + 173, 173, 152, 152, 147, 173, 151, 173, 173, 160, + 157, 173, 173, 170, 170, 164, 173, 169, 173, 187, + 187, 185, 179, 179, 179, 65, 179, 88, 179, 179, + 179, 179, 179, 179, 67, 179, 128, 179, 179, 179, + 86, 179, 54, 179, 47, 179, 179, 110, 179, 50, + 76, 179, 179, 179, 179, 179, 179, 73, 179, 179, + 179, 179, 179, 94, 74, 179, 179, 179, 174, 177, + 177, 177, 65, 177, 177, 177, 177, 177, 128, 177, + + 177, 54, 177, 177, 177, 110, 177, 50, 177, 177, + 177, 73, 177, 177, 177, 177, 174, 174, 174, 65, + 88, 174, 174, 174, 174, 174, 174, 67, 174, 128, + 174, 174, 174, 86, 174, 54, 174, 174, 47, 174, + 174, 110, 174, 50, 76, 174, 174, 174, 174, 174, + 174, 73, 174, 174, 174, 174, 174, 94, 74, 174, + 174, 174, 173, 173, 67, 149, 146, 173, 173, 173, + 168, 166, 163, 173, 186, 184, 179, 61, 179, 179, + 179, 179, 179, 179, 80, 179, 179, 123, 179, 179, + 179, 179, 179, 101, 179, 179, 104, 129, 179, 179, + + 179, 179, 179, 179, 179, 117, 90, 179, 51, 179, + 179, 174, 177, 61, 177, 177, 177, 177, 80, 177, + 123, 177, 177, 177, 177, 177, 114, 129, 177, 177, + 117, 177, 177, 177, 174, 61, 174, 174, 174, 174, + 174, 80, 174, 174, 123, 174, 174, 174, 174, 174, + 174, 101, 174, 174, 104, 129, 174, 174, 174, 174, + 174, 174, 174, 117, 90, 174, 51, 174, 174, 173, + 173, 173, 173, 173, 173, 154, 179, 179, 133, 179, + 179, 179, 179, 179, 179, 179, 179, 60, 179, 179, + 179, 179, 179, 179, 179, 85, 179, 179, 179, 179, + + 127, 172, 179, 174, 154, 177, 177, 133, 177, 177, + 177, 60, 64, 177, 177, 177, 177, 177, 127, 172, + 177, 154, 174, 133, 174, 174, 174, 174, 174, 174, + 174, 174, 60, 64, 174, 174, 174, 174, 174, 174, + 174, 85, 174, 174, 174, 174, 127, 172, 174, 154, + 139, 144, 172, 156, 161, 179, 79, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 109, 179, 79, + 177, 79, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 109, 174, 179, 179, 179, 179, 179, 179, + 179, 179, 49, 179, 115, 116, 179, 179, 179, 179, + 75, 179, 179, 179, 179, 179, 179, 177, 177, 177, + 177, 177, 115, 116, 177, 177, 177, 177, 174, 174, + 174, 174, 174, 174, 174, 174, 49, 174, 115, 116, + 174, 174, 174, 174, 75, 174, 174, 174, 174, 174, + 174, 179, 179, 179, 179, 179, 179, 179, 179, 102, + 92, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 177, 177, 177, 177, 102, 177, 177, 177, 177, 174, + + 174, 174, 174, 174, 174, 174, 174, 102, 92, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 179, 82, + 179, 179, 132, 179, 179, 179, 179, 179, 179, 48, + 179, 179, 179, 179, 105, 179, 177, 177, 132, 177, + 177, 177, 177, 177, 177, 174, 82, 174, 174, 132, + 174, 174, 174, 174, 174, 174, 48, 174, 174, 174, + 174, 105, 174, 179, 179, 179, 179, 179, 179, 179, + 91, 179, 71, 179, 179, 179, 179, 177, 177, 177, + 177, 177, 71, 177, 177, 174, 174, 174, 174, 174, + 174, 174, 91, 174, 71, 174, 174, 174, 174, 179, + + 179, 179, 179, 179, 179, 179, 179, 103, 130, 70, + 179, 179, 69, 177, 177, 177, 177, 177, 103, 130, + 70, 69, 174, 174, 174, 174, 174, 174, 174, 174, + 103, 130, 70, 174, 174, 69, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 177, 177, 177, 177, + 177, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 126, 179, 179, 58, 179, 179, 179, 179, 179, + 179, 126, 177, 58, 177, 177, 126, 174, 174, 58, + 174, 174, 174, 174, 174, 174, 179, 179, 179, 179, + 179, 179, 106, 179, 177, 177, 177, 174, 174, 174, + + 174, 174, 174, 106, 174, 179, 56, 179, 179, 179, + 179, 179, 56, 177, 177, 174, 56, 174, 174, 174, + 174, 174, 179, 179, 179, 179, 122, 179, 177, 122, + 174, 174, 174, 174, 122, 174, 179, 179, 179, 179, + 179, 177, 174, 174, 174, 174, 174, 81, 179, 179, + 179, 108, 177, 81, 174, 174, 174, 108, 57, 179, + 179, 57, 57, 174, 174, 83, 179, 83, 174, 179, + 174, 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[1807] = + { 0, + 0, 0, 0, 0, 82, 163, 244, 0, 326, 0, + 408, 489, 570, 0, 112, 114, 652, 734, 816, 898, + 2856, 2857, 2857, 2853, 2857, 2830, 2848, 963, 2857, 89, + 2857, 2857, 2828, 2827, 0, 2826, 0, 98, 743, 417, + 0, 2857, 88, 2825, 99, 0, 98, 119, 98, 114, + 106, 114, 2804, 113, 2807, 2815, 164, 94, 161, 156, + 163, 2798, 2813, 179, 2816, 2811, 0, 0, 2782, 2778, + 2766, 2772, 2857, 129, 2857, 0, 2835, 2857, 2831, 0, + 2857, 2857, 2857, 2767, 2822, 0, 2788, 2857, 2830, 2807, + 2825, 1009, 2857, 110, 2857, 2857, 2805, 2804, 2857, 65, + + 0, 187, 1055, 129, 2857, 2857, 200, 2803, 203, 2857, + 1115, 412, 421, 489, 493, 502, 2782, 2790, 2784, 2792, + 167, 105, 198, 192, 2778, 413, 2857, 2857, 651, 2755, + 2857, 400, 2857, 0, 1175, 401, 0, 429, 825, 906, + 521, 649, 171, 491, 191, 430, 2776, 199, 2779, 2787, + 442, 443, 444, 510, 512, 2770, 2785, 678, 2788, 2783, + 2754, 2750, 2738, 2744, 0, 1221, 2857, 2857, 0, 2857, + 2857, 2785, 2805, 1267, 2783, 2782, 2857, 2781, 0, 2780, + 0, 402, 2857, 0, 2779, 2857, 1313, 655, 664, 524, + 676, 689, 404, 2775, 2757, 2753, 495, 2755, 2857, 2857, + + 736, 657, 738, 804, 737, 167, 2740, 2724, 2720, 85, + 2722, 0, 2792, 0, 2781, 2857, 0, 2857, 2857, 2857, + 2771, 456, 460, 484, 2857, 2857, 2789, 0, 0, 2785, + 2857, 730, 2857, 2857, 0, 0, 0, 0, 0, 917, + 0, 0, 2765, 2857, 0, 2857, 2764, 2742, 2756, 2739, + 2749, 480, 0, 2751, 2742, 2740, 2734, 521, 2748, 2732, + 2745, 2745, 2729, 657, 2736, 2732, 2728, 2730, 2740, 2731, + 739, 2737, 2710, 2726, 661, 2723, 2725, 2713, 754, 2724, + 2726, 2714, 2728, 2728, 2716, 2729, 2722, 773, 2713, 2701, + 2708, 2720, 2703, 2722, 2720, 2702, 2702, 2701, 2670, 2673, + + 2678, 2663, 2857, 2857, 2738, 0, 0, 2857, 0, 2682, + 2857, 0, 1373, 2857, 2857, 2857, 0, 2857, 673, 920, + 0, 2857, 2857, 0, 2857, 820, 823, 903, 0, 2703, + 654, 0, 923, 2697, 2695, 730, 968, 971, 2704, 2705, + 2692, 2702, 769, 2700, 2690, 449, 2679, 2688, 2677, 630, + 2688, 2690, 2693, 2682, 2689, 2669, 2689, 2691, 974, 2640, + 740, 0, 1012, 0, 2672, 2686, 2669, 2679, 802, 0, + 2681, 2672, 2670, 2664, 812, 2678, 2662, 2675, 2675, 2659, + 817, 2666, 2662, 2658, 2660, 2670, 2661, 1013, 2667, 2640, + 2656, 843, 396, 2656, 2654, 2643, 850, 2654, 2656, 2644, + + 2658, 2658, 2646, 2659, 2652, 844, 2643, 2631, 2638, 2650, + 2633, 2652, 2650, 2632, 2632, 2631, 2600, 2603, 2608, 2593, + 0, 1425, 2667, 2857, 0, 1477, 0, 0, 0, 1529, + 2624, 0, 0, 2633, 2622, 2621, 2630, 2634, 2617, 2618, + 2616, 2633, 2620, 2628, 2629, 2627, 2628, 2607, 2579, 2586, + 2577, 2576, 2583, 2587, 2572, 2573, 2571, 2586, 2574, 2581, + 2582, 2580, 2581, 2562, 0, 0, 2616, 2615, 485, 707, + 807, 2857, 2857, 2594, 2590, 2602, 2599, 2600, 2590, 2588, + 2598, 2598, 2595, 2580, 2573, 2596, 2595, 2586, 2591, 2575, + 2580, 2586, 2578, 2588, 2585, 2566, 2582, 0, 2573, 2569, + + 2574, 2561, 2576, 2564, 2573, 2571, 2573, 2569, 0, 2560, + 2554, 2555, 2560, 2556, 2545, 2562, 2552, 2549, 2548, 2543, + 2560, 2554, 2544, 2541, 2547, 2541, 2553, 2537, 2553, 2554, + 2536, 2552, 2540, 2544, 2531, 2504, 0, 0, 2512, 0, + 0, 2533, 0, 0, 818, 2531, 1016, 2538, 2539, 2529, + 2538, 2538, 2521, 2514, 2537, 1063, 2534, 2524, 2514, 2530, + 2521, 2517, 2510, 2514, 2522, 2524, 2533, 0, 0, 2506, + 2507, 2509, 2498, 2515, 2503, 2498, 2506, 2513, 2514, 2515, + 2470, 2478, 0, 2498, 2494, 2506, 2503, 2504, 2493, 2503, + 2503, 2500, 2485, 2478, 2501, 2500, 2491, 2496, 2480, 2485, + + 2491, 2483, 2493, 2490, 2471, 2487, 0, 2478, 2474, 2479, + 2466, 2481, 2469, 2478, 2476, 2478, 2487, 2473, 0, 0, + 2464, 0, 2458, 2459, 2464, 2460, 2449, 2466, 2456, 2453, + 2452, 2447, 2464, 2458, 2448, 2445, 2451, 2445, 2457, 2441, + 2457, 2458, 2440, 2456, 2444, 2448, 2435, 2408, 0, 0, + 2416, 0, 0, 2436, 758, 2445, 2444, 2432, 0, 2442, + 2433, 2425, 2440, 2438, 2437, 2429, 2420, 2421, 2424, 2392, + 870, 2400, 2399, 2388, 0, 2397, 2389, 2382, 2395, 2393, + 2392, 2385, 2377, 2378, 2380, 503, 851, 773, 2411, 0, + 2404, 2407, 2402, 2414, 2400, 0, 2406, 0, 2396, 0, + + 2395, 2383, 2399, 2392, 2386, 2389, 2391, 0, 2388, 2402, + 2390, 2400, 2383, 0, 2401, 2382, 2383, 0, 2395, 2379, + 2397, 0, 2379, 0, 2381, 2380, 2393, 2362, 2383, 2370, + 2378, 2370, 2379, 0, 2372, 2383, 2376, 2379, 2363, 2367, + 2350, 2371, 2375, 2358, 2365, 2367, 2370, 2365, 2331, 2327, + 2366, 2358, 0, 2355, 2350, 2362, 0, 2355, 2345, 0, + 2333, 2349, 2342, 2340, 2344, 2345, 2318, 0, 2308, 0, + 2297, 2312, 2307, 0, 2294, 2303, 2262, 2273, 2259, 2253, + 2236, 2223, 2228, 2220, 2179, 2165, 2187, 0, 2174, 2160, + 2155, 2154, 0, 2154, 0, 2141, 0, 2138, 2126, 2142, + + 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, 1759, + 0, 1790, 1788, 1774, 1776, 1790, 1789, 1777, 1794, 1764, + 1792, 1782, 1798, 1789, 1774, 1802, 1789, 1803, 1773, 1801, + + 1792, 1809, 1793, 1809, 1801, 1803, 1802, 1787, 0, 1818, + 1816, 1807, 1812, 1831, 1831, 1819, 1835, 1805, 1828, 0, + 1823, 1813, 0, 1819, 1836, 1838, 1833, 1834, 1850, 0, + 1836, 1839, 1844, 1828, 0, 1813, 1847, 1831, 0, 1849, + 1844, 1860, 1846, 1849, 1821, 1855, 0, 1850, 1840, 0, + 1841, 1858, 1860, 1855, 1856, 1872, 0, 1858, 1862, 1867, + 1851, 0, 1836, 1868, 1854, 1887, 1885, 1873, 1858, 1875, + 0, 1877, 0, 1874, 1881, 1879, 1848, 1881, 1905, 1867, + 1884, 1886, 0, 1882, 1859, 1892, 1878, 1910, 1911, 1899, + 1883, 1901, 0, 1903, 0, 1899, 1906, 1904, 1873, 1901, + + 1905, 1913, 1912, 1922, 1917, 1899, 1925, 0, 0, 0, + 1927, 1915, 0, 1913, 1923, 1922, 1932, 1932, 0, 0, + 0, 0, 1918, 1921, 1929, 1928, 1938, 1932, 1914, 1940, + 0, 0, 0, 1942, 1930, 0, 1929, 1925, 1942, 1948, + 1941, 1942, 1954, 1944, 1943, 1949, 1939, 1951, 1957, 1950, + 1951, 1944, 1940, 1957, 1963, 1956, 1957, 1969, 1959, 1958, + 1964, 0, 1961, 1968, 0, 1958, 1962, 1966, 1978, 1960, + 1966, 0, 1975, 0, 1965, 1983, 0, 1972, 1979, 0, + 1969, 1973, 1977, 1989, 1971, 1977, 1991, 1980, 1980, 1993, + 1985, 1991, 0, 1981, 1986, 1986, 1995, 2001, 1990, 1990, + + 2003, 1995, 2001, 0, 1991, 1995, 0, 1980, 2011, 1998, + 1995, 2006, 0, 1985, 1998, 2003, 0, 1988, 2019, 2006, + 2003, 2014, 2012, 2020, 2006, 2024, 0, 2008, 2024, 0, + 2018, 2026, 2012, 2030, 0, 2014, 2016, 2022, 2028, 2037, + 2014, 2026, 2022, 2028, 2034, 2043, 2020, 0, 2042, 2032, + 2028, 0, 2045, 0, 2046, 2036, 2032, 0, 0, 2039, + 2045, 0, 0, 2041, 2047, 0, 2042, 0, 2043, 2045, + 2046, 0, 0, 2857, 2086, 2097, 2108, 2119, 2130, 2141, + 2150, 2161, 2169, 2177, 2185, 2193, 2204, 2212, 2223, 2234, + 2245, 2249, 2258, 2266, 2274, 2282, 2284, 2295, 2306, 2317, + + 2321, 2330, 2341, 2352, 2363, 2374 + } ; + +static yyconst flex_int16_t yy_def[1807] = + { 0, + 1775, 1775, 1774, 3, 1776, 1776, 1774, 7, 1774, 9, + 1777, 1777, 1774, 13, 1778, 1778, 1779, 1779, 1780, 1780, + 1774, 1774, 1774, 1774, 1774, 1781, 1782, 1781, 1774, 1774, + 1774, 1774, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1774, 1774, 1781, 1774, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1774, 1774, 1774, 1781, 1774, 1774, 1782, 1783, + 1774, 1774, 1774, 1774, 1783, 1784, 1783, 1774, 1774, 1774, + 1782, 1785, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1785, 1785, 1774, 103, 1774, 1774, 1774, 1774, 1774, 1774, + 1785, 111, 111, 111, 111, 111, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1774, 1774, 111, 1785, + 1774, 1774, 1774, 1785, 1783, 1774, 1783, 1783, 1774, 1774, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1786, 1774, 1774, 1786, 1774, + 1774, 1774, 1787, 1788, 1789, 1774, 1774, 1774, 1788, 1788, + 103, 103, 1774, 1790, 1774, 1774, 1788, 187, 187, 187, + 187, 187, 1788, 1788, 1788, 1788, 1788, 1788, 1774, 1774, + + 187, 187, 187, 187, 187, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1774, 1791, 1774, 1774, 1792, 1774, 1774, 1774, + 1793, 1793, 1793, 1793, 1774, 1774, 1774, 1781, 1781, 1782, + 1774, 28, 1774, 1774, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 28, 1774, 1774, 1781, 1774, 1774, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1774, 1774, 1774, 1783, 1794, 1774, 1795, 1783, + 1774, 1785, 1785, 1774, 1774, 1774, 1796, 1774, 103, 103, + 320, 1774, 1774, 1797, 1774, 111, 111, 111, 1785, 1785, + 1785, 1785, 111, 1785, 1785, 1785, 111, 111, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 111, 1785, + 135, 1783, 1774, 1797, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1786, 1786, 1787, 1774, 1788, 1788, 1798, 1798, 1799, 1788, + 430, 430, 1788, 1788, 430, 430, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 430, 1788, + 430, 430, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1800, 1801, 1802, 1774, 1802, 1802, + 1802, 1774, 1774, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1794, + 1795, 1783, 1785, 1796, 1797, 1785, 111, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 111, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1786, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1802, 1802, 1802, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1783, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1803, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1804, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1802, 1802, 1802, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1783, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1788, 1788, 1788, + 1788, 1788, 1805, 1803, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1806, 1804, 1788, 1788, 1788, 1788, 1802, + 1802, 1802, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1802, 1802, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1783, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1788, + 1788, 1788, 1788, 1788, 1788, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + + 1781, 1781, 1781, 1783, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1788, + 1788, 1788, 1788, 1788, 1788, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1783, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1781, + + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1785, 1785, 1785, 1785, + 1785, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1785, 1785, 1785, 1785, 1785, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1785, 1785, 1785, 1783, 1783, 1783, + + 1783, 1783, 1783, 1783, 1783, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1785, 1785, 1785, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1781, 1781, 1781, 1781, 1781, 1781, 1785, 1785, + 1783, 1783, 1783, 1783, 1783, 1783, 1781, 1781, 1781, 1781, + 1781, 1785, 1783, 1783, 1783, 1783, 1783, 1781, 1781, 1781, + 1781, 1781, 1785, 1783, 1783, 1783, 1783, 1783, 1781, 1781, + 1781, 1785, 1783, 1783, 1783, 1781, 1781, 1783, 1783, 1781, + 1783, 1781, 1783, 0, 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 + } ; + +static yyconst flex_int16_t yy_nxt[2940] = + { 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, 78, 22, 79, 22, 316, 22, + 22, 81, 82, 22, 22, 83, 84, 233, 85, 22, + + 22, 22, 22, 22, 22, 86, 22, 22, 87, 238, + 243, 244, 234, 213, 78, 213, 78, 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, 78, 22, 79, 22, 257, + 22, 22, 81, 82, 22, 22, 83, 84, 322, 85, + 22, 22, 22, 22, 22, 22, 86, 22, 22, 87, + 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, 88, 89, 25, 90, 91, 88, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 101, + 120, 121, 122, 123, 124, 125, 101, 101, 126, 101, + 101, 101, 101, 101, 101, 101, 127, 101, 128, 88, + + 101, 129, 116, 116, 116, 116, 116, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 130, 101, 101, + 101, 101, 131, 132, 133, 134, 88, 89, 25, 90, + 91, 88, 135, 93, 94, 95, 96, 97, 98, 99, + 136, 137, 138, 139, 140, 140, 105, 106, 107, 108, + 109, 110, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 137, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 137, 160, 137, 137, 137, 137, 127, 137, + 128, 88, 137, 161, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 162, 137, 137, 163, 137, 137, 164, + + 137, 137, 137, 137, 131, 132, 133, 165, 88, 88, + 22, 88, 88, 88, 166, 88, 88, 88, 88, 88, + 167, 88, 168, 303, 316, 139, 140, 140, 88, 88, + 88, 170, 88, 88, 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, + 88, 336, 88, 88, 382, 312, 312, 383, 307, 393, + 384, 390, 391, 394, 396, 566, 468, 395, 322, 304, + 468, 567, 392, 241, 397, 241, 88, 88, 88, 88, + 88, 22, 88, 88, 88, 166, 88, 88, 88, 88, + + 88, 167, 88, 168, 468, 468, 139, 140, 140, 88, + 88, 88, 170, 88, 88, 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, 88, 340, 88, 88, 402, 312, 312, 365, 398, + 366, 432, 367, 399, 471, 403, 400, 401, 368, 686, + 484, 425, 485, 983, 881, 369, 370, 88, 88, 88, + 23, 24, 171, 172, 23, 173, 174, 29, 30, 31, + 32, 175, 176, 177, 178, 179, 180, 181, 182, 182, + 183, 184, 43, 185, 45, 186, 187, 188, 189, 190, + + 191, 192, 179, 179, 179, 179, 179, 193, 179, 194, + 195, 196, 179, 179, 197, 198, 179, 179, 179, 179, + 179, 179, 199, 179, 200, 23, 179, 201, 202, 203, + 190, 204, 205, 179, 179, 179, 179, 206, 179, 207, + 208, 209, 179, 210, 211, 179, 179, 179, 73, 74, + 75, 212, 23, 213, 78, 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, 213, 78, 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, 213, 78, 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, 213, + + 78, 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, 1774, 1013, 1774, 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, 1774, 1025, 1774, 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, 1597, 1598, 1599, 1600, + 1601, 1605, 1606, 1602, 1607, 1608, 1609, 1603, 1610, 1611, + 1612, 1613, 1614, 1618, 1619, 1620, 1621, 1034, 1034, 1034, + 1604, 1615, 1622, 1623, 1624, 1616, 1625, 1628, 1629, 1630, + 1626, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1617, 1638, + 1639, 1640, 1641, 1627, 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, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 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, 1774, 21, 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, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774 + } ; + +static yyconst flex_int16_t yy_chk[2940] = + { 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, 100, 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, 94, 16, + 58, 38, 45, 45, 58, 47, 801, 47, 15, 47, + 16, 122, 100, 94, 5, 47, 5, 5, 49, 122, + 50, 49, 47, 47, 50, 51, 210, 54, 52, 48, + 54, 52, 74, 48, 52, 51, 48, 802, 50, 210, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 48, + 6, 6, 6, 6, 6, 6, 6, 6, 104, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 15, 59, 16, 57, 57, 60, 61, 121, 102, 60, + + 803, 59, 60, 60, 57, 104, 61, 121, 74, 64, + 102, 143, 64, 64, 143, 6, 804, 6, 6, 64, + 64, 64, 107, 107, 64, 64, 109, 109, 123, 64, + 145, 124, 206, 148, 806, 124, 148, 206, 123, 124, + 145, 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, 132, 136, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 40, 40, 40, 393, 193, 112, + 138, 112, 807, 126, 193, 393, 112, 126, 113, 112, + 113, 182, 138, 40, 126, 40, 112, 112, 113, 126, + 11, 113, 11, 11, 146, 113, 113, 146, 136, 152, + 146, 151, 151, 152, 153, 346, 222, 152, 182, 132, + 223, 346, 151, 40, 153, 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, 114, 114, 144, 114, 114, + 115, 144, 115, 686, 252, 197, 114, 223, 808, 116, + 115, 116, 222, 114, 114, 144, 252, 115, 115, 116, + 197, 12, 115, 12, 12, 155, 116, 116, 141, 154, + 141, 190, 141, 154, 224, 155, 154, 154, 141, 469, + 258, 190, 258, 809, 686, 141, 141, 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, 129, 142, + 129, 188, 188, 142, 202, 264, 142, 275, 129, 810, + 189, 189, 188, 812, 202, 129, 129, 189, 331, 142, + + 275, 189, 264, 191, 17, 17, 17, 17, 158, 129, + 331, 158, 158, 191, 202, 191, 192, 813, 158, 158, + 158, 814, 319, 158, 158, 191, 192, 470, 158, 192, + 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, 201, 205, 203, 232, 271, 232, 336, + 271, 336, 271, 201, 205, 203, 361, 470, 361, 39, + 271, 39, 279, 271, 655, 279, 18, 18, 18, 18, + 655, 279, 39, 688, 201, 203, 232, 343, 232, 288, + + 343, 288, 203, 201, 817, 288, 361, 205, 361, 39, + 343, 39, 18, 18, 18, 18, 19, 19, 19, 39, + 19, 19, 818, 19, 19, 19, 19, 471, 19, 19, + 688, 204, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 204, 139, 139, 139, 381, 369, 326, 819, 326, + 327, 375, 327, 375, 545, 821, 545, 326, 369, 823, + 327, 139, 381, 139, 326, 326, 471, 327, 327, 392, + 406, 687, 406, 204, 139, 392, 406, 19, 397, 19, + 204, 397, 392, 19, 545, 824, 545, 397, 825, 826, + 827, 139, 828, 139, 19, 19, 19, 19, 20, 20, + + 20, 139, 20, 20, 829, 20, 20, 20, 20, 687, + 20, 20, 830, 831, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 140, 140, 140, 833, 671, 834, 835, + 328, 836, 328, 671, 240, 240, 240, 320, 320, 320, + 328, 837, 140, 838, 140, 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, 140, 851, 140, 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, 92, 92, 92, 363, + 363, 363, 876, 877, 879, 92, 92, 92, 92, 92, + 92, 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, 92, 92, 92, 92, + 92, 92, 103, 103, 103, 894, 897, 891, 363, 886, + 363, 103, 103, 103, 103, 103, 103, 898, 103, 882, + 556, 103, 556, 103, 891, 103, 900, 556, 883, 902, + + 556, 881, 903, 904, 103, 905, 906, 556, 556, 907, + 908, 909, 103, 103, 103, 103, 103, 103, 910, 103, + 911, 103, 912, 103, 913, 103, 914, 915, 916, 917, + 919, 103, 111, 111, 111, 920, 921, 922, 923, 925, + 927, 111, 111, 111, 111, 111, 111, 929, 111, 926, + 930, 931, 111, 932, 933, 111, 934, 935, 936, 111, + 111, 926, 937, 939, 111, 938, 940, 942, 943, 944, + 946, 948, 111, 111, 111, 111, 111, 111, 949, 111, + 950, 938, 951, 952, 953, 111, 954, 955, 956, 957, + 958, 111, 135, 135, 135, 959, 960, 961, 962, 963, + + 964, 135, 135, 135, 135, 135, 135, 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, 135, 135, 135, 135, 135, 135, 166, 166, + 166, 994, 995, 996, 997, 998, 999, 166, 166, 166, + 166, 166, 166, 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, 166, 166, + 166, 166, 166, 166, 174, 174, 174, 1033, 1037, 1039, + 1041, 1042, 1043, 174, 174, 174, 174, 174, 174, 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, 174, 174, 174, 174, 174, 174, + 187, 187, 187, 1077, 1078, 1079, 1080, 1041, 1081, 187, + 187, 187, 187, 187, 187, 1082, 187, 1083, 1040, 1086, + 187, 1087, 1088, 187, 1089, 1090, 1091, 1092, 1094, 1095, + 1096, 1097, 187, 1098, 1100, 1101, 1103, 1104, 1105, 1107, + 187, 187, 187, 187, 187, 187, 1109, 187, 1110, 1111, + 1112, 1113, 1114, 187, 1115, 1116, 1117, 1118, 1119, 187, + 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, 1480, 1482, 1483, 1484, 1485, + 1486, 1487, 1488, 1024, 1489, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, + 1505, 1506, 1507, 1508, 1510, 1511, 1024, 1024, 1024, 1035, + 1035, 1512, 1035, 1035, 1035, 1513, 1035, 1035, 1035, 1035, + 1035, 1514, 1035, 1515, 1516, 1517, 1518, 1519, 1521, 1522, + 1035, 1035, 1035, 1035, 1035, 1524, 1525, 1526, 1527, 1528, + 1529, 1531, 1532, 1533, 1534, 1536, 1537, 1538, 1540, 1541, + 1542, 1543, 1544, 1545, 1546, 1548, 1549, 1551, 1552, 1553, + + 1554, 1555, 1556, 1558, 1035, 1559, 1560, 1561, 1563, 1564, + 1565, 1567, 1568, 1566, 1569, 1570, 1572, 1566, 1574, 1575, + 1576, 1577, 1578, 1580, 1581, 1582, 1584, 1035, 1035, 1035, + 1566, 1579, 1585, 1586, 1587, 1579, 1588, 1589, 1590, 1591, + 1588, 1592, 1594, 1596, 1597, 1598, 1599, 1600, 1579, 1601, + 1602, 1603, 1604, 1588, 1605, 1606, 1607, 1611, 1612, 1614, + 1615, 1616, 1617, 1618, 1623, 1624, 1625, 1626, 1627, 1628, + 1629, 1630, 1634, 1635, 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, 1663, + + 1664, 1666, 1667, 1668, 1669, 1670, 1671, 1673, 1675, 1676, + 1678, 1679, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, + 1689, 1690, 1691, 1692, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1705, 1706, 1708, 1709, 1710, 1711, + 1712, 1714, 1715, 1716, 1718, 1719, 1720, 1721, 1722, 1723, + 1724, 1725, 1726, 1728, 1729, 1731, 1732, 1733, 1734, 1736, + 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1749, 1750, 1751, 1753, 1755, 1756, 1757, 1760, 1761, + 1764, 1765, 1767, 1769, 1770, 1771, 1775, 1775, 1775, 1775, + 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1776, 1776, 1776, + + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1784, 800, 799, 798, 1784, 1784, 796, 1784, 1785, 1785, + 794, 1785, 1785, 1785, 1785, 1785, 1786, 792, 791, 790, + + 1786, 1786, 1786, 1786, 1787, 1787, 1787, 1787, 1787, 1787, + 1787, 1787, 1787, 1787, 1787, 1788, 1788, 789, 1788, 1788, + 1788, 1788, 1788, 1789, 787, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1790, 786, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1791, 785, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1792, 784, 1792, 1792, + 1793, 1793, 783, 782, 1793, 1793, 781, 1793, 1793, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1796, 1796, 780, 1796, 1796, + 1796, 1796, 1796, 1797, 1797, 1798, 779, 1798, 1798, 1798, + + 1798, 1798, 1798, 1798, 1798, 1798, 1799, 778, 1799, 1799, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1800, 777, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1801, 776, + 1801, 1801, 1802, 1802, 775, 773, 1802, 1802, 772, 1802, + 1802, 1803, 771, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1804, 769, 1804, 1804, 1804, 1804, 1804, 1804, + 1804, 1804, 1804, 1805, 767, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1806, 766, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 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, 213, 211, 209, 208, 207, 198, 196, + + 195, 194, 185, 180, 178, 176, 175, 173, 172, 164, + 163, 162, 161, 160, 159, 157, 156, 150, 149, 147, + 130, 125, 120, 119, 118, 117, 108, 98, 97, 91, + 90, 89, 87, 85, 84, 79, 77, 72, 71, 70, + 69, 66, 65, 63, 62, 56, 55, 53, 44, 36, + 34, 33, 27, 26, 24, 21, 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, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774 + } ; + +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-2017 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. */ +unsigned int lineno; + +/* 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; } + + + + + + + + + + +#line 1790 "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 116 "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 1998 "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 >= 1775 ) + 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] != 2857 ); + +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 134 "ldlex.l" +{ comment (); } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 137 "ldlex.l" +{ RTOKEN('-');} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 138 "ldlex.l" +{ RTOKEN('+');} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 139 "ldlex.l" +{ yylval.name = xstrdup (yytext); return NAME; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 140 "ldlex.l" +{ RTOKEN('='); } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 142 "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 148 "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 173 "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 202 "ldlex.l" +{ RTOKEN(']');} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 203 "ldlex.l" +{ RTOKEN('[');} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 204 "ldlex.l" +{ RTOKEN(LSHIFTEQ);} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 205 "ldlex.l" +{ RTOKEN(RSHIFTEQ);} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 206 "ldlex.l" +{ RTOKEN(OROR);} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 207 "ldlex.l" +{ RTOKEN(EQ);} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 208 "ldlex.l" +{ RTOKEN(NE);} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 209 "ldlex.l" +{ RTOKEN(GE);} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 210 "ldlex.l" +{ RTOKEN(LE);} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 211 "ldlex.l" +{ RTOKEN(LSHIFT);} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 212 "ldlex.l" +{ RTOKEN(RSHIFT);} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 213 "ldlex.l" +{ RTOKEN(PLUSEQ);} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 214 "ldlex.l" +{ RTOKEN(MINUSEQ);} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 215 "ldlex.l" +{ RTOKEN(MULTEQ);} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 216 "ldlex.l" +{ RTOKEN(DIVEQ);} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 217 "ldlex.l" +{ RTOKEN(ANDEQ);} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 218 "ldlex.l" +{ RTOKEN(OREQ);} + YY_BREAK +case 26: +YY_RULE_SETUP +#line 219 "ldlex.l" +{ RTOKEN(ANDAND);} + YY_BREAK +case 27: +YY_RULE_SETUP +#line 220 "ldlex.l" +{ RTOKEN('>');} + YY_BREAK +case 28: +YY_RULE_SETUP +#line 221 "ldlex.l" +{ RTOKEN(',');} + YY_BREAK +case 29: +YY_RULE_SETUP +#line 222 "ldlex.l" +{ RTOKEN('&');} + YY_BREAK +case 30: +YY_RULE_SETUP +#line 223 "ldlex.l" +{ RTOKEN('|');} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 224 "ldlex.l" +{ RTOKEN('~');} + YY_BREAK +case 32: +YY_RULE_SETUP +#line 225 "ldlex.l" +{ RTOKEN('!');} + YY_BREAK +case 33: +YY_RULE_SETUP +#line 226 "ldlex.l" +{ RTOKEN('?');} + YY_BREAK +case 34: +YY_RULE_SETUP +#line 227 "ldlex.l" +{ RTOKEN('*');} + YY_BREAK +case 35: +YY_RULE_SETUP +#line 228 "ldlex.l" +{ RTOKEN('+');} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 229 "ldlex.l" +{ RTOKEN('-');} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 230 "ldlex.l" +{ RTOKEN('/');} + YY_BREAK +case 38: +YY_RULE_SETUP +#line 231 "ldlex.l" +{ RTOKEN('%');} + YY_BREAK +case 39: +YY_RULE_SETUP +#line 232 "ldlex.l" +{ RTOKEN('<');} + YY_BREAK +case 40: +YY_RULE_SETUP +#line 233 "ldlex.l" +{ RTOKEN('=');} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 234 "ldlex.l" +{ RTOKEN('}') ; } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 235 "ldlex.l" +{ RTOKEN('{'); } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 236 "ldlex.l" +{ RTOKEN(')');} + YY_BREAK +case 44: +YY_RULE_SETUP +#line 237 "ldlex.l" +{ RTOKEN('(');} + YY_BREAK +case 45: +YY_RULE_SETUP +#line 238 "ldlex.l" +{ RTOKEN(':'); } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 239 "ldlex.l" +{ RTOKEN(';');} + YY_BREAK +case 47: +YY_RULE_SETUP +#line 240 "ldlex.l" +{ RTOKEN(MEMORY);} + YY_BREAK +case 48: +YY_RULE_SETUP +#line 241 "ldlex.l" +{ RTOKEN(REGION_ALIAS);} + YY_BREAK +case 49: +YY_RULE_SETUP +#line 242 "ldlex.l" +{ RTOKEN(LD_FEATURE);} + YY_BREAK +case 50: +YY_RULE_SETUP +#line 243 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 51: +YY_RULE_SETUP +#line 244 "ldlex.l" +{ RTOKEN(VERSIONK);} + YY_BREAK +case 52: +YY_RULE_SETUP +#line 245 "ldlex.l" +{ RTOKEN(BLOCK);} + YY_BREAK +case 53: +YY_RULE_SETUP +#line 246 "ldlex.l" +{ RTOKEN(BIND);} + YY_BREAK +case 54: +YY_RULE_SETUP +#line 247 "ldlex.l" +{ RTOKEN(LENGTH);} + YY_BREAK +case 55: +YY_RULE_SETUP +#line 248 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 56: +YY_RULE_SETUP +#line 249 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_ALIGN);} + YY_BREAK +case 57: +YY_RULE_SETUP +#line 250 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_RELRO_END);} + YY_BREAK +case 58: +YY_RULE_SETUP +#line 251 "ldlex.l" +{ RTOKEN(DATA_SEGMENT_END);} + YY_BREAK +case 59: +YY_RULE_SETUP +#line 252 "ldlex.l" +{ RTOKEN(ADDR);} + YY_BREAK +case 60: +YY_RULE_SETUP +#line 253 "ldlex.l" +{ RTOKEN(LOADADDR);} + YY_BREAK +case 61: +YY_RULE_SETUP +#line 254 "ldlex.l" +{ RTOKEN(ALIGNOF); } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 255 "ldlex.l" +{ RTOKEN(MAX_K); } + YY_BREAK +case 63: +YY_RULE_SETUP +#line 256 "ldlex.l" +{ RTOKEN(MIN_K); } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 257 "ldlex.l" +{ RTOKEN(LOG2CEIL); } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 258 "ldlex.l" +{ RTOKEN(ASSERT_K); } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 259 "ldlex.l" +{ RTOKEN(ENTRY);} + YY_BREAK +case 67: +YY_RULE_SETUP +#line 260 "ldlex.l" +{ RTOKEN(EXTERN);} + YY_BREAK +case 68: +YY_RULE_SETUP +#line 261 "ldlex.l" +{ RTOKEN(NEXT);} + YY_BREAK +case 69: +YY_RULE_SETUP +#line 262 "ldlex.l" +{ RTOKEN(SIZEOF_HEADERS);} + YY_BREAK +case 70: +YY_RULE_SETUP +#line 263 "ldlex.l" +{ RTOKEN(SIZEOF_HEADERS);} + YY_BREAK +case 71: +YY_RULE_SETUP +#line 264 "ldlex.l" +{ RTOKEN(SEGMENT_START);} + YY_BREAK +case 72: +YY_RULE_SETUP +#line 265 "ldlex.l" +{ RTOKEN(MAP);} + YY_BREAK +case 73: +YY_RULE_SETUP +#line 266 "ldlex.l" +{ RTOKEN(SIZEOF);} + YY_BREAK +case 74: +YY_RULE_SETUP +#line 267 "ldlex.l" +{ RTOKEN(TARGET_K);} + YY_BREAK +case 75: +YY_RULE_SETUP +#line 268 "ldlex.l" +{ RTOKEN(SEARCH_DIR);} + YY_BREAK +case 76: +YY_RULE_SETUP +#line 269 "ldlex.l" +{ RTOKEN(OUTPUT);} + YY_BREAK +case 77: +YY_RULE_SETUP +#line 270 "ldlex.l" +{ RTOKEN(INPUT);} + YY_BREAK +case 78: +YY_RULE_SETUP +#line 271 "ldlex.l" +{ RTOKEN(GROUP);} + YY_BREAK +case 79: +YY_RULE_SETUP +#line 272 "ldlex.l" +{ RTOKEN(AS_NEEDED);} + YY_BREAK +case 80: +YY_RULE_SETUP +#line 273 "ldlex.l" +{ RTOKEN(DEFINED);} + YY_BREAK +case 81: +YY_RULE_SETUP +#line 274 "ldlex.l" +{ RTOKEN(CREATE_OBJECT_SYMBOLS);} + YY_BREAK +case 82: +YY_RULE_SETUP +#line 275 "ldlex.l" +{ RTOKEN( CONSTRUCTORS);} + YY_BREAK +case 83: +YY_RULE_SETUP +#line 276 "ldlex.l" +{ RTOKEN(FORCE_COMMON_ALLOCATION);} + YY_BREAK +case 84: +YY_RULE_SETUP +#line 277 "ldlex.l" +{ RTOKEN(INHIBIT_COMMON_ALLOCATION);} + YY_BREAK +case 85: +YY_RULE_SETUP +#line 278 "ldlex.l" +{ RTOKEN(SECTIONS);} + YY_BREAK +case 86: +YY_RULE_SETUP +#line 279 "ldlex.l" +{ RTOKEN(INSERT_K);} + YY_BREAK +case 87: +YY_RULE_SETUP +#line 280 "ldlex.l" +{ RTOKEN(AFTER);} + YY_BREAK +case 88: +YY_RULE_SETUP +#line 281 "ldlex.l" +{ RTOKEN(BEFORE);} + YY_BREAK +case 89: +YY_RULE_SETUP +#line 282 "ldlex.l" +{ RTOKEN(FILL);} + YY_BREAK +case 90: +YY_RULE_SETUP +#line 283 "ldlex.l" +{ RTOKEN(STARTUP);} + YY_BREAK +case 91: +YY_RULE_SETUP +#line 284 "ldlex.l" +{ RTOKEN(OUTPUT_FORMAT);} + YY_BREAK +case 92: +YY_RULE_SETUP +#line 285 "ldlex.l" +{ RTOKEN( OUTPUT_ARCH);} + YY_BREAK +case 93: +YY_RULE_SETUP +#line 286 "ldlex.l" +{ RTOKEN(HLL);} + YY_BREAK +case 94: +YY_RULE_SETUP +#line 287 "ldlex.l" +{ RTOKEN(SYSLIB);} + YY_BREAK +case 95: +YY_RULE_SETUP +#line 288 "ldlex.l" +{ RTOKEN(FLOAT);} + YY_BREAK +case 96: +YY_RULE_SETUP +#line 289 "ldlex.l" +{ RTOKEN( QUAD);} + YY_BREAK +case 97: +YY_RULE_SETUP +#line 290 "ldlex.l" +{ RTOKEN( SQUAD);} + YY_BREAK +case 98: +YY_RULE_SETUP +#line 291 "ldlex.l" +{ RTOKEN( LONG);} + YY_BREAK +case 99: +YY_RULE_SETUP +#line 292 "ldlex.l" +{ RTOKEN( SHORT);} + YY_BREAK +case 100: +YY_RULE_SETUP +#line 293 "ldlex.l" +{ RTOKEN( BYTE);} + YY_BREAK +case 101: +YY_RULE_SETUP +#line 294 "ldlex.l" +{ RTOKEN(NOFLOAT);} + YY_BREAK +case 102: +YY_RULE_SETUP +#line 295 "ldlex.l" +{ RTOKEN(NOCROSSREFS);} + YY_BREAK +case 103: +YY_RULE_SETUP +#line 296 "ldlex.l" +{ RTOKEN(NOCROSSREFS_TO);} + YY_BREAK +case 104: +YY_RULE_SETUP +#line 297 "ldlex.l" +{ RTOKEN(OVERLAY); } + YY_BREAK +case 105: +YY_RULE_SETUP +#line 298 "ldlex.l" +{ RTOKEN(SORT_BY_NAME); } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 299 "ldlex.l" +{ RTOKEN(SORT_BY_ALIGNMENT); } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 300 "ldlex.l" +{ RTOKEN(SORT_BY_NAME); } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 301 "ldlex.l" +{ RTOKEN(SORT_BY_INIT_PRIORITY); } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 302 "ldlex.l" +{ RTOKEN(SORT_NONE); } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 303 "ldlex.l" +{ RTOKEN(NOLOAD);} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 304 "ldlex.l" +{ RTOKEN(DSECT);} + YY_BREAK +case 112: +YY_RULE_SETUP +#line 305 "ldlex.l" +{ RTOKEN(COPY);} + YY_BREAK +case 113: +YY_RULE_SETUP +#line 306 "ldlex.l" +{ RTOKEN(INFO);} + YY_BREAK +case 114: +YY_RULE_SETUP +#line 307 "ldlex.l" +{ RTOKEN(OVERLAY);} + YY_BREAK +case 115: +YY_RULE_SETUP +#line 308 "ldlex.l" +{ RTOKEN(ONLY_IF_RO); } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 309 "ldlex.l" +{ RTOKEN(ONLY_IF_RW); } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 310 "ldlex.l" +{ RTOKEN(SPECIAL); } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 311 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 119: +YY_RULE_SETUP +#line 312 "ldlex.l" +{ RTOKEN(ORIGIN);} + YY_BREAK +case 120: +YY_RULE_SETUP +#line 313 "ldlex.l" +{ RTOKEN( LENGTH);} + YY_BREAK +case 121: +YY_RULE_SETUP +#line 314 "ldlex.l" +{ RTOKEN( LENGTH);} + YY_BREAK +case 122: +YY_RULE_SETUP +#line 315 "ldlex.l" +{ RTOKEN(INPUT_SECTION_FLAGS); } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 316 "ldlex.l" +{ RTOKEN(INCLUDE);} + YY_BREAK +case 124: +YY_RULE_SETUP +#line 317 "ldlex.l" +{ RTOKEN (PHDRS); } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 318 "ldlex.l" +{ RTOKEN(AT);} + YY_BREAK +case 126: +YY_RULE_SETUP +#line 319 "ldlex.l" +{ RTOKEN(ALIGN_WITH_INPUT);} + YY_BREAK +case 127: +YY_RULE_SETUP +#line 320 "ldlex.l" +{ RTOKEN(SUBALIGN);} + YY_BREAK +case 128: +YY_RULE_SETUP +#line 321 "ldlex.l" +{ RTOKEN(HIDDEN); } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 322 "ldlex.l" +{ RTOKEN(PROVIDE); } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 323 "ldlex.l" +{ RTOKEN(PROVIDE_HIDDEN); } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 324 "ldlex.l" +{ RTOKEN(KEEP); } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 325 "ldlex.l" +{ RTOKEN(EXCLUDE_FILE); } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 326 "ldlex.l" +{ RTOKEN(CONSTANT);} + YY_BREAK +case 134: +/* rule 134 can match eol */ +YY_RULE_SETUP +#line 327 "ldlex.l" +{ ++ lineno; } + YY_BREAK +case 135: +/* rule 135 can match eol */ +YY_RULE_SETUP +#line 328 "ldlex.l" +{ ++ lineno; RTOKEN(NEWLINE); } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 329 "ldlex.l" +{ /* Mri comment line */ } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 330 "ldlex.l" +{ /* Mri comment line */ } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 331 "ldlex.l" +{ RTOKEN(ENDWORD); } + YY_BREAK +case 139: +YY_RULE_SETUP +#line 332 "ldlex.l" +{ RTOKEN(ALIGNMOD);} + YY_BREAK +case 140: +YY_RULE_SETUP +#line 333 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 141: +YY_RULE_SETUP +#line 334 "ldlex.l" +{ RTOKEN(CHIP); } + YY_BREAK +case 142: +YY_RULE_SETUP +#line 335 "ldlex.l" +{ RTOKEN(BASE); } + YY_BREAK +case 143: +YY_RULE_SETUP +#line 336 "ldlex.l" +{ RTOKEN(ALIAS); } + YY_BREAK +case 144: +YY_RULE_SETUP +#line 337 "ldlex.l" +{ RTOKEN(TRUNCATE); } + YY_BREAK +case 145: +YY_RULE_SETUP +#line 338 "ldlex.l" +{ RTOKEN(LOAD); } + YY_BREAK +case 146: +YY_RULE_SETUP +#line 339 "ldlex.l" +{ RTOKEN(PUBLIC); } + YY_BREAK +case 147: +YY_RULE_SETUP +#line 340 "ldlex.l" +{ RTOKEN(ORDER); } + YY_BREAK +case 148: +YY_RULE_SETUP +#line 341 "ldlex.l" +{ RTOKEN(NAMEWORD); } + YY_BREAK +case 149: +YY_RULE_SETUP +#line 342 "ldlex.l" +{ RTOKEN(FORMAT); } + YY_BREAK +case 150: +YY_RULE_SETUP +#line 343 "ldlex.l" +{ RTOKEN(CASE); } + YY_BREAK +case 151: +YY_RULE_SETUP +#line 344 "ldlex.l" +{ RTOKEN(START); } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 345 "ldlex.l" +{ RTOKEN(LIST); /* LIST and ignore to end of line */ } + YY_BREAK +case 153: +YY_RULE_SETUP +#line 346 "ldlex.l" +{ RTOKEN(SECT); } + YY_BREAK +case 154: +YY_RULE_SETUP +#line 347 "ldlex.l" +{ RTOKEN(ABSOLUTE); } + YY_BREAK +case 155: +YY_RULE_SETUP +#line 348 "ldlex.l" +{ RTOKEN(ENDWORD); } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 349 "ldlex.l" +{ RTOKEN(ALIGNMOD);} + YY_BREAK +case 157: +YY_RULE_SETUP +#line 350 "ldlex.l" +{ RTOKEN(ALIGN_K);} + YY_BREAK +case 158: +YY_RULE_SETUP +#line 351 "ldlex.l" +{ RTOKEN(CHIP); } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 352 "ldlex.l" +{ RTOKEN(BASE); } + YY_BREAK +case 160: +YY_RULE_SETUP +#line 353 "ldlex.l" +{ RTOKEN(ALIAS); } + YY_BREAK +case 161: +YY_RULE_SETUP +#line 354 "ldlex.l" +{ RTOKEN(TRUNCATE); } + YY_BREAK +case 162: +YY_RULE_SETUP +#line 355 "ldlex.l" +{ RTOKEN(LOAD); } + YY_BREAK +case 163: +YY_RULE_SETUP +#line 356 "ldlex.l" +{ RTOKEN(PUBLIC); } + YY_BREAK +case 164: +YY_RULE_SETUP +#line 357 "ldlex.l" +{ RTOKEN(ORDER); } + YY_BREAK +case 165: +YY_RULE_SETUP +#line 358 "ldlex.l" +{ RTOKEN(NAMEWORD); } + YY_BREAK +case 166: +YY_RULE_SETUP +#line 359 "ldlex.l" +{ RTOKEN(FORMAT); } + YY_BREAK +case 167: +YY_RULE_SETUP +#line 360 "ldlex.l" +{ RTOKEN(CASE); } + YY_BREAK +case 168: +YY_RULE_SETUP +#line 361 "ldlex.l" +{ RTOKEN(EXTERN); } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 362 "ldlex.l" +{ RTOKEN(START); } + YY_BREAK +case 170: +YY_RULE_SETUP +#line 363 "ldlex.l" +{ RTOKEN(LIST); /* LIST and ignore to end of line */ } + YY_BREAK +case 171: +YY_RULE_SETUP +#line 364 "ldlex.l" +{ RTOKEN(SECT); } + YY_BREAK +case 172: +YY_RULE_SETUP +#line 365 "ldlex.l" +{ RTOKEN(ABSOLUTE); } + YY_BREAK +case 173: +YY_RULE_SETUP +#line 367 "ldlex.l" +{ +/* Filename without commas, needed to parse mri stuff */ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 174: +YY_RULE_SETUP +#line 374 "ldlex.l" +{ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 378 "ldlex.l" +{ +/* Filename to be prefixed by --sysroot or when non-sysrooted, nothing. */ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 176: +YY_RULE_SETUP +#line 383 "ldlex.l" +{ + yylval.name = xstrdup (yytext + 2); + return LNAME; + } + YY_BREAK +case 177: +YY_RULE_SETUP +#line 387 "ldlex.l" +{ + yylval.name = xstrdup (yytext); + return NAME; + } + YY_BREAK +case 178: +YY_RULE_SETUP +#line 391 "ldlex.l" +{ + yylval.name = xstrdup (yytext + 2); + return LNAME; + } + YY_BREAK +case 179: +YY_RULE_SETUP +#line 395 "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 180: +/* rule 180 can match eol */ +YY_RULE_SETUP +#line 412 "ldlex.l" +{ + /* No matter the state, quotes + give what's inside. */ + bfd_size_type len; + yylval.name = xstrdup (yytext + 1); + /* PR ld/20906. A corrupt input file + can contain bogus strings. */ + len = strlen (yylval.name); + if (len > yyleng - 2) + len = yyleng - 2; + yylval.name[len] = 0; + return NAME; + } + YY_BREAK +case 181: +/* rule 181 can match eol */ +YY_RULE_SETUP +#line 425 "ldlex.l" +{ lineno++;} + YY_BREAK +case 182: +YY_RULE_SETUP +#line 426 "ldlex.l" +{ } + YY_BREAK +case 183: +YY_RULE_SETUP +#line 428 "ldlex.l" +{ return *yytext; } + YY_BREAK +case 184: +YY_RULE_SETUP +#line 430 "ldlex.l" +{ RTOKEN(GLOBAL); } + YY_BREAK +case 185: +YY_RULE_SETUP +#line 432 "ldlex.l" +{ RTOKEN(LOCAL); } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 434 "ldlex.l" +{ RTOKEN(EXTERN); } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 436 "ldlex.l" +{ yylval.name = xstrdup (yytext); + return VERS_IDENTIFIER; } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 439 "ldlex.l" +{ yylval.name = xstrdup (yytext); + return VERS_TAG; } + YY_BREAK +case 189: +YY_RULE_SETUP +#line 442 "ldlex.l" +{ BEGIN(VERS_SCRIPT); return *yytext; } + YY_BREAK +case 190: +YY_RULE_SETUP +#line 444 "ldlex.l" +{ BEGIN(VERS_NODE); + vers_node_nesting = 0; + return *yytext; + } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 448 "ldlex.l" +{ return *yytext; } + YY_BREAK +case 192: +YY_RULE_SETUP +#line 449 "ldlex.l" +{ vers_node_nesting++; return *yytext; } + YY_BREAK +case 193: +YY_RULE_SETUP +#line 450 "ldlex.l" +{ if (--vers_node_nesting < 0) + BEGIN(VERS_SCRIPT); + return *yytext; + } + YY_BREAK +case 194: +/* rule 194 can match eol */ +YY_RULE_SETUP +#line 455 "ldlex.l" +{ lineno++; } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 457 "ldlex.l" +{ /* Eat up comments */ } + YY_BREAK +case 196: +YY_RULE_SETUP +#line 459 "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 461 "ldlex.l" +{ + include_stack_ptr--; + if (include_stack_ptr == 0) + { + lineno = 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 197: +YY_RULE_SETUP +#line 477 "ldlex.l" +lex_warn_invalid (" in script", yytext); + YY_BREAK +case 198: +YY_RULE_SETUP +#line 478 "ldlex.l" +lex_warn_invalid (" in expression", yytext); + YY_BREAK +case 199: +YY_RULE_SETUP +#line 480 "ldlex.l" +ECHO; + YY_BREAK +#line 3219 "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 >= 1775 ) + 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 >= 1775 ) + 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 == 1774); + + 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 480 "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 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 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 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 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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 x|CVU`{NG7xAVV^cu_(uyC6cQ?%8 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 D+w2f+ literal 0 Hc-jL100001 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index cd7476e2ce8..7f01e541889 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2017-03-02 Tristan Gingold + + * configure: Regenerate. + 2017-02-14 Andrew Waterman * riscv-opc.c (riscv_opcodes): Add sfence.vma instruction and diff --git a/opcodes/configure b/opcodes/configure index 00b2dffa3fe..be87eb22a5f 100755 --- a/opcodes/configure +++ b/opcodes/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for opcodes 2.27.90. +# Generated by GNU Autoconf 2.64 for opcodes 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='opcodes' PACKAGE_TARNAME='opcodes' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='opcodes 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='opcodes 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1322,7 +1322,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures opcodes 2.27.90 to adapt to many kinds of systems. +\`configure' configures opcodes 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1393,7 +1393,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of opcodes 2.27.90:";; + short | recursive ) echo "Configuration of opcodes 2.28:";; esac cat <<\_ACEOF @@ -1500,7 +1500,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -opcodes configure 2.27.90 +opcodes configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -1910,7 +1910,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by opcodes $as_me 2.27.90, which was +It was created by opcodes $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3719,7 +3719,7 @@ fi # Define the identity of the package. PACKAGE='opcodes' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -13305,7 +13305,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by opcodes $as_me 2.27.90, which was +This file was extended by opcodes $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13369,7 +13369,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -opcodes config.status 2.27.90 +opcodes config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/opcodes/po/da.gmo b/opcodes/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2f18a0030b173e7d31a8e046cedd034f47f5a6bd GIT binary patch literal 17528 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 Ca};L) literal 0 Hc-jL100001 diff --git a/opcodes/po/de.gmo b/opcodes/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f5d29d25712d5b96cc123db4d02adb946a21844b GIT binary patch literal 31404 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 AO8@`> 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..f2c3c8a6e949c54a0413a5c839a2186b2a21c776 GIT binary patch literal 30871 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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..fed385da0d351b280ef80a4d2ad46a8fec08d0df GIT binary patch literal 647441 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 Q)jK?gi_@% literal 0 Hc-jL100001 diff --git a/gas/po/zh_CN.gmo b/gas/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3366997ba09934c75c957b08015b01f467cde6fc GIT binary patch literal 3779 zc-obfT})iZ6@aI$W77?6nxCfmX`0CoH8kAKE?|eOZR8k(g%lFvKpZ8i>dW5Q-P_!s z?c95@ar1x^JJ`gCSTQva9NQ5%)DA4fmBIY=$$e{|+J~xA9~|!8yHcgTR_#mA+!=Nk zOpr2S`R2@=bLPyMGk5;^(6%82?M3+g6n+=Jhfou+{0As#k8MK;hS1}{=YdZGcLDbU zUjlXmTY=NScY*%_9t3vWhfo|iBKTL}L%;{NBlJVyv%m*|HNXh45eR=shkrYOHn0Nt zzR>Fj{s=e*d<;0Xo%{O}unhQj;rA}^Vc@@nK6A$82Z4_QD}fIH_X3{=zPf|&TNC4F zfj?n!1IvN4z%XzH_+#Log`aPL_XGdCgU7kOjLVM*;xg{92KWS9uZ;UWQpWw7Wjy}( z%lLi=#r#F!9Y}b#jOX16L9T$ufOWu8U^DP9zy`J+EcOnt4cG{ryq}*>PVlL69`~E& zJWr~SDX^xc>8kkqUk;4MKjSg8O+_ z@I5j9TOpqo9ID{?n5f|S__~6}cSnr>LyY^v|Nnp?w(l^Xe>%+bUlZoz@i6z>415yU z8RmAs5&Hdt7sI^X#=|`CH^MyM%;pJkA6R2+GreCR9zSc}M?5ENy@ye;RU^I@i@yeb z>D?ZqI_}4i8R(!%f?BQ;)rS_G)Ey=Q7K8-YB%AY-oTqSHD#ETC?U{zYjceZRSg@4OMOD0sqvZ<2@Hi)Yfl9V0IuHMW^ z-M2ZZTjykh>F#>ah;3pjCf1u)T5+t%wu~+H1i_V>5<+_&<2}PXW;CJ$vVti|L0)0g zhO86RWM+D(no8TaHX5tPEtC-arkS*l$&}z0(=osoIIh91Mj{eI&6JunE`U)BETmx~ zq(iTDmgKY&f@w8iA!AMDnGkB%h-?vvA!AaT*H)L40>_8>2nZId0A_qdriN;y;)M=I zT@XKP76hDt-P*EYBSr02gTw3U!6yhc5jhT3XA@Sb84869b4b;7qNuV>u<6*?Okye< zDN-`rEo;s_GKTQB(%&#?z@VzILT1Zulv&WasTB3r3B2+O;`&2c8@1AE5*Ex5D%&PS zy2`!o{N>I6l5lo7F<)qgv)?+C|fn75w@dxw0YE`7S_^pfMlx*SJ zNNs)Onmufh+s#*I}h7&PqD%AdZhtxz#P@vL5IF)!% z#8R|YibZks<#>JV3$bWj6cnYygjY#XZx<*@b%9=OOp4Y=qoG%2%a%GIGnU3S9mj2u ztR8}o!1>~;SE!wKXf4@QjrYpD57)1D_x_YFt6C&s>W$#RNICGOlsbs4$8l3yH3-yu zm8I$#4Zeg#0b@1RU`Qv@`%|Ww(nyM$PR3eq9>*urziN6d)YjV8Tuf6e5)Cz(aHR~0 z629GWY?I^mix~~Fy9X!IGKIt3*V)k`H5B#OZjyvb%|^mhf?L$k1t0Ks&7ra;wU|_g z4~CHmL~CDc59Zx{(LJHJr9;Hv=O4%ICRDx+F*HQ#Lz}!U{`8EyJcOItJ8^Dy(f$16 ztzH)I?5FO)j5jsz&QH7jzjtrn%J=rVeG6N?E8g%*ZhRs4*|c}1&l_8CM<#P;Z@bf@ zxzSVZ`Q_EcasTSMeDB%()!X8g0aX^!#^%m^#Am#@MYsQo-**$@_2;tg%Big$6$lnw zyMJ8H4NYwEvWT6{_T`p-7le4m8~e%~oZIZ1UVKyB(baG!HT^h-q4IUFzt?i>COy_XT%%3p1VBJi1HUk{A`xxJ$uTX8isAU zpA2k#N&LR+xeK%Ya&~p`mV0?2-*Y4n@k4?@EH-%Fztfi2N^Z-|Zb)n>t$1;ttq;+>?Xg6SA>7Ki~~#aXn^< z>K$Nn`7cg+W0yBs)z40OH-~s$kvsjlJNSV+e%&1(MZ9tZnB~GX@6u(6qcXt)`9C9Q Bhr$2= literal 0 Hc-jL100001 diff --git a/gas/rl78-parse.c b/gas/rl78-parse.c new file mode 100644 index 00000000000..725f50c5e0b --- /dev/null +++ b/gas/rl78-parse.c @@ -0,0 +1,4786 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + +/* Substitute the variable and function names. */ +#define yyparse rl78_parse +#define yylex rl78_lex +#define yyerror rl78_error +#define yydebug rl78_debug +#define yynerrs rl78_nerrs + +#define yylval rl78_lval +#define yychar rl78_char + +/* Copy the first part of user declarations. */ +#line 20 "./config/rl78-parse.y" /* yacc.c:339 */ + + +#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 SET_SA(e) e.X_md = BFD_RELOC_RL78_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"); + +#define ISA_G10(s) if (!rl78_isa_g10()) rl78_error (s " is only supported on the G10") +#define ISA_G13(s) if (!rl78_isa_g13()) rl78_error (s " is only supported on the G13") +#define ISA_G14(s) if (!rl78_isa_g14()) rl78_error (s " is only supported on the G14") + +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; + } +} + + +#line 196 "rl78-parse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_RL78_RL_PARSE_H_INCLUDED +# define YY_RL78_RL_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int rl78_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 144 "./config/rl78-parse.y" /* yacc.c:355 */ + + int regno; + expressionS exp; + +#line 479 "rl78-parse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE rl78_lval; + +int rl78_parse (void); + +#endif /* !YY_RL78_RL_PARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 494 "rl78-parse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 180 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 844 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 129 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 56 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 324 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 744 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 374 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 187, 187, 208, 211, 211, 214, 217, 220, 223, + 223, 226, 229, 232, 235, 238, 241, 250, 253, 256, + 256, 259, 262, 265, 268, 276, 276, 279, 279, 288, + 288, 291, 291, 296, 299, 302, 305, 308, 311, 316, + 319, 328, 331, 336, 339, 342, 345, 348, 353, 356, + 361, 364, 367, 370, 373, 394, 397, 400, 409, 412, + 415, 420, 422, 424, 426, 429, 429, 432, 437, 439, + 444, 447, 450, 453, 456, 456, 459, 464, 469, 472, + 472, 474, 476, 478, 480, 485, 488, 488, 491, 494, + 499, 502, 507, 507, 510, 510, 513, 516, 516, 524, + 524, 527, 527, 530, 530, 535, 543, 545, 548, 555, + 555, 564, 567, 570, 573, 576, 576, 585, 588, 591, + 594, 597, 597, 606, 606, 606, 609, 612, 619, 619, + 619, 626, 629, 632, 635, 638, 641, 644, 647, 650, + 653, 656, 659, 662, 665, 668, 671, 674, 677, 680, + 683, 686, 689, 692, 695, 698, 701, 704, 704, 707, + 707, 710, 710, 713, 713, 716, 716, 719, 719, 724, + 733, 736, 739, 742, 751, 754, 757, 762, 767, 770, + 773, 773, 782, 782, 791, 791, 800, 803, 806, 809, + 812, 815, 818, 821, 824, 827, 830, 833, 836, 839, + 842, 845, 848, 851, 854, 857, 860, 860, 863, 863, + 866, 866, 869, 869, 872, 872, 875, 878, 881, 884, + 887, 892, 897, 902, 905, 908, 911, 916, 919, 922, + 927, 932, 937, 942, 947, 952, 959, 964, 971, 974, + 977, 980, 985, 990, 995, 1000, 1005, 1012, 1017, 1024, + 1027, 1030, 1033, 1036, 1039, 1044, 1049, 1056, 1059, 1062, + 1065, 1068, 1071, 1074, 1077, 1088, 1097, 1098, 1102, 1103, + 1104, 1105, 1106, 1107, 1108, 1109, 1112, 1113, 1114, 1115, + 1116, 1117, 1118, 1121, 1122, 1123, 1124, 1127, 1128, 1129, + 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1144, 1145, 1146, + 1147, 1148, 1149, 1150, 1151, 1154, 1155, 1156, 1159, 1160, + 1161, 1164, 1165, 1166, 1169, 1170, 1173, 1174, 1177, 1178, + 1181, 1182, 1185, 1186, 1189 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", "$@33", "$@34", "$@35", + "$@36", "$@37", "$@38", "opt_es", "regb", "regb_na", "regw", "regw_na", + "sfr", "addsub", "addsubw", "andor1", "bt_bf", "setclr1", "oneclrb", + "oneclrw", "incdec", "incdecw", "mov1", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -212 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-212))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 226, -44, -212, -212, -212, -212, -212, -212, -212, -34, + -15, 14, 20, 42, -212, -212, -212, -212, 45, 91, + -80, -212, -212, -212, -212, 347, 134, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, -212, 53, + -212, 136, 430, -212, -212, 153, -212, 150, -212, -212, + -212, -212, 413, 451, -212, -212, -212, 181, 186, 198, + 192, 212, 214, 225, 232, -212, 368, 210, 236, 231, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + 242, 244, -212, -212, 261, 221, 107, 325, 162, 343, + 403, 222, 10, 235, 362, 328, 341, 385, 394, 402, + -212, 38, 81, 411, -212, -212, -212, -212, 82, 263, + -212, 428, -212, -212, -212, -212, 300, -212, 273, 351, + -212, -212, -212, -212, 367, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, 376, -212, -212, 457, + 11, 372, 383, 384, 386, -212, -212, -212, 388, 36, + 389, -212, -212, -212, -212, -212, -212, -212, -212, 390, + 391, 392, 393, 395, 396, 397, 398, -212, -212, -212, + -212, 401, 404, 405, 406, 407, 408, 409, 410, 412, + -212, 414, -212, 415, 416, 418, 419, 420, 379, 300, + 417, 421, 422, 423, -212, 424, 0, 425, -212, -212, + -212, -212, -212, 431, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, 426, -212, 485, 505, -212, -212, + 233, -212, 432, 427, 434, 436, 435, -212, -212, -212, + -212, -212, -212, 491, -212, 493, -212, -212, 494, 502, + 439, -212, -212, 504, 136, 80, 440, 437, -79, 184, + 29, 72, 521, 123, 41, 79, 512, 239, 102, 513, + 516, 517, 523, 526, 527, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 429, 399, 18, 453, 545, 572, + 95, 455, 381, 548, 549, 565, 551, 552, 553, 554, + 570, 556, -212, 557, 267, -212, -212, 462, -212, 559, + 575, 561, 400, 562, 578, 564, -212, -212, -212, -212, + -212, -212, 471, 566, 63, -212, -212, 567, 5, 6, + 161, 473, 268, 280, 330, -212, 569, 86, 571, 573, + -212, 474, -212, 574, 65, -212, -212, 576, 55, 342, + 481, 480, 335, 345, 348, -212, -212, -212, 577, 486, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, 344, -212, -212, -212, + -212, 580, 352, -212, 489, 487, -212, -212, 582, 354, + -212, 583, 488, 490, 492, 495, 497, 498, 496, 499, + -212, -212, 500, 501, -212, -212, 584, 608, 594, -212, + 503, 507, 506, 508, 510, 509, 511, 514, 519, 610, + -212, 518, 600, 433, 520, -212, 601, -212, 607, 522, + 524, 525, 530, 531, 613, 532, 111, 533, 614, -212, + -212, 615, -212, -212, 616, -212, 534, 618, 438, -212, + -212, 625, 544, 546, 547, 626, 555, 558, 627, 560, + 629, 563, 630, -212, -212, 631, 632, 465, -212, -212, + 633, 641, 634, 568, -212, -212, 635, 651, -212, 637, + 638, 655, 643, 550, 579, 581, 585, 644, 587, -212, + 586, 590, 645, 652, 650, 653, 667, 656, 660, 589, + 662, 591, 363, -212, -212, 593, 356, 358, 360, 7, + -212, -212, -212, 588, 598, 599, 8, 684, 596, 685, + 597, 602, 603, 27, 604, -212, -212, -212, 605, 382, + -212, -212, 606, 364, 366, 369, -212, -212, 611, 612, + 617, -212, 679, 680, 609, 681, 619, 682, 620, -212, + -212, 371, 373, -212, 375, -212, 665, -212, 377, -212, + -212, 621, -212, 666, 668, 669, 670, -212, 671, 672, + -212, 622, -212, -212, -212, 623, -212, -212, 673, -212, + 674, 624, 628, 636, -212, -212, 675, -212, 114, -212, + 676, -212, 693, -212, 28, 30, 31, -212, 694, -212, + 639, -212, 642, 646, 647, -212, 695, 648, -212, -212, + 649, 640, 654, 657, -212, -212, 696, -212, 705, -212, + 706, -212, 698, 699, 725, -212, -212, 659, -212, 663, + -212, 664, -212, 709, -212, 139, -212, 165, -212, -212, + 710, -212, -212, 661, -212, -212, -212, 677, -212, -212, + 658, -212, 678, 683, 686, -212, -212, -212, 687, 688, + 689, 690, -212, 691, -212, -212, 711, -212, 712, -212, + 713, -212, 32, 746, 747, 33, -212, -212, 35, 692, + -212, -212, -212, 697, 700, -212, 701, -212, -212, -212, + 740, 742, -212, 743, 702, 703, 704, 707, 708, 714, + 715, 716, 726, 717, -212, 727, 733, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, 729, -212, -212, + -212, 732, -212, -212, 734, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, 736, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 0, 2, 297, 298, 305, 302, 308, 312, 0, + 0, 0, 0, 0, 48, 49, 311, 313, 0, 0, + 0, 315, 317, 319, 301, 266, 0, 307, 321, 323, + 90, 97, 99, 91, 105, 320, 322, 103, 101, 266, + 324, 266, 266, 94, 92, 0, 221, 0, 316, 318, + 303, 309, 0, 0, 227, 228, 229, 0, 0, 0, + 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, + 249, 250, 251, 252, 253, 254, 255, 299, 300, 306, + 0, 0, 304, 310, 0, 266, 0, 0, 266, 266, + 266, 0, 0, 266, 266, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 283, 284, 285, 286, 0, 0, + 50, 0, 70, 71, 72, 73, 0, 74, 0, 0, + 98, 100, 104, 102, 0, 276, 278, 277, 280, 279, + 282, 281, 290, 291, 292, 293, 294, 295, 296, 0, + 0, 0, 0, 0, 0, 287, 288, 289, 0, 0, + 0, 95, 93, 96, 222, 224, 223, 226, 225, 0, + 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, + 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 4, 0, 0, 0, 0, 0, 0, 294, + 0, 0, 0, 0, 55, 0, 0, 0, 61, 62, + 63, 64, 65, 0, 68, 69, 269, 268, 271, 270, + 273, 272, 275, 274, 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, 267, 75, 0, 266, 266, 267, 0, 0, 0, + 266, 266, 0, 266, 0, 0, 0, 0, 266, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 266, 0, 266, 0, 0, 0, + 266, 0, 266, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66, 0, 0, 80, 81, 0, 87, 0, + 0, 0, 266, 0, 0, 0, 47, 45, 53, 51, + 54, 76, 0, 0, 0, 114, 126, 0, 0, 0, + 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, + 127, 0, 219, 0, 0, 186, 218, 0, 0, 0, + 0, 0, 0, 0, 0, 187, 220, 214, 0, 0, + 230, 231, 232, 233, 234, 235, 236, 237, 242, 243, + 244, 245, 246, 247, 248, 264, 0, 256, 265, 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, + 106, 121, 0, 0, 0, 118, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 123, 0, 108, 128, 0, 178, 182, 0, 0, 217, + 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 179, 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, 122, 117, 0, 0, 0, 0, 0, + 111, 116, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 124, 120, 129, 0, 0, + 183, 188, 0, 0, 0, 0, 185, 180, 0, 0, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 216, + 257, 0, 0, 11, 0, 5, 0, 21, 0, 29, + 27, 0, 25, 0, 0, 0, 0, 59, 0, 0, + 83, 0, 174, 170, 169, 0, 171, 173, 0, 175, + 0, 0, 0, 0, 154, 131, 0, 136, 0, 163, + 0, 119, 0, 110, 0, 0, 0, 156, 0, 132, + 0, 137, 0, 0, 0, 167, 0, 0, 125, 130, + 0, 0, 0, 0, 203, 190, 0, 194, 0, 208, + 0, 181, 0, 0, 0, 205, 191, 0, 195, 0, + 212, 0, 258, 0, 260, 0, 12, 0, 16, 23, + 0, 30, 28, 0, 26, 41, 40, 0, 39, 60, + 0, 89, 0, 0, 0, 146, 149, 153, 0, 0, + 0, 0, 164, 0, 112, 147, 0, 150, 0, 155, + 0, 152, 0, 0, 0, 0, 168, 159, 0, 0, + 198, 200, 202, 0, 0, 209, 0, 199, 201, 204, + 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 77, 134, 141, + 143, 139, 161, 145, 148, 151, 135, 0, 142, 144, + 140, 0, 160, 165, 0, 177, 192, 196, 206, 193, + 197, 210, 259, 262, 263, 261, 14, 15, 13, 22, + 31, 0, 172, 176, 162, 133, 138, 166, 157, 207, + 211, 32, 42, 158 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -39, 529, -84, -48, -211, -82, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 84, 277, 458, 464, 634, 632, 631, 741, 292, + 242, 295, 298, 152, 151, 120, 121, 123, 122, 583, + 501, 493, 515, 598, 517, 599, 743, 712, 734, 652, + 737, 666, 611, 520, 526, 739, 675, 740, 682, 453, + 118, 218, 141, 110, 150, 142, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_uint16 yytable[] = +{ + 140, 184, 143, 149, 156, 158, 192, 197, 415, 417, + 581, 587, 226, 206, 207, 208, 209, 210, 211, 212, + 213, 369, 125, 126, 127, 128, 129, 130, 131, 214, + 595, 655, 325, 657, 659, 706, 710, 116, 713, 215, + 248, 319, 335, 111, 320, 221, 183, 370, 116, 191, + 196, 203, 336, 100, 220, 225, 124, 125, 126, 127, + 128, 129, 130, 131, 368, 255, 440, 232, 132, 133, + 134, 135, 136, 137, 138, 206, 207, 208, 209, 210, + 211, 212, 213, 95, 125, 126, 127, 128, 129, 130, + 131, 116, 411, 96, 436, 132, 133, 134, 135, 189, + 137, 138, 104, 105, 106, 107, 104, 105, 106, 107, + 234, 237, 97, 345, 116, 430, 510, 511, 185, 649, + 650, 116, 289, 290, 377, 346, 416, 418, 582, 588, + 186, 347, 216, 217, 249, 145, 146, 147, 119, 371, + 512, 98, 116, 651, 685, 686, 332, 99, 596, 656, + 326, 658, 660, 707, 711, 116, 714, 153, 256, 257, + 233, 315, 337, 316, 101, 188, 419, 420, 687, 102, + 688, 689, 103, 421, 154, 139, 441, 132, 133, 134, + 135, 189, 137, 138, 159, 412, 413, 437, 438, 160, + 367, 190, 373, 328, 690, 163, 321, 322, 323, 338, + 385, 313, 339, 235, 238, 312, 314, 324, 431, 161, + 162, 327, 329, 108, 334, 164, 378, 165, 109, 349, + 405, 174, 175, 348, 181, 125, 126, 127, 128, 129, + 130, 131, 380, 204, 205, 366, 166, 372, 1, 176, + 116, 379, 177, 384, 333, 178, 104, 105, 106, 107, + 182, 341, 342, 343, 116, 179, 2, 167, 168, 169, + 170, 180, 344, 404, 219, 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, 193, 442, 443, 187, + 112, 113, 114, 115, 444, 299, 300, 227, 132, 133, + 134, 135, 189, 137, 138, 222, 116, 194, 571, 572, + 228, 171, 195, 172, 173, 573, 117, 132, 133, 134, + 135, 189, 137, 138, 382, 239, 223, 601, 602, 396, + 397, 224, 423, 424, 603, 243, 132, 133, 134, 135, + 189, 137, 138, 402, 425, 426, 198, 199, 200, 201, + 383, 145, 146, 147, 229, 132, 133, 134, 135, 189, + 137, 138, 116, 230, 104, 105, 106, 107, 241, 403, + 155, 231, 202, 125, 126, 127, 128, 129, 130, 131, + 236, 144, 145, 146, 147, 495, 496, 497, 116, 116, + 522, 523, 524, 148, 427, 428, 498, 240, 365, 447, + 448, 525, 104, 105, 106, 107, 456, 457, 157, 449, + 450, 244, 451, 452, 460, 461, 466, 467, 541, 542, + 575, 576, 577, 578, 579, 580, 247, 245, 605, 606, + 607, 608, 250, 609, 610, 622, 623, 624, 625, 626, + 627, 629, 630, 251, 246, 283, 253, 252, 254, 258, + 259, 260, 261, 262, 296, 263, 264, 265, 266, 297, + 306, 267, 307, 308, 268, 269, 270, 271, 272, 273, + 274, 309, 275, 311, 276, 331, 279, 278, 280, 281, + 282, 340, 350, 284, 285, 351, 352, 302, 286, 287, + 288, 291, 353, 293, 294, 354, 355, 318, 301, 304, + 303, 305, 317, 310, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 374, 375, 376, 381, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 398, 399, 400, + 401, 406, 407, 408, 409, 410, 414, 422, 429, 434, + 432, 445, 433, 435, 446, 439, 454, 463, 455, 459, + 462, 465, 468, 479, 469, 471, 470, 473, 474, 476, + 475, 472, 480, 481, 491, 478, 477, 483, 482, 494, + 500, 488, 484, 486, 485, 487, 502, 531, 489, 490, + 499, 492, 508, 514, 516, 518, 503, 521, 504, 505, + 506, 507, 509, 513, 527, 544, 534, 519, 536, 538, + 539, 540, 543, 545, 547, 548, 549, 550, 528, 551, + 529, 530, 552, 557, 561, 532, 562, 553, 533, 563, + 535, 565, 564, 537, 567, 566, 569, 589, 591, 546, + 615, 616, 618, 620, 628, 635, 715, 636, 637, 638, + 639, 640, 643, 644, 648, 653, 554, 555, 584, 677, + 678, 559, 556, 558, 560, 568, 570, 574, 585, 586, + 590, 592, 654, 661, 667, 673, 593, 594, 597, 600, + 604, 612, 613, 617, 674, 676, 679, 614, 684, 691, + 703, 704, 705, 619, 621, 633, 641, 642, 645, 708, + 709, 719, 646, 720, 721, 730, 732, 733, 735, 662, + 647, 736, 663, 738, 670, 742, 664, 665, 668, 669, + 0, 0, 0, 0, 0, 0, 0, 0, 671, 680, + 330, 672, 694, 681, 683, 0, 0, 692, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 693, 0, 0, + 0, 0, 0, 696, 695, 0, 0, 0, 0, 0, + 697, 698, 699, 700, 701, 702, 0, 0, 0, 0, + 0, 716, 0, 0, 717, 718, 722, 723, 724, 0, + 0, 725, 726, 0, 0, 0, 0, 0, 727, 728, + 729, 0, 0, 0, 731 +}; + +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, 120, 253, 123, 123, 93, 85, 29, 19, 88, + 89, 90, 11, 11, 93, 94, 3, 4, 5, 6, + 7, 8, 9, 10, 275, 29, 11, 29, 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, 11, 12, 13, 14, 11, 12, 13, 14, + 29, 29, 127, 11, 19, 29, 5, 6, 11, 5, + 6, 19, 122, 123, 29, 23, 121, 121, 121, 121, + 23, 29, 122, 123, 123, 12, 13, 14, 4, 121, + 29, 127, 19, 29, 5, 6, 23, 127, 121, 121, + 121, 121, 121, 121, 121, 19, 121, 4, 122, 123, + 122, 245, 121, 245, 122, 3, 5, 6, 29, 127, + 5, 6, 127, 12, 24, 122, 121, 15, 16, 17, + 18, 19, 20, 21, 3, 122, 123, 122, 123, 3, + 274, 29, 276, 121, 29, 3, 12, 13, 14, 120, + 282, 121, 123, 122, 122, 244, 245, 23, 122, 11, + 12, 250, 251, 122, 253, 3, 121, 3, 127, 258, + 302, 11, 12, 121, 3, 4, 5, 6, 7, 8, + 9, 10, 280, 11, 12, 274, 11, 276, 12, 3, + 19, 280, 11, 282, 121, 3, 11, 12, 13, 14, + 29, 12, 13, 14, 19, 11, 30, 25, 26, 27, + 28, 0, 23, 302, 29, 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, 5, 6, 24, + 3, 4, 5, 6, 12, 122, 123, 29, 15, 16, + 17, 18, 19, 20, 21, 3, 19, 24, 5, 6, + 29, 3, 29, 5, 6, 12, 29, 15, 16, 17, + 18, 19, 20, 21, 3, 122, 24, 5, 6, 122, + 123, 29, 124, 125, 12, 122, 15, 16, 17, 18, + 19, 20, 21, 3, 124, 125, 3, 4, 5, 6, + 29, 12, 13, 14, 29, 15, 16, 17, 18, 19, + 20, 21, 19, 29, 11, 12, 13, 14, 128, 29, + 17, 29, 29, 4, 5, 6, 7, 8, 9, 10, + 29, 11, 12, 13, 14, 12, 13, 14, 19, 19, + 12, 13, 14, 23, 124, 125, 23, 29, 29, 124, + 125, 23, 11, 12, 13, 14, 122, 123, 17, 124, + 125, 120, 124, 125, 122, 123, 122, 123, 13, 14, + 124, 125, 124, 125, 124, 125, 29, 120, 124, 125, + 124, 125, 120, 124, 125, 124, 125, 124, 125, 124, + 125, 124, 125, 120, 128, 126, 120, 123, 120, 120, + 120, 120, 120, 120, 29, 120, 120, 120, 120, 14, + 29, 120, 29, 29, 120, 120, 120, 120, 120, 120, + 120, 29, 120, 29, 120, 14, 120, 122, 120, 120, + 120, 29, 29, 126, 123, 29, 29, 120, 126, 126, + 126, 126, 29, 122, 128, 29, 29, 120, 126, 123, + 126, 126, 122, 124, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 120, 29, 3, 121, 29, 29, 14, + 29, 29, 29, 29, 14, 29, 29, 125, 29, 14, + 29, 29, 14, 29, 123, 29, 29, 124, 29, 125, + 29, 120, 29, 29, 124, 29, 29, 120, 122, 29, + 121, 29, 29, 29, 126, 123, 126, 120, 120, 120, + 124, 126, 14, 29, 14, 124, 126, 120, 125, 29, + 29, 120, 126, 123, 126, 126, 29, 11, 124, 120, + 120, 123, 29, 29, 29, 29, 124, 29, 124, 124, + 120, 120, 120, 120, 29, 14, 29, 123, 29, 29, + 29, 29, 29, 29, 29, 14, 29, 29, 124, 14, + 124, 124, 29, 29, 29, 120, 24, 127, 120, 29, + 120, 14, 29, 120, 24, 29, 24, 3, 3, 121, + 11, 11, 11, 11, 29, 29, 4, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 127, 126, 120, 11, + 11, 125, 127, 126, 124, 126, 125, 124, 120, 120, + 124, 124, 29, 29, 29, 29, 124, 124, 124, 124, + 124, 120, 120, 124, 29, 29, 11, 120, 29, 29, + 29, 29, 29, 124, 124, 124, 124, 124, 124, 3, + 3, 11, 124, 11, 11, 29, 29, 24, 29, 120, + 124, 29, 120, 29, 124, 29, 120, 120, 120, 120, + -1, -1, -1, -1, -1, -1, -1, -1, 124, 120, + 251, 124, 124, 120, 120, -1, -1, 126, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, -1, -1, + -1, -1, -1, 120, 126, -1, -1, -1, -1, -1, + 124, 124, 124, 124, 124, 124, -1, -1, -1, -1, + -1, 124, -1, -1, 124, 124, 124, 124, 124, -1, + -1, 124, 124, -1, -1, -1, -1, -1, 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, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 127, 127, 127, 127, 127, + 11, 122, 127, 127, 11, 12, 13, 14, 122, 127, + 172, 123, 3, 4, 5, 6, 19, 29, 169, 4, + 144, 145, 147, 146, 3, 4, 5, 6, 7, 8, + 9, 10, 15, 16, 17, 18, 19, 20, 21, 122, + 169, 171, 174, 169, 11, 12, 13, 14, 23, 169, + 173, 143, 142, 4, 24, 17, 172, 17, 172, 3, + 3, 11, 12, 3, 3, 3, 11, 25, 26, 27, + 28, 3, 5, 6, 11, 12, 3, 11, 3, 11, + 0, 3, 29, 169, 171, 11, 23, 24, 3, 19, + 29, 169, 174, 3, 24, 29, 169, 174, 3, 4, + 5, 6, 29, 169, 11, 12, 3, 4, 5, 6, + 7, 8, 9, 10, 19, 29, 122, 123, 170, 29, + 169, 172, 3, 24, 29, 169, 174, 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, 169, 121, 169, 171, 174, 122, 120, 120, + 123, 12, 13, 14, 23, 3, 121, 169, 121, 169, + 170, 14, 23, 121, 169, 173, 11, 121, 120, 123, + 29, 12, 13, 14, 23, 11, 23, 29, 121, 169, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 169, 171, 173, 3, + 29, 121, 169, 171, 120, 29, 3, 29, 121, 169, + 172, 121, 3, 29, 169, 174, 29, 29, 14, 29, + 29, 29, 29, 14, 29, 29, 122, 123, 125, 29, + 14, 29, 3, 29, 169, 174, 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, 168, 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, 150, 29, 12, 13, 14, 23, 120, + 29, 149, 29, 124, 124, 124, 120, 120, 29, 120, + 5, 6, 29, 120, 29, 151, 29, 153, 29, 123, + 162, 29, 12, 13, 14, 23, 163, 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, 148, 120, 120, 120, 3, 121, 3, + 124, 3, 124, 124, 124, 3, 121, 124, 152, 154, + 124, 5, 6, 12, 124, 124, 125, 124, 125, 124, + 125, 161, 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, 158, 29, 29, 3, 121, 3, 121, 3, + 121, 29, 120, 120, 120, 120, 160, 29, 120, 120, + 124, 124, 124, 29, 29, 165, 29, 11, 11, 11, + 120, 120, 167, 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, 156, 3, 121, 4, 124, 124, 124, 11, + 11, 11, 124, 124, 124, 124, 124, 124, 124, 124, + 29, 127, 29, 24, 157, 29, 29, 159, 29, 164, + 166, 137, 29, 155 +}; + + /* 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, 142, 130, 143, 130, 130, 144, 130, 145, + 130, 146, 130, 147, 130, 130, 130, 130, 130, 148, + 130, 130, 130, 130, 130, 149, 130, 130, 130, 130, + 130, 150, 130, 151, 152, 130, 130, 130, 153, 154, + 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, 155, 130, 156, + 130, 157, 130, 158, 130, 159, 130, 160, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 161, 130, 162, 130, 163, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 164, 130, 165, 130, + 166, 130, 167, 130, 168, 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, 169, 169, 170, 170, + 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, + 171, 171, 171, 172, 172, 172, 172, 173, 173, 173, + 174, 174, 174, 174, 174, 174, 174, 175, 175, 175, + 175, 175, 175, 175, 175, 176, 176, 176, 177, 177, + 177, 178, 178, 178, 179, 179, 180, 180, 181, 181, + 182, 182, 183, 183, 184 +}; + + /* YYR2[YYN] -- Number of symbols on the 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, 0, 2, 0, 2, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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 188 "./config/rl78-parse.y" /* yacc.c:1661 */ + { as_bad (_("Unknown opcode: %s"), rl78_init_start); } +#line 2079 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 3: +#line 209 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0c|(yyvsp[-4].regno)); O1 ((yyvsp[0].exp)); } +#line 2085 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 4: +#line 211 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2091 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 5: +#line 212 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0a|(yyvsp[-5].regno)); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } +#line 2097 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 6: +#line 215 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x01|(yyvsp[-3].regno)); } +#line 2103 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 7: +#line 218 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x08|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 13, 3); } +#line 2109 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 8: +#line 221 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x00|(yyvsp[-3].regno)); F ((yyvsp[-2].regno), 13, 3); } +#line 2115 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 9: +#line 223 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2121 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 10: +#line 224 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0b|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2127 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 11: +#line 227 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0f|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2133 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 12: +#line 230 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0d|(yyvsp[-6].regno)); } +#line 2139 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 13: +#line 233 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x0e|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); } +#line 2145 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 14: +#line 236 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x80|(yyvsp[-8].regno)); } +#line 2151 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 15: +#line 239 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x82|(yyvsp[-8].regno)); } +#line 2157 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 16: +#line 242 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-6].regno) != 0x40) + { rl78_error ("Only CMP takes these operands"); } + else + { B1 (0x00|(yyvsp[-6].regno)); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } + } +#line 2167 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 17: +#line 251 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x04|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); } +#line 2173 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 18: +#line 254 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x01|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 5, 2); } +#line 2179 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 256 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2185 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 20: +#line 257 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x06|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2191 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 260 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x02|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2197 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 263 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x09|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); } +#line 2203 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 266 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x61, 0x09|(yyvsp[-6].regno), 0); } +#line 2209 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 269 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 ((yyvsp[-4].regno) ? 0x20 : 0x10); O1 ((yyvsp[0].exp)); + if ((yyvsp[-4].regno) == 0x40) + rl78_error ("CMPW SP,#imm not allowed"); + } +#line 2218 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 276 "./config/rl78-parse.y" /* yacc.c:1661 */ + {Bit((yyvsp[0].exp))} +#line 2224 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 277 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x08|(yyvsp[-6].regno), (yyvsp[-3].regno)); FE ((yyvsp[-1].exp), 9, 3); } +#line 2230 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 279 "./config/rl78-parse.y" /* yacc.c:1661 */ + {Bit((yyvsp[0].exp))} +#line 2236 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 280 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[-3].exp))) + { B2 (0x71, 0x08|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); O1 ((yyvsp[-3].exp)); } + else if (expr_is_saddr ((yyvsp[-3].exp))) + { B2 (0x71, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2248 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 288 "./config/rl78-parse.y" /* yacc.c:1661 */ + {Bit((yyvsp[0].exp))} +#line 2254 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 289 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x88|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); } +#line 2260 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 291 "./config/rl78-parse.y" /* yacc.c:1661 */ + {Bit((yyvsp[0].exp))} +#line 2266 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 32: +#line 292 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x80|(yyvsp[-9].regno)); FE ((yyvsp[-1].exp), 9, 3); } +#line 2272 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 297 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xdc); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2278 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 300 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xde); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2284 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 303 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xdd); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2290 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 306 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xdf); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2296 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 309 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xc3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2302 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 312 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xd3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2308 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 317 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x31, 0x80|(yyvsp[-6].regno), (yyvsp[-5].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } +#line 2314 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 320 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[-5].exp))) + { B2 (0x31, 0x80|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); } + else if (expr_is_saddr ((yyvsp[-5].exp))) + { B2 (0x31, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); SET_SA ((yyvsp[-5].exp)); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2326 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 329 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x31, 0x01|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } +#line 2332 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 332 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x31, 0x81|(yyvsp[-9].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } +#line 2338 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 337 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xcb); } +#line 2344 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 44: +#line 340 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xef); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2350 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 343 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xee); PC2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2356 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 46: +#line 346 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xed); O2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2362 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 349 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xec); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2368 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 354 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xcc); } +#line 2374 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 49: +#line 357 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xff); } +#line 2380 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 362 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xca); F ((yyvsp[0].regno), 10, 2); } +#line 2386 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 365 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xfe); PC2 ((yyvsp[0].exp)); } +#line 2392 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 368 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xfd); O2 ((yyvsp[0].exp)); } +#line 2398 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 371 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xfc); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } +#line 2404 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 374 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-1].exp).X_op != O_constant) + rl78_error ("CALLT requires a numeric address"); + else + { + int i = (yyvsp[-1].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); + } + } + } +#line 2426 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 395 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, (yyvsp[-1].regno) ? 0x88 : 0x80); } +#line 2432 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 398 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x0a|(yyvsp[-3].regno), (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); } +#line 2438 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 401 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[-2].exp))) + { B2 (0x71, 0x0a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); } + else if (expr_is_saddr ((yyvsp[-2].exp))) + { B2 (0x71, 0x02|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2450 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 58: +#line 410 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x8a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); } +#line 2456 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 413 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x00+(yyvsp[-5].regno)*0x08); FE ((yyvsp[0].exp), 9, 3); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } +#line 2462 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 416 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x82|(yyvsp[-6].regno)); FE ((yyvsp[0].exp), 9, 3); } +#line 2468 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 421 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe1|(yyvsp[-1].regno)); } +#line 2474 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 423 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe0|(yyvsp[-1].regno)); } +#line 2480 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 425 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe3|(yyvsp[-1].regno)); } +#line 2486 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 64: +#line 427 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe2|(yyvsp[-1].regno)); } +#line 2492 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 65: +#line 429 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2498 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 430 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2504 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 433 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe5|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2510 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 438 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe6|(yyvsp[-1].regno)); } +#line 2516 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 440 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xe7|(yyvsp[-1].regno)); } +#line 2522 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 445 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd1); } +#line 2528 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 448 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd0); } +#line 2534 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 451 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd3); } +#line 2540 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 454 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd2); } +#line 2546 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 456 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2552 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 457 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd4); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2558 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 460 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd5); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2564 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 465 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xde); O1 ((yyvsp[-1].exp)); } +#line 2570 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 470 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x80|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 3); } +#line 2576 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 472 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2582 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 473 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2588 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 475 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa0|(yyvsp[-2].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2594 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 477 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x11, 0xa0|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); } +#line 2600 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 83: +#line 479 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x59+(yyvsp[-5].regno)); O1 ((yyvsp[-1].exp)); } +#line 2606 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 84: +#line 481 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x11, 0x61, 0x59+(yyvsp[-7].regno)); O1 ((yyvsp[-1].exp)); } +#line 2612 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 85: +#line 486 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa1|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 2); } +#line 2618 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 86: +#line 488 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2624 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 87: +#line 489 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa6|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } +#line 2630 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 88: +#line 492 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa2|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2636 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 89: +#line 495 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0x79+(yyvsp[-6].regno)); O1 ((yyvsp[-1].exp)); } +#line 2642 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 90: +#line 500 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x7b, 0xfa); } +#line 2648 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 91: +#line 503 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x7a, 0xfa); } +#line 2654 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 92: +#line 507 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("MULHU"); } +#line 2660 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 93: +#line 508 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x01); } +#line 2666 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 94: +#line 510 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("MULH"); } +#line 2672 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 95: +#line 511 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x02); } +#line 2678 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 96: +#line 514 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd6); } +#line 2684 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 97: +#line 516 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("DIVHU"); } +#line 2690 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 98: +#line 517 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x03); } +#line 2696 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 99: +#line 524 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("DIVWU"); } +#line 2702 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 100: +#line 525 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x0b); } +#line 2708 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 101: +#line 527 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("MACHU"); } +#line 2714 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 102: +#line 528 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x05); } +#line 2720 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 103: +#line 530 "./config/rl78-parse.y" /* yacc.c:1661 */ + { ISA_G14 ("MACH"); } +#line 2726 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 104: +#line 531 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xce, 0xfb, 0x06); } +#line 2732 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 105: +#line 536 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xed); } +#line 2738 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 106: +#line 544 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x51); O1 ((yyvsp[0].exp)); } +#line 2744 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 107: +#line 546 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x50); F((yyvsp[-3].regno), 5, 3); O1 ((yyvsp[0].exp)); } +#line 2750 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 108: +#line 549 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-3].regno) != 0xfd) + { B2 (0xce, (yyvsp[-3].regno)); O1 ((yyvsp[0].exp)); } + else + { B1 (0x41); O1 ((yyvsp[0].exp)); } + } +#line 2760 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 109: +#line 555 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 2766 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 110: +#line 556 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[-4].exp))) + { B1 (0xce); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); } + else if (expr_is_saddr ((yyvsp[-4].exp))) + { B1 (0xcd); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2778 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 111: +#line 565 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2784 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 112: +#line 568 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x11, 0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); } +#line 2790 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 113: +#line 571 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x70); F ((yyvsp[-2].regno), 5, 3); } +#line 2796 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 114: +#line 574 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x60); F ((yyvsp[0].regno), 5, 3); } +#line 2802 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 115: +#line 576 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 2808 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 116: +#line 577 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[-3].exp))) + { B1 (0x9e); O1 ((yyvsp[-3].exp)); } + else if (expr_is_saddr ((yyvsp[-3].exp))) + { B1 (0x9d); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2820 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 117: +#line 586 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x8f); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2826 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 118: +#line 589 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x9f); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } +#line 2832 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 119: +#line 592 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x11, 0x9f); O2 ((yyvsp[-2].exp)); } +#line 2838 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 120: +#line 595 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xc9|reg_xbc((yyvsp[-4].regno))); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 2844 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 121: +#line 597 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 2850 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 122: +#line 598 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-1].exp))) + { B1 (0x8d); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } + else if (expr_is_sfr ((yyvsp[-1].exp))) + { B1 (0x8e); O1 ((yyvsp[-1].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 2862 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 123: +#line 606 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2868 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 124: +#line 606 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 2874 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 125: +#line 607 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xc8|reg_xbc((yyvsp[-5].regno))); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } +#line 2880 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 126: +#line 610 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x8e, (yyvsp[0].regno)); } +#line 2886 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 127: +#line 613 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) != 1) + rl78_error ("Only A allowed here"); + else + { B2 (0x9e, (yyvsp[-2].regno)); } + } +#line 2896 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 128: +#line 619 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 2902 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 129: +#line 619 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 2908 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 130: +#line 620 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-5].regno) != 0xfd) + rl78_error ("Only ES allowed here"); + else + { B2 (0x61, 0xb8); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } + } +#line 2918 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 131: +#line 627 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x89); } +#line 2924 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 132: +#line 630 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x99); } +#line 2930 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 133: +#line 633 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xca); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } +#line 2936 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 134: +#line 636 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x8a); O1 ((yyvsp[-1].exp)); } +#line 2942 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 135: +#line 639 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x9a); O1 ((yyvsp[-3].exp)); } +#line 2948 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 136: +#line 642 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x8b); } +#line 2954 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 137: +#line 645 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x9b); } +#line 2960 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 138: +#line 648 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xcc); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } +#line 2966 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 139: +#line 651 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x8c); O1 ((yyvsp[-1].exp)); } +#line 2972 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 140: +#line 654 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x9c); O1 ((yyvsp[-3].exp)); } +#line 2978 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 141: +#line 657 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xc9); } +#line 2984 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 142: +#line 660 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xd9); } +#line 2990 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 143: +#line 663 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xe9); } +#line 2996 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 144: +#line 666 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xf9); } +#line 3002 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 145: +#line 669 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x19); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } +#line 3008 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 146: +#line 672 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x09); O2 ((yyvsp[-3].exp)); } +#line 3014 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 147: +#line 675 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x18); O2 ((yyvsp[-5].exp)); } +#line 3020 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 148: +#line 678 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x38); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } +#line 3026 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 149: +#line 681 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x29); O2 ((yyvsp[-3].exp)); } +#line 3032 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 150: +#line 684 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x28); O2 ((yyvsp[-5].exp)); } +#line 3038 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 151: +#line 687 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x39); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } +#line 3044 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 152: +#line 690 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x39, 0, 0); O1 ((yyvsp[0].exp)); } +#line 3050 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 153: +#line 693 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x49); O2 ((yyvsp[-3].exp)); } +#line 3056 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 154: +#line 696 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x49, 0, 0); } +#line 3062 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 155: +#line 699 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x48); O2 ((yyvsp[-5].exp)); } +#line 3068 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 156: +#line 702 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x48, 0, 0); } +#line 3074 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 157: +#line 704 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3080 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 158: +#line 705 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xc8); O1 ((yyvsp[-5].exp)); O1 ((yyvsp[-1].exp)); } +#line 3086 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 159: +#line 707 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3092 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 160: +#line 708 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xc8, 0); O1 ((yyvsp[-1].exp)); } +#line 3098 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 161: +#line 710 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3104 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 162: +#line 711 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x88); O1 ((yyvsp[-2].exp)); } +#line 3110 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 163: +#line 713 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3116 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 164: +#line 714 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x88, 0); } +#line 3122 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 165: +#line 716 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3128 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 166: +#line 717 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x98); O1 ((yyvsp[-4].exp)); } +#line 3134 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 167: +#line 719 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3140 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 168: +#line 720 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x98, 0); } +#line 3146 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 169: +#line 725 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-2].exp))) + { B2 (0x71, 0x04); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } + else if (expr_is_sfr ((yyvsp[-2].exp))) + { B2 (0x71, 0x0c); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3158 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 170: +#line 734 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x8c); FE ((yyvsp[0].exp), 9, 3); } +#line 3164 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 171: +#line 737 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x0c, (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); } +#line 3170 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 172: +#line 740 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x84); FE ((yyvsp[0].exp), 9, 3); } +#line 3176 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 173: +#line 743 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-4].exp))) + { B2 (0x71, 0x01); FE ((yyvsp[-2].exp), 9, 3); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); } + else if (expr_is_sfr ((yyvsp[-4].exp))) + { B2 (0x71, 0x09); FE ((yyvsp[-2].exp), 9, 3); O1 ((yyvsp[-4].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3188 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 174: +#line 752 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x89); FE ((yyvsp[-2].exp), 9, 3); } +#line 3194 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 175: +#line 755 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x71, 0x09, (yyvsp[-4].regno)); FE ((yyvsp[-2].exp), 9, 3); } +#line 3200 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 176: +#line 758 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0x81); FE ((yyvsp[-2].exp), 9, 3); } +#line 3206 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 177: +#line 763 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xce); O1 ((yyvsp[-3].exp)); } +#line 3212 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 178: +#line 768 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x30); O2 ((yyvsp[0].exp)); } +#line 3218 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 179: +#line 771 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x30); F ((yyvsp[-3].regno), 5, 2); O2 ((yyvsp[0].exp)); } +#line 3224 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 180: +#line 773 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3230 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 181: +#line 774 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-4].exp))) + { B1 (0xc9); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); } + else if (expr_is_sfr ((yyvsp[-4].exp))) + { B1 (0xcb); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3242 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 182: +#line 782 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3248 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 183: +#line 783 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-1].exp))) + { B1 (0xad); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } + else if (expr_is_sfr ((yyvsp[-1].exp))) + { B1 (0xae); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3260 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 184: +#line 791 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3266 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 185: +#line 792 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_saddr ((yyvsp[-3].exp))) + { B1 (0xbd); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); } + else if (expr_is_sfr ((yyvsp[-3].exp))) + { B1 (0xbe); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3278 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 186: +#line 801 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x11); F ((yyvsp[0].regno), 5, 2); } +#line 3284 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 187: +#line 804 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x10); F ((yyvsp[-2].regno), 5, 2); } +#line 3290 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 188: +#line 807 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xaf); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 3296 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 189: +#line 810 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xbf); O2 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } +#line 3302 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 190: +#line 813 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa9); } +#line 3308 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 191: +#line 816 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xb9); } +#line 3314 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 192: +#line 819 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xaa); O1 ((yyvsp[-1].exp)); } +#line 3320 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 193: +#line 822 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xba); O1 ((yyvsp[-3].exp)); } +#line 3326 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 194: +#line 825 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xab); } +#line 3332 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 195: +#line 828 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xbb); } +#line 3338 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 196: +#line 831 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xac); O1 ((yyvsp[-1].exp)); } +#line 3344 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 197: +#line 834 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xbc); O1 ((yyvsp[-3].exp)); } +#line 3350 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 198: +#line 837 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x59); O2 ((yyvsp[-3].exp)); } +#line 3356 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 199: +#line 840 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x58); O2 ((yyvsp[-5].exp)); } +#line 3362 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 200: +#line 843 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x69); O2 ((yyvsp[-3].exp)); } +#line 3368 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 201: +#line 846 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x68); O2 ((yyvsp[-5].exp)); } +#line 3374 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 202: +#line 849 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x79); O2 ((yyvsp[-3].exp)); } +#line 3380 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 203: +#line 852 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x79, 0, 0); } +#line 3386 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 204: +#line 855 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x78); O2 ((yyvsp[-5].exp)); } +#line 3392 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 205: +#line 858 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0x78, 0, 0); } +#line 3398 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 206: +#line 860 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3404 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 207: +#line 861 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xa8); O1 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp));} +#line 3410 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 208: +#line 863 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3416 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 209: +#line 864 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xa8, 0); } +#line 3422 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 210: +#line 866 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3428 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 211: +#line 867 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xb8); O1 ((yyvsp[-4].exp)); WA((yyvsp[-4].exp)); } +#line 3434 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 212: +#line 869 "./config/rl78-parse.y" /* yacc.c:1661 */ + {NOT_ES} +#line 3440 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 213: +#line 870 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xb8, 0); } +#line 3446 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 214: +#line 872 "./config/rl78-parse.y" /* yacc.c:1661 */ + {SA((yyvsp[0].exp))} +#line 3452 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 215: +#line 873 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xca); F ((yyvsp[-3].regno), 2, 2); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } +#line 3458 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 216: +#line 876 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xcb); F ((yyvsp[-4].regno), 2, 2); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 3464 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 217: +#line 879 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xcb, 0xf8); O2 ((yyvsp[0].exp)); } +#line 3470 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 218: +#line 882 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xbe, 0xf8); } +#line 3476 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 219: +#line 885 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0xae, 0xf8); } +#line 3482 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 220: +#line 888 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B3 (0xcb, 0xf8, 0xff); F ((yyvsp[-2].regno), 2, 2); } +#line 3488 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 221: +#line 893 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x00); } +#line 3494 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 222: +#line 898 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x71, 0xc0); } +#line 3500 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 223: +#line 903 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xc0); F ((yyvsp[0].regno), 5, 2); } +#line 3506 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 224: +#line 906 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xcd); } +#line 3512 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 225: +#line 909 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xc1); F ((yyvsp[0].regno), 5, 2); } +#line 3518 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 226: +#line 912 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xdd); } +#line 3524 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 227: +#line 917 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0xd7); } +#line 3530 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 228: +#line 920 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xfc); } +#line 3536 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 229: +#line 923 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xec); } +#line 3542 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 230: +#line 928 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xeb); } + } +#line 3550 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 231: +#line 933 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xdc); } + } +#line 3558 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 232: +#line 938 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xee); } + } +#line 3566 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 233: +#line 943 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xfe); } + } +#line 3574 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 234: +#line 948 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xdb); } + } +#line 3582 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 235: +#line 953 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) + { B2 (0x61, 0xfb);} + } +#line 3590 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 236: +#line 960 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) + { B2 (0x31, 0x0b); FE ((yyvsp[0].exp), 9, 3); } + } +#line 3598 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 237: +#line 965 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) + { B2 (0x31, 0x0f); FE ((yyvsp[0].exp), 8, 4); } + } +#line 3606 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 238: +#line 972 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xcf); } +#line 3612 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 239: +#line 975 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xdf); } +#line 3618 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 240: +#line 978 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xef); } +#line 3624 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 241: +#line 981 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xff); } +#line 3630 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 242: +#line 986 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) + { B2 (0x31, 0x09); FE ((yyvsp[0].exp), 9, 3); } + } +#line 3638 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 243: +#line 991 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) + { B2 (0x31, 0x08); FE ((yyvsp[0].exp), 9, 3); } + } +#line 3646 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 244: +#line 996 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) + { B2 (0x31, 0x07); FE ((yyvsp[0].exp), 9, 3); } + } +#line 3654 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 245: +#line 1001 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) + { B2 (0x31, 0x0d); FE ((yyvsp[0].exp), 8, 4); } + } +#line 3662 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 246: +#line 1006 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) + { B2 (0x31, 0x0c); FE ((yyvsp[0].exp), 8, 4); } + } +#line 3670 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 247: +#line 1013 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) + { B2 (0x31, 0x0a); FE ((yyvsp[0].exp), 9, 3); } + } +#line 3678 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 248: +#line 1018 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) + { B2 (0x31, 0x0e); FE ((yyvsp[0].exp), 8, 4); } + } +#line 3686 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 249: +#line 1025 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xc8); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3692 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 250: +#line 1028 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xe3); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3698 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 251: +#line 1031 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xd8); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3704 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 252: +#line 1034 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xf3); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3710 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 253: +#line 1037 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xf8); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3716 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 254: +#line 1040 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xe8); rl78_relax (RL78_RELAX_BRANCH, 0); } +#line 3722 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 255: +#line 1045 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xfd); } +#line 3728 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 256: +#line 1050 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) == 0) /* X */ + { B1 (0x08); } + else + { B2 (0x61, 0x88); F ((yyvsp[0].regno), 13, 3); } + } +#line 3738 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 257: +#line 1057 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xaa); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } +#line 3744 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 258: +#line 1060 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xae); } +#line 3750 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 259: +#line 1063 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xaf); O1 ((yyvsp[-1].exp)); } +#line 3756 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 260: +#line 1066 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xac); } +#line 3762 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 261: +#line 1069 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xad); O1 ((yyvsp[-1].exp)); } +#line 3768 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 262: +#line 1072 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xb9); } +#line 3774 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 263: +#line 1075 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B2 (0x61, 0xa9); } +#line 3780 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 264: +#line 1078 "./config/rl78-parse.y" /* yacc.c:1661 */ + { if (expr_is_sfr ((yyvsp[0].exp))) + { B2 (0x61, 0xab); O1 ((yyvsp[0].exp)); } + else if (expr_is_saddr ((yyvsp[0].exp))) + { B2 (0x61, 0xa8); SET_SA ((yyvsp[0].exp)); O1 ((yyvsp[0].exp)); } + else + NOT_SFR_OR_SADDR; + } +#line 3792 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 265: +#line 1089 "./config/rl78-parse.y" /* yacc.c:1661 */ + { B1 (0x31); F ((yyvsp[0].regno), 5, 2); } +#line 3798 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 267: +#line 1099 "./config/rl78-parse.y" /* yacc.c:1661 */ + { rl78_prefix (0x11); } +#line 3804 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 268: +#line 1102 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; } +#line 3810 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 269: +#line 1103 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3816 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 270: +#line 1104 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3822 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 271: +#line 1105 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 3; } +#line 3828 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 272: +#line 1106 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 4; } +#line 3834 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 273: +#line 1107 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 5; } +#line 3840 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 274: +#line 1108 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 6; } +#line 3846 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 275: +#line 1109 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 7; } +#line 3852 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 276: +#line 1112 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; } +#line 3858 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 277: +#line 1113 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3864 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 278: +#line 1114 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 3; } +#line 3870 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 279: +#line 1115 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 4; } +#line 3876 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 280: +#line 1116 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 5; } +#line 3882 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 281: +#line 1117 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 6; } +#line 3888 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 282: +#line 1118 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 7; } +#line 3894 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 283: +#line 1121 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; } +#line 3900 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 284: +#line 1122 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3906 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 285: +#line 1123 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3912 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 286: +#line 1124 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 3; } +#line 3918 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 287: +#line 1127 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3924 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 288: +#line 1128 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3930 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 289: +#line 1129 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 3; } +#line 3936 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 290: +#line 1132 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xf8; } +#line 3942 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 291: +#line 1133 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xf9; } +#line 3948 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 292: +#line 1134 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xfa; } +#line 3954 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 293: +#line 1135 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xfc; } +#line 3960 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 294: +#line 1136 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xfd; } +#line 3966 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 295: +#line 1137 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xfe; } +#line 3972 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 296: +#line 1138 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0xff; } +#line 3978 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 297: +#line 1144 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 3984 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 298: +#line 1145 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x10; } +#line 3990 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 299: +#line 1146 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x20; } +#line 3996 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 300: +#line 1147 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x30; } +#line 4002 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 301: +#line 1148 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x40; } +#line 4008 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 302: +#line 1149 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x50; } +#line 4014 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 303: +#line 1150 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x60; } +#line 4020 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 304: +#line 1151 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x70; } +#line 4026 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 305: +#line 1154 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 4032 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 306: +#line 1155 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x20; } +#line 4038 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 307: +#line 1156 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x40; } +#line 4044 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 308: +#line 1159 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x05; rl78_bit_insn = 1; } +#line 4050 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 309: +#line 1160 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x06; rl78_bit_insn = 1; } +#line 4056 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 310: +#line 1161 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x07; rl78_bit_insn = 1; } +#line 4062 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 311: +#line 1164 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x02; rl78_bit_insn = 1; rl78_linkrelax_branch (); } +#line 4068 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 312: +#line 1165 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x04; rl78_bit_insn = 1; rl78_linkrelax_branch (); } +#line 4074 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 313: +#line 1166 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; rl78_bit_insn = 1; } +#line 4080 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 314: +#line 1169 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; rl78_bit_insn = 1; } +#line 4086 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 315: +#line 1170 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; rl78_bit_insn = 1; } +#line 4092 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 316: +#line 1173 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 4098 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 317: +#line 1174 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x10; } +#line 4104 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 318: +#line 1177 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 4110 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 319: +#line 1178 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x10; } +#line 4116 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 320: +#line 1181 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 4122 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 321: +#line 1182 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x10; } +#line 4128 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 322: +#line 1185 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x00; } +#line 4134 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 323: +#line 1186 "./config/rl78-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0x10; } +#line 4140 "rl78-parse.c" /* yacc.c:1661 */ + break; + + case 324: +#line 1189 "./config/rl78-parse.y" /* yacc.c:1661 */ + { rl78_bit_insn = 1; } +#line 4146 "rl78-parse.c" /* yacc.c:1661 */ + break; + + +#line 4150 "rl78-parse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 1192 "./config/rl78-parse.y" /* yacc.c:1906 */ + +/* ====================================================================== */ + +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 1; + + 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..aac72f4071f --- /dev/null +++ b/gas/rl78-parse.h @@ -0,0 +1,307 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_RL78_RL_PARSE_H_INCLUDED +# define YY_RL78_RL_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int rl78_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 144 "./config/rl78-parse.y" /* yacc.c:1915 */ + + int regno; + expressionS exp; + +#line 297 "rl78-parse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE rl78_lval; + +int rl78_parse (void); + +#endif /* !YY_RL78_RL_PARSE_H_INCLUDED */ diff --git a/gas/rx-parse.c b/gas/rx-parse.c new file mode 100644 index 00000000000..74e1c59525f --- /dev/null +++ b/gas/rx-parse.c @@ -0,0 +1,4678 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + +/* Substitute the variable and function names. */ +#define yyparse rx_parse +#define yylex rx_lex +#define yyerror rx_error +#define yydebug rx_debug +#define yynerrs rx_nerrs + +#define yylval rx_lval +#define yychar rx_char + +/* Copy the first part of user declarations. */ +#line 20 "./config/rx-parse.y" /* yacc.c:339 */ + + +#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 void rx_check_v2 (void); + +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 + + +#line 187 "rx-parse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_RX_RX_PARSE_H_INCLUDED +# define YY_RX_RX_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int rx_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + REG = 258, + FLAG = 259, + CREG = 260, + ACC = 261, + EXPR = 262, + UNKNOWN_OPCODE = 263, + IS_OPCODE = 264, + DOT_S = 265, + DOT_B = 266, + DOT_W = 267, + DOT_L = 268, + DOT_A = 269, + DOT_UB = 270, + DOT_UW = 271, + ABS = 272, + ADC = 273, + ADD = 274, + AND_ = 275, + BCLR = 276, + BCND = 277, + BMCND = 278, + BNOT = 279, + BRA = 280, + BRK = 281, + BSET = 282, + BSR = 283, + BTST = 284, + CLRPSW = 285, + CMP = 286, + DBT = 287, + DIV = 288, + DIVU = 289, + EDIV = 290, + EDIVU = 291, + EMACA = 292, + EMSBA = 293, + EMUL = 294, + EMULA = 295, + EMULU = 296, + FADD = 297, + FCMP = 298, + FDIV = 299, + FMUL = 300, + FREIT = 301, + FSUB = 302, + FSQRT = 303, + FTOI = 304, + FTOU = 305, + INT = 306, + ITOF = 307, + JMP = 308, + JSR = 309, + MACHI = 310, + MACLH = 311, + MACLO = 312, + MAX = 313, + MIN = 314, + MOV = 315, + MOVCO = 316, + MOVLI = 317, + MOVU = 318, + MSBHI = 319, + MSBLH = 320, + MSBLO = 321, + MUL = 322, + MULHI = 323, + MULLH = 324, + MULLO = 325, + MULU = 326, + MVFACHI = 327, + MVFACGU = 328, + MVFACMI = 329, + MVFACLO = 330, + MVFC = 331, + MVTACGU = 332, + MVTACHI = 333, + MVTACLO = 334, + MVTC = 335, + MVTIPL = 336, + NEG = 337, + NOP = 338, + NOT = 339, + OR = 340, + POP = 341, + POPC = 342, + POPM = 343, + PUSH = 344, + PUSHA = 345, + PUSHC = 346, + PUSHM = 347, + RACL = 348, + RACW = 349, + RDACL = 350, + RDACW = 351, + REIT = 352, + REVL = 353, + REVW = 354, + RMPA = 355, + ROLC = 356, + RORC = 357, + ROTL = 358, + ROTR = 359, + ROUND = 360, + RTE = 361, + RTFI = 362, + RTS = 363, + RTSD = 364, + SAT = 365, + SATR = 366, + SBB = 367, + SCCND = 368, + SCMPU = 369, + SETPSW = 370, + SHAR = 371, + SHLL = 372, + SHLR = 373, + SMOVB = 374, + SMOVF = 375, + SMOVU = 376, + SSTR = 377, + STNZ = 378, + STOP = 379, + STZ = 380, + SUB = 381, + SUNTIL = 382, + SWHILE = 383, + TST = 384, + UTOF = 385, + WAIT = 386, + XCHG = 387, + XOR = 388 + }; +#endif +/* Tokens. */ +#define REG 258 +#define FLAG 259 +#define CREG 260 +#define ACC 261 +#define EXPR 262 +#define UNKNOWN_OPCODE 263 +#define IS_OPCODE 264 +#define DOT_S 265 +#define DOT_B 266 +#define DOT_W 267 +#define DOT_L 268 +#define DOT_A 269 +#define DOT_UB 270 +#define DOT_UW 271 +#define ABS 272 +#define ADC 273 +#define ADD 274 +#define AND_ 275 +#define BCLR 276 +#define BCND 277 +#define BMCND 278 +#define BNOT 279 +#define BRA 280 +#define BRK 281 +#define BSET 282 +#define BSR 283 +#define BTST 284 +#define CLRPSW 285 +#define CMP 286 +#define DBT 287 +#define DIV 288 +#define DIVU 289 +#define EDIV 290 +#define EDIVU 291 +#define EMACA 292 +#define EMSBA 293 +#define EMUL 294 +#define EMULA 295 +#define EMULU 296 +#define FADD 297 +#define FCMP 298 +#define FDIV 299 +#define FMUL 300 +#define FREIT 301 +#define FSUB 302 +#define FSQRT 303 +#define FTOI 304 +#define FTOU 305 +#define INT 306 +#define ITOF 307 +#define JMP 308 +#define JSR 309 +#define MACHI 310 +#define MACLH 311 +#define MACLO 312 +#define MAX 313 +#define MIN 314 +#define MOV 315 +#define MOVCO 316 +#define MOVLI 317 +#define MOVU 318 +#define MSBHI 319 +#define MSBLH 320 +#define MSBLO 321 +#define MUL 322 +#define MULHI 323 +#define MULLH 324 +#define MULLO 325 +#define MULU 326 +#define MVFACHI 327 +#define MVFACGU 328 +#define MVFACMI 329 +#define MVFACLO 330 +#define MVFC 331 +#define MVTACGU 332 +#define MVTACHI 333 +#define MVTACLO 334 +#define MVTC 335 +#define MVTIPL 336 +#define NEG 337 +#define NOP 338 +#define NOT 339 +#define OR 340 +#define POP 341 +#define POPC 342 +#define POPM 343 +#define PUSH 344 +#define PUSHA 345 +#define PUSHC 346 +#define PUSHM 347 +#define RACL 348 +#define RACW 349 +#define RDACL 350 +#define RDACW 351 +#define REIT 352 +#define REVL 353 +#define REVW 354 +#define RMPA 355 +#define ROLC 356 +#define RORC 357 +#define ROTL 358 +#define ROTR 359 +#define ROUND 360 +#define RTE 361 +#define RTFI 362 +#define RTS 363 +#define RTSD 364 +#define SAT 365 +#define SATR 366 +#define SBB 367 +#define SCCND 368 +#define SCMPU 369 +#define SETPSW 370 +#define SHAR 371 +#define SHLL 372 +#define SHLR 373 +#define SMOVB 374 +#define SMOVF 375 +#define SMOVU 376 +#define SSTR 377 +#define STNZ 378 +#define STOP 379 +#define STZ 380 +#define SUB 381 +#define SUNTIL 382 +#define SWHILE 383 +#define TST 384 +#define UTOF 385 +#define WAIT 386 +#define XCHG 387 +#define XOR 388 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 135 "./config/rx-parse.y" /* yacc.c:355 */ + + int regno; + expressionS exp; + +#line 498 "rx-parse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE rx_lval; + +int rx_parse (void); + +#endif /* !YY_RX_RX_PARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 513 "rx-parse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 255 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 780 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 140 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 76 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 294 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 760 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 388 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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, 134, 2, 2, 2, 2, + 2, 2, 2, 139, 135, 138, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 136, 2, 137, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 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 +}; + +#if YYDEBUG + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 178, 178, 183, 186, 189, 192, 197, 212, 215, + 220, 229, 234, 242, 245, 250, 252, 254, 259, 277, + 280, 283, 286, 294, 300, 308, 317, 322, 325, 330, + 335, 338, 346, 353, 361, 367, 373, 379, 385, 393, + 403, 408, 408, 409, 409, 410, 410, 414, 427, 440, + 445, 450, 452, 457, 462, 464, 466, 471, 476, 481, + 491, 501, 503, 508, 510, 512, 514, 519, 521, 523, + 525, 530, 532, 534, 539, 544, 546, 548, 550, 555, + 561, 569, 583, 588, 593, 598, 603, 608, 610, 612, + 617, 622, 622, 623, 623, 624, 624, 625, 625, 626, + 626, 627, 627, 628, 628, 629, 629, 630, 630, 631, + 631, 632, 632, 633, 633, 634, 634, 635, 635, 636, + 636, 640, 640, 641, 641, 642, 642, 643, 643, 644, + 644, 648, 650, 652, 654, 657, 659, 661, 663, 668, + 668, 669, 669, 670, 670, 671, 671, 672, 672, 673, + 673, 674, 674, 675, 675, 676, 676, 683, 685, 690, + 696, 702, 704, 706, 708, 710, 712, 714, 716, 722, + 724, 726, 728, 730, 732, 732, 733, 735, 735, 736, + 738, 738, 739, 747, 758, 760, 765, 767, 772, 774, + 779, 779, 780, 780, 781, 781, 782, 782, 786, 794, + 801, 803, 808, 815, 821, 826, 829, 832, 837, 837, + 838, 838, 839, 839, 840, 840, 841, 841, 846, 851, + 856, 861, 863, 865, 867, 869, 871, 873, 875, 877, + 877, 878, 880, 888, 896, 912, 914, 916, 918, 925, + 927, 935, 937, 939, 945, 950, 951, 955, 956, 960, + 962, 967, 972, 972, 974, 979, 981, 983, 990, 994, + 996, 998, 1002, 1004, 1006, 1008, 1013, 1013, 1016, 1020, + 1020, 1023, 1023, 1029, 1029, 1053, 1054, 1057, 1057, 1062, + 1063, 1064, 1065, 1066, 1069, 1070, 1071, 1072, 1075, 1076, + 1077, 1080, 1081, 1084, 1085 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", "ACC", "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", "EMACA", "EMSBA", "EMUL", "EMULA", + "EMULU", "FADD", "FCMP", "FDIV", "FMUL", "FREIT", "FSUB", "FSQRT", + "FTOI", "FTOU", "INT", "ITOF", "JMP", "JSR", "MACHI", "MACLH", "MACLO", + "MAX", "MIN", "MOV", "MOVCO", "MOVLI", "MOVU", "MSBHI", "MSBLH", "MSBLO", + "MUL", "MULHI", "MULLH", "MULLO", "MULU", "MVFACHI", "MVFACGU", + "MVFACMI", "MVFACLO", "MVFC", "MVTACGU", "MVTACHI", "MVTACLO", "MVTC", + "MVTIPL", "NEG", "NOP", "NOT", "OR", "POP", "POPC", "POPM", "PUSH", + "PUSHA", "PUSHC", "PUSHM", "RACL", "RACW", "RDACL", "RDACW", "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", "UTOF", "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", "$@39", "$@40", "$@41", "$@42", "$@43", "$@44", "$@45", + "op_subadd", "op_dp20_rm_l", "op_dp20_rm", "op_dp20_i", "op_dp20_rim", + "op_dp20_rim_l", "op_dp20_rr", "op_dp20_r", "op_dp20_ri", "$@46", + "op_xchg", "op_shift_rot", "op_shift", "float3_op", "float2_op", "$@47", + "float2_op_ni", "$@48", "$@49", "mvfa_op", "$@50", "disp", "flag", + "$@51", "memex", "bwl", "bw", "opt_l", "opt_b", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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, 35, 44, 91, 93, 45, 43 +}; +# endif + +#define YYPACT_NINF -600 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-600))) + +#define YYTABLE_NINF -270 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = +{ + 645, -600, -600, -600, -128, -112, 14, 114, -98, 24, + 71, -600, 28, 60, 29, -600, 16, -600, -600, -600, + 46, 48, -75, 68, -45, -600, -600, -600, -600, -600, + -600, -600, -600, -39, -600, 98, 112, 132, 151, 167, + -600, -600, 34, 169, 54, 57, 194, 203, 205, 81, + 213, 214, 215, 216, -600, 217, 219, 220, 221, 223, + 224, 30, 95, -600, -600, -600, 96, 225, 226, 230, + 148, 229, 232, 104, 105, 106, 108, -600, -600, 148, + 238, 240, 110, 111, -600, -600, -600, -600, 113, 243, + -600, 115, 199, -600, -600, -600, -600, -600, -600, -600, + -600, 148, -600, -600, 116, 148, 148, -600, -600, -600, + -600, -600, 248, 249, 21, 244, 5, 246, 5, 120, + 250, -600, 251, 252, 254, 255, 121, 256, -600, 257, + 258, 259, -600, 261, 266, 135, 264, -600, 267, 268, + 270, 141, 271, -600, 273, 144, -600, 274, 146, 22, + 22, 145, 149, 152, 6, 150, 152, 6, 23, 31, + 31, 23, 23, 280, 280, 280, 281, 6, -600, -600, + 154, 155, 156, 22, 22, 153, 158, 159, 287, 0, + 160, 293, -600, -600, 7, 162, 163, 164, 295, 5, + 165, 168, 170, -600, -600, -600, -600, -600, -600, -600, + 171, 172, 173, 174, 175, 297, 304, 249, 249, 305, + 5, -600, -600, 176, -600, -600, -600, 58, -600, 177, + 306, 309, 310, 311, 316, 316, -600, -600, -600, 313, + 316, 314, 316, 280, 315, -600, 317, 89, 320, 318, + -600, 32, 32, 32, -600, 152, 152, 319, 5, -600, + -600, 22, 6, 6, 22, -600, 193, -600, 196, 322, + -600, -600, -600, 191, 198, 201, -600, 204, 206, -600, + 124, 207, -600, -600, -600, 208, 179, 209, -600, -600, + -600, -600, -600, 181, 210, -600, -600, -600, 184, 211, + -600, 327, 212, 329, 218, -600, -600, -600, 222, -600, + 331, 332, -600, 227, -600, 228, 334, -600, -600, 231, + 341, -600, 233, -600, 234, -600, 335, 318, -600, -600, + -600, -600, -600, -600, -600, -600, 336, 346, 347, -600, + -600, 344, 345, 348, 235, 236, 237, -1, 239, 241, + 242, 245, 1, 351, 353, 354, 247, -600, 356, 357, + 358, -600, 253, -600, -600, -600, 360, 359, 361, 366, + 369, 260, -600, -600, -600, 265, -600, 373, -600, 263, + 376, 275, 276, 277, 278, 279, -600, -600, 282, -600, + 283, -600, -600, 284, 285, -600, -600, 269, 377, -600, + -600, -600, -600, -600, -600, 380, -600, 286, -600, -600, + -600, -600, -600, 382, 383, 288, 385, 386, 387, 388, + 389, -600, 272, 186, 189, -600, 289, 192, -600, 290, + 195, -600, 291, 197, -600, 390, 292, 391, 393, 296, + 298, 399, 400, 299, 403, 300, 406, 408, 301, 294, + 302, 303, 307, 308, 312, 321, 413, 8, 419, -7, + 421, 425, 323, 429, 436, 40, 437, 324, 325, 326, + 438, 328, 330, 333, 439, -600, -600, -600, -600, -600, + 375, 441, -600, 442, -600, 443, 444, 445, 446, 450, + 451, 452, 454, 459, 461, 337, 338, -600, 463, -600, + -600, 464, 339, 340, 342, 343, -600, 466, -600, 349, + -600, 350, 467, -600, 352, 468, -600, 355, 471, -600, + 362, -600, 75, -600, 363, 472, 473, -600, 364, 475, + 367, 479, 368, 371, 480, 481, 483, 484, 486, 11, + 33, 13, -600, -600, 372, 2, 370, 490, 374, 379, + 381, 384, 491, -600, 392, 492, 395, 394, 396, 493, + 497, 498, -600, 504, 505, 506, 397, -600, -600, 398, + -600, -600, -600, -600, -600, -600, -600, 401, -600, 404, + 494, 514, -600, -600, 435, 516, 517, 94, 405, 519, + 520, 407, 521, 409, 522, 410, 523, -600, -600, -600, + 402, -600, 414, 101, -600, -600, 107, -600, 524, -600, + 435, 525, -600, 411, -600, -600, -600, 531, 415, 533, + 416, -600, 535, 417, 537, 41, 540, 420, 422, 200, + 423, 426, -600, -600, 428, 427, 542, 430, 431, -600, + -600, -600, -600, -600, -600, 544, -600, 551, -600, 432, + -600, 433, -600, -600, 434, 440, 476, 447, 448, 476, + 449, 476, 453, 476, 455, 553, 554, 456, 458, 460, + 462, -600, 465, -600, 435, 457, 557, 469, 567, 470, + 568, 474, 569, -600, 477, 478, 202, 482, -600, 485, + 570, 571, 573, 487, -600, 574, 575, 488, -600, 576, + 577, 578, 579, -600, -600, 572, 476, -600, 476, -600, + 585, -600, 587, -600, -600, 584, 586, 596, 598, 599, + 489, -600, 495, -600, 496, -600, 499, -600, 500, -600, + -600, -600, 502, 601, 602, -600, -600, -600, 605, -600, + -600, 606, -600, -600, -600, -600, -600, -600, -600, -600, + -600, -600, -600, -600, -600, -600, 607, -600, -600, -600, + -600, 609, -600, 503, -600, -600, -600, 507, -600, -600 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 2, 97, 95, 210, 214, 0, 0, 0, 0, + 291, 3, 0, 291, 0, 277, 275, 4, 107, 109, + 0, 0, 121, 0, 123, 143, 141, 147, 145, 139, + 149, 151, 153, 0, 127, 0, 0, 0, 0, 0, + 99, 101, 284, 0, 0, 288, 0, 0, 0, 212, + 0, 0, 0, 174, 229, 177, 180, 0, 0, 0, + 0, 0, 0, 93, 6, 115, 216, 0, 0, 0, + 284, 0, 0, 0, 0, 0, 0, 196, 194, 284, + 0, 0, 190, 192, 155, 76, 75, 5, 0, 0, + 78, 91, 284, 67, 277, 43, 45, 41, 69, 70, + 68, 284, 119, 117, 208, 284, 284, 111, 129, 77, + 125, 113, 0, 0, 275, 0, 275, 0, 275, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 292, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 62, 0, 0, 276, 0, 0, 275, + 275, 0, 0, 0, 275, 0, 0, 275, 275, 271, + 271, 275, 275, 271, 271, 271, 0, 275, 63, 64, + 0, 0, 0, 275, 275, 285, 286, 287, 0, 0, + 0, 0, 289, 290, 0, 0, 0, 0, 0, 275, + 0, 0, 0, 173, 273, 273, 176, 273, 179, 273, + 0, 0, 169, 171, 0, 0, 0, 0, 0, 0, + 275, 58, 60, 0, 285, 286, 287, 275, 59, 0, + 0, 0, 0, 0, 0, 0, 74, 56, 55, 0, + 0, 0, 0, 271, 0, 54, 0, 275, 287, 275, + 61, 0, 0, 0, 73, 252, 252, 0, 275, 71, + 72, 275, 275, 275, 275, 1, 250, 98, 0, 0, + 247, 248, 96, 0, 0, 0, 211, 0, 0, 215, + 275, 0, 12, 13, 17, 0, 275, 0, 9, 14, + 15, 8, 65, 275, 0, 16, 11, 66, 275, 0, + 278, 0, 0, 0, 0, 245, 246, 108, 0, 110, + 0, 0, 104, 0, 122, 0, 0, 106, 124, 0, + 0, 144, 0, 142, 0, 268, 0, 275, 148, 146, + 140, 150, 152, 154, 50, 128, 0, 0, 0, 100, + 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, + 0, 175, 0, 230, 178, 181, 0, 0, 0, 0, + 0, 0, 79, 94, 116, 0, 217, 0, 57, 0, + 0, 0, 182, 0, 0, 0, 197, 195, 0, 191, + 0, 193, 156, 40, 0, 92, 157, 0, 0, 261, + 44, 46, 42, 254, 120, 0, 118, 0, 209, 112, + 130, 126, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 132, 0, 275, 275, 134, 0, 275, 131, 0, + 275, 133, 0, 275, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 165, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 0, 163, 0, 199, 231, 170, 172, 198, + 0, 0, 48, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 253, 0, 249, + 239, 0, 0, 34, 235, 0, 36, 0, 52, 0, + 203, 0, 0, 204, 0, 0, 51, 0, 0, 53, + 0, 33, 281, 241, 0, 0, 0, 255, 0, 0, + 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 85, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 202, 37, 0, + 232, 183, 233, 234, 258, 200, 201, 0, 218, 0, + 0, 0, 32, 244, 291, 0, 0, 281, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 280, 282, + 0, 283, 0, 281, 221, 222, 281, 223, 0, 262, + 291, 0, 270, 0, 166, 224, 168, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 275, + 0, 0, 219, 220, 0, 0, 0, 0, 0, 225, + 226, 227, 162, 228, 164, 0, 90, 0, 158, 259, + 251, 0, 49, 238, 0, 0, 293, 0, 0, 293, + 0, 293, 0, 293, 0, 0, 0, 0, 0, 0, + 0, 265, 0, 267, 291, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 275, 0, 86, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 25, 0, + 0, 0, 0, 294, 136, 0, 293, 138, 293, 135, + 0, 137, 0, 27, 28, 0, 0, 0, 0, 0, + 0, 19, 0, 20, 0, 21, 0, 80, 0, 184, + 185, 81, 0, 0, 0, 186, 187, 31, 0, 188, + 189, 0, 260, 240, 236, 237, 88, 159, 160, 87, + 89, 242, 243, 256, 257, 264, 0, 22, 23, 24, + 205, 0, 206, 0, 207, 274, 272, 0, 83, 84 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -600, -600, -600, -600, -600, -600, -600, -600, -600, -600, + -600, -600, -600, -600, -600, -600, -600, -600, -600, -600, + -600, -600, -600, -600, -600, -600, -600, -600, -600, -600, + -600, -600, -600, -600, -600, -600, -600, -600, -600, -600, + -600, -600, -600, -600, -600, -600, -600, -81, 412, -600, + -93, -80, -600, -131, -600, 534, -600, -119, -168, -139, + 52, 501, -600, -122, -600, -600, -14, -600, -16, 526, + -600, -538, -26, -600, -12, -599 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 112, 243, 241, 242, 237, 207, 114, 113, 173, + 174, 153, 156, 149, 150, 251, 254, 208, 246, 245, + 154, 157, 253, 167, 252, 162, 159, 158, 161, 160, + 163, 164, 165, 233, 194, 197, 199, 230, 232, 225, + 224, 248, 116, 189, 118, 210, 195, 266, 260, 295, + 296, 297, 262, 257, 487, 394, 395, 304, 389, 390, + 311, 313, 314, 315, 316, 317, 351, 352, 298, 143, + 144, 592, 179, 184, 134, 694 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 148, 140, 449, 335, 455, 615, 115, 336, 265, 303, + 340, 533, 146, 146, 341, 534, 611, 119, 146, 145, + 146, 261, 117, 146, 258, 294, 309, 126, 146, 146, + 146, 135, 141, 204, -269, 375, 125, 269, 308, 645, + 146, 321, 322, 323, 217, 175, 176, 177, 325, 151, + 697, 152, 699, 226, 701, 658, 376, 377, 660, -103, + 302, 368, 379, 307, 381, 146, 239, 137, 182, 183, + 299, 155, 138, 132, 139, 244, 363, 364, 128, 249, + 250, 129, 130, 131, 132, 133, 587, 588, 589, -105, + 590, 591, 258, 329, 330, 166, 146, 737, 263, 738, + 267, 168, 267, 391, 392, 587, 588, 589, 347, 644, + 591, 382, 587, 588, 589, 169, 657, 591, 587, 588, + 589, 121, 659, 591, 122, 123, 124, 411, 537, 366, + 538, 146, 539, 400, 401, 170, 337, 450, 305, 456, + 616, 305, 312, 342, 535, 312, 312, 607, 120, 612, + 147, 305, 393, 393, 171, 259, 259, 310, 127, 214, + 215, 216, 136, 142, 205, -266, 388, 398, 178, 609, + 172, 399, 180, 267, 402, 545, 672, 546, 673, 547, + 674, 353, 415, 354, 418, 355, 146, 421, 146, 498, + 181, 146, 500, 146, 267, 503, 146, 185, 506, 146, + 509, 369, 146, 678, 146, 721, 186, 146, 187, 146, + 214, 215, 238, 319, 320, 188, 190, 191, 192, 193, + 196, 263, 198, 387, 201, 200, 202, 203, 211, 206, + 209, 212, 267, 213, 218, 219, 305, 305, 220, 221, + 222, 227, 223, 228, 229, 231, 235, 234, 255, 236, + 247, 264, 256, 268, 412, 270, 276, 271, 272, 273, + 416, 274, 275, 277, 278, 279, 280, 419, 281, 282, + 283, 284, 422, 287, 285, 286, 288, 290, 289, 291, + 300, 292, 293, -269, 301, 306, 259, 331, 324, 326, + 327, 328, 332, 333, 334, 338, 339, 343, 344, 345, + 348, 439, 346, 349, 361, 350, 356, 357, 358, 359, + 360, 362, 365, 371, 367, 370, 372, 373, 374, 375, + 378, 380, 383, 386, 384, 146, 397, 406, 403, 405, + 424, 404, 426, 407, 429, 430, 408, 433, 438, 440, + 409, 410, 413, 414, 417, 420, 423, 425, 435, 441, + 442, 443, 444, 427, 457, 445, 458, 459, 428, 461, + 462, 463, 431, 465, 432, 466, 434, 467, 437, 436, + 446, 447, 468, 448, 469, 451, 472, 453, 452, 474, + 557, 454, 460, 486, 485, 489, 490, 464, 492, 493, + 494, 495, 496, 511, 513, 470, 514, 499, 501, 473, + 471, 504, 517, 518, 507, 484, 520, 510, 497, 522, + 475, 476, 477, 478, 479, 523, 532, 480, 481, 482, + 483, 488, 536, 491, 540, 502, 505, 508, 541, 512, + 525, 515, 543, 516, 519, 521, 524, 526, 527, 544, + 548, 552, 528, 529, 558, 559, 556, 530, 132, 560, + 561, 562, 563, 564, 565, 566, 531, 567, 542, 549, + 550, 551, 568, 553, 569, 554, 572, 573, 555, 578, + 581, 583, 570, 571, 585, 575, 574, 576, 594, 595, + 577, 597, 599, 602, 603, 579, 580, 693, 582, 604, + 605, 584, 606, 618, 623, 625, 0, 639, 586, 629, + 593, 596, 598, 630, 631, 600, 601, 617, 614, 619, + 632, 633, 634, 608, 610, 613, 620, 640, 621, 642, + 643, 622, 647, 648, 650, 652, 654, 661, 663, 624, + 626, 627, 635, 628, 665, 636, 667, 655, 669, 637, + 671, 638, 646, 675, 649, 684, 651, 653, 664, 656, + 687, 666, 668, 670, 688, 676, 703, 704, 680, 677, + 712, 681, 641, 682, 683, 685, 686, 689, 690, 691, + 714, 716, 718, 725, 726, 692, 727, 729, 730, 732, + 733, 734, 735, 736, 695, 696, 698, 741, 662, 742, + 700, 705, 702, 706, 711, 707, 739, 708, 740, 743, + 709, 744, 745, 679, 752, 753, 713, 715, 754, 755, + 756, 717, 757, 0, 719, 720, 0, 723, 0, 0, + 240, 724, 728, 731, 746, 0, 0, 0, 0, 0, + 0, 0, 747, 748, 0, 0, 749, 750, 751, 0, + 758, 0, 0, 0, 759, 0, 0, 0, 0, 385, + 0, 0, 710, 1, 0, 0, 0, 0, 0, 0, + 722, 318, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 0, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 0, 71, 72, 73, 74, + 75, 76, 0, 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, 0, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, + 396 +}; + +static const yytype_int16 yycheck[] = +{ + 16, 13, 3, 3, 3, 3, 134, 7, 3, 3, + 3, 3, 7, 7, 7, 7, 3, 3, 7, 3, + 7, 114, 134, 7, 3, 3, 3, 3, 7, 7, + 7, 3, 3, 3, 3, 3, 134, 118, 157, 577, + 7, 163, 164, 165, 70, 11, 12, 13, 167, 3, + 649, 3, 651, 79, 653, 593, 224, 225, 596, 134, + 153, 3, 230, 156, 232, 7, 92, 7, 11, 12, + 150, 3, 12, 13, 14, 101, 207, 208, 7, 105, + 106, 10, 11, 12, 13, 14, 11, 12, 13, 134, + 15, 16, 3, 173, 174, 134, 7, 696, 114, 698, + 116, 3, 118, 242, 243, 11, 12, 13, 189, 15, + 16, 233, 11, 12, 13, 3, 15, 16, 11, 12, + 13, 7, 15, 16, 10, 11, 12, 3, 135, 210, + 137, 7, 139, 252, 253, 3, 136, 138, 154, 138, + 138, 157, 158, 136, 136, 161, 162, 136, 134, 136, + 134, 167, 245, 246, 3, 134, 134, 134, 134, 11, + 12, 13, 134, 134, 134, 134, 134, 248, 134, 136, + 3, 251, 3, 189, 254, 135, 135, 137, 137, 139, + 139, 195, 3, 197, 3, 199, 7, 3, 7, 3, + 136, 7, 3, 7, 210, 3, 7, 3, 3, 7, + 3, 217, 7, 3, 7, 3, 3, 7, 3, 7, + 11, 12, 13, 161, 162, 134, 3, 3, 3, 3, + 3, 237, 3, 239, 3, 5, 3, 3, 3, 134, + 134, 5, 248, 3, 5, 3, 252, 253, 134, 134, + 134, 3, 134, 3, 134, 134, 3, 134, 0, 134, + 134, 7, 3, 7, 270, 135, 135, 7, 7, 7, + 276, 7, 7, 7, 7, 7, 7, 283, 7, 3, + 135, 7, 288, 3, 7, 7, 135, 4, 7, 135, + 135, 7, 136, 3, 135, 135, 134, 134, 7, 135, + 135, 135, 134, 134, 7, 135, 3, 135, 135, 135, + 135, 317, 7, 135, 7, 135, 135, 135, 135, 135, + 135, 7, 7, 7, 138, 138, 7, 7, 7, 3, + 7, 7, 7, 3, 7, 7, 7, 136, 135, 7, + 3, 135, 3, 135, 3, 3, 135, 3, 3, 3, + 136, 135, 135, 135, 135, 135, 135, 135, 7, 3, + 3, 7, 7, 135, 3, 7, 3, 3, 136, 3, + 3, 3, 135, 3, 136, 6, 135, 6, 134, 136, + 135, 135, 6, 136, 5, 136, 3, 135, 137, 3, + 5, 136, 135, 3, 7, 3, 3, 134, 3, 3, + 3, 3, 3, 3, 3, 135, 3, 413, 414, 136, + 135, 417, 3, 3, 420, 136, 3, 423, 136, 3, + 135, 135, 135, 135, 135, 7, 3, 135, 135, 135, + 135, 135, 3, 135, 3, 136, 136, 136, 3, 137, + 136, 135, 3, 135, 135, 135, 135, 135, 135, 3, + 3, 3, 135, 135, 3, 3, 7, 135, 13, 6, + 6, 6, 6, 3, 3, 3, 135, 3, 135, 135, + 135, 135, 3, 135, 3, 135, 3, 3, 135, 3, + 3, 3, 135, 135, 3, 135, 137, 135, 6, 6, + 137, 6, 3, 3, 3, 136, 136, 11, 136, 6, + 6, 136, 6, 3, 3, 3, -1, 3, 136, 6, + 137, 137, 135, 6, 6, 137, 135, 137, 136, 135, + 6, 6, 6, 529, 530, 531, 137, 3, 137, 3, + 3, 137, 3, 3, 3, 3, 3, 3, 3, 137, + 135, 137, 135, 137, 3, 137, 3, 135, 3, 138, + 3, 137, 137, 3, 137, 3, 137, 137, 137, 135, + 6, 136, 136, 136, 3, 135, 3, 3, 135, 137, + 3, 135, 574, 135, 137, 135, 135, 135, 135, 135, + 3, 3, 3, 3, 3, 135, 3, 3, 3, 3, + 3, 3, 3, 11, 137, 137, 137, 3, 600, 3, + 137, 135, 137, 135, 137, 135, 11, 135, 11, 3, + 135, 3, 3, 619, 3, 3, 137, 137, 3, 3, + 3, 137, 3, -1, 137, 137, -1, 135, -1, -1, + 94, 136, 135, 135, 135, -1, -1, -1, -1, -1, + -1, -1, 137, 137, -1, -1, 137, 137, 136, -1, + 137, -1, -1, -1, 137, -1, -1, -1, -1, 237, + -1, -1, 664, 8, -1, -1, -1, -1, -1, -1, + 676, 160, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, -1, 37, 38, 39, 40, 41, 42, 43, 44, + 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, -1, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, 93, 94, + 95, 96, -1, 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, -1, + 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, + 246 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 8, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 91, 92, 93, 94, 95, 96, 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, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 141, 148, 147, 134, 182, 134, 184, 3, + 134, 7, 10, 11, 12, 134, 3, 134, 7, 10, + 11, 12, 13, 14, 214, 3, 134, 7, 12, 14, + 214, 3, 134, 209, 210, 3, 7, 134, 208, 153, + 154, 3, 3, 151, 160, 3, 152, 161, 167, 166, + 169, 168, 165, 170, 171, 172, 134, 163, 3, 3, + 3, 3, 3, 149, 150, 11, 12, 13, 134, 212, + 3, 136, 11, 12, 213, 3, 3, 3, 134, 183, + 3, 3, 3, 3, 174, 186, 3, 175, 3, 176, + 5, 3, 3, 3, 3, 134, 134, 146, 157, 134, + 185, 3, 5, 3, 11, 12, 13, 212, 5, 3, + 134, 134, 134, 134, 180, 179, 212, 3, 3, 134, + 177, 134, 178, 173, 134, 3, 134, 145, 13, 212, + 209, 143, 144, 142, 212, 159, 158, 134, 181, 212, + 212, 155, 164, 162, 156, 0, 3, 193, 3, 134, + 188, 190, 192, 208, 7, 3, 187, 208, 7, 187, + 135, 7, 7, 7, 7, 7, 135, 7, 7, 7, + 7, 7, 3, 135, 7, 7, 7, 3, 135, 7, + 4, 135, 7, 136, 3, 189, 190, 191, 208, 191, + 135, 135, 190, 3, 197, 208, 135, 190, 197, 3, + 134, 200, 208, 201, 202, 203, 204, 205, 201, 200, + 200, 203, 203, 203, 7, 197, 135, 135, 135, 191, + 191, 134, 134, 134, 7, 3, 7, 136, 135, 3, + 3, 7, 136, 135, 135, 135, 7, 187, 135, 135, + 135, 206, 207, 206, 206, 206, 135, 135, 135, 135, + 135, 7, 7, 193, 193, 7, 187, 138, 3, 208, + 138, 7, 7, 7, 7, 3, 198, 198, 7, 198, + 7, 198, 203, 7, 7, 188, 3, 208, 134, 198, + 199, 199, 199, 190, 195, 196, 195, 7, 187, 191, + 197, 197, 191, 135, 135, 7, 136, 135, 135, 136, + 135, 3, 208, 135, 135, 3, 208, 135, 3, 208, + 135, 3, 208, 135, 3, 135, 3, 135, 136, 3, + 3, 135, 136, 3, 135, 7, 136, 134, 3, 208, + 3, 3, 3, 7, 7, 7, 135, 135, 136, 3, + 138, 136, 137, 135, 136, 3, 138, 3, 3, 3, + 135, 3, 3, 3, 134, 3, 6, 6, 6, 5, + 135, 135, 3, 136, 3, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 136, 7, 3, 194, 135, 3, + 3, 135, 3, 3, 3, 3, 3, 136, 3, 208, + 3, 208, 136, 3, 208, 136, 3, 208, 136, 3, + 208, 3, 137, 3, 3, 135, 135, 3, 3, 135, + 3, 135, 3, 7, 135, 136, 135, 135, 135, 135, + 135, 135, 3, 3, 7, 136, 3, 135, 137, 139, + 3, 3, 135, 3, 3, 135, 137, 139, 3, 135, + 135, 135, 3, 135, 135, 135, 7, 5, 3, 3, + 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, + 135, 135, 3, 3, 137, 135, 135, 137, 3, 136, + 136, 3, 136, 3, 136, 3, 136, 11, 12, 13, + 15, 16, 211, 137, 6, 6, 137, 6, 135, 3, + 137, 135, 3, 3, 6, 6, 6, 136, 208, 136, + 208, 3, 136, 208, 136, 3, 138, 137, 3, 135, + 137, 137, 137, 3, 137, 3, 135, 137, 137, 6, + 6, 6, 6, 6, 6, 135, 137, 138, 137, 3, + 3, 214, 3, 3, 15, 211, 137, 3, 3, 137, + 3, 137, 3, 137, 3, 135, 135, 15, 211, 15, + 211, 3, 214, 3, 137, 3, 136, 3, 136, 3, + 136, 3, 135, 137, 139, 3, 135, 137, 3, 208, + 135, 135, 135, 137, 3, 135, 135, 6, 3, 135, + 135, 135, 135, 11, 215, 137, 137, 215, 137, 215, + 137, 215, 137, 3, 3, 135, 135, 135, 135, 135, + 214, 137, 3, 137, 3, 137, 3, 137, 3, 137, + 137, 3, 208, 135, 136, 3, 3, 3, 135, 3, + 3, 135, 3, 3, 3, 3, 11, 215, 215, 11, + 11, 3, 3, 3, 3, 3, 135, 137, 137, 137, + 137, 136, 3, 3, 3, 3, 3, 3, 137, 137 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 140, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 142, 141, 143, 141, 144, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 145, 141, 146, 141, 147, 141, 148, 141, 149, + 141, 150, 141, 151, 141, 152, 141, 153, 141, 154, + 141, 155, 141, 156, 141, 157, 141, 158, 141, 159, + 141, 160, 141, 161, 141, 162, 141, 163, 141, 164, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 165, + 141, 166, 141, 167, 141, 168, 141, 169, 141, 170, + 141, 171, 141, 172, 141, 173, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 174, 141, 141, 175, 141, 141, + 176, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 177, 141, 178, 141, 179, 141, 180, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 181, 141, + 182, 141, 183, 141, 184, 141, 185, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 186, + 141, 141, 141, 141, 141, 187, 187, 187, 187, 188, + 188, 189, 189, 189, 190, 191, 191, 192, 192, 193, + 193, 194, 196, 195, 195, 197, 197, 197, 198, 199, + 199, 199, 200, 200, 200, 200, 202, 201, 201, 204, + 203, 205, 203, 207, 206, 208, 208, 210, 209, 211, + 211, 211, 211, 211, 212, 212, 212, 212, 213, 213, + 213, 214, 214, 215, 215 +}; + + /* YYR2[YYN] -- Number of symbols on the 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, 8, + 8, 8, 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, 0, + 3, 4, 4, 4, 4, 8, 8, 8, 8, 0, + 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, + 3, 0, 3, 0, 3, 0, 3, 3, 6, 9, + 9, 4, 6, 4, 6, 4, 6, 4, 6, 2, + 4, 2, 4, 2, 0, 3, 2, 0, 3, 2, + 0, 3, 3, 5, 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, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, + 3, 4, 5, 5, 5, 3, 7, 7, 5, 3, + 7, 3, 7, 7, 4, 1, 1, 1, 1, 3, + 1, 3, 0, 2, 1, 3, 7, 7, 3, 4, + 6, 1, 4, 3, 7, 5, 0, 5, 1, 0, + 4, 0, 8, 0, 7, 0, 1, 0, 2, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, + 1, 0, 1, 0, 1 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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 179 "./config/rx-parse.y" /* yacc.c:1661 */ + { as_bad (_("Unknown opcode: %s"), rx_init_start); } +#line 2092 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 3: +#line 184 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x00); } +#line 2098 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 4: +#line 187 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x01); } +#line 2104 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 5: +#line 190 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x02); } +#line 2110 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 6: +#line 193 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x03); } +#line 2116 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 7: +#line 198 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_disp3op ((yyvsp[0].exp))) + { B1 (0x08); rx_disp3 ((yyvsp[0].exp), 5); } + else if (rx_intop ((yyvsp[0].exp), 8, 8)) + { B1 (0x2e); PC1 ((yyvsp[0].exp)); } + else if (rx_intop ((yyvsp[0].exp), 16, 16)) + { B1 (0x38); PC2 ((yyvsp[0].exp)); } + else if (rx_intop ((yyvsp[0].exp), 24, 24)) + { B1 (0x04); PC3 ((yyvsp[0].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[0].exp), 5); } } +#line 2134 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 8: +#line 213 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x04); PC3 ((yyvsp[0].exp)); } +#line 2140 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 9: +#line 216 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x08); rx_disp3 ((yyvsp[0].exp), 5); } +#line 2146 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 10: +#line 221 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_intop ((yyvsp[0].exp), 16, 16)) + { B1 (0x39); PC2 ((yyvsp[0].exp)); } + else if (rx_intop ((yyvsp[0].exp), 24, 24)) + { B1 (0x05); PC3 ((yyvsp[0].exp)); } + else + { rx_relax (RX_RELAX_BRANCH, 0); + rx_linkrelax_branch (); + B1 (0x39); PC2 ((yyvsp[0].exp)); } } +#line 2159 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 11: +#line 230 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x05), PC3 ((yyvsp[0].exp)); } +#line 2165 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 12: +#line 235 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-2].regno) == COND_EQ || (yyvsp[-2].regno) == COND_NE) + { B1 ((yyvsp[-2].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[0].exp), 5); } + else + as_bad (_("Only BEQ and BNE may have .S")); } +#line 2174 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 13: +#line 243 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x20); F ((yyvsp[-2].regno), 4, 4); PC1 ((yyvsp[0].exp)); } +#line 2180 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 14: +#line 246 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x2e), PC1 ((yyvsp[0].exp)); } +#line 2186 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 15: +#line 251 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x38), PC2 ((yyvsp[0].exp)); } +#line 2192 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 16: +#line 253 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x39), PC2 ((yyvsp[0].exp)); } +#line 2198 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 17: +#line 255 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-2].regno) == COND_EQ || (yyvsp[-2].regno) == COND_NE) + { B1 ((yyvsp[-2].regno) == COND_EQ ? 0x3a : 0x3b); PC2 ((yyvsp[0].exp)); } + else + as_bad (_("Only BEQ and BNE may have .W")); } +#line 2207 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 18: +#line 260 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-1].regno) == COND_EQ || (yyvsp[-1].regno) == COND_NE) + { + rx_relax (RX_RELAX_BRANCH, 0); + rx_linkrelax_branch (); + B1 ((yyvsp[-1].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[0].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].regno), 4, 4); PC1 ((yyvsp[0].exp)); + } } +#line 2226 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 278 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf8, 0x04); F ((yyvsp[-1].regno), 8, 4); IMMB ((yyvsp[-4].exp), 12);} +#line 2232 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 20: +#line 281 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf8, 0x01); F ((yyvsp[-1].regno), 8, 4); IMMW ((yyvsp[-4].exp), 12);} +#line 2238 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 284 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf8, 0x02); F ((yyvsp[-1].regno), 8, 4); IMM ((yyvsp[-4].exp), 12);} +#line 2244 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 288 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-1].regno) <= 7 && rx_uintop ((yyvsp[-5].exp), 8) && rx_disp5op0 (&(yyvsp[-3].exp), BSIZE)) + { B2 (0x3c, 0); rx_field5s2 ((yyvsp[-3].exp)); F ((yyvsp[-1].regno), 9, 3); O1 ((yyvsp[-5].exp)); } + else + { B2 (0xf8, 0x04); F ((yyvsp[-1].regno), 8, 4); DSP ((yyvsp[-3].exp), 6, BSIZE); O1 ((yyvsp[-5].exp)); + if ((yyvsp[-5].exp).X_op != O_constant && (yyvsp[-5].exp).X_op != O_big) rx_linkrelax_imm (12); } } +#line 2254 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 295 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-1].regno) <= 7 && rx_uintop ((yyvsp[-5].exp), 8) && rx_disp5op0 (&(yyvsp[-3].exp), WSIZE)) + { B2 (0x3d, 0); rx_field5s2 ((yyvsp[-3].exp)); F ((yyvsp[-1].regno), 9, 3); O1 ((yyvsp[-5].exp)); } + else + { B2 (0xf8, 0x01); F ((yyvsp[-1].regno), 8, 4); DSP ((yyvsp[-3].exp), 6, WSIZE); IMMW ((yyvsp[-5].exp), 12); } } +#line 2263 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 301 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-1].regno) <= 7 && rx_uintop ((yyvsp[-5].exp), 8) && rx_disp5op0 (&(yyvsp[-3].exp), LSIZE)) + { B2 (0x3e, 0); rx_field5s2 ((yyvsp[-3].exp)); F ((yyvsp[-1].regno), 9, 3); O1 ((yyvsp[-5].exp)); } + else + { B2 (0xf8, 0x02); F ((yyvsp[-1].regno), 8, 4); DSP ((yyvsp[-3].exp), 6, LSIZE); IMM ((yyvsp[-5].exp), 12); } } +#line 2272 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 309 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x3f, 0); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); rtsd_immediate ((yyvsp[-4].exp)); + if ((yyvsp[-2].regno) == 0) + rx_error (_("RTSD cannot pop R0")); + if ((yyvsp[-2].regno) > (yyvsp[0].regno)) + rx_error (_("RTSD first reg must be <= second reg")); } +#line 2282 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 318 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x47, 0); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 2288 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 323 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x44, 0); F ((yyvsp[-4].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); DSP ((yyvsp[-6].exp), 6, BSIZE); } +#line 2294 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 326 "./config/rx-parse.y" /* yacc.c:1661 */ + { B3 (MEMEX, 0x04, 0); F ((yyvsp[-2].regno), 8, 2); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, sizemap[(yyvsp[-2].regno)]); } +#line 2300 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 331 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x5b, 0x00); F ((yyvsp[-3].regno), 5, 1); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 2306 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 336 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x58, 0x00); F ((yyvsp[-5].regno), 5, 1); F ((yyvsp[-3].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 2312 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 339 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-3].regno) <= 7 && (yyvsp[0].regno) <= 7 && rx_disp5op (&(yyvsp[-5].exp), (yyvsp[-6].regno))) + { B2 (0xb0, 0); F ((yyvsp[-6].regno), 4, 1); F ((yyvsp[-3].regno), 9, 3); F ((yyvsp[0].regno), 13, 3); rx_field5s ((yyvsp[-5].exp)); } + else + { B2 (0x58, 0x00); F ((yyvsp[-6].regno), 5, 1); F ((yyvsp[-3].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); DSP ((yyvsp[-5].exp), 6, (yyvsp[-6].regno)); } } +#line 2321 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 32: +#line 347 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x60, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else + /* This is really an add, but we negate the immediate. */ + { B2 (0x70, 0); F ((yyvsp[0].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); NIMM ((yyvsp[-2].exp), 6); } } +#line 2331 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 354 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x61, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else if (rx_uintop ((yyvsp[-2].exp), 8)) + { B2 (0x75, 0x50); F ((yyvsp[0].regno), 12, 4); UO1 ((yyvsp[-2].exp)); } + else + { B2 (0x74, 0x00); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-2].exp), 6); } } +#line 2342 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 362 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x62, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else + { B2 (0x70, 0); F ((yyvsp[0].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-2].exp), 6); } } +#line 2351 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 368 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x63, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else + { B2 (0x74, 0x10); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-2].exp), 6); } } +#line 2360 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 374 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x64, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else + { B2 (0x74, 0x20); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-2].exp), 6); } } +#line 2369 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 380 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x65, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else + { B2 (0x74, 0x30); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-2].exp), 6); } } +#line 2378 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 386 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x66, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else if (rx_uintop ((yyvsp[-2].exp), 8)) + { B2 (0x75, 0x40); F ((yyvsp[0].regno), 12, 4); UO1 ((yyvsp[-2].exp)); } + else + { B2 (0xfb, 0x02); F ((yyvsp[0].regno), 8, 4); IMM ((yyvsp[-2].exp), 12); } } +#line 2389 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 394 "./config/rx-parse.y" /* yacc.c:1661 */ + { if (rx_uintop ((yyvsp[-2].exp), 4)) + { B2 (0x66, 0); FE ((yyvsp[-2].exp), 8, 4); F ((yyvsp[0].regno), 12, 4); } + else if (rx_uintop ((yyvsp[-2].exp), 8)) + { B2 (0x75, 0x40); F ((yyvsp[0].regno), 12, 4); UO1 ((yyvsp[-2].exp)); } + else + { B2 (0xfb, 0x02); F ((yyvsp[0].regno), 8, 4); IMM ((yyvsp[-2].exp), 12); } } +#line 2400 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 404 "./config/rx-parse.y" /* yacc.c:1661 */ + { B1 (0x67); rtsd_immediate ((yyvsp[0].exp)); } +#line 2406 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 408 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 0; } +#line 2412 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 409 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 1; } +#line 2418 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 410 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 2; } +#line 2424 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 415 "./config/rx-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].regno) == (yyvsp[0].regno)) + { B2 (0x7e, 0x80); F (LSIZE, 10, 2); F ((yyvsp[-2].regno), 12, 4); } + else + { B2 (0x6e, 0); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } + if ((yyvsp[-2].regno) == 0) + rx_error (_("PUSHM cannot push R0")); + if ((yyvsp[-2].regno) > (yyvsp[0].regno)) + rx_error (_("PUSHM first reg must be <= second reg")); } +#line 2438 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 428 "./config/rx-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].regno) == (yyvsp[0].regno)) + { B2 (0x7e, 0xb0); F ((yyvsp[-2].regno), 12, 4); } + else + { B2 (0x6f, 0); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } + if ((yyvsp[-2].regno) == 0) + rx_error (_("POPM cannot pop R0")); + if ((yyvsp[-2].regno) > (yyvsp[0].regno)) + rx_error (_("POPM first reg must be <= second reg")); } +#line 2452 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 49: +#line 441 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x70, 0x00); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); IMM ((yyvsp[-4].exp), 6); } +#line 2458 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 446 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2(0x75, 0x60), UO1 ((yyvsp[0].exp)); } +#line 2464 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 451 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x78, 0); FE ((yyvsp[-2].exp), 7, 5); F ((yyvsp[0].regno), 12, 4); } +#line 2470 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 453 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7a, 0); FE ((yyvsp[-2].exp), 7, 5); F ((yyvsp[0].regno), 12, 4); } +#line 2476 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 458 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7c, 0x00); FE ((yyvsp[-2].exp), 7, 5); F ((yyvsp[0].regno), 12, 4); } +#line 2482 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 463 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, 0x30); F ((yyvsp[0].regno), 12, 4); } +#line 2488 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 465 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, 0x40); F ((yyvsp[0].regno), 12, 4); } +#line 2494 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 467 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, 0x50); F ((yyvsp[0].regno), 12, 4); } +#line 2500 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 472 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, 0x80); F ((yyvsp[-1].regno), 10, 2); F ((yyvsp[0].regno), 12, 4); } +#line 2506 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 58: +#line 477 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, 0xb0); F ((yyvsp[0].regno), 12, 4); } +#line 2512 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 482 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) == 13) + { rx_check_v2 (); } + if ((yyvsp[0].regno) < 16) + { B2 (0x7e, 0xc0); F ((yyvsp[0].regno), 12, 4); } + else + as_bad (_("PUSHC can only push the first 16 control registers")); } +#line 2523 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 492 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) == 13) + { rx_check_v2 (); } + if ((yyvsp[0].regno) < 16) + { B2 (0x7e, 0xe0); F ((yyvsp[0].regno), 12, 4); } + else + as_bad (_("POPC can only pop the first 16 control registers")); } +#line 2534 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 502 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0xa0); F ((yyvsp[0].regno), 12, 4); } +#line 2540 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 504 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0xb0); F ((yyvsp[0].regno), 12, 4); } +#line 2546 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 509 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x00); F ((yyvsp[0].regno), 12, 4); } +#line 2552 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 64: +#line 511 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x10); F ((yyvsp[0].regno), 12, 4); } +#line 2558 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 65: +#line 513 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x40); F ((yyvsp[0].regno), 12, 4); } +#line 2564 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 515 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x50); F ((yyvsp[0].regno), 12, 4); } +#line 2570 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 520 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x83); rx_note_string_insn_use (); } +#line 2576 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 522 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x87); rx_note_string_insn_use (); } +#line 2582 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 524 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x8b); rx_note_string_insn_use (); } +#line 2588 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 526 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x8f); rx_note_string_insn_use (); } +#line 2594 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 531 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x80); F ((yyvsp[0].regno), 14, 2); rx_note_string_insn_use (); } +#line 2600 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 533 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x84); F ((yyvsp[0].regno), 14, 2); rx_note_string_insn_use (); } +#line 2606 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 535 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x88); F ((yyvsp[0].regno), 14, 2); } +#line 2612 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 540 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x8c); F ((yyvsp[0].regno), 14, 2); rx_note_string_insn_use (); } +#line 2618 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 545 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x94); } +#line 2624 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 547 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x95); } +#line 2630 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 549 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x96); } +#line 2636 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 551 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7f, 0x93); } +#line 2642 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 556 "./config/rx-parse.y" /* yacc.c:1661 */ + { B3 (0x75, 0x70, 0x00); FE ((yyvsp[0].exp), 20, 4); } +#line 2648 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 562 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-5].regno) <= 7 && (yyvsp[-1].regno) <= 7 && rx_disp5op (&(yyvsp[-3].exp), (yyvsp[-6].regno))) + { B2 (0x80, 0); F ((yyvsp[-6].regno), 2, 2); F ((yyvsp[-1].regno), 9, 3); F ((yyvsp[-5].regno), 13, 3); rx_field5s ((yyvsp[-3].exp)); } + else + { B2 (0xc3, 0x00); F ((yyvsp[-6].regno), 2, 2); F ((yyvsp[-1].regno), 8, 4); F ((yyvsp[-5].regno), 12, 4); DSP ((yyvsp[-3].exp), 4, (yyvsp[-6].regno)); }} +#line 2657 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 570 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-3].regno) <= 7 && (yyvsp[0].regno) <= 7 && rx_disp5op (&(yyvsp[-5].exp), (yyvsp[-6].regno))) + { B2 (0x88, 0); F ((yyvsp[-6].regno), 2, 2); F ((yyvsp[-3].regno), 9, 3); F ((yyvsp[0].regno), 13, 3); rx_field5s ((yyvsp[-5].exp)); } + else + { B2 (0xcc, 0x00); F ((yyvsp[-6].regno), 2, 2); F ((yyvsp[-3].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); DSP ((yyvsp[-5].exp), 6, (yyvsp[-6].regno)); } } +#line 2666 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 584 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xc3, 0x00); F ((yyvsp[-5].regno), 2, 2); F ((yyvsp[-1].regno), 8, 4); F ((yyvsp[-4].regno), 12, 4); } +#line 2672 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 83: +#line 589 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xc0, 0); F ((yyvsp[-8].regno), 2, 2); F ((yyvsp[-6].regno), 8, 4); F ((yyvsp[-1].regno), 12, 4); DSP ((yyvsp[-3].exp), 4, (yyvsp[-8].regno)); } +#line 2678 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 84: +#line 594 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xc0, 0x00); F ((yyvsp[-9].regno), 2, 2); F ((yyvsp[-6].regno), 8, 4); F ((yyvsp[-1].regno), 12, 4); DSP ((yyvsp[-8].exp), 6, (yyvsp[-9].regno)); DSP ((yyvsp[-3].exp), 4, (yyvsp[-9].regno)); } +#line 2684 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 85: +#line 599 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xcf, 0x00); F ((yyvsp[-3].regno), 2, 2); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 2690 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 86: +#line 604 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xcc, 0x00); F ((yyvsp[-5].regno), 2, 2); F ((yyvsp[-3].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 2696 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 87: +#line 609 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf0, 0x00); F ((yyvsp[-2].regno), 8, 4); FE ((yyvsp[-6].exp), 13, 3); DSP ((yyvsp[-4].exp), 6, BSIZE); } +#line 2702 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 88: +#line 611 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf0, 0x08); F ((yyvsp[-2].regno), 8, 4); FE ((yyvsp[-6].exp), 13, 3); DSP ((yyvsp[-4].exp), 6, BSIZE); } +#line 2708 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 89: +#line 613 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf4, 0x00); F ((yyvsp[-2].regno), 8, 4); FE ((yyvsp[-6].exp), 13, 3); DSP ((yyvsp[-4].exp), 6, BSIZE); } +#line 2714 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 90: +#line 618 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0xf4, 0x08); F ((yyvsp[-4].regno), 14, 2); F ((yyvsp[-1].regno), 8, 4); DSP ((yyvsp[-3].exp), 6, (yyvsp[-4].regno)); } +#line 2720 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 91: +#line 622 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 0; } +#line 2726 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 93: +#line 623 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 1; sub_op2 = 1; } +#line 2732 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 95: +#line 624 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 2; } +#line 2738 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 97: +#line 625 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 3; sub_op2 = 2; } +#line 2744 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 99: +#line 626 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 4; } +#line 2750 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 101: +#line 627 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 5; } +#line 2756 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 103: +#line 628 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 6; } +#line 2762 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 105: +#line 629 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 7; } +#line 2768 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 107: +#line 630 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 8; } +#line 2774 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 109: +#line 631 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 9; } +#line 2780 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 111: +#line 632 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 12; } +#line 2786 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 113: +#line 633 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 13; } +#line 2792 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 115: +#line 634 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 14; sub_op2 = 0; } +#line 2798 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 117: +#line 635 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 14; sub_op2 = 0; } +#line 2804 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 119: +#line 636 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 15; sub_op2 = 1; } +#line 2810 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 121: +#line 640 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 6; } +#line 2816 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 123: +#line 641 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 7; } +#line 2822 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 125: +#line 642 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 16; } +#line 2828 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 127: +#line 643 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 17; } +#line 2834 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 129: +#line 644 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 21; } +#line 2840 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 131: +#line 649 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x63, 0x00); F ((yyvsp[0].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); } +#line 2846 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 132: +#line 651 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x67, 0x00); F ((yyvsp[0].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); } +#line 2852 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 133: +#line 653 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x6b, 0x00); F ((yyvsp[0].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); } +#line 2858 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 134: +#line 655 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x6f, 0x00); F ((yyvsp[0].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); } +#line 2864 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 135: +#line 658 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x60, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[-6].regno), 20, 4); DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2870 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 136: +#line 660 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x64, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[-6].regno), 20, 4); DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2876 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 137: +#line 662 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x68, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[-6].regno), 20, 4); DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2882 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 138: +#line 664 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x6c, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[-6].regno), 20, 4); DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2888 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 139: +#line 668 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 0; } +#line 2894 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 141: +#line 669 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 1; } +#line 2900 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 143: +#line 670 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 2; } +#line 2906 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 145: +#line 671 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 3; } +#line 2912 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 147: +#line 672 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 4; } +#line 2918 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 149: +#line 673 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 8; } +#line 2924 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 151: +#line 674 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 5; } +#line 2930 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 153: +#line 675 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 9; } +#line 2936 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 155: +#line 676 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 6; } +#line 2942 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 157: +#line 684 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0xdb, 0x00); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 16, 4); } +#line 2948 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 158: +#line 686 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0xd0, 0x00); F ((yyvsp[-5].regno), 20, 4); F ((yyvsp[-4].regno), 12, 2); F ((yyvsp[-1].regno), 16, 4); DSP ((yyvsp[-3].exp), 14, (yyvsp[-4].regno)); } +#line 2954 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 159: +#line 691 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0xe0, 0x00); F ((yyvsp[-8].regno), 20, 4); FE ((yyvsp[-6].exp), 11, 3); + F ((yyvsp[-2].regno), 16, 4); DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2961 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 160: +#line 697 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0xe0, 0x0f); FE ((yyvsp[-6].exp), 11, 3); F ((yyvsp[-2].regno), 16, 4); + DSP ((yyvsp[-4].exp), 14, BSIZE); } +#line 2968 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 161: +#line 703 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x00, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 2974 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 162: +#line 705 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x00, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 2980 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 163: +#line 707 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x01, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 2986 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 164: +#line 709 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x01, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 2992 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 165: +#line 711 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x04, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 2998 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 166: +#line 713 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x04, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3004 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 167: +#line 715 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x05, 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3010 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 168: +#line 717 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x05, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3016 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 169: +#line 723 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x17, 0x00); F ((yyvsp[0].regno), 20, 4); } +#line 3022 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 170: +#line 725 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x17, 0x00); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 16, 1); } +#line 3028 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 171: +#line 727 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x17, 0x10); F ((yyvsp[0].regno), 20, 4); } +#line 3034 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 172: +#line 729 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x17, 0x10); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 16, 1); } +#line 3040 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 173: +#line 731 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x1f, 0x00); F ((yyvsp[0].regno), 20, 4); } +#line 3046 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 174: +#line 732 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 0; } +#line 3052 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 176: +#line 734 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x1f, 0x20); F ((yyvsp[0].regno), 20, 4); } +#line 3058 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 177: +#line 735 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 2; } +#line 3064 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 179: +#line 737 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x1f, 0x10); F ((yyvsp[0].regno), 20, 4); } +#line 3070 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 180: +#line 738 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 1; } +#line 3076 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 182: +#line 740 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x18, 0x00); + if (rx_uintop ((yyvsp[0].exp), 4) && (yyvsp[0].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[0].exp), 4) && (yyvsp[0].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACW expects #1 or #2"));} +#line 3088 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 183: +#line 748 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x18, 0x00); F ((yyvsp[0].regno), 16, 1); + if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACW expects #1 or #2"));} +#line 3100 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 184: +#line 759 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x20, 0); F ((yyvsp[-6].regno), 14, 2); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[-5].regno), 20, 4); } +#line 3106 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 185: +#line 761 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x24, 0); F ((yyvsp[-6].regno), 14, 2); F ((yyvsp[-1].regno), 16, 4); F ((yyvsp[-5].regno), 20, 4); } +#line 3112 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 186: +#line 766 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x28, 0); F ((yyvsp[-6].regno), 14, 2); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3118 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 187: +#line 768 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x2c, 0); F ((yyvsp[-6].regno), 14, 2); F ((yyvsp[-3].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3124 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 188: +#line 773 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x38, 0); F ((yyvsp[-6].regno), 15, 1); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3130 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 189: +#line 775 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x3c, 0); F ((yyvsp[-6].regno), 15, 1); F ((yyvsp[-3].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3136 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 190: +#line 779 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 6; } +#line 3142 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 192: +#line 780 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 4; } +#line 3148 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 194: +#line 781 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 5; } +#line 3154 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 196: +#line 782 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 7; } +#line 3160 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 198: +#line 787 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) == 13) + rx_check_v2 (); + id24 (2, 0x68, 0x00); F ((yyvsp[0].regno) % 16, 20, 4); F ((yyvsp[0].regno) / 16, 15, 1); + F ((yyvsp[-2].regno), 16, 4); } +#line 3169 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 199: +#line 795 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[-2].regno) == 13) + rx_check_v2 (); + id24 (2, 0x6a, 0); F ((yyvsp[-2].regno), 15, 5); F ((yyvsp[0].regno), 20, 4); } +#line 3177 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 200: +#line 802 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x6e, 0); FE ((yyvsp[-2].exp), 15, 5); F ((yyvsp[0].regno), 20, 4); } +#line 3183 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 201: +#line 804 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x6c, 0); FE ((yyvsp[-2].exp), 15, 5); F ((yyvsp[0].regno), 20, 4); } +#line 3189 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 202: +#line 809 "./config/rx-parse.y" /* yacc.c:1661 */ + { if ((yyvsp[0].regno) == 13) + rx_check_v2 (); + id24 (2, 0x73, 0x00); F ((yyvsp[0].regno), 19, 5); IMM ((yyvsp[-2].exp), 12); } +#line 3197 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 203: +#line 816 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0xe0, 0x00); F ((yyvsp[-4].regno), 16, 4); FE ((yyvsp[-2].exp), 11, 5); + F ((yyvsp[0].regno), 20, 4); } +#line 3204 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 204: +#line 822 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0xe0, 0xf0); FE ((yyvsp[-2].exp), 11, 5); F ((yyvsp[0].regno), 20, 4); } +#line 3210 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 205: +#line 827 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (3, 0x00, 0); F ((yyvsp[-7].regno), 10, 2); F ((yyvsp[-3].regno), 12, 4); F ((yyvsp[-1].regno), 16, 4); F ((yyvsp[-6].regno), 20, 4); } +#line 3216 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 206: +#line 830 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (3, 0x40, 0); F ((yyvsp[-7].regno), 10, 2); F ((yyvsp[-5].regno), 12, 4); F ((yyvsp[-3].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3222 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 207: +#line 833 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (3, 0xc0, 0); F ((yyvsp[-7].regno), 10, 2); F ((yyvsp[-5].regno), 12, 4); F ((yyvsp[-3].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3228 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 208: +#line 837 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 0; } +#line 3234 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 210: +#line 838 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 2; } +#line 3240 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 212: +#line 839 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 3; } +#line 3246 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 214: +#line 840 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 4; } +#line 3252 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 216: +#line 841 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 5; } +#line 3258 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 218: +#line 847 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x70, 0x20); F ((yyvsp[0].regno), 20, 4); NBIMM ((yyvsp[-2].exp), 12); } +#line 3264 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 219: +#line 852 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); B3 (0xfd, 0x27, 0x00); F ((yyvsp[-1].regno), 16, 4); F ((yyvsp[-4].regno), 20, 4); } +#line 3270 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 220: +#line 857 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); B3 (0xfd, 0x2f, 0x00); F ((yyvsp[-3].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3276 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 221: +#line 862 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x07, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3282 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 222: +#line 864 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x47, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3288 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 223: +#line 866 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x03, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3294 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 224: +#line 868 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x06, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3300 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 225: +#line 870 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x44, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3306 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 226: +#line 872 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x46, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3312 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 227: +#line 874 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x45, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3318 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 228: +#line 876 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x02, 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 1); } +#line 3324 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 229: +#line 877 "./config/rx-parse.y" /* yacc.c:1661 */ + { sub_op = 3; } +#line 3330 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 231: +#line 879 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x17, 0x30); F ((yyvsp[0].regno), 16, 1); F ((yyvsp[-2].regno), 20, 4); } +#line 3336 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 232: +#line 881 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x19, 0x00); F ((yyvsp[0].regno), 16, 1); + if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACL expects #1 or #2"));} +#line 3348 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 233: +#line 889 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x19, 0x40); F ((yyvsp[0].regno), 16, 1); + if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RDACL expects #1 or #2"));} +#line 3360 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 234: +#line 897 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (2, 0x18, 0x40); F ((yyvsp[0].regno), 16, 1); + if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 1) + ; + else if (rx_uintop ((yyvsp[-2].exp), 4) && (yyvsp[-2].exp).X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RDACW expects #1 or #2"));} +#line 3372 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 235: +#line 913 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x43 + (sub_op<<2), 0); F ((yyvsp[-2].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); } +#line 3378 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 236: +#line 915 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x40 + (sub_op<<2), 0); F ((yyvsp[-4].regno), 8, 4); F ((yyvsp[0].regno), 12, 4); DSP ((yyvsp[-6].exp), 6, BSIZE); } +#line 3384 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 237: +#line 917 "./config/rx-parse.y" /* yacc.c:1661 */ + { B3 (MEMEX, sub_op<<2, 0); F ((yyvsp[-2].regno), 8, 2); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, sizemap[(yyvsp[-2].regno)]); } +#line 3390 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 238: +#line 919 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (4, sub_op<<4, 0), F ((yyvsp[0].regno), 12, 4), F ((yyvsp[-4].regno), 16, 4), F ((yyvsp[-2].regno), 20, 4); } +#line 3396 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 239: +#line 926 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3402 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 240: +#line 928 "./config/rx-parse.y" /* yacc.c:1661 */ + { B4 (MEMEX, 0xa0, 0x00 + sub_op, 0x00); + F ((yyvsp[-4].regno), 24, 4); F ((yyvsp[0].regno), 28, 4); DSP ((yyvsp[-6].exp), 14, LSIZE); } +#line 3409 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 241: +#line 936 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3415 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 242: +#line 938 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x00 + (sub_op<<2), 0x00); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, BSIZE); } +#line 3421 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 243: +#line 940 "./config/rx-parse.y" /* yacc.c:1661 */ + { B4 (MEMEX, 0x20 + ((yyvsp[-2].regno) << 6), 0x00 + sub_op, 0x00); + F ((yyvsp[-4].regno), 24, 4); F ((yyvsp[0].regno), 28, 4); DSP ((yyvsp[-6].exp), 14, sizemap[(yyvsp[-2].regno)]); } +#line 3428 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 244: +#line 946 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x70, sub_op<<4); F ((yyvsp[0].regno), 20, 4); IMM ((yyvsp[-2].exp), 12); } +#line 3434 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 249: +#line 961 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3440 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 250: +#line 963 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x7e, sub_op2 << 4); F ((yyvsp[0].regno), 12, 4); } +#line 3446 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 251: +#line 968 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x4b + (sub_op2<<2), 0x00); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3452 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 252: +#line 972 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); } +#line 3458 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 255: +#line 980 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x03 + (sub_op<<2), 0); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3464 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 256: +#line 982 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x00 + (sub_op<<2), 0); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, BSIZE); } +#line 3470 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 257: +#line 984 "./config/rx-parse.y" /* yacc.c:1661 */ + { B4 (MEMEX, 0x20, 0x00 + sub_op, 0); F ((yyvsp[-2].regno), 8, 2); F ((yyvsp[-4].regno), 24, 4); F ((yyvsp[0].regno), 28, 4); + DSP ((yyvsp[-6].exp), 14, sizemap[(yyvsp[-2].regno)]); } +#line 3477 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 258: +#line 991 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x60 + sub_op, 0); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3483 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 259: +#line 995 "./config/rx-parse.y" /* yacc.c:1661 */ + { B2 (0x68 + (sub_op<<1), 0); FE ((yyvsp[-2].exp), 7, 5); F ((yyvsp[0].regno), 12, 4); } +#line 3489 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 260: +#line 997 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x80 + (sub_op << 5), 0); FE ((yyvsp[-4].exp), 11, 5); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3495 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 262: +#line 1003 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); id24 (2, 0x72, sub_op << 4); F ((yyvsp[0].regno), 20, 4); O4 ((yyvsp[-2].exp)); } +#line 3501 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 263: +#line 1005 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); id24 (1, 0x83 + (sub_op << 2), 0); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3507 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 264: +#line 1007 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); id24 (1, 0x80 + (sub_op << 2), 0); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, LSIZE); } +#line 3513 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 265: +#line 1009 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); id24 (4, 0x80 + (sub_op << 4), 0 ); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[-2].regno), 20, 4); F ((yyvsp[0].regno), 12, 4); } +#line 3519 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 266: +#line 1013 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); } +#line 3525 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 267: +#line 1015 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x72, sub_op << 4); F ((yyvsp[0].regno), 20, 4); O4 ((yyvsp[-2].exp)); } +#line 3531 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 269: +#line 1020 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); } +#line 3537 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 270: +#line 1022 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x83 + (sub_op << 2), 0); F ((yyvsp[-2].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); } +#line 3543 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 271: +#line 1023 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_float_support (); } +#line 3549 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 272: +#line 1025 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (1, 0x80 + (sub_op << 2), 0); F ((yyvsp[-4].regno), 16, 4); F ((yyvsp[0].regno), 20, 4); DSP ((yyvsp[-6].exp), 14, LSIZE); } +#line 3555 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 273: +#line 1029 "./config/rx-parse.y" /* yacc.c:1661 */ + { rx_check_v2 (); } +#line 3561 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 274: +#line 1031 "./config/rx-parse.y" /* yacc.c:1661 */ + { id24 (2, 0x1e, sub_op << 4); F ((yyvsp[0].regno), 20, 4); F ((yyvsp[-2].regno), 16, 1); + if (rx_uintop ((yyvsp[-4].exp), 4)) + { + switch (exp_val ((yyvsp[-4].exp))) + { + case 0: + F (1, 15, 1); + break; + case 1: + F (1, 15, 1); + F (1, 17, 1); + break; + case 2: + break; + default: + as_bad (_("IMM expects #0 to #2"));} + } else + as_bad (_("IMM expects #0 to #2"));} +#line 3584 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 275: +#line 1053 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.exp) = zero_expr (); } +#line 3590 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 276: +#line 1054 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.exp) = (yyvsp[0].exp); } +#line 3596 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 277: +#line 1057 "./config/rx-parse.y" /* yacc.c:1661 */ + { need_flag = 1; } +#line 3602 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 278: +#line 1057 "./config/rx-parse.y" /* yacc.c:1661 */ + { need_flag = 0; (yyval.regno) = (yyvsp[0].regno); } +#line 3608 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 279: +#line 1062 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; } +#line 3614 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 280: +#line 1063 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3620 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 281: +#line 1064 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3626 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 282: +#line 1065 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 2; } +#line 3632 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 283: +#line 1066 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 3; } +#line 3638 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 284: +#line 1069 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = LSIZE; } +#line 3644 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 285: +#line 1070 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = BSIZE; } +#line 3650 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 286: +#line 1071 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = WSIZE; } +#line 3656 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 287: +#line 1072 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = LSIZE; } +#line 3662 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 288: +#line 1075 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3668 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 289: +#line 1076 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 0; } +#line 3674 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 290: +#line 1077 "./config/rx-parse.y" /* yacc.c:1661 */ + { (yyval.regno) = 1; } +#line 3680 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 291: +#line 1080 "./config/rx-parse.y" /* yacc.c:1661 */ + {} +#line 3686 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 292: +#line 1081 "./config/rx-parse.y" /* yacc.c:1661 */ + {} +#line 3692 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 293: +#line 1084 "./config/rx-parse.y" /* yacc.c:1661 */ + {} +#line 3698 "rx-parse.c" /* yacc.c:1661 */ + break; + + case 294: +#line 1085 "./config/rx-parse.y" /* yacc.c:1661 */ + {} +#line 3704 "rx-parse.c" /* yacc.c:1661 */ + break; + + +#line 3708 "rx-parse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 1088 "./config/rx-parse.y" /* yacc.c:1906 */ + +/* ====================================================================== */ + +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 }, + { "extb", CREG, 13 }, + + { "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 }, + + { "a0", ACC, 0 }, + { "a1", ACC, 1 }, + +#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(EMACA), + OPC(EMSBA), + OPC(EMUL), + OPC(EMULA), + OPC(EMULU), + OPC(FADD), + OPC(FCMP), + OPC(FDIV), + OPC(FMUL), + OPC(FREIT), + OPC(FSQRT), + OPC(FTOU), + OPC(FSUB), + OPC(FTOI), + OPC(INT), + OPC(ITOF), + OPC(JMP), + OPC(JSR), + OPC(MVFACGU), + OPC(MVFACHI), + OPC(MVFACMI), + OPC(MVFACLO), + OPC(MVFC), + OPC(MVTACGU), + OPC(MVTACHI), + OPC(MVTACLO), + OPC(MVTC), + OPC(MVTIPL), + OPC(MACHI), + OPC(MACLO), + OPC(MACLH), + OPC(MAX), + OPC(MIN), + OPC(MOV), + OPC(MOVCO), + OPC(MOVLI), + OPC(MOVU), + OPC(MSBHI), + OPC(MSBLH), + OPC(MSBLO), + OPC(MUL), + OPC(MULHI), + OPC(MULLH), + 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(RACL), + OPC(RACW), + OPC(RDACL), + OPC(RDACW), + 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(UTOF), + OPC(WAIT), + OPC(XCHG), + OPC(XOR), +}; + +#define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0])) + +static struct +{ + const 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 +{ + const 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 (const 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) + { + if (nbits == 32) + return 1; + if (exp.X_add_number == -1) + return 0; + } + else 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")); +} + +static void +rx_check_v2 (void) +{ + if (rx_cpu < RXV2) + rx_error (_("target CPU type does not support v2 instructions")); +} diff --git a/gas/rx-parse.h b/gas/rx-parse.h new file mode 100644 index 00000000000..3880b2e8d88 --- /dev/null +++ b/gas/rx-parse.h @@ -0,0 +1,335 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_RX_RX_PARSE_H_INCLUDED +# define YY_RX_RX_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int rx_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + REG = 258, + FLAG = 259, + CREG = 260, + ACC = 261, + EXPR = 262, + UNKNOWN_OPCODE = 263, + IS_OPCODE = 264, + DOT_S = 265, + DOT_B = 266, + DOT_W = 267, + DOT_L = 268, + DOT_A = 269, + DOT_UB = 270, + DOT_UW = 271, + ABS = 272, + ADC = 273, + ADD = 274, + AND_ = 275, + BCLR = 276, + BCND = 277, + BMCND = 278, + BNOT = 279, + BRA = 280, + BRK = 281, + BSET = 282, + BSR = 283, + BTST = 284, + CLRPSW = 285, + CMP = 286, + DBT = 287, + DIV = 288, + DIVU = 289, + EDIV = 290, + EDIVU = 291, + EMACA = 292, + EMSBA = 293, + EMUL = 294, + EMULA = 295, + EMULU = 296, + FADD = 297, + FCMP = 298, + FDIV = 299, + FMUL = 300, + FREIT = 301, + FSUB = 302, + FSQRT = 303, + FTOI = 304, + FTOU = 305, + INT = 306, + ITOF = 307, + JMP = 308, + JSR = 309, + MACHI = 310, + MACLH = 311, + MACLO = 312, + MAX = 313, + MIN = 314, + MOV = 315, + MOVCO = 316, + MOVLI = 317, + MOVU = 318, + MSBHI = 319, + MSBLH = 320, + MSBLO = 321, + MUL = 322, + MULHI = 323, + MULLH = 324, + MULLO = 325, + MULU = 326, + MVFACHI = 327, + MVFACGU = 328, + MVFACMI = 329, + MVFACLO = 330, + MVFC = 331, + MVTACGU = 332, + MVTACHI = 333, + MVTACLO = 334, + MVTC = 335, + MVTIPL = 336, + NEG = 337, + NOP = 338, + NOT = 339, + OR = 340, + POP = 341, + POPC = 342, + POPM = 343, + PUSH = 344, + PUSHA = 345, + PUSHC = 346, + PUSHM = 347, + RACL = 348, + RACW = 349, + RDACL = 350, + RDACW = 351, + REIT = 352, + REVL = 353, + REVW = 354, + RMPA = 355, + ROLC = 356, + RORC = 357, + ROTL = 358, + ROTR = 359, + ROUND = 360, + RTE = 361, + RTFI = 362, + RTS = 363, + RTSD = 364, + SAT = 365, + SATR = 366, + SBB = 367, + SCCND = 368, + SCMPU = 369, + SETPSW = 370, + SHAR = 371, + SHLL = 372, + SHLR = 373, + SMOVB = 374, + SMOVF = 375, + SMOVU = 376, + SSTR = 377, + STNZ = 378, + STOP = 379, + STZ = 380, + SUB = 381, + SUNTIL = 382, + SWHILE = 383, + TST = 384, + UTOF = 385, + WAIT = 386, + XCHG = 387, + XOR = 388 + }; +#endif +/* Tokens. */ +#define REG 258 +#define FLAG 259 +#define CREG 260 +#define ACC 261 +#define EXPR 262 +#define UNKNOWN_OPCODE 263 +#define IS_OPCODE 264 +#define DOT_S 265 +#define DOT_B 266 +#define DOT_W 267 +#define DOT_L 268 +#define DOT_A 269 +#define DOT_UB 270 +#define DOT_UW 271 +#define ABS 272 +#define ADC 273 +#define ADD 274 +#define AND_ 275 +#define BCLR 276 +#define BCND 277 +#define BMCND 278 +#define BNOT 279 +#define BRA 280 +#define BRK 281 +#define BSET 282 +#define BSR 283 +#define BTST 284 +#define CLRPSW 285 +#define CMP 286 +#define DBT 287 +#define DIV 288 +#define DIVU 289 +#define EDIV 290 +#define EDIVU 291 +#define EMACA 292 +#define EMSBA 293 +#define EMUL 294 +#define EMULA 295 +#define EMULU 296 +#define FADD 297 +#define FCMP 298 +#define FDIV 299 +#define FMUL 300 +#define FREIT 301 +#define FSUB 302 +#define FSQRT 303 +#define FTOI 304 +#define FTOU 305 +#define INT 306 +#define ITOF 307 +#define JMP 308 +#define JSR 309 +#define MACHI 310 +#define MACLH 311 +#define MACLO 312 +#define MAX 313 +#define MIN 314 +#define MOV 315 +#define MOVCO 316 +#define MOVLI 317 +#define MOVU 318 +#define MSBHI 319 +#define MSBLH 320 +#define MSBLO 321 +#define MUL 322 +#define MULHI 323 +#define MULLH 324 +#define MULLO 325 +#define MULU 326 +#define MVFACHI 327 +#define MVFACGU 328 +#define MVFACMI 329 +#define MVFACLO 330 +#define MVFC 331 +#define MVTACGU 332 +#define MVTACHI 333 +#define MVTACLO 334 +#define MVTC 335 +#define MVTIPL 336 +#define NEG 337 +#define NOP 338 +#define NOT 339 +#define OR 340 +#define POP 341 +#define POPC 342 +#define POPM 343 +#define PUSH 344 +#define PUSHA 345 +#define PUSHC 346 +#define PUSHM 347 +#define RACL 348 +#define RACW 349 +#define RDACL 350 +#define RDACW 351 +#define REIT 352 +#define REVL 353 +#define REVW 354 +#define RMPA 355 +#define ROLC 356 +#define RORC 357 +#define ROTL 358 +#define ROTR 359 +#define ROUND 360 +#define RTE 361 +#define RTFI 362 +#define RTS 363 +#define RTSD 364 +#define SAT 365 +#define SATR 366 +#define SBB 367 +#define SCCND 368 +#define SCMPU 369 +#define SETPSW 370 +#define SHAR 371 +#define SHLL 372 +#define SHLR 373 +#define SMOVB 374 +#define SMOVF 375 +#define SMOVU 376 +#define SSTR 377 +#define STNZ 378 +#define STOP 379 +#define STZ 380 +#define SUB 381 +#define SUNTIL 382 +#define SWHILE 383 +#define TST 384 +#define UTOF 385 +#define WAIT 386 +#define XCHG 387 +#define XOR 388 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 135 "./config/rx-parse.y" /* yacc.c:1915 */ + + int regno; + expressionS exp; + +#line 325 "rx-parse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE rx_lval; + +int rx_parse (void); + +#endif /* !YY_RX_RX_PARSE_H_INCLUDED */ diff --git a/gdb/gcore b/gdb/gcore new file mode 100755 index 00000000000..6f4011d4781 --- /dev/null +++ b/gdb/gcore @@ -0,0 +1,103 @@ +#!/bin/sh + +# Copyright (C) 2003-2016 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 + # `. + +# DISCLAIMER DISCLAIMER DISCLAIMER +# This script is a test tool. As such it is in no way intended to +# replace the "real" dtrace command for any practical purpose, apart +# from testing the DTrace USDT probes support in GDB. + +# that said... +# +# pdtrace is a limited dtrace program, implementing a subset of its +# functionality: +# +# - The generation of an ELF file containing an embedded dtrace +# program. Equivalent to dtrace -G. +# +# - The generation of a header file with definitions for static +# probes. Equivalent to dtrace -h. +# +# This allows to generate DTrace static probes without having to use +# the user-level DTrace components. The generated objects are 100% +# compatible with DTrace and can be traced by the dtrace kernel module +# like if they were generated by dtrace. +# +# Some of the known limitations of this implementation are: +# - The input d-script must describe one provider, and only one. +# - The "probe " directives in the d-file must not include argument +# names, just the types. Thus something like `char *' is valid, but +# `char *name' is not. +# - The command line options must precede other arguments, since the +# script uses the (more) portable getopts. +# - Each probe header in the d-script must be contained in +# a single line. +# - strip -K removes the debugging information from the input object +# file. +# - The supported target platforms are i[3456]86 and x86_64. +# +# Please keep this code as portable as possible. Restrict yourself to +# POSIX sh. + +# This script uses the following external programs, defined in +# variables. Some of them are substituted by autoconf. + +TR=tr +NM=i386-pc-linux-gnu-nm +EGREP=egrep +SED=sed +CUT=cut +READELF=i386-pc-linux-gnu-readelf +SORT=sort +EXPR=expr +WC=wc +UNIQ=uniq +HEAD=head +SEQ=seq +AS=i386-pc-linux-gnu-as +STRIP=i386-pc-linux-gnu-strip +TRUE=true + +# Sizes for several DOF structures, in bytes. +# +# See linux/dtrace/dof.h for the definition of the referred +# structures. + +dof_hdrsize=64 # sizeof(dtrace_dof_hdr) +dof_secsize=32 # sizeof(dtrace_dof_sect) +dof_probesize=48 # sizeof(dtrace_dof_probe) +dof_providersize=44 # sizeof(dtrace_dof_provider) + +# Types for the several DOF sections. +# +# See linux/dtrace/dof_defines.h for a complete list of section types +# along with their values. + +dof_sect_type_strtab=8 +dof_sect_type_provider=15 +dof_sect_type_probes=16 +dof_sect_type_prargs=17 +dof_sect_type_proffs=18 +dof_sect_type_prenoffs=26 + +### Functions + +# Write a message to the standard error output and exit with an error +# status. +# +# Arguments: +# $1 error message. + +f_panic() +{ + echo "error: $1" 1>&2; exit 1 +} + +# Write a usage message to the standard output and exit with an error +# status. + +f_usage() +{ + printf "Usage: pdtrace [-32|-64] [-GhV] [-o output] [-s script] [ args ... ]\n\n" + + printf "\t-32 generate 32-bit ELF files\n" + printf "\t-64 generate 64-bit ELF files\n\n" + + printf "\t-G generate an ELF file containing embedded dtrace program\n" + printf "\t-h generate a header file with definitions for static probes\n" + printf "\t-o set output file\n" + printf "\t-s handle probes according to the specified D script\n" + printf "\t-V report the DTrace API version implemented by the tool\n" + exit 2 +} + +# Write a version message to the standard output and exit with a +# successful status. + +f_version() +{ + echo "pdtrace: Sun D 1.6.3" + exit +} + +# Add a new record to a list and return it. +# +# Arguments: +# $1 is the list. +# $2 is the new record + +f_add_record() +{ + rec=$1 + test -n "$rec" && \ + { rec=$(printf %s\\n "$rec"; echo x); rec=${rec%x}; } + printf %s "$rec$2" +} + +# Collect the providers and probes information from the input object +# file. +# +# This function sets the values of the following global variables. +# The values are structured in records, each record in a line. The +# fields of each record are separated in some cases by white +# characters and in other cases by colon (:) characters. +# +# The type codes in the line format descriptors are: +# S: string, D: decimal number +# +# probes +# Regular probes and is-enabled probes. +# TYPE(S) PROVIDER(S) NAME(S) OFFSET(D) BASE(D) BASE_SYM(S) +# base_probes +# Base probes, i.e. probes sharing provider, name and container. +# PROVIDER(S) NAME(S) BASE(D) BASE_SYM(S) +# providers +# List of providers. +# PROVIDER(S) +# All the offsets are expressed in bytes. +# +# Input globals: +# objfile +# Output globals: +# probes, base_probes, providers + +probes= +base_probes= +providers= +probes_args= + +f_collect_probes() +{ + # Probe points are function calls to undefined functions featuring + # distinct names for both normal probes and is-enabled probes. + PROBE_REGEX="(__dtrace_([a-zA-Z_]+)___([a-zA-Z_]+))" + EPROBE_REGEX="(__dtraceenabled_([a-zA-Z_]+)___([a-zA-Z_]+))" + + while read type symbol provider name; do + test -z "$type" && f_panic "No probe points found in $objfile" + + provider=$(printf %s $provider | $TR -s _) + name=$(printf %s $name | $TR -s _) + + # Search the object file for relocations defined for the + # probe symbols. Then calculate the base address of the + # probe (along with the symbol associated with that base + # address) and the offset of the probe point. + for offset in $($READELF -W -r $objfile | $EGREP $symbol | $CUT -d' ' -f1) + do + # Figure out the base address for the probe. This is + # done finding the function name in the text section of + # the object file located above the probed point. But + # note that the relocation is for the address operand of + # the call instruction, so we have to subtract 1 to find + # the real probed point. + offset=$((0x$offset - 1)) + + # The addresses of is-enabled probes must point to the + # first NOP instruction in their patched instructions + # sequences, so modify them (see f_patch_objfile for the + # instruction sequences). + if test "$type" = "e"; then + if test "$objbits" -eq "32"; then + offset=$((offset + 2)) + else # 64 bits + offset=$((offset + 3)) + fi + fi + + # Determine the base address of the probe and its + # corresponding function name. + funcs=$($NM -td $objfile | $EGREP "^[0-9]+ T " \ + | $CUT -d' ' -f1,3 | $SORT -n -r | $TR ' ' :) + for fun in $funcs; do + func_off=$(printf %s $fun | $CUT -d: -f1) + func_sym=$(printf %s $fun | $CUT -d: -f2) + # Note that `expr' is used to remove leading zeros + # to avoid FUNC_OFF to be interpreted as an octal + # number in arithmetic contexts. + test "$func_off" -le "$offset" && \ + { base=$($EXPR $func_off + 0); break; } + done + test -n "$base" || \ + f_panic "could not find base address for probe at $objfile($o)" + + # Emit the record for the probe. + probes=$(f_add_record "$probes" \ + "$type $provider $name $(($offset - $base)) $base $func_sym") + done + done < loadable section. + f_gen_asm ".4byte 1\t/* uint32_t dofs_flags */" + f_gen_asm ".4byte $4\t/* uint32_t dofs_entsize */" + f_gen_asm ".8byte $5\t/* uint64_t dofs_offset */" + f_gen_asm ".8byte $6\t/* uint64_t dofs_size */" +} + +# Generate a DOF program and assembly it in the output file. +# +# The DOF program generated by this function has the following +# structure: +# +# HEADER +# STRTAB OFFTAB EOFFTAB [PROBES PROVIDER]... +# STRTAB_SECT OFFTAB_SECT EOFFTAB_SECT ARGTAB_SECT [PROBES_SECT PROVIDER_SECT]... +# +# Input globals: +# probes, base_probes, providers, probes_args, BCOUNT + +f_gen_dof_program() +{ + ###### Variables used to cache information needed later. + + # Number of section headers in the generated DOF program. + dof_secnum=0 + # Offset of section headers in the generated DOF program, in bytes. + dof_secoff=0 + + # Sizes of the STRTAB, OFFTAB and EOFFTAB sections, in bytes. + strtab_size=0 + offtab_size=0 + eofftab_size=0 + + # Offsets of the STRTAB, OFFTAB EOFFTAB and PROBES sections in the + # generated DOF program. In bytes. + strtab_offset=0 + offtab_offset=0 + eofftab_offset=0 + argtab_offset=0 + probes_offset=0 + + # Indexes of the section headers of the STRTAB, OFFTAB, EOFFTAB and + # PROBES sections in the sections array. + strtab_sect_index=0 + offtab_sect_index=0 + eofftab_sect_index=0 + argtab_sect_index=0 + probes_sect_index=0 + + # First offsets and eoffsets of the base-probes. + # Lines: PROVIDER(S) NAME(S) BASE(D) (DOF_OFFSET(D)|DOF_EOFFSET(D)) + probes_dof_offsets= + probes_dof_eoffsets= + + # Offsets in the STRTAB section for the first type of base probes. + # Record per line: PROVIDER(S) NAME(S) BASE(D) OFFSET(D) + probes_dof_types= + + + # Offsets of the provider names in the provider's STRTAB section. + # Lines: PROVIDER(S) OFFSET(D) + providers_dof_names= + + # Offsets of the base-probe names in the provider's STRTAB section. + # Lines: PROVIDER(S) NAME(S) BASE(D) OFFSET(D) + probes_dof_names= + + # Offsets of the provider sections in the DOF program. + # Lines: PROVIDER(S) OFFSET(D) + providers_offsets= + + ###### Generation phase. + + # The header of the DOF program contains a `struct + # dtrace_dof_hdr'. Record its size, but it is written at the end + # of the function. + f_incr_bcount $dof_hdrsize; f_align_bcount 8 + + # The STRTAB section immediately follows the header. It contains + # the following set of packed null-terminated strings: + # + # [PROVIDER [BASE_PROBE_NAME [BASE_PROBE_ARG_TYPE...]]...]... + strtab_offset=$BCOUNT + strtab_sect_index=$dof_secnum + dof_secnum=$((dof_secnum + 1)) + f_gen_asm "" + f_gen_asm "/* The STRTAB section. */" + f_gen_asm ".balign 8" + # Add the provider names. + off=0 + while read provider; do + strtab_size=$(($strtab_size + ${#prov} + 1)) + # Note the funny mangling... + f_gen_asm ".asciz \"$(printf %s $provider | $TR _ -)\"" + providers_dof_names=$(f_add_record "$providers_dof_names" \ + "$provider $off") + off=$(($off + ${#provider} + 1)) + + # Add the base-probe names. + while read p_provider name base base_sym; do + test "$p_provider" = "$provider" || continue + # And yes, more funny mangling... + f_gen_asm ".asciz \"$(printf %s $name | $TR _ -)\"" + probes_dof_names=$(f_add_record "$probes_dof_names" \ + "$p_provider $name $base $off") + off=$(($off + ${#name} + 1)) + while read args; do + a_provider=$(printf %s "$args" | $CUT -d: -f1) + a_name=$(printf %s "$args" | $CUT -d: -f2) + test "$a_provider" = "$p_provider" \ + && test "$a_name" = "$name" \ + || continue + + probes_dof_types=$(f_add_record "$probes_dof_types" \ + "$a_provider $name $base $off") + nargs=$(printf %s "$args" | $CUT -d: -f3) + for n in $($SEQ $nargs); do + arg=$(printf %s "$args" | $CUT -d: -f$(($n + 3))) + f_gen_asm ".asciz \"${arg}\"" + off=$(($off + ${#arg} + 1)) + done + done < /dev/null + break + fi + done < /dev/null) + test "$byte" = "$x86_op_jmp32" && nopret="$x86_op_ret" + + # Determine the patching sequence. It depends on the type of + # probe at hand (regular or is-enabled) and also if + # manipulating a 32bit or 64bit binary. + patchseq= + case $type in + p) patchseq=$(printf %s%s%s%s%s \ + "$nopret" \ + "$x86_op_nop" \ + "$x86_op_nop" \ + "$x86_op_nop" \ + "$x86_op_nop") + ;; + e) test "$objbits" -eq 64 && \ + patchseq=$(printf %s%s%s%s%s \ + "$x86_op_rex_rax" \ + "$x86_op_xor_eax_0" \ + "$x86_op_xor_eax_1" \ + "$nopret" \ + "$x86_op_nop") + test "$objbits" -eq 32 && \ + patchseq=$(printf %s%s%s%s%s \ + "$x86_op_xor_eax_0" \ + "$x86_op_xor_eax_1" \ + "$nopret" \ + "$x86_op_nop" \ + "$x86_op_nop") + ;; + *) f_panic "internal error: wrong probe type $type";; + esac + + # Patch! + printf %s "$patchseq" \ + | dd of=$objfile conv=notrunc count=5 ibs=1 bs=1 seek=$probe_off 2> /dev/null + done <\n" + printf "#include \n" + printf \\n\\n + + printf "#ifdef __cplusplus\nextern \"C\" {\n#endif\n" + + printf "#define _DTRACE_VERSION 1\n\n" + + provider=$(cat $dfile | $EGREP "^ *provider +([a-zA-Z_]+)" \ + | $SED -E -e 's/^ *provider +([a-zA-Z]+).*/\1/') + test -z "$provider" \ + && f_panic "unable to parse the provider name from $dfile." + u_provider=$(printf %s "$provider" | $TR a-z A-Z | $TR -s _) + + cat $dfile | $EGREP "^ *probe +[a-zA-Z_]+ *\(.*\);" | \ + while read line; do + # Extract the probe name. + name=$(printf %s "$line" \ + | $SED -E -e 's/^ *probe +([a-zA-Z_]+).*/\1/') + u_name=$(printf %s "$name" | $TR a-z A-Z | $TR -s _) + + # Generate an arg1,arg2,...,argN line for the probe. + args=""; nargs=0; aline=$(printf %s "$line" | $SED -e 's/.*(\(.*\)).*/\1/') + set -f; IFS=, + for arg in $aline; do + args="${args}arg${nargs}," + nargs=$((nargs + 1)) + done + set +f; unset IFS + args=${args%,} + + echo "#if _DTRACE_VERSION" + echo "" + + # Emit the macros for the probe. + echo "#define ${u_provider}_${u_name}($args) \\" + echo " __dtrace_${provider}___${name}($args)" + echo "#define ${u_provider}_${u_name}_ENABLED() \\" + echo " __dtraceenabled_${provider}___${name}()" + + # Emit the extern definitions for the probe dummy + # functions. + echo "" + printf %s\\n "$line" \ + | $SED -E -e "s/^ *probe +/extern void __dtrace_${provider}___/" + echo "extern int __dtraceenabled_${provider}___${name}(void);" + + + printf "\n#else\n" + + # Emit empty macros for the probe + echo "#define ${u_provider}_${u_name}($args)" + echo "#define ${u_provider}_${u_name}_ENABLED() (0)" + + printf "\n#endif /* _DTRACE_VERSION */\n" + done + + printf "#ifdef __cplusplus\n}\n#endif\n\n" + printf "#endif /* _${guard}_H */\n" +} + +### Main program. + +# Process command line arguments. + +test "$#" -eq "0" && f_usage + +genelf=0 +genheader=0 +objbits=64 +ofile= +dfile= +while getopts VG3264hs:o: name; do + case $name in + V) f_version;; + s) dfile="$OPTARG"; + test -f "$dfile" || f_panic "cannot read $dfile";; + o) ofile="$OPTARG";; + G) genelf=1;; + h) genheader=1;; + # Note the trick to support -32 + 3) objbits=666;; + 2) test "$objbits" -eq 666 || f_usage; objbits=32;; + # Likewise for -64 + 6) objbits=777;; + 4) test "$objbits" -eq 777 || f_usage; objbits=64;; + ?) f_usage;; + esac +done +shift $(($OPTIND - 1)) + +test "$objbits" -eq "32" || test "$objbits" -eq "64" \ + || f_usage + +test $((genelf + genheader)) -gt 1 && \ + { echo "Please use either -G or -h."; f_usage; } + +test -n "$dfile" || { echo "Please specify a .d file with -s."; exit 2; } + +if test "$genelf" -gt 0; then + # In this mode there must be a remaining argument: the name of the + # object file to inspect for probed points. + test "$#" -ne "1" && f_usage + test -f "$1" || f_panic "cannot read $1" + objfile=$1 + + # Collect probe information from the input object file and the + # d-script. + f_collect_probes $objfile + f_collect_probes_args $dfile + + # Generate the assembly code and assemble the DOF program in + # OFILE. Then patch OBJFILE to remove the dummy probe calls. + f_gen_dof_program + f_patch_objfile $objfile +fi + +if test "$genheader" -gt 0; then + test -n "$ofile" || { echo "Please specify an output file with -o."; exit 2; } + + # In this mode no extra arguments shall be present. + test "$#" -ne "0" && f_usage + + f_gen_header_file > $ofile +fi + +# pdtrace ends here. diff --git a/gold/po/es.gmo b/gold/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8c231b2aed5ca4efed14dd6676ce0fc0f38c58ee GIT binary patch literal 51373 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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..25ee9ebba78c9d7f01dd33c58ca0208aca08cd53 GIT binary patch literal 81582 zc-pjm31A&n)&C^=xm3lSMN}SOZ3}tnLS<`CdrDBYdXHy(!Pc1mAG=@FV9 zeHijbDSacQr&9VdN2;KLQu-%K7f`zRosQE+sYmH-N-v=FI7+`tX_3<1 z4tJdSl)jhJMU>t|>5D0SoYI$2`e#b_q4e*RzJby`I`G`yf%Y6p>6<8>pmZsvXHxnK zO219%+bF%K1NA;3P_^DbBUa(at|m`Z`K?UxDZSSK#?*O4m}FrE~+g zlhQeq?y?f)4_t}9{ zr}XA7od-(OJP(xa&-EYSID0WZ9)bFDM_|0pI|ARm>j>2UAf+{@-<@p4aqXJm>VF z-zzCSgwhlB`38M{Lesae!*`EghxX^!q5r4r^F{i6?K+IpHz|D!kHBl%M>c>3x_G8_I{eb^;Kk)3fe$?}LKgRWy1DNmm zlrCg^*XQ#FfbU-)!2JGh0OS9PLE!hHnjSHT?;SmeexE#ub#=}l@aG$YpfitCdMu?2 z)+0T4J=*ugdeDbGX|b+kIE|e&#rUWB-`a$A{bNdB&GWVi zO4E7o0zF^!F3`C(l)i@2O_aWz*X6rV@1*9RrRl}`{yK%f^<8NHJ(M0q>2s74OL5+D zES`g7fzQ_-i*f({u~=^{$6*}yI}YP~+;Lc+A3P5Db;EJMza7T`zn)gOHxA)>x*2>_iZlL`#)UJ`&SMFKjsW$95TbG=h9)6zk3+pdukZvUp<0$FCW1? zA5ZE3FufW9KA$jxde0d_zdtjAetmZY!*~G*x<|>MY&xxJw(&YDC#|L6zlM-loIK7b{%t^F6Osm zXwS7{z?=KVfOn6Lp{^$M_sSj_;o}4!U&fIN*Of4!Zj+rQ^(hef0YZ zA9!)Mk9GAYU-{t#=*HR!tjEn0pnq3QVEn(M`44LPiY(f5kfz6E(a)2!Xx~*?)O$}B z*<_thNe^kq5F!LQ^n|BvQS&#rmQ=h8gpb3-2dZ8DGcUzkAl%6$N}}qJaDh3Rsuh3z&x;1+3ra3#jMiMbNjyH9eiuRgAAi)bolG@Z^9J=6$$? z{(Z6pI&wz|?c7lU{F9o$#|e1FL1jFzD`Q>o6@-M7{-`uL{_A18f zt}5`bWh>Ut!mSwhwOcX1w`|2c-@6s#_`p`+^TS(F&mJeDov9O%f5eGcC;ca){N#xk z#}A)~{@#8f#{H=iu|9S=3H@q63FG*#lR&RdISKQ8^GR3-KiB*}oP_as)ya6?`((`j zij#qF<0k|D)RR%~1t+6D-#Qt1`tZpZr&*`qdEZlj?_H+=4>PBLo}GS*uESG+N83-q zIDGFEjOPzdLI3}L3i$SOTFp9=i{)~VpLKR*@Uee6_> z>q}1qzd7_Y)O+MwD4v{oaf5So>boQ+zM*?j!F-dvACz@SQK81G(fE z=b*i>dq4Ws_I}{o()RoXK`{22l zr>~p~{P-!QM=^gm7vJqX59KD#!?=9vJoNVm=Yenk{yfb4J|9B=SA9tJ%nxBbpYtKK z=R+UD_+?aces@0bai0s&{v$7d z9=+uPK>`VrLgqKm*!4!cP8_=_+uxr=~r z*ItD7-hC0;|I9_Gr~RYIAN(ljT}7Wi@KMM|*MAiCJor(-zx87nrd7C&JpZ23KBo5ou2vf9!RM_UjVG z`%8d#!6jIqmtKPQTz3iP=YCD!@NvjhJs-#XpZ9Tm|Nf6d58vxj;K%WoLM}M*QhfKO zOMxG^Uy60{BTb*W6#aU`WuUW*FGKr|)aTM=DmPpP`tmtV@4gJ>9={CZG3#=SW$$^yhM{n_DkOy+6Ag^ZfVAv5psB0etAZ0^>4t1?oNP3edNz`}qCsEIXp9J2%@l$x;@hR|wu}`6Y zmwXEIcgv@M7Y}_3{OW%`jdd{eY4EELd>Zq${nKdoQ=bO>9@~%}x()RYZ3CX3xeedB zc^m3^VjI@w9-jgI*!UTYz`YZ$FE5 z`M9QYu7sYPxl-x)m1yr>SEAm3U5W9ZcNN;R>?(YB;wr#hb`|*C-B+PM&s_!lNL`Kj zU3N9->87iJ_ob^b&!=CFas2qzsQ+tM10R2QHNNw!t1&LGxJKo?Yf#_XYcSvbHNevk zUxWF(;Tp967y8_KEuQCGi|_Ydi*lK3L2u5z7WIDVTE*LIfj5s++Rb=&o#PC!JarxD z!K2rqzS-BK{+{dc{qpr_=Y`iRKIrp9*JJ!&_Bp(t|2fFjM|}?YS9}in-~Al;;uD`k zJO4^)KkG}Mhu-?G&*S@_rSy&#$9d%QX!rGB1fRR(ix|&ed=d2FX?_2qF9B}XFX4H? zm$1%Pdf9pjUg`2svcajri`^jTooPZ^ZW>y%FQ| z=9_?TD{cbcDc^+hU%d(SKBLcX_$r<^d=+%KL}{Mw@m~cUoqsd>ee}(EzTswk?^ict zzTbWezPt4n)boW~Q2wr4fIkO+4eMt3YmiH?_!`>v@Yht%yA^PU-wHZ5aVz-B`)>u_ zef?If&)?{K=j&KMi@pwiHS%@L&-q`+xP0d8;8S1J^vdziSF zH~8?icLV-WeSXP3pw}JupnTswD0jj=kfX1>2lU}9_W-}2z6a~wY^x2UlylZU^MK^*dBA-hp*}@($4J_w9h*cJU6->1{her*GPUas2iU z$k#v6_xJ9Az2`Ry|BoGz2WH)i`Pk=Pm6z^Ce&@Y_KU$v)_d;%c_q|vT7u*Z{`^mi+ zpSeE=-6;JW^L^dVG46N&9P9S=_aR+>AI9yY_hDT;a3A{r@B1(wyZ-|CwCWcauc|(O z`40Q`600leSx0M_GY9zZ|0 zKLGr{?*YI&zXbg{_?K8O6TifKe(0B&&+q;c<^S_bwENA!0{$KGE41rVze4$+{|fD% z^&r;O(g!gP-h*iOl@CI``O$;m=MOyydH?YTu|8h%Ypl;XzXqS(^lNoyXixqvj;o`x#gsXK;ORi5bWh|_$|uqu4&J2 z(Vx?Qi}n2#N-J!qqBP6v;bB^vY*&6*{Xvg_k54=TygKy}^;@@vZ%+O_@ZhH3V;rCQ zJ?O;iAH)2&KZfz!^ccSXfyXePUwsVpZpUN5hi4RS@5j;a{>L%C?|U5I`}X6&vI>c60$U!?Q|#@D}qzAS$d^k(goXvfh{;{EWGYL|Ty<8fQ4xtivTw0WbQVLOUj(!hBu$6!84pPeGpi^HccFIZtE$Km0Vl z_miiw&Yyi6{oVVokk5Pmit)bcuaG+*`YYDk@BWH${PSOdZ+rg@?K|vmnD3##fu3LV zH?;q!e*^p<{sy}EmcJ9NW;yxqn4eSsj&Z-?@1T>;KfvcZ{sDgTK}vgg-u?l3a{qs# z{}dad-yv@Wy`wANTq< z=5O`CQD5QTnC~n9jdk|mzrknT{4B5}u`7G$jJD-Dn>8R)M zywuDbMpeC>8%ErHoG}P%3dWlyZMBrIgpx zHcENDeuYxT<9jIOc0bdKcI@(^78#F?lybi|Q_B6gy>m7FGNsH1 zeoiUldy%6h`0UC{3{cELP- zau@Xb>${*`zuE=k_2O5fp9g3<_G;kq$6t;7yD4Qk@!zjT`(OGR^!F%A*`9OeYtY}v zUxRtr^|dXCuc1`*Q%YHmxq?!b5B{O=4}V>Y(3z7d^_ZW%4(*!#depP__4rPSQl?{< zzaHa#AEg1W_cyc%e>(FGXy09L03Pjl1IFQrH{d(7--vR9?Q1O6_fl<8k}H^6_AQkGY@>-*hz$GSXxcYJr_?pV(kQOf+} z(%sSD2X@E2zI6}uw~JDyyTv_F-+6lg?%_Rv4{v`H=6yb;tj8>Q6Y#Y9Ce(A?o6x>{ z--Q0Xeov&w?uqfaa!-_df>NgU`@gwG_{;Hc23~#s&A|7Y-wb^GGo{R5_IL~6y|?~8i=xi9+r%C~{e zw!aPZ>hQN=e*L$BZk_iw^zUj)S$=p}(|68p5&zF6l={5RW@BA>Z^!$)-i~qKe@=_& zKWpXy&(50z{J3fk@b8P7-Zux|ZJCR4nll&c=?Hx;&P9JOpp@m(n>GFATrD>b<27d< z#=UKq?Gl$GxtOJi}u5JzOo)EcI#`@TlMn5h~qusZqL9ZT9p4!pg;9rO4<^D)i`%}4o<%?G`>V?OZn`T6KydI9n`EWkLQxd3=~{Q|7_UsK9* z*jpCjyV-?k@1+Y-{;7qK1NK~mb+AO!EtIlca^oWKiGM8u-p)IqMeGhk2Y?TL{Q%J4 z?`rzS#o(9TV)XB;i&4*$i?Lo8zXS3|@DB9zoOhsIx9amBDP?(PuLIG(4F>|xPCXFw zb?JfN8@C*YdUojhKOTs2dBs60H)z^(5bARe!n*v}LE!J-JqYD~eGumRKL?@Sc?Sc( zIuFLUo}ka4(C51k2Hp7g!I+QN9)fmu9RfTnAA)st0i|p=yzUV2=a(&M5xudv1oF@W zOE8{umZIOsE(N}vw-k7C!&1<>$ChF~-+HLx@1b~q=AjtxTMos%&sv6h7A?d2%PhnC z%2UdAxC@p6pPpHU`Pp<>3rUF75Bkr~o%r9Q{4IL->sH74bSvJ8AA)}Wjou$ke+Byc z8|%_u5wIbB+G-_#NL0J#MqsIiz|2 zWE#{0+s$)8B(y_L0`OjptbHJ)ZKv$vSTfba?)^E5Y7K&$qEIspXgtGwr-WVRo_VJJ*4I zkNG$&ra}oXi z3)^!j{a?y&(Rwm9bMY|yhP54kWPU?%zv1<%`NSrjS5f|FwLGy6=X?5_L_p^j)=3@c zHj~VEH1AYOPi=)wh5ud4V`t{m`uBk3JS=R(C)9KeZ(0k24V%JV5<^P^(1EnX@^E>J9Y1Rd`+*z%N zf#ZM7gC4f}{w7UNZ-L$Y0p{@pe;3aarN2)J!p>*@VT)?9vz*K-T(KEH2)osj>1Qel2f-*|s3>~H+D!uIjrIj~)H)ru2REcM;q5=$S-+HoMEeGq~MW z9joZ~gx1}o@7eBr6TN$DD{O0Pt#;o>zdPvf6|L~YuHp7t`9GrPk1}6i8G+Jww!%)g zMe{GF=Z`bLZiT;x)Jw5!v^w&y%&+&TJ z{0qcBF;Mep3J`(M=8CS-py-e8yC?At>b5{u#3K}6?Vyu+LrfG`u$eeP)FFlsP9?#c|^-@ zqIa*Pzn|0Jt*yzno~0?v#3#1GCvXhYc^+SuGadMm&fxV-e;3f-->vey(DR2_CLnlH z6`Ye(aMX?hu@3l#nird9O& zYWjP`>f0yi`G@+vwFUmo$60q`zD;>QQn(xG_nYY5!z`nASxu+#F3GXZeY3byUx>t%$=pncnTe@|42t(6VpV_WxGX*K4|i z;BIAHr8F?|O)J~WX_4P1 zPtv=4>Gu~}5wk=pne!HwbtoOCKTqNBX8h7J>xS*Pz`r1kfm{W-mPPvMSl+}+^1VKj)K=Z zy}O&9f6BD0Rre{=^HKDBzgGB(?qt4b&2P&3{b5ZX&^^%iF|A@7COvNzp9b}(1^$%# z7>0gl=x;v#{z?ntPde!LX-xZ>->{xd>7Oa@Qu<@N&F8p{^mi@)rgvZAc`$MWuTPex zv~Q=g?8Ur^{?2E<&3M*|c$RDE_cIQBboaCFK+peSJY{~uayjd{OrI#-)`Hjt{`Upe z6d57aBW~yy#!@52e7;yn1=aj;F&E5oX00d}gCN!Kje2FTFyf^K-Qk=! zi!xUF!H8SVc$t)6C{@B#;EjZSu@G=xkC!i&tEs$OqNh}9c90q^7xR?z(?F$EDwabk z=;bRpR|+jjW`u5e%nRl1a5c5nD;FKE!}W7sW(ifpPvdTo8ZL(8sc_s&ja16iyfEb! zGO3(5=8jaUp<_cmecqPPD+Kh3p-SMT+%PQr!T?Sl`%gEy>g21p^~Sm3EIr}GDS~@BZBvj>ghQ;oMDkA zDfy3#F(;`3n$p5p#tq$65SA+=VWsSG&eqB-144C`{i$9qrKumuGTtUYusnE38fFCY z<(jO#M++cBtFaJ-F7+W5_**^7$F&_%tJ+w$!9o zX3V#Wq|;-W;j~YMwwNW8tC|HsGg_dh6|#s{?7x31=N85)?wE(6ZZDRYU=R-YoTl7i ze{y!l$^wqNJdZ>icpA%u8H7HZtD`O89m~6-w#|+T68$O>Ng*1Q+U(P^u7SdMN%@sW zb@Z=FtymujAZ4UVmEnS$_k#KKBdnHWx^!40;M!M%J5zqJzPw);Eeh@r6Zt8Y%asx> zm|Su5P-#R)aNHjom)~WNhb!Zc$^^yacDlNXqoV<#q>Oc{OmpF-azrG z9-N;}2P0*_1pF8rujGeQ%e#*zP>=-fmU1Sde4IO4Da5^Pmtt;tWSm==^M}i>k_Me| z;u~JR6!Ov{&Pa;{QV@tetxH5)?W%xH|R%nvA(L^*eOz(F9Wl^KVl5)v6i~~gO7?-N?o3L0+1>;14mtZV~3=2AO#SyOUbOD)m zdYZ1_R+QV?uo!W%Fe$$+p#imsHP)4RPe?+;N&OynS>7rb!j10>N;2i*6%o)w<6`yW zL{sCH3uZVmqixdAV9D&vEQJAYDwbqYL|949^|q7<%a}Z+Mrk^MSUlA!lAwmY@;s|o zQiQ;E#Q7-T1m=sv8QqpIU zwx%#ZyBPoq*-ij%@$)2TV_gvGFR4}_tA}ZSfhNh%i-4EYu462;nn)}vq&mA-*@K+- z!3EnX+iPFFZhe}T+DJA+8b4pk5fdVM?u}GJMJobG6qe!VN!3qN6XPM12aF?=azo`= z7S$ecSFH6J7p3)R*HkGa9|;YKjg`v95n|;~d<4gdzT`+(@Cz|q=w@k1X$%T!S+4G)^6`C_U^`r~R?Ct{`hBr!9uHw^Jn#T>OGQsKuIoQ2QOy%AYek)0R@@ zG(pfs7_%Wzvg8$_Sttqq*DTRy?{va-cuQk3R3TA}m$SZRB~IRH1uR-LWoO84NaJm~4zN)Yh@poGg{iG2%C5_q zid$9+k(dE{lde<7-dX^{q2h?BSu+6RaZp%M(iJTgI9n)gF4T$RiOf#s&-$6jdX`dQ z-2mlD&U0D#pAJ06KxT#zNu`C20rD=jiueK~wMJ0=o!#2gWX}>19n*jeb`Qj($}``! zYW=zuiokWy5u_2w#&X4BOV$adFJTKu&7r4liGI{V)~<^vS}k1=K{slR{b~WJe@${=b&chm{?J9YX`1 zt9v@v4Gwj5cdcG0%a#x^((GyVQ&X)nJ)J$h{Tsy)C{lC#ekwO-Jc2EQv`z&poJCn8 z$u)tW5uu{_7m2JFMN}W??C4*yW@u$s|5EEW6C2TyAh_}ng0GNo%4 z)Yi_ndDew``?wuTHT`dES8-bP-wmDp15#%48qE=G__i+IKr5jV!CBg8`U1~niau4c9WU_7qrci{9*0b+>ZVp z8IF0Wl||Ljw~zo-5L*m%h5nv}3lBPw6(TpRzU2THXQ(yTImR zIm@eT(kpmgSqitM`ih&qa^DKAWpLb!l(~%0mU)ssMYgm|glcNVBB2#!EUNrDqNjdY zkUwZorPg_4ux6@9B=3=!Etz87aC4j8YM@5Txuzw<9(B;0C!|@vK@}~OqT&Z(gOXdx zVW!(>Ii}o!i?t6OEQF@|x(CHNr=O#yjgsUuLY$K2jsoLIZNZfyqB0xEvwl0+yMiV& z!%O^x3X9=Qiv%o+GB~f~)xCqUjk&Hs@6Oa-(+3iH+2AI|w(`P-Glh=~bTcU<3yY!C zQe@aI6P}i5RE*bWQ}}_VL$u$1jH7HN4J!rGW;6VTAUL6~aFVGO+`K#-`K56+f3r z`oL?dGktyayR3Yie4aU>ZVPKm` z(;$yn#=qHPDIw0I>VDa@pnXAGYGM0=c~p9$5`<~>wnq+1A~IP<{X(F6v`g5^l8aHo ziH~E9*xJL29^4^D0jke8LlFC`8;!v#5)f$KnclF%#bBaF8~jb96;67vTx3^i+DwZN z;zgg%aWf+Lbh)S?PI{CocPm?n@VgQkfcjafYxs#=JQ{(=iUlMa3`68xVK`(fN2&)X z`LH0T%j)fl*`k%n%CA4t0D`1c61UA1rDc^wEn^=z^9|L-X$bZEQm0g2SD_72o+iIp ztCDCKYkgbQB-fT2D~7Qxz6QS5#L}^HWq;?ufYXtI$Cfa?%!*j5;BBUoIWH6&iyct8Wr@v#t(?g@s+#GgzKz@Pxyae$;gi+RxP^%!ag8M zI^%HI%jQ&`xTRmpd6p|C5Wa2d6R1jo7FaPiY5T~9)7K%KffuwkQfefirsgVxo=1Sf z-&YO}t?TSu*}1YY{&wVx6Cm3mRm5gOBQDmMMYKoi zbL;|TpMlE_K3aT3OuD8jx9(s}|Cw_GuZtmy6A2(Cvz*RLCNRa ze{4KVEn2W}vG|Bd5E>0PGr3zuSf6pBJ9ZUD+PU(C*EKSfNZ3(JSn zQp=IHX01FAnqDQiS${&TRjF5I@q*6AZto*78gk>lrDQRw#2pY_x)4+Xu61ayC zTLup=fe!Sp>*(p60q918>sk@p&nw^yvtt(*3wAU~O+jmFuQ)5kNAC^~m%T|JmTC=O zAhK62QljVx5L4k&%c(_Vq%z{Ew?9#n)-L=Fl?FAnO4f9BGSE&|HFZs@h@!bKd&M%XHfAT>&DASnv_OE1 zDWyD)FtUIBy1tIVH6lmR07mxX*qqZTpsf3e+n7MRQQ>?L& zW1vQ6z>FeT;s%y16uM&?G~BESBcQxePIXDm$u!1qlQ|Pq1*~#e#{3#7Gl@FFl!yUA z)=`AcR0LnUR;)50V_ty;YcJIvDbCr+-Sm$Ae8I|DhnGlHMMj{GBrG>95(nj6q zzXs;}*l2GTV8K7{l7>4;c*VJaHApZ`#$%}Pz@%D4s;k!O za^4T}qQPYBxJ(;v^EioSLDnyoB%-5`G;gaa>8#YTXPXRlt;&d_uQ(JT$Q8o?995j` zQIk^dnCEo%tncn%hl@)ktC(}7hBN2F zFe>2&DG4_)P7WE^sRhVYUEQ7X9~QQqRs9{}kaSkDHnnO-daawKTv48Aj;XGdOk=$GwUP&!It{hgNYtVE7)KFHRx-)T?6X*fQ22IMr~Q%9Wq~{D z&5^exne&&3KjDLg*f{n#+V~agxFc3-GN^%W725dC~s0veNqRo zVFxz!FRsmoaYL}zM7VHZldwRODFmV5d3IE%1q8Av!8J2S>9w9`Y)Be3qx*tNu84~9 ze0Fzk=zUz%*+{MVB_jFVlb+n1P0#2#)L);$g=v~&=_@X2qKx2gdpGyL|b#2O1?BD z0DEF$0D3jdwhwAKA>dZValagd4ZkMrI|Jb=94Cl^1T^^hyhj*7FW=VN-?h4Hoe4@6 zS)-;N6D`GRT2wAFF&Z_t7BuH>twtv8dd_Hr%StaMow>1|A0%KAy(lqnQCqa_2{`FE zk(CmY7+&Nw8iDLow2WdX0F-b8-IZbLuM3Z?fu0f)2wJ~quj+$nE8V7fLXm}2tufO$WYkyTG{y{lFYbPhU*2y%L%!3fS6R|tzY zaXe5F;0WZS5=b4wi_FNA@R@sWgv8ol1Gc)0jW;M+U?W1I>>-*J}M{ zWD+jOh~v2u6UHJPpt)zVi-H$?lnHM@UnR6U)>zjuY~H68L3m+Y%l*<{STU&PTIpM| zlVe}!X0OP2o1 zTJ3MB9@A^lA4oC^5Yax%yo#L*ktIMp6&e7J^*Jwwu9Z(MYr~W<#ySx})y8?63^Oh~ z+vxgKP>HN5%_tgSxy(4E2iB|_>h4;%cBr?1WoN&}0)(-aVl7x~o*P(0@}V=(bxfx- z(AT-5tD{>be43;XBDI8%=1V!D9sEtWXpk)HJi3p+%tUk`jyf>fqY*v_s1c;^nqEW^ z@=J-`(y)4@{xC>HVWJ=~c^z*~Yhvn+Sq*zmW7;}TimOpbOkTnR+0P_B_G06cwoH89 z12SaR(&iT?jID7sx*2uY3pew=S!*TolsB-FNuio8dWo0umq|PsE4%qrB63A?YT^Q- zIuyl%Y7lz)RJq7jT;t#ez_@1*Ha`vrK|~*#fFO`yY8b@1Ob2D#-yDhMs~?1Wd&(G1gpZ_0gA(aZy4NfcezD(|X}4r^F`nW`CdfB(hGaJKjK}jG{tVwCBaHG?vD5EHj*%%T9KWH(P4og4ChQ zQU|p!o@duGCepM;vj*Tb8>mvps(A#Dqy=;t%#?|ovJ-6tfMvp%=;K2VqEOLVP}{XB zc@ah!%H?Jz+!011${kwSIj|xMLy80Xxfz4R!&ViyxRu!fcaE^;L#*gz??}hy=D7{5pU)-0;*;)y8-+ zkCDV>wy99tO<0W|ncc-P29)Fe*X$WE1S2VptS2n3aLkFC2fI6$FI;pmZ&x7P zC#g6#ml$hT@&o|lV(Xbz%gG^|FoMCcLWtYj+h?gTzGN0bc`Vy^t?L>b>gez9*oc4| zT1^Q%SS(C(fzc??h+szvr~vgjwxUZ&Qo8`d#3nKxJB;Xexsq!XnpYKYi566I0&|u; z$BPqUWm8@AdsB0xkQ-q(Tt~uc1p!DHaRzPWu#YW6af@pk*&qzXwsmk7te_KF%a;Ui z;K76(mmHSOWtQ>Emi$G6Lq)K9ZZyR7Jyi zBo(u5l;Ld8jDe7)9r?oKj3U5JS(!{~%A^S?vEeyBCM=dmmg8!{YQ>v1uznrl=7|vG ziDKqbNwyj|*7O&Or8bVH7dNFuoYTCF@Sa-Zl)>jl`?^+8ISICtGe{zYmylV_kw~<< z$M}W13}&0-cPv+k1Pms@;%zC2u7PLKHHSgPb8gDz{Vg0rta{+sNIJGXvy9@8j5dNa zqGu!$CV({LczQ@%0>ln3^(@t82zjcAF_q>_tB`PdJ%g+M)sn=!h}JZKS2P=uDA@); zI_6%3EwKs_@DVhP9IF**m5p~g*}PvvJz49Q13N(B+sy|UN?dMybVCBun~kz%mP>wA``7uB4LNAhR8V;{L=Zx?3K4s3Sz$o$zOPQ348L=K<|LBq`vQkq&| z8Ck$W&FzH}<&*lv=%N_nh)^euhwSo0Vk(`AHbwp82a-iQlUB4aWV{sP0h*qaPDLr#*xiC4-JNtDbc#^!L`P7;-zjCsNLxaar?Dw4FGeHY*0& zY|K4GD`*hkZWXne%?!Ya70m<;mcX&m56{;PnR8Y zGL~bk6dcmi-MgZr+pIaiAVJG=e3nsR3~(&J@}WSsK)BEBV4oPw>_VeOTC+oKX>=S= ztqs@|Zca#qJO~Xiu!$IaCU;tBip~6SQJkCL)P{NKK9CA37v<1%%Q@e(rQf*J3|gu7 zfWH3T4P7fcW!U1jI#~{kuv`>@_&0{(@g+O_nM2U|2*0N0-tU*>C=>Gs2V-5>A7+_uP{clBm~Apic^RA!~l0B z)bq@oJgXwp_cspYtPv3+KaB13G6(js!+Cvox9#_jnynxMYX*k~Huem5EFT(Jvo3c2 zL;%r=VCF@%Ei$PN*5@}c7C6yJ%xOp9#GHf^(x$pR6;K6OxP_k6$5yt%&i=l*AErX? zNJoFqP+h2|hG|0QV|}4cU5x5Tis?>+0Dmj5AnH@R-Lp_k@L+Lph`bl64kAVZE)K>m zsAOfMPV8LcY_p#6joNdfU=<X9c|ipehLYgFtwGQ966|=vby-~M zh19_tK6a`@dQiA^l%W`@9XqCibw~~HWHeZ+50J!(_>GMVNOWF!sq9a>F=mjq7Rs`A zN+FNYP`<(zRz5~*h}VX_5=syUhgg{%8ZHwB9bxZKGYCSouw1M*&7ZP**$0|yn!VX= zTvl2?)t3R#?9<4lfyp+{7plH3X^C1flPbiOSyi18qGtngqhMiepR;x|VWQXAF$`nwsn{g^gIWgZljVmFqN+~@R(agx~Kznc8 znQGbdi5Q41Vmcd#OExj8)>YjRdJZjObKwmyfTdF#Ho#1@m6~t zt~eSkvib#1JfgLFv(dOLkQ$dz5<41N_~2V@rUBS@q)5DnIYW*Fd)Rx7Yr?#6cFG)S z41lS;oK_$Q4fA1kURjQ>*X@LI#(b@fM|fRG^h3|h!aA$FGDfb5*>}OgTN2SBe9ro) zw>gSY)Swlo5``v+Njo;Bn4MHOrN(xK)D~%Us!e0~l3V6Lbl_oHVl3@LaT~x+lbsBz zYy?&=PO_C|!(u+IO{j0;fHppyuTsL1x~f{J^T0YXNR1TB6Sp_;N7(Baqj2*05y2qq zCLW)UKVP?caE*Ob)=m`G%>)e#v$ZE;{hUEzu|m zCv7LKv>gZVCBz}zQDhmpEV&_4x~+Gym%yAGt7UmHwbfL>^xFjT*UD<*OHS>*tfmO| z*Cz!Zp}Jz7sRJ*TB!rA)ikxTf>#+Eqpx?Ad<60nu!!*LS+asCD+e(tTR>-N*R7`k# zdaF@~%^P(oMMvL8863WjQJst10&tT+ly6R4Lyz#TrtUgRm;|^c@z3G-;F023LAKL0 zJ4!7H6$QcK+g47}W_;eHfx(r~9J%wLEH z2%^cAZ91{SKy|pepeT%2h*6WnTu~Xv<1^kf6UY7yj)0TM4c^nkNB-AHgppgN_Hrr` z!%(Mao_bk8ef?7u=auhPwxlLA?vTh0qrR8R)Vm`Mg~$vs^t3=D61>1ba=8lo+G`*R zEH5^%ryz|gOxq|>rouF>GEmcf6kzUjaP|UsgTM-Qnr%gArmQReOz=>A-JR57HQB&!m@E#)9-<@_s_ zJy*)jPkfSBdcmUf!Ud@Xhb&pVX#a%^4p=~d>3)wd(Xip(kzTMkz3`yaq63yJTD1Ry zMGF?p>UM)LJxH?@Mrw?2%Df^Vb; zJvYB3waPCP{9rtFXsEUEr$fpjQTK2;Sic<`n+Q?Hy!L_@##QhwN3(jmdOG6~TG+l| z)(Y%&P7jJ&!0Ow4ns&diR6Hf5%PdrWLMK9xr)RcqT-!aRXwZWzLF44d0 zcecSeJM62l`Rj6jGgc$V82Z$3M@!at?#7TnAy3`qJUdSOM^l>R5!!%h}#%D9U^~|eq!Yi1M+?b+q6~QDM z`t+JA$oVmS$Jdp*zVa=vudfPTRKnQcKN`bWPK?z0js@Sk*^La#pSq z^^Mre$k1k*#`7Qrwr{H`iVqt>#1)}#F3Ypo{3YKb$?H4;kp>0e z0i19f<><>`3C7!hX-z%$1*Tyo>v@J!@R7~*pB3p8k-HW9@1M?+Oylbe$<-&5 zetF!ZHSQOr^JW3pUSq0jlzyhmM2kJ%B0A}6F(J#@Y|&g}n$||nj><7jCu&qI`ID{% zA$zsrm60U|6S#@{Nz;rfG%6`SmnX6`QORXxosj#NXEy+o~4UPB*5mds$!uD-KzM~saX;#dIs6__l#VttgCkDb)7!bAM zac^8_;QQrrF`)l3HhH9fRk9V1Vlbqe$@(OyMU$`bxd4UydrujFvY^uP*E#N)qvVDO)CbLr-KTkmLj6*dLdsa za@Cc9dQ1$2xLL;K&-5RX293Hgfo!;)Oy9l(1+cnFgD0FJ&s>u}saT z;V|&?^|z74*RApwgKSmSmQ*ZPt)@pS1tQ_`pqblN8Rv>wzdS**W6{E_D$$54k!2EX zSd!sGNSWxlwbL%_mvgJEz6<>}ec%Pon|jSNvm$St1&aui3Oce8S&&nW(I_L5@oMKa zf__d4{h~TZl%hc@usp#_$Y;XKq7NZk7!b)%G*GYYYFb!`SvK%vBx%q~tt49s0~Y6W zM5$9#UgA0>cO zLzjsxQ)Y%JV{ZG6%+~8WuUBZ&N-fe1E6x^prz45qjYom_vc>VLF|w(|!0mDA%WQ11 zUfU=eR>volh1sujKA(A%tBzM`)o{SFus&G|^R4yrLd!+OCD7$J(~7oAJzJ-&2KUJ} z9I%*ml7cKtcszs4$cX%UIT|P;2$g_T0mcsID9TWyRZq(a^geL&#R<1r*~TLr@a)RO z%XFAk1B7Wy&~WS0*@RS~M6$r5Y-%nMW|p~pi5esZ#Y{>h@uC~wAUm`2EUOi0Z3v&U z3lr^;k|I6Ea-N9W0re*p3x&d!5`0QU7QU1=U1C(F*^20*LGp5SJf9E=#Ja-Eim4-p z3QLO_-ep|#WhpP?@z<@3XVdY;v*{dbTu?Zf3U+sA+d;L{-qdRdu-kYxUx zatP+4)hYyS&rgFSMh+t#-~?2a<(0szP}e49HVv@HPf$K8q237Ry+3gBLP zp`TBbp5pWR5LN^cy!c|@Vxf+w8X&I_gIVf9faoNYDuWO(7E78ZH!1#p<=5*z1CMTx?O_U93smIX%7WrAgwvd#7n?Ip7aM%L zI?cjubP+KVsD?KY>v|OW+DuM~VQN_DRNONzH0hRHH?m>ZQqm@HjX`E0C$W$kx*#rW z3s+hcFSbhbXfV@iN%|BMbG z51m{oY*t53FOH6j*wbSuE%m#ai(OT2yuKTiibUt=wl69n+OAuuDOTIISn4*Ro*eIF zDHGNgwF5$kqpOeAE+1)9p=)kIHpT+}n9$vTd0W7y7bP2RS-N1~f;<&*YYt$e?}BuR z7FmTgx|!dU9CJ>P7_;RuEju1PMft=<$Z6TR%nYu5KU=x;0{EGxF96pS33fGKE2Jv9 zY_U|K+7w%~p5nN#9J$Hm$;`OC++;D*ZrPbFY}I4LYfDWOLn6K$6JmSBB2y!WJI1y~ zl2h1q*RTQEA~U;U?fuGAH(>iV(}MW(IsO&1Q(xF=!`qh=8lc|299g7lOsZzW0?Skh zHG|ER<|^iKmvn^+TbV`T^3%3x!VKBayEdNOk{@QJqPSQb_-Q99T(sYZiCV+RA{KxK zVzuRAWl`^GfYn42I%KS3=@xfC7eu_J3au-n6TRk(qo=PYom^*@?{SJNrOgOL_exX! z;_P5f!X}nHEYJMkYBiv?!m|=qhIs}vo5t|gjgJtGcG8j49`K@ zI1mEC;)tqFRT4g2Pwl+*W7*w&6vO&UsndKOYgW*&@%_{=09a3qr7G@;Z)TdSszr#% zN|qrvs(Z>Si4SRhTQzXJ`E}J1otL)Fm00R~_|Rbb-2Ct&iu%H)lJr+u8 zFSt&N$-y(4cYVG!esMIHE!H(2zxYP%w51HNiG_%s9r7c~$<`N|T$LS)DM5U_VU@9n zUF-Fwn_is#LYt9eXpi2?fF}GGL=`!k@)~DGR-q6_?@?~L4CYZUaWsV1Gv%5UX}BAS zk<<5>poc~FJw)~L?j>Vwv_Gc%>-c+eK;R78XB8>$Y=LR|lw38I6OP>vV!&^c@DyKN zp76CMOHJWH?;Ysv8tmlzXJp}5LD(-Ssio|-Z%`@RG<6fABY}wby zx)#YKM6(;jy$r%m?OK9R6m=&t1Kjj1)E+`d#qt~#h}O(Hk@3WZkyzjCkxbtI!>*Z) zc2K-tQZ8i^{|w?0`VWfg#0VGNU9Qq@t)rFs&Q4xkK46B4gh)CGa9X=y57-F_oGmvXrx6D_`b!!5aN$A;kvA0YWL>yd`% zjaLJesrh~LKwCu)B7IXB9VNaR79&~3+yJ%(;G{|V>Dy+Y#`l!}f2m9&%Ej%B5p3QE zzF*e930;EAn@P6K?nK|ILL1k0bo6ws>s)7CgShiNE8YrS<`12A8E#0YA5)cR{>h57 z!H#UpRmVw%5n)v03OyET5|^f@)rH8G$G}^f42_ctG+1*I(Xb7p-!?Rer>p-U3nEi~ zF0#G9uy1jA#{cohdWA+sf{3|>J)JOXg^|b2>9LlUp`lI(sgX6Cd7QqYP|YmU0N>&y zF?*>2VQHYG;foEyJ9Crb+Ta@o(-Du#6|)?r9>~XO1@(rJT5%(<`{V_$rd&W=FA!Mv ztE<=KMj@g^scGnBU?am>yzQpS*H!AUi+S8@TuXe#YdVtmSPqLWd*z6(O6Uv{`DGgb zn@?0ajTuLy%n6=~9M|W`rXK9bsAssMqH*)qsz<012+RaZWb?$mi*Q@uJvb_4`M45H#NzM19mSUZ{v3}!5>WwY!7*nR~7;ud&9Qi@JR;*e=qAw&i9l8n+ zX?#B~mRB+tMyiSuHL=<*VSLiBnShY#hRXxt($=ZLK<-HmvD?lVTWbnv^bPC_HQ_h) z#l%>_+G%w>Q=_ek3RoyGW#WKsQX|A3r~}3=|!eS->oS?lOyq@SR@G? zGeL1iE@IL|M3y6hvYzT7wRUm~7n`gA-jbof>fn}Ei4e)*@=nq}mEdBsQ7KEyILNvs z!a#9b)ndAqY!kwT(TGR@G#nNIC)}(%by1GIO4Z89H3eXN3yj7((P(%jG*Na$^=;0wxidg(^2PGc#l2RbwTdBOy#zF4Yq?bDCBS#k}g)p zW_Lpw#WNGe_5|*;Haqo>c}{1~`tIJYb%R~FR6cEj)uK!3jSt$|`{EU%ZA%>ZVegfg zrV>)z(GWHzMRfpfC+kVZ;;C>qO;w=*m~hRnJPk#j4M0)#FiXUeO_OT7SyBv*o|2Fz z*?kGqGDOmy5wv2Isx7p$!dCN|W-4%X7fW6k8;NV53!a2M1nPG=0^BRwqy<5bI8iar z21_;F@Gi-MEC&+aBPBET7sciVq0N~2U z#s=Gbn7Y0YJz%h_b7k+qU~lweT~|++)3d&Rus7X1(BTXkWqn|#mZ)yF7F2ykYhbIr zfgdNZsKLvN;@AcoN&@;Cn~8-98UZPn7t*Hy;5x>-fT|N&!fT^ls5~#44Y46ciosf$ zgLN7FJ}CBdnO++k=mekM;Ms=kG|Td~#~3R)G- zZTq%%r`rg~^+EVyoY^qOKBUrhax))>tWvWV1)qxx8Z1@By6zh3nZuo%hpyL^7Fo1* z%c0Y`)3Wv2^&2|Y47Y4d^j)VZ=;$X)0ASn?{Hb8#P8nCiQEPB4#Qu zZj!0%5%-@vDZznCE0{25a+ylLw6k?F0clnrpZGXM=lEzOMN({;wXD&F!0^w;J(VL% zK-Xk@QWRz6DQzJ3fQ6`tT1dSOha#pUm7-d(T!XBh)OOu;Q@2{6I<+N4HeD8xh_6{q zGsSZ5)@nNXg0L}w)*@5W5635UXfRY{>6>tOsyp`0PGl z+HWg6zBSd6w=O<#L=LQJxOpvVje*A5HbPcwBS^Uf3mTn>KM<-9n@k*(%F66ub$r72 ztbnx=J;||IWe^Fgr)(Nig(coHOQc>3)DVRkI)NlES8PcLA@Jn@2kHczA%4w%mt-9@ z#|zn!)amQ~6Nis*(1R6Z64<_O+^!LcSu_u(LhPPpFx9*>H6>VNu0%US2|YQ9M1YAY z3U=h+&fM8@YrP3rZ2Ggz^YTIra8y#`3(Y_MWA65E&b-n_P&*Ofxk44jrJtC;-- zcKAu+LM3xP28p{3ZAeaEZ}-~uP9Ke4=ej}Crsasiv@~+PN&T zk?=CG{R~zm`uaP&4_KHc)qavU+Cmi=TG6p?aQ(WYy4I~s%UJ}xhI-c=(b?V8LGsRI zMRth=VxVe+DH^7hu+ApM7{39uEB3)hf`mB9Ux1M+rnQ|UG!XaAVFOpq22a~$rF2u5 z6r>t6)Tqoj{AI^+JPlq@DF>wDMLRZfqI^aG6Gh=TIdQ>IzD58iz4#N+`mkL3wN=!f zeIh}|KFMBwSU)IXt%)L%-AF)}Q*B}P(r}kb%(25*1D5595LE%G@q)@b>{C#SvBU!# z>5a`x0wIQYQ>Nd`xm(gDJ|8g4s;LAxi#$aNs7xM?WMQ1zz#ffI_mov^p(`4aNEWxO zXMK(BX0iP0bcr%*EQ^AdbG^b?&L!cWaBN=hH&YT1oHKW!C zZd>eNv=>|EM6u-7Zk|M_*u1E!8cj6b)`U7@Q|e3$M0Qw`$4nV(ds4<8O_^wk;+5kt z8fNRuff@sHz4=&9|5>K2U|`Lvq3*7AYlnLKS9bQ-Z9}$9Y!g)=T9q2b)h)nLS1B0)@WK|_dT60R{1ot%(Arx>p2-1zF&5pSBYx0uuxV5=_u4jE- z91V|Iw9JfV=d}d3WqEUAcb#L!3zLo&(x+pff(R8T+n!3zNv8|Nv^1ma$$|cJj95Tf z0iVsPq0P(q(AzoD<`p;9&ZWfsobgmy5Fw(|I%7`GkTd63#z)E3fwYtCU4W#`u7~uf zeV=L+mm^yWD)Ft)sWh~Sj$F~V?ZY+CHTL0t-w!IO?!n%4mSt2}G)r534(|Ke@J za%A$v+D4xm%M9Ck+gvs%i4-au^Q5C9o*cR?bx`}_d5x+x1X1HN2CCG}YSj)!miSU! zp1LezflUF+&S3XIw9(dbn;6wFi{Pd}wzwu>o5b=6kV+3$Bqkq%p-ys9!@38CR(1}o zFl5z)Radb5qPcTwn02T`D#Tb>jsh+VQ3BIOH~$ z>Z=Ur{E?J|780SHWez<&Kz72<<=J_x-?`_k&WcDwbMC9*Qz;fTNJ&JL^72nJ*8st z>3?jmtu=i{2Mr{}y+X}qTNsxhowF6Vld90;Cz(w7K{3_cxqRWGgHsug7n>_b+BQ1v ztmXhkJ(?m2s|69vq3e>oA?Jf`iX-KZjU>YM_V!t^R<>kT6iKs^Z%FLos}TD;Hp&VY zg-=f+B=6pIqiP5l38k{^y6f};>fwihVDx*8xh~Ti@CQ!ctpD^4k^4gRX zD>M#l(3oT9nS`x)m-8m8!eHTuU^0^o+}sJ0E% z1SfI4m*?}LWr;X$6IG*Lw7Nmf>WL#t)vYLb9vLHgZJ4oh-+<1T4l@TslN@88tzZ@gTV<`QiK#ZlQ&)NPaZx{=KGk!@Pmw@9K(kENf38#i`$ z@sAS=MOv_vZW}uVC_R~8g4?x445dw%c^e-=AztWXH?`5aB2e9dOTUWhGNPX}euj*- zi6)wSM^8aDm~0y>RNDB+_+y>q{ioO`Xdh#u1LyOKNyL-a5-lTU(wg9X;?@S=#4&z) zpKn4v(;Md91{*k*>*Yg@GqDfHfn`HCx0^FgrDoQBiv=gPsVJyXRpged3Os?1#vsHe z^Oy)a!6#nyMm7{fL=wCXR=!6zt7j2Xkpo zTwrGPD;_bwF~1dgMVfDTEOFw11!%i%*m}jJIo_j%(*g$8uS=^vnw7G=Fe9R;mYBnw z)2TzgLb0SL!jfzk67IpF95y&oYH8%%Z+@teT)mfEtOc{lq2W#|b1GqN=zhW_83WA_ z%yI=JJnnKpgW2klENq?7AZ~RN+?(8ejyQ25ubHGH+#Ko%-=?LIJ4%gdnsmdry?wBp zG<=SYq@xS+WR}@6ZYFw~iXvqw@?>BjW>8r7+RdbfjBC{a4O3klF`1f>eL_t#nZc;Z zFL8Kz`q+$)aHV&k! zhzW-zk}!*1s8*4wPJl4Nt9oC}7F-zw6O_?zM$X#P%AqfO3X(;S+-Xq3@<`af*(5p+ zi;oB~1?!}E=-5ol<(x+`3@1!>(^)~d&6vnEg6Gr*7qz=FH+*^BZQ&$h-CX@E4f6^XDxpA$o$zOPP9Fo zkvaun8q!#L# zh@wb`OE|a9oYXVV84XJd4@^tdb)m?7;*7;ACT#m)Yz8)_Kf*PdJ6Pvqg)E)s6Abxc zNtnfAabXI>kzL%DFlJbUMUWYS;`Uc+BN4PEDu%JZsB?+Y){`Ryua=8uWq;)58h#E&wclWO7=#Gx=WMV+NMtlM{ ze3*$+suS|*%8@Q*&LK}iS_g?lT})iUD+i7&WpY-`Nf2$qUzVuLqL{U0(Ol>d)4=F> zciDqWYdam8A*VcSucoIphb1O6rSE2Mdd1vBmD1p>e93j~0RLp!nfIWtzjs5|%Fg(l zJF7FiVoMU>i3n3YfZjHIvFDqrs#p&B$OCAF5u0}iB(}UvUI8*5bHHelq7a94&WT;0 zRwPUOmaVHA=(^1&m=Y_J*W-WLxCM@n^n`%Yb6PL-d6Z_Cc; zilb-22gOOI=#jytp`FK@Iw&nR^s3I-5ZF5XW_l1*4cku92j03OFxN!y)Y*d=*^{>| z6#idr*Vfv`5ryZuzhX-XBv6^shO`L!kV2XkoF*8j^ljN#TP)jJnP@k){OfzJGv~~X zq*W5V7_7PN?9Sy}zb~g+AVjetnX9;%HXu6Y2@gN4*uFF6^|)IfgM6Jl$4+>)iSs9> z9jUPP7_jyJ{M-lbIrCPmn$xvQ8bT~L(C}*O5ty98T7@>Llu$*mxMZ*laPT!fic4pN zy>}lul=@M66+E+WO@Tt#4n1!!^eJ^@dwPeyiOW|P@4V$s(q(aCFE8HICbogHhB$W! zKUCCUcA9pyucAgsif~>bPts)s|Dx%^UGAKXs7fvQ8k35FqCc(h><$k0MklFUu7)O} zi(o5b)8~=dNvKgKeUlk$K{5bco+@f`n)XbOIjKgR(6Lsx6HTK`l z2?r3wJxxwJ%}7}W)Yls%g&xX7|_=&jM{zu|E@H%e~)fu`8wdk!+docb&h*pIh z?K|tPyQ@NJ?y1bLU6kT1q=50L*p0eMmvf0v|*qS>cLXo*1r65OhmC2SP(*Q=~Vi$=q zPTwpWC{Qj*fjTI?jlB@4d}VR6Sv-xNs8kC>Wy)h4ZBvD>3SDBag?KT& zygvEvho2wBbBIfjsXDKTTs>ZB5=9G(p$OnRo9dqavep>nyCpr6F;6+K1mB=;1kIG; z6bets#X^MtjlCbSv#|rx<;_fPMGp!J2c^csO-ktae?Lby0lHP#>P}zu6W$9Qvses- zBt{CgI%wrPRlg}$GTIZ!!Bd4&#tOd%`I8h$Fp+NX<-e(ok>r7_VVJ* z8PilGnO78N6Qf`*-(Wd@j6KZ$?7gpvyNbG*lW3E51bu9lk1Av5p<&gxzvd01|HsJ% zr0bIrcHBZKy4Q?v1bo~&we2*1|wZG-ob8Db)yalN zKPNy|IWp$SBbg!>-#03ij4?UmZkO$y8)G;1SSr(RJCDE*Q15$#opHFXgVHEgS4f8` zUAwxwx;Be6WDH~Yopf0h*~v6@WAc(OQ<%j)9!5N63LjxDOg0ra^ z9;#1^rp64cYKGQyGGy-wK;aV&8r9JD$QD;!pIVS4MnDQ#t*(9OCqGL^Gw65*lN-UQ z3yqGMfi}U1JF-nPz0s4+%*kYN+ogLP7rhf5RVYxunze^vXWNxKhLhhsYmGoN-v=FC`xam zv`FbT`#a7eNFX(dmeT*B^#3T`kgQ~GU6KS1e^+EMTGn!jKr;9W|22#%+en&Mo)67Bp0rCU?FZ3mur>A>?LlpaXw zdP>)EJ1JdA>6V=+zk4V8H$myHlwMBha!P+p>F$)iIfd`8r1UUKk4&K-w^7BIW` zhE=GinbMso?WOd6l$KXvoIkb--@TI34^sL)O1Ic4M#<-kL z>Dzc7H2v&q%+sxu?n&v>tI^)X8k9SjQbHLgw+8P&yaw(3`Wm$F*K5%Kd0iOim6X!Z zI8{pDPU-DkIuDd4c^)X;h3h}Sadu#QJOK6O4#0SwcL2V7&jG0aF-n^$ecgdbTPa;e z>DmL)|FbCFo6?&oeHV`drCabgcB8(nDczFN9!-zv#`vx8#&<95*8X>+{-?W9&sIGc z&xJkccPFKLQF@#{-=fcd)bxYB`0mlYXn(#J{Xa#YFVW}gdofPmr1ZT!9=#aft@>zf z@x1q89?t8-_YT8H&JwGQ>%P3dk-_w;$u!JuF1g8_fd!RY_92cy1i z4#D#(P5ndA?yC*~{{4i~?=n3&6!Z7Mp_u0_4+C8LVJKHV4D{~G!|>hv4+B2E?r^+c zPU+4}&ko1>y!dd?!Ov@YBc<~h|1|$whhts;l+w5Iyd945`_tjT_m?UCUmo8hFph6O z0(3i}Y0D9y=Sz6>_69)Wr%H2-u>Kd$d@Q20BJK>L40=^m86LMgEn zXSXBq>>mkyzWzvz`wx%AdTTlgrg2KIX7|)%< zsCRT2_;UI%+Hw6b*4M+s=>I>4QLgD|;N9Y*0XK9s*29PO{nba~d*3@6K|Lop+5nP8ajr zF|_CUG2qQF$AEXgA49+XGX}b`?Ks-8VjSah^fnN5WlG1H|7Owe zE3?3hd$U+qf66L9JO*^*z+tJ& zdVjPYq2A!2;Ire+sDQO-0bR{WU#>(p8MFMbz`=67Xc# z66SrRg#LZH1UmA)659D-3Gjc>{Oyj#`~4_g&Es?|-}ZS({p9u{dT_N6qtVcSnr#BU-n zr7Gz0)m6xwU#tRe{!j&-d)EZ;^MDDoJE!S66KL;^6Bx%|O`zP48!#_D8<2ne2DIzi z4Vd>IZ@{=TO`;!*CLu2zI*IprN)KiJJ_)|?w@H+L-4yz@%M|+2IfZ_$pF;jcQ{Xpu zXgWQG@w#UUc-XWN>u1SEjQfEbF}`2hhW$07fKq*{68Fz@p#J# zcz*v0nE#FwfN$d`0RE&CQ11mNpgrF@0eJev2^gpOC*pah6M^qtCjt*MCxV`xa-y!o z6M;w5Ct@6aa3aR@z7x^^7f%G=ensnf>q($5JD-I1^qhqCmpKXJarH^S|8JcHKKqN4 z@ZH~^gmL}flfiHHJ{k2MbTZ~8eKN|Oa5C`g;*;^6TTe#+et9zb^NK$2^dZ2l{t(7% z{6oN-<39v>=)n(R{@-&7`a5t6+Bb3v#`C08RG&Bna@nn?VBTIn1^wRkRJ3b{Q$bJm zIu-c6=2XD>r=nlyor-pS;Z)$k&nW#irT_C`jMw)+tn~lG_}aKX8u2=&x2K`} z9j7VXJPmx|?WbcM?N2F*&`$Amz<={}%+I`!p#M961mkhwM^I1kBfz_hKZ5q&@)5{) zzxfFIvE3QKtL8JnuMao_^lt4L=`GK?1&at!6?u}<- ze$PD{@YkJ<@w%VVqnVGKjd};pfxLCrIl$*j&%t`U;T+Wet8+k~UVkp&ljowJ-nnSs zIp<=YzH%<`3b8d^dF-${lka#^p2Tp}+T?2fqExd6@Sd&qx1Pov(W4`B=|q zosagMe?G?V&hr8P%K4a&_kRrd+4(W(8N(j~zFhw?%=d#I!#w}yW1v@0e+>Az;{|B{ zK^H)ep1c70w_N}{d*K4`jn)hC{i82Lzt6o;*V%=@tCufSeeELDxAY?5&!HEgzn5Hu zdhfaj^ZLp~kgK-582#wH82CP}>A4qUe7>U3_g#!}`Rm1~=XIBWpX_^y>hYIgTymEH z->$y|?Y;LBwEv%%pq{o%kw0`P=v`Hx&%PA$(HAa7J&#=q`1f6gaq7GbdBX3o}Zz#pXvR_VTU;C_S+H=DvFh37#`i@URuIl+D=Ks7;;`A@>u-`e6T*vZDOLVxen^q*H@ymtRI+E>){qEDl~+dqwZ9{V)#_MM->`}WU(AB=ql z{rkjcFn?eB4DjN2p8>ym!_`;^!&ie}oqaXtYx-)m`}wN@zujk%?)_QRKm1wX>1m(E zcW(bI>iOemu`ai}2K3|5YcP%(PKz5n<;#=qrSv}d1d@!eyt1>C2u1)sb3TJ-0YYk?n$ zO_<+(Hi4cVz6p3=+Jt#NWfR8nlbcZg*Eazl@85*){CX3{<;~ZroOd1SJMcQpclJ8q z>4n!}{%*Mr?f;cN&$}Ma3$Mrb`>sd1%=Mr*=U$I`Z@ymf_IlvWvy^r-p55R$gDg+o z0DAD$4XAIy7f^rC7x4Y^7tqd&zM%M^&%gTu#{Z2s;{Bo*T$6V*Y#YM1L!HVjW(4C)VMUcVd0-^i7q2zKQ4VZ(=+%-vmCK_)Xx+ zH@=DS*y>xrWA|HFUnhMF^K{v_uuh-;7TWQyZ-YPdd>ifmIHhHtr*EVEop+)B{9T}v zH{6B(K6w|$V~1&s`_MGT?UU2^?r*2jpZ`o_{p|W3wCiL|fASsFv*X<)bMw634ZOVO zZpdrjxf}TO(A`)EE#F1D?{_gDgWm=G#ot9czVco0wcmdi^k(PpVV$l19`L64J}^G1C0BI9{^9!`vK3L#^kBn7>1Rh;qmL5bN~(A3`p<>4#X~k5QWD{@#oEJm+3r2lqlAdB=}X z@2VeR9#8lY`1%b$!hHStN0_JW?gJhT+z0$S?>^9%+wTLt{>^=AzqudJ9rt7YC+*GrKg0Yy_A|_1^5>3oEXxU$jp7Vc+_WsYWASbN;75aPX zuTbBezry#oco^g4J`BC|OAiAd|MoEW+s==G9`3Da$0N`y4tNB3b?_t5yQ+_X?tSPH z^{YJsdGyLhK&Nlja^HRgboIVRAg4X_2+-Q*1Amr0hH-TtQ#;9Hc>mqU zfR8Ue20FjPZ!n)Le*?O9j6Prc8?1*P{|5EH_#5E+`+p03UHe<`!{dJoyXuF33x4n% zrDJR#{vG(sr+%k;@b56c+dYnPUH3TJGx9k4cfsTM{;wZLzqWq@^E~hb%3t^d+I{a6 zSYLm80{-C-JPG~n)F;)C^(6Ye{ZmT6pTc-mp2B+n&QloY-#&$T`o~ikhu1xg_5Q)9 zQGV!YwD-ZUzyZsrA_a8L>eZN<`9Hoczc>Nx9?H9iX zUEcFqjN^&VVmwaQ^wwvw4xV}z)kJ)y?=iJ%8sX8prT&%=6{{MnAs&Z^$Xn{~P$`{Ri~*=Kp}M-Toio<9+|Z z{JioXth*McN!oodr96&TQ_B4NMM`;owry$>dU*t;ypF1ra({n9DdWfg&TA6-K0qns z&qp-9eID}vK&i|8@^wvu2bWRG{NX3B!}k)eZ<2NGQ_6JqMoO8Uyg(_B&$2h5J%u+Q z|9ncPc-|>xdfxXxP127MN_qXA|3CQ7jg<2IKTRp)%MSnBB=~bAr93WUlrr5eP|EA) zTa=35;Eher@hqQF%H#B99Go_D?p`ID6LdN_qrrh7kl z6UN~wN*OPg%*S^&P|EA?DoR-{e`r3wx6PYTe+Q)!kE7{rZ$^K9O)1N{@7khC@M-ZD z=tu&_1J5#)iogEdXvZz@ z#&@56H}K&t??F9Xl(PJN)q8-K-=>u1tiMyr^zL=rqx=?>3P0K&`0i<1q?F~esqKL$ z=Wh=@y>xrv*-hJHy*;@-@MVwpHi9GKg!z{V4RMpl=;E+3xMY@==MsX=c7Ag9(UXYAG0r#bigx~USJ0zv zmto!Qw+#5WZW+eo(q+iMc^T^cb7_X1x#TAxqf z3v}wby)ceH)%2ykP;UF>;7=Wz7Aa+W$0wI#UcR;*@PA(p{`KA!7{}xajLX54vV48n z3Y7cz3e@}Fy@B_gd!wF{_Xd5vb8n2pzbUPrL6btzc0q&GD=P&E?Gu@b<_w}GZ zJ(^z7gZzhjFduK}#W?NJ3;Acd7wc!&z9!L|KG_F6`EwuE$M*fe|5QK9=lhX=sXkBl zqkqro`)v;b{&gON{A&)v{NGP0+e@4Q@bfJxon(4FfOcFvfOc#<*hCV(U}{Wp4l2>li4?{7?lnQt|PWnZM>HSgz)^e5Jx{Y1MbGgE&3@cMiQjhh-PdKhYZ3etP#IUT>6+(BCaq z-ou(cPw#G`ysuNbo>EeYWX-Lm-~UmVOX&BX*}pZ9bvxqoT2Cf67f-N_M%(cm+qDSp zw`|AId=j&qw^07)v^wKFvzAXQIo!dG$|N*xZQJJH!^9Y5Myy{gEmxw4DF3FX{+w%a17i z1JioSUrN94QkduH`6Eryd1adVMV=om`vXmf=-ux0`++9dVPx&n?`C>;H~k$-zfV-y z^H~4owMKt$rFR+n`#k+7Ro;0w|E{yP?`NE&d?JI+PnmBK99Q=k%M$eCZ2Ftf`kDT* z48Mz2p2SEeMfuM#ZJ_ixdL~xuyuh|bEqD4n_`3KX^MWU=zQ0@3Q|R5vtmm^#PVo2e zJW={9h5Z@xNc#Oe^B}F4`9QbTmfPpSMoA>rIfMQ#y&>|Zz2?=L#AeLbY*e=Vdi4Ez_FL1t_sxUN z^FXWJzifh^=FRiqr&+`8weo*V&zCY^U|EaO{pP_=IjQ*{r{_;HzovAW`4s(Td6#uQ zwnN;`GCR|AwgFK3k0$tYgw8R2qIaY!J6ZahM}M#Ide;04*gi@57i&LWVtP$5ck1)` zP3o&=`M9Z;HcT|ZW^Mj$V!sCKoK)Ur8b;}FDNWNKiJi^^Jf6(I7)L4nIK6A3^rw_= z&^jKNhq%uVP|AApq1u)+DgEI*#5l0O@j`u{Wj?QE52trq(BCiU?~ZxVww|sj%f!dc zgU$6Yrt>_$>^E>=FaI#FXZpLKiEXUmzb)zce3l6ao>W$`CH#x&g5jfLYlTgi{R0p3 zxHC;el;r#ME_>fs&Ahq53 zl2z}!G%XR#8h!s=9fK))-e2E+O;fQcF|H}hQ}lid`n!^zbNX)Fs{hI+`16kBca(ns z{q?ZiqWOEzgWpBQnBJeo-<+p07fh?@Z(F9<3Ufyj{2zZ{d}BYYzW)fz1>9G9zoRvW zgUq++nbaL;YkmJ7%^P6(OWV3k)0;K@6s3z5{(DTT==Uc2d(!ILRrGwnK5uM-AMRQ9 zy))mYydNvvt@Qid^zI3k(dNN#!vA*UGW2&Iz1v3Xxz9m-=6m$pkMLO0-xc)tBl^3U zedCn(F#Y~}owda_fo&+?n}>Z-H!#jBTz(#WFgsBCG5Xts{&v;xtRjmkLq*DYTpY@h#$C*(%Dx7Zkl@%JOX{ZM8~KLv*3t84nKn~8 zsIX;9Uv}XC;eWqly2m__{)QEXZ9#9<{GBNOWozuuSD3%hyNBram+0?%j05!dUY2zz z9ch9ekpJDw_@!ky#-_|X*nz*PSKq%*>+hQfe;)t)HoZHIo=;~UsBl{;+AkN{mCiqu>$uRUgLw}3t_g9+We{ZMX zCo}Dzhj^wUrT<5Hm(yQ`{XyJD`n#Tg)4Q+mJQz8G*C)$T+P70!_F~>de;;GM&3HBs z{`KqV_dgx@&K_pnfu8@(c*^{Q<#N_@nLbha*(Ss)@V_r1gvz;|zuH|mwWLfT6Vxg$AmK4o-f{j^)oc$q}DP^wlE zzL&0Kiv^$adc1tGJeA11C3;FE7Wj$LaxqUSKMht(rDC~41-*PV=SrdF(Ts{)9`h>l zc4R8C(JL1nuEWjdyv%Z{hM&e=KQU6Qj3+ANULsvBQ}Zebw~$HXyfHUDMGYMr?&c+PUUDTbm}`CO4#sOJ5|lvk1N6swgI+EOVp zNC2@yo{FRLl$daHRVwbLWu}WG$IwLjGREO9rnE4Y zaVu`Zuav9lO1129&c^C|144C`vopP1K~tYz&v+XF!SdiCshi=;mt$FZj}}0NR%5}h zxYUP)pWWzDPL4hz#q@*dS)}Z8S!U*UwP4UCz%ZUC#-}*}wI(LKGGo3~B$*t`j3l#E zXwod1+>}`WG@}K2>X1d$vCA%roLd;Hx?>)Ox~*7Zf3~cC+6Sz>OAj8D=0_K|tO{iDt_~wxB2#c^j1XE5%Z2#;**nB&1+|F+n6alcDwL zgJTs&b6F-KGT};W2KGXkRL4+PU+*9_%PVNzMD6MSSbW?LB8NN_$)QEbq@ONlOTdqz z@oIh~v9kLR0tHFnZYgIX%E!5*)k4_YHYw(o)8pL2Ty~`FDrwLeC%)n3OBG&P#2INZ z=Q1D*l%w;6m)>OB^D`=V^ttk4OkR!bZm*& zj#S66unhm^%qmS1H=2lMhUs0=&FE;BiiGDeD9JA6s$*0I&?4-g5Z0 zP=EP?%zT9bZz`5#QbbruG<%aJ!ZIdLiBXzPAQn$`f+VOBuiRqwYUc68TLMBUX^KwLOaxPKToJY);zS^Bq5p5=Drd$NOG73v*?}cP3@9{v{%|m|J z@_HadLJUD8_RZ3|8DPIM3`)-Owaw<2peRxN^>LKTyE!HWR;!fsS){EY4A5>4fI_w- zfRoug3EEf}MEXmr70Bvg+Fzha%H~DD%W2m!7Ftap78Mey?p5|6=d<8~ZItb`t?pf$ zq@|W#A0SOOU&;{^B6{wns})5n0*Dlr;pa)!Pg4`aA(ID;Ba?DNPeV#$P)N#h4y5}S2#+LDAz_t8 zYUu{1GiD-B-T>!?;$ZkSz9Y39M2(5XN< z6?sENb;L`%EV7B&h8UytQG<>1NJ6e zr;NRE0K%bSTGXsLfblpetSISa$eIN>Mp4lmY0s z!7UeP^{JM!p`5LRqJTbGn6;RiNO)36iiGTl1kV3y34Q2nA8H>SOs(!o^$rcUcXzGs zm1Rqa7-;si`l+c_nVwWn-@u__2o$NgZD*C6GakW~L0V^m70#k8k>nabn-QU+@fV4# z7e!PbOtlYmtQqd?8dzcdW?~~c5(HNsLhu#R@M$!%qgndaMAnU)AmX*NZJu?ZzJ6}U z3Qb>Y?J7>I{<|(UFesH4EDMQ%`+->k;v(}RWGqjRPFqNib0Lw?EKUlnYGsKlSEN2D zq+h9yNK>bZRYw>zQ%tu^YNOiYU9%#%$8J;;;DWYUl0U2+Yi=Ltk>O}bbQV=dpCkdO zAhsCj3Ijb$mh7=RD@1Okns1v+nGRknlgaiyXDTI{8;w#nGig|y7}wZ_z^kQR8D2CA zcZAJ{#u6@kJt9kqnV!enf3-Cj+j~tVt2SqJR&Cy}bTQ(30yshf6*V*y*k`jOTu#}* zJ)1Ll1D+6+#L7bw+<8CI)3+{BO1JWpc4A^#;{u9=w7dlnc7YAW@_Jrn6JEjd%2K#B z(O=x)mHRuimZ5PkQ06jOw#<|CDYB(yB2-f=7748=V^QVL5k1Y81^NB9M55OlgEdn< zB6*L*Y{?YshMU{qPWfuIY&I zvk;o-?;aBCoPLg)HcFCDnm8rP9R!8WZ@De|^%3^rKB0h_v z49+Wgb>C2EW3DOCw>h=P`amKt8{EX$R$j7XuJD0@ZZ2hHVKH=4ij25r!qf7cit+kv z2tU|xh<4tYag?p3m1=>s*$lrS2u|oLoMfg7Za$l~euDc;VQ+kRw9F-X?@rYz5s zB{8CtFhfrwM?q82#~i0)nUP^J|H=a^9`b`RkAGO&$FMLA`6?)3;Jpf8slLN6!Z!Nu zgtv%VLb9K<(}*Hy3_!dwQJm~ou#O3zk>{yA{Z34xvB~5}HJi&Mvzb8s4-IIp^2%{< zQl&x*exGVJ8)~4T6_-`l#G;Hhv8YPqBU8+as6x__>yIa)!@xF?q(M$w#=iw)2_ep- z>V7$Vaogh7#FDnfEmZoLs$WT}w>@xB5|LTYs9*3^k9G-LS#mK-IPr0e5nFp$(Stk0 zC_uIOW(Y!mb-giIMFIlNJJTChxEM^-XoJ5=w8BXam5b~uO`2)Rf_TxVbKHyoK3Og* zh?5+p%H8TD5q?)f15iIJb#*_H3rEBESh0X)gJB4qD-4Hhf5*tU#=Da9m|G~URO+mPX>M@v1-{B5cUC4k{O4?UN$81#4WR> zoM*XWeBs-sK7pzhXn_@T6Sj|BIDHMm8F)c!Bc%ocYNA;gbPE9rfA1U`?oFjSQ=Rqk zw>@91!eZo2R?5`#k_(epV2I^n)Hz-PPJ6^U!AO&^8yFDNrN}sH;QbU1lVRBZoW6s!$0xzw>8WTAafr@8#^!1STsdAjyQ*c8phPRf@xcAr@L}uu}Fs zs?UxGOW>b?NB;4g6Dkp~NEC@S5!;7%4uxMDE-P3_l**1`X{wwZ8?PjmE?%-se8eOO zjaD`=xm!h8pK+l(b`{cXTzSOn8W>6>?5M!u2LwZ;t-_9iQqhM~m8F3ad$J1^%fcG~ z79x&Ck7WNub`-8MLfUk?S~j4p{Hh6rWhf&lX>NlE8qA?n$BM!HPqcREz4RM6krtj*OJOi7YJD8ooeeZ>mU%q9Z^|g)1zl z7Lk!^+EZ_Tq$aIh_!}zqW3@`wY;`iwW>z(GO{(ODtWDPMU@=Er!;fj%or0PP!!^xw zG}M#c3ZrMzW0RFg1{3e1Fzq-<-euWOx)fjaA@W5>fW`( zYkRv6TAMNpd4yIfi>?N$LPHeHec3CPX|*vs;cl+(2+;xoE~b?7IKs$*wY~lALu*8i zqQ_O;?W+f!<VT*?lgk6w<+11{WeqR$@wI2!sR-L54O(IB6twH1gs z+K~0VRuUcmyB}J?CX)((ju(&lq@%VWx1od+g_yf^6Dw9<$T3jqIWVIDmbif>3su}P z4H|CLgfu9xlv7<&b29bu+hooKRROD9mN7pjWkyj)m=ZA{$U2J9nX2GxSH~&?GUgRn zu=Wydfl?g^IB^gt`?ir?MvYZ|1qJ@7FQCyNiHnJw#$npb1hcYijdj6>LSR-V<~j{w zipBLXyk?8)4>X>39?3o$@Xj!nX`mV+A;-GKc)wJ{7C9QBHUp>m2n)8@sB0l~i9HYE zM-@Gw!E0G&fgUZCgmoTfm_Z2+pQ!+G+(1NOsHE^!McSbI92ii6ag5okEU9E=oC}b+ ztUzMvirHW^tHRi7TqI)UhLGXZT5&VgQZAbYZrd1Ki*r(lmcG);Ko^&`Fh(G#p<%Ic zb#+UWRA{uf3$WmycS*yYAiUyS-x?&CCc`mQcwkZ-k!q^7x}4AYdC_1pc3h?nw_%(_ zGk<-yRFa5}Le#vis-)AYW6w4j>e>_|j=thh1V2}-_~5AGWDlB@*saA$^{nk~XNQWD zI;5-f5X;5iyr9}56E9_h_@huRL1^I2#aO8^DqAKFHRl>?T`LBxP7S`vV=kjV#kT@g zycprJ(Q0^Y$P`29$XWhVizGRz!t5N~ns)`?EY@CId=?&`g1<J8CEj-#2EC7PhQ5L2ZF;QT>)|xNz1G&g9fY&5oNQT#qmuAr?(% zsqCyFQHSPZ97QZy$;@w8z*#%kXR!*Q@NKM4XVatm`0l8;P~MVc&R-(_gbx-%UO%jRtoZWyHmv& z=8B9_mH@0F)A>j0Ovn8sY z_Woe`_mEgc>&KgL3o2BR76JCAMzw&uQE`nSBowRoEmC#{kt`hbHUTBf%o$@~{pvMh zFsPmc2HwNQghmX=vijYMG3we7L^3A`LBJV^w&pU`d}&4i_QZq$^lF4{AJlR}z>SRK z*|J}$`!!+T83%k4fnxIsXHDdLcXen0Hf^vb0(WtR; z(44z*Dllo+az-0mR(dh&%nkK?KLU&BMTvO}+M;cbz)8o6tdy9<@FJ(t@MWi>WfVgJ zpoHt|t_)LuO?YGsdPYc)uY%_*5vImv#gLXZJ0B3$tD%5GKrB&?p~dNL<7;E1CHGdm zGQqYcqFXfGg$O7ymn93GUVH1N(+d%Y+7s+Pk~PU2lmc{L+G4>$1u%Ob8)hKxl(!x* zU7Hb1F?n{td^VGjRZnnzt5yxBh8#o$IepMz1ZRvZgvFaM9;gU%X(EbPzH2kZDzmsG zSao1Z=LFvR__Rn44_!1mRb2$FvDbm`pf&@6ff}MKEmq+#0_gP3q&c#L==7%sI#Rtu zPXC(DfkF8Djn9+~5#=n0d0RofHiXmPy_RT#(?5{v-gSw5dk^mF z?Zhq)g6vy8(B9+p$JNq0`e;ALt}^oh*G7R5eU$FTV!KaWebEc zYz3uq?xY3}dBWe*UYWhaCK8$LQ9tZ%32+$s~*#9(H}@M@)6NK-@FQ) z3xOp-JQW%Mj`i6RLdWG(%i1s_jImAxQ1LiVlVQe%XB%Cg2`Z8`qZvgbEcY=E>A^Lt zhP%6Z4;=0r=u8c0EI=jHQmh4w&2ximNIrB1yADe^gZ-(FuJ&$~@M)4N5UC}6G+)XI z?ci_1MT2CY)FJ)+WhSD7Vbp=q9*yuhNR1$U*YqNYkY7RUmWI_M^@l+M3KIl@$?I@) zS_4yW$ZFVg8q(GlDXvB#F?k6OWIvPi*b9wM+A{HZ56X~POPgPqFt+;D=w{Rrud;#n z%~~swr@W4pObW%e=tW+JUncQntnB6!k;oOviNys3btsDYQ+~zEC(1>(;u;4(0LDFg zu=#Ps_XGOS00e;qGs7UxWi}|={^m$5SIlxZG8JzA06@%2DDMI)H-gT$C0Jl76q8(k zQVk^wY1xzfX1EqZu-VZB{OrR87Yb&zaWSe{=(oy&dg?_gwk@6oL7k~O*=^1s_LMQ2 z2p>s~`X$nxbgx+;{9?Z^({9P;Vm!rx#uIyvT4VSGhEk$?s1K5=k!CdtP>CdfB(hGa zJKjK}45C69aOVXF_B4XU1-X^34IW{qZjY(??aEx&@}wZ-{N3pMMTof%p1sIo4Ga-LVl ze12dm3A0Tu(O(_O5yp3C(-PQb@M~AzaKlqWRU6|)3nPikY*V4y=11DaNa`}Ft*UK= zc^3^^WvXqyGgRgX8Ox8w!6ul)p+;8tp=!Cn3_ZXAXKleKoa$(bn#2%HXu@i;f!SRg zV?a6Xe{9cyAsA6+l=EhmQ@ zjuG^a6hhqA);3>-@#XUg%46BStG8=txP4%t{ZItl&}xd*Z(@n(2+4wle)cH@bp9({zFi??o-gX2{W-=}}6 zM3NjyKL>{n?N0HJ<6J-OiQ%J_v@QL40_D(jwaO5;VnMW4Tz~zMhqn^)Qm$+`n4%w9 zm@w%Vkz22okxYM6Lc+mB>sX=M$_|bro#Ek1&L1YJVVGGpVzF~HdcJhqbkC`k(6Fvq zK=;E<3!)Y*o?MX2O)^s8m*a-9gey%9w*3yln~pGk34|+JPLG@w`R_zFhFU_cp(#q~ zoO=EvvmeSW1maj7I18wMXt=wty)yvj(>|h`&s0Ujc_dY{ZIt0`&y0bPr5*Uf8C}pO2ua=UA;mtE|7% z$>#kU>d9Ka9M}O0-)26*P~vjqqZ=Za-e{C9vs~mMh|g7CBEzeyK!yf`q>d8Dt`)1k z73^c6sW(A^0A56nvNET7kOV57%F`mU0f~Hb<-F%Pz+3jf(I5}4S=+NRxioez9?73= zj(y~gy`jK7At%b<#4BZqqzyP;D9czqus35as5%kFHsREBm4hb)yL{O4 zROY>*ypcd6Iz=dVf+MKlZx%kILBG}7DA3T!D3K%)@?!l3!67}}eI4!HX3b>_60|JG zXBid70EhA`9|~j(ggY+qcMQSIE;L%Cu^nnFg5!YVHege@F(DE1AT+?hMq==p+-ad1 zHuHx?ac+VW5A)J}AXQW@%Ax0$b6L-pe#268Xrfb#*uu6t>p3vOa#8r= z-w_&5+d#D$*`;9^@*t+SShZcplZNF;NPQhoI=1dj&cQ~_7bQ%GuXNKkOT zE#Vt6)Tl|r;CG`lYQ(>07_Wu`Ck|JJliXJs&XGdMYF|6ibHS=O#g}UwFJvZpjN<^o zaah7iV*H~aG<263r;)u3RVVLG^5%o|n zr#lt(X-YIyOwVh0u3XM5jL|F!fiaQd)L}j`z)e^5JToWHs>tm94Ffr2B0}JYv3*|V zz#euuukG%({r*9-6=ZPD(D2})Jwxp)hX>d6hR&Y=AUF}sya={MM%BUE{5r-0Cm4x^ zZ3vuL7;!?{RF|g$ssIbO&~y6P$~Kf5=nwm0D&&r|5A+PzglcM-CUid57i!eSppK}R z?$inJxAF?2K84#o3&jWz76*sOdx7d8VkF?gVBCUARyOK{&Na?9>lxpOpA!YE2=T6D z$h-{iGiSM)dbv%@6B~uPi7aURYDTQoMG5xkf#{fsI+6Kh!=mWzB%>Sfl1heb32a{7 zH`FrgSz7f9l9KbP3Pubi{%fs4&-4=Pc-3`TT%YSS~> zA-JGA161f{oC#7+%(qVCipZ-{N>4>JGqS+f-WzwOTK2L;3`7<&oeje!8yHnr(y3YpT{h+bn8~0F8Q;Wvj2cY{PSOuWJ#+7ehS@BULB5%cVvciipuQxr&1`LE(4}y){G6p+#&?xHgf!Uv8A!-mYLmt z=H&PIwnGK9iIO?LkA-woY_8zd5kx1>Y}5+3+VgOQ(P)9y&v(KRjqA-uoO_Ccfmv`}c_z!T$QF;3HI5tTQ#>#gc@OkxY^E?0p>; z-xKtk^=MoRgm9Qf*miqFGkIG{G}j6_HJXYEZ%=MC>acmEE~Vh;+aQC(*D zvmNDYL%=(aoldRRrmq=*A{)T!z+qq0ER`9c#+3zD<+&f|TNknhBjYf-;+#4M{F+Ti zGH6DlHg-nYE@M2}b+(3v&hTsyaZ-1uD9m4o2k?W*m2Enq!a#MnIlm~3SBO!A!(34r z$Kx~JGZV-D4UT}5$PM1p!$owaecAk{pBLlk7QRSxelPq6JvaI$!-fQ`?rMoOy zyz62DOb&Q_iG~fgTXOMk$)$_w=kmq7@3MI5;>Gj3UB8kXqFM5DeE#6_#Om_&rm-UL z{Td`eyO`K}jD#(IZsVYx;{JJwbZZ+e?@MLDIFdu2n_teSiE&KI-j%YOsiyZw!mSP= zmy?(^zo)Aw6^_J`w#D;1u%kISB;r4-X^UujvxODn5h0yrpK4_^xn~H+?Ip=7nJSQ= zAqSxEN$g;Lc&(-cahP*qJn>5Bi9i#CT&5|R1Jj#Er#ET9a!0wC^`|#^a+l_y(MU53 zd3PDTPE2ni45%1@9>M|UnEB~Vc^(^cSmMhp4dn&64^dpx*G|KUs;8 zt;&U+8CTpgPH+o_1c=;q{asfrpfS1Y>jogf)t7_$o8Ba2MbLVSXT$Pg!!lGlTgYPZ zdwQ=;f>&D>*LF^CB9Vvc*C}*!?CdzU>hbvS_Kz&H9_l#DT_=4MsIx*Cej`?GHXo^GYD4zgNDzoI^0M) z=Nfq-X(HH+QV{TlC^mpW9w@d#a3lFpslW(-0mC^U$mQUc7u1 zFeh;t!QLESzd__@f`#1a>zEYqP917>)dMlZ{jSWY^m@aOeH>jxC?Te{36AykH=|X2K!U5Gx?{9{-BNk_TEEUU zt_D~nW4UhatmFFp<#&%!7ZbF^DI|j zVwbC4PVqm^l;rkMt|bUBn~Af)e6%=ZLTHM2}z^RPEjYKH?^Qu_9e98)wF5s z@L?fI!#r^@Z8!{VT0^0j9}xzb7@;y*(iNt!J+^9)fqISe0;0HWXmB{bghjlGosmZP zITk((!UzM(VDmeVUNik@5k@X|ih^lCqzjJcZH615MPPub!KZ}k2osNBv^Fj8RwrCh z)bqa5M_29n884KzxqS=6+xc`PBC<3`8CS#G+suG?g=B@k?CG6pToRO90x0u!3dZ^t zmSZI?Cw;GTU2b&5>w+R6ISQD~2g;_b-ZJwJ5)bH|SB}UK5(d-U5_uQBI5!jC!pNd8 zU!!XydoEb!kt=ki81K?d$~BnL5{8Oe>m!mMSuJJW5Xu+k1u_(&*+`L@U@+~WJYKK= z6%tyA^zabiTGnuaAt(`lwOD7gFtVjE>6fFU=vri%LE} z&w3w2a`tv;j(JV}DRCfExx#O0TGS_MFQpufiO=(eTXtVd@fy_Kj4C$?O0G=Ruu;BZp&a8dASEO=M!Q+J&1Npc@1;E;li_2{}Ls z!w+qNd`ZpvlPi*A>(8*&fcs^FzBOcTIWR;Sh_IYJEVc?U3$L^_zq!{pL+f<#gL}Ic zDz#!Ug#~;@WR3}FZo#mzT%6NQX+q|pbLQ-6z%nt-?xea`g|g*{FZyG6rbW%o z&2nQiBLO!=f`+_Fnls(+ZHRIqL?OO7^Vlk@$EJmRXLEdBgI6~1TgXBPn|RpKD&sjwf;)2Kbj-$DW4y3SM@wn_94Zq-<&b!mKr2>Tf?5qUud5w*LfyM+0QbN#R zo@D*6TGrdMvEZ3dmR&X9(=zkQ6T!E!8ydlap3OFbHgT0yN(2g#@O>311O@6|o(;=r z4fhM>-^Q#aoZ>o?Ex(E(L}Q-}<=X=BOaOrmPgU_4J!@q1tq;8!hG0t?QR^Qnvs8A{ zm({UB^j@ss3$r<}tEkZ;og;dHTI4eCQ0SNQgh|UTu~ISaQq={T4cBJ0b?@-5*1N;o z5(jXbwk?s(U`LYM`Wx&}p=JiAK?K-i!ssd^(5HAt7lC&C!uF0-|;bCL@JH)r-sYh7+XJeywnE zup$k~m|GF=^2|k~1DUXM9Er3*0!m{ZMKdkpNh`t@hJdBniiDb2e5Ckpa#PIPymIX` z6wJBt0=!F(rbT7oU~S{>@Td=UF4a+0BpE@i^?3!G3N_ZD#xeVvDuq5YTZOf?HR$b3 z!)6V+DaCiD&-(Ge&6zVAyxy!XZEzZH57zg*bXZp;ZzOI23#F4h0BknW4 zoSkUgW*5ha`8?hkZ#=X~&)%wmRL7ds0R0Vj(tmw}gI%cs+_uh94J+#B^CXAXuZX_Q zK9b<(b?Q%cG|OC~_U`p~L-dFjFSyYiZ4jS;zWRUTv$kSeMonGa^8CDH2zwutPQikW;=hwKYt zjfWOAEQ}&ME;L67iA_TtM?S`7~?YE-G(__WqQCPeVJI{c#duGiK9Dpa;ZE<~v2 zXCOjtT#0Sh^G-eC2rlL*1Mz4YNYAhjIV4>tUSid2nY;m3 zh6syE=;7TJY%)&t^sP&j(yja?t)LVhbEe+}bwoqq5*7uvPjc zzVK1-Bj!8~2`K9otT~ao(>C9}E#4ZucF~a)2c-LcwEqjml_-0qrFGgF_R&-S3!-^f zClgYQs^~;e8+=WdCU!CT`dNQ^lb)-T(Q|r-`Z{K=fMjn|*i52z?R|r?ef7WU&*8J( za~PdWF)LGR+<@gJOI|~51uv*j$oH(3re>*7Xy1rSG)KHFauqQD?^RYOu`fY&4JsL$ zd75_Knb$h+eXC$A0l(1OedL9R;mcTNvD)8(FxEUI?-)hH07q z(@w&LF;qi_s)&5TL7+?@NYsP8fN%#nmP3QW)P_YONx|E&NN(NoT7<=io~@AX+8>Hq z95mjMzu3&bICn1fB#egaRvDx6S+z<;86lCLPq3*Gpjg9^n`#aHY&J)RogjTc4^q!aULnKXAE@Gvy7S;wtq z{(Pr{`j*Xzz+|GTgP5TrWIgs_`7;6*78XM(4&Z~l5zwy#i8DmlG{3j8P6=V)ud5(bvz;q`0Zv>6|{33iJ;V`DHQLGspO+^vhK{fY5;O zNp1>d5wEHkGDGMtTbROivM3uhTwC7Rb-ZuJV)kP@Qin<92Z65$0;M@YE5$+U;dHo`A>5!b%GQ-twG zQOK!dVK>5FV8j#>wGhi)!USbsoLWcJJD;&k9)@*B>K;gS5A+SEdOQDLuU~?4tbKKY zsvLL1cqg>qy9Tp+05vzVKo6lBEFjhuR;pCvw2>f6l-_JE8d=AZy1yd}jCOQwL zvT}d*f>;~yDI9gV>fIUV{u|%$N zE(uY@F=PqbuEX$MuFhUx5gf|dJO@(q37ZiZ<^k2oIe;W89`Td17@VB}FRj{n1X45w zBgo~kkwthI%Wr%FAur*H=}jiszByMMYvIQG68P##w^>N=BR)<)cFB9Rgb=x6nI&nq z<_6pW+?Rg>l=cb=f=aC&gXwt3;NmFBtID<)*K#cou)08@wDS z#BQxJMnf4xAZ^Vigrr1rt9o;SCix_|lZWwHHVAQED<6jN|3Pb~&y2@LMe^ZeUcsVe z1&0BX%u1iJ+}+xGr;80cRM`ybjbnT~|3%HFZk2Tu9IsZxF=Zz;BEuc*N#D1>$G+ttu4T>RpqHQ zRh9Ud4^=g4MO+eM#FfWdQCqNnMj6nHXoaz*nKtKA1Z6BIRA5H&mB{lZz|DYcO%!Ud zTlt1ph(_cGz2s{mE7tqP`t?DJojjG8p&nidUg$7SzcP0nj3H?|z_%;GqHz2T) z&>dgH61b5@&8Xu8k1uc>uy$-!tP1f3X9{vaL#QEU%t%^PTQD65!p~Am#l;yHwsuuh zB=44wts2Y?Zk3AuR^$ z#%p11Up1iUcAUs{dOQ-r0W8j7WeQ7j+$FVt%(EO{sl04*4)!$Ca7TzGHCh9j*?6^^ zEq}H+sh+jn?Q)sBMG$e~)&d%c1yw$RrCNYSBDx`4S|v6)jx0CeudzNG zb!w`#=Q>)cR|$R=;e3blj6~r^Ukgw@{+a1Bl~z=RV9L74&8UoIJUf(A2$<8pIYP39 zubcrV%8!v#eN)#`b$BHJQ#;%XQsG#xBlBaI##+!;2y+MHthW znY}t@$dHbv<|2DIYYVV6N4FBqs0I>gW@0o!q9*Tatoq)o*CkEqBE5+ zkE;gSCH~M^rT%I)#crnkwH7RWPL$J%a5G=@=$hwg43xKnF7Fo;6UzqCYA4u^{ z7LEKeA+UTB-wCNZs|BkgLR(!n9Ug-dtuIQ31K})I<*ag`tpP@M&WVAT=dfA{-|_{* z0mBY1#uYal__a^EOf?st^JMUiK-fNtD~_x>f~mDs8`j_PIm4hkIFhByNS1ACvdyMP z_wn6PvDO-4)2nS+YeG>cY^w+IW{mWHKvIsymVQWH5<4pqQ0nxQAtCjLH_euk&!B|GRVzqzPdIr}GEF;wtw5B4L97(K3#Vb^!$2%CH z2!RhkMTUqLnAsMkdzmCsibjJsqL>Y~ufgy{Z@}@{9*x8JOsPOZ!C6*0FM8BULgH*A zQc%~rRQp;(a#nV&?C$CtS~Goy*k`gnd#Ylhl!jms|6z$Nh!$?EV+FA2P;58fjIcF( z^}6S*KtUe}&lEDY_uzivx^>N{TFqW%hX!cXk{dk>f(>o2T`lYD>0GNkp)=J#(02gB z(s3T6=@S#Uteh9a(rh`a8?_>s5qkd&9t3LC`1Ds8O>|FZi(U6DN??dnZP6ClC^_c_ z=(f!krzg+}n;-H+{oG8OG>>$lyXOGPz7OUutgIoD$g5886}Terjw^ z^Vw@5bLb+9z~ikTUS8Ba%jMswx$+%8TvuMA&d63v7yBc&8ZI{fHRp z+iFguD$RJgpuF`)tfr_nhq$nd-SmOL$W!CH)zPqjBANu11Qa6ZRHPAb1l8Fk+pvOY z7wVMkRrecLoz0JwfiOIQx^>T4Wg_Tk5KU}!VvM8&w%Q}g&TqkPc;j@fRYKJx99B`S zLkcuL*lXk_wga;aN6H(yC052CcbAB3xwm$&Td&zi$=uzXWho!$Q@Wa$MpfY6;M5E? zzVOO02sU%BeKu8i_=)h(xfjH?7NrHRq8y)=BFIX#Qeq6+Nd-$e*wABh6-!9OXj2GQZ ztru0d#$Hzo4Kn7N^XV;OS)@Tl^ttRJzd0Y`_>L5I#Rtu(ZJC#U_%c8 zXU52<05yV&Igd#V8c3~LMYAe`UOA(64WznvT@s!r22D+ru;GsO-l4U<2Y2;$IwTFO z9%%3BNjdFvFp|!}I@<3_dP{zD0`F1S5HsP`gnj zWZY$1XpDq*`}CL_g{a*X*MpI*kxwncUuQ&h(aUKVB=&_qrf%c^)596-n@76!>^Bpl zQCHV8P~n!Bh-uj-LGW1_14eD_>RKZTmYe=eFtWNK&x|3_F22{v*YgY5yGyF6)YVw; zQRA=gDWcR;jkd>=47>MV$Gi=tQGj>*vr;+CDE)^IYrH^T=KUeS!8<-s+phP%6Z4;=0z z-Dbe@G1zi+e2;%%=*0+5oUNX4Q;lzuOAoU(9|P>q9I3F}2Cz=~zDVyx?R-=aeu zQtu#lAZJV6|lUf1Pg=grOMGkqopHx}Z9 z-96M7Y{rZ!K2*XTtJZVg#4EG6WCTW7iD#Swqwu66I8OVBa z$}J{%kG5qkVWVbr0GjA%N@+Z&^18`P;t%&RLQ6EW?9@3`C9u2LXE+;Ea=ilP6blw? zm{^3HFex*W^^Xy&J)wQ~;BaSZup<)lpXQs9VmDn#3x>M7Q>zcz%tEtrB&UPXb1a+A zdbxzTtzHb|6FlK1j^5rVZcmRld-K^l97RT*F39LJvY2y<=9{IkEAJTBQ~S(9$Yo_i z4Kv)tYLBqS%_aJ)gq-O_H)r`?+x!kMB*@yow1kh#mcc~(+K#oosl=FD=6xvy&#sg^gDZXXzEKh&J+p_C))j0+Xfpzx?URJ*x_F=&*43;Jlz zS5WT@Or5eP$+DaP57?aV*Tx2i1d`eN9JW6N)q*@_!Yg_tXp=WGg;y{v0#A_W6(;q~ zIPFf%hkyRYy(YTbqH(9+5> zRx_=y7JAKZC?R2ZqIIlLZRHEjn)zuLdLjTEYA`%p$@#-$US-(LWZ=F=ESfp?DiUcH z5##IMCc%TwTZc#zWSYzdE_3)oM$Y=mR9Du3Ldca4k%!ITJ)H_!zJYg34uXVD9X|L=1#WefS>Mndfp_7-qeJp6>X|Hj=IrV&U z;bF<16K=ANu^RZALZRNiUBucdZr70UW~`)IFn}Usj`8Ue4NDtWSFDhP@i=D5lHd&` zuppx=D_D+B;>jIav$khta%sI&Gh;`0v^lt_J@5*dgIyP-7cEHJ7sU8Z0o#9ZrBnq5 zCgJz7&PPs*kD`^RI^lNZh{G<1v$beXFruj?EKaE6H^-A@&FO2_i9W%dE)^BLR1uAw zOetQ9@I=d$9BApp=Dq$D1yeXj@EA}vK!6}R!06jnm>DAIgIfke^*^fh;f|Pk`<`mWl&S-hfWzk<@vTwjx+v?=T6@oMXzkJBgziGG0_Q{Iv^Ar)_-WbZ zPI{QdR9X;1WQ3%pA6UF`GA=|e`9Re=_sNMMzGPJ73KR{bvqY5I5MZ(G@CjVFG;L1O zs(mbNSTqjlIZCEucP&N@RV)vgdnJN%KD8j<@6wFleoe9EoZV_fz7~rujFy({jzwWE z%@O{?p0*%T+32bcpPNTRm`oaC0}Ej&mt^e_*VzqfQK4qD3zGn}`Gw%xqaIW_$jTgn zyWBl%L@z3Iv^ zw2C*jboX_%cgJoVjacs4YU7GhhJNl%EbNAhUA92 zVPs3=TnV^+Zb#7R&@gNm+APOT*E{%LyBZu5YAeB!!zavbNrVETF~)8QvDJ8Xg2U6n zZI9ekSofBja4e;>(X*h<410-HeQO7LyAsX)1AXhdI#c20K+#cX&J-&x4$eZ1Z?Fmv zG06Ir;GC&+c!Z$LfA;KAYdc*snsyeXcDFe(KBS3AByrF`(tsH ztL!SgV;O{29E+cOH`wa-Eg)U$G9|ZimW(!@;{>5{ z3W#|Q2V+-97w367znM)}O_pd5zQ@7EY2naSHiK4$>o5yVh3v>LltV!{)r!f(`&Ug+ z%;!T{5jYACQ542`l*(Q*|2B;nBG=HY@-&X z^wz7k69O)`_;miTP;D7P2Wej;-ree^0!W;WYsLpkyvYE z`-%-|6Zt9c`%3*?cGiTiIiOdzTu--bA@i;O>MgXYhZMu_Kd^IHwyBm7jq518Fq^o$ z%`1C+#Qt0oy+Q|gkYlk*RLBhLKY@CVxEjN;m&L||vY0vcw#H}|8C9dVKSZu@EZl{m zIrK;84~U>MmFynuNnf~< zm?U&f20g7G5~@eN&(ql+?#t!3f2>i<0(Obz9QqV!Y_>+9N0Goa;^uJd(szFh(?Z)% zfrqwwQCxp`U%Y=;{QP!Ub5GR@2GIJ2?T(t1<@NISfyha^-dF1QcD3WxIS&0){IG5B zl~cy6uP#=WN0=pHtyHXzxASj^XyIAy849L!_N5^fWuEq25|motoiBsQHu9>G$zWFC z&SMBc%|Xxj-2Gr&$e21n?0_0x-~Odk5W((Yt^vN-*adE8TSpvt-i2Gmj&ywL<4&WS zr6a}(E2;NfT&^QGnb>Wu)sOV3vs~PExc@&&p#JFlpFVuW z7y{%Yu0_(E7HjB%(Tq4uc1NePtO3eL9JuYy>M5$B41?yh)tQi2NmW=HzvCI=7r^t- zRO1i=>?74S{nTxQI|OvxgB#;5>)pCHes+d{H()TGS+E(6zqC2`$GgMpK&Q@XkLMPj zBGV@^x&k8gEUCaU^=gnDUS}&t6_&A3gP4eZU&pyjx#50CKRNq!{Q2nfg@Z8JGgH3` zy{vjB8EL6KipHaVZUImnM?5~elKHG?l&}?_iM6!9u(WZ+!I~%^OWKQGds9A z-4}X@=GLf*V5Q_70om6-Fk<3GLXkyn@HIbc*9Pb(lZ$#d2p7E-;_KM(6kCCI@uAnPDH&Zy}4DFey7pdHQtO|*D9yi#*@{*XUS$^w#ZXepS$xo)gt!etA%O(o50 z-cj(jUW$TCV`T6MGT>}D;xi91S1Nzr~!(Q-gpK?39rJl^0|O!r(O0=9gM>?l-eda%D!DZigjSeHf>HH}NE_&Yg!*#r&L|sr zK-~@6UzW49o;)sQz;EVQ7V|SRxY^2wfPc19kh#*ul))ZemL9Ya$-i6OF_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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

j^d>9@#S`}*(0WJzNd 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 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 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 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 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 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..1cf1da3fe2d613edb2449c2a87c72f16328e111b GIT binary patch literal 93100 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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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. */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "rcparse.y" /* yacc.c:339 */ + /* rcparse.y -- parser for Windows rc files + Copyright (C) 1997-2017 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Support. + Extended 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 "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}}}; + + +#line 132 "rcparse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_RCPARSE_H_INCLUDED +# define YY_YY_RCPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 68 "rcparse.y" /* yacc.c:355 */ + + 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 414 "rcparse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_RCPARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 429 "rcparse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 520 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 353 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* 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, 1978, 1983, 1988, 1993, 1998 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -446 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-446))) + +#define YYTABLE_NINF -231 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { + define_accelerator ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].pacc)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 1957 "rcparse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 211 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.pacc) = NULL; + } +#line 1965 "rcparse.c" /* yacc.c:1661 */ + break; + + case 20: +#line 215 "rcparse.y" /* yacc.c:1661 */ + { + rc_accelerator *a; + + a = (rc_accelerator *) res_alloc (sizeof *a); + *a = (yyvsp[0].acc); + if ((yyvsp[-1].pacc) == NULL) + (yyval.pacc) = a; + else + { + rc_accelerator **pp; + + for (pp = &(yyvsp[-1].pacc)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = a; + (yyval.pacc) = (yyvsp[-1].pacc); + } + } +#line 1987 "rcparse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 236 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.acc) = (yyvsp[-1].acc); + (yyval.acc).id = (yyvsp[0].il); + } +#line 1996 "rcparse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 241 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.acc) = (yyvsp[-3].acc); + (yyval.acc).id = (yyvsp[-2].il); + (yyval.acc).flags |= (yyvsp[0].is); + if (((yyval.acc).flags & ACC_VIRTKEY) == 0 + && ((yyval.acc).flags & (ACC_SHIFT | ACC_CONTROL)) != 0) + rcparse_warning (_("inappropriate modifiers for non-VIRTKEY")); + } +#line 2009 "rcparse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 253 "rcparse.y" /* yacc.c:1661 */ + { + const char *s = (yyvsp[0].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")); + } +#line 2033 "rcparse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 273 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.acc).next = NULL; + (yyval.acc).flags = 0; + (yyval.acc).id = 0; + (yyval.acc).key = (yyvsp[0].il); + } +#line 2044 "rcparse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 283 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = (yyvsp[0].is); + } +#line 2052 "rcparse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 287 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is); + } +#line 2060 "rcparse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 292 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is); + } +#line 2068 "rcparse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 299 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = ACC_VIRTKEY; + } +#line 2076 "rcparse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 303 "rcparse.y" /* yacc.c:1661 */ + { + /* This is just the absence of VIRTKEY. */ + (yyval.is) = 0; + } +#line 2085 "rcparse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 308 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = ACC_NOINVERT; + } +#line 2093 "rcparse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 312 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = ACC_SHIFT; + } +#line 2101 "rcparse.c" /* yacc.c:1661 */ + break; + + case 32: +#line 316 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = ACC_CONTROL; + } +#line 2109 "rcparse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 320 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = ACC_ALT; + } +#line 2117 "rcparse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 329 "rcparse.y" /* yacc.c:1661 */ + { + define_bitmap ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 2128 "rcparse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 341 "rcparse.y" /* yacc.c:1661 */ + { + define_cursor ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 2139 "rcparse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 354 "rcparse.y" /* yacc.c:1661 */ + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[-3].il); + dialog.y = (yyvsp[-2].il); + dialog.width = (yyvsp[-1].il); + dialog.height = (yyvsp[0].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[-4].il); + dialog.menu.named = 1; + dialog.class.named = 1; + dialog.font = NULL; + dialog.ex = NULL; + dialog.controls = NULL; + sub_res_info = (yyvsp[-5].res_info); + style = 0; + } +#line 2160 "rcparse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 371 "rcparse.y" /* yacc.c:1661 */ + { + define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 2171 "rcparse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 379 "rcparse.y" /* yacc.c:1661 */ + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[-3].il); + dialog.y = (yyvsp[-2].il); + dialog.width = (yyvsp[-1].il); + dialog.height = (yyvsp[0].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[-4].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[-5].res_info); + style = 0; + } +#line 2194 "rcparse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 398 "rcparse.y" /* yacc.c:1661 */ + { + define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 2205 "rcparse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 406 "rcparse.y" /* yacc.c:1661 */ + { + memset (&dialog, 0, sizeof dialog); + dialog.x = (yyvsp[-4].il); + dialog.y = (yyvsp[-3].il); + dialog.width = (yyvsp[-2].il); + dialog.height = (yyvsp[-1].il); + dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; + dialog.exstyle = (yyvsp[-5].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[0].il); + dialog.controls = NULL; + sub_res_info = (yyvsp[-6].res_info); + style = 0; + } +#line 2229 "rcparse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 426 "rcparse.y" /* yacc.c:1661 */ + { + define_dialog ((yyvsp[-13].id), &sub_res_info, &dialog); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 2240 "rcparse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 436 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = 0; + } +#line 2248 "rcparse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 440 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].il); + } +#line 2256 "rcparse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 448 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style |= WS_CAPTION; + style |= WS_CAPTION; + dialog.caption = (yyvsp[0].uni); + } +#line 2266 "rcparse.c" /* yacc.c:1661 */ + break; + + case 46: +#line 454 "rcparse.y" /* yacc.c:1661 */ + { + dialog.class = (yyvsp[0].id); + } +#line 2274 "rcparse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 459 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style = style; + } +#line 2282 "rcparse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 463 "rcparse.y" /* yacc.c:1661 */ + { + dialog.exstyle = (yyvsp[0].il); + } +#line 2290 "rcparse.c" /* yacc.c:1661 */ + break; + + case 49: +#line 467 "rcparse.y" /* yacc.c:1661 */ + { + res_unistring_to_id (& dialog.class, (yyvsp[0].uni)); + } +#line 2298 "rcparse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 471 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[-2].il); + dialog.font = (yyvsp[0].uni); + if (dialog.ex != NULL) + { + dialog.ex->weight = 0; + dialog.ex->italic = 0; + dialog.ex->charset = 1; + } + } +#line 2315 "rcparse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 484 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[-3].il); + dialog.font = (yyvsp[-1].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[0].il); + dialog.ex->italic = 0; + dialog.ex->charset = 1; + } + } +#line 2334 "rcparse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 499 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[-4].il); + dialog.font = (yyvsp[-2].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[-1].il); + dialog.ex->italic = (yyvsp[0].il); + dialog.ex->charset = 1; + } + } +#line 2353 "rcparse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 514 "rcparse.y" /* yacc.c:1661 */ + { + dialog.style |= DS_SETFONT; + style |= DS_SETFONT; + dialog.pointsize = (yyvsp[-5].il); + dialog.font = (yyvsp[-3].uni); + if (dialog.ex == NULL) + rcparse_warning (_("extended FONT requires DIALOGEX")); + else + { + dialog.ex->weight = (yyvsp[-2].il); + dialog.ex->italic = (yyvsp[-1].il); + dialog.ex->charset = (yyvsp[0].il); + } + } +#line 2372 "rcparse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 529 "rcparse.y" /* yacc.c:1661 */ + { + dialog.menu = (yyvsp[0].id); + } +#line 2380 "rcparse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 533 "rcparse.y" /* yacc.c:1661 */ + { + sub_res_info.characteristics = (yyvsp[0].il); + } +#line 2388 "rcparse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 537 "rcparse.y" /* yacc.c:1661 */ + { + sub_res_info.language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT); + } +#line 2396 "rcparse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 541 "rcparse.y" /* yacc.c:1661 */ + { + sub_res_info.version = (yyvsp[0].il); + } +#line 2404 "rcparse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 549 "rcparse.y" /* yacc.c:1661 */ + { + rc_dialog_control **pp; + + for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[0].dialog_control); + } +#line 2416 "rcparse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 560 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_AUTO3STATE | WS_TABSTOP; + base_style = BS_AUTO3STATE; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2428 "rcparse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 568 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2436 "rcparse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 572 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_AUTOCHECKBOX | WS_TABSTOP; + base_style = BS_AUTOCHECKBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2448 "rcparse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 580 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2456 "rcparse.c" /* yacc.c:1661 */ + break; + + case 64: +#line 584 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_AUTORADIOBUTTON | WS_TABSTOP; + base_style = BS_AUTORADIOBUTTON; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2468 "rcparse.c" /* yacc.c:1661 */ + break; + + case 65: +#line 592 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2476 "rcparse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 596 "rcparse.y" /* yacc.c:1661 */ + { + 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[0].id); + } +#line 2488 "rcparse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 604 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("BEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "BEDIT"); + } +#line 2499 "rcparse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 611 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_CHECKBOX | WS_TABSTOP; + base_style = BS_CHECKBOX | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2511 "rcparse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 619 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2519 "rcparse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 623 "rcparse.y" /* yacc.c:1661 */ + { + /* 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; + } +#line 2533 "rcparse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 633 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2541 "rcparse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 638 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_control ((yyvsp[-9].id), (yyvsp[-8].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-7].id), style, (yyvsp[-1].il)); + if ((yyvsp[0].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[0].rcdata_item); + } + } +#line 2555 "rcparse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 649 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_control ((yyvsp[-10].id), (yyvsp[-9].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-8].id), style, (yyvsp[-2].il)); + if (dialog.ex == NULL) + rcparse_warning (_("help ID requires DIALOGEX")); + (yyval.dialog_control)->help = (yyvsp[-1].il); + (yyval.dialog_control)->data = (yyvsp[0].rcdata_item); + } +#line 2567 "rcparse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 657 "rcparse.y" /* yacc.c:1661 */ + { + default_style = SS_CENTER | WS_GROUP; + base_style = SS_CENTER; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[0].id); + } +#line 2579 "rcparse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 665 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2587 "rcparse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 669 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_DEFPUSHBUTTON | WS_TABSTOP; + base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2599 "rcparse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 677 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2607 "rcparse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 681 "rcparse.y" /* yacc.c:1661 */ + { + 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; + } +#line 2619 "rcparse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 689 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2627 "rcparse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 693 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_GROUPBOX; + base_style = BS_GROUPBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2639 "rcparse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 701 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2647 "rcparse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 705 "rcparse.y" /* yacc.c:1661 */ + { + 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[0].id); + } +#line 2659 "rcparse.c" /* yacc.c:1661 */ + break; + + case 83: +#line 713 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("IEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "HEDIT"); + } +#line 2670 "rcparse.c" /* yacc.c:1661 */ + break; + + case 84: +#line 720 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_icon_control ((yyvsp[-4].id), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-1].il), 0, 0, 0, (yyvsp[0].rcdata_item), + dialog.ex); + } +#line 2679 "rcparse.c" /* yacc.c:1661 */ + break; + + case 85: +#line 726 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_icon_control ((yyvsp[-6].id), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), 0, 0, 0, (yyvsp[0].rcdata_item), + dialog.ex); + } +#line 2688 "rcparse.c" /* yacc.c:1661 */ + break; + + case 86: +#line 732 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_icon_control ((yyvsp[-8].id), (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), style, (yyvsp[-1].il), 0, (yyvsp[0].rcdata_item), + dialog.ex); + } +#line 2697 "rcparse.c" /* yacc.c:1661 */ + break; + + case 87: +#line 738 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_icon_control ((yyvsp[-9].id), (yyvsp[-8].il), (yyvsp[-7].il), (yyvsp[-6].il), style, (yyvsp[-2].il), (yyvsp[-1].il), (yyvsp[0].rcdata_item), + dialog.ex); + } +#line 2706 "rcparse.c" /* yacc.c:1661 */ + break; + + case 88: +#line 743 "rcparse.y" /* yacc.c:1661 */ + { + 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[0].id); + } +#line 2718 "rcparse.c" /* yacc.c:1661 */ + break; + + case 89: +#line 751 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + if (dialog.ex == NULL) + rcparse_warning (_("IEDIT requires DIALOGEX")); + res_string_to_id (&(yyval.dialog_control)->class, "IEDIT"); + } +#line 2729 "rcparse.c" /* yacc.c:1661 */ + break; + + case 90: +#line 758 "rcparse.y" /* yacc.c:1661 */ + { + 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; + } +#line 2741 "rcparse.c" /* yacc.c:1661 */ + break; + + case 91: +#line 766 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2749 "rcparse.c" /* yacc.c:1661 */ + break; + + case 92: +#line 770 "rcparse.y" /* yacc.c:1661 */ + { + default_style = SS_LEFT | WS_GROUP; + base_style = SS_LEFT; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[0].id); + } +#line 2761 "rcparse.c" /* yacc.c:1661 */ + break; + + case 93: +#line 778 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2769 "rcparse.c" /* yacc.c:1661 */ + break; + + case 94: +#line 782 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_PUSHBOX | WS_TABSTOP; + base_style = BS_PUSHBOX; + class.named = 0; + class.u.id = CTL_BUTTON; + } +#line 2780 "rcparse.c" /* yacc.c:1661 */ + break; + + case 95: +#line 789 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2788 "rcparse.c" /* yacc.c:1661 */ + break; + + case 96: +#line 793 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_PUSHBUTTON | WS_TABSTOP; + base_style = BS_PUSHBUTTON | WS_TABSTOP; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2800 "rcparse.c" /* yacc.c:1661 */ + break; + + case 97: +#line 801 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2808 "rcparse.c" /* yacc.c:1661 */ + break; + + case 98: +#line 805 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_RADIOBUTTON | WS_TABSTOP; + base_style = BS_RADIOBUTTON; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2820 "rcparse.c" /* yacc.c:1661 */ + break; + + case 99: +#line 813 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2828 "rcparse.c" /* yacc.c:1661 */ + break; + + case 100: +#line 817 "rcparse.y" /* yacc.c:1661 */ + { + default_style = SS_RIGHT | WS_GROUP; + base_style = SS_RIGHT; + class.named = 0; + class.u.id = CTL_STATIC; + res_text_field = (yyvsp[0].id); + } +#line 2840 "rcparse.c" /* yacc.c:1661 */ + break; + + case 101: +#line 825 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2848 "rcparse.c" /* yacc.c:1661 */ + break; + + case 102: +#line 829 "rcparse.y" /* yacc.c:1661 */ + { + default_style = SBS_HORZ; + base_style = 0; + class.named = 0; + class.u.id = CTL_SCROLLBAR; + res_text_field = res_null_text; + } +#line 2860 "rcparse.c" /* yacc.c:1661 */ + break; + + case 103: +#line 837 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2868 "rcparse.c" /* yacc.c:1661 */ + break; + + case 104: +#line 841 "rcparse.y" /* yacc.c:1661 */ + { + default_style = BS_3STATE | WS_TABSTOP; + base_style = BS_3STATE; + class.named = 0; + class.u.id = CTL_BUTTON; + res_text_field = (yyvsp[0].id); + } +#line 2880 "rcparse.c" /* yacc.c:1661 */ + break; + + case 105: +#line 849 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = (yyvsp[0].dialog_control); + } +#line 2888 "rcparse.c" /* yacc.c:1661 */ + break; + + case 106: +#line 854 "rcparse.y" /* yacc.c:1661 */ + { style = WS_CHILD | WS_VISIBLE; } +#line 2894 "rcparse.c" /* yacc.c:1661 */ + break; + + case 107: +#line 856 "rcparse.y" /* yacc.c:1661 */ + { + rc_res_id cid; + cid.named = 0; + cid.u.id = CTL_BUTTON; + (yyval.dialog_control) = define_control ((yyvsp[-13].id), (yyvsp[-12].il), (yyvsp[-10].il), (yyvsp[-8].il), (yyvsp[-6].il), (yyvsp[-4].il), cid, + style, (yyvsp[0].il)); + } +#line 2906 "rcparse.c" /* yacc.c:1661 */ + break; + + case 108: +#line 874 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-1].il), class, + default_style | WS_CHILD | WS_VISIBLE, 0); + if ((yyvsp[0].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[0].rcdata_item); + } + } +#line 2921 "rcparse.c" /* yacc.c:1661 */ + break; + + case 109: +#line 886 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), class, style, (yyvsp[-1].il)); + if ((yyvsp[0].rcdata_item) != NULL) + { + if (dialog.ex == NULL) + rcparse_warning (_("control data requires DIALOGEX")); + (yyval.dialog_control)->data = (yyvsp[0].rcdata_item); + } + } +#line 2935 "rcparse.c" /* yacc.c:1661 */ + break; + + case 110: +#line 897 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-8].il), (yyvsp[-7].il), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), class, style, (yyvsp[-2].il)); + if (dialog.ex == NULL) + rcparse_warning (_("help ID requires DIALOGEX")); + (yyval.dialog_control)->help = (yyvsp[-1].il); + (yyval.dialog_control)->data = (yyvsp[0].rcdata_item); + } +#line 2947 "rcparse.c" /* yacc.c:1661 */ + break; + + case 111: +#line 908 "rcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[0].id).named) + res_unistring_to_id (&(yyval.id), (yyvsp[0].id).u.n.name); + else + (yyval.id)=(yyvsp[0].id); + } +#line 2958 "rcparse.c" /* yacc.c:1661 */ + break; + + case 112: +#line 918 "rcparse.y" /* yacc.c:1661 */ + { + res_string_to_id (&(yyval.id), ""); + } +#line 2966 "rcparse.c" /* yacc.c:1661 */ + break; + + case 113: +#line 921 "rcparse.y" /* yacc.c:1661 */ + { (yyval.id)=(yyvsp[-1].id); } +#line 2972 "rcparse.c" /* yacc.c:1661 */ + break; + + case 114: +#line 926 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[0].il); + } +#line 2981 "rcparse.c" /* yacc.c:1661 */ + break; + + case 115: +#line 931 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 1; + (yyval.id).u.n.name = (yyvsp[0].uni); + (yyval.id).u.n.length = unichar_len ((yyvsp[0].uni)); + } +#line 2991 "rcparse.c" /* yacc.c:1661 */ + break; + + case 116: +#line 940 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.rcdata_item) = NULL; + } +#line 2999 "rcparse.c" /* yacc.c:1661 */ + break; + + case 117: +#line 944 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.rcdata_item) = (yyvsp[-1].rcdata).first; + } +#line 3007 "rcparse.c" /* yacc.c:1661 */ + break; + + case 118: +#line 953 "rcparse.y" /* yacc.c:1661 */ + { style = WS_CHILD | WS_VISIBLE; } +#line 3013 "rcparse.c" /* yacc.c:1661 */ + break; + + case 120: +#line 959 "rcparse.y" /* yacc.c:1661 */ + { style = SS_ICON | WS_CHILD | WS_VISIBLE; } +#line 3019 "rcparse.c" /* yacc.c:1661 */ + break; + + case 122: +#line 965 "rcparse.y" /* yacc.c:1661 */ + { style = base_style | WS_CHILD | WS_VISIBLE; } +#line 3025 "rcparse.c" /* yacc.c:1661 */ + break; + + case 124: +#line 973 "rcparse.y" /* yacc.c:1661 */ + { + define_font ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3036 "rcparse.c" /* yacc.c:1661 */ + break; + + case 125: +#line 985 "rcparse.y" /* yacc.c:1661 */ + { + define_icon ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3047 "rcparse.c" /* yacc.c:1661 */ + break; + + case 126: +#line 998 "rcparse.y" /* yacc.c:1661 */ + { + language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT); + } +#line 3055 "rcparse.c" /* yacc.c:1661 */ + break; + + case 127: +#line 1007 "rcparse.y" /* yacc.c:1661 */ + { + define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3066 "rcparse.c" /* yacc.c:1661 */ + break; + + case 128: +#line 1017 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = NULL; + } +#line 3074 "rcparse.c" /* yacc.c:1661 */ + break; + + case 129: +#line 1021 "rcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].menuitem) == NULL) + (yyval.menuitem) = (yyvsp[0].menuitem); + else + { + rc_menuitem **pp; + + for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[0].menuitem); + (yyval.menuitem) = (yyvsp[-1].menuitem); + } + } +#line 3092 "rcparse.c" /* yacc.c:1661 */ + break; + + case 130: +#line 1038 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-2].uni), (yyvsp[-1].il), (yyvsp[0].is), 0, 0, NULL); + } +#line 3100 "rcparse.c" /* yacc.c:1661 */ + break; + + case 131: +#line 1042 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); + } +#line 3108 "rcparse.c" /* yacc.c:1661 */ + break; + + case 132: +#line 1046 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-4].uni), 0, (yyvsp[-3].is), 0, 0, (yyvsp[-1].menuitem)); + } +#line 3116 "rcparse.c" /* yacc.c:1661 */ + break; + + case 133: +#line 1053 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = 0; + } +#line 3124 "rcparse.c" /* yacc.c:1661 */ + break; + + case 134: +#line 1057 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is); + } +#line 3132 "rcparse.c" /* yacc.c:1661 */ + break; + + case 135: +#line 1061 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is); + } +#line 3140 "rcparse.c" /* yacc.c:1661 */ + break; + + case 136: +#line 1068 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_CHECKED; + } +#line 3148 "rcparse.c" /* yacc.c:1661 */ + break; + + case 137: +#line 1072 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_GRAYED; + } +#line 3156 "rcparse.c" /* yacc.c:1661 */ + break; + + case 138: +#line 1076 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_HELP; + } +#line 3164 "rcparse.c" /* yacc.c:1661 */ + break; + + case 139: +#line 1080 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_INACTIVE; + } +#line 3172 "rcparse.c" /* yacc.c:1661 */ + break; + + case 140: +#line 1084 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_MENUBARBREAK; + } +#line 3180 "rcparse.c" /* yacc.c:1661 */ + break; + + case 141: +#line 1088 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.is) = MENUITEM_MENUBREAK; + } +#line 3188 "rcparse.c" /* yacc.c:1661 */ + break; + + case 142: +#line 1097 "rcparse.y" /* yacc.c:1661 */ + { + define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3199 "rcparse.c" /* yacc.c:1661 */ + break; + + case 143: +#line 1107 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = NULL; + } +#line 3207 "rcparse.c" /* yacc.c:1661 */ + break; + + case 144: +#line 1111 "rcparse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].menuitem) == NULL) + (yyval.menuitem) = (yyvsp[0].menuitem); + else + { + rc_menuitem **pp; + + for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next) + ; + *pp = (yyvsp[0].menuitem); + (yyval.menuitem) = (yyvsp[-1].menuitem); + } + } +#line 3225 "rcparse.c" /* yacc.c:1661 */ + break; + + case 145: +#line 1128 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[0].uni), 0, 0, 0, 0, NULL); + } +#line 3233 "rcparse.c" /* yacc.c:1661 */ + break; + + case 146: +#line 1132 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-1].uni), (yyvsp[0].il), 0, 0, 0, NULL); + } +#line 3241 "rcparse.c" /* yacc.c:1661 */ + break; + + case 147: +#line 1136 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-3].uni), (yyvsp[-2].il), (yyvsp[-1].il), (yyvsp[0].il), 0, NULL); + } +#line 3249 "rcparse.c" /* yacc.c:1661 */ + break; + + case 148: +#line 1140 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); + } +#line 3257 "rcparse.c" /* yacc.c:1661 */ + break; + + case 149: +#line 1144 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-3].uni), 0, 0, 0, 0, (yyvsp[-1].menuitem)); + } +#line 3265 "rcparse.c" /* yacc.c:1661 */ + break; + + case 150: +#line 1148 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-4].uni), (yyvsp[-3].il), 0, 0, 0, (yyvsp[-1].menuitem)); + } +#line 3273 "rcparse.c" /* yacc.c:1661 */ + break; + + case 151: +#line 1152 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-5].uni), (yyvsp[-4].il), (yyvsp[-3].il), 0, 0, (yyvsp[-1].menuitem)); + } +#line 3281 "rcparse.c" /* yacc.c:1661 */ + break; + + case 152: +#line 1157 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.menuitem) = define_menuitem ((yyvsp[-7].uni), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-1].menuitem)); + } +#line 3289 "rcparse.c" /* yacc.c:1661 */ + break; + + case 153: +#line 1166 "rcparse.y" /* yacc.c:1661 */ + { + define_messagetable ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3300 "rcparse.c" /* yacc.c:1661 */ + break; + + case 154: +#line 1178 "rcparse.y" /* yacc.c:1661 */ + { + rcparse_rcdata (); + } +#line 3308 "rcparse.c" /* yacc.c:1661 */ + break; + + case 155: +#line 1182 "rcparse.y" /* yacc.c:1661 */ + { + rcparse_normal (); + (yyval.rcdata) = (yyvsp[0].rcdata); + } +#line 3317 "rcparse.c" /* yacc.c:1661 */ + break; + + case 156: +#line 1190 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.rcdata).first = NULL; + (yyval.rcdata).last = NULL; + } +#line 3326 "rcparse.c" /* yacc.c:1661 */ + break; + + case 157: +#line 1195 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.rcdata) = (yyvsp[0].rcdata); + } +#line 3334 "rcparse.c" /* yacc.c:1661 */ + break; + + case 158: +#line 1202 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } +#line 3346 "rcparse.c" /* yacc.c:1661 */ + break; + + case 159: +#line 1210 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_unistring ((yyvsp[0].suni).s, (yyvsp[0].suni).length); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } +#line 3358 "rcparse.c" /* yacc.c:1661 */ + break; + + case 160: +#line 1218 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword); + (yyval.rcdata).first = ri; + (yyval.rcdata).last = ri; + } +#line 3370 "rcparse.c" /* yacc.c:1661 */ + break; + + case 161: +#line 1226 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length); + (yyval.rcdata).first = (yyvsp[-2].rcdata).first; + (yyvsp[-2].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } +#line 3383 "rcparse.c" /* yacc.c:1661 */ + break; + + case 162: +#line 1235 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_unistring ((yyvsp[0].suni).s, (yyvsp[0].suni).length); + (yyval.rcdata).first = (yyvsp[-2].rcdata).first; + (yyvsp[-2].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } +#line 3396 "rcparse.c" /* yacc.c:1661 */ + break; + + case 163: +#line 1244 "rcparse.y" /* yacc.c:1661 */ + { + rc_rcdata_item *ri; + + ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword); + (yyval.rcdata).first = (yyvsp[-2].rcdata).first; + (yyvsp[-2].rcdata).last->next = ri; + (yyval.rcdata).last = ri; + } +#line 3409 "rcparse.c" /* yacc.c:1661 */ + break; + + case 164: +#line 1253 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.rcdata)=(yyvsp[-1].rcdata); + } +#line 3417 "rcparse.c" /* yacc.c:1661 */ + break; + + case 165: +#line 1262 "rcparse.y" /* yacc.c:1661 */ + { sub_res_info = (yyvsp[-1].res_info); rcparse_rcdata (); } +#line 3423 "rcparse.c" /* yacc.c:1661 */ + break; + + case 166: +#line 1263 "rcparse.y" /* yacc.c:1661 */ + { rcparse_normal (); } +#line 3429 "rcparse.c" /* yacc.c:1661 */ + break; + + case 168: +#line 1269 "rcparse.y" /* yacc.c:1661 */ + { + define_stringtable (&sub_res_info, (yyvsp[-1].il), (yyvsp[0].suni).s, (yyvsp[0].suni).length); + rcparse_discard_strings (); + } +#line 3438 "rcparse.c" /* yacc.c:1661 */ + break; + + case 169: +#line 1274 "rcparse.y" /* yacc.c:1661 */ + { + define_stringtable (&sub_res_info, (yyvsp[-2].il), (yyvsp[0].suni).s, (yyvsp[0].suni).length); + rcparse_discard_strings (); + } +#line 3447 "rcparse.c" /* yacc.c:1661 */ + break; + + case 170: +#line 1279 "rcparse.y" /* yacc.c:1661 */ + { + rcparse_warning (_("invalid stringtable resource.")); + abort (); + } +#line 3456 "rcparse.c" /* yacc.c:1661 */ + break; + + case 171: +#line 1287 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id)=(yyvsp[0].id); + } +#line 3464 "rcparse.c" /* yacc.c:1661 */ + break; + + case 172: +#line 1291 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = 23; + } +#line 3473 "rcparse.c" /* yacc.c:1661 */ + break; + + case 173: +#line 1296 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_RCDATA; + } +#line 3482 "rcparse.c" /* yacc.c:1661 */ + break; + + case 174: +#line 1301 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_MANIFEST; + } +#line 3491 "rcparse.c" /* yacc.c:1661 */ + break; + + case 175: +#line 1306 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_PLUGPLAY; + } +#line 3500 "rcparse.c" /* yacc.c:1661 */ + break; + + case 176: +#line 1311 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_VXD; + } +#line 3509 "rcparse.c" /* yacc.c:1661 */ + break; + + case 177: +#line 1316 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_DLGINCLUDE; + } +#line 3518 "rcparse.c" /* yacc.c:1661 */ + break; + + case 178: +#line 1321 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_DLGINIT; + } +#line 3527 "rcparse.c" /* yacc.c:1661 */ + break; + + case 179: +#line 1326 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_ANICURSOR; + } +#line 3536 "rcparse.c" /* yacc.c:1661 */ + break; + + case 180: +#line 1331 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = RT_ANIICON; + } +#line 3545 "rcparse.c" /* yacc.c:1661 */ + break; + + case 181: +#line 1342 "rcparse.y" /* yacc.c:1661 */ + { + define_user_data ((yyvsp[-5].id), (yyvsp[-4].id), &(yyvsp[-3].res_info), (yyvsp[-1].rcdata).first); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3556 "rcparse.c" /* yacc.c:1661 */ + break; + + case 182: +#line 1349 "rcparse.y" /* yacc.c:1661 */ + { + define_user_file ((yyvsp[-3].id), (yyvsp[-2].id), &(yyvsp[-1].res_info), (yyvsp[0].s)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3567 "rcparse.c" /* yacc.c:1661 */ + break; + + case 183: +#line 1359 "rcparse.y" /* yacc.c:1661 */ + { + define_toolbar ((yyvsp[-7].id), &(yyvsp[-5].res_info), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-1].toobar_item)); + } +#line 3575 "rcparse.c" /* yacc.c:1661 */ + break; + + case 184: +#line 1364 "rcparse.y" /* yacc.c:1661 */ + { (yyval.toobar_item)= NULL; } +#line 3581 "rcparse.c" /* yacc.c:1661 */ + break; + + case 185: +#line 1366 "rcparse.y" /* yacc.c:1661 */ + { + rc_toolbar_item *c,*n; + c = (yyvsp[-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 = (yyvsp[0].id); + if ((yyvsp[-2].toobar_item) == NULL) + (yyval.toobar_item) = n; + else + (yyval.toobar_item) = (yyvsp[-2].toobar_item); + } +#line 3604 "rcparse.c" /* yacc.c:1661 */ + break; + + case 186: +#line 1385 "rcparse.y" /* yacc.c:1661 */ + { + rc_toolbar_item *c,*n; + c = (yyvsp[-1].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].toobar_item) == NULL) + (yyval.toobar_item) = n; + else + (yyval.toobar_item) = (yyvsp[-1].toobar_item); + } +#line 3628 "rcparse.c" /* yacc.c:1661 */ + break; + + case 187: +#line 1410 "rcparse.y" /* yacc.c:1661 */ + { + define_versioninfo ((yyvsp[-5].id), language, (yyvsp[-3].fixver), (yyvsp[-1].verinfo)); + if (yychar != YYEMPTY) + YYERROR; + rcparse_discard_strings (); + } +#line 3639 "rcparse.c" /* yacc.c:1661 */ + break; + + case 188: +#line 1420 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.fixver) = ((rc_fixed_versioninfo *) + res_alloc (sizeof (rc_fixed_versioninfo))); + memset ((yyval.fixver), 0, sizeof (rc_fixed_versioninfo)); + } +#line 3649 "rcparse.c" /* yacc.c:1661 */ + break; + + case 189: +#line 1427 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-5].fixver)->file_version_ms = ((yyvsp[-3].il) << 16) | ((yyvsp[-2].il) & 0xffff); + (yyvsp[-5].fixver)->file_version_ls = ((yyvsp[-1].il) << 16) | ((yyvsp[0].il) & 0xffff); + (yyval.fixver) = (yyvsp[-5].fixver); + } +#line 3659 "rcparse.c" /* yacc.c:1661 */ + break; + + case 190: +#line 1434 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-5].fixver)->product_version_ms = ((yyvsp[-3].il) << 16) | ((yyvsp[-2].il) & 0xffff); + (yyvsp[-5].fixver)->product_version_ls = ((yyvsp[-1].il) << 16) | ((yyvsp[0].il) & 0xffff); + (yyval.fixver) = (yyvsp[-5].fixver); + } +#line 3669 "rcparse.c" /* yacc.c:1661 */ + break; + + case 191: +#line 1440 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-2].fixver)->file_flags_mask = (yyvsp[0].il); + (yyval.fixver) = (yyvsp[-2].fixver); + } +#line 3678 "rcparse.c" /* yacc.c:1661 */ + break; + + case 192: +#line 1445 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-2].fixver)->file_flags = (yyvsp[0].il); + (yyval.fixver) = (yyvsp[-2].fixver); + } +#line 3687 "rcparse.c" /* yacc.c:1661 */ + break; + + case 193: +#line 1450 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-2].fixver)->file_os = (yyvsp[0].il); + (yyval.fixver) = (yyvsp[-2].fixver); + } +#line 3696 "rcparse.c" /* yacc.c:1661 */ + break; + + case 194: +#line 1455 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-2].fixver)->file_type = (yyvsp[0].il); + (yyval.fixver) = (yyvsp[-2].fixver); + } +#line 3705 "rcparse.c" /* yacc.c:1661 */ + break; + + case 195: +#line 1460 "rcparse.y" /* yacc.c:1661 */ + { + (yyvsp[-2].fixver)->file_subtype = (yyvsp[0].il); + (yyval.fixver) = (yyvsp[-2].fixver); + } +#line 3714 "rcparse.c" /* yacc.c:1661 */ + break; + + case 196: +#line 1474 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verinfo) = NULL; + } +#line 3722 "rcparse.c" /* yacc.c:1661 */ + break; + + case 197: +#line 1478 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[-4].verinfo), (yyvsp[-1].verstringtable)); + } +#line 3730 "rcparse.c" /* yacc.c:1661 */ + break; + + case 198: +#line 1482 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[-6].verinfo), (yyvsp[-2].uni), (yyvsp[-1].vervar)); + } +#line 3738 "rcparse.c" /* yacc.c:1661 */ + break; + + case 199: +#line 1489 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verstringtable) = NULL; + } +#line 3746 "rcparse.c" /* yacc.c:1661 */ + break; + + case 200: +#line 1493 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verstringtable) = append_ver_stringtable ((yyvsp[-4].verstringtable), (yyvsp[-3].s), (yyvsp[-1].verstring)); + } +#line 3754 "rcparse.c" /* yacc.c:1661 */ + break; + + case 201: +#line 1500 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verstring) = NULL; + } +#line 3762 "rcparse.c" /* yacc.c:1661 */ + break; + + case 202: +#line 1504 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.verstring) = append_verval ((yyvsp[-4].verstring), (yyvsp[-2].uni), (yyvsp[0].uni)); + } +#line 3770 "rcparse.c" /* yacc.c:1661 */ + break; + + case 203: +#line 1511 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.vervar) = NULL; + } +#line 3778 "rcparse.c" /* yacc.c:1661 */ + break; + + case 204: +#line 1515 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.vervar) = append_vertrans ((yyvsp[-2].vervar), (yyvsp[-1].il), (yyvsp[0].il)); + } +#line 3786 "rcparse.c" /* yacc.c:1661 */ + break; + + case 205: +#line 1524 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[0].il); + } +#line 3795 "rcparse.c" /* yacc.c:1661 */ + break; + + case 206: +#line 1529 "rcparse.y" /* yacc.c:1661 */ + { + res_unistring_to_id (&(yyval.id), (yyvsp[0].uni)); + } +#line 3803 "rcparse.c" /* yacc.c:1661 */ + break; + + case 207: +#line 1538 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.uni) = (yyvsp[0].uni); + } +#line 3811 "rcparse.c" /* yacc.c:1661 */ + break; + + case 208: +#line 1542 "rcparse.y" /* yacc.c:1661 */ + { + unichar *h = NULL; + unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[0].s)); + (yyval.uni) = h; + } +#line 3821 "rcparse.c" /* yacc.c:1661 */ + break; + + case 209: +#line 1552 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.id).named = 0; + (yyval.id).u.id = (yyvsp[-1].il); + } +#line 3830 "rcparse.c" /* yacc.c:1661 */ + break; + + case 210: +#line 1557 "rcparse.y" /* yacc.c:1661 */ + { + res_unistring_to_id (&(yyval.id), (yyvsp[0].uni)); + } +#line 3838 "rcparse.c" /* yacc.c:1661 */ + break; + + case 211: +#line 1561 "rcparse.y" /* yacc.c:1661 */ + { + res_unistring_to_id (&(yyval.id), (yyvsp[-1].uni)); + } +#line 3846 "rcparse.c" /* yacc.c:1661 */ + break; + + case 212: +#line 1571 "rcparse.y" /* yacc.c:1661 */ + { + 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; + } +#line 3857 "rcparse.c" /* yacc.c:1661 */ + break; + + case 213: +#line 1578 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-1].res_info); + (yyval.res_info).memflags |= (yyvsp[0].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off; + } +#line 3867 "rcparse.c" /* yacc.c:1661 */ + break; + + case 214: +#line 1584 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-2].res_info); + (yyval.res_info).characteristics = (yyvsp[0].il); + } +#line 3876 "rcparse.c" /* yacc.c:1661 */ + break; + + case 215: +#line 1589 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-3].res_info); + (yyval.res_info).language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT); + } +#line 3885 "rcparse.c" /* yacc.c:1661 */ + break; + + case 216: +#line 1594 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-2].res_info); + (yyval.res_info).version = (yyvsp[0].il); + } +#line 3894 "rcparse.c" /* yacc.c:1661 */ + break; + + case 217: +#line 1604 "rcparse.y" /* yacc.c:1661 */ + { + memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); + (yyval.res_info).language = language; + (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE; + } +#line 3904 "rcparse.c" /* yacc.c:1661 */ + break; + + case 218: +#line 1610 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-1].res_info); + (yyval.res_info).memflags |= (yyvsp[0].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off; + } +#line 3914 "rcparse.c" /* yacc.c:1661 */ + break; + + case 219: +#line 1621 "rcparse.y" /* yacc.c:1661 */ + { + 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; + } +#line 3924 "rcparse.c" /* yacc.c:1661 */ + break; + + case 220: +#line 1627 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.res_info) = (yyvsp[-1].res_info); + (yyval.res_info).memflags |= (yyvsp[0].memflags).on; + (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off; + } +#line 3934 "rcparse.c" /* yacc.c:1661 */ + break; + + case 221: +#line 1639 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = MEMFLAG_MOVEABLE; + (yyval.memflags).off = 0; + } +#line 3943 "rcparse.c" /* yacc.c:1661 */ + break; + + case 222: +#line 1644 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_MOVEABLE; + } +#line 3952 "rcparse.c" /* yacc.c:1661 */ + break; + + case 223: +#line 1649 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = MEMFLAG_PURE; + (yyval.memflags).off = 0; + } +#line 3961 "rcparse.c" /* yacc.c:1661 */ + break; + + case 224: +#line 1654 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_PURE; + } +#line 3970 "rcparse.c" /* yacc.c:1661 */ + break; + + case 225: +#line 1659 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = MEMFLAG_PRELOAD; + (yyval.memflags).off = 0; + } +#line 3979 "rcparse.c" /* yacc.c:1661 */ + break; + + case 226: +#line 1664 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = 0; + (yyval.memflags).off = MEMFLAG_PRELOAD; + } +#line 3988 "rcparse.c" /* yacc.c:1661 */ + break; + + case 227: +#line 1669 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.memflags).on = MEMFLAG_DISCARDABLE; + (yyval.memflags).off = 0; + } +#line 3997 "rcparse.c" /* yacc.c:1661 */ + break; + + case 228: +#line 1679 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.s) = (yyvsp[0].s); + } +#line 4005 "rcparse.c" /* yacc.c:1661 */ + break; + + case 229: +#line 1683 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.s) = (yyvsp[0].s); + } +#line 4013 "rcparse.c" /* yacc.c:1661 */ + break; + + case 230: +#line 1691 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.uni) = (yyvsp[0].uni); + } +#line 4021 "rcparse.c" /* yacc.c:1661 */ + break; + + case 231: +#line 1696 "rcparse.y" /* yacc.c:1661 */ + { + rc_uint_type l1 = unichar_len ((yyvsp[-1].uni)); + rc_uint_type l2 = unichar_len ((yyvsp[0].uni)); + unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1 != 0) + memcpy (h, (yyvsp[-1].uni), l1 * sizeof (unichar)); + if (l2 != 0) + memcpy (h + l1, (yyvsp[0].uni), l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.uni) = h; + } +#line 4037 "rcparse.c" /* yacc.c:1661 */ + break; + + case 232: +#line 1711 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.uni) = unichar_dup ((yyvsp[0].uni)); + } +#line 4045 "rcparse.c" /* yacc.c:1661 */ + break; + + case 233: +#line 1715 "rcparse.y" /* yacc.c:1661 */ + { + unichar *h = NULL; + unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[0].s)); + (yyval.uni) = h; + } +#line 4055 "rcparse.c" /* yacc.c:1661 */ + break; + + case 234: +#line 1724 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.suni) = (yyvsp[0].suni); + } +#line 4063 "rcparse.c" /* yacc.c:1661 */ + break; + + case 235: +#line 1728 "rcparse.y" /* yacc.c:1661 */ + { + unichar *h = NULL; + rc_uint_type l = 0; + unicode_from_ascii_len (&l, &h, (yyvsp[0].ss).s, (yyvsp[0].ss).length); + (yyval.suni).s = h; + (yyval.suni).length = l; + } +#line 4075 "rcparse.c" /* yacc.c:1661 */ + break; + + case 236: +#line 1740 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.suni) = (yyvsp[0].suni); + } +#line 4083 "rcparse.c" /* yacc.c:1661 */ + break; + + case 237: +#line 1745 "rcparse.y" /* yacc.c:1661 */ + { + rc_uint_type l1 = (yyvsp[-1].suni).length; + rc_uint_type l2 = (yyvsp[0].suni).length; + unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); + if (l1 != 0) + memcpy (h, (yyvsp[-1].suni).s, l1 * sizeof (unichar)); + if (l2 != 0) + memcpy (h + l1, (yyvsp[0].suni).s, l2 * sizeof (unichar)); + h[l1 + l2] = 0; + (yyval.suni).length = l1 + l2; + (yyval.suni).s = h; + } +#line 4100 "rcparse.c" /* yacc.c:1661 */ + break; + + case 238: +#line 1761 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.ss) = (yyvsp[0].ss); + } +#line 4108 "rcparse.c" /* yacc.c:1661 */ + break; + + case 239: +#line 1765 "rcparse.y" /* yacc.c:1661 */ + { + rc_uint_type l = (yyvsp[-1].ss).length + (yyvsp[0].ss).length; + char *h = (char *) res_alloc (l); + memcpy (h, (yyvsp[-1].ss).s, (yyvsp[-1].ss).length); + memcpy (h + (yyvsp[-1].ss).length, (yyvsp[0].ss).s, (yyvsp[0].ss).length); + (yyval.ss).s = h; + (yyval.ss).length = l; + } +#line 4121 "rcparse.c" /* yacc.c:1661 */ + break; + + case 240: +#line 1777 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.suni) = (yyvsp[0].suni); + } +#line 4129 "rcparse.c" /* yacc.c:1661 */ + break; + + case 241: +#line 1781 "rcparse.y" /* yacc.c:1661 */ + { + rc_uint_type l = (yyvsp[-1].suni).length + (yyvsp[0].suni).length; + unichar *h = (unichar *) res_alloc (l * sizeof (unichar)); + memcpy (h, (yyvsp[-1].suni).s, (yyvsp[-1].suni).length * sizeof (unichar)); + memcpy (h + (yyvsp[-1].suni).length, (yyvsp[0].suni).s, (yyvsp[0].suni).length * sizeof (unichar)); + (yyval.suni).s = h; + (yyval.suni).length = l; + } +#line 4142 "rcparse.c" /* yacc.c:1661 */ + break; + + case 242: +#line 1803 "rcparse.y" /* yacc.c:1661 */ + { + style |= (yyvsp[0].il); + } +#line 4150 "rcparse.c" /* yacc.c:1661 */ + break; + + case 243: +#line 1807 "rcparse.y" /* yacc.c:1661 */ + { + style &=~ (yyvsp[0].il); + } +#line 4158 "rcparse.c" /* yacc.c:1661 */ + break; + + case 244: +#line 1811 "rcparse.y" /* yacc.c:1661 */ + { + style |= (yyvsp[0].il); + } +#line 4166 "rcparse.c" /* yacc.c:1661 */ + break; + + case 245: +#line 1815 "rcparse.y" /* yacc.c:1661 */ + { + style &=~ (yyvsp[0].il); + } +#line 4174 "rcparse.c" /* yacc.c:1661 */ + break; + + case 246: +#line 1822 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].i).val; + } +#line 4182 "rcparse.c" /* yacc.c:1661 */ + break; + + case 247: +#line 1826 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[-1].il); + } +#line 4190 "rcparse.c" /* yacc.c:1661 */ + break; + + case 248: +#line 1835 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = 0; + } +#line 4198 "rcparse.c" /* yacc.c:1661 */ + break; + + case 249: +#line 1839 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].il); + } +#line 4206 "rcparse.c" /* yacc.c:1661 */ + break; + + case 250: +#line 1848 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].il); + } +#line 4214 "rcparse.c" /* yacc.c:1661 */ + break; + + case 251: +#line 1857 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].i).val; + } +#line 4222 "rcparse.c" /* yacc.c:1661 */ + break; + + case 252: +#line 1866 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i) = (yyvsp[0].i); + } +#line 4230 "rcparse.c" /* yacc.c:1661 */ + break; + + case 253: +#line 1870 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i) = (yyvsp[-1].i); + } +#line 4238 "rcparse.c" /* yacc.c:1661 */ + break; + + case 254: +#line 1874 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = ~ (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[0].i).dword; + } +#line 4247 "rcparse.c" /* yacc.c:1661 */ + break; + + case 255: +#line 1879 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = - (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[0].i).dword; + } +#line 4256 "rcparse.c" /* yacc.c:1661 */ + break; + + case 256: +#line 1884 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4265 "rcparse.c" /* yacc.c:1661 */ + break; + + case 257: +#line 1889 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val / ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1); + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4274 "rcparse.c" /* yacc.c:1661 */ + break; + + case 258: +#line 1894 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val % ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1); + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4283 "rcparse.c" /* yacc.c:1661 */ + break; + + case 259: +#line 1899 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4292 "rcparse.c" /* yacc.c:1661 */ + break; + + case 260: +#line 1904 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4301 "rcparse.c" /* yacc.c:1661 */ + break; + + case 261: +#line 1909 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4310 "rcparse.c" /* yacc.c:1661 */ + break; + + case 262: +#line 1914 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4319 "rcparse.c" /* yacc.c:1661 */ + break; + + case 263: +#line 1919 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4328 "rcparse.c" /* yacc.c:1661 */ + break; + + case 264: +#line 1930 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].il); + } +#line 4336 "rcparse.c" /* yacc.c:1661 */ + break; + + case 265: +#line 1939 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.il) = (yyvsp[0].i).val; + } +#line 4344 "rcparse.c" /* yacc.c:1661 */ + break; + + case 266: +#line 1950 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i) = (yyvsp[0].i); + } +#line 4352 "rcparse.c" /* yacc.c:1661 */ + break; + + case 267: +#line 1954 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i) = (yyvsp[-1].i); + } +#line 4360 "rcparse.c" /* yacc.c:1661 */ + break; + + case 268: +#line 1958 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = ~ (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[0].i).dword; + } +#line 4369 "rcparse.c" /* yacc.c:1661 */ + break; + + case 269: +#line 1963 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4378 "rcparse.c" /* yacc.c:1661 */ + break; + + case 270: +#line 1968 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val / ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1); + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4387 "rcparse.c" /* yacc.c:1661 */ + break; + + case 271: +#line 1973 "rcparse.y" /* yacc.c:1661 */ + { + /* PR 17512: file: 89105a25. */ + (yyval.i).val = (yyvsp[-2].i).val % ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1); + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4397 "rcparse.c" /* yacc.c:1661 */ + break; + + case 272: +#line 1979 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4406 "rcparse.c" /* yacc.c:1661 */ + break; + + case 273: +#line 1984 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4415 "rcparse.c" /* yacc.c:1661 */ + break; + + case 274: +#line 1989 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4424 "rcparse.c" /* yacc.c:1661 */ + break; + + case 275: +#line 1994 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4433 "rcparse.c" /* yacc.c:1661 */ + break; + + case 276: +#line 1999 "rcparse.y" /* yacc.c:1661 */ + { + (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val; + (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword; + } +#line 4442 "rcparse.c" /* yacc.c:1661 */ + break; + + +#line 4446 "rcparse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 2005 "rcparse.y" /* yacc.c:1906 */ + + +/* 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..207db44b2bb --- /dev/null +++ b/binutils/rcparse.h @@ -0,0 +1,306 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_RCPARSE_H_INCLUDED +# define YY_YY_RCPARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 68 "rcparse.y" /* yacc.c:1915 */ + + 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 296 "rcparse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_RCPARSE_H_INCLUDED */ diff --git a/binutils/sysinfo.c b/binutils/sysinfo.c new file mode 100644 index 00000000000..84a1e5564e6 --- /dev/null +++ b/binutils/sysinfo.c @@ -0,0 +1,1859 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 21 "sysinfo.y" /* yacc.c:339 */ + +#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); + +#line 84 "sysinfo.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_SYSINFO_H_INCLUDED +# define YY_YY_SYSINFO_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 40 "sysinfo.y" /* yacc.c:355 */ + + int i; + char *s; + +#line 145 "sysinfo.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_SYSINFO_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 160 "sysinfo.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 55 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 263 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 54, 54, 54, 92, 93, 98, 97, 168, 169, + 170, 171, 175, 174, 223, 222, 250, 249, 357, 358, + 362, 367, 373, 374, 377, 378, 380, 382 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 40, 41, 260, 261, 262, + 263 +}; +# endif + +#define YYPACT_NINF -14 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-14))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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" /* yacc.c:1661 */ + { + 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; + } + } +#line 1261 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 3: +#line 76 "sysinfo.y" /* yacc.c:1661 */ + { + switch (writecode) { + case 'i': + case 'p': + case 'g': + case 'c': + printf("#endif\n"); + break; + case 'd': + break; + } +} +#line 1278 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 6: +#line 98 "sysinfo.y" /* yacc.c:1661 */ + { + it = (yyvsp[-1].s); code = (yyvsp[0].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[-1].s), it); + printf("extern void sysroff_swap_%s_out (FILE *, struct IT_%s *);\n", + (yyvsp[-1].s), it); + printf("extern void sysroff_print_%s_out (struct IT_%s *);\n", + (yyvsp[-1].s), it); + printf("struct IT_%s { \n", it); + break; + case 'i': + printf("void sysroff_swap_%s_in (struct IT_%s * ptr)\n",(yyvsp[-1].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[-1].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[-1].s), it); + printf("{\n"); + printf("\tint idx = 0;\n"); + break; + case 'c': + printf("void sysroff_print_%s_out (struct IT_%s *ptr)\n",(yyvsp[-1].s),it); + printf("{\n"); + printf("itheader(\"%s\", IT_%s_CODE);\n",(yyvsp[-1].s),(yyvsp[-1].s)); + break; + + case 't': + break; + } + + } +#line 1332 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 7: +#line 149 "sysinfo.y" /* yacc.c:1661 */ + { + switch (writecode) { + case 'd': + printf("};\n"); + break; + case 'g': + printf("\tchecksum(ffile,raw, idx, IT_%s_CODE);\n", it); + /* Fall through. */ + case 'i': + case 'o': + case 'c': + printf("}\n"); + } +} +#line 1351 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 12: +#line 175 "sysinfo.y" /* yacc.c:1661 */ + { + rdepth++; + switch (writecode) + { + case 'c': + if (rdepth==1) + printf("\tprintf(\"repeat %%d\\n\", %s);\n",(yyvsp[0].s)); + if (rdepth==2) + printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",(yyvsp[0].s)); + /* Fall through. */ + case 'i': + case 'g': + case 'o': + + if (rdepth==1) + { + printf("\t{ int n; for (n = 0; n < %s; n++) {\n", (yyvsp[0].s)); + } + if (rdepth == 2) { + printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", (yyvsp[0].s)); + } + + break; + } + + oldrepeat = repeat; + repeat = (yyvsp[0].s); + } +#line 1384 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 13: +#line 206 "sysinfo.y" /* yacc.c:1661 */ + { + repeat = oldrepeat; + oldrepeat =0; + rdepth--; + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\t}}\n"); + } + } +#line 1402 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 14: +#line 223 "sysinfo.y" /* yacc.c:1661 */ + { + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\tif (%s) {\n", (yyvsp[0].s)); + break; + } + } +#line 1418 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 15: +#line 236 "sysinfo.y" /* yacc.c:1661 */ + { + switch (writecode) + { + case 'i': + case 'g': + case 'o': + case 'c': + printf("\t}\n"); + } + } +#line 1433 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 16: +#line 250 "sysinfo.y" /* yacc.c:1661 */ + {name = (yyvsp[0].s); } +#line 1439 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 17: +#line 252 "sysinfo.y" /* yacc.c:1661 */ + { + char *desc = (yyvsp[-8].s); + char *type = (yyvsp[-6].s); + int size = (yyvsp[-5].i); + char *id = (yyvsp[-3].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; + } + } +#line 1544 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 18: +#line 357 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.s) = (yyvsp[0].s); } +#line 1550 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 19: +#line 358 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.s) = "INT";} +#line 1556 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 20: +#line 363 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.s) = (yyvsp[-1].s); } +#line 1562 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 21: +#line 368 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.i) = (yyvsp[-1].i) * (yyvsp[0].i); } +#line 1568 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 22: +#line 373 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.s) = (yyvsp[-1].s); } +#line 1574 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 23: +#line 374 "sysinfo.y" /* yacc.c:1661 */ + { (yyval.s) = "dummy";} +#line 1580 "sysinfo.c" /* yacc.c:1661 */ + break; + + case 27: +#line 382 "sysinfo.y" /* yacc.c:1661 */ + { + switch (writecode) + { + case 'd': + printf("#define %s %s\n", (yyvsp[-2].s),(yyvsp[-1].s)); + break; + case 'c': + printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],(yyvsp[-1].s),(yyvsp[-2].s)); + } + } +#line 1595 "sysinfo.c" /* yacc.c:1661 */ + break; + + +#line 1599 "sysinfo.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 397 "sysinfo.y" /* yacc.c:1906 */ + +/* 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..1b8033067f7 --- /dev/null +++ b/binutils/sysinfo.h @@ -0,0 +1,85 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_SYSINFO_H_INCLUDED +# define YY_YY_SYSINFO_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 40 "sysinfo.y" /* yacc.c:1915 */ + + int i; + char *s; + +#line 75 "sysinfo.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_SYSINFO_H_INCLUDED */ diff --git a/binutils/syslex.c b/binutils/syslex.c new file mode 100644 index 00000000000..22ed1f00d4a --- /dev/null +++ b/binutils/syslex.c @@ -0,0 +1,1905 @@ + +#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) + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +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-2017 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 + +extern int yylex (void); +#line 543 "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 41 "syslex.l" + +#line 725 "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 42 "syslex.l" +{ return '(';} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 43 "syslex.l" +{ return ')';} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 44 "syslex.l" +{ return '[';} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 45 "syslex.l" +{ return ']';} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 46 "syslex.l" +{ ; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 47 "syslex.l" +{ ; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 48 "syslex.l" +{ ; } + YY_BREAK +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +#line 49 "syslex.l" +{ ; } + YY_BREAK +case 9: +/* rule 9 can match eol */ +YY_RULE_SETUP +#line 50 "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 57 "syslex.l" +{ + yylval.i = strtol(yytext,0,16); + return NUMBER; + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 62 "syslex.l" +{ + yylval.i = atoi(yytext); + return NUMBER; + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 68 "syslex.l" +{ yylval.i =1 ;return UNIT;} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 69 "syslex.l" +{ yylval.i = 1; return UNIT;} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 70 "syslex.l" +{ yylval.i= 8; return UNIT;} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 71 "syslex.l" +{ yylval.i = 8; return UNIT;} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 73 "syslex.l" +{ yylval.s = "INT"; return TYPE;} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 74 "syslex.l" +{ yylval.s = "BARRAY"; return TYPE;} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 75 "syslex.l" +{ yylval.s = "CHARS"; return TYPE;} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 76 "syslex.l" +{ yylval.i = 0; return NUMBER;} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 77 "syslex.l" +{ yylval.i = -4; return NUMBER;} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 78 "syslex.l" +{ yylval.i = -2; return NUMBER; } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 79 "syslex.l" +{ yylval.i = -1; return NUMBER; } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 80 "syslex.l" +{ return COND;} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 81 "syslex.l" +{ return REPEAT;} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 82 "syslex.l" +ECHO; + YY_BREAK +#line 946 "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 82 "syslex.l" diff --git a/etc/config.log b/etc/config.log new file mode 100644 index 00000000000..961533c62c3 --- /dev/null +++ b/etc/config.log @@ -0,0 +1,151 @@ +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 --srcdir=.././etc --cache-file=./config.cache --with-gnu-as --with-gnu-ld --program-transform-name=s&^&i386-pc-linux-gnu-& --disable-option-checking --build=x86_64-apple-darwin15.6.0 --host=x86_64-apple-darwin15.6.0 --target=i386-pc-linux-gnu + +## --------- ## +## Platform. ## +## --------- ## + +hostname = dhcp-guest-231.act-europe.fr +uname -m = x86_64 +uname -r = 15.6.0 +uname -s = Darwin +uname -v = Darwin Kernel Version 15.6.0: Thu Sep 1 15:01:16 PDT 2016; root:xnu-3248.60.11~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 15.6.0: Thu Sep 1 15:01:16 PDT 2016; root:xnu-3248.60.11~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: 257 tasks, 1216 threads, 8 processors +Load average: 2.03, Mach factor: 5.96 +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /Users/gingold/Repositories/fsf/release-binutils/tools/bin +PATH: /Users/gingold/local/bin/ +PATH: /Users/gingold/work/gcc-6/gcc-inst/bin/ +PATH: /usr/local/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/sbin +PATH: /sbin +PATH: /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 dhcp-guest-231.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-darwin15.6.0 +ac_cv_env_host_alias_set=set +ac_cv_env_host_alias_value=x86_64-apple-darwin15.6.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-darwin15.6.0' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host_alias='x86_64-apple-darwin15.6.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/ChangeLog b/gas/ChangeLog index 7e2948dd003..8a586ad7a0b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2017-03-02 Tristan Gingold + + * configure: Regenerate. + 2017-02-28 Alan Modra * config/tc-nios2.h (TC_FORCE_RELOCATION_SUB_LOCAL): Define. diff --git a/gas/bfin-lex.c b/gas/bfin-lex.c new file mode 100644 index 00000000000..cd680d9b3c2 --- /dev/null +++ b/gas/bfin-lex.c @@ -0,0 +1,3553 @@ + +#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 */ + +#define yywrap(n) 1 +#define YY_SKIP_YYWRAP + +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 "./config/bfin-lex.l" +/* bfin-lex.l ADI Blackfin lexer + Copyright (C) 2005-2017 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 23 "./config/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 843 "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 45 "./config/bfin-lex.l" + +#line 1029 "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 46 "./config/bfin-lex.l" +_REG.regno = REG_sftreset; return REG; + YY_BREAK +case 2: +YY_RULE_SETUP +#line 47 "./config/bfin-lex.l" +_REG.regno = REG_omode; return REG; + YY_BREAK +case 3: +YY_RULE_SETUP +#line 48 "./config/bfin-lex.l" +_REG.regno = REG_idle_req; return REG; + YY_BREAK +case 4: +YY_RULE_SETUP +#line 49 "./config/bfin-lex.l" +_REG.regno = REG_hwerrcause; return REG; + YY_BREAK +case 5: +YY_RULE_SETUP +#line 50 "./config/bfin-lex.l" +_REG.regno = REG_excause; return REG; + YY_BREAK +case 6: +YY_RULE_SETUP +#line 51 "./config/bfin-lex.l" +_REG.regno = REG_emucause; return REG; + YY_BREAK +case 7: +YY_RULE_SETUP +#line 52 "./config/bfin-lex.l" +return Z; + YY_BREAK +case 8: +YY_RULE_SETUP +#line 53 "./config/bfin-lex.l" +return X; + YY_BREAK +case 9: +YY_RULE_SETUP +#line 54 "./config/bfin-lex.l" +yylval.value = M_W32; return MMOD; + YY_BREAK +case 10: +YY_RULE_SETUP +#line 55 "./config/bfin-lex.l" +return W; + YY_BREAK +case 11: +YY_RULE_SETUP +#line 56 "./config/bfin-lex.l" +return VIT_MAX; + YY_BREAK +case 12: +YY_RULE_SETUP +#line 57 "./config/bfin-lex.l" +return V; /* Special: V is a statflag and a modifier. */ + YY_BREAK +case 13: +YY_RULE_SETUP +#line 58 "./config/bfin-lex.l" +_REG.regno = REG_USP; return REG; + YY_BREAK +case 14: +YY_RULE_SETUP +#line 59 "./config/bfin-lex.l" +return TL; + YY_BREAK +case 15: +YY_RULE_SETUP +#line 60 "./config/bfin-lex.l" +return TH; + YY_BREAK +case 16: +YY_RULE_SETUP +#line 61 "./config/bfin-lex.l" +yylval.value = M_TFU; return MMOD; + YY_BREAK +case 17: +YY_RULE_SETUP +#line 62 "./config/bfin-lex.l" +return TESTSET; + YY_BREAK +case 18: +YY_RULE_SETUP +#line 63 "./config/bfin-lex.l" +yylval.value = M_T; return MMOD; + YY_BREAK +case 19: +YY_RULE_SETUP +#line 64 "./config/bfin-lex.l" +return S; + YY_BREAK +case 20: +YY_RULE_SETUP +#line 65 "./config/bfin-lex.l" +_REG.regno = REG_SYSCFG; return REG; + YY_BREAK +case 21: +YY_RULE_SETUP +#line 66 "./config/bfin-lex.l" +return STI; + YY_BREAK +case 22: +YY_RULE_SETUP +#line 67 "./config/bfin-lex.l" +return SSYNC; + YY_BREAK +case 23: +YY_RULE_SETUP +#line 68 "./config/bfin-lex.l" +_REG.regno = REG_SP; _REG.flags = F_REG_LOW; return HALF_REG; + YY_BREAK +case 24: +YY_RULE_SETUP +#line 69 "./config/bfin-lex.l" +_REG.regno = REG_SP; _REG.flags = F_REG_HIGH; return HALF_REG; + YY_BREAK +case 25: +YY_RULE_SETUP +#line 70 "./config/bfin-lex.l" +_REG.regno = REG_SP; return REG; + YY_BREAK +case 26: +YY_RULE_SETUP +#line 71 "./config/bfin-lex.l" +return SIGNBITS; + YY_BREAK +case 27: +YY_RULE_SETUP +#line 72 "./config/bfin-lex.l" +return SIGN; + YY_BREAK +case 28: +YY_RULE_SETUP +#line 73 "./config/bfin-lex.l" +_REG.regno = REG_SEQSTAT; return REG; + YY_BREAK +case 29: +YY_RULE_SETUP +#line 74 "./config/bfin-lex.l" +return SEARCH; + YY_BREAK +case 30: +YY_RULE_SETUP +#line 75 "./config/bfin-lex.l" +return SHIFT; + YY_BREAK +case 31: +YY_RULE_SETUP +#line 76 "./config/bfin-lex.l" +return SCO; + YY_BREAK +case 32: +YY_RULE_SETUP +#line 78 "./config/bfin-lex.l" +return SAA; + YY_BREAK +case 33: +YY_RULE_SETUP +#line 79 "./config/bfin-lex.l" +yylval.value = M_S2RND; return MMOD; + YY_BREAK +case 34: +YY_RULE_SETUP +#line 80 "./config/bfin-lex.l" +return RTX; + YY_BREAK +case 35: +YY_RULE_SETUP +#line 81 "./config/bfin-lex.l" +return RTS; + YY_BREAK +case 36: +YY_RULE_SETUP +#line 82 "./config/bfin-lex.l" +return RTN; + YY_BREAK +case 37: +YY_RULE_SETUP +#line 83 "./config/bfin-lex.l" +return RTI; + YY_BREAK +case 38: +YY_RULE_SETUP +#line 84 "./config/bfin-lex.l" +return RTE; + YY_BREAK +case 39: +YY_RULE_SETUP +#line 85 "./config/bfin-lex.l" +return ROT; + YY_BREAK +case 40: +YY_RULE_SETUP +#line 86 "./config/bfin-lex.l" +return RND20; + YY_BREAK +case 41: +YY_RULE_SETUP +#line 87 "./config/bfin-lex.l" +return RND12; + YY_BREAK +case 42: +YY_RULE_SETUP +#line 88 "./config/bfin-lex.l" +return RNDL; + YY_BREAK +case 43: +YY_RULE_SETUP +#line 89 "./config/bfin-lex.l" +return RNDH; + YY_BREAK +case 44: +YY_RULE_SETUP +#line 90 "./config/bfin-lex.l" +return RND; + YY_BREAK +case 45: +YY_RULE_SETUP +#line 92 "./config/bfin-lex.l" +return parse_halfreg(&yylval.reg, T_REG_R, yytext); + YY_BREAK +case 46: +YY_RULE_SETUP +#line 94 "./config/bfin-lex.l" +_REG.regno = REG_RETS; return REG; + YY_BREAK +case 47: +YY_RULE_SETUP +#line 95 "./config/bfin-lex.l" +_REG.regno = REG_RETI; return REG; + YY_BREAK +case 48: +YY_RULE_SETUP +#line 96 "./config/bfin-lex.l" +_REG.regno = REG_RETX; return REG; + YY_BREAK +case 49: +YY_RULE_SETUP +#line 97 "./config/bfin-lex.l" +_REG.regno = REG_RETN; return REG; + YY_BREAK +case 50: +YY_RULE_SETUP +#line 98 "./config/bfin-lex.l" +_REG.regno = REG_RETE; return REG; + YY_BREAK +case 51: +YY_RULE_SETUP +#line 99 "./config/bfin-lex.l" +_REG.regno = REG_EMUDAT; return REG; + YY_BREAK +case 52: +YY_RULE_SETUP +#line 100 "./config/bfin-lex.l" +return RAISE; + YY_BREAK +case 53: +YY_RULE_SETUP +#line 102 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_R, yytext); + YY_BREAK +case 54: +YY_RULE_SETUP +#line 104 "./config/bfin-lex.l" +return R; + YY_BREAK +case 55: +YY_RULE_SETUP +#line 105 "./config/bfin-lex.l" +return PRNT; + YY_BREAK +case 56: +YY_RULE_SETUP +#line 106 "./config/bfin-lex.l" +return PC; + YY_BREAK +case 57: +YY_RULE_SETUP +#line 107 "./config/bfin-lex.l" +return PACK; + YY_BREAK +case 58: +YY_RULE_SETUP +#line 109 "./config/bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_P, yytext); + YY_BREAK +case 59: +YY_RULE_SETUP +#line 110 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_P, yytext); + YY_BREAK +case 60: +YY_RULE_SETUP +#line 112 "./config/bfin-lex.l" +return OUTC; + YY_BREAK +case 61: +YY_RULE_SETUP +#line 113 "./config/bfin-lex.l" +return ONES; + YY_BREAK +case 62: +YY_RULE_SETUP +#line 115 "./config/bfin-lex.l" +return NOT; + YY_BREAK +case 63: +YY_RULE_SETUP +#line 116 "./config/bfin-lex.l" +return NOP; + YY_BREAK +case 64: +YY_RULE_SETUP +#line 117 "./config/bfin-lex.l" +return MNOP; + YY_BREAK +case 65: +YY_RULE_SETUP +#line 118 "./config/bfin-lex.l" +return NS; + YY_BREAK +case 66: +YY_RULE_SETUP +#line 121 "./config/bfin-lex.l" +return MIN; + YY_BREAK +case 67: +YY_RULE_SETUP +#line 122 "./config/bfin-lex.l" +return MAX; + YY_BREAK +case 68: +YY_RULE_SETUP +#line 124 "./config/bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_M, yytext); + YY_BREAK +case 69: +YY_RULE_SETUP +#line 125 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_M, yytext); + YY_BREAK +case 70: +YY_RULE_SETUP +#line 127 "./config/bfin-lex.l" +return M; + YY_BREAK +case 71: +YY_RULE_SETUP +#line 128 "./config/bfin-lex.l" +return LT; + YY_BREAK +case 72: +YY_RULE_SETUP +#line 129 "./config/bfin-lex.l" +return LSHIFT; + YY_BREAK +case 73: +YY_RULE_SETUP +#line 130 "./config/bfin-lex.l" +return LSETUP; + YY_BREAK +case 74: +YY_RULE_SETUP +#line 131 "./config/bfin-lex.l" +return LOOP; + YY_BREAK +case 75: +YY_RULE_SETUP +#line 132 "./config/bfin-lex.l" +return LOOP_BEGIN; + YY_BREAK +case 76: +YY_RULE_SETUP +#line 133 "./config/bfin-lex.l" +return LOOP_END; + YY_BREAK +case 77: +YY_RULE_SETUP +#line 135 "./config/bfin-lex.l" +return LE; + YY_BREAK +case 78: +YY_RULE_SETUP +#line 136 "./config/bfin-lex.l" +_REG.regno = REG_LC0; return REG; + YY_BREAK +case 79: +YY_RULE_SETUP +#line 137 "./config/bfin-lex.l" +_REG.regno = REG_LT0; return REG; + YY_BREAK +case 80: +YY_RULE_SETUP +#line 138 "./config/bfin-lex.l" +_REG.regno = REG_LB0; return REG; + YY_BREAK +case 81: +YY_RULE_SETUP +#line 139 "./config/bfin-lex.l" +_REG.regno = REG_LC1; return REG; + YY_BREAK +case 82: +YY_RULE_SETUP +#line 140 "./config/bfin-lex.l" +_REG.regno = REG_LT1; return REG; + YY_BREAK +case 83: +YY_RULE_SETUP +#line 141 "./config/bfin-lex.l" +_REG.regno = REG_LB1; return REG; + YY_BREAK +case 84: +YY_RULE_SETUP +#line 143 "./config/bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_L, yytext); + YY_BREAK +case 85: +YY_RULE_SETUP +#line 144 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_L, yytext); + YY_BREAK +case 86: +YY_RULE_SETUP +#line 145 "./config/bfin-lex.l" +return LO; + YY_BREAK +case 87: +YY_RULE_SETUP +#line 146 "./config/bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_S;} + YY_BREAK +case 88: +YY_RULE_SETUP +#line 147 "./config/bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_L;} + YY_BREAK +case 89: +YY_RULE_SETUP +#line 148 "./config/bfin-lex.l" +{ BEGIN 0; return JUMP;} + YY_BREAK +case 90: +YY_RULE_SETUP +#line 149 "./config/bfin-lex.l" +{ BEGIN 0; return JUMP_DOT_L; } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 150 "./config/bfin-lex.l" +yylval.value = M_IU; return MMOD; + YY_BREAK +case 92: +YY_RULE_SETUP +#line 151 "./config/bfin-lex.l" +yylval.value = M_ISS2; return MMOD; + YY_BREAK +case 93: +YY_RULE_SETUP +#line 152 "./config/bfin-lex.l" +yylval.value = M_IS; return MMOD; + YY_BREAK +case 94: +YY_RULE_SETUP +#line 153 "./config/bfin-lex.l" +yylval.value = M_IH; return MMOD; + YY_BREAK +case 95: +YY_RULE_SETUP +#line 154 "./config/bfin-lex.l" +return IF; + YY_BREAK +case 96: +YY_RULE_SETUP +#line 155 "./config/bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_I, yytext); + YY_BREAK +case 97: +YY_RULE_SETUP +#line 156 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_I, yytext); + YY_BREAK +case 98: +YY_RULE_SETUP +#line 157 "./config/bfin-lex.l" +return HLT; + YY_BREAK +case 99: +YY_RULE_SETUP +#line 158 "./config/bfin-lex.l" +return HI; + YY_BREAK +case 100: +YY_RULE_SETUP +#line 159 "./config/bfin-lex.l" +return GT; + YY_BREAK +case 101: +YY_RULE_SETUP +#line 160 "./config/bfin-lex.l" +return GE; + YY_BREAK +case 102: +YY_RULE_SETUP +#line 161 "./config/bfin-lex.l" +yylval.value = M_FU; return MMOD; + YY_BREAK +case 103: +YY_RULE_SETUP +#line 162 "./config/bfin-lex.l" +_REG.regno = REG_FP; return REG; + YY_BREAK +case 104: +YY_RULE_SETUP +#line 163 "./config/bfin-lex.l" +_REG.regno = REG_FP; _REG.flags = F_REG_LOW; return HALF_REG; + YY_BREAK +case 105: +YY_RULE_SETUP +#line 164 "./config/bfin-lex.l" +_REG.regno = REG_FP; _REG.flags = F_REG_HIGH; return HALF_REG; + YY_BREAK +case 106: +YY_RULE_SETUP +#line 166 "./config/bfin-lex.l" +return EXTRACT; + YY_BREAK +case 107: +YY_RULE_SETUP +#line 167 "./config/bfin-lex.l" +return EXPADJ; + YY_BREAK +case 108: +YY_RULE_SETUP +#line 168 "./config/bfin-lex.l" +return EXCPT; + YY_BREAK +case 109: +YY_RULE_SETUP +#line 169 "./config/bfin-lex.l" +return EMUEXCPT; + YY_BREAK +case 110: +YY_RULE_SETUP +#line 170 "./config/bfin-lex.l" +return DIVS; + YY_BREAK +case 111: +YY_RULE_SETUP +#line 171 "./config/bfin-lex.l" +return DIVQ; + YY_BREAK +case 112: +YY_RULE_SETUP +#line 172 "./config/bfin-lex.l" +return DISALGNEXCPT; + YY_BREAK +case 113: +YY_RULE_SETUP +#line 173 "./config/bfin-lex.l" +return DEPOSIT; + YY_BREAK +case 114: +YY_RULE_SETUP +#line 174 "./config/bfin-lex.l" +return DBGHALT; + YY_BREAK +case 115: +YY_RULE_SETUP +#line 175 "./config/bfin-lex.l" +return DBGCMPLX; + YY_BREAK +case 116: +YY_RULE_SETUP +#line 176 "./config/bfin-lex.l" +return DBGAL; + YY_BREAK +case 117: +YY_RULE_SETUP +#line 177 "./config/bfin-lex.l" +return DBGAH; + YY_BREAK +case 118: +YY_RULE_SETUP +#line 178 "./config/bfin-lex.l" +return DBGA; + YY_BREAK +case 119: +YY_RULE_SETUP +#line 179 "./config/bfin-lex.l" +return DBG; + YY_BREAK +case 120: +YY_RULE_SETUP +#line 180 "./config/bfin-lex.l" +{ _REG.regno = REG_CYCLES2; return REG; } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 181 "./config/bfin-lex.l" +{ _REG.regno = REG_CYCLES; return REG; } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 182 "./config/bfin-lex.l" +return CSYNC; + YY_BREAK +case 123: +YY_RULE_SETUP +#line 183 "./config/bfin-lex.l" +return CO; + YY_BREAK +case 124: +YY_RULE_SETUP +#line 184 "./config/bfin-lex.l" +return CLI; + YY_BREAK +case 125: +YY_RULE_SETUP +#line 186 "./config/bfin-lex.l" +_REG.regno = REG_CC; return CCREG; + YY_BREAK +case 126: +YY_RULE_SETUP +#line 187 "./config/bfin-lex.l" +{ BEGIN 0; return CALL;} + YY_BREAK +case 127: +YY_RULE_SETUP +#line 188 "./config/bfin-lex.l" +{ BEGIN 0; return CALL;} + YY_BREAK +case 128: +YY_RULE_SETUP +#line 189 "./config/bfin-lex.l" +return BYTEUNPACK; + YY_BREAK +case 129: +YY_RULE_SETUP +#line 190 "./config/bfin-lex.l" +return BYTEPACK; + YY_BREAK +case 130: +YY_RULE_SETUP +#line 191 "./config/bfin-lex.l" +return BYTEOP16M; + YY_BREAK +case 131: +YY_RULE_SETUP +#line 192 "./config/bfin-lex.l" +return BYTEOP16P; + YY_BREAK +case 132: +YY_RULE_SETUP +#line 193 "./config/bfin-lex.l" +return BYTEOP3P; + YY_BREAK +case 133: +YY_RULE_SETUP +#line 194 "./config/bfin-lex.l" +return BYTEOP2P; + YY_BREAK +case 134: +YY_RULE_SETUP +#line 195 "./config/bfin-lex.l" +return BYTEOP1P; + YY_BREAK +case 135: +YY_RULE_SETUP +#line 196 "./config/bfin-lex.l" +return BY; + YY_BREAK +case 136: +YY_RULE_SETUP +#line 197 "./config/bfin-lex.l" +return BXORSHIFT; + YY_BREAK +case 137: +YY_RULE_SETUP +#line 198 "./config/bfin-lex.l" +return BXOR; + YY_BREAK +case 138: +YY_RULE_SETUP +#line 200 "./config/bfin-lex.l" +return BREV; + YY_BREAK +case 139: +YY_RULE_SETUP +#line 201 "./config/bfin-lex.l" +return BP; + YY_BREAK +case 140: +YY_RULE_SETUP +#line 202 "./config/bfin-lex.l" +return BITTST; + YY_BREAK +case 141: +YY_RULE_SETUP +#line 203 "./config/bfin-lex.l" +return BITTGL; + YY_BREAK +case 142: +YY_RULE_SETUP +#line 204 "./config/bfin-lex.l" +return BITSET; + YY_BREAK +case 143: +YY_RULE_SETUP +#line 205 "./config/bfin-lex.l" +return BITMUX; + YY_BREAK +case 144: +YY_RULE_SETUP +#line 206 "./config/bfin-lex.l" +return BITCLR; + YY_BREAK +case 145: +YY_RULE_SETUP +#line 207 "./config/bfin-lex.l" +return parse_halfreg (&yylval.reg, T_REG_B, yytext); + YY_BREAK +case 146: +YY_RULE_SETUP +#line 208 "./config/bfin-lex.l" +return parse_reg (&yylval.reg, T_REG_B, yytext); + YY_BREAK +case 147: +YY_RULE_SETUP +#line 209 "./config/bfin-lex.l" +return B; + YY_BREAK +case 148: +YY_RULE_SETUP +#line 210 "./config/bfin-lex.l" +_REG.regno = S_AZ; return STATUS_REG; + YY_BREAK +case 149: +YY_RULE_SETUP +#line 211 "./config/bfin-lex.l" +_REG.regno = S_AN; return STATUS_REG; + YY_BREAK +case 150: +YY_RULE_SETUP +#line 212 "./config/bfin-lex.l" +_REG.regno = S_AC0_COPY; return STATUS_REG; + YY_BREAK +case 151: +YY_RULE_SETUP +#line 213 "./config/bfin-lex.l" +_REG.regno = S_V_COPY; return STATUS_REG; + YY_BREAK +case 152: +YY_RULE_SETUP +#line 214 "./config/bfin-lex.l" +_REG.regno = S_AQ; return STATUS_REG; + YY_BREAK +case 153: +YY_RULE_SETUP +#line 215 "./config/bfin-lex.l" +_REG.regno = S_AC0; return STATUS_REG; + YY_BREAK +case 154: +YY_RULE_SETUP +#line 216 "./config/bfin-lex.l" +_REG.regno = S_AC1; return STATUS_REG; + YY_BREAK +case 155: +YY_RULE_SETUP +#line 217 "./config/bfin-lex.l" +_REG.regno = S_AV0; return STATUS_REG; + YY_BREAK +case 156: +YY_RULE_SETUP +#line 218 "./config/bfin-lex.l" +_REG.regno = S_AV0S; return STATUS_REG; + YY_BREAK +case 157: +YY_RULE_SETUP +#line 219 "./config/bfin-lex.l" +_REG.regno = S_AV1; return STATUS_REG; + YY_BREAK +case 158: +YY_RULE_SETUP +#line 220 "./config/bfin-lex.l" +_REG.regno = S_AV1S; return STATUS_REG; + YY_BREAK +case 159: +YY_RULE_SETUP +#line 221 "./config/bfin-lex.l" +_REG.regno = S_VS; return STATUS_REG; + YY_BREAK +case 160: +YY_RULE_SETUP +#line 222 "./config/bfin-lex.l" +_REG.regno = S_RND_MOD; return STATUS_REG; + YY_BREAK +case 161: +YY_RULE_SETUP +#line 225 "./config/bfin-lex.l" +_REG.regno = REG_ASTAT; return REG; + YY_BREAK +case 162: +YY_RULE_SETUP +#line 226 "./config/bfin-lex.l" +return ASHIFT; + YY_BREAK +case 163: +YY_RULE_SETUP +#line 227 "./config/bfin-lex.l" +return ASL; + YY_BREAK +case 164: +YY_RULE_SETUP +#line 228 "./config/bfin-lex.l" +return ASR; + YY_BREAK +case 165: +YY_RULE_SETUP +#line 229 "./config/bfin-lex.l" +return ALIGN8; + YY_BREAK +case 166: +YY_RULE_SETUP +#line 230 "./config/bfin-lex.l" +return ALIGN16; + YY_BREAK +case 167: +YY_RULE_SETUP +#line 231 "./config/bfin-lex.l" +return ALIGN24; + YY_BREAK +case 168: +YY_RULE_SETUP +#line 232 "./config/bfin-lex.l" +return A_ONE_DOT_L; + YY_BREAK +case 169: +YY_RULE_SETUP +#line 233 "./config/bfin-lex.l" +return A_ZERO_DOT_L; + YY_BREAK +case 170: +YY_RULE_SETUP +#line 234 "./config/bfin-lex.l" +return A_ONE_DOT_H; + YY_BREAK +case 171: +YY_RULE_SETUP +#line 235 "./config/bfin-lex.l" +return A_ZERO_DOT_H; + YY_BREAK +case 172: +YY_RULE_SETUP +#line 236 "./config/bfin-lex.l" +return ABS; + YY_BREAK +case 173: +YY_RULE_SETUP +#line 237 "./config/bfin-lex.l" +return ABORT; + YY_BREAK +case 174: +YY_RULE_SETUP +#line 238 "./config/bfin-lex.l" +_REG.regno = REG_A1x; return REG; + YY_BREAK +case 175: +YY_RULE_SETUP +#line 239 "./config/bfin-lex.l" +_REG.regno = REG_A1w; return REG; + YY_BREAK +case 176: +YY_RULE_SETUP +#line 240 "./config/bfin-lex.l" +_REG.regno = REG_A1; return REG_A_DOUBLE_ONE; + YY_BREAK +case 177: +YY_RULE_SETUP +#line 241 "./config/bfin-lex.l" +_REG.regno = REG_A0x; return REG; + YY_BREAK +case 178: +YY_RULE_SETUP +#line 242 "./config/bfin-lex.l" +_REG.regno = REG_A0w; return REG; + YY_BREAK +case 179: +YY_RULE_SETUP +#line 243 "./config/bfin-lex.l" +_REG.regno = REG_A0; return REG_A_DOUBLE_ZERO; + YY_BREAK +case 180: +YY_RULE_SETUP +#line 244 "./config/bfin-lex.l" +return GOT; + YY_BREAK +case 181: +YY_RULE_SETUP +#line 245 "./config/bfin-lex.l" +return GOT17M4; + YY_BREAK +case 182: +YY_RULE_SETUP +#line 246 "./config/bfin-lex.l" +return FUNCDESC_GOT17M4; + YY_BREAK +case 183: +YY_RULE_SETUP +#line 247 "./config/bfin-lex.l" +return PLTPC; + YY_BREAK +case 184: +YY_RULE_SETUP +#line 250 "./config/bfin-lex.l" +return TILDA; + YY_BREAK +case 185: +YY_RULE_SETUP +#line 251 "./config/bfin-lex.l" +return _BAR_ASSIGN; + YY_BREAK +case 186: +YY_RULE_SETUP +#line 252 "./config/bfin-lex.l" +return BAR; + YY_BREAK +case 187: +YY_RULE_SETUP +#line 253 "./config/bfin-lex.l" +return _CARET_ASSIGN; + YY_BREAK +case 188: +YY_RULE_SETUP +#line 254 "./config/bfin-lex.l" +return CARET; + YY_BREAK +case 189: +YY_RULE_SETUP +#line 255 "./config/bfin-lex.l" +return RBRACK; + YY_BREAK +case 190: +YY_RULE_SETUP +#line 256 "./config/bfin-lex.l" +return LBRACK; + YY_BREAK +case 191: +YY_RULE_SETUP +#line 257 "./config/bfin-lex.l" +return _GREATER_GREATER_GREATER_THAN_ASSIGN; + YY_BREAK +case 192: +YY_RULE_SETUP +#line 258 "./config/bfin-lex.l" +return _GREATER_GREATER_ASSIGN; + YY_BREAK +case 193: +YY_RULE_SETUP +#line 259 "./config/bfin-lex.l" +return _GREATER_GREATER_GREATER; + YY_BREAK +case 194: +YY_RULE_SETUP +#line 260 "./config/bfin-lex.l" +return GREATER_GREATER; + YY_BREAK +case 195: +YY_RULE_SETUP +#line 261 "./config/bfin-lex.l" +return _ASSIGN_ASSIGN; + YY_BREAK +case 196: +YY_RULE_SETUP +#line 262 "./config/bfin-lex.l" +return ASSIGN; + YY_BREAK +case 197: +YY_RULE_SETUP +#line 263 "./config/bfin-lex.l" +return _LESS_THAN_ASSIGN; + YY_BREAK +case 198: +YY_RULE_SETUP +#line 264 "./config/bfin-lex.l" +return _LESS_LESS_ASSIGN; + YY_BREAK +case 199: +YY_RULE_SETUP +#line 265 "./config/bfin-lex.l" +return LESS_LESS; + YY_BREAK +case 200: +YY_RULE_SETUP +#line 266 "./config/bfin-lex.l" +return LESS_THAN; + YY_BREAK +case 201: +YY_RULE_SETUP +#line 267 "./config/bfin-lex.l" +BEGIN(FLAGS); return LPAREN; + YY_BREAK +case 202: +YY_RULE_SETUP +#line 268 "./config/bfin-lex.l" +BEGIN(INITIAL); return RPAREN; + YY_BREAK +case 203: +YY_RULE_SETUP +#line 269 "./config/bfin-lex.l" +return COLON; + YY_BREAK +case 204: +YY_RULE_SETUP +#line 270 "./config/bfin-lex.l" +return SLASH; + YY_BREAK +case 205: +YY_RULE_SETUP +#line 271 "./config/bfin-lex.l" +return _MINUS_ASSIGN; + YY_BREAK +case 206: +YY_RULE_SETUP +#line 272 "./config/bfin-lex.l" +return _PLUS_BAR_PLUS; + YY_BREAK +case 207: +YY_RULE_SETUP +#line 273 "./config/bfin-lex.l" +return _MINUS_BAR_PLUS; + YY_BREAK +case 208: +YY_RULE_SETUP +#line 274 "./config/bfin-lex.l" +return _PLUS_BAR_MINUS; + YY_BREAK +case 209: +YY_RULE_SETUP +#line 275 "./config/bfin-lex.l" +return _MINUS_BAR_MINUS; + YY_BREAK +case 210: +YY_RULE_SETUP +#line 276 "./config/bfin-lex.l" +return _MINUS_MINUS; + YY_BREAK +case 211: +YY_RULE_SETUP +#line 277 "./config/bfin-lex.l" +return MINUS; + YY_BREAK +case 212: +YY_RULE_SETUP +#line 278 "./config/bfin-lex.l" +return COMMA; + YY_BREAK +case 213: +YY_RULE_SETUP +#line 279 "./config/bfin-lex.l" +return _PLUS_ASSIGN; + YY_BREAK +case 214: +YY_RULE_SETUP +#line 280 "./config/bfin-lex.l" +return _PLUS_PLUS; + YY_BREAK +case 215: +YY_RULE_SETUP +#line 281 "./config/bfin-lex.l" +return PLUS; + YY_BREAK +case 216: +YY_RULE_SETUP +#line 282 "./config/bfin-lex.l" +return _STAR_ASSIGN; + YY_BREAK +case 217: +YY_RULE_SETUP +#line 283 "./config/bfin-lex.l" +return STAR; + YY_BREAK +case 218: +YY_RULE_SETUP +#line 284 "./config/bfin-lex.l" +return _AMPERSAND_ASSIGN; + YY_BREAK +case 219: +YY_RULE_SETUP +#line 285 "./config/bfin-lex.l" +return AMPERSAND; + YY_BREAK +case 220: +YY_RULE_SETUP +#line 286 "./config/bfin-lex.l" +return PERCENT; + YY_BREAK +case 221: +YY_RULE_SETUP +#line 287 "./config/bfin-lex.l" +return BANG; + YY_BREAK +case 222: +YY_RULE_SETUP +#line 288 "./config/bfin-lex.l" +return SEMICOLON; + YY_BREAK +case 223: +YY_RULE_SETUP +#line 289 "./config/bfin-lex.l" +return _ASSIGN_BANG; + YY_BREAK +case 224: +YY_RULE_SETUP +#line 290 "./config/bfin-lex.l" +return DOUBLE_BAR; + YY_BREAK +case 225: +YY_RULE_SETUP +#line 291 "./config/bfin-lex.l" +return AT; + YY_BREAK +case 226: +YY_RULE_SETUP +#line 292 "./config/bfin-lex.l" +return PREFETCH; + YY_BREAK +case 227: +YY_RULE_SETUP +#line 293 "./config/bfin-lex.l" +return UNLINK; + YY_BREAK +case 228: +YY_RULE_SETUP +#line 294 "./config/bfin-lex.l" +return LINK; + YY_BREAK +case 229: +YY_RULE_SETUP +#line 295 "./config/bfin-lex.l" +return IDLE; + YY_BREAK +case 230: +YY_RULE_SETUP +#line 296 "./config/bfin-lex.l" +return IFLUSH; + YY_BREAK +case 231: +YY_RULE_SETUP +#line 297 "./config/bfin-lex.l" +return FLUSHINV; + YY_BREAK +case 232: +YY_RULE_SETUP +#line 298 "./config/bfin-lex.l" +return FLUSH; + YY_BREAK +case 233: +YY_RULE_SETUP +#line 299 "./config/bfin-lex.l" +{ + yylval.value = parse_int (&yytext); + return NUMBER; + } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 303 "./config/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 308 "./config/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 337 "./config/bfin-lex.l" +; + YY_BREAK +case 237: +YY_RULE_SETUP +#line 338 "./config/bfin-lex.l" +; + YY_BREAK +case 238: +YY_RULE_SETUP +#line 339 "./config/bfin-lex.l" +return yytext[0]; + YY_BREAK +case 239: +YY_RULE_SETUP +#line 340 "./config/bfin-lex.l" +ECHO; + YY_BREAK +#line 2343 "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 340 "./config/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 formatted 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; +} + diff --git a/gas/bfin-parse.c b/gas/bfin-parse.c new file mode 100644 index 00000000000..921ab84781b --- /dev/null +++ b/gas/bfin-parse.c @@ -0,0 +1,7972 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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 "3.0" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 20 "./config/bfin-parse.y" /* yacc.c:339 */ + + +#include "as.h" + +#include "bfin-aux.h" /* Opcode generating auxiliaries. */ +#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 (const char *, ...); + +extern char *yytext; +int yyerror (const char *); + +/* Used to set SRCx fields to all 1s as described in the PRM. */ +static Register reg7 = {REG_R7, 0}; + +void error (const 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 (const 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); +} + + +#line 490 "bfin-parse.c" /* yacc.c:339 */ + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_BFIN_PARSE_H_INCLUDED +# define YY_YY_BFIN_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 444 "./config/bfin-parse.y" /* yacc.c:355 */ + + 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 888 "bfin-parse.c" /* yacc.c:355 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_BFIN_PARSE_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 903 "bfin-parse.c" /* yacc.c:358 */ + +#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; +#else +typedef signed char 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 +# 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 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# 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 + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#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 EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +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_alloc; + YYSTYPE yyvs_alloc; +}; + +/* 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) + +# define YYCOPY_NEEDED 1 + +/* 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_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* 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 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 1021 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 428 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +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 + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 645, 645, 646, 658, 660, 693, 720, 731, 735, + 773, 793, 798, 808, 818, 823, 828, 846, 864, 878, + 891, 907, 929, 947, 972, 994, 999, 1009, 1020, 1031, + 1045, 1060, 1076, 1092, 1103, 1117, 1143, 1161, 1166, 1172, + 1184, 1195, 1206, 1217, 1228, 1239, 1250, 1276, 1290, 1300, + 1345, 1364, 1375, 1386, 1397, 1408, 1419, 1435, 1452, 1468, + 1479, 1490, 1523, 1534, 1547, 1558, 1597, 1607, 1617, 1637, + 1647, 1657, 1668, 1682, 1693, 1706, 1716, 1728, 1743, 1754, + 1760, 1782, 1793, 1804, 1812, 1838, 1868, 1897, 1928, 1942, + 1953, 1967, 2001, 2019, 2044, 2056, 2074, 2085, 2096, 2107, + 2120, 2131, 2142, 2153, 2164, 2175, 2208, 2218, 2231, 2251, + 2262, 2273, 2286, 2299, 2310, 2321, 2332, 2343, 2353, 2364, + 2375, 2387, 2398, 2409, 2423, 2436, 2448, 2460, 2471, 2482, + 2493, 2505, 2517, 2528, 2539, 2550, 2560, 2566, 2572, 2578, + 2584, 2590, 2596, 2602, 2608, 2614, 2620, 2631, 2642, 2653, + 2664, 2675, 2686, 2697, 2703, 2717, 2728, 2739, 2750, 2761, + 2771, 2784, 2792, 2800, 2824, 2835, 2846, 2857, 2868, 2879, + 2891, 2904, 2913, 2924, 2935, 2947, 2958, 2969, 2980, 2994, + 3006, 3032, 3062, 3073, 3098, 3135, 3163, 3188, 3199, 3210, + 3221, 3247, 3266, 3280, 3304, 3316, 3335, 3381, 3418, 3434, + 3453, 3467, 3486, 3502, 3510, 3519, 3530, 3542, 3556, 3564, + 3574, 3586, 3597, 3607, 3618, 3629, 3635, 3640, 3645, 3651, + 3659, 3665, 3671, 3677, 3683, 3689, 3697, 3711, 3715, 3725, + 3729, 3734, 3739, 3744, 3751, 3755, 3762, 3766, 3771, 3776, + 3784, 3788, 3795, 3799, 3807, 3812, 3818, 3827, 3832, 3838, + 3844, 3850, 3859, 3862, 3866, 3873, 3876, 3880, 3887, 3892, + 3898, 3904, 3910, 3915, 3923, 3926, 3933, 3936, 3943, 3947, + 3951, 3955, 3962, 3965, 3972, 3977, 3984, 3991, 4003, 4007, + 4011, 4018, 4021, 4031, 4034, 4043, 4049, 4058, 4062, 4069, + 4073, 4077, 4081, 4088, 4092, 4099, 4107, 4115, 4123, 4131, + 4138, 4145, 4153, 4163, 4168, 4173, 4178, 4186, 4189, 4193, + 4202, 4209, 4216, 4223, 4238, 4244, 4257, 4270, 4288, 4295, + 4302, 4312, 4325, 4329, 4333, 4337, 4344, 4350, 4356, 4362, + 4372, 4381, 4383, 4385, 4389, 4397, 4401, 4408, 4414, 4420, + 4424, 4428, 4432, 4438, 4444, 4448, 4452, 4456, 4460, 4464, + 4468, 4472, 4476, 4480, 4484 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* 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", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +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 + +#define YYPACT_NINF -869 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-869))) + +#define YYTABLE_NINF -214 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +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 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not 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 +}; + + /* 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 +}; + + /* 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 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +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 +}; + + /* 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 on the 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 +}; + + +#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 + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* 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 (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", 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). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (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. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + 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. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + 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 *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + 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_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, 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)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead 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 (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + 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 647 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + insn = (yyvsp[0].instr); + if (insn == (INSTR_T) 0) + return NO_INSN_GENERATED; + else if (insn == (INSTR_T) - 1) + return SEMANTIC_ERROR; + else + return INSN_GENERATED; + } +#line 2703 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 5: +#line 661 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (((yyvsp[-5].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[-3].instr)) && is_group2 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-5].instr), (yyvsp[-3].instr), (yyvsp[-1].instr)); + else if (is_group2 ((yyvsp[-3].instr)) && is_group1 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-5].instr), (yyvsp[-1].instr), (yyvsp[-3].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 2 and slot 3 must be 16-bit instrution group"); + } + else if (((yyvsp[-3].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[-5].instr)) && is_group2 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-3].instr), (yyvsp[-5].instr), (yyvsp[-1].instr)); + else if (is_group2 ((yyvsp[-5].instr)) && is_group1 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-3].instr), (yyvsp[-1].instr), (yyvsp[-5].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 3 must be 16-bit instrution group"); + } + else if (((yyvsp[-1].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[-5].instr)) && is_group2 ((yyvsp[-3].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-1].instr), (yyvsp[-5].instr), (yyvsp[-3].instr)); + else if (is_group2 ((yyvsp[-5].instr)) && is_group1 ((yyvsp[-3].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-1].instr), (yyvsp[-3].instr), (yyvsp[-5].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"); + } +#line 2739 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 6: +#line 694 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (((yyvsp[-3].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-3].instr), (yyvsp[-1].instr), 0); + else if (is_group2 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-3].instr), 0, (yyvsp[-1].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 2 must be the 16-bit instruction group"); + } + else if (((yyvsp[-1].instr)->value & 0xf800) == 0xc000) + { + if (is_group1 ((yyvsp[-3].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-1].instr), (yyvsp[-3].instr), 0); + else if (is_group2 ((yyvsp[-3].instr))) + (yyval.instr) = gen_multi_instr_1 ((yyvsp[-1].instr), 0, (yyvsp[-3].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 must be the 16-bit instruction group"); + } + else if (is_group1 ((yyvsp[-3].instr)) && is_group2 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[-3].instr), (yyvsp[-1].instr)); + else if (is_group2 ((yyvsp[-3].instr)) && is_group1 ((yyvsp[-1].instr))) + (yyval.instr) = gen_multi_instr_1 (0, (yyvsp[-1].instr), (yyvsp[-3].instr)); + else + return yyerror ("Wrong 16 bit instructions groups, slot 1 and slot 2 must be the 16-bit instruction group"); + } +#line 2770 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 7: +#line 721 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.instr) = 0; + yyerror (""); + yyerrok; + } +#line 2780 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 8: +#line 732 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.instr) = DSP32MAC (3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0); + } +#line 2788 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 9: +#line 736 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + int op0, op1; + int w0 = 0, w1 = 0; + int h00, h10, h01, h11; + + if (check_macfunc_option (&(yyvsp[-1].macfunc), &(yyvsp[0].mod)) < 0) + return yyerror ("bad option"); + + if ((yyvsp[-1].macfunc).n == 0) + { + if ((yyvsp[0].mod).MM) + return yyerror ("(m) not allowed with a0 unit"); + op1 = 3; + op0 = (yyvsp[-1].macfunc).op; + w1 = 0; + w0 = (yyvsp[-1].macfunc).w; + h00 = IS_H ((yyvsp[-1].macfunc).s0); + h10 = IS_H ((yyvsp[-1].macfunc).s1); + h01 = h11 = 0; + } + else + { + op1 = (yyvsp[-1].macfunc).op; + op0 = 3; + w1 = (yyvsp[-1].macfunc).w; + w0 = 0; + h00 = h10 = 0; + h01 = IS_H ((yyvsp[-1].macfunc).s0); + h11 = IS_H ((yyvsp[-1].macfunc).s1); + } + (yyval.instr) = DSP32MAC (op1, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, w1, (yyvsp[-1].macfunc).P, h01, h11, h00, h10, + &(yyvsp[-1].macfunc).dst, op0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, w0); + } +#line 2826 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 10: +#line 774 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Register *dst; + + if (check_macfuncs (&(yyvsp[-4].macfunc), &(yyvsp[-3].mod), &(yyvsp[-1].macfunc), &(yyvsp[0].mod)) < 0) + return -1; + notethat ("assign_macfunc (.), assign_macfunc (.)\n"); + + if ((yyvsp[-4].macfunc).w) + dst = &(yyvsp[-4].macfunc).dst; + else + dst = &(yyvsp[-1].macfunc).dst; + + (yyval.instr) = DSP32MAC ((yyvsp[-4].macfunc).op, (yyvsp[-3].mod).MM, (yyvsp[0].mod).mod, (yyvsp[-4].macfunc).w, (yyvsp[-4].macfunc).P, + IS_H ((yyvsp[-4].macfunc).s0), IS_H ((yyvsp[-4].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), + dst, (yyvsp[-1].macfunc).op, &(yyvsp[-4].macfunc).s0, &(yyvsp[-4].macfunc).s1, (yyvsp[-1].macfunc).w); + } +#line 2847 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 11: +#line 794 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: DISALGNEXCPT\n"); + (yyval.instr) = DSP32ALU (18, 0, 0, 0, 0, 0, 0, 0, 3); + } +#line 2856 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 12: +#line 799 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && !IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = ( A0 += A1 )\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, &(yyvsp[-5].reg), ®7, ®7, 0, 0, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 2870 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 13: +#line 809 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs_half = ( A0 += A1 )\n"); + (yyval.instr) = DSP32ALU (11, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } +#line 2884 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 14: +#line 819 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 0); + } +#line 2893 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 15: +#line 824 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: A_ZERO_DOT_H = dregs_hi\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 2); + } +#line 2902 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 16: +#line 830 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-15].reg)) || !IS_DREG ((yyvsp[-13].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[-15].reg), (yyvsp[-13].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16P (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[-15].reg), &(yyvsp[-13].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 0); + } + } +#line 2922 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 17: +#line 848 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-15].reg)) || !IS_DREG ((yyvsp[-13].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[-15].reg), (yyvsp[-13].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEOP16M (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (21, 0, &(yyvsp[-15].reg), &(yyvsp[-13].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 1); + } + } +#line 2942 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 18: +#line 865 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-9].reg)) || !IS_DREG ((yyvsp[-7].reg))) + return yyerror ("Dregs expected"); + else if (REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg))) + return yyerror ("Illegal dest register combination"); + else if (!valid_dreg_pair (&(yyvsp[-3].reg), (yyvsp[-1].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: (dregs , dregs ) = BYTEUNPACK dregs_pair (aligndir)\n"); + (yyval.instr) = DSP32ALU (24, 0, &(yyvsp[-9].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, (yyvsp[0].r0).r0, 0, 1); + } + } +#line 2960 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 19: +#line 879 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg))) + return yyerror ("Illegal dest register combination"); + + if (IS_DREG ((yyvsp[-9].reg)) && IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg))) + { + notethat ("dsp32alu: (dregs , dregs ) = SEARCH dregs (searchmod)\n"); + (yyval.instr) = DSP32ALU (13, 0, &(yyvsp[-9].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, 0, 0, (yyvsp[-1].r0).r0); + } + else + return yyerror ("Register mismatch"); + } +#line 2977 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 20: +#line 893 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-10].reg), (yyvsp[-4].reg))) + return yyerror ("Illegal dest register combination"); + + if (IS_DREG ((yyvsp[-10].reg)) && IS_DREG ((yyvsp[-4].reg))) + { + notethat ("dsp32alu: dregs = A1.l + A1.h, dregs = A0.l + A0.h \n"); + (yyval.instr) = DSP32ALU (12, 0, &(yyvsp[-10].reg), &(yyvsp[-4].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } +#line 2994 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 21: +#line 908 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-11].reg), (yyvsp[-5].reg))) + return yyerror ("Resource conflict in dest reg"); + + if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-5].reg)) && !REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg)) + && IS_A1 ((yyvsp[-3].reg)) && !IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = A1 + A0 , dregs = A1 - A0 (amod1)\n"); + (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), ®7, ®7, (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 0); + + } + else if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-5].reg)) && !REG_SAME ((yyvsp[-9].reg), (yyvsp[-7].reg)) + && !IS_A1 ((yyvsp[-3].reg)) && IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = A0 + A1 , dregs = A0 - A1 (amod1)\n"); + (yyval.instr) = DSP32ALU (17, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), ®7, ®7, (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 1); + } + else + return yyerror ("Register mismatch"); + } +#line 3019 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 22: +#line 930 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-8].r0).r0 == (yyvsp[-2].r0).r0) + return yyerror ("Operators must differ"); + + if (IS_DREG ((yyvsp[-11].reg)) && IS_DREG ((yyvsp[-9].reg)) && IS_DREG ((yyvsp[-7].reg)) + && REG_SAME ((yyvsp[-9].reg), (yyvsp[-3].reg)) && REG_SAME ((yyvsp[-7].reg), (yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = dregs + dregs," + "dregs = dregs - dregs (amod1)\n"); + (yyval.instr) = DSP32ALU (4, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, 2); + } + else + return yyerror ("Register mismatch"); + } +#line 3038 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 23: +#line 948 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!REG_SAME ((yyvsp[-9].reg), (yyvsp[-3].reg)) || !REG_SAME ((yyvsp[-7].reg), (yyvsp[-1].reg))) + return yyerror ("Differing source registers"); + + if (!IS_DREG ((yyvsp[-11].reg)) || !IS_DREG ((yyvsp[-9].reg)) || !IS_DREG ((yyvsp[-7].reg)) || !IS_DREG ((yyvsp[-5].reg))) + return yyerror ("Dregs expected"); + + if (REG_SAME ((yyvsp[-11].reg), (yyvsp[-5].reg))) + return yyerror ("Resource conflict in dest reg"); + + if ((yyvsp[-8].r0).r0 == 1 && (yyvsp[-2].r0).r0 == 2) + { + notethat ("dsp32alu: dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n"); + (yyval.instr) = DSP32ALU (1, 1, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).r0); + } + else if ((yyvsp[-8].r0).r0 == 0 && (yyvsp[-2].r0).r0 == 3) + { + notethat ("dsp32alu: dregs = dregs .|. dregs , dregs = dregs .|. dregs (amod2)\n"); + (yyval.instr) = DSP32ALU (1, 0, &(yyvsp[-11].reg), &(yyvsp[-5].reg), &(yyvsp[-9].reg), &(yyvsp[-7].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).r0); + } + else + return yyerror ("Bar operand mismatch"); + } +#line 3066 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 24: +#line 973 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + int op; + + if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + if ((yyvsp[0].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[-4].reg), &(yyvsp[-1].reg), 0, 0, 0, 2); + } + else + return yyerror ("Dregs expected"); + } +#line 3092 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 25: +#line 995 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: Ax = ABS Ax\n"); + (yyval.instr) = DSP32ALU (16, IS_A1 ((yyvsp[-2].reg)), 0, 0, ®7, ®7, 0, 0, IS_A1 ((yyvsp[0].reg))); + } +#line 3101 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 26: +#line 1000 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32alu: A0.l = reg_half\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 0); + } + else + return yyerror ("A0.l = Rx.l expected"); + } +#line 3115 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 27: +#line 1010 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32alu: A1.l = reg_half\n"); + (yyval.instr) = DSP32ALU (9, IS_H ((yyvsp[0].reg)), 0, 0, &(yyvsp[0].reg), 0, 0, 0, 2); + } + else + return yyerror ("A1.l = Rx.l expected"); + } +#line 3129 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 28: +#line 1021 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs = ALIGN8 (dregs , dregs )\n"); + (yyval.instr) = DSP32SHIFT (13, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[-5].r0).r0, 0); + } + else + return yyerror ("Dregs expected"); + } +#line 3143 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 29: +#line 1032 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-12].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n"); + (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, 0, (yyvsp[0].modcodes).r0); + } + } +#line 3161 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 30: +#line 1046 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-11].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[-7].reg), (yyvsp[-5].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-3].reg), (yyvsp[-1].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP1P (dregs_pair , dregs_pair ) (T)\n"); + (yyval.instr) = DSP32ALU (20, 0, 0, &(yyvsp[-11].reg), &(yyvsp[-7].reg), &(yyvsp[-3].reg), 0, 0, 0); + } + } +#line 3179 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 31: +#line 1062 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-12].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP2P (dregs_pair , dregs_pair ) (rnd_op)\n"); + (yyval.instr) = DSP32ALU (22, (yyvsp[0].modcodes).r0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).aop); + } + } +#line 3197 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 32: +#line 1078 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-12].reg))) + return yyerror ("Dregs expected"); + else if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: dregs = BYTEOP3P (dregs_pair , dregs_pair ) (b3_op)\n"); + (yyval.instr) = DSP32ALU (23, (yyvsp[0].modcodes).x0, 0, &(yyvsp[-12].reg), &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].modcodes).s0, 0, 0); + } + } +#line 3215 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 33: +#line 1093 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = BYTEPACK (dregs , dregs )\n"); + (yyval.instr) = DSP32ALU (24, 0, 0, &(yyvsp[-7].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } +#line 3229 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 34: +#line 1105 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_HCOMPL ((yyvsp[-16].reg), (yyvsp[-14].reg)) && IS_HCOMPL ((yyvsp[-10].reg), (yyvsp[-3].reg)) && IS_HCOMPL ((yyvsp[-7].reg), (yyvsp[0].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[-16].reg), &(yyvsp[-10].reg), &(yyvsp[-7].reg), 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } +#line 3246 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 35: +#line 1118 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + if ((yyvsp[0].modcodes).aop == 0) + { + /* No saturation flag specified, generate the 16 bit variant. */ + notethat ("COMP3op: dregs = dregs +- dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[-2].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[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[-2].r0).r0); + } + } + else + if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)) && (yyvsp[-2].r0).r0 == 0) + { + notethat ("COMP3op: pregs = pregs + pregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), 5); + } + else + return yyerror ("Dregs expected"); + } +#line 3276 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 36: +#line 1144 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + int op; + + if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg))) + { + if ((yyvsp[0].r0).r0) + op = 6; + else + op = 7; + + notethat ("dsp32alu: dregs = {MIN|MAX} (dregs, dregs)\n"); + (yyval.instr) = DSP32ALU (op, 0, 0, &(yyvsp[-8].reg), &(yyvsp[-4].reg), &(yyvsp[-2].reg), 0, 0, (yyvsp[-6].r0).r0); + } + else + return yyerror ("Dregs expected"); + } +#line 3297 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 37: +#line 1162 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: Ax = - Ax\n"); + (yyval.instr) = DSP32ALU (14, IS_A1 ((yyvsp[-2].reg)), 0, 0, ®7, ®7, 0, 0, IS_A1 ((yyvsp[0].reg))); + } +#line 3306 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 38: +#line 1167 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: dregs_lo = dregs_lo +- dregs_lo (amod1)\n"); + (yyval.instr) = DSP32ALU (2 | (yyvsp[-2].r0).r0, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), + (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, HL2 ((yyvsp[-3].reg), (yyvsp[-1].reg))); + } +#line 3316 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 39: +#line 1173 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (EXPR_VALUE ((yyvsp[0].expr)) == 0 && !REG_SAME ((yyvsp[-2].reg), (yyvsp[-1].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"); + } +#line 3330 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 40: +#line 1185 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-3].reg))) + { + notethat ("dsp32alu: Ax = Ax (S)\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, 1, 0, IS_A1 ((yyvsp[-4].reg))); + } + else + return yyerror ("Registers must be equal"); + } +#line 3344 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 41: +#line 1196 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg))) + { + notethat ("dsp32alu: dregs_half = dregs (RND)\n"); + (yyval.instr) = DSP32ALU (12, IS_H ((yyvsp[-5].reg)), 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 0, 0, 3); + } + else + return yyerror ("Dregs expected"); + } +#line 3358 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 42: +#line 1207 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg))) + { + notethat ("dsp32alu: dregs_half = dregs (+-) dregs (RND12)\n"); + (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[-7].reg)), 0, &(yyvsp[-7].reg), &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 0, (yyvsp[-4].r0).r0); + } + else + return yyerror ("Dregs expected"); + } +#line 3372 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 43: +#line 1218 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg))) + { + notethat ("dsp32alu: dregs_half = dregs -+ dregs (RND20)\n"); + (yyval.instr) = DSP32ALU (5, IS_H ((yyvsp[-7].reg)), 0, &(yyvsp[-7].reg), &(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 1, (yyvsp[-4].r0).r0 | 2); + } + else + return yyerror ("Dregs expected"); + } +#line 3386 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 44: +#line 1229 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!REG_SAME ((yyvsp[-1].reg), (yyvsp[0].reg))) + { + notethat ("dsp32alu: An = Am\n"); + (yyval.instr) = DSP32ALU (8, 0, 0, 0, ®7, ®7, IS_A1 ((yyvsp[-1].reg)), 0, 3); + } + else + return yyerror ("Accu reg arguments must differ"); + } +#line 3400 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 45: +#line 1240 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[0].reg))) + { + notethat ("dsp32alu: An = dregs\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[0].reg), 0, 1, 0, IS_A1 ((yyvsp[-1].reg)) << 1); + } + else + return yyerror ("Dregs expected"); + } +#line 3414 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 46: +#line 1251 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_H ((yyvsp[-1].reg))) + { + if ((yyvsp[-3].reg).regno == REG_A0x && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: A0.x = dregs_lo\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[-1].reg), 0, 0, 0, 1); + } + else if ((yyvsp[-3].reg).regno == REG_A1x && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: A1.x = dregs_lo\n"); + (yyval.instr) = DSP32ALU (9, 0, 0, 0, &(yyvsp[-1].reg), 0, 0, 0, 3); + } + else if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("ALU2op: dregs = dregs_lo\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 10 | ((yyvsp[0].r0).r0 ? 0: 1)); + } + else + return yyerror ("Register mismatch"); + } + else + return yyerror ("Low reg expected"); + } +#line 3443 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 47: +#line 1277 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("LDIMMhalf: pregs_half = imm16\n"); + + if (!IS_DREG ((yyvsp[-2].reg)) && !IS_PREG ((yyvsp[-2].reg)) && !IS_IREG ((yyvsp[-2].reg)) + && !IS_MREG ((yyvsp[-2].reg)) && !IS_BREG ((yyvsp[-2].reg)) && !IS_LREG ((yyvsp[-2].reg))) + return yyerror ("Wrong register for load immediate"); + + if (!IS_IMM ((yyvsp[0].expr), 16) && !IS_UIMM ((yyvsp[0].expr), 16)) + return yyerror ("Constant out of range"); + + (yyval.instr) = LDIMMHALF_R (&(yyvsp[-2].reg), IS_H ((yyvsp[-2].reg)), 0, 0, (yyvsp[0].expr)); + } +#line 3460 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 48: +#line 1291 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32alu: An = 0\n"); + + if (imm7 ((yyvsp[0].expr)) != 0) + return yyerror ("0 expected"); + + (yyval.instr) = DSP32ALU (8, 0, 0, 0, 0, 0, 0, 0, IS_A1 ((yyvsp[-1].reg))); + } +#line 3473 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 49: +#line 1301 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-3].reg)) && !IS_PREG ((yyvsp[-3].reg)) && !IS_IREG ((yyvsp[-3].reg)) + && !IS_MREG ((yyvsp[-3].reg)) && !IS_BREG ((yyvsp[-3].reg)) && !IS_LREG ((yyvsp[-3].reg))) + return yyerror ("Wrong register for load immediate"); + + if ((yyvsp[0].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[-1].expr)) && IS_IMM ((yyvsp[-1].expr), 7) && IS_DREG ((yyvsp[-3].reg))) + { + notethat ("COMPI2opD: dregs = imm7 (x) \n"); + (yyval.instr) = COMPI2OPD (&(yyvsp[-3].reg), imm7 ((yyvsp[-1].expr)), 0); + } + else if (IS_CONST ((yyvsp[-1].expr)) && IS_IMM ((yyvsp[-1].expr), 7) && IS_PREG ((yyvsp[-3].reg))) + { + notethat ("COMPI2opP: pregs = imm7 (x)\n"); + (yyval.instr) = COMPI2OPP (&(yyvsp[-3].reg), imm7 ((yyvsp[-1].expr)), 0); + } + else + { + if (IS_CONST ((yyvsp[-1].expr)) && !IS_IMM ((yyvsp[-1].expr), 16)) + return yyerror ("Immediate value out of range"); + + notethat ("LDIMMhalf: regs = luimm16 (x)\n"); + /* reg, H, S, Z. */ + (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[-3].reg), 0, 1, 0, (yyvsp[-1].expr)); + } + } + else + { + /* (z) There is no 7 bit zero extended instruction. + If the expr is a relocation, generate it. */ + + if (IS_CONST ((yyvsp[-1].expr)) && !IS_UIMM ((yyvsp[-1].expr), 16)) + return yyerror ("Immediate value out of range"); + + notethat ("LDIMMhalf: regs = luimm16 (x)\n"); + /* reg, H, S, Z. */ + (yyval.instr) = LDIMMHALF_R5 (&(yyvsp[-3].reg), 0, 0, 1, (yyvsp[-1].expr)); + } + } +#line 3521 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 50: +#line 1346 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_H ((yyvsp[-2].reg))) + return yyerror ("Low reg expected"); + + if (IS_DREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_A0x) + { + notethat ("dsp32alu: dregs_lo = A0.x\n"); + (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[-2].reg), ®7, ®7, 0, 0, 0); + } + else if (IS_DREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_A1x) + { + notethat ("dsp32alu: dregs_lo = A1.x\n"); + (yyval.instr) = DSP32ALU (10, 0, 0, &(yyvsp[-2].reg), ®7, ®7, 0, 0, 1); + } + else + return yyerror ("Register mismatch"); + } +#line 3543 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 51: +#line 1365 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: dregs = dregs .|. dregs (amod0)\n"); + (yyval.instr) = DSP32ALU (0, 0, 0, &(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-1].reg), (yyvsp[0].modcodes).s0, (yyvsp[0].modcodes).x0, (yyvsp[-2].r0).r0); + } + else + return yyerror ("Register mismatch"); + } +#line 3557 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 52: +#line 1376 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("ALU2op: dregs = dregs_byte\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 12 | ((yyvsp[0].r0).r0 ? 0: 1)); + } + else + return yyerror ("Register mismatch"); + } +#line 3571 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 53: +#line 1387 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-6].reg), (yyvsp[-4].reg)) && REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)) && !REG_SAME ((yyvsp[-6].reg), (yyvsp[-2].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"); + } +#line 3585 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 54: +#line 1398 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-6].reg), (yyvsp[-4].reg)) && REG_SAME ((yyvsp[-2].reg), (yyvsp[0].reg)) && !REG_SAME ((yyvsp[-6].reg), (yyvsp[-2].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"); + } +#line 3599 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 55: +#line 1409 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_A1 ((yyvsp[-2].reg)) && IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: A0 -= A1\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, 0, ®7, ®7, (yyvsp[0].r0).r0, 0, 3); + } + else + return yyerror ("Register mismatch"); + } +#line 3613 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 56: +#line 1420 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IREG ((yyvsp[-2].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 4) + { + notethat ("dagMODik: iregs -= 4\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 3); + } + else if (IS_IREG ((yyvsp[-2].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 2) + { + notethat ("dagMODik: iregs -= 2\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 1); + } + else + return yyerror ("Register or value mismatch"); + } +#line 3632 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 57: +#line 1436 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IREG ((yyvsp[-5].reg)) && IS_MREG ((yyvsp[-3].reg))) + { + notethat ("dagMODim: iregs += mregs (opt_brev)\n"); + /* i, m, op, br. */ + (yyval.instr) = DAGMODIM (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 0, 1); + } + else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg))) + { + notethat ("PTR2op: pregs += pregs (BREV )\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 5); + } + else + return yyerror ("Register mismatch"); + } +#line 3652 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 58: +#line 1453 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IREG ((yyvsp[-2].reg)) && IS_MREG ((yyvsp[0].reg))) + { + notethat ("dagMODim: iregs -= mregs\n"); + (yyval.instr) = DAGMODIM (&(yyvsp[-2].reg), &(yyvsp[0].reg), 1, 0); + } + else if (IS_PREG ((yyvsp[-2].reg)) && IS_PREG ((yyvsp[0].reg))) + { + notethat ("PTR2op: pregs -= pregs\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 3671 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 59: +#line 1469 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_A1 ((yyvsp[-3].reg)) && IS_A1 ((yyvsp[-1].reg))) + { + notethat ("dsp32alu: A0 += A1 (W32)\n"); + (yyval.instr) = DSP32ALU (11, 0, 0, 0, ®7, ®7, (yyvsp[0].r0).r0, 0, 2); + } + else + return yyerror ("Register mismatch"); + } +#line 3685 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 60: +#line 1480 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IREG ((yyvsp[-2].reg)) && IS_MREG ((yyvsp[0].reg))) + { + notethat ("dagMODim: iregs += mregs\n"); + (yyval.instr) = DAGMODIM (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0, 0); + } + else + return yyerror ("iregs += mregs expected"); + } +#line 3699 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 61: +#line 1491 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IREG ((yyvsp[-2].reg))) + { + if (EXPR_VALUE ((yyvsp[0].expr)) == 4) + { + notethat ("dagMODik: iregs += 4\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 2); + } + else if (EXPR_VALUE ((yyvsp[0].expr)) == 2) + { + notethat ("dagMODik: iregs += 2\n"); + (yyval.instr) = DAGMODIK (&(yyvsp[-2].reg), 0); + } + else + return yyerror ("iregs += [ 2 | 4 "); + } + else if (IS_PREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 7)) + { + notethat ("COMPI2opP: pregs += imm7\n"); + (yyval.instr) = COMPI2OPP (&(yyvsp[-2].reg), imm7 ((yyvsp[0].expr)), 1); + } + else if (IS_DREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 7)) + { + notethat ("COMPI2opD: dregs += imm7\n"); + (yyval.instr) = COMPI2OPD (&(yyvsp[-2].reg), imm7 ((yyvsp[0].expr)), 1); + } + else if ((IS_DREG ((yyvsp[-2].reg)) || IS_PREG ((yyvsp[-2].reg))) && IS_CONST ((yyvsp[0].expr))) + return yyerror ("Immediate value out of range"); + else + return yyerror ("Register mismatch"); + } +#line 3735 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 62: +#line 1524 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("ALU2op: dregs *= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 3); + } + else + return yyerror ("Register mismatch"); + } +#line 3749 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 63: +#line 1535 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!valid_dreg_pair (&(yyvsp[-8].reg), (yyvsp[-6].expr))) + return yyerror ("Bad dreg pair"); + else if (!valid_dreg_pair (&(yyvsp[-4].reg), (yyvsp[-2].expr))) + return yyerror ("Bad dreg pair"); + else + { + notethat ("dsp32alu: SAA (dregs_pair , dregs_pair ) (aligndir)\n"); + (yyval.instr) = DSP32ALU (18, 0, 0, 0, &(yyvsp[-8].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0, 0); + } + } +#line 3765 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 64: +#line 1548 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-10].reg), (yyvsp[-9].reg)) && REG_SAME ((yyvsp[-4].reg), (yyvsp[-3].reg)) && !REG_SAME ((yyvsp[-10].reg), (yyvsp[-4].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"); + } +#line 3779 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 65: +#line 1559 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) + && REG_SAME ((yyvsp[-8].reg), (yyvsp[-5].reg))) + { + if (EXPR_VALUE ((yyvsp[0].expr)) == 1) + { + notethat ("ALU2op: dregs = (dregs + dregs) << 1\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 4); + } + else if (EXPR_VALUE ((yyvsp[0].expr)) == 2) + { + notethat ("ALU2op: dregs = (dregs + dregs) << 2\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 5); + } + else + return yyerror ("Bad shift value"); + } + else if (IS_PREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) + && REG_SAME ((yyvsp[-8].reg), (yyvsp[-5].reg))) + { + if (EXPR_VALUE ((yyvsp[0].expr)) == 1) + { + notethat ("PTR2op: pregs = (pregs + pregs) << 1\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 6); + } + else if (EXPR_VALUE ((yyvsp[0].expr)) == 2) + { + notethat ("PTR2op: pregs = (pregs + pregs) << 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-8].reg), &(yyvsp[-3].reg), 7); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Register mismatch"); + } +#line 3820 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 66: +#line 1598 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("COMP3op: dregs = dregs | dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 3); + } + else + return yyerror ("Dregs expected"); + } +#line 3834 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 67: +#line 1608 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("COMP3op: dregs = dregs ^ dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 4); + } + else + return yyerror ("Dregs expected"); + } +#line 3848 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 68: +#line 1618 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-8].reg)) && IS_PREG ((yyvsp[-6].reg)) && IS_PREG ((yyvsp[-3].reg))) + { + if (EXPR_VALUE ((yyvsp[-1].expr)) == 1) + { + notethat ("COMP3op: pregs = pregs + (pregs << 1)\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-8].reg), &(yyvsp[-6].reg), &(yyvsp[-3].reg), 6); + } + else if (EXPR_VALUE ((yyvsp[-1].expr)) == 2) + { + notethat ("COMP3op: pregs = pregs + (pregs << 2)\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-8].reg), &(yyvsp[-6].reg), &(yyvsp[-3].reg), 7); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Dregs expected"); + } +#line 3872 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 69: +#line 1638 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].reg).regno == REG_A0 && (yyvsp[0].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"); + } +#line 3886 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 70: +#line 1648 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].reg).regno == REG_A0 && (yyvsp[0].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"); + } +#line 3900 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 71: +#line 1658 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + || (IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)))) + { + notethat ("CCflag: CC = dpregs < dpregs\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK, (yyvsp[0].r0).r0, 0, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } +#line 3915 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 72: +#line 1669 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-3].reg)) && !IS_PREG ((yyvsp[-3].reg))) + return yyerror ("Bad register in comparison"); + + if (((yyvsp[0].r0).r0 == 1 && IS_IMM ((yyvsp[-1].expr), 3)) + || ((yyvsp[0].r0).r0 == 3 && IS_UIMM ((yyvsp[-1].expr), 3))) + { + notethat ("CCflag: CC = dpregs < (u)imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), imm3 ((yyvsp[-1].expr)), (yyvsp[0].r0).r0, 1, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant value"); + } +#line 3933 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 73: +#line 1683 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + || (IS_PREG ((yyvsp[-2].reg)) && IS_PREG ((yyvsp[0].reg)))) + { + notethat ("CCflag: CC = dpregs == dpregs\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-2].reg), (yyvsp[0].reg).regno & CODE_MASK, 0, 0, IS_PREG ((yyvsp[-2].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } +#line 3948 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 74: +#line 1694 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-2].reg)) && !IS_PREG ((yyvsp[-2].reg))) + return yyerror ("Bad register in comparison"); + + if (IS_IMM ((yyvsp[0].expr), 3)) + { + notethat ("CCflag: CC = dpregs == imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-2].reg), imm3 ((yyvsp[0].expr)), 0, 1, IS_PREG ((yyvsp[-2].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant range"); + } +#line 3965 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 75: +#line 1707 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].reg).regno == REG_A0 && (yyvsp[0].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"); + } +#line 3979 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 76: +#line 1717 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + || (IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg)))) + { + notethat ("CCflag: CC = dpregs <= dpregs (..)\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK, + 1 + (yyvsp[0].r0).r0, 0, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0); + } + else + return yyerror ("Bad register in comparison"); + } +#line 3995 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 77: +#line 1729 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-3].reg)) && !IS_PREG ((yyvsp[-3].reg))) + return yyerror ("Bad register in comparison"); + + if (((yyvsp[0].r0).r0 == 1 && IS_IMM ((yyvsp[-1].expr), 3)) + || ((yyvsp[0].r0).r0 == 3 && IS_UIMM ((yyvsp[-1].expr), 3))) + { + notethat ("CCflag: CC = dpregs <= (u)imm3\n"); + (yyval.instr) = CCFLAG (&(yyvsp[-3].reg), imm3 ((yyvsp[-1].expr)), 1 + (yyvsp[0].r0).r0, 1, IS_PREG ((yyvsp[-3].reg)) ? 1 : 0); + } + else + return yyerror ("Bad constant value"); + } +#line 4013 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 78: +#line 1744 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("COMP3op: dregs = dregs & dregs\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-4].reg), &(yyvsp[-2].reg), &(yyvsp[0].reg), 2); + } + else + return yyerror ("Dregs expected"); + } +#line 4027 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 79: +#line 1755 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("CC2stat operation\n"); + (yyval.instr) = bfin_gen_cc2stat ((yyvsp[0].modcodes).r0, (yyvsp[0].modcodes).x0, (yyvsp[0].modcodes).s0); + } +#line 4036 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 80: +#line 1761 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_GENREG ((yyvsp[-2].reg)) && IS_GENREG ((yyvsp[0].reg))) + || (IS_GENREG ((yyvsp[-2].reg)) && IS_DAGREG ((yyvsp[0].reg))) + || (IS_DAGREG ((yyvsp[-2].reg)) && IS_GENREG ((yyvsp[0].reg))) + || (IS_DAGREG ((yyvsp[-2].reg)) && IS_DAGREG ((yyvsp[0].reg))) + || (IS_GENREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_USP) + || ((yyvsp[-2].reg).regno == REG_USP && IS_GENREG ((yyvsp[0].reg))) + || ((yyvsp[-2].reg).regno == REG_USP && (yyvsp[0].reg).regno == REG_USP) + || (IS_DREG ((yyvsp[-2].reg)) && IS_SYSREG ((yyvsp[0].reg))) + || (IS_PREG ((yyvsp[-2].reg)) && IS_SYSREG ((yyvsp[0].reg))) + || (IS_SYSREG ((yyvsp[-2].reg)) && IS_GENREG ((yyvsp[0].reg))) + || (IS_ALLREG ((yyvsp[-2].reg)) && IS_EMUDAT ((yyvsp[0].reg))) + || (IS_EMUDAT ((yyvsp[-2].reg)) && IS_ALLREG ((yyvsp[0].reg))) + || (IS_SYSREG ((yyvsp[-2].reg)) && (yyvsp[0].reg).regno == REG_USP)) + { + (yyval.instr) = bfin_gen_regmv (&(yyvsp[0].reg), &(yyvsp[-2].reg)); + } + else + return yyerror ("Unsupported register move"); + } +#line 4061 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 81: +#line 1783 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[0].reg))) + { + notethat ("CC2dreg: CC = dregs\n"); + (yyval.instr) = bfin_gen_cc2dreg (1, &(yyvsp[0].reg)); + } + else + return yyerror ("Only 'CC = Dreg' supported"); + } +#line 4075 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 82: +#line 1794 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg))) + { + notethat ("CC2dreg: dregs = CC\n"); + (yyval.instr) = bfin_gen_cc2dreg (0, &(yyvsp[-2].reg)); + } + else + return yyerror ("Only 'Dreg = CC' supported"); + } +#line 4089 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 83: +#line 1805 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("CC2dreg: CC =! CC\n"); + (yyval.instr) = bfin_gen_cc2dreg (3, 0); + } +#line 4098 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 84: +#line 1813 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("dsp32mult: dregs_half = multiply_halfregs (opt_mode)\n"); + + if (!IS_H ((yyvsp[-3].reg)) && (yyvsp[0].mod).MM) + return yyerror ("(M) not allowed with MAC0"); + + if ((yyvsp[0].mod).mod != 0 && (yyvsp[0].mod).mod != M_FU && (yyvsp[0].mod).mod != M_IS + && (yyvsp[0].mod).mod != M_IU && (yyvsp[0].mod).mod != M_T && (yyvsp[0].mod).mod != M_TFU + && (yyvsp[0].mod).mod != M_S2RND && (yyvsp[0].mod).mod != M_ISS2 && (yyvsp[0].mod).mod != M_IH) + return yyerror ("bad option."); + + if (IS_H ((yyvsp[-3].reg))) + { + (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 0, + IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 0, 0, + &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 0); + } + else + { + (yyval.instr) = DSP32MULT (0, 0, (yyvsp[0].mod).mod, 0, 0, + 0, 0, IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), + &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 1); + } + } +#line 4127 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 85: +#line 1839 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + /* Odd registers can use (M). */ + if (!IS_DREG ((yyvsp[-3].reg))) + return yyerror ("Dreg expected"); + + if (IS_EVEN ((yyvsp[-3].reg)) && (yyvsp[0].mod).MM) + return yyerror ("(M) not allowed with MAC0"); + + if ((yyvsp[0].mod).mod != 0 && (yyvsp[0].mod).mod != M_FU && (yyvsp[0].mod).mod != M_IS + && (yyvsp[0].mod).mod != M_S2RND && (yyvsp[0].mod).mod != M_ISS2) + return yyerror ("bad option"); + + if (!IS_EVEN ((yyvsp[-3].reg))) + { + notethat ("dsp32mult: dregs = multiply_halfregs (opt_mode)\n"); + + (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 1, + IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), 0, 0, + &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 0); + } + else + { + notethat ("dsp32mult: dregs = multiply_halfregs opt_mode\n"); + (yyval.instr) = DSP32MULT (0, 0, (yyvsp[0].mod).mod, 0, 1, + 0, 0, IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), + &(yyvsp[-3].reg), 0, &(yyvsp[-1].macfunc).s0, &(yyvsp[-1].macfunc).s1, 1); + } + } +#line 4160 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 86: +#line 1870 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-8].reg)) || !IS_DREG ((yyvsp[-3].reg))) + return yyerror ("Dregs expected"); + + if (!IS_HCOMPL((yyvsp[-8].reg), (yyvsp[-3].reg))) + return yyerror ("Dest registers mismatch"); + + if (check_multiply_halfregs (&(yyvsp[-6].macfunc), &(yyvsp[-1].macfunc)) < 0) + return -1; + + if ((!IS_H ((yyvsp[-8].reg)) && (yyvsp[-5].mod).MM) + || (!IS_H ((yyvsp[-3].reg)) && (yyvsp[0].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[-8].reg))) + (yyval.instr) = DSP32MULT (0, (yyvsp[-5].mod).MM, (yyvsp[0].mod).mod, 1, 0, + IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), + &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1); + else + (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 0, + IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), + &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1); + } +#line 4191 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 87: +#line 1898 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-8].reg)) || !IS_DREG ((yyvsp[-3].reg))) + return yyerror ("Dregs expected"); + + if ((IS_EVEN ((yyvsp[-8].reg)) && (yyvsp[-3].reg).regno - (yyvsp[-8].reg).regno != 1) + || (IS_EVEN ((yyvsp[-3].reg)) && (yyvsp[-8].reg).regno - (yyvsp[-3].reg).regno != 1)) + return yyerror ("Dest registers mismatch"); + + if (check_multiply_halfregs (&(yyvsp[-6].macfunc), &(yyvsp[-1].macfunc)) < 0) + return -1; + + if ((IS_EVEN ((yyvsp[-8].reg)) && (yyvsp[-5].mod).MM) + || (IS_EVEN ((yyvsp[-3].reg)) && (yyvsp[0].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[-8].reg))) + (yyval.instr) = DSP32MULT (0, (yyvsp[0].mod).MM, (yyvsp[0].mod).mod, 1, 1, + IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), + &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1); + else + (yyval.instr) = DSP32MULT (0, (yyvsp[-5].mod).MM, (yyvsp[0].mod).mod, 1, 1, + IS_H ((yyvsp[-6].macfunc).s0), IS_H ((yyvsp[-6].macfunc).s1), IS_H ((yyvsp[-1].macfunc).s0), IS_H ((yyvsp[-1].macfunc).s1), + &(yyvsp[-8].reg), 0, &(yyvsp[-6].macfunc).s0, &(yyvsp[-6].macfunc).s1, 1); + } +#line 4223 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 88: +#line 1929 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg))) + return yyerror ("Aregs must be same"); + + if (IS_DREG ((yyvsp[0].reg)) && !IS_H ((yyvsp[0].reg))) + { + notethat ("dsp32shift: A0 = ASHIFT A0 BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 0, IS_A1 ((yyvsp[-4].reg))); + } + else + return yyerror ("Dregs expected"); + } +#line 4240 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 89: +#line 1943 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs_half = ASHIFT dregs_half BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (0, &(yyvsp[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-6].reg), (yyvsp[-3].reg))); + } + else + return yyerror ("Dregs expected"); + } +#line 4254 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 90: +#line 1954 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg))) + return yyerror ("Aregs must be same"); + + if (IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("dsp32shiftimm: A0 = A0 << uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, imm5 ((yyvsp[0].expr)), 0, 0, IS_A1 ((yyvsp[-3].reg))); + } + else + return yyerror ("Bad shift value"); + } +#line 4271 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 91: +#line 1968 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + if ((yyvsp[0].modcodes).r0) + { + /* Vector? */ + notethat ("dsp32shiftimm: dregs = dregs << expr (V, .)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), imm4 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0 ? 1 : 2, 0); + } + else + { + notethat ("dsp32shiftimm: dregs = dregs << uimm5 (.)\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), imm6 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0 ? 1 : 2, 0); + } + } + else if ((yyvsp[0].modcodes).s0 == 0 && IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg))) + { + if (EXPR_VALUE ((yyvsp[-1].expr)) == 2) + { + notethat ("PTR2op: pregs = pregs << 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 1); + } + else if (EXPR_VALUE ((yyvsp[-1].expr)) == 1) + { + notethat ("COMP3op: pregs = pregs << 1\n"); + (yyval.instr) = COMP3OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), &(yyvsp[-3].reg), 5); + } + else + return yyerror ("Bad shift value"); + } + else + return yyerror ("Bad shift value or register"); + } +#line 4309 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 92: +#line 2002 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_UIMM ((yyvsp[-1].expr), 4)) + { + if ((yyvsp[0].modcodes).s0) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4 (S)\n"); + (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[-5].reg), imm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-5].reg), (yyvsp[-3].reg))); + } + else + { + notethat ("dsp32shiftimm: dregs_half = dregs_half << uimm4\n"); + (yyval.instr) = DSP32SHIFTIMM (0x0, &(yyvsp[-5].reg), imm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), 2, HL2 ((yyvsp[-5].reg), (yyvsp[-3].reg))); + } + } + else + return yyerror ("Bad shift value"); + } +#line 4331 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 93: +#line 2020 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + int op; + + if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-1].reg))) + { + if ((yyvsp[0].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[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0); + } + else + return yyerror ("Dregs expected"); + } +#line 4358 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 94: +#line 2045 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-8].reg)) && IS_DREG_L ((yyvsp[-4].reg)) && IS_DREG_L ((yyvsp[-2].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs , dregs_lo )\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0); + } + else + return yyerror ("Bad shift value or register"); + } +#line 4372 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 95: +#line 2057 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-7].reg)) && IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_lo, dregs_lo)\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0); + } + else if (IS_DREG_L ((yyvsp[-7].reg)) && IS_DREG_H ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs_lo = EXPADJ (dregs_hi, dregs_lo)\n"); + (yyval.instr) = DSP32SHIFT (7, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 3, 0); + } + else + return yyerror ("Bad shift value or register"); + } +#line 4391 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 96: +#line 2075 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs )\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4405 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 97: +#line 2086 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-10].reg)) && IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-4].reg))) + { + notethat ("dsp32shift: dregs = DEPOSIT (dregs , dregs ) (X)\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-10].reg), &(yyvsp[-4].reg), &(yyvsp[-6].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4419 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 98: +#line 2097 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG_L ((yyvsp[-2].reg))) + { + notethat ("dsp32shift: dregs = EXTRACT (dregs, dregs_lo ) (.)\n"); + (yyval.instr) = DSP32SHIFT (10, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4433 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 99: +#line 2108 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg))) + return yyerror ("Aregs must be same"); + + if (IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("dsp32shiftimm: Ax = Ax >>> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[0].expr)), 0, 0, IS_A1 ((yyvsp[-3].reg))); + } + else + return yyerror ("Shift value range error"); + } +#line 4450 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 100: +#line 2121 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32shift: Ax = LSHIFT Ax BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 1, IS_A1 ((yyvsp[-4].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4464 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 101: +#line 2132 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32shift: dregs_lo = LSHIFT dregs_hi BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (0, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 2, HL2 ((yyvsp[-5].reg), (yyvsp[-2].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4478 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 102: +#line 2143 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG_L ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs = LSHIFT dregs BY dregs_lo (V )\n"); + (yyval.instr) = DSP32SHIFT ((yyvsp[0].r0).r0 ? 1: 2, &(yyvsp[-6].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4492 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 103: +#line 2154 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32shift: dregs = SHIFT dregs BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (2, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4506 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 104: +#line 2165 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-3].reg), (yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 6) >= 0) + { + notethat ("dsp32shiftimm: Ax = Ax >> imm6\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, -imm6 ((yyvsp[0].expr)), 0, 1, IS_A1 ((yyvsp[-3].reg))); + } + else + return yyerror ("Accu register expected"); + } +#line 4520 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 105: +#line 2176 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[0].r0).r0 == 1) + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("dsp32shiftimm: dregs = dregs >> uimm5 (V)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), 2, 0); + } + else + return yyerror ("Register mismatch"); + } + else + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("dsp32shiftimm: dregs = dregs >> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), -imm6 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), 2, 0); + } + else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && EXPR_VALUE ((yyvsp[-1].expr)) == 2) + { + notethat ("PTR2op: pregs = pregs >> 2\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 3); + } + else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg)) && EXPR_VALUE ((yyvsp[-1].expr)) == 1) + { + notethat ("PTR2op: pregs = pregs >> 1\n"); + (yyval.instr) = PTR2OP (&(yyvsp[-5].reg), &(yyvsp[-3].reg), 4); + } + else + return yyerror ("Register mismatch"); + } + } +#line 4557 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 106: +#line 2209 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half >> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[-4].reg), -uimm5 ((yyvsp[0].expr)), &(yyvsp[-2].reg), 2, HL2 ((yyvsp[-4].reg), (yyvsp[-2].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4571 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 107: +#line 2219 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("dsp32shiftimm: dregs_half = dregs_half >>> uimm5\n"); + (yyval.instr) = DSP32SHIFTIMM (0, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), + (yyvsp[0].modcodes).s0, HL2 ((yyvsp[-5].reg), (yyvsp[-3].reg))); + } + else + return yyerror ("Register or modifier mismatch"); + } +#line 4586 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 108: +#line 2232 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + if ((yyvsp[0].modcodes).r0) + { + /* Vector? */ + notethat ("dsp32shiftimm: dregs = dregs >>> uimm5 (V, .)\n"); + (yyval.instr) = DSP32SHIFTIMM (1, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0); + } + else + { + notethat ("dsp32shiftimm: dregs = dregs >>> uimm5 (.)\n"); + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), -uimm5 ((yyvsp[-1].expr)), &(yyvsp[-3].reg), (yyvsp[0].modcodes).s0, 0); + } + } + else + return yyerror ("Register mismatch"); + } +#line 4609 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 109: +#line 2252 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("dsp32shift: dregs_lo = ONES dregs\n"); + (yyval.instr) = DSP32SHIFT (6, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4623 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 110: +#line 2263 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-7].reg)) && IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + notethat ("dsp32shift: dregs = PACK (dregs_hi , dregs_hi )\n"); + (yyval.instr) = DSP32SHIFT (4, &(yyvsp[-7].reg), &(yyvsp[-1].reg), &(yyvsp[-3].reg), HL2 ((yyvsp[-3].reg), (yyvsp[-1].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4637 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 111: +#line 2274 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-9].reg)) + && (yyvsp[-3].reg).regno == REG_A0 + && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-9].reg)) && !IS_A1 ((yyvsp[-3].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXORSHIFT (A0 , dregs )\n"); + (yyval.instr) = DSP32SHIFT (11, &(yyvsp[-9].reg), &(yyvsp[-1].reg), 0, 0, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4653 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 112: +#line 2287 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-9].reg)) + && (yyvsp[-3].reg).regno == REG_A0 + && IS_DREG ((yyvsp[-1].reg)) && !IS_H ((yyvsp[-9].reg)) && !IS_A1 ((yyvsp[-3].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , dregs)\n"); + (yyval.instr) = DSP32SHIFT (11, &(yyvsp[-9].reg), &(yyvsp[-1].reg), 0, 1, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4669 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 113: +#line 2300 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-11].reg)) && !IS_H ((yyvsp[-11].reg)) && !REG_SAME ((yyvsp[-5].reg), (yyvsp[-3].reg))) + { + notethat ("dsp32shift: dregs_lo = CC = BXOR (A0 , A1 , CC)\n"); + (yyval.instr) = DSP32SHIFT (12, &(yyvsp[-11].reg), 0, 0, 1, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4683 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 114: +#line 2311 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-4].reg), (yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32shift: Ax = ROT Ax BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (3, 0, &(yyvsp[0].reg), 0, 2, IS_A1 ((yyvsp[-4].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4697 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 115: +#line 2322 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_DREG_L ((yyvsp[0].reg))) + { + notethat ("dsp32shift: dregs = ROT dregs BY dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (2, &(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-2].reg), 3, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4711 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 116: +#line 2333 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_IMM ((yyvsp[0].expr), 6)) + { + notethat ("dsp32shiftimm: An = ROT An BY imm6\n"); + (yyval.instr) = DSP32SHIFTIMM (3, 0, imm6 ((yyvsp[0].expr)), 0, 2, IS_A1 ((yyvsp[-4].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4725 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 117: +#line 2344 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-5].reg)) && IS_DREG ((yyvsp[-2].reg)) && IS_IMM ((yyvsp[0].expr), 6)) + { + (yyval.instr) = DSP32SHIFTIMM (2, &(yyvsp[-5].reg), imm6 ((yyvsp[0].expr)), &(yyvsp[-2].reg), 3, IS_A1 ((yyvsp[-5].reg))); + } + else + return yyerror ("Register mismatch"); + } +#line 4738 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 118: +#line 2354 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-3].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS An\n"); + (yyval.instr) = DSP32SHIFT (6, &(yyvsp[-3].reg), 0, 0, IS_A1 ((yyvsp[0].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4752 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 119: +#line 2365 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS dregs\n"); + (yyval.instr) = DSP32SHIFT (5, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 0, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4766 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 120: +#line 2376 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-3].reg))) + { + notethat ("dsp32shift: dregs_lo = SIGNBITS dregs_lo\n"); + (yyval.instr) = DSP32SHIFT (5, &(yyvsp[-3].reg), 0, &(yyvsp[0].reg), 1 + IS_H ((yyvsp[0].reg)), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4780 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 121: +#line 2388 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG_L ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-2].reg))) + { + notethat ("dsp32shift: dregs_lo = VIT_MAX (dregs) (..)\n"); + (yyval.instr) = DSP32SHIFT (9, &(yyvsp[-6].reg), 0, &(yyvsp[-2].reg), ((yyvsp[0].r0).r0 ? 0 : 1), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4794 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 122: +#line 2399 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-8].reg)) && IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-2].reg))) + { + notethat ("dsp32shift: dregs = VIT_MAX (dregs, dregs) (ASR)\n"); + (yyval.instr) = DSP32SHIFT (9, &(yyvsp[-8].reg), &(yyvsp[-2].reg), &(yyvsp[-4].reg), 2 | ((yyvsp[0].r0).r0 ? 0 : 1), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4808 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 123: +#line 2410 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (REG_SAME ((yyvsp[-6].reg), (yyvsp[-4].reg))) + return yyerror ("Illegal source register combination"); + + if (IS_DREG ((yyvsp[-6].reg)) && IS_DREG ((yyvsp[-4].reg)) && !IS_A1 ((yyvsp[-2].reg))) + { + notethat ("dsp32shift: BITMUX (dregs , dregs , A0) (ASR)\n"); + (yyval.instr) = DSP32SHIFT (8, 0, &(yyvsp[-6].reg), &(yyvsp[-4].reg), (yyvsp[0].r0).r0, 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4825 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 124: +#line 2424 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_A1 ((yyvsp[-8].reg)) && !IS_A1 ((yyvsp[-5].reg)) && IS_A1 ((yyvsp[-3].reg))) + { + notethat ("dsp32shift: A0 = BXORSHIFT (A0 , A1 , CC )\n"); + (yyval.instr) = DSP32SHIFT (12, 0, 0, 0, 0, 0); + } + else + return yyerror ("Dregs expected"); + } +#line 4839 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 125: +#line 2437 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 4); + } + else + return yyerror ("Register mismatch"); + } +#line 4853 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 126: +#line 2449 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 2); + } + else + return yyerror ("Register mismatch"); + } +#line 4867 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 127: +#line 2461 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("LOGI2op: BITCLR (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 3); + } + else + return yyerror ("Register mismatch"); + } +#line 4881 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 128: +#line 2472 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("LOGI2op: CC =! BITTST (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 0); + } + else + return yyerror ("Register mismatch or value error"); + } +#line 4895 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 129: +#line 2483 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_UIMM ((yyvsp[-1].expr), 5)) + { + notethat ("LOGI2op: CC = BITTST (dregs , uimm5 )\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-3].reg), uimm5 ((yyvsp[-1].expr)), 1); + } + else + return yyerror ("Register mismatch or value error"); + } +#line 4909 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 130: +#line 2494 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_DREG ((yyvsp[-2].reg)) || IS_PREG ((yyvsp[-2].reg))) + && (IS_DREG ((yyvsp[0].reg)) || IS_PREG ((yyvsp[0].reg)))) + { + notethat ("ccMV: IF ! CC gregs = gregs\n"); + (yyval.instr) = CCMV (&(yyvsp[0].reg), &(yyvsp[-2].reg), 0); + } + else + return yyerror ("Register mismatch"); + } +#line 4924 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 131: +#line 2506 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((IS_DREG ((yyvsp[0].reg)) || IS_PREG ((yyvsp[0].reg))) + && (IS_DREG ((yyvsp[-2].reg)) || IS_PREG ((yyvsp[-2].reg)))) + { + notethat ("ccMV: IF CC gregs = gregs\n"); + (yyval.instr) = CCMV (&(yyvsp[0].reg), &(yyvsp[-2].reg), 1); + } + else + return yyerror ("Register mismatch"); + } +#line 4939 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 132: +#line 2518 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL10 ((yyvsp[0].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (0, 0, (yyvsp[0].expr)); + } + else + return yyerror ("Bad jump offset"); + } +#line 4953 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 133: +#line 2529 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL10 ((yyvsp[-3].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (0, 1, (yyvsp[-3].expr)); + } + else + return yyerror ("Bad jump offset"); + } +#line 4967 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 134: +#line 2540 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL10 ((yyvsp[0].expr))) + { + notethat ("BRCC: IF CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (1, 0, (yyvsp[0].expr)); + } + else + return yyerror ("Bad jump offset"); + } +#line 4981 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 135: +#line 2551 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL10 ((yyvsp[-3].expr))) + { + notethat ("BRCC: IF !CC JUMP pcrel11m2\n"); + (yyval.instr) = BRCC (1, 1, (yyvsp[-3].expr)); + } + else + return yyerror ("Bad jump offset"); + } +#line 4995 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 136: +#line 2561 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: NOP\n"); + (yyval.instr) = PROGCTRL (0, 0); + } +#line 5004 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 137: +#line 2567 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: RTS\n"); + (yyval.instr) = PROGCTRL (1, 0); + } +#line 5013 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 138: +#line 2573 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: RTI\n"); + (yyval.instr) = PROGCTRL (1, 1); + } +#line 5022 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 139: +#line 2579 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: RTX\n"); + (yyval.instr) = PROGCTRL (1, 2); + } +#line 5031 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 140: +#line 2585 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: RTN\n"); + (yyval.instr) = PROGCTRL (1, 3); + } +#line 5040 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 141: +#line 2591 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: RTE\n"); + (yyval.instr) = PROGCTRL (1, 4); + } +#line 5049 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 142: +#line 2597 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: IDLE\n"); + (yyval.instr) = PROGCTRL (2, 0); + } +#line 5058 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 143: +#line 2603 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: CSYNC\n"); + (yyval.instr) = PROGCTRL (2, 3); + } +#line 5067 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 144: +#line 2609 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: SSYNC\n"); + (yyval.instr) = PROGCTRL (2, 4); + } +#line 5076 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 145: +#line 2615 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: EMUEXCPT\n"); + (yyval.instr) = PROGCTRL (2, 5); + } +#line 5085 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 146: +#line 2621 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[0].reg))) + { + notethat ("ProgCtrl: CLI dregs\n"); + (yyval.instr) = PROGCTRL (3, (yyvsp[0].reg).regno & CODE_MASK); + } + else + return yyerror ("Dreg expected for CLI"); + } +#line 5099 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 147: +#line 2632 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[0].reg))) + { + notethat ("ProgCtrl: STI dregs\n"); + (yyval.instr) = PROGCTRL (4, (yyvsp[0].reg).regno & CODE_MASK); + } + else + return yyerror ("Dreg expected for STI"); + } +#line 5113 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 148: +#line 2643 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("ProgCtrl: JUMP (pregs )\n"); + (yyval.instr) = PROGCTRL (5, (yyvsp[-1].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect jump"); + } +#line 5127 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 149: +#line 2654 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("ProgCtrl: CALL (pregs )\n"); + (yyval.instr) = PROGCTRL (6, (yyvsp[-1].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect call"); + } +#line 5141 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 150: +#line 2665 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("ProgCtrl: CALL (PC + pregs )\n"); + (yyval.instr) = PROGCTRL (7, (yyvsp[-1].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect call"); + } +#line 5155 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 151: +#line 2676 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("ProgCtrl: JUMP (PC + pregs )\n"); + (yyval.instr) = PROGCTRL (8, (yyvsp[-1].reg).regno & CODE_MASK); + } + else + return yyerror ("Bad register for indirect jump"); + } +#line 5169 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 152: +#line 2687 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_UIMM ((yyvsp[0].expr), 4)) + { + notethat ("ProgCtrl: RAISE uimm4\n"); + (yyval.instr) = PROGCTRL (9, uimm4 ((yyvsp[0].expr))); + } + else + return yyerror ("Bad value for RAISE"); + } +#line 5183 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 153: +#line 2698 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("ProgCtrl: EMUEXCPT\n"); + (yyval.instr) = PROGCTRL (10, uimm4 ((yyvsp[0].expr))); + } +#line 5192 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 154: +#line 2704 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + if ((yyvsp[-1].reg).regno == REG_SP || (yyvsp[-1].reg).regno == REG_FP) + return yyerror ("Bad register for TESTSET"); + + notethat ("ProgCtrl: TESTSET (pregs )\n"); + (yyval.instr) = PROGCTRL (11, (yyvsp[-1].reg).regno & CODE_MASK); + } + else + return yyerror ("Preg expected"); + } +#line 5209 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 155: +#line 2718 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL12 ((yyvsp[0].expr))) + { + notethat ("UJUMP: JUMP pcrel12\n"); + (yyval.instr) = UJUMP ((yyvsp[0].expr)); + } + else + return yyerror ("Bad value for relative jump"); + } +#line 5223 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 156: +#line 2729 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL12 ((yyvsp[0].expr))) + { + notethat ("UJUMP: JUMP_DOT_S pcrel12\n"); + (yyval.instr) = UJUMP((yyvsp[0].expr)); + } + else + return yyerror ("Bad value for relative jump"); + } +#line 5237 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 157: +#line 2740 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL24 ((yyvsp[0].expr))) + { + notethat ("CALLa: jump.l pcrel24\n"); + (yyval.instr) = CALLA ((yyvsp[0].expr), 0); + } + else + return yyerror ("Bad value for long jump"); + } +#line 5251 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 158: +#line 2751 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL24 ((yyvsp[0].expr))) + { + notethat ("CALLa: jump.l pcrel24\n"); + (yyval.instr) = CALLA ((yyvsp[0].expr), 2); + } + else + return yyerror ("Bad value for long jump"); + } +#line 5265 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 159: +#line 2762 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL24 ((yyvsp[0].expr))) + { + notethat ("CALLa: CALL pcrel25m2\n"); + (yyval.instr) = CALLA ((yyvsp[0].expr), 1); + } + else + return yyerror ("Bad call address"); + } +#line 5279 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 160: +#line 2772 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL24 ((yyvsp[0].expr))) + { + notethat ("CALLa: CALL pcrel25m2\n"); + (yyval.instr) = CALLA ((yyvsp[0].expr), 2); + } + else + return yyerror ("Bad call address"); + } +#line 5293 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 161: +#line 2785 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 8); + else + return yyerror ("Bad registers for DIVQ"); + } +#line 5304 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 162: +#line 2793 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[-1].reg))) + (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[-1].reg), 9); + else + return yyerror ("Bad registers for DIVS"); + } +#line 5315 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 163: +#line 2801 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-4].reg)) && IS_DREG ((yyvsp[-1].reg))) + { + if ((yyvsp[0].modcodes).r0 == 0 && (yyvsp[0].modcodes).s0 == 0 && (yyvsp[0].modcodes).aop == 0) + { + notethat ("ALU2op: dregs = - dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-4].reg), &(yyvsp[-1].reg), 14); + } + else if ((yyvsp[0].modcodes).r0 == 1 && (yyvsp[0].modcodes).s0 == 0 && (yyvsp[0].modcodes).aop == 3) + { + notethat ("dsp32alu: dregs = - dregs (.)\n"); + (yyval.instr) = DSP32ALU (15, 0, 0, &(yyvsp[-4].reg), &(yyvsp[-1].reg), 0, (yyvsp[0].modcodes).s0, 0, 3); + } + else + { + notethat ("dsp32alu: dregs = - dregs (.)\n"); + (yyval.instr) = DSP32ALU (7, 0, 0, &(yyvsp[-4].reg), &(yyvsp[-1].reg), 0, (yyvsp[0].modcodes).s0, 0, 3); + } + } + else + return yyerror ("Dregs expected"); + } +#line 5342 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 164: +#line 2825 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-3].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("ALU2op: dregs = ~dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-3].reg), &(yyvsp[0].reg), 15); + } + else + return yyerror ("Dregs expected"); + } +#line 5356 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 165: +#line 2836 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("ALU2op: dregs >>= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 1); + } + else + return yyerror ("Dregs expected"); + } +#line 5370 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 166: +#line 2847 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("LOGI2op: dregs >>= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 6); + } + else + return yyerror ("Dregs expected or value error"); + } +#line 5384 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 167: +#line 2858 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("ALU2op: dregs >>>= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 0); + } + else + return yyerror ("Dregs expected"); + } +#line 5398 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 168: +#line 2869 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + notethat ("ALU2op: dregs <<= dregs\n"); + (yyval.instr) = ALU2OP (&(yyvsp[-2].reg), &(yyvsp[0].reg), 2); + } + else + return yyerror ("Dregs expected"); + } +#line 5412 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 169: +#line 2880 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("LOGI2op: dregs <<= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 7); + } + else + return yyerror ("Dregs expected or const value error"); + } +#line 5426 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 170: +#line 2892 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_UIMM ((yyvsp[0].expr), 5)) + { + notethat ("LOGI2op: dregs >>>= uimm5\n"); + (yyval.instr) = LOGI2OP ((yyvsp[-2].reg), uimm5 ((yyvsp[0].expr)), 5); + } + else + return yyerror ("Dregs expected"); + } +#line 5440 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 171: +#line 2905 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("CaCTRL: FLUSH [ pregs ]\n"); + if (IS_PREG ((yyvsp[-1].reg))) + (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 2); + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5452 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 172: +#line 2914 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[0].reg))) + { + notethat ("CaCTRL: FLUSH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 2); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5466 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 173: +#line 2925 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("CaCTRL: FLUSHINV [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 1); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5480 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 174: +#line 2936 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[0].reg))) + { + notethat ("CaCTRL: FLUSHINV [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 1); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5494 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 175: +#line 2948 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("CaCTRL: IFLUSH [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 3); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5508 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 176: +#line 2959 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[0].reg))) + { + notethat ("CaCTRL: IFLUSH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 3); + } + else + return yyerror ("Bad register(s) for FLUSH"); + } +#line 5522 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 177: +#line 2970 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[-1].reg))) + { + notethat ("CaCTRL: PREFETCH [ pregs ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[-1].reg), 0, 0); + } + else + return yyerror ("Bad register(s) for PREFETCH"); + } +#line 5536 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 178: +#line 2981 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PREG ((yyvsp[0].reg))) + { + notethat ("CaCTRL: PREFETCH [ pregs ++ ]\n"); + (yyval.instr) = CACTRL (&(yyvsp[0].reg), 1, 0); + } + else + return yyerror ("Bad register(s) for PREFETCH"); + } +#line 5550 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 179: +#line 2995 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: B [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 2, 0, 1); + } +#line 5564 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 180: +#line 3007 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-3].expr); + + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[-5].reg))) + return yyerror ("Preg expected in address"); + + if (IS_RELOC ((yyvsp[-3].expr))) + return yyerror ("Plain symbol used as offset"); + + if ((yyvsp[-4].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[-5].reg), &(yyvsp[0].reg), 1, 2, 0, (yyvsp[-3].expr)); + } + else + return yyerror ("Displacement out of range"); + } +#line 5591 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 181: +#line 3033 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-3].expr); + + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[-5].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[-4].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[-3].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[-5].reg), &(yyvsp[0].reg), tmp, 1, 1); + } + else if (in_range_p (tmp, -65536, 65535, 1)) + { + notethat ("LDSTidxI: W [ pregs + imm17m2 ] = dregs\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[-5].reg), &(yyvsp[0].reg), 1, 1, 0, tmp); + } + else + return yyerror ("Displacement out of range"); + } +#line 5623 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 182: +#line 3063 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + if (!IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: W [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1, 0, 1); + } +#line 5637 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 183: +#line 3074 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + if ((yyvsp[-3].modcodes).x0 == 2) + { + if (!IS_IREG ((yyvsp[-4].reg)) && !IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Ireg or Preg expected in address"); + } + else if (!IS_IREG ((yyvsp[-4].reg))) + return yyerror ("Ireg expected in address"); + + if (IS_IREG ((yyvsp[-4].reg))) + { + notethat ("dspLDST: W [ iregs ] = dregs_half\n"); + (yyval.instr) = DSPLDST (&(yyvsp[-4].reg), 1 + IS_H ((yyvsp[0].reg)), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1); + } + else + { + notethat ("LDSTpmod: W [ pregs ] = dregs_half\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-4].reg), &(yyvsp[0].reg), &(yyvsp[-4].reg), 1 + IS_H ((yyvsp[0].reg)), 1); + } + } +#line 5664 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 184: +#line 3099 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-3].expr); + int ispreg = IS_PREG ((yyvsp[0].reg)); + + if (!IS_PREG ((yyvsp[-5].reg))) + return yyerror ("Preg expected in address"); + + if (!IS_DREG ((yyvsp[0].reg)) && !ispreg) + return yyerror ("Preg expected for source operand"); + + if ((yyvsp[-4].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[-3].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[-5].reg), &(yyvsp[0].reg), tmp, 1, ispreg ? 3 : 0); + } + else if ((yyvsp[-5].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[0].reg), 1); + } + else if (in_range_p (tmp, -131072, 131071, 3)) + { + notethat ("LDSTidxI: [ pregs + imm18m4 ] = dpregs\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[-5].reg), &(yyvsp[0].reg), 1, 0, ispreg ? 1 : 0, tmp); + } + else + return yyerror ("Displacement out of range"); + } +#line 5704 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 185: +#line 3136 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-2].expr); + if (!IS_DREG ((yyvsp[-8].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[-3].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[-2].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[-4].reg), &(yyvsp[-8].reg), tmp, 0, 1 << (yyvsp[0].r0).r0); + } + else if (in_range_p (tmp, -65536, 65535, 1)) + { + notethat ("LDSTidxI: dregs = W [ pregs + imm17m2 ] (.)\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[-4].reg), &(yyvsp[-8].reg), 0, 1, (yyvsp[0].r0).r0, tmp); + } + else + return yyerror ("Displacement out of range"); + } +#line 5735 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 186: +#line 3164 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-6].reg))) + return yyerror ("Dreg expected for source operand"); + if ((yyvsp[-1].modcodes).x0 == 2) + { + if (!IS_IREG ((yyvsp[-2].reg)) && !IS_PREG ((yyvsp[-2].reg))) + return yyerror ("Ireg or Preg expected in address"); + } + else if (!IS_IREG ((yyvsp[-2].reg))) + return yyerror ("Ireg expected in address"); + + if (IS_IREG ((yyvsp[-2].reg))) + { + notethat ("dspLDST: dregs_half = W [ iregs ]\n"); + (yyval.instr) = DSPLDST(&(yyvsp[-2].reg), 1 + IS_H ((yyvsp[-6].reg)), &(yyvsp[-6].reg), (yyvsp[-1].modcodes).x0, 0); + } + else + { + notethat ("LDSTpmod: dregs_half = W [ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-2].reg), &(yyvsp[-6].reg), &(yyvsp[-2].reg), 1 + IS_H ((yyvsp[-6].reg)), 0); + } + } +#line 5762 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 187: +#line 3189 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-7].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-3].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: dregs = W [ pregs ] (.)\n"); + (yyval.instr) = LDST (&(yyvsp[-3].reg), &(yyvsp[-7].reg), (yyvsp[-2].modcodes).x0, 1, (yyvsp[0].r0).r0, 0); + } +#line 5776 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 188: +#line 3200 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-8].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-4].reg)) || !IS_PREG ((yyvsp[-2].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDSTpmod: dregs = W [ pregs ++ pregs ] (.)\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-4].reg), &(yyvsp[-8].reg), &(yyvsp[-2].reg), 3, (yyvsp[0].r0).r0); + } +#line 5790 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 189: +#line 3211 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-7].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-3].reg)) || !IS_PREG ((yyvsp[-1].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDSTpmod: dregs_half = W [ pregs ++ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-3].reg), &(yyvsp[-7].reg), &(yyvsp[-1].reg), 1 + IS_H ((yyvsp[-7].reg)), 0); + } +#line 5804 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 190: +#line 3222 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_IREG ((yyvsp[-4].reg)) && !IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Ireg or Preg expected in address"); + else if (IS_IREG ((yyvsp[-4].reg)) && !IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + else if (IS_PREG ((yyvsp[-4].reg)) && !IS_DREG ((yyvsp[0].reg)) && !IS_PREG ((yyvsp[0].reg))) + return yyerror ("Dreg or Preg expected for source operand"); + + if (IS_IREG ((yyvsp[-4].reg))) + { + notethat ("dspLDST: [ iregs ] = dregs\n"); + (yyval.instr) = DSPLDST(&(yyvsp[-4].reg), 0, &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 1); + } + else if (IS_DREG ((yyvsp[0].reg))) + { + notethat ("LDST: [ pregs ] = dregs\n"); + (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 0, 0, 1); + } + else + { + notethat ("LDST: [ pregs ] = pregs\n"); + (yyval.instr) = LDST (&(yyvsp[-4].reg), &(yyvsp[0].reg), (yyvsp[-3].modcodes).x0, 0, 1, 1); + } + } +#line 5833 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 191: +#line 3248 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + + if (IS_IREG ((yyvsp[-5].reg)) && IS_MREG ((yyvsp[-3].reg))) + { + notethat ("dspLDST: [ iregs ++ mregs ] = dregs\n"); + (yyval.instr) = DSPLDST(&(yyvsp[-5].reg), (yyvsp[-3].reg).regno & CODE_MASK, &(yyvsp[0].reg), 3, 1); + } + else if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg))) + { + notethat ("LDSTpmod: [ pregs ++ pregs ] = dregs\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-3].reg), 0, 1); + } + else + return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address"); + } +#line 5855 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 192: +#line 3267 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dreg expected for source operand"); + + if (IS_PREG ((yyvsp[-5].reg)) && IS_PREG ((yyvsp[-3].reg))) + { + notethat ("LDSTpmod: W [ pregs ++ pregs ] = dregs_half\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-5].reg), &(yyvsp[0].reg), &(yyvsp[-3].reg), 1 + IS_H ((yyvsp[0].reg)), 1); + } + else + return yyerror ("Preg ++ Preg expected in address"); + } +#line 5872 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 193: +#line 3281 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-2].expr); + if (!IS_DREG ((yyvsp[-8].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-4].reg))) + return yyerror ("Preg expected in address"); + + if ((yyvsp[-3].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (IS_RELOC ((yyvsp[-2].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[0].r0).r0 ? 'X' : 'Z'); + (yyval.instr) = LDSTIDXI (&(yyvsp[-4].reg), &(yyvsp[-8].reg), 0, 2, (yyvsp[0].r0).r0, tmp); + } + else + return yyerror ("Displacement out of range"); + } +#line 5899 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 194: +#line 3305 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-7].reg))) + return yyerror ("Dreg expected for destination operand"); + if (!IS_PREG ((yyvsp[-3].reg))) + return yyerror ("Preg expected in address"); + + notethat ("LDST: dregs = B [ pregs ] (%c)\n", + (yyvsp[0].r0).r0 ? 'X' : 'Z'); + (yyval.instr) = LDST (&(yyvsp[-3].reg), &(yyvsp[-7].reg), (yyvsp[-2].modcodes).x0, 2, (yyvsp[0].r0).r0, 0); + } +#line 5914 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 195: +#line 3317 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-6].reg))) + return yyerror ("Dreg expected for destination operand"); + + if (IS_IREG ((yyvsp[-3].reg)) && IS_MREG ((yyvsp[-1].reg))) + { + notethat ("dspLDST: dregs = [ iregs ++ mregs ]\n"); + (yyval.instr) = DSPLDST(&(yyvsp[-3].reg), (yyvsp[-1].reg).regno & CODE_MASK, &(yyvsp[-6].reg), 3, 0); + } + else if (IS_PREG ((yyvsp[-3].reg)) && IS_PREG ((yyvsp[-1].reg))) + { + notethat ("LDSTpmod: dregs = [ pregs ++ pregs ]\n"); + (yyval.instr) = LDSTPMOD (&(yyvsp[-3].reg), &(yyvsp[-6].reg), &(yyvsp[-1].reg), 0, 0); + } + else + return yyerror ("Preg ++ Preg or Ireg ++ Mreg expected in address"); + } +#line 5936 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 196: +#line 3336 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node *tmp = (yyvsp[-1].expr); + int ispreg = IS_PREG ((yyvsp[-6].reg)); + int isgot = IS_RELOC((yyvsp[-1].expr)); + + if (!IS_PREG ((yyvsp[-3].reg))) + return yyerror ("Preg expected in address"); + + if (!IS_DREG ((yyvsp[-6].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[-2].r0).r0) + tmp = unary (Expr_Op_Type_NEG, tmp); + + if (isgot) + { + notethat ("LDSTidxI: dpregs = [ pregs + sym@got ]\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[-3].reg), &(yyvsp[-6].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[-3].reg), &(yyvsp[-6].reg), tmp, 0, ispreg ? 3 : 0); + } + else if ((yyvsp[-3].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[-6].reg), 0); + } + else if (in_range_p (tmp, -131072, 131071, 3)) + { + notethat ("LDSTidxI: dpregs = [ pregs + imm18m4 ]\n"); + (yyval.instr) = LDSTIDXI (&(yyvsp[-3].reg), &(yyvsp[-6].reg), 0, 0, ispreg ? 1 : 0, tmp); + + } + else + return yyerror ("Displacement out of range"); + } +#line 5985 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 197: +#line 3382 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_IREG ((yyvsp[-2].reg)) && !IS_PREG ((yyvsp[-2].reg))) + return yyerror ("Ireg or Preg expected in address"); + else if (IS_IREG ((yyvsp[-2].reg)) && !IS_DREG ((yyvsp[-5].reg))) + return yyerror ("Dreg expected in destination operand"); + else if (IS_PREG ((yyvsp[-2].reg)) && !IS_DREG ((yyvsp[-5].reg)) && !IS_PREG ((yyvsp[-5].reg)) + && ((yyvsp[-2].reg).regno != REG_SP || !IS_ALLREG ((yyvsp[-5].reg)) || (yyvsp[-1].modcodes).x0 != 0)) + return yyerror ("Dreg or Preg expected in destination operand"); + + if (IS_IREG ((yyvsp[-2].reg))) + { + notethat ("dspLDST: dregs = [ iregs ]\n"); + (yyval.instr) = DSPLDST (&(yyvsp[-2].reg), 0, &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0); + } + else if (IS_DREG ((yyvsp[-5].reg))) + { + notethat ("LDST: dregs = [ pregs ]\n"); + (yyval.instr) = LDST (&(yyvsp[-2].reg), &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0, 0, 0); + } + else if (IS_PREG ((yyvsp[-5].reg))) + { + if (REG_SAME ((yyvsp[-5].reg), (yyvsp[-2].reg)) && (yyvsp[-1].modcodes).x0 != 2) + return yyerror ("Pregs can't be same"); + + notethat ("LDST: pregs = [ pregs ]\n"); + (yyval.instr) = LDST (&(yyvsp[-2].reg), &(yyvsp[-5].reg), (yyvsp[-1].modcodes).x0, 0, 1, 0); + } + else + { + notethat ("PushPopReg: allregs = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPREG (&(yyvsp[-5].reg), 0); + } + } +#line 6023 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 198: +#line 3419 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-10].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + if ((yyvsp[-7].reg).regno == REG_R7 + && IN_RANGE ((yyvsp[-5].expr), 0, 7) + && (yyvsp[-3].reg).regno == REG_P5 + && IN_RANGE ((yyvsp[-1].expr), 0, 5)) + { + notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim , P5 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-5].expr)), imm5 ((yyvsp[-1].expr)), 1, 1, 1); + } + else + return yyerror ("Bad register for PushPopMultiple"); + } +#line 6042 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 199: +#line 3435 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-6].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if ((yyvsp[-3].reg).regno == REG_R7 && IN_RANGE ((yyvsp[-1].expr), 0, 7)) + { + notethat ("PushPopMultiple: [ -- SP ] = (R7 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-1].expr)), 0, 1, 0, 1); + } + else if ((yyvsp[-3].reg).regno == REG_P5 && IN_RANGE ((yyvsp[-1].expr), 0, 6)) + { + notethat ("PushPopMultiple: [ -- SP ] = (P5 : reglim )\n"); + (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[-1].expr)), 0, 1, 1); + } + else + return yyerror ("Bad register for PushPopMultiple"); + } +#line 6064 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 200: +#line 3454 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[0].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + if ((yyvsp[-9].reg).regno == REG_R7 && (IN_RANGE ((yyvsp[-7].expr), 0, 7)) + && (yyvsp[-5].reg).regno == REG_P5 && (IN_RANGE ((yyvsp[-3].expr), 0, 6))) + { + notethat ("PushPopMultiple: (R7 : reglim , P5 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-7].expr)), imm5 ((yyvsp[-3].expr)), 1, 1, 0); + } + else + return yyerror ("Bad register range for PushPopMultiple"); + } +#line 6081 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 201: +#line 3468 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[0].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if ((yyvsp[-5].reg).regno == REG_R7 && IN_RANGE ((yyvsp[-3].expr), 0, 7)) + { + notethat ("PushPopMultiple: (R7 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (imm5 ((yyvsp[-3].expr)), 0, 1, 0, 0); + } + else if ((yyvsp[-5].reg).regno == REG_P5 && IN_RANGE ((yyvsp[-3].expr), 0, 6)) + { + notethat ("PushPopMultiple: (P5 : reglim ) = [ SP ++ ]\n"); + (yyval.instr) = PUSHPOPMULTIPLE (0, imm5 ((yyvsp[-3].expr)), 0, 1, 0); + } + else + return yyerror ("Bad register range for PushPopMultiple"); + } +#line 6103 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 202: +#line 3487 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-2].reg).regno != REG_SP) + yyerror ("Stack Pointer expected"); + + if (IS_ALLREG ((yyvsp[0].reg))) + { + notethat ("PushPopReg: [ -- SP ] = allregs\n"); + (yyval.instr) = PUSHPOPREG (&(yyvsp[0].reg), 1); + } + else + return yyerror ("Bad register for PushPopReg"); + } +#line 6120 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 203: +#line 3503 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_URANGE (16, (yyvsp[0].expr), 0, 4)) + (yyval.instr) = LINKAGE (0, uimm16s4 ((yyvsp[0].expr))); + else + return yyerror ("Bad constant for LINK"); + } +#line 6131 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 204: +#line 3511 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("linkage: UNLINK\n"); + (yyval.instr) = LINKAGE (1, 0); + } +#line 6140 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 205: +#line 3520 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL4 ((yyvsp[-4].expr)) && IS_LPPCREL10 ((yyvsp[-2].expr)) && IS_CREG ((yyvsp[0].reg))) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[-4].expr), &(yyvsp[0].reg), 0, (yyvsp[-2].expr), 0); + } + else + return yyerror ("Bad register or values for LSETUP"); + + } +#line 6155 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 206: +#line 3531 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL4 ((yyvsp[-6].expr)) && IS_LPPCREL10 ((yyvsp[-4].expr)) + && IS_PREG ((yyvsp[0].reg)) && IS_CREG ((yyvsp[-2].reg))) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[-6].expr), &(yyvsp[-2].reg), 1, (yyvsp[-4].expr), &(yyvsp[0].reg)); + } + else + return yyerror ("Bad register or values for LSETUP"); + } +#line 6170 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 207: +#line 3543 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_PCREL4 ((yyvsp[-8].expr)) && IS_LPPCREL10 ((yyvsp[-6].expr)) + && IS_PREG ((yyvsp[-2].reg)) && IS_CREG ((yyvsp[-4].reg)) + && EXPR_VALUE ((yyvsp[0].expr)) == 1) + { + notethat ("LoopSetup: LSETUP (pcrel4 , lppcrel10 ) counters = pregs >> 1\n"); + (yyval.instr) = LOOPSETUP ((yyvsp[-8].expr), &(yyvsp[-4].reg), 3, (yyvsp[-6].expr), &(yyvsp[-2].reg)); + } + else + return yyerror ("Bad register or values for LSETUP"); + } +#line 6186 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 208: +#line 3557 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_RELOC ((yyvsp[-1].expr))) + return yyerror ("Invalid expression in loop statement"); + if (!IS_CREG ((yyvsp[0].reg))) + return yyerror ("Invalid loop counter register"); + (yyval.instr) = bfin_gen_loop ((yyvsp[-1].expr), &(yyvsp[0].reg), 0, 0); + } +#line 6198 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 209: +#line 3565 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_RELOC ((yyvsp[-3].expr)) && IS_PREG ((yyvsp[0].reg)) && IS_CREG ((yyvsp[-2].reg))) + { + notethat ("Loop: LOOP expr counters = pregs\n"); + (yyval.instr) = bfin_gen_loop ((yyvsp[-3].expr), &(yyvsp[-2].reg), 1, &(yyvsp[0].reg)); + } + else + return yyerror ("Bad register or values for LOOP"); + } +#line 6212 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 210: +#line 3575 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_RELOC ((yyvsp[-5].expr)) && IS_PREG ((yyvsp[-2].reg)) && IS_CREG ((yyvsp[-4].reg)) && EXPR_VALUE ((yyvsp[0].expr)) == 1) + { + notethat ("Loop: LOOP expr counters = pregs >> 1\n"); + (yyval.instr) = bfin_gen_loop ((yyvsp[-5].expr), &(yyvsp[-4].reg), 3, &(yyvsp[-2].reg)); + } + else + return yyerror ("Bad register or values for LOOP"); + } +#line 6226 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 211: +#line 3587 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node_Value val; + val.i_value = (yyvsp[0].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; + } +#line 6241 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 212: +#line 3598 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_RELOC ((yyvsp[0].expr))) + return yyerror ("Invalid expression in LOOP_BEGIN statement"); + + bfin_loop_beginend ((yyvsp[0].expr), 1); + (yyval.instr) = 0; + } +#line 6253 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 213: +#line 3608 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node_Value val; + val.i_value = (yyvsp[0].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; + } +#line 6268 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 214: +#line 3619 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_RELOC ((yyvsp[0].expr))) + return yyerror ("Invalid expression in LOOP_END statement"); + + bfin_loop_beginend ((yyvsp[0].expr), 0); + (yyval.instr) = 0; + } +#line 6280 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 215: +#line 3630 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("psedoDEBUG: ABORT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 3, 0); + } +#line 6289 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 216: +#line 3636 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("pseudoDEBUG: DBG\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 7, 0); + } +#line 6298 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 217: +#line 3641 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("pseudoDEBUG: DBG REG_A\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, IS_A1 ((yyvsp[0].reg)), 0); + } +#line 6307 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 218: +#line 3646 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("pseudoDEBUG: DBG allregs\n"); + (yyval.instr) = bfin_gen_pseudodbg (0, (yyvsp[0].reg).regno & CODE_MASK, ((yyvsp[0].reg).regno & CLASS_MASK) >> 4); + } +#line 6316 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 219: +#line 3652 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[-1].reg))) + return yyerror ("Dregs expected"); + notethat ("pseudoDEBUG: DBGCMPLX (dregs )\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 6, ((yyvsp[-1].reg).regno & CODE_MASK) >> 4); + } +#line 6327 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 220: +#line 3660 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("psedoDEBUG: DBGHALT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 5, 0); + } +#line 6336 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 221: +#line 3666 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("psedoDEBUG: HLT\n"); + (yyval.instr) = bfin_gen_pseudodbg (3, 4, 0); + } +#line 6345 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 222: +#line 3672 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("pseudodbg_assert: DBGA (regs_lo/hi , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (IS_H ((yyvsp[-3].reg)), &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr))); + } +#line 6354 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 223: +#line 3678 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("pseudodbg_assert: DBGAH (regs , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (3, &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr))); + } +#line 6363 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 224: +#line 3684 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + notethat ("psedodbg_assert: DBGAL (regs , uimm16 )\n"); + (yyval.instr) = bfin_gen_pseudodbg_assert (2, &(yyvsp[-3].reg), uimm16 ((yyvsp[-1].expr))); + } +#line 6372 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 225: +#line 3690 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_UIMM ((yyvsp[0].expr), 8)) + return yyerror ("Constant out of range"); + notethat ("psedodbg_assert: OUTC uimm8\n"); + (yyval.instr) = bfin_gen_pseudochr (uimm8 ((yyvsp[0].expr))); + } +#line 6383 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 226: +#line 3698 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (!IS_DREG ((yyvsp[0].reg))) + return yyerror ("Dregs expected"); + notethat ("psedodbg_assert: OUTC dreg\n"); + (yyval.instr) = bfin_gen_pseudodbg (2, (yyvsp[0].reg).regno & CODE_MASK, 0); + } +#line 6394 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 227: +#line 3712 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[0].reg); + } +#line 6402 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 228: +#line 3716 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[0].reg); + } +#line 6410 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 229: +#line 3725 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.mod).MM = 0; + (yyval.mod).mod = 0; + } +#line 6419 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 230: +#line 3730 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.mod).MM = 1; + (yyval.mod).mod = (yyvsp[-1].value); + } +#line 6428 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 231: +#line 3735 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.mod).MM = 1; + (yyval.mod).mod = (yyvsp[-3].value); + } +#line 6437 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 232: +#line 3740 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.mod).MM = 0; + (yyval.mod).mod = (yyvsp[-1].value); + } +#line 6446 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 233: +#line 3745 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.mod).MM = 1; + (yyval.mod).mod = 0; + } +#line 6455 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 234: +#line 3752 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6463 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 235: +#line 3756 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6471 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 236: +#line 3762 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } +#line 6480 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 237: +#line 3767 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 0; + } +#line 6489 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 238: +#line 3772 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 1; + } +#line 6498 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 239: +#line 3777 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 1; + } +#line 6507 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 240: +#line 3785 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6515 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 241: +#line 3789 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6523 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 242: +#line 3795 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } +#line 6532 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 243: +#line 3800 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0; + } +#line 6541 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 244: +#line 3807 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 0; + } +#line 6551 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 245: +#line 3813 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 1; + } +#line 6561 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 246: +#line 3819 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; + (yyval.modcodes).x0 = 0; + (yyval.modcodes).aop = 1; + } +#line 6571 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 247: +#line 3827 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } +#line 6581 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 248: +#line 3833 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 2 + (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).x0 = 0; + } +#line 6591 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 249: +#line 3839 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0; + } +#line 6601 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 250: +#line 3845 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 2 + (yyvsp[-3].r0).r0; + (yyval.modcodes).s0 = (yyvsp[-1].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[-1].modcodes).x0; + } +#line 6611 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 251: +#line 3851 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 2 + (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = (yyvsp[-3].modcodes).s0; + (yyval.modcodes).x0 = (yyvsp[-3].modcodes).x0; + } +#line 6621 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 252: +#line 3859 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6629 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 253: +#line 3863 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6637 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 254: +#line 3867 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6645 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 255: +#line 3873 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6653 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 256: +#line 3877 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6661 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 257: +#line 3881 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6669 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 258: +#line 3887 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 0; + } +#line 6679 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 259: +#line 3893 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 3; + } +#line 6689 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 260: +#line 3899 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 1; + (yyval.modcodes).aop = 3; + } +#line 6699 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 261: +#line 3905 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 0; + (yyval.modcodes).aop = 3; + } +#line 6709 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 262: +#line 3911 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } +#line 6718 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 263: +#line 3916 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } +#line 6727 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 264: +#line 3923 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6735 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 265: +#line 3927 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6743 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 266: +#line 3933 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; + } +#line 6751 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 267: +#line 3937 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; + } +#line 6759 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 268: +#line 3944 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6767 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 269: +#line 3948 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6775 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 270: +#line 3952 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 3; + } +#line 6783 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 271: +#line 3956 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 2; + } +#line 6791 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 272: +#line 3962 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6799 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 273: +#line 3966 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6807 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 274: +#line 3973 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; + (yyval.modcodes).s0 = 1; + } +#line 6816 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 275: +#line 3978 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 0; + } +#line 6827 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 276: +#line 3985 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-3].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } +#line 6838 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 277: +#line 3992 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].value) != M_T) + return yyerror ("Bad modifier"); + (yyval.modcodes).r0 = 1; + (yyval.modcodes).s0 = 1; + } +#line 6849 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 278: +#line 4004 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6857 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 279: +#line 4008 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6865 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 280: +#line 4012 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 2; + } +#line 6873 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 281: +#line 4018 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6881 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 282: +#line 4022 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].value) == M_W32) + (yyval.r0).r0 = 1; + else + return yyerror ("Only (W32) allowed"); + } +#line 6892 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 283: +#line 4031 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6900 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 284: +#line 4035 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].value) == M_IU) + (yyval.r0).r0 = 3; + else + return yyerror ("(IU) expected"); + } +#line 6911 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 285: +#line 4044 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[-1].reg); + } +#line 6919 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 286: +#line 4050 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[-2].reg); + } +#line 6927 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 287: +#line 4059 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6935 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 288: +#line 4063 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6943 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 289: +#line 4070 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6951 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 290: +#line 4074 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6959 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 291: +#line 4078 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 2; + } +#line 6967 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 292: +#line 4082 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 3; + } +#line 6975 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 293: +#line 4089 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 6983 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 294: +#line 4093 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 6991 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 295: +#line 4100 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } +#line 7002 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 296: +#line 4108 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } +#line 7013 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 297: +#line 4116 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } +#line 7024 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 298: +#line 4124 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; + } +#line 7035 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 299: +#line 4132 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } +#line 7046 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 300: +#line 4139 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 1; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } +#line 7057 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 301: +#line 4146 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 0; /* aop. */ + } +#line 7068 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 302: +#line 4154 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0; /* HL. */ + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* x. */ + (yyval.modcodes).aop = 1; /* aop. */ + } +#line 7079 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 303: +#line 4164 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 0; /* HL. */ + } +#line 7088 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 304: +#line 4169 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 0; /* s. */ + (yyval.modcodes).x0 = 1; /* HL. */ + } +#line 7097 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 305: +#line 4174 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 0; /* HL. */ + } +#line 7106 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 306: +#line 4179 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).s0 = 1; /* s. */ + (yyval.modcodes).x0 = 1; /* HL. */ + } +#line 7115 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 307: +#line 4186 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).x0 = 2; + } +#line 7123 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 308: +#line 4190 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).x0 = 0; + } +#line 7131 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 309: +#line 4194 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).x0 = 1; + } +#line 7139 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 310: +#line 4203 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[-1].reg); + } +#line 7147 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 311: +#line 4210 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[-1].reg); + } +#line 7155 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 312: +#line 4217 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.reg) = (yyvsp[-1].reg); + } +#line 7163 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 313: +#line 4224 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_A1 ((yyvsp[0].reg)) && IS_EVEN ((yyvsp[-2].reg))) + return yyerror ("Cannot move A1 to even register"); + else if (!IS_A1 ((yyvsp[0].reg)) && !IS_EVEN ((yyvsp[-2].reg))) + return yyerror ("Cannot move A0 to odd register"); + + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 1; + (yyval.macfunc).n = IS_A1 ((yyvsp[0].reg)); + (yyval.macfunc).op = 3; + (yyval.macfunc).dst = (yyvsp[-2].reg); + (yyval.macfunc).s0.regno = 0; + (yyval.macfunc).s1.regno = 0; + } +#line 7182 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 314: +#line 4239 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.macfunc) = (yyvsp[0].macfunc); + (yyval.macfunc).w = 0; (yyval.macfunc).P = 0; + (yyval.macfunc).dst.regno = 0; + } +#line 7192 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 315: +#line 4245 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].macfunc).n && IS_EVEN ((yyvsp[-4].reg))) + return yyerror ("Cannot move A1 to even register"); + else if (!(yyvsp[-1].macfunc).n && !IS_EVEN ((yyvsp[-4].reg))) + return yyerror ("Cannot move A0 to odd register"); + + (yyval.macfunc) = (yyvsp[-1].macfunc); + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 1; + (yyval.macfunc).dst = (yyvsp[-4].reg); + } +#line 7208 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 316: +#line 4258 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if ((yyvsp[-1].macfunc).n && !IS_H ((yyvsp[-4].reg))) + return yyerror ("Cannot move A1 to low half of register"); + else if (!(yyvsp[-1].macfunc).n && IS_H ((yyvsp[-4].reg))) + return yyerror ("Cannot move A0 to high half of register"); + + (yyval.macfunc) = (yyvsp[-1].macfunc); + (yyval.macfunc).w = 1; + (yyval.macfunc).P = 0; + (yyval.macfunc).dst = (yyvsp[-4].reg); + } +#line 7224 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 317: +#line 4271 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_A1 ((yyvsp[0].reg)) && !IS_H ((yyvsp[-2].reg))) + return yyerror ("Cannot move A1 to low half of register"); + else if (!IS_A1 ((yyvsp[0].reg)) && IS_H ((yyvsp[-2].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[0].reg)); + (yyval.macfunc).op = 3; + (yyval.macfunc).dst = (yyvsp[-2].reg); + (yyval.macfunc).s0.regno = 0; + (yyval.macfunc).s1.regno = 0; + } +#line 7243 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 318: +#line 4289 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg)); + (yyval.macfunc).op = 0; + (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1; + } +#line 7254 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 319: +#line 4296 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg)); + (yyval.macfunc).op = 1; + (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1; + } +#line 7265 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 320: +#line 4303 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.macfunc).n = IS_A1 ((yyvsp[-1].reg)); + (yyval.macfunc).op = 2; + (yyval.macfunc).s0 = (yyvsp[0].macfunc).s0; + (yyval.macfunc).s1 = (yyvsp[0].macfunc).s1; + } +#line 7276 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 321: +#line 4313 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + if (IS_DREG ((yyvsp[-2].reg)) && IS_DREG ((yyvsp[0].reg))) + { + (yyval.macfunc).s0 = (yyvsp[-2].reg); + (yyval.macfunc).s1 = (yyvsp[0].reg); + } + else + return yyerror ("Dregs expected"); + } +#line 7290 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 322: +#line 4326 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 0; + } +#line 7298 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 323: +#line 4330 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 1; + } +#line 7306 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 324: +#line 4334 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 2; + } +#line 7314 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 325: +#line 4338 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.r0).r0 = 3; + } +#line 7322 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 326: +#line 4345 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = (yyvsp[0].reg).regno; + (yyval.modcodes).x0 = (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = 0; + } +#line 7332 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 327: +#line 4351 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0x18; + (yyval.modcodes).x0 = (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = 0; + } +#line 7342 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 328: +#line 4357 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = (yyvsp[-2].reg).regno; + (yyval.modcodes).x0 = (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = 1; + } +#line 7352 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 329: +#line 4363 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.modcodes).r0 = 0x18; + (yyval.modcodes).x0 = (yyvsp[-1].r0).r0; + (yyval.modcodes).s0 = 1; + } +#line 7362 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 330: +#line 4373 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node_Value val; + val.s_value = S_GET_NAME((yyvsp[0].symbol)); + (yyval.expr) = Expr_Node_Create (Expr_Node_Reloc, val, NULL, NULL); + } +#line 7372 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 331: +#line 4382 "./config/bfin-parse.y" /* yacc.c:1661 */ + { (yyval.value) = BFD_RELOC_BFIN_GOT; } +#line 7378 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 332: +#line 4384 "./config/bfin-parse.y" /* yacc.c:1661 */ + { (yyval.value) = BFD_RELOC_BFIN_GOT17M4; } +#line 7384 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 333: +#line 4386 "./config/bfin-parse.y" /* yacc.c:1661 */ + { (yyval.value) = BFD_RELOC_BFIN_FUNCDESC_GOT17M4; } +#line 7390 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 334: +#line 4390 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node_Value val; + val.i_value = (yyvsp[0].value); + (yyval.expr) = Expr_Node_Create (Expr_Node_GOT_Reloc, val, (yyvsp[-2].expr), NULL); + } +#line 7400 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 335: +#line 4398 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[0].expr); + } +#line 7408 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 336: +#line 4402 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[0].expr); + } +#line 7416 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 337: +#line 4409 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[-2].expr); + } +#line 7424 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 338: +#line 4415 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + Expr_Node_Value val; + val.i_value = (yyvsp[0].value); + (yyval.expr) = Expr_Node_Create (Expr_Node_Constant, val, NULL, NULL); + } +#line 7434 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 339: +#line 4421 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[0].expr); + } +#line 7442 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 340: +#line 4425 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[-1].expr); + } +#line 7450 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 341: +#line 4429 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = unary (Expr_Op_Type_COMP, (yyvsp[0].expr)); + } +#line 7458 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 342: +#line 4433 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = unary (Expr_Op_Type_NEG, (yyvsp[0].expr)); + } +#line 7466 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 343: +#line 4439 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[0].expr); + } +#line 7474 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 344: +#line 4445 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Mult, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7482 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 345: +#line 4449 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Div, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7490 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 346: +#line 4453 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Mod, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7498 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 347: +#line 4457 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Add, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7506 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 348: +#line 4461 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Sub, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7514 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 349: +#line 4465 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Lshift, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7522 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 350: +#line 4469 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_Rshift, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7530 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 351: +#line 4473 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_BAND, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7538 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 352: +#line 4477 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_LOR, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7546 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 353: +#line 4481 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = binary (Expr_Op_Type_BOR, (yyvsp[-2].expr), (yyvsp[0].expr)); + } +#line 7554 "bfin-parse.c" /* yacc.c:1661 */ + break; + + case 354: +#line 4485 "./config/bfin-parse.y" /* yacc.c:1661 */ + { + (yyval.expr) = (yyvsp[0].expr); + } +#line 7562 "bfin-parse.c" /* yacc.c:1661 */ + break; + + +#line 7566 "bfin-parse.c" /* yacc.c:1661 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + 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: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead 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 lookahead 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 whose 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 (!yypact_value_is_default (yyn)) + { + 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); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* 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; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose 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 + return yyresult; +} +#line 4491 "./config/bfin-parse.y" /* yacc.c:1906 */ + + +EXPR_T +mkexpr (int x, SYMBOL_T s) +{ + EXPR_T e = XNEW (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 (const 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..ba649fe28ed --- /dev/null +++ b/gas/bfin-parse.h @@ -0,0 +1,422 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 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 . */ + +/* 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. */ + +#ifndef YY_YY_BFIN_PARSE_H_INCLUDED +# define YY_YY_BFIN_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 444 "./config/bfin-parse.y" /* yacc.c:1915 */ + + 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 412 "bfin-parse.h" /* yacc.c:1915 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_BFIN_PARSE_H_INCLUDED */ diff --git a/gas/configure b/gas/configure index db24db5a865..ce7091e33b8 100755 --- a/gas/configure +++ b/gas/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for gas 2.27.90. +# Generated by GNU Autoconf 2.64 for gas 2.28. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software @@ -556,8 +556,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gas' PACKAGE_TARNAME='gas' -PACKAGE_VERSION='2.27.90' -PACKAGE_STRING='gas 2.27.90' +PACKAGE_VERSION='2.28' +PACKAGE_STRING='gas 2.28' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1330,7 +1330,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gas 2.27.90 to adapt to many kinds of systems. +\`configure' configures gas 2.28 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1401,7 +1401,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gas 2.27.90:";; + short | recursive ) echo "Configuration of gas 2.28:";; esac cat <<\_ACEOF @@ -1523,7 +1523,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gas configure 2.27.90 +gas configure 2.28 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. @@ -1933,7 +1933,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gas $as_me 2.27.90, which was +It was created by gas $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -3742,7 +3742,7 @@ fi # Define the identity of the package. PACKAGE='gas' - VERSION='2.27.90' + VERSION='2.28' cat >>confdefs.h <<_ACEOF @@ -15212,7 +15212,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gas $as_me 2.27.90, which was +This file was extended by gas $as_me 2.28, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15276,7 +15276,7 @@ Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -gas config.status 2.27.90 +gas config.status 2.28 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff --git a/gas/doc/as.1 b/gas/doc/as.1 new file mode 100644 index 00000000000..132e8e3ca82 --- /dev/null +++ b/gas/doc/as.1 @@ -0,0 +1,2073 @@ +.\" 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 "2017-03-02" "binutils-2.28" "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\-\-no\-pad\-sections\fR] + [\fB\-o\fR \fIobjfile\fR] [\fB\-R\fR] + [\fB\-\-hash\-size\fR=\fI\s-1NUM\s0\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\-\-sectname\-subst\fR] [\fB\-\-size\-check=[error|warning]\fR] + [\fB\-\-elf\-stt\-common=[no|yes]\fR] + [\fB\-\-target\-help\fR] [\fItarget-options\fR] + [\fB\-\-\fR|\fIfiles\fR ...] +.SH "TARGET" +.IX Header "TARGET" +\&\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\-mcpu=\fR\fIcpu\fR] + [\fB\-mA6\fR|\fB\-mARC600\fR|\fB\-mARC601\fR|\fB\-mA7\fR|\fB\-mARC700\fR|\fB\-mEM\fR|\fB\-mHS\fR] + [\fB\-mcode\-density\fR] + [\fB\-mrelax\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\-mignore\-branch\-isa\fR] [\fB\-mno\-ignore\-branch\-isa\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\-mdspr3\fR] [\fB\-mno\-dspr3\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\-mpower9\fR|\fB\-mpwr9\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 RISC-V options:\fR + [\fB\-march\fR=\fI\s-1ISA\s0\fR] + [\fB\-mabi\fR=\fI\s-1ABI\s0\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\-Aleon\fR|\fB\-Asparclet\fR|\fB\-Asparclite\fR + \fB\-Av8plus\fR|\fB\-Av8plusa\fR|\fB\-Av8plusb\fR|\fB\-Av8plusc\fR|\fB\-Av8plusd\fR + \fB\-Av8plusv\fR|\fB\-Av8plusm\fR|\fB\-Av9\fR|\fB\-Av9a\fR|\fB\-Av9b\fR|\fB\-Av9c\fR + \fB\-Av9d\fR|\fB\-Av9e\fR|\fB\-Av9v\fR|\fB\-Av9m\fR|\fB\-Asparc\fR|\fB\-Asparcvis\fR + \fB\-Asparcvis2\fR|\fB\-Asparcfmaf\fR|\fB\-Asparcima\fR|\fB\-Asparcvis3\fR + \fB\-Asparcvisr\fR|\fB\-Asparc5\fR] + [\fB\-xarch=v8plus\fR|\fB\-xarch=v8plusa\fR]|\fB\-xarch=v8plusb\fR|\fB\-xarch=v8plusc\fR + \fB\-xarch=v8plusd\fR|\fB\-xarch=v8plusv\fR|\fB\-xarch=v8plusm\fR|\fB\-xarch=v9\fR + \fB\-xarch=v9a\fR|\fB\-xarch=v9b\fR|\fB\-xarch=v9c\fR|\fB\-xarch=v9d\fR|\fB\-xarch=v9e\fR + \fB\-xarch=v9v\fR|\fB\-xarch=v9m\fR|\fB\-xarch=sparc\fR|\fB\-xarch=sparcvis\fR + \fB\-xarch=sparcvis2\fR|\fB\-xarch=sparcfmaf\fR|\fB\-xarch=sparcima\fR + \fB\-xarch=sparcvis3\fR|\fB\-xarch=sparcvisr\fR|\fB\-xarch=sparc5\fR + \fB\-bump\fR] + [\fB\-32\fR|\fB\-64\fR] + [\fB\-\-enforce\-aligned\-data\fR][\fB\-\-dcti\-couples\-detect\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 Visium options:\fR + [\fB\-mtune=\fR\fIarch\fR] +.PP +\&\fITarget Xtensa options:\fR + [\fB\-\-[no\-]text\-section\-literals\fR] [\fB\-\-[no\-]auto\-litpools\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 with \s-1SHF_COMPRESSED\s0 from the +\&\s-1ELF ABI. \s0 The resulting object file may not be compatible with older +linkers and object file utilities. Note if compression would make a +given section \fIlarger\fR then it is not compressed. +.IP "\fB\-\-compress\-debug\-sections=none\fR" 4 +.IX Item "--compress-debug-sections=none" +.PD 0 +.IP "\fB\-\-compress\-debug\-sections=zlib\fR" 4 +.IX Item "--compress-debug-sections=zlib" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gnu\fR" 4 +.IX Item "--compress-debug-sections=zlib-gnu" +.IP "\fB\-\-compress\-debug\-sections=zlib\-gabi\fR" 4 +.IX Item "--compress-debug-sections=zlib-gabi" +.PD +These options control how \s-1DWARF\s0 debug sections are compressed. +\&\fB\-\-compress\-debug\-sections=none\fR is equivalent to +\&\fB\-\-nocompress\-debug\-sections\fR. +\&\fB\-\-compress\-debug\-sections=zlib\fR and +\&\fB\-\-compress\-debug\-sections=zlib\-gabi\fR are equivalent to +\&\fB\-\-compress\-debug\-sections\fR. +\&\fB\-\-compress\-debug\-sections=zlib\-gnu\fR compresses \s-1DWARF\s0 debug +sections using zlib. The debug sections are renamed to begin with +\&\fB.zdebug\fR. Note if compression would make a given section +\&\fIlarger\fR then it is not compressed nor renamed. +.IP "\fB\-\-nocompress\-debug\-sections\fR" 4 +.IX Item "--nocompress-debug-sections" +Do not compress \s-1DWARF\s0 debug sections. This is usually the default for all +targets except the x86/x86_64, but a configure time option can be used to +override this. +.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\-\-elf\-stt\-common=no\fR" 4 +.IX Item "--elf-stt-common=no" +.PD 0 +.IP "\fB\-\-elf\-stt\-common=yes\fR" 4 +.IX Item "--elf-stt-common=yes" +.PD +These options control whether the \s-1ELF\s0 assembler should generate common +symbols with the \f(CW\*(C`STT_COMMON\*(C'\fR type. The default can be controlled +by a configure option \fB\-\-enable\-elf\-stt\-common\fR. +.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\-\-no\-pad\-sections\fR" 4 +.IX Item "--no-pad-sections" +Stop the assembler for padding the ends of output sections to the alignment +of that section. The default is to pad the sections, but this can waste space +which might be needed on targets which have tight memory constraints. +.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. +.IP "\fB\-\-hash\-size=\fR\fInumber\fR" 4 +.IX Item "--hash-size=number" +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\-\-sectname\-subst\fR" 4 +.IX Item "--sectname-subst" +Honor substitution sequences in section names. +.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\-a35\*(C'\fR, +\&\f(CW\*(C`cortex\-a53\*(C'\fR, +\&\f(CW\*(C`cortex\-a57\*(C'\fR, +\&\f(CW\*(C`cortex\-a72\*(C'\fR, +\&\f(CW\*(C`cortex\-a73\*(C'\fR, +\&\f(CW\*(C`exynos\-m1\*(C'\fR, +\&\f(CW\*(C`falkor\*(C'\fR, +\&\f(CW\*(C`qdf24xx\*(C'\fR, +\&\f(CW\*(C`thunderx\*(C'\fR, +\&\f(CW\*(C`vulcan\*(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 +following architecture names are recognized: \f(CW\*(C`armv8\-a\*(C'\fR, +\&\f(CW\*(C`armv8.1\-a\*(C'\fR, \f(CW\*(C`armv8.2\-a\*(C'\fR and \f(CW\*(C`armv8.3\-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\-mcpu=\fR\fIcpu\fR" 4 +.IX Item "-mcpu=cpu" +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. +.IP "\fB\-mcode\-density\fR" 4 +.IX Item "-mcode-density" +Enable Code Density extenssion instructions. +.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. +.IP "\fB\-mach=\fR\fIname\fR" 4 +.IX Item "-mach=name" +Sets the H8300 machine variant. The following machine names +are recognised: +\&\f(CW\*(C`h8300h\*(C'\fR, +\&\f(CW\*(C`h8300hn\*(C'\fR, +\&\f(CW\*(C`h8300s\*(C'\fR, +\&\f(CW\*(C`h8300sn\*(C'\fR, +\&\f(CW\*(C`h8300sx\*(C'\fR and +\&\f(CW\*(C`h8300sxn\*(C'\fR. +.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`iamcu\*(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`znver1\*(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(CW687\fR, +\&\f(CW\*(C`no87\*(C'\fR, +\&\f(CW\*(C`no287\*(C'\fR, +\&\f(CW\*(C`no387\*(C'\fR, +\&\f(CW\*(C`no687\*(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`nosse2\*(C'\fR, +\&\f(CW\*(C`nosse3\*(C'\fR, +\&\f(CW\*(C`nossse3\*(C'\fR, +\&\f(CW\*(C`nosse4.1\*(C'\fR, +\&\f(CW\*(C`nosse4.2\*(C'\fR, +\&\f(CW\*(C`nosse4\*(C'\fR, +\&\f(CW\*(C`avx\*(C'\fR, +\&\f(CW\*(C`avx2\*(C'\fR, +\&\f(CW\*(C`noavx\*(C'\fR, +\&\f(CW\*(C`noavx2\*(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`rdpid\*(C'\fR, +\&\f(CW\*(C`ptwrite\*(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`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`avx512_4fmaps\*(C'\fR, +\&\f(CW\*(C`avx512_4vnniw\*(C'\fR, +\&\f(CW\*(C`avx512_vpopcntdq\*(C'\fR, +\&\f(CW\*(C`noavx512f\*(C'\fR, +\&\f(CW\*(C`noavx512cd\*(C'\fR, +\&\f(CW\*(C`noavx512er\*(C'\fR, +\&\f(CW\*(C`noavx512pf\*(C'\fR, +\&\f(CW\*(C`noavx512vl\*(C'\fR, +\&\f(CW\*(C`noavx512bw\*(C'\fR, +\&\f(CW\*(C`noavx512dq\*(C'\fR, +\&\f(CW\*(C`noavx512ifma\*(C'\fR, +\&\f(CW\*(C`noavx512vbmi\*(C'\fR, +\&\f(CW\*(C`noavx512_4fmaps\*(C'\fR, +\&\f(CW\*(C`noavx512_4vnniw\*(C'\fR, +\&\f(CW\*(C`noavx512_vpopcntdq\*(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`mwaitx\*(C'\fR, +\&\f(CW\*(C`clzero\*(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\-mno\-shared\fR" 4 +.IX Item "-mno-shared" +On \s-1ELF\s0 target, the assembler normally optimizes out non-PLT relocations +against defined non-weak global branch targets with default visibility. +The \fB\-mshared\fR option tells the assembler to generate code which +may go into a shared library where all non-weak global branch targets +with default visibility can be preempted. The resulting code is +slightly bigger. This option only affects the handling of branch +instructions. +.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\-mfence\-as\-lock\-add=\fR\fIno\fR" 4 +.IX Item "-mfence-as-lock-add=no" +.PD 0 +.IP "\fB\-mfence\-as\-lock\-add=\fR\fIyes\fR" 4 +.IX Item "-mfence-as-lock-add=yes" +.PD +These options control how the assembler should encode lfence, mfence and +sfence. +\&\fB\-mfence\-as\-lock\-add=\fR\fIyes\fR will encode lfence, mfence and +sfence as \fBlock addl \f(CB$0x0\fB, (%rsp)\fR in 64\-bit mode and +\&\fBlock addl \f(CB$0x0\fB, (%esp)\fR in 32\-bit mode. +\&\fB\-mfence\-as\-lock\-add=\fR\fIno\fR will encode lfence, mfence and +sfence as usual, which is the default. +.IP "\fB\-mrelax\-relocations=\fR\fIno\fR" 4 +.IX Item "-mrelax-relocations=no" +.PD 0 +.IP "\fB\-mrelax\-relocations=\fR\fIyes\fR" 4 +.IX Item "-mrelax-relocations=yes" +.PD +These options control whether the assembler should generate relax +relocations, R_386_GOT32X, in 32\-bit mode, or R_X86_64_GOTPCRELX and +R_X86_64_REX_GOTPCRELX, in 64\-bit mode. +\&\fB\-mrelax\-relocations=\fR\fIyes\fR will generate relax relocations. +\&\fB\-mrelax\-relocations=\fR\fIno\fR will not generate relax +relocations. The default can be controlled by a configure option +\&\fB\-\-enable\-x86\-relax\-relocations\fR. +.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. +.IP "\fB\-mamd64\fR" 4 +.IX Item "-mamd64" +.PD 0 +.IP "\fB\-mintel64\fR" 4 +.IX Item "-mintel64" +.PD +This option specifies that the assembler should accept only \s-1AMD64\s0 or +Intel64 \s-1ISA\s0 in 64\-bit mode. The default is to accept both. +.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. +.IP "\fB\-march=\fR\fIarchitecture\fR" 4 +.IX Item "-march=architecture" +This option specifies the target architecture. The assembler issues +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: +\&\f(CW\*(C`r1\*(C'\fR, +\&\f(CW\*(C`r2\*(C'\fR. +The default is \f(CW\*(C`r1\*(C'\fR. +.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\-m821, \-m850, \-m860\fR" 4 +.IX Item "-m821, -m850, -m860" +Generate code for PowerPC 821/850/860. +.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\-mpower9, \-mpwr9\fR" 4 +.IX Item "-mpower9, -mpwr9" +Generate code for Power9 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 +The following options are available when as is configured for a +RISC-V processor. +.IP "\fB\-march=ISA\fR" 4 +.IX Item "-march=ISA" +Select the base isa, as specified by \s-1ISA. \s0 For example \-march=rv32ima. +.IP "\fB\-mabi=ABI\fR" 4 +.IX Item "-mabi=ABI" +Selects the \s-1ABI,\s0 which is either \*(L"ilp32\*(R" or \*(L"lp64\*(R", optionally followed +by \*(L"f\*(R", \*(L"d\*(R", or \*(L"q\*(R" to indicate single-precision, double-precision, or +quad-precision floating-point calling convention, or none to indicate +the soft-float calling convention. +.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, \fBg5\fR (or +\&\fBarch3\fR), \fBg6\fR, \fBz900\fR (or \fBarch5\fR), \fBz990\fR (or +\&\fBarch6\fR), \fBz9\-109\fR, \fBz9\-ec\fR (or \fBarch7\fR), \fBz10\fR (or +\&\fBarch8\fR), \fBz196\fR (or \fBarch9\fR), \fBzEC12\fR (or \fBarch10\fR), +\&\fBz13\fR (or \fBarch11\fR), or \fBarch12\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 option is available when as is configured for a Visium +processor. +.IP "\fB\-mtune=\fR\fIarch\fR" 4 +.IX Item "-mtune=arch" +This option specifies the target architecture. If an attempt is made to +assemble an instruction that will not execute on the target architecture, +the assembler will issue an error message. +.Sp +The following names are recognized: +\&\f(CW\*(C`mcm24\*(C'\fR +\&\f(CW\*(C`mcm\*(C'\fR +\&\f(CW\*(C`gr5\*(C'\fR +\&\f(CW\*(C`gr6\*(C'\fR +.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. Literals are grouped into +pools following \f(CW\*(C`.literal_position\*(C'\fR directives or preceding +\&\f(CW\*(C`ENTRY\*(C'\fR instructions. 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\-\-auto\-litpools | \-\-no\-auto\-litpools\fR" 4 +.IX Item "--auto-litpools | --no-auto-litpools" +Control the treatment of literal pools. The default is +\&\fB\-\-no\-auto\-litpools\fR, which in the absence of +\&\fB\-\-text\-section\-literals\fR 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\-\-auto\-litpools\fR, the literals are interspersed +in the text section in order to keep them as close as possible to their +references, explicit \f(CW\*(C`.literal_position\*(C'\fR directives are not +required. This may be necessary for very large functions, where single +literal pool at the beginning of the function may not be reachable by +\&\f(CW\*(C`L32R\*(C'\fR instructions at the end. 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. +When used together with \fB\-\-text\-section\-literals\fR, +\&\fB\-\-auto\-litpools\fR takes precedence. +.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\-2017 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..ca4fa5b50e7 --- /dev/null +++ b/gas/doc/as.info @@ -0,0 +1,28078 @@ +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-2017 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.28. + + 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] + [-no-pad-sections] + [-o OBJFILE] [-R] + [-hash-size=NUM] [-reduce-memory-overheads] + [-statistics] + [-v] [-version] [-version] + [-W] [-warn] [-fatal-warnings] [-w] [-x] + [-Z] [@FILE] + [-sectname-subst] [-size-check=[error|warning]] + [-elf-stt-common=[no|yes]] + [-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:_ + [-mcpu=CPU] + [-mA6|-mARC600|-mARC601|-mA7|-mARC700|-mEM|-mHS] + [-mcode-density] + [-mrelax] + [-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] + [-mignore-branch-isa] [-mno-ignore-branch-isa] + [-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] + [-mdspr3] [-mno-dspr3] + [-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|-mpower9|-mpwr9-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 RISC-V options:_ + [-march=ISA] + [-mabi=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|-Aleon|-Asparclet|-Asparclite + -Av8plus|-Av8plusa|-Av8plusb|-Av8plusc|-Av8plusd + -Av8plusv|-Av8plusm|-Av9|-Av9a|-Av9b|-Av9c + -Av9d|-Av9e|-Av9v|-Av9m|-Asparc|-Asparcvis + -Asparcvis2|-Asparcfmaf|-Asparcima|-Asparcvis3 + -Asparcvisr|-Asparc5] + [-xarch=v8plus|-xarch=v8plusa]|-xarch=v8plusb|-xarch=v8plusc + -xarch=v8plusd|-xarch=v8plusv|-xarch=v8plusm|-xarch=v9 + -xarch=v9a|-xarch=v9b|-xarch=v9c|-xarch=v9d|-xarch=v9e + -xarch=v9v|-xarch=v9m|-xarch=sparc|-xarch=sparcvis + -xarch=sparcvis2|-xarch=sparcfmaf|-xarch=sparcima + -xarch=sparcvis3|-xarch=sparcvisr|-xarch=sparc5 + -bump] + [-32|-64] + [-enforce-aligned-data][-dcti-couples-detect] + + _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 Visium options:_ + [-mtune=ARCH] + + _Target Xtensa options:_ + [-[no-]text-section-literals] [-[no-]auto-litpools] + [-[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 with SHF_COMPRESSED from + the ELF ABI. The resulting object file may not be compatible with + older linkers and object file utilities. Note if compression + would make a given section _larger_ then it is not compressed. + +`--compress-debug-sections=none' +`--compress-debug-sections=zlib' +`--compress-debug-sections=zlib-gnu' +`--compress-debug-sections=zlib-gabi' + These options control how DWARF debug sections are compressed. + `--compress-debug-sections=none' is equivalent to + `--nocompress-debug-sections'. `--compress-debug-sections=zlib' + and `--compress-debug-sections=zlib-gabi' are equivalent to + `--compress-debug-sections'. `--compress-debug-sections=zlib-gnu' + compresses DWARF debug sections using zlib. The debug sections + are renamed to begin with `.zdebug'. Note if compression would + make a given section _larger_ then it is not compressed nor + renamed. + +`--nocompress-debug-sections' + Do not compress DWARF debug sections. This is usually the default + for all targets except the x86/x86_64, but a configure time option + can be used to override this. + +`-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. + +`--elf-stt-common=no' +`--elf-stt-common=yes' + These options control whether the ELF assembler should generate + common symbols with the `STT_COMMON' type. The default can be + controlled by a configure option `--enable-elf-stt-common'. + +`--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. + +`--no-pad-sections' + Stop the assembler for padding the ends of output sections to the + alignment of that section. The default is to pad the sections, + but this can waste space which might be needed on targets which + have tight memory constraints. + +`-o OBJFILE' + Name the object-file output from `as' OBJFILE. + +`-R' + Fold the data section into the text section. + +`--hash-size=NUMBER' + 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. + +`--sectname-subst' + Honor substitution sequences in section names. *Note `.section + NAME': Section Name Substitutions. + +`--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. + +`-mcpu=CPU' + This option selects the core processor variant. + +`-EB | -EL' + Select either big-endian (-EB) or little-endian (-EL) output. + +`-mcode-density' + Enable Code Density extenssion instructions. + + 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. + +`-mdspr3' +`-mno-dspr3' + Generate code for the DSP Release 3 Application Specific Extension. + This option implies `-mdsp' and `-mdspr2'. This tells the + assembler to accept DSP Release 3 instructions. `-mno-dspr3' + 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. + +`-mignore-branch-isa' +`-mno-ignore-branch-isa' + Ignore branch checks for invalid transitions between ISA modes. + The semantics of branches does not provide for an ISA mode switch, + so in most cases the ISA mode a branch has been encoded for has to + be the same as the ISA mode of the branch's target label. + Therefore GAS has checks implemented that verify in branch + assembly that the two ISA modes match. `-mignore-branch-isa' + disables these checks. By default `-mno-ignore-branch-isa' is + selected, causing any invalid branch requiring a transition + between ISA modes 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. + + *Note RISC-V-Opts::, for the options available when as is configured +for a RISC-V 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, `g5' (or + `arch3'), `g6', `z900' (or `arch5'), `z990' (or `arch6'), + `z9-109', `z9-ec' (or `arch7'), `z10' (or `arch8'), `z196' (or + `arch9'), `zEC12' (or `arch10'), `z13' (or `arch11'), or `arch12'. + +`-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 Visium Options::, for the options available when as is +configured for a Visium 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 both a logical file name (*note +`.file': File.) and a logical line number (*note `.line': Line.) have +been given then they will be used, otherwise the file name and line +number in the current assembler source file will be used. The message +text is intended to be self explanatory (in the grand Unix tradition). + + Note the file name must be set via the logical version of the `.file' +directive, not the DWARF2 version of the `.file' directive. For +example: + + .file 2 "bar.c" + error_assembler_source + .file "foo.c" + .line 30 + error_c_source + + produces this output: + + Assembler messages: + asm.s:2: Error: no such instruction: `error_assembler_source' + foo.c:31: Error: no such instruction: `error_c_source' + + 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 +* no-pad-sections:: --no-pad-sections to stop section padding +* 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: no-pad-sections, 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: no-pad-sections, Next: o, Prev: MD, Up: Invoking + +2.11 Output Section Padding +=========================== + +Normally the assembler will pad the end of each output section up to its +alignment boundary. But this can waste space, which can be significant +on memory constrained targets. So the `--no-pad-sections' option will +disable this behaviour. + + +File: as.info, Node: o, Next: R, Prev: no-pad-sections, Up: Invoking + +2.12 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.13 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.14 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.15 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.16 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.17 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.18 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::. + +Symbol names may also be enclosed in double quote `"' characters. In +such cases any characters are allowed, except for the NUL character. +If a double quote character is to be included in the symbol name it +must be preceeded by a backslash `\' character. + + +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. + +`backslash-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. Some backslash escapes apply to +characters, `\b', `\f', `\n', `\r', `\t', and `\"' with the same meaning +as for strings, plus `\'' for a single quote. 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'. + + Symbol names do not start with a digit. An exception to this rule +is made for Local Labels. See below. + + 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.) to retain the local symbols in the object files. + +Local Labels +------------ + +Local labels are different from local symbols. 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 non-negative 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 +------------------- + +On some targets `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 names are case insensitive for most targets, and usually written 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', etc +* 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' + +* Zero:: `.zero SIZE' +* 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 directives +===================== + +7.8.1 `.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.8.2 `.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.9 `.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.10 CFI directives +=================== + +7.10.1 `.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'. + + On targets that support compact unwinding tables these can be +generated by specifying `.eh_frame_entry' instead of `.eh_frame'. + + Some targets may support an additional name, such as `.c6xabi.exidx' +which is used by the target. + + The `.cfi_sections' directive can be repeated, with the same or +different arguments, provided that CFI generation has not yet started. +Once CFI generation has started however the section list is fixed and +any attempts to redefine it will result in an error. + +7.10.2 `.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.10.3 `.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.10.4 `.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.10.5 `.cfi_personality_id ID' +------------------------------- + +`cfi_personality_id' defines a personality routine by its index as +defined in a compact unwinding format. Only valid when generating +compact EH frames (i.e. with `.cfi_sections eh_frame_entry'. + +7.10.6 `.cfi_fde_data [OPCODE1 [, ...]]' +---------------------------------------- + +`cfi_fde_data' is used to describe the compact unwind opcodes to be +used for the current function. These are emitted inline in the +`.eh_frame_entry' section if small enough and there is no LSDA, or in +the `.gnu.extab' section otherwise. Only valid when generating compact +EH frames (i.e. with `.cfi_sections eh_frame_entry'. + +7.10.7 `.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'), the second argument is not present, otherwise the +second argument should be a constant or a symbol name. The default +after `.cfi_startproc' is `.cfi_lsda 0xff', meaning that no LSDA is +present. + +7.10.8 `.cfi_inline_lsda' [ALIGN] +--------------------------------- + +`.cfi_inline_lsda' marks the start of a LSDA data section and switches +to the corresponding `.gnu.extab' section. Must be preceded by a CFI +block containing a `.cfi_lsda' directive. Only valid when generating +compact EH frames (i.e. with `.cfi_sections eh_frame_entry'. + + The table header and unwinding opcodes will be generated at this +point, so that they are immediately followed by the LSDA data. The +symbol referenced by the `.cfi_lsda' directive should still be defined +in case a fallback FDE based encoding is used. The LSDA data is +terminated by a section directive. + + The optional ALIGN argument specifies the alignment required. The +alignment is specified as a power of two, as with the `.p2align' +directive. + +7.10.9 `.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.10.10 `.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.10.11 `.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.10.12 `.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.10.13 `.cfi_offset REGISTER, OFFSET' +-------------------------------------- + +Previous value of REGISTER is saved at offset OFFSET from CFA. + +7.10.14 `.cfi_val_offset REGISTER, OFFSET' +------------------------------------------ + +Previous value of REGISTER is CFA + OFFSET. + +7.10.15 `.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.10.16 `.cfi_register REGISTER1, REGISTER2' +-------------------------------------------- + +Previous value of REGISTER1 is saved in register REGISTER2. + +7.10.17 `.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.10.18 `.cfi_undefined REGISTER' +--------------------------------- + +From now on the previous value of REGISTER can't be restored anymore. + +7.10.19 `.cfi_same_value REGISTER' +---------------------------------- + +Current value of REGISTER is the same like in the previous frame, i.e. +no restoration needed. + +7.10.20 `.cfi_remember_state' and `.cfi_restore_state' +------------------------------------------------------ + +`.cfi_remember_state' pushes the set of rules for every register onto an +implicit stack, while `.cfi_restore_state' pops them off the stack and +places them in the current row. This is useful for situations where +you have multiple `.cfi_*' directives that need to be undone due to the +control flow of the program. For example, we could have something like +this (assuming the CFA is the value of `rbp'): + + je label + popq %rbx + .cfi_restore %rbx + popq %r12 + .cfi_restore %r12 + popq %rbp + .cfi_restore %rbp + .cfi_def_cfa %rsp, 8 + ret + label: + /* Do something else */ + + Here, we want the `.cfi' directives to affect only the rows +corresponding to the instructions before `label'. This means we'd have +to add multiple `.cfi' directives after `label' to recreate the +original save locations of the registers, as well as setting the CFA +back to the value of `rbp'. This would be clumsy, and result in a +larger binary size. Instead, we can write: + + je label + popq %rbx + .cfi_remember_state + .cfi_restore %rbx + popq %r12 + .cfi_restore %r12 + popq %rbp + .cfi_restore %rbp + .cfi_def_cfa %rsp, 8 + ret + label: + .cfi_restore_state + /* Do something else */ + + That way, the rules for the instructions after `label' will be the +same as before the first `.cfi_restore' without having to use multiple +`.cfi' directives. + +7.10.21 `.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.10.22 `.cfi_signal_frame' +--------------------------- + +Mark current function as signal trampoline. + +7.10.23 `.cfi_window_save' +-------------------------- + +SPARC register window has been saved. + +7.10.24 `.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.10.25 `.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.11 `.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.12 `.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.13 `.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.14 `.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.15 `.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.16 `.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.17 `.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.18 `.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.19 `.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.20 `.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.21 `.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.22 `.endfunc' +=============== + +`.endfunc' marks the end of a function specified with `.func'. + + +File: as.info, Node: Endif, Next: Equ, Prev: Endfunc, Up: Pseudo Ops + +7.23 `.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.24 `.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.25 `.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.26 `.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.27 `.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.28 `.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.29 `.exitm' +============= + +Exit early from the current macro definition. *Note Macro::. + + +File: as.info, Node: Extern, Next: Fail, Prev: Exitm, Up: Pseudo Ops + +7.30 `.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.31 `.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.32 `.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.33 `.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.34 `.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.35 `.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.36 `.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.37 `.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.38 `.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.39 `.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.40 `.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.41 `.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.42 `.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.43 `.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.44 `.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.45 `.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.46 `.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.47 `.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.48 `.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.49 `.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.50 `.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.51 `.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.52 `.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.53 `.ln LINE-NUMBER' +====================== + +`.ln' is a synonym for `.line'. + + +File: as.info, Node: Loc, Next: Loc_mark_labels, Prev: Ln, Up: Pseudo Ops + +7.54 `.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.55 `.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.56 `.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.57 `.long EXPRESSIONS' +======================== + +`.long' is the same as `.int'. *Note `.int': Int. + + +File: as.info, Node: Macro, Next: MRI, Prev: Long, Up: Pseudo Ops + +7.58 `.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.59 `.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.60 `.noaltmacro' +================== + +Disable alternate macro mode. *Note Altmacro::. + + +File: as.info, Node: Nolist, Next: Octa, Prev: Noaltmacro, Up: Pseudo Ops + +7.61 `.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.62 `.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.63 `.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.64 `.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.65 `.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.66 `.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.67 `.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.68 `.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.69 `.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.70 `.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.71 `.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.72 `.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.73 `.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.74 `.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.75 `.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.76 `.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.77 `.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.78 `.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]]] + + If the `--sectname-subst' command-line option is provided, the NAME +argument may contain a substitution sequence. Only `%S' is supported at +the moment, and substitutes the current section name. For example: + + .macro exception_code + .section %S.exception + [exception code here] + .previous + .endm + + .text + [code] + exception_code + [...] + + .section .init + [init code] + exception_code + [...] + + The two `exception_code' invocations above would create the +`.text.exception' and `.init.exception' sections respectively. This is +useful e.g. to discriminate between anciliary sections that are tied to +setup code to be discarded after use from anciliary sections that need +to stay resident without having to define multiple `exception_code' +macros just for that purpose. + + 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 + +``'' + a numeric value indicating the bits to be set in the ELF section + header's flags field. Note - if one or more of the alphabetic + characters described above is also included in the flags field, + their bit values will be ORed into the resulting value. + +``'' + some targets extend this list with their own flag characters + + Note - once a section's flags have been set they cannot be changed. +There are a few exceptions to this rule however. Processor and +application specific flags can be added to an already defined section. +The `.interp', `.strtab' and `.symtab' sections can have the allocate +flag (`a') set after they are initially defined, and the +`.note-GNU-stack' section may have the executable (`x') flag added. + + 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 + +`@`'' + a numeric value to be set as the ELF section header's type field. + +`@`'' + some targets extend this list with their own types + + Many targets only support the first three section types. The type +may be enclosed in double quotes if necessary. + + 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. + + Note - some sections, eg `.text' and `.data' are considered to be +special and have fixed types. Any attempt to declare them with a +different type will generate an error from the assembler. + + 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.79 `.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 provided +that the values given to the symbol are constants. Values that are +based on expressions involving other symbols are allowed, but some +targets may restrict this to only being done once per assembly. This +is because those targets do not set the addresses of symbols at +assembly time, but rather delay the assignment until a final link is +performed. This allows the linker a chance to change the code in the +files, changing the location of, and the relative distance between, +various different symbols. + + 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.80 `.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.81 `.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.82 `.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.83 `.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.84 `.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.85 `.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.86 `.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.87 `.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.88 `.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.89 `.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.90 `.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.91 `.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.92 `.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.93 `.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.94 `.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.95 `.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.96 `.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.97 `.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.98 `.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.99 `.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.100 `.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.101 `.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.102 `.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: Zero, Prev: Weakref, Up: Pseudo Ops + +7.103 `.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: Zero, Next: Deprecated, Prev: Word, Up: Pseudo Ops + +7.104 `.zero SIZE' +================== + +This directive emits SIZE 0-valued bytes. SIZE must be an absolute +expression. This directive is actually an alias for the `.skip' +directive so in can take an optional second argument of the value to +store in the bytes instead of zero. Using `.zero' in this way would be +confusing however. + + +File: as.info, Node: Deprecated, Prev: Zero, Up: Pseudo Ops + +7.105 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. + +8.1.4 IBM z Systems Attributes +------------------------------ + +Tag_GNU_S390_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 software vector ABI. + + * 2 for files using hardware vector ABI. + + +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 + +* PDP-11-Dependent:: PDP-11 Dependent Features + +* PJ-Dependent:: picoJava Dependent Features + +* PPC-Dependent:: PowerPC Dependent Features + +* RL78-Dependent:: RL78 Dependent Features + +* RISC-V-Dependent:: RISC-V Dependent Features + +* RX-Dependent:: RX Dependent Features + +* S/390-Dependent:: IBM S/390 Dependent Features + +* SCORE-Dependent:: SCORE Dependent Features + +* SH-Dependent:: Renesas / SuperH SH Dependent Features +* SH64-Dependent:: SuperH SH64 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 + +* Vax-Dependent:: VAX Dependent Features + +* Visium-Dependent:: Visium 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 + + +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-a35', + `cortex-a53', `cortex-a57', `cortex-a72', `cortex-a73', + `exynos-m1', `falkor', `qdf24xx', `thunderx', `vulcan', `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 + following architecture names are recognized: `armv8-a', + `armv8.1-a', `armv8.2-a' and `armv8.3-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 +---------------------------------------------------------------------------- +`compnum' ARMv8.2-A ARMv8.3-A Enable the complex number SIMD + or later extensions. This implies `fp16' and + `simd'. +`crc' ARMv8-A ARMv8.1-A Enable CRC instructions. + or later +`crypto' ARMv8-A No Enable cryptographic extensions. This + implies `fp' and `simd'. +`fp' ARMv8-A ARMv8-A or Enable floating-point extensions. + later +`fp16' ARMv8.2-A ARMv8.2-A Enable ARMv8.2 16-bit floating-point + or later support. This implies `fp'. +`lor' ARMv8-A ARMv8.1-A Enable Limited Ordering Regions + or later extensions. +`lse' ARMv8-A ARMv8.1-A Enable Large System extensions. + or later +`pan' ARMv8-A ARMv8.1-A Enable Privileged Access Never support. + or later +`profile' ARMv8.2-A No Enable statistical profiling + extensions. +`ras' ARMv8-A ARMv8.2-A Enable the Reliability, Availability + or later and Serviceability extension. +`rdma' ARMv8-A ARMv8.1-A Enable ARMv8.1 Advanced SIMD + or later extensions. This implies `simd'. +`simd' ARMv8-A ARMv8-A or Enable Advanced SIMD extensions. This + later implies `fp'. +`sve' ARMv8.2-A No Enable the Scalable Vector Extensions. + This implies `fp16', `simd' and + `compnum'. + + +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 +-------------------------------- + +`.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. + +`.bss' + This directive switches to the `.bss' section. + +`.cpu NAME' + Set the target processor. Valid values for NAME are the same as + those accepted by the `-mcpu=' command line option. + +`.dword EXPRESSIONS' + The `.dword' directive produces 64 bit values. + +`.even' + The `.even' directive aligns the output on the next even byte + boundary. + +`.inst EXPRESSIONS' + Inserts the expressions into the output as if they were + instructions, rather than data. + +`.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 + +``.tlsdescadd'' + Emits a TLSDESC_ADD reloc on the next instruction. + +``.tlsdesccall'' + Emits a TLSDESC_CALL reloc on the next instruction. + +``.tlsdescldr'' + Emits a TLSDESC_LDR reloc on the next instruction. + +`.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. + +`.xword EXPRESSIONS' + The `.xword' directive produces 64 bit values. This is the same + as the `.dword' directive. + + + +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 Directives:: ARC Machine Directives +* ARC Modifiers:: ARC Assembler Modifiers +* ARC Symbols:: ARC Pre-defined Symbols +* ARC Opcodes:: Opcodes + + +File: as.info, Node: ARC Options, Next: ARC Syntax, Up: ARC-Dependent + +9.3.1 Options +------------- + +The following options control the type of CPU for which code is +assembled, and generic constraints on the code generated: + +`-mcpu=CPU' + Set architecture type and register usage for CPU. There are also + shortcut alias options available for backward compatibility and + convenience. Supported values for CPU are + + `arc600' + Assemble for ARC 600. Aliases: `-mA6', `-mARC600'. + + `arc600_norm' + Assemble for ARC 600 with norm instructions. + + `arc600_mul64' + Assemble for ARC 600 with mul64 instructions. + + `arc600_mul32x16' + Assemble for ARC 600 with mul32x16 instructions. + + `arc601' + Assemble for ARC 601. Alias: `-mARC601'. + + `arc601_norm' + Assemble for ARC 601 with norm instructions. + + `arc601_mul64' + Assemble for ARC 601 with mul64 instructions. + + `arc601_mul32x16' + Assemble for ARC 601 with mul32x16 instructions. + + `arc700' + Assemble for ARC 700. Aliases: `-mA7', `-mARC700'. + + `arcem' + Assemble for ARC EM. Aliases: `-mEM' + + `em' + Assemble for ARC EM, identical as arcem variant. + + `em4' + Assemble for ARC EM with code-density instructions. + + `em4_dmips' + Assemble for ARC EM with code-density instructions. + + `em4_fpus' + Assemble for ARC EM with code-density instructions. + + `em4_fpuda' + Assemble for ARC EM with code-density, and double-precision + assist instructions. + + `quarkse_em' + Assemble for QuarkSE-EM cpu. + + `archs' + Assemble for ARC HS. Aliases: `-mHS', `-mav2hs'. + + `hs' + Assemble for ARC HS. + + `hs34' + Assemble for ARC HS34. + + `hs38' + Assemble for ARC HS38. + + `hs38_linux' + Assemble for ARC HS38 with floating point support on. + + `nps400' + Assemble for ARC 700 with NPS-400 extended instructions. + + + Note: the `.cpu' directive (*note ARC Directives::) 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. + +`-mcode-density' + This option turns on Code Density instructions. Only valid for + ARC EM processors. + +`-mrelax' + Enable support for assembly-time relaxation. The assembler will + replace a longer version of an instruction with a shorter one, + whenever it is possible. + +`-mnps400' + Enable support for NPS-400 extended instructions. + +`-mspfp' + Enable support for single-precision floating point instructions. + +`-mdpfp' + Enable support for double-precision floating point instructions. + +`-mfpuda' + Enable support for double-precision assist floating point + instructions. Only valid for ARC EM processors. + + + +File: as.info, Node: ARC Syntax, Next: ARC Directives, 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 +.......................... + +`%' + A register name can optionally be prefixed by a `%' character. So + register `%r0' is equivalent to `r0' in the assembly code. + +`#' + The presence of a `#' character within a line (but not at the + start of a line) indicates the start of a comment that extends to + the end of the current line. + + _Note:_ 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::). + +`@' + Prefixing an operand with an `@' specifies that the operand is a + symbol and not a register. This is how the assembler disambiguates + the use of an ARC register name as a symbol. So the instruction + mov r0, @r0 + moves the address of symbol `r0' into register `r0'. + +``' + The ``' (backtick) character is used to separate statements on a + single line. + +`-' + Used as a separator to obtain a sequence of commands from a C + preprocessor macro. + + + +File: as.info, Node: ARC-Regs, Prev: ARC-Chars, Up: ARC Syntax + +9.3.2.2 Register Names +...................... + +The ARC assembler uses the following register names for its core +registers: + +`r0-r31' + The core general registers. Registers `r26' through `r31' have + special functions, and are usually referred to by those synonyms. + +`gp' + The global pointer and a synonym for `r26'. + +`fp' + The frame pointer and a synonym for `r27'. + +`sp' + The stack pointer and a synonym for `r28'. + +`ilink1' + For ARC 600 and ARC 700, the level 1 interrupt link register and a + synonym for `r29'. Not supported for ARCv2. + +`ilink' + For ARCv2, the interrupt link register and a synonym for `r29'. + Not supported for ARC 600 and ARC 700. + +`ilink2' + For ARC 600 and ARC 700, the level 2 interrupt link register and a + synonym for `r30'. Not supported for ARC v2. + +`blink' + The link register and a synonym for `r31'. + +`r32-r59' + The extension core registers. + +`lp_count' + The loop count register. + +`pcl' + The word aligned program counter. + + + In addition the ARC processor has a large number of _auxiliary +registers_. The precise set depends on the extensions being supported, +but the following baseline set are always defined: + +`identity' + Processor Identification register. Auxiliary register address 0x4. + +`pc' + Program Counter. Auxiliary register address 0x6. + +`status32' + Status register. Auxiliary register address 0x0a. + +`bta' + Branch Target Address. Auxiliary register address 0x412. + +`ecr' + Exception Cause Register. Auxiliary register address 0x403. + +`int_vector_base' + Interrupt Vector Base address. Auxiliary register address 0x25. + +`status32_p0' + Stored STATUS32 register on entry to level P0 interrupts. + Auxiliary register address 0xb. + +`aux_user_sp' + Saved User Stack Pointer. Auxiliary register address 0xd. + +`eret' + Exception Return Address. Auxiliary register address 0x400. + +`erbta' + BTA saved on exception entry. Auxiliary register address 0x401. + +`erstatus' + STATUS32 saved on exception. Auxiliary register address 0x402. + +`bcr_ver' + Build Configuration Registers Version. Auxiliary register address + 0x60. + +`bta_link_build' + Build configuration for: BTA Registers. Auxiliary register + address 0x63. + +`vecbase_ac_build' + Build configuration for: Interrupts. Auxiliary register address + 0x68. + +`rf_build' + Build configuration for: Core Registers. Auxiliary register + address 0x6e. + +`dccm_build' + DCCM RAM Configuration Register. Auxiliary register address 0xc1. + + + Additional auxiliary register names are defined according to the +processor architecture version and extensions selected by the options. + + +File: as.info, Node: ARC Directives, Next: ARC Modifiers, Prev: ARC Syntax, Up: ARC-Dependent + +9.3.3 ARC Machine Directives +---------------------------- + +The ARC version of `as' supports the following additional machine +directives: + +`.lcomm SYMBOL, LENGTH[, ALIGNMENT]' + 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. Since + SYMBOL is not declared global, it is normally not visible to `ld'. + The optional third parameter, ALIGNMENT, specifies the desired + alignment of the symbol in the bss section, specified as a byte + boundary (for example, an alignment of 16 means that the least + significant 4 bits of the address should be zero). The alignment + must be an absolute expression, and it must be a power of two. 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. + +`.lcommon SYMBOL, LENGTH[, ALIGNMENT]' + The same as `lcomm' directive. + +`.cpu CPU' + The `.cpu' directive must be followed by the desired core version. + Permitted values for CPU are: + `ARC600' + Assemble for the ARC600 instruction set. + + `arc600_norm' + Assemble for ARC 600 with norm instructions. + + `arc600_mul64' + Assemble for ARC 600 with mul64 instructions. + + `arc600_mul32x16' + Assemble for ARC 600 with mul32x16 instructions. + + `arc601' + Assemble for ARC 601 instruction set. + + `arc601_norm' + Assemble for ARC 601 with norm instructions. + + `arc601_mul64' + Assemble for ARC 601 with mul64 instructions. + + `arc601_mul32x16' + Assemble for ARC 601 with mul32x16 instructions. + + `ARC700' + Assemble for the ARC700 instruction set. + + `NPS400' + Assemble for the NPS400 instruction set. + + `EM' + Assemble for the ARC EM instruction set. + + `arcem' + Assemble for ARC EM instruction set + + `em4' + Assemble for ARC EM with code-density instructions. + + `em4_dmips' + Assemble for ARC EM with code-density instructions. + + `em4_fpus' + Assemble for ARC EM with code-density instructions. + + `em4_fpuda' + Assemble for ARC EM with code-density, and double-precision + assist instructions. + + `quarkse_em' + Assemble for QuarkSE-EM instruction set. + + `HS' + Assemble for the ARC HS instruction set. + + `archs' + Assemble for ARC HS instruction set. + + `hs' + Assemble for ARC HS instruction set. + + `hs34' + Assemble for ARC HS34 instruction set. + + `hs38' + Assemble for ARC HS38 instruction set. + + `hs38_linux' + Assemble for ARC HS38 with floating point support on. + + + Note: the `.cpu' directive overrides the command line option + `-mcpu=CPU'; a warning is emitted when the version is not + consistent between the two. + +`.extAuxRegister NAME, ADDR, MODE' + Auxiliary registers can be defined in the assembler source code by + using this directive. The first parameter, NAME, is the name of + the new auxiliary register. The second parameter, ADDR, is + address the of the auxiliary register. The third parameter, MODE, + specifies whether the register is readable and/or writable and is + one of: + `r' + Read only; + + `w' + Write only; + + `r|w' + Read and write. + + + For example: + .extAuxRegister mulhi, 0x12, w + specifies a write only extension auxiliary register, MULHI at + address 0x12. + +`.extCondCode SUFFIX, VAL' + ARC supports extensible condition codes. This directive defines a + new condition code, to be known by the suffix, SUFFIX and will + depend on the value, VAL in the condition code. + + For example: + .extCondCode is_busy,0x14 + add.is_busy r1,r2,r3 + will only execute the `add' instruction if the condition code + value is 0x14. + +`.extCoreRegister NAME, REGNUM, MODE, SHORTCUT' + Specifies an extension core register named NAME as a synonym for + the register numbered REGNUM. The register number must be between + 32 and 59. The third argument, MODE, indicates whether the + register is readable and/or writable and is one of: + `r' + Read only; + + `w' + Write only; + + `r|w' + Read and write. + + + The final parameter, SHORTCUT indicates whether the register has a + short cut in the pipeline. The valid values are: + `can_shortcut' + The register has a short cut in the pipeline; + + `cannot_shortcut' + The register does not have a short cut in the pipeline. + + For example: + .extCoreRegister mlo, 57, r , can_shortcut + defines a read only extension core register, `mlo', which is + register 57, and can short cut the pipeline. + +`.extInstruction NAME, OPCODE, SUBOPCODE, SUFFIXCLASS, SYNTAXCLASS' + ARC allows the user to specify extension instructions. These + extension instructions are not macros; the assembler creates + encodings for use of these instructions according to the + specification by the user. + + The first argument, NAME, gives the name of the instruction. + + The second argument, OPCODE, is the opcode to be used (bits 31:27 + in the encoding). + + The third argument, SUBOPCODE, is the sub-opcode to be used, but + the correct value also depends on the fifth argument, SYNTAXCLASS + + The fourth argument, SUFFIXCLASS, determines the kinds of suffixes + to be allowed. Valid values are: + `SUFFIX_NONE' + No suffixes are permitted; + + `SUFFIX_COND' + Conditional suffixes are permitted; + + `SUFFIX_FLAG' + Flag setting suffixes are permitted. + + `SUFFIX_COND|SUFFIX_FLAG' + Both conditional and flag setting suffices are permitted. + + + The fifth and final argument, SYNTAXCLASS, determines the syntax + class for the instruction. It can have the following values: + `SYNTAX_2OP' + Two Operand Instruction; + + `SYNTAX_3OP' + Three Operand Instruction. + + `SYNTAX_1OP' + One Operand Instruction. + + `SYNTAX_NOP' + No Operand Instruction. + + The syntax class may be followed by `|' and one of the following + modifiers. + `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). This is usually used to set + the flags using specific instructions and not retain results. + + `OP1_IMM_IMPLIED' + Modifies syntax class `SYNTAX_20P', specifying 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 + 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. + + + For example, defining a 64-bit multiplier with immediate operands: + .extInstruction mp64, 0x07, 0x2d, SUFFIX_COND|SUFFIX_FLAG, + SYNTAX_3OP|OP1_MUST_BE_IMM + which specifies an extension instruction named `mp64' with 3 + operands. It sets the flags and can be used with a condition code, + for which the first operand is an immediate, i.e. equivalent to + discarding the result of the operation. + + A two operands instruction variant would be: + .extInstruction mul64, 0x07, 0x2d, SUFFIX_COND, + SYNTAX_2OP|OP1_IMM_IMPLIED + which describes a two operand instruction with an implicit first + immediate operand. The result of this operation would be + discarded. + + + +File: as.info, Node: ARC Modifiers, Next: ARC Symbols, Prev: ARC Directives, Up: ARC-Dependent + +9.3.4 ARC Assembler Modifiers +----------------------------- + +The following additional assembler modifiers have been added for +position-independent code. These modifiers are available only with the +ARC 700 and above processors and generate relocation entries, which are +interpreted by the linker as follows: + +`@pcl(SYMBOL)' + Relative distance of SYMBOL's from the current program counter + location. + +`@gotpc(SYMBOL)' + Relative distance of SYMBOL's Global Offset Table entry from the + current program counter location. + +`@gotoff(SYMBOL)' + Distance of SYMBOL from the base of the Global Offset Table. + +`@plt(SYMBOL)' + Distance of SYMBOL's Procedure Linkage Table entry from the + current program counter. This is valid only with branch and link + instructions and PC-relative calls. + +`@sda(SYMBOL)' + Relative distance of SYMBOL from the base of the Small Data + Pointer. + + + +File: as.info, Node: ARC Symbols, Next: ARC Opcodes, Prev: ARC Modifiers, Up: ARC-Dependent + +9.3.5 ARC Pre-defined Symbols +----------------------------- + +The following assembler symbols will prove useful when developing +position-independent code. These symbols are available only with the +ARC 700 and above processors. + +`__GLOBAL_OFFSET_TABLE__' + Symbol referring to the base of the Global Offset Table. + +`__DYNAMIC__' + An alias for the Global Offset Table + `Base__GLOBAL_OFFSET_TABLE__'. It can be used only with `@gotpc' + modifiers. + + + +File: as.info, Node: ARC Opcodes, Prev: ARC Symbols, Up: ARC-Dependent + +9.3.6 Opcodes +------------- + +For information on the ARC instruction set, see `ARC Programmers +Reference Manual', available where you download the processor IP +library. + + +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-a17', `cortex-a32', + `cortex-a35', `cortex-a53', `cortex-a57', `cortex-a72', + `cortex-a73', `cortex-r4', `cortex-r4f', `cortex-r5', `cortex-r7', + `cortex-r8', `cortex-m33', `cortex-m23', `cortex-m7', `cortex-m4', + `cortex-m3', `cortex-m1', `cortex-m0', `cortex-m0plus', + `exynos-m1', `marvell-pj4', `marvell-whitney', `falkor', `qdf24xx', + `xgene1', `xgene2', `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: `crc' `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', `xscale', `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'), `pan' (Priviliged Access Never + Extensions for v8-A architecture), `ras' (Reliability, + Availability and Serviceability extensions for v8-A architecture), + `rdma' (ARMv8.1 Advanced SIMD extensions for v8-A architecture, + implies `simd') 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', `armv6kz', + `armv6-m', `armv6s-m', `armv7', `armv7-a', `armv7ve', `armv7-r', + `armv7-m', `armv7e-m', `armv8-a', `armv8.1-a', `armv8.2-a', + `armv8.3-a', `iwmmxt' `iwmmxt2' 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', `fpv5-sp-d16', `fpv5-d16', `fp-armv8', `arm1020t', + `arm1020e', `arm1136jf-s', `maverick', `neon', `neon-vfpv4', + `neon-fp-armv8', `crypto-neon-fp-armv8', `neon-fp-armv8.1' and + `crypto-neon-fp-armv8.1'. + + 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. + + Note: If a program is being built for a system with big-endian data + and little-endian instructions then it should be assembled with the + `-EB' option, (all of it, code and data) and then linked with the + `--be8' option. This will reverse the endianness of the + instructions back to little-endian, but leave the data as + big-endian. + +`-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. + +`-mwarn-syms' +`-mno-warn-syms' + Enable or disable warnings about symbols that match the names of + ARM instructions. The default is to warn. + + + +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 + + Relocations `R_ARM_THM_ALU_ABS_G0_NC', `R_ARM_THM_ALU_ABS_G1_NC', +`R_ARM_THM_ALU_ABS_G2_NC' and `R_ARM_THM_ALU_ABS_G3_NC' can be +generated by prefixing the value with `#:lower0_7:#', `#:lower8_15:#', +`#:upper0_7:#' and `#:upper8_15:#' respectively. For example to load +the 32-bit address of foo into r0: + + MOVS r0, #:upper8_15:#foo + LSLS r0, r0, #8 + ADDS r0, #:upper0_7:#foo + LSLS r0, r0, #8 + ADDS r0, #:lower8_15:#foo + LSLS r0, r0, #8 + ADDS r0, #:lower0_7:#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