summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvs2svn <cvs2svn@FreeBSD.org>2008-05-29 02:30:00 +0000
committercvs2svn <cvs2svn@FreeBSD.org>2008-05-29 02:30:00 +0000
commit1b0d6c33e687a800761e8ed241d01033c1740896 (patch)
treeaf6850df60d069ba0ac76bada3eadde2afa919bb
parentb7e4108c6b8c33f7649d6dafbc4d1336dcdc96e7 (diff)
Notes
-rw-r--r--contrib/binutils/bfd/doc/bfd.texi585
-rw-r--r--contrib/binutils/bfd/elf32-i386-fbsd.c56
-rw-r--r--contrib/binutils/bfd/elf64-alpha-fbsd.c56
-rw-r--r--contrib/binutils/bfd/elf64-sparc.c6
-rw-r--r--contrib/binutils/bfd/elflink.h8532
-rw-r--r--contrib/binutils/bfd/po/POTFILES.in255
-rw-r--r--contrib/binutils/binutils/acconfig.h34
-rw-r--r--contrib/binutils/binutils/addr2line.1502
-rw-r--r--contrib/binutils/binutils/ar.1891
-rw-r--r--contrib/binutils/binutils/binutils.texi3469
-rw-r--r--contrib/binutils/binutils/config.texi1
-rw-r--r--contrib/binutils/binutils/cxxfilt.man114
-rw-r--r--contrib/binutils/binutils/defparse.c1411
-rw-r--r--contrib/binutils/binutils/defparse.h43
-rw-r--r--contrib/binutils/binutils/defparse.y175
-rw-r--r--contrib/binutils/binutils/dyn-string.c107
-rw-r--r--contrib/binutils/binutils/dyn-string.h34
-rw-r--r--contrib/binutils/binutils/nm.1587
-rw-r--r--contrib/binutils/binutils/objcopy.1548
-rw-r--r--contrib/binutils/binutils/objdump.1770
-rw-r--r--contrib/binutils/binutils/ranlib.1441
-rw-r--r--contrib/binutils/binutils/rcparse.c3447
-rw-r--r--contrib/binutils/binutils/rcparse.h134
-rw-r--r--contrib/binutils/binutils/rcparse.y1739
-rw-r--r--contrib/binutils/binutils/readelf.1291
-rw-r--r--contrib/binutils/binutils/size.1518
-rw-r--r--contrib/binutils/binutils/strings.1508
-rw-r--r--contrib/binutils/binutils/strip.1542
-rw-r--r--contrib/binutils/binutils/sysinfo.y442
-rw-r--r--contrib/binutils/binutils/syslex.l70
-rw-r--r--contrib/binutils/config/ChangeLog526
-rwxr-xr-xcontrib/binutils/config/acinclude.m42023
-rw-r--r--contrib/binutils/config/mh-armpic1
-rw-r--r--contrib/binutils/config/mh-cxux7
-rw-r--r--contrib/binutils/config/mh-decstation3
-rw-r--r--contrib/binutils/config/mh-elfalphapic1
-rw-r--r--contrib/binutils/config/mh-ia64pic1
-rw-r--r--contrib/binutils/config/mh-mingw327
-rw-r--r--contrib/binutils/config/mh-necv46
-rw-r--r--contrib/binutils/config/mh-openedition1
-rw-r--r--contrib/binutils/config/mh-papic1
-rw-r--r--contrib/binutils/config/mh-ppcpic1
-rw-r--r--contrib/binutils/config/mh-s390pic1
-rw-r--r--contrib/binutils/config/mh-sco5
-rw-r--r--contrib/binutils/config/mh-solaris5
-rw-r--r--contrib/binutils/config/mh-sparcpic1
-rw-r--r--contrib/binutils/config/mh-sysv1
-rw-r--r--contrib/binutils/config/mh-sysv46
-rw-r--r--contrib/binutils/config/mh-sysv56
-rw-r--r--contrib/binutils/config/mh-x86pic1
-rw-r--r--contrib/binutils/config/mt-alphaieee2
-rw-r--r--contrib/binutils/config/mt-armpic1
-rw-r--r--contrib/binutils/config/mt-elfalphapic1
-rw-r--r--contrib/binutils/config/mt-ia64pic1
-rw-r--r--contrib/binutils/config/mt-linux1
-rw-r--r--contrib/binutils/config/mt-ospace3
-rw-r--r--contrib/binutils/config/mt-papic1
-rw-r--r--contrib/binutils/config/mt-ppcpic1
-rw-r--r--contrib/binutils/config/mt-s390pic1
-rw-r--r--contrib/binutils/config/mt-sparcpic1
-rw-r--r--contrib/binutils/config/mt-v8104
-rw-r--r--contrib/binutils/config/mt-x86pic1
-rw-r--r--contrib/binutils/contrib/ChangeLog7
-rwxr-xr-xcontrib/binutils/contrib/texi2pod.pl431
-rw-r--r--contrib/binutils/etc/ChangeLog552
-rw-r--r--contrib/binutils/etc/Makefile.in157
-rw-r--r--contrib/binutils/etc/add-log.el573
-rw-r--r--contrib/binutils/etc/add-log.vi11
-rw-r--r--contrib/binutils/etc/cfg-paper.texi717
-rw-r--r--contrib/binutils/etc/configbuild.ein149
-rw-r--r--contrib/binutils/etc/configbuild.fig50
-rw-r--r--contrib/binutils/etc/configbuild.jinbin11123 -> 0 bytes
-rw-r--r--contrib/binutils/etc/configbuild.tin9
-rw-r--r--contrib/binutils/etc/configdev.ein185
-rw-r--r--contrib/binutils/etc/configdev.fig80
-rw-r--r--contrib/binutils/etc/configdev.jinbin17967 -> 0 bytes
-rw-r--r--contrib/binutils/etc/configdev.tin17
-rwxr-xr-xcontrib/binutils/etc/configure862
-rw-r--r--contrib/binutils/etc/configure.in7
-rw-r--r--contrib/binutils/etc/configure.man166
-rw-r--r--contrib/binutils/etc/configure.texi2644
-rw-r--r--contrib/binutils/etc/make-stds.texi955
-rw-r--r--contrib/binutils/etc/standards.texi3742
-rw-r--r--contrib/binutils/gas/acconfig.h79
-rw-r--r--contrib/binutils/gas/as.h18
-rw-r--r--contrib/binutils/gas/conf.in127
-rw-r--r--contrib/binutils/gas/config/i386coff.mt1
-rw-r--r--contrib/binutils/gas/config/obj-generic.c41
-rw-r--r--contrib/binutils/gas/config/obj-generic.h79
-rw-r--r--contrib/binutils/gas/config/sco5.mt1
-rw-r--r--contrib/binutils/gas/config/tc-sh.c4054
-rw-r--r--contrib/binutils/gas/config/tc-sh.h232
-rw-r--r--contrib/binutils/gas/config/tc-tic30.c1881
-rw-r--r--contrib/binutils/gas/config/tc-tic30.h55
-rw-r--r--contrib/binutils/gas/config/tc-v850.c2434
-rw-r--r--contrib/binutils/gas/config/tc-v850.h98
-rw-r--r--contrib/binutils/gas/config/tc-z8k.c1566
-rw-r--r--contrib/binutils/gas/config/tc-z8k.h53
-rw-r--r--contrib/binutils/gas/config/te-multi.h22
-rw-r--r--contrib/binutils/gas/doc/c-v850.texi363
-rw-r--r--contrib/binutils/gas/doc/c-z8k.texi380
-rw-r--r--contrib/binutils/gas/doc/gasp.texi1456
-rw-r--r--contrib/binutils/gas/gasp.c3761
-rw-r--r--contrib/binutils/gas/itbl-lex.l114
-rw-r--r--contrib/binutils/gas/itbl-parse.y460
-rw-r--r--contrib/binutils/gas/tc.h19
-rw-r--r--contrib/binutils/gprof/po/Make-in253
-rw-r--r--contrib/binutils/gprof/po/POTFILES.in38
-rw-r--r--contrib/binutils/gprof/po/gprof.pot507
-rw-r--r--contrib/binutils/include/callback.h270
-rw-r--r--contrib/binutils/include/elf/arm-oabi.h88
-rw-r--r--contrib/binutils/include/elf/po/Make-in251
-rw-r--r--contrib/binutils/include/elf/po/POTFILES.in55
-rw-r--r--contrib/binutils/include/elf/po/binutils.pot3756
-rw-r--r--contrib/binutils/include/regs/ChangeLog0
-rw-r--r--contrib/binutils/include/remote-sim.h354
-rw-r--r--contrib/binutils/include/wait.h63
-rwxr-xr-xcontrib/binutils/install.sh247
-rw-r--r--contrib/binutils/ld/acconfig.h22
-rw-r--r--contrib/binutils/ld/configdoc.texi14
-rw-r--r--contrib/binutils/ld/emulparams/armelf_linux26.sh20
-rw-r--r--contrib/binutils/ld/emultempl/stringify.sed4
-rw-r--r--contrib/binutils/ld/po/Make-in251
-rw-r--r--contrib/binutils/ld/po/POTFILES.in29
-rw-r--r--contrib/binutils/ld/po/ld.pot1693
-rw-r--r--contrib/binutils/ld/scripttempl/elfppc.sc288
-rw-r--r--contrib/binutils/ld/scripttempl/tic30aout.sc34
-rw-r--r--contrib/binutils/ld/scripttempl/tic30coff.sc58
-rw-r--r--contrib/binutils/ld/scripttempl/v850.sc230
-rw-r--r--contrib/binutils/ld/scripttempl/z8000.sc57
-rw-r--r--contrib/binutils/libiberty/acconfig.h11
-rw-r--r--contrib/binutils/libiberty/alloca-botch.h5
-rw-r--r--contrib/binutils/libiberty/alloca-conf.h24
-rw-r--r--contrib/binutils/libiberty/alloca-norm.h25
-rw-r--r--contrib/binutils/libiberty/config/mh-sysv1
-rw-r--r--contrib/binutils/libiberty/config/mh-sysv43
-rw-r--r--contrib/binutils/libiberty/config/mt-mingw3227
-rw-r--r--contrib/binutils/libiberty/configure.in459
-rw-r--r--contrib/binutils/libiberty/cp-demangle.c2
-rw-r--r--contrib/binutils/libiberty/dummy.c49
-rw-r--r--contrib/binutils/libiberty/functions.def70
-rw-r--r--contrib/binutils/libiberty/pexecute.c792
-rw-r--r--contrib/binutils/md5.sum3022
-rw-r--r--contrib/binutils/opcodes/acconfig.h6
-rw-r--r--contrib/binutils/opcodes/sparc-opc.c164
145 files changed, 122 insertions, 70658 deletions
diff --git a/contrib/binutils/bfd/doc/bfd.texi b/contrib/binutils/bfd/doc/bfd.texi
deleted file mode 100644
index ea0ca9e56dc9..000000000000
--- a/contrib/binutils/bfd/doc/bfd.texi
+++ /dev/null
@@ -1,585 +0,0 @@
-@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
-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;
-
- /* To avoid dragging too many header files into every file that
- includes `@code{bfd.h}', IOSTREAM has been declared as a "char
- *", and MTIME as a "long". Their correct types, to which they
- are cast when used, are "FILE *" and "time_t". The iostream
- is the result of an fopen on the filename. However, if the
- BFD_IN_MEMORY flag is set, then iostream is actually a pointer
- to a bfd_in_memory struct. */
- PTR iostream;
-
- /* Is the file descriptor being cached? That is, can it be closed as
- needed, and re-opened when accessed later? */
-
- boolean cacheable;
-
- /* 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. */
-
- boolean target_defaulted;
-
- /* 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: */
-
- file_ptr where;
-
- /* and here: (``once'' means at least once) */
-
- boolean opened_once;
-
- /* Set if we have a locally maintained mtime value, rather than
- getting it from the file each time: */
-
- boolean mtime_set;
-
- /* File modified time, if mtime_set is true: */
-
- long mtime;
-
- /* Reserved for an unimplemented file locking extension.*/
-
- int ifd;
-
- /* The format which belongs to the BFD. (object, core, etc.) */
-
- bfd_format format;
-
- /* The direction the BFD was opened with*/
-
- enum bfd_direction @{no_direction = 0,
- read_direction = 1,
- write_direction = 2,
- both_direction = 3@} direction;
-
- /* Format_specific flags*/
-
- flagword flags;
-
- /* 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. */
-
- file_ptr origin;
-
- /* Remember when output has begun, to stop strange things
- from happening. */
- boolean output_has_begun;
-
- /* Pointer to linked list of sections*/
- struct sec *sections;
-
- /* The number of sections */
- unsigned int section_count;
-
- /* Stuff only useful for object files:
- The start address. */
- bfd_vma start_address;
-
- /* Used for input and output*/
- unsigned int symcount;
-
- /* Symbol table for output BFD (with symcount entries) */
- struct symbol_cache_entry **outsymbols;
-
- /* Pointer to structure which contains architecture information*/
- const struct bfd_arch_info *arch_info;
-
- /* Stuff only useful for archives:*/
- PTR arelt_data;
- struct _bfd *my_archive; /* The containing archive BFD. */
- struct _bfd *next; /* The next BFD in the archive. */
- struct _bfd *archive_head; /* The first BFD in the archive. */
- boolean has_armap;
-
- /* A chain of BFD structures involved in a link. */
- struct _bfd *link_next;
-
- /* A field used by _bfd_generic_link_add_archive_symbols. This will
- be used only for archive elements. */
- int archive_pass;
-
- /* 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 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 sun_core_struct *sun_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;
- PTR any;
- @} tdata;
-
- /* Used by the application to hold private data*/
- PTR usrdata;
-
- /* Where all the allocated stuff under this BFD goes. This is a
- struct objalloc *, but we use PTR to avoid requiring the inclusion of
- objalloc.h. */
- PTR memory;
-@};
-
-@end example
-@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_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_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_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}.
-@*
-@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 overriden by the program.
-
-The BFD error handler acts like printf.
-@*
-.
-@example
-typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
-
-@end example
-@findex bfd_set_error_handler
-@subsubsection @code{bfd_set_error_handler}
-@strong{Synopsis}
-@example
-bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
-@end example
-@strong{Description}@*
-Set the BFD error handler function. Returns the previous
-function.
-@*
-@findex bfd_set_error_program_name
-@subsubsection @code{bfd_set_error_program_name}
-@strong{Synopsis}
-@example
-void bfd_set_error_program_name (const char *);
-@end example
-@strong{Description}@*
-Set the program name to use when printing a BFD error. This
-is printed before the error message followed by a colon and
-space. The string must not be changed after it is passed to
-this function.
-@*
-@section Symbols
-
-@*
-@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
-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_set_start_address
-@subsubsection @code{bfd_set_start_address}
-@strong{Synopsis}
-@example
-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_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
-long 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 quesion, "is the
-size reasonable?".
-@*
-@findex bfd_get_gp_size
-@subsubsection @code{bfd_get_gp_size}
-@strong{Synopsis}
-@example
-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, 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.
-
-Overflow is not detected.
-@*
-@findex bfd_copy_private_bfd_data
-@subsubsection @code{bfd_copy_private_bfd_data}
-@strong{Synopsis}
-@example
-boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
-@end example
-@strong{Description}@*
-Copy private BFD information from the BFD @var{ibfd} to the
-the BFD @var{obfd}. Return @code{true} on success, @code{false} on error.
-Possible error returns are:
-
-@itemize @bullet
-
-@item
-@code{bfd_error_no_memory} -
-Not enough memory exists to create private data for @var{obfd}.
-@end itemize
-@example
-#define bfd_copy_private_bfd_data(ibfd, obfd) \
- BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
- (ibfd, obfd))
-@end example
-@*
-@findex bfd_merge_private_bfd_data
-@subsubsection @code{bfd_merge_private_bfd_data}
-@strong{Synopsis}
-@example
-boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
-@end example
-@strong{Description}@*
-Merge private BFD information from the BFD @var{ibfd} to the
-the output file BFD @var{obfd} when linking. Return @code{true}
-on success, @code{false} on error. Possible error returns are:
-
-@itemize @bullet
-
-@item
-@code{bfd_error_no_memory} -
-Not enough memory exists to create private data for @var{obfd}.
-@end itemize
-@example
-#define bfd_merge_private_bfd_data(ibfd, obfd) \
- BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
- (ibfd, obfd))
-@end example
-@*
-@findex bfd_set_private_flags
-@subsubsection @code{bfd_set_private_flags}
-@strong{Synopsis}
-@example
-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 stuff
-@subsubsection @code{stuff}
-@strong{Description}@*
-Stuff which should be documented:
-@example
-#define bfd_sizeof_headers(abfd, reloc) \
- BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
-
-#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
- BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line))
-
- /* Do these three do anything useful at all, for any back end? */
-#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_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_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_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
- PARAMS ((bfd *, struct bfd_link_info *,
- struct bfd_link_order *, bfd_byte *,
- boolean, asymbol **));
-
-@end example
-@*
diff --git a/contrib/binutils/bfd/elf32-i386-fbsd.c b/contrib/binutils/bfd/elf32-i386-fbsd.c
deleted file mode 100644
index 500e0ebc0485..000000000000
--- a/contrib/binutils/bfd/elf32-i386-fbsd.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Intel IA-32 specific support for 32-bit ELF on FreeBSD.
- Copyright 2002 Free Software Foundation, Inc.
-
-This file is part of BFD, the Binary File Descriptor library.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#define TARGET_LITTLE_SYM bfd_elf32_i386_freebsd_vec
-#define TARGET_LITTLE_NAME "elf32-i386-freebsd"
-#define ELF_ARCH bfd_arch_i386
-#define ELF_MACHINE_CODE EM_386
-#define ELF_MAXPAGESIZE 0x1000
-
-#include "bfd.h"
-#include "sysdep.h"
-#include "elf-bfd.h"
-
-/* The kernel recognizes executables as valid only if they carry a
- "FreeBSD" label in the ELF header. So we put this label on all
- executables and (for simplicity) also all other object files. */
-
-static void elf_i386_post_process_headers
- PARAMS ((bfd *, struct bfd_link_info *));
-
-static void
-elf_i386_post_process_headers (abfd, link_info)
- bfd * abfd;
- struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
-{
- Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form. */
-
- i_ehdrp = elf_elfheader (abfd);
-
- /* Put an ABI label supported by FreeBSD >= 4.1. */
- i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
-#ifdef OLD_FREEBSD_ABI_LABEL
- /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard. */
- memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
-#endif
-}
-
-#define elf_backend_post_process_headers elf_i386_post_process_headers
-
-#include "elf32-i386.c"
diff --git a/contrib/binutils/bfd/elf64-alpha-fbsd.c b/contrib/binutils/bfd/elf64-alpha-fbsd.c
deleted file mode 100644
index 061b0b810302..000000000000
--- a/contrib/binutils/bfd/elf64-alpha-fbsd.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Alpha specific support for 64-bit ELF on FreeBSD.
- Copyright 2002 Free Software Foundation, Inc.
-
-This file is part of BFD, the Binary File Descriptor library.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#define TARGET_LITTLE_SYM bfd_elf64_alpha_freebsd_vec
-#define TARGET_LITTLE_NAME "elf64-alpha-freebsd"
-#define ELF_ARCH bfd_arch_alpha
-#define ELF_MACHINE_CODE EM_ALPHA
-#define ELF_MAXPAGESIZE 0x10000
-
-#include "bfd.h"
-#include "sysdep.h"
-#include "elf-bfd.h"
-
-/* The kernel recognizes executables as valid only if they carry a
- "FreeBSD" label in the ELF header. So we put this label on all
- executables and (for simplicity) also all other object files. */
-
-static void elf_alpha_post_process_headers
- PARAMS ((bfd *, struct bfd_link_info *));
-
-static void
-elf_alpha_post_process_headers (abfd, link_info)
- bfd * abfd;
- struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
-{
- Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form. */
-
- i_ehdrp = elf_elfheader (abfd);
-
- /* Put an ABI label supported by FreeBSD >= 4.1. */
- i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
-#ifdef OLD_FREEBSD_ABI_LABEL
- /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard. */
- memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
-#endif
-}
-
-#define elf_backend_post_process_headers elf_alpha_post_process_headers
-
-#include "elf64-alpha.c"
diff --git a/contrib/binutils/bfd/elf64-sparc.c b/contrib/binutils/bfd/elf64-sparc.c
index 90de3b974d5e..4568a22d6430 100644
--- a/contrib/binutils/bfd/elf64-sparc.c
+++ b/contrib/binutils/bfd/elf64-sparc.c
@@ -1638,11 +1638,7 @@ sparc64_elf_adjust_dynamic_symbol (info, h)
|| h->root.type == bfd_link_hash_defweak)
&& (h->root.u.def.section->flags & SEC_CODE) != 0))
{
- if (! info->shared
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0
- && h->root.type != bfd_link_hash_undefweak
- && h->root.type != bfd_link_hash_undefined)
+ if (! elf_hash_table (info)->dynamic_sections_created)
{
/* This case can occur if we saw a WPLT30 reloc in an input
file, but none of the input files were dynamic objects.
diff --git a/contrib/binutils/bfd/elflink.h b/contrib/binutils/bfd/elflink.h
deleted file mode 100644
index 6887e506ab74..000000000000
--- a/contrib/binutils/bfd/elflink.h
+++ /dev/null
@@ -1,8532 +0,0 @@
-/* ELF linker support.
- Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
- Free Software Foundation, Inc.
-
-This file is part of BFD, the Binary File Descriptor library.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* ELF linker code. */
-
-/* This struct is used to pass information to routines called via
- elf_link_hash_traverse which must return failure. */
-
-struct elf_info_failed
-{
- boolean failed;
- struct bfd_link_info *info;
- struct bfd_elf_version_tree *verdefs;
-};
-
-static boolean is_global_data_symbol_definition
- PARAMS ((bfd *, Elf_Internal_Sym *));
-static boolean elf_link_is_defined_archive_symbol
- PARAMS ((bfd *, carsym *));
-static boolean elf_link_add_object_symbols
- PARAMS ((bfd *, struct bfd_link_info *));
-static boolean elf_link_add_archive_symbols
- PARAMS ((bfd *, struct bfd_link_info *));
-static boolean elf_merge_symbol
- PARAMS ((bfd *, struct bfd_link_info *, const char *,
- Elf_Internal_Sym *, asection **, bfd_vma *,
- struct elf_link_hash_entry **, boolean *, boolean *,
- boolean *, boolean));
-static boolean elf_add_default_symbol
- PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
- const char *, Elf_Internal_Sym *, asection **, bfd_vma *,
- boolean *, boolean, boolean));
-static boolean elf_export_symbol
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_finalize_dynstr
- PARAMS ((bfd *, struct bfd_link_info *));
-static boolean elf_fix_symbol_flags
- PARAMS ((struct elf_link_hash_entry *, struct elf_info_failed *));
-static boolean elf_adjust_dynamic_symbol
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_find_version_dependencies
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_assign_sym_version
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_collect_hash_codes
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_read_relocs_from_section
- PARAMS ((bfd *, Elf_Internal_Shdr *, PTR, Elf_Internal_Rela *));
-static size_t compute_bucket_count
- PARAMS ((struct bfd_link_info *));
-static boolean elf_link_output_relocs
- PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *));
-static boolean elf_link_size_reloc_section
- PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
-static void elf_link_adjust_relocs
- PARAMS ((bfd *, Elf_Internal_Shdr *, unsigned int,
- struct elf_link_hash_entry **));
-static int elf_link_sort_cmp1
- PARAMS ((const void *, const void *));
-static int elf_link_sort_cmp2
- PARAMS ((const void *, const void *));
-static size_t elf_link_sort_relocs
- PARAMS ((bfd *, struct bfd_link_info *, asection **));
-static boolean elf_section_ignore_discarded_relocs
- PARAMS ((asection *));
-
-/* Given an ELF BFD, add symbols to the global hash table as
- appropriate. */
-
-boolean
-elf_bfd_link_add_symbols (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- switch (bfd_get_format (abfd))
- {
- case bfd_object:
- return elf_link_add_object_symbols (abfd, info);
- case bfd_archive:
- return elf_link_add_archive_symbols (abfd, info);
- default:
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
-}
-
-/* Return true iff this is a non-common, definition of a non-function symbol. */
-static boolean
-is_global_data_symbol_definition (abfd, sym)
- bfd * abfd ATTRIBUTE_UNUSED;
- Elf_Internal_Sym * sym;
-{
- /* Local symbols do not count, but target specific ones might. */
- if (ELF_ST_BIND (sym->st_info) != STB_GLOBAL
- && ELF_ST_BIND (sym->st_info) < STB_LOOS)
- return false;
-
- /* Function symbols do not count. */
- if (ELF_ST_TYPE (sym->st_info) == STT_FUNC)
- return false;
-
- /* If the section is undefined, then so is the symbol. */
- if (sym->st_shndx == SHN_UNDEF)
- return false;
-
- /* If the symbol is defined in the common section, then
- it is a common definition and so does not count. */
- if (sym->st_shndx == SHN_COMMON)
- return false;
-
- /* If the symbol is in a target specific section then we
- must rely upon the backend to tell us what it is. */
- if (sym->st_shndx >= SHN_LORESERVE && sym->st_shndx < SHN_ABS)
- /* FIXME - this function is not coded yet:
-
- return _bfd_is_global_symbol_definition (abfd, sym);
-
- Instead for now assume that the definition is not global,
- Even if this is wrong, at least the linker will behave
- in the same way that it used to do. */
- return false;
-
- return true;
-}
-
-/* Search the symbol table of the archive element of the archive ABFD
- whose archive map contains a mention of SYMDEF, and determine if
- the symbol is defined in this element. */
-static boolean
-elf_link_is_defined_archive_symbol (abfd, symdef)
- bfd * abfd;
- carsym * symdef;
-{
- Elf_Internal_Shdr * hdr;
- bfd_size_type symcount;
- bfd_size_type extsymcount;
- bfd_size_type extsymoff;
- Elf_Internal_Sym *isymbuf;
- Elf_Internal_Sym *isym;
- Elf_Internal_Sym *isymend;
- boolean result;
-
- abfd = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
- if (abfd == (bfd *) NULL)
- return false;
-
- if (! bfd_check_format (abfd, bfd_object))
- return false;
-
- /* If we have already included the element containing this symbol in the
- link then we do not need to include it again. Just claim that any symbol
- it contains is not a definition, so that our caller will not decide to
- (re)include this element. */
- if (abfd->archive_pass)
- return false;
-
- /* Select the appropriate symbol table. */
- if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0)
- hdr = &elf_tdata (abfd)->symtab_hdr;
- else
- hdr = &elf_tdata (abfd)->dynsymtab_hdr;
-
- symcount = hdr->sh_size / sizeof (Elf_External_Sym);
-
- /* The sh_info field of the symtab header tells us where the
- external symbols start. We don't care about the local symbols. */
- if (elf_bad_symtab (abfd))
- {
- extsymcount = symcount;
- extsymoff = 0;
- }
- else
- {
- extsymcount = symcount - hdr->sh_info;
- extsymoff = hdr->sh_info;
- }
-
- if (extsymcount == 0)
- return false;
-
- /* Read in the symbol table. */
- isymbuf = bfd_elf_get_elf_syms (abfd, hdr, extsymcount, extsymoff,
- NULL, NULL, NULL);
- if (isymbuf == NULL)
- return false;
-
- /* Scan the symbol table looking for SYMDEF. */
- result = false;
- for (isym = isymbuf, isymend = isymbuf + extsymcount; isym < isymend; isym++)
- {
- const char *name;
-
- name = bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
- isym->st_name);
- if (name == (const char *) NULL)
- break;
-
- if (strcmp (name, symdef->name) == 0)
- {
- result = is_global_data_symbol_definition (abfd, isym);
- break;
- }
- }
-
- free (isymbuf);
-
- return result;
-}
-
-/* Add symbols from an ELF archive file to the linker hash table. We
- don't use _bfd_generic_link_add_archive_symbols because of a
- problem which arises on UnixWare. The UnixWare libc.so is an
- archive which includes an entry libc.so.1 which defines a bunch of
- symbols. The libc.so archive also includes a number of other
- object files, which also define symbols, some of which are the same
- as those defined in libc.so.1. Correct linking requires that we
- consider each object file in turn, and include it if it defines any
- symbols we need. _bfd_generic_link_add_archive_symbols does not do
- this; it looks through the list of undefined symbols, and includes
- any object file which defines them. When this algorithm is used on
- UnixWare, it winds up pulling in libc.so.1 early and defining a
- bunch of symbols. This means that some of the other objects in the
- archive are not included in the link, which is incorrect since they
- precede libc.so.1 in the archive.
-
- Fortunately, ELF archive handling is simpler than that done by
- _bfd_generic_link_add_archive_symbols, which has to allow for a.out
- oddities. In ELF, if we find a symbol in the archive map, and the
- symbol is currently undefined, we know that we must pull in that
- object file.
-
- Unfortunately, we do have to make multiple passes over the symbol
- table until nothing further is resolved. */
-
-static boolean
-elf_link_add_archive_symbols (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- symindex c;
- boolean *defined = NULL;
- boolean *included = NULL;
- carsym *symdefs;
- boolean loop;
- bfd_size_type amt;
-
- if (! bfd_has_map (abfd))
- {
- /* An empty archive is a special case. */
- if (bfd_openr_next_archived_file (abfd, (bfd *) NULL) == NULL)
- return true;
- bfd_set_error (bfd_error_no_armap);
- return false;
- }
-
- /* Keep track of all symbols we know to be already defined, and all
- files we know to be already included. This is to speed up the
- second and subsequent passes. */
- c = bfd_ardata (abfd)->symdef_count;
- if (c == 0)
- return true;
- amt = c;
- amt *= sizeof (boolean);
- defined = (boolean *) bfd_zmalloc (amt);
- included = (boolean *) bfd_zmalloc (amt);
- if (defined == (boolean *) NULL || included == (boolean *) NULL)
- goto error_return;
-
- symdefs = bfd_ardata (abfd)->symdefs;
-
- do
- {
- file_ptr last;
- symindex i;
- carsym *symdef;
- carsym *symdefend;
-
- loop = false;
- last = -1;
-
- symdef = symdefs;
- symdefend = symdef + c;
- for (i = 0; symdef < symdefend; symdef++, i++)
- {
- struct elf_link_hash_entry *h;
- bfd *element;
- struct bfd_link_hash_entry *undefs_tail;
- symindex mark;
-
- if (defined[i] || included[i])
- continue;
- if (symdef->file_offset == last)
- {
- included[i] = true;
- continue;
- }
-
- h = elf_link_hash_lookup (elf_hash_table (info), symdef->name,
- false, false, false);
-
- if (h == NULL)
- {
- char *p, *copy;
- size_t len, first;
-
- /* If this is a default version (the name contains @@),
- look up the symbol again with only one `@' as well
- as without the version. The effect is that references
- to the symbol with and without the version will be
- matched by the default symbol in the archive. */
-
- p = strchr (symdef->name, ELF_VER_CHR);
- if (p == NULL || p[1] != ELF_VER_CHR)
- continue;
-
- /* First check with only one `@'. */
- len = strlen (symdef->name);
- copy = bfd_alloc (abfd, (bfd_size_type) len);
- if (copy == NULL)
- goto error_return;
- first = p - symdef->name + 1;
- memcpy (copy, symdef->name, first);
- memcpy (copy + first, symdef->name + first + 1, len - first);
-
- h = elf_link_hash_lookup (elf_hash_table (info), copy,
- false, false, false);
-
- if (h == NULL)
- {
- /* We also need to check references to the symbol
- without the version. */
-
- copy[first - 1] = '\0';
- h = elf_link_hash_lookup (elf_hash_table (info),
- copy, false, false, false);
- }
-
- bfd_release (abfd, copy);
- }
-
- if (h == NULL)
- continue;
-
- if (h->root.type == bfd_link_hash_common)
- {
- /* We currently have a common symbol. The archive map contains
- a reference to this symbol, so we may want to include it. We
- only want to include it however, if this archive element
- contains a definition of the symbol, not just another common
- declaration of it.
-
- Unfortunately some archivers (including GNU ar) will put
- declarations of common symbols into their archive maps, as
- well as real definitions, so we cannot just go by the archive
- map alone. Instead we must read in the element's symbol
- table and check that to see what kind of symbol definition
- this is. */
- if (! elf_link_is_defined_archive_symbol (abfd, symdef))
- continue;
- }
- else if (h->root.type != bfd_link_hash_undefined)
- {
- if (h->root.type != bfd_link_hash_undefweak)
- defined[i] = true;
- continue;
- }
-
- /* We need to include this archive member. */
- element = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
- if (element == (bfd *) NULL)
- goto error_return;
-
- if (! bfd_check_format (element, bfd_object))
- goto error_return;
-
- /* Doublecheck that we have not included this object
- already--it should be impossible, but there may be
- something wrong with the archive. */
- if (element->archive_pass != 0)
- {
- bfd_set_error (bfd_error_bad_value);
- goto error_return;
- }
- element->archive_pass = 1;
-
- undefs_tail = info->hash->undefs_tail;
-
- if (! (*info->callbacks->add_archive_element) (info, element,
- symdef->name))
- goto error_return;
- if (! elf_link_add_object_symbols (element, info))
- goto error_return;
-
- /* If there are any new undefined symbols, we need to make
- another pass through the archive in order to see whether
- they can be defined. FIXME: This isn't perfect, because
- common symbols wind up on undefs_tail and because an
- undefined symbol which is defined later on in this pass
- does not require another pass. This isn't a bug, but it
- does make the code less efficient than it could be. */
- if (undefs_tail != info->hash->undefs_tail)
- loop = true;
-
- /* Look backward to mark all symbols from this object file
- which we have already seen in this pass. */
- mark = i;
- do
- {
- included[mark] = true;
- if (mark == 0)
- break;
- --mark;
- }
- while (symdefs[mark].file_offset == symdef->file_offset);
-
- /* We mark subsequent symbols from this object file as we go
- on through the loop. */
- last = symdef->file_offset;
- }
- }
- while (loop);
-
- free (defined);
- free (included);
-
- return true;
-
- error_return:
- if (defined != (boolean *) NULL)
- free (defined);
- if (included != (boolean *) NULL)
- free (included);
- return false;
-}
-
-/* This function is called when we want to define a new symbol. It
- handles the various cases which arise when we find a definition in
- a dynamic object, or when there is already a definition in a
- dynamic object. The new symbol is described by NAME, SYM, PSEC,
- and PVALUE. We set SYM_HASH to the hash table entry. We set
- OVERRIDE if the old symbol is overriding a new definition. We set
- TYPE_CHANGE_OK if it is OK for the type to change. We set
- SIZE_CHANGE_OK if it is OK for the size to change. By OK to
- change, we mean that we shouldn't warn if the type or size does
- change. DT_NEEDED indicates if it comes from a DT_NEEDED entry of
- a shared object. */
-
-static boolean
-elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
- override, type_change_ok, size_change_ok, dt_needed)
- bfd *abfd;
- struct bfd_link_info *info;
- const char *name;
- Elf_Internal_Sym *sym;
- asection **psec;
- bfd_vma *pvalue;
- struct elf_link_hash_entry **sym_hash;
- boolean *override;
- boolean *type_change_ok;
- boolean *size_change_ok;
- boolean dt_needed;
-{
- asection *sec;
- struct elf_link_hash_entry *h;
- int bind;
- bfd *oldbfd;
- boolean newdyn, olddyn, olddef, newdef, newdyncommon, olddyncommon;
-
- *override = false;
-
- sec = *psec;
- bind = ELF_ST_BIND (sym->st_info);
-
- if (! bfd_is_und_section (sec))
- h = elf_link_hash_lookup (elf_hash_table (info), name, true, false, false);
- else
- h = ((struct elf_link_hash_entry *)
- bfd_wrapped_link_hash_lookup (abfd, info, name, true, false, false));
- if (h == NULL)
- return false;
- *sym_hash = h;
-
- /* This code is for coping with dynamic objects, and is only useful
- if we are doing an ELF link. */
- if (info->hash->creator != abfd->xvec)
- return true;
-
- /* For merging, we only care about real symbols. */
-
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* If we just created the symbol, mark it as being an ELF symbol.
- Other than that, there is nothing to do--there is no merge issue
- with a newly defined symbol--so we just return. */
-
- if (h->root.type == bfd_link_hash_new)
- {
- h->elf_link_hash_flags &=~ ELF_LINK_NON_ELF;
- return true;
- }
-
- /* OLDBFD is a BFD associated with the existing symbol. */
-
- switch (h->root.type)
- {
- default:
- oldbfd = NULL;
- break;
-
- case bfd_link_hash_undefined:
- case bfd_link_hash_undefweak:
- oldbfd = h->root.u.undef.abfd;
- break;
-
- case bfd_link_hash_defined:
- case bfd_link_hash_defweak:
- oldbfd = h->root.u.def.section->owner;
- break;
-
- case bfd_link_hash_common:
- oldbfd = h->root.u.c.p->section->owner;
- break;
- }
-
- /* In cases involving weak versioned symbols, we may wind up trying
- to merge a symbol with itself. Catch that here, to avoid the
- confusion that results if we try to override a symbol with
- itself. The additional tests catch cases like
- _GLOBAL_OFFSET_TABLE_, which are regular symbols defined in a
- dynamic object, which we do want to handle here. */
- if (abfd == oldbfd
- && ((abfd->flags & DYNAMIC) == 0
- || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0))
- return true;
-
- /* NEWDYN and OLDDYN indicate whether the new or old symbol,
- respectively, is from a dynamic object. */
-
- if ((abfd->flags & DYNAMIC) != 0)
- newdyn = true;
- else
- newdyn = false;
-
- if (oldbfd != NULL)
- olddyn = (oldbfd->flags & DYNAMIC) != 0;
- else
- {
- asection *hsec;
-
- /* This code handles the special SHN_MIPS_{TEXT,DATA} section
- indices used by MIPS ELF. */
- switch (h->root.type)
- {
- default:
- hsec = NULL;
- break;
-
- case bfd_link_hash_defined:
- case bfd_link_hash_defweak:
- hsec = h->root.u.def.section;
- break;
-
- case bfd_link_hash_common:
- hsec = h->root.u.c.p->section;
- break;
- }
-
- if (hsec == NULL)
- olddyn = false;
- else
- olddyn = (hsec->symbol->flags & BSF_DYNAMIC) != 0;
- }
-
- /* NEWDEF and OLDDEF indicate whether the new or old symbol,
- respectively, appear to be a definition rather than reference. */
-
- if (bfd_is_und_section (sec) || bfd_is_com_section (sec))
- newdef = false;
- else
- newdef = true;
-
- if (h->root.type == bfd_link_hash_undefined
- || h->root.type == bfd_link_hash_undefweak
- || h->root.type == bfd_link_hash_common)
- olddef = false;
- else
- olddef = true;
-
- /* NEWDYNCOMMON and OLDDYNCOMMON indicate whether the new or old
- symbol, respectively, appears to be a common symbol in a dynamic
- object. If a symbol appears in an uninitialized section, and is
- not weak, and is not a function, then it may be a common symbol
- which was resolved when the dynamic object was created. We want
- to treat such symbols specially, because they raise special
- considerations when setting the symbol size: if the symbol
- appears as a common symbol in a regular object, and the size in
- the regular object is larger, we must make sure that we use the
- larger size. This problematic case can always be avoided in C,
- but it must be handled correctly when using Fortran shared
- libraries.
-
- Note that if NEWDYNCOMMON is set, NEWDEF will be set, and
- likewise for OLDDYNCOMMON and OLDDEF.
-
- Note that this test is just a heuristic, and that it is quite
- possible to have an uninitialized symbol in a shared object which
- is really a definition, rather than a common symbol. This could
- lead to some minor confusion when the symbol really is a common
- symbol in some regular object. However, I think it will be
- harmless. */
-
- if (newdyn
- && newdef
- && (sec->flags & SEC_ALLOC) != 0
- && (sec->flags & SEC_LOAD) == 0
- && sym->st_size > 0
- && bind != STB_WEAK
- && ELF_ST_TYPE (sym->st_info) != STT_FUNC)
- newdyncommon = true;
- else
- newdyncommon = false;
-
- if (olddyn
- && olddef
- && h->root.type == bfd_link_hash_defined
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- && (h->root.u.def.section->flags & SEC_ALLOC) != 0
- && (h->root.u.def.section->flags & SEC_LOAD) == 0
- && h->size > 0
- && h->type != STT_FUNC)
- olddyncommon = true;
- else
- olddyncommon = false;
-
- /* It's OK to change the type if either the existing symbol or the
- new symbol is weak unless it comes from a DT_NEEDED entry of
- a shared object, in which case, the DT_NEEDED entry may not be
- required at the run time. */
-
- if ((! dt_needed && h->root.type == bfd_link_hash_defweak)
- || h->root.type == bfd_link_hash_undefweak
- || bind == STB_WEAK)
- *type_change_ok = true;
-
- /* It's OK to change the size if either the existing symbol or the
- new symbol is weak, or if the old symbol is undefined. */
-
- if (*type_change_ok
- || h->root.type == bfd_link_hash_undefined)
- *size_change_ok = true;
-
- /* If both the old and the new symbols look like common symbols in a
- dynamic object, set the size of the symbol to the larger of the
- two. */
-
- if (olddyncommon
- && newdyncommon
- && sym->st_size != h->size)
- {
- /* Since we think we have two common symbols, issue a multiple
- common warning if desired. Note that we only warn if the
- size is different. If the size is the same, we simply let
- the old symbol override the new one as normally happens with
- symbols defined in dynamic objects. */
-
- if (! ((*info->callbacks->multiple_common)
- (info, h->root.root.string, oldbfd, bfd_link_hash_common,
- h->size, abfd, bfd_link_hash_common, sym->st_size)))
- return false;
-
- if (sym->st_size > h->size)
- h->size = sym->st_size;
-
- *size_change_ok = true;
- }
-
- /* If we are looking at a dynamic object, and we have found a
- definition, we need to see if the symbol was already defined by
- some other object. If so, we want to use the existing
- definition, and we do not want to report a multiple symbol
- definition error; we do this by clobbering *PSEC to be
- bfd_und_section_ptr.
-
- We treat a common symbol as a definition if the symbol in the
- shared library is a function, since common symbols always
- represent variables; this can cause confusion in principle, but
- any such confusion would seem to indicate an erroneous program or
- shared library. We also permit a common symbol in a regular
- object to override a weak symbol in a shared object.
-
- We prefer a non-weak definition in a shared library to a weak
- definition in the executable unless it comes from a DT_NEEDED
- entry of a shared object, in which case, the DT_NEEDED entry
- may not be required at the run time. */
-
- if (newdyn
- && newdef
- && (olddef
- || (h->root.type == bfd_link_hash_common
- && (bind == STB_WEAK
- || ELF_ST_TYPE (sym->st_info) == STT_FUNC)))
- && (h->root.type != bfd_link_hash_defweak
- || dt_needed
- || bind == STB_WEAK))
- {
- *override = true;
- newdef = false;
- newdyncommon = false;
-
- *psec = sec = bfd_und_section_ptr;
- *size_change_ok = true;
-
- /* If we get here when the old symbol is a common symbol, then
- we are explicitly letting it override a weak symbol or
- function in a dynamic object, and we don't want to warn about
- a type change. If the old symbol is a defined symbol, a type
- change warning may still be appropriate. */
-
- if (h->root.type == bfd_link_hash_common)
- *type_change_ok = true;
- }
-
- /* Handle the special case of an old common symbol merging with a
- new symbol which looks like a common symbol in a shared object.
- We change *PSEC and *PVALUE to make the new symbol look like a
- common symbol, and let _bfd_generic_link_add_one_symbol will do
- the right thing. */
-
- if (newdyncommon
- && h->root.type == bfd_link_hash_common)
- {
- *override = true;
- newdef = false;
- newdyncommon = false;
- *pvalue = sym->st_size;
- *psec = sec = bfd_com_section_ptr;
- *size_change_ok = true;
- }
-
- /* If the old symbol is from a dynamic object, and the new symbol is
- a definition which is not from a dynamic object, then the new
- symbol overrides the old symbol. Symbols from regular files
- always take precedence over symbols from dynamic objects, even if
- they are defined after the dynamic object in the link.
-
- As above, we again permit a common symbol in a regular object to
- override a definition in a shared object if the shared object
- symbol is a function or is weak.
-
- As above, we permit a non-weak definition in a shared object to
- override a weak definition in a regular object. */
-
- if (! newdyn
- && (newdef
- || (bfd_is_com_section (sec)
- && (h->root.type == bfd_link_hash_defweak
- || h->type == STT_FUNC)))
- && olddyn
- && olddef
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- && (bind != STB_WEAK
- || h->root.type == bfd_link_hash_defweak))
- {
- /* Change the hash table entry to undefined, and let
- _bfd_generic_link_add_one_symbol do the right thing with the
- new definition. */
-
- h->root.type = bfd_link_hash_undefined;
- h->root.u.undef.abfd = h->root.u.def.section->owner;
- *size_change_ok = true;
-
- olddef = false;
- olddyncommon = false;
-
- /* We again permit a type change when a common symbol may be
- overriding a function. */
-
- if (bfd_is_com_section (sec))
- *type_change_ok = true;
-
- /* This union may have been set to be non-NULL when this symbol
- was seen in a dynamic object. We must force the union to be
- NULL, so that it is correct for a regular symbol. */
-
- h->verinfo.vertree = NULL;
-
- /* In this special case, if H is the target of an indirection,
- we want the caller to frob with H rather than with the
- indirect symbol. That will permit the caller to redefine the
- target of the indirection, rather than the indirect symbol
- itself. FIXME: This will break the -y option if we store a
- symbol with a different name. */
- *sym_hash = h;
- }
-
- /* Handle the special case of a new common symbol merging with an
- old symbol that looks like it might be a common symbol defined in
- a shared object. Note that we have already handled the case in
- which a new common symbol should simply override the definition
- in the shared library. */
-
- if (! newdyn
- && bfd_is_com_section (sec)
- && olddyncommon)
- {
- /* It would be best if we could set the hash table entry to a
- common symbol, but we don't know what to use for the section
- or the alignment. */
- if (! ((*info->callbacks->multiple_common)
- (info, h->root.root.string, oldbfd, bfd_link_hash_common,
- h->size, abfd, bfd_link_hash_common, sym->st_size)))
- return false;
-
- /* If the predumed common symbol in the dynamic object is
- larger, pretend that the new symbol has its size. */
-
- if (h->size > *pvalue)
- *pvalue = h->size;
-
- /* FIXME: We no longer know the alignment required by the symbol
- in the dynamic object, so we just wind up using the one from
- the regular object. */
-
- olddef = false;
- olddyncommon = false;
-
- h->root.type = bfd_link_hash_undefined;
- h->root.u.undef.abfd = h->root.u.def.section->owner;
-
- *size_change_ok = true;
- *type_change_ok = true;
-
- h->verinfo.vertree = NULL;
- }
-
- /* Handle the special case of a weak definition in a regular object
- followed by a non-weak definition in a shared object. In this
- case, we prefer the definition in the shared object unless it
- comes from a DT_NEEDED entry of a shared object, in which case,
- the DT_NEEDED entry may not be required at the run time. */
- if (olddef
- && ! dt_needed
- && h->root.type == bfd_link_hash_defweak
- && newdef
- && newdyn
- && bind != STB_WEAK)
- {
- /* To make this work we have to frob the flags so that the rest
- of the code does not think we are using the regular
- definition. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
- h->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR;
- else if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0)
- h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
- h->elf_link_hash_flags &= ~ (ELF_LINK_HASH_DEF_REGULAR
- | ELF_LINK_HASH_DEF_DYNAMIC);
-
- /* If H is the target of an indirection, we want the caller to
- use H rather than the indirect symbol. Otherwise if we are
- defining a new indirect symbol we will wind up attaching it
- to the entry we are overriding. */
- *sym_hash = h;
- }
-
- /* Handle the special case of a non-weak definition in a shared
- object followed by a weak definition in a regular object. In
- this case we prefer to definition in the shared object. To make
- this work we have to tell the caller to not treat the new symbol
- as a definition. */
- if (olddef
- && olddyn
- && h->root.type != bfd_link_hash_defweak
- && newdef
- && ! newdyn
- && bind == STB_WEAK)
- *override = true;
-
- return true;
-}
-
-/* This function is called to create an indirect symbol from the
- default for the symbol with the default version if needed. The
- symbol is described by H, NAME, SYM, PSEC, VALUE, and OVERRIDE. We
- set DYNSYM if the new indirect symbol is dynamic. DT_NEEDED
- indicates if it comes from a DT_NEEDED entry of a shared object. */
-
-static boolean
-elf_add_default_symbol (abfd, info, h, name, sym, psec, value,
- dynsym, override, dt_needed)
- bfd *abfd;
- struct bfd_link_info *info;
- struct elf_link_hash_entry *h;
- const char *name;
- Elf_Internal_Sym *sym;
- asection **psec;
- bfd_vma *value;
- boolean *dynsym;
- boolean override;
- boolean dt_needed;
-{
- boolean type_change_ok;
- boolean size_change_ok;
- char *shortname;
- struct elf_link_hash_entry *hi;
- struct bfd_link_hash_entry *bh;
- struct elf_backend_data *bed;
- boolean collect;
- boolean dynamic;
- char *p;
- size_t len, shortlen;
- asection *sec;
-
- /* If this symbol has a version, and it is the default version, we
- create an indirect symbol from the default name to the fully
- decorated name. This will cause external references which do not
- specify a version to be bound to this version of the symbol. */
- p = strchr (name, ELF_VER_CHR);
- if (p == NULL || p[1] != ELF_VER_CHR)
- return true;
-
- if (override)
- {
- /* We are overridden by an old defition. We need to check if we
- need to create the indirect symbol from the default name. */
- hi = elf_link_hash_lookup (elf_hash_table (info), name, true,
- false, false);
- BFD_ASSERT (hi != NULL);
- if (hi == h)
- return true;
- while (hi->root.type == bfd_link_hash_indirect
- || hi->root.type == bfd_link_hash_warning)
- {
- hi = (struct elf_link_hash_entry *) hi->root.u.i.link;
- if (hi == h)
- return true;
- }
- }
-
- bed = get_elf_backend_data (abfd);
- collect = bed->collect;
- dynamic = (abfd->flags & DYNAMIC) != 0;
-
- shortlen = p - name;
- shortname = bfd_hash_allocate (&info->hash->table, shortlen + 1);
- if (shortname == NULL)
- return false;
- memcpy (shortname, name, shortlen);
- shortname[shortlen] = '\0';
-
- /* We are going to create a new symbol. Merge it with any existing
- symbol with this name. For the purposes of the merge, act as
- though we were defining the symbol we just defined, although we
- actually going to define an indirect symbol. */
- type_change_ok = false;
- size_change_ok = false;
- sec = *psec;
- if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value,
- &hi, &override, &type_change_ok,
- &size_change_ok, dt_needed))
- return false;
-
- if (! override)
- {
- bh = &hi->root;
- if (! (_bfd_generic_link_add_one_symbol
- (info, abfd, shortname, BSF_INDIRECT, bfd_ind_section_ptr,
- (bfd_vma) 0, name, false, collect, &bh)))
- return false;
- hi = (struct elf_link_hash_entry *) bh;
- }
- else
- {
- /* In this case the symbol named SHORTNAME is overriding the
- indirect symbol we want to add. We were planning on making
- SHORTNAME an indirect symbol referring to NAME. SHORTNAME
- is the name without a version. NAME is the fully versioned
- name, and it is the default version.
-
- Overriding means that we already saw a definition for the
- symbol SHORTNAME in a regular object, and it is overriding
- the symbol defined in the dynamic object.
-
- When this happens, we actually want to change NAME, the
- symbol we just added, to refer to SHORTNAME. This will cause
- references to NAME in the shared object to become references
- to SHORTNAME in the regular object. This is what we expect
- when we override a function in a shared object: that the
- references in the shared object will be mapped to the
- definition in the regular object. */
-
- while (hi->root.type == bfd_link_hash_indirect
- || hi->root.type == bfd_link_hash_warning)
- hi = (struct elf_link_hash_entry *) hi->root.u.i.link;
-
- h->root.type = bfd_link_hash_indirect;
- h->root.u.i.link = (struct bfd_link_hash_entry *) hi;
- if (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC)
- {
- h->elf_link_hash_flags &=~ ELF_LINK_HASH_DEF_DYNAMIC;
- hi->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC;
- if (hi->elf_link_hash_flags
- & (ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_DEF_REGULAR))
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, hi))
- return false;
- }
- }
-
- /* Now set HI to H, so that the following code will set the
- other fields correctly. */
- hi = h;
- }
-
- /* If there is a duplicate definition somewhere, then HI may not
- point to an indirect symbol. We will have reported an error to
- the user in that case. */
-
- if (hi->root.type == bfd_link_hash_indirect)
- {
- struct elf_link_hash_entry *ht;
-
- /* If the symbol became indirect, then we assume that we have
- not seen a definition before. */
- BFD_ASSERT ((hi->elf_link_hash_flags
- & (ELF_LINK_HASH_DEF_DYNAMIC
- | ELF_LINK_HASH_DEF_REGULAR)) == 0);
-
- ht = (struct elf_link_hash_entry *) hi->root.u.i.link;
- (*bed->elf_backend_copy_indirect_symbol) (bed, ht, hi);
-
- /* See if the new flags lead us to realize that the symbol must
- be dynamic. */
- if (! *dynsym)
- {
- if (! dynamic)
- {
- if (info->shared
- || ((hi->elf_link_hash_flags
- & ELF_LINK_HASH_REF_DYNAMIC) != 0))
- *dynsym = true;
- }
- else
- {
- if ((hi->elf_link_hash_flags
- & ELF_LINK_HASH_REF_REGULAR) != 0)
- *dynsym = true;
- }
- }
- }
-
- /* We also need to define an indirection from the nondefault version
- of the symbol. */
-
- len = strlen (name);
- shortname = bfd_hash_allocate (&info->hash->table, len);
- if (shortname == NULL)
- return false;
- memcpy (shortname, name, shortlen);
- memcpy (shortname + shortlen, p + 1, len - shortlen);
-
- /* Once again, merge with any existing symbol. */
- type_change_ok = false;
- size_change_ok = false;
- sec = *psec;
- if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value,
- &hi, &override, &type_change_ok,
- &size_change_ok, dt_needed))
- return false;
-
- if (override)
- {
- /* Here SHORTNAME is a versioned name, so we don't expect to see
- the type of override we do in the case above unless it is
- overridden by a versioned definiton. */
- if (hi->root.type != bfd_link_hash_defined
- && hi->root.type != bfd_link_hash_defweak)
- (*_bfd_error_handler)
- (_("%s: warning: unexpected redefinition of indirect versioned symbol `%s'"),
- bfd_archive_filename (abfd), shortname);
- }
- else
- {
- bh = &hi->root;
- if (! (_bfd_generic_link_add_one_symbol
- (info, abfd, shortname, BSF_INDIRECT,
- bfd_ind_section_ptr, (bfd_vma) 0, name, false, collect, &bh)))
- return false;
- hi = (struct elf_link_hash_entry *) bh;
-
- /* If there is a duplicate definition somewhere, then HI may not
- point to an indirect symbol. We will have reported an error
- to the user in that case. */
-
- if (hi->root.type == bfd_link_hash_indirect)
- {
- /* If the symbol became indirect, then we assume that we have
- not seen a definition before. */
- BFD_ASSERT ((hi->elf_link_hash_flags
- & (ELF_LINK_HASH_DEF_DYNAMIC
- | ELF_LINK_HASH_DEF_REGULAR)) == 0);
-
- (*bed->elf_backend_copy_indirect_symbol) (bed, h, hi);
-
- /* See if the new flags lead us to realize that the symbol
- must be dynamic. */
- if (! *dynsym)
- {
- if (! dynamic)
- {
- if (info->shared
- || ((hi->elf_link_hash_flags
- & ELF_LINK_HASH_REF_DYNAMIC) != 0))
- *dynsym = true;
- }
- else
- {
- if ((hi->elf_link_hash_flags
- & ELF_LINK_HASH_REF_REGULAR) != 0)
- *dynsym = true;
- }
- }
- }
- }
-
- return true;
-}
-
-/* Add symbols from an ELF object file to the linker hash table. */
-
-static boolean
-elf_link_add_object_symbols (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- boolean (*add_symbol_hook) PARAMS ((bfd *, struct bfd_link_info *,
- const Elf_Internal_Sym *,
- const char **, flagword *,
- asection **, bfd_vma *));
- boolean (*check_relocs) PARAMS ((bfd *, struct bfd_link_info *,
- asection *, const Elf_Internal_Rela *));
- boolean collect;
- Elf_Internal_Shdr *hdr;
- bfd_size_type symcount;
- bfd_size_type extsymcount;
- bfd_size_type extsymoff;
- struct elf_link_hash_entry **sym_hash;
- boolean dynamic;
- Elf_External_Versym *extversym = NULL;
- Elf_External_Versym *ever;
- struct elf_link_hash_entry *weaks;
- Elf_Internal_Sym *isymbuf = NULL;
- Elf_Internal_Sym *isym;
- Elf_Internal_Sym *isymend;
- struct elf_backend_data *bed;
- boolean dt_needed;
- struct elf_link_hash_table * hash_table;
- bfd_size_type amt;
-
- hash_table = elf_hash_table (info);
-
- bed = get_elf_backend_data (abfd);
- add_symbol_hook = bed->elf_add_symbol_hook;
- collect = bed->collect;
-
- if ((abfd->flags & DYNAMIC) == 0)
- dynamic = false;
- else
- {
- dynamic = true;
-
- /* You can't use -r against a dynamic object. Also, there's no
- hope of using a dynamic object which does not exactly match
- the format of the output file. */
- if (info->relocateable || info->hash->creator != abfd->xvec)
- {
- bfd_set_error (bfd_error_invalid_operation);
- goto error_return;
- }
- }
-
- /* As a GNU extension, any input sections which are named
- .gnu.warning.SYMBOL are treated as warning symbols for the given
- symbol. This differs from .gnu.warning sections, which generate
- warnings when they are included in an output file. */
- if (! info->shared)
- {
- asection *s;
-
- for (s = abfd->sections; s != NULL; s = s->next)
- {
- const char *name;
-
- name = bfd_get_section_name (abfd, s);
- if (strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) == 0)
- {
- char *msg;
- bfd_size_type sz;
-
- name += sizeof ".gnu.warning." - 1;
-
- /* If this is a shared object, then look up the symbol
- in the hash table. If it is there, and it is already
- been defined, then we will not be using the entry
- from this shared object, so we don't need to warn.
- FIXME: If we see the definition in a regular object
- later on, we will warn, but we shouldn't. The only
- fix is to keep track of what warnings we are supposed
- to emit, and then handle them all at the end of the
- link. */
- if (dynamic && abfd->xvec == info->hash->creator)
- {
- struct elf_link_hash_entry *h;
-
- h = elf_link_hash_lookup (hash_table, name,
- false, false, true);
-
- /* FIXME: What about bfd_link_hash_common? */
- if (h != NULL
- && (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak))
- {
- /* We don't want to issue this warning. Clobber
- the section size so that the warning does not
- get copied into the output file. */
- s->_raw_size = 0;
- continue;
- }
- }
-
- sz = bfd_section_size (abfd, s);
- msg = (char *) bfd_alloc (abfd, sz + 1);
- if (msg == NULL)
- goto error_return;
-
- if (! bfd_get_section_contents (abfd, s, msg, (file_ptr) 0, sz))
- goto error_return;
-
- msg[sz] = '\0';
-
- if (! (_bfd_generic_link_add_one_symbol
- (info, abfd, name, BSF_WARNING, s, (bfd_vma) 0, msg,
- false, collect, (struct bfd_link_hash_entry **) NULL)))
- goto error_return;
-
- if (! info->relocateable)
- {
- /* Clobber the section size so that the warning does
- not get copied into the output file. */
- s->_raw_size = 0;
- }
- }
- }
- }
-
- dt_needed = false;
- if (! dynamic)
- {
- /* If we are creating a shared library, create all the dynamic
- sections immediately. We need to attach them to something,
- so we attach them to this BFD, provided it is the right
- format. FIXME: If there are no input BFD's of the same
- format as the output, we can't make a shared library. */
- if (info->shared
- && is_elf_hash_table (info)
- && ! hash_table->dynamic_sections_created
- && abfd->xvec == info->hash->creator)
- {
- if (! elf_link_create_dynamic_sections (abfd, info))
- goto error_return;
- }
- }
- else if (! is_elf_hash_table (info))
- goto error_return;
- else
- {
- asection *s;
- boolean add_needed;
- const char *name;
- bfd_size_type oldsize;
- bfd_size_type strindex;
- struct bfd_link_needed_list *rpath = NULL, *runpath = NULL;
-
- /* ld --just-symbols and dynamic objects don't mix very well.
- Test for --just-symbols by looking at info set up by
- _bfd_elf_link_just_syms. */
- if ((s = abfd->sections) != NULL
- && elf_section_data (s)->sec_info_type == ELF_INFO_TYPE_JUST_SYMS)
- goto error_return;
-
- /* Find the name to use in a DT_NEEDED entry that refers to this
- object. If the object has a DT_SONAME entry, we use it.
- Otherwise, if the generic linker stuck something in
- elf_dt_name, we use that. Otherwise, we just use the file
- name. If the generic linker put a null string into
- elf_dt_name, we don't make a DT_NEEDED entry at all, even if
- there is a DT_SONAME entry. */
- add_needed = true;
- name = bfd_get_filename (abfd);
- if (elf_dt_name (abfd) != NULL)
- {
- name = elf_dt_name (abfd);
- if (*name == '\0')
- {
- if (elf_dt_soname (abfd) != NULL)
- dt_needed = true;
-
- add_needed = false;
- }
- }
- s = bfd_get_section_by_name (abfd, ".dynamic");
- if (s != NULL)
- {
- Elf_External_Dyn *dynbuf = NULL;
- Elf_External_Dyn *extdyn;
- Elf_External_Dyn *extdynend;
- int elfsec;
- unsigned long shlink;
-
- dynbuf = (Elf_External_Dyn *) bfd_malloc (s->_raw_size);
- if (dynbuf == NULL)
- goto error_return;
-
- if (! bfd_get_section_contents (abfd, s, (PTR) dynbuf,
- (file_ptr) 0, s->_raw_size))
- goto error_free_dyn;
-
- elfsec = _bfd_elf_section_from_bfd_section (abfd, s);
- if (elfsec == -1)
- goto error_free_dyn;
- shlink = elf_elfsections (abfd)[elfsec]->sh_link;
-
- extdyn = dynbuf;
- extdynend = extdyn + s->_raw_size / sizeof (Elf_External_Dyn);
- for (; extdyn < extdynend; extdyn++)
- {
- Elf_Internal_Dyn dyn;
-
- elf_swap_dyn_in (abfd, extdyn, &dyn);
- if (dyn.d_tag == DT_SONAME)
- {
- unsigned int tagv = dyn.d_un.d_val;
- name = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
- if (name == NULL)
- goto error_free_dyn;
- }
- if (dyn.d_tag == DT_NEEDED)
- {
- struct bfd_link_needed_list *n, **pn;
- char *fnm, *anm;
- unsigned int tagv = dyn.d_un.d_val;
-
- amt = sizeof (struct bfd_link_needed_list);
- n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
- fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
- if (n == NULL || fnm == NULL)
- goto error_free_dyn;
- amt = strlen (fnm) + 1;
- anm = bfd_alloc (abfd, amt);
- if (anm == NULL)
- goto error_free_dyn;
- memcpy (anm, fnm, (size_t) amt);
- n->name = anm;
- n->by = abfd;
- n->next = NULL;
- for (pn = & hash_table->needed;
- *pn != NULL;
- pn = &(*pn)->next)
- ;
- *pn = n;
- }
- if (dyn.d_tag == DT_RUNPATH)
- {
- struct bfd_link_needed_list *n, **pn;
- char *fnm, *anm;
- unsigned int tagv = dyn.d_un.d_val;
-
- amt = sizeof (struct bfd_link_needed_list);
- n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
- fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
- if (n == NULL || fnm == NULL)
- goto error_free_dyn;
- amt = strlen (fnm) + 1;
- anm = bfd_alloc (abfd, amt);
- if (anm == NULL)
- goto error_free_dyn;
- memcpy (anm, fnm, (size_t) amt);
- n->name = anm;
- n->by = abfd;
- n->next = NULL;
- for (pn = & runpath;
- *pn != NULL;
- pn = &(*pn)->next)
- ;
- *pn = n;
- }
- /* Ignore DT_RPATH if we have seen DT_RUNPATH. */
- if (!runpath && dyn.d_tag == DT_RPATH)
- {
- struct bfd_link_needed_list *n, **pn;
- char *fnm, *anm;
- unsigned int tagv = dyn.d_un.d_val;
-
- amt = sizeof (struct bfd_link_needed_list);
- n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
- fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
- if (n == NULL || fnm == NULL)
- goto error_free_dyn;
- amt = strlen (fnm) + 1;
- anm = bfd_alloc (abfd, amt);
- if (anm == NULL)
- {
- error_free_dyn:
- free (dynbuf);
- goto error_return;
- }
- memcpy (anm, fnm, (size_t) amt);
- n->name = anm;
- n->by = abfd;
- n->next = NULL;
- for (pn = & rpath;
- *pn != NULL;
- pn = &(*pn)->next)
- ;
- *pn = n;
- }
- }
-
- free (dynbuf);
- }
-
- /* DT_RUNPATH overrides DT_RPATH. Do _NOT_ bfd_release, as that
- frees all more recently bfd_alloc'd blocks as well. */
- if (runpath)
- rpath = runpath;
-
- if (rpath)
- {
- struct bfd_link_needed_list **pn;
- for (pn = & hash_table->runpath;
- *pn != NULL;
- pn = &(*pn)->next)
- ;
- *pn = rpath;
- }
-
- /* We do not want to include any of the sections in a dynamic
- object in the output file. We hack by simply clobbering the
- list of sections in the BFD. This could be handled more
- cleanly by, say, a new section flag; the existing
- SEC_NEVER_LOAD flag is not the one we want, because that one
- still implies that the section takes up space in the output
- file. */
- bfd_section_list_clear (abfd);
-
- /* If this is the first dynamic object found in the link, create
- the special sections required for dynamic linking. */
- if (! hash_table->dynamic_sections_created)
- if (! elf_link_create_dynamic_sections (abfd, info))
- goto error_return;
-
- if (add_needed)
- {
- /* Add a DT_NEEDED entry for this dynamic object. */
- oldsize = _bfd_elf_strtab_size (hash_table->dynstr);
- strindex = _bfd_elf_strtab_add (hash_table->dynstr, name, false);
- if (strindex == (bfd_size_type) -1)
- goto error_return;
-
- if (oldsize == _bfd_elf_strtab_size (hash_table->dynstr))
- {
- asection *sdyn;
- Elf_External_Dyn *dyncon, *dynconend;
-
- /* The hash table size did not change, which means that
- the dynamic object name was already entered. If we
- have already included this dynamic object in the
- link, just ignore it. There is no reason to include
- a particular dynamic object more than once. */
- sdyn = bfd_get_section_by_name (hash_table->dynobj, ".dynamic");
- BFD_ASSERT (sdyn != NULL);
-
- dyncon = (Elf_External_Dyn *) sdyn->contents;
- dynconend = (Elf_External_Dyn *) (sdyn->contents +
- sdyn->_raw_size);
- for (; dyncon < dynconend; dyncon++)
- {
- Elf_Internal_Dyn dyn;
-
- elf_swap_dyn_in (hash_table->dynobj, dyncon, & dyn);
- if (dyn.d_tag == DT_NEEDED
- && dyn.d_un.d_val == strindex)
- {
- _bfd_elf_strtab_delref (hash_table->dynstr, strindex);
- return true;
- }
- }
- }
-
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_NEEDED, strindex))
- goto error_return;
- }
-
- /* Save the SONAME, if there is one, because sometimes the
- linker emulation code will need to know it. */
- if (*name == '\0')
- name = basename (bfd_get_filename (abfd));
- elf_dt_name (abfd) = name;
- }
-
- /* If this is a dynamic object, we always link against the .dynsym
- symbol table, not the .symtab symbol table. The dynamic linker
- will only see the .dynsym symbol table, so there is no reason to
- look at .symtab for a dynamic object. */
-
- if (! dynamic || elf_dynsymtab (abfd) == 0)
- hdr = &elf_tdata (abfd)->symtab_hdr;
- else
- hdr = &elf_tdata (abfd)->dynsymtab_hdr;
-
- symcount = hdr->sh_size / sizeof (Elf_External_Sym);
-
- /* The sh_info field of the symtab header tells us where the
- external symbols start. We don't care about the local symbols at
- this point. */
- if (elf_bad_symtab (abfd))
- {
- extsymcount = symcount;
- extsymoff = 0;
- }
- else
- {
- extsymcount = symcount - hdr->sh_info;
- extsymoff = hdr->sh_info;
- }
-
- sym_hash = NULL;
- if (extsymcount != 0)
- {
- isymbuf = bfd_elf_get_elf_syms (abfd, hdr, extsymcount, extsymoff,
- NULL, NULL, NULL);
- if (isymbuf == NULL)
- goto error_return;
-
- /* We store a pointer to the hash table entry for each external
- symbol. */
- amt = extsymcount * sizeof (struct elf_link_hash_entry *);
- sym_hash = (struct elf_link_hash_entry **) bfd_alloc (abfd, amt);
- if (sym_hash == NULL)
- goto error_free_sym;
- elf_sym_hashes (abfd) = sym_hash;
- }
-
- if (dynamic)
- {
- /* Read in any version definitions. */
- if (! _bfd_elf_slurp_version_tables (abfd))
- goto error_free_sym;
-
- /* Read in the symbol versions, but don't bother to convert them
- to internal format. */
- if (elf_dynversym (abfd) != 0)
- {
- Elf_Internal_Shdr *versymhdr;
-
- versymhdr = &elf_tdata (abfd)->dynversym_hdr;
- extversym = (Elf_External_Versym *) bfd_malloc (versymhdr->sh_size);
- if (extversym == NULL)
- goto error_free_sym;
- amt = versymhdr->sh_size;
- if (bfd_seek (abfd, versymhdr->sh_offset, SEEK_SET) != 0
- || bfd_bread ((PTR) extversym, amt, abfd) != amt)
- goto error_free_vers;
- }
- }
-
- weaks = NULL;
-
- ever = extversym != NULL ? extversym + extsymoff : NULL;
- for (isym = isymbuf, isymend = isymbuf + extsymcount;
- isym < isymend;
- isym++, sym_hash++, ever = (ever != NULL ? ever + 1 : NULL))
- {
- int bind;
- bfd_vma value;
- asection *sec;
- flagword flags;
- const char *name;
- struct elf_link_hash_entry *h;
- boolean definition;
- boolean size_change_ok, type_change_ok;
- boolean new_weakdef;
- unsigned int old_alignment;
- boolean override;
-
- override = false;
-
- flags = BSF_NO_FLAGS;
- sec = NULL;
- value = isym->st_value;
- *sym_hash = NULL;
-
- bind = ELF_ST_BIND (isym->st_info);
- if (bind == STB_LOCAL)
- {
- /* This should be impossible, since ELF requires that all
- global symbols follow all local symbols, and that sh_info
- point to the first global symbol. Unfortunatealy, Irix 5
- screws this up. */
- continue;
- }
- else if (bind == STB_GLOBAL)
- {
- if (isym->st_shndx != SHN_UNDEF
- && isym->st_shndx != SHN_COMMON)
- flags = BSF_GLOBAL;
- }
- else if (bind == STB_WEAK)
- flags = BSF_WEAK;
- else
- {
- /* Leave it up to the processor backend. */
- }
-
- if (isym->st_shndx == SHN_UNDEF)
- sec = bfd_und_section_ptr;
- else if (isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
- {
- sec = section_from_elf_index (abfd, isym->st_shndx);
- if (sec == NULL)
- sec = bfd_abs_section_ptr;
- else if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
- value -= sec->vma;
- }
- else if (isym->st_shndx == SHN_ABS)
- sec = bfd_abs_section_ptr;
- else if (isym->st_shndx == SHN_COMMON)
- {
- sec = bfd_com_section_ptr;
- /* What ELF calls the size we call the value. What ELF
- calls the value we call the alignment. */
- value = isym->st_size;
- }
- else
- {
- /* Leave it up to the processor backend. */
- }
-
- name = bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
- isym->st_name);
- if (name == (const char *) NULL)
- goto error_free_vers;
-
- if (isym->st_shndx == SHN_COMMON
- && ELF_ST_TYPE (isym->st_info) == STT_TLS)
- {
- asection *tcomm = bfd_get_section_by_name (abfd, ".tcommon");
-
- if (tcomm == NULL)
- {
- tcomm = bfd_make_section (abfd, ".tcommon");
- if (tcomm == NULL
- || !bfd_set_section_flags (abfd, tcomm, (SEC_ALLOC
- | SEC_IS_COMMON
- | SEC_LINKER_CREATED
- | SEC_THREAD_LOCAL)))
- goto error_free_vers;
- }
- sec = tcomm;
- }
- else if (add_symbol_hook)
- {
- if (! (*add_symbol_hook) (abfd, info, isym, &name, &flags, &sec,
- &value))
- goto error_free_vers;
-
- /* The hook function sets the name to NULL if this symbol
- should be skipped for some reason. */
- if (name == (const char *) NULL)
- continue;
- }
-
- /* Sanity check that all possibilities were handled. */
- if (sec == (asection *) NULL)
- {
- bfd_set_error (bfd_error_bad_value);
- goto error_free_vers;
- }
-
- if (bfd_is_und_section (sec)
- || bfd_is_com_section (sec))
- definition = false;
- else
- definition = true;
-
- size_change_ok = false;
- type_change_ok = get_elf_backend_data (abfd)->type_change_ok;
- old_alignment = 0;
- if (info->hash->creator->flavour == bfd_target_elf_flavour)
- {
- Elf_Internal_Versym iver;
- unsigned int vernum = 0;
-
- if (ever != NULL)
- {
- _bfd_elf_swap_versym_in (abfd, ever, &iver);
- vernum = iver.vs_vers & VERSYM_VERSION;
-
- /* If this is a hidden symbol, or if it is not version
- 1, we append the version name to the symbol name.
- However, we do not modify a non-hidden absolute
- symbol, because it might be the version symbol
- itself. FIXME: What if it isn't? */
- if ((iver.vs_vers & VERSYM_HIDDEN) != 0
- || (vernum > 1 && ! bfd_is_abs_section (sec)))
- {
- const char *verstr;
- size_t namelen, verlen, newlen;
- char *newname, *p;
-
- if (isym->st_shndx != SHN_UNDEF)
- {
- if (vernum > elf_tdata (abfd)->dynverdef_hdr.sh_info)
- {
- (*_bfd_error_handler)
- (_("%s: %s: invalid version %u (max %d)"),
- bfd_archive_filename (abfd), name, vernum,
- elf_tdata (abfd)->dynverdef_hdr.sh_info);
- bfd_set_error (bfd_error_bad_value);
- goto error_free_vers;
- }
- else if (vernum > 1)
- verstr =
- elf_tdata (abfd)->verdef[vernum - 1].vd_nodename;
- else
- verstr = "";
- }
- else
- {
- /* We cannot simply test for the number of
- entries in the VERNEED section since the
- numbers for the needed versions do not start
- at 0. */
- Elf_Internal_Verneed *t;
-
- verstr = NULL;
- for (t = elf_tdata (abfd)->verref;
- t != NULL;
- t = t->vn_nextref)
- {
- Elf_Internal_Vernaux *a;
-
- for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
- {
- if (a->vna_other == vernum)
- {
- verstr = a->vna_nodename;
- break;
- }
- }
- if (a != NULL)
- break;
- }
- if (verstr == NULL)
- {
- (*_bfd_error_handler)
- (_("%s: %s: invalid needed version %d"),
- bfd_archive_filename (abfd), name, vernum);
- bfd_set_error (bfd_error_bad_value);
- goto error_free_vers;
- }
- }
-
- namelen = strlen (name);
- verlen = strlen (verstr);
- newlen = namelen + verlen + 2;
- if ((iver.vs_vers & VERSYM_HIDDEN) == 0
- && isym->st_shndx != SHN_UNDEF)
- ++newlen;
-
- newname = (char *) bfd_alloc (abfd, (bfd_size_type) newlen);
- if (newname == NULL)
- goto error_free_vers;
- memcpy (newname, name, namelen);
- p = newname + namelen;
- *p++ = ELF_VER_CHR;
- /* If this is a defined non-hidden version symbol,
- we add another @ to the name. This indicates the
- default version of the symbol. */
- if ((iver.vs_vers & VERSYM_HIDDEN) == 0
- && isym->st_shndx != SHN_UNDEF)
- *p++ = ELF_VER_CHR;
- memcpy (p, verstr, verlen + 1);
-
- name = newname;
- }
- }
-
- if (! elf_merge_symbol (abfd, info, name, isym, &sec, &value,
- sym_hash, &override, &type_change_ok,
- &size_change_ok, dt_needed))
- goto error_free_vers;
-
- if (override)
- definition = false;
-
- h = *sym_hash;
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Remember the old alignment if this is a common symbol, so
- that we don't reduce the alignment later on. We can't
- check later, because _bfd_generic_link_add_one_symbol
- will set a default for the alignment which we want to
- override. */
- if (h->root.type == bfd_link_hash_common)
- old_alignment = h->root.u.c.p->alignment_power;
-
- if (elf_tdata (abfd)->verdef != NULL
- && ! override
- && vernum > 1
- && definition)
- h->verinfo.verdef = &elf_tdata (abfd)->verdef[vernum - 1];
- }
-
- if (! (_bfd_generic_link_add_one_symbol
- (info, abfd, name, flags, sec, value, (const char *) NULL,
- false, collect, (struct bfd_link_hash_entry **) sym_hash)))
- goto error_free_vers;
-
- h = *sym_hash;
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- *sym_hash = h;
-
- new_weakdef = false;
- if (dynamic
- && definition
- && (flags & BSF_WEAK) != 0
- && ELF_ST_TYPE (isym->st_info) != STT_FUNC
- && info->hash->creator->flavour == bfd_target_elf_flavour
- && h->weakdef == NULL)
- {
- /* Keep a list of all weak defined non function symbols from
- a dynamic object, using the weakdef field. Later in this
- function we will set the weakdef field to the correct
- value. We only put non-function symbols from dynamic
- objects on this list, because that happens to be the only
- time we need to know the normal symbol corresponding to a
- weak symbol, and the information is time consuming to
- figure out. If the weakdef field is not already NULL,
- then this symbol was already defined by some previous
- dynamic object, and we will be using that previous
- definition anyhow. */
-
- h->weakdef = weaks;
- weaks = h;
- new_weakdef = true;
- }
-
- /* Set the alignment of a common symbol. */
- if (isym->st_shndx == SHN_COMMON
- && h->root.type == bfd_link_hash_common)
- {
- unsigned int align;
-
- align = bfd_log2 (isym->st_value);
- if (align > old_alignment
- /* Permit an alignment power of zero if an alignment of one
- is specified and no other alignments have been specified. */
- || (isym->st_value == 1 && old_alignment == 0))
- h->root.u.c.p->alignment_power = align;
- }
-
- if (info->hash->creator->flavour == bfd_target_elf_flavour)
- {
- int old_flags;
- boolean dynsym;
- int new_flag;
-
- /* Remember the symbol size and type. */
- if (isym->st_size != 0
- && (definition || h->size == 0))
- {
- if (h->size != 0 && h->size != isym->st_size && ! size_change_ok)
- (*_bfd_error_handler)
- (_("Warning: size of symbol `%s' changed from %lu to %lu in %s"),
- name, (unsigned long) h->size,
- (unsigned long) isym->st_size, bfd_archive_filename (abfd));
-
- h->size = isym->st_size;
- }
-
- /* If this is a common symbol, then we always want H->SIZE
- to be the size of the common symbol. The code just above
- won't fix the size if a common symbol becomes larger. We
- don't warn about a size change here, because that is
- covered by --warn-common. */
- if (h->root.type == bfd_link_hash_common)
- h->size = h->root.u.c.size;
-
- if (ELF_ST_TYPE (isym->st_info) != STT_NOTYPE
- && (definition || h->type == STT_NOTYPE))
- {
- if (h->type != STT_NOTYPE
- && h->type != ELF_ST_TYPE (isym->st_info)
- && ! type_change_ok)
- (*_bfd_error_handler)
- (_("Warning: type of symbol `%s' changed from %d to %d in %s"),
- name, h->type, ELF_ST_TYPE (isym->st_info),
- bfd_archive_filename (abfd));
-
- h->type = ELF_ST_TYPE (isym->st_info);
- }
-
- /* If st_other has a processor-specific meaning, specific code
- might be needed here. */
- if (isym->st_other != 0)
- {
- unsigned char hvis, symvis, other;
-
- /* Take the balance of OTHER from the definition. */
- other = (definition ? isym->st_other : h->other);
- other &= ~ ELF_ST_VISIBILITY (-1);
-
- /* Combine visibilities, using the most constraining one. */
- hvis = ELF_ST_VISIBILITY (h->other);
- symvis = ELF_ST_VISIBILITY (isym->st_other);
-
- h->other = other | (hvis > symvis ? hvis : symvis);
- }
-
- /* Set a flag in the hash table entry indicating the type of
- reference or definition we just found. Keep a count of
- the number of dynamic symbols we find. A dynamic symbol
- is one which is referenced or defined by both a regular
- object and a shared object. */
- old_flags = h->elf_link_hash_flags;
- dynsym = false;
- if (! dynamic)
- {
- if (! definition)
- {
- new_flag = ELF_LINK_HASH_REF_REGULAR;
- if (bind != STB_WEAK)
- new_flag |= ELF_LINK_HASH_REF_REGULAR_NONWEAK;
- }
- else
- new_flag = ELF_LINK_HASH_DEF_REGULAR;
- if (info->shared
- || (old_flags & (ELF_LINK_HASH_DEF_DYNAMIC
- | ELF_LINK_HASH_REF_DYNAMIC)) != 0)
- dynsym = true;
- }
- else
- {
- if (! definition)
- new_flag = ELF_LINK_HASH_REF_DYNAMIC;
- else
- new_flag = ELF_LINK_HASH_DEF_DYNAMIC;
- if ((old_flags & (ELF_LINK_HASH_DEF_REGULAR
- | ELF_LINK_HASH_REF_REGULAR)) != 0
- || (h->weakdef != NULL
- && ! new_weakdef
- && h->weakdef->dynindx != -1))
- dynsym = true;
- }
-
- h->elf_link_hash_flags |= new_flag;
-
- /* Check to see if we need to add an indirect symbol for
- the default name. */
- if (definition || h->root.type == bfd_link_hash_common)
- if (! elf_add_default_symbol (abfd, info, h, name, isym,
- &sec, &value, &dynsym,
- override, dt_needed))
- goto error_free_vers;
-
- if (dynsym && h->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, h))
- goto error_free_vers;
- if (h->weakdef != NULL
- && ! new_weakdef
- && h->weakdef->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, h->weakdef))
- goto error_free_vers;
- }
- }
- else if (dynsym && h->dynindx != -1)
- /* If the symbol already has a dynamic index, but
- visibility says it should not be visible, turn it into
- a local symbol. */
- switch (ELF_ST_VISIBILITY (h->other))
- {
- case STV_INTERNAL:
- case STV_HIDDEN:
- (*bed->elf_backend_hide_symbol) (info, h, true);
- break;
- }
-
- if (dt_needed && definition
- && (h->elf_link_hash_flags
- & ELF_LINK_HASH_REF_REGULAR) != 0)
- {
- bfd_size_type oldsize;
- bfd_size_type strindex;
-
- if (! is_elf_hash_table (info))
- goto error_free_vers;
-
- /* The symbol from a DT_NEEDED object is referenced from
- the regular object to create a dynamic executable. We
- have to make sure there is a DT_NEEDED entry for it. */
-
- dt_needed = false;
- oldsize = _bfd_elf_strtab_size (hash_table->dynstr);
- strindex = _bfd_elf_strtab_add (hash_table->dynstr,
- elf_dt_soname (abfd), false);
- if (strindex == (bfd_size_type) -1)
- goto error_free_vers;
-
- if (oldsize == _bfd_elf_strtab_size (hash_table->dynstr))
- {
- asection *sdyn;
- Elf_External_Dyn *dyncon, *dynconend;
-
- sdyn = bfd_get_section_by_name (hash_table->dynobj,
- ".dynamic");
- BFD_ASSERT (sdyn != NULL);
-
- dyncon = (Elf_External_Dyn *) sdyn->contents;
- dynconend = (Elf_External_Dyn *) (sdyn->contents +
- sdyn->_raw_size);
- for (; dyncon < dynconend; dyncon++)
- {
- Elf_Internal_Dyn dyn;
-
- elf_swap_dyn_in (hash_table->dynobj,
- dyncon, &dyn);
- BFD_ASSERT (dyn.d_tag != DT_NEEDED ||
- dyn.d_un.d_val != strindex);
- }
- }
-
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_NEEDED, strindex))
- goto error_free_vers;
- }
- }
- }
-
- if (extversym != NULL)
- {
- free (extversym);
- extversym = NULL;
- }
-
- if (isymbuf != NULL)
- free (isymbuf);
- isymbuf = NULL;
-
- /* Now set the weakdefs field correctly for all the weak defined
- symbols we found. The only way to do this is to search all the
- symbols. Since we only need the information for non functions in
- dynamic objects, that's the only time we actually put anything on
- the list WEAKS. We need this information so that if a regular
- object refers to a symbol defined weakly in a dynamic object, the
- real symbol in the dynamic object is also put in the dynamic
- symbols; we also must arrange for both symbols to point to the
- same memory location. We could handle the general case of symbol
- aliasing, but a general symbol alias can only be generated in
- assembler code, handling it correctly would be very time
- consuming, and other ELF linkers don't handle general aliasing
- either. */
- while (weaks != NULL)
- {
- struct elf_link_hash_entry *hlook;
- asection *slook;
- bfd_vma vlook;
- struct elf_link_hash_entry **hpp;
- struct elf_link_hash_entry **hppend;
-
- hlook = weaks;
- weaks = hlook->weakdef;
- hlook->weakdef = NULL;
-
- BFD_ASSERT (hlook->root.type == bfd_link_hash_defined
- || hlook->root.type == bfd_link_hash_defweak
- || hlook->root.type == bfd_link_hash_common
- || hlook->root.type == bfd_link_hash_indirect);
- slook = hlook->root.u.def.section;
- vlook = hlook->root.u.def.value;
-
- hpp = elf_sym_hashes (abfd);
- hppend = hpp + extsymcount;
- for (; hpp < hppend; hpp++)
- {
- struct elf_link_hash_entry *h;
-
- h = *hpp;
- if (h != NULL && h != hlook
- && h->root.type == bfd_link_hash_defined
- && h->root.u.def.section == slook
- && h->root.u.def.value == vlook)
- {
- hlook->weakdef = h;
-
- /* If the weak definition is in the list of dynamic
- symbols, make sure the real definition is put there
- as well. */
- if (hlook->dynindx != -1
- && h->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, h))
- goto error_return;
- }
-
- /* If the real definition is in the list of dynamic
- symbols, make sure the weak definition is put there
- as well. If we don't do this, then the dynamic
- loader might not merge the entries for the real
- definition and the weak definition. */
- if (h->dynindx != -1
- && hlook->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, hlook))
- goto error_return;
- }
- break;
- }
- }
- }
-
- /* If this object is the same format as the output object, and it is
- not a shared library, then let the backend look through the
- relocs.
-
- This is required to build global offset table entries and to
- arrange for dynamic relocs. It is not required for the
- particular common case of linking non PIC code, even when linking
- against shared libraries, but unfortunately there is no way of
- knowing whether an object file has been compiled PIC or not.
- Looking through the relocs is not particularly time consuming.
- The problem is that we must either (1) keep the relocs in memory,
- which causes the linker to require additional runtime memory or
- (2) read the relocs twice from the input file, which wastes time.
- This would be a good case for using mmap.
-
- I have no idea how to handle linking PIC code into a file of a
- different format. It probably can't be done. */
- check_relocs = get_elf_backend_data (abfd)->check_relocs;
- if (! dynamic
- && abfd->xvec == info->hash->creator
- && check_relocs != NULL)
- {
- asection *o;
-
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- Elf_Internal_Rela *internal_relocs;
- boolean ok;
-
- if ((o->flags & SEC_RELOC) == 0
- || o->reloc_count == 0
- || ((info->strip == strip_all || info->strip == strip_debugger)
- && (o->flags & SEC_DEBUGGING) != 0)
- || bfd_is_abs_section (o->output_section))
- continue;
-
- internal_relocs = (NAME(_bfd_elf,link_read_relocs)
- (abfd, o, (PTR) NULL,
- (Elf_Internal_Rela *) NULL,
- info->keep_memory));
- if (internal_relocs == NULL)
- goto error_return;
-
- ok = (*check_relocs) (abfd, info, o, internal_relocs);
-
- if (elf_section_data (o)->relocs != internal_relocs)
- free (internal_relocs);
-
- if (! ok)
- goto error_return;
- }
- }
-
- /* If this is a non-traditional, non-relocateable link, try to
- optimize the handling of the .stab/.stabstr sections. */
- if (! dynamic
- && ! info->relocateable
- && ! info->traditional_format
- && info->hash->creator->flavour == bfd_target_elf_flavour
- && is_elf_hash_table (info)
- && (info->strip != strip_all && info->strip != strip_debugger))
- {
- asection *stab, *stabstr;
-
- stab = bfd_get_section_by_name (abfd, ".stab");
- if (stab != NULL
- && (stab->flags & SEC_MERGE) == 0
- && !bfd_is_abs_section (stab->output_section))
- {
- stabstr = bfd_get_section_by_name (abfd, ".stabstr");
-
- if (stabstr != NULL)
- {
- struct bfd_elf_section_data *secdata;
-
- secdata = elf_section_data (stab);
- if (! _bfd_link_section_stabs (abfd,
- & hash_table->stab_info,
- stab, stabstr,
- &secdata->sec_info))
- goto error_return;
- if (secdata->sec_info)
- secdata->sec_info_type = ELF_INFO_TYPE_STABS;
- }
- }
- }
-
- if (! info->relocateable && ! dynamic
- && is_elf_hash_table (info))
- {
- asection *s;
-
- for (s = abfd->sections; s != NULL; s = s->next)
- if ((s->flags & SEC_MERGE) != 0
- && !bfd_is_abs_section (s->output_section))
- {
- struct bfd_elf_section_data *secdata;
-
- secdata = elf_section_data (s);
- if (! _bfd_merge_section (abfd,
- & hash_table->merge_info,
- s, &secdata->sec_info))
- goto error_return;
- else if (secdata->sec_info)
- secdata->sec_info_type = ELF_INFO_TYPE_MERGE;
- }
- }
-
- if (is_elf_hash_table (info))
- {
- /* Add this bfd to the loaded list. */
- struct elf_link_loaded_list *n;
-
- n = ((struct elf_link_loaded_list *)
- bfd_alloc (abfd, sizeof (struct elf_link_loaded_list)));
- if (n == NULL)
- goto error_return;
- n->abfd = abfd;
- n->next = hash_table->loaded;
- hash_table->loaded = n;
- }
-
- return true;
-
- error_free_vers:
- if (extversym != NULL)
- free (extversym);
- error_free_sym:
- if (isymbuf != NULL)
- free (isymbuf);
- error_return:
- return false;
-}
-
-/* Create some sections which will be filled in with dynamic linking
- information. ABFD is an input file which requires dynamic sections
- to be created. The dynamic sections take up virtual memory space
- when the final executable is run, so we need to create them before
- addresses are assigned to the output sections. We work out the
- actual contents and size of these sections later. */
-
-boolean
-elf_link_create_dynamic_sections (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- flagword flags;
- register asection *s;
- struct elf_link_hash_entry *h;
- struct bfd_link_hash_entry *bh;
- struct elf_backend_data *bed;
-
- if (! is_elf_hash_table (info))
- return false;
-
- if (elf_hash_table (info)->dynamic_sections_created)
- return true;
-
- /* Make sure that all dynamic sections use the same input BFD. */
- if (elf_hash_table (info)->dynobj == NULL)
- elf_hash_table (info)->dynobj = abfd;
- else
- abfd = elf_hash_table (info)->dynobj;
-
- /* Note that we set the SEC_IN_MEMORY flag for all of these
- sections. */
- flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
- | SEC_IN_MEMORY | SEC_LINKER_CREATED);
-
- /* A dynamically linked executable has a .interp section, but a
- shared library does not. */
- if (! info->shared)
- {
- s = bfd_make_section (abfd, ".interp");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY))
- return false;
- }
-
- if (! info->traditional_format
- && info->hash->creator->flavour == bfd_target_elf_flavour)
- {
- s = bfd_make_section (abfd, ".eh_frame_hdr");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, 2))
- return false;
- }
-
- /* Create sections to hold version informations. These are removed
- if they are not needed. */
- s = bfd_make_section (abfd, ".gnu.version_d");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, LOG_FILE_ALIGN))
- return false;
-
- s = bfd_make_section (abfd, ".gnu.version");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, 1))
- return false;
-
- s = bfd_make_section (abfd, ".gnu.version_r");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, LOG_FILE_ALIGN))
- return false;
-
- s = bfd_make_section (abfd, ".dynsym");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, LOG_FILE_ALIGN))
- return false;
-
- s = bfd_make_section (abfd, ".dynstr");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY))
- return false;
-
- /* Create a strtab to hold the dynamic symbol names. */
- if (elf_hash_table (info)->dynstr == NULL)
- {
- elf_hash_table (info)->dynstr = _bfd_elf_strtab_init ();
- if (elf_hash_table (info)->dynstr == NULL)
- return false;
- }
-
- s = bfd_make_section (abfd, ".dynamic");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags)
- || ! bfd_set_section_alignment (abfd, s, LOG_FILE_ALIGN))
- return false;
-
- /* The special symbol _DYNAMIC is always set to the start of the
- .dynamic section. This call occurs before we have processed the
- symbols for any dynamic object, so we don't have to worry about
- overriding a dynamic definition. We could set _DYNAMIC in a
- linker script, but we only want to define it if we are, in fact,
- creating a .dynamic section. We don't want to define it if there
- is no .dynamic section, since on some ELF platforms the start up
- code examines it to decide how to initialize the process. */
- bh = NULL;
- if (! (_bfd_generic_link_add_one_symbol
- (info, abfd, "_DYNAMIC", BSF_GLOBAL, s, (bfd_vma) 0,
- (const char *) 0, false, get_elf_backend_data (abfd)->collect, &bh)))
- return false;
- h = (struct elf_link_hash_entry *) bh;
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
- h->type = STT_OBJECT;
-
- if (info->shared
- && ! _bfd_elf_link_record_dynamic_symbol (info, h))
- return false;
-
- bed = get_elf_backend_data (abfd);
-
- s = bfd_make_section (abfd, ".hash");
- if (s == NULL
- || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
- || ! bfd_set_section_alignment (abfd, s, LOG_FILE_ALIGN))
- return false;
- elf_section_data (s)->this_hdr.sh_entsize = bed->s->sizeof_hash_entry;
-
- /* Let the backend create the rest of the sections. This lets the
- backend set the right flags. The backend will normally create
- the .got and .plt sections. */
- if (! (*bed->elf_backend_create_dynamic_sections) (abfd, info))
- return false;
-
- elf_hash_table (info)->dynamic_sections_created = true;
-
- return true;
-}
-
-/* Add an entry to the .dynamic table. */
-
-boolean
-elf_add_dynamic_entry (info, tag, val)
- struct bfd_link_info *info;
- bfd_vma tag;
- bfd_vma val;
-{
- Elf_Internal_Dyn dyn;
- bfd *dynobj;
- asection *s;
- bfd_size_type newsize;
- bfd_byte *newcontents;
-
- if (! is_elf_hash_table (info))
- return false;
-
- dynobj = elf_hash_table (info)->dynobj;
-
- s = bfd_get_section_by_name (dynobj, ".dynamic");
- BFD_ASSERT (s != NULL);
-
- newsize = s->_raw_size + sizeof (Elf_External_Dyn);
- newcontents = (bfd_byte *) bfd_realloc (s->contents, newsize);
- if (newcontents == NULL)
- return false;
-
- dyn.d_tag = tag;
- dyn.d_un.d_val = val;
- elf_swap_dyn_out (dynobj, &dyn,
- (Elf_External_Dyn *) (newcontents + s->_raw_size));
-
- s->_raw_size = newsize;
- s->contents = newcontents;
-
- return true;
-}
-
-/* Read and swap the relocs from the section indicated by SHDR. This
- may be either a REL or a RELA section. The relocations are
- translated into RELA relocations and stored in INTERNAL_RELOCS,
- which should have already been allocated to contain enough space.
- The EXTERNAL_RELOCS are a buffer where the external form of the
- relocations should be stored.
-
- Returns false if something goes wrong. */
-
-static boolean
-elf_link_read_relocs_from_section (abfd, shdr, external_relocs,
- internal_relocs)
- bfd *abfd;
- Elf_Internal_Shdr *shdr;
- PTR external_relocs;
- Elf_Internal_Rela *internal_relocs;
-{
- struct elf_backend_data *bed;
- bfd_size_type amt;
-
- /* If there aren't any relocations, that's OK. */
- if (!shdr)
- return true;
-
- /* Position ourselves at the start of the section. */
- if (bfd_seek (abfd, shdr->sh_offset, SEEK_SET) != 0)
- return false;
-
- /* Read the relocations. */
- if (bfd_bread (external_relocs, shdr->sh_size, abfd) != shdr->sh_size)
- return false;
-
- bed = get_elf_backend_data (abfd);
-
- /* Convert the external relocations to the internal format. */
- if (shdr->sh_entsize == sizeof (Elf_External_Rel))
- {
- Elf_External_Rel *erel;
- Elf_External_Rel *erelend;
- Elf_Internal_Rela *irela;
- Elf_Internal_Rel *irel;
-
- erel = (Elf_External_Rel *) external_relocs;
- erelend = erel + NUM_SHDR_ENTRIES (shdr);
- irela = internal_relocs;
- amt = bed->s->int_rels_per_ext_rel * sizeof (Elf_Internal_Rel);
- irel = bfd_alloc (abfd, amt);
- for (; erel < erelend; erel++, irela += bed->s->int_rels_per_ext_rel)
- {
- unsigned int i;
-
- if (bed->s->swap_reloc_in)
- (*bed->s->swap_reloc_in) (abfd, (bfd_byte *) erel, irel);
- else
- elf_swap_reloc_in (abfd, erel, irel);
-
- for (i = 0; i < bed->s->int_rels_per_ext_rel; ++i)
- {
- irela[i].r_offset = irel[i].r_offset;
- irela[i].r_info = irel[i].r_info;
- irela[i].r_addend = 0;
- }
- }
- }
- else
- {
- Elf_External_Rela *erela;
- Elf_External_Rela *erelaend;
- Elf_Internal_Rela *irela;
-
- BFD_ASSERT (shdr->sh_entsize == sizeof (Elf_External_Rela));
-
- erela = (Elf_External_Rela *) external_relocs;
- erelaend = erela + NUM_SHDR_ENTRIES (shdr);
- irela = internal_relocs;
- for (; erela < erelaend; erela++, irela += bed->s->int_rels_per_ext_rel)
- {
- if (bed->s->swap_reloca_in)
- (*bed->s->swap_reloca_in) (abfd, (bfd_byte *) erela, irela);
- else
- elf_swap_reloca_in (abfd, erela, irela);
- }
- }
-
- return true;
-}
-
-/* Read and swap the relocs for a section O. They may have been
- cached. If the EXTERNAL_RELOCS and INTERNAL_RELOCS arguments are
- not NULL, they are used as buffers to read into. They are known to
- be large enough. If the INTERNAL_RELOCS relocs argument is NULL,
- the return value is allocated using either malloc or bfd_alloc,
- according to the KEEP_MEMORY argument. If O has two relocation
- sections (both REL and RELA relocations), then the REL_HDR
- relocations will appear first in INTERNAL_RELOCS, followed by the
- REL_HDR2 relocations. */
-
-Elf_Internal_Rela *
-NAME(_bfd_elf,link_read_relocs) (abfd, o, external_relocs, internal_relocs,
- keep_memory)
- bfd *abfd;
- asection *o;
- PTR external_relocs;
- Elf_Internal_Rela *internal_relocs;
- boolean keep_memory;
-{
- Elf_Internal_Shdr *rel_hdr;
- PTR alloc1 = NULL;
- Elf_Internal_Rela *alloc2 = NULL;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
-
- if (elf_section_data (o)->relocs != NULL)
- return elf_section_data (o)->relocs;
-
- if (o->reloc_count == 0)
- return NULL;
-
- rel_hdr = &elf_section_data (o)->rel_hdr;
-
- if (internal_relocs == NULL)
- {
- bfd_size_type size;
-
- size = o->reloc_count;
- size *= bed->s->int_rels_per_ext_rel * sizeof (Elf_Internal_Rela);
- if (keep_memory)
- internal_relocs = (Elf_Internal_Rela *) bfd_alloc (abfd, size);
- else
- internal_relocs = alloc2 = (Elf_Internal_Rela *) bfd_malloc (size);
- if (internal_relocs == NULL)
- goto error_return;
- }
-
- if (external_relocs == NULL)
- {
- bfd_size_type size = rel_hdr->sh_size;
-
- if (elf_section_data (o)->rel_hdr2)
- size += elf_section_data (o)->rel_hdr2->sh_size;
- alloc1 = (PTR) bfd_malloc (size);
- if (alloc1 == NULL)
- goto error_return;
- external_relocs = alloc1;
- }
-
- if (!elf_link_read_relocs_from_section (abfd, rel_hdr,
- external_relocs,
- internal_relocs))
- goto error_return;
- if (!elf_link_read_relocs_from_section
- (abfd,
- elf_section_data (o)->rel_hdr2,
- ((bfd_byte *) external_relocs) + rel_hdr->sh_size,
- internal_relocs + (NUM_SHDR_ENTRIES (rel_hdr)
- * bed->s->int_rels_per_ext_rel)))
- goto error_return;
-
- /* Cache the results for next time, if we can. */
- if (keep_memory)
- elf_section_data (o)->relocs = internal_relocs;
-
- if (alloc1 != NULL)
- free (alloc1);
-
- /* Don't free alloc2, since if it was allocated we are passing it
- back (under the name of internal_relocs). */
-
- return internal_relocs;
-
- error_return:
- if (alloc1 != NULL)
- free (alloc1);
- if (alloc2 != NULL)
- free (alloc2);
- return NULL;
-}
-
-/* Record an assignment to a symbol made by a linker script. We need
- this in case some dynamic object refers to this symbol. */
-
-boolean
-NAME(bfd_elf,record_link_assignment) (output_bfd, info, name, provide)
- bfd *output_bfd ATTRIBUTE_UNUSED;
- struct bfd_link_info *info;
- const char *name;
- boolean provide;
-{
- struct elf_link_hash_entry *h;
-
- if (info->hash->creator->flavour != bfd_target_elf_flavour)
- return true;
-
- h = elf_link_hash_lookup (elf_hash_table (info), name, true, true, false);
- if (h == NULL)
- return false;
-
- if (h->root.type == bfd_link_hash_new)
- h->elf_link_hash_flags &= ~ELF_LINK_NON_ELF;
-
- /* If this symbol is being provided by the linker script, and it is
- currently defined by a dynamic object, but not by a regular
- object, then mark it as undefined so that the generic linker will
- force the correct value. */
- if (provide
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- h->root.type = bfd_link_hash_undefined;
-
- /* If this symbol is not being provided by the linker script, and it is
- currently defined by a dynamic object, but not by a regular object,
- then clear out any version information because the symbol will not be
- associated with the dynamic object any more. */
- if (!provide
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- h->verinfo.verdef = NULL;
-
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
-
- if (((h->elf_link_hash_flags & (ELF_LINK_HASH_DEF_DYNAMIC
- | ELF_LINK_HASH_REF_DYNAMIC)) != 0
- || info->shared)
- && h->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, h))
- return false;
-
- /* If this is a weak defined symbol, and we know a corresponding
- real symbol from the same dynamic object, make sure the real
- symbol is also made into a dynamic symbol. */
- if (h->weakdef != NULL
- && h->weakdef->dynindx == -1)
- {
- if (! _bfd_elf_link_record_dynamic_symbol (info, h->weakdef))
- return false;
- }
- }
-
- return true;
-}
-
-/* This structure is used to pass information to
- elf_link_assign_sym_version. */
-
-struct elf_assign_sym_version_info
-{
- /* Output BFD. */
- bfd *output_bfd;
- /* General link information. */
- struct bfd_link_info *info;
- /* Version tree. */
- struct bfd_elf_version_tree *verdefs;
- /* Whether we had a failure. */
- boolean failed;
-};
-
-/* This structure is used to pass information to
- elf_link_find_version_dependencies. */
-
-struct elf_find_verdep_info
-{
- /* Output BFD. */
- bfd *output_bfd;
- /* General link information. */
- struct bfd_link_info *info;
- /* The number of dependencies. */
- unsigned int vers;
- /* Whether we had a failure. */
- boolean failed;
-};
-
-/* Array used to determine the number of hash table buckets to use
- based on the number of symbols there are. If there are fewer than
- 3 symbols we use 1 bucket, fewer than 17 symbols we use 3 buckets,
- fewer than 37 we use 17 buckets, and so forth. We never use more
- than 32771 buckets. */
-
-static const size_t elf_buckets[] =
-{
- 1, 3, 17, 37, 67, 97, 131, 197, 263, 521, 1031, 2053, 4099, 8209,
- 16411, 32771, 0
-};
-
-/* Compute bucket count for hashing table. We do not use a static set
- of possible tables sizes anymore. Instead we determine for all
- possible reasonable sizes of the table the outcome (i.e., the
- number of collisions etc) and choose the best solution. The
- weighting functions are not too simple to allow the table to grow
- without bounds. Instead one of the weighting factors is the size.
- Therefore the result is always a good payoff between few collisions
- (= short chain lengths) and table size. */
-static size_t
-compute_bucket_count (info)
- struct bfd_link_info *info;
-{
- size_t dynsymcount = elf_hash_table (info)->dynsymcount;
- size_t best_size = 0;
- unsigned long int *hashcodes;
- unsigned long int *hashcodesp;
- unsigned long int i;
- bfd_size_type amt;
-
- /* Compute the hash values for all exported symbols. At the same
- time store the values in an array so that we could use them for
- optimizations. */
- amt = dynsymcount;
- amt *= sizeof (unsigned long int);
- hashcodes = (unsigned long int *) bfd_malloc (amt);
- if (hashcodes == NULL)
- return 0;
- hashcodesp = hashcodes;
-
- /* Put all hash values in HASHCODES. */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_collect_hash_codes, &hashcodesp);
-
- /* We have a problem here. The following code to optimize the table
- size requires an integer type with more the 32 bits. If
- BFD_HOST_U_64_BIT is set we know about such a type. */
-#ifdef BFD_HOST_U_64_BIT
- if (info->optimize)
- {
- unsigned long int nsyms = hashcodesp - hashcodes;
- size_t minsize;
- size_t maxsize;
- BFD_HOST_U_64_BIT best_chlen = ~((BFD_HOST_U_64_BIT) 0);
- unsigned long int *counts ;
-
- /* Possible optimization parameters: if we have NSYMS symbols we say
- that the hashing table must at least have NSYMS/4 and at most
- 2*NSYMS buckets. */
- minsize = nsyms / 4;
- if (minsize == 0)
- minsize = 1;
- best_size = maxsize = nsyms * 2;
-
- /* Create array where we count the collisions in. We must use bfd_malloc
- since the size could be large. */
- amt = maxsize;
- amt *= sizeof (unsigned long int);
- counts = (unsigned long int *) bfd_malloc (amt);
- if (counts == NULL)
- {
- free (hashcodes);
- return 0;
- }
-
- /* Compute the "optimal" size for the hash table. The criteria is a
- minimal chain length. The minor criteria is (of course) the size
- of the table. */
- for (i = minsize; i < maxsize; ++i)
- {
- /* Walk through the array of hashcodes and count the collisions. */
- BFD_HOST_U_64_BIT max;
- unsigned long int j;
- unsigned long int fact;
-
- memset (counts, '\0', i * sizeof (unsigned long int));
-
- /* Determine how often each hash bucket is used. */
- for (j = 0; j < nsyms; ++j)
- ++counts[hashcodes[j] % i];
-
- /* For the weight function we need some information about the
- pagesize on the target. This is information need not be 100%
- accurate. Since this information is not available (so far) we
- define it here to a reasonable default value. If it is crucial
- to have a better value some day simply define this value. */
-# ifndef BFD_TARGET_PAGESIZE
-# define BFD_TARGET_PAGESIZE (4096)
-# endif
-
- /* We in any case need 2 + NSYMS entries for the size values and
- the chains. */
- max = (2 + nsyms) * (ARCH_SIZE / 8);
-
-# if 1
- /* Variant 1: optimize for short chains. We add the squares
- of all the chain lengths (which favous many small chain
- over a few long chains). */
- for (j = 0; j < i; ++j)
- max += counts[j] * counts[j];
-
- /* This adds penalties for the overall size of the table. */
- fact = i / (BFD_TARGET_PAGESIZE / (ARCH_SIZE / 8)) + 1;
- max *= fact * fact;
-# else
- /* Variant 2: Optimize a lot more for small table. Here we
- also add squares of the size but we also add penalties for
- empty slots (the +1 term). */
- for (j = 0; j < i; ++j)
- max += (1 + counts[j]) * (1 + counts[j]);
-
- /* The overall size of the table is considered, but not as
- strong as in variant 1, where it is squared. */
- fact = i / (BFD_TARGET_PAGESIZE / (ARCH_SIZE / 8)) + 1;
- max *= fact;
-# endif
-
- /* Compare with current best results. */
- if (max < best_chlen)
- {
- best_chlen = max;
- best_size = i;
- }
- }
-
- free (counts);
- }
- else
-#endif /* defined (BFD_HOST_U_64_BIT) */
- {
- /* This is the fallback solution if no 64bit type is available or if we
- are not supposed to spend much time on optimizations. We select the
- bucket count using a fixed set of numbers. */
- for (i = 0; elf_buckets[i] != 0; i++)
- {
- best_size = elf_buckets[i];
- if (dynsymcount < elf_buckets[i + 1])
- break;
- }
- }
-
- /* Free the arrays we needed. */
- free (hashcodes);
-
- return best_size;
-}
-
-/* Set up the sizes and contents of the ELF dynamic sections. This is
- called by the ELF linker emulation before_allocation routine. We
- must set the sizes of the sections before the linker sets the
- addresses of the various sections. */
-
-boolean
-NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
- filter_shlib,
- auxiliary_filters, info, sinterpptr,
- verdefs)
- bfd *output_bfd;
- const char *soname;
- const char *rpath;
- const char *filter_shlib;
- const char * const *auxiliary_filters;
- struct bfd_link_info *info;
- asection **sinterpptr;
- struct bfd_elf_version_tree *verdefs;
-{
- bfd_size_type soname_indx;
- bfd *dynobj;
- struct elf_backend_data *bed;
- struct elf_assign_sym_version_info asvinfo;
-
- *sinterpptr = NULL;
-
- soname_indx = (bfd_size_type) -1;
-
- if (info->hash->creator->flavour != bfd_target_elf_flavour)
- return true;
-
- if (! is_elf_hash_table (info))
- return true;
-
- /* Any syms created from now on start with -1 in
- got.refcount/offset and plt.refcount/offset. */
- elf_hash_table (info)->init_refcount = -1;
-
- /* The backend may have to create some sections regardless of whether
- we're dynamic or not. */
- bed = get_elf_backend_data (output_bfd);
- if (bed->elf_backend_always_size_sections
- && ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
- return false;
-
- dynobj = elf_hash_table (info)->dynobj;
-
- /* If there were no dynamic objects in the link, there is nothing to
- do here. */
- if (dynobj == NULL)
- return true;
-
- if (! _bfd_elf_maybe_strip_eh_frame_hdr (info))
- return false;
-
- if (elf_hash_table (info)->dynamic_sections_created)
- {
- struct elf_info_failed eif;
- struct elf_link_hash_entry *h;
- asection *dynstr;
- struct bfd_elf_version_tree *t;
- struct bfd_elf_version_expr *d;
- boolean all_defined;
-
- *sinterpptr = bfd_get_section_by_name (dynobj, ".interp");
- BFD_ASSERT (*sinterpptr != NULL || info->shared);
-
- if (soname != NULL)
- {
- soname_indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- soname, true);
- if (soname_indx == (bfd_size_type) -1
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_SONAME,
- soname_indx))
- return false;
- }
-
- if (info->symbolic)
- {
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_SYMBOLIC,
- (bfd_vma) 0))
- return false;
- info->flags |= DF_SYMBOLIC;
- }
-
- if (rpath != NULL)
- {
- bfd_size_type indx;
-
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, rpath,
- true);
- if (info->new_dtags)
- _bfd_elf_strtab_addref (elf_hash_table (info)->dynstr, indx);
- if (indx == (bfd_size_type) -1
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_RPATH, indx)
- || (info->new_dtags
- && ! elf_add_dynamic_entry (info, (bfd_vma) DT_RUNPATH,
- indx)))
- return false;
- }
-
- if (filter_shlib != NULL)
- {
- bfd_size_type indx;
-
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- filter_shlib, true);
- if (indx == (bfd_size_type) -1
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_FILTER, indx))
- return false;
- }
-
- if (auxiliary_filters != NULL)
- {
- const char * const *p;
-
- for (p = auxiliary_filters; *p != NULL; p++)
- {
- bfd_size_type indx;
-
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- *p, true);
- if (indx == (bfd_size_type) -1
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_AUXILIARY,
- indx))
- return false;
- }
- }
-
- eif.info = info;
- eif.verdefs = verdefs;
- eif.failed = false;
-
- /* If we are supposed to export all symbols into the dynamic symbol
- table (this is not the normal case), then do so. */
- if (info->export_dynamic)
- {
- elf_link_hash_traverse (elf_hash_table (info), elf_export_symbol,
- (PTR) &eif);
- if (eif.failed)
- return false;
- }
-
- /* Make all global versions with definiton. */
- for (t = verdefs; t != NULL; t = t->next)
- for (d = t->globals; d != NULL; d = d->next)
- if (!d->symver && strchr (d->pattern, '*') == NULL)
- {
- const char *verstr, *name;
- size_t namelen, verlen, newlen;
- char *newname, *p;
- struct elf_link_hash_entry *newh;
-
- name = d->pattern;
- namelen = strlen (name);
- verstr = t->name;
- verlen = strlen (verstr);
- newlen = namelen + verlen + 3;
-
- newname = (char *) bfd_malloc ((bfd_size_type) newlen);
- if (newname == NULL)
- return false;
- memcpy (newname, name, namelen);
-
- /* Check the hidden versioned definition. */
- p = newname + namelen;
- *p++ = ELF_VER_CHR;
- memcpy (p, verstr, verlen + 1);
- newh = elf_link_hash_lookup (elf_hash_table (info),
- newname, false, false,
- false);
- if (newh == NULL
- || (newh->root.type != bfd_link_hash_defined
- && newh->root.type != bfd_link_hash_defweak))
- {
- /* Check the default versioned definition. */
- *p++ = ELF_VER_CHR;
- memcpy (p, verstr, verlen + 1);
- newh = elf_link_hash_lookup (elf_hash_table (info),
- newname, false, false,
- false);
- }
- free (newname);
-
- /* Mark this version if there is a definition and it is
- not defined in a shared object. */
- if (newh != NULL
- && ((newh->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_DYNAMIC) == 0)
- && (newh->root.type == bfd_link_hash_defined
- || newh->root.type == bfd_link_hash_defweak))
- d->symver = 1;
- }
-
- /* Attach all the symbols to their version information. */
- asvinfo.output_bfd = output_bfd;
- asvinfo.info = info;
- asvinfo.verdefs = verdefs;
- asvinfo.failed = false;
-
- elf_link_hash_traverse (elf_hash_table (info),
- elf_link_assign_sym_version,
- (PTR) &asvinfo);
- if (asvinfo.failed)
- return false;
-
- if (!info->allow_undefined_version)
- {
- /* Check if all global versions have a definiton. */
- all_defined = true;
- for (t = verdefs; t != NULL; t = t->next)
- for (d = t->globals; d != NULL; d = d->next)
- if (!d->symver && !d->script
- && strchr (d->pattern, '*') == NULL)
- {
- (*_bfd_error_handler)
- (_("%s: undefined version: %s"),
- d->pattern, t->name);
- all_defined = false;
- }
-
- if (!all_defined)
- {
- bfd_set_error (bfd_error_bad_value);
- return false;
- }
- }
-
- /* Find all symbols which were defined in a dynamic object and make
- the backend pick a reasonable value for them. */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_adjust_dynamic_symbol,
- (PTR) &eif);
- if (eif.failed)
- return false;
-
- /* Add some entries to the .dynamic section. We fill in some of the
- values later, in elf_bfd_final_link, but we must add the entries
- now so that we know the final size of the .dynamic section. */
-
- /* If there are initialization and/or finalization functions to
- call then add the corresponding DT_INIT/DT_FINI entries. */
- h = (info->init_function
- ? elf_link_hash_lookup (elf_hash_table (info),
- info->init_function, false,
- false, false)
- : NULL);
- if (h != NULL
- && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_DEF_REGULAR)) != 0)
- {
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_INIT, (bfd_vma) 0))
- return false;
- }
- h = (info->fini_function
- ? elf_link_hash_lookup (elf_hash_table (info),
- info->fini_function, false,
- false, false)
- : NULL);
- if (h != NULL
- && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_DEF_REGULAR)) != 0)
- {
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_FINI, (bfd_vma) 0))
- return false;
- }
-
- if (bfd_get_section_by_name (output_bfd, ".preinit_array") != NULL)
- {
- /* DT_PREINIT_ARRAY is not allowed in shared library. */
- if (info->shared)
- {
- bfd *sub;
- asection *o;
-
- for (sub = info->input_bfds; sub != NULL;
- sub = sub->link_next)
- for (o = sub->sections; o != NULL; o = o->next)
- if (elf_section_data (o)->this_hdr.sh_type
- == SHT_PREINIT_ARRAY)
- {
- (*_bfd_error_handler)
- (_("%s: .preinit_array section is not allowed in DSO"),
- bfd_archive_filename (sub));
- break;
- }
-
- bfd_set_error (bfd_error_nonrepresentable_section);
- return false;
- }
-
- if (!elf_add_dynamic_entry (info, (bfd_vma) DT_PREINIT_ARRAY,
- (bfd_vma) 0)
- || !elf_add_dynamic_entry (info, (bfd_vma) DT_PREINIT_ARRAYSZ,
- (bfd_vma) 0))
- return false;
- }
- if (bfd_get_section_by_name (output_bfd, ".init_array") != NULL)
- {
- if (!elf_add_dynamic_entry (info, (bfd_vma) DT_INIT_ARRAY,
- (bfd_vma) 0)
- || !elf_add_dynamic_entry (info, (bfd_vma) DT_INIT_ARRAYSZ,
- (bfd_vma) 0))
- return false;
- }
- if (bfd_get_section_by_name (output_bfd, ".fini_array") != NULL)
- {
- if (!elf_add_dynamic_entry (info, (bfd_vma) DT_FINI_ARRAY,
- (bfd_vma) 0)
- || !elf_add_dynamic_entry (info, (bfd_vma) DT_FINI_ARRAYSZ,
- (bfd_vma) 0))
- return false;
- }
-
- dynstr = bfd_get_section_by_name (dynobj, ".dynstr");
- /* If .dynstr is excluded from the link, we don't want any of
- these tags. Strictly, we should be checking each section
- individually; This quick check covers for the case where
- someone does a /DISCARD/ : { *(*) }. */
- if (dynstr != NULL && dynstr->output_section != bfd_abs_section_ptr)
- {
- bfd_size_type strsize;
-
- strsize = _bfd_elf_strtab_size (elf_hash_table (info)->dynstr);
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_HASH, (bfd_vma) 0)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_STRTAB, (bfd_vma) 0)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_SYMTAB, (bfd_vma) 0)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_STRSZ, strsize)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_SYMENT,
- (bfd_vma) sizeof (Elf_External_Sym)))
- return false;
- }
- }
-
- /* The backend must work out the sizes of all the other dynamic
- sections. */
- if (bed->elf_backend_size_dynamic_sections
- && ! (*bed->elf_backend_size_dynamic_sections) (output_bfd, info))
- return false;
-
- if (elf_hash_table (info)->dynamic_sections_created)
- {
- bfd_size_type dynsymcount;
- asection *s;
- size_t bucketcount = 0;
- size_t hash_entry_size;
- unsigned int dtagcount;
-
- /* Set up the version definition section. */
- s = bfd_get_section_by_name (dynobj, ".gnu.version_d");
- BFD_ASSERT (s != NULL);
-
- /* We may have created additional version definitions if we are
- just linking a regular application. */
- verdefs = asvinfo.verdefs;
-
- /* Skip anonymous version tag. */
- if (verdefs != NULL && verdefs->vernum == 0)
- verdefs = verdefs->next;
-
- if (verdefs == NULL)
- _bfd_strip_section_from_output (info, s);
- else
- {
- unsigned int cdefs;
- bfd_size_type size;
- struct bfd_elf_version_tree *t;
- bfd_byte *p;
- Elf_Internal_Verdef def;
- Elf_Internal_Verdaux defaux;
-
- cdefs = 0;
- size = 0;
-
- /* Make space for the base version. */
- size += sizeof (Elf_External_Verdef);
- size += sizeof (Elf_External_Verdaux);
- ++cdefs;
-
- for (t = verdefs; t != NULL; t = t->next)
- {
- struct bfd_elf_version_deps *n;
-
- size += sizeof (Elf_External_Verdef);
- size += sizeof (Elf_External_Verdaux);
- ++cdefs;
-
- for (n = t->deps; n != NULL; n = n->next)
- size += sizeof (Elf_External_Verdaux);
- }
-
- s->_raw_size = size;
- s->contents = (bfd_byte *) bfd_alloc (output_bfd, s->_raw_size);
- if (s->contents == NULL && s->_raw_size != 0)
- return false;
-
- /* Fill in the version definition section. */
-
- p = s->contents;
-
- def.vd_version = VER_DEF_CURRENT;
- def.vd_flags = VER_FLG_BASE;
- def.vd_ndx = 1;
- def.vd_cnt = 1;
- def.vd_aux = sizeof (Elf_External_Verdef);
- def.vd_next = (sizeof (Elf_External_Verdef)
- + sizeof (Elf_External_Verdaux));
-
- if (soname_indx != (bfd_size_type) -1)
- {
- _bfd_elf_strtab_addref (elf_hash_table (info)->dynstr,
- soname_indx);
- def.vd_hash = bfd_elf_hash (soname);
- defaux.vda_name = soname_indx;
- }
- else
- {
- const char *name;
- bfd_size_type indx;
-
- name = basename (output_bfd->filename);
- def.vd_hash = bfd_elf_hash (name);
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- name, false);
- if (indx == (bfd_size_type) -1)
- return false;
- defaux.vda_name = indx;
- }
- defaux.vda_next = 0;
-
- _bfd_elf_swap_verdef_out (output_bfd, &def,
- (Elf_External_Verdef *) p);
- p += sizeof (Elf_External_Verdef);
- _bfd_elf_swap_verdaux_out (output_bfd, &defaux,
- (Elf_External_Verdaux *) p);
- p += sizeof (Elf_External_Verdaux);
-
- for (t = verdefs; t != NULL; t = t->next)
- {
- unsigned int cdeps;
- struct bfd_elf_version_deps *n;
- struct elf_link_hash_entry *h;
- struct bfd_link_hash_entry *bh;
-
- cdeps = 0;
- for (n = t->deps; n != NULL; n = n->next)
- ++cdeps;
-
- /* Add a symbol representing this version. */
- bh = NULL;
- if (! (_bfd_generic_link_add_one_symbol
- (info, dynobj, t->name, BSF_GLOBAL, bfd_abs_section_ptr,
- (bfd_vma) 0, (const char *) NULL, false,
- get_elf_backend_data (dynobj)->collect, &bh)))
- return false;
- h = (struct elf_link_hash_entry *) bh;
- h->elf_link_hash_flags &= ~ ELF_LINK_NON_ELF;
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
- h->type = STT_OBJECT;
- h->verinfo.vertree = t;
-
- if (! _bfd_elf_link_record_dynamic_symbol (info, h))
- return false;
-
- def.vd_version = VER_DEF_CURRENT;
- def.vd_flags = 0;
- if (t->globals == NULL && t->locals == NULL && ! t->used)
- def.vd_flags |= VER_FLG_WEAK;
- def.vd_ndx = t->vernum + 1;
- def.vd_cnt = cdeps + 1;
- def.vd_hash = bfd_elf_hash (t->name);
- def.vd_aux = sizeof (Elf_External_Verdef);
- if (t->next != NULL)
- def.vd_next = (sizeof (Elf_External_Verdef)
- + (cdeps + 1) * sizeof (Elf_External_Verdaux));
- else
- def.vd_next = 0;
-
- _bfd_elf_swap_verdef_out (output_bfd, &def,
- (Elf_External_Verdef *) p);
- p += sizeof (Elf_External_Verdef);
-
- defaux.vda_name = h->dynstr_index;
- _bfd_elf_strtab_addref (elf_hash_table (info)->dynstr,
- h->dynstr_index);
- if (t->deps == NULL)
- defaux.vda_next = 0;
- else
- defaux.vda_next = sizeof (Elf_External_Verdaux);
- t->name_indx = defaux.vda_name;
-
- _bfd_elf_swap_verdaux_out (output_bfd, &defaux,
- (Elf_External_Verdaux *) p);
- p += sizeof (Elf_External_Verdaux);
-
- for (n = t->deps; n != NULL; n = n->next)
- {
- if (n->version_needed == NULL)
- {
- /* This can happen if there was an error in the
- version script. */
- defaux.vda_name = 0;
- }
- else
- {
- defaux.vda_name = n->version_needed->name_indx;
- _bfd_elf_strtab_addref (elf_hash_table (info)->dynstr,
- defaux.vda_name);
- }
- if (n->next == NULL)
- defaux.vda_next = 0;
- else
- defaux.vda_next = sizeof (Elf_External_Verdaux);
-
- _bfd_elf_swap_verdaux_out (output_bfd, &defaux,
- (Elf_External_Verdaux *) p);
- p += sizeof (Elf_External_Verdaux);
- }
- }
-
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_VERDEF, (bfd_vma) 0)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_VERDEFNUM,
- (bfd_vma) cdefs))
- return false;
-
- elf_tdata (output_bfd)->cverdefs = cdefs;
- }
-
- if ((info->new_dtags && info->flags) || (info->flags & DF_STATIC_TLS))
- {
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_FLAGS, info->flags))
- return false;
- }
-
- if (info->flags_1)
- {
- if (! info->shared)
- info->flags_1 &= ~ (DF_1_INITFIRST
- | DF_1_NODELETE
- | DF_1_NOOPEN);
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_FLAGS_1,
- info->flags_1))
- return false;
- }
-
- /* Work out the size of the version reference section. */
-
- s = bfd_get_section_by_name (dynobj, ".gnu.version_r");
- BFD_ASSERT (s != NULL);
- {
- struct elf_find_verdep_info sinfo;
-
- sinfo.output_bfd = output_bfd;
- sinfo.info = info;
- sinfo.vers = elf_tdata (output_bfd)->cverdefs;
- if (sinfo.vers == 0)
- sinfo.vers = 1;
- sinfo.failed = false;
-
- elf_link_hash_traverse (elf_hash_table (info),
- elf_link_find_version_dependencies,
- (PTR) &sinfo);
-
- if (elf_tdata (output_bfd)->verref == NULL)
- _bfd_strip_section_from_output (info, s);
- else
- {
- Elf_Internal_Verneed *t;
- unsigned int size;
- unsigned int crefs;
- bfd_byte *p;
-
- /* Build the version definition section. */
- size = 0;
- crefs = 0;
- for (t = elf_tdata (output_bfd)->verref;
- t != NULL;
- t = t->vn_nextref)
- {
- Elf_Internal_Vernaux *a;
-
- size += sizeof (Elf_External_Verneed);
- ++crefs;
- for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
- size += sizeof (Elf_External_Vernaux);
- }
-
- s->_raw_size = size;
- s->contents = (bfd_byte *) bfd_alloc (output_bfd, s->_raw_size);
- if (s->contents == NULL)
- return false;
-
- p = s->contents;
- for (t = elf_tdata (output_bfd)->verref;
- t != NULL;
- t = t->vn_nextref)
- {
- unsigned int caux;
- Elf_Internal_Vernaux *a;
- bfd_size_type indx;
-
- caux = 0;
- for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
- ++caux;
-
- t->vn_version = VER_NEED_CURRENT;
- t->vn_cnt = caux;
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- elf_dt_name (t->vn_bfd) != NULL
- ? elf_dt_name (t->vn_bfd)
- : basename (t->vn_bfd->filename),
- false);
- if (indx == (bfd_size_type) -1)
- return false;
- t->vn_file = indx;
- t->vn_aux = sizeof (Elf_External_Verneed);
- if (t->vn_nextref == NULL)
- t->vn_next = 0;
- else
- t->vn_next = (sizeof (Elf_External_Verneed)
- + caux * sizeof (Elf_External_Vernaux));
-
- _bfd_elf_swap_verneed_out (output_bfd, t,
- (Elf_External_Verneed *) p);
- p += sizeof (Elf_External_Verneed);
-
- for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
- {
- a->vna_hash = bfd_elf_hash (a->vna_nodename);
- indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
- a->vna_nodename, false);
- if (indx == (bfd_size_type) -1)
- return false;
- a->vna_name = indx;
- if (a->vna_nextptr == NULL)
- a->vna_next = 0;
- else
- a->vna_next = sizeof (Elf_External_Vernaux);
-
- _bfd_elf_swap_vernaux_out (output_bfd, a,
- (Elf_External_Vernaux *) p);
- p += sizeof (Elf_External_Vernaux);
- }
- }
-
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_VERNEED,
- (bfd_vma) 0)
- || ! elf_add_dynamic_entry (info, (bfd_vma) DT_VERNEEDNUM,
- (bfd_vma) crefs))
- return false;
-
- elf_tdata (output_bfd)->cverrefs = crefs;
- }
- }
-
- /* Assign dynsym indicies. In a shared library we generate a
- section symbol for each output section, which come first.
- Next come all of the back-end allocated local dynamic syms,
- followed by the rest of the global symbols. */
-
- dynsymcount = _bfd_elf_link_renumber_dynsyms (output_bfd, info);
-
- /* Work out the size of the symbol version section. */
- s = bfd_get_section_by_name (dynobj, ".gnu.version");
- BFD_ASSERT (s != NULL);
- if (dynsymcount == 0
- || (verdefs == NULL && elf_tdata (output_bfd)->verref == NULL))
- {
- _bfd_strip_section_from_output (info, s);
- /* The DYNSYMCOUNT might have changed if we were going to
- output a dynamic symbol table entry for S. */
- dynsymcount = _bfd_elf_link_renumber_dynsyms (output_bfd, info);
- }
- else
- {
- s->_raw_size = dynsymcount * sizeof (Elf_External_Versym);
- s->contents = (bfd_byte *) bfd_zalloc (output_bfd, s->_raw_size);
- if (s->contents == NULL)
- return false;
-
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_VERSYM, (bfd_vma) 0))
- return false;
- }
-
- /* Set the size of the .dynsym and .hash sections. We counted
- the number of dynamic symbols in elf_link_add_object_symbols.
- We will build the contents of .dynsym and .hash when we build
- the final symbol table, because until then we do not know the
- correct value to give the symbols. We built the .dynstr
- section as we went along in elf_link_add_object_symbols. */
- s = bfd_get_section_by_name (dynobj, ".dynsym");
- BFD_ASSERT (s != NULL);
- s->_raw_size = dynsymcount * sizeof (Elf_External_Sym);
- s->contents = (bfd_byte *) bfd_alloc (output_bfd, s->_raw_size);
- if (s->contents == NULL && s->_raw_size != 0)
- return false;
-
- if (dynsymcount != 0)
- {
- Elf_Internal_Sym isym;
-
- /* The first entry in .dynsym is a dummy symbol. */
- isym.st_value = 0;
- isym.st_size = 0;
- isym.st_name = 0;
- isym.st_info = 0;
- isym.st_other = 0;
- isym.st_shndx = 0;
- elf_swap_symbol_out (output_bfd, &isym, (PTR) s->contents, (PTR) 0);
- }
-
- /* Compute the size of the hashing table. As a side effect this
- computes the hash values for all the names we export. */
- bucketcount = compute_bucket_count (info);
-
- s = bfd_get_section_by_name (dynobj, ".hash");
- BFD_ASSERT (s != NULL);
- hash_entry_size = elf_section_data (s)->this_hdr.sh_entsize;
- s->_raw_size = ((2 + bucketcount + dynsymcount) * hash_entry_size);
- s->contents = (bfd_byte *) bfd_zalloc (output_bfd, s->_raw_size);
- if (s->contents == NULL)
- return false;
-
- bfd_put (8 * hash_entry_size, output_bfd, (bfd_vma) bucketcount,
- s->contents);
- bfd_put (8 * hash_entry_size, output_bfd, (bfd_vma) dynsymcount,
- s->contents + hash_entry_size);
-
- elf_hash_table (info)->bucketcount = bucketcount;
-
- s = bfd_get_section_by_name (dynobj, ".dynstr");
- BFD_ASSERT (s != NULL);
-
- elf_finalize_dynstr (output_bfd, info);
-
- s->_raw_size = _bfd_elf_strtab_size (elf_hash_table (info)->dynstr);
-
- for (dtagcount = 0; dtagcount <= info->spare_dynamic_tags; ++dtagcount)
- if (! elf_add_dynamic_entry (info, (bfd_vma) DT_NULL, (bfd_vma) 0))
- return false;
- }
-
- return true;
-}
-
-/* This function is used to adjust offsets into .dynstr for
- dynamic symbols. This is called via elf_link_hash_traverse. */
-
-static boolean elf_adjust_dynstr_offsets
-PARAMS ((struct elf_link_hash_entry *, PTR));
-
-static boolean
-elf_adjust_dynstr_offsets (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_strtab_hash *dynstr = (struct elf_strtab_hash *) data;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if (h->dynindx != -1)
- h->dynstr_index = _bfd_elf_strtab_offset (dynstr, h->dynstr_index);
- return true;
-}
-
-/* Assign string offsets in .dynstr, update all structures referencing
- them. */
-
-static boolean
-elf_finalize_dynstr (output_bfd, info)
- bfd *output_bfd;
- struct bfd_link_info *info;
-{
- struct elf_link_local_dynamic_entry *entry;
- struct elf_strtab_hash *dynstr = elf_hash_table (info)->dynstr;
- bfd *dynobj = elf_hash_table (info)->dynobj;
- asection *sdyn;
- bfd_size_type size;
- Elf_External_Dyn *dyncon, *dynconend;
-
- _bfd_elf_strtab_finalize (dynstr);
- size = _bfd_elf_strtab_size (dynstr);
-
- /* Update all .dynamic entries referencing .dynstr strings. */
- sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
- BFD_ASSERT (sdyn != NULL);
-
- dyncon = (Elf_External_Dyn *) sdyn->contents;
- dynconend = (Elf_External_Dyn *) (sdyn->contents +
- sdyn->_raw_size);
- for (; dyncon < dynconend; dyncon++)
- {
- Elf_Internal_Dyn dyn;
-
- elf_swap_dyn_in (dynobj, dyncon, & dyn);
- switch (dyn.d_tag)
- {
- case DT_STRSZ:
- dyn.d_un.d_val = size;
- elf_swap_dyn_out (dynobj, & dyn, dyncon);
- break;
- case DT_NEEDED:
- case DT_SONAME:
- case DT_RPATH:
- case DT_RUNPATH:
- case DT_FILTER:
- case DT_AUXILIARY:
- dyn.d_un.d_val = _bfd_elf_strtab_offset (dynstr, dyn.d_un.d_val);
- elf_swap_dyn_out (dynobj, & dyn, dyncon);
- break;
- default:
- break;
- }
- }
-
- /* Now update local dynamic symbols. */
- for (entry = elf_hash_table (info)->dynlocal; entry ; entry = entry->next)
- entry->isym.st_name = _bfd_elf_strtab_offset (dynstr,
- entry->isym.st_name);
-
- /* And the rest of dynamic symbols. */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_adjust_dynstr_offsets, dynstr);
-
- /* Adjust version definitions. */
- if (elf_tdata (output_bfd)->cverdefs)
- {
- asection *s;
- bfd_byte *p;
- bfd_size_type i;
- Elf_Internal_Verdef def;
- Elf_Internal_Verdaux defaux;
-
- s = bfd_get_section_by_name (dynobj, ".gnu.version_d");
- p = (bfd_byte *) s->contents;
- do
- {
- _bfd_elf_swap_verdef_in (output_bfd, (Elf_External_Verdef *) p,
- &def);
- p += sizeof (Elf_External_Verdef);
- for (i = 0; i < def.vd_cnt; ++i)
- {
- _bfd_elf_swap_verdaux_in (output_bfd,
- (Elf_External_Verdaux *) p, &defaux);
- defaux.vda_name = _bfd_elf_strtab_offset (dynstr,
- defaux.vda_name);
- _bfd_elf_swap_verdaux_out (output_bfd,
- &defaux, (Elf_External_Verdaux *) p);
- p += sizeof (Elf_External_Verdaux);
- }
- }
- while (def.vd_next);
- }
-
- /* Adjust version references. */
- if (elf_tdata (output_bfd)->verref)
- {
- asection *s;
- bfd_byte *p;
- bfd_size_type i;
- Elf_Internal_Verneed need;
- Elf_Internal_Vernaux needaux;
-
- s = bfd_get_section_by_name (dynobj, ".gnu.version_r");
- p = (bfd_byte *) s->contents;
- do
- {
- _bfd_elf_swap_verneed_in (output_bfd, (Elf_External_Verneed *) p,
- &need);
- need.vn_file = _bfd_elf_strtab_offset (dynstr, need.vn_file);
- _bfd_elf_swap_verneed_out (output_bfd, &need,
- (Elf_External_Verneed *) p);
- p += sizeof (Elf_External_Verneed);
- for (i = 0; i < need.vn_cnt; ++i)
- {
- _bfd_elf_swap_vernaux_in (output_bfd,
- (Elf_External_Vernaux *) p, &needaux);
- needaux.vna_name = _bfd_elf_strtab_offset (dynstr,
- needaux.vna_name);
- _bfd_elf_swap_vernaux_out (output_bfd,
- &needaux,
- (Elf_External_Vernaux *) p);
- p += sizeof (Elf_External_Vernaux);
- }
- }
- while (need.vn_next);
- }
-
- return true;
-}
-
-/* Fix up the flags for a symbol. This handles various cases which
- can only be fixed after all the input files are seen. This is
- currently called by both adjust_dynamic_symbol and
- assign_sym_version, which is unnecessary but perhaps more robust in
- the face of future changes. */
-
-static boolean
-elf_fix_symbol_flags (h, eif)
- struct elf_link_hash_entry *h;
- struct elf_info_failed *eif;
-{
- /* If this symbol was mentioned in a non-ELF file, try to set
- DEF_REGULAR and REF_REGULAR correctly. This is the only way to
- permit a non-ELF file to correctly refer to a symbol defined in
- an ELF dynamic object. */
- if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) != 0)
- {
- while (h->root.type == bfd_link_hash_indirect)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if (h->root.type != bfd_link_hash_defined
- && h->root.type != bfd_link_hash_defweak)
- h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_REF_REGULAR_NONWEAK);
- else
- {
- if (h->root.u.def.section->owner != NULL
- && (bfd_get_flavour (h->root.u.def.section->owner)
- == bfd_target_elf_flavour))
- h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR
- | ELF_LINK_HASH_REF_REGULAR_NONWEAK);
- else
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
- }
-
- if (h->dynindx == -1
- && ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- || (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0))
- {
- if (! _bfd_elf_link_record_dynamic_symbol (eif->info, h))
- {
- eif->failed = true;
- return false;
- }
- }
- }
- else
- {
- /* Unfortunately, ELF_LINK_NON_ELF is only correct if the symbol
- was first seen in a non-ELF file. Fortunately, if the symbol
- was first seen in an ELF file, we're probably OK unless the
- symbol was defined in a non-ELF file. Catch that case here.
- FIXME: We're still in trouble if the symbol was first seen in
- a dynamic object, and then later in a non-ELF regular object. */
- if ((h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0
- && (h->root.u.def.section->owner != NULL
- ? (bfd_get_flavour (h->root.u.def.section->owner)
- != bfd_target_elf_flavour)
- : (bfd_is_abs_section (h->root.u.def.section)
- && (h->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_DYNAMIC) == 0)))
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
- }
-
- /* If this is a final link, and the symbol was defined as a common
- symbol in a regular object file, and there was no definition in
- any dynamic object, then the linker will have allocated space for
- the symbol in a common section but the ELF_LINK_HASH_DEF_REGULAR
- flag will not have been set. */
- if (h->root.type == bfd_link_hash_defined
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) != 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- && (h->root.u.def.section->owner->flags & DYNAMIC) == 0)
- h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
-
- /* If -Bsymbolic was used (which means to bind references to global
- symbols to the definition within the shared object), and this
- symbol was defined in a regular object, then it actually doesn't
- need a PLT entry, and we can accomplish that by forcing it local.
- Likewise, if the symbol has hidden or internal visibility.
- FIXME: It might be that we also do not need a PLT for other
- non-hidden visibilities, but we would have to tell that to the
- backend specifically; we can't just clear PLT-related data here. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0
- && eif->info->shared
- && is_elf_hash_table (eif->info)
- && (eif->info->symbolic
- || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
- || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
- {
- struct elf_backend_data *bed;
- boolean force_local;
-
- bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
-
- force_local = (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
- || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN);
- (*bed->elf_backend_hide_symbol) (eif->info, h, force_local);
- }
-
- /* If this is a weak defined symbol in a dynamic object, and we know
- the real definition in the dynamic object, copy interesting flags
- over to the real definition. */
- if (h->weakdef != NULL)
- {
- struct elf_link_hash_entry *weakdef;
-
- weakdef = h->weakdef;
- if (h->root.type == bfd_link_hash_indirect)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- BFD_ASSERT (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak);
- BFD_ASSERT (weakdef->root.type == bfd_link_hash_defined
- || weakdef->root.type == bfd_link_hash_defweak);
- BFD_ASSERT (weakdef->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC);
-
- /* If the real definition is defined by a regular object file,
- don't do anything special. See the longer description in
- elf_adjust_dynamic_symbol, below. */
- if ((weakdef->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
- h->weakdef = NULL;
- else
- {
- struct elf_backend_data *bed;
-
- bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
- (*bed->elf_backend_copy_indirect_symbol) (bed, weakdef, h);
- }
- }
-
- return true;
-}
-
-/* Make the backend pick a good value for a dynamic symbol. This is
- called via elf_link_hash_traverse, and also calls itself
- recursively. */
-
-static boolean
-elf_adjust_dynamic_symbol (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_info_failed *eif = (struct elf_info_failed *) data;
- bfd *dynobj;
- struct elf_backend_data *bed;
-
- if (h->root.type == bfd_link_hash_warning)
- {
- h->plt.offset = (bfd_vma) -1;
- h->got.offset = (bfd_vma) -1;
-
- /* When warning symbols are created, they **replace** the "real"
- entry in the hash table, thus we never get to see the real
- symbol in a hash traversal. So look at it now. */
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- }
-
- /* Ignore indirect symbols. These are added by the versioning code. */
- if (h->root.type == bfd_link_hash_indirect)
- return true;
-
- if (! is_elf_hash_table (eif->info))
- return false;
-
- /* Fix the symbol flags. */
- if (! elf_fix_symbol_flags (h, eif))
- return false;
-
- /* If this symbol does not require a PLT entry, and it is not
- defined by a dynamic object, or is not referenced by a regular
- object, ignore it. We do have to handle a weak defined symbol,
- even if no regular object refers to it, if we decided to add it
- to the dynamic symbol table. FIXME: Do we normally need to worry
- about symbols which are defined by one dynamic object and
- referenced by another one? */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) == 0
- && ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
- || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- || ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0
- && (h->weakdef == NULL || h->weakdef->dynindx == -1))))
- {
- h->plt.offset = (bfd_vma) -1;
- return true;
- }
-
- /* If we've already adjusted this symbol, don't do it again. This
- can happen via a recursive call. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DYNAMIC_ADJUSTED) != 0)
- return true;
-
- /* Don't look at this symbol again. Note that we must set this
- after checking the above conditions, because we may look at a
- symbol once, decide not to do anything, and then get called
- recursively later after REF_REGULAR is set below. */
- h->elf_link_hash_flags |= ELF_LINK_HASH_DYNAMIC_ADJUSTED;
-
- /* If this is a weak definition, and we know a real definition, and
- the real symbol is not itself defined by a regular object file,
- then get a good value for the real definition. We handle the
- real symbol first, for the convenience of the backend routine.
-
- Note that there is a confusing case here. If the real definition
- is defined by a regular object file, we don't get the real symbol
- from the dynamic object, but we do get the weak symbol. If the
- processor backend uses a COPY reloc, then if some routine in the
- dynamic object changes the real symbol, we will not see that
- change in the corresponding weak symbol. This is the way other
- ELF linkers work as well, and seems to be a result of the shared
- library model.
-
- I will clarify this issue. Most SVR4 shared libraries define the
- variable _timezone and define timezone as a weak synonym. The
- tzset call changes _timezone. If you write
- extern int timezone;
- int _timezone = 5;
- int main () { tzset (); printf ("%d %d\n", timezone, _timezone); }
- you might expect that, since timezone is a synonym for _timezone,
- the same number will print both times. However, if the processor
- backend uses a COPY reloc, then actually timezone will be copied
- into your process image, and, since you define _timezone
- yourself, _timezone will not. Thus timezone and _timezone will
- wind up at different memory locations. The tzset call will set
- _timezone, leaving timezone unchanged. */
-
- if (h->weakdef != NULL)
- {
- /* If we get to this point, we know there is an implicit
- reference by a regular object file via the weak symbol H.
- FIXME: Is this really true? What if the traversal finds
- H->WEAKDEF before it finds H? */
- h->weakdef->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR;
-
- if (! elf_adjust_dynamic_symbol (h->weakdef, (PTR) eif))
- return false;
- }
-
- /* If a symbol has no type and no size and does not require a PLT
- entry, then we are probably about to do the wrong thing here: we
- are probably going to create a COPY reloc for an empty object.
- This case can arise when a shared object is built with assembly
- code, and the assembly code fails to set the symbol type. */
- if (h->size == 0
- && h->type == STT_NOTYPE
- && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) == 0)
- (*_bfd_error_handler)
- (_("warning: type and size of dynamic symbol `%s' are not defined"),
- h->root.root.string);
-
- dynobj = elf_hash_table (eif->info)->dynobj;
- bed = get_elf_backend_data (dynobj);
- if (! (*bed->elf_backend_adjust_dynamic_symbol) (eif->info, h))
- {
- eif->failed = true;
- return false;
- }
-
- return true;
-}
-
-/* This routine is used to export all defined symbols into the dynamic
- symbol table. It is called via elf_link_hash_traverse. */
-
-static boolean
-elf_export_symbol (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_info_failed *eif = (struct elf_info_failed *) data;
-
- /* Ignore indirect symbols. These are added by the versioning code. */
- if (h->root.type == bfd_link_hash_indirect)
- return true;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if (h->dynindx == -1
- && (h->elf_link_hash_flags
- & (ELF_LINK_HASH_DEF_REGULAR | ELF_LINK_HASH_REF_REGULAR)) != 0)
- {
- struct bfd_elf_version_tree *t;
- struct bfd_elf_version_expr *d;
-
- for (t = eif->verdefs; t != NULL; t = t->next)
- {
- if (t->globals != NULL)
- {
- for (d = t->globals; d != NULL; d = d->next)
- {
- if ((*d->match) (d, h->root.root.string))
- goto doit;
- }
- }
-
- if (t->locals != NULL)
- {
- for (d = t->locals ; d != NULL; d = d->next)
- {
- if ((*d->match) (d, h->root.root.string))
- return true;
- }
- }
- }
-
- if (!eif->verdefs)
- {
- doit:
- if (! _bfd_elf_link_record_dynamic_symbol (eif->info, h))
- {
- eif->failed = true;
- return false;
- }
- }
- }
-
- return true;
-}
-
-/* Look through the symbols which are defined in other shared
- libraries and referenced here. Update the list of version
- dependencies. This will be put into the .gnu.version_r section.
- This function is called via elf_link_hash_traverse. */
-
-static boolean
-elf_link_find_version_dependencies (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_find_verdep_info *rinfo = (struct elf_find_verdep_info *) data;
- Elf_Internal_Verneed *t;
- Elf_Internal_Vernaux *a;
- bfd_size_type amt;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* We only care about symbols defined in shared objects with version
- information. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
- || h->dynindx == -1
- || h->verinfo.verdef == NULL)
- return true;
-
- /* See if we already know about this version. */
- for (t = elf_tdata (rinfo->output_bfd)->verref; t != NULL; t = t->vn_nextref)
- {
- if (t->vn_bfd != h->verinfo.verdef->vd_bfd)
- continue;
-
- for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
- if (a->vna_nodename == h->verinfo.verdef->vd_nodename)
- return true;
-
- break;
- }
-
- /* This is a new version. Add it to tree we are building. */
-
- if (t == NULL)
- {
- amt = sizeof *t;
- t = (Elf_Internal_Verneed *) bfd_zalloc (rinfo->output_bfd, amt);
- if (t == NULL)
- {
- rinfo->failed = true;
- return false;
- }
-
- t->vn_bfd = h->verinfo.verdef->vd_bfd;
- t->vn_nextref = elf_tdata (rinfo->output_bfd)->verref;
- elf_tdata (rinfo->output_bfd)->verref = t;
- }
-
- amt = sizeof *a;
- a = (Elf_Internal_Vernaux *) bfd_zalloc (rinfo->output_bfd, amt);
-
- /* Note that we are copying a string pointer here, and testing it
- above. If bfd_elf_string_from_elf_section is ever changed to
- discard the string data when low in memory, this will have to be
- fixed. */
- a->vna_nodename = h->verinfo.verdef->vd_nodename;
-
- a->vna_flags = h->verinfo.verdef->vd_flags;
- a->vna_nextptr = t->vn_auxptr;
-
- h->verinfo.verdef->vd_exp_refno = rinfo->vers;
- ++rinfo->vers;
-
- a->vna_other = h->verinfo.verdef->vd_exp_refno + 1;
-
- t->vn_auxptr = a;
-
- return true;
-}
-
-/* Figure out appropriate versions for all the symbols. We may not
- have the version number script until we have read all of the input
- files, so until that point we don't know which symbols should be
- local. This function is called via elf_link_hash_traverse. */
-
-static boolean
-elf_link_assign_sym_version (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_assign_sym_version_info *sinfo;
- struct bfd_link_info *info;
- struct elf_backend_data *bed;
- struct elf_info_failed eif;
- char *p;
- bfd_size_type amt;
-
- sinfo = (struct elf_assign_sym_version_info *) data;
- info = sinfo->info;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Fix the symbol flags. */
- eif.failed = false;
- eif.info = info;
- if (! elf_fix_symbol_flags (h, &eif))
- {
- if (eif.failed)
- sinfo->failed = true;
- return false;
- }
-
- /* We only need version numbers for symbols defined in regular
- objects. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- return true;
-
- bed = get_elf_backend_data (sinfo->output_bfd);
- p = strchr (h->root.root.string, ELF_VER_CHR);
- if (p != NULL && h->verinfo.vertree == NULL)
- {
- struct bfd_elf_version_tree *t;
- boolean hidden;
-
- hidden = true;
-
- /* There are two consecutive ELF_VER_CHR characters if this is
- not a hidden symbol. */
- ++p;
- if (*p == ELF_VER_CHR)
- {
- hidden = false;
- ++p;
- }
-
- /* If there is no version string, we can just return out. */
- if (*p == '\0')
- {
- if (hidden)
- h->elf_link_hash_flags |= ELF_LINK_HIDDEN;
- return true;
- }
-
- /* Look for the version. If we find it, it is no longer weak. */
- for (t = sinfo->verdefs; t != NULL; t = t->next)
- {
- if (strcmp (t->name, p) == 0)
- {
- size_t len;
- char *alc;
- struct bfd_elf_version_expr *d;
-
- len = p - h->root.root.string;
- alc = bfd_malloc ((bfd_size_type) len);
- if (alc == NULL)
- return false;
- memcpy (alc, h->root.root.string, len - 1);
- alc[len - 1] = '\0';
- if (alc[len - 2] == ELF_VER_CHR)
- alc[len - 2] = '\0';
-
- h->verinfo.vertree = t;
- t->used = true;
- d = NULL;
-
- if (t->globals != NULL)
- {
- for (d = t->globals; d != NULL; d = d->next)
- if ((*d->match) (d, alc))
- break;
- }
-
- /* See if there is anything to force this symbol to
- local scope. */
- if (d == NULL && t->locals != NULL)
- {
- for (d = t->locals; d != NULL; d = d->next)
- {
- if ((*d->match) (d, alc))
- {
- if (h->dynindx != -1
- && info->shared
- && ! info->export_dynamic)
- {
- (*bed->elf_backend_hide_symbol) (info, h, true);
- }
-
- break;
- }
- }
- }
-
- free (alc);
- break;
- }
- }
-
- /* If we are building an application, we need to create a
- version node for this version. */
- if (t == NULL && ! info->shared)
- {
- struct bfd_elf_version_tree **pp;
- int version_index;
-
- /* If we aren't going to export this symbol, we don't need
- to worry about it. */
- if (h->dynindx == -1)
- return true;
-
- amt = sizeof *t;
- t = ((struct bfd_elf_version_tree *)
- bfd_alloc (sinfo->output_bfd, amt));
- if (t == NULL)
- {
- sinfo->failed = true;
- return false;
- }
-
- t->next = NULL;
- t->name = p;
- t->globals = NULL;
- t->locals = NULL;
- t->deps = NULL;
- t->name_indx = (unsigned int) -1;
- t->used = true;
-
- version_index = 1;
- /* Don't count anonymous version tag. */
- if (sinfo->verdefs != NULL && sinfo->verdefs->vernum == 0)
- version_index = 0;
- for (pp = &sinfo->verdefs; *pp != NULL; pp = &(*pp)->next)
- ++version_index;
- t->vernum = version_index;
-
- *pp = t;
-
- h->verinfo.vertree = t;
- }
- else if (t == NULL)
- {
- /* We could not find the version for a symbol when
- generating a shared archive. Return an error. */
- (*_bfd_error_handler)
- (_("%s: undefined versioned symbol name %s"),
- bfd_get_filename (sinfo->output_bfd), h->root.root.string);
- bfd_set_error (bfd_error_bad_value);
- sinfo->failed = true;
- return false;
- }
-
- if (hidden)
- h->elf_link_hash_flags |= ELF_LINK_HIDDEN;
- }
-
- /* If we don't have a version for this symbol, see if we can find
- something. */
- if (h->verinfo.vertree == NULL && sinfo->verdefs != NULL)
- {
- struct bfd_elf_version_tree *t;
- struct bfd_elf_version_tree *local_ver;
- struct bfd_elf_version_expr *d;
-
- /* See if can find what version this symbol is in. If the
- symbol is supposed to be local, then don't actually register
- it. */
- local_ver = NULL;
- for (t = sinfo->verdefs; t != NULL; t = t->next)
- {
- if (t->globals != NULL)
- {
- boolean matched;
-
- matched = false;
- for (d = t->globals; d != NULL; d = d->next)
- {
- if ((*d->match) (d, h->root.root.string))
- {
- if (d->symver)
- matched = true;
- else
- {
- /* There is a version without definition. Make
- the symbol the default definition for this
- version. */
- h->verinfo.vertree = t;
- local_ver = NULL;
- d->script = 1;
- break;
- }
- }
- }
-
- if (d != NULL)
- break;
- else if (matched)
- /* There is no undefined version for this symbol. Hide the
- default one. */
- (*bed->elf_backend_hide_symbol) (info, h, true);
- }
-
- if (t->locals != NULL)
- {
- for (d = t->locals; d != NULL; d = d->next)
- {
- /* If the match is "*", keep looking for a more
- explicit, perhaps even global, match. */
- if (d->pattern[0] == '*' && d->pattern[1] == '\0')
- local_ver = t;
- else if ((*d->match) (d, h->root.root.string))
- {
- local_ver = t;
- break;
- }
- }
-
- if (d != NULL)
- break;
- }
- }
-
- if (local_ver != NULL)
- {
- h->verinfo.vertree = local_ver;
- if (h->dynindx != -1
- && info->shared
- && ! info->export_dynamic)
- {
- (*bed->elf_backend_hide_symbol) (info, h, true);
- }
- }
- }
-
- return true;
-}
-
-/* Final phase of ELF linker. */
-
-/* A structure we use to avoid passing large numbers of arguments. */
-
-struct elf_final_link_info
-{
- /* General link information. */
- struct bfd_link_info *info;
- /* Output BFD. */
- bfd *output_bfd;
- /* Symbol string table. */
- struct bfd_strtab_hash *symstrtab;
- /* .dynsym section. */
- asection *dynsym_sec;
- /* .hash section. */
- asection *hash_sec;
- /* symbol version section (.gnu.version). */
- asection *symver_sec;
- /* first SHF_TLS section (if any). */
- asection *first_tls_sec;
- /* Buffer large enough to hold contents of any section. */
- bfd_byte *contents;
- /* Buffer large enough to hold external relocs of any section. */
- PTR external_relocs;
- /* Buffer large enough to hold internal relocs of any section. */
- Elf_Internal_Rela *internal_relocs;
- /* Buffer large enough to hold external local symbols of any input
- BFD. */
- Elf_External_Sym *external_syms;
- /* And a buffer for symbol section indices. */
- Elf_External_Sym_Shndx *locsym_shndx;
- /* Buffer large enough to hold internal local symbols of any input
- BFD. */
- Elf_Internal_Sym *internal_syms;
- /* Array large enough to hold a symbol index for each local symbol
- of any input BFD. */
- long *indices;
- /* Array large enough to hold a section pointer for each local
- symbol of any input BFD. */
- asection **sections;
- /* Buffer to hold swapped out symbols. */
- Elf_External_Sym *symbuf;
- /* And one for symbol section indices. */
- Elf_External_Sym_Shndx *symshndxbuf;
- /* Number of swapped out symbols in buffer. */
- size_t symbuf_count;
- /* Number of symbols which fit in symbuf. */
- size_t symbuf_size;
-};
-
-static boolean elf_link_output_sym
- PARAMS ((struct elf_final_link_info *, const char *,
- Elf_Internal_Sym *, asection *));
-static boolean elf_link_flush_output_syms
- PARAMS ((struct elf_final_link_info *));
-static boolean elf_link_output_extsym
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_sec_merge_syms
- PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_check_versioned_symbol
- PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
-static boolean elf_link_input_bfd
- PARAMS ((struct elf_final_link_info *, bfd *));
-static boolean elf_reloc_link_order
- PARAMS ((bfd *, struct bfd_link_info *, asection *,
- struct bfd_link_order *));
-
-/* This struct is used to pass information to elf_link_output_extsym. */
-
-struct elf_outext_info
-{
- boolean failed;
- boolean localsyms;
- struct elf_final_link_info *finfo;
-};
-
-/* Compute the size of, and allocate space for, REL_HDR which is the
- section header for a section containing relocations for O. */
-
-static boolean
-elf_link_size_reloc_section (abfd, rel_hdr, o)
- bfd *abfd;
- Elf_Internal_Shdr *rel_hdr;
- asection *o;
-{
- bfd_size_type reloc_count;
- bfd_size_type num_rel_hashes;
-
- /* Figure out how many relocations there will be. */
- if (rel_hdr == &elf_section_data (o)->rel_hdr)
- reloc_count = elf_section_data (o)->rel_count;
- else
- reloc_count = elf_section_data (o)->rel_count2;
-
- num_rel_hashes = o->reloc_count;
- if (num_rel_hashes < reloc_count)
- num_rel_hashes = reloc_count;
-
- /* That allows us to calculate the size of the section. */
- rel_hdr->sh_size = rel_hdr->sh_entsize * reloc_count;
-
- /* The contents field must last into write_object_contents, so we
- allocate it with bfd_alloc rather than malloc. Also since we
- cannot be sure that the contents will actually be filled in,
- we zero the allocated space. */
- rel_hdr->contents = (PTR) bfd_zalloc (abfd, rel_hdr->sh_size);
- if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0)
- return false;
-
- /* We only allocate one set of hash entries, so we only do it the
- first time we are called. */
- if (elf_section_data (o)->rel_hashes == NULL
- && num_rel_hashes)
- {
- struct elf_link_hash_entry **p;
-
- p = ((struct elf_link_hash_entry **)
- bfd_zmalloc (num_rel_hashes
- * sizeof (struct elf_link_hash_entry *)));
- if (p == NULL)
- return false;
-
- elf_section_data (o)->rel_hashes = p;
- }
-
- return true;
-}
-
-/* When performing a relocateable link, the input relocations are
- preserved. But, if they reference global symbols, the indices
- referenced must be updated. Update all the relocations in
- REL_HDR (there are COUNT of them), using the data in REL_HASH. */
-
-static void
-elf_link_adjust_relocs (abfd, rel_hdr, count, rel_hash)
- bfd *abfd;
- Elf_Internal_Shdr *rel_hdr;
- unsigned int count;
- struct elf_link_hash_entry **rel_hash;
-{
- unsigned int i;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
- Elf_Internal_Rel *irel;
- Elf_Internal_Rela *irela;
- bfd_size_type amt = sizeof (Elf_Internal_Rel) * bed->s->int_rels_per_ext_rel;
-
- irel = (Elf_Internal_Rel *) bfd_zmalloc (amt);
- if (irel == NULL)
- {
- (*_bfd_error_handler) (_("Error: out of memory"));
- abort ();
- }
-
- amt = sizeof (Elf_Internal_Rela) * bed->s->int_rels_per_ext_rel;
- irela = (Elf_Internal_Rela *) bfd_zmalloc (amt);
- if (irela == NULL)
- {
- (*_bfd_error_handler) (_("Error: out of memory"));
- abort ();
- }
-
- for (i = 0; i < count; i++, rel_hash++)
- {
- if (*rel_hash == NULL)
- continue;
-
- BFD_ASSERT ((*rel_hash)->indx >= 0);
-
- if (rel_hdr->sh_entsize == sizeof (Elf_External_Rel))
- {
- Elf_External_Rel *erel;
- unsigned int j;
-
- erel = (Elf_External_Rel *) rel_hdr->contents + i;
- if (bed->s->swap_reloc_in)
- (*bed->s->swap_reloc_in) (abfd, (bfd_byte *) erel, irel);
- else
- elf_swap_reloc_in (abfd, erel, irel);
-
- for (j = 0; j < bed->s->int_rels_per_ext_rel; j++)
- irel[j].r_info = ELF_R_INFO ((*rel_hash)->indx,
- ELF_R_TYPE (irel[j].r_info));
-
- if (bed->s->swap_reloc_out)
- (*bed->s->swap_reloc_out) (abfd, irel, (bfd_byte *) erel);
- else
- elf_swap_reloc_out (abfd, irel, erel);
- }
- else
- {
- Elf_External_Rela *erela;
- unsigned int j;
-
- BFD_ASSERT (rel_hdr->sh_entsize
- == sizeof (Elf_External_Rela));
-
- erela = (Elf_External_Rela *) rel_hdr->contents + i;
- if (bed->s->swap_reloca_in)
- (*bed->s->swap_reloca_in) (abfd, (bfd_byte *) erela, irela);
- else
- elf_swap_reloca_in (abfd, erela, irela);
-
- for (j = 0; j < bed->s->int_rels_per_ext_rel; j++)
- irela[j].r_info = ELF_R_INFO ((*rel_hash)->indx,
- ELF_R_TYPE (irela[j].r_info));
-
- if (bed->s->swap_reloca_out)
- (*bed->s->swap_reloca_out) (abfd, irela, (bfd_byte *) erela);
- else
- elf_swap_reloca_out (abfd, irela, erela);
- }
- }
-
- free (irel);
- free (irela);
-}
-
-struct elf_link_sort_rela
-{
- bfd_vma offset;
- enum elf_reloc_type_class type;
- union
- {
- Elf_Internal_Rel rel;
- Elf_Internal_Rela rela;
- } u;
-};
-
-static int
-elf_link_sort_cmp1 (A, B)
- const PTR A;
- const PTR B;
-{
- struct elf_link_sort_rela *a = (struct elf_link_sort_rela *) A;
- struct elf_link_sort_rela *b = (struct elf_link_sort_rela *) B;
- int relativea, relativeb;
-
- relativea = a->type == reloc_class_relative;
- relativeb = b->type == reloc_class_relative;
-
- if (relativea < relativeb)
- return 1;
- if (relativea > relativeb)
- return -1;
- if (ELF_R_SYM (a->u.rel.r_info) < ELF_R_SYM (b->u.rel.r_info))
- return -1;
- if (ELF_R_SYM (a->u.rel.r_info) > ELF_R_SYM (b->u.rel.r_info))
- return 1;
- if (a->u.rel.r_offset < b->u.rel.r_offset)
- return -1;
- if (a->u.rel.r_offset > b->u.rel.r_offset)
- return 1;
- return 0;
-}
-
-static int
-elf_link_sort_cmp2 (A, B)
- const PTR A;
- const PTR B;
-{
- struct elf_link_sort_rela *a = (struct elf_link_sort_rela *) A;
- struct elf_link_sort_rela *b = (struct elf_link_sort_rela *) B;
- int copya, copyb;
-
- if (a->offset < b->offset)
- return -1;
- if (a->offset > b->offset)
- return 1;
- copya = (a->type == reloc_class_copy) * 2 + (a->type == reloc_class_plt);
- copyb = (b->type == reloc_class_copy) * 2 + (b->type == reloc_class_plt);
- if (copya < copyb)
- return -1;
- if (copya > copyb)
- return 1;
- if (a->u.rel.r_offset < b->u.rel.r_offset)
- return -1;
- if (a->u.rel.r_offset > b->u.rel.r_offset)
- return 1;
- return 0;
-}
-
-static size_t
-elf_link_sort_relocs (abfd, info, psec)
- bfd *abfd;
- struct bfd_link_info *info;
- asection **psec;
-{
- bfd *dynobj = elf_hash_table (info)->dynobj;
- asection *reldyn, *o;
- boolean rel = false;
- bfd_size_type count, size;
- size_t i, j, ret;
- struct elf_link_sort_rela *rela;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
-
- reldyn = bfd_get_section_by_name (abfd, ".rela.dyn");
- if (reldyn == NULL || reldyn->_raw_size == 0)
- {
- reldyn = bfd_get_section_by_name (abfd, ".rel.dyn");
- if (reldyn == NULL || reldyn->_raw_size == 0)
- return 0;
- rel = true;
- count = reldyn->_raw_size / sizeof (Elf_External_Rel);
- }
- else
- count = reldyn->_raw_size / sizeof (Elf_External_Rela);
-
- size = 0;
- for (o = dynobj->sections; o != NULL; o = o->next)
- if ((o->flags & (SEC_HAS_CONTENTS|SEC_LINKER_CREATED))
- == (SEC_HAS_CONTENTS|SEC_LINKER_CREATED)
- && o->output_section == reldyn)
- size += o->_raw_size;
-
- if (size != reldyn->_raw_size)
- return 0;
-
- rela = (struct elf_link_sort_rela *) bfd_zmalloc (sizeof (*rela) * count);
- if (rela == NULL)
- {
- (*info->callbacks->warning)
- (info, _("Not enough memory to sort relocations"), 0, abfd, 0,
- (bfd_vma) 0);
- return 0;
- }
-
- for (o = dynobj->sections; o != NULL; o = o->next)
- if ((o->flags & (SEC_HAS_CONTENTS|SEC_LINKER_CREATED))
- == (SEC_HAS_CONTENTS|SEC_LINKER_CREATED)
- && o->output_section == reldyn)
- {
- if (rel)
- {
- Elf_External_Rel *erel, *erelend;
- struct elf_link_sort_rela *s;
-
- erel = (Elf_External_Rel *) o->contents;
- erelend = (Elf_External_Rel *) (o->contents + o->_raw_size);
- s = rela + o->output_offset / sizeof (Elf_External_Rel);
- for (; erel < erelend; erel++, s++)
- {
- if (bed->s->swap_reloc_in)
- (*bed->s->swap_reloc_in) (abfd, (bfd_byte *) erel, &s->u.rel);
- else
- elf_swap_reloc_in (abfd, erel, &s->u.rel);
-
- s->type = (*bed->elf_backend_reloc_type_class) (&s->u.rela);
- }
- }
- else
- {
- Elf_External_Rela *erela, *erelaend;
- struct elf_link_sort_rela *s;
-
- erela = (Elf_External_Rela *) o->contents;
- erelaend = (Elf_External_Rela *) (o->contents + o->_raw_size);
- s = rela + o->output_offset / sizeof (Elf_External_Rela);
- for (; erela < erelaend; erela++, s++)
- {
- if (bed->s->swap_reloca_in)
- (*bed->s->swap_reloca_in) (dynobj, (bfd_byte *) erela,
- &s->u.rela);
- else
- elf_swap_reloca_in (dynobj, erela, &s->u.rela);
-
- s->type = (*bed->elf_backend_reloc_type_class) (&s->u.rela);
- }
- }
- }
-
- qsort (rela, (size_t) count, sizeof (*rela), elf_link_sort_cmp1);
- for (ret = 0; ret < count && rela[ret].type == reloc_class_relative; ret++)
- ;
- for (i = ret, j = ret; i < count; i++)
- {
- if (ELF_R_SYM (rela[i].u.rel.r_info) != ELF_R_SYM (rela[j].u.rel.r_info))
- j = i;
- rela[i].offset = rela[j].u.rel.r_offset;
- }
- qsort (rela + ret, (size_t) count - ret, sizeof (*rela), elf_link_sort_cmp2);
-
- for (o = dynobj->sections; o != NULL; o = o->next)
- if ((o->flags & (SEC_HAS_CONTENTS|SEC_LINKER_CREATED))
- == (SEC_HAS_CONTENTS|SEC_LINKER_CREATED)
- && o->output_section == reldyn)
- {
- if (rel)
- {
- Elf_External_Rel *erel, *erelend;
- struct elf_link_sort_rela *s;
-
- erel = (Elf_External_Rel *) o->contents;
- erelend = (Elf_External_Rel *) (o->contents + o->_raw_size);
- s = rela + o->output_offset / sizeof (Elf_External_Rel);
- for (; erel < erelend; erel++, s++)
- {
- if (bed->s->swap_reloc_out)
- (*bed->s->swap_reloc_out) (abfd, &s->u.rel,
- (bfd_byte *) erel);
- else
- elf_swap_reloc_out (abfd, &s->u.rel, erel);
- }
- }
- else
- {
- Elf_External_Rela *erela, *erelaend;
- struct elf_link_sort_rela *s;
-
- erela = (Elf_External_Rela *) o->contents;
- erelaend = (Elf_External_Rela *) (o->contents + o->_raw_size);
- s = rela + o->output_offset / sizeof (Elf_External_Rela);
- for (; erela < erelaend; erela++, s++)
- {
- if (bed->s->swap_reloca_out)
- (*bed->s->swap_reloca_out) (dynobj, &s->u.rela,
- (bfd_byte *) erela);
- else
- elf_swap_reloca_out (dynobj, &s->u.rela, erela);
- }
- }
- }
-
- free (rela);
- *psec = reldyn;
- return ret;
-}
-
-/* Do the final step of an ELF link. */
-
-boolean
-elf_bfd_final_link (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- boolean dynamic;
- boolean emit_relocs;
- bfd *dynobj;
- struct elf_final_link_info finfo;
- register asection *o;
- register struct bfd_link_order *p;
- register bfd *sub;
- bfd_size_type max_contents_size;
- bfd_size_type max_external_reloc_size;
- bfd_size_type max_internal_reloc_count;
- bfd_size_type max_sym_count;
- bfd_size_type max_sym_shndx_count;
- file_ptr off;
- Elf_Internal_Sym elfsym;
- unsigned int i;
- Elf_Internal_Shdr *symtab_hdr;
- Elf_Internal_Shdr *symstrtab_hdr;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
- struct elf_outext_info eoinfo;
- boolean merged;
- size_t relativecount = 0;
- asection *reldyn = 0;
- bfd_size_type amt;
-
- if (! is_elf_hash_table (info))
- return false;
-
- if (info->shared)
- abfd->flags |= DYNAMIC;
-
- dynamic = elf_hash_table (info)->dynamic_sections_created;
- dynobj = elf_hash_table (info)->dynobj;
-
- emit_relocs = (info->relocateable
- || info->emitrelocations
- || bed->elf_backend_emit_relocs);
-
- finfo.info = info;
- finfo.output_bfd = abfd;
- finfo.symstrtab = elf_stringtab_init ();
- if (finfo.symstrtab == NULL)
- return false;
-
- if (! dynamic)
- {
- finfo.dynsym_sec = NULL;
- finfo.hash_sec = NULL;
- finfo.symver_sec = NULL;
- }
- else
- {
- finfo.dynsym_sec = bfd_get_section_by_name (dynobj, ".dynsym");
- finfo.hash_sec = bfd_get_section_by_name (dynobj, ".hash");
- BFD_ASSERT (finfo.dynsym_sec != NULL && finfo.hash_sec != NULL);
- finfo.symver_sec = bfd_get_section_by_name (dynobj, ".gnu.version");
- /* Note that it is OK if symver_sec is NULL. */
- }
-
- finfo.contents = NULL;
- finfo.external_relocs = NULL;
- finfo.internal_relocs = NULL;
- finfo.external_syms = NULL;
- finfo.locsym_shndx = NULL;
- finfo.internal_syms = NULL;
- finfo.indices = NULL;
- finfo.sections = NULL;
- finfo.symbuf = NULL;
- finfo.symshndxbuf = NULL;
- finfo.symbuf_count = 0;
- finfo.first_tls_sec = NULL;
- for (o = abfd->sections; o != (asection *) NULL; o = o->next)
- if ((o->flags & SEC_THREAD_LOCAL) != 0
- && (o->flags & SEC_LOAD) != 0)
- {
- finfo.first_tls_sec = o;
- break;
- }
-
- /* Count up the number of relocations we will output for each output
- section, so that we know the sizes of the reloc sections. We
- also figure out some maximum sizes. */
- max_contents_size = 0;
- max_external_reloc_size = 0;
- max_internal_reloc_count = 0;
- max_sym_count = 0;
- max_sym_shndx_count = 0;
- merged = false;
- for (o = abfd->sections; o != (asection *) NULL; o = o->next)
- {
- o->reloc_count = 0;
-
- for (p = o->link_order_head; p != NULL; p = p->next)
- {
- if (p->type == bfd_section_reloc_link_order
- || p->type == bfd_symbol_reloc_link_order)
- ++o->reloc_count;
- else if (p->type == bfd_indirect_link_order)
- {
- asection *sec;
-
- sec = p->u.indirect.section;
-
- /* Mark all sections which are to be included in the
- link. This will normally be every section. We need
- to do this so that we can identify any sections which
- the linker has decided to not include. */
- sec->linker_mark = true;
-
- if (sec->flags & SEC_MERGE)
- merged = true;
-
- if (info->relocateable || info->emitrelocations)
- o->reloc_count += sec->reloc_count;
- else if (bed->elf_backend_count_relocs)
- {
- Elf_Internal_Rela * relocs;
-
- relocs = (NAME(_bfd_elf,link_read_relocs)
- (abfd, sec, (PTR) NULL,
- (Elf_Internal_Rela *) NULL, info->keep_memory));
-
- o->reloc_count
- += (*bed->elf_backend_count_relocs) (sec, relocs);
-
- if (elf_section_data (o)->relocs != relocs)
- free (relocs);
- }
-
- if (sec->_raw_size > max_contents_size)
- max_contents_size = sec->_raw_size;
- if (sec->_cooked_size > max_contents_size)
- max_contents_size = sec->_cooked_size;
-
- /* We are interested in just local symbols, not all
- symbols. */
- if (bfd_get_flavour (sec->owner) == bfd_target_elf_flavour
- && (sec->owner->flags & DYNAMIC) == 0)
- {
- size_t sym_count;
-
- if (elf_bad_symtab (sec->owner))
- sym_count = (elf_tdata (sec->owner)->symtab_hdr.sh_size
- / sizeof (Elf_External_Sym));
- else
- sym_count = elf_tdata (sec->owner)->symtab_hdr.sh_info;
-
- if (sym_count > max_sym_count)
- max_sym_count = sym_count;
-
- if (sym_count > max_sym_shndx_count
- && elf_symtab_shndx (sec->owner) != 0)
- max_sym_shndx_count = sym_count;
-
- if ((sec->flags & SEC_RELOC) != 0)
- {
- size_t ext_size;
-
- ext_size = elf_section_data (sec)->rel_hdr.sh_size;
- if (ext_size > max_external_reloc_size)
- max_external_reloc_size = ext_size;
- if (sec->reloc_count > max_internal_reloc_count)
- max_internal_reloc_count = sec->reloc_count;
- }
- }
- }
- }
-
- if (o->reloc_count > 0)
- o->flags |= SEC_RELOC;
- else
- {
- /* Explicitly clear the SEC_RELOC flag. The linker tends to
- set it (this is probably a bug) and if it is set
- assign_section_numbers will create a reloc section. */
- o->flags &=~ SEC_RELOC;
- }
-
- /* If the SEC_ALLOC flag is not set, force the section VMA to
- zero. This is done in elf_fake_sections as well, but forcing
- the VMA to 0 here will ensure that relocs against these
- sections are handled correctly. */
- if ((o->flags & SEC_ALLOC) == 0
- && ! o->user_set_vma)
- o->vma = 0;
- }
-
- if (! info->relocateable && merged)
- elf_link_hash_traverse (elf_hash_table (info),
- elf_link_sec_merge_syms, (PTR) abfd);
-
- /* Figure out the file positions for everything but the symbol table
- and the relocs. We set symcount to force assign_section_numbers
- to create a symbol table. */
- bfd_get_symcount (abfd) = info->strip == strip_all ? 0 : 1;
- BFD_ASSERT (! abfd->output_has_begun);
- if (! _bfd_elf_compute_section_file_positions (abfd, info))
- goto error_return;
-
- /* Figure out how many relocations we will have in each section.
- Just using RELOC_COUNT isn't good enough since that doesn't
- maintain a separate value for REL vs. RELA relocations. */
- if (emit_relocs)
- for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
- for (o = sub->sections; o != NULL; o = o->next)
- {
- asection *output_section;
-
- if (! o->linker_mark)
- {
- /* This section was omitted from the link. */
- continue;
- }
-
- output_section = o->output_section;
-
- if (output_section != NULL
- && (o->flags & SEC_RELOC) != 0)
- {
- struct bfd_elf_section_data *esdi
- = elf_section_data (o);
- struct bfd_elf_section_data *esdo
- = elf_section_data (output_section);
- unsigned int *rel_count;
- unsigned int *rel_count2;
- bfd_size_type entsize;
- bfd_size_type entsize2;
-
- /* We must be careful to add the relocations from the
- input section to the right output count. */
- entsize = esdi->rel_hdr.sh_entsize;
- entsize2 = esdi->rel_hdr2 ? esdi->rel_hdr2->sh_entsize : 0;
- BFD_ASSERT ((entsize == sizeof (Elf_External_Rel)
- || entsize == sizeof (Elf_External_Rela))
- && entsize2 != entsize
- && (entsize2 == 0
- || entsize2 == sizeof (Elf_External_Rel)
- || entsize2 == sizeof (Elf_External_Rela)));
- if (entsize == esdo->rel_hdr.sh_entsize)
- {
- rel_count = &esdo->rel_count;
- rel_count2 = &esdo->rel_count2;
- }
- else
- {
- rel_count = &esdo->rel_count2;
- rel_count2 = &esdo->rel_count;
- }
-
- *rel_count += NUM_SHDR_ENTRIES (& esdi->rel_hdr);
- if (esdi->rel_hdr2)
- *rel_count2 += NUM_SHDR_ENTRIES (esdi->rel_hdr2);
- output_section->flags |= SEC_RELOC;
- }
- }
-
- /* That created the reloc sections. Set their sizes, and assign
- them file positions, and allocate some buffers. */
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- if ((o->flags & SEC_RELOC) != 0)
- {
- if (!elf_link_size_reloc_section (abfd,
- &elf_section_data (o)->rel_hdr,
- o))
- goto error_return;
-
- if (elf_section_data (o)->rel_hdr2
- && !elf_link_size_reloc_section (abfd,
- elf_section_data (o)->rel_hdr2,
- o))
- goto error_return;
- }
-
- /* Now, reset REL_COUNT and REL_COUNT2 so that we can use them
- to count upwards while actually outputting the relocations. */
- elf_section_data (o)->rel_count = 0;
- elf_section_data (o)->rel_count2 = 0;
- }
-
- _bfd_elf_assign_file_positions_for_relocs (abfd);
-
- /* We have now assigned file positions for all the sections except
- .symtab and .strtab. We start the .symtab section at the current
- file position, and write directly to it. We build the .strtab
- section in memory. */
- bfd_get_symcount (abfd) = 0;
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- /* sh_name is set in prep_headers. */
- symtab_hdr->sh_type = SHT_SYMTAB;
- symtab_hdr->sh_flags = 0;
- symtab_hdr->sh_addr = 0;
- symtab_hdr->sh_size = 0;
- symtab_hdr->sh_entsize = sizeof (Elf_External_Sym);
- /* sh_link is set in assign_section_numbers. */
- /* sh_info is set below. */
- /* sh_offset is set just below. */
- symtab_hdr->sh_addralign = bed->s->file_align;
-
- off = elf_tdata (abfd)->next_file_pos;
- off = _bfd_elf_assign_file_position_for_section (symtab_hdr, off, true);
-
- /* Note that at this point elf_tdata (abfd)->next_file_pos is
- incorrect. We do not yet know the size of the .symtab section.
- We correct next_file_pos below, after we do know the size. */
-
- /* Allocate a buffer to hold swapped out symbols. This is to avoid
- continuously seeking to the right position in the file. */
- if (! info->keep_memory || max_sym_count < 20)
- finfo.symbuf_size = 20;
- else
- finfo.symbuf_size = max_sym_count;
- amt = finfo.symbuf_size;
- amt *= sizeof (Elf_External_Sym);
- finfo.symbuf = (Elf_External_Sym *) bfd_malloc (amt);
- if (finfo.symbuf == NULL)
- goto error_return;
- if (elf_numsections (abfd) > SHN_LORESERVE)
- {
- amt = finfo.symbuf_size;
- amt *= sizeof (Elf_External_Sym_Shndx);
- finfo.symshndxbuf = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
- if (finfo.symshndxbuf == NULL)
- goto error_return;
- }
-
- /* Start writing out the symbol table. The first symbol is always a
- dummy symbol. */
- if (info->strip != strip_all
- || emit_relocs)
- {
- elfsym.st_value = 0;
- elfsym.st_size = 0;
- elfsym.st_info = 0;
- elfsym.st_other = 0;
- elfsym.st_shndx = SHN_UNDEF;
- if (! elf_link_output_sym (&finfo, (const char *) NULL,
- &elfsym, bfd_und_section_ptr))
- goto error_return;
- }
-
-#if 0
- /* Some standard ELF linkers do this, but we don't because it causes
- bootstrap comparison failures. */
- /* Output a file symbol for the output file as the second symbol.
- We output this even if we are discarding local symbols, although
- I'm not sure if this is correct. */
- elfsym.st_value = 0;
- elfsym.st_size = 0;
- elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE);
- elfsym.st_other = 0;
- elfsym.st_shndx = SHN_ABS;
- if (! elf_link_output_sym (&finfo, bfd_get_filename (abfd),
- &elfsym, bfd_abs_section_ptr))
- goto error_return;
-#endif
-
- /* Output a symbol for each section. We output these even if we are
- discarding local symbols, since they are used for relocs. These
- symbols have no names. We store the index of each one in the
- index field of the section, so that we can find it again when
- outputting relocs. */
- if (info->strip != strip_all
- || emit_relocs)
- {
- elfsym.st_size = 0;
- elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
- elfsym.st_other = 0;
- for (i = 1; i < elf_numsections (abfd); i++)
- {
- o = section_from_elf_index (abfd, i);
- if (o != NULL)
- o->target_index = bfd_get_symcount (abfd);
- elfsym.st_shndx = i;
- if (info->relocateable || o == NULL)
- elfsym.st_value = 0;
- else
- elfsym.st_value = o->vma;
- if (! elf_link_output_sym (&finfo, (const char *) NULL,
- &elfsym, o))
- goto error_return;
- if (i == SHN_LORESERVE)
- i += SHN_HIRESERVE + 1 - SHN_LORESERVE;
- }
- }
-
- /* Allocate some memory to hold information read in from the input
- files. */
- if (max_contents_size != 0)
- {
- finfo.contents = (bfd_byte *) bfd_malloc (max_contents_size);
- if (finfo.contents == NULL)
- goto error_return;
- }
-
- if (max_external_reloc_size != 0)
- {
- finfo.external_relocs = (PTR) bfd_malloc (max_external_reloc_size);
- if (finfo.external_relocs == NULL)
- goto error_return;
- }
-
- if (max_internal_reloc_count != 0)
- {
- amt = max_internal_reloc_count * bed->s->int_rels_per_ext_rel;
- amt *= sizeof (Elf_Internal_Rela);
- finfo.internal_relocs = (Elf_Internal_Rela *) bfd_malloc (amt);
- if (finfo.internal_relocs == NULL)
- goto error_return;
- }
-
- if (max_sym_count != 0)
- {
- amt = max_sym_count * sizeof (Elf_External_Sym);
- finfo.external_syms = (Elf_External_Sym *) bfd_malloc (amt);
- if (finfo.external_syms == NULL)
- goto error_return;
-
- amt = max_sym_count * sizeof (Elf_Internal_Sym);
- finfo.internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt);
- if (finfo.internal_syms == NULL)
- goto error_return;
-
- amt = max_sym_count * sizeof (long);
- finfo.indices = (long *) bfd_malloc (amt);
- if (finfo.indices == NULL)
- goto error_return;
-
- amt = max_sym_count * sizeof (asection *);
- finfo.sections = (asection **) bfd_malloc (amt);
- if (finfo.sections == NULL)
- goto error_return;
- }
-
- if (max_sym_shndx_count != 0)
- {
- amt = max_sym_shndx_count * sizeof (Elf_External_Sym_Shndx);
- finfo.locsym_shndx = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
- if (finfo.locsym_shndx == NULL)
- goto error_return;
- }
-
- if (finfo.first_tls_sec)
- {
- unsigned int align = 0;
- bfd_vma base = finfo.first_tls_sec->vma, end = 0;
- asection *sec;
-
- for (sec = finfo.first_tls_sec;
- sec && (sec->flags & SEC_THREAD_LOCAL);
- sec = sec->next)
- {
- bfd_vma size = sec->_raw_size;
-
- if (bfd_get_section_alignment (abfd, sec) > align)
- align = bfd_get_section_alignment (abfd, sec);
- if (sec->_raw_size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0)
- {
- struct bfd_link_order *o;
-
- size = 0;
- for (o = sec->link_order_head; o != NULL; o = o->next)
- if (size < o->offset + o->size)
- size = o->offset + o->size;
- }
- end = sec->vma + size;
- }
- elf_hash_table (info)->tls_segment
- = bfd_zalloc (abfd, sizeof (struct elf_link_tls_segment));
- if (elf_hash_table (info)->tls_segment == NULL)
- goto error_return;
- elf_hash_table (info)->tls_segment->start = base;
- elf_hash_table (info)->tls_segment->size = end - base;
- elf_hash_table (info)->tls_segment->align = align;
- }
-
- /* Since ELF permits relocations to be against local symbols, we
- must have the local symbols available when we do the relocations.
- Since we would rather only read the local symbols once, and we
- would rather not keep them in memory, we handle all the
- relocations for a single input file at the same time.
-
- Unfortunately, there is no way to know the total number of local
- symbols until we have seen all of them, and the local symbol
- indices precede the global symbol indices. This means that when
- we are generating relocateable output, and we see a reloc against
- a global symbol, we can not know the symbol index until we have
- finished examining all the local symbols to see which ones we are
- going to output. To deal with this, we keep the relocations in
- memory, and don't output them until the end of the link. This is
- an unfortunate waste of memory, but I don't see a good way around
- it. Fortunately, it only happens when performing a relocateable
- link, which is not the common case. FIXME: If keep_memory is set
- we could write the relocs out and then read them again; I don't
- know how bad the memory loss will be. */
-
- for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
- sub->output_has_begun = false;
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- for (p = o->link_order_head; p != NULL; p = p->next)
- {
- if (p->type == bfd_indirect_link_order
- && (bfd_get_flavour ((sub = p->u.indirect.section->owner))
- == bfd_target_elf_flavour)
- && elf_elfheader (sub)->e_ident[EI_CLASS] == bed->s->elfclass)
- {
- if (! sub->output_has_begun)
- {
- if (! elf_link_input_bfd (&finfo, sub))
- goto error_return;
- sub->output_has_begun = true;
- }
- }
- else if (p->type == bfd_section_reloc_link_order
- || p->type == bfd_symbol_reloc_link_order)
- {
- if (! elf_reloc_link_order (abfd, info, o, p))
- goto error_return;
- }
- else
- {
- if (! _bfd_default_link_order (abfd, info, o, p))
- goto error_return;
- }
- }
- }
-
- /* Output any global symbols that got converted to local in a
- version script or due to symbol visibility. We do this in a
- separate step since ELF requires all local symbols to appear
- prior to any global symbols. FIXME: We should only do this if
- some global symbols were, in fact, converted to become local.
- FIXME: Will this work correctly with the Irix 5 linker? */
- eoinfo.failed = false;
- eoinfo.finfo = &finfo;
- eoinfo.localsyms = true;
- elf_link_hash_traverse (elf_hash_table (info), elf_link_output_extsym,
- (PTR) &eoinfo);
- if (eoinfo.failed)
- return false;
-
- /* That wrote out all the local symbols. Finish up the symbol table
- with the global symbols. Even if we want to strip everything we
- can, we still need to deal with those global symbols that got
- converted to local in a version script. */
-
- /* The sh_info field records the index of the first non local symbol. */
- symtab_hdr->sh_info = bfd_get_symcount (abfd);
-
- if (dynamic
- && finfo.dynsym_sec->output_section != bfd_abs_section_ptr)
- {
- Elf_Internal_Sym sym;
- Elf_External_Sym *dynsym =
- (Elf_External_Sym *) finfo.dynsym_sec->contents;
- long last_local = 0;
-
- /* Write out the section symbols for the output sections. */
- if (info->shared)
- {
- asection *s;
-
- sym.st_size = 0;
- sym.st_name = 0;
- sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
- sym.st_other = 0;
-
- for (s = abfd->sections; s != NULL; s = s->next)
- {
- int indx;
- Elf_External_Sym *dest;
-
- indx = elf_section_data (s)->this_idx;
- BFD_ASSERT (indx > 0);
- sym.st_shndx = indx;
- sym.st_value = s->vma;
- dest = dynsym + elf_section_data (s)->dynindx;
- elf_swap_symbol_out (abfd, &sym, (PTR) dest, (PTR) 0);
- }
-
- last_local = bfd_count_sections (abfd);
- }
-
- /* Write out the local dynsyms. */
- if (elf_hash_table (info)->dynlocal)
- {
- struct elf_link_local_dynamic_entry *e;
- for (e = elf_hash_table (info)->dynlocal; e ; e = e->next)
- {
- asection *s;
- Elf_External_Sym *dest;
-
- sym.st_size = e->isym.st_size;
- sym.st_other = e->isym.st_other;
-
- /* Copy the internal symbol as is.
- Note that we saved a word of storage and overwrote
- the original st_name with the dynstr_index. */
- sym = e->isym;
-
- if (e->isym.st_shndx != SHN_UNDEF
- && (e->isym.st_shndx < SHN_LORESERVE
- || e->isym.st_shndx > SHN_HIRESERVE))
- {
- s = bfd_section_from_elf_index (e->input_bfd,
- e->isym.st_shndx);
-
- sym.st_shndx =
- elf_section_data (s->output_section)->this_idx;
- sym.st_value = (s->output_section->vma
- + s->output_offset
- + e->isym.st_value);
- }
-
- if (last_local < e->dynindx)
- last_local = e->dynindx;
-
- dest = dynsym + e->dynindx;
- elf_swap_symbol_out (abfd, &sym, (PTR) dest, (PTR) 0);
- }
- }
-
- elf_section_data (finfo.dynsym_sec->output_section)->this_hdr.sh_info =
- last_local + 1;
- }
-
- /* We get the global symbols from the hash table. */
- eoinfo.failed = false;
- eoinfo.localsyms = false;
- eoinfo.finfo = &finfo;
- elf_link_hash_traverse (elf_hash_table (info), elf_link_output_extsym,
- (PTR) &eoinfo);
- if (eoinfo.failed)
- return false;
-
- /* If backend needs to output some symbols not present in the hash
- table, do it now. */
- if (bed->elf_backend_output_arch_syms)
- {
- typedef boolean (*out_sym_func) PARAMS ((PTR, const char *,
- Elf_Internal_Sym *,
- asection *));
-
- if (! ((*bed->elf_backend_output_arch_syms)
- (abfd, info, (PTR) &finfo, (out_sym_func) elf_link_output_sym)))
- return false;
- }
-
- /* Flush all symbols to the file. */
- if (! elf_link_flush_output_syms (&finfo))
- return false;
-
- /* Now we know the size of the symtab section. */
- off += symtab_hdr->sh_size;
-
- /* Finish up and write out the symbol string table (.strtab)
- section. */
- symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr;
- /* sh_name was set in prep_headers. */
- symstrtab_hdr->sh_type = SHT_STRTAB;
- symstrtab_hdr->sh_flags = 0;
- symstrtab_hdr->sh_addr = 0;
- symstrtab_hdr->sh_size = _bfd_stringtab_size (finfo.symstrtab);
- symstrtab_hdr->sh_entsize = 0;
- symstrtab_hdr->sh_link = 0;
- symstrtab_hdr->sh_info = 0;
- /* sh_offset is set just below. */
- symstrtab_hdr->sh_addralign = 1;
-
- off = _bfd_elf_assign_file_position_for_section (symstrtab_hdr, off, true);
- elf_tdata (abfd)->next_file_pos = off;
-
- if (bfd_get_symcount (abfd) > 0)
- {
- if (bfd_seek (abfd, symstrtab_hdr->sh_offset, SEEK_SET) != 0
- || ! _bfd_stringtab_emit (abfd, finfo.symstrtab))
- return false;
- }
-
- /* Adjust the relocs to have the correct symbol indices. */
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- if ((o->flags & SEC_RELOC) == 0)
- continue;
-
- elf_link_adjust_relocs (abfd, &elf_section_data (o)->rel_hdr,
- elf_section_data (o)->rel_count,
- elf_section_data (o)->rel_hashes);
- if (elf_section_data (o)->rel_hdr2 != NULL)
- elf_link_adjust_relocs (abfd, elf_section_data (o)->rel_hdr2,
- elf_section_data (o)->rel_count2,
- (elf_section_data (o)->rel_hashes
- + elf_section_data (o)->rel_count));
-
- /* Set the reloc_count field to 0 to prevent write_relocs from
- trying to swap the relocs out itself. */
- o->reloc_count = 0;
- }
-
- if (dynamic && info->combreloc && dynobj != NULL)
- relativecount = elf_link_sort_relocs (abfd, info, &reldyn);
-
- /* If we are linking against a dynamic object, or generating a
- shared library, finish up the dynamic linking information. */
- if (dynamic)
- {
- Elf_External_Dyn *dyncon, *dynconend;
-
- /* Fix up .dynamic entries. */
- o = bfd_get_section_by_name (dynobj, ".dynamic");
- BFD_ASSERT (o != NULL);
-
- dyncon = (Elf_External_Dyn *) o->contents;
- dynconend = (Elf_External_Dyn *) (o->contents + o->_raw_size);
- for (; dyncon < dynconend; dyncon++)
- {
- Elf_Internal_Dyn dyn;
- const char *name;
- unsigned int type;
-
- elf_swap_dyn_in (dynobj, dyncon, &dyn);
-
- switch (dyn.d_tag)
- {
- default:
- break;
- case DT_NULL:
- if (relativecount > 0 && dyncon + 1 < dynconend)
- {
- switch (elf_section_data (reldyn)->this_hdr.sh_type)
- {
- case SHT_REL: dyn.d_tag = DT_RELCOUNT; break;
- case SHT_RELA: dyn.d_tag = DT_RELACOUNT; break;
- default: break;
- }
- if (dyn.d_tag != DT_NULL)
- {
- dyn.d_un.d_val = relativecount;
- elf_swap_dyn_out (dynobj, &dyn, dyncon);
- relativecount = 0;
- }
- }
- break;
- case DT_INIT:
- name = info->init_function;
- goto get_sym;
- case DT_FINI:
- name = info->fini_function;
- get_sym:
- {
- struct elf_link_hash_entry *h;
-
- h = elf_link_hash_lookup (elf_hash_table (info), name,
- false, false, true);
- if (h != NULL
- && (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak))
- {
- dyn.d_un.d_val = h->root.u.def.value;
- o = h->root.u.def.section;
- if (o->output_section != NULL)
- dyn.d_un.d_val += (o->output_section->vma
- + o->output_offset);
- else
- {
- /* The symbol is imported from another shared
- library and does not apply to this one. */
- dyn.d_un.d_val = 0;
- }
-
- elf_swap_dyn_out (dynobj, &dyn, dyncon);
- }
- }
- break;
-
- case DT_PREINIT_ARRAYSZ:
- name = ".preinit_array";
- goto get_size;
- case DT_INIT_ARRAYSZ:
- name = ".init_array";
- goto get_size;
- case DT_FINI_ARRAYSZ:
- name = ".fini_array";
- get_size:
- o = bfd_get_section_by_name (abfd, name);
- if (o == NULL)
- {
- (*_bfd_error_handler)
- (_("%s: could not find output section %s"),
- bfd_get_filename (abfd), name);
- goto error_return;
- }
- if (o->_raw_size == 0)
- (*_bfd_error_handler)
- (_("warning: %s section has zero size"), name);
- dyn.d_un.d_val = o->_raw_size;
- elf_swap_dyn_out (dynobj, &dyn, dyncon);
- break;
-
- case DT_PREINIT_ARRAY:
- name = ".preinit_array";
- goto get_vma;
- case DT_INIT_ARRAY:
- name = ".init_array";
- goto get_vma;
- case DT_FINI_ARRAY:
- name = ".fini_array";
- goto get_vma;
-
- case DT_HASH:
- name = ".hash";
- goto get_vma;
- case DT_STRTAB:
- name = ".dynstr";
- goto get_vma;
- case DT_SYMTAB:
- name = ".dynsym";
- goto get_vma;
- case DT_VERDEF:
- name = ".gnu.version_d";
- goto get_vma;
- case DT_VERNEED:
- name = ".gnu.version_r";
- goto get_vma;
- case DT_VERSYM:
- name = ".gnu.version";
- get_vma:
- o = bfd_get_section_by_name (abfd, name);
- if (o == NULL)
- {
- (*_bfd_error_handler)
- (_("%s: could not find output section %s"),
- bfd_get_filename (abfd), name);
- goto error_return;
- }
- dyn.d_un.d_ptr = o->vma;
- elf_swap_dyn_out (dynobj, &dyn, dyncon);
- break;
-
- case DT_REL:
- case DT_RELA:
- case DT_RELSZ:
- case DT_RELASZ:
- if (dyn.d_tag == DT_REL || dyn.d_tag == DT_RELSZ)
- type = SHT_REL;
- else
- type = SHT_RELA;
- dyn.d_un.d_val = 0;
- for (i = 1; i < elf_numsections (abfd); i++)
- {
- Elf_Internal_Shdr *hdr;
-
- hdr = elf_elfsections (abfd)[i];
- if (hdr->sh_type == type
- && (hdr->sh_flags & SHF_ALLOC) != 0)
- {
- if (dyn.d_tag == DT_RELSZ || dyn.d_tag == DT_RELASZ)
- dyn.d_un.d_val += hdr->sh_size;
- else
- {
- if (dyn.d_un.d_val == 0
- || hdr->sh_addr < dyn.d_un.d_val)
- dyn.d_un.d_val = hdr->sh_addr;
- }
- }
- }
- elf_swap_dyn_out (dynobj, &dyn, dyncon);
- break;
- }
- }
- }
-
- /* If we have created any dynamic sections, then output them. */
- if (dynobj != NULL)
- {
- if (! (*bed->elf_backend_finish_dynamic_sections) (abfd, info))
- goto error_return;
-
- for (o = dynobj->sections; o != NULL; o = o->next)
- {
- if ((o->flags & SEC_HAS_CONTENTS) == 0
- || o->_raw_size == 0
- || o->output_section == bfd_abs_section_ptr)
- continue;
- if ((o->flags & SEC_LINKER_CREATED) == 0)
- {
- /* At this point, we are only interested in sections
- created by elf_link_create_dynamic_sections. */
- continue;
- }
- if ((elf_section_data (o->output_section)->this_hdr.sh_type
- != SHT_STRTAB)
- || strcmp (bfd_get_section_name (abfd, o), ".dynstr") != 0)
- {
- if (! bfd_set_section_contents (abfd, o->output_section,
- o->contents,
- (file_ptr) o->output_offset,
- o->_raw_size))
- goto error_return;
- }
- else
- {
- /* The contents of the .dynstr section are actually in a
- stringtab. */
- off = elf_section_data (o->output_section)->this_hdr.sh_offset;
- if (bfd_seek (abfd, off, SEEK_SET) != 0
- || ! _bfd_elf_strtab_emit (abfd,
- elf_hash_table (info)->dynstr))
- goto error_return;
- }
- }
- }
-
- if (info->relocateable)
- {
- boolean failed = false;
-
- bfd_map_over_sections (abfd, bfd_elf_set_group_contents, &failed);
- if (failed)
- goto error_return;
- }
-
- /* If we have optimized stabs strings, output them. */
- if (elf_hash_table (info)->stab_info != NULL)
- {
- if (! _bfd_write_stab_strings (abfd, &elf_hash_table (info)->stab_info))
- goto error_return;
- }
-
- if (info->eh_frame_hdr && elf_hash_table (info)->dynobj)
- {
- o = bfd_get_section_by_name (elf_hash_table (info)->dynobj,
- ".eh_frame_hdr");
- if (o
- && (elf_section_data (o)->sec_info_type
- == ELF_INFO_TYPE_EH_FRAME_HDR))
- {
- if (! _bfd_elf_write_section_eh_frame_hdr (abfd, o))
- goto error_return;
- }
- }
-
- if (finfo.symstrtab != NULL)
- _bfd_stringtab_free (finfo.symstrtab);
- if (finfo.contents != NULL)
- free (finfo.contents);
- if (finfo.external_relocs != NULL)
- free (finfo.external_relocs);
- if (finfo.internal_relocs != NULL)
- free (finfo.internal_relocs);
- if (finfo.external_syms != NULL)
- free (finfo.external_syms);
- if (finfo.locsym_shndx != NULL)
- free (finfo.locsym_shndx);
- if (finfo.internal_syms != NULL)
- free (finfo.internal_syms);
- if (finfo.indices != NULL)
- free (finfo.indices);
- if (finfo.sections != NULL)
- free (finfo.sections);
- if (finfo.symbuf != NULL)
- free (finfo.symbuf);
- if (finfo.symshndxbuf != NULL)
- free (finfo.symbuf);
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- if ((o->flags & SEC_RELOC) != 0
- && elf_section_data (o)->rel_hashes != NULL)
- free (elf_section_data (o)->rel_hashes);
- }
-
- elf_tdata (abfd)->linker = true;
-
- return true;
-
- error_return:
- if (finfo.symstrtab != NULL)
- _bfd_stringtab_free (finfo.symstrtab);
- if (finfo.contents != NULL)
- free (finfo.contents);
- if (finfo.external_relocs != NULL)
- free (finfo.external_relocs);
- if (finfo.internal_relocs != NULL)
- free (finfo.internal_relocs);
- if (finfo.external_syms != NULL)
- free (finfo.external_syms);
- if (finfo.locsym_shndx != NULL)
- free (finfo.locsym_shndx);
- if (finfo.internal_syms != NULL)
- free (finfo.internal_syms);
- if (finfo.indices != NULL)
- free (finfo.indices);
- if (finfo.sections != NULL)
- free (finfo.sections);
- if (finfo.symbuf != NULL)
- free (finfo.symbuf);
- if (finfo.symshndxbuf != NULL)
- free (finfo.symbuf);
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- if ((o->flags & SEC_RELOC) != 0
- && elf_section_data (o)->rel_hashes != NULL)
- free (elf_section_data (o)->rel_hashes);
- }
-
- return false;
-}
-
-/* Add a symbol to the output symbol table. */
-
-static boolean
-elf_link_output_sym (finfo, name, elfsym, input_sec)
- struct elf_final_link_info *finfo;
- const char *name;
- Elf_Internal_Sym *elfsym;
- asection *input_sec;
-{
- Elf_External_Sym *dest;
- Elf_External_Sym_Shndx *destshndx;
-
- boolean (*output_symbol_hook) PARAMS ((bfd *,
- struct bfd_link_info *info,
- const char *,
- Elf_Internal_Sym *,
- asection *));
-
- output_symbol_hook = get_elf_backend_data (finfo->output_bfd)->
- elf_backend_link_output_symbol_hook;
- if (output_symbol_hook != NULL)
- {
- if (! ((*output_symbol_hook)
- (finfo->output_bfd, finfo->info, name, elfsym, input_sec)))
- return false;
- }
-
- if (name == (const char *) NULL || *name == '\0')
- elfsym->st_name = 0;
- else if (input_sec->flags & SEC_EXCLUDE)
- elfsym->st_name = 0;
- else
- {
- elfsym->st_name = (unsigned long) _bfd_stringtab_add (finfo->symstrtab,
- name, true, false);
- if (elfsym->st_name == (unsigned long) -1)
- return false;
- }
-
- if (finfo->symbuf_count >= finfo->symbuf_size)
- {
- if (! elf_link_flush_output_syms (finfo))
- return false;
- }
-
- dest = finfo->symbuf + finfo->symbuf_count;
- destshndx = finfo->symshndxbuf;
- if (destshndx != NULL)
- destshndx += finfo->symbuf_count;
- elf_swap_symbol_out (finfo->output_bfd, elfsym, (PTR) dest, (PTR) destshndx);
- ++finfo->symbuf_count;
-
- ++ bfd_get_symcount (finfo->output_bfd);
-
- return true;
-}
-
-/* Flush the output symbols to the file. */
-
-static boolean
-elf_link_flush_output_syms (finfo)
- struct elf_final_link_info *finfo;
-{
- if (finfo->symbuf_count > 0)
- {
- Elf_Internal_Shdr *hdr;
- file_ptr pos;
- bfd_size_type amt;
-
- hdr = &elf_tdata (finfo->output_bfd)->symtab_hdr;
- pos = hdr->sh_offset + hdr->sh_size;
- amt = finfo->symbuf_count * sizeof (Elf_External_Sym);
- if (bfd_seek (finfo->output_bfd, pos, SEEK_SET) != 0
- || bfd_bwrite ((PTR) finfo->symbuf, amt, finfo->output_bfd) != amt)
- return false;
-
- hdr->sh_size += amt;
-
- if (finfo->symshndxbuf != NULL)
- {
- hdr = &elf_tdata (finfo->output_bfd)->symtab_shndx_hdr;
- pos = hdr->sh_offset + hdr->sh_size;
- amt = finfo->symbuf_count * sizeof (Elf_External_Sym_Shndx);
- if (bfd_seek (finfo->output_bfd, pos, SEEK_SET) != 0
- || (bfd_bwrite ((PTR) finfo->symshndxbuf, amt, finfo->output_bfd)
- != amt))
- return false;
-
- hdr->sh_size += amt;
- }
-
- finfo->symbuf_count = 0;
- }
-
- return true;
-}
-
-/* Adjust all external symbols pointing into SEC_MERGE sections
- to reflect the object merging within the sections. */
-
-static boolean
-elf_link_sec_merge_syms (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- asection *sec;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if ((h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && ((sec = h->root.u.def.section)->flags & SEC_MERGE)
- && elf_section_data (sec)->sec_info_type == ELF_INFO_TYPE_MERGE)
- {
- bfd *output_bfd = (bfd *) data;
-
- h->root.u.def.value =
- _bfd_merged_section_offset (output_bfd,
- &h->root.u.def.section,
- elf_section_data (sec)->sec_info,
- h->root.u.def.value, (bfd_vma) 0);
- }
-
- return true;
-}
-
-/* For DSOs loaded in via a DT_NEEDED entry, emulate ld.so in
- allowing an unsatisfied unversioned symbol in the DSO to match a
- versioned symbol that would normally require an explicit version. */
-
-static boolean
-elf_link_check_versioned_symbol (info, h)
- struct bfd_link_info *info;
- struct elf_link_hash_entry *h;
-{
- bfd *undef_bfd = h->root.u.undef.abfd;
- struct elf_link_loaded_list *loaded;
-
- if ((undef_bfd->flags & DYNAMIC) == 0
- || info->hash->creator->flavour != bfd_target_elf_flavour
- || elf_dt_soname (h->root.u.undef.abfd) == NULL)
- return false;
-
- for (loaded = elf_hash_table (info)->loaded;
- loaded != NULL;
- loaded = loaded->next)
- {
- bfd *input;
- Elf_Internal_Shdr *hdr;
- bfd_size_type symcount;
- bfd_size_type extsymcount;
- bfd_size_type extsymoff;
- Elf_Internal_Shdr *versymhdr;
- Elf_Internal_Sym *isym;
- Elf_Internal_Sym *isymend;
- Elf_Internal_Sym *isymbuf;
- Elf_External_Versym *ever;
- Elf_External_Versym *extversym;
-
- input = loaded->abfd;
-
- /* We check each DSO for a possible hidden versioned definition. */
- if (input == undef_bfd
- || (input->flags & DYNAMIC) == 0
- || elf_dynversym (input) == 0)
- continue;
-
- hdr = &elf_tdata (input)->dynsymtab_hdr;
-
- symcount = hdr->sh_size / sizeof (Elf_External_Sym);
- if (elf_bad_symtab (input))
- {
- extsymcount = symcount;
- extsymoff = 0;
- }
- else
- {
- extsymcount = symcount - hdr->sh_info;
- extsymoff = hdr->sh_info;
- }
-
- if (extsymcount == 0)
- continue;
-
- isymbuf = bfd_elf_get_elf_syms (input, hdr, extsymcount, extsymoff,
- NULL, NULL, NULL);
- if (isymbuf == NULL)
- return false;
-
- /* Read in any version definitions. */
- versymhdr = &elf_tdata (input)->dynversym_hdr;
- extversym = (Elf_External_Versym *) bfd_malloc (versymhdr->sh_size);
- if (extversym == NULL)
- goto error_ret;
-
- if (bfd_seek (input, versymhdr->sh_offset, SEEK_SET) != 0
- || (bfd_bread ((PTR) extversym, versymhdr->sh_size, input)
- != versymhdr->sh_size))
- {
- free (extversym);
- error_ret:
- free (isymbuf);
- return false;
- }
-
- ever = extversym + extsymoff;
- isymend = isymbuf + extsymcount;
- for (isym = isymbuf; isym < isymend; isym++, ever++)
- {
- const char *name;
- Elf_Internal_Versym iver;
-
- if (ELF_ST_BIND (isym->st_info) == STB_LOCAL
- || isym->st_shndx == SHN_UNDEF)
- continue;
-
- name = bfd_elf_string_from_elf_section (input,
- hdr->sh_link,
- isym->st_name);
- if (strcmp (name, h->root.root.string) != 0)
- continue;
-
- _bfd_elf_swap_versym_in (input, ever, &iver);
-
- if ((iver.vs_vers & VERSYM_HIDDEN) == 0)
- {
- /* If we have a non-hidden versioned sym, then it should
- have provided a definition for the undefined sym. */
- abort ();
- }
-
- if ((iver.vs_vers & VERSYM_VERSION) == 2)
- {
- /* This is the oldest (default) sym. We can use it. */
- free (extversym);
- free (isymbuf);
- return true;
- }
- }
-
- free (extversym);
- free (isymbuf);
- }
-
- return false;
-}
-
-/* Add an external symbol to the symbol table. This is called from
- the hash table traversal routine. When generating a shared object,
- we go through the symbol table twice. The first time we output
- anything that might have been forced to local scope in a version
- script. The second time we output the symbols that are still
- global symbols. */
-
-static boolean
-elf_link_output_extsym (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- struct elf_outext_info *eoinfo = (struct elf_outext_info *) data;
- struct elf_final_link_info *finfo = eoinfo->finfo;
- boolean strip;
- Elf_Internal_Sym sym;
- asection *input_sec;
-
- if (h->root.type == bfd_link_hash_warning)
- {
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- if (h->root.type == bfd_link_hash_new)
- return true;
- }
-
- /* Decide whether to output this symbol in this pass. */
- if (eoinfo->localsyms)
- {
- if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
- return true;
- }
- else
- {
- if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0)
- return true;
- }
-
- /* If we are not creating a shared library, and this symbol is
- referenced by a shared library but is not defined anywhere, then
- warn that it is undefined. If we do not do this, the runtime
- linker will complain that the symbol is undefined when the
- program is run. We don't have to worry about symbols that are
- referenced by regular files, because we will already have issued
- warnings for them. */
- if (! finfo->info->relocateable
- && ! finfo->info->allow_shlib_undefined
- && ! finfo->info->shared
- && h->root.type == bfd_link_hash_undefined
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0
- && ! elf_link_check_versioned_symbol (finfo->info, h))
- {
- if (! ((*finfo->info->callbacks->undefined_symbol)
- (finfo->info, h->root.root.string, h->root.u.undef.abfd,
- (asection *) NULL, (bfd_vma) 0, true)))
- {
- eoinfo->failed = true;
- return false;
- }
- }
-
- /* We don't want to output symbols that have never been mentioned by
- a regular file, or that we have been told to strip. However, if
- h->indx is set to -2, the symbol is used by a reloc and we must
- output it. */
- if (h->indx == -2)
- strip = false;
- else if (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
- || (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0)
- strip = true;
- else if (finfo->info->strip == strip_all
- || (finfo->info->strip == strip_some
- && bfd_hash_lookup (finfo->info->keep_hash,
- h->root.root.string,
- false, false) == NULL))
- strip = true;
- else
- strip = false;
-
- /* If we're stripping it, and it's not a dynamic symbol, there's
- nothing else to do unless it is a forced local symbol. */
- if (strip
- && h->dynindx == -1
- && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
- return true;
-
- sym.st_value = 0;
- sym.st_size = h->size;
- sym.st_other = h->other;
- if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0)
- sym.st_info = ELF_ST_INFO (STB_LOCAL, h->type);
- else if (h->root.type == bfd_link_hash_undefweak
- || h->root.type == bfd_link_hash_defweak)
- sym.st_info = ELF_ST_INFO (STB_WEAK, h->type);
- else
- sym.st_info = ELF_ST_INFO (STB_GLOBAL, h->type);
-
- switch (h->root.type)
- {
- default:
- case bfd_link_hash_new:
- case bfd_link_hash_warning:
- abort ();
- return false;
-
- case bfd_link_hash_undefined:
- case bfd_link_hash_undefweak:
- input_sec = bfd_und_section_ptr;
- sym.st_shndx = SHN_UNDEF;
- break;
-
- case bfd_link_hash_defined:
- case bfd_link_hash_defweak:
- {
- input_sec = h->root.u.def.section;
- if (input_sec->output_section != NULL)
- {
- sym.st_shndx =
- _bfd_elf_section_from_bfd_section (finfo->output_bfd,
- input_sec->output_section);
- if (sym.st_shndx == SHN_BAD)
- {
- (*_bfd_error_handler)
- (_("%s: could not find output section %s for input section %s"),
- bfd_get_filename (finfo->output_bfd),
- input_sec->output_section->name,
- input_sec->name);
- eoinfo->failed = true;
- return false;
- }
-
- /* ELF symbols in relocateable files are section relative,
- but in nonrelocateable files they are virtual
- addresses. */
- sym.st_value = h->root.u.def.value + input_sec->output_offset;
- if (! finfo->info->relocateable)
- {
- sym.st_value += input_sec->output_section->vma;
- if (h->type == STT_TLS)
- {
- /* STT_TLS symbols are relative to PT_TLS segment
- base. */
- BFD_ASSERT (finfo->first_tls_sec != NULL);
- sym.st_value -= finfo->first_tls_sec->vma;
- }
- }
- }
- else
- {
- BFD_ASSERT (input_sec->owner == NULL
- || (input_sec->owner->flags & DYNAMIC) != 0);
- sym.st_shndx = SHN_UNDEF;
- input_sec = bfd_und_section_ptr;
- }
- }
- break;
-
- case bfd_link_hash_common:
- input_sec = h->root.u.c.p->section;
- sym.st_shndx = SHN_COMMON;
- sym.st_value = 1 << h->root.u.c.p->alignment_power;
- break;
-
- case bfd_link_hash_indirect:
- /* These symbols are created by symbol versioning. They point
- to the decorated version of the name. For example, if the
- symbol foo@@GNU_1.2 is the default, which should be used when
- foo is used with no version, then we add an indirect symbol
- foo which points to foo@@GNU_1.2. We ignore these symbols,
- since the indirected symbol is already in the hash table. */
- return true;
- }
-
- /* Give the processor backend a chance to tweak the symbol value,
- and also to finish up anything that needs to be done for this
- symbol. FIXME: Not calling elf_backend_finish_dynamic_symbol for
- forced local syms when non-shared is due to a historical quirk. */
- if ((h->dynindx != -1
- || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0)
- && (finfo->info->shared
- || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
- && elf_hash_table (finfo->info)->dynamic_sections_created)
- {
- struct elf_backend_data *bed;
-
- bed = get_elf_backend_data (finfo->output_bfd);
- if (! ((*bed->elf_backend_finish_dynamic_symbol)
- (finfo->output_bfd, finfo->info, h, &sym)))
- {
- eoinfo->failed = true;
- return false;
- }
- }
-
- /* If we are marking the symbol as undefined, and there are no
- non-weak references to this symbol from a regular object, then
- mark the symbol as weak undefined; if there are non-weak
- references, mark the symbol as strong. We can't do this earlier,
- because it might not be marked as undefined until the
- finish_dynamic_symbol routine gets through with it. */
- if (sym.st_shndx == SHN_UNDEF
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) != 0
- && (ELF_ST_BIND (sym.st_info) == STB_GLOBAL
- || ELF_ST_BIND (sym.st_info) == STB_WEAK))
- {
- int bindtype;
-
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR_NONWEAK) != 0)
- bindtype = STB_GLOBAL;
- else
- bindtype = STB_WEAK;
- sym.st_info = ELF_ST_INFO (bindtype, ELF_ST_TYPE (sym.st_info));
- }
-
- /* If a symbol is not defined locally, we clear the visibility field. */
- if (! finfo->info->relocateable
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- sym.st_other &= ~ ELF_ST_VISIBILITY (-1);
-
- /* If this symbol should be put in the .dynsym section, then put it
- there now. We already know the symbol index. We also fill in
- the entry in the .hash section. */
- if (h->dynindx != -1
- && elf_hash_table (finfo->info)->dynamic_sections_created)
- {
- size_t bucketcount;
- size_t bucket;
- size_t hash_entry_size;
- bfd_byte *bucketpos;
- bfd_vma chain;
- Elf_External_Sym *esym;
-
- sym.st_name = h->dynstr_index;
- esym = (Elf_External_Sym *) finfo->dynsym_sec->contents + h->dynindx;
- elf_swap_symbol_out (finfo->output_bfd, &sym, (PTR) esym, (PTR) 0);
-
- bucketcount = elf_hash_table (finfo->info)->bucketcount;
- bucket = h->elf_hash_value % bucketcount;
- hash_entry_size
- = elf_section_data (finfo->hash_sec)->this_hdr.sh_entsize;
- bucketpos = ((bfd_byte *) finfo->hash_sec->contents
- + (bucket + 2) * hash_entry_size);
- chain = bfd_get (8 * hash_entry_size, finfo->output_bfd, bucketpos);
- bfd_put (8 * hash_entry_size, finfo->output_bfd, (bfd_vma) h->dynindx,
- bucketpos);
- bfd_put (8 * hash_entry_size, finfo->output_bfd, chain,
- ((bfd_byte *) finfo->hash_sec->contents
- + (bucketcount + 2 + h->dynindx) * hash_entry_size));
-
- if (finfo->symver_sec != NULL && finfo->symver_sec->contents != NULL)
- {
- Elf_Internal_Versym iversym;
- Elf_External_Versym *eversym;
-
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- {
- if (h->verinfo.verdef == NULL)
- iversym.vs_vers = 0;
- else
- iversym.vs_vers = h->verinfo.verdef->vd_exp_refno + 1;
- }
- else
- {
- if (h->verinfo.vertree == NULL)
- iversym.vs_vers = 1;
- else
- iversym.vs_vers = h->verinfo.vertree->vernum + 1;
- }
-
- if ((h->elf_link_hash_flags & ELF_LINK_HIDDEN) != 0)
- iversym.vs_vers |= VERSYM_HIDDEN;
-
- eversym = (Elf_External_Versym *) finfo->symver_sec->contents;
- eversym += h->dynindx;
- _bfd_elf_swap_versym_out (finfo->output_bfd, &iversym, eversym);
- }
- }
-
- /* If we're stripping it, then it was just a dynamic symbol, and
- there's nothing else to do. */
- if (strip || (input_sec->flags & SEC_EXCLUDE) != 0)
- return true;
-
- h->indx = bfd_get_symcount (finfo->output_bfd);
-
- if (! elf_link_output_sym (finfo, h->root.root.string, &sym, input_sec))
- {
- eoinfo->failed = true;
- return false;
- }
-
- return true;
-}
-
-/* Copy the relocations indicated by the INTERNAL_RELOCS (which
- originated from the section given by INPUT_REL_HDR) to the
- OUTPUT_BFD. */
-
-static boolean
-elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
- internal_relocs)
- bfd *output_bfd;
- asection *input_section;
- Elf_Internal_Shdr *input_rel_hdr;
- Elf_Internal_Rela *internal_relocs;
-{
- Elf_Internal_Rela *irela;
- Elf_Internal_Rela *irelaend;
- Elf_Internal_Shdr *output_rel_hdr;
- asection *output_section;
- unsigned int *rel_countp = NULL;
- struct elf_backend_data *bed;
- bfd_size_type amt;
-
- output_section = input_section->output_section;
- output_rel_hdr = NULL;
-
- if (elf_section_data (output_section)->rel_hdr.sh_entsize
- == input_rel_hdr->sh_entsize)
- {
- output_rel_hdr = &elf_section_data (output_section)->rel_hdr;
- rel_countp = &elf_section_data (output_section)->rel_count;
- }
- else if (elf_section_data (output_section)->rel_hdr2
- && (elf_section_data (output_section)->rel_hdr2->sh_entsize
- == input_rel_hdr->sh_entsize))
- {
- output_rel_hdr = elf_section_data (output_section)->rel_hdr2;
- rel_countp = &elf_section_data (output_section)->rel_count2;
- }
- else
- {
- (*_bfd_error_handler)
- (_("%s: relocation size mismatch in %s section %s"),
- bfd_get_filename (output_bfd),
- bfd_archive_filename (input_section->owner),
- input_section->name);
- bfd_set_error (bfd_error_wrong_object_format);
- return false;
- }
-
- bed = get_elf_backend_data (output_bfd);
- irela = internal_relocs;
- irelaend = irela + (NUM_SHDR_ENTRIES (input_rel_hdr)
- * bed->s->int_rels_per_ext_rel);
-
- if (input_rel_hdr->sh_entsize == sizeof (Elf_External_Rel))
- {
- Elf_External_Rel *erel;
- Elf_Internal_Rel *irel;
-
- amt = bed->s->int_rels_per_ext_rel * sizeof (Elf_Internal_Rel);
- irel = (Elf_Internal_Rel *) bfd_zmalloc (amt);
- if (irel == NULL)
- {
- (*_bfd_error_handler) (_("Error: out of memory"));
- abort ();
- }
-
- erel = ((Elf_External_Rel *) output_rel_hdr->contents + *rel_countp);
- for (; irela < irelaend; irela += bed->s->int_rels_per_ext_rel, erel++)
- {
- unsigned int i;
-
- for (i = 0; i < bed->s->int_rels_per_ext_rel; i++)
- {
- irel[i].r_offset = irela[i].r_offset;
- irel[i].r_info = irela[i].r_info;
- BFD_ASSERT (irela[i].r_addend == 0);
- }
-
- if (bed->s->swap_reloc_out)
- (*bed->s->swap_reloc_out) (output_bfd, irel, (PTR) erel);
- else
- elf_swap_reloc_out (output_bfd, irel, erel);
- }
-
- free (irel);
- }
- else
- {
- Elf_External_Rela *erela;
-
- BFD_ASSERT (input_rel_hdr->sh_entsize == sizeof (Elf_External_Rela));
-
- erela = ((Elf_External_Rela *) output_rel_hdr->contents + *rel_countp);
- for (; irela < irelaend; irela += bed->s->int_rels_per_ext_rel, erela++)
- if (bed->s->swap_reloca_out)
- (*bed->s->swap_reloca_out) (output_bfd, irela, (PTR) erela);
- else
- elf_swap_reloca_out (output_bfd, irela, erela);
- }
-
- /* Bump the counter, so that we know where to add the next set of
- relocations. */
- *rel_countp += NUM_SHDR_ENTRIES (input_rel_hdr);
-
- return true;
-}
-
-/* Link an input file into the linker output file. This function
- handles all the sections and relocations of the input file at once.
- This is so that we only have to read the local symbols once, and
- don't have to keep them in memory. */
-
-static boolean
-elf_link_input_bfd (finfo, input_bfd)
- struct elf_final_link_info *finfo;
- bfd *input_bfd;
-{
- boolean (*relocate_section) PARAMS ((bfd *, struct bfd_link_info *,
- bfd *, asection *, bfd_byte *,
- Elf_Internal_Rela *,
- Elf_Internal_Sym *, asection **));
- bfd *output_bfd;
- Elf_Internal_Shdr *symtab_hdr;
- size_t locsymcount;
- size_t extsymoff;
- Elf_Internal_Sym *isymbuf;
- Elf_Internal_Sym *isym;
- Elf_Internal_Sym *isymend;
- long *pindex;
- asection **ppsection;
- asection *o;
- struct elf_backend_data *bed;
- boolean emit_relocs;
- struct elf_link_hash_entry **sym_hashes;
-
- output_bfd = finfo->output_bfd;
- bed = get_elf_backend_data (output_bfd);
- relocate_section = bed->elf_backend_relocate_section;
-
- /* If this is a dynamic object, we don't want to do anything here:
- we don't want the local symbols, and we don't want the section
- contents. */
- if ((input_bfd->flags & DYNAMIC) != 0)
- return true;
-
- emit_relocs = (finfo->info->relocateable
- || finfo->info->emitrelocations
- || bed->elf_backend_emit_relocs);
-
- symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
- if (elf_bad_symtab (input_bfd))
- {
- locsymcount = symtab_hdr->sh_size / sizeof (Elf_External_Sym);
- extsymoff = 0;
- }
- else
- {
- locsymcount = symtab_hdr->sh_info;
- extsymoff = symtab_hdr->sh_info;
- }
-
- /* Read the local symbols. */
- isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
- if (isymbuf == NULL && locsymcount != 0)
- {
- isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
- finfo->internal_syms,
- finfo->external_syms,
- finfo->locsym_shndx);
- if (isymbuf == NULL)
- return false;
- }
-
- /* Find local symbol sections and adjust values of symbols in
- SEC_MERGE sections. Write out those local symbols we know are
- going into the output file. */
- isymend = isymbuf + locsymcount;
- for (isym = isymbuf, pindex = finfo->indices, ppsection = finfo->sections;
- isym < isymend;
- isym++, pindex++, ppsection++)
- {
- asection *isec;
- const char *name;
- Elf_Internal_Sym osym;
-
- *pindex = -1;
-
- if (elf_bad_symtab (input_bfd))
- {
- if (ELF_ST_BIND (isym->st_info) != STB_LOCAL)
- {
- *ppsection = NULL;
- continue;
- }
- }
-
- if (isym->st_shndx == SHN_UNDEF)
- isec = bfd_und_section_ptr;
- else if (isym->st_shndx < SHN_LORESERVE
- || isym->st_shndx > SHN_HIRESERVE)
- {
- isec = section_from_elf_index (input_bfd, isym->st_shndx);
- if (isec
- && elf_section_data (isec)->sec_info_type == ELF_INFO_TYPE_MERGE
- && ELF_ST_TYPE (isym->st_info) != STT_SECTION)
- isym->st_value =
- _bfd_merged_section_offset (output_bfd, &isec,
- elf_section_data (isec)->sec_info,
- isym->st_value, (bfd_vma) 0);
- }
- else if (isym->st_shndx == SHN_ABS)
- isec = bfd_abs_section_ptr;
- else if (isym->st_shndx == SHN_COMMON)
- isec = bfd_com_section_ptr;
- else
- {
- /* Who knows? */
- isec = NULL;
- }
-
- *ppsection = isec;
-
- /* Don't output the first, undefined, symbol. */
- if (ppsection == finfo->sections)
- continue;
-
- if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
- {
- /* We never output section symbols. Instead, we use the
- section symbol of the corresponding section in the output
- file. */
- continue;
- }
-
- /* If we are stripping all symbols, we don't want to output this
- one. */
- if (finfo->info->strip == strip_all)
- continue;
-
- /* If we are discarding all local symbols, we don't want to
- output this one. If we are generating a relocateable output
- file, then some of the local symbols may be required by
- relocs; we output them below as we discover that they are
- needed. */
- if (finfo->info->discard == discard_all)
- continue;
-
- /* If this symbol is defined in a section which we are
- discarding, we don't need to keep it, but note that
- linker_mark is only reliable for sections that have contents.
- For the benefit of the MIPS ELF linker, we check SEC_EXCLUDE
- as well as linker_mark. */
- if ((isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
- && isec != NULL
- && ((! isec->linker_mark && (isec->flags & SEC_HAS_CONTENTS) != 0)
- || (! finfo->info->relocateable
- && (isec->flags & SEC_EXCLUDE) != 0)))
- continue;
-
- /* Get the name of the symbol. */
- name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link,
- isym->st_name);
- if (name == NULL)
- return false;
-
- /* See if we are discarding symbols with this name. */
- if ((finfo->info->strip == strip_some
- && (bfd_hash_lookup (finfo->info->keep_hash, name, false, false)
- == NULL))
- || (((finfo->info->discard == discard_sec_merge
- && (isec->flags & SEC_MERGE) && ! finfo->info->relocateable)
- || finfo->info->discard == discard_l)
- && bfd_is_local_label_name (input_bfd, name)))
- continue;
-
- /* If we get here, we are going to output this symbol. */
-
- osym = *isym;
-
- /* Adjust the section index for the output file. */
- osym.st_shndx = _bfd_elf_section_from_bfd_section (output_bfd,
- isec->output_section);
- if (osym.st_shndx == SHN_BAD)
- return false;
-
- *pindex = bfd_get_symcount (output_bfd);
-
- /* ELF symbols in relocateable files are section relative, but
- in executable files they are virtual addresses. Note that
- this code assumes that all ELF sections have an associated
- BFD section with a reasonable value for output_offset; below
- we assume that they also have a reasonable value for
- output_section. Any special sections must be set up to meet
- these requirements. */
- osym.st_value += isec->output_offset;
- if (! finfo->info->relocateable)
- {
- osym.st_value += isec->output_section->vma;
- if (ELF_ST_TYPE (osym.st_info) == STT_TLS)
- {
- /* STT_TLS symbols are relative to PT_TLS segment base. */
- BFD_ASSERT (finfo->first_tls_sec != NULL);
- osym.st_value -= finfo->first_tls_sec->vma;
- }
- }
-
- if (! elf_link_output_sym (finfo, name, &osym, isec))
- return false;
- }
-
- /* Relocate the contents of each section. */
- sym_hashes = elf_sym_hashes (input_bfd);
- for (o = input_bfd->sections; o != NULL; o = o->next)
- {
- bfd_byte *contents;
-
- if (! o->linker_mark)
- {
- /* This section was omitted from the link. */
- continue;
- }
-
- if ((o->flags & SEC_HAS_CONTENTS) == 0
- || (o->_raw_size == 0 && (o->flags & SEC_RELOC) == 0))
- continue;
-
- if ((o->flags & SEC_LINKER_CREATED) != 0)
- {
- /* Section was created by elf_link_create_dynamic_sections
- or somesuch. */
- continue;
- }
-
- /* Get the contents of the section. They have been cached by a
- relaxation routine. Note that o is a section in an input
- file, so the contents field will not have been set by any of
- the routines which work on output files. */
- if (elf_section_data (o)->this_hdr.contents != NULL)
- contents = elf_section_data (o)->this_hdr.contents;
- else
- {
- contents = finfo->contents;
- if (! bfd_get_section_contents (input_bfd, o, contents,
- (file_ptr) 0, o->_raw_size))
- return false;
- }
-
- if ((o->flags & SEC_RELOC) != 0)
- {
- Elf_Internal_Rela *internal_relocs;
-
- /* Get the swapped relocs. */
- internal_relocs = (NAME(_bfd_elf,link_read_relocs)
- (input_bfd, o, finfo->external_relocs,
- finfo->internal_relocs, false));
- if (internal_relocs == NULL
- && o->reloc_count > 0)
- return false;
-
- /* Run through the relocs looking for any against symbols
- from discarded sections and section symbols from
- removed link-once sections. Complain about relocs
- against discarded sections. Zero relocs against removed
- link-once sections. We should really complain if
- anything in the final link tries to use it, but
- DWARF-based exception handling might have an entry in
- .eh_frame to describe a routine in the linkonce section,
- and it turns out to be hard to remove the .eh_frame
- entry too. FIXME. */
- if (!finfo->info->relocateable
- && !elf_section_ignore_discarded_relocs (o))
- {
- Elf_Internal_Rela *rel, *relend;
-
- rel = internal_relocs;
- relend = rel + o->reloc_count * bed->s->int_rels_per_ext_rel;
- for ( ; rel < relend; rel++)
- {
- unsigned long r_symndx = ELF_R_SYM (rel->r_info);
-
- if (r_symndx >= locsymcount
- || (elf_bad_symtab (input_bfd)
- && finfo->sections[r_symndx] == NULL))
- {
- struct elf_link_hash_entry *h;
-
- h = sym_hashes[r_symndx - extsymoff];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Complain if the definition comes from a
- discarded section. */
- if ((h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && elf_discarded_section (h->root.u.def.section))
- {
- if ((o->flags & SEC_DEBUGGING) != 0)
- {
- BFD_ASSERT (r_symndx != 0);
- memset (rel, 0, sizeof (*rel));
- }
- else
- {
- if (! ((*finfo->info->callbacks->undefined_symbol)
- (finfo->info, h->root.root.string,
- input_bfd, o, rel->r_offset,
- true)))
- return false;
- }
- }
- }
- else
- {
- asection *sec = finfo->sections[r_symndx];
-
- if (sec != NULL && elf_discarded_section (sec))
- {
- if ((o->flags & SEC_DEBUGGING) != 0
- || (sec->flags & SEC_LINK_ONCE) != 0)
- {
- BFD_ASSERT (r_symndx != 0);
- rel->r_info
- = ELF_R_INFO (0, ELF_R_TYPE (rel->r_info));
- rel->r_addend = 0;
- }
- else
- {
- boolean ok;
- const char *msg
- = _("local symbols in discarded section %s");
- bfd_size_type amt
- = strlen (sec->name) + strlen (msg) - 1;
- char *buf = (char *) bfd_malloc (amt);
-
- if (buf != NULL)
- sprintf (buf, msg, sec->name);
- else
- buf = (char *) sec->name;
- ok = (*finfo->info->callbacks
- ->undefined_symbol) (finfo->info, buf,
- input_bfd, o,
- rel->r_offset,
- true);
- if (buf != sec->name)
- free (buf);
- if (!ok)
- return false;
- }
- }
- }
- }
- }
-
- /* Relocate the section by invoking a back end routine.
-
- The back end routine is responsible for adjusting the
- section contents as necessary, and (if using Rela relocs
- and generating a relocateable output file) adjusting the
- reloc addend as necessary.
-
- The back end routine does not have to worry about setting
- the reloc address or the reloc symbol index.
-
- The back end routine is given a pointer to the swapped in
- internal symbols, and can access the hash table entries
- for the external symbols via elf_sym_hashes (input_bfd).
-
- When generating relocateable output, the back end routine
- must handle STB_LOCAL/STT_SECTION symbols specially. The
- output symbol is going to be a section symbol
- corresponding to the output section, which will require
- the addend to be adjusted. */
-
- if (! (*relocate_section) (output_bfd, finfo->info,
- input_bfd, o, contents,
- internal_relocs,
- isymbuf,
- finfo->sections))
- return false;
-
- if (emit_relocs)
- {
- Elf_Internal_Rela *irela;
- Elf_Internal_Rela *irelaend;
- struct elf_link_hash_entry **rel_hash;
- Elf_Internal_Shdr *input_rel_hdr, *input_rel_hdr2;
- unsigned int next_erel;
- boolean (*reloc_emitter) PARAMS ((bfd *, asection *,
- Elf_Internal_Shdr *,
- Elf_Internal_Rela *));
- boolean rela_normal;
-
- input_rel_hdr = &elf_section_data (o)->rel_hdr;
- rela_normal = (bed->rela_normal
- && (input_rel_hdr->sh_entsize
- == sizeof (Elf_External_Rela)));
-
- /* Adjust the reloc addresses and symbol indices. */
-
- irela = internal_relocs;
- irelaend = irela + o->reloc_count * bed->s->int_rels_per_ext_rel;
- rel_hash = (elf_section_data (o->output_section)->rel_hashes
- + elf_section_data (o->output_section)->rel_count
- + elf_section_data (o->output_section)->rel_count2);
- for (next_erel = 0; irela < irelaend; irela++, next_erel++)
- {
- unsigned long r_symndx;
- asection *sec;
- Elf_Internal_Sym sym;
-
- if (next_erel == bed->s->int_rels_per_ext_rel)
- {
- rel_hash++;
- next_erel = 0;
- }
-
- irela->r_offset += o->output_offset;
-
- /* Relocs in an executable have to be virtual addresses. */
- if (!finfo->info->relocateable)
- irela->r_offset += o->output_section->vma;
-
- r_symndx = ELF_R_SYM (irela->r_info);
-
- if (r_symndx == 0)
- continue;
-
- if (r_symndx >= locsymcount
- || (elf_bad_symtab (input_bfd)
- && finfo->sections[r_symndx] == NULL))
- {
- struct elf_link_hash_entry *rh;
- unsigned long indx;
-
- /* This is a reloc against a global symbol. We
- have not yet output all the local symbols, so
- we do not know the symbol index of any global
- symbol. We set the rel_hash entry for this
- reloc to point to the global hash table entry
- for this symbol. The symbol index is then
- set at the end of elf_bfd_final_link. */
- indx = r_symndx - extsymoff;
- rh = elf_sym_hashes (input_bfd)[indx];
- while (rh->root.type == bfd_link_hash_indirect
- || rh->root.type == bfd_link_hash_warning)
- rh = (struct elf_link_hash_entry *) rh->root.u.i.link;
-
- /* Setting the index to -2 tells
- elf_link_output_extsym that this symbol is
- used by a reloc. */
- BFD_ASSERT (rh->indx < 0);
- rh->indx = -2;
-
- *rel_hash = rh;
-
- continue;
- }
-
- /* This is a reloc against a local symbol. */
-
- *rel_hash = NULL;
- sym = isymbuf[r_symndx];
- sec = finfo->sections[r_symndx];
- if (ELF_ST_TYPE (sym.st_info) == STT_SECTION)
- {
- /* I suppose the backend ought to fill in the
- section of any STT_SECTION symbol against a
- processor specific section. If we have
- discarded a section, the output_section will
- be the absolute section. */
- if (bfd_is_abs_section (sec)
- || (sec != NULL
- && bfd_is_abs_section (sec->output_section)))
- r_symndx = 0;
- else if (sec == NULL || sec->owner == NULL)
- {
- bfd_set_error (bfd_error_bad_value);
- return false;
- }
- else
- {
- r_symndx = sec->output_section->target_index;
- BFD_ASSERT (r_symndx != 0);
- }
-
- /* Adjust the addend according to where the
- section winds up in the output section. */
- if (rela_normal)
- irela->r_addend += sec->output_offset;
- }
- else
- {
- if (finfo->indices[r_symndx] == -1)
- {
- unsigned long shlink;
- const char *name;
- asection *osec;
-
- if (finfo->info->strip == strip_all)
- {
- /* You can't do ld -r -s. */
- bfd_set_error (bfd_error_invalid_operation);
- return false;
- }
-
- /* This symbol was skipped earlier, but
- since it is needed by a reloc, we
- must output it now. */
- shlink = symtab_hdr->sh_link;
- name = (bfd_elf_string_from_elf_section
- (input_bfd, shlink, sym.st_name));
- if (name == NULL)
- return false;
-
- osec = sec->output_section;
- sym.st_shndx =
- _bfd_elf_section_from_bfd_section (output_bfd,
- osec);
- if (sym.st_shndx == SHN_BAD)
- return false;
-
- sym.st_value += sec->output_offset;
- if (! finfo->info->relocateable)
- {
- sym.st_value += osec->vma;
- if (ELF_ST_TYPE (sym.st_info) == STT_TLS)
- {
- /* STT_TLS symbols are relative to PT_TLS
- segment base. */
- BFD_ASSERT (finfo->first_tls_sec != NULL);
- sym.st_value -= finfo->first_tls_sec->vma;
- }
- }
-
- finfo->indices[r_symndx]
- = bfd_get_symcount (output_bfd);
-
- if (! elf_link_output_sym (finfo, name, &sym, sec))
- return false;
- }
-
- r_symndx = finfo->indices[r_symndx];
- }
-
- irela->r_info = ELF_R_INFO (r_symndx,
- ELF_R_TYPE (irela->r_info));
- }
-
- /* Swap out the relocs. */
- if (bed->elf_backend_emit_relocs
- && !(finfo->info->relocateable
- || finfo->info->emitrelocations))
- reloc_emitter = bed->elf_backend_emit_relocs;
- else
- reloc_emitter = elf_link_output_relocs;
-
- if (input_rel_hdr->sh_size != 0
- && ! (*reloc_emitter) (output_bfd, o, input_rel_hdr,
- internal_relocs))
- return false;
-
- input_rel_hdr2 = elf_section_data (o)->rel_hdr2;
- if (input_rel_hdr2 && input_rel_hdr2->sh_size != 0)
- {
- internal_relocs += (NUM_SHDR_ENTRIES (input_rel_hdr)
- * bed->s->int_rels_per_ext_rel);
- if (! (*reloc_emitter) (output_bfd, o, input_rel_hdr2,
- internal_relocs))
- return false;
- }
- }
- }
-
- /* Write out the modified section contents. */
- if (bed->elf_backend_write_section
- && (*bed->elf_backend_write_section) (output_bfd, o, contents))
- {
- /* Section written out. */
- }
- else switch (elf_section_data (o)->sec_info_type)
- {
- case ELF_INFO_TYPE_STABS:
- if (! (_bfd_write_section_stabs
- (output_bfd,
- &elf_hash_table (finfo->info)->stab_info,
- o, &elf_section_data (o)->sec_info, contents)))
- return false;
- break;
- case ELF_INFO_TYPE_MERGE:
- if (! (_bfd_write_merged_section
- (output_bfd, o, elf_section_data (o)->sec_info)))
- return false;
- break;
- case ELF_INFO_TYPE_EH_FRAME:
- {
- asection *ehdrsec;
-
- ehdrsec
- = bfd_get_section_by_name (elf_hash_table (finfo->info)->dynobj,
- ".eh_frame_hdr");
- if (! (_bfd_elf_write_section_eh_frame (output_bfd, o, ehdrsec,
- contents)))
- return false;
- }
- break;
- default:
- {
- bfd_size_type sec_size;
-
- sec_size = (o->_cooked_size != 0 ? o->_cooked_size : o->_raw_size);
- if (! (o->flags & SEC_EXCLUDE)
- && ! bfd_set_section_contents (output_bfd, o->output_section,
- contents,
- (file_ptr) o->output_offset,
- sec_size))
- return false;
- }
- break;
- }
- }
-
- return true;
-}
-
-/* Generate a reloc when linking an ELF file. This is a reloc
- requested by the linker, and does come from any input file. This
- is used to build constructor and destructor tables when linking
- with -Ur. */
-
-static boolean
-elf_reloc_link_order (output_bfd, info, output_section, link_order)
- bfd *output_bfd;
- struct bfd_link_info *info;
- asection *output_section;
- struct bfd_link_order *link_order;
-{
- reloc_howto_type *howto;
- long indx;
- bfd_vma offset;
- bfd_vma addend;
- struct elf_link_hash_entry **rel_hash_ptr;
- Elf_Internal_Shdr *rel_hdr;
- struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
-
- howto = bfd_reloc_type_lookup (output_bfd, link_order->u.reloc.p->reloc);
- if (howto == NULL)
- {
- bfd_set_error (bfd_error_bad_value);
- return false;
- }
-
- addend = link_order->u.reloc.p->addend;
-
- /* Figure out the symbol index. */
- rel_hash_ptr = (elf_section_data (output_section)->rel_hashes
- + elf_section_data (output_section)->rel_count
- + elf_section_data (output_section)->rel_count2);
- if (link_order->type == bfd_section_reloc_link_order)
- {
- indx = link_order->u.reloc.p->u.section->target_index;
- BFD_ASSERT (indx != 0);
- *rel_hash_ptr = NULL;
- }
- else
- {
- struct elf_link_hash_entry *h;
-
- /* Treat a reloc against a defined symbol as though it were
- actually against the section. */
- h = ((struct elf_link_hash_entry *)
- bfd_wrapped_link_hash_lookup (output_bfd, info,
- link_order->u.reloc.p->u.name,
- false, false, true));
- if (h != NULL
- && (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak))
- {
- asection *section;
-
- section = h->root.u.def.section;
- indx = section->output_section->target_index;
- *rel_hash_ptr = NULL;
- /* It seems that we ought to add the symbol value to the
- addend here, but in practice it has already been added
- because it was passed to constructor_callback. */
- addend += section->output_section->vma + section->output_offset;
- }
- else if (h != NULL)
- {
- /* Setting the index to -2 tells elf_link_output_extsym that
- this symbol is used by a reloc. */
- h->indx = -2;
- *rel_hash_ptr = h;
- indx = 0;
- }
- else
- {
- if (! ((*info->callbacks->unattached_reloc)
- (info, link_order->u.reloc.p->u.name, (bfd *) NULL,
- (asection *) NULL, (bfd_vma) 0)))
- return false;
- indx = 0;
- }
- }
-
- /* If this is an inplace reloc, we must write the addend into the
- object file. */
- if (howto->partial_inplace && addend != 0)
- {
- bfd_size_type size;
- bfd_reloc_status_type rstat;
- bfd_byte *buf;
- boolean ok;
- const char *sym_name;
-
- size = bfd_get_reloc_size (howto);
- buf = (bfd_byte *) bfd_zmalloc (size);
- if (buf == (bfd_byte *) NULL)
- return false;
- rstat = _bfd_relocate_contents (howto, output_bfd, (bfd_vma) addend, buf);
- switch (rstat)
- {
- case bfd_reloc_ok:
- break;
-
- default:
- case bfd_reloc_outofrange:
- abort ();
-
- case bfd_reloc_overflow:
- if (link_order->type == bfd_section_reloc_link_order)
- sym_name = bfd_section_name (output_bfd,
- link_order->u.reloc.p->u.section);
- else
- sym_name = link_order->u.reloc.p->u.name;
- if (! ((*info->callbacks->reloc_overflow)
- (info, sym_name, howto->name, addend,
- (bfd *) NULL, (asection *) NULL, (bfd_vma) 0)))
- {
- free (buf);
- return false;
- }
- break;
- }
- ok = bfd_set_section_contents (output_bfd, output_section, (PTR) buf,
- (file_ptr) link_order->offset, size);
- free (buf);
- if (! ok)
- return false;
- }
-
- /* The address of a reloc is relative to the section in a
- relocateable file, and is a virtual address in an executable
- file. */
- offset = link_order->offset;
- if (! info->relocateable)
- offset += output_section->vma;
-
- rel_hdr = &elf_section_data (output_section)->rel_hdr;
-
- if (rel_hdr->sh_type == SHT_REL)
- {
- bfd_size_type size;
- Elf_Internal_Rel *irel;
- Elf_External_Rel *erel;
- unsigned int i;
-
- size = bed->s->int_rels_per_ext_rel * sizeof (Elf_Internal_Rel);
- irel = (Elf_Internal_Rel *) bfd_zmalloc (size);
- if (irel == NULL)
- return false;
-
- for (i = 0; i < bed->s->int_rels_per_ext_rel; i++)
- irel[i].r_offset = offset;
- irel[0].r_info = ELF_R_INFO (indx, howto->type);
-
- erel = ((Elf_External_Rel *) rel_hdr->contents
- + elf_section_data (output_section)->rel_count);
-
- if (bed->s->swap_reloc_out)
- (*bed->s->swap_reloc_out) (output_bfd, irel, (bfd_byte *) erel);
- else
- elf_swap_reloc_out (output_bfd, irel, erel);
-
- free (irel);
- }
- else
- {
- bfd_size_type size;
- Elf_Internal_Rela *irela;
- Elf_External_Rela *erela;
- unsigned int i;
-
- size = bed->s->int_rels_per_ext_rel * sizeof (Elf_Internal_Rela);
- irela = (Elf_Internal_Rela *) bfd_zmalloc (size);
- if (irela == NULL)
- return false;
-
- for (i = 0; i < bed->s->int_rels_per_ext_rel; i++)
- irela[i].r_offset = offset;
- irela[0].r_info = ELF_R_INFO (indx, howto->type);
- irela[0].r_addend = addend;
-
- erela = ((Elf_External_Rela *) rel_hdr->contents
- + elf_section_data (output_section)->rel_count);
-
- if (bed->s->swap_reloca_out)
- (*bed->s->swap_reloca_out) (output_bfd, irela, (bfd_byte *) erela);
- else
- elf_swap_reloca_out (output_bfd, irela, erela);
- }
-
- ++elf_section_data (output_section)->rel_count;
-
- return true;
-}
-
-/* Allocate a pointer to live in a linker created section. */
-
-boolean
-elf_create_pointer_linker_section (abfd, info, lsect, h, rel)
- bfd *abfd;
- struct bfd_link_info *info;
- elf_linker_section_t *lsect;
- struct elf_link_hash_entry *h;
- const Elf_Internal_Rela *rel;
-{
- elf_linker_section_pointers_t **ptr_linker_section_ptr = NULL;
- elf_linker_section_pointers_t *linker_section_ptr;
- unsigned long r_symndx = ELF_R_SYM (rel->r_info);
- bfd_size_type amt;
-
- BFD_ASSERT (lsect != NULL);
-
- /* Is this a global symbol? */
- if (h != NULL)
- {
- /* Has this symbol already been allocated? If so, our work is done. */
- if (_bfd_elf_find_pointer_linker_section (h->linker_section_pointer,
- rel->r_addend,
- lsect->which))
- return true;
-
- ptr_linker_section_ptr = &h->linker_section_pointer;
- /* Make sure this symbol is output as a dynamic symbol. */
- if (h->dynindx == -1)
- {
- if (! elf_link_record_dynamic_symbol (info, h))
- return false;
- }
-
- if (lsect->rel_section)
- lsect->rel_section->_raw_size += sizeof (Elf_External_Rela);
- }
- else
- {
- /* Allocation of a pointer to a local symbol. */
- elf_linker_section_pointers_t **ptr = elf_local_ptr_offsets (abfd);
-
- /* Allocate a table to hold the local symbols if first time. */
- if (!ptr)
- {
- unsigned int num_symbols = elf_tdata (abfd)->symtab_hdr.sh_info;
- register unsigned int i;
-
- amt = num_symbols;
- amt *= sizeof (elf_linker_section_pointers_t *);
- ptr = (elf_linker_section_pointers_t **) bfd_alloc (abfd, amt);
-
- if (!ptr)
- return false;
-
- elf_local_ptr_offsets (abfd) = ptr;
- for (i = 0; i < num_symbols; i++)
- ptr[i] = (elf_linker_section_pointers_t *) 0;
- }
-
- /* Has this symbol already been allocated? If so, our work is done. */
- if (_bfd_elf_find_pointer_linker_section (ptr[r_symndx],
- rel->r_addend,
- lsect->which))
- return true;
-
- ptr_linker_section_ptr = &ptr[r_symndx];
-
- if (info->shared)
- {
- /* If we are generating a shared object, we need to
- output a R_<xxx>_RELATIVE reloc so that the
- dynamic linker can adjust this GOT entry. */
- BFD_ASSERT (lsect->rel_section != NULL);
- lsect->rel_section->_raw_size += sizeof (Elf_External_Rela);
- }
- }
-
- /* Allocate space for a pointer in the linker section, and allocate
- a new pointer record from internal memory. */
- BFD_ASSERT (ptr_linker_section_ptr != NULL);
- amt = sizeof (elf_linker_section_pointers_t);
- linker_section_ptr = (elf_linker_section_pointers_t *) bfd_alloc (abfd, amt);
-
- if (!linker_section_ptr)
- return false;
-
- linker_section_ptr->next = *ptr_linker_section_ptr;
- linker_section_ptr->addend = rel->r_addend;
- linker_section_ptr->which = lsect->which;
- linker_section_ptr->written_address_p = false;
- *ptr_linker_section_ptr = linker_section_ptr;
-
-#if 0
- if (lsect->hole_size && lsect->hole_offset < lsect->max_hole_offset)
- {
- linker_section_ptr->offset = (lsect->section->_raw_size
- - lsect->hole_size + (ARCH_SIZE / 8));
- lsect->hole_offset += ARCH_SIZE / 8;
- lsect->sym_offset += ARCH_SIZE / 8;
- if (lsect->sym_hash)
- {
- /* Bump up symbol value if needed. */
- lsect->sym_hash->root.u.def.value += ARCH_SIZE / 8;
-#ifdef DEBUG
- fprintf (stderr, "Bump up %s by %ld, current value = %ld\n",
- lsect->sym_hash->root.root.string,
- (long) ARCH_SIZE / 8,
- (long) lsect->sym_hash->root.u.def.value);
-#endif
- }
- }
- else
-#endif
- linker_section_ptr->offset = lsect->section->_raw_size;
-
- lsect->section->_raw_size += ARCH_SIZE / 8;
-
-#ifdef DEBUG
- fprintf (stderr,
- "Create pointer in linker section %s, offset = %ld, section size = %ld\n",
- lsect->name, (long) linker_section_ptr->offset,
- (long) lsect->section->_raw_size);
-#endif
-
- return true;
-}
-
-#if ARCH_SIZE==64
-#define bfd_put_ptr(BFD,VAL,ADDR) bfd_put_64 (BFD, VAL, ADDR)
-#endif
-#if ARCH_SIZE==32
-#define bfd_put_ptr(BFD,VAL,ADDR) bfd_put_32 (BFD, VAL, ADDR)
-#endif
-
-/* Fill in the address for a pointer generated in a linker section. */
-
-bfd_vma
-elf_finish_pointer_linker_section (output_bfd, input_bfd, info, lsect, h,
- relocation, rel, relative_reloc)
- bfd *output_bfd;
- bfd *input_bfd;
- struct bfd_link_info *info;
- elf_linker_section_t *lsect;
- struct elf_link_hash_entry *h;
- bfd_vma relocation;
- const Elf_Internal_Rela *rel;
- int relative_reloc;
-{
- elf_linker_section_pointers_t *linker_section_ptr;
-
- BFD_ASSERT (lsect != NULL);
-
- if (h != NULL)
- {
- /* Handle global symbol. */
- linker_section_ptr = (_bfd_elf_find_pointer_linker_section
- (h->linker_section_pointer,
- rel->r_addend,
- lsect->which));
-
- BFD_ASSERT (linker_section_ptr != NULL);
-
- if (! elf_hash_table (info)->dynamic_sections_created
- || (info->shared
- && info->symbolic
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
- {
- /* This is actually a static link, or it is a
- -Bsymbolic link and the symbol is defined
- locally. We must initialize this entry in the
- global section.
-
- When doing a dynamic link, we create a .rela.<xxx>
- relocation entry to initialize the value. This
- is done in the finish_dynamic_symbol routine. */
- if (!linker_section_ptr->written_address_p)
- {
- linker_section_ptr->written_address_p = true;
- bfd_put_ptr (output_bfd,
- relocation + linker_section_ptr->addend,
- (lsect->section->contents
- + linker_section_ptr->offset));
- }
- }
- }
- else
- {
- /* Handle local symbol. */
- unsigned long r_symndx = ELF_R_SYM (rel->r_info);
- BFD_ASSERT (elf_local_ptr_offsets (input_bfd) != NULL);
- BFD_ASSERT (elf_local_ptr_offsets (input_bfd)[r_symndx] != NULL);
- linker_section_ptr = (_bfd_elf_find_pointer_linker_section
- (elf_local_ptr_offsets (input_bfd)[r_symndx],
- rel->r_addend,
- lsect->which));
-
- BFD_ASSERT (linker_section_ptr != NULL);
-
- /* Write out pointer if it hasn't been rewritten out before. */
- if (!linker_section_ptr->written_address_p)
- {
- linker_section_ptr->written_address_p = true;
- bfd_put_ptr (output_bfd, relocation + linker_section_ptr->addend,
- lsect->section->contents + linker_section_ptr->offset);
-
- if (info->shared)
- {
- asection *srel = lsect->rel_section;
- Elf_Internal_Rela *outrel;
- Elf_External_Rela *erel;
- struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
- unsigned int i;
- bfd_size_type amt;
-
- amt = sizeof (Elf_Internal_Rela) * bed->s->int_rels_per_ext_rel;
- outrel = (Elf_Internal_Rela *) bfd_zmalloc (amt);
- if (outrel == NULL)
- {
- (*_bfd_error_handler) (_("Error: out of memory"));
- return 0;
- }
-
- /* We need to generate a relative reloc for the dynamic
- linker. */
- if (!srel)
- {
- srel = bfd_get_section_by_name (elf_hash_table (info)->dynobj,
- lsect->rel_name);
- lsect->rel_section = srel;
- }
-
- BFD_ASSERT (srel != NULL);
-
- for (i = 0; i < bed->s->int_rels_per_ext_rel; i++)
- outrel[i].r_offset = (lsect->section->output_section->vma
- + lsect->section->output_offset
- + linker_section_ptr->offset);
- outrel[0].r_info = ELF_R_INFO (0, relative_reloc);
- outrel[0].r_addend = 0;
- erel = (Elf_External_Rela *) lsect->section->contents;
- erel += elf_section_data (lsect->section)->rel_count;
- elf_swap_reloca_out (output_bfd, outrel, erel);
- ++elf_section_data (lsect->section)->rel_count;
-
- free (outrel);
- }
- }
- }
-
- relocation = (lsect->section->output_offset
- + linker_section_ptr->offset
- - lsect->hole_offset
- - lsect->sym_offset);
-
-#ifdef DEBUG
- fprintf (stderr,
- "Finish pointer in linker section %s, offset = %ld (0x%lx)\n",
- lsect->name, (long) relocation, (long) relocation);
-#endif
-
- /* Subtract out the addend, because it will get added back in by the normal
- processing. */
- return relocation - linker_section_ptr->addend;
-}
-
-/* Garbage collect unused sections. */
-
-static boolean elf_gc_mark
- PARAMS ((struct bfd_link_info *, asection *,
- asection * (*) (asection *, struct bfd_link_info *,
- Elf_Internal_Rela *, struct elf_link_hash_entry *,
- Elf_Internal_Sym *)));
-
-static boolean elf_gc_sweep
- PARAMS ((struct bfd_link_info *,
- boolean (*) (bfd *, struct bfd_link_info *, asection *,
- const Elf_Internal_Rela *)));
-
-static boolean elf_gc_sweep_symbol
- PARAMS ((struct elf_link_hash_entry *, PTR));
-
-static boolean elf_gc_allocate_got_offsets
- PARAMS ((struct elf_link_hash_entry *, PTR));
-
-static boolean elf_gc_propagate_vtable_entries_used
- PARAMS ((struct elf_link_hash_entry *, PTR));
-
-static boolean elf_gc_smash_unused_vtentry_relocs
- PARAMS ((struct elf_link_hash_entry *, PTR));
-
-/* The mark phase of garbage collection. For a given section, mark
- it and any sections in this section's group, and all the sections
- which define symbols to which it refers. */
-
-static boolean
-elf_gc_mark (info, sec, gc_mark_hook)
- struct bfd_link_info *info;
- asection *sec;
- asection * (*gc_mark_hook) PARAMS ((asection *, struct bfd_link_info *,
- Elf_Internal_Rela *,
- struct elf_link_hash_entry *,
- Elf_Internal_Sym *));
-{
- boolean ret;
- asection *group_sec;
-
- sec->gc_mark = 1;
-
- /* Mark all the sections in the group. */
- group_sec = elf_section_data (sec)->next_in_group;
- if (group_sec && !group_sec->gc_mark)
- if (!elf_gc_mark (info, group_sec, gc_mark_hook))
- return false;
-
- /* Look through the section relocs. */
- ret = true;
- if ((sec->flags & SEC_RELOC) != 0 && sec->reloc_count > 0)
- {
- Elf_Internal_Rela *relstart, *rel, *relend;
- Elf_Internal_Shdr *symtab_hdr;
- struct elf_link_hash_entry **sym_hashes;
- size_t nlocsyms;
- size_t extsymoff;
- bfd *input_bfd = sec->owner;
- struct elf_backend_data *bed = get_elf_backend_data (input_bfd);
- Elf_Internal_Sym *isym = NULL;
-
- symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes (input_bfd);
-
- /* Read the local symbols. */
- if (elf_bad_symtab (input_bfd))
- {
- nlocsyms = symtab_hdr->sh_size / sizeof (Elf_External_Sym);
- extsymoff = 0;
- }
- else
- extsymoff = nlocsyms = symtab_hdr->sh_info;
-
- isym = (Elf_Internal_Sym *) symtab_hdr->contents;
- if (isym == NULL && nlocsyms != 0)
- {
- isym = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, nlocsyms, 0,
- NULL, NULL, NULL);
- if (isym == NULL)
- return false;
- }
-
- /* Read the relocations. */
- relstart = (NAME(_bfd_elf,link_read_relocs)
- (input_bfd, sec, NULL, (Elf_Internal_Rela *) NULL,
- info->keep_memory));
- if (relstart == NULL)
- {
- ret = false;
- goto out1;
- }
- relend = relstart + sec->reloc_count * bed->s->int_rels_per_ext_rel;
-
- for (rel = relstart; rel < relend; rel++)
- {
- unsigned long r_symndx;
- asection *rsec;
- struct elf_link_hash_entry *h;
-
- r_symndx = ELF_R_SYM (rel->r_info);
- if (r_symndx == 0)
- continue;
-
- if (r_symndx >= nlocsyms
- || ELF_ST_BIND (isym[r_symndx].st_info) != STB_LOCAL)
- {
- h = sym_hashes[r_symndx - extsymoff];
- rsec = (*gc_mark_hook) (sec, info, rel, h, NULL);
- }
- else
- {
- rsec = (*gc_mark_hook) (sec, info, rel, NULL, &isym[r_symndx]);
- }
-
- if (rsec && !rsec->gc_mark)
- {
- if (bfd_get_flavour (rsec->owner) != bfd_target_elf_flavour)
- rsec->gc_mark = 1;
- else if (!elf_gc_mark (info, rsec, gc_mark_hook))
- {
- ret = false;
- goto out2;
- }
- }
- }
-
- out2:
- if (elf_section_data (sec)->relocs != relstart)
- free (relstart);
- out1:
- if (isym != NULL && symtab_hdr->contents != (unsigned char *) isym)
- {
- if (! info->keep_memory)
- free (isym);
- else
- symtab_hdr->contents = (unsigned char *) isym;
- }
- }
-
- return ret;
-}
-
-/* The sweep phase of garbage collection. Remove all garbage sections. */
-
-static boolean
-elf_gc_sweep (info, gc_sweep_hook)
- struct bfd_link_info *info;
- boolean (*gc_sweep_hook) PARAMS ((bfd *, struct bfd_link_info *,
- asection *, const Elf_Internal_Rela *));
-{
- bfd *sub;
-
- for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
- {
- asection *o;
-
- if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
- continue;
-
- for (o = sub->sections; o != NULL; o = o->next)
- {
- /* Keep special sections. Keep .debug sections. */
- if ((o->flags & SEC_LINKER_CREATED)
- || (o->flags & SEC_DEBUGGING))
- o->gc_mark = 1;
-
- if (o->gc_mark)
- continue;
-
- /* Skip sweeping sections already excluded. */
- if (o->flags & SEC_EXCLUDE)
- continue;
-
- /* Since this is early in the link process, it is simple
- to remove a section from the output. */
- o->flags |= SEC_EXCLUDE;
-
- /* But we also have to update some of the relocation
- info we collected before. */
- if (gc_sweep_hook
- && (o->flags & SEC_RELOC) && o->reloc_count > 0)
- {
- Elf_Internal_Rela *internal_relocs;
- boolean r;
-
- internal_relocs = (NAME(_bfd_elf,link_read_relocs)
- (o->owner, o, NULL, NULL, info->keep_memory));
- if (internal_relocs == NULL)
- return false;
-
- r = (*gc_sweep_hook) (o->owner, info, o, internal_relocs);
-
- if (elf_section_data (o)->relocs != internal_relocs)
- free (internal_relocs);
-
- if (!r)
- return false;
- }
- }
- }
-
- /* Remove the symbols that were in the swept sections from the dynamic
- symbol table. GCFIXME: Anyone know how to get them out of the
- static symbol table as well? */
- {
- int i = 0;
-
- elf_link_hash_traverse (elf_hash_table (info),
- elf_gc_sweep_symbol,
- (PTR) &i);
-
- elf_hash_table (info)->dynsymcount = i;
- }
-
- return true;
-}
-
-/* Sweep symbols in swept sections. Called via elf_link_hash_traverse. */
-
-static boolean
-elf_gc_sweep_symbol (h, idxptr)
- struct elf_link_hash_entry *h;
- PTR idxptr;
-{
- int *idx = (int *) idxptr;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if (h->dynindx != -1
- && ((h->root.type != bfd_link_hash_defined
- && h->root.type != bfd_link_hash_defweak)
- || h->root.u.def.section->gc_mark))
- h->dynindx = (*idx)++;
-
- return true;
-}
-
-/* Propogate collected vtable information. This is called through
- elf_link_hash_traverse. */
-
-static boolean
-elf_gc_propagate_vtable_entries_used (h, okp)
- struct elf_link_hash_entry *h;
- PTR okp;
-{
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Those that are not vtables. */
- if (h->vtable_parent == NULL)
- return true;
-
- /* Those vtables that do not have parents, we cannot merge. */
- if (h->vtable_parent == (struct elf_link_hash_entry *) -1)
- return true;
-
- /* If we've already been done, exit. */
- if (h->vtable_entries_used && h->vtable_entries_used[-1])
- return true;
-
- /* Make sure the parent's table is up to date. */
- elf_gc_propagate_vtable_entries_used (h->vtable_parent, okp);
-
- if (h->vtable_entries_used == NULL)
- {
- /* None of this table's entries were referenced. Re-use the
- parent's table. */
- h->vtable_entries_used = h->vtable_parent->vtable_entries_used;
- h->vtable_entries_size = h->vtable_parent->vtable_entries_size;
- }
- else
- {
- size_t n;
- boolean *cu, *pu;
-
- /* Or the parent's entries into ours. */
- cu = h->vtable_entries_used;
- cu[-1] = true;
- pu = h->vtable_parent->vtable_entries_used;
- if (pu != NULL)
- {
- asection *sec = h->root.u.def.section;
- struct elf_backend_data *bed = get_elf_backend_data (sec->owner);
- int file_align = bed->s->file_align;
-
- n = h->vtable_parent->vtable_entries_size / file_align;
- while (n--)
- {
- if (*pu)
- *cu = true;
- pu++;
- cu++;
- }
- }
- }
-
- return true;
-}
-
-static boolean
-elf_gc_smash_unused_vtentry_relocs (h, okp)
- struct elf_link_hash_entry *h;
- PTR okp;
-{
- asection *sec;
- bfd_vma hstart, hend;
- Elf_Internal_Rela *relstart, *relend, *rel;
- struct elf_backend_data *bed;
- int file_align;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Take care of both those symbols that do not describe vtables as
- well as those that are not loaded. */
- if (h->vtable_parent == NULL)
- return true;
-
- BFD_ASSERT (h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak);
-
- sec = h->root.u.def.section;
- hstart = h->root.u.def.value;
- hend = hstart + h->size;
-
- relstart = (NAME(_bfd_elf,link_read_relocs)
- (sec->owner, sec, NULL, (Elf_Internal_Rela *) NULL, true));
- if (!relstart)
- return *(boolean *) okp = false;
- bed = get_elf_backend_data (sec->owner);
- file_align = bed->s->file_align;
-
- relend = relstart + sec->reloc_count * bed->s->int_rels_per_ext_rel;
-
- for (rel = relstart; rel < relend; ++rel)
- if (rel->r_offset >= hstart && rel->r_offset < hend)
- {
- /* If the entry is in use, do nothing. */
- if (h->vtable_entries_used
- && (rel->r_offset - hstart) < h->vtable_entries_size)
- {
- bfd_vma entry = (rel->r_offset - hstart) / file_align;
- if (h->vtable_entries_used[entry])
- continue;
- }
- /* Otherwise, kill it. */
- rel->r_offset = rel->r_info = rel->r_addend = 0;
- }
-
- return true;
-}
-
-/* Do mark and sweep of unused sections. */
-
-boolean
-elf_gc_sections (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- boolean ok = true;
- bfd *sub;
- asection * (*gc_mark_hook)
- PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
- struct elf_link_hash_entry *h, Elf_Internal_Sym *));
-
- if (!get_elf_backend_data (abfd)->can_gc_sections
- || info->relocateable || info->emitrelocations
- || elf_hash_table (info)->dynamic_sections_created)
- return true;
-
- /* Apply transitive closure to the vtable entry usage info. */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_gc_propagate_vtable_entries_used,
- (PTR) &ok);
- if (!ok)
- return false;
-
- /* Kill the vtable relocations that were not used. */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_gc_smash_unused_vtentry_relocs,
- (PTR) &ok);
- if (!ok)
- return false;
-
- /* Grovel through relocs to find out who stays ... */
-
- gc_mark_hook = get_elf_backend_data (abfd)->gc_mark_hook;
- for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
- {
- asection *o;
-
- if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
- continue;
-
- for (o = sub->sections; o != NULL; o = o->next)
- {
- if (o->flags & SEC_KEEP)
- if (!elf_gc_mark (info, o, gc_mark_hook))
- return false;
- }
- }
-
- /* ... and mark SEC_EXCLUDE for those that go. */
- if (!elf_gc_sweep (info, get_elf_backend_data (abfd)->gc_sweep_hook))
- return false;
-
- return true;
-}
-
-/* Called from check_relocs to record the existance of a VTINHERIT reloc. */
-
-boolean
-elf_gc_record_vtinherit (abfd, sec, h, offset)
- bfd *abfd;
- asection *sec;
- struct elf_link_hash_entry *h;
- bfd_vma offset;
-{
- struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
- struct elf_link_hash_entry **search, *child;
- bfd_size_type extsymcount;
-
- /* The sh_info field of the symtab header tells us where the
- external symbols start. We don't care about the local symbols at
- this point. */
- extsymcount = elf_tdata (abfd)->symtab_hdr.sh_size/sizeof (Elf_External_Sym);
- if (!elf_bad_symtab (abfd))
- extsymcount -= elf_tdata (abfd)->symtab_hdr.sh_info;
-
- sym_hashes = elf_sym_hashes (abfd);
- sym_hashes_end = sym_hashes + extsymcount;
-
- /* Hunt down the child symbol, which is in this section at the same
- offset as the relocation. */
- for (search = sym_hashes; search != sym_hashes_end; ++search)
- {
- if ((child = *search) != NULL
- && (child->root.type == bfd_link_hash_defined
- || child->root.type == bfd_link_hash_defweak)
- && child->root.u.def.section == sec
- && child->root.u.def.value == offset)
- goto win;
- }
-
- (*_bfd_error_handler) ("%s: %s+%lu: No symbol found for INHERIT",
- bfd_archive_filename (abfd), sec->name,
- (unsigned long) offset);
- bfd_set_error (bfd_error_invalid_operation);
- return false;
-
- win:
- if (!h)
- {
- /* This *should* only be the absolute section. It could potentially
- be that someone has defined a non-global vtable though, which
- would be bad. It isn't worth paging in the local symbols to be
- sure though; that case should simply be handled by the assembler. */
-
- child->vtable_parent = (struct elf_link_hash_entry *) -1;
- }
- else
- child->vtable_parent = h;
-
- return true;
-}
-
-/* Called from check_relocs to record the existance of a VTENTRY reloc. */
-
-boolean
-elf_gc_record_vtentry (abfd, sec, h, addend)
- bfd *abfd ATTRIBUTE_UNUSED;
- asection *sec ATTRIBUTE_UNUSED;
- struct elf_link_hash_entry *h;
- bfd_vma addend;
-{
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
- int file_align = bed->s->file_align;
-
- if (addend >= h->vtable_entries_size)
- {
- size_t size, bytes;
- boolean *ptr = h->vtable_entries_used;
-
- /* While the symbol is undefined, we have to be prepared to handle
- a zero size. */
- if (h->root.type == bfd_link_hash_undefined)
- size = addend;
- else
- {
- size = h->size;
- if (size < addend)
- {
- /* Oops! We've got a reference past the defined end of
- the table. This is probably a bug -- shall we warn? */
- size = addend;
- }
- }
-
- /* Allocate one extra entry for use as a "done" flag for the
- consolidation pass. */
- bytes = (size / file_align + 1) * sizeof (boolean);
-
- if (ptr)
- {
- ptr = bfd_realloc (ptr - 1, (bfd_size_type) bytes);
-
- if (ptr != NULL)
- {
- size_t oldbytes;
-
- oldbytes = ((h->vtable_entries_size / file_align + 1)
- * sizeof (boolean));
- memset (((char *) ptr) + oldbytes, 0, bytes - oldbytes);
- }
- }
- else
- ptr = bfd_zmalloc ((bfd_size_type) bytes);
-
- if (ptr == NULL)
- return false;
-
- /* And arrange for that done flag to be at index -1. */
- h->vtable_entries_used = ptr + 1;
- h->vtable_entries_size = size;
- }
-
- h->vtable_entries_used[addend / file_align] = true;
-
- return true;
-}
-
-/* And an accompanying bit to work out final got entry offsets once
- we're done. Should be called from final_link. */
-
-boolean
-elf_gc_common_finalize_got_offsets (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- bfd *i;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
- bfd_vma gotoff;
-
- /* The GOT offset is relative to the .got section, but the GOT header is
- put into the .got.plt section, if the backend uses it. */
- if (bed->want_got_plt)
- gotoff = 0;
- else
- gotoff = bed->got_header_size;
-
- /* Do the local .got entries first. */
- for (i = info->input_bfds; i; i = i->link_next)
- {
- bfd_signed_vma *local_got;
- bfd_size_type j, locsymcount;
- Elf_Internal_Shdr *symtab_hdr;
-
- if (bfd_get_flavour (i) != bfd_target_elf_flavour)
- continue;
-
- local_got = elf_local_got_refcounts (i);
- if (!local_got)
- continue;
-
- symtab_hdr = &elf_tdata (i)->symtab_hdr;
- if (elf_bad_symtab (i))
- locsymcount = symtab_hdr->sh_size / sizeof (Elf_External_Sym);
- else
- locsymcount = symtab_hdr->sh_info;
-
- for (j = 0; j < locsymcount; ++j)
- {
- if (local_got[j] > 0)
- {
- local_got[j] = gotoff;
- gotoff += ARCH_SIZE / 8;
- }
- else
- local_got[j] = (bfd_vma) -1;
- }
- }
-
- /* Then the global .got entries. .plt refcounts are handled by
- adjust_dynamic_symbol */
- elf_link_hash_traverse (elf_hash_table (info),
- elf_gc_allocate_got_offsets,
- (PTR) &gotoff);
- return true;
-}
-
-/* We need a special top-level link routine to convert got reference counts
- to real got offsets. */
-
-static boolean
-elf_gc_allocate_got_offsets (h, offarg)
- struct elf_link_hash_entry *h;
- PTR offarg;
-{
- bfd_vma *off = (bfd_vma *) offarg;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if (h->got.refcount > 0)
- {
- h->got.offset = off[0];
- off[0] += ARCH_SIZE / 8;
- }
- else
- h->got.offset = (bfd_vma) -1;
-
- return true;
-}
-
-/* Many folk need no more in the way of final link than this, once
- got entry reference counting is enabled. */
-
-boolean
-elf_gc_common_final_link (abfd, info)
- bfd *abfd;
- struct bfd_link_info *info;
-{
- if (!elf_gc_common_finalize_got_offsets (abfd, info))
- return false;
-
- /* Invoke the regular ELF backend linker to do all the work. */
- return elf_bfd_final_link (abfd, info);
-}
-
-/* This function will be called though elf_link_hash_traverse to store
- all hash value of the exported symbols in an array. */
-
-static boolean
-elf_collect_hash_codes (h, data)
- struct elf_link_hash_entry *h;
- PTR data;
-{
- unsigned long **valuep = (unsigned long **) data;
- const char *name;
- char *p;
- unsigned long ha;
- char *alc = NULL;
-
- if (h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- /* Ignore indirect symbols. These are added by the versioning code. */
- if (h->dynindx == -1)
- return true;
-
- name = h->root.root.string;
- p = strchr (name, ELF_VER_CHR);
- if (p != NULL)
- {
- alc = bfd_malloc ((bfd_size_type) (p - name + 1));
- memcpy (alc, name, (size_t) (p - name));
- alc[p - name] = '\0';
- name = alc;
- }
-
- /* Compute the hash value. */
- ha = bfd_elf_hash (name);
-
- /* Store the found hash value in the array given as the argument. */
- *(*valuep)++ = ha;
-
- /* And store it in the struct so that we can put it in the hash table
- later. */
- h->elf_hash_value = ha;
-
- if (alc != NULL)
- free (alc);
-
- return true;
-}
-
-boolean
-elf_reloc_symbol_deleted_p (offset, cookie)
- bfd_vma offset;
- PTR cookie;
-{
- struct elf_reloc_cookie *rcookie = (struct elf_reloc_cookie *) cookie;
-
- if (rcookie->bad_symtab)
- rcookie->rel = rcookie->rels;
-
- for (; rcookie->rel < rcookie->relend; rcookie->rel++)
- {
- unsigned long r_symndx = ELF_R_SYM (rcookie->rel->r_info);
-
- if (! rcookie->bad_symtab)
- if (rcookie->rel->r_offset > offset)
- return false;
- if (rcookie->rel->r_offset != offset)
- continue;
-
- if (r_symndx >= rcookie->locsymcount
- || ELF_ST_BIND (rcookie->locsyms[r_symndx].st_info) != STB_LOCAL)
- {
- struct elf_link_hash_entry *h;
-
- h = rcookie->sym_hashes[r_symndx - rcookie->extsymoff];
-
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
- if ((h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && elf_discarded_section (h->root.u.def.section))
- return true;
- else
- return false;
- }
- else
- {
- /* It's not a relocation against a global symbol,
- but it could be a relocation against a local
- symbol for a discarded section. */
- asection *isec;
- Elf_Internal_Sym *isym;
-
- /* Need to: get the symbol; get the section. */
- isym = &rcookie->locsyms[r_symndx];
- if (isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE)
- {
- isec = section_from_elf_index (rcookie->abfd, isym->st_shndx);
- if (isec != NULL && elf_discarded_section (isec))
- return true;
- }
- }
- return false;
- }
- return false;
-}
-
-/* Discard unneeded references to discarded sections.
- Returns true if any section's size was changed. */
-/* This function assumes that the relocations are in sorted order,
- which is true for all known assemblers. */
-
-boolean
-elf_bfd_discard_info (output_bfd, info)
- bfd *output_bfd;
- struct bfd_link_info *info;
-{
- struct elf_reloc_cookie cookie;
- asection *stab, *eh, *ehdr;
- Elf_Internal_Shdr *symtab_hdr;
- struct elf_backend_data *bed;
- bfd *abfd;
- boolean ret = false;
- boolean strip = info->strip == strip_all || info->strip == strip_debugger;
-
- if (info->relocateable
- || info->traditional_format
- || info->hash->creator->flavour != bfd_target_elf_flavour
- || ! is_elf_hash_table (info))
- return false;
-
- ehdr = NULL;
- if (elf_hash_table (info)->dynobj != NULL)
- ehdr = bfd_get_section_by_name (elf_hash_table (info)->dynobj,
- ".eh_frame_hdr");
-
- for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link_next)
- {
- if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
- continue;
-
- bed = get_elf_backend_data (abfd);
-
- if ((abfd->flags & DYNAMIC) != 0)
- continue;
-
- eh = NULL;
- if (ehdr)
- {
- eh = bfd_get_section_by_name (abfd, ".eh_frame");
- if (eh && (eh->_raw_size == 0
- || bfd_is_abs_section (eh->output_section)))
- eh = NULL;
- }
-
- stab = NULL;
- if (!strip)
- {
- stab = bfd_get_section_by_name (abfd, ".stab");
- if (stab && (stab->_raw_size == 0
- || bfd_is_abs_section (stab->output_section)))
- stab = NULL;
- }
- if ((! stab
- || elf_section_data(stab)->sec_info_type != ELF_INFO_TYPE_STABS)
- && ! eh
- && (strip || ! bed->elf_backend_discard_info))
- continue;
-
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- cookie.abfd = abfd;
- cookie.sym_hashes = elf_sym_hashes (abfd);
- cookie.bad_symtab = elf_bad_symtab (abfd);
- if (cookie.bad_symtab)
- {
- cookie.locsymcount =
- symtab_hdr->sh_size / sizeof (Elf_External_Sym);
- cookie.extsymoff = 0;
- }
- else
- {
- cookie.locsymcount = symtab_hdr->sh_info;
- cookie.extsymoff = symtab_hdr->sh_info;
- }
-
- cookie.locsyms = (Elf_Internal_Sym *) symtab_hdr->contents;
- if (cookie.locsyms == NULL && cookie.locsymcount != 0)
- {
- cookie.locsyms = bfd_elf_get_elf_syms (abfd, symtab_hdr,
- cookie.locsymcount, 0,
- NULL, NULL, NULL);
- if (cookie.locsyms == NULL)
- return false;
- }
-
- if (stab)
- {
- cookie.rels = (NAME(_bfd_elf,link_read_relocs)
- (abfd, stab, (PTR) NULL, (Elf_Internal_Rela *) NULL,
- info->keep_memory));
- if (cookie.rels)
- {
- cookie.rel = cookie.rels;
- cookie.relend =
- cookie.rels + stab->reloc_count * bed->s->int_rels_per_ext_rel;
- if (_bfd_discard_section_stabs (abfd, stab,
- elf_section_data (stab)->sec_info,
- elf_reloc_symbol_deleted_p,
- &cookie))
- ret = true;
- if (elf_section_data (stab)->relocs != cookie.rels)
- free (cookie.rels);
- }
- }
-
- if (eh)
- {
- cookie.rels = NULL;
- cookie.rel = NULL;
- cookie.relend = NULL;
- if (eh->reloc_count)
- cookie.rels = (NAME(_bfd_elf,link_read_relocs)
- (abfd, eh, (PTR) NULL, (Elf_Internal_Rela *) NULL,
- info->keep_memory));
- if (cookie.rels)
- {
- cookie.rel = cookie.rels;
- cookie.relend =
- cookie.rels + eh->reloc_count * bed->s->int_rels_per_ext_rel;
- }
- if (_bfd_elf_discard_section_eh_frame (abfd, info, eh, ehdr,
- elf_reloc_symbol_deleted_p,
- &cookie))
- {
- /* Relocs have been edited. Ensure edited version is
- used later in relocate_section. */
- elf_section_data (eh)->relocs = cookie.rels;
- ret = true;
- }
- if (cookie.rels && elf_section_data (eh)->relocs != cookie.rels)
- free (cookie.rels);
- }
-
- if (bed->elf_backend_discard_info)
- {
- if (bed->elf_backend_discard_info (abfd, &cookie, info))
- ret = true;
- }
-
- if (cookie.locsyms != NULL
- && symtab_hdr->contents != (unsigned char *) cookie.locsyms)
- {
- if (! info->keep_memory)
- free (cookie.locsyms);
- else
- symtab_hdr->contents = (unsigned char *) cookie.locsyms;
- }
- }
-
- if (ehdr && _bfd_elf_discard_section_eh_frame_hdr (output_bfd, info, ehdr))
- ret = true;
- return ret;
-}
-
-static boolean
-elf_section_ignore_discarded_relocs (sec)
- asection *sec;
-{
- struct elf_backend_data *bed;
-
- switch (elf_section_data (sec)->sec_info_type)
- {
- case ELF_INFO_TYPE_STABS:
- case ELF_INFO_TYPE_EH_FRAME:
- return true;
- default:
- break;
- }
-
- bed = get_elf_backend_data (sec->owner);
- if (bed->elf_backend_ignore_discarded_relocs != NULL
- && (*bed->elf_backend_ignore_discarded_relocs) (sec))
- return true;
-
- return false;
-}
diff --git a/contrib/binutils/bfd/po/POTFILES.in b/contrib/binutils/bfd/po/POTFILES.in
deleted file mode 100644
index f75b4caec898..000000000000
--- a/contrib/binutils/bfd/po/POTFILES.in
+++ /dev/null
@@ -1,255 +0,0 @@
-aix386-core.c
-aout0.c
-aout32.c
-aout64.c
-aout-adobe.c
-aout-arm.c
-aout-cris.c
-aoutf1.h
-aout-ns32k.c
-aout-sparcle.c
-aout-target.h
-aout-tic30.c
-aoutx.h
-archive.c
-archures.c
-armnetbsd.c
-bfd.c
-binary.c
-bout.c
-cache.c
-cf-i386lynx.c
-cf-m68klynx.c
-cf-sparclynx.c
-cisco-core.c
-coff64-rs6000.c
-coff-a29k.c
-coff-alpha.c
-coff-apollo.c
-coff-arm.c
-coff-aux.c
-coffcode.h
-coffgen.c
-coff-go32.c
-coff-h8300.c
-coff-h8500.c
-coff-i386.c
-coff-i860.c
-coff-i960.c
-cofflink.c
-coff-m68k.c
-coff-m88k.c
-coff-mips.c
-coff-pmac.c
-coff-rs6000.c
-coff-sh.c
-coff-sparc.c
-coff-stgo32.c
-coff-svm68k.c
-coffswap.h
-coff-tic30.c
-coff-tic54x.c
-coff-tic80.c
-coff-u68k.c
-coff-w65.c
-coff-we32k.c
-coff-z8k.c
-corefile.c
-cpu-a29k.c
-cpu-alpha.c
-cpu-arc.c
-cpu-arm.c
-cpu-avr.c
-cpu-cris.c
-cpu-d10v.c
-cpu-d30v.c
-cpu-fr30.c
-cpu-h8300.c
-cpu-h8500.c
-cpu-hppa.c
-cpu-i370.c
-cpu-i386.c
-cpu-i860.c
-cpu-i960.c
-cpu-ia64.c
-cpu-m10200.c
-cpu-m10300.c
-cpu-m32r.c
-cpu-m68hc11.c
-cpu-m68hc12.c
-cpu-m68k.c
-cpu-m88k.c
-cpu-mcore.c
-cpu-mips.c
-cpu-ns32k.c
-cpu-pj.c
-cpu-powerpc.c
-cpu-rs6000.c
-cpu-sh.c
-cpu-sparc.c
-cpu-tic30.c
-cpu-tic54x.c
-cpu-tic80.c
-cpu-v850.c
-cpu-vax.c
-cpu-w65.c
-cpu-we32k.c
-cpu-z8k.c
-demo64.c
-dwarf1.c
-dwarf2.c
-ecoff.c
-ecofflink.c
-ecoffswap.h
-efi-app-ia32.c
-efi-app-ia64.c
-elf32-arc.c
-elf32-arm.h
-elf32-avr.c
-elf32.c
-elf32-cris.c
-elf32-d10v.c
-elf32-d30v.c
-elf32-fr30.c
-elf32-gen.c
-elf32-hppa.c
-elf32-hppa.h
-elf32-i370.c
-elf32-i386.c
-elf32-i860.c
-elf32-i960.c
-elf32-m32r.c
-elf32-m68hc11.c
-elf32-m68hc12.c
-elf32-m68k.c
-elf32-m88k.c
-elf32-mcore.c
-elf32-mips.c
-elf32-pj.c
-elf32-ppc.c
-elf32-sh.c
-elf32-sh-lin.c
-elf32-sparc.c
-elf32-v850.c
-elf64-alpha.c
-elf64.c
-elf64-gen.c
-elf64-hppa.c
-elf64-hppa.h
-elf64-mips.c
-elf64-sparc.c
-elf64-x86-64.c
-elfarm-nabi.c
-elfarm-oabi.c
-elf-bfd.h
-elf.c
-elfcode.h
-elfcore.h
-elf-hppa.h
-elflink.c
-elflink.h
-elf-m10200.c
-elf-m10300.c
-epoc-pe-arm.c
-epoc-pei-arm.c
-format.c
-freebsd.h
-genlink.h
-go32stub.h
-hash.c
-hp300bsd.c
-hp300hpux.c
-hpux-core.c
-i386aout.c
-i386bsd.c
-i386dynix.c
-i386freebsd.c
-i386linux.c
-i386lynx.c
-i386mach3.c
-i386msdos.c
-i386netbsd.c
-i386os9k.c
-ieee.c
-ihex.c
-init.c
-irix-core.c
-libaout.h
-libbfd.c
-libbfd.h
-libcoff.h
-libecoff.h
-libhppa.h
-libieee.h
-libnlm.h
-liboasys.h
-libpei.h
-linker.c
-lynx-core.c
-m68k4knetbsd.c
-m68klinux.c
-m68klynx.c
-m68knetbsd.c
-m88kmach3.c
-mipsbsd.c
-netbsd.h
-newsos3.c
-nlm32-alpha.c
-nlm32.c
-nlm32-i386.c
-nlm32-ppc.c
-nlm32-sparc.c
-nlm64.c
-nlm.c
-nlmcode.h
-nlmswap.h
-nlm-target.h
-ns32k.h
-ns32knetbsd.c
-oasys.c
-opncls.c
-osf-core.c
-pc532-mach.c
-pe-arm.c
-pe-i386.c
-pei-arm.c
-peicode.h
-peigen.c
-pei-i386.c
-pei-mcore.c
-pei-mips.c
-pei-ppc.c
-pei-sh.c
-pe-mcore.c
-pe-mips.c
-pe-ppc.c
-pe-sh.c
-ppcboot.c
-reloc16.c
-reloc.c
-riscix.c
-sco5-core.c
-section.c
-som.c
-som.h
-sparclinux.c
-sparclynx.c
-sparcnetbsd.c
-srec.c
-stabs.c
-stab-syms.c
-sunos.c
-syms.c
-targets.c
-tekhex.c
-trad-core.c
-vaxnetbsd.c
-versados.c
-vms.c
-vms-gsd.c
-vms.h
-vms-hdr.c
-vms-misc.c
-vms-tir.c
-xcofflink.c
-xcoff-target.h
diff --git a/contrib/binutils/binutils/acconfig.h b/contrib/binutils/binutils/acconfig.h
deleted file mode 100644
index c38c529c901c..000000000000
--- a/contrib/binutils/binutils/acconfig.h
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
-
-/* Configured target name. */
-#undef TARGET
-
-/* Whether strstr must be declared even if <string.h> is included. */
-#undef NEED_DECLARATION_STRSTR
-
-/* Whether fprintf must be declared even if <stdio.h> is included. */
-#undef NEED_DECLARATION_FPRINTF
-
-/* Whether sbrk must be declared even if <unistd.h> is included. */
-#undef NEED_DECLARATION_SBRK
-
-/* Whether getenv must be declared even if <stdlib.h> is included. */
-#undef NEED_DECLARATION_GETENV
-@TOP@
-
-/* Is the type time_t defined in <time.h>? */
-#undef HAVE_TIME_T_IN_TIME_H
-
-/* Is the type time_t defined in <sys/types.h>? */
-#undef HAVE_TIME_T_IN_TYPES_H
-
-/* Does <utime.h> define struct utimbuf? */
-#undef HAVE_GOOD_UTIME_H
-
-/* Do we need to use the b modifier when opening binary files? */
-#undef USE_BINARY_FOPEN
diff --git a/contrib/binutils/binutils/addr2line.1 b/contrib/binutils/binutils/addr2line.1
deleted file mode 100644
index 4294a502ecae..000000000000
--- a/contrib/binutils/binutils/addr2line.1
+++ /dev/null
@@ -1,502 +0,0 @@
-.\" Copyright (c) 1997, 2000 Free Software Foundation
-.\" See COPYING for conditions for redistribution
-.TH addr2line 1 "27 March 1997" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-addr2line \- convert addresses into file names and line numbers
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B addr2line
-.RB "[\|" "\-b\ "\c
-.I bfdname\c
-.RB " | " "\-\-target="\c
-.I bfdname\c
-\&\|]
-.RB "[\|" \-C | \-\-demangle "\|]"
-.RB "[\|" "\-e\ "\c
-.I filename\c
-.RB " | " "\-\-exe="\c
-.I filename\c
-\&\|]
-.RB "[\|" \-f | \-\-functions "\|]"
-.RB "[\|" \-s | \-\-basenames "\|]"
-.RB "[\|" \-H | \-\-help "\|]"
-.RB "[\|" \-V | \-\-version "\|]"
-.RB "[\|" addr addr ... "\|]"
-.ad b
-.hy 1
-.SH DESCRIPTION
-\c
-.B addr2line
-translates program addresses into file names and line numbers. Given
-an address and an executable, it uses the debugging information in the
-executable to figure out which file name and line number are
-associated with a given address.
-
-The executable to use is specified with the
-.B \-e
-option. The default is
-.B a.out\c
-\&.
-
-.B addr2line
-has two modes of operation.
-
-In the first, hexadecimal addresses are specified on the command line,
-and
-.B addr2line
-displays the file name and line number for each address.
-
-In the second,
-.B addr2line
-reads hexadecimal addresses from standard input, and prints the file
-name and line number for each address on standard output. In this
-mode,
-.B addr2line
-may be used in a pipe to convert dynamically chosen addresses.
-
-The format of the output is FILENAME:LINENO. The file name and line
-number for each address is printed on a separate line. If the
-.B \-f
-option is used, then each FILENAME:LINENO line is preceded by a
-FUNCTIONNAME line which is the name of the function containing the
-address.
-
-If the file name or function name can not be determined,
-.B addr2line
-will print two question marks in their place. If the line number can
-not be determined,
-.B addr2line
-will print 0.
-
-.SH OPTIONS
-.TP
-.BI "\-b " "bfdname"\c
-.TP
-.BI "\-\-target=" "bfdname"
-Specify the object-code format for the object files to be
-\c
-.I bfdname\c
-\&.
-
-.TP
-.B \-C
-.TP
-.B \-\-demangle
-Decode (\fIdemangle\fP) low-level symbol names into user-level names.
-Besides removing any initial underscore prepended by the system, this
-makes C++ function names readable.
-
-.TP
-.BI "\-e " "filename"\c
-.TP
-.BI "\-\-exe=" "filename"
-Specify the name of the executable for which addresses should be
-translated. The default file is
-.B a.out\c
-\&.
-
-.TP
-.B \-f
-.TP
-.B \-\-functions
-Display function names as well as file and line number information.
-
-.TP
-.B \-s
-.TP
-.B \-\-basenames
-Display only the base of each file name.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (October 1991).
-
-.SH COPYING
-Copyright (c) 1993, 94, 95, 96, 97, 98, 1999, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/ar.1 b/contrib/binutils/binutils/ar.1
deleted file mode 100644
index d7b2caff8e64..000000000000
--- a/contrib/binutils/binutils/ar.1
+++ /dev/null
@@ -1,891 +0,0 @@
-.\" Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH ar 1 "1999" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-ar \- create, modify, and extract from archives.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.BR ar " [\|" "-" "\|]"\c
-.I {dmpqrtx}[abcfilNoPsSuvV] \c
-[\|\c
-.I membername\c
-\&\|] \c
-[\|\c
-.I count\c
-\&\|] \c
-.I archive\c
-\& \c
-.I files\c
-\&.\|.\|.
-
-.ad b
-.hy 1
-.SH DESCRIPTION
-The GNU \c
-.B ar\c
-\& program creates, modifies, and extracts from
-archives. An \c
-.I archive\c
-\& is a single file holding a collection of
-other files in a structure that makes it possible to retrieve
-the original individual files (called \c
-.I members\c
-\& of the archive).
-
-The original files' contents, mode (permissions), timestamp, owner, and
-group are preserved in the archive, and may be reconstituted on
-extraction.
-
-GNU \c
-.B ar\c
-\& can maintain archives whose members have names of any
-length; however, depending on how \c
-.B ar\c
-\& 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).
-
-\c
-.B ar\c
-\& is considered a binary utility because archives of this sort
-are most often used as \c
-.I libraries\c
-\& holding commonly needed
-subroutines.
-
-\c
-.B ar\c
-\& will create an index to the symbols defined in relocatable
-object modules in the archive when you specify the modifier `\|\c
-.B s\c
-\|'.
-Once created, this index is updated in the archive whenever \c
-.B ar\c
-\&
-makes a change to its contents (save for the `\|\c
-.B q\c
-\|' 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.
-
-You may use `\|\c
-.B nm \-s\c
-\|' or `\|\c
-.B nm \-\-print\-armap\c
-\|' to list this index
-table. If an archive lacks the table, another form of \c
-.B ar\c
-\& called
-\c
-.B ranlib\c
-\& can be used to add just the table.
-
-\c
-.B ar\c
-\& insists on at least two arguments to execute: one
-keyletter specifying the \c
-.I operation\c
-\& (optionally accompanied by other
-keyletters specifying \c
-.I modifiers\c
-\&), and the archive name to act on.
-
-Most operations can also accept further \c
-.I files\c
-\& arguments,
-specifying particular files to operate on.
-
-.SH OPTIONS
-GNU \c
-.B ar\c
-\& allows you to mix the operation code \c
-.I p\c
-\& and modifier
-flags \c
-.I mod\c
-\& in any order, within the first command-line argument.
-
-If you wish, you may begin the first command-line argument with a
-dash.
-
-The \c
-.I p\c
-\& keyletter specifies what operation to execute; it may be
-any of the following, but you must specify only one of them:
-
-.TP
-.B d
-\c
-.I Delete\c
-\& modules from the archive. Specify the names of modules to
-be deleted as \c
-.I files\c
-\&; the archive is untouched if you
-specify no files to delete.
-
-If you specify the `\|\c
-.B v\c
-\|' modifier, \c
-.B ar\c
-\& will list each module
-as it is deleted.
-
-.TP
-.B m
-Use this operation to \c
-.I move\c
-\& members in an archive.
-
-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.
-
-If no modifiers are used with \c
-.B m\c
-\&, any members you name in the
-\c
-.I files\c
-\& arguments are moved to the \c
-.I end\c
-\& of the archive;
-you can use the `\|\c
-.B a\c
-\|', `\|\c
-.B b\c
-\|', or `\|\c
-.B i\c
-\|' modifiers to move them to a
-specified place instead.
-
-.TP
-.B p
-\c
-.I Print\c
-\& the specified members of the archive, to the standard
-output file. If the `\|\c
-.B v\c
-\|' modifier is specified, show the member
-name before copying its contents to standard output.
-
-If you specify no \c
-.I files\c
-\&, all the files in the archive are printed.
-
-.TP
-.B q
-\c
-.I Quick append\c
-\&; add \c
-.I files\c
-\& to the end of \c
-.I archive\c
-\&,
-without checking for replacement.
-
-The modifiers `\|\c
-.B a\c
-\|', `\|\c
-.B b\c
-\|', and `\|\c
-.B i\c
-\|' do \c
-.I not\c
-\& affect this
-operation; new members are always placed at the end of the archive.
-
-The modifier `\|\c
-.B v\c
-\|' makes \c
-.B ar\c
-\& list each file as it is appended.
-
-Since the point of this operation is speed, the archive's symbol table
-index is not updated, even if it already existed; you can use `\|\c
-.B ar s\c
-\|' or
-\c
-.B ranlib\c
-\& explicitly to update the symbol table index.
-
-However, too many different systems assume quick append rebuilds the
-index, so GNU
-.B ar
-implements `\|\c
-.B q\c
-\|' as a synonym for `\|\c
-.B r\c
-\|'.
-
-.TP
-.B r
-Insert \c
-.I files\c
-\& into \c
-.I archive\c
-\& (with \c
-.I replacement\c
-\&). This
-operation differs from `\|\c
-.B q\c
-\|' in that any previously existing members
-are deleted if their names match those being added.
-
-If one of the files named in \c
-.I files\c
-\& doesn't exist, \c
-.B ar\c
-\&
-displays an error message, and leaves undisturbed any existing members
-of the archive matching that name.
-
-By default, new members are added at the end of the file; but you may
-use one of the modifiers `\|\c
-.B a\c
-\|', `\|\c
-.B b\c
-\|', or `\|\c
-.B i\c
-\|' to request
-placement relative to some existing member.
-
-The modifier `\|\c
-.B v\c
-\|' used with this operation elicits a line of
-output for each file inserted, along with one of the letters `\|\c
-.B a\c
-\|' or
-`\|\c
-.B r\c
-\|' to indicate whether the file was appended (no old member
-deleted) or replaced.
-
-.TP
-.B t
-Display a \c
-.I table\c
-\& listing the contents of \c
-.I archive\c
-\&, or those
-of the files listed in \c
-.I files\c
-\& 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 `\|\c
-.B v\c
-\|' modifier.
-
-If you do not specify any \c
-.I files\c
-\&, all files in the archive
-are listed.
-
-If there is more than one file with the same name (say, `\|\c
-.B fie\c
-\|') in
-an archive (say `\|\c
-.B b.a\c
-\|'), `\|\c
-.B ar t b.a fie\c
-\|' will list only the
-first instance; to see them all, you must ask for a complete
-listing\(em\&in our example, `\|\c
-.B ar t b.a\c
-\|'.
-
-.TP
-.B x
-\c
-.I Extract\c
-\& members (named \c
-.I files\c
-\&) from the archive. You can
-use the `\|\c
-.B v\c
-\|' modifier with this operation, to request that
-\c
-.B ar\c
-\& list each name as it extracts it.
-
-If you do not specify any \c
-.I files\c
-\&, all files in the archive
-are extracted.
-
-.PP
-
-A number of modifiers (\c
-.I mod\c
-\&) may immediately follow the \c
-.I p\c
-\&
-keyletter, to specify variations on an operation's behavior:
-
-.TP
-.B a
-Add new files \c
-.I after\c
-\& an existing member of the
-archive. If you use the modifier \c
-.B a\c
-\&, the name of an existing archive
-member must be present as the \c
-.I membername\c
-\& argument, before the
-\c
-.I archive\c
-\& specification.
-
-.TP
-.B b
-Add new files \c
-.I before\c
-\& an existing member of the
-archive. If you use the modifier \c
-.B b\c
-\&, the name of an existing archive
-member must be present as the \c
-.I membername\c
-\& argument, before the
-\c
-.I archive\c
-\& specification. (same as `\|\c
-.B i\c
-\|').
-
-.TP
-.B c
-\c
-.I Create\c
-\& the archive. The specified \c
-.I archive\c
-\& is always
-created if it didn't 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.
-
-.TP
-.B f
-Truncate names in the archive.
-.B ar
-will normally permit file names of any length. This will cause it to
-create archives which are not compatible with the native
-.B ar
-program on some systems. If this is a concern, the
-.B f
-modifier may be used to truncate file names when putting them in the
-archive.
-
-.TP
-.B i
-Insert new files \c
-.I before\c
-\& an existing member of the
-archive. If you use the modifier \c
-.B i\c
-\&, the name of an existing archive
-member must be present as the \c
-.I membername\c
-\& argument, before the
-\c
-.I archive\c
-\& specification. (same as `\|\c
-.B b\c
-\|').
-
-.TP
-.B l
-This modifier is accepted but not used.
-
-.TP
-.B N
-Uses the
-.I count
-parameter. This is used if there are multiple entries in the archive
-with the same name. Extract or delete instance
-.I count
-of the given name from the archive.
-
-.TP
-.B o
-Preserve the \c
-.I original\c
-\& dates of members when extracting them. If
-you do not specify this modifier, files extracted from the archive
-will be stamped with the time of extraction.
-
-.TP
-.B P
-Use the full path name when matching names in the archive.
-.B ar
-can not create an archive with a full path name (such archives are not
-POSIX complaint), but other archive creators can. This option will
-cause
-.B ar
-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.
-
-.TP
-.B 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 `\|\c
-.B ar s\c
-\|' on an
-archive is equivalent to running `\|\c
-.B ranlib\c
-\|' on it.
-
-.TP
-.B 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
-`\|\c
-.B S\c
-\|' modifier on the last execution of `\|\c
-.B ar\c
-\|', or you must run `\|\c
-.B ranlib\c
-\|' on the archive.
-
-.TP
-.B u
-Normally, \c
-.B ar r\c
-\&.\|.\|. inserts all files
-listed into the archive. If you would like to insert \c
-.I only\c
-\& those
-of the files you list that are newer than existing members of the same
-names, use this modifier. The `\|\c
-.B u\c
-\|' modifier is allowed only for the
-operation `\|\c
-.B r\c
-\|' (replace). In particular, the combination `\|\c
-.B qu\c
-\|' is
-not allowed, since checking the timestamps would lose any speed
-advantage from the operation `\|\c
-.B q\c
-\|'.
-
-.TP
-.B v
-This modifier requests the \c
-.I verbose\c
-\& version of an operation. Many
-operations display additional information, such as filenames processed,
-when the modifier `\|\c
-.B v\c
-\|' is appended.
-
-.TP
-.B V
-This modifier shows the version number of
-.BR ar .
-
-.PP
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-, Roland H. Pesch (October 1991).
-.BR nm ( 1 )\c
-\&,
-.BR ranlib ( 1 )\c
-\&.
-
-.SH COPYING
-Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/binutils.texi b/contrib/binutils/binutils/binutils.texi
deleted file mode 100644
index 74e7cda41ee1..000000000000
--- a/contrib/binutils/binutils/binutils.texi
+++ /dev/null
@@ -1,3469 +0,0 @@
-\input texinfo @c -*- Texinfo -*-
-@setfilename binutils.info
-@include config.texi
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Binutils: (binutils). The GNU binary utilities.
-* ar: (binutils)ar. Create, modify, and extract from archives
-* 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
-* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols
-* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt
-* addr2line: (binutils)addr2line. Convert addresses to file and line
-* nlmconv: (binutils)nlmconv. Converts object code into an NLM
-* windres: (binutils)windres. Manipulate Windows resources
-* dlltool: (binutils)dlltool. Create files needed to build and use DLLs
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@ifinfo
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 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.1
- 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".
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-@end ifinfo
-
-@synindex ky cp
-@c
-@c This file documents the GNU binary utilities "ar", "ld", "objcopy",
-@c "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib".
-@c
-@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-@c
-@c This text may be freely distributed under the terms of the GNU
-@c Free Documentation License.
-@c
-
-@setchapternewpage odd
-@settitle @sc{gnu} Binary Utilities
-@titlepage
-@finalout
-@title The @sc{gnu} Binary Utilities
-@subtitle Version @value{VERSION}
-@sp 1
-@subtitle May 1993
-@author Roland H. Pesch
-@author Jeffrey M. Osier
-@author Cygnus Support
-@page
-
-@tex
-{\parskip=0pt \hfill Cygnus Support\par \hfill
-\TeX{}info \texinfoversion\par }
-@end tex
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001 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.1
- 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".
-
-@end titlepage
-
-@node Top
-@top Introduction
-
-@cindex version
-This brief manual contains preliminary documentation for the @sc{gnu} binary
-utilities (collectively version @value{VERSION}):
-
-@iftex
-@table @code
-@item ar
-Create, modify, and extract from archives
-
-@item nm
-List symbols from object files
-
-@item objcopy
-Copy and translate object files
-
-@item objdump
-Display information from object files
-
-@item ranlib
-Generate index to archive contents
-
-@item readelf
-Display the contents of ELF format files.
-
-@item size
-List file section sizes and total size
-
-@item strings
-List printable strings from files
-
-@item strip
-Discard symbols
-
-@item c++filt
-Demangle encoded C++ symbols (on MS-DOS, this program is named
-@code{cxxfilt})
-
-@item addr2line
-Convert addresses into file names and line numbers
-
-@item nlmconv
-Convert object code into a Netware Loadable Module
-
-@item windres
-Manipulate Windows resources
-
-@item dlltool
-Create the files needed to build and use Dynamic Link Libraries
-@end table
-@end iftex
-
-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
-* 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
-* readelf:: Display the contents of ELF format files.
-* 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
-* windres:: Manipulate Windows resources
-* dlltool:: Create files needed to build and use DLLs
-* Selecting The Target System:: How these utilities determine the target.
-* Reporting Bugs:: Reporting Bugs
-* GNU Free Documentation License:: GNU Free Documentation License
-* Index:: Index
-@end menu
-
-@node ar
-@chapter ar
-
-@kindex ar
-@cindex archives
-@cindex collections of files
-@smallexample
-ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
-ar -M [ <mri-script ]
-@end smallexample
-
-The @sc{gnu} @code{ar} program creates, modifies, and extracts from
-archives. An @dfn{archive} is a single file holding a collection of
-other files in a structure that makes it possible to retrieve
-the original individual files (called @dfn{members} of the archive).
-
-The original files' contents, mode (permissions), timestamp, owner, and
-group are preserved in the archive, and can be restored on
-extraction.
-
-@cindex name length
-@sc{gnu} @code{ar} can maintain archives whose members have names of any
-length; however, depending on how @code{ar} 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).
-
-@cindex libraries
-@code{ar} is considered a binary utility because archives of this sort
-are most often used as @dfn{libraries} holding commonly needed
-subroutines.
-
-@cindex symbol index
-@code{ar} creates an index to the symbols defined in relocatable
-object modules in the archive when you specify the modifier @samp{s}.
-Once created, this index is updated in the archive whenever @code{ar}
-makes a change to its contents (save for the @samp{q} 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.
-
-You may use @samp{nm -s} or @samp{nm --print-armap} to list this index
-table. If an archive lacks the table, another form of @code{ar} called
-@code{ranlib} can be used to add just the table.
-
-@cindex compatibility, @code{ar}
-@cindex @code{ar} compatibility
-@sc{gnu} @code{ar} is designed to be compatible with two different
-facilities. You can control its activity using command-line options,
-like the different varieties of @code{ar} on Unix systems; or, if you
-specify the single command-line option @samp{-M}, you can control it
-with a script supplied via standard input, like the MRI ``librarian''
-program.
-
-@menu
-* ar cmdline:: Controlling @code{ar} on the command line
-* ar scripts:: Controlling @code{ar} with a script
-@end menu
-
-@page
-@node ar cmdline
-@section Controlling @code{ar} on the command line
-
-@smallexample
-ar [-X32_64] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
-@end smallexample
-
-@cindex Unix compatibility, @code{ar}
-When you use @code{ar} in the Unix style, @code{ar} insists on at least two
-arguments to execute: one keyletter specifying the @emph{operation}
-(optionally accompanied by other keyletters specifying
-@emph{modifiers}), and the archive name to act on.
-
-Most operations can also accept further @var{member} arguments,
-specifying particular files to operate on.
-
-@sc{gnu} @code{ar} allows you to mix the operation code @var{p} and modifier
-flags @var{mod} in any order, within the first command-line argument.
-
-If you wish, you may begin the first command-line argument with a
-dash.
-
-@cindex operations on archive
-The @var{p} keyletter specifies what operation to execute; it may be
-any of the following, but you must specify only one of them:
-
-@table @code
-@item d
-@cindex deleting from archive
-@emph{Delete} modules from the archive. Specify the names of modules to
-be deleted as @var{member}@dots{}; the archive is untouched if you
-specify no files to delete.
-
-If you specify the @samp{v} modifier, @code{ar} lists each module
-as it is deleted.
-
-@item m
-@cindex moving in archive
-Use this operation to @emph{move} members in an archive.
-
-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.
-
-If no modifiers are used with @code{m}, any members you name in the
-@var{member} arguments are moved to the @emph{end} of the archive;
-you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
-specified place instead.
-
-@item p
-@cindex printing from archive
-@emph{Print} the specified members of the archive, to the standard
-output file. If the @samp{v} modifier is specified, show the member
-name before copying its contents to standard output.
-
-If you specify no @var{member} arguments, all the files in the archive are
-printed.
-
-@item q
-@cindex quick append to archive
-@emph{Quick append}; Historically, add the files @var{member}@dots{} to the end of
-@var{archive}, without checking for replacement.
-
-The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
-operation; new members are always placed at the end of the archive.
-
-The modifier @samp{v} makes @code{ar} list each file as it is appended.
-
-Since the point of this operation is speed, the archive's symbol table
-index is not updated, even if it already existed; you can use @samp{ar s} or
-@code{ranlib} explicitly to update the symbol table index.
-
-However, too many different systems assume quick append rebuilds the
-index, so GNU ar implements @code{q} as a synonym for @code{r}.
-
-@item r
-@cindex replacement in archive
-Insert the files @var{member}@dots{} into @var{archive} (with
-@emph{replacement}). This operation differs from @samp{q} in that any
-previously existing members are deleted if their names match those being
-added.
-
-If one of the files named in @var{member}@dots{} does not exist, @code{ar}
-displays an error message, and leaves undisturbed any existing members
-of the archive matching that name.
-
-By default, new members are added at the end of the file; but you may
-use one of the modifiers @samp{a}, @samp{b}, or @samp{i} to request
-placement relative to some existing member.
-
-The modifier @samp{v} used with this operation elicits a line of
-output for each file inserted, along with one of the letters @samp{a} or
-@samp{r} to indicate whether the file was appended (no old member
-deleted) or replaced.
-
-@item t
-@cindex contents of archive
-Display a @emph{table} listing the contents of @var{archive}, or those
-of the files listed in @var{member}@dots{} 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 @samp{v} modifier.
-
-If you do not specify a @var{member}, all files in the archive
-are listed.
-
-@cindex repeated names in archive
-@cindex name duplication in archive
-If there is more than one file with the same name (say, @samp{fie}) in
-an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
-first instance; to see them all, you must ask for a complete
-listing---in our example, @samp{ar t b.a}.
-@c WRS only; per Gumby, this is implementation-dependent, and in a more
-@c recent case in fact works the other way.
-
-@item x
-@cindex extract from archive
-@emph{Extract} members (named @var{member}) from the archive. You can
-use the @samp{v} modifier with this operation, to request that
-@code{ar} list each name as it extracts it.
-
-If you do not specify a @var{member}, all files in the archive
-are extracted.
-
-@end table
-
-A number of modifiers (@var{mod}) may immediately follow the @var{p}
-keyletter, to specify variations on an operation's behavior:
-
-@table @code
-@item a
-@cindex relative placement in archive
-Add new files @emph{after} an existing member of the
-archive. If you use the modifier @samp{a}, the name of an existing archive
-member must be present as the @var{relpos} argument, before the
-@var{archive} specification.
-
-@item b
-Add new files @emph{before} an existing member of the
-archive. If you use the modifier @samp{b}, the name of an existing archive
-member must be present as the @var{relpos} argument, before the
-@var{archive} specification. (same as @samp{i}).
-
-@item c
-@cindex creating archives
-@emph{Create} the archive. The specified @var{archive} 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.
-
-@item f
-Truncate names in the archive. @sc{gnu} @code{ar} will normally permit file
-names of any length. This will cause it to create archives which are
-not compatible with the native @code{ar} program on some systems. If
-this is a concern, the @samp{f} modifier may be used to truncate file
-names when putting them in the archive.
-
-@item i
-Insert new files @emph{before} an existing member of the
-archive. If you use the modifier @samp{i}, the name of an existing archive
-member must be present as the @var{relpos} argument, before the
-@var{archive} specification. (same as @samp{b}).
-
-@item l
-This modifier is accepted but not used.
-@c whaffor ar l modifier??? presumably compat; with
-@c what???---doc@@cygnus.com, 25jan91
-
-@item N
-Uses the @var{count} parameter. This is used if there are multiple
-entries in the archive with the same name. Extract or delete instance
-@var{count} of the given name from the archive.
-
-@item o
-@cindex dates in archive
-Preserve the @emph{original} 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.
-
-@item P
-Use the full path name when matching names in the archive. @sc{gnu}
-@code{ar} can not create an archive with a full path name (such archives
-are not POSIX complaint), but other archive creators can. This option
-will cause @sc{gnu} @code{ar} 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.
-
-@item s
-@cindex writing archive index
-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 @samp{ar s} on an
-archive is equivalent to running @samp{ranlib} on it.
-
-@item S
-@cindex not writing archive index
-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
-@samp{S} modifier on the last execution of @samp{ar}, or you must run
-@samp{ranlib} on the archive.
-
-@item u
-@cindex updating an archive
-Normally, @samp{ar r}@dots{} inserts all files
-listed into the archive. If you would like to insert @emph{only} those
-of the files you list that are newer than existing members of the same
-names, use this modifier. The @samp{u} modifier is allowed only for the
-operation @samp{r} (replace). In particular, the combination @samp{qu} is
-not allowed, since checking the timestamps would lose any speed
-advantage from the operation @samp{q}.
-
-@item v
-This modifier requests the @emph{verbose} version of an operation. Many
-operations display additional information, such as filenames processed,
-when the modifier @samp{v} is appended.
-
-@item V
-This modifier shows the version number of @code{ar}.
-@end table
-
-@code{ar} ignores an initial option spelt @code{-X32_64}, for
-compatibility with AIX. The behaviour produced by this option is the
-default for GNU @code{ar}. @code{ar} does not support any of the other
-@code{-X} options; in particular, it does not support @code{-X32}
-which is the default for AIX @code{ar}.
-
-@node ar scripts
-@section Controlling @code{ar} with a script
-
-@smallexample
-ar -M [ <@var{script} ]
-@end smallexample
-
-@cindex MRI compatibility, @code{ar}
-@cindex scripts, @code{ar}
-If you use the single command-line option @samp{-M} with @code{ar}, you
-can control its operation with a rudimentary command language. This
-form of @code{ar} operates interactively if standard input is coming
-directly from a terminal. During interactive use, @code{ar} prompts for
-input (the prompt is @samp{AR >}), and continues executing even after
-errors. If you redirect standard input to a script file, no prompts are
-issued, and @code{ar} abandons execution (with a nonzero exit code)
-on any error.
-
-The @code{ar} command language is @emph{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 @sc{gnu} @code{ar} for developers who already have scripts
-written for the MRI ``librarian'' program.
-
-The syntax for the @code{ar} command language is straightforward:
-@itemize @bullet
-@item
-commands are recognized in upper or lower case; for example, @code{LIST}
-is the same as @code{list}. In the following descriptions, commands are
-shown in upper case for clarity.
-
-@item
-a single command may appear on each line; it is the first word on the
-line.
-
-@item
-empty lines are allowed, and have no effect.
-
-@item
-comments are allowed; text after either of the characters @samp{*}
-or @samp{;} is ignored.
-
-@item
-Whenever you use a list of names as part of the argument to an @code{ar}
-command, you can separate the individual names with either commas or
-blanks. Commas are shown in the explanations below, for clarity.
-
-@item
-@samp{+} is used as a line continuation character; if @samp{+} appears
-at the end of a line, the text on the following line is considered part
-of the current command.
-@end itemize
-
-Here are the commands you can use in @code{ar} scripts, or when using
-@code{ar} interactively. Three of them have special significance:
-
-@code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
-a temporary file required for most of the other commands.
-
-@code{SAVE} commits the changes so far specified by the script. Prior
-to @code{SAVE}, commands affect only the temporary copy of the current
-archive.
-
-@table @code
-@item ADDLIB @var{archive}
-@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
-Add all the contents of @var{archive} (or, if specified, each named
-@var{module} from @var{archive}) to the current archive.
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
-@c FIXME! w/Replacement?? If so, like "ar r @var{archive} @var{names}"
-@c else like "ar q..."
-Add each named @var{member} as a module in the current archive.
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@item CLEAR
-Discard the contents of the current archive, canceling the effect of
-any operations since the last @code{SAVE}. May be executed (with no
-effect) even if no current archive is specified.
-
-@item CREATE @var{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 @var{archive} until you use @code{SAVE}.
-You can overwrite existing archives; similarly, the contents of any
-existing file named @var{archive} will not be destroyed until @code{SAVE}.
-
-@item DELETE @var{module}, @var{module}, @dots{} @var{module}
-Delete each listed @var{module} from the current archive; equivalent to
-@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
-@itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
-List each named @var{module} present in @var{archive}. The separate
-command @code{VERBOSE} specifies the form of the output: when verbose
-output is off, output is like that of @samp{ar -t @var{archive}
-@var{module}@dots{}}. When verbose output is on, the listing is like
-@samp{ar -tv @var{archive} @var{module}@dots{}}.
-
-Output normally goes to the standard output stream; however, if you
-specify @var{outputfile} as a final argument, @code{ar} directs the
-output to that file.
-
-@item END
-Exit from @code{ar}, with a @code{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 @code{SAVE} command, those
-changes are lost.
-
-@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
-Extract each named @var{module} from the current archive, writing them
-into the current directory as separate files. Equivalent to @samp{ar -x
-@var{archive} @var{module}@dots{}}.
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@ignore
-@c FIXME Tokens but no commands???
-@item FULLDIR
-
-@item HELP
-@end ignore
-
-@item LIST
-Display full contents of the current archive, in ``verbose'' style
-regardless of the state of @code{VERBOSE}. The effect is like @samp{ar
-tv @var{archive}}. (This single command is a @sc{gnu} @code{ar}
-enhancement, rather than present for MRI compatibility.)
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@item OPEN @var{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 @var{archive} until you next use @code{SAVE}.
-
-@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
-In the current archive, replace each existing @var{module} (named in
-the @code{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 @code{OPEN} or @code{CREATE}.
-
-@item VERBOSE
-Toggle an internal flag governing the output from @code{DIRECTORY}.
-When the flag is on, @code{DIRECTORY} output matches output from
-@samp{ar -tv }@dots{}.
-
-@item SAVE
-Commit your changes to the current archive, and actually save it as a
-file with the name specified in the last @code{CREATE} or @code{OPEN}
-command.
-
-Requires prior use of @code{OPEN} or @code{CREATE}.
-
-@end table
-
-@iftex
-@node ld
-@chapter ld
-@cindex linker
-@kindex ld
-The @sc{gnu} linker @code{ld} is now described in a separate manual.
-@xref{Top,, Overview,, Using LD: the @sc{gnu} linker}.
-@end iftex
-
-@node nm
-@chapter nm
-@cindex symbols
-@kindex nm
-
-@smallexample
-nm [ -a | --debug-syms ] [ -g | --extern-only ]
- [ -B ] [ -C | --demangle[=@var{style}] ] [ -D | --dynamic ]
- [ -s | --print-armap ] [ -A | -o | --print-file-name ]
- [ -n | -v | --numeric-sort ] [ -p | --no-sort ]
- [ -r | --reverse-sort ] [ --size-sort ] [ -u | --undefined-only ]
- [ -t @var{radix} | --radix=@var{radix} ] [ -P | --portability ]
- [ --target=@var{bfdname} ] [ -f @var{format} | --format=@var{format} ]
- [ --defined-only ] [-l | --line-numbers ] [ --no-demangle ]
- [ -V | --version ] [ -X 32_64 ] [ --help ] [ @var{objfile}@dots{} ]
-@end smallexample
-
-@sc{gnu} @code{nm} lists the symbols from object files @var{objfile}@dots{}.
-If no object files are listed as arguments, @code{nm} assumes the file
-@file{a.out}.
-
-For each symbol, @code{nm} shows:
-
-@itemize @bullet
-@item
-The symbol value, in the radix selected by options (see below), or
-hexadecimal by default.
-
-@item
-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
-local; if uppercase, the symbol is global (external).
-
-@c Some more detail on exactly what these symbol types are used for
-@c would be nice.
-@table @code
-@item A
-The symbol's value is absolute, and will not be changed by further
-linking.
-
-@item B
-The symbol is in the uninitialized data section (known as BSS).
-
-@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. For more details on common symbols, see the discussion of
---warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}.
-
-@item D
-The symbol is in the initialized data section.
-
-@item 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.
-
-@item I
-The symbol is an indirect reference to another symbol. This is a GNU
-extension to the a.out object file format which is rarely used.
-
-@item N
-The symbol is a debugging symbol.
-
-@item R
-The symbol is in a read only data section.
-
-@item S
-The symbol is in an uninitialized data section for small objects.
-
-@item T
-The symbol is in the text (code) section.
-
-@item U
-The symbol is undefined.
-
-@item 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.
-
-@item 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 weak symbol becomes zero with no error.
-
-@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;
-for more information, see @ref{Top,Stabs,Stabs Overview,stabs.info, The
-``stabs'' debug format}.
-
-@item ?
-The symbol type is unknown, or object file format specific.
-@end table
-
-@item
-The symbol name.
-@end itemize
-
-The long and short forms of options, shown here as alternatives, are
-equivalent.
-
-@table @code
-@item -A
-@itemx -o
-@itemx --print-file-name
-@cindex input file name
-@cindex file name
-@cindex source 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.
-
-@item -a
-@itemx --debug-syms
-@cindex debugging symbols
-Display all symbols, even debugger-only symbols; normally these are not
-listed.
-
-@item -B
-@cindex @code{nm} format
-@cindex @code{nm} compatibility
-The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
-
-@item -C
-@itemx --demangle[=@var{style}]
-@cindex demangling in nm
-Decode (@dfn{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. @xref{c++filt},
-for more information on demangling.
-
-@item --no-demangle
-Do not demangle low-level symbol names. This is the default.
-
-@item -D
-@itemx --dynamic
-@cindex dynamic symbols
-Display the dynamic symbols rather than the normal symbols. This is
-only meaningful for dynamic objects, such as certain types of shared
-libraries.
-
-@item -f @var{format}
-@itemx --format=@var{format}
-@cindex @code{nm} format
-@cindex @code{nm} compatibility
-Use the output format @var{format}, which can be @code{bsd},
-@code{sysv}, or @code{posix}. The default is @code{bsd}.
-Only the first character of @var{format} is significant; it can be
-either upper or lower case.
-
-@item -g
-@itemx --extern-only
-@cindex external symbols
-Display only external symbols.
-
-@item -l
-@itemx --line-numbers
-@cindex symbol 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.
-
-@item -n
-@itemx -v
-@itemx --numeric-sort
-Sort symbols numerically by their addresses, rather than alphabetically
-by their names.
-
-@item -p
-@itemx --no-sort
-@cindex sorting symbols
-Do not bother to sort the symbols in any order; print them in the order
-encountered.
-
-@item -P
-@itemx --portability
-Use the POSIX.2 standard output format instead of the default format.
-Equivalent to @samp{-f posix}.
-
-@item -s
-@itemx --print-armap
-@cindex symbol index, listing
-When listing symbols from archive members, include the index: a mapping
-(stored in the archive by @code{ar} or @code{ranlib}) of which modules
-contain definitions for which names.
-
-@item -r
-@itemx --reverse-sort
-Reverse the order of the sort (whether numeric or alphabetic); let the
-last come first.
-
-@item --size-sort
-Sort symbols by size. The size is computed as the difference between
-the value of the symbol and the value of the symbol with the next higher
-value. The size of the symbol is printed, rather than the value.
-
-@item -t @var{radix}
-@itemx --radix=@var{radix}
-Use @var{radix} as the radix for printing the symbol values. It must be
-@samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
-
-@item --target=@var{bfdname}
-@cindex object code format
-Specify an object code format other than your system's default format.
-@xref{Target Selection}, for more information.
-
-@item -u
-@itemx --undefined-only
-@cindex external symbols
-@cindex undefined symbols
-Display only undefined symbols (those external to each object file).
-
-@item --defined-only
-@cindex external symbols
-@cindex undefined symbols
-Display only defined symbols for each object file.
-
-@item -V
-@itemx --version
-Show the version number of @code{nm} and exit.
-
-@item -X
-This option is ignored for compatibility with the AIX version of
-@code{nm}. It takes one parameter which must be the string
-@code{32_64}. The default mode of AIX @code{nm} corresponds
-to @code{-X 32}, which is not supported by @sc{gnu} @code{nm}.
-
-@item --help
-Show a summary of the options to @code{nm} and exit.
-@end table
-
-@node objcopy
-@chapter objcopy
-
-@smallexample
-objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
- [ -I @var{bfdname} | --input-target=@var{bfdname} ]
- [ -O @var{bfdname} | --output-target=@var{bfdname} ]
- [ -S | --strip-all ] [ -g | --strip-debug ]
- [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
- [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
- [ -G @var{symbolname} | --keep-global-symbol=@var{symbolname}]
- [ -L @var{symbolname} | --localize-symbol=@var{symbolname} ]
- [ -W @var{symbolname} | --weaken-symbol=@var{symbolname} ]
- [ -x | --discard-all ] [ -X | --discard-locals ]
- [ -b @var{byte} | --byte=@var{byte} ]
- [ -i @var{interleave} | --interleave=@var{interleave} ]
- [ -j @var{sectionname} | --only-section=@var{sectionname} ]
- [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
- [ -p | --preserve-dates ] [ --debugging ]
- [ --gap-fill=@var{val} ] [ --pad-to=@var{address} ]
- [ --set-start=@var{val} ] [ --adjust-start=@var{incr} ]
- [ --change-addresses=@var{incr} ]
- [ --change-section-address @var{section}@{=,+,-@}@var{val} ]
- [ --change-section-lma @var{section}@{=,+,-@}@var{val} ]
- [ --change-section-vma @var{section}@{=,+,-@}@var{val} ]
- [ --change-warnings ] [ --no-change-warnings ]
- [ --set-section-flags @var{section}=@var{flags} ]
- [ --add-section @var{sectionname}=@var{filename} ]
- [ --change-leading-char ] [ --remove-leading-char ]
- [ --srec-len=@var{ival} ] [ --srec-forceS3 ]
- [ --redefine-sym @var{old}=@var{new} ] [ --weaken ]
- [ --keep-symbols=@var{filename} ]
- [ --strip-symbols=@var{filename} ]
- [ --keep-global-symbols=@var{filename} ]
- [ --localize-symbols=@var{filename} ]
- [ --weaken-symbols=@var{filename} ]
- [ -v | --verbose ] [ -V | --version ] [ --help ]
- @var{infile} [@var{outfile}]
-@end smallexample
-
-The @sc{gnu} @code{objcopy} utility copies the contents of an object
-file to another. @code{objcopy} uses the @sc{gnu} @sc{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 @code{objcopy} is controlled by command-line options.
-Note that @code{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.
-
-@code{objcopy} creates temporary files to do its translations and
-deletes them afterward. @code{objcopy} uses @sc{bfd} to do all its
-translation work; it has access to all the formats described in @sc{bfd}
-and thus is able to recognize most formats without being told
-explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
-
-@code{objcopy} can be used to generate S-records by using an output
-target of @samp{srec} (e.g., use @samp{-O srec}).
-
-@code{objcopy} can be used to generate a raw binary file by using an
-output target of @samp{binary} (e.g., use @samp{-O binary}). When
-@code{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 @samp{-S} to remove sections containing debugging information. In
-some cases @samp{-R} will be useful to remove sections which contain
-information that is not needed by the binary file.
-
-Note - @code{objcopy} is not able to change the endianness of its input
-files. If the input format has an endianness, (some formats do not),
-@code{objcopy} can only copy the inputs into file formats that have the
-same endianness or which have no endianness (eg @samp{srec}).
-
-@table @code
-@item @var{infile}
-@itemx @var{outfile}
-The input and output files, respectively.
-If you do not specify @var{outfile}, @code{objcopy} creates a
-temporary file and destructively renames the result with
-the name of @var{infile}.
-
-@item -I @var{bfdname}
-@itemx --input-target=@var{bfdname}
-Consider the source file's object format to be @var{bfdname}, rather than
-attempting to deduce it. @xref{Target Selection}, for more information.
-
-@item -O @var{bfdname}
-@itemx --output-target=@var{bfdname}
-Write the output file using the object format @var{bfdname}.
-@xref{Target Selection}, for more information.
-
-@item -F @var{bfdname}
-@itemx --target=@var{bfdname}
-Use @var{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. @xref{Target Selection}, for more information.
-
-@item -j @var{sectionname}
-@itemx --only-section=@var{sectionname}
-Copy only the named section 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.
-
-@item -R @var{sectionname}
-@itemx --remove-section=@var{sectionname}
-Remove any section named @var{sectionname} from the output file. This
-option may be given more than once. Note that using this option
-inappropriately may make the output file unusable.
-
-@item -S
-@itemx --strip-all
-Do not copy relocation and symbol information from the source file.
-
-@item -g
-@itemx --strip-debug
-Do not copy debugging symbols from the source file.
-
-@item --strip-unneeded
-Strip all symbols that are not needed for relocation processing.
-
-@item -K @var{symbolname}
-@itemx --keep-symbol=@var{symbolname}
-Copy only symbol @var{symbolname} from the source file. This option may
-be given more than once.
-
-@item -N @var{symbolname}
-@itemx --strip-symbol=@var{symbolname}
-Do not copy symbol @var{symbolname} from the source file. This option
-may be given more than once.
-
-@item -G @var{symbolname}
-@itemx --keep-global-symbol=@var{symbolname}
-Keep only symbol @var{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.
-
-@item -L @var{symbolname}
-@itemx --localize-symbol=@var{symbolname}
-Make symbol @var{symbolname} local to the file, so that it is not
-visible externally. This option may be given more than once.
-
-@item -W @var{symbolname}
-@itemx --weaken-symbol=@var{symbolname}
-Make symbol @var{symbolname} weak. This option may be given more than once.
-
-@item -x
-@itemx --discard-all
-Do not copy non-global symbols from the source file.
-@c FIXME any reason to prefer "non-global" to "local" here?
-
-@item -X
-@itemx --discard-locals
-Do not copy compiler-generated local symbols.
-(These usually start with @samp{L} or @samp{.}.)
-
-@item -b @var{byte}
-@itemx --byte=@var{byte}
-Keep only every @var{byte}th byte of the input file (header data is not
-affected). @var{byte} can be in the range from 0 to @var{interleave}-1,
-where @var{interleave} is given by the @samp{-i} or @samp{--interleave}
-option, or the default of 4. This option is useful for creating files
-to program @sc{rom}. It is typically used with an @code{srec} output
-target.
-
-@item -i @var{interleave}
-@itemx --interleave=@var{interleave}
-Only copy one out of every @var{interleave} bytes. Select which byte to
-copy with the @var{-b} or @samp{--byte} option. The default is 4.
-@code{objcopy} ignores this option if you do not specify either @samp{-b} or
-@samp{--byte}.
-
-@item -p
-@itemx --preserve-dates
-Set the access and modification dates of the output file to be the same
-as those of the input file.
-
-@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.
-
-@item --gap-fill @var{val}
-Fill gaps between sections with @var{val}. This operation applies to
-the @emph{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 @var{val}.
-
-@item --pad-to @var{address}
-Pad the output file up to the load address @var{address}. This is
-done by increasing the size of the last section. The extra space is
-filled in with the value specified by @samp{--gap-fill} (default zero).
-
-@item --set-start @var{val}
-Set the start address of the new file to @var{val}. Not all object file
-formats support setting the start address.
-
-@item --change-start @var{incr}
-@itemx --adjust-start @var{incr}
-@cindex changing start address
-Change the start address by adding @var{incr}. Not all object file
-formats support setting the start address.
-
-@item --change-addresses @var{incr}
-@itemx --adjust-vma @var{incr}
-@cindex changing object addresses
-Change the VMA and LMA addresses of all sections, as well as the start
-address, by adding @var{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.
-
-@item --change-section-address @var{section}@{=,+,-@}@var{val}
-@itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val}
-@cindex changing section address
-Set or change both the VMA address and the LMA address of the named
-@var{section}. If @samp{=} is used, the section address is set to
-@var{val}. Otherwise, @var{val} is added to or subtracted from the
-section address. See the comments under @samp{--change-addresses},
-above. If @var{section} does not exist in the input file, a warning will
-be issued, unless @samp{--no-change-warnings} is used.
-
-@item --change-section-lma @var{section}@{=,+,-@}@var{val}
-@cindex changing section LMA
-Set or change the LMA address of the named @var{section}. 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 @samp{=} is used, the section address is set to
-@var{val}. Otherwise, @var{val} is added to or subtracted from the
-section address. See the comments under @samp{--change-addresses},
-above. If @var{section} does not exist in the input file, a warning
-will be issued, unless @samp{--no-change-warnings} is used.
-
-@item --change-section-vma @var{section}@{=,+,-@}@var{val}
-@cindex changing section VMA
-Set or change the VMA address of the named @var{section}. 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 @samp{=} is used, the section address
-is set to @var{val}. Otherwise, @var{val} is added to or subtracted
-from the section address. See the comments under
-@samp{--change-addresses}, above. If @var{section} does not exist in
-the input file, a warning will be issued, unless
-@samp{--no-change-warnings} is used.
-
-@item --change-warnings
-@itemx --adjust-warnings
-If @samp{--change-section-address} or @samp{--change-section-lma} or
-@samp{--change-section-vma} is used, and the named section does not
-exist, issue a warning. This is the default.
-
-@item --no-change-warnings
-@itemx --no-adjust-warnings
-Do not issue a warning if @samp{--change-section-address} or
-@samp{--adjust-section-lma} or @samp{--adjust-section-vma} is used, even
-if the named section does not exist.
-
-@item --set-section-flags @var{section}=@var{flags}
-Set the flags for the named section. The @var{flags} argument is a
-comma separated string of flag names. The recognized names are
-@samp{alloc}, @samp{contents}, @samp{load}, @samp{noload},
-@samp{readonly}, @samp{code}, @samp{data}, @samp{rom}, @samp{share}, and
-@samp{debug}. You can set the @samp{contents} flag for a section which
-does not have contents, but it is not meaningful to clear the
-@samp{contents} flag of a section which does have contents--just remove
-the section instead. Not all flags are meaningful for all object file
-formats.
-
-@item --add-section @var{sectionname}=@var{filename}
-Add a new section named @var{sectionname} while copying the file. The
-contents of the new section are taken from the file @var{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.
-
-@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 @code{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.
-
-@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
-@code{--change-leading-char} because it always changes the symbol name
-when appropriate, regardless of the object file format of the output
-file.
-
-@item --srec-len=@var{ival}
-Meaningful only for srec output. Set the maximum length of the Srecords
-being produced to @var{ival}. This length covers both address, data and
-crc fields.
-
-@item --srec-forceS3
-Meaningful only for srec output. Avoid generation of S1/S2 records,
-creating S3-only record format.
-
-@item --redefine-sym @var{old}=@var{new}
-Change the name of a symbol @var{old}, to @var{new}. This can be useful
-when one is trying link two things together for which you have no
-source, and there are name collisions.
-
-@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 @code{-R} option to the linker. This option is only effective when
-using an object file format which supports weak symbols.
-
-@item --keep-symbols=@var{filename}
-Apply @samp{--keep-symbol} option to each symbol listed in the file
-@var{filename}. @var{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.
-
-@item --strip-symbols=@var{filename}
-Apply @samp{--strip-symbol} option to each symbol listed in the file
-@var{filename}. @var{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.
-
-@item --keep-global-symbols=@var{filename}
-Apply @samp{--keep-global-symbol} option to each symbol listed in the
-file @var{filename}. @var{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.
-
-@item --localize-symbols=@var{filename}
-Apply @samp{--localize-symbol} option to each symbol listed in the file
-@var{filename}. @var{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.
-
-@item --weaken-symbols=@var{filename}
-Apply @samp{--weaken-symbol} option to each symbol listed in the file
-@var{filename}. @var{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.
-
-@item -V
-@itemx --version
-Show the version number of @code{objcopy}.
-
-@item -v
-@itemx --verbose
-Verbose output: list all object files modified. In the case of
-archives, @samp{objcopy -V} lists all members of the archive.
-
-@item --help
-Show a summary of the options to @code{objcopy}.
-@end table
-
-@node objdump
-@chapter objdump
-
-@cindex object file information
-@kindex objdump
-
-@smallexample
-objdump [ -a | --archive-headers ]
- [ -b @var{bfdname} | --target=@var{bfdname} ]
- [ -C | --demangle[=@var{style}] ]
- [ -d | --disassemble ]
- [ -D | --disassemble-all ]
- [ -z | --disassemble-zeroes ]
- [ -EB | -EL | --endian=@{big | little @} ]
- [ -f | --file-headers ]
- [ --file-start-context ]
- [ -g | --debugging ]
- [ -h | --section-headers | --headers ]
- [ -i | --info ]
- [ -j @var{section} | --section=@var{section} ]
- [ -l | --line-numbers ]
- [ -S | --source ]
- [ -m @var{machine} | --architecture=@var{machine} ]
- [ -M @var{options} | --disassembler-options=@var{options}]
- [ -p | --private-headers ]
- [ -r | --reloc ]
- [ -R | --dynamic-reloc ]
- [ -s | --full-contents ]
- [ -G | --stabs ]
- [ -t | --syms ]
- [ -T | --dynamic-syms ]
- [ -x | --all-headers ]
- [ -w | --wide ]
- [ --start-address=@var{address} ]
- [ --stop-address=@var{address} ]
- [ --prefix-addresses]
- [ --[no-]show-raw-insn ]
- [ --adjust-vma=@var{offset} ]
- [ -V | --version ]
- [ -H | --help ]
- @var{objfile}@dots{}
-@end smallexample
-
-@code{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.
-
-@var{objfile}@dots{} are the object files to be examined. When you
-specify archives, @code{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
-@samp{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x} must be given.
-
-@table @code
-@item -a
-@itemx --archive-header
-@cindex archive headers
-If any of the @var{objfile} files are archives, display the archive
-header information (in a format similar to @samp{ls -l}). Besides the
-information you could list with @samp{ar tv}, @samp{objdump -a} shows
-the object file format of each archive member.
-
-@item --adjust-vma=@var{offset}
-@cindex section addresses in objdump
-@cindex VMA in objdump
-When dumping information, first add @var{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.
-
-@item -b @var{bfdname}
-@itemx --target=@var{bfdname}
-@cindex object code format
-Specify that the object-code format for the object files is
-@var{bfdname}. This option may not be necessary; @var{objdump} can
-automatically recognize many formats.
-
-For example,
-@example
-objdump -b oasys -m vax -h fu.o
-@end example
-@noindent
-displays summary information from the section headers (@samp{-h}) of
-@file{fu.o}, which is explicitly identified (@samp{-m}) as a VAX object
-file in the format produced by Oasys compilers. You can list the
-formats available with the @samp{-i} option.
-@xref{Target Selection}, for more information.
-
-@item -C
-@itemx --demangle[=@var{style}]
-@cindex demangling in objdump
-Decode (@dfn{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. @xref{c++filt},
-for more information on demangling.
-
-@item -G
-@item --debugging
-Display debugging information. This attempts to parse debugging
-information stored in the file and print it out using a C like syntax.
-Only certain types of debugging information have been implemented.
-
-@item -d
-@itemx --disassemble
-@cindex disassembling object code
-@cindex machine instructions
-Display the assembler mnemonics for the machine instructions from
-@var{objfile}. This option only disassembles those sections which are
-expected to contain instructions.
-
-@item -D
-@itemx --disassemble-all
-Like @samp{-d}, but disassemble the contents of all sections, not just
-those expected to contain instructions.
-
-@item --prefix-addresses
-When disassembling, print the complete address on each line. This is
-the older disassembly format.
-
-@item --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.
-
-@item -EB
-@itemx -EL
-@itemx --endian=@{big|little@}
-@cindex endianness
-@cindex disassembly endianness
-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.
-
-@item -f
-@itemx --file-header
-@cindex object file header
-Display summary information from the overall header of
-each of the @var{objfile} files.
-
-@item --file-start-context
-@cindex source code 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.
-
-@item -h
-@itemx --section-header
-@itemx --header
-@cindex section 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 @samp{-Ttext}, @samp{-Tdata}, or @samp{-Tbss} options to
-@code{ld}. However, some object file formats, such as a.out, do not
-store the starting address of the file segments. In those situations,
-although @code{ld} relocates the sections correctly, using @samp{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.
-
-@item --help
-Print a summary of the options to @code{objdump} and exit.
-
-@item -i
-@itemx --info
-@cindex architectures available
-@cindex object formats available
-Display a list showing all architectures and object formats available
-for specification with @samp{-b} or @samp{-m}.
-
-@item -j @var{name}
-@itemx --section=@var{name}
-@cindex section information
-Display information only for section @var{name}.
-
-@item -l
-@itemx --line-numbers
-@cindex source filenames for object files
-Label the display (using debugging information) with the filename and
-source line numbers corresponding to the object code or relocs shown.
-Only useful with @samp{-d}, @samp{-D}, or @samp{-r}.
-
-@item -m @var{machine}
-@itemx --architecture=@var{machine}
-@cindex architecture
-@cindex disassembly architecture
-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 @samp{-i} option.
-
-@item -M @var{options}
-@itemx --disassembler-options=@var{options}
-Pass target specific information to the disassembler. Only supported on
-some targets.
-
-If the target is an ARM architecture then this switch can be used to
-select which register name set is used during disassembler. Specifying
-@samp{-M reg-name-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
-@samp{-M reg-names-apcs} will select the name set used by the ARM
-Procedure Call Standard, whilst specifying @samp{-M reg-names-raw} will
-just use @samp{r} followed by the register number.
-
-There are also two variants on the APCS register naming scheme enabled
-by @samp{-M reg-names-atpcs} and @samp{-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 @samp{--disassembler-options=force-thumb}. This can be
-useful when attempting to disassemble thumb code produced by other
-compilers.
-
-@item -p
-@itemx --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.
-
-@item -r
-@itemx --reloc
-@cindex relocation entries, in object file
-Print the relocation entries of the file. If used with @samp{-d} or
-@samp{-D}, the relocations are printed interspersed with the
-disassembly.
-
-@item -R
-@itemx --dynamic-reloc
-@cindex dynamic relocation entries, in object file
-Print the dynamic relocation entries of the file. This is only
-meaningful for dynamic objects, such as certain types of shared
-libraries.
-
-@item -s
-@itemx --full-contents
-@cindex sections, full contents
-@cindex object file sections
-Display the full contents of any sections requested.
-
-@item -S
-@itemx --source
-@cindex source disassembly
-@cindex disassembly, with source
-Display source code intermixed with disassembly, if possible. Implies
-@samp{-d}.
-
-@item --show-raw-insn
-When disassembling instructions, print the instruction in hex as well as
-in symbolic form. This is the default except when
-@code{--prefix-addresses} is used.
-
-@item --no-show-raw-insn
-When disassembling instructions, do not print the instruction bytes.
-This is the default when @code{--prefix-addresses} is used.
-
-@item -G
-@item --stabs
-@cindex stab
-@cindex .stab
-@cindex debug symbols
-@cindex ELF object file format
-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
-@code{.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 @samp{--syms}
-output. For more information on stabs symbols, see @ref{Top,Stabs,Stabs
-Overview,stabs.info, The ``stabs'' debug format}.
-
-@item --start-address=@var{address}
-@cindex start-address
-Start displaying data at the specified address. This affects the output
-of the @code{-d}, @code{-r} and @code{-s} options.
-
-@item --stop-address=@var{address}
-@cindex stop-address
-Stop displaying data at the specified address. This affects the output
-of the @code{-d}, @code{-r} and @code{-s} options.
-
-@item -t
-@itemx --syms
-@cindex symbol table entries, printing
-Print the symbol table entries of the file.
-This is similar to the information provided by the @samp{nm} program.
-
-@item -T
-@itemx --dynamic-syms
-@cindex dynamic symbol table entries, printing
-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 @samp{nm}
-program when given the @samp{-D} (@samp{--dynamic}) option.
-
-@item --version
-Print the version number of @code{objdump} and exit.
-
-@item -x
-@itemx --all-header
-@cindex all header information, object file
-@cindex header information, all
-Display all available header information, including the symbol table and
-relocation entries. Using @samp{-x} is equivalent to specifying all of
-@samp{-a -f -h -r -t}.
-
-@item -w
-@itemx --wide
-@cindex wide output, printing
-Format some lines for output devices that have more than 80 columns.
-@end table
-
-@node ranlib
-@chapter ranlib
-
-@kindex ranlib
-@cindex archive contents
-@cindex symbol index
-
-@smallexample
-ranlib [-vV] @var{archive}
-@end smallexample
-
-@code{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 @samp{nm -s} or @samp{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 @sc{gnu} @code{ranlib} program is another form of @sc{gnu} @code{ar}; running
-@code{ranlib} is completely equivalent to executing @samp{ar -s}.
-@xref{ar}.
-
-@table @code
-@item -v
-@itemx -V
-@itemx --version
-Show the version number of @code{ranlib}.
-@end table
-
-@node size
-@chapter size
-
-@kindex size
-@cindex section sizes
-
-@smallexample
-size [ -A | -B | --format=@var{compatibility} ]
- [ --help ] [ -d | -o | -x | --radix=@var{number} ]
- [ --target=@var{bfdname} ] [ -V | --version ]
- [ @var{objfile}@dots{} ]
-@end smallexample
-
-The @sc{gnu} @code{size} utility lists the section sizes---and the total
-size---for each of the object or archive files @var{objfile} in its
-argument list. By default, one line of output is generated for each
-object file or each module in an archive.
-
-@var{objfile}@dots{} are the object files to be examined.
-If none are specified, the file @code{a.out} will be used.
-
-The command line options have the following meanings:
-
-@table @code
-@item -A
-@itemx -B
-@itemx --format=@var{compatibility}
-@cindex @code{size} display format
-Using one of these options, you can choose whether the output from @sc{gnu}
-@code{size} resembles output from System V @code{size} (using @samp{-A},
-or @samp{--format=sysv}), or Berkeley @code{size} (using @samp{-B}, or
-@samp{--format=berkeley}). The default is the one-line format similar to
-Berkeley's.
-@c Bonus for doc-source readers: you can also say --format=strange (or
-@c anything else that starts with 's') for sysv, and --format=boring (or
-@c anything else that starts with 'b') for Berkeley.
-
-Here is an example of the Berkeley (default) format of output from
-@code{size}:
-@smallexample
-$ size --format=Berkeley ranlib size
-text data bss dec hex filename
-294880 81920 11592 388392 5ed28 ranlib
-294880 81920 11888 388688 5ee50 size
-@end smallexample
-
-@noindent
-This is the same data, but displayed closer to System V conventions:
-
-@smallexample
-$ 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
-@end smallexample
-
-@item --help
-Show a summary of acceptable arguments and options.
-
-@item -d
-@itemx -o
-@itemx -x
-@itemx --radix=@var{number}
-@cindex @code{size} number format
-@cindex radix for section sizes
-Using one of these options, you can control whether the size of each
-section is given in decimal (@samp{-d}, or @samp{--radix=10}); octal
-(@samp{-o}, or @samp{--radix=8}); or hexadecimal (@samp{-x}, or
-@samp{--radix=16}). In @samp{--radix=@var{number}}, only the three
-values (8, 10, 16) are supported. The total size is always given in two
-radices; decimal and hexadecimal for @samp{-d} or @samp{-x} output, or
-octal and hexadecimal if you're using @samp{-o}.
-
-@item --target=@var{bfdname}
-@cindex object code format
-Specify that the object-code format for @var{objfile} is
-@var{bfdname}. This option may not be necessary; @code{size} can
-automatically recognize many formats.
-@xref{Target Selection}, for more information.
-
-@item -V
-@itemx --version
-Display the version number of @code{size}.
-@end table
-
-@node strings
-@chapter strings
-@kindex strings
-@cindex listings strings
-@cindex printing strings
-@cindex strings, printing
-
-@smallexample
-strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
- [--all] [--print-file-name] [--bytes=@var{min-len}]
- [--radix=@var{radix}] [--target=@var{bfdname}]
- [--help] [--version] @var{file}@dots{}
-@end smallexample
-
-For each @var{file} given, @sc{gnu} @code{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. By default, it only prints the strings from the initialized
-and loaded sections of object files; for other types of files, it prints
-the strings from the whole file.
-
-@code{strings} is mainly useful for determining the contents of non-text
-files.
-
-@table @code
-@item -a
-@itemx --all
-@itemx -
-Do not scan only the initialized and loaded sections of object files;
-scan the whole files.
-
-@item -f
-@itemx --print-file-name
-Print the name of the file before each string.
-
-@item --help
-Print a summary of the program usage on the standard output and exit.
-
-@item -@var{min-len}
-@itemx -n @var{min-len}
-@itemx --bytes=@var{min-len}
-Print sequences of characters that are at least @var{min-len} characters
-long, instead of the default 4.
-
-@item -o
-Like @samp{-t o}. Some other versions of @code{strings} have @samp{-o}
-act like @samp{-t d} instead. Since we can not be compatible with both
-ways, we simply chose one.
-
-@item -t @var{radix}
-@itemx --radix=@var{radix}
-Print the offset within the file before each string. The single
-character argument specifies the radix of the offset---@samp{o} for
-octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
-
-@item --target=@var{bfdname}
-@cindex object code format
-Specify an object code format other than your system's default format.
-@xref{Target Selection}, for more information.
-
-@item -v
-@itemx --version
-Print the program version number on the standard output and exit.
-@end table
-
-@node strip
-@chapter strip
-
-@kindex strip
-@cindex removing symbols
-@cindex discarding symbols
-@cindex symbols, discarding
-
-@smallexample
-strip [ -F @var{bfdname} | --target=@var{bfdname} ]
- [ -I @var{bfdname} | --input-target=@var{bfdname} ]
- [ -O @var{bfdname} | --output-target=@var{bfdname} ]
- [ -s | --strip-all ] [ -S | -g | --strip-debug ]
- [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
- [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
- [ -x | --discard-all ] [ -X | --discard-locals ]
- [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
- [ -o @var{file} ] [ -p | --preserve-dates ]
- [ -v | --verbose ] [ -V | --version ] [ --help ]
- @var{objfile}@dots{}
-@end smallexample
-
-@sc{gnu} @code{strip} discards all symbols from object files
-@var{objfile}. The list of object files may include archives.
-At least one object file must be given.
-
-@code{strip} modifies the files named in its argument,
-rather than writing modified copies under different names.
-
-@table @code
-@item -F @var{bfdname}
-@itemx --target=@var{bfdname}
-Treat the original @var{objfile} as a file with the object
-code format @var{bfdname}, and rewrite it in the same format.
-@xref{Target Selection}, for more information.
-
-@item --help
-Show a summary of the options to @code{strip} and exit.
-
-@item -I @var{bfdname}
-@itemx --input-target=@var{bfdname}
-Treat the original @var{objfile} as a file with the object
-code format @var{bfdname}.
-@xref{Target Selection}, for more information.
-
-@item -O @var{bfdname}
-@itemx --output-target=@var{bfdname}
-Replace @var{objfile} with a file in the output format @var{bfdname}.
-@xref{Target Selection}, for more information.
-
-@item -R @var{sectionname}
-@itemx --remove-section=@var{sectionname}
-Remove any section named @var{sectionname} from the output file. This
-option may be given more than once. Note that using this option
-inappropriately may make the output file unusable.
-
-@item -s
-@itemx --strip-all
-Remove all symbols.
-
-@item -g
-@itemx -S
-@itemx --strip-debug
-Remove debugging symbols only.
-
-@item --strip-unneeded
-Remove all symbols that are not needed for relocation processing.
-
-@item -K @var{symbolname}
-@itemx --keep-symbol=@var{symbolname}
-Keep only symbol @var{symbolname} from the source file. This option may
-be given more than once.
-
-@item -N @var{symbolname}
-@itemx --strip-symbol=@var{symbolname}
-Remove symbol @var{symbolname} from the source file. This option may be
-given more than once, and may be combined with strip options other than
-@code{-K}.
-
-@item -o @var{file}
-Put the stripped output in @var{file}, rather than replacing the
-existing file. When this argument is used, only one @var{objfile}
-argument may be specified.
-
-@item -p
-@itemx --preserve-dates
-Preserve the access and modification dates of the file.
-
-@item -x
-@itemx --discard-all
-Remove non-global symbols.
-
-@item -X
-@itemx --discard-locals
-Remove compiler-generated local symbols.
-(These usually start with @samp{L} or @samp{.}.)
-
-@item -V
-@itemx --version
-Show the version number for @code{strip}.
-
-@item -v
-@itemx --verbose
-Verbose output: list all object files modified. In the case of
-archives, @samp{strip -v} lists all members of the archive.
-@end table
-
-@node c++filt, addr2line, strip, Top
-@chapter c++filt
-
-@kindex c++filt
-@cindex demangling C++ symbols
-
-@smallexample
-c++filt [ -_ | --strip-underscores ]
- [ -j | --java ]
- [ -n | --no-strip-underscores ]
- [ -s @var{format} | --format=@var{format} ]
- [ --help ] [ --version ] [ @var{symbol}@dots{} ]
-@end smallexample
-
-@kindex cxxfilt
-The C++ and Java languages provides function overloading, which means
-that you can write many functions with the same name (providing each
-takes parameters of different types). All C++ and Java function names
-are encoded into a low-level assembly label (this process is known as
-@dfn{mangling}). The @code{c++filt}
-@footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
-MS-DOS this program is named @code{cxxfilt}.}
-program does the inverse mapping: it decodes (@dfn{demangles}) low-level
-names into user-level names so that the linker can keep these overloaded
-functions from clashing.
-
-Every alphanumeric word (consisting of letters, digits, underscores,
-dollars, or periods) seen in the input is a potential label. If the
-label decodes into a C++ name, the C++ name replaces the low-level
-name in the output.
-
-You can use @code{c++filt} to decipher individual symbols:
-
-@example
-c++filt @var{symbol}
-@end example
-
-If no @var{symbol} arguments are given, @code{c++filt} reads symbol
-names from the standard input and writes the demangled names to the
-standard output. All results are printed on the standard output.
-
-@table @code
-@item -_
-@itemx --strip-underscores
-On some systems, both the C and C++ compilers put an underscore in front
-of every name. For example, the C name @code{foo} gets the low-level
-name @code{_foo}. This option removes the initial underscore. Whether
-@code{c++filt} removes the underscore by default is target dependent.
-
-@item -j
-@itemx --java
-Prints demangled names using Java syntax. The default is to use C++
-syntax.
-
-@item -n
-@itemx --no-strip-underscores
-Do not remove the initial underscore.
-
-@item -s @var{format}
-@itemx --format=@var{format}
-@sc{gnu} @code{nm} can decode three different methods of mangling, used by
-different C++ compilers. The argument to this option selects which
-method it uses:
-
-@table @code
-@item gnu
-the one used by the @sc{gnu} compiler (the default method)
-@item lucid
-the one used by the Lucid compiler
-@item arm
-the one specified by the C++ Annotated Reference Manual
-@item hp
-the one used by the HP compiler
-@item edg
-the one used by the EDG compiler
-@item gnu-new-abi
-the one used by the @sc{gnu} compiler with the new ABI.
-@end table
-
-@item --help
-Print a summary of the options to @code{c++filt} and exit.
-
-@item --version
-Print the version number of @code{c++filt} and exit.
-@end table
-
-@quotation
-@emph{Warning:} @code{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 the future to decode a name
-passed as an argument on the command line; in other words,
-
-@example
-c++filt @var{symbol}
-@end example
-
-@noindent
-may in a future release become
-
-@example
-c++filt @var{option} @var{symbol}
-@end example
-@end quotation
-
-@node addr2line
-@chapter addr2line
-
-@kindex addr2line
-@cindex address to file name and line number
-
-@smallexample
-addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
- [ -C | --demangle[=@var{style} ]
- [ -e @var{filename} | --exe=@var{filename} ]
- [ -f | --functions ] [ -s | --basename ]
- [ -H | --help ] [ -V | --version ]
- [ addr addr ... ]
-@end smallexample
-
-@code{addr2line} translates program addresses into file names and line
-numbers. Given an address and an executable, it uses the debugging
-information in the executable to figure out which file name and line
-number are associated with a given address.
-
-The executable to use is specified with the @code{-e} option. The
-default is the file @file{a.out}.
-
-@code{addr2line} has two modes of operation.
-
-In the first, hexadecimal addresses are specified on the command line,
-and @code{addr2line} displays the file name and line number for each
-address.
-
-In the second, @code{addr2line} reads hexadecimal addresses from
-standard input, and prints the file name and line number for each
-address on standard output. In this mode, @code{addr2line} may be used
-in a pipe to convert dynamically chosen addresses.
-
-The format of the output is @samp{FILENAME:LINENO}. The file name and
-line number for each address is printed on a separate line. If the
-@code{-f} option is used, then each @samp{FILENAME:LINENO} line is
-preceded by a @samp{FUNCTIONNAME} line which is the name of the function
-containing the address.
-
-If the file name or function name can not be determined,
-@code{addr2line} will print two question marks in their place. If the
-line number can not be determined, @code{addr2line} will print 0.
-
-The long and short forms of options, shown here as alternatives, are
-equivalent.
-
-@table @code
-@item -b @var{bfdname}
-@itemx --target=@var{bfdname}
-@cindex object code format
-Specify that the object-code format for the object files is
-@var{bfdname}.
-
-@item -C
-@itemx --demangle[=@var{style}]
-@cindex demangling in objdump
-Decode (@dfn{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. @xref{c++filt},
-for more information on demangling.
-
-@item -e @var{filename}
-@itemx --exe=@var{filename}
-Specify the name of the executable for which addresses should be
-translated. The default file is @file{a.out}.
-
-@item -f
-@itemx --functions
-Display function names as well as file and line number information.
-
-@item -s
-@itemx --basenames
-Display only the base of each file name.
-@end table
-
-@node nlmconv
-@chapter nlmconv
-
-@code{nlmconv} converts a relocatable object file into a NetWare
-Loadable Module.
-
-@ignore
-@code{nlmconv} currently works with @samp{i386} object
-files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
-object files in @sc{elf}, or @code{a.out} format@footnote{
-@code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
-format in the Binary File Descriptor library. It has only been tested
-with the above formats.}.
-@end ignore
-
-@quotation
-@emph{Warning:} @code{nlmconv} is not always built as part of the binary
-utilities, since it is only useful for NLM targets.
-@end quotation
-
-@smallexample
-nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
- [ -O @var{bfdname} | --output-target=@var{bfdname} ]
- [ -T @var{headerfile} | --header-file=@var{headerfile} ]
- [ -d | --debug] [ -l @var{linker} | --linker=@var{linker} ]
- [ -h | --help ] [ -V | --version ]
- @var{infile} @var{outfile}
-@end smallexample
-
-@code{nlmconv} converts the relocatable @samp{i386} object file
-@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
-reading @var{headerfile} for NLM header information. For instructions
-on writing the NLM command file language used in header files, see the
-@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
-Development and Tools Overview}, which is part of the NLM Software
-Developer's Kit (``NLM SDK''), available from Novell, Inc.
-@code{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
-@var{infile}; see @ref{BFD,,BFD,ld.info,Using LD}, for
-more information.
-
-@code{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, @code{nlmconv} calls the linker for you.
-
-@table @code
-@item -I @var{bfdname}
-@itemx --input-target=@var{bfdname}
-Object format of the input file. @code{nlmconv} can usually determine
-the format of a given file (so no default is necessary).
-@xref{Target Selection}, for more information.
-
-@item -O @var{bfdname}
-@itemx --output-target=@var{bfdname}
-Object format of the output file. @code{nlmconv} infers the output
-format based on the input format, e.g. for a @samp{i386} input file the
-output format is @samp{nlm32-i386}.
-@xref{Target Selection}, for more information.
-
-@item -T @var{headerfile}
-@itemx --header-file=@var{headerfile}
-Reads @var{headerfile} for NLM header information. For instructions on
-writing the NLM command file language used in header files, see@ see the
-@samp{linkers} section, of the @cite{NLM Development and Tools
-Overview}, which is part of the NLM Software Developer's Kit, available
-from Novell, Inc.
-
-@item -d
-@itemx --debug
-Displays (on standard error) the linker command line used by @code{nlmconv}.
-
-@item -l @var{linker}
-@itemx --linker=@var{linker}
-Use @var{linker} for any linking. @var{linker} can be an absolute or a
-relative pathname.
-
-@item -h
-@itemx --help
-Prints a usage summary.
-
-@item -V
-@itemx --version
-Prints the version number for @code{nlmconv}.
-@end table
-
-@node windres
-@chapter windres
-
-@code{windres} may be used to manipulate Windows resources.
-
-@quotation
-@emph{Warning:} @code{windres} is not always built as part of the binary
-utilities, since it is only useful for Windows targets.
-@end quotation
-
-@smallexample
-windres [options] [input-file] [output-file]
-@end smallexample
-
-@code{windres} reads resources from an input file and copies them into
-an output file. Either file may be in one of three formats:
-
-@table @code
-@item rc
-A text format read by the Resource Compiler.
-
-@item res
-A binary format generated by the Resource Compiler.
-
-@item coff
-A COFF object or executable.
-@end table
-
-The exact description of these different formats is available in
-documentation from Microsoft.
-
-When @code{windres} converts from the @code{rc} format to the @code{res}
-format, it is acting like the Windows Resource Compiler. When
-@code{windres} converts from the @code{res} format to the @code{coff}
-format, it is acting like the Windows @code{CVTRES} program.
-
-When @code{windres} generates an @code{rc} file, the output is similar
-but not identical to the format expected for the input. When an input
-@code{rc} file refers to an external filename, an output @code{rc} file
-will instead include the file contents.
-
-If the input or output format is not specified, @code{windres} will
-guess based on the file name, or, for the input file, the file contents.
-A file with an extension of @file{.rc} will be treated as an @code{rc}
-file, a file with an extension of @file{.res} will be treated as a
-@code{res} file, and a file with an extension of @file{.o} or
-@file{.exe} will be treated as a @code{coff} file.
-
-If no output file is specified, @code{windres} will print the resources
-in @code{rc} format to standard output.
-
-The normal use is for you to write an @code{rc} file, use @code{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
-@code{rc} file available to Windows.
-
-@table @code
-@item -i @var{filename}
-@itemx --input @var{filename}
-The name of the input file. If this option is not used, then
-@code{windres} will use the first non-option argument as the input file
-name. If there are no non-option arguments, then @code{windres} will
-read from standard input. @code{windres} can not read a COFF file from
-standard input.
-
-@item -o @var{filename}
-@itemx --output @var{filename}
-The name of the output file. If this option is not used, then
-@code{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 @code{windres} will write to standard output.
-@code{windres} can not write a COFF file to standard output.
-
-@item -I @var{format}
-@itemx --input-format @var{format}
-The input format to read. @var{format} may be @samp{res}, @samp{rc}, or
-@samp{coff}. If no input format is specified, @code{windres} will
-guess, as described above.
-
-@item -O @var{format}
-@itemx --output-format @var{format}
-The output format to generate. @var{format} may be @samp{res},
-@samp{rc}, or @samp{coff}. If no output format is specified,
-@code{windres} will guess, as described above.
-
-@item -F @var{target}
-@itemx --target @var{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 @code{--help} option to see a list
-of supported targets. Normally @code{windres} will use the default
-format, which is the first one listed by the @code{--help} option.
-@ref{Target Selection}.
-
-@item --preprocessor @var{program}
-When @code{windres} reads an @code{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 @code{gcc -E -xc-header -DRC_INVOKED}.
-
-@item --include-dir @var{directory}
-Specify an include directory to use when reading an @code{rc} file.
-@code{windres} will pass this to the preprocessor as an @code{-I}
-option. @code{windres} will also search this directory when looking for
-files named in the @code{rc} file.
-
-@item -D @var{target}
-@itemx --define @var{sym}[=@var{val}]
-Specify a @code{-D} option to pass to the preprocessor when reading an
-@code{rc} file.
-
-@item -v
-Enable verbose mode. This tells you what the preprocessor is if you
-didn't specify one.
-
-@item --language @var{val}
-Specify the default language to use when reading an @code{rc} file.
-@var{val} should be a hexadecimal language code. The low eight bits are
-the language, and the high eight bits are the sublanguage.
-
-@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).
-
-@item --no-use-temp-file
-Use popen, not a temporary file, to read the output of the preprocessor.
-This is the default behaviour.
-
-@item --help
-Prints a usage summary.
-
-@item --version
-Prints the version number for @code{windres}.
-
-@item --yydebug
-If @code{windres} is compiled with @code{YYDEBUG} defined as @code{1},
-this will turn on parser debugging.
-@end table
-
-
-@node dlltool
-@chapter Create files needed to build and use DLLs
-@cindex DLL
-@kindex dlltool
-
-@code{dlltool} may be used to create the files needed to build and use
-dynamic link libraries (DLLs).
-
-@quotation
-@emph{Warning:} @code{dlltool} is not always built as part of the binary
-utilities, since it is only useful for those targets which support DLLs.
-@end quotation
-
-@smallexample
-dlltool [-d|--input-def @var{def-file-name}]
- [-b|--base-file @var{base-file-name}]
- [-e|--output-exp @var{exports-file-name}]
- [-z|--output-def @var{def-file-name}]
- [-l|--output-lib @var{library-file-name}]
- [--export-all-symbols] [--no-export-all-symbols]
- [--exclude-symbols @var{list}]
- [--no-default-excludes]
- [-S|--as @var{path-to-assembler}] [-f|--as-flags @var{options}]
- [-D|--dllname @var{name}] [-m|--machine @var{machine}]
- [-a|--add-indirect] [-U|--add-underscore] [-k|--kill-at]
- [-A|--add-stdcall-alias]
- [-x|--no-idata4] [-c|--no-idata5] [-i|--interwork]
- [-n|--nodelete] [-v|--verbose] [-h|--help] [-V|--version]
- [object-file @dots{}]
-@end smallexample
-
-@code{dlltool} reads its inputs, which can come from the @samp{-d} and
-@samp{-b} options as well as object files specified on the command
-line. It then processes these inputs and if the @samp{-e} option has
-been specified it creates a exports file. If the @samp{-l} option
-has been specified it creates a library file and if the @samp{-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. @code{dlltool} can help with the creation of
-these files.
-
-The first file is a @samp{.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 @code{dlltool} can be used
-to create it using the @samp{-z} option. In this case @code{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 @samp{-export:<name_of_function>} entry in the @samp{.drectve}
-section of the object file. This can be done in C by using the
-asm() operator:
-
-@smallexample
- asm (".section .drectve");
- asm (".ascii \"-export:my_func\"");
-
- int my_func (void) @{ @dots{} @}
-@end smallexample
-
-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 @samp{-e} option to
-@code{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. This file
-can be created by giving the @samp{-l} option to dlltool when it
-is creating or reading in a .def file.
-
-@code{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 @samp{-S} command line option can be
-used to specify the path to the assembler that dlltool will use,
-and the @samp{-f} option can be used to pass specific flags to that
-assembler. The @samp{-n} can be used to prevent dlltool from deleting
-these temporary assembler files when it is done, and if @samp{-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 @samp{dll.c} and
-also creating a program (from an object file called @samp{program.o})
-that uses that DLL:
-
-@smallexample
- 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
-@end smallexample
-
-The command line options have the following meanings:
-
-@table @code
-
-@item -d @var{filename}
-@itemx --input-def @var{filename}
-@cindex input .def file
-Specifies the name of a .def file to be read in and processed.
-
-@item -b @var{filename}
-@itemx --base-file @var{filename}
-@cindex base files
-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.
-
-@item -e @var{filename}
-@itemx --output-exp @var{filename}
-Specifies the name of the export file to be created by dlltool.
-
-@item -z @var{filename}
-@itemx --output-def @var{filename}
-Specifies the name of the .def file to be created by dlltool.
-
-@item -l @var{filename}
-@itemx --output-lib @var{filename}
-Specifies the name of the library file to be created by dlltool.
-
-@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 @code{--no-default-excludes}
-option. You may add to the list of symbols to not export by using the
-@code{--exclude-symbols} option.
-
-@item --no-export-all-symbols
-Only export symbols explicitly listed in an input .def file or in
-@samp{.drectve} sections in the input object files. This is the default
-behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
-attributes in the source code.
-
-@item --exclude-symbols @var{list}
-Do not export the symbols in @var{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
-@code{--export-all-symbols} is used.
-
-@item --no-default-excludes
-When @code{--export-all-symbols} is used, it will by default avoid
-exporting certain special symbols. The current list of symbols to avoid
-exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
-@samp{impure_ptr}. You may use the @code{--no-default-excludes} option
-to go ahead and export these special symbols. This is only meaningful
-when @code{--export-all-symbols} is used.
-
-@item -S @var{path}
-@itemx --as @var{path}
-Specifies the path, including the filename, of the assembler to be used
-to create the exports file.
-
-@item -f @var{switches}
-@itemx --as-flags @var{switches}
-Specifies any specific command line switches to be passed to the
-assembler when building the exports file. This option will work even if
-the @samp{-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 switches to the assembler they should be enclosed in
-double quotes.
-
-@item -D @var{name}
-@itemx --dll-name @var{name}
-Specifies the name to be stored in the .def file as the name of the DLL
-when the @samp{-e} option is used. If this option is not present, then
-the filename given to the @samp{-e} option will be used as the name of
-the DLL.
-
-@item -m @var{machine}
-@itemx -machine @var{machine}
-Specifies the type of machine for which the library file should be
-built. @code{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.
-
-@item -a
-@itemx --add-indirect
-Specifies that when @code{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!
-
-@item -U
-@itemx --add-underscore
-Specifies that when @code{dlltool} is creating the exports file it
-should prepend an underscore to the names of the exported functions.
-
-@item -k
-@itemx --kill-at
-Specifies that when @code{dlltool} is creating the exports file it
-should not append the string @samp{@@ <number>}. These numbers are
-called ordinal numbers and they represent another way of accessing the
-function in a DLL, other than by name.
-
-@item -A
-@itemx --add-stdcall-alias
-Specifies that when @code{dlltool} is creating the exports file it
-should add aliases for stdcall symbols without @samp{@@ <number>}
-in addition to the symbols with @samp{@@ <number>}.
-
-@item -x
-@itemx --no-idata4
-Specifies that when @code{dlltool} is creating the exports and library
-files it should omit the .idata4 section. This is for compatibility
-with certain operating systems.
-
-@item -c
-@itemx --no-idata5
-Specifies that when @code{dlltool} is creating the exports and library
-files it should omit the .idata5 section. This is for compatibility
-with certain operating systems.
-
-@item -i
-@itemx --interwork
-Specifies that @code{dlltool} should mark the objects in the library
-file and exports file that it produces as supporting interworking
-between ARM and Thumb code.
-
-@item -n
-@itemx --nodelete
-Makes @code{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.
-
-@item -v
-@itemx --verbose
-Make dlltool describe what it is doing.
-
-@item -h
-@itemx --help
-Displays a list of command line options and then exits.
-
-@item -V
-@itemx --version
-Displays dlltool's version number and then exits.
-
-@end table
-
-@node readelf
-@chapter readelf
-
-@cindex ELF file information
-@kindex readelf
-
-@smallexample
-readelf [ -a | --all ]
- [ -h | --file-header]
- [ -l | --program-headers | --segments]
- [ -S | --section-headers | --sections]
- [ -e | --headers]
- [ -s | --syms | --symbols]
- [ -n | --notes]
- [ -r | --relocs]
- [ -d | --dynamic]
- [ -V | --version-info]
- [ -D | --use-dynamic]
- [ -x <number> | --hex-dump=<number>]
- [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
- [ --histogram]
- [ -v | --version]
- [ -H | --help]
- @var{elffile}@dots{}
-@end smallexample
-
-@code{readelf} displays information about one or more ELF format object
-files. The options control what particular information to display.
-
-@var{elffile}@dots{} are the object files to be examined. At the
-moment, @code{readelf} does not support examining archives, nor does it
-support examing 64 bit ELF files.
-
-The long and short forms of options, shown here as alternatives, are
-equivalent. At least one option besides @samp{-v} or @samp{-H} must be
-given.
-
-@table @code
-@item -a
-@itemx --all
-Equivalent to specifiying @samp{--file-header},
-@samp{--program-headers}, @samp{--sections}, @samp{--symbols},
-@samp{--relocs}, @samp{--dynamic}, @samp{--notes} and
-@samp{--version-info}.
-
-@item -h
-@itemx --file-header
-@cindex ELF file header information
-Displays the information contained in the ELF header at the start of the
-file.
-
-@item -l
-@itemx --program-headers
-@itemx --segments
-@cindex ELF program header information
-@cindex ELF segment information
-Displays the information contained in the file's segment headers, if it
-has any.
-
-@item -S
-@itemx --sections
-@itemx --section-headers
-@cindex ELF section information
-Displays the information contained in the file's section headers, if it
-has any.
-
-@item -s
-@itemx --symbols
-@itemx --syms
-@cindex ELF symbol table information
-Displays the entries in symbol table section of the file, if it has one.
-
-@item -e
-@itemx --headers
-Display all the headers in the file. Equivalent to @samp{-h -l -S}.
-
-@item -n
-@itemx --notes
-@cindex ELF core notes
-Displays the contents of the NOTE segment, if it exists.
-
-@item -r
-@itemx --relocs
-@cindex ELF reloc information
-Displays the contents of the file's relocation section, if it ha one.
-
-@item -d
-@itemx --dynamic
-@cindex ELF dynamic section information
-Displays the contents of the file's dynamic section, if it has one.
-
-@item -V
-@itemx --version-info
-@cindex ELF version sections informations
-Displays the contents of the version sections in the file, it they
-exist.
-
-@item -D
-@itemx --use-dynamic
-When displaying symbols, this option makes @code{readelf} use the
-symbol table in the file's dynamic section, rather than the one in the
-symbols section.
-
-@item -x <number>
-@itemx --hex-dump=<number>
-Displays the contents of the indicated section as a hexadecimal dump.
-
-@item -w[liaprf]
-@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
-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.
-
-@item --histogram
-Display a histogram of bucket list lengths when displaying the contents
-of the symbol tables.
-
-@item -v
-@itemx --version
-Display the version number of readelf.
-
-@item -H
-@itemx --help
-Display the command line options understood by @code{readelf}.
-
-@end table
-
-
-@node Selecting The Target System
-@chapter Selecting the target system
-
-You can specify three aspects of the target system to the @sc{gnu}
-binary file utilities, each in several ways:
-
-@itemize @bullet
-@item
-the target
-
-@item
-the architecture
-
-@item
-the linker emulation (which applies to the linker only)
-@end itemize
-
-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
-@samp{--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 @dfn{native} (on hosts
-with the same type as the target system).
-
-@menu
-* Target Selection::
-* Architecture Selection::
-* Linker Emulation Selection::
-@end menu
-
-@node Target Selection
-@section Target Selection
-
-A @dfn{target} is an object file format. A given target may be
-supported for multiple architectures (@pxref{Architecture Selection}).
-A target selection may also have variations for different operating
-systems or architectures.
-
-The command to list valid target values is @samp{objdump -i}
-(the first column of output contains the relevant information).
-
-Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
-@samp{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 @file{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 @file{config.sub} which is included with the
-sources.
-
-Some sample configuration triplets are: @samp{m68k-hp-bsd},
-@samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
-
-@subheading @code{objdump} Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{-b} or @samp{--target}
-
-@item
-environment variable @code{GNUTARGET}
-
-@item
-deduced from the input file
-@end enumerate
-
-@subheading @code{objcopy} and @code{strip} Input Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line options: @samp{-I} or @samp{--input-target}, or @samp{-F} or @samp{--target}
-
-@item
-environment variable @code{GNUTARGET}
-
-@item
-deduced from the input file
-@end enumerate
-
-@subheading @code{objcopy} and @code{strip} Output Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line options: @samp{-O} or @samp{--output-target}, or @samp{-F} or @samp{--target}
-
-@item
-the input target (see ``@code{objcopy} and @code{strip} Input Target'' above)
-
-@item
-environment variable @code{GNUTARGET}
-
-@item
-deduced from the input file
-@end enumerate
-
-@subheading @code{nm}, @code{size}, and @code{strings} Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{--target}
-
-@item
-environment variable @code{GNUTARGET}
-
-@item
-deduced from the input file
-@end enumerate
-
-@subheading Linker Input Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{-b} or @samp{--format}
-(@pxref{Options,,Options,ld.info,Using LD})
-
-@item
-script command @code{TARGET}
-(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
-
-@item
-environment variable @code{GNUTARGET}
-(@pxref{Environment,,Environment,ld.info,Using LD})
-
-@item
-the default target of the selected linker emulation
-(@pxref{Linker Emulation Selection})
-@end enumerate
-
-@subheading Linker Output Target
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{-oformat}
-(@pxref{Options,,Options,ld.info,Using LD})
-
-@item
-script command @code{OUTPUT_FORMAT}
-(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
-
-@item
-the linker input target (see ``Linker Input Target'' above)
-@end enumerate
-
-@node Architecture Selection
-@section Architecture selection
-
-An @dfn{architecture} is a type of @sc{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 @sc{cpu}.
-
-The command to list valid architecture values is @samp{objdump -i} (the
-second column contains the relevant information).
-
-Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
-
-@subheading @code{objdump} Architecture
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{-m} or @samp{--architecture}
-
-@item
-deduced from the input file
-@end enumerate
-
-@subheading @code{objcopy}, @code{nm}, @code{size}, @code{strings} Architecture
-
-Ways to specify:
-
-@enumerate
-@item
-deduced from the input file
-@end enumerate
-
-@subheading Linker Input Architecture
-
-Ways to specify:
-
-@enumerate
-@item
-deduced from the input file
-@end enumerate
-
-@subheading Linker Output Architecture
-
-Ways to specify:
-
-@enumerate
-@item
-script command @code{OUTPUT_ARCH}
-(@pxref{Option Commands,,Option Commands,ld.info,Using LD})
-
-@item
-the default architecture from the linker output target
-(@pxref{Target Selection})
-@end enumerate
-
-@node Linker Emulation Selection
-@section Linker emulation selection
-
-A linker @dfn{emulation} is a ``personality'' of the linker, which gives
-the linker default values for the other aspects of the target system.
-In particular, it consists of
-
-@itemize @bullet
-@item
-the linker script
-
-@item
-the target
-
-@item
-several ``hook'' functions that are run at certain stages of the linking
-process to do special things that some targets require
-@end itemize
-
-The command to list valid linker emulation values is @samp{ld -V}.
-
-Sample values: @samp{hp300bsd}, @samp{mipslit}, @samp{sun4}.
-
-Ways to specify:
-
-@enumerate
-@item
-command line option: @samp{-m}
-(@pxref{Options,,Options,ld.info,Using LD})
-
-@item
-environment variable @code{LDEMULATION}
-
-@item
-compiled-in @code{DEFAULT_EMULATION} from @file{Makefile},
-which comes from @code{EMUL} in @file{config/@var{target}.mt}
-@end enumerate
-
-@node Reporting Bugs
-@chapter Reporting Bugs
-@cindex bugs
-@cindex 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
-@end menu
-
-@node Bug Criteria
-@section Have you found a bug?
-@cindex bug criteria
-
-If you are not sure whether you have found a bug, here are some guidelines:
-
-@itemize @bullet
-@cindex fatal signal
-@cindex crash
-@item
-If a binary utility gets a fatal signal, for any input whatever, that is
-a bug. Reliable utilities never crash.
-
-@cindex error on valid input
-@item
-If a binary utility produces an error message for valid input, that is a
-bug.
-
-@item
-If you are an experienced user of binary utilities, your suggestions for
-improvement are welcome in any case.
-@end itemize
-
-@node Bug Reporting
-@section How to report bugs
-@cindex bug reports
-@cindex bugs, reporting
-
-A number of companies and individuals offer support for @sc{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 @file{etc/SERVICE} in the @sc{gnu} Emacs
-distribution.
-
-In any event, we also recommend that you send bug reports for the binary
-utilities to @samp{bug-binutils@@gnu.org}.
-
-The fundamental principle of reporting bugs usefully is this:
-@strong{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?'' Those bug reports are useless, and we urge everyone to
-@emph{refuse to respond to them} except to chide the sender to report
-bugs properly.
-
-To enable us to fix the bug, you should include all these things:
-
-@itemize @bullet
-@item
-The version of the utility. Each utility announces it if you start it
-with the @samp{--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.
-
-@item
-Any patches you may have applied to the source, including any patches
-made to the @code{BFD} library.
-
-@item
-The type of machine you are using, and the operating system name and
-version number.
-
-@item
-What compiler (and its version) was used to compile the utilities---e.g.
-``@code{gcc-2.7}''.
-
-@item
-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.
-
-@item
-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, uuencoded if
-necessary to get them through the mail system. Note that
-@samp{bug-binutils@@gnu.org} is a mailing list, so you should avoid
-sending very large files to it. Making the files available for
-anonymous FTP is OK.
-
-If the source files were produced exclusively using @sc{gnu} programs
-(e.g., @code{gcc}, @code{gas}, and/or the @sc{gnu} @code{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 @code{gcc}, or
-whatever, was used to produce the object files. Also say how
-@code{gcc}, or whatever, was configured.
-
-@item
-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 synch, 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.
-
-@item
-If you wish to suggest changes to the source, send us context diffs, as
-generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p}
-option. Always send diffs from the old file to the new file. If you
-wish to discuss something in the @code{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.
-@end itemize
-
-Here are some things that are not necessary:
-
-@itemize @bullet
-@item
-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 @emph{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.
-
-@item
-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.
-
-@item
-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.
-@end itemize
-
-@node GNU Free Documentation License
-@chapter GNU Free Documentation License
-@cindex GNU Free Documentation License
-
- GNU Free Documentation License
-
- Version 1.1, March 2000
-
- Copyright (C) 2000 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- 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
-written 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 that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License. The "Document", below, refers to any
-such manual or work. Any member of the public is a licensee, and is
-addressed as "you".
-
-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. (For example, 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.
-
-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 "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-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 has been designed to thwart or discourage
-subsequent modification by readers is not Transparent. 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 designed for human modification. Opaque formats include
-PostScript, PDF, 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 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.
-
-
-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 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 publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols. 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 less than five).
-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", and 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. In any section entitled "Acknowledgements" or "Dedications",
- preserve the section's title, 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 as "Endorsements"
- or to conflict in title with any Invariant Section.
-
-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.
-
-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, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation. Such a compilation is called an "aggregate", and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-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 quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around 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 provided that you also include the
-original English version of this License. In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
-
-9. TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-
-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.
-
-
-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:
-
-@smallexample
- 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.1
- or any later version published by the Free Software Foundation;
- with the Invariant Sections being LIST THEIR TITLES, with the
- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
- A copy of the license is included in the section entitled "GNU
- Free Documentation License".
-@end smallexample
-
-If you have no Invariant Sections, write "with no Invariant Sections"
-instead of saying which ones are invariant. If you have no
-Front-Cover Texts, write "no Front-Cover Texts" instead of
-"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-
-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.
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
diff --git a/contrib/binutils/binutils/config.texi b/contrib/binutils/binutils/config.texi
deleted file mode 100644
index 56bdd12e9e39..000000000000
--- a/contrib/binutils/binutils/config.texi
+++ /dev/null
@@ -1 +0,0 @@
-@set VERSION 2.11.2
diff --git a/contrib/binutils/binutils/cxxfilt.man b/contrib/binutils/binutils/cxxfilt.man
deleted file mode 100644
index a4d5d45106b6..000000000000
--- a/contrib/binutils/binutils/cxxfilt.man
+++ /dev/null
@@ -1,114 +0,0 @@
-.\" Copyright (c) 1991 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH @PROGRAM@ 1 "June 1993" "cygnus support" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-@PROGRAM@ \- demangle C++ symbols
-
-.SH SYNOPSIS
-.hy 0
-.na
-.TP
-.B @PROGRAM@
-.RB "[\|" \-_ | \-\-strip-underscores "\|]"
-.RB "[\|" "\-s {gnu,lucid,arm} " | " \-\-format={gnu,lucid,arm}" "\|]"
-.RB "[\|" \-\-help "\|]"
-.RB "[\|" \-\-version "\|]"
-.RB "[\|" symbol "...\|]"
-.SH DESCRIPTION
-The C++ language provides function overloading, which means that you can
-write many functions with the same name (providing each takes parameters
-of different types). All C++ function names are encoded into a
-low-level assembly label (this process is known as
-.I mangling\c
-). The
-.B @PROGRAM@
-program does the inverse mapping: it decodes (\fIdemangles\fR)
-low-level names into user-level names so that the linker can keep
-these overloaded functions from clashing.
-.PP
-Every alphanumeric word (consisting of letters, digits, underscores,
-dollars, or periods) seen in the input is a potential label. If the
-label decodes into a C++ name, the C++ name replaces the low-level
-name in the output.
-.PP
-You can use
-.B @PROGRAM@
-to decipher individual symbols by specifying these symbols on the
-command line.
-.PP
-If no
-.B symbol
-arguments are given,
-.B @PROGRAM@
-reads symbol names from the standard input and writes the demangled
-names to the standard output. All results are printed on the standard
-output.
-.SH OPTIONS
-.TP
-.B \-_
-.TP
-.B \-\-strip\-underscores
-On some systems, both the C and C++ compilers put an
-underscore in front of every name. For example, the C name
-.B foo
-gets the low-level name
-.BR _foo .
-This option removes the leading underscore.
-
-.TP
-.B "\-s {gnu,lucid,arm}"
-.TP
-.B \-\-format={gnu,lucid,arm}
-GNU
-.B nm
-can decode three different methods of mangling, used by different C++
-compilers. This option selects which method it uses: the one used by
-the GNU compiler, the one used by the Lucid compiler, or the one
-specified by the C++ Annotated Reference Manual. The default is the
-GNU style.
-
-.TP
-.B \-\-help
-Print a summary of the options to
-.B @PROGRAM@
-and exit.
-
-.TP
-.B \-\-version
-Print the version number of
-.B @PROGRAM@
-and exit.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (June 1993).
-
-.SH COPYING
-Copyright (c) 1993 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
diff --git a/contrib/binutils/binutils/defparse.c b/contrib/binutils/binutils/defparse.c
deleted file mode 100644
index f51ee33cd9e5..000000000000
--- a/contrib/binutils/binutils/defparse.c
+++ /dev/null
@@ -1,1411 +0,0 @@
-/* A Bison parser, made from defparse.y
- by GNU bison 1.35. */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-# define NAME 257
-# define LIBRARY 258
-# define DESCRIPTION 259
-# define STACKSIZE 260
-# define HEAPSIZE 261
-# define CODE 262
-# define DATA 263
-# define SECTIONS 264
-# define EXPORTS 265
-# define IMPORTS 266
-# define VERSIONK 267
-# define BASE 268
-# define CONSTANT 269
-# define READ 270
-# define WRITE 271
-# define EXECUTE 272
-# define SHARED 273
-# define NONSHARED 274
-# define NONAME 275
-# define SINGLE 276
-# define MULTIPLE 277
-# define INITINSTANCE 278
-# define INITGLOBAL 279
-# define TERMINSTANCE 280
-# define TERMGLOBAL 281
-# define ID 282
-# define NUMBER 283
-
-#line 1 "defparse.y"
- /* defparse.y - parser for .def files */
-
-/* Copyright 1995, 1997, 1998, 1999 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include "bfd.h"
-#include "bucomm.h"
-#include "dlltool.h"
-
-#line 26 "defparse.y"
-#ifndef YYSTYPE
-typedef union {
- char *id;
- int number;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-
-
-#define YYFINAL 96
-#define YYFLAG -32768
-#define YYNTBASE 34
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 283 ? yytranslate[x] : 55)
-
-/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
-static const char 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, 30, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 31, 2, 2, 33, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 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, 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
-};
-
-#if YYDEBUG
-static const short yyprhs[] =
-{
- 0, 0, 3, 5, 9, 14, 17, 20, 24, 28,
- 31, 34, 37, 40, 43, 48, 49, 52, 59, 62,
- 64, 72, 80, 86, 92, 98, 104, 108, 112, 115,
- 117, 120, 124, 126, 128, 129, 132, 133, 135, 137,
- 139, 141, 143, 145, 147, 149, 150, 152, 153, 155,
- 156, 158, 162, 163, 166, 167, 170, 175, 176, 180,
- 181, 182, 186, 188, 190, 192
-};
-static const short yyrhs[] =
-{
- 34, 35, 0, 35, 0, 3, 49, 52, 0, 4,
- 49, 52, 53, 0, 11, 36, 0, 5, 28, 0,
- 6, 29, 44, 0, 7, 29, 44, 0, 8, 42,
- 0, 9, 42, 0, 10, 40, 0, 12, 38, 0,
- 13, 29, 0, 13, 29, 30, 29, 0, 0, 36,
- 37, 0, 28, 51, 50, 47, 46, 48, 0, 38,
- 39, 0, 39, 0, 28, 31, 28, 30, 28, 30,
- 28, 0, 28, 31, 28, 30, 28, 30, 29, 0,
- 28, 31, 28, 30, 28, 0, 28, 31, 28, 30,
- 29, 0, 28, 30, 28, 30, 28, 0, 28, 30,
- 28, 30, 29, 0, 28, 30, 28, 0, 28, 30,
- 29, 0, 40, 41, 0, 41, 0, 28, 42, 0,
- 42, 43, 45, 0, 45, 0, 32, 0, 0, 32,
- 29, 0, 0, 16, 0, 17, 0, 18, 0, 19,
- 0, 20, 0, 22, 0, 23, 0, 15, 0, 0,
- 21, 0, 0, 9, 0, 0, 28, 0, 28, 30,
- 28, 0, 0, 33, 29, 0, 0, 31, 28, 0,
- 31, 28, 30, 28, 0, 0, 14, 31, 29, 0,
- 0, 0, 53, 43, 54, 0, 24, 0, 25, 0,
- 26, 0, 27, 0
-};
-
-#endif
-
-#if YYDEBUG
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const short yyrline[] =
-{
- 0, 43, 44, 47, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 63, 65, 68, 72, 74,
- 77, 79, 80, 81, 82, 83, 84, 85, 88, 90,
- 93, 97, 99, 102, 104, 106, 107, 110, 112, 113,
- 114, 115, 116, 117, 120, 122, 125, 127, 130, 132,
- 135, 136, 142, 145, 147, 150, 152, 158, 161, 162,
- 165, 167, 170, 172, 173, 174
-};
-#endif
-
-
-#if (YYDEBUG) || defined YYERROR_VERBOSE
-
-/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-static const char *const yytname[] =
-{
- "$", "error", "$undefined.", "NAME", "LIBRARY", "DESCRIPTION",
- "STACKSIZE", "HEAPSIZE", "CODE", "DATA", "SECTIONS", "EXPORTS",
- "IMPORTS", "VERSIONK", "BASE", "CONSTANT", "READ", "WRITE", "EXECUTE",
- "SHARED", "NONSHARED", "NONAME", "SINGLE", "MULTIPLE", "INITINSTANCE",
- "INITGLOBAL", "TERMINSTANCE", "TERMGLOBAL", "ID", "NUMBER", "'.'",
- "'='", "','", "'@'", "start", "command", "explist", "expline",
- "implist", "impline", "seclist", "secline", "attr_list", "opt_comma",
- "opt_number", "attr", "opt_CONSTANT", "opt_NONAME", "opt_DATA",
- "opt_name", "opt_ordinal", "opt_equal_name", "opt_base", "option_list",
- "option", 0
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const short yyr1[] =
-{
- 0, 34, 34, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 36, 36, 37, 38, 38,
- 39, 39, 39, 39, 39, 39, 39, 39, 40, 40,
- 41, 42, 42, 43, 43, 44, 44, 45, 45, 45,
- 45, 45, 45, 45, 46, 46, 47, 47, 48, 48,
- 49, 49, 49, 50, 50, 51, 51, 51, 52, 52,
- 53, 53, 54, 54, 54, 54
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const short yyr2[] =
-{
- 0, 2, 1, 3, 4, 2, 2, 3, 3, 2,
- 2, 2, 2, 2, 4, 0, 2, 6, 2, 1,
- 7, 7, 5, 5, 5, 5, 3, 3, 2, 1,
- 2, 3, 1, 1, 0, 2, 0, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,
- 1, 3, 0, 2, 0, 2, 4, 0, 3, 0,
- 0, 3, 1, 1, 1, 1
-};
-
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
- doesn't specify something else to do. Zero means the default is an
- error. */
-static const short yydefact[] =
-{
- 0, 52, 52, 0, 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 2, 50, 59, 59, 6, 36, 36,
- 37, 38, 39, 40, 41, 42, 43, 9, 32, 10,
- 0, 11, 29, 5, 0, 12, 19, 13, 1, 0,
- 0, 3, 60, 0, 7, 8, 33, 0, 30, 28,
- 57, 16, 0, 0, 18, 0, 51, 0, 4, 35,
- 31, 0, 54, 26, 27, 0, 14, 58, 0, 55,
- 0, 47, 0, 0, 62, 63, 64, 65, 61, 0,
- 53, 46, 45, 24, 25, 22, 23, 56, 44, 49,
- 0, 48, 17, 20, 21, 0, 0
-};
-
-static const short yydefgoto[] =
-{
- 12, 13, 33, 51, 35, 36, 31, 32, 27, 47,
- 44, 28, 89, 82, 92, 15, 71, 62, 41, 58,
- 78
-};
-
-static const short yypact[] =
-{
- 32, -22, -22, -19, -13, 22, 30, 30, -6,-32768,
- 26, 38, 21,-32768, 29, 46, 46,-32768, 36, 36,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768, -15,-32768, -15,
- 30, -6,-32768, 41, -16, 26,-32768, 40,-32768, 43,
- 42,-32768,-32768, 45,-32768,-32768,-32768, 30, -15,-32768,
- 44,-32768, -9, 48,-32768, 49,-32768, 50, -14,-32768,
- -32768, 52, 39, 47,-32768, 51,-32768,-32768, 31, 53,
- 55, 61, 33, 35,-32768,-32768,-32768,-32768,-32768, 57,
- -32768,-32768, 71,-32768,-32768, 58,-32768,-32768,-32768, 78,
- 37,-32768,-32768,-32768,-32768, 89,-32768
-};
-
-static const short yypgoto[] =
-{
- -32768, 79,-32768,-32768,-32768, 59,-32768, 62, -7, 34,
- 76, 54,-32768,-32768,-32768, 88,-32768,-32768, 80,-32768,
- -32768
-};
-
-
-#define YYLAST 101
-
-
-static const short yytable[] =
-{
- 29, -34, -34, -34, -34, -34, 14, -34, -34, 17,
- -34, -34, -34, -34, 52, 53, 18, 46, 46, 63,
- 64, 95, 30, 48, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 20, 21, 22, 23,
- 24, 19, 25, 26, 34, 74, 75, 76, 77, 39,
- 40, 83, 84, 85, 86, 93, 94, 37, 43, 50,
- 55, 56, 70, 57, 59, 61, 65, 72, 66, 67,
- 69, 73, 81, 79, 80, 87, 88, 91, 90, 96,
- 16, 38, 68, 49, 54, 45, 42, 0, 0, 0,
- 0, 60
-};
-
-static const short yycheck[] =
-{
- 7, 16, 17, 18, 19, 20, 28, 22, 23, 28,
- 24, 25, 26, 27, 30, 31, 29, 32, 32, 28,
- 29, 0, 28, 30, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 16, 17, 18, 19,
- 20, 29, 22, 23, 28, 24, 25, 26, 27, 30,
- 14, 28, 29, 28, 29, 28, 29, 29, 32, 28,
- 30, 28, 33, 31, 29, 31, 28, 30, 29, 29,
- 28, 30, 21, 30, 29, 28, 15, 9, 30, 0,
- 2, 12, 58, 31, 35, 19, 16, -1, -1, -1,
- -1, 47
-};
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/share/bison/bison.simple"
-
-/* Skeleton output parser for bison,
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
- Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* This is the parser code that is written into each bison parser when
- the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* 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. */
-
-#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# else
-# ifndef YYSTACK_USE_ALLOCA
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
-# endif
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
-
-
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- short yyss;
- YYSTYPE yyvs;
-# if YYLSP_NEEDED
- YYLTYPE yyls;
-# endif
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# if YYLSP_NEEDED
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAX)
-# else
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
-# endif
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
-#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 yyerrlab1
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run).
-
- When YYLLOC_DEFAULT is run, CURRENT is set the location of the
- first token. By default, to implement support for ranges, extend
- its range to the last symbol. */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#if YYPURE
-# if YYLSP_NEEDED
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval, &yylloc)
-# endif
-# else /* !YYLSP_NEEDED */
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval)
-# endif
-# endif /* !YYLSP_NEEDED */
-#else /* !YYPURE */
-# define YYLEX yylex ()
-#endif /* !YYPURE */
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-#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
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-#ifdef YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-# else
-yystrlen (yystr)
- const char *yystr;
-# endif
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# 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 *
-# if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-# else
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-#endif
-
-#line 315 "/usr/share/bison/bison.simple"
-
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL
-# else
-# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
-int yyparse (void);
-# endif
-#endif
-
-/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
-
-#define YY_DECL_NON_LSP_VARIABLES \
-/* The lookahead symbol. */ \
-int yychar; \
- \
-/* The semantic value of the lookahead symbol. */ \
-YYSTYPE yylval; \
- \
-/* Number of parse errors so far. */ \
-int yynerrs;
-
-#if YYLSP_NEEDED
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES \
- \
-/* Location data for the lookahead symbol. */ \
-YYLTYPE yylloc;
-#else
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES
-#endif
-
-
-/* If nonreentrant, generate the variables here. */
-
-#if !YYPURE
-YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
-int
-yyparse (YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
-{
- /* If reentrant, generate the variables here. */
-#if YYPURE
- YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-
-#if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-#endif
-
-#if YYLSP_NEEDED
-# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-#if YYLSP_NEEDED
- YYLTYPE yyloc;
-#endif
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-#if YYLSP_NEEDED
- yylsp = yyls;
-#endif
- 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 (yyssp >= yyss + yystacksize - 1)
- {
- /* 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;
- short *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. */
-# if YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yyls1, yysize * sizeof (*yylsp),
- &yystacksize);
- yyls = yyls1;
-# else
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-# endif
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
-# else
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-
- {
- short *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyoverflowlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-# if YYLSP_NEEDED
- YYSTACK_RELOCATE (yyls);
-# endif
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-#if YYLSP_NEEDED
- yylsp = yyls + yysize - 1;
-#endif
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- 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. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yychar1 = YYTRANSLATE (yychar);
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- YYFPRINTF (stderr, "Next token is %d (%s",
- yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise
- meaning of a token, for further debugging info. */
-# ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-# endif
- YYFPRINTF (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- 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 the semantic value of
- the lookahead token. 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];
-
-#if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
-#endif
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables which
- are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
- switch (yyn) {
-
-case 3:
-#line 48 "defparse.y"
-{ def_name (yyvsp[-1].id, yyvsp[0].number); }
- break;
-case 4:
-#line 49 "defparse.y"
-{ def_library (yyvsp[-2].id, yyvsp[-1].number); }
- break;
-case 6:
-#line 51 "defparse.y"
-{ def_description (yyvsp[0].id);}
- break;
-case 7:
-#line 52 "defparse.y"
-{ def_stacksize (yyvsp[-1].number, yyvsp[0].number);}
- break;
-case 8:
-#line 53 "defparse.y"
-{ def_heapsize (yyvsp[-1].number, yyvsp[0].number);}
- break;
-case 9:
-#line 54 "defparse.y"
-{ def_code (yyvsp[0].number);}
- break;
-case 10:
-#line 55 "defparse.y"
-{ def_data (yyvsp[0].number);}
- break;
-case 13:
-#line 58 "defparse.y"
-{ def_version (yyvsp[0].number,0);}
- break;
-case 14:
-#line 59 "defparse.y"
-{ def_version (yyvsp[-2].number,yyvsp[0].number);}
- break;
-case 17:
-#line 70 "defparse.y"
-{ def_exports (yyvsp[-5].id, yyvsp[-4].id, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number, yyvsp[0].number);}
- break;
-case 20:
-#line 78 "defparse.y"
-{ def_import (yyvsp[-6].id,yyvsp[-4].id,yyvsp[-2].id,yyvsp[0].id, 0); }
- break;
-case 21:
-#line 79 "defparse.y"
-{ def_import (yyvsp[-6].id,yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].number); }
- break;
-case 22:
-#line 80 "defparse.y"
-{ def_import (yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].id, 0); }
- break;
-case 23:
-#line 81 "defparse.y"
-{ def_import (yyvsp[-4].id,yyvsp[-2].id, 0, 0,yyvsp[0].number); }
- break;
-case 24:
-#line 82 "defparse.y"
-{ def_import ( 0,yyvsp[-4].id,yyvsp[-2].id,yyvsp[0].id, 0); }
- break;
-case 25:
-#line 83 "defparse.y"
-{ def_import ( 0,yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].number); }
- break;
-case 26:
-#line 84 "defparse.y"
-{ def_import ( 0,yyvsp[-2].id, 0,yyvsp[0].id, 0); }
- break;
-case 27:
-#line 85 "defparse.y"
-{ def_import ( 0,yyvsp[-2].id, 0, 0,yyvsp[0].number); }
- break;
-case 30:
-#line 94 "defparse.y"
-{ def_section (yyvsp[-1].id,yyvsp[0].number);}
- break;
-case 35:
-#line 106 "defparse.y"
-{ yyval.number=yyvsp[0].number;}
- break;
-case 36:
-#line 107 "defparse.y"
-{ yyval.number=-1;}
- break;
-case 37:
-#line 111 "defparse.y"
-{ yyval.number = 1; }
- break;
-case 38:
-#line 112 "defparse.y"
-{ yyval.number = 2; }
- break;
-case 39:
-#line 113 "defparse.y"
-{ yyval.number = 4; }
- break;
-case 40:
-#line 114 "defparse.y"
-{ yyval.number = 8; }
- break;
-case 41:
-#line 115 "defparse.y"
-{ yyval.number = 0; }
- break;
-case 42:
-#line 116 "defparse.y"
-{ yyval.number = 0; }
- break;
-case 43:
-#line 117 "defparse.y"
-{ yyval.number = 0; }
- break;
-case 44:
-#line 121 "defparse.y"
-{yyval.number=1;}
- break;
-case 45:
-#line 122 "defparse.y"
-{yyval.number=0;}
- break;
-case 46:
-#line 126 "defparse.y"
-{yyval.number=1;}
- break;
-case 47:
-#line 127 "defparse.y"
-{yyval.number=0;}
- break;
-case 48:
-#line 131 "defparse.y"
-{ yyval.number = 1; }
- break;
-case 49:
-#line 132 "defparse.y"
-{ yyval.number = 0; }
- break;
-case 50:
-#line 135 "defparse.y"
-{ yyval.id =yyvsp[0].id; }
- break;
-case 51:
-#line 137 "defparse.y"
-{
- 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;
- }
- break;
-case 52:
-#line 142 "defparse.y"
-{ yyval.id=""; }
- break;
-case 53:
-#line 146 "defparse.y"
-{ yyval.number=yyvsp[0].number;}
- break;
-case 54:
-#line 147 "defparse.y"
-{ yyval.number=-1;}
- break;
-case 55:
-#line 151 "defparse.y"
-{ yyval.id = yyvsp[0].id; }
- break;
-case 56:
-#line 153 "defparse.y"
-{
- 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;
- }
- break;
-case 57:
-#line 158 "defparse.y"
-{ yyval.id = 0; }
- break;
-case 58:
-#line 161 "defparse.y"
-{ yyval.number= yyvsp[0].number;}
- break;
-case 59:
-#line 162 "defparse.y"
-{ yyval.number=-1;}
- break;
-}
-
-#line 705 "/usr/share/bison/bison.simple"
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-#if YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-#if YYLSP_NEEDED
- *++yylsp = yyloc;
-#endif
-
- /* 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 - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
- yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* defined (YYERROR_VERBOSE) */
- yyerror ("parse error");
- }
- goto yyerrlab1;
-
-
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
-yyerrlab1:
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-
-/*-------------------------------------------------------------------.
-| yyerrdefault -- current state does not do anything special for the |
-| error token. |
-`-------------------------------------------------------------------*/
-yyerrdefault:
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
-
- /* If its default is to accept any token, ok. Otherwise pop it. */
- yyn = yydefact[yystate];
- if (yyn)
- goto yydefault;
-#endif
-
-
-/*---------------------------------------------------------------.
-| yyerrpop -- pop the current state because it cannot handle the |
-| error token |
-`---------------------------------------------------------------*/
-yyerrpop:
- if (yyssp == yyss)
- YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#if YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "Error: state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
-/*--------------.
-| yyerrhandle. |
-`--------------*/
-yyerrhandle:
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-/*---------------------------------------------.
-| yyoverflowab -- parser overflow comes here. |
-`---------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
- yyresult = 2;
- /* Fall through. */
-
-yyreturn:
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
- return yyresult;
-}
-#line 176 "defparse.y"
diff --git a/contrib/binutils/binutils/defparse.h b/contrib/binutils/binutils/defparse.h
deleted file mode 100644
index ee1465291e44..000000000000
--- a/contrib/binutils/binutils/defparse.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef BISON_Y_TAB_H
-# define BISON_Y_TAB_H
-
-#ifndef YYSTYPE
-typedef union {
- char *id;
- int number;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-# define NAME 257
-# define LIBRARY 258
-# define DESCRIPTION 259
-# define STACKSIZE 260
-# define HEAPSIZE 261
-# define CODE 262
-# define DATA 263
-# define SECTIONS 264
-# define EXPORTS 265
-# define IMPORTS 266
-# define VERSIONK 267
-# define BASE 268
-# define CONSTANT 269
-# define READ 270
-# define WRITE 271
-# define EXECUTE 272
-# define SHARED 273
-# define NONSHARED 274
-# define NONAME 275
-# define SINGLE 276
-# define MULTIPLE 277
-# define INITINSTANCE 278
-# define INITGLOBAL 279
-# define TERMINSTANCE 280
-# define TERMGLOBAL 281
-# define ID 282
-# define NUMBER 283
-
-
-extern YYSTYPE yylval;
-
-#endif /* not BISON_Y_TAB_H */
diff --git a/contrib/binutils/binutils/defparse.y b/contrib/binutils/binutils/defparse.y
deleted file mode 100644
index d0bccd95a706..000000000000
--- a/contrib/binutils/binutils/defparse.y
+++ /dev/null
@@ -1,175 +0,0 @@
-%{ /* defparse.y - parser for .def files */
-
-/* Copyright 1995, 1997, 1998, 1999 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include "bfd.h"
-#include "bucomm.h"
-#include "dlltool.h"
-%}
-
-%union {
- char *id;
- int number;
-};
-
-%token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATA
-%token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANT
-%token READ WRITE EXECUTE SHARED NONSHARED NONAME
-%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL
-%token <id> ID
-%token <number> NUMBER
-%type <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA
-%type <number> attr attr_list opt_number
-%type <id> opt_name opt_equal_name
-
-%%
-
-start: start command
- | command
- ;
-
-command:
- NAME opt_name opt_base { def_name ($2, $3); }
- | LIBRARY opt_name opt_base option_list { def_library ($2, $3); }
- | EXPORTS explist
- | DESCRIPTION ID { def_description ($2);}
- | STACKSIZE NUMBER opt_number { def_stacksize ($2, $3);}
- | HEAPSIZE NUMBER opt_number { def_heapsize ($2, $3);}
- | CODE attr_list { def_code ($2);}
- | DATA attr_list { def_data ($2);}
- | SECTIONS seclist
- | IMPORTS implist
- | VERSIONK NUMBER { def_version ($2,0);}
- | VERSIONK NUMBER '.' NUMBER { def_version ($2,$4);}
- ;
-
-
-explist:
- /* EMPTY */
- | explist expline
- ;
-
-expline:
- ID opt_equal_name opt_ordinal opt_NONAME opt_CONSTANT opt_DATA
- { def_exports ($1, $2, $3, $4, $5, $6);}
- ;
-implist:
- implist impline
- | impline
- ;
-
-impline:
- ID '=' ID '.' ID '.' ID { def_import ($1,$3,$5,$7, 0); }
- | ID '=' ID '.' ID '.' NUMBER { def_import ($1,$3,$5, 0,$7); }
- | ID '=' ID '.' ID { def_import ($1,$3, 0,$5, 0); }
- | ID '=' ID '.' NUMBER { def_import ($1,$3, 0, 0,$5); }
- | ID '.' ID '.' ID { def_import ( 0,$1,$3,$5, 0); }
- | ID '.' ID '.' NUMBER { def_import ( 0,$1,$3, 0,$5); }
- | ID '.' ID { def_import ( 0,$1, 0,$3, 0); }
- | ID '.' NUMBER { def_import ( 0,$1, 0, 0,$3); }
-;
-
-seclist:
- seclist secline
- | secline
- ;
-
-secline:
- ID attr_list { def_section ($1,$2);}
- ;
-
-attr_list:
- attr_list opt_comma attr
- | attr
- ;
-
-opt_comma:
- ','
- |
- ;
-opt_number: ',' NUMBER { $$=$2;}
- | { $$=-1;}
- ;
-
-attr:
- READ { $$ = 1; }
- | WRITE { $$ = 2; }
- | EXECUTE { $$ = 4; }
- | SHARED { $$ = 8; }
- | NONSHARED { $$ = 0; }
- | SINGLE { $$ = 0; }
- | MULTIPLE { $$ = 0; }
- ;
-
-opt_CONSTANT:
- CONSTANT {$$=1;}
- | {$$=0;}
- ;
-
-opt_NONAME:
- NONAME {$$=1;}
- | {$$=0;}
- ;
-
-opt_DATA:
- DATA { $$ = 1; }
- | { $$ = 0; }
- ;
-
-opt_name: ID { $$ =$1; }
- | ID '.' ID
- {
- char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
- sprintf (name, "%s.%s", $1, $3);
- $$ = name;
- }
- | { $$=""; }
- ;
-
-opt_ordinal:
- '@' NUMBER { $$=$2;}
- | { $$=-1;}
- ;
-
-opt_equal_name:
- '=' ID { $$ = $2; }
- | '=' ID '.' ID
- {
- char *name = xmalloc (strlen ($2) + 1 + strlen ($4) + 1);
- sprintf (name, "%s.%s", $2, $4);
- $$ = name;
- }
- | { $$ = 0; }
- ;
-
-opt_base: BASE '=' NUMBER { $$= $3;}
- | { $$=-1;}
- ;
-
-option_list:
- /* empty */
- | option_list opt_comma option
- ;
-
-option:
- INITINSTANCE
- | INITGLOBAL
- | TERMINSTANCE
- | TERMGLOBAL
- ;
diff --git a/contrib/binutils/binutils/dyn-string.c b/contrib/binutils/binutils/dyn-string.c
deleted file mode 100644
index a16401827657..000000000000
--- a/contrib/binutils/binutils/dyn-string.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* An abstract string datatype.
- Copyright (C) 1998 Free Software Foundation, Inc.
- Contributed by Mark Mitchell (mark@markmitchell.com).
-
- This file is part of GNU CC.
-
- GNU CC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- GNU CC 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* This file lives in at least two places: binutils and gcc.
- Don't change one without the other. */
-
-#include "config.h"
-#ifdef IN_GCC
-#include "system.h"
-#include "gansidecl.h"
-#else
-#include "ansidecl.h"
-#endif
-#include "dyn-string.h"
-
-extern char *xmalloc ();
-extern char *xrealloc ();
-
-/* Create a new dynamic string capable of holding at least SPACE
- characters, including the terminating NUL. If SPACE is 0, it
- will be silently increased to 1. */
-
-dyn_string_t
-dyn_string_new (space)
- int space;
-{
- dyn_string_t result = (dyn_string_t) xmalloc (sizeof (struct dyn_string));
-
- if (space == 0)
- /* We need at least one byte in which to store the terminating
- NUL. */
- space = 1;
-
- result->allocated = space;
- result->s = (char*) xmalloc (space);
- result->length = 0;
- result->s[0] = '\0';
-
- return result;
-}
-
-/* Free the memory used by DS. */
-
-void
-dyn_string_delete (ds)
- dyn_string_t ds;
-{
- free (ds->s);
- free (ds);
-}
-
-/* Append the NUL-terminated string S to DS, resizing DS if
- necessary. */
-
-dyn_string_t
-dyn_string_append (ds, s)
- dyn_string_t ds;
- char *s;
-{
- int len = strlen (s);
- dyn_string_resize (ds, ds->length + len + 1 /* '\0' */);
- strcpy (ds->s + ds->length, s);
- ds->length += len;
-
- return ds;
-}
-
-/* Increase the capacity of DS so that it can hold at least SPACE
- characters, including the terminating NUL. This function will not
- (at present) reduce the capacity of DS. */
-
-dyn_string_t
-dyn_string_resize (ds, space)
- dyn_string_t ds;
- int space;
-{
- int new_allocated = ds->allocated;
-
- while (space > new_allocated)
- new_allocated *= 2;
-
- if (new_allocated != ds->allocated)
- {
- /* We actually need more space. */
- ds->allocated = new_allocated;
- ds->s = (char*) xrealloc (ds->s, ds->allocated);
- }
-
- return ds;
-}
diff --git a/contrib/binutils/binutils/dyn-string.h b/contrib/binutils/binutils/dyn-string.h
deleted file mode 100644
index cbd25c347344..000000000000
--- a/contrib/binutils/binutils/dyn-string.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* An abstract string datatype.
- Copyright (C) 1998 Free Software Foundation, Inc.
- Contributed by Mark Mitchell (mark@markmitchell.com).
-
- This file is part of GNU CC.
-
- GNU CC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- GNU CC 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* This file lives in at least two places: binutils and gcc.
- Don't change one without the other. */
-
-typedef struct dyn_string
-{
- int allocated; /* The amount of space allocated for the string. */
- int length; /* The actual length of the string. */
- char *s; /* The string itself, NUL-terminated. */
-}* dyn_string_t;
-
-extern dyn_string_t dyn_string_new PARAMS((int));
-extern void dyn_string_delete PARAMS((dyn_string_t));
-extern dyn_string_t dyn_string_append PARAMS((dyn_string_t, char*));
-extern dyn_string_t dyn_string_resize PARAMS((dyn_string_t, int));
diff --git a/contrib/binutils/binutils/nm.1 b/contrib/binutils/binutils/nm.1
deleted file mode 100644
index d6f4eba7e52b..000000000000
--- a/contrib/binutils/binutils/nm.1
+++ /dev/null
@@ -1,587 +0,0 @@
-.\" Copyright (c) 1991, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH nm 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-nm \- list symbols from object files.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B nm
-.RB "[\|" \-a | \-\-debug\-syms "\|]"
-.RB "[\|" \-g | \-\-extern\-only "\|]"
-.RB "[\|" \-B "\|]"
-.RB "[\|" \-C | \-\-demangle "\|]"
-.RB "[\|" \-D | \-\-dynamic "\|]"
-.RB "[\|" \-s | \-\-print\-armap "\|]"
-.RB "[\|" \-o | \-\-print\-file\-name "\|]"
-.RB "[\|" \-n | \-\-numeric\-sort "\|]"
-.RB "[\|" \-p | \-\-no\-sort "\|]"
-.RB "[\|" \-r | \-\-reverse\-sort "\|]"
-.RB "[\|" \-\-size\-sort "\|]"
-.RB "[\|" \-u | \-\-undefined\-only "\|]"
-.RB "[\|" \-l | \-\-line\-numbers "\|]"
-.RB "[\|" \-\-help "\|]"
-.RB "[\|" \-\-version "\|]"
-.RB "[\|" "\-t \fIradix" | \-\-radix=\fIradix "\|]"
-.RB "[\|" \-P | --portability "\|]"
-.RB "[\|" "\-f \fIformat" | \-\-format=\fIformat "\|]"
-.RB "[\|" "\-\-target=\fIbfdname" "\|]"
-.RB "[\|" \c
-.I objfile\c
-\&.\|.\|.\|]
-.ad b
-.hy 1
-.SH DESCRIPTION
-GNU \c
-.B nm\c
-\& lists the symbols from object files \c
-.I objfile\c
-\&. If no object files are given as arguments, \c
-.B nm\c
-\& assumes `\|\c
-.B a.out\c
-\|'.
-
-.SH OPTIONS
-The long and short forms of options, shown here as alternatives, are
-equivalent.
-
-.TP
-.B \-A
-.TP
-.B \-o
-.TP
-.B \-\-print\-file\-name
-Precede each symbol by the name of the input file where it was found,
-rather than identifying the input file once only before all of its
-symbols.
-
-.TP
-.B \-a
-.TP
-.B \-\-debug\-syms
-Display debugger-only symbols; normally these are not listed.
-
-.TP
-.B \-B
-The same as
-.B \-\-format=bsd
-(for compatibility with the MIPS \fBnm\fP).
-
-.TP
-.B \-C
-.TP
-.B \-\-demangle
-Decode (\fIdemangle\fP) low-level symbol names into user-level names.
-Besides removing any initial underscore prepended by the system, this
-makes C++ function names readable.
-
-.TP
-.B \-D
-.TP
-.B \-\-dynamic
-Display the dynamic symbols rather than the normal symbols. This is
-only meaningful for dynamic objects, such as certain types of shared
-libraries.
-
-.TP
-.B "\-f \fIformat"
-Use the output format \fIformat\fP, which can be ``bsd'',
-``sysv'', or ``posix''. The default is ``bsd''.
-Only the first character of \fIformat\fP is significant; it can be
-either upper or lower case.
-
-.TP
-.B \-g
-.TP
-.B \-\-extern\-only
-Display only external symbols.
-
-.TP
-.B \-n
-.TP
-.B \-v
-.TP
-.B \-\-numeric\-sort
-Sort symbols numerically by their addresses, not alphabetically by their
-names.
-
-.TP
-.B \-p
-.TP
-.B \-\-no\-sort
-Don't bother to sort the symbols in any order; just print them in the
-order encountered.
-
-.TP
-.B \-P
-.TP
-.B \-\-portability
-Use the POSIX.2 standard output format instead of the default format.
-Equivalent to ``\-f posix''.
-
-.TP
-.B \-s
-.TP
-.B \-\-print\-armap
-When listing symbols from archive members, include the index: a mapping
-(stored in the archive by \c
-.B ar\c
-\& or \c
-.B ranlib\c
-\&) of what modules
-contain definitions for what names.
-
-.TP
-.B \-r
-.TP
-.B \-\-reverse\-sort
-Reverse the sense of the sort (whether numeric or alphabetic); let the
-last come first.
-
-.TP
-.B \-\-size\-sort
-Sort symbols by size. The size is computed as the difference between
-the value of the symbol and the value of the symbol with the next higher
-value. The size of the symbol is printed, rather than the value.
-
-.TP
-.B "\-t \fIradix"
-.TP
-.B "\-\-radix=\fIradix"
-Use \fIradix\fP as the radix for printing the symbol values. It must be
-``d'' for decimal, ``o'' for octal, or ``x'' for hexadecimal.
-
-.TP
-.BI "\-\-target=" "bfdname"
-Specify an object code format other than your system's default format.
-See
-.BR objdump ( 1 ),
-for information on listing available formats.
-
-.TP
-.B \-u
-.TP
-.B \-\-undefined\-only
-Display only undefined symbols (those external to each object file).
-
-.TP
-.B \-l
-.TP
-.B \-\-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.
-
-.TP
-.B \-V
-.TP
-.B \-\-version
-Show the version number of
-.B nm
-and exit.
-
-.TP
-.B \-\-help
-Show a summary of the options to
-.B nm
-and exit.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (October 1991);
-.BR ar "(" 1 "),"
-.BR objdump ( 1 ),
-.BR ranlib "(" 1 ")."
-
-
-.SH COPYING
-Copyright (c) 1991, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/objcopy.1 b/contrib/binutils/binutils/objcopy.1
deleted file mode 100644
index a6aa1815fa80..000000000000
--- a/contrib/binutils/binutils/objcopy.1
+++ /dev/null
@@ -1,548 +0,0 @@
-.\" Automatically generated by Pod::Man version 1.02
-.\" Wed May 30 12:24:28 2001
-.\"
-.\" Standard preamble:
-.\" ======================================================================
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.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. | will give a
-.\" real vertical bar. \*(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-|\(bv\*(Tr
-.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" ''
-'br\}
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr
-.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
-.\" index entries marked with X<> in POD. Of course, you'll have to process
-.\" the output yourself in some meaningful fashion.
-.if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-. .
-. nr % 0
-. rr F
-.\}
-.\"
-.\" For nroff, turn off justification. Always turn off hyphenation; it
-.\" makes way too many mistakes in technical documents.
-.hy 0
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-.bd B 3
-. \" 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 1"
-.TH OBJCOPY.1 1 "binutils-2.11.90" "2001-05-30" "GNU"
-.UC
-.SH "NAME"
-objcopy \- copy and translate object files
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-objcopy [ \-F \fIbfdname\fR | \-\-target=\fIbfdname\fR ]
- [ \-I \fIbfdname\fR | \-\-input-target=\fIbfdname\fR ]
- [ \-O \fIbfdname\fR | \-\-output-target=\fIbfdname\fR ]
- [ \-B \fIbfdarch\fR | \-\-binary-architecture=\fIbfdarch\fR ]
- [ \-S | \-\-strip-all ] [ \-g | \-\-strip-debug ]
- [ \-K \fIsymbolname\fR | \-\-keep-symbol=\fIsymbolname\fR ]
- [ \-N \fIsymbolname\fR | \-\-strip-symbol=\fIsymbolname\fR ]
- [ \-G \fIsymbolname\fR | \-\-keep-global-symbol=\fIsymbolname\fR]
- [ \-L \fIsymbolname\fR | \-\-localize-symbol=\fIsymbolname\fR ]
- [ \-W \fIsymbolname\fR | \-\-weaken-symbol=\fIsymbolname\fR ]
- [ \-x | \-\-discard-all ] [ \-X | \-\-discard-locals ]
- [ \-b \fIbyte\fR | \-\-byte=\fIbyte\fR ]
- [ \-i \fIinterleave\fR | \-\-interleave=\fIinterleave\fR ]
- [ \-j \fIsectionname\fR | \-\-only-section=\fIsectionname\fR ]
- [ \-R \fIsectionname\fR | \-\-remove-section=\fIsectionname\fR ]
- [ \-p | \-\-preserve-dates ] [ \-\-debugging ]
- [ \-\-gap-fill=\fIval\fR ] [ \-\-pad-to=\fIaddress\fR ]
- [ \-\-set-start=\fIval\fR ] [ \-\-adjust-start=\fIincr\fR ]
- [ \-\-change-addresses=\fIincr\fR ]
- [ \-\-change-section-address \fIsection\fR{=,+,\-}\fIval\fR ]
- [ \-\-change-section-lma \fIsection\fR{=,+,\-}\fIval\fR ]
- [ \-\-change-section-vma \fIsection\fR{=,+,\-}\fIval\fR ]
- [ \-\-change-warnings ] [ \-\-no-change-warnings ]
- [ \-\-set-section-flags \fIsection\fR=\fIflags\fR ]
- [ \-\-add-section \fIsectionname\fR=\fIfilename\fR ]
- [ \-\-change-leading-char ] [ \-\-remove-leading-char ]
- [ \-\-srec-len=\fIival\fR ] [ \-\-srec-forceS3 ]
- [ \-\-redefine-sym \fIold\fR=\fInew\fR ] [ \-\-weaken ]
- [ \-\-keep-symbols=\fIfilename\fR ]
- [ \-\-strip-symbols=\fIfilename\fR ]
- [ \-\-keep-global-symbols=\fIfilename\fR ]
- [ \-\-localize-symbols=\fIfilename\fR ]
- [ \-\-weaken-symbols=\fIfilename\fR ]
- [ \-v | \-\-verbose ] [ \-V | \-\-version ] [ \-\-help ]
- \fIinfile\fR [\fIoutfile\fR]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-The \s-1GNU\s0 \f(CW\*(C`objcopy\*(C'\fR utility copies the contents of an object
-file to another. \f(CW\*(C`objcopy\*(C'\fR uses the \s-1GNU\s0 \s-1BFD\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 \f(CW\*(C`objcopy\*(C'\fR is controlled by command-line options.
-Note that \f(CW\*(C`objcopy\*(C'\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
-\&\f(CW\*(C`objcopy\*(C'\fR creates temporary files to do its translations and
-deletes them afterward. \f(CW\*(C`objcopy\*(C'\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
-\&\f(CW\*(C`objcopy\*(C'\fR can be used to generate S-records by using an output
-target of \fBsrec\fR (e.g., use \fB\-O srec\fR).
-.PP
-\&\f(CW\*(C`objcopy\*(C'\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
-\&\f(CW\*(C`objcopy\*(C'\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 \- \f(CW\*(C`objcopy\*(C'\fR is not able to change the endianness of its input
-files. If the input format has an endianness, (some formats do not),
-\&\f(CW\*(C`objcopy\*(C'\fR can only copy the inputs into file formats that have the
-same endianness or which have no endianness (eg \fBsrec\fR).
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.Ip "\f(CW\*(C`\f(CIinfile\f(CW\*(C'\fR" 4
-.IX Item "infile"
-.Ip "\f(CW\*(C`\f(CIoutfile\f(CW\*(C'\fR" 4
-.IX Item "outfile"
-The input and output files, respectively.
-If you do not specify \fIoutfile\fR, \f(CW\*(C`objcopy\*(C'\fR creates a
-temporary file and destructively renames the result with
-the name of \fIinfile\fR.
-.Ip "\f(CW\*(C`\-I \f(CIbfdname\f(CW \*(C'\fR" 4
-.IX Item "-I bfdname "
-.Ip "\f(CW\*(C`\-\-input\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
-.IX Item "--input-target=bfdname"
-Consider the source file's object format to be \fIbfdname\fR, rather than
-attempting to deduce it.
-.Ip "\f(CW\*(C`\-O \f(CIbfdname\f(CW\*(C'\fR" 4
-.IX Item "-O bfdname"
-.Ip "\f(CW\*(C`\-\-output\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
-.IX Item "--output-target=bfdname"
-Write the output file using the object format \fIbfdname\fR.
-.Ip "\f(CW\*(C`\-F \f(CIbfdname\f(CW\*(C'\fR" 4
-.IX Item "-F bfdname"
-.Ip "\f(CW\*(C`\-\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
-.IX Item "--target=bfdname"
-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 "\f(CW\*(C`\-B \f(CIbfdarch\f(CW\*(C'\fR" 4
-.IX Item "-B bfdarch"
-.Ip "\f(CW\*(C`\-\-binary\-architecture=\f(CIbfdarch\f(CW\*(C'\fR" 4
-.IX Item "--binary-architecture=bfdarch"
-Useful when transforming a raw binary 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 "\f(CW\*(C`\-j \f(CIsectionname\f(CW\*(C'\fR" 4
-.IX Item "-j sectionname"
-.Ip "\f(CW\*(C`\-\-only\-section=\f(CIsectionname\f(CW\*(C'\fR" 4
-.IX Item "--only-section=sectionname"
-Copy only the named section 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.
-.Ip "\f(CW\*(C`\-R \f(CIsectionname\f(CW\*(C'\fR" 4
-.IX Item "-R sectionname"
-.Ip "\f(CW\*(C`\-\-remove\-section=\f(CIsectionname\f(CW\*(C'\fR" 4
-.IX Item "--remove-section=sectionname"
-Remove any section named \fIsectionname\fR from the output file. This
-option may be given more than once. Note that using this option
-inappropriately may make the output file unusable.
-.Ip "\f(CW\*(C`\-S\*(C'\fR" 4
-.IX Item "-S"
-.Ip "\f(CW\*(C`\-\-strip\-all\*(C'\fR" 4
-.IX Item "--strip-all"
-Do not copy relocation and symbol information from the source file.
-.Ip "\f(CW\*(C`\-g\*(C'\fR" 4
-.IX Item "-g"
-.Ip "\f(CW\*(C`\-\-strip\-debug\*(C'\fR" 4
-.IX Item "--strip-debug"
-Do not copy debugging symbols from the source file.
-.Ip "\f(CW\*(C`\-\-strip\-unneeded\*(C'\fR" 4
-.IX Item "--strip-unneeded"
-Strip all symbols that are not needed for relocation processing.
-.Ip "\f(CW\*(C`\-K \f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "-K symbolname"
-.Ip "\f(CW\*(C`\-\-keep\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "--keep-symbol=symbolname"
-Copy only symbol \fIsymbolname\fR from the source file. This option may
-be given more than once.
-.Ip "\f(CW\*(C`\-N \f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "-N symbolname"
-.Ip "\f(CW\*(C`\-\-strip\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "--strip-symbol=symbolname"
-Do not copy symbol \fIsymbolname\fR from the source file. This option
-may be given more than once.
-.Ip "\f(CW\*(C`\-G \f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "-G symbolname"
-.Ip "\f(CW\*(C`\-\-keep\-global\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "--keep-global-symbol=symbolname"
-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 "\f(CW\*(C`\-L \f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "-L symbolname"
-.Ip "\f(CW\*(C`\-\-localize\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "--localize-symbol=symbolname"
-Make symbol \fIsymbolname\fR local to the file, so that it is not
-visible externally. This option may be given more than once.
-.Ip "\f(CW\*(C`\-W \f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "-W symbolname"
-.Ip "\f(CW\*(C`\-\-weaken\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
-.IX Item "--weaken-symbol=symbolname"
-Make symbol \fIsymbolname\fR weak. This option may be given more than once.
-.Ip "\f(CW\*(C`\-x\*(C'\fR" 4
-.IX Item "-x"
-.Ip "\f(CW\*(C`\-\-discard\-all\*(C'\fR" 4
-.IX Item "--discard-all"
-Do not copy non-global symbols from the source file.
-.Ip "\f(CW\*(C`\-X\*(C'\fR" 4
-.IX Item "-X"
-.Ip "\f(CW\*(C`\-\-discard\-locals\*(C'\fR" 4
-.IX Item "--discard-locals"
-Do not copy compiler-generated local symbols.
-(These usually start with \fBL\fR or \fB.\fR.)
-.Ip "\f(CW\*(C`\-b \f(CIbyte\f(CW\*(C'\fR" 4
-.IX Item "-b byte"
-.Ip "\f(CW\*(C`\-\-byte=\f(CIbyte\f(CW\*(C'\fR" 4
-.IX Item "--byte=byte"
-Keep only every \fIbyte\fRth byte of the input file (header data is not
-affected). \fIbyte\fR can be in the range from 0 to \fIinterleave\fR\-1,
-where \fIinterleave\fR is given by the \fB\-i\fR or \fB\*(--interleave\fR
-option, or the default of 4. 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.
-.Ip "\f(CW\*(C`\-i \f(CIinterleave\f(CW\*(C'\fR" 4
-.IX Item "-i interleave"
-.Ip "\f(CW\*(C`\-\-interleave=\f(CIinterleave\f(CW\*(C'\fR" 4
-.IX Item "--interleave=interleave"
-Only copy one out of every \fIinterleave\fR bytes. Select which byte to
-copy with the \fI\-b\fR or \fB\*(--byte\fR option. The default is 4.
-\&\f(CW\*(C`objcopy\*(C'\fR ignores this option if you do not specify either \fB\-b\fR or
-\&\fB\*(--byte\fR.
-.Ip "\f(CW\*(C`\-p\*(C'\fR" 4
-.IX Item "-p"
-.Ip "\f(CW\*(C`\-\-preserve\-dates\*(C'\fR" 4
-.IX Item "--preserve-dates"
-Set the access and modification dates of the output file to be the same
-as those of the input file.
-.Ip "\f(CW\*(C`\-\-debugging\*(C'\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 "\f(CW\*(C`\-\-gap\-fill \f(CIval\f(CW\*(C'\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 "\f(CW\*(C`\-\-pad\-to \f(CIaddress\f(CW\*(C'\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 "\f(CW\*(C`\-\-set\-start \f(CIval\f(CW\*(C'\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 "\f(CW\*(C`\-\-change\-start \f(CIincr\f(CW\*(C'\fR" 4
-.IX Item "--change-start incr"
-.Ip "\f(CW\*(C`\-\-adjust\-start \f(CIincr\f(CW\*(C'\fR" 4
-.IX Item "--adjust-start incr"
-Change the start address by adding \fIincr\fR. Not all object file
-formats support setting the start address.
-.Ip "\f(CW\*(C`\-\-change\-addresses \f(CIincr\f(CW\*(C'\fR" 4
-.IX Item "--change-addresses incr"
-.Ip "\f(CW\*(C`\-\-adjust\-vma \f(CIincr\f(CW\*(C'\fR" 4
-.IX Item "--adjust-vma incr"
-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 "\f(CW\*(C`\-\-change\-section\-address \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
-.IX Item "--change-section-address section{=,+,-}val"
-.Ip "\f(CW\*(C`\-\-adjust\-section\-vma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
-.IX Item "--adjust-section-vma section{=,+,-}val"
-Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of the named
-\&\fIsection\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 \fIsection\fR does not exist in the input file, a warning will
-be issued, unless \fB\*(--no-change-warnings\fR is used.
-.Ip "\f(CW\*(C`\-\-change\-section\-lma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
-.IX Item "--change-section-lma section{=,+,-}val"
-Set or change the \s-1LMA\s0 address of the named \fIsection\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 \fIsection\fR does not exist in the input file, a warning
-will be issued, unless \fB\*(--no-change-warnings\fR is used.
-.Ip "\f(CW\*(C`\-\-change\-section\-vma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
-.IX Item "--change-section-vma section{=,+,-}val"
-Set or change the \s-1VMA\s0 address of the named \fIsection\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 \fIsection\fR does not exist in
-the input file, a warning will be issued, unless
-\&\fB\*(--no-change-warnings\fR is used.
-.Ip "\f(CW\*(C`\-\-change\-warnings\*(C'\fR" 4
-.IX Item "--change-warnings"
-.Ip "\f(CW\*(C`\-\-adjust\-warnings\*(C'\fR" 4
-.IX Item "--adjust-warnings"
-If \fB\*(--change-section-address\fR or \fB\*(--change-section-lma\fR or
-\&\fB\*(--change-section-vma\fR is used, and the named section does not
-exist, issue a warning. This is the default.
-.Ip "\f(CW\*(C`\-\-no\-change\-warnings\*(C'\fR" 4
-.IX Item "--no-change-warnings"
-.Ip "\f(CW\*(C`\-\-no\-adjust\-warnings\*(C'\fR" 4
-.IX Item "--no-adjust-warnings"
-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 named section does not exist.
-.Ip "\f(CW\*(C`\-\-set\-section\-flags \f(CIsection\f(CW=\f(CIflags\f(CW\*(C'\fR" 4
-.IX Item "--set-section-flags section=flags"
-Set the flags for the named section. 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 "\f(CW\*(C`\-\-add\-section \f(CIsectionname\f(CW=\f(CIfilename\f(CW\*(C'\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.
-.Ip "\f(CW\*(C`\-\-change\-leading\-char\*(C'\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 \f(CW\*(C`objcopy\*(C'\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 "\f(CW\*(C`\-\-remove\-leading\-char\*(C'\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
-\&\f(CW\*(C`\-\-change\-leading\-char\*(C'\fR because it always changes the symbol name
-when appropriate, regardless of the object file format of the output
-file.
-.Ip "\f(CW\*(C`\-\-srec\-len=\f(CIival\f(CW\*(C'\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 "\f(CW\*(C`\-\-srec\-forceS3\*(C'\fR" 4
-.IX Item "--srec-forceS3"
-Meaningful only for srec output. Avoid generation of S1/S2 records,
-creating S3\-only record format.
-.Ip "\f(CW\*(C`\-\-redefine\-sym \f(CIold\f(CW=\f(CInew\f(CW\*(C'\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 "\f(CW\*(C`\-\-weaken\*(C'\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 \f(CW\*(C`\-R\*(C'\fR option to the linker. This option is only effective when
-using an object file format which supports weak symbols.
-.Ip "\f(CW\*(C`\-\-keep\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-strip\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-keep\-global\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-localize\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-weaken\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-V\*(C'\fR" 4
-.IX Item "-V"
-.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
-.IX Item "--version"
-Show the version number of \f(CW\*(C`objcopy\*(C'\fR.
-.Ip "\f(CW\*(C`\-v\*(C'\fR" 4
-.IX Item "-v"
-.Ip "\f(CW\*(C`\-\-verbose\*(C'\fR" 4
-.IX Item "--verbose"
-Verbose output: list all object files modified. In the case of
-archives, \fBobjcopy \-V\fR lists all members of the archive.
-.Ip "\f(CW\*(C`\-\-help\*(C'\fR" 4
-.IX Item "--help"
-Show a summary of the options to \f(CW\*(C`objcopy\*(C'\fR.
-.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, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 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.1
-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/contrib/binutils/binutils/objdump.1 b/contrib/binutils/binutils/objdump.1
deleted file mode 100644
index 591a0f44bbde..000000000000
--- a/contrib/binutils/binutils/objdump.1
+++ /dev/null
@@ -1,770 +0,0 @@
-.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH objdump 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-objdump \- display information from object files.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B objdump
-.RB "[\|" \-a | \-\-archive\-headers "\|]"
-.RB "[\|" "\-b\ "\c
-.I bfdname\c
-.RB " | " "\-\-target="\c
-.I bfdname\c
-\&\|]
-.RB "[\|" \-C | \-\-demangle "\|]"
-.RB "[\|" \-\-debugging "\|]"
-.RB "[\|" \-d | \-\-disassemble "\|]"
-.RB "[\|" \-D | \-\-disassemble-all "\|]"
-.RB "[\|" \-\-disassemble\-zeroes "\|]"
-.RB "[\|" \-EB | \-EL | \-\-endian=\c
-.I {big|little}\c
-\&\|]
-.RB "[\|" \-f | \-\-file\-headers "\|]"
-.RB "[\|" \-h | \-\-section\-headers
-.RB "| " \-\-headers "\|]"
-.RB "[\|" \-i | \-\-info "\|]"
-.RB "[\|" "\-j\ "\c
-.I section\c
-.RB " | " "\-\-section="\c
-.I section\c
-\&\|]
-.RB "[\|" \-l | \-\-line\-numbers "\|]"
-.RB "[\|" "\-m\ "\c
-.I machine\c
-.RB " | " "\-\-architecture="\c
-.I machine\c
-\&\|]
-.RB "[\|" \-p | \-\-private\-headers "\|]"
-.RB "[\|" \-\-prefix\-addresses "\|]"
-.RB "[\|" \-r | \-\-reloc "\|]"
-.RB "[\|" \-R | \-\-dynamic\-reloc "\|]"
-.RB "[\|" \-s | \-\-full\-contents "\|]"
-.RB "[\|" \-S | \-\-source "\|]"
-.RB "[\|" \-\-[no\-]show\-raw\-insn "\|]"
-.RB "[\|" \-\-stabs "\|]"
-.RB "[\|" \-t | \-\-syms "\|]"
-.RB "[\|" \-T | \-\-dynamic\-syms "\|]"
-.RB "[\|" \-x | \-\-all\-headers "\|]"
-.RB "[\|" "\-\-start\-address="\c
-.I address\c
-\&\|]
-.RB "[\|" "\-\-stop\-address="\c
-.I address\c
-\&\|]
-.RB "[\|" "\-\-adjust\-vma="\c
-.I offset\c
-\&\|]
-.RB "[\|" \-\-version "\|]"
-.RB "[\|" \-\-help "\|]"
-.I objfile\c
-\&.\|.\|.
-.ad b
-.hy 1
-.SH DESCRIPTION
-\c
-.B objdump\c
-\& 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
-.IR "objfile" .\|.\|.
-are the object files to be examined. When you specify archives,
-\c
-.B objdump\c
-\& shows information on each of the member object files.
-
-.SH OPTIONS
-Where long and short forms of an option are shown together, they are
-equivalent. At least one option besides
-.B \-l
-(\fB\-\-line\-numbers\fP) must be given.
-
-.TP
-.B \-a
-.TP
-.B \-\-archive\-headers
-If any files from \c
-.I objfile\c
-\& are archives, display the archive
-header information (in a format similar to `\|\c
-.B ls \-l\c
-\|'). Besides the
-information you could list with `\|\c
-.B ar tv\c
-\|', `\|\c
-.B objdump \-a\c
-\|' shows
-the object file format of each archive member.
-
-.TP
-.BI "\-\-adjust\-vma=" "offset"
-When dumping information, first add
-.I 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.
-
-.TP
-.BI "\-b " "bfdname"\c
-.TP
-.BI "\-\-target=" "bfdname"
-Specify the object-code format for the object files to be
-\c
-.I bfdname\c
-\&. This may not be necessary; \c
-.I objdump\c
-\& can
-automatically recognize many formats. For example,
-.sp
-.br
-objdump\ \-b\ oasys\ \-m\ vax\ \-h\ fu.o
-.br
-.sp
-display summary information from the section headers (`\|\c
-.B \-h\c
-\|') of
-`\|\c
-.B fu.o\c
-\|', which is explicitly identified (`\|\c
-.B \-m\c
-\|') as a Vax object
-file in the format produced by Oasys compilers. You can list the
-formats available with the `\|\c
-.B \-i\c
-\|' option.
-
-.TP
-.B \-C
-.TP
-.B \-\-demangle
-Decode (\fIdemangle\fP) low-level symbol names into user-level names.
-Besides removing any initial underscore prepended by the system, this
-makes C++ function names readable.
-
-.TP
-.B \-\-debugging
-Display debugging information. This attempts to parse debugging
-information stored in the file and print it out using a C like syntax.
-Only certain types of debugging information have been implemented.
-
-.TP
-.B \-d
-.TP
-.B \-\-disassemble
-Display the assembler mnemonics for the machine
-instructions from \c
-.I objfile\c
-\&.
-This option only disassembles those sections which are
-expected to contain instructions.
-
-.TP
-.B \-D
-.TP
-.B \-\-disassemble-all
-Like \fB\-d\fP, but disassemble the contents of all sections, not just
-those expected to contain instructions.
-
-.TP
-.B \-\-prefix\-addresses
-When disassembling, print the complete address on each line. This is
-the older disassembly format.
-
-.TP
-.B \-\-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.
-
-.TP
-.B \-EB
-.TP
-.B \-EL
-.TP
-.BI "\-\-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.
-
-.TP
-.B \-f
-.TP
-.B \-\-file\-headers
-Display summary information from the overall header of
-each file in \c
-.I objfile\c
-\&.
-
-.TP
-.B \-h
-.TP
-.B \-\-section\-headers
-.TP
-.B \-\-headers
-Display summary information from the section headers of the
-object file.
-
-.TP
-.B \-\-help
-Print a summary of the options to
-.B objdump
-and exit.
-
-.TP
-.B \-i
-.TP
-.B \-\-info
-Display a list showing all architectures and object formats available
-for specification with \c
-.B \-b\c
-\& or \c
-.B \-m\c
-\&.
-
-.TP
-.BI "\-j " "name"\c
-.TP
-.BI "\-\-section=" "name"
-Display information only for section \c
-.I name\c
-\&.
-
-.TP
-.B \-l
-.TP
-.B \-\-line\-numbers
-Label the display (using debugging information) with the filename
-and source line numbers corresponding to the object code shown.
-Only useful with \fB\-d\fP, \fB\-D\fP, or \fB\-r\fP.
-
-.TP
-.BI "\-m " "machine"\c
-.TP
-.BI "\-\-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 \fB\-i\fP option.
-
-.TP
-.B \-p
-.TP
-.B \-\-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.
-
-.TP
-.B \-r
-.TP
-.B \-\-reloc
-Print the relocation entries of the file. If used with \fB\-d\fP or
-\fB\-D\fP, the relocations are printed interspersed with the
-disassembly.
-
-.TP
-.B \-R
-.TP
-.B \-\-dynamic\-reloc
-Print the dynamic relocation entries of the file. This is only
-meaningful for dynamic objects, such as certain types of shared
-libraries.
-
-.TP
-.B \-s
-.TP
-.B \-\-full\-contents
-Display the full contents of any sections requested.
-
-.TP
-.B \-S
-.TP
-.B \-\-source
-Display source code intermixed with disassembly, if possible. Implies
-\fB-d\fP.
-
-.TP
-.B \-\-show\-raw\-insn
-When disassembling instructions, print the instruction in hex as well as
-in symbolic form. This is the default except when
-.B \-\-prefix\-addresses
-is used.
-
-.TP
-.B \-\-no\-show\-raw\-insn
-When disassembling instructions, do not print the instruction bytes.
-This is the default when
-.B \-\-prefix\-addresses
-is used.
-
-.TP
-.B \-\-stabs
-Display the contents of the .stab, .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
-.B \-\-syms
-output.
-
-.TP
-.BI "\-\-start\-address=" "address"
-Start displaying data at the specified address. This affects the output
-of the
-.B \-d\c
-,
-.B \-r
-and
-.B \-s
-options.
-
-.TP
-.BI "\-\-stop\-address=" "address"
-Stop displaying data at the specified address. This affects the output
-of the
-.B \-d\c
-,
-.B \-r
-and
-.B \-s
-options.
-
-.TP
-.B \-t
-.TP
-.B \-\-syms
-Symbol Table. Print the symbol table entries of the file.
-This is similar to the information provided by the `\|\c
-.B nm\c
-\|' program.
-
-.TP
-.B \-T
-.TP
-.B \-\-dynamic\-syms
-Dynamic Symbol Table. 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 `\|\c
-.B nm\c
-\|' program when given the
-.B \-D (\-\-dynamic)
-option.
-
-.TP
-.B \-\-version
-Print the version number of
-.B objdump
-and exit.
-
-.TP
-.B \-x
-.TP
-.B \-\-all\-headers
-Display all available header information, including the symbol table and
-relocation entries. Using `\|\c
-.B \-x\c
-\|' is equivalent to specifying all of
-`\|\c
-.B \-a \-f \-h \-r \-t\c
-\|'.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (October 1991);
-.BR nm "(" 1 ")."
-
-.SH COPYING
-Copyright (c) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-.PP
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/ranlib.1 b/contrib/binutils/binutils/ranlib.1
deleted file mode 100644
index 9e973c699d9b..000000000000
--- a/contrib/binutils/binutils/ranlib.1
+++ /dev/null
@@ -1,441 +0,0 @@
-.\" Copyright (c) 1991, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH ranlib 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-ranlib \- generate index to archive.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B ranlib \c
-.RB "[\|" \-v | \-V "\|]"
-.I archive\c
-\&
-.ad b
-.hy 1
-.SH DESCRIPTION
-.B 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.
-.PP
-You may use
-.RB ` "nm \-s" '
-or
-.RB ` "nm \-\-print-armap" '
-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 GNU
-.B ranlib
-program is another form of GNU
-.BR ar ;
-running
-.B ranlib
-is completely equivalent to executing
-.RB ` "ar \-s" '.
-
-.SH OPTIONS
-.TP
-.B \-v
-Print the version number of
-.B ranlib
-and exit.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (October 1991);
-.BR ar "(" 1 "),"
-.BR nm "(" 1 ")."
-
-
-.SH COPYING
-Copyright (c) 1991, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/rcparse.c b/contrib/binutils/binutils/rcparse.c
deleted file mode 100644
index 9add78f384b8..000000000000
--- a/contrib/binutils/binutils/rcparse.c
+++ /dev/null
@@ -1,3447 +0,0 @@
-/* A Bison parser, made from rcparse.y
- by GNU bison 1.35. */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-# define BEG 257
-# define END 258
-# define ACCELERATORS 259
-# define VIRTKEY 260
-# define ASCII 261
-# define NOINVERT 262
-# define SHIFT 263
-# define CONTROL 264
-# define ALT 265
-# define BITMAP 266
-# define CURSOR 267
-# define DIALOG 268
-# define DIALOGEX 269
-# define EXSTYLE 270
-# define CAPTION 271
-# define CLASS 272
-# define STYLE 273
-# define AUTO3STATE 274
-# define AUTOCHECKBOX 275
-# define AUTORADIOBUTTON 276
-# define CHECKBOX 277
-# define COMBOBOX 278
-# define CTEXT 279
-# define DEFPUSHBUTTON 280
-# define EDITTEXT 281
-# define GROUPBOX 282
-# define LISTBOX 283
-# define LTEXT 284
-# define PUSHBOX 285
-# define PUSHBUTTON 286
-# define RADIOBUTTON 287
-# define RTEXT 288
-# define SCROLLBAR 289
-# define STATE3 290
-# define USERBUTTON 291
-# define BEDIT 292
-# define HEDIT 293
-# define IEDIT 294
-# define FONT 295
-# define ICON 296
-# define LANGUAGE 297
-# define CHARACTERISTICS 298
-# define VERSIONK 299
-# define MENU 300
-# define MENUEX 301
-# define MENUITEM 302
-# define SEPARATOR 303
-# define POPUP 304
-# define CHECKED 305
-# define GRAYED 306
-# define HELP 307
-# define INACTIVE 308
-# define MENUBARBREAK 309
-# define MENUBREAK 310
-# define MESSAGETABLE 311
-# define RCDATA 312
-# define STRINGTABLE 313
-# define VERSIONINFO 314
-# define FILEVERSION 315
-# define PRODUCTVERSION 316
-# define FILEFLAGSMASK 317
-# define FILEFLAGS 318
-# define FILEOS 319
-# define FILETYPE 320
-# define FILESUBTYPE 321
-# define BLOCKSTRINGFILEINFO 322
-# define BLOCKVARFILEINFO 323
-# define VALUE 324
-# define BLOCK 325
-# define MOVEABLE 326
-# define FIXED 327
-# define PURE 328
-# define IMPURE 329
-# define PRELOAD 330
-# define LOADONCALL 331
-# define DISCARDABLE 332
-# define NOT 333
-# define QUOTEDSTRING 334
-# define STRING 335
-# define NUMBER 336
-# define SIZEDSTRING 337
-# define IGNORED_TOKEN 338
-# define NEG 339
-
-#line 1 "rcparse.y"
- /* rcparse.y -- parser for Windows rc files
- Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Written by Ian Lance Taylor, Cygnus Support.
-
- 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 2 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., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/* This is a parser for Windows rc files. It is based on the parser
- by Gunther Ebert <gunther.ebert@ixos-leipzig.de>. */
-
-#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 struct res_res_info sub_res_info;
-
-/* Dialog information. This is built by the nonterminals styles and
- controls. */
-
-static struct 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 unsigned long base_style;
-static unsigned long default_style;
-static unsigned long class;
-
-
-#line 58 "rcparse.y"
-#ifndef YYSTYPE
-typedef union
-{
- struct accelerator acc;
- struct accelerator *pacc;
- struct dialog_control *dialog_control;
- struct menuitem *menuitem;
- struct
- {
- struct rcdata_item *first;
- struct rcdata_item *last;
- } rcdata;
- struct rcdata_item *rcdata_item;
- struct stringtable_data *stringtable;
- struct fixed_versioninfo *fixver;
- struct ver_info *verinfo;
- struct ver_stringinfo *verstring;
- struct ver_varinfo *vervar;
- struct res_id id;
- struct res_res_info res_info;
- struct
- {
- unsigned short on;
- unsigned short off;
- } memflags;
- struct
- {
- unsigned long val;
- /* Nonzero if this number was explicitly specified as long. */
- int dword;
- } i;
- unsigned long il;
- unsigned short is;
- const char *s;
- struct
- {
- unsigned long length;
- const char *s;
- } ss;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-
-
-#define YYFINAL 483
-#define YYFLAG -32768
-#define YYNTBASE 99
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 189)
-
-/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
-static const char 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, 92, 87, 2,
- 97, 98, 90, 88, 95, 89, 2, 91, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 96, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 86, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 85, 2, 93, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 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, 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, 94
-};
-
-#if YYDEBUG
-static const short yyprhs[] =
-{
- 0, 0, 1, 4, 7, 10, 13, 16, 19, 22,
- 25, 28, 31, 34, 37, 40, 43, 46, 53, 54,
- 57, 60, 65, 67, 69, 71, 75, 78, 80, 82,
- 84, 86, 88, 90, 95, 100, 101, 115, 116, 130,
- 131, 146, 147, 151, 152, 156, 160, 164, 168, 172,
- 178, 185, 193, 202, 206, 210, 215, 219, 220, 223,
- 224, 228, 229, 233, 234, 238, 239, 243, 244, 248,
- 249, 253, 265, 278, 291, 305, 306, 310, 311, 315,
- 316, 320, 321, 325, 326, 330, 337, 346, 357, 369,
- 370, 374, 375, 379, 380, 384, 385, 389, 390, 394,
- 395, 399, 400, 404, 405, 409, 410, 414, 415, 432,
- 440, 450, 461, 462, 464, 467, 468, 472, 473, 477,
- 478, 482, 483, 487, 492, 497, 501, 508, 509, 512,
- 517, 520, 527, 528, 532, 535, 537, 539, 541, 543,
- 545, 547, 554, 555, 558, 561, 565, 571, 574, 580,
- 587, 595, 605, 610, 617, 618, 621, 622, 624, 626,
- 628, 632, 636, 637, 644, 645, 649, 654, 661, 666,
- 673, 674, 681, 688, 692, 696, 700, 704, 708, 709,
- 718, 726, 727, 733, 734, 738, 740, 742, 744, 747,
- 750, 753, 755, 756, 759, 763, 768, 772, 773, 776,
- 777, 780, 782, 784, 786, 788, 790, 792, 794, 796,
- 798, 800, 803, 807, 812, 814, 818, 819, 821, 824,
- 826, 828, 832, 835, 838, 842, 846, 850, 854, 858,
- 862, 866, 870, 873, 875, 877, 881, 884, 888, 892,
- 896, 900, 904, 908, 912
-};
-static const short yyrhs[] =
-{
- -1, 99, 100, 0, 99, 106, 0, 99, 107, 0,
- 99, 108, 0, 99, 146, 0, 99, 147, 0, 99,
- 148, 0, 99, 149, 0, 99, 154, 0, 99, 157,
- 0, 99, 158, 0, 99, 163, 0, 99, 166, 0,
- 99, 167, 0, 99, 84, 0, 172, 5, 175, 3,
- 101, 4, 0, 0, 101, 102, 0, 103, 186, 0,
- 103, 186, 95, 104, 0, 80, 0, 187, 0, 105,
- 0, 104, 95, 105, 0, 104, 105, 0, 6, 0,
- 7, 0, 8, 0, 9, 0, 10, 0, 11, 0,
- 172, 12, 177, 179, 0, 172, 13, 176, 179, 0,
- 0, 172, 14, 177, 112, 187, 183, 183, 183, 109,
- 113, 3, 114, 4, 0, 0, 172, 15, 177, 112,
- 187, 183, 183, 183, 110, 113, 3, 114, 4, 0,
- 0, 172, 15, 177, 112, 187, 183, 183, 183, 183,
- 111, 113, 3, 114, 4, 0, 0, 16, 96, 184,
- 0, 0, 113, 17, 80, 0, 113, 18, 172, 0,
- 113, 19, 180, 0, 113, 16, 184, 0, 113, 18,
- 80, 0, 113, 41, 184, 95, 80, 0, 113, 41,
- 184, 95, 80, 183, 0, 113, 41, 184, 95, 80,
- 183, 183, 0, 113, 41, 184, 95, 80, 183, 183,
- 183, 0, 113, 46, 172, 0, 113, 44, 184, 0,
- 113, 43, 184, 183, 0, 113, 45, 184, 0, 0,
- 114, 115, 0, 0, 20, 116, 137, 0, 0, 21,
- 117, 137, 0, 0, 22, 118, 137, 0, 0, 38,
- 119, 137, 0, 0, 23, 120, 137, 0, 0, 24,
- 121, 137, 0, 10, 138, 184, 183, 140, 183, 183,
- 183, 183, 182, 139, 0, 10, 138, 184, 183, 140,
- 183, 183, 183, 183, 183, 183, 139, 0, 10, 138,
- 184, 95, 80, 140, 183, 183, 183, 183, 182, 139,
- 0, 10, 138, 184, 95, 80, 140, 183, 183, 183,
- 183, 183, 183, 139, 0, 0, 25, 122, 137, 0,
- 0, 26, 123, 137, 0, 0, 27, 124, 137, 0,
- 0, 28, 125, 137, 0, 0, 39, 126, 137, 0,
- 42, 174, 184, 183, 183, 139, 0, 42, 174, 184,
- 183, 183, 183, 183, 139, 0, 42, 174, 184, 183,
- 183, 183, 183, 142, 182, 139, 0, 42, 174, 184,
- 183, 183, 183, 183, 142, 183, 183, 139, 0, 0,
- 40, 127, 137, 0, 0, 29, 128, 137, 0, 0,
- 30, 129, 137, 0, 0, 31, 130, 137, 0, 0,
- 32, 131, 137, 0, 0, 33, 132, 137, 0, 0,
- 34, 133, 137, 0, 0, 35, 134, 137, 0, 0,
- 36, 135, 137, 0, 0, 37, 80, 95, 184, 95,
- 184, 95, 184, 95, 184, 95, 184, 95, 136, 180,
- 182, 0, 138, 184, 183, 183, 183, 183, 139, 0,
- 138, 184, 183, 183, 183, 183, 144, 182, 139, 0,
- 138, 184, 183, 183, 183, 183, 144, 183, 183, 139,
- 0, 0, 80, 0, 80, 95, 0, 0, 3, 159,
- 4, 0, 0, 95, 141, 180, 0, 0, 95, 143,
- 180, 0, 0, 95, 145, 180, 0, 172, 41, 176,
- 179, 0, 172, 42, 176, 179, 0, 43, 184, 183,
- 0, 172, 46, 175, 3, 150, 4, 0, 0, 150,
- 151, 0, 48, 80, 183, 152, 0, 48, 49, 0,
- 50, 80, 152, 3, 150, 4, 0, 0, 152, 95,
- 153, 0, 152, 153, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 55, 0, 56, 0, 172, 47, 175,
- 3, 155, 4, 0, 0, 155, 156, 0, 48, 80,
- 0, 48, 80, 183, 0, 48, 80, 183, 183, 182,
- 0, 48, 49, 0, 50, 80, 3, 155, 4, 0,
- 50, 80, 183, 3, 155, 4, 0, 50, 80, 183,
- 183, 3, 155, 4, 0, 50, 80, 183, 183, 183,
- 182, 3, 155, 4, 0, 172, 57, 177, 179, 0,
- 172, 58, 175, 3, 159, 4, 0, 0, 160, 161,
- 0, 0, 162, 0, 83, 0, 185, 0, 162, 95,
- 83, 0, 162, 95, 185, 0, 0, 59, 175, 3,
- 164, 165, 4, 0, 0, 165, 184, 80, 0, 165,
- 184, 95, 80, 0, 172, 172, 175, 3, 159, 4,
- 0, 172, 172, 175, 179, 0, 172, 60, 168, 3,
- 169, 4, 0, 0, 168, 61, 184, 183, 183, 183,
- 0, 168, 62, 184, 183, 183, 183, 0, 168, 63,
- 184, 0, 168, 64, 184, 0, 168, 65, 184, 0,
- 168, 66, 184, 0, 168, 67, 184, 0, 0, 169,
- 68, 3, 71, 3, 170, 4, 4, 0, 169, 69,
- 3, 70, 80, 171, 4, 0, 0, 170, 70, 80,
- 95, 80, 0, 0, 171, 183, 183, 0, 187, 0,
- 81, 0, 80, 0, 80, 95, 0, 81, 95, 0,
- 187, 95, 0, 173, 0, 0, 175, 178, 0, 175,
- 44, 184, 0, 175, 43, 184, 183, 0, 175, 45,
- 184, 0, 0, 176, 178, 0, 0, 177, 178, 0,
- 72, 0, 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 80, 0, 81, 0, 181, 0,
- 79, 181, 0, 180, 85, 181, 0, 180, 85, 79,
- 181, 0, 82, 0, 97, 184, 98, 0, 0, 183,
- 0, 95, 184, 0, 185, 0, 82, 0, 97, 185,
- 98, 0, 93, 185, 0, 89, 185, 0, 185, 90,
- 185, 0, 185, 91, 185, 0, 185, 92, 185, 0,
- 185, 88, 185, 0, 185, 89, 185, 0, 185, 87,
- 185, 0, 185, 86, 185, 0, 185, 85, 185, 0,
- 95, 187, 0, 188, 0, 82, 0, 97, 185, 98,
- 0, 93, 185, 0, 188, 90, 185, 0, 188, 91,
- 185, 0, 188, 92, 185, 0, 188, 88, 185, 0,
- 188, 89, 185, 0, 188, 87, 185, 0, 188, 86,
- 185, 0, 188, 85, 185, 0
-};
-
-#endif
-
-#if YYDEBUG
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const short yyrline[] =
-{
- 0, 154, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 175, 185, 190,
- 210, 216, 227, 249, 258, 263, 268, 274, 279, 284,
- 288, 292, 296, 304, 316, 328, 328, 354, 354, 381,
- 381, 411, 416, 422, 424, 430, 434, 439, 443, 447,
- 460, 475, 490, 505, 509, 513, 517, 523, 525, 535,
- 535, 546, 546, 556, 556, 566, 566, 579, 579, 589,
- 589, 599, 610, 619, 632, 643, 643, 653, 653, 663,
- 663, 673, 673, 683, 683, 696, 701, 707, 713, 719,
- 719, 732, 732, 742, 742, 752, 752, 762, 762, 772,
- 772, 782, 782, 792, 792, 802, 802, 812, 812, 829,
- 842, 853, 864, 869, 873, 879, 884, 892, 892, 898,
- 898, 904, 904, 912, 924, 937, 946, 956, 961, 977,
- 982, 986, 992, 997, 1001, 1007, 1012, 1016, 1020, 1024,
- 1028, 1036, 1046, 1051, 1067, 1072, 1076, 1080, 1084, 1088,
- 1092, 1096, 1105, 1117, 1130, 1130, 1141, 1147, 1153, 1162,
- 1170, 1179, 1192, 1192, 1198, 1200, 1207, 1219, 1227, 1238,
- 1248, 1255, 1261, 1267, 1272, 1277, 1282, 1287, 1300, 1305,
- 1309, 1315, 1320, 1326, 1331, 1339, 1345, 1360, 1365, 1369,
- 1376, 1382, 1398, 1406, 1412, 1417, 1422, 1431, 1438, 1448,
- 1455, 1466, 1472, 1477, 1482, 1487, 1492, 1497, 1506, 1511,
- 1527, 1532, 1536, 1540, 1546, 1551, 1559, 1564, 1572, 1581,
- 1590, 1595, 1599, 1604, 1609, 1614, 1619, 1624, 1629, 1634,
- 1639, 1644, 1654, 1663, 1674, 1679, 1683, 1688, 1693, 1698,
- 1703, 1708, 1713, 1718, 1723
-};
-#endif
-
-
-#if (YYDEBUG) || defined YYERROR_VERBOSE
-
-/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-static const char *const yytname[] =
-{
- "$", "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", "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", "QUOTEDSTRING",
- "STRING", "NUMBER", "SIZEDSTRING", "IGNORED_TOKEN", "'|'", "'^'", "'&'",
- "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "NEG", "','", "'='", "'('",
- "')'", "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", "optstringc", "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", "rcdata", "optrcdata_data", "@28",
- "optrcdata_data_int", "rcdata_data", "stringtable", "@29",
- "string_data", "user", "versioninfo", "fixedverinfo", "verblocks",
- "vervals", "vertrans", "id", "resname", "resref", "suboptions",
- "memflags_move_discard", "memflags_move", "memflag", "file_name",
- "styleexpr", "parennumber", "optcnumexpr", "cnumexpr", "numexpr",
- "sizednumexpr", "cposnumexpr", "posnumexpr", "sizedposnumexpr", 0
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const short yyr1[] =
-{
- 0, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 100, 101, 101,
- 102, 102, 103, 103, 104, 104, 104, 105, 105, 105,
- 105, 105, 105, 106, 107, 109, 108, 110, 108, 111,
- 108, 112, 112, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 114, 114, 116,
- 115, 117, 115, 118, 115, 119, 115, 120, 115, 121,
- 115, 115, 115, 115, 115, 122, 115, 123, 115, 124,
- 115, 125, 115, 126, 115, 115, 115, 115, 115, 127,
- 115, 128, 115, 129, 115, 130, 115, 131, 115, 132,
- 115, 133, 115, 134, 115, 135, 115, 136, 115, 137,
- 137, 137, 138, 138, 138, 139, 139, 141, 140, 143,
- 142, 145, 144, 146, 147, 148, 149, 150, 150, 151,
- 151, 151, 152, 152, 152, 153, 153, 153, 153, 153,
- 153, 154, 155, 155, 156, 156, 156, 156, 156, 156,
- 156, 156, 157, 158, 160, 159, 161, 161, 162, 162,
- 162, 162, 164, 163, 165, 165, 165, 166, 166, 167,
- 168, 168, 168, 168, 168, 168, 168, 168, 169, 169,
- 169, 170, 170, 171, 171, 172, 172, 173, 173, 173,
- 174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
- 177, 178, 178, 178, 178, 178, 178, 178, 179, 179,
- 180, 180, 180, 180, 181, 181, 182, 182, 183, 184,
- 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
- 185, 185, 186, 187, 188, 188, 188, 188, 188, 188,
- 188, 188, 188, 188, 188
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const short yyr2[] =
-{
- 0, 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,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 11, 12, 12, 13, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 6, 8, 10, 11, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 16, 7,
- 9, 10, 0, 1, 2, 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, 6, 0, 2, 0, 1, 1, 1,
- 3, 3, 0, 6, 0, 3, 4, 6, 4, 6,
- 0, 6, 6, 3, 3, 3, 3, 3, 0, 8,
- 7, 0, 5, 0, 3, 1, 1, 1, 2, 2,
- 2, 1, 0, 2, 3, 4, 3, 0, 2, 0,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 3, 4, 1, 3, 0, 1, 2, 1,
- 1, 3, 2, 2, 3, 3, 3, 3, 3, 3,
- 3, 3, 2, 1, 1, 3, 2, 3, 3, 3,
- 3, 3, 3, 3, 3
-};
-
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
- doesn't specify something else to do. Zero means the default is an
- error. */
-static const short yydefact[] =
-{
- 1, 0, 0, 192, 186, 234, 16, 0, 0, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 0, 185, 233, 220, 0, 0, 0,
- 0, 219, 0, 236, 0, 192, 199, 197, 199, 199,
- 197, 197, 192, 192, 199, 192, 170, 192, 0, 0,
- 0, 0, 0, 0, 0, 0, 223, 222, 0, 0,
- 125, 0, 0, 0, 0, 0, 0, 0, 0, 162,
- 0, 0, 0, 201, 202, 203, 204, 205, 206, 207,
- 193, 235, 0, 0, 0, 41, 41, 0, 0, 0,
- 0, 0, 0, 0, 0, 244, 243, 242, 240, 241,
- 237, 238, 239, 221, 218, 231, 230, 229, 227, 228,
- 224, 225, 226, 164, 0, 194, 196, 18, 208, 209,
- 200, 33, 198, 34, 0, 0, 0, 123, 124, 127,
- 142, 152, 154, 178, 0, 0, 0, 0, 0, 0,
- 0, 154, 168, 0, 195, 0, 0, 0, 0, 0,
- 0, 0, 156, 0, 0, 0, 173, 174, 175, 176,
- 177, 0, 163, 0, 17, 22, 19, 0, 23, 42,
- 0, 0, 126, 0, 0, 128, 141, 0, 0, 143,
- 153, 158, 155, 157, 159, 169, 0, 0, 0, 0,
- 167, 165, 0, 0, 20, 0, 0, 130, 0, 132,
- 147, 144, 0, 0, 0, 0, 0, 0, 166, 232,
- 0, 35, 37, 132, 0, 145, 142, 0, 160, 161,
- 0, 0, 171, 172, 27, 28, 29, 30, 31, 32,
- 21, 24, 43, 43, 39, 129, 127, 135, 136, 137,
- 138, 139, 140, 0, 134, 216, 0, 142, 0, 181,
- 183, 0, 26, 0, 0, 43, 0, 133, 146, 217,
- 148, 0, 142, 216, 0, 0, 25, 57, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 57, 0, 131,
- 149, 0, 0, 0, 0, 180, 0, 0, 47, 44,
- 48, 45, 0, 214, 0, 46, 210, 0, 0, 54,
- 56, 53, 0, 57, 150, 142, 179, 0, 184, 36,
- 112, 59, 61, 63, 67, 69, 75, 77, 79, 81,
- 91, 93, 95, 97, 99, 101, 103, 105, 0, 65,
- 83, 89, 0, 58, 211, 0, 0, 0, 55, 38,
- 0, 0, 0, 113, 0, 112, 112, 112, 112, 112,
- 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
- 112, 112, 0, 112, 112, 112, 187, 0, 191, 0,
- 0, 215, 0, 212, 49, 40, 151, 182, 114, 0,
- 60, 0, 62, 64, 68, 70, 76, 78, 80, 82,
- 92, 94, 96, 98, 100, 102, 104, 106, 0, 66,
- 84, 90, 188, 189, 0, 190, 213, 50, 0, 0,
- 0, 0, 0, 51, 0, 117, 0, 0, 0, 115,
- 52, 0, 0, 0, 0, 0, 154, 85, 0, 0,
- 118, 0, 0, 0, 0, 115, 0, 0, 115, 0,
- 116, 119, 86, 216, 0, 216, 121, 109, 216, 0,
- 0, 115, 217, 216, 115, 217, 0, 115, 217, 0,
- 120, 87, 115, 115, 217, 71, 115, 122, 110, 115,
- 0, 88, 73, 115, 72, 111, 0, 74, 107, 0,
- 216, 108, 0, 0
-};
-
-static const short yydefgoto[] =
-{
- 1, 9, 145, 166, 167, 230, 231, 10, 11, 12,
- 232, 233, 255, 125, 253, 287, 333, 345, 346, 347,
- 363, 348, 349, 350, 351, 352, 353, 364, 365, 354,
- 355, 356, 357, 358, 359, 360, 361, 479, 380, 381,
- 427, 416, 422, 443, 450, 448, 456, 13, 14, 15,
- 16, 149, 175, 214, 244, 17, 150, 179, 18, 19,
- 151, 152, 182, 183, 20, 113, 143, 21, 22, 93,
- 153, 264, 265, 23, 368, 369, 32, 84, 83, 80,
- 121, 295, 296, 258, 259, 104, 31, 194, 24, 25
-};
-
-static const short yypact[] =
-{
- -32768, 13, 412,-32768,-32768,-32768,-32768, 412, 412,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768, 111,-32768, 511,-32768, 412, 412, 412,
- -79, 600, 244,-32768, 562,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 412, 412,
- 412, 412, 412, 412, 412, 412,-32768,-32768, 576, 412,
- -32768, 412, 412, 412, 412, 412, 412, 412, 412,-32768,
- 412, 412, 412,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768, 256, 603, 603, 297, 297, 603, 603, 280,
- 337, 603, 345, 100, 231, 607, 613, 567, 172, 172,
- -32768,-32768,-32768,-32768,-32768, 607, 613, 567, 172, 172,
- -32768,-32768,-32768,-32768, -79,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768, -60, 63, 63,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768, 412, 412, 412, 412, 412, 412,
- 412,-32768,-32768, 7,-32768, 5, 412, -79, -79, 33,
- 34, 35, 254, 51, -79, -79,-32768,-32768,-32768,-32768,
- -32768, 36,-32768, 60,-32768,-32768,-32768, -38,-32768,-32768,
- -79, -79,-32768, -39, 11,-32768,-32768, 59, 25,-32768,
- -32768,-32768,-32768, 27, 600,-32768, 127, 144, -79, -79,
- -32768,-32768, 74, 63, 87, -79, -79,-32768, -79,-32768,
- -32768, -79, 12, 294, 118, 128, -79, -79,-32768,-32768,
- 700,-32768, -79,-32768, 22, -79,-32768, 14,-32768, 600,
- 194, 121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 23,-32768,-32768,-32768,-32768, 309,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768, 661,-32768, -79, 38,-32768, 16,-32768,
- -32768, 700,-32768, 383, 472,-32768, 42,-32768,-32768,-32768,
- -32768, 124,-32768, -79, 10, 4,-32768,-32768, 412, 126,
- 187, 99, 412, 412, 412, 412, 200,-32768, 480,-32768,
- -32768, 125, 204, 207, 135,-32768, -79, 510,-32768,-32768,
- -32768,-32768, 49,-32768, 412, 136,-32768, 133, -79,-32768,
- -32768,-32768, 547,-32768,-32768,-32768,-32768, 134,-32768,-32768,
- 152,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 153,-32768,
- -32768,-32768, 374,-32768,-32768, 140, 112, 157,-32768,-32768,
- 584, 138, 160, 148, 412, 152, 152, 152, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
- 152, 152, 158, 152, 152, 152, 161, 163,-32768, 412,
- 165,-32768, 49,-32768, -79,-32768,-32768,-32768,-32768, 170,
- -32768, 412,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 412,-32768,
- -32768,-32768,-32768,-32768, -79,-32768,-32768, -79, 123, 183,
- -79, 184, -79, -79, 183,-32768, -79, -79, 412, 17,
- -32768, -79, 99, -79, -79, 190,-32768,-32768, -79, -79,
- 136, -79, -79, 412, 248, 18, -79, -79, 19, 195,
- -32768,-32768,-32768, -79, -79, -79,-32768,-32768, -79, 412,
- 99, 245, -79, -79, 245, -79, 99, 245, -79, 196,
- 136,-32768, 245, 245, -79,-32768, 245, 136,-32768, 245,
- 412,-32768,-32768, 245,-32768,-32768, 201,-32768,-32768, 99,
- 64,-32768, 295,-32768
-};
-
-static const short yypgoto[] =
-{
- -32768,-32768,-32768,-32768,-32768,-32768, -206,-32768,-32768,-32768,
- -32768,-32768,-32768, 212, -85, -259,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 281, -8,
- -212, -104,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768, 78,-32768, 113, 92,-32768, -204,-32768,-32768,-32768,
- -140,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768, -21,-32768,-32768, 350, 139, 175, 475,
- 416, -329, -257, -258, 29, -2, -1,-32768, -122,-32768
-};
-
-
-#define YYLAST 717
-
-
-static const short yytable[] =
-{
- 30, 161, 47, 147, 148, 282, 33, 34, 285, 164,
- 197, 162, 246, 482, 283, 216, 59, 247, 302, 262,
- 426, 426, 426, 168, 252, 236, 56, 57, 58, 224,
- 225, 226, 227, 228, 229, 334, 146, 172, 176, 180,
- 190, 198, 260, 261, 340, 266, 279, 95, 96, 97,
- 98, 99, 100, 101, 102, 185, 2, 193, 281, 60,
- 105, 106, 107, 108, 109, 110, 111, 112, 114, 115,
- 116, 209, 3, 237, 238, 239, 240, 241, 242, 373,
- 284, 173, 177, 174, 178, 165, 177, 5, 178, 26,
- 173, 199, 174, 430, 4, 5, 27, 6, 7, 59,
- 28, 341, 8, 133, 29, 202, 7, 59, 200, 59,
- 8, 59, 59, 441, 446, 406, 35, 243, 251, 186,
- 187, 460, 203, 36, 37, 38, 39, 467, 280, 304,
- 204, 293, 154, 155, 156, 157, 158, 159, 160, 201,
- 191, 163, 376, 144, 169, 5, 294, 205, 254, 336,
- 480, 184, 40, 41, 208, 192, 7, 42, 43, 59,
- 8, 134, 135, 136, 137, 138, 139, 140, 44, 45,
- 278, 46, 177, 177, 178, 178, 170, 171, 292, 87,
- 88, 293, 210, 188, 189, 451, 177, 454, 178, 220,
- 457, 372, 4, 5, 293, 463, 294, 249, 221, 195,
- 196, 250, 219, 414, 7, 26, 289, 305, 8, 294,
- 370, 306, 27, 85, 86, 307, 28, 206, 207, 91,
- 29, 336, 481, 442, 211, 212, 447, 213, 337, 342,
- 215, 217, 343, 362, 141, 222, 223, 374, 371, 461,
- 377, 234, 465, 378, 245, 468, 248, 69, 426, 291,
- 471, 472, 440, 398, 474, 301, 402, 475, 403, 117,
- 405, 477, 66, 67, 68, 408, 288, 290, 4, 5,
- 297, 298, 299, 300, 70, 71, 72, 263, 415, 418,
- 7, 4, 5, 129, 8, 433, 434, 70, 71, 72,
- 449, 470, 335, 7, 286, 483, 478, 8, 126, 70,
- 71, 72, 344, 73, 74, 75, 76, 77, 78, 79,
- 421, 118, 119, 124, 256, 308, 73, 74, 75, 76,
- 77, 78, 79, 70, 71, 72, 235, 338, 73, 74,
- 75, 76, 77, 78, 79, 257, 26, 181, 0, 0,
- 130, 0, 379, 27, 0, 0, 0, 28, 132, 0,
- 0, 29, 73, 74, 75, 76, 77, 78, 79, 0,
- 237, 238, 239, 240, 241, 242, 0, 404, 0, 73,
- 74, 75, 76, 77, 78, 79, 26, 218, 0, 410,
- 70, 71, 72, 27, 0, 82, 267, 28, 70, 71,
- 72, 29, 89, 90, 0, 92, 411, 94, 0, 268,
- 269, 270, 271, 407, 243, 0, 0, 0, 409, 73,
- 74, 75, 76, 77, 78, 79, 425, 73, 74, 75,
- 76, 77, 78, 79, 272, 0, 273, 274, 275, 276,
- 0, 439, 0, 412, 0, 0, 413, 0, 0, 417,
- 0, 419, 420, 0, 0, 423, 424, 459, 428, 0,
- 429, 0, 431, 432, 366, 367, 5, 435, 436, 0,
- 437, 438, 0, 0, 0, 444, 445, 7, 476, 0,
- 0, 8, 452, 453, 455, 277, 0, 458, 0, 0,
- 0, 462, 464, 303, 466, 0, 0, 469, 268, 269,
- 270, 271, 0, 473, 26, 0, 268, 269, 270, 271,
- 123, 27, 0, 127, 128, 28, 0, 131, 0, 29,
- 142, 0, 0, 272, 309, 273, 274, 275, 276, 0,
- 310, 272, 0, 273, 274, 275, 276, 0, 0, 0,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 339, 332, 0, 0, 0, 0, 310, 120, 122,
- 120, 120, 122, 122, 0, 0, 120, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 375, 332,
- 0, 0, 0, 0, 310, 0, 48, 49, 50, 51,
- 52, 53, 54, 55, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 0, 332, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 0, 399, 400, 401, 61, 62, 63,
- 64, 65, 66, 67, 68, 64, 65, 66, 67, 68,
- 81, 61, 62, 63, 64, 65, 66, 67, 68, 0,
- 0, 0, 0, 0, 103, 73, 74, 75, 76, 77,
- 78, 79, 0, 118, 119, 61, 62, 63, 64, 65,
- 66, 67, 68, 62, 63, 64, 65, 66, 67, 68,
- 63, 64, 65, 66, 67, 68, 224, 225, 226, 227,
- 228, 229, 237, 238, 239, 240, 241, 242
-};
-
-static const short yycheck[] =
-{
- 2, 141, 23, 125, 126, 263, 7, 8, 4, 4,
- 49, 4, 216, 0, 4, 3, 95, 3, 277, 3,
- 3, 3, 3, 145, 230, 3, 27, 28, 29, 6,
- 7, 8, 9, 10, 11, 292, 96, 4, 4, 4,
- 4, 80, 4, 247, 303, 251, 4, 48, 49, 50,
- 51, 52, 53, 54, 55, 4, 43, 95, 262, 30,
- 61, 62, 63, 64, 65, 66, 67, 68, 70, 71,
- 72, 193, 59, 51, 52, 53, 54, 55, 56, 336,
- 70, 48, 48, 50, 50, 80, 48, 82, 50, 82,
- 48, 80, 50, 422, 81, 82, 89, 84, 93, 95,
- 93, 305, 97, 3, 97, 80, 93, 95, 49, 95,
- 97, 95, 95, 95, 95, 372, 5, 95, 95, 68,
- 69, 450, 95, 12, 13, 14, 15, 456, 4, 4,
- 3, 82, 134, 135, 136, 137, 138, 139, 140, 80,
- 80, 143, 4, 114, 146, 82, 97, 3, 233, 85,
- 479, 152, 41, 42, 80, 95, 93, 46, 47, 95,
- 97, 61, 62, 63, 64, 65, 66, 67, 57, 58,
- 255, 60, 48, 48, 50, 50, 147, 148, 79, 40,
- 41, 82, 95, 154, 155, 443, 48, 445, 50, 71,
- 448, 79, 81, 82, 82, 453, 97, 3, 70, 170,
- 171, 80, 203, 80, 93, 82, 80, 3, 97, 97,
- 332, 4, 89, 38, 39, 80, 93, 188, 189, 44,
- 97, 85, 480, 435, 195, 196, 438, 198, 95, 95,
- 201, 202, 80, 80, 3, 206, 207, 80, 98, 451,
- 80, 212, 454, 95, 215, 457, 217, 3, 3, 270,
- 462, 463, 4, 95, 466, 276, 95, 469, 95, 3,
- 95, 473, 90, 91, 92, 95, 268, 80, 81, 82,
- 272, 273, 274, 275, 43, 44, 45, 248, 95, 95,
- 93, 81, 82, 3, 97, 95, 426, 43, 44, 45,
- 95, 95, 294, 93, 265, 0, 95, 97, 86, 43,
- 44, 45, 310, 72, 73, 74, 75, 76, 77, 78,
- 414, 80, 81, 16, 236, 286, 72, 73, 74, 75,
- 76, 77, 78, 43, 44, 45, 213, 298, 72, 73,
- 74, 75, 76, 77, 78, 243, 82, 83, -1, -1,
- 3, -1, 344, 89, -1, -1, -1, 93, 3, -1,
- -1, 97, 72, 73, 74, 75, 76, 77, 78, -1,
- 51, 52, 53, 54, 55, 56, -1, 369, -1, 72,
- 73, 74, 75, 76, 77, 78, 82, 83, -1, 381,
- 43, 44, 45, 89, -1, 35, 3, 93, 43, 44,
- 45, 97, 42, 43, -1, 45, 398, 47, -1, 16,
- 17, 18, 19, 374, 95, -1, -1, -1, 379, 72,
- 73, 74, 75, 76, 77, 78, 418, 72, 73, 74,
- 75, 76, 77, 78, 41, -1, 43, 44, 45, 46,
- -1, 433, -1, 404, -1, -1, 407, -1, -1, 410,
- -1, 412, 413, -1, -1, 416, 417, 449, 419, -1,
- 421, -1, 423, 424, 80, 81, 82, 428, 429, -1,
- 431, 432, -1, -1, -1, 436, 437, 93, 470, -1,
- -1, 97, 443, 444, 445, 3, -1, 448, -1, -1,
- -1, 452, 453, 3, 455, -1, -1, 458, 16, 17,
- 18, 19, -1, 464, 82, -1, 16, 17, 18, 19,
- 84, 89, -1, 87, 88, 93, -1, 91, -1, 97,
- 94, -1, -1, 41, 4, 43, 44, 45, 46, -1,
- 10, 41, -1, 43, 44, 45, 46, -1, -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, 83, 84,
- 85, 86, 87, 88, -1, -1, 91, 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, -1, 85, 86, 87, 88,
- 89, 90, 91, 92, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, -1, 42, 346, 347, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, -1, 363, 364, 365, 85, 86, 87,
- 88, 89, 90, 91, 92, 88, 89, 90, 91, 92,
- 98, 85, 86, 87, 88, 89, 90, 91, 92, -1,
- -1, -1, -1, -1, 98, 72, 73, 74, 75, 76,
- 77, 78, -1, 80, 81, 85, 86, 87, 88, 89,
- 90, 91, 92, 86, 87, 88, 89, 90, 91, 92,
- 87, 88, 89, 90, 91, 92, 6, 7, 8, 9,
- 10, 11, 51, 52, 53, 54, 55, 56
-};
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/share/bison/bison.simple"
-
-/* Skeleton output parser for bison,
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
- Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* This is the parser code that is written into each bison parser when
- the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* 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. */
-
-#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# else
-# ifndef YYSTACK_USE_ALLOCA
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
-# endif
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
-
-
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- short yyss;
- YYSTYPE yyvs;
-# if YYLSP_NEEDED
- YYLTYPE yyls;
-# endif
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# if YYLSP_NEEDED
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAX)
-# else
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
-# endif
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
-#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 yyerrlab1
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run).
-
- When YYLLOC_DEFAULT is run, CURRENT is set the location of the
- first token. By default, to implement support for ranges, extend
- its range to the last symbol. */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#if YYPURE
-# if YYLSP_NEEDED
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval, &yylloc)
-# endif
-# else /* !YYLSP_NEEDED */
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval)
-# endif
-# endif /* !YYLSP_NEEDED */
-#else /* !YYPURE */
-# define YYLEX yylex ()
-#endif /* !YYPURE */
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-#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
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-#ifdef YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-# else
-yystrlen (yystr)
- const char *yystr;
-# endif
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# 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 *
-# if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-# else
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-#endif
-
-#line 315 "/usr/share/bison/bison.simple"
-
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL
-# else
-# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
-int yyparse (void);
-# endif
-#endif
-
-/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
-
-#define YY_DECL_NON_LSP_VARIABLES \
-/* The lookahead symbol. */ \
-int yychar; \
- \
-/* The semantic value of the lookahead symbol. */ \
-YYSTYPE yylval; \
- \
-/* Number of parse errors so far. */ \
-int yynerrs;
-
-#if YYLSP_NEEDED
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES \
- \
-/* Location data for the lookahead symbol. */ \
-YYLTYPE yylloc;
-#else
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES
-#endif
-
-
-/* If nonreentrant, generate the variables here. */
-
-#if !YYPURE
-YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
-int
-yyparse (YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
-{
- /* If reentrant, generate the variables here. */
-#if YYPURE
- YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-
-#if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-#endif
-
-#if YYLSP_NEEDED
-# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-#if YYLSP_NEEDED
- YYLTYPE yyloc;
-#endif
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-#if YYLSP_NEEDED
- yylsp = yyls;
-#endif
- 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 (yyssp >= yyss + yystacksize - 1)
- {
- /* 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;
- short *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. */
-# if YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yyls1, yysize * sizeof (*yylsp),
- &yystacksize);
- yyls = yyls1;
-# else
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-# endif
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
-# else
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-
- {
- short *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyoverflowlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-# if YYLSP_NEEDED
- YYSTACK_RELOCATE (yyls);
-# endif
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-#if YYLSP_NEEDED
- yylsp = yyls + yysize - 1;
-#endif
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- 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. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yychar1 = YYTRANSLATE (yychar);
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- YYFPRINTF (stderr, "Next token is %d (%s",
- yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise
- meaning of a token, for further debugging info. */
-# ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-# endif
- YYFPRINTF (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- 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 the semantic value of
- the lookahead token. 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];
-
-#if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
-#endif
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables which
- are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
- switch (yyn) {
-
-case 17:
-#line 177 "rcparse.y"
-{
- define_accelerator (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].pacc);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 18:
-#line 187 "rcparse.y"
-{
- yyval.pacc = NULL;
- }
- break;
-case 19:
-#line 191 "rcparse.y"
-{
- struct accelerator *a;
-
- a = (struct accelerator *) res_alloc (sizeof *a);
- *a = yyvsp[0].acc;
- if (yyvsp[-1].pacc == NULL)
- yyval.pacc = a;
- else
- {
- struct accelerator **pp;
-
- for (pp = &yyvsp[-1].pacc->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = a;
- yyval.pacc = yyvsp[-1].pacc;
- }
- }
- break;
-case 20:
-#line 212 "rcparse.y"
-{
- yyval.acc = yyvsp[-1].acc;
- yyval.acc.id = yyvsp[0].il;
- }
- break;
-case 21:
-#line 217 "rcparse.y"
-{
- 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 | ACC_ALT)) != 0)
- rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
- }
- break;
-case 22:
-#line 229 "rcparse.y"
-{
- 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 = *s;
- ch = TOUPPER (ch);
- }
- yyval.acc.key = ch;
- if (s[1] != '\0')
- rcparse_warning (_("accelerator should only be one character"));
- }
- break;
-case 23:
-#line 250 "rcparse.y"
-{
- yyval.acc.next = NULL;
- yyval.acc.flags = 0;
- yyval.acc.id = 0;
- yyval.acc.key = yyvsp[0].il;
- }
- break;
-case 24:
-#line 260 "rcparse.y"
-{
- yyval.is = yyvsp[0].is;
- }
- break;
-case 25:
-#line 264 "rcparse.y"
-{
- yyval.is = yyvsp[-2].is | yyvsp[0].is;
- }
- break;
-case 26:
-#line 269 "rcparse.y"
-{
- yyval.is = yyvsp[-1].is | yyvsp[0].is;
- }
- break;
-case 27:
-#line 276 "rcparse.y"
-{
- yyval.is = ACC_VIRTKEY;
- }
- break;
-case 28:
-#line 280 "rcparse.y"
-{
- /* This is just the absence of VIRTKEY. */
- yyval.is = 0;
- }
- break;
-case 29:
-#line 285 "rcparse.y"
-{
- yyval.is = ACC_NOINVERT;
- }
- break;
-case 30:
-#line 289 "rcparse.y"
-{
- yyval.is = ACC_SHIFT;
- }
- break;
-case 31:
-#line 293 "rcparse.y"
-{
- yyval.is = ACC_CONTROL;
- }
- break;
-case 32:
-#line 297 "rcparse.y"
-{
- yyval.is = ACC_ALT;
- }
- break;
-case 33:
-#line 306 "rcparse.y"
-{
- define_bitmap (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 34:
-#line 318 "rcparse.y"
-{
- define_cursor (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 35:
-#line 331 "rcparse.y"
-{
- 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;
- }
- break;
-case 36:
-#line 348 "rcparse.y"
-{
- define_dialog (yyvsp[-12].id, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 37:
-#line 356 "rcparse.y"
-{
- 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 = ((struct dialog_ex *)
- res_alloc (sizeof (struct dialog_ex)));
- memset (dialog.ex, 0, sizeof (struct dialog_ex));
- dialog.controls = NULL;
- sub_res_info = yyvsp[-5].res_info;
- style = 0;
- }
- break;
-case 38:
-#line 375 "rcparse.y"
-{
- define_dialog (yyvsp[-12].id, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 39:
-#line 383 "rcparse.y"
-{
- 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 = ((struct dialog_ex *)
- res_alloc (sizeof (struct dialog_ex)));
- memset (dialog.ex, 0, sizeof (struct dialog_ex));
- dialog.ex->help = yyvsp[0].il;
- dialog.controls = NULL;
- sub_res_info = yyvsp[-6].res_info;
- style = 0;
- }
- break;
-case 40:
-#line 403 "rcparse.y"
-{
- define_dialog (yyvsp[-13].id, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 41:
-#line 413 "rcparse.y"
-{
- yyval.il = 0;
- }
- break;
-case 42:
-#line 417 "rcparse.y"
-{
- yyval.il = yyvsp[0].il;
- }
- break;
-case 44:
-#line 425 "rcparse.y"
-{
- dialog.style |= WS_CAPTION;
- style |= WS_CAPTION;
- unicode_from_ascii ((int *) NULL, &dialog.caption, yyvsp[0].s);
- }
- break;
-case 45:
-#line 431 "rcparse.y"
-{
- dialog.class = yyvsp[0].id;
- }
- break;
-case 46:
-#line 436 "rcparse.y"
-{
- dialog.style = style;
- }
- break;
-case 47:
-#line 440 "rcparse.y"
-{
- dialog.exstyle = yyvsp[0].il;
- }
- break;
-case 48:
-#line 444 "rcparse.y"
-{
- res_string_to_id (& dialog.class, yyvsp[0].s);
- }
- break;
-case 49:
-#line 448 "rcparse.y"
-{
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = yyvsp[-2].il;
- unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[0].s);
- if (dialog.ex != NULL)
- {
- dialog.ex->weight = 0;
- dialog.ex->italic = 0;
- dialog.ex->charset = 1;
- }
- }
- break;
-case 50:
-#line 461 "rcparse.y"
-{
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = yyvsp[-3].il;
- unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[-1].s);
- 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;
- }
- }
- break;
-case 51:
-#line 476 "rcparse.y"
-{
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = yyvsp[-4].il;
- unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[-2].s);
- 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;
- }
- }
- break;
-case 52:
-#line 491 "rcparse.y"
-{
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = yyvsp[-5].il;
- unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[-3].s);
- 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;
- }
- }
- break;
-case 53:
-#line 506 "rcparse.y"
-{
- dialog.menu = yyvsp[0].id;
- }
- break;
-case 54:
-#line 510 "rcparse.y"
-{
- sub_res_info.characteristics = yyvsp[0].il;
- }
- break;
-case 55:
-#line 514 "rcparse.y"
-{
- sub_res_info.language = yyvsp[-1].il | (yyvsp[0].il << SUBLANG_SHIFT);
- }
- break;
-case 56:
-#line 518 "rcparse.y"
-{
- sub_res_info.version = yyvsp[0].il;
- }
- break;
-case 58:
-#line 526 "rcparse.y"
-{
- struct dialog_control **pp;
-
- for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = yyvsp[0].dialog_control;
- }
- break;
-case 59:
-#line 537 "rcparse.y"
-{
- default_style = BS_AUTO3STATE | WS_TABSTOP;
- base_style = BS_AUTO3STATE;
- class = CTL_BUTTON;
- }
- break;
-case 60:
-#line 543 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 61:
-#line 547 "rcparse.y"
-{
- default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
- base_style = BS_AUTOCHECKBOX;
- class = CTL_BUTTON;
- }
- break;
-case 62:
-#line 553 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 63:
-#line 557 "rcparse.y"
-{
- default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
- base_style = BS_AUTORADIOBUTTON;
- class = CTL_BUTTON;
- }
- break;
-case 64:
-#line 563 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 65:
-#line 567 "rcparse.y"
-{
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- break;
-case 66:
-#line 573 "rcparse.y"
-{
- 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");
- }
- break;
-case 67:
-#line 580 "rcparse.y"
-{
- default_style = BS_CHECKBOX | WS_TABSTOP;
- base_style = BS_CHECKBOX | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- break;
-case 68:
-#line 586 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 69:
-#line 590 "rcparse.y"
-{
- default_style = CBS_SIMPLE | WS_TABSTOP;
- base_style = 0;
- class = CTL_COMBOBOX;
- }
- break;
-case 70:
-#line 596 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 71:
-#line 601 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-7].il, 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;
- }
- }
- break;
-case 72:
-#line 612 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-10].s, yyvsp[-9].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-8].il, 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;
- }
- break;
-case 73:
-#line 621 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-10].s, yyvsp[-9].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, 0, 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;
- }
- yyval.dialog_control->class.named = 1;
- unicode_from_ascii (&yyval.dialog_control->class.u.n.length, &yyval.dialog_control->class.u.n.name, yyvsp[-7].s);
- }
- break;
-case 74:
-#line 634 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-11].s, yyvsp[-10].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, 0, 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;
- yyval.dialog_control->class.named = 1;
- unicode_from_ascii (&yyval.dialog_control->class.u.n.length, &yyval.dialog_control->class.u.n.name, yyvsp[-8].s);
- }
- break;
-case 75:
-#line 644 "rcparse.y"
-{
- default_style = SS_CENTER | WS_GROUP;
- base_style = SS_CENTER;
- class = CTL_STATIC;
- }
- break;
-case 76:
-#line 650 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 77:
-#line 654 "rcparse.y"
-{
- default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
- base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- break;
-case 78:
-#line 660 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 79:
-#line 664 "rcparse.y"
-{
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- break;
-case 80:
-#line 670 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 81:
-#line 674 "rcparse.y"
-{
- default_style = BS_GROUPBOX;
- base_style = BS_GROUPBOX;
- class = CTL_BUTTON;
- }
- break;
-case 82:
-#line 680 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 83:
-#line 684 "rcparse.y"
-{
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- break;
-case 84:
-#line 690 "rcparse.y"
-{
- 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");
- }
- break;
-case 85:
-#line 697 "rcparse.y"
-{
- 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);
- }
- break;
-case 86:
-#line 703 "rcparse.y"
-{
- 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);
- }
- break;
-case 87:
-#line 709 "rcparse.y"
-{
- 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);
- }
- break;
-case 88:
-#line 715 "rcparse.y"
-{
- 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);
- }
- break;
-case 89:
-#line 720 "rcparse.y"
-{
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- break;
-case 90:
-#line 726 "rcparse.y"
-{
- 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");
- }
- break;
-case 91:
-#line 733 "rcparse.y"
-{
- default_style = LBS_NOTIFY | WS_BORDER;
- base_style = LBS_NOTIFY | WS_BORDER;
- class = CTL_LISTBOX;
- }
- break;
-case 92:
-#line 739 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 93:
-#line 743 "rcparse.y"
-{
- default_style = SS_LEFT | WS_GROUP;
- base_style = SS_LEFT;
- class = CTL_STATIC;
- }
- break;
-case 94:
-#line 749 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 95:
-#line 753 "rcparse.y"
-{
- default_style = BS_PUSHBOX | WS_TABSTOP;
- base_style = BS_PUSHBOX;
- class = CTL_BUTTON;
- }
- break;
-case 96:
-#line 759 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 97:
-#line 763 "rcparse.y"
-{
- default_style = BS_PUSHBUTTON | WS_TABSTOP;
- base_style = BS_PUSHBUTTON | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- break;
-case 98:
-#line 769 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 99:
-#line 773 "rcparse.y"
-{
- default_style = BS_RADIOBUTTON | WS_TABSTOP;
- base_style = BS_RADIOBUTTON;
- class = CTL_BUTTON;
- }
- break;
-case 100:
-#line 779 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 101:
-#line 783 "rcparse.y"
-{
- default_style = SS_RIGHT | WS_GROUP;
- base_style = SS_RIGHT;
- class = CTL_STATIC;
- }
- break;
-case 102:
-#line 789 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 103:
-#line 793 "rcparse.y"
-{
- default_style = SBS_HORZ;
- base_style = 0;
- class = CTL_SCROLLBAR;
- }
- break;
-case 104:
-#line 799 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 105:
-#line 803 "rcparse.y"
-{
- default_style = BS_3STATE | WS_TABSTOP;
- base_style = BS_3STATE;
- class = CTL_BUTTON;
- }
- break;
-case 106:
-#line 809 "rcparse.y"
-{
- yyval.dialog_control = yyvsp[0].dialog_control;
- }
- break;
-case 107:
-#line 814 "rcparse.y"
-{ style = WS_CHILD | WS_VISIBLE; }
- break;
-case 108:
-#line 816 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-14].s, yyvsp[-12].il, yyvsp[-10].il, yyvsp[-8].il, yyvsp[-6].il, yyvsp[-4].il, CTL_BUTTON,
- style, yyvsp[0].il);
- }
- break;
-case 109:
-#line 832 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-6].s, 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;
- }
- }
- break;
-case 110:
-#line 844 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-8].s, 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;
- }
- }
- break;
-case 111:
-#line 855 "rcparse.y"
-{
- yyval.dialog_control = define_control (yyvsp[-9].s, 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;
- }
- break;
-case 112:
-#line 866 "rcparse.y"
-{
- yyval.s = NULL;
- }
- break;
-case 113:
-#line 870 "rcparse.y"
-{
- yyval.s = yyvsp[0].s;
- }
- break;
-case 114:
-#line 874 "rcparse.y"
-{
- yyval.s = yyvsp[-1].s;
- }
- break;
-case 115:
-#line 881 "rcparse.y"
-{
- yyval.rcdata_item = NULL;
- }
- break;
-case 116:
-#line 885 "rcparse.y"
-{
- yyval.rcdata_item = yyvsp[-1].rcdata.first;
- }
- break;
-case 117:
-#line 894 "rcparse.y"
-{ style = WS_CHILD | WS_VISIBLE; }
- break;
-case 119:
-#line 900 "rcparse.y"
-{ style = SS_ICON | WS_CHILD | WS_VISIBLE; }
- break;
-case 121:
-#line 906 "rcparse.y"
-{ style = base_style | WS_CHILD | WS_VISIBLE; }
- break;
-case 123:
-#line 914 "rcparse.y"
-{
- define_font (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 124:
-#line 926 "rcparse.y"
-{
- define_icon (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 125:
-#line 939 "rcparse.y"
-{
- language = yyvsp[-1].il | (yyvsp[0].il << SUBLANG_SHIFT);
- }
- break;
-case 126:
-#line 948 "rcparse.y"
-{
- define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 127:
-#line 958 "rcparse.y"
-{
- yyval.menuitem = NULL;
- }
- break;
-case 128:
-#line 962 "rcparse.y"
-{
- if (yyvsp[-1].menuitem == NULL)
- yyval.menuitem = yyvsp[0].menuitem;
- else
- {
- struct menuitem **pp;
-
- for (pp = &yyvsp[-1].menuitem->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = yyvsp[0].menuitem;
- yyval.menuitem = yyvsp[-1].menuitem;
- }
- }
- break;
-case 129:
-#line 979 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-2].s, yyvsp[-1].il, yyvsp[0].is, 0, 0, NULL);
- }
- break;
-case 130:
-#line 983 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
- }
- break;
-case 131:
-#line 987 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-4].s, 0, yyvsp[-3].is, 0, 0, yyvsp[-1].menuitem);
- }
- break;
-case 132:
-#line 994 "rcparse.y"
-{
- yyval.is = 0;
- }
- break;
-case 133:
-#line 998 "rcparse.y"
-{
- yyval.is = yyvsp[-2].is | yyvsp[0].is;
- }
- break;
-case 134:
-#line 1002 "rcparse.y"
-{
- yyval.is = yyvsp[-1].is | yyvsp[0].is;
- }
- break;
-case 135:
-#line 1009 "rcparse.y"
-{
- yyval.is = MENUITEM_CHECKED;
- }
- break;
-case 136:
-#line 1013 "rcparse.y"
-{
- yyval.is = MENUITEM_GRAYED;
- }
- break;
-case 137:
-#line 1017 "rcparse.y"
-{
- yyval.is = MENUITEM_HELP;
- }
- break;
-case 138:
-#line 1021 "rcparse.y"
-{
- yyval.is = MENUITEM_INACTIVE;
- }
- break;
-case 139:
-#line 1025 "rcparse.y"
-{
- yyval.is = MENUITEM_MENUBARBREAK;
- }
- break;
-case 140:
-#line 1029 "rcparse.y"
-{
- yyval.is = MENUITEM_MENUBREAK;
- }
- break;
-case 141:
-#line 1038 "rcparse.y"
-{
- define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 142:
-#line 1048 "rcparse.y"
-{
- yyval.menuitem = NULL;
- }
- break;
-case 143:
-#line 1052 "rcparse.y"
-{
- if (yyvsp[-1].menuitem == NULL)
- yyval.menuitem = yyvsp[0].menuitem;
- else
- {
- struct menuitem **pp;
-
- for (pp = &yyvsp[-1].menuitem->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = yyvsp[0].menuitem;
- yyval.menuitem = yyvsp[-1].menuitem;
- }
- }
- break;
-case 144:
-#line 1069 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[0].s, 0, 0, 0, 0, NULL);
- }
- break;
-case 145:
-#line 1073 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-1].s, yyvsp[0].il, 0, 0, 0, NULL);
- }
- break;
-case 146:
-#line 1077 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-3].s, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].il, 0, NULL);
- }
- break;
-case 147:
-#line 1081 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
- }
- break;
-case 148:
-#line 1085 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-3].s, 0, 0, 0, 0, yyvsp[-1].menuitem);
- }
- break;
-case 149:
-#line 1089 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-4].s, yyvsp[-3].il, 0, 0, 0, yyvsp[-1].menuitem);
- }
- break;
-case 150:
-#line 1093 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-5].s, yyvsp[-4].il, yyvsp[-3].il, 0, 0, yyvsp[-1].menuitem);
- }
- break;
-case 151:
-#line 1098 "rcparse.y"
-{
- yyval.menuitem = define_menuitem (yyvsp[-7].s, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-1].menuitem);
- }
- break;
-case 152:
-#line 1107 "rcparse.y"
-{
- define_messagetable (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 153:
-#line 1119 "rcparse.y"
-{
- define_rcdata (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 154:
-#line 1131 "rcparse.y"
-{
- rcparse_rcdata ();
- }
- break;
-case 155:
-#line 1135 "rcparse.y"
-{
- rcparse_normal ();
- yyval.rcdata = yyvsp[0].rcdata;
- }
- break;
-case 156:
-#line 1143 "rcparse.y"
-{
- yyval.rcdata.first = NULL;
- yyval.rcdata.last = NULL;
- }
- break;
-case 157:
-#line 1148 "rcparse.y"
-{
- yyval.rcdata = yyvsp[0].rcdata;
- }
- break;
-case 158:
-#line 1155 "rcparse.y"
-{
- struct rcdata_item *ri;
-
- ri = define_rcdata_string (yyvsp[0].ss.s, yyvsp[0].ss.length);
- yyval.rcdata.first = ri;
- yyval.rcdata.last = ri;
- }
- break;
-case 159:
-#line 1163 "rcparse.y"
-{
- struct rcdata_item *ri;
-
- ri = define_rcdata_number (yyvsp[0].i.val, yyvsp[0].i.dword);
- yyval.rcdata.first = ri;
- yyval.rcdata.last = ri;
- }
- break;
-case 160:
-#line 1171 "rcparse.y"
-{
- struct 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;
- }
- break;
-case 161:
-#line 1180 "rcparse.y"
-{
- struct 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;
- }
- break;
-case 162:
-#line 1194 "rcparse.y"
-{ sub_res_info = yyvsp[-1].res_info; }
- break;
-case 165:
-#line 1201 "rcparse.y"
-{
- define_stringtable (&sub_res_info, yyvsp[-1].il, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 166:
-#line 1208 "rcparse.y"
-{
- define_stringtable (&sub_res_info, yyvsp[-2].il, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 167:
-#line 1221 "rcparse.y"
-{
- define_user_data (yyvsp[-5].id, yyvsp[-4].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 168:
-#line 1228 "rcparse.y"
-{
- define_user_file (yyvsp[-3].id, yyvsp[-2].id, &yyvsp[-1].res_info, yyvsp[0].s);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 169:
-#line 1240 "rcparse.y"
-{
- define_versioninfo (yyvsp[-5].id, language, yyvsp[-3].fixver, yyvsp[-1].verinfo);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- break;
-case 170:
-#line 1250 "rcparse.y"
-{
- yyval.fixver = ((struct fixed_versioninfo *)
- res_alloc (sizeof (struct fixed_versioninfo)));
- memset (yyval.fixver, 0, sizeof (struct fixed_versioninfo));
- }
- break;
-case 171:
-#line 1256 "rcparse.y"
-{
- yyvsp[-5].fixver->file_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
- yyvsp[-5].fixver->file_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
- yyval.fixver = yyvsp[-5].fixver;
- }
- break;
-case 172:
-#line 1262 "rcparse.y"
-{
- yyvsp[-5].fixver->product_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
- yyvsp[-5].fixver->product_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
- yyval.fixver = yyvsp[-5].fixver;
- }
- break;
-case 173:
-#line 1268 "rcparse.y"
-{
- yyvsp[-2].fixver->file_flags_mask = yyvsp[0].il;
- yyval.fixver = yyvsp[-2].fixver;
- }
- break;
-case 174:
-#line 1273 "rcparse.y"
-{
- yyvsp[-2].fixver->file_flags = yyvsp[0].il;
- yyval.fixver = yyvsp[-2].fixver;
- }
- break;
-case 175:
-#line 1278 "rcparse.y"
-{
- yyvsp[-2].fixver->file_os = yyvsp[0].il;
- yyval.fixver = yyvsp[-2].fixver;
- }
- break;
-case 176:
-#line 1283 "rcparse.y"
-{
- yyvsp[-2].fixver->file_type = yyvsp[0].il;
- yyval.fixver = yyvsp[-2].fixver;
- }
- break;
-case 177:
-#line 1288 "rcparse.y"
-{
- yyvsp[-2].fixver->file_subtype = yyvsp[0].il;
- yyval.fixver = yyvsp[-2].fixver;
- }
- break;
-case 178:
-#line 1302 "rcparse.y"
-{
- yyval.verinfo = NULL;
- }
- break;
-case 179:
-#line 1306 "rcparse.y"
-{
- yyval.verinfo = append_ver_stringfileinfo (yyvsp[-7].verinfo, yyvsp[-4].s, yyvsp[-2].verstring);
- }
- break;
-case 180:
-#line 1310 "rcparse.y"
-{
- yyval.verinfo = append_ver_varfileinfo (yyvsp[-6].verinfo, yyvsp[-2].s, yyvsp[-1].vervar);
- }
- break;
-case 181:
-#line 1317 "rcparse.y"
-{
- yyval.verstring = NULL;
- }
- break;
-case 182:
-#line 1321 "rcparse.y"
-{
- yyval.verstring = append_verval (yyvsp[-4].verstring, yyvsp[-2].s, yyvsp[0].s);
- }
- break;
-case 183:
-#line 1328 "rcparse.y"
-{
- yyval.vervar = NULL;
- }
- break;
-case 184:
-#line 1332 "rcparse.y"
-{
- yyval.vervar = append_vertrans (yyvsp[-2].vervar, yyvsp[-1].il, yyvsp[0].il);
- }
- break;
-case 185:
-#line 1341 "rcparse.y"
-{
- yyval.id.named = 0;
- yyval.id.u.id = yyvsp[0].il;
- }
- break;
-case 186:
-#line 1346 "rcparse.y"
-{
- char *copy, *s;
-
- /* It seems that resource ID's are forced to upper case. */
- copy = xstrdup (yyvsp[0].s);
- for (s = copy; *s != '\0'; s++)
- *s = TOUPPER (*s);
- res_string_to_id (&yyval.id, copy);
- free (copy);
- }
- break;
-case 187:
-#line 1362 "rcparse.y"
-{
- yyval.s = yyvsp[0].s;
- }
- break;
-case 188:
-#line 1366 "rcparse.y"
-{
- yyval.s = yyvsp[-1].s;
- }
- break;
-case 189:
-#line 1370 "rcparse.y"
-{
- yyval.s = yyvsp[-1].s;
- }
- break;
-case 190:
-#line 1378 "rcparse.y"
-{
- yyval.id.named = 0;
- yyval.id.u.id = yyvsp[-1].il;
- }
- break;
-case 191:
-#line 1383 "rcparse.y"
-{
- char *copy, *s;
-
- /* It seems that resource ID's are forced to upper case. */
- copy = xstrdup (yyvsp[0].s);
- for (s = copy; *s != '\0'; s++)
- *s = TOUPPER (*s);
- res_string_to_id (&yyval.id, copy);
- free (copy);
- }
- break;
-case 192:
-#line 1400 "rcparse.y"
-{
- memset (&yyval.res_info, 0, sizeof (struct res_res_info));
- yyval.res_info.language = language;
- /* FIXME: Is this the right default? */
- yyval.res_info.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
- }
- break;
-case 193:
-#line 1407 "rcparse.y"
-{
- yyval.res_info = yyvsp[-1].res_info;
- yyval.res_info.memflags |= yyvsp[0].memflags.on;
- yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
- }
- break;
-case 194:
-#line 1413 "rcparse.y"
-{
- yyval.res_info = yyvsp[-2].res_info;
- yyval.res_info.characteristics = yyvsp[0].il;
- }
- break;
-case 195:
-#line 1418 "rcparse.y"
-{
- yyval.res_info = yyvsp[-3].res_info;
- yyval.res_info.language = yyvsp[-1].il | (yyvsp[0].il << SUBLANG_SHIFT);
- }
- break;
-case 196:
-#line 1423 "rcparse.y"
-{
- yyval.res_info = yyvsp[-2].res_info;
- yyval.res_info.version = yyvsp[0].il;
- }
- break;
-case 197:
-#line 1433 "rcparse.y"
-{
- memset (&yyval.res_info, 0, sizeof (struct res_res_info));
- yyval.res_info.language = language;
- yyval.res_info.memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
- }
- break;
-case 198:
-#line 1439 "rcparse.y"
-{
- yyval.res_info = yyvsp[-1].res_info;
- yyval.res_info.memflags |= yyvsp[0].memflags.on;
- yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
- }
- break;
-case 199:
-#line 1450 "rcparse.y"
-{
- memset (&yyval.res_info, 0, sizeof (struct res_res_info));
- yyval.res_info.language = language;
- yyval.res_info.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
- }
- break;
-case 200:
-#line 1456 "rcparse.y"
-{
- yyval.res_info = yyvsp[-1].res_info;
- yyval.res_info.memflags |= yyvsp[0].memflags.on;
- yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
- }
- break;
-case 201:
-#line 1468 "rcparse.y"
-{
- yyval.memflags.on = MEMFLAG_MOVEABLE;
- yyval.memflags.off = 0;
- }
- break;
-case 202:
-#line 1473 "rcparse.y"
-{
- yyval.memflags.on = 0;
- yyval.memflags.off = MEMFLAG_MOVEABLE;
- }
- break;
-case 203:
-#line 1478 "rcparse.y"
-{
- yyval.memflags.on = MEMFLAG_PURE;
- yyval.memflags.off = 0;
- }
- break;
-case 204:
-#line 1483 "rcparse.y"
-{
- yyval.memflags.on = 0;
- yyval.memflags.off = MEMFLAG_PURE;
- }
- break;
-case 205:
-#line 1488 "rcparse.y"
-{
- yyval.memflags.on = MEMFLAG_PRELOAD;
- yyval.memflags.off = 0;
- }
- break;
-case 206:
-#line 1493 "rcparse.y"
-{
- yyval.memflags.on = 0;
- yyval.memflags.off = MEMFLAG_PRELOAD;
- }
- break;
-case 207:
-#line 1498 "rcparse.y"
-{
- yyval.memflags.on = MEMFLAG_DISCARDABLE;
- yyval.memflags.off = 0;
- }
- break;
-case 208:
-#line 1508 "rcparse.y"
-{
- yyval.s = yyvsp[0].s;
- }
- break;
-case 209:
-#line 1512 "rcparse.y"
-{
- yyval.s = yyvsp[0].s;
- }
- break;
-case 210:
-#line 1529 "rcparse.y"
-{
- style |= yyvsp[0].il;
- }
- break;
-case 211:
-#line 1533 "rcparse.y"
-{
- style &=~ yyvsp[0].il;
- }
- break;
-case 212:
-#line 1537 "rcparse.y"
-{
- style |= yyvsp[0].il;
- }
- break;
-case 213:
-#line 1541 "rcparse.y"
-{
- style &=~ yyvsp[0].il;
- }
- break;
-case 214:
-#line 1548 "rcparse.y"
-{
- yyval.il = yyvsp[0].i.val;
- }
- break;
-case 215:
-#line 1552 "rcparse.y"
-{
- yyval.il = yyvsp[-1].il;
- }
- break;
-case 216:
-#line 1561 "rcparse.y"
-{
- yyval.il = 0;
- }
- break;
-case 217:
-#line 1565 "rcparse.y"
-{
- yyval.il = yyvsp[0].il;
- }
- break;
-case 218:
-#line 1574 "rcparse.y"
-{
- yyval.il = yyvsp[0].il;
- }
- break;
-case 219:
-#line 1583 "rcparse.y"
-{
- yyval.il = yyvsp[0].i.val;
- }
- break;
-case 220:
-#line 1592 "rcparse.y"
-{
- yyval.i = yyvsp[0].i;
- }
- break;
-case 221:
-#line 1596 "rcparse.y"
-{
- yyval.i = yyvsp[-1].i;
- }
- break;
-case 222:
-#line 1600 "rcparse.y"
-{
- yyval.i.val = ~ yyvsp[0].i.val;
- yyval.i.dword = yyvsp[0].i.dword;
- }
- break;
-case 223:
-#line 1605 "rcparse.y"
-{
- yyval.i.val = - yyvsp[0].i.val;
- yyval.i.dword = yyvsp[0].i.dword;
- }
- break;
-case 224:
-#line 1610 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 225:
-#line 1615 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 226:
-#line 1620 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 227:
-#line 1625 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 228:
-#line 1630 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 229:
-#line 1635 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 230:
-#line 1640 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 231:
-#line 1645 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 232:
-#line 1656 "rcparse.y"
-{
- yyval.il = yyvsp[0].il;
- }
- break;
-case 233:
-#line 1665 "rcparse.y"
-{
- yyval.il = yyvsp[0].i.val;
- }
- break;
-case 234:
-#line 1676 "rcparse.y"
-{
- yyval.i = yyvsp[0].i;
- }
- break;
-case 235:
-#line 1680 "rcparse.y"
-{
- yyval.i = yyvsp[-1].i;
- }
- break;
-case 236:
-#line 1684 "rcparse.y"
-{
- yyval.i.val = ~ yyvsp[0].i.val;
- yyval.i.dword = yyvsp[0].i.dword;
- }
- break;
-case 237:
-#line 1689 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 238:
-#line 1694 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 239:
-#line 1699 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 240:
-#line 1704 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 241:
-#line 1709 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 242:
-#line 1714 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 243:
-#line 1719 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-case 244:
-#line 1724 "rcparse.y"
-{
- yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
- yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
- }
- break;
-}
-
-#line 705 "/usr/share/bison/bison.simple"
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-#if YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-#if YYLSP_NEEDED
- *++yylsp = yyloc;
-#endif
-
- /* 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 - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
- yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* defined (YYERROR_VERBOSE) */
- yyerror ("parse error");
- }
- goto yyerrlab1;
-
-
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
-yyerrlab1:
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-
-/*-------------------------------------------------------------------.
-| yyerrdefault -- current state does not do anything special for the |
-| error token. |
-`-------------------------------------------------------------------*/
-yyerrdefault:
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
-
- /* If its default is to accept any token, ok. Otherwise pop it. */
- yyn = yydefact[yystate];
- if (yyn)
- goto yydefault;
-#endif
-
-
-/*---------------------------------------------------------------.
-| yyerrpop -- pop the current state because it cannot handle the |
-| error token |
-`---------------------------------------------------------------*/
-yyerrpop:
- if (yyssp == yyss)
- YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#if YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "Error: state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
-/*--------------.
-| yyerrhandle. |
-`--------------*/
-yyerrhandle:
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-/*---------------------------------------------.
-| yyoverflowab -- parser overflow comes here. |
-`---------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
- yyresult = 2;
- /* Fall through. */
-
-yyreturn:
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
- return yyresult;
-}
-#line 1730 "rcparse.y"
-
-
-/* Set the language from the command line. */
-
-void
-rcparse_set_language (lang)
- int lang;
-{
- language = lang;
-}
diff --git a/contrib/binutils/binutils/rcparse.h b/contrib/binutils/binutils/rcparse.h
deleted file mode 100644
index 3ad5fd3e0b96..000000000000
--- a/contrib/binutils/binutils/rcparse.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifndef BISON_Y_TAB_H
-# define BISON_Y_TAB_H
-
-#ifndef YYSTYPE
-typedef union
-{
- struct accelerator acc;
- struct accelerator *pacc;
- struct dialog_control *dialog_control;
- struct menuitem *menuitem;
- struct
- {
- struct rcdata_item *first;
- struct rcdata_item *last;
- } rcdata;
- struct rcdata_item *rcdata_item;
- struct stringtable_data *stringtable;
- struct fixed_versioninfo *fixver;
- struct ver_info *verinfo;
- struct ver_stringinfo *verstring;
- struct ver_varinfo *vervar;
- struct res_id id;
- struct res_res_info res_info;
- struct
- {
- unsigned short on;
- unsigned short off;
- } memflags;
- struct
- {
- unsigned long val;
- /* Nonzero if this number was explicitly specified as long. */
- int dword;
- } i;
- unsigned long il;
- unsigned short is;
- const char *s;
- struct
- {
- unsigned long length;
- const char *s;
- } ss;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-# define BEG 257
-# define END 258
-# define ACCELERATORS 259
-# define VIRTKEY 260
-# define ASCII 261
-# define NOINVERT 262
-# define SHIFT 263
-# define CONTROL 264
-# define ALT 265
-# define BITMAP 266
-# define CURSOR 267
-# define DIALOG 268
-# define DIALOGEX 269
-# define EXSTYLE 270
-# define CAPTION 271
-# define CLASS 272
-# define STYLE 273
-# define AUTO3STATE 274
-# define AUTOCHECKBOX 275
-# define AUTORADIOBUTTON 276
-# define CHECKBOX 277
-# define COMBOBOX 278
-# define CTEXT 279
-# define DEFPUSHBUTTON 280
-# define EDITTEXT 281
-# define GROUPBOX 282
-# define LISTBOX 283
-# define LTEXT 284
-# define PUSHBOX 285
-# define PUSHBUTTON 286
-# define RADIOBUTTON 287
-# define RTEXT 288
-# define SCROLLBAR 289
-# define STATE3 290
-# define USERBUTTON 291
-# define BEDIT 292
-# define HEDIT 293
-# define IEDIT 294
-# define FONT 295
-# define ICON 296
-# define LANGUAGE 297
-# define CHARACTERISTICS 298
-# define VERSIONK 299
-# define MENU 300
-# define MENUEX 301
-# define MENUITEM 302
-# define SEPARATOR 303
-# define POPUP 304
-# define CHECKED 305
-# define GRAYED 306
-# define HELP 307
-# define INACTIVE 308
-# define MENUBARBREAK 309
-# define MENUBREAK 310
-# define MESSAGETABLE 311
-# define RCDATA 312
-# define STRINGTABLE 313
-# define VERSIONINFO 314
-# define FILEVERSION 315
-# define PRODUCTVERSION 316
-# define FILEFLAGSMASK 317
-# define FILEFLAGS 318
-# define FILEOS 319
-# define FILETYPE 320
-# define FILESUBTYPE 321
-# define BLOCKSTRINGFILEINFO 322
-# define BLOCKVARFILEINFO 323
-# define VALUE 324
-# define BLOCK 325
-# define MOVEABLE 326
-# define FIXED 327
-# define PURE 328
-# define IMPURE 329
-# define PRELOAD 330
-# define LOADONCALL 331
-# define DISCARDABLE 332
-# define NOT 333
-# define QUOTEDSTRING 334
-# define STRING 335
-# define NUMBER 336
-# define SIZEDSTRING 337
-# define IGNORED_TOKEN 338
-# define NEG 339
-
-
-extern YYSTYPE yylval;
-
-#endif /* not BISON_Y_TAB_H */
diff --git a/contrib/binutils/binutils/rcparse.y b/contrib/binutils/binutils/rcparse.y
deleted file mode 100644
index 1f10da7eaf3e..000000000000
--- a/contrib/binutils/binutils/rcparse.y
+++ /dev/null
@@ -1,1739 +0,0 @@
-%{ /* rcparse.y -- parser for Windows rc files
- Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Written by Ian Lance Taylor, Cygnus Support.
-
- 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 2 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., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/* This is a parser for Windows rc files. It is based on the parser
- by Gunther Ebert <gunther.ebert@ixos-leipzig.de>. */
-
-#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 struct res_res_info sub_res_info;
-
-/* Dialog information. This is built by the nonterminals styles and
- controls. */
-
-static struct 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 unsigned long base_style;
-static unsigned long default_style;
-static unsigned long class;
-
-%}
-
-%union
-{
- struct accelerator acc;
- struct accelerator *pacc;
- struct dialog_control *dialog_control;
- struct menuitem *menuitem;
- struct
- {
- struct rcdata_item *first;
- struct rcdata_item *last;
- } rcdata;
- struct rcdata_item *rcdata_item;
- struct stringtable_data *stringtable;
- struct fixed_versioninfo *fixver;
- struct ver_info *verinfo;
- struct ver_stringinfo *verstring;
- struct ver_varinfo *vervar;
- struct res_id id;
- struct res_res_info res_info;
- struct
- {
- unsigned short on;
- unsigned short off;
- } memflags;
- struct
- {
- unsigned long val;
- /* Nonzero if this number was explicitly specified as long. */
- int dword;
- } i;
- unsigned long il;
- unsigned short is;
- const char *s;
- struct
- {
- unsigned long length;
- const char *s;
- } ss;
-};
-
-%token BEG END
-%token ACCELERATORS VIRTKEY ASCII NOINVERT SHIFT CONTROL ALT
-%token BITMAP
-%token CURSOR
-%token DIALOG DIALOGEX EXSTYLE CAPTION CLASS STYLE
-%token AUTO3STATE AUTOCHECKBOX AUTORADIOBUTTON CHECKBOX COMBOBOX CTEXT
-%token DEFPUSHBUTTON EDITTEXT GROUPBOX LISTBOX LTEXT PUSHBOX PUSHBUTTON
-%token RADIOBUTTON RTEXT SCROLLBAR STATE3 USERBUTTON
-%token BEDIT HEDIT IEDIT
-%token FONT
-%token ICON
-%token LANGUAGE CHARACTERISTICS VERSIONK
-%token MENU MENUEX MENUITEM SEPARATOR POPUP CHECKED GRAYED HELP INACTIVE
-%token MENUBARBREAK MENUBREAK
-%token MESSAGETABLE
-%token RCDATA
-%token STRINGTABLE
-%token VERSIONINFO FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS
-%token FILEOS FILETYPE FILESUBTYPE BLOCKSTRINGFILEINFO BLOCKVARFILEINFO
-%token VALUE
-%token <s> BLOCK
-%token MOVEABLE FIXED PURE IMPURE PRELOAD LOADONCALL DISCARDABLE
-%token NOT
-%token <s> QUOTEDSTRING STRING
-%token <i> NUMBER
-%token <ss> SIZEDSTRING
-%token IGNORED_TOKEN
-
-%type <pacc> acc_entries
-%type <acc> acc_entry acc_event
-%type <dialog_control> control control_params
-%type <menuitem> menuitems menuitem menuexitems menuexitem
-%type <rcdata> optrcdata_data optrcdata_data_int rcdata_data
-%type <rcdata_item> opt_control_data
-%type <fixver> fixedverinfo
-%type <verinfo> verblocks
-%type <verstring> vervals
-%type <vervar> vertrans
-%type <res_info> suboptions memflags_move_discard memflags_move
-%type <memflags> memflag
-%type <id> id resref
-%type <il> exstyle parennumber
-%type <il> numexpr posnumexpr cnumexpr optcnumexpr cposnumexpr
-%type <is> acc_options acc_option menuitem_flags menuitem_flag
-%type <s> optstringc file_name resname
-%type <i> sizednumexpr sizedposnumexpr
-
-%left '|'
-%left '^'
-%left '&'
-%left '+' '-'
-%left '*' '/' '%'
-%right '~' NEG
-
-%%
-
-input:
- /* empty */
- | input accelerator
- | input bitmap
- | input cursor
- | input dialog
- | input font
- | input icon
- | input language
- | input menu
- | input menuex
- | input messagetable
- | input rcdata
- | input stringtable
- | input user
- | input versioninfo
- | input IGNORED_TOKEN
- ;
-
-/* Accelerator resources. */
-
-accelerator:
- id ACCELERATORS suboptions BEG acc_entries END
- {
- define_accelerator ($1, &$3, $5);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-acc_entries:
- /* empty */
- {
- $$ = NULL;
- }
- | acc_entries acc_entry
- {
- struct accelerator *a;
-
- a = (struct accelerator *) res_alloc (sizeof *a);
- *a = $2;
- if ($1 == NULL)
- $$ = a;
- else
- {
- struct accelerator **pp;
-
- for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = a;
- $$ = $1;
- }
- }
- ;
-
-acc_entry:
- acc_event cposnumexpr
- {
- $$ = $1;
- $$.id = $2;
- }
- | acc_event cposnumexpr ',' acc_options
- {
- $$ = $1;
- $$.id = $2;
- $$.flags |= $4;
- if (($$.flags & ACC_VIRTKEY) == 0
- && ($$.flags & (ACC_SHIFT | ACC_CONTROL)) != 0)
- rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
- }
- ;
-
-acc_event:
- QUOTEDSTRING
- {
- const char *s = $1;
- char ch;
-
- $$.next = NULL;
- $$.id = 0;
- ch = *s;
- if (ch != '^')
- $$.flags = 0;
- else
- {
- $$.flags = ACC_CONTROL | ACC_VIRTKEY;
- ++s;
- ch = *s;
- ch = TOUPPER (ch);
- }
- $$.key = ch;
- if (s[1] != '\0')
- rcparse_warning (_("accelerator should only be one character"));
- }
- | posnumexpr
- {
- $$.next = NULL;
- $$.flags = 0;
- $$.id = 0;
- $$.key = $1;
- }
- ;
-
-acc_options:
- acc_option
- {
- $$ = $1;
- }
- | acc_options ',' acc_option
- {
- $$ = $1 | $3;
- }
- /* I've had one report that the comma is optional. */
- | acc_options acc_option
- {
- $$ = $1 | $2;
- }
- ;
-
-acc_option:
- VIRTKEY
- {
- $$ = ACC_VIRTKEY;
- }
- | ASCII
- {
- /* This is just the absence of VIRTKEY. */
- $$ = 0;
- }
- | NOINVERT
- {
- $$ = ACC_NOINVERT;
- }
- | SHIFT
- {
- $$ = ACC_SHIFT;
- }
- | CONTROL
- {
- $$ = ACC_CONTROL;
- }
- | ALT
- {
- $$ = ACC_ALT;
- }
- ;
-
-/* Bitmap resources. */
-
-bitmap:
- id BITMAP memflags_move file_name
- {
- define_bitmap ($1, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Cursor resources. */
-
-cursor:
- id CURSOR memflags_move_discard file_name
- {
- define_cursor ($1, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Dialog resources. */
-
-dialog:
- id DIALOG memflags_move exstyle posnumexpr cnumexpr cnumexpr
- cnumexpr
- {
- memset (&dialog, 0, sizeof dialog);
- dialog.x = $5;
- dialog.y = $6;
- dialog.width = $7;
- dialog.height = $8;
- dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
- dialog.exstyle = $4;
- dialog.menu.named = 1;
- dialog.class.named = 1;
- dialog.font = NULL;
- dialog.ex = NULL;
- dialog.controls = NULL;
- sub_res_info = $3;
- style = 0;
- }
- styles BEG controls END
- {
- define_dialog ($1, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
- cnumexpr
- {
- memset (&dialog, 0, sizeof dialog);
- dialog.x = $5;
- dialog.y = $6;
- dialog.width = $7;
- dialog.height = $8;
- dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
- dialog.exstyle = $4;
- dialog.menu.named = 1;
- dialog.class.named = 1;
- dialog.font = NULL;
- dialog.ex = ((struct dialog_ex *)
- res_alloc (sizeof (struct dialog_ex)));
- memset (dialog.ex, 0, sizeof (struct dialog_ex));
- dialog.controls = NULL;
- sub_res_info = $3;
- style = 0;
- }
- styles BEG controls END
- {
- define_dialog ($1, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
- cnumexpr cnumexpr
- {
- memset (&dialog, 0, sizeof dialog);
- dialog.x = $5;
- dialog.y = $6;
- dialog.width = $7;
- dialog.height = $8;
- dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
- dialog.exstyle = $4;
- dialog.menu.named = 1;
- dialog.class.named = 1;
- dialog.font = NULL;
- dialog.ex = ((struct dialog_ex *)
- res_alloc (sizeof (struct dialog_ex)));
- memset (dialog.ex, 0, sizeof (struct dialog_ex));
- dialog.ex->help = $9;
- dialog.controls = NULL;
- sub_res_info = $3;
- style = 0;
- }
- styles BEG controls END
- {
- define_dialog ($1, &sub_res_info, &dialog);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-exstyle:
- /* empty */
- {
- $$ = 0;
- }
- | EXSTYLE '=' numexpr
- {
- $$ = $3;
- }
- ;
-
-styles:
- /* empty */
- | styles CAPTION QUOTEDSTRING
- {
- dialog.style |= WS_CAPTION;
- style |= WS_CAPTION;
- unicode_from_ascii ((int *) NULL, &dialog.caption, $3);
- }
- | styles CLASS id
- {
- dialog.class = $3;
- }
- | styles STYLE
- styleexpr
- {
- dialog.style = style;
- }
- | styles EXSTYLE numexpr
- {
- dialog.exstyle = $3;
- }
- | styles CLASS QUOTEDSTRING
- {
- res_string_to_id (& dialog.class, $3);
- }
- | styles FONT numexpr ',' QUOTEDSTRING
- {
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = $3;
- unicode_from_ascii ((int *) NULL, &dialog.font, $5);
- if (dialog.ex != NULL)
- {
- dialog.ex->weight = 0;
- dialog.ex->italic = 0;
- dialog.ex->charset = 1;
- }
- }
- | styles FONT numexpr ',' QUOTEDSTRING cnumexpr
- {
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = $3;
- unicode_from_ascii ((int *) NULL, &dialog.font, $5);
- if (dialog.ex == NULL)
- rcparse_warning (_("extended FONT requires DIALOGEX"));
- else
- {
- dialog.ex->weight = $6;
- dialog.ex->italic = 0;
- dialog.ex->charset = 1;
- }
- }
- | styles FONT numexpr ',' QUOTEDSTRING cnumexpr cnumexpr
- {
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = $3;
- unicode_from_ascii ((int *) NULL, &dialog.font, $5);
- if (dialog.ex == NULL)
- rcparse_warning (_("extended FONT requires DIALOGEX"));
- else
- {
- dialog.ex->weight = $6;
- dialog.ex->italic = $7;
- dialog.ex->charset = 1;
- }
- }
- | styles FONT numexpr ',' QUOTEDSTRING cnumexpr cnumexpr cnumexpr
- {
- dialog.style |= DS_SETFONT;
- style |= DS_SETFONT;
- dialog.pointsize = $3;
- unicode_from_ascii ((int *) NULL, &dialog.font, $5);
- if (dialog.ex == NULL)
- rcparse_warning (_("extended FONT requires DIALOGEX"));
- else
- {
- dialog.ex->weight = $6;
- dialog.ex->italic = $7;
- dialog.ex->charset = $8;
- }
- }
- | styles MENU id
- {
- dialog.menu = $3;
- }
- | styles CHARACTERISTICS numexpr
- {
- sub_res_info.characteristics = $3;
- }
- | styles LANGUAGE numexpr cnumexpr
- {
- sub_res_info.language = $3 | ($4 << SUBLANG_SHIFT);
- }
- | styles VERSIONK numexpr
- {
- sub_res_info.version = $3;
- }
- ;
-
-controls:
- /* empty */
- | controls control
- {
- struct dialog_control **pp;
-
- for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = $2;
- }
- ;
-
-control:
- AUTO3STATE
- {
- default_style = BS_AUTO3STATE | WS_TABSTOP;
- base_style = BS_AUTO3STATE;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | AUTOCHECKBOX
- {
- default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
- base_style = BS_AUTOCHECKBOX;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | AUTORADIOBUTTON
- {
- default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
- base_style = BS_AUTORADIOBUTTON;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | BEDIT
- {
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- control_params
- {
- $$ = $3;
- if (dialog.ex == NULL)
- rcparse_warning (_("BEDIT requires DIALOGEX"));
- res_string_to_id (&$$->class, "BEDIT");
- }
- | CHECKBOX
- {
- default_style = BS_CHECKBOX | WS_TABSTOP;
- base_style = BS_CHECKBOX | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | COMBOBOX
- {
- default_style = CBS_SIMPLE | WS_TABSTOP;
- base_style = 0;
- class = CTL_COMBOBOX;
- }
- control_params
- {
- $$ = $3;
- }
- | CONTROL optstringc numexpr cnumexpr control_styleexpr cnumexpr
- cnumexpr cnumexpr cnumexpr optcnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10);
- if ($11 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $11;
- }
- }
- | CONTROL optstringc numexpr cnumexpr control_styleexpr cnumexpr
- cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10);
- if (dialog.ex == NULL)
- rcparse_warning (_("help ID requires DIALOGEX"));
- $$->help = $11;
- $$->data = $12;
- }
- | CONTROL optstringc numexpr ',' QUOTEDSTRING control_styleexpr
- cnumexpr cnumexpr cnumexpr cnumexpr optcnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11);
- if ($12 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning ("control data requires DIALOGEX");
- $$->data = $12;
- }
- $$->class.named = 1;
- unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
- }
- | CONTROL optstringc numexpr ',' QUOTEDSTRING control_styleexpr
- cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11);
- if (dialog.ex == NULL)
- rcparse_warning ("help ID requires DIALOGEX");
- $$->help = $12;
- $$->data = $13;
- $$->class.named = 1;
- unicode_from_ascii (&$$->class.u.n.length, &$$->class.u.n.name, $5);
- }
- | CTEXT
- {
- default_style = SS_CENTER | WS_GROUP;
- base_style = SS_CENTER;
- class = CTL_STATIC;
- }
- control_params
- {
- $$ = $3;
- }
- | DEFPUSHBUTTON
- {
- default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
- base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | EDITTEXT
- {
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- control_params
- {
- $$ = $3;
- }
- | GROUPBOX
- {
- default_style = BS_GROUPBOX;
- base_style = BS_GROUPBOX;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | HEDIT
- {
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- control_params
- {
- $$ = $3;
- if (dialog.ex == NULL)
- rcparse_warning (_("IEDIT requires DIALOGEX"));
- res_string_to_id (&$$->class, "HEDIT");
- }
- | ICON resref numexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $6,
- dialog.ex);
- }
- | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- opt_control_data
- {
- $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $8,
- dialog.ex);
- }
- | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- icon_styleexpr optcnumexpr opt_control_data
- {
- $$ = define_icon_control ($2, $3, $4, $5, style, $9, 0, $10,
- dialog.ex);
- }
- | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- icon_styleexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
- dialog.ex);
- }
- | IEDIT
- {
- default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
- class = CTL_EDIT;
- }
- control_params
- {
- $$ = $3;
- if (dialog.ex == NULL)
- rcparse_warning (_("IEDIT requires DIALOGEX"));
- res_string_to_id (&$$->class, "IEDIT");
- }
- | LISTBOX
- {
- default_style = LBS_NOTIFY | WS_BORDER;
- base_style = LBS_NOTIFY | WS_BORDER;
- class = CTL_LISTBOX;
- }
- control_params
- {
- $$ = $3;
- }
- | LTEXT
- {
- default_style = SS_LEFT | WS_GROUP;
- base_style = SS_LEFT;
- class = CTL_STATIC;
- }
- control_params
- {
- $$ = $3;
- }
- | PUSHBOX
- {
- default_style = BS_PUSHBOX | WS_TABSTOP;
- base_style = BS_PUSHBOX;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | PUSHBUTTON
- {
- default_style = BS_PUSHBUTTON | WS_TABSTOP;
- base_style = BS_PUSHBUTTON | WS_TABSTOP;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | RADIOBUTTON
- {
- default_style = BS_RADIOBUTTON | WS_TABSTOP;
- base_style = BS_RADIOBUTTON;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | RTEXT
- {
- default_style = SS_RIGHT | WS_GROUP;
- base_style = SS_RIGHT;
- class = CTL_STATIC;
- }
- control_params
- {
- $$ = $3;
- }
- | SCROLLBAR
- {
- default_style = SBS_HORZ;
- base_style = 0;
- class = CTL_SCROLLBAR;
- }
- control_params
- {
- $$ = $3;
- }
- | STATE3
- {
- default_style = BS_3STATE | WS_TABSTOP;
- base_style = BS_3STATE;
- class = CTL_BUTTON;
- }
- control_params
- {
- $$ = $3;
- }
- | USERBUTTON QUOTEDSTRING ',' numexpr ',' numexpr ',' numexpr ','
- numexpr ',' numexpr ','
- { style = WS_CHILD | WS_VISIBLE; }
- styleexpr optcnumexpr
- {
- $$ = define_control ($2, $4, $6, $8, $10, $12, CTL_BUTTON,
- style, $16);
- }
- ;
-
-/* Parameters for a control. The static variables DEFAULT_STYLE,
- BASE_STYLE, and CLASS must be initialized before this nonterminal
- is used. DEFAULT_STYLE is the style to use if no style expression
- is specified. BASE_STYLE is the base style to use if a style
- expression is specified; the style expression modifies the base
- style. CLASS is the class of the control. */
-
-control_params:
- optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- opt_control_data
- {
- $$ = define_control ($1, $2, $3, $4, $5, $6, class,
- default_style | WS_CHILD | WS_VISIBLE, 0);
- if ($7 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $7;
- }
- }
- | optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- control_params_styleexpr optcnumexpr opt_control_data
- {
- $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8);
- if ($9 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $9;
- }
- }
- | optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
- control_params_styleexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8);
- if (dialog.ex == NULL)
- rcparse_warning (_("help ID requires DIALOGEX"));
- $$->help = $9;
- $$->data = $10;
- }
- ;
-
-optstringc:
- /* empty */
- {
- $$ = NULL;
- }
- | QUOTEDSTRING
- {
- $$ = $1;
- }
- | QUOTEDSTRING ','
- {
- $$ = $1;
- }
- ;
-
-opt_control_data:
- /* empty */
- {
- $$ = NULL;
- }
- | BEG optrcdata_data END
- {
- $$ = $2.first;
- }
- ;
-
-/* These only exist to parse a reduction out of a common case. */
-
-control_styleexpr:
- ','
- { style = WS_CHILD | WS_VISIBLE; }
- styleexpr
- ;
-
-icon_styleexpr:
- ','
- { style = SS_ICON | WS_CHILD | WS_VISIBLE; }
- styleexpr
- ;
-
-control_params_styleexpr:
- ','
- { style = base_style | WS_CHILD | WS_VISIBLE; }
- styleexpr
- ;
-
-/* Font resources. */
-
-font:
- id FONT memflags_move_discard file_name
- {
- define_font ($1, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Icon resources. */
-
-icon:
- id ICON memflags_move_discard file_name
- {
- define_icon ($1, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Language command. This changes the static variable language, which
- affects all subsequent resources. */
-
-language:
- LANGUAGE numexpr cnumexpr
- {
- language = $2 | ($3 << SUBLANG_SHIFT);
- }
- ;
-
-/* Menu resources. */
-
-menu:
- id MENU suboptions BEG menuitems END
- {
- define_menu ($1, &$3, $5);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-menuitems:
- /* empty */
- {
- $$ = NULL;
- }
- | menuitems menuitem
- {
- if ($1 == NULL)
- $$ = $2;
- else
- {
- struct menuitem **pp;
-
- for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = $2;
- $$ = $1;
- }
- }
- ;
-
-menuitem:
- MENUITEM QUOTEDSTRING cnumexpr menuitem_flags
- {
- $$ = define_menuitem ($2, $3, $4, 0, 0, NULL);
- }
- | MENUITEM SEPARATOR
- {
- $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL);
- }
- | POPUP QUOTEDSTRING menuitem_flags BEG menuitems END
- {
- $$ = define_menuitem ($2, 0, $3, 0, 0, $5);
- }
- ;
-
-menuitem_flags:
- /* empty */
- {
- $$ = 0;
- }
- | menuitem_flags ',' menuitem_flag
- {
- $$ = $1 | $3;
- }
- | menuitem_flags menuitem_flag
- {
- $$ = $1 | $2;
- }
- ;
-
-menuitem_flag:
- CHECKED
- {
- $$ = MENUITEM_CHECKED;
- }
- | GRAYED
- {
- $$ = MENUITEM_GRAYED;
- }
- | HELP
- {
- $$ = MENUITEM_HELP;
- }
- | INACTIVE
- {
- $$ = MENUITEM_INACTIVE;
- }
- | MENUBARBREAK
- {
- $$ = MENUITEM_MENUBARBREAK;
- }
- | MENUBREAK
- {
- $$ = MENUITEM_MENUBREAK;
- }
- ;
-
-/* Menuex resources. */
-
-menuex:
- id MENUEX suboptions BEG menuexitems END
- {
- define_menu ($1, &$3, $5);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-menuexitems:
- /* empty */
- {
- $$ = NULL;
- }
- | menuexitems menuexitem
- {
- if ($1 == NULL)
- $$ = $2;
- else
- {
- struct menuitem **pp;
-
- for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
- ;
- *pp = $2;
- $$ = $1;
- }
- }
- ;
-
-menuexitem:
- MENUITEM QUOTEDSTRING
- {
- $$ = define_menuitem ($2, 0, 0, 0, 0, NULL);
- }
- | MENUITEM QUOTEDSTRING cnumexpr
- {
- $$ = define_menuitem ($2, $3, 0, 0, 0, NULL);
- }
- | MENUITEM QUOTEDSTRING cnumexpr cnumexpr optcnumexpr
- {
- $$ = define_menuitem ($2, $3, $4, $5, 0, NULL);
- }
- | MENUITEM SEPARATOR
- {
- $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL);
- }
- | POPUP QUOTEDSTRING BEG menuexitems END
- {
- $$ = define_menuitem ($2, 0, 0, 0, 0, $4);
- }
- | POPUP QUOTEDSTRING cnumexpr BEG menuexitems END
- {
- $$ = define_menuitem ($2, $3, 0, 0, 0, $5);
- }
- | POPUP QUOTEDSTRING cnumexpr cnumexpr BEG menuexitems END
- {
- $$ = define_menuitem ($2, $3, $4, 0, 0, $6);
- }
- | POPUP QUOTEDSTRING cnumexpr cnumexpr cnumexpr optcnumexpr
- BEG menuexitems END
- {
- $$ = define_menuitem ($2, $3, $4, $5, $6, $8);
- }
- ;
-
-/* Messagetable resources. */
-
-messagetable:
- id MESSAGETABLE memflags_move file_name
- {
- define_messagetable ($1, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Rcdata resources. */
-
-rcdata:
- id RCDATA suboptions BEG optrcdata_data END
- {
- define_rcdata ($1, &$3, $5.first);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* We use a different lexing algorithm, because rcdata strings may
- contain embedded null bytes, and we need to know the length to use. */
-
-optrcdata_data:
- {
- rcparse_rcdata ();
- }
- optrcdata_data_int
- {
- rcparse_normal ();
- $$ = $2;
- }
- ;
-
-optrcdata_data_int:
- /* empty */
- {
- $$.first = NULL;
- $$.last = NULL;
- }
- | rcdata_data
- {
- $$ = $1;
- }
- ;
-
-rcdata_data:
- SIZEDSTRING
- {
- struct rcdata_item *ri;
-
- ri = define_rcdata_string ($1.s, $1.length);
- $$.first = ri;
- $$.last = ri;
- }
- | sizednumexpr
- {
- struct rcdata_item *ri;
-
- ri = define_rcdata_number ($1.val, $1.dword);
- $$.first = ri;
- $$.last = ri;
- }
- | rcdata_data ',' SIZEDSTRING
- {
- struct rcdata_item *ri;
-
- ri = define_rcdata_string ($3.s, $3.length);
- $$.first = $1.first;
- $1.last->next = ri;
- $$.last = ri;
- }
- | rcdata_data ',' sizednumexpr
- {
- struct rcdata_item *ri;
-
- ri = define_rcdata_number ($3.val, $3.dword);
- $$.first = $1.first;
- $1.last->next = ri;
- $$.last = ri;
- }
- ;
-
-/* Stringtable resources. */
-
-stringtable:
- STRINGTABLE suboptions BEG
- { sub_res_info = $2; }
- string_data END
- ;
-
-string_data:
- /* empty */
- | string_data numexpr QUOTEDSTRING
- {
- define_stringtable (&sub_res_info, $2, $3);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- | string_data numexpr ',' QUOTEDSTRING
- {
- define_stringtable (&sub_res_info, $2, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* User defined resources. We accept general suboptions in the
- file_name case to keep the parser happy. */
-
-user:
- id id suboptions BEG optrcdata_data END
- {
- define_user_data ($1, $2, &$3, $5.first);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- | id id suboptions file_name
- {
- define_user_file ($1, $2, &$3, $4);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-/* Versioninfo resources. */
-
-versioninfo:
- id VERSIONINFO fixedverinfo BEG verblocks END
- {
- define_versioninfo ($1, language, $3, $5);
- if (yychar != YYEMPTY)
- YYERROR;
- rcparse_discard_strings ();
- }
- ;
-
-fixedverinfo:
- /* empty */
- {
- $$ = ((struct fixed_versioninfo *)
- res_alloc (sizeof (struct fixed_versioninfo)));
- memset ($$, 0, sizeof (struct fixed_versioninfo));
- }
- | fixedverinfo FILEVERSION numexpr cnumexpr cnumexpr cnumexpr
- {
- $1->file_version_ms = ($3 << 16) | $4;
- $1->file_version_ls = ($5 << 16) | $6;
- $$ = $1;
- }
- | fixedverinfo PRODUCTVERSION numexpr cnumexpr cnumexpr cnumexpr
- {
- $1->product_version_ms = ($3 << 16) | $4;
- $1->product_version_ls = ($5 << 16) | $6;
- $$ = $1;
- }
- | fixedverinfo FILEFLAGSMASK numexpr
- {
- $1->file_flags_mask = $3;
- $$ = $1;
- }
- | fixedverinfo FILEFLAGS numexpr
- {
- $1->file_flags = $3;
- $$ = $1;
- }
- | fixedverinfo FILEOS numexpr
- {
- $1->file_os = $3;
- $$ = $1;
- }
- | fixedverinfo FILETYPE numexpr
- {
- $1->file_type = $3;
- $$ = $1;
- }
- | fixedverinfo FILESUBTYPE numexpr
- {
- $1->file_subtype = $3;
- $$ = $1;
- }
- ;
-
-/* To handle verblocks successfully, the lexer handles BLOCK
- specially. A BLOCK "StringFileInfo" is returned as
- BLOCKSTRINGFILEINFO. A BLOCK "VarFileInfo" is returned as
- BLOCKVARFILEINFO. A BLOCK with some other string returns BLOCK
- with the string as the value. */
-
-verblocks:
- /* empty */
- {
- $$ = NULL;
- }
- | verblocks BLOCKSTRINGFILEINFO BEG BLOCK BEG vervals END END
- {
- $$ = append_ver_stringfileinfo ($1, $4, $6);
- }
- | verblocks BLOCKVARFILEINFO BEG VALUE QUOTEDSTRING vertrans END
- {
- $$ = append_ver_varfileinfo ($1, $5, $6);
- }
- ;
-
-vervals:
- /* empty */
- {
- $$ = NULL;
- }
- | vervals VALUE QUOTEDSTRING ',' QUOTEDSTRING
- {
- $$ = append_verval ($1, $3, $5);
- }
- ;
-
-vertrans:
- /* empty */
- {
- $$ = NULL;
- }
- | vertrans cnumexpr cnumexpr
- {
- $$ = append_vertrans ($1, $2, $3);
- }
- ;
-
-/* A resource ID. */
-
-id:
- posnumexpr
- {
- $$.named = 0;
- $$.u.id = $1;
- }
- | STRING
- {
- char *copy, *s;
-
- /* It seems that resource ID's are forced to upper case. */
- copy = xstrdup ($1);
- for (s = copy; *s != '\0'; s++)
- *s = TOUPPER (*s);
- res_string_to_id (&$$, copy);
- free (copy);
- }
- ;
-
-/* A resource reference. */
-
-resname:
- QUOTEDSTRING
- {
- $$ = $1;
- }
- | QUOTEDSTRING ','
- {
- $$ = $1;
- }
- | STRING ','
- {
- $$ = $1;
- }
- ;
-
-
-resref:
- posnumexpr ','
- {
- $$.named = 0;
- $$.u.id = $1;
- }
- | resname
- {
- char *copy, *s;
-
- /* It seems that resource ID's are forced to upper case. */
- copy = xstrdup ($1);
- for (s = copy; *s != '\0'; s++)
- *s = TOUPPER (*s);
- res_string_to_id (&$$, copy);
- free (copy);
- }
- ;
-
-/* Generic suboptions. These may appear before the BEGIN in any
- multiline statement. */
-
-suboptions:
- /* empty */
- {
- memset (&$$, 0, sizeof (struct res_res_info));
- $$.language = language;
- /* FIXME: Is this the right default? */
- $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
- }
- | suboptions memflag
- {
- $$ = $1;
- $$.memflags |= $2.on;
- $$.memflags &=~ $2.off;
- }
- | suboptions CHARACTERISTICS numexpr
- {
- $$ = $1;
- $$.characteristics = $3;
- }
- | suboptions LANGUAGE numexpr cnumexpr
- {
- $$ = $1;
- $$.language = $3 | ($4 << SUBLANG_SHIFT);
- }
- | suboptions VERSIONK numexpr
- {
- $$ = $1;
- $$.version = $3;
- }
- ;
-
-/* Memory flags which default to MOVEABLE and DISCARDABLE. */
-
-memflags_move_discard:
- /* empty */
- {
- memset (&$$, 0, sizeof (struct res_res_info));
- $$.language = language;
- $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
- }
- | memflags_move_discard memflag
- {
- $$ = $1;
- $$.memflags |= $2.on;
- $$.memflags &=~ $2.off;
- }
- ;
-
-/* Memory flags which default to MOVEABLE. */
-
-memflags_move:
- /* empty */
- {
- memset (&$$, 0, sizeof (struct res_res_info));
- $$.language = language;
- $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
- }
- | memflags_move memflag
- {
- $$ = $1;
- $$.memflags |= $2.on;
- $$.memflags &=~ $2.off;
- }
- ;
-
-/* Memory flags. This returns a struct with two integers, because we
- sometimes want to set bits and we sometimes want to clear them. */
-
-memflag:
- MOVEABLE
- {
- $$.on = MEMFLAG_MOVEABLE;
- $$.off = 0;
- }
- | FIXED
- {
- $$.on = 0;
- $$.off = MEMFLAG_MOVEABLE;
- }
- | PURE
- {
- $$.on = MEMFLAG_PURE;
- $$.off = 0;
- }
- | IMPURE
- {
- $$.on = 0;
- $$.off = MEMFLAG_PURE;
- }
- | PRELOAD
- {
- $$.on = MEMFLAG_PRELOAD;
- $$.off = 0;
- }
- | LOADONCALL
- {
- $$.on = 0;
- $$.off = MEMFLAG_PRELOAD;
- }
- | DISCARDABLE
- {
- $$.on = MEMFLAG_DISCARDABLE;
- $$.off = 0;
- }
- ;
-
-/* A file name. */
-
-file_name:
- QUOTEDSTRING
- {
- $$ = $1;
- }
- | STRING
- {
- $$ = $1;
- }
- ;
-
-/* A style expression. This changes the static variable STYLE. We do
- it this way because rc appears to permit a style to be set to
- something like
- WS_GROUP | NOT WS_TABSTOP
- to mean that a default of WS_TABSTOP should be removed. Anything
- which wants to accept a style must first set STYLE to the default
- value. The styleexpr nonterminal will change STYLE as specified by
- the user. Note that we do not accept arbitrary expressions here,
- just numbers separated by '|'. */
-
-styleexpr:
- parennumber
- {
- style |= $1;
- }
- | NOT parennumber
- {
- style &=~ $2;
- }
- | styleexpr '|' parennumber
- {
- style |= $3;
- }
- | styleexpr '|' NOT parennumber
- {
- style &=~ $4;
- }
- ;
-
-parennumber:
- NUMBER
- {
- $$ = $1.val;
- }
- | '(' numexpr ')'
- {
- $$ = $2;
- }
- ;
-
-/* An optional expression with a leading comma. */
-
-optcnumexpr:
- /* empty */
- {
- $$ = 0;
- }
- | cnumexpr
- {
- $$ = $1;
- }
- ;
-
-/* An expression with a leading comma. */
-
-cnumexpr:
- ',' numexpr
- {
- $$ = $2;
- }
- ;
-
-/* A possibly negated numeric expression. */
-
-numexpr:
- sizednumexpr
- {
- $$ = $1.val;
- }
- ;
-
-/* A possibly negated expression with a size. */
-
-sizednumexpr:
- NUMBER
- {
- $$ = $1;
- }
- | '(' sizednumexpr ')'
- {
- $$ = $2;
- }
- | '~' sizednumexpr %prec '~'
- {
- $$.val = ~ $2.val;
- $$.dword = $2.dword;
- }
- | '-' sizednumexpr %prec NEG
- {
- $$.val = - $2.val;
- $$.dword = $2.dword;
- }
- | sizednumexpr '*' sizednumexpr
- {
- $$.val = $1.val * $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '/' sizednumexpr
- {
- $$.val = $1.val / $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '%' sizednumexpr
- {
- $$.val = $1.val % $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '+' sizednumexpr
- {
- $$.val = $1.val + $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '-' sizednumexpr
- {
- $$.val = $1.val - $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '&' sizednumexpr
- {
- $$.val = $1.val & $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '^' sizednumexpr
- {
- $$.val = $1.val ^ $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizednumexpr '|' sizednumexpr
- {
- $$.val = $1.val | $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- ;
-
-/* An expression with a leading comma which does not use unary
- negation. */
-
-cposnumexpr:
- ',' posnumexpr
- {
- $$ = $2;
- }
- ;
-
-/* An expression which does not use unary negation. */
-
-posnumexpr:
- sizedposnumexpr
- {
- $$ = $1.val;
- }
- ;
-
-/* An expression which does not use unary negation. We separate unary
- negation to avoid parsing conflicts when two numeric expressions
- appear consecutively. */
-
-sizedposnumexpr:
- NUMBER
- {
- $$ = $1;
- }
- | '(' sizednumexpr ')'
- {
- $$ = $2;
- }
- | '~' sizednumexpr %prec '~'
- {
- $$.val = ~ $2.val;
- $$.dword = $2.dword;
- }
- | sizedposnumexpr '*' sizednumexpr
- {
- $$.val = $1.val * $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '/' sizednumexpr
- {
- $$.val = $1.val / $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '%' sizednumexpr
- {
- $$.val = $1.val % $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '+' sizednumexpr
- {
- $$.val = $1.val + $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '-' sizednumexpr
- {
- $$.val = $1.val - $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '&' sizednumexpr
- {
- $$.val = $1.val & $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '^' sizednumexpr
- {
- $$.val = $1.val ^ $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- | sizedposnumexpr '|' sizednumexpr
- {
- $$.val = $1.val | $3.val;
- $$.dword = $1.dword || $3.dword;
- }
- ;
-
-%%
-
-/* Set the language from the command line. */
-
-void
-rcparse_set_language (lang)
- int lang;
-{
- language = lang;
-}
diff --git a/contrib/binutils/binutils/readelf.1 b/contrib/binutils/binutils/readelf.1
deleted file mode 100644
index bcef9862babb..000000000000
--- a/contrib/binutils/binutils/readelf.1
+++ /dev/null
@@ -1,291 +0,0 @@
-.\" Automatically generated by Pod::Man version 1.02
-.\" Wed May 30 12:24:29 2001
-.\"
-.\" Standard preamble:
-.\" ======================================================================
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.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. | will give a
-.\" real vertical bar. \*(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-|\(bv\*(Tr
-.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" ''
-'br\}
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr
-.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
-.\" index entries marked with X<> in POD. Of course, you'll have to process
-.\" the output yourself in some meaningful fashion.
-.if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-. .
-. nr % 0
-. rr F
-.\}
-.\"
-.\" For nroff, turn off justification. Always turn off hyphenation; it
-.\" makes way too many mistakes in technical documents.
-.hy 0
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-.bd B 3
-. \" 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 1"
-.TH READELF.1 1 "binutils-2.11.90" "2001-05-30" "GNU"
-.UC
-.SH "NAME"
-readelf \- Displays information about \s-1ELF\s0 files.
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-readelf [ \-a | \-\-all ]
- [ \-h | \-\-file-header]
- [ \-l | \-\-program-headers | \-\-segments]
- [ \-S | \-\-section-headers | \-\-sections]
- [ \-e | \-\-headers]
- [ \-s | \-\-syms | \-\-symbols]
- [ \-n | \-\-notes]
- [ \-r | \-\-relocs]
- [ \-u | \-\-unwind]
- [ \-d | \-\-dynamic]
- [ \-V | \-\-version-info]
- [ \-D | \-\-use-dynamic]
- [ \-x <number> | \-\-hex-dump=<number>]
- [ \-w[liaprf] | \-\-debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
- [ \-\-histogram]
- [ \-v | \-\-version]
- [ \-H | \-\-help]
- \fIelffile\fR...
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\f(CW\*(C`readelf\*(C'\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. At the
-moment, \f(CW\*(C`readelf\*(C'\fR does not support examining archives, nor does it
-support examing 64 bit \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 option besides \fB\-v\fR or \fB\-H\fR must be
-given.
-.Ip "\f(CW\*(C`\-a\*(C'\fR" 4
-.IX Item "-a"
-.Ip "\f(CW\*(C`\-\-all\*(C'\fR" 4
-.IX Item "--all"
-Equivalent to specifiying \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 "\f(CW\*(C`\-h\*(C'\fR" 4
-.IX Item "-h"
-.Ip "\f(CW\*(C`\-\-file\-header\*(C'\fR" 4
-.IX Item "--file-header"
-Displays the information contained in the \s-1ELF\s0 header at the start of the
-file.
-.Ip "\f(CW\*(C`\-l\*(C'\fR" 4
-.IX Item "-l"
-.Ip "\f(CW\*(C`\-\-program\-headers\*(C'\fR" 4
-.IX Item "--program-headers"
-.Ip "\f(CW\*(C`\-\-segments\*(C'\fR" 4
-.IX Item "--segments"
-Displays the information contained in the file's segment headers, if it
-has any.
-.Ip "\f(CW\*(C`\-S\*(C'\fR" 4
-.IX Item "-S"
-.Ip "\f(CW\*(C`\-\-sections\*(C'\fR" 4
-.IX Item "--sections"
-.Ip "\f(CW\*(C`\-\-section\-headers\*(C'\fR" 4
-.IX Item "--section-headers"
-Displays the information contained in the file's section headers, if it
-has any.
-.Ip "\f(CW\*(C`\-s\*(C'\fR" 4
-.IX Item "-s"
-.Ip "\f(CW\*(C`\-\-symbols\*(C'\fR" 4
-.IX Item "--symbols"
-.Ip "\f(CW\*(C`\-\-syms\*(C'\fR" 4
-.IX Item "--syms"
-Displays the entries in symbol table section of the file, if it has one.
-.Ip "\f(CW\*(C`\-e\*(C'\fR" 4
-.IX Item "-e"
-.Ip "\f(CW\*(C`\-\-headers\*(C'\fR" 4
-.IX Item "--headers"
-Display all the headers in the file. Equivalent to \fB\-h \-l \-S\fR.
-.Ip "\f(CW\*(C`\-n\*(C'\fR" 4
-.IX Item "-n"
-.Ip "\f(CW\*(C`\-\-notes\*(C'\fR" 4
-.IX Item "--notes"
-Displays the contents of the \s-1NOTE\s0 segment, if it exists.
-.Ip "\f(CW\*(C`\-r\*(C'\fR" 4
-.IX Item "-r"
-.Ip "\f(CW\*(C`\-\-relocs\*(C'\fR" 4
-.IX Item "--relocs"
-Displays the contents of the file's relocation section, if it has one.
-.Ip "\f(CW\*(C`\-u\*(C'\fR" 4
-.IX Item "-u"
-.Ip "\f(CW\*(C`\-\-unwind\*(C'\fR" 4
-.IX Item "--unwind"
-Displays the contents of the file's unwind section, if it has one. Only
-the unwind sections for \s-1IA64\s0 \s-1ELF\s0 files are currently supported.
-.Ip "\f(CW\*(C`\-d\*(C'\fR" 4
-.IX Item "-d"
-.Ip "\f(CW\*(C`\-\-dynamic\*(C'\fR" 4
-.IX Item "--dynamic"
-Displays the contents of the file's dynamic section, if it has one.
-.Ip "\f(CW\*(C`\-V\*(C'\fR" 4
-.IX Item "-V"
-.Ip "\f(CW\*(C`\-\-version\-info\*(C'\fR" 4
-.IX Item "--version-info"
-Displays the contents of the version sections in the file, it they
-exist.
-.Ip "\f(CW\*(C`\-D\*(C'\fR" 4
-.IX Item "-D"
-.Ip "\f(CW\*(C`\-\-use\-dynamic\*(C'\fR" 4
-.IX Item "--use-dynamic"
-When displaying symbols, this option makes \f(CW\*(C`readelf\*(C'\fR use the
-symbol table in the file's dynamic section, rather than the one in the
-symbols section.
-.Ip "\f(CW\*(C`\-x <number>\*(C'\fR" 4
-.IX Item "-x <number>"
-.Ip "\f(CW\*(C`\-\-hex\-dump=<number>\*(C'\fR" 4
-.IX Item "--hex-dump=<number>"
-Displays the contents of the indicated section as a hexadecimal dump.
-.Ip "\f(CW\*(C`\-w[liaprf]\*(C'\fR" 4
-.IX Item "-w[liaprf]"
-.Ip "\f(CW\*(C`\-\-debug\-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\*(C'\fR" 4
-.IX Item "--debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]"
-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.
-.Ip "\f(CW\*(C`\-\-histogram\*(C'\fR" 4
-.IX Item "--histogram"
-Display a histogram of bucket list lengths when displaying the contents
-of the symbol tables.
-.Ip "\f(CW\*(C`\-v\*(C'\fR" 4
-.IX Item "-v"
-.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
-.IX Item "--version"
-Display the version number of readelf.
-.Ip "\f(CW\*(C`\-H\*(C'\fR" 4
-.IX Item "-H"
-.Ip "\f(CW\*(C`\-\-help\*(C'\fR" 4
-.IX Item "--help"
-Display the command line options understood by \f(CW\*(C`readelf\*(C'\fR.
-.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, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 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.1
-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/contrib/binutils/binutils/size.1 b/contrib/binutils/binutils/size.1
deleted file mode 100644
index 7f8f9ef4e63b..000000000000
--- a/contrib/binutils/binutils/size.1
+++ /dev/null
@@ -1,518 +0,0 @@
-.\" Copyright (c) 1991, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH size 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-size \- list section sizes and total size.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B size
-.RB "[\|" \-A \||\| \-B \||\| \c
-.BI "\-\-format=" compatibility\c
-\&\|]
-.RB "[\|" \-\-help "\|]"
-.RB "[\|" \-d \||\| \-o \||\| \-x\c
-\||\|\c
-.BI "\-\-radix=" number\c
-\&\|]
-.RB "[\|" \c
-.BI "\-\-target=" bfdname\c
-\&\|]
-.RB "[\|" \-V \||\| \-\-version "\|]"
-.I objfile\c
-\&.\|.\|.
-.ad b
-.hy 1
-.SH DESCRIPTION
-The GNU \c
-.B size\c
-\& utility lists the section sizes\(em\&and the total
-size\(em\&for each of the object files
-.I objfile
-in its argument list.
-By default, one line of output is generated for each object file or each
-module in an archive.
-
-.SH OPTIONS
-.TP
-.B \-A
-.TP
-.B \-B
-.TP
-.BI "\-\-format " "compatibility"
-Using one of these options, you can choose whether the output from GNU
-\c
-.B size\c
-\& resembles output from System V \c
-.B size\c
-\& (using `\|\c
-.B \-A\c
-\|',
-or `\|\c
-.B \-\-format=sysv\c
-\|'), or Berkeley \c
-.B size\c
-\& (using `\|\c
-.B \-B\c
-\|', or
-`\|\c
-.B \-\-format=berkeley\c
-\|'). The default is the one-line format similar to
-Berkeley's.
-
-.TP
-.B \-\-help
-Show a summary of acceptable arguments and options.
-
-.TP
-.B \-d
-.TP
-.B \-o
-.TP
-.B \-x
-.TP
-.BI "\-\-radix " "number"
-Using one of these options, you can control whether the size of each
-section is given in decimal (`\|\c
-.B \-d\c
-\|', or `\|\c
-.B \-\-radix 10\c
-\|'); octal
-(`\|\c
-.B \-o\c
-\|', or `\|\c
-.B \-\-radix 8\c
-\|'); or hexadecimal (`\|\c
-.B \-x\c
-\|', or
-`\|\c
-.B \-\-radix 16\c
-\|'). In `\|\c
-.B \-\-radix \c
-.I number\c
-\&\c
-\|', only the three
-values (8, 10, 16) are supported. The total size is always given in two
-radices; decimal and hexadecimal for `\|\c
-.B \-d\c
-\|' or `\|\c
-.B \-x\c
-\|' output, or
-octal and hexadecimal if you're using `\|\c
-.B \-o\c
-\|'.
-
-.TP
-.BI "\-\-target " "bfdname"
-You can specify a particular object-code format for \c
-.I objfile\c
-\& as
-\c
-.I bfdname\c
-\&. This may not be necessary; \c
-.I size\c
-\& can
-automatically recognize many formats. See
-.BR objdump ( 1 )
-for information
-on listing available formats.
-
-.TP
-.B \-V
-.TP
-.B \-\-version
-Display version number information on \c
-.B size\c
-\& itself.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.BR info ;
-.IR "The GNU Binary Utilities" ,
- Roland H. Pesch (October 1991);
-.BR ar "(" 1 "),"
-.BR objdump ( 1 ).
-
-.SH COPYING
-Copyright (c) 1991, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/strings.1 b/contrib/binutils/binutils/strings.1
deleted file mode 100644
index 6cbf041a4cd1..000000000000
--- a/contrib/binutils/binutils/strings.1
+++ /dev/null
@@ -1,508 +0,0 @@
-.\" Copyright (c) 1993, 94, 95, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH strings 1 "09 March 2000" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-strings \- print the strings of printable characters in files
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B strings
-.RB "[\|" \-a | \-\c
-.RB | \-\-all "\|]"
-.RB "[\|" \-f | \-\-print\-file\-name "\|]"
-.RB "[\|" \-o "\|]"
-.RB "[\|" \-\-help "\|]"
-.RB "[\|" \-v | \-\-version "\|]"
-.RB "[\|" \-n
-.I min\-len\c
-.RI | \-min\-len\c
-.RB | "\-\-bytes="\c
-.I min\-len\c
-\&\|]
-.RB "[\|" \-t
-.I {o,x,d}\c
-.RB "[\|" "\-\-target=\fIbfdname" "\|]"
-.RB | "\-\-radix="\c
-.I {o,x,d}\c
-\&\|]
-.I file\c
-.ad b
-.hy 1
-.SH DESCRIPTION
-For each
-.I file
-given, GNU \c
-.B 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. By default, it only prints the
-strings from the initialized and loaded sections of object files; for
-other types of files, it prints the strings from the whole file.
-
-.PP
-.B strings
-is mainly useful for determining the contents of non-text files.
-
-.SH OPTIONS
-The long and short forms of options, shown here as alternatives, are
-equivalent.
-
-.TP
-.B \-a
-.TP
-.B \-\-all
-.TP
-.B \-
-Do not scan only the initialized and loaded sections of object files;
-scan the whole files.
-
-.TP
-.B \-f
-.TP
-.B \-\-print\-file\-name
-Print the name of the file before each string.
-
-.TP
-.B \-\-help
-Print a summary of the options to
-.B strings
-on the standard output and exit.
-
-.TP
-.B \-v
-.TP
-.B \-\-version
-Print the version number
-of
-.B strings
-on the standard output and exit.
-
-.TP
-.B "\-n \fImin\-len\fP"
-.TP
-.B "\-\fImin\-len\fP"
-.TP
-.B "\-\-bytes=\fImin\-len\fP"
-Print sequences of characters that are at least
-.I min\-len
-characters long, instead of the default 4.
-
-.TP
-.BR "\-t " {o,x,d}
-.TP
-.BR "\-\-radix=" {o,x,d}
-Print the offset within the file before each string. The single
-character argument specifies the radix of the offset\(emoctal,
-hexadecimal, or decimal.
-
-.TP
-.BI "\-\-target=" "bfdname"
-Specify an object code format other than your system's default format.
-See
-.BR objdump ( 1 ),
-for information on listing available formats.
-
-.TP
-.B \-o
-Like
-.BR "\-t o" .
-
-.PP
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.B
-info\c
-\&;
-.I
-The GNU Binary Utilities\c
-\&, Roland H. Pesch (October 1991);
-.BR ar ( 1 ),
-.BR nm ( 1 ),
-.BR objdump ( 1 ),
-.BR ranlib ( 1 ).
-
-
-.SH COPYING
-Copyright (c) 1993, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/strip.1 b/contrib/binutils/binutils/strip.1
deleted file mode 100644
index 83c3fe603056..000000000000
--- a/contrib/binutils/binutils/strip.1
+++ /dev/null
@@ -1,542 +0,0 @@
-.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation
-.\" See section COPYING for conditions for redistribution
-.TH strip 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-strip \- Discard symbols from object files.
-
-.SH SYNOPSIS
-.hy 0
-.na
-.B strip
-.RB "[\|" \-F\ \fIbfdname\fR\ |\ \fB\-\-target=\fIbfdname\fP "\|]"
-.RB "[\|" \-I\ \fIbfdname\fR\ |\ \fB\-\-input\-target=\fIbfdname\fP "\|]"
-.RB "[\|" \-O\ \fIbfdname\fR\ |\ \fB\-\-output\-target=\fIbfdname\fP "\|]"
-.RB "[\|" \-R\ \fIsectionname\fR\ |\ \fB\-\-remove\-section=\fIsectionname\fP "\|]"
-.RB "[\|" \-s\fR\ |\ \fB\-\-strip\-all "\|]"
-.RB "[\|" \-S\fR\ |\ \fB\-g\fR\ |\ \fB\-\-strip\-debug "\|]"
-.RB "[\|" \-\-strip\-unneeded\fR "\|]"
-.RB "[\|" \-x\fR\ |\ \fB\-\-discard\-all "\|]"
-.RB "[\|" \-X\fR\ |\ \fB\-\-discard\-locals "\|]"
-.RB "[\|" \-K\ \fIsymbolname\fR\ |\ \fB\-\-keep\-symbol=\fIsymbolname\fR "\|]"
-.RB "[\|" \-N\ \fIsymbolname\fR\ |\ \fB\-\-strip\-symbol=\fIsymbolname\fR "\|]"
-.RB "[\|" \-o\ \fIfile\fR "\|]"
-.RB "[\|" \-p\fR\ |\ \fB\-\-preserve\-dates "\|]"
-.RB "[\|" \-v\fR\ |\ \fB\-\-verbose "\|]"
-.RB "[\|" \-V\fR\ |\ \fB\-\-version "\|]"
-.RB "[\|" \-V\fR\ |\ \fB\-\-help "\|]"
-.I objfile\c
-\&.\|.\|.
-
-.SH DESCRIPTION
-GNU
-.B strip
-discards all symbols from the object files
-.IR objfile .
-The list of object files may include archives.
-At least one object file must be given.
-
-.P
-.B strip
-modifies the files named in its argument,
-rather than writing modified copies under different names.
-
-.SH OPTIONS
-.TP
-.B "\-F \fIbfdname"
-.TP
-.B "\-\-target=\fIbfdname"
-Treat the original \fIobjfile\fP as a file with the object
-code format \fIbfdname\fP, and rewrite it in the same format.
-
-.TP
-.B \-\-help
-Show a summary of the options to
-.B strip
-and exit.
-
-.TP
-.B "\-I \fIbfdname
-.TP
-.B "\-\-input\-target=\fIbfdname"
-Treat the original \fIobjfile\fP as a file with the object
-code format \fIbfdname\fP.
-
-.TP
-.B "\-O \fIbfdname\fP"
-.TP
-.B "\-\-output\-target=\fIbfdname"
-Replace \fIobjfile\fP with a file in the output format \fIbfdname\fP.
-
-.TP
-.B "\-R \fIsectionname\fP"
-.TP
-.B "\-\-remove\-section=\fIsectionname"
-Remove the named section from the file. This option may be given more
-than once. Note that using this option inappropriately may make the
-object file unusable.
-
-.TP
-.B \-s
-.TP
-.B \-\-strip\-all
-Remove all symbols.
-
-.TP
-.B \-S
-.TP
-.B \-g
-.TP
-.B \-\-strip\-debug
-Remove debugging symbols only.
-
-.TP
-.B \-\-strip\-unneeded
-Strip all symbols that are not needed for relocation processing.
-
-.TP
-.B \-N \fIsymbolname\fR
-.TP
-.B \-\-strip\-symbol=\fIsymbolname
-Remove symbol \fIsymbolname\fP from the source file. This option
-may be given more than once, and may be combined with other strip
-options.
-
-.TP
-.B \-o \fIfile\fR
-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.
-
-.TP
-.B \-p
-.TP
-.B \-\-preserve-dates
-Preserve the access and modification dates of the file.
-
-.TP
-.B \-x
-.TP
-.B \-\-discard\-all
-Remove non-global symbols.
-
-.TP
-.B \-X
-.TP
-.B \-\-discard\-locals
-Remove compiler-generated local symbols.
-(These usually start with ``L'' or ``.''.)
-
-.TP
-.B \-K \fIsymbolname\fR, \fB\-\-keep\-symbol=\fIsymbolname
-Copy only symbol \fIsymbolname\fP from the source file. This option
-may be given more than once.
-
-.TP
-.B \-N \fIsymbolname\fR, \fB\-\-strip\-symbol=\fIsymbolname
-Do not copy symbol \fIsymbolname\fP from the source file. This option
-may be given more than once, and may be combined with strip options
-other than \fB\-K\fR.
-
-.TP
-.B \-v
-.TP
-.B \-\-verbose
-Verbose output: list all object files modified. In the case of
-archives,
-.B "strip \-v"
-lists all members of the archive.
-
-.TP
-.B \-V
-.TP
-.B \-\-version
-Show the version number for \fBstrip\fP and exit.
-
-.SH "SEE ALSO"
-.RB "`\|" binutils "\|'"
-entry in
-.BR info ;
-.IR "The GNU Binary Utilities" ,
-Roland H. Pesch (October 1991).
-
-.SH COPYING
-Copyright (c) 1991, 2000 Free Software Foundation, Inc.
-.PP
-This document is distributed under the terms of the GNU Free
-Documentation License, version 1.1. That license is described in the
-sources for this manual page, but it is not displayed here in order to
-make this manual more consise. Copies of this license can also be
-obtained from: http://www.gnu.org/copyleft/.
-
-\" .SH GNU Free Documentation License
-\" Version 1.1, March 2000
-
-\" Copyright (C) 2000 Free Software Foundation, Inc.
-\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-\" Everyone is permitted to copy and distribute verbatim
-\" copies of this license document, but changing it is
-\" not allowed.
-\" .PP
-\" 0. PREAMBLE
-\" .PP
-\" The purpose of this License is to make a manual, textbook, or other
-\" written 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 1. APPLICABILITY AND DEFINITIONS
-\" .PP
-\" This License applies to any manual or other work that contains a
-\" notice placed by the copyright holder saying it can be distributed
-\" under the terms of this License. The "Document", below, refers to any
-\" such manual or work. Any member of the public is a licensee, and is
-\" addressed as "you".
-\" .PP
-\" 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.
-\" .PP
-\" 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. (For example, 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" A "Transparent" copy of the Document means a machine-readable copy,
-\" represented in a format whose specification is available to the
-\" general public, whose contents can be viewed and edited directly and
-\" 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 has been designed to thwart or discourage
-\" subsequent modification by readers is not Transparent. A copy that is
-\" not "Transparent" is called "Opaque".
-\" .PP
-\" 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 designed for human modification. Opaque formats include
-\" PostScript, PDF, 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 produced by some word processors for output
-\" purposes only.
-\" .PP
-\" 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.
-\" .PP
-\" 2. VERBATIM COPYING
-\" .PP
-\" 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.
-\" .PP
-\" You may also lend copies, under the same conditions stated above, and
-\" you may publicly display copies.
-\" .PP
-\" 3. COPYING IN QUANTITY
-\" .PP
-\" If you publish printed copies 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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 publicly-accessible computer-network location containing a complete
-\" Transparent copy of the Document, free of added material, which the
-\" general network-using public has access to download anonymously at no
-\" charge using public-standard network protocols. 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.
-\" .PP
-\" 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.
-\" .PP
-\" 4. MODIFICATIONS
-\" .PP
-\" 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:
-\" .PP
-\" 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.
-\" .PP
-\" 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 less than five).
-\" .PP
-\" C. State on the Title page the name of the publisher of the
-\" Modified Version, as the publisher.
-\" .PP
-\" D. Preserve all the copyright notices of the Document.
-\" .PP
-\" E. Add an appropriate copyright notice for your modifications
-\" adjacent to the other copyright notices.
-\" .PP
-\" 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.
-\" Preserve in that license notice the full lists of Invariant Sections
-\" and required Cover Texts given in the Document's license notice.
-\" .PP
-\" H. Include an unaltered copy of this License.
-\" .PP
-\" I. Preserve the section entitled "History", and 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.
-\" .PP
-\" 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.
-\" .PP
-\" K. In any section entitled "Acknowledgements" or "Dedications",
-\" preserve the section's title, and preserve in the section all the
-\" substance and tone of each of the contributor acknowledgements
-\" and/or dedications given therein.
-\" .PP
-\" 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.
-\" .PP
-\" M. Delete any section entitled "Endorsements". Such a section
-\" may not be included in the Modified Version.
-\" .PP
-\" N. Do not retitle any existing section as "Endorsements"
-\" or to conflict in title with any Invariant Section.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 5. COMBINING DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-\" 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."
-\" .PP
-
-\" 6. COLLECTIONS OF DOCUMENTS
-\" .PP
-\" 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.
-\" .PP
-\" 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.
-\" .PP
-
-\" 7. AGGREGATION WITH INDEPENDENT WORKS
-\" .PP
-\" 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, does not as a whole count as a Modified Version
-\" of the Document, provided no compilation copyright is claimed for the
-\" compilation. Such a compilation is called an "aggregate", and this
-\" License does not apply to the other self-contained works thus compiled
-\" with the Document, on account of their being thus compiled, if they
-\" are not themselves derivative works of the Document.
-\" .PP
-\" If the Cover Text requirement of section 3 is applicable to these
-\" copies of the Document, then if the Document is less than one quarter
-\" of the entire aggregate, the Document's Cover Texts may be placed on
-\" covers that surround only the Document within the aggregate.
-\" Otherwise they must appear on covers around the whole aggregate.
-\" .PP
-
-\" 8. TRANSLATION
-\" .PP
-\" 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 provided that you also include the
-\" original English version of this License. In case of a disagreement
-\" between the translation and the original English version of this
-\" License, the original English version will prevail.
-\" .PP
-
-\" 9. TERMINATION
-\" .PP
-\" You may not copy, modify, sublicense, or distribute the Document except
-\" as expressly provided for under this License. Any other attempt to
-\" copy, modify, sublicense or distribute the Document is void, and will
-\" automatically terminate your rights under this License. However,
-\" parties who have received copies, or rights, from you under this
-\" License will not have their licenses terminated so long as such
-\" parties remain in full compliance.
-\" .PP
-
-\" 10. FUTURE REVISIONS OF THIS LICENSE
-\" .PP
-\" 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/.
-\" .PP
-\" 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.
-\" .PP
-
-\" ADDENDUM: How to use this License for your documents
-\" .PP
-\" 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:
-\" .PP
-\" 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.1 or any later
-\" version published by the Free Software Foundation;
-\" with the Invariant Sections being LIST THEIR TITLES,
-\" with the Front-Cover Texts being LIST, and with the
-\" Back-Cover Texts being LIST. A copy of the license
-\" is included in the section entitled "GNU Free
-\" Documentation License".
-\" .PP
-\" If you have no Invariant Sections, write "with no Invariant Sections"
-\" instead of saying which ones are invariant. If you have no
-\" Front-Cover Texts, write "no Front-Cover Texts" instead of
-\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-\" .PP
-\" 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.
diff --git a/contrib/binutils/binutils/sysinfo.y b/contrib/binutils/binutils/sysinfo.y
deleted file mode 100644
index 4aa46073bbbe..000000000000
--- a/contrib/binutils/binutils/sysinfo.y
+++ /dev/null
@@ -1,442 +0,0 @@
-/* Copyright 2001 Free Software Foundation, Inc.
- Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
-
-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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-%{
-#include <stdio.h>
-#include <stdlib.h>
-
-extern char *word;
-extern char writecode;
-extern int number;
-extern int unit;
-char nice_name[1000];
-char *it;
-int sofar;
-int width;
-int code;
-char * repeat;
-char *oldrepeat;
-char *name;
-int rdepth;
-char *loop [] = {"","n","m","/*BAD*/"};
-char *names[] = {" ","[n]","[n][m]"};
-char *pnames[]= {"","*","**"};
-%}
-
-
-%union {
- int i;
- char *s;
-}
-%token COND
-%token REPEAT
-%token '(' ')'
-%token <s> TYPE
-%token <s> NAME
-%token <i> NUMBER UNIT
-%type <i> attr_size
-%type <s> attr_desc attr_id attr_type
-%%
-
-top: {
- 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 <stdio.h>\n");
- printf("#include <stdlib.h>\n");
- printf("#include <ansidecl.h>\n");
- break;
- }
- }
-it_list {
- switch (writecode) {
- case 'i':
- case 'p':
- case 'g':
- case 'c':
- printf("#endif\n");
- break;
- case 'd':
- break;
- }
-}
-
- ;
-
-
-it_list: it it_list
- |
- ;
-
-it:
- '(' NAME NUMBER
- {
- it = $2; code = $3;
- 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 PARAMS ((struct IT_%s *));\n",
- $2, it);
- printf("extern void sysroff_swap_%s_out PARAMS ((FILE *, struct IT_%s *));\n",
- $2, it);
- printf("extern void sysroff_print_%s_out PARAMS ((struct IT_%s *));\n",
- $2, it);
- printf("struct IT_%s { \n", it);
- break;
- case 'i':
- printf("void sysroff_swap_%s_in(ptr)\n",$2);
- printf("struct IT_%s *ptr;\n", it);
- printf("{\n");
- printf("char raw[255];\n");
- printf("\tint idx = 0 ;\n");
- printf("\tint size;\n");
- printf("memset(raw,0,255);\n");
- printf("memset(ptr,0,sizeof(*ptr));\n");
- printf("size = fillup(raw);\n");
- break;
- case 'g':
- printf("void sysroff_swap_%s_out(file,ptr)\n",$2);
- printf("FILE * file;\n");
- printf("struct IT_%s *ptr;\n", it);
- printf("{\n");
- printf("\tchar 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(abfd,ptr)\n",$2);
- printf("bfd * abfd;\n");
- printf("struct IT_%s *ptr;\n",it);
- printf("{\n");
- printf("int idx = 0 ;\n");
- break;
- case 'c':
- printf("void sysroff_print_%s_out(ptr)\n",$2);
- printf("struct IT_%s *ptr;\n", it);
- printf("{\n");
- printf("itheader(\"%s\", IT_%s_CODE);\n",$2,$2);
- break;
-
- case 't':
- break;
- }
-
- }
- it_field_list
-')'
-{
- switch (writecode) {
- case 'd':
- printf("};\n");
- break;
- case 'g':
- printf("\tchecksum(file,raw, idx, IT_%s_CODE);\n", it);
-
- case 'i':
-
- case 'o':
- case 'c':
- printf("}\n");
- }
-}
-;
-
-
-
-it_field_list:
- it_field it_field_list
- | cond_it_field it_field_list
- | repeat_it_field it_field_list
- |
- ;
-
-repeat_it_field: '(' REPEAT NAME
- {
- rdepth++;
- switch (writecode)
- {
- case 'c':
- if (rdepth==1)
- printf("\tprintf(\"repeat %%d\\n\", %s);\n",$3);
- if (rdepth==2)
- printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",$3);
- case 'i':
- case 'g':
- case 'o':
-
- if (rdepth==1)
- {
- printf("\t{ int n; for (n = 0; n < %s; n++) {\n", $3);
- }
- if (rdepth == 2) {
- printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", $3);
- }
-
- break;
- }
-
- oldrepeat = repeat;
- repeat = $3;
- }
-
- it_field_list ')'
-
- {
- repeat = oldrepeat;
- oldrepeat =0;
- rdepth--;
- switch (writecode)
- {
- case 'i':
- case 'g':
- case 'o':
- case 'c':
- printf("\t}}\n");
- }
- }
- ;
-
-
-cond_it_field: '(' COND NAME
- {
- switch (writecode)
- {
- case 'i':
- case 'g':
- case 'o':
- case 'c':
- printf("\tif (%s) {\n", $3);
- break;
- }
- }
-
- it_field_list ')'
- {
- switch (writecode)
- {
- case 'i':
- case 'g':
- case 'o':
- case 'c':
- printf("\t}\n");
- }
- }
- ;
-
-it_field:
- '(' attr_desc '(' attr_type attr_size ')' attr_id
- {name = $7; }
- enums ')'
- {
- char *desc = $2;
- char *type = $4;
- int size = $5;
- char *id = $7;
-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,file);\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;
- }
- }
-
- ;
-
-
-attr_type:
- TYPE { $$ = $1; }
- | { $$ = "INT";}
- ;
-
-attr_desc:
- '(' NAME ')'
- { $$ = $2; }
- ;
-
-attr_size:
- NUMBER UNIT
- { $$ = $1 * $2; }
- ;
-
-
-attr_id:
- '(' NAME ')' { $$ = $2; }
- | { $$ = "dummy";}
- ;
-
-enums:
- | '(' enum_list ')' ;
-
-enum_list:
- |
- enum_list '(' NAME NAME ')' {
- switch (writecode)
- {
- case 'd':
- printf("#define %s %s\n", $3,$4);
- break;
- case 'c':
- printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],$4,$3);
- }
- }
-
- ;
-
-
-
-%%
-/* four modes
-
- -d write structure defintions 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;
-char writecode;
-
-int
-main(ac,av)
-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;
-}
-
-int
-yyerror(s)
- char *s;
-{
- fprintf(stderr, "%s\n" , s);
- return 0;
-}
diff --git a/contrib/binutils/binutils/syslex.l b/contrib/binutils/binutils/syslex.l
deleted file mode 100644
index 553cbdc8ddd1..000000000000
--- a/contrib/binutils/binutils/syslex.l
+++ /dev/null
@@ -1,70 +0,0 @@
-%{
-/* Copyright 2001 Free Software Foundation, Inc.
-
-This file is part of GLD, the Gnu Linker.
-
-GLD is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GLD 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-#include "sysinfo.h"
-char *word;
-int number;
-int unit;
-
-#ifndef yywrap
-static int yywrap () { return 1; }
-#endif
-%}
-%%
-"(" { return '(';}
-")" { return ')';}
-"[" { return '[';}
-"]" { return ']';}
-" " { ; }
-";".* { ; }
-"\t" { ; }
-"\n" { ; }
-"\""[^\"]*"\"" {
-yylval.s = malloc(strlen (yytext));
-strcpy(yylval.s, yytext+1);
-yylval.s[strlen(yylval.s)-1] = 0;
- return NAME;
- }
-
-0x[0-9a-f]+ {
- yylval.i = strtol(yytext,0,16);
- return NUMBER;
- }
-
-[0-9]+ {
- yylval.i = atoi(yytext);
- return NUMBER;
- }
-
-
-"bits" { yylval.i =1 ;return UNIT;}
-"bit" { yylval.i = 1; return UNIT;}
-"bytes" { yylval.i= 8; return UNIT;}
-"byte" { yylval.i = 8; return UNIT;}
-
-"int" { yylval.s = "INT"; return TYPE;}
-"barray" { yylval.s = "BARRAY"; return TYPE;}
-"chars" { yylval.s = "CHARS"; return TYPE;}
-"variable" { yylval.i = 0; return NUMBER;}
-"counted" { yylval.i = -4; return NUMBER;}
-"addrsize" { yylval.i = -2; return NUMBER; }
-"segsize" { yylval.i = -1; return NUMBER; }
-"cond" { return COND;}
-"repeat" { return REPEAT;}
diff --git a/contrib/binutils/config/ChangeLog b/contrib/binutils/config/ChangeLog
deleted file mode 100644
index 129ce6168f3c..000000000000
--- a/contrib/binutils/config/ChangeLog
+++ /dev/null
@@ -1,526 +0,0 @@
-2002-05-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * acinclude.m4: Allow for PWDCMD to override hardcoded pwd.
-
-2002-05-13 Nathanael Nerode <neroden@twcny.rr.com>
-
- * mh-apollo68: remove unused HDEFINES setting.
- * mh-dgux: remove unused HDEFINES setting.
- * mh-dgux386: remove unused HDEFINES setting, duplicate RANLIB=true.
-
-2002-04-29 Nathanael Nerode <neroden@twcny.rr.com>
-
- * config/mh-cxux: remove dead code
- * config/mh-dgux386: remove dead code
- * config/mh-hp300: remove dead code
- * config/mh-hpux: remove dead code
- * config/mh-hpux8: remove dead code
- * config/mh-irix5: remove dead code
- * config/mh-irix6: remove dead code
- * config/mh-ncr3000: remove dead code
- * config/mh-ncrsvr43: remove dead code
- * config/mh-necv4: remove dead code
- * config/mh-sco: remove dead code
- * config/mh-solaris: remove dead code
- * config/mh-sysv: remove dead code
- * config/mh-sysv4: remove dead code
- * config/mh-sysv5: remove dead code
- * config/mh-irix4: remove, contains only dead code
-
- * config/mt-armpic: Delete.
- * config/mt-elfalphapic: Delete.
- * config/mt-i370pic: Delete.
- * config/mt-ia64pic: Delete.
- * config/mt-m68kpic: Delete.
- * config/mt-papic: Delete.
- * config/mt-ppcpic: Delete.
- * config/mt-s390pic: Delete.
- * config/mt-sparcpic: Delete.
- * config/mt-x86pic: Delete.
-
-2002-04-19 Nathanael Nerode <neroden@twcny.rr.com>
-
- * mh-a68bsd: clean out dead code
- * mh-apollo68: clean out dead code
- * mh-cxux: clean out dead code
- * mh-decstation: clean out dead code
- * mh-dgux: clean out dead code
- * mh-dgux386: clean out dead code
- * mh-hp300: clean out dead code
- * mh-hpux: clean out dead code
- * mh-hpux8: clean out dead code
- * mh-interix: clean out dead code
- * mh-irix4: clean out dead code
- * mh-lynxrs6k: clean out dead code
- * mh-mingw32: clean out dead code
- * mh-ncr3000: clean out dead code
- * mh-ncrsvr43: clean out dead code
- * mh-necv4: clean out dead code
- * mh-openedition: clean out dead code
- * mh-riscos: clean out dead code
- * mh-sco: clean out dead code
- * mh-sysv4: clean out dead code
- * mh-lynxos: removed, contained only dead code
- * mh-vaxult2: removed, contained only dead code
- * mh-sun3: removed, contained only dead code
-
-2002-04-15 Keith Seitz <keiths@redhat.com>
-
- * acinclude.m4 (CYG_AC_PATH_TCLCONFIG): Search the win/ directory,
- too.
- (CYG_AC_PATH_TKCONFIG): Likewise.
-
-2001-10-07 Joseph S. Myers <jsm28@cam.ac.uk>
-
- * acinclude.m4: Fix spelling error of "separate" as "seperate".
-
-2001-05-22 Jason Merrill <jason_merrill@redhat.com>
-
- * mt-linux (CXXFLAGS_FOR_TARGET): Lose -fvtable-thunks.
-
-2001-01-27 Richard Henderson <rth@redhat.com>
-
- * mt-alphaieee: New file.
-
-2001-01-02 Laurynas Biveinis <lauras@softhome.net>
-
- * mh-djgpp: do not set CFLAGS.
-
-2000-08-04 Mark Elbrecht <snowball3@bigfoot.com>
-
- * mh-djgpp: Conditionally set 'target_alias' to djgpp. Conditionally
- modify 'gcc_version'.
-
-2000-07-21 Andrew Haley <aph@cygnus.com>
-
- * mh-ia64pic: New file.
- * mt-ia64pic: New file.
-
-2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * mh-s390pic: New file.
- * mt-s390pic: New file.
-
-2000-07-14 Mark P Mitchell <mark@codesourcery.com>
-
- * mh-irix6 (CC): Don't set it.
-
-2000-06-21 Branko Cibej <branko.cibej@hermes.si>
-
- * mh-sparcpic: Use single instead of double quotes.
- * mt-sparcpic: Likewise.
-
-2000-06-19 Syd Polk <spolk@redhat.com>
-
- * acinclude.m4: Updated for Incr Tcl 3.0.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * mh-i370pic: New file.
- * mt-i370pic: New file.
-
-2000-02-22 Nick Clifton <nickc@cygnus.com>
-
- * config/mt-wince: new file: Makefile fragment for WinCE targets.
-
-2000-01-06 Geoff Keating <geoffk@cygnus.com>
-
- * mh-aix43: Delete, move to mt-aix43.
- * mt-aix43: New file.
-
-Tue Sep 7 23:31:01 1999 Linas Vepstas <linas@linas.org>
-
- * mh-openedition: New file.
-
-1999-04-07 Michael Meissner <meissner@cygnus.com>
-
- * mt-d30v: New file, pass -g -Os -Wa,-C as default options.
-
-1999-02-08 Syd Polk <spolk@cygnus.com>
-
- * acinclude.m4: Added macros to find itcl files.
- Export TCL_CFLAGS from tclConfig.sh.
- Export TCL_LIB_FULL_PATH, TK_LIB_FULL_PATH, ITCL_LIB_FULL_PATH,
- ITK_LIB_FULL_PATH, and TIX_LIB_FULL_PATH
- Replace TIX macros with better ones from snavigator.
-
-Tue Feb 2 22:51:21 1999 Philip Blundell <philb@gnu.org>
-
- * mh-armpic: New file. Patch from Jim Pick <jim@jimpick.com>.
- * mt-armpic: Likewise.
-
-Mon Jan 18 19:41:08 1999 Christopher Faylor <cgf@cygnus.com>
-
- * cygwin.mh: Activate commented out dependencies for
- gdb: libtermcap.
-
-Wed Nov 18 20:29:46 1998 Christopher Faylor <cgf@cygnus.com>
-
- * cygwin.mh: Add extra libtermcap target information.
- Add commented out dependency for gdb to libtermcap for
- future readline requirement.
-
-Mon Nov 2 15:15:33 1998 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: delete
- * mh-cygwin: was mh-cygwin32
-
-1998-10-26 Syd Polk <spolk@cygnus.com>
-
- * acinclude.m4: TCLHDIR and TKHDIR need to be run through
- cygpath for Microsoft builds.
-
-1998-10-20 Syd Polk <spolk@cygnus.com>
-
- * acinclude.m4: Re-exported TCL_LIBS and TCL_LD_SEARCH_FLAGS
- because itcl needs them.
-
-Mon Aug 31 17:50:53 1998 David Edelsohn <edelsohn@mhpcc.edu>
-
- * mh-aix43 (NM_FOR_TARGET): Add -X32_64 as well.
-
-Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
-
- * mh-aix43: New file.
-
-Mon Aug 10 00:15:47 1998 HJ Lu (hjl@gnu.org)
-
- * mt-linux (CXXFLAGS_FOR_TARGET): Add -D_GNU_SOURCE.
-
-1998-05-29 Rob Savoye <rob@chinadoll.cygnus.com>
-
- * acinclude.m4: New collection of generic autoconf macros.
-
-Wed Apr 22 12:24:28 1998 Michael Meissner <meissner@cygnus.com>
-
- * mt-ospace: New file, support using -Os instead of -O2 to compile
- the libraries.
-
-Wed Apr 22 10:53:14 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * mt-linux (CXXFLAGS_FOR_TARGET): Set this instead of CXXFLAGS.
-
-Sat Apr 11 22:43:17 1998 J. Kean Johnston <jkj@sco.com>
-
- * mh-svsv5: New file - support for SCO UnixWare 7 / SVR5.
-
-Thu Mar 26 01:54:25 1998 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: stop configuring and building dosrel.
-
-Thu Sep 11 16:43:27 1997 Jim Wilson <wilson@cygnus.com>
-
- * mh-elfalphapic, mt-elfalphapic: New files.
-
-Wed Jul 23 12:32:18 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
-
- * mh-go32 (CFLAGS): Don't set -fno-omit-frame-pointer.
-
-Mon Jun 16 19:06:41 1997 Geoff Keating <geoffk@ozemail.com.au>
-
- * mh-ppcpic: New file.
- * mt-ppcpic: New file.
-
-Thu Mar 27 15:52:40 1997 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: override CXXFLAGS, setting to -O2 only
- (no debug)
-
-Tue Mar 25 18:16:43 1997 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: override LIBGCC2_DEBUG_CFLAGS so debug info
- isn't included in cygwin32-hosted libgcc2.a by default
-
-Wed Jan 8 19:56:43 1997 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: override CFLAGS so debug info isn't included
- in cygwin32-hosted tools by default
-
-Tue Dec 31 16:04:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-linux: Remove.
-
-Mon Nov 11 10:29:51 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * mt-ppc: Delete file, options moved to newlib configure.
-
-Fri Oct 4 12:21:03 1996 Angela Marie Thomas (angela@cygnus.com)
-
- * mh-dgux386: New file. x86 dgux specific flags
-
-Mon Sep 30 15:10:07 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (EXTRALIBS_PPC_XCOFF): New, was EXTRALIBS_PPC.
- (EXTRALIBS_PPC): Use shared libraries instead of xcoff.
-
-Sat Aug 17 04:56:25 1996 Geoffrey Noer <noer@skaro.cygnus.com>
-
- * mh-cygwin32: don't -D_WIN32 here anymore
-
-Thu Aug 15 19:46:44 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (SEGFLAG_68K, SEGFLAG_PPC): Remove.
- (EXTRALIBS_PPC): Add libgcc.xcoff.
-
-Thu Aug 8 14:51:47 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * mt-ppc: New file, add -mrelocatable-lib and -mno-eabi to all
- target builds for PowerPC eabi targets.
-
-Fri Jul 12 12:06:01 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw: New subdir, Mac MPW configuration support bits.
-
-Mon Jul 8 17:30:52 1996 Jim Wilson <wilson@cygnus.com>
-
- * mh-irix6: New file.
-
-Mon Jul 8 15:15:37 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * mt-sparcpic (PICFLAG_FOR_TARGET): Use -fPIC.
-
-Fri Jul 5 11:49:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-irix4 (RANLIB): Don't define; Irix 4 does have ranlib.
-
-Sun Jun 23 22:59:25 1996 Geoffrey Noer <noer@cygnus.com>
-
- * mh-cygwin32: new file. Like mh-go32 without the CFLAGS entry.
-
-Tue Mar 26 14:10:41 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-go32 (CFLAGS): Define.
-
-Thu Mar 14 19:20:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-necv4: New file.
-
-Thu Feb 15 13:07:43 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-cxux (CC): New variable.
- (CFLAGS, LDFLAGS): Remove.
- * mh-ncrsvr43 (CC): New variable.
- (CFLAGS): Remove.
- * mh-solaris (CFLAGS): Remove.
-
- * mh-go32: Remove most variable settings, since they presumed a
- Canadian Cross, which is now handled correctly by the configure
- script.
-
- * mh-sparcpic (PICFLAG): Set to -fPIC, not -fpic.
-
-Mon Feb 12 14:53:39 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * mh-m68kpic, mt-m68kpic: New files.
-
-Thu Feb 1 14:15:42 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (CC_MWC68K): Add options similar to those used
- in CC_MWCPPC, and -mc68020 -model far.
- (AR_MWLINK68K): Add -xm library.
- (AR_AR): Define.
- (CC_LD_MWLINK68K): Remove -d.
- (EXTRALIBS_MWC68K): Define.
-
-Thu Jan 25 16:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-ncrsvr43 (CFLAGS): Remove -Hnocopyr.
-
-Tue Nov 7 15:41:30 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (CC_MWC68K, CC_MWCPPC): Remove unused include path.
- (CC_MWCPPC): Add -mpw_chars, disable warnings, add comments
- explaining reasons for various flags.
- (EXTRALIBS_PPC, EXTRALIBS_MWCPPC ): Put runtime library first.
-
-Fri Oct 13 14:44:25 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * mh-aix, mh-sun: Removed.
-
- * mh-decstation (X11_EXTRA_CFLAGS): Define.
-
- * mh-sco, mh-solaris, mh-sysv4 (X11_EXTRA_LIBS): Define.
-
- * mh-hp300, mh-hpux, mh-hpux8, mh-solaris, mh-sun3, mh-sysv4: Don't
- hardcode location of X stuff here.
-
-Thu Sep 28 13:14:56 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw: Add definitions for various 68K and PowerMac
- compilers, add definitions for library and link steps for
- PowerMacs.
-
-Thu Sep 14 08:20:04 1995 Fred Fish <fnf@cygnus.com>
-
- * mh-hp300 (CC): Add "CC = cc -Wp,-H256000" to avoid
- "too much defining" errors from the HPUX compiler.
-
-Thu Aug 17 17:28:56 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
-
- * mh-hp300 (RANLIB): Use "ar ts", in case GNU ar was used and
- didn't build a symbol table.
-
-Thu Jun 22 17:47:24 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (CC): Define ANSI_PROTOTYPES.
-
-Mon Apr 10 12:29:48 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-mh-mpw (EXTRALIBS): Always link in Math.o, CSANELIB.o,
- and ToolLibs.o.
-
- * mpw-mh-mpw (CC): Define ALMOST_STDC.
- (CFLAGS): Remove ALMOST_STDC, -mc68881.
- (LDFLAGS): add -w.
-
- * mpw-mh-mpw (CFLAGS): Add -b option to put strings at the ends of
- functions.
-
- * mpw-mh-mpw: New file, host makefile definitions for MPW.
-
-Fri Mar 31 11:35:17 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * mt-netware: New file.
-
-Mon Mar 13 12:31:29 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-hpux8: New file.
- * mh-hpux: Use X11R5 rather than X11R4.
-
-Thu Feb 9 11:04:13 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mh-linux (SYSV): Don't define.
- (RANLIB): Don't define.
-
-Wed Jan 11 16:29:34 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * m?-*pic (LIBCXXFLAGS): Add -fno-implicit-templates.
-
-Thu Nov 3 17:27:19 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * mh-irix4 (CC): Increase maximum string length.
-
- * mh-sco (CC): Define away const, it doesn't work right; elements
- of arrays of ptr-to-const are considered const themselves.
-
-Sat Jul 16 12:17:49 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * mh-cxux: New file, from Bob Rusk (rrusk@mail.csd.harris.com).
-
-Sat Jun 4 17:22:12 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * mh-ncrsvr43: New file from Tom McConnell
- <tmcconne@sedona.intel.com>.
-
-Thu May 19 00:32:11 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * mh-hpux (CC): Add -Wp,-H256000 to avoid "too much defining"
- errors from the HPUX 8 compilers.
-
-Wed May 4 20:14:47 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * mh-lynxrs6k: set SHELL to /bin/bash
-
-Tue Apr 12 12:38:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mh-irix4 (CC): Change -XNh1500 to -XNh2000.
-
-Sat Dec 25 20:03:45 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * mt-hppa: Delete.
-
-Tue Nov 16 22:54:39 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mh-a68bsd: Define CC to gcc.
-
-Mon Nov 15 16:56:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mh-linux: Don't put -static in LDFLAGS. Add comments.
-
-Mon Nov 15 13:37:58 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com)
-
- * mh-sysv4 (AR_FLAGS): change from cq to cr
-
-Fri Nov 5 08:12:32 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com)
-
- * mh-unixware: remove. It's the same as sysv4, and config.guess
- can't tell the difference. So don't allow skew.
-
-Wed Oct 20 20:35:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mh-hp300: Revert yesterday's change, but add comment explaining.
-
-Tue Oct 19 18:58:21 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mh-hp300: Don't define CFLAGS to empty. Why should hp300 be
- different from anything else? ("gdb doesn't understand the native
- debug format" isn't a good enough answer because we might be using
- gcc).
-
-Tue Oct 5 12:17:40 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * mh-alphaosf: Remove, no longer necessary now that gdb knows
- how to handle OSF/1 shared libraries.
-
-Tue Jul 6 11:27:33 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * mh-alphaosf: New file.
-
-Thu Jul 1 15:49:33 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mh-riscos: New file.
-
-Mon Jun 14 12:03:18 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
-
- * mh-aix, mh-aix386, mh-decstation, mh-delta88, mh-hpux, mh-irix4,
- mh-ncr3000, mh-solaris, mh-sysv, mh-sysv4: remove INSTALL=cp line,
- now that we're using install.sh globally
-
-Fri Jun 4 16:09:34 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mh-sysv4 (INSTALL): Use cp, not /usr/ucb/install.
-
-Thu Apr 8 11:21:52 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mt-a29k, mt-ebmon29k, mt-os68k, mt-ose68000, mt-ose68k,
- mt-vxworks68, mt-vxworks960: Removed obsolete, unused target
- Makefile fragment files.
-
-Mon Mar 8 15:05:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * mh-aix386: New file; old mh-aix, plus no-op RANLIB.
-
-Thu Oct 1 13:50:48 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * mh-solaris: INSTALL is NOT /usr/ucb/install
-
-Mon Aug 24 14:25:35 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * mt-ose68000, mt-ose68k: renamed from mt-OSE*.
-
-Tue Jul 21 02:11:01 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * mt-OSE68k, mt-680000: new configs.
-
-Thu Jul 16 17:12:09 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * mh-irix4: merged changes from progressive.
-
-Tue Jun 9 23:29:38 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Everywhere: Change RANLIB=echo>/dev/null (which confuses
- some shells - and I don't blame them) to RANLIB=true.
- * mh-solaris: Use /usr/ucb/install for INSTALL.
-
-Sun May 31 14:45:23 1992 Mark Eichin (eichin at cygnus.com)
-
- * mh-solaris2: Add new configuration for Solaris 2 (sysv, no ranlib)
-
-Fri Apr 10 23:10:08 1992 Fred Fish (fnf@cygnus.com)
-
- * mh-ncr3000: Add new configuration for NCR 3000.
-
-Tue Dec 10 00:10:55 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * ChangeLog: fresh changelog.
-
diff --git a/contrib/binutils/config/acinclude.m4 b/contrib/binutils/config/acinclude.m4
deleted file mode 100755
index 00887e0dd305..000000000000
--- a/contrib/binutils/config/acinclude.m4
+++ /dev/null
@@ -1,2023 +0,0 @@
-dnl This file is included into all any other acinclude file that needs
-dnl to use these macros.
-
-dnl This is copied from autoconf 2.12, but does calls our own AC_PROG_CC_WORKS,
-dnl and doesn't call AC_PROG_CXX_GNU, cause we test for that in AC_PROG_CC_WORKS.
-dnl We are probably using a cross compiler, which will not be able to fully
-dnl link an executable. This should really be fixed in autoconf itself.
-dnl Find a working G++ cross compiler. This only works for the GNU C++ compiler.
-AC_DEFUN(CYG_AC_PROG_CXX_CROSS,
-[AC_BEFORE([$0], [AC_PROG_CXXCPP])
-AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
-
-CYG_AC_PROG_GXX_WORKS
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-dnl Check whether -g works, even if CXXFLAGS is set, in case the package
-dnl plays around with CXXFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CXXFLAGS="${CXXFLAGS+set}"
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=
- AC_PROG_CXX_G
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
- elif test $ac_cv_prog_cxx_g = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-O2"
- fi
-else
- GXX=
- test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-])
-
-dnl See if the G++ compiler we found works.
-AC_DEFUN(CYG_AC_PROG_GXX_WORKS,
-[AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) actually works])
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
-dnl Try a test case. We only compile, because it's close to impossible
-dnl to get a correct fully linked executable with a cross compiler. For
-dnl most cross compilers, this test is bogus. For G++, we can use various
-dnl other compile line options to get a decent idea that the cross compiler
-dnl actually does work, even though we can't produce an executable without
-dnl more info about the target it's being compiled for. This only works
-dnl for the GNU C++ compiler.
-
-dnl Transform the name of the compiler to it's cross variant, unless
-dnl CXX is set. This is also what CXX gets set to in the generated
-dnl Makefile.
-if test x"${CXX}" = xc++ ; then
- CXX=`echo gcc | sed -e "${program_transform_name}"`
-fi
-
-dnl Get G++'s full path to libgcc.a
-libgccpath=`${CXX} --print-libgcc`
-
-dnl If we don't have a path with libgcc.a on the end, this isn't G++.
-if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then
- ac_cv_prog_gxx=yes
-else
- ac_cv_prog_gxx=no
-fi
-
-dnl If we are using G++, look for the files that need to exist if this
-dnl compiler works.
-if test x"${ac_cv_prog_gxx}" = xyes ; then
- gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'`
- if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then
- gccfiles=yes
- else
- gccfiles=no
- fi
- gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib
- if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then
- gcclibs=yes
- else
- gcclibs=no
- fi
-fi
-
-dnl If everything is OK, then we can safely assume the compiler works.
-if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then
- ac_cv_prog_cxx_works=no
- AC_MSG_ERROR(${CXX} is a non-working cross compiler)
-else
- ac_cv_prog_cxx_works=yes
-fi
-
-AC_LANG_RESTORE
-AC_MSG_RESULT($ac_cv_prog_cxx_works)
-if test x"$ac_cv_prog_cxx_works" = xno; then
- AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.])
-fi
-AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
-AC_MSG_RESULT($ac_cv_prog_cxx_cross)
-cross_compiling=$ac_cv_prog_cxx_cross
-AC_SUBST(CXX)
-])
-
-dnl ====================================================================
-dnl Find a working GCC cross compiler. This only works for the GNU gcc compiler.
-dnl This is based on the macros above for G++.
-AC_DEFUN(CYG_AC_PROG_CC_CROSS,
-[AC_BEFORE([$0], [AC_PROG_CCPP])
-AC_CHECK_PROGS(CC, cc, gcc)
-
-CYG_AC_PROG_GCC_WORKS
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-dnl Check whether -g works, even if CFLAGS is set, in case the package
-dnl plays around with CFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- AC_PROG_CC_G
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
- elif test $ac_cv_prog_cc_g = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-O2"
- fi
-else
- GXX=
- test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-])
-
-dnl See if the GCC compiler we found works.
-AC_DEFUN(CYG_AC_PROG_GCC_WORKS,
-[AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) actually works])
-AC_LANG_SAVE
-AC_LANG_C
-dnl Try a test case. We only compile, because it's close to impossible
-dnl to get a correct fully linked executable with a cross
-dnl compiler. For most cross compilers, this test is bogus. For G++,
-dnl we can use various other compile line options to get a decent idea
-dnl that the cross compiler actually does work, even though we can't
-dnl produce an executable without more info about the target it's
-dnl being compiled for. This only works for the GNU C++ compiler.
-
-dnl Transform the name of the compiler to it's cross variant, unless
-dnl CXX is set. This is also what CC gets set to in the generated Makefile.
-if test x"${CC}" = xcc ; then
- CC=`echo gcc | sed -e "${program_transform_name}"`
-fi
-
-dnl Get Gcc's full path to libgcc.a
-libgccpath=`${CC} --print-libgcc`
-
-dnl If we don't have a path with libgcc.a on the end, this isn't G++.
-if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-
-dnl If we are using Gcc, look for the files that need to exist if this
-dnl compiler works.
-if test x"${ac_cv_prog_gcc}" = xyes ; then
- gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'`
- if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then
- gccfiles=yes
- else
- gccfiles=no
- fi
- gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib
- if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then
- gcclibs=yes
- else
- gcclibs=no
- fi
-fi
-
-dnl If everything is OK, then we can safely assume the compiler works.
-if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then
- ac_cv_prog_cc_works=no
- AC_MSG_ERROR(${CC} is a non-working cross compiler)
-else
- ac_cv_prog_cc_works=yes
-fi
-
-AC_LANG_RESTORE
-AC_MSG_RESULT($ac_cv_prog_cc_works)
-if test x"$ac_cv_prog_cc_works" = xno; then
- AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.])
-fi
-AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])
-AC_MSG_RESULT($ac_cv_prog_cc_cross)
-cross_compiling=$ac_cv_prog_cc_cross
-AC_SUBST(CC)
-])
-
-dnl ====================================================================
-dnl Find the BFD library in the build tree. This is used to access and
-dnl manipulate object or executable files.
-AC_DEFUN(CYG_AC_PATH_BFD, [
-AC_MSG_CHECKING(for the bfd header in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-dnl Look for the header file
-AC_CACHE_VAL(ac_cv_c_bfdh,[
-for i in $dirlist; do
- if test -f "$i/bfd/bfd.h" ; then
- ac_cv_c_bfdh=`(cd $i/bfd; ${PWDCMD-pwd})`
- break
- fi
-done
-])
-if test x"${ac_cv_c_bfdh}" != x; then
- BFDHDIR="-I${ac_cv_c_bfdh}"
- AC_MSG_RESULT(${ac_cv_c_bfdh})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(BFDHDIR)
-
-dnl Look for the library
-AC_MSG_CHECKING(for the bfd library in the build tree)
-AC_CACHE_VAL(ac_cv_c_bfdlib,[
-for i in $dirlist; do
- if test -f "$i/bfd/Makefile" ; then
- ac_cv_c_bfdlib=`(cd $i/bfd; ${PWDCMD-pwd})`
- fi
-done
-])
-dnl We list two directories cause bfd now uses libtool
-if test x"${ac_cv_c_bfdlib}" != x; then
- BFDLIB="-L${ac_cv_c_bfdlib} -L${ac_cv_c_bfdlib}/.libs"
- AC_MSG_RESULT(${ac_cv_c_bfdlib})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(BFDLIB)
-])
-
-dnl ====================================================================
-dnl Find the libiberty library. This defines many commonly used C
-dnl functions that exists in various states based on the underlying OS.
-AC_DEFUN(CYG_AC_PATH_LIBERTY, [
-AC_MSG_CHECKING(for the liberty library in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_liberty,[
-for i in $dirlist; do
- if test -f "$i/libiberty/Makefile" ; then
- ac_cv_c_liberty=`(cd $i/libiberty; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_liberty}" != x; then
- LIBERTY="-L${ac_cv_c_liberty}"
- AC_MSG_RESULT(${ac_cv_c_liberty})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(LIBERTY)
-])
-
-dnl ====================================================================
-dnl Find the opcodes library. This is used to do dissasemblies.
-AC_DEFUN(CYG_AC_PATH_OPCODES, [
-AC_MSG_CHECKING(for the opcodes library in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_opc,[
-for i in $dirlist; do
- if test -f "$i/opcodes/Makefile" ; then
- ac_cv_c_opc=`(cd $i/opcodes; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_opc}" != x; then
- OPCODESLIB="-L${ac_cv_c_opc}"
- AC_MSG_RESULT(${ac_cv_c_opc})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(OPCODESLIB)
-])
-
-dnl ====================================================================
-dnl Look for the DejaGnu header file in the source tree. This file
-dnl defines the functions used to testing support.
-AC_DEFUN(CYG_AC_PATH_DEJAGNU, [
-AC_MSG_CHECKING(for the testing support files in the source tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_dejagnu,[
-for i in $dirlist; do
- if test -f "$srcdir/$i/ecc/ecc/infra/testlib/current/include/dejagnu.h" ; then
- ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_dejagnu}" != x; then
- DEJAGNUHDIR="-I${ac_cv_c_dejagnu}"
- AC_MSG_RESULT(${ac_cv_c_dejagnu})
-else
- AC_MSG_RESULT(none)
-fi
-AC_CACHE_VAL(ac_cv_c_dejagnulib,[
-for i in $dirlist; do
- if test -f "$srcdir/$i/infra/testlib/current/lib/hostutil.exp" ; then
- ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_dejagnulib}" != x; then
- DEJAGNULIB="${ac_cv_c_dejagnulib}"
-else
- DEJAGNULIB=""
-fi
-AC_MSG_CHECKING(for runtest in the source tree)
-AC_CACHE_VAL(ac_cv_c_runtest,[
-for i in $dirlist; do
- if test -f "$srcdir/$i/dejagnu/runtest" ; then
- ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_runtest}" != x; then
- RUNTESTDIR="${ac_cv_c_runtest}"
- AC_MSG_RESULT(${ac_cv_c_runtest})
-else
- RUNTESTDIR=""
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(RUNTESTDIR)
-AC_SUBST(DEJAGNULIB)
-AC_SUBST(DEJAGNUHDIR)
-])
-
-dnl ====================================================================
-dnl Find the libintl library in the build tree. This is for
-dnl internationalization support.
-AC_DEFUN(CYG_AC_PATH_INTL, [
-AC_MSG_CHECKING(for the intl header in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-dnl Look for the header file
-AC_CACHE_VAL(ac_cv_c_intlh,[
-for i in $dirlist; do
- if test -f "$i/intl/libintl.h" ; then
- ac_cv_c_intlh=`(cd $i/intl; ${PWDCMD-pwd})`
- break
- fi
-done
-])
-if test x"${ac_cv_c_intlh}" != x; then
- INTLHDIR="-I${ac_cv_c_intlh}"
- AC_MSG_RESULT(${ac_cv_c_intlh})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(INTLHDIR)
-
-dnl Look for the library
-AC_MSG_CHECKING(for the libintl library in the build tree)
-AC_CACHE_VAL(ac_cv_c_intllib,[
-for i in $dirlist; do
- if test -f "$i/intl/Makefile" ; then
- ac_cv_c_intllib=`(cd $i/intl; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_intllib}" != x; then
- INTLLIB="-L${ac_cv_c_intllib} -lintl"
- AC_MSG_RESULT(${ac_cv_c_intllib})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(INTLLIB)
-])
-
-dnl ====================================================================
-dnl Find the simulator library.
-AC_DEFUN(CYG_AC_PATH_SIM, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.. ../../../../../../../../../.."
-case "$target_cpu" in
- powerpc) target_dir=ppc ;;
- sparc*) target_dir=erc32 ;;
- mips*) target_dir=mips ;;
- *) target_dir=$target_cpu ;;
-esac
-dnl First look for the header file
-AC_MSG_CHECKING(for the simulator header file)
-AC_CACHE_VAL(ac_cv_c_simh,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/include/remote-sim.h" ; then
- ac_cv_c_simh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})`
- break
- fi
-done
-])
-if test x"${ac_cv_c_simh}" != x; then
- SIMHDIR="-I${ac_cv_c_simh}"
- AC_MSG_RESULT(${ac_cv_c_simh})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(SIMHDIR)
-
-dnl See whether it's a devo or Foundry branch simulator
-AC_MSG_CHECKING(Whether this is a devo simulator )
-AC_CACHE_VAL(ac_cv_c_simdevo,[
- CPPFLAGS="$CPPFLAGS $SIMHDIR"
- AC_EGREP_HEADER([SIM_DESC sim_open.*struct _bfd], remote-sim.h,
- ac_cv_c_simdevo=yes,
- ac_cv_c_simdevo=no)
-])
-if test x"$ac_cv_c_simdevo" = x"yes" ; then
- AC_DEFINE(HAVE_DEVO_SIM)
-fi
-AC_MSG_RESULT(${ac_cv_c_simdevo})
-AC_SUBST(HAVE_DEVO_SIM)
-
-dnl Next look for the library
-AC_MSG_CHECKING(for the simulator library)
-AC_CACHE_VAL(ac_cv_c_simlib,[
-for i in $dirlist; do
- if test -f "$i/sim/$target_dir/Makefile" ; then
- ac_cv_c_simlib=`(cd $i/sim/$target_dir; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_simlib}" != x; then
- SIMLIB="-L${ac_cv_c_simlib}"
-else
- AC_MSG_RESULT(none)
- dnl FIXME: this is kinda bogus, cause umtimately the TM will build
- dnl all the libraries for several architectures. But for now, this
- dnl will work till then.
-dnl AC_MSG_CHECKING(for the simulator installed with the compiler libraries)
- dnl Transform the name of the compiler to it's cross variant, unless
- dnl CXX is set. This is also what CXX gets set to in the generated
- dnl Makefile.
- CROSS_GCC=`echo gcc | sed -e "s/^/$target/"`
-
- dnl Get G++'s full path to libgcc.a
-changequote(,)
- gccpath=`${CROSS_GCC} --print-libgcc | sed -e 's:[a-z0-9A-Z\.\-]*/libgcc.a::' -e 's:lib/gcc-lib/::'`lib
-changequote([,])
- if test -f $gccpath/libsim.a -o -f $gccpath/libsim.so ; then
- ac_cv_c_simlib="$gccpath/"
- SIMLIB="-L${ac_cv_c_simlib}"
- AC_MSG_RESULT(${ac_cv_c_simlib})
- else
- AM_CONDITIONAL(PSIM, test x$psim = xno)
- SIMLIB=""
- AC_MSG_RESULT(none)
-dnl ac_cv_c_simlib=none
- fi
-fi
-AC_SUBST(SIMLIB)
-])
-
-dnl ====================================================================
-dnl Find the libiberty library.
-AC_DEFUN(CYG_AC_PATH_LIBIBERTY, [
-AC_MSG_CHECKING(for the libiberty library in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_libib,[
-for i in $dirlist; do
- if test -f "$i/libiberty/Makefile" ; then
- ac_cv_c_libib=`(cd $i/libiberty/; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_libib}" != x; then
- LIBIBERTY="-L${ac_cv_c_libib}"
- AC_MSG_RESULT(${ac_cv_c_libib})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(LIBIBERTY)
-])
-
-dnl ====================================================================
-AC_DEFUN(CYG_AC_PATH_DEVO, [
-AC_MSG_CHECKING(for devo headers in the source tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_devoh,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/include/remote-sim.h" ; then
- ac_cv_c_devoh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_devoh}" != x; then
- DEVOHDIR="-I${ac_cv_c_devoh}"
- AC_MSG_RESULT(${ac_cv_c_devoh})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(DEVOHDIR)
-])
-
-dnl ====================================================================
-dnl find the IDE library and headers.
-AC_DEFUN(CYG_AC_PATH_IDE, [
-AC_MSG_CHECKING(for IDE headers in the source tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-IDEHDIR=
-IDELIB=
-AC_CACHE_VAL(ac_cv_c_ideh,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/libide/src/event.h" ; then
- ac_cv_c_ideh=`(cd ${srcdir}/$i/libide/src; ${PWDCMD-pwd})`;
- fi
-done
-])
-if test x"${ac_cv_c_ideh}" != x; then
- IDEHDIR="-I${ac_cv_c_ideh}"
- AC_MSG_RESULT(${ac_cv_c_ideh})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for LIBIDE TCL headers in the source tree)
-AC_CACHE_VAL(ac_cv_c_idetclh,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/libidetcl/src/idetcl.h" ; then
- ac_cv_c_idetclh=`(cd ${srcdir}/$i/libidetcl/src; ${PWDCMD-pwd})`;
- fi
-done
-])
-if test x"${ac_cv_c_idetclh}" != x; then
- IDEHDIR="${IDEHDIR} -I${ac_cv_c_idetclh}"
- AC_MSG_RESULT(${ac_cv_c_idetclh})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for IDE headers in the build tree)
-AC_CACHE_VAL(ac_cv_c_ideh2,[
-for i in $dirlist; do
- if test -f "$i/libide/src/Makefile" ; then
- ac_cv_c_ideh2=`(cd $i/libide/src; ${PWDCMD-pwd})`;
- fi
-done
-])
-if test x"${ac_cv_c_ideh2}" != x; then
- IDEHDIR="${IDEHDIR} -I${ac_cv_c_ideh2}"
- AC_MSG_RESULT(${ac_cv_c_ideh2})
-else
- AC_MSG_RESULT(none)
-fi
-
-dnl look for the library
-AC_MSG_CHECKING(for IDE library)
-AC_CACHE_VAL(ac_cv_c_idelib,[
-if test x"${ac_cv_c_idelib}" = x ; then
- for i in $dirlist; do
- if test -f "$i/libide/src/Makefile" ; then
- ac_cv_c_idelib=`(cd $i/libide/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi])
-if test x"${ac_cv_c_idelib}" != x ; then
- IDELIB="-L${ac_cv_c_idelib}"
- AC_MSG_RESULT(${ac_cv_c_idelib})
-else
- AC_MSG_RESULT(none)
-fi
-
-dnl find libiddetcl.a if it exists
-AC_MSG_CHECKING(for IDE TCL library)
-AC_CACHE_VAL(ac_cv_c_idetcllib,[
-if test x"${ac_cv_c_idetcllib}" = x ; then
- for i in $dirlist; do
- if test -f "$i/libidetcl/src/Makefile" ; then
- ac_cv_c_idetcllib=`(cd $i/libidetcl/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-])
-if test x"${ac_cv_c_idetcllib}" != x ; then
- IDELIB="${IDELIB} -L${ac_cv_c_idetcllib}"
- IDETCLLIB="-lidetcl"
- AC_MSG_RESULT(${ac_cv_c_idetcllib})
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(IDEHDIR)
-AC_SUBST(IDELIB)
-AC_SUBST(IDETCLLIB)
-])
-
-dnl ====================================================================
-dnl Find all the ILU headers and libraries
-AC_DEFUN(CYG_AC_PATH_ILU, [
-AC_MSG_CHECKING(for ILU kernel headers in the source tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_iluh,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/ilu/runtime/kernel/method.h" ; then
- ac_cv_c_iluh=`(cd ${srcdir}/$i/ilu/runtime/kernel; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_iluh}" != x; then
- ILUHDIR="-I${ac_cv_c_iluh}"
- AC_MSG_RESULT(${ac_cv_c_iluh})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for ILU kernel headers in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_iluh5,[
-for i in $dirlist; do
- if test -f "$i/ilu/runtime/kernel/iluconf.h" ; then
- ac_cv_c_iluh5=`(cd $i/ilu/runtime/kernel; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_iluh5}" != x; then
- ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh5}"
- AC_MSG_RESULT(${ac_cv_c_iluh5})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for ILU C++ headers in the source tree)
-AC_CACHE_VAL(ac_cv_c_iluh2,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/ilu/stubbers/cpp/resource.h" ; then
- ac_cv_c_iluh2=`(cd ${srcdir}/$i/ilu/stubbers/cpp; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_iluh2}" != x; then
- ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh2}"
- AC_MSG_RESULT(${ac_cv_c_iluh2})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for ILU C headers)
-AC_CACHE_VAL(ac_cv_c_iluh3,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/ilu/stubbers/c/resource.h" ; then
- ac_cv_c_iluh3=`(cd ${srcdir}/$i/ilu/stubbers/c ; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_iluh3}" != x; then
- ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh3}"
- AC_MSG_RESULT(${ac_cv_c_iluh3})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_MSG_CHECKING(for ILU C runtime headers)
-AC_CACHE_VAL(ac_cv_c_iluh4,[
-for i in $dirlist; do
- if test -f "${srcdir}/$i/ilu/runtime/c/ilucstub.h" ; then
- ac_cv_c_iluh4=`(cd ${srcdir}/$i/ilu/runtime/c ; ${PWDCMD-pwd})`
- fi
-done
-])
-if test x"${ac_cv_c_iluh4}" != x; then
- ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh4}"
- AC_MSG_RESULT(${ac_cv_c_iluh4})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_CACHE_VAL(ac_cv_c_ilupath,[
-for i in $dirlist; do
- if test -f "$i/ilu/Makefile" ; then
- ac_cv_c_ilupath=`(cd $i/ilu; ${PWDCMD-pwd})`
- break
- fi
-done
-])
-ILUTOP=${ac_cv_c_ilupath}
-
-AC_MSG_CHECKING(for the ILU library in the build tree)
-AC_CACHE_VAL(ac_cv_c_ilulib,[
-if test -f "$ac_cv_c_ilupath/runtime/kernel/Makefile" ; then
- ac_cv_c_ilulib=`(cd $ac_cv_c_ilupath/runtime/kernel; ${PWDCMD-pwd})`
- AC_MSG_RESULT(found ${ac_cv_c_ilulib}/libilu.a)
-else
- AC_MSG_RESULT(no)
-fi])
-
-AC_MSG_CHECKING(for the ILU C++ bindings library in the build tree)
-AC_CACHE_VAL(ac_cv_c_ilulib2,[
-if test -f "$ac_cv_c_ilupath/runtime/cpp/Makefile" ; then
- ac_cv_c_ilulib2=`(cd $ac_cv_c_ilupath/runtime/cpp; ${PWDCMD-pwd})`
- AC_MSG_RESULT(found ${ac_cv_c_ilulib2}/libilu-c++.a)
-else
- AC_MSG_RESULT(no)
-fi])
-
-AC_MSG_CHECKING(for the ILU C bindings library in the build tree)
-AC_CACHE_VAL(ac_cv_c_ilulib3,[
-if test -f "$ac_cv_c_ilupath/runtime/c/Makefile" ; then
- ac_cv_c_ilulib3=`(cd $ac_cv_c_ilupath/runtime/c; ${PWDCMD-pwd})`
- AC_MSG_RESULT(found ${ac_cv_c_ilulib3}/libilu-c.a)
-else
- AC_MSG_RESULT(no)
-fi])
-
-AC_MSG_CHECKING(for the ILU Tk bindings library in the build tree)
-AC_CACHE_VAL(ac_cv_c_ilulib4,[
-if test -f "$ac_cv_c_ilupath/runtime/mainloop/Makefile" ; then
- ac_cv_c_ilulib4=`(cd $ac_cv_c_ilupath/runtime/mainloop; ${PWDCMD-pwd})`
- AC_MSG_RESULT(found ${ac_cv_c_ilulib4}/libilu-tk.a)
-else
- AC_MSG_RESULT(no)
-fi])
-
-if test x"${ac_cv_c_ilulib}" = x -a x"${ac_cv_c_ilulib2}" = x; then
- ILUHDIR=""
-fi
-
-if test x"${ac_cv_c_ilulib}" != x -a x"${ac_cv_c_ilulib2}" != x; then
- ILULIB="-L${ac_cv_c_ilulib} -L${ac_cv_c_ilulib2} -L${ac_cv_c_ilulib3} -L${ac_cv_c_ilulib4}"
-else
- ILULIB=""
-fi
-
-if test x"${ILULIB}" = x; then
- AC_MSG_CHECKING(for ILU libraries installed with the compiler)
- AC_CACHE_VAL(ac_cv_c_ilulib5,[
- NATIVE_GCC=`echo gcc | sed -e "${program_transform_name}"`
-
- dnl Get G++'s full path to it's libraries
- ac_cv_c_ilulib5=`${NATIVE_GCC} --print-libgcc | sed -e 's:lib/gcc-lib/.*::'`lib
- if test -f $ac_cv_c_ilulib5/libilu-c.a -o -f $ac_cv_c_ilulib5/libilu-c.so ; then
- if test x"${ILUHDIR}" = x; then
- ILUHDIR="-I${ac_cv_c_ilulib5}/../include"
- fi
- ILULIB="-L${ac_cv_c_ilulib5}"
- AC_MSG_RESULT(${ac_cv_c_ilulib5})
- else
- ac_cv_c_ilulib=none
- AC_MSG_RESULT(none)
- fi
-fi])
-AC_SUBST(ILUHDIR)
-AC_SUBST(ILULIB)
-AC_SUBST(ILUTOP)
-])
-
-dnl ====================================================================
-dnl This defines the byte order for the host. We can't use
-dnl AC_C_BIGENDIAN, cause we want to create a config file and
-dnl substitue the real value, so the header files work right
-AC_DEFUN(CYG_AC_C_ENDIAN, [
-AC_MSG_CHECKING(to see if this is a little endian host)
-AC_CACHE_VAL(ac_cv_c_little_endian, [
-ac_cv_c_little_endian=unknown
-# See if sys/param.h defines the BYTE_ORDER macro.
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/param.h>], [
-#if !BYTE_ORDER || !_BIG_ENDIAN || !_LITTLE_ENDIAN
- bogus endian macros
-#endif], [# It does; now see whether it defined to _LITTLE_ENDIAN or not.
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/param.h>], [
-#if BYTE_ORDER != _LITTLE_ENDIAN
- not big endian
-#endif], ac_cv_c_little_endian=yes, ac_cv_c_little_endian=no)
-])
-if test ${ac_cv_c_little_endian} = unknown; then
-old_cflags=$CFLAGS
-CFLAGS=-g
-AC_TRY_RUN([
-main () {
- /* Are we little or big endian? From Harbison&Steele. */
- union
- {
- long l;
- char c[sizeof (long)];
- } u;
- u.l = 1;
- exit (u.c[0] == 1);
-}],
-ac_cv_c_little_endian=no,
-ac_cv_c_little_endian=yes,[
-dnl Yes, this is ugly, and only used for a canadian cross anyway. This
-dnl is just to keep configure from stopping here.
-case "${host}" in
-changequote(,)
- i[3456]86-*-*) ac_cv_c_little_endian=yes ;;
- sparc*-*-*) ac_cv_c_little_endian=no ;;
-changequote([,])
- *) AC_MSG_WARN(Can't cross compile this test) ;;
-esac])
-CFLAGS=$old_cflags
-fi])
-
-if test x"${ac_cv_c_little_endian}" = xyes; then
- AC_DEFINE(LITTLE_ENDIAN_HOST)
- ENDIAN="CYG_LSBFIRST";
-else
- ENDIAN="CYG_MSBFIRST";
-fi
-AC_MSG_RESULT(${ac_cv_c_little_endian})
-AC_SUBST(ENDIAN)
-])
-
-dnl ====================================================================
-dnl Look for the path to libgcc, so we can use it to directly link
-dnl in libgcc.a with LD.
-AC_DEFUN(CYG_AC_PATH_LIBGCC,
-[AC_MSG_CHECKING([Looking for the path to libgcc.a])
-AC_LANG_SAVE
-AC_LANG_C
-
-dnl Get Gcc's full path to libgcc.a
-libgccpath=`${CC} --print-libgcc`
-
-dnl If we don't have a path with libgcc.a on the end, this isn't G++.
-if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-
-dnl
-if test x"${ac_cv_prog_gcc}" = xyes ; then
- gccpath=`echo $libgccpath | sed -e 's:/libgcc.a::'`
- LIBGCC="-L${gccpath}"
- AC_MSG_RESULT(${gccpath})
-else
- LIBGCC=""
- AC_MSG_ERROR(Not using gcc)
-fi
-
-AC_LANG_RESTORE
-AC_SUBST(LIBGCC)
-])
-
-dnl ====================================================================
-dnl Ok, lets find the tcl source trees so we can use the headers
-dnl Warning: transition of version 9 to 10 will break this algorithm
-dnl because 10 sorts before 9. We also look for just tcl. We have to
-dnl be careful that we don't match stuff like tclX by accident.
-dnl the alternative search directory is involked by --with-tclinclude
-AC_DEFUN(CYG_AC_PATH_TCL, [
- CYG_AC_PATH_TCLH
- CYG_AC_PATH_TCLCONFIG
- CYG_AC_LOAD_TCLCONFIG
-])
-AC_DEFUN(CYG_AC_PATH_TCLH, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_tcl=true
-AC_MSG_CHECKING(for Tcl headers in the source tree)
-AC_ARG_WITH(tclinclude, [ --with-tclinclude directory where tcl headers are], with_tclinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_tclh,[
-dnl first check to see if --with-tclinclude was specified
-if test x"${with_tclinclude}" != x ; then
- if test -f ${with_tclinclude}/tcl.h ; then
- ac_cv_c_tclh=`(cd ${with_tclinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_tclinclude}/generic/tcl.h ; then
- ac_cv_c_tclh=`(cd ${with_tclinclude}/generic; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tclinclude} directory doesn't contain headers])
- fi
-fi
-
-dnl next check if it came with Tcl configuration file
-if test x"${ac_cv_c_tclconfig}" != x ; then
- for i in $dirlist; do
- if test -f $ac_cv_c_tclconfig/$i/generic/tcl.h ; then
- ac_cv_c_tclh=`(cd $ac_cv_c_tclconfig/$i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tclh}" = x ; then
- dnl find the top level Tcl source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/tcl* 2>/dev/null`" ; then
- tclpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Tcl source dir. We do it this way, cause there
- dnl might be multiple version of Tcl, and we want the most recent one.
- for i in `ls -dr $tclpath/tcl* 2>/dev/null ` ; do
- if test -f $i/generic/tcl.h ; then
- ac_cv_c_tclh=`(cd $i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl check if its installed with the compiler
-if test x"${ac_cv_c_tclh}" = x ; then
- dnl Get the path to the compiler
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/include
- if test -f $ccpath/tcl.h; then
- ac_cv_c_tclh=$ccpath
- fi
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_tclh}" = x ; then
- AC_MSG_RESULT(none)
- AC_CHECK_HEADER(tcl.h, ac_cv_c_tclh=installed, ac_cv_c_tclh="")
-else
- AC_MSG_RESULT(${ac_cv_c_tclh})
-fi
-])
- TCLHDIR=""
-if test x"${ac_cv_c_tclh}" = x ; then
- AC_MSG_ERROR([Can't find any Tcl headers])
-fi
-if test x"${ac_cv_c_tclh}" != x ; then
- no_tcl=""
- if test x"${ac_cv_c_tclh}" != x"installed" ; then
- if test x"${CC}" = xcl ; then
- tmp="`cygpath --windows ${ac_cv_c_tclh}`"
- ac_cv_c_tclh="`echo $tmp | sed -e s#\\\\\\\\#/#g`"
- fi
- AC_MSG_RESULT(${ac_cv_c_tclh})
- TCLHDIR="-I${ac_cv_c_tclh}"
- fi
-fi
-
-AC_SUBST(TCLHDIR)
-])
-
-dnl ====================================================================
-dnl Ok, lets find the tcl configuration
-AC_DEFUN(CYG_AC_PATH_TCLCONFIG, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-dnl First, look for one uninstalled.
-dnl the alternative search directory is invoked by --with-tclconfig
-if test x"${no_tcl}" = x ; then
- dnl we reset no_tcl in case something fails here
- no_tcl=true
- AC_ARG_WITH(tclconfig, [ --with-tclconfig directory containing tcl configuration (tclConfig.sh)],
- with_tclconfig=${withval})
- AC_MSG_CHECKING([for Tcl configuration script])
- AC_CACHE_VAL(ac_cv_c_tclconfig,[
-
- dnl First check to see if --with-tclconfig was specified.
- if test x"${with_tclconfig}" != x ; then
- if test -f "${with_tclconfig}/tclConfig.sh" ; then
- ac_cv_c_tclconfig=`(cd ${with_tclconfig}; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
- fi
- fi
-
- dnl next check if it came with Tcl configuration file in the source tree
- if test x"${ac_cv_c_tclconfig}" = x ; then
- for i in $dirlist; do
- dnl need to test both unix and win directories, since
- dnl cygwin's tkConfig.sh could be in either directory depending
- dnl on the cygwin port of tcl.
- if test -f $srcdir/$i/unix/tclConfig.sh ; then
- ac_cv_c_tclconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})`
- break
- fi
- if test -f $srcdir/$i/win/tclConfig.sh ; then
- ac_cv_c_tclconfig=`(cd $srcdir/$i/win; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- dnl check in a few other locations
- if test x"${ac_cv_c_tclconfig}" = x ; then
- dnl find the top level Tcl source directory
- for i in $dirlist; do
- if test -n "`ls -dr $i/tcl* 2>/dev/null`" ; then
- tclconfpath=$i
- break
- fi
- done
-
- dnl find the exact Tcl dir. We do it this way, cause there
- dnl might be multiple version of Tcl, and we want the most recent one.
- for i in `ls -dr $tclconfpath/tcl* 2>/dev/null ` ; do
- dnl need to test both unix and win directories, since
- dnl cygwin's tclConfig.sh could be in either directory depending
- dnl on the cygwin port of tcl.
- if test -f $i/unix/tclConfig.sh ; then
- ac_cv_c_tclconfig=`(cd $i/unix; ${PWDCMD-pwd})`
- break
- fi
- if test -f $i/win/tclConfig.sh ; then
- ac_cv_c_tclconfig=`(cd $i/win; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
-
- dnl Check to see if it's installed. We have to look in the $CC path
- dnl to find it, cause our $prefix may not match the compilers.
- if test x"${ac_cv_c_tclconfig}" = x ; then
- dnl Get the path to the compiler
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/lib
- if test -f $ccpath/tclConfig.sh; then
- ac_cv_c_tclconfig=$ccpath
- fi
- fi
- ]) dnl end of cache_val
-
- if test x"${ac_cv_c_tclconfig}" = x ; then
- TCLCONFIG=""
- AC_MSG_WARN(Can't find Tcl configuration definitions)
- else
- no_tcl=""
- TCLCONFIG=${ac_cv_c_tclconfig}/tclConfig.sh
- AC_MSG_RESULT(${TCLCONFIG})
- fi
-fi
-AC_SUBST(TCLCONFIG)
-])
-
-dnl Defined as a separate macro so we don't have to cache the values
-dnl from PATH_TCLCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TCLCONFIG, [
- . $TCLCONFIG
-
-dnl AC_SUBST(TCL_VERSION)
-dnl AC_SUBST(TCL_MAJOR_VERSION)
-dnl AC_SUBST(TCL_MINOR_VERSION)
-dnl AC_SUBST(TCL_CC)
- AC_SUBST(TCL_DEFS)
-
-dnl not used, don't export to save symbols
- AC_SUBST(TCL_LIB_FILE)
- AC_SUBST(TCL_LIB_FULL_PATH)
- AC_SUBST(TCL_LIBS)
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TCL_PREFIX)
-
- AC_SUBST(TCL_CFLAGS)
-
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TCL_EXEC_PREFIX)
-
- AC_SUBST(TCL_SHLIB_CFLAGS)
- AC_SUBST(TCL_SHLIB_LD)
-dnl don't export, not used outside of configure
-dnl AC_SUBST(TCL_SHLIB_LD_LIBS)
-dnl AC_SUBST(TCL_SHLIB_SUFFIX)
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TCL_DL_LIBS)
- AC_SUBST(TCL_LD_FLAGS)
- AC_SUBST(TCL_LD_SEARCH_FLAGS)
-dnl don't export, not used outside of configure
-dnl AC_SUBST(TCL_COMPAT_OBJS)
- AC_SUBST(TCL_RANLIB)
- AC_SUBST(TCL_BUILD_LIB_SPEC)
- AC_SUBST(TCL_LIB_SPEC)
- AC_SUBST(TCL_BIN_DIR)
-dnl AC_SUBST(TCL_LIB_VERSIONS_OK)
-
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TCL_SHARED_LIB_SUFFIX)
-
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TCL_UNSHARED_LIB_SUFFIX)
-])
-
-dnl ====================================================================
-AC_DEFUN(CYG_AC_PATH_TK, [
- CYG_AC_PATH_TKH
- CYG_AC_PATH_TKCONFIG
- CYG_AC_LOAD_TKCONFIG
-])
-AC_DEFUN(CYG_AC_PATH_TKH, [
-#
-# Ok, lets find the tk source trees so we can use the headers
-# If the directory (presumably symlink) named "tk" exists, use that one
-# in preference to any others. Same logic is used when choosing library
-# and again with Tcl. The search order is the best place to look first, then in
-# decreasing significance. The loop breaks if the trigger file is found.
-# Note the gross little conversion here of srcdir by cd'ing to the found
-# directory. This converts the path from a relative to an absolute, so
-# recursive cache variables for the path will work right. We check all
-# the possible paths in one loop rather than many separate loops to speed
-# things up.
-# the alternative search directory is involked by --with-tkinclude
-#
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_tk=true
-AC_MSG_CHECKING(for Tk headers in the source tree)
-AC_ARG_WITH(tkinclude, [ --with-tkinclude directory where tk headers are], with_tkinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_tkh,[
-dnl first check to see if --with-tkinclude was specified
-if test x"${with_tkinclude}" != x ; then
- if test -f ${with_tkinclude}/tk.h ; then
- ac_cv_c_tkh=`(cd ${with_tkinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_tkinclude}/generic/tk.h ; then
- ac_cv_c_tkh=`(cd ${with_tkinclude}/generic; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tkinclude} directory doesn't contain headers])
- fi
-fi
-
-dnl next check if it came with Tk configuration file
-if test x"${ac_cv_c_tkconfig}" != x ; then
- for i in $dirlist; do
- if test -f $ac_cv_c_tkconfig/$i/generic/tk.h ; then
- ac_cv_c_tkh=`(cd $ac_cv_c_tkconfig/$i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tkh}" = x ; then
- dnl find the top level Tk source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/tk* 2>/dev/null`" ; then
- tkpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Tk source dir. We do it this way, cause there
- dnl might be multiple version of Tk, and we want the most recent one.
- for i in `ls -dr $tkpath/tk* 2>/dev/null ` ; do
- if test -f $i/generic/tk.h ; then
- ac_cv_c_tkh=`(cd $i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_tkh}" = x ; then
- AC_MSG_RESULT(none)
- dnl Get the path to the compiler. We do it this way instead of using
- dnl AC_CHECK_HEADER, cause this doesn't depend in having X configured.
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/include
- if test -f $ccpath/tk.h; then
- ac_cv_c_tkh=$ccpath
- fi
-else
- AC_MSG_RESULT(${ac_cv_c_tkh})
-fi
-])
- TKHDIR=""
-if test x"${ac_cv_c_tkh}" = x ; then
- AC_MSG_ERROR([Can't find any Tk headers])
-fi
-if test x"${ac_cv_c_tkh}" != x ; then
- no_tk=""
- if test x"${ac_cv_c_tkh}" != x"installed" ; then
- if test x"${CC}" = xcl ; then
- tmp="`cygpath --windows ${ac_cv_c_tkh}`"
- ac_cv_c_tkh="`echo $tmp | sed -e s#\\\\\\\\#/#g`"
- fi
- AC_MSG_RESULT([found in ${ac_cv_c_tkh}])
- TKHDIR="-I${ac_cv_c_tkh}"
- fi
-fi
-
-AC_SUBST(TKHDIR)
-])
-
-AC_DEFUN(CYG_AC_PATH_TKCONFIG, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-dnl First, look for one uninstalled.
-dnl the alternative search directory is invoked by --with-tkconfig
-if test x"${no_tk}" = x ; then
- dnl we reset no_tk in case something fails here
- no_tk=true
- AC_ARG_WITH(tkconfig, [ --with-tkconfig directory containing tk configuration (tkConfig.sh)],
- with_tkconfig=${withval})
- AC_MSG_CHECKING([for Tk configuration script])
- AC_CACHE_VAL(ac_cv_c_tkconfig,[
-
- dnl First check to see if --with-tkconfig was specified.
- if test x"${with_tkconfig}" != x ; then
- if test -f "${with_tkconfig}/tkConfig.sh" ; then
- ac_cv_c_tkconfig=`(cd ${with_tkconfig}; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
- fi
- fi
-
- dnl next check if it came with Tk configuration file in the source tree
- if test x"${ac_cv_c_tkconfig}" = x ; then
- for i in $dirlist; do
- dnl need to test both unix and win directories, since
- dnl cygwin's tkConfig.sh could be in either directory depending
- dnl on the cygwin port of tk.
- if test -f $srcdir/$i/unix/tkConfig.sh ; then
- ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})`
- break
- fi
- if test -f $srcdir/$i/win/tkConfig.sh ; then
- ac_cv_c_tkconfig=`(cd $srcdir/$i/unix; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- dnl check in a few other locations
- if test x"${ac_cv_c_tkconfig}" = x ; then
- dnl find the top level Tk source directory
- for i in $dirlist; do
- if test -n "`ls -dr $i/tk* 2>/dev/null`" ; then
- tkconfpath=$i
- break
- fi
- done
-
- dnl find the exact Tk dir. We do it this way, cause there
- dnl might be multiple version of Tk, and we want the most recent one.
- for i in `ls -dr $tkconfpath/tk* 2>/dev/null ` ; do
- dnl need to test both unix and win directories, since
- dnl cygwin's tkConfig.sh could be in either directory depending
- dnl on the cygwin port of tk.
- if test -f $i/unix/tkConfig.sh ; then
- ac_cv_c_tkconfig=`(cd $i/unix; ${PWDCMD-pwd})`
- break
- fi
- if test -f $i/win/tkConfig.sh ; then
- ac_cv_c_tkconfig=`(cd $i/win; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
-
- dnl Check to see if it's installed. We have to look in the $CC path
- dnl to find it, cause our $prefix may not match the compilers.
- if test x"${ac_cv_c_tkconfig}" = x ; then
- dnl Get the path to the compiler
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/lib
- if test -f $ccpath/tkConfig.sh; then
- ac_cv_c_tkconfig=$ccpath
- fi
- fi
- ]) dnl end of cache_val
-
- if test x"${ac_cv_c_tkconfig}" = x ; then
- TKCONFIG=""
- AC_MSG_WARN(Can't find Tk configuration definitions)
- else
- no_tk=""
- TKCONFIG=${ac_cv_c_tkconfig}/tkConfig.sh
- AC_MSG_RESULT(${TKCONFIG})
- fi
-fi
-AC_SUBST(TKCONFIG)
-])
-
-dnl Defined as a separate macro so we don't have to cache the values
-dnl from PATH_TKCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TKCONFIG, [
- if test -f "$TKCONFIG" ; then
- . $TKCONFIG
- fi
-
- AC_SUBST(TK_VERSION)
-dnl not actually used, don't export to save symbols
-dnl AC_SUBST(TK_MAJOR_VERSION)
-dnl AC_SUBST(TK_MINOR_VERSION)
- AC_SUBST(TK_DEFS)
-
-dnl not used, don't export to save symbols
- AC_SUBST(TK_LIB_FILE)
- AC_SUBST(TK_LIB_FULL_PATH)
- AC_SUBST(TK_LIBS)
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TK_PREFIX)
-
-dnl not used, don't export to save symbols
-dnl AC_SUBST(TK_EXEC_PREFIX)
- AC_SUBST(TK_BUILD_INCLUDES)
- AC_SUBST(TK_XINCLUDES)
- AC_SUBST(TK_XLIBSW)
- AC_SUBST(TK_BUILD_LIB_SPEC)
- AC_SUBST(TK_LIB_SPEC)
-])
-
-dnl ====================================================================
-dnl Ok, lets find the itcl source trees so we can use the headers
-dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCL, [
- CYG_AC_PATH_ITCLH
- CYG_AC_PATH_ITCLLIB
- CYG_AC_PATH_ITCLSH
- CYG_AC_PATH_ITCLMKIDX
-])
-AC_DEFUN(CYG_AC_PATH_ITCLH, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_itcl=true
-AC_MSG_CHECKING(for Itcl headers in the source tree)
-AC_ARG_WITH(itclinclude, [ --with-itclinclude directory where itcl headers are], with_itclinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_itclh,[
-dnl first check to see if --with-itclinclude was specified
-if test x"${with_itclinclude}" != x ; then
- if test -f ${with_itclinclude}/itcl.h ; then
- ac_cv_c_itclh=`(cd ${with_itclinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_itclinclude}/src/itcl.h ; then
- ac_cv_c_itclh=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_itclinclude} directory doesn't contain headers])
- fi
-fi
-
-dnl next check if it came with Itcl configuration file
-if test x"${ac_cv_c_itclconfig}" != x ; then
- for i in $dirlist; do
- if test -f $ac_cv_c_itclconfig/$i/src/itcl.h ; then
- ac_cv_c_itclh=`(cd $ac_cv_c_itclconfig/$i/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_itclh}" = x ; then
- dnl find the top level Itcl source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/itcl* 2>/dev/null`" ; then
- itclpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Itcl source dir. We do it this way, cause there
- dnl might be multiple version of Itcl, and we want the most recent one.
- for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do
- if test -f $i/src/itcl.h ; then
- ac_cv_c_itclh=`(cd $i/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_itclh}" = x ; then
- AC_MSG_RESULT(none)
- AC_CHECK_HEADER(itcl.h, ac_cv_c_itclh=installed, ac_cv_c_itclh="")
-else
- AC_MSG_RESULT(${ac_cv_c_itclh})
-fi
-])
- ITCLHDIR=""
-if test x"${ac_cv_c_itclh}" = x ; then
- AC_MSG_ERROR([Can't find any Itcl headers])
-fi
-if test x"${ac_cv_c_itclh}" != x ; then
- no_itcl=""
- if test x"${ac_cv_c_itclh}" != x"installed" ; then
- AC_MSG_RESULT(${ac_cv_c_itclh})
- ITCLHDIR="-I${ac_cv_c_itclh}"
- fi
-fi
-
-AC_SUBST(ITCLHDIR)
-])
-
-dnl Ok, lets find the itcl library
-dnl First, look for one uninstalled.
-dnl the alternative search directory is invoked by --with-itcllib
-AC_DEFUN(CYG_AC_PATH_ITCLLIB, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-if test x"${no_itcl}" = x ; then
- dnl we reset no_itcl incase something fails here
- no_itcl=true
- AC_ARG_WITH(itcllib,
- [ --with-itcllib directory where the itcl library is],
- with_itcllib=${withval})
- AC_MSG_CHECKING([for Itcl library])
- AC_CACHE_VAL(ac_cv_c_itcllib,[
- dnl First check to see if --with-itcllib was specified.
- if test x"${with_itcllib}" != x ; then
- if test -f "${with_itcllib}/libitcl$TCL_SHARED_LIB_SUFFIX" ; then
- ac_cv_c_itcllib=`(cd ${with_itcllib}; ${PWDCMD-pwd})`/libitcl$TCL_SHARED_LIB_SUFFIX
- else
- if test -f "${with_itcllib}/libitcl$TCL_UNSHARED_LIB_SUFFIX"; then
- ac_cv_c_itcllib=`(cd ${with_itcllib}; ${PWDCMD-pwd})`/libitcl$TCL_UNSHARED_LIB_SUFFIX
- fi
- fi
- fi
- dnl then check for a Itcl library. Since these are uninstalled,
- dnl use the simple lib name root.
- if test x"${ac_cv_c_itcllib}" = x ; then
- dnl find the top level Itcl build directory
- for i in $dirlist; do
- if test -n "`ls -dr $i/itcl* 2>/dev/null`" ; then
- itclpath=$i/itcl
- break
- fi
- done
- dnl Itcl 7.5 and greater puts library in subdir. Look there first.
- if test -f "$itclpath/src/libitcl.$TCL_SHLIB_SUFFIX" ; then
- ac_cv_c_itcllib=`(cd $itclpath/src; ${PWDCMD-pwd})`
- elif test -f "$itclpath/src/libitcl.a"; then
- ac_cv_c_itcllib=`(cd $itclpath/src; ${PWDCMD-pwd})`
- fi
- fi
- dnl check in a few other private locations
- if test x"${ac_cv_c_itcllib}" = x ; then
- for i in ${dirlist}; do
- if test -n "`ls -dr ${srcdir}/$i/itcl* 2>/dev/null`" ; then
- itclpath=${srcdir}/$i
- break
- fi
- done
- for i in `ls -dr ${itclpath}/itcl* 2>/dev/null` ; do
- dnl Itcl 7.5 and greater puts library in subdir. Look there first.
- if test -f "$i/src/libitcl$TCL_SHLIB_SUFFIX" ; then
- ac_cv_c_itcllib=`(cd $i/src; ${PWDCMD-pwd})`
- break
- elif test -f "$i/src/libitcl.a"; then
- ac_cv_c_itcllib=`(cd $i/src; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
-
- dnl see if one is conveniently installed with the compiler
- if test x"${ac_cv_c_itcllib}" = x ; then
- dnl Get the path to the compiler
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/lib
- dnl Itcl 7.5 and greater puts library in subdir. Look there first.
- if test -f "${ccpath}/libitcl$TCL_SHLIB_SUFFIX" ; then
- ac_cv_c_itcllib=`(cd ${ccpath}; ${PWDCMD-pwd})`
- elif test -f "${ccpath}/libitcl.a"; then
- ac_cv_c_itcllib=`(cd ${ccpath}; ${PWDCMD-pwd})`
- fi
- fi
- ])
- if test x"${ac_cv_c_itcllib}" = x ; then
- ITCLLIB=""
- AC_MSG_WARN(Can't find Itcl library)
- else
- ITCLLIB="-L${ac_cv_c_itcllib}"
- AC_MSG_RESULT(${ac_cv_c_itcllib})
- no_itcl=""
- fi
-fi
-
-AC_PROVIDE([$0])
-AC_SUBST(ITCLLIB)
-])
-
-
-dnl ====================================================================
-dnl Ok, lets find the itcl source trees so we can use the itcl_sh script
-dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCLSH, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_itcl=true
-AC_MSG_CHECKING(for the itcl_sh script)
-AC_ARG_WITH(itclinclude, [ --with-itclinclude directory where itcl headers are], with_itclinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_itclsh,[
-dnl first check to see if --with-itclinclude was specified
-if test x"${with_itclinclude}" != x ; then
- if test -f ${with_itclinclude}/itcl_sh ; then
- ac_cv_c_itclsh=`(cd ${with_itclinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_itclinclude}/src/itcl_sh ; then
- ac_cv_c_itclsh=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_itclinclude} directory doesn't contain itcl_sh])
- fi
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_itclsh}" = x ; then
- dnl find the top level Itcl source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/itcl* 2>/dev/null`" ; then
- itclpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Itcl source dir. We do it this way, cause there
- dnl might be multiple version of Itcl, and we want the most recent one.
- for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do
- if test -f $i/src/itcl_sh ; then
- ac_cv_c_itclsh=`(cd $i/src; ${PWDCMD-pwd})`/itcl_sh
- break
- fi
- done
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_itclsh}" = x ; then
- AC_MSG_RESULT(none)
- AC_PATH_PROG(ac_cv_c_itclsh, itcl_sh)
-else
- AC_MSG_RESULT(${ac_cv_c_itclsh})
-fi
-])
-
-if test x"${ac_cv_c_itclsh}" = x ; then
- AC_MSG_ERROR([Can't find the itcl_sh script])
-fi
-if test x"${ac_cv_c_itclsh}" != x ; then
- no_itcl=""
- AC_MSG_RESULT(${ac_cv_c_itclsh})
- ITCLSH="${ac_cv_c_itclsh}"
-fi
-AC_SUBST(ITCLSH)
-])
-
-
-dnl ====================================================================
-dnl Ok, lets find the itcl source trees so we can use the itcl_sh script
-dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCLMKIDX, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_itcl=true
-AC_MSG_CHECKING(for itcl_mkindex.tcl script)
-AC_ARG_WITH(itclinclude, [ --with-itclinclude directory where itcl headers are], with_itclinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_itclmkidx,[
-dnl first check to see if --with-itclinclude was specified
-if test x"${with_itclinclude}" != x ; then
- if test -f ${with_itclinclude}/itcl_sh ; then
- ac_cv_c_itclmkidx=`(cd ${with_itclinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_itclinclude}/src/itcl_sh ; then
- ac_cv_c_itclmkidx=`(cd ${with_itclinclude}/src; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_itclinclude} directory doesn't contain itcl_sh])
- fi
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_itclmkidx}" = x ; then
- dnl find the top level Itcl source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/itcl* 2>/dev/null`" ; then
- itclpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Itcl source dir. We do it this way, cause there
- dnl might be multiple version of Itcl, and we want the most recent one.
- for i in `ls -dr $itclpath/itcl* 2>/dev/null ` ; do
- if test -f $i/library/itcl_mkindex.tcl ; then
- ac_cv_c_itclmkidx=`(cd $i/library; ${PWDCMD-pwd})`/itcl_mkindex.tcl
- break
- fi
- done
-fi
-if test x"${ac_cv_c_itclmkidx}" = x ; then
- dnl Get the path to the compiler
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/share
- dnl Itcl 7.5 and greater puts library in subdir. Look there first.
- for i in `ls -dr $ccpath/itcl* 2>/dev/null ` ; do
- if test -f $i/itcl_mkindex.tcl ; then
- ac_cv_c_itclmkidx=`(cd $i; ${PWDCMD-pwd})`/itcl_mkindex.tcl
- break
- fi
- done
-fi
-])
-
-if test x"${ac_cv_c_itclmkidx}" = x ; then
- AC_MSG_ERROR([Can't find the itcl_mkindex.tcl script])
-fi
-if test x"${ac_cv_c_itclmkidx}" != x ; then
- no_itcl=""
- AC_MSG_RESULT(${ac_cv_c_itclmkidx})
- ITCLMKIDX="${ac_cv_c_itclmkidx}"
-else
- AC_MSG_RESULT(none)
-fi
-AC_SUBST(ITCLMKIDX)
-])
-
-dnl ====================================================================
-dnl Ok, lets find the tix source trees so we can use the headers
-dnl the alternative search directory is involked by --with-tixinclude
-AC_DEFUN(CYG_AC_PATH_TIX, [
- CYG_AC_PATH_TIXH
- CYG_AC_PATH_TIXLIB
-])
-AC_DEFUN(CYG_AC_PATH_TIXH, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-no_tix=true
-AC_MSG_CHECKING(for Tix headers in the source tree)
-AC_ARG_WITH(tixinclude, [ --with-tixinclude directory where tix headers are], with_tixinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_tixh,[
-dnl first check to see if --with-tixinclude was specified
-if test x"${with_tixinclude}" != x ; then
- if test -f ${with_tixinclude}/tix.h ; then
- ac_cv_c_tixh=`(cd ${with_tixinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_tixinclude}/generic/tix.h ; then
- ac_cv_c_tixh=`(cd ${with_tixinclude}/generic; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tixinclude} directory doesn't contain headers])
- fi
-fi
-
-dnl next check if it came with Tix configuration file
-if test x"${ac_cv_c_tixconfig}" != x ; then
- for i in $dirlist; do
- if test -f $ac_cv_c_tixconfig/$i/generic/tix.h ; then
- ac_cv_c_tixh=`(cd $ac_cv_c_tixconfig/$i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_tixh}" = x ; then
- dnl find the top level Tix source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/tix* 2>/dev/null`" ; then
- tixpath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Tix source dir. We do it this way, cause there
- dnl might be multiple version of Tix, and we want the most recent one.
- for i in `ls -dr $tixpath/tix* 2>/dev/null ` ; do
- if test -f $i/generic/tix.h ; then
- ac_cv_c_tixh=`(cd $i/generic; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_tixh}" = x ; then
- AC_MSG_RESULT(none)
- dnl Get the path to the compiler
-
- dnl Get the path to the compiler. We do it this way instead of using
- dnl AC_CHECK_HEADER, cause this doesn't depend in having X configured.
- ccpath=`which ${CC} | sed -e 's:/bin/.*::'`/include
- if test -f $ccpath/tix.h; then
- ac_cv_c_tixh=installed
- fi
-else
- AC_MSG_RESULT(${ac_cv_c_tixh})
-fi
-])
-if test x"${ac_cv_c_tixh}" = x ; then
- AC_MSG_ERROR([Can't find any Tix headers])
-fi
-if test x"${ac_cv_c_tixh}" != x ; then
- no_tix=""
- AC_MSG_RESULT(${ac_cv_c_tixh})
- if test x"${ac_cv_c_tixh}" != x"installed" ; then
- TIXHDIR="-I${ac_cv_c_tixh}"
- fi
-fi
-
-AC_SUBST(TIXHDIR)
-])
-
-AC_DEFUN(CYG_AC_PATH_TIXCONFIG, [
-#
-# Ok, lets find the tix configuration
-# First, look for one uninstalled.
-# the alternative search directory is invoked by --with-tixconfig
-#
-
-if test x"${no_tix}" = x ; then
- # we reset no_tix in case something fails here
- no_tix=true
- AC_ARG_WITH(tixconfig, [ --with-tixconfig directory containing tix configuration (tixConfig.sh)],
- with_tixconfig=${withval})
- AC_MSG_CHECKING([for Tix configuration])
- AC_CACHE_VAL(ac_cv_c_tixconfig,[
-
- # First check to see if --with-tixconfig was specified.
- if test x"${with_tixconfig}" != x ; then
- if test -f "${with_tixconfig}/tixConfig.sh" ; then
- ac_cv_c_tixconfig=`(cd ${with_tixconfig}; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_tixconfig} directory doesn't contain tixConfig.sh])
- fi
- fi
-
- # then check for a private Tix library
- if test x"${ac_cv_c_tixconfig}" = x ; then
- for i in \
- ../tix \
- `ls -dr ../tix[[4]]* 2>/dev/null` \
- ../../tix \
- `ls -dr ../../tix[[4]]* 2>/dev/null` \
- ../../../tix \
- `ls -dr ../../../tix[[4]]* 2>/dev/null` ; do
- if test -f "$i/tixConfig.sh" ; then
- ac_cv_c_tixconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few common install locations
- if test x"${ac_cv_c_tixconfig}" = x ; then
- for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
- if test -f "$i/tixConfig.sh" ; then
- ac_cv_c_tkconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few other private locations
- if test x"${ac_cv_c_tixconfig}" = x ; then
- for i in \
- ${srcdir}/../tix \
- `ls -dr ${srcdir}/../tix[[4-9]]* 2>/dev/null` ; do
- if test -f "$i/tixConfig.sh" ; then
- ac_cv_c_tixconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- ])
- if test x"${ac_cv_c_tixconfig}" = x ; then
- TIXCONFIG="# no Tix configs found"
- AC_MSG_WARN(Can't find Tix configuration definitions)
- else
- no_tix=
- TIXCONFIG=${ac_cv_c_tixconfig}/tixConfig.sh
- AC_MSG_RESULT(found $TIXCONFIG)
- fi
-fi
-
-])
-
-# Defined as a separate macro so we don't have to cache the values
-# from PATH_TIXCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TIXCONFIG, [
- if test -f "$TIXCONFIG" ; then
- . $TIXCONFIG
- fi
-
- AC_SUBST(TIX_BUILD_LIB_SPEC)
- AC_SUBST(TIX_LIB_FULL_PATH)
-])
-
-AC_DEFUN(CYG_AC_PATH_ITCLCONFIG, [
-#
-# Ok, lets find the itcl configuration
-# First, look for one uninstalled.
-# the alternative search directory is invoked by --with-itclconfig
-#
-
-if test x"${no_itcl}" = x ; then
- # we reset no_itcl in case something fails here
- no_itcl=true
- AC_ARG_WITH(itclconfig, [ --with-itclconfig directory containing itcl configuration (itclConfig.sh)],
- with_itclconfig=${withval})
- AC_MSG_CHECKING([for Itcl configuration])
- AC_CACHE_VAL(ac_cv_c_itclconfig,[
-
- # First check to see if --with-itclconfig was specified.
- if test x"${with_itclconfig}" != x ; then
- if test -f "${with_itclconfig}/itclConfig.sh" ; then
- ac_cv_c_itclconfig=`(cd ${with_itclconfig}; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_itclconfig} directory doesn't contain itclConfig.sh])
- fi
- fi
-
- # then check for a private itcl library
- if test x"${ac_cv_c_itclconfig}" = x ; then
- for i in \
- ../itcl/itcl \
- `ls -dr ../itcl/itcl[[3]]* 2>/dev/null` \
- ../../itcl/itcl \
- `ls -dr ../../itcl/itcl[[3]]* 2>/dev/null` \
- ../../../itcl/itcl \
- `ls -dr ../../../itcl/itcl[[3]]* 2>/dev/null` ; do
- if test -f "$i/itclConfig.sh" ; then
- ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few common install locations
- if test x"${ac_cv_c_itclconfig}" = x ; then
- for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
- if test -f "$i/itclConfig.sh" ; then
- ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few other private locations
- if test x"${ac_cv_c_itclconfig}" = x ; then
- for i in \
- ${srcdir}/../itcl/itcl \
- `ls -dr ${srcdir}/../itcl/itcl[[3]]* 2>/dev/null` ; do
- if test -f "$i/itcl/itclConfig.sh" ; then
- ac_cv_c_itclconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- ])
- if test x"${ac_cv_c_itclconfig}" = x ; then
- ITCLCONFIG="# no itcl configs found"
- AC_MSG_WARN(Can't find itcl configuration definitions)
- else
- no_itcl=
- ITCLCONFIG=${ac_cv_c_itclconfig}/itclConfig.sh
- AC_MSG_RESULT(found $ITCLCONFIG)
- fi
-fi
-
-])
-
-# Defined as a separate macro so we don't have to cache the values
-# from PATH_ITCLCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_ITCLCONFIG, [
- if test -f "$ITCLCONFIG" ; then
- . $ITCLCONFIG
- fi
-
- AC_SUBST(ITCL_BUILD_LIB_SPEC)
- AC_SUBST(ITCL_SH)
- AC_SUBST(ITCL_LIB_FILE)
- AC_SUBST(ITCL_LIB_FULL_PATH)
-
-])
-
-
-AC_DEFUN(CYG_AC_PATH_ITKCONFIG, [
-#
-# Ok, lets find the itk configuration
-# First, look for one uninstalled.
-# the alternative search directory is invoked by --with-itkconfig
-#
-
-if test x"${no_itk}" = x ; then
- # we reset no_itk in case something fails here
- no_itk=true
- AC_ARG_WITH(itkconfig, [ --with-itkconfig directory containing itk configuration (itkConfig.sh)],
- with_itkconfig=${withval})
- AC_MSG_CHECKING([for Itk configuration])
- AC_CACHE_VAL(ac_cv_c_itkconfig,[
-
- # First check to see if --with-itkconfig was specified.
- if test x"${with_itkconfig}" != x ; then
- if test -f "${with_itkconfig}/itkConfig.sh" ; then
- ac_cv_c_itkconfig=`(cd ${with_itkconfig}; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_itkconfig} directory doesn't contain itkConfig.sh])
- fi
- fi
-
- # then check for a private itk library
- if test x"${ac_cv_c_itkconfig}" = x ; then
- for i in \
- ../itcl/itk \
- `ls -dr ../itcl/itk[[3]]* 2>/dev/null` \
- ../../itcl/itk \
- `ls -dr ../../itcl/itk[[3]]* 2>/dev/null` \
- ../../../itcl/itk \
- `ls -dr ../../../itcl/itk[[3]]* 2>/dev/null` ; do
- if test -f "$i/itkConfig.sh" ; then
- ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few common install locations
- if test x"${ac_cv_c_itkconfig}" = x ; then
- for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
- if test -f "$i/itcl/itkConfig.sh" ; then
- ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- # check in a few other private locations
- if test x"${ac_cv_c_itkconfig}" = x ; then
- for i in \
- ${srcdir}/../itcl/itk \
- `ls -dr ${srcdir}/../itcl/itk[[3]]* 2>/dev/null` ; do
- if test -f "$i/itkConfig.sh" ; then
- ac_cv_c_itkconfig=`(cd $i; ${PWDCMD-pwd})`
- break
- fi
- done
- fi
- ])
- if test x"${ac_cv_c_itkconfig}" = x ; then
- ITCLCONFIG="# no itk configs found"
- AC_MSG_WARN(Can't find itk configuration definitions)
- else
- no_itk=
- ITKCONFIG=${ac_cv_c_itkconfig}/itkConfig.sh
- AC_MSG_RESULT(found $ITKCONFIG)
- fi
-fi
-
-])
-
-# Defined as a separate macro so we don't have to cache the values
-# from PATH_ITKCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_ITKCONFIG, [
- if test -f "$ITKCONFIG" ; then
- . $ITKCONFIG
- fi
-
- AC_SUBST(ITK_BUILD_LIB_SPEC)
- AC_SUBST(ITK_LIB_FILE)
- AC_SUBST(ITK_LIB_FULL_PATH)
-])
-
-
-dnl ====================================================================
-dnl Ok, lets find the libgui source trees so we can use the headers
-dnl the alternative search directory is involked by --with-libguiinclude
-AC_DEFUN(CYG_AC_PATH_LIBGUI, [
- CYG_AC_PATH_LIBGUIH
- CYG_AC_PATH_LIBGUILIB
-])
-AC_DEFUN(CYG_AC_PATH_LIBGUIH, [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../..../../../../../../../../../../.."
-no_libgui=true
-AC_MSG_CHECKING(for Libgui headers in the source tree)
-AC_ARG_WITH(libguiinclude, [ --with-libguiinclude directory where libgui headers are], with_libguiinclude=${withval})
-AC_CACHE_VAL(ac_cv_c_libguih,[
-dnl first check to see if --with-libguiinclude was specified
-if test x"${with_libguiinclude}" != x ; then
- if test -f ${with_libguiinclude}/guitcl.h ; then
- ac_cv_c_libguih=`(cd ${with_libguiinclude}; ${PWDCMD-pwd})`
- elif test -f ${with_libguiinclude}/src/guitcl.h ; then
- ac_cv_c_libguih=`(cd ${with_libguiinclude}/src; ${PWDCMD-pwd})`
- else
- AC_MSG_ERROR([${with_libguiinclude} directory doesn't contain headers])
- fi
-fi
-
-dnl next check if it came with Libgui configuration file
-if test x"${ac_cv_c_libguiconfig}" != x ; then
- for i in $dirlist; do
- if test -f $ac_cv_c_libguiconfig/$i/src/guitcl.h ; then
- ac_cv_c_libguih=`(cd $ac_cv_c_libguiconfig/$i/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl next check in private source directory
-dnl since ls returns lowest version numbers first, reverse its output
-if test x"${ac_cv_c_libguih}" = x ; then
- dnl find the top level Libgui source directory
- for i in $dirlist; do
- if test -n "`ls -dr $srcdir/$i/libgui* 2>/dev/null`" ; then
- libguipath=$srcdir/$i
- break
- fi
- done
-
- dnl find the exact Libgui source dir. We do it this way, cause there
- dnl might be multiple version of Libgui, and we want the most recent one.
- for i in `ls -dr $libguipath/libgui* 2>/dev/null ` ; do
- if test -f $i/src/guitcl.h ; then
- ac_cv_c_libguih=`(cd $i/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-
-dnl see if one is installed
-if test x"${ac_cv_c_libguih}" = x ; then
- AC_MSG_RESULT(none)
- AC_CHECK_HEADER(guitcl.h, ac_cv_c_libguih=installed, ac_cv_c_libguih="")
-fi
-])
-LIBGUIHDIR=""
-if test x"${ac_cv_c_libguih}" = x ; then
- AC_MSG_WARN([Can't find any Libgui headers])
-fi
-if test x"${ac_cv_c_libguih}" != x ; then
- no_libgui=""
- if test x"${ac_cv_c_libguih}" != x"installed" ; then
- LIBGUIHDIR="-I${ac_cv_c_libguih}"
- fi
-fi
-AC_MSG_RESULT(${ac_cv_c_libguih})
-AC_SUBST(LIBGUIHDIR)
-])
-
-dnl ====================================================================
-dnl find the GUI library
-AC_DEFUN(CYG_AC_PATH_LIBGUILIB, [
-AC_MSG_CHECKING(for GUI library in the build tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-dnl look for the library
-AC_MSG_CHECKING(for GUI library)
-AC_CACHE_VAL(ac_cv_c_libguilib,[
-if test x"${ac_cv_c_libguilib}" = x ; then
- for i in $dirlist; do
- if test -f "$i/libgui/src/Makefile" ; then
- ac_cv_c_libguilib=`(cd $i/libgui/src; ${PWDCMD-pwd})`
- break
- fi
- done
-fi
-])
-if test x"${ac_cv_c_libguilib}" != x ; then
- GUILIB="${GUILIB} -L${ac_cv_c_libguilib}"
- LIBGUILIB="-lgui"
- AC_MSG_RESULT(${ac_cv_c_libguilib})
-else
- AC_MSG_RESULT(none)
-fi
-
-AC_SUBST(GUILIB)
-AC_SUBST(LIBGUILIB)
-])
diff --git a/contrib/binutils/config/mh-armpic b/contrib/binutils/config/mh-armpic
deleted file mode 100644
index 35cf2c8ee4e3..000000000000
--- a/contrib/binutils/config/mh-armpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fPIC
diff --git a/contrib/binutils/config/mh-cxux b/contrib/binutils/config/mh-cxux
deleted file mode 100644
index 0a98f113bafb..000000000000
--- a/contrib/binutils/config/mh-cxux
+++ /dev/null
@@ -1,7 +0,0 @@
-# Configuration for Harris CX/UX 7 (and maybe 6), based on sysv4 configuration.
-
-RANLIB = true
-
-# The l flag generates a warning from the SVR4 archiver, remove it.
-AR_FLAGS = cq
-
diff --git a/contrib/binutils/config/mh-decstation b/contrib/binutils/config/mh-decstation
deleted file mode 100644
index 320927c306a4..000000000000
--- a/contrib/binutils/config/mh-decstation
+++ /dev/null
@@ -1,3 +0,0 @@
-# for X11, since the native DECwindows include files are really broken when
-# it comes to function prototypes.
-X11_EXTRA_CFLAGS = "-DNeedFunctionPrototypes=0"
diff --git a/contrib/binutils/config/mh-elfalphapic b/contrib/binutils/config/mh-elfalphapic
deleted file mode 100644
index 35cf2c8ee4e3..000000000000
--- a/contrib/binutils/config/mh-elfalphapic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fPIC
diff --git a/contrib/binutils/config/mh-ia64pic b/contrib/binutils/config/mh-ia64pic
deleted file mode 100644
index 92e48d90fbdf..000000000000
--- a/contrib/binutils/config/mh-ia64pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fpic
diff --git a/contrib/binutils/config/mh-mingw32 b/contrib/binutils/config/mh-mingw32
deleted file mode 100644
index f622c8bec018..000000000000
--- a/contrib/binutils/config/mh-mingw32
+++ /dev/null
@@ -1,7 +0,0 @@
-# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
-# built without debugging information
-
-LIBGCC2_DEBUG_CFLAGS=
-
-# custom installation rules for mingw32 (append .exe to binaries, etc.)
-# INSTALL_DOSREL=install-dosrel
diff --git a/contrib/binutils/config/mh-necv4 b/contrib/binutils/config/mh-necv4
deleted file mode 100644
index 6845f3caa200..000000000000
--- a/contrib/binutils/config/mh-necv4
+++ /dev/null
@@ -1,6 +0,0 @@
-# Host Makefile fragment for NEC MIPS SVR4.
-
-RANLIB = true
-
-# NEC -lX11 needs some other libraries.
-X11_EXTRA_LIBS = -lsocket -lnsl
diff --git a/contrib/binutils/config/mh-openedition b/contrib/binutils/config/mh-openedition
deleted file mode 100644
index 40030020773a..000000000000
--- a/contrib/binutils/config/mh-openedition
+++ /dev/null
@@ -1 +0,0 @@
-RANLIB = true
diff --git a/contrib/binutils/config/mh-papic b/contrib/binutils/config/mh-papic
deleted file mode 100644
index 35cf2c8ee4e3..000000000000
--- a/contrib/binutils/config/mh-papic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fPIC
diff --git a/contrib/binutils/config/mh-ppcpic b/contrib/binutils/config/mh-ppcpic
deleted file mode 100644
index 35cf2c8ee4e3..000000000000
--- a/contrib/binutils/config/mh-ppcpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fPIC
diff --git a/contrib/binutils/config/mh-s390pic b/contrib/binutils/config/mh-s390pic
deleted file mode 100644
index 92e48d90fbdf..000000000000
--- a/contrib/binutils/config/mh-s390pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fpic
diff --git a/contrib/binutils/config/mh-sco b/contrib/binutils/config/mh-sco
deleted file mode 100644
index 574b92aa71d7..000000000000
--- a/contrib/binutils/config/mh-sco
+++ /dev/null
@@ -1,5 +0,0 @@
-RANLIB = true
-# You may need this if you don't have bison.
-# BISON = yacc -Sm10400
-
-X11_EXTRA_LIBS = -lsocket -lm -lintl -lmalloc
diff --git a/contrib/binutils/config/mh-solaris b/contrib/binutils/config/mh-solaris
deleted file mode 100644
index 16553c5f3cd9..000000000000
--- a/contrib/binutils/config/mh-solaris
+++ /dev/null
@@ -1,5 +0,0 @@
-# Makefile changes for Suns running Solaris 2
-
-RANLIB = true
-
-X11_EXTRA_LIBS = -lnsl -lsocket
diff --git a/contrib/binutils/config/mh-sparcpic b/contrib/binutils/config/mh-sparcpic
deleted file mode 100644
index e218bb48aa43..000000000000
--- a/contrib/binutils/config/mh-sparcpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
diff --git a/contrib/binutils/config/mh-sysv b/contrib/binutils/config/mh-sysv
deleted file mode 100644
index 40030020773a..000000000000
--- a/contrib/binutils/config/mh-sysv
+++ /dev/null
@@ -1 +0,0 @@
-RANLIB = true
diff --git a/contrib/binutils/config/mh-sysv4 b/contrib/binutils/config/mh-sysv4
deleted file mode 100644
index 3634950d75cb..000000000000
--- a/contrib/binutils/config/mh-sysv4
+++ /dev/null
@@ -1,6 +0,0 @@
-RANLIB = true
-
-# The l flag generates a warning from the SVR4 archiver, remove it.
-AR_FLAGS = cr
-
-X11_EXTRA_LIBS = -lnsl
diff --git a/contrib/binutils/config/mh-sysv5 b/contrib/binutils/config/mh-sysv5
deleted file mode 100644
index 3634950d75cb..000000000000
--- a/contrib/binutils/config/mh-sysv5
+++ /dev/null
@@ -1,6 +0,0 @@
-RANLIB = true
-
-# The l flag generates a warning from the SVR4 archiver, remove it.
-AR_FLAGS = cr
-
-X11_EXTRA_LIBS = -lnsl
diff --git a/contrib/binutils/config/mh-x86pic b/contrib/binutils/config/mh-x86pic
deleted file mode 100644
index 92e48d90fbdf..000000000000
--- a/contrib/binutils/config/mh-x86pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG=-fpic
diff --git a/contrib/binutils/config/mt-alphaieee b/contrib/binutils/config/mt-alphaieee
deleted file mode 100644
index 9c205314ad5b..000000000000
--- a/contrib/binutils/config/mt-alphaieee
+++ /dev/null
@@ -1,2 +0,0 @@
-CFLAGS_FOR_TARGET += -mieee
-CXXFLAGS_FOR_TARGET += -mieee
diff --git a/contrib/binutils/config/mt-armpic b/contrib/binutils/config/mt-armpic
deleted file mode 100644
index 35b8c9e4dc23..000000000000
--- a/contrib/binutils/config/mt-armpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fPIC
diff --git a/contrib/binutils/config/mt-elfalphapic b/contrib/binutils/config/mt-elfalphapic
deleted file mode 100644
index 35b8c9e4dc23..000000000000
--- a/contrib/binutils/config/mt-elfalphapic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fPIC
diff --git a/contrib/binutils/config/mt-ia64pic b/contrib/binutils/config/mt-ia64pic
deleted file mode 100644
index ff9872755757..000000000000
--- a/contrib/binutils/config/mt-ia64pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fpic
diff --git a/contrib/binutils/config/mt-linux b/contrib/binutils/config/mt-linux
deleted file mode 100644
index 15bf41716033..000000000000
--- a/contrib/binutils/config/mt-linux
+++ /dev/null
@@ -1 +0,0 @@
-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
diff --git a/contrib/binutils/config/mt-ospace b/contrib/binutils/config/mt-ospace
deleted file mode 100644
index 7f091041d8a7..000000000000
--- a/contrib/binutils/config/mt-ospace
+++ /dev/null
@@ -1,3 +0,0 @@
-# Build libraries optimizing for space, not speed.
- CFLAGS_FOR_TARGET = -g -Os
- CXXFLAGS_FOR_TARGET = -g -Os
diff --git a/contrib/binutils/config/mt-papic b/contrib/binutils/config/mt-papic
deleted file mode 100644
index 35b8c9e4dc23..000000000000
--- a/contrib/binutils/config/mt-papic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fPIC
diff --git a/contrib/binutils/config/mt-ppcpic b/contrib/binutils/config/mt-ppcpic
deleted file mode 100644
index 35b8c9e4dc23..000000000000
--- a/contrib/binutils/config/mt-ppcpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fPIC
diff --git a/contrib/binutils/config/mt-s390pic b/contrib/binutils/config/mt-s390pic
deleted file mode 100644
index ff9872755757..000000000000
--- a/contrib/binutils/config/mt-s390pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fpic
diff --git a/contrib/binutils/config/mt-sparcpic b/contrib/binutils/config/mt-sparcpic
deleted file mode 100644
index a62b38bd9c1b..000000000000
--- a/contrib/binutils/config/mt-sparcpic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
diff --git a/contrib/binutils/config/mt-v810 b/contrib/binutils/config/mt-v810
deleted file mode 100644
index 97da6c265921..000000000000
--- a/contrib/binutils/config/mt-v810
+++ /dev/null
@@ -1,4 +0,0 @@
-CC_FOR_TARGET = ca732 -ansi
-AS_FOR_TARGET = as732
-AR_FOR_TARGET = ar732
-RANLIB_FOR_TARGET = true
diff --git a/contrib/binutils/config/mt-x86pic b/contrib/binutils/config/mt-x86pic
deleted file mode 100644
index ff9872755757..000000000000
--- a/contrib/binutils/config/mt-x86pic
+++ /dev/null
@@ -1 +0,0 @@
-PICFLAG_FOR_TARGET=-fpic
diff --git a/contrib/binutils/contrib/ChangeLog b/contrib/binutils/contrib/ChangeLog
deleted file mode 100644
index 4a0de852933a..000000000000
--- a/contrib/binutils/contrib/ChangeLog
+++ /dev/null
@@ -1,7 +0,0 @@
-2002-07-03 Nick Clifton <nickc@cambridge.redhat.com>
-
- * ChangeLog: Newly created.
- * texi2pod.pl: Imported from FSF GCC sources.
-
-
-
diff --git a/contrib/binutils/contrib/texi2pod.pl b/contrib/binutils/contrib/texi2pod.pl
deleted file mode 100755
index e5560f303de2..000000000000
--- a/contrib/binutils/contrib/texi2pod.pl
+++ /dev/null
@@ -1,431 +0,0 @@
-#! /usr/bin/perl -w
-
-# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-
-# This file is part of GNU CC.
-
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston MA 02111-1307, USA.
-
-# This does trivial (and I mean _trivial_) conversion of Texinfo
-# markup to Perl POD format. It's intended to be used to extract
-# something suitable for a manpage from a Texinfo document.
-
-$output = 0;
-$skipping = 0;
-%sects = ();
-$section = "";
-@icstack = ();
-@endwstack = ();
-@skstack = ();
-@instack = ();
-$shift = "";
-%defs = ();
-$fnno = 1;
-$inf = "";
-$ibase = "";
-
-while ($_ = shift) {
- if (/^-D(.*)$/) {
- if ($1 ne "") {
- $flag = $1;
- } else {
- $flag = shift;
- }
- $value = "";
- ($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);
- die "no flag specified for -D\n"
- unless $flag ne "";
- die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
- unless $flag =~ /^[a-zA-Z0-9_-]+$/;
- $defs{$flag} = $value;
- } elsif (/^-/) {
- usage();
- } else {
- $in = $_, next unless defined $in;
- $out = $_, next unless defined $out;
- usage();
- }
-}
-
-if (defined $in) {
- $inf = gensym();
- open($inf, "<$in") or die "opening \"$in\": $!\n";
- $ibase = $1 if $in =~ m|^(.+)/[^/]+$|;
-} else {
- $inf = \*STDIN;
-}
-
-if (defined $out) {
- open(STDOUT, ">$out") or die "opening \"$out\": $!\n";
-}
-
-while(defined $inf) {
-while(<$inf>) {
- # Certain commands are discarded without further processing.
- /^\@(?:
- [a-z]+index # @*index: useful only in complete manual
- |need # @need: useful only in printed manual
- |(?:end\s+)?group # @group .. @end group: ditto
- |page # @page: ditto
- |node # @node: useful only in .info file
- |(?:end\s+)?ifnottex # @ifnottex .. @end ifnottex: use contents
- )\b/x and next;
-
- chomp;
-
- # Look for filename and title markers.
- /^\@setfilename\s+([^.]+)/ and $fn = $1, next;
- /^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next;
-
- # Identify a man title but keep only the one we are interested in.
- /^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do {
- if (exists $defs{$1}) {
- $fn = $1;
- $tl = postprocess($2);
- }
- next;
- };
-
- # Look for blocks surrounded by @c man begin SECTION ... @c man end.
- # This really oughta be @ifman ... @end ifman and the like, but such
- # would require rev'ing all other Texinfo translators.
- /^\@c\s+man\s+begin\s+([A-Z]+)\s+([A-Za-z0-9-]+)/ and do {
- $output = 1 if exists $defs{$2};
- $sect = $1;
- next;
- };
- /^\@c\s+man\s+begin\s+([A-Z]+)/ and $sect = $1, $output = 1, next;
- /^\@c\s+man\s+end/ and do {
- $sects{$sect} = "" unless exists $sects{$sect};
- $sects{$sect} .= postprocess($section);
- $section = "";
- $output = 0;
- next;
- };
-
- # handle variables
- /^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do {
- $defs{$1} = $2;
- next;
- };
- /^\@clear\s+([a-zA-Z0-9_-]+)/ and do {
- delete $defs{$1};
- next;
- };
-
- next unless $output;
-
- # Discard comments. (Can't do it above, because then we'd never see
- # @c man lines.)
- /^\@c\b/ and next;
-
- # End-block handler goes up here because it needs to operate even
- # if we are skipping.
- /^\@end\s+([a-z]+)/ and do {
- # Ignore @end foo, where foo is not an operation which may
- # cause us to skip, if we are presently skipping.
- my $ended = $1;
- next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/;
-
- die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
- die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
-
- $endw = pop @endwstack;
-
- if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) {
- $skipping = pop @skstack;
- next;
- } elsif ($ended =~ /^(?:example|smallexample|display)$/) {
- $shift = "";
- $_ = ""; # need a paragraph break
- } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {
- $_ = "\n=back\n";
- $ic = pop @icstack;
- } else {
- die "unknown command \@end $ended at line $.\n";
- }
- };
-
- # We must handle commands which can cause skipping even while we
- # are skipping, otherwise we will not process nested conditionals
- # correctly.
- /^\@ifset\s+([a-zA-Z0-9_-]+)/ and do {
- push @endwstack, $endw;
- push @skstack, $skipping;
- $endw = "ifset";
- $skipping = 1 unless exists $defs{$1};
- next;
- };
-
- /^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do {
- push @endwstack, $endw;
- push @skstack, $skipping;
- $endw = "ifclear";
- $skipping = 1 if exists $defs{$1};
- next;
- };
-
- /^\@(ignore|menu|iftex)\b/ and do {
- push @endwstack, $endw;
- push @skstack, $skipping;
- $endw = $1;
- $skipping = 1;
- next;
- };
-
- next if $skipping;
-
- # Character entities. First the ones that can be replaced by raw text
- # or discarded outright:
- s/\@copyright\{\}/(c)/g;
- s/\@dots\{\}/.../g;
- s/\@enddots\{\}/..../g;
- s/\@([.!? ])/$1/g;
- s/\@[:-]//g;
- s/\@bullet(?:\{\})?/*/g;
- s/\@TeX\{\}/TeX/g;
- s/\@pounds\{\}/\#/g;
- s/\@minus(?:\{\})?/-/g;
- s/\\,/,/g;
-
- # Now the ones that have to be replaced by special escapes
- # (which will be turned back into text by unmunge())
- s/&/&amp;/g;
- s/\@\{/&lbrace;/g;
- s/\@\}/&rbrace;/g;
- s/\@\@/&at;/g;
-
- # Inside a verbatim block, handle @var specially.
- if ($shift ne "") {
- s/\@var\{([^\}]*)\}/<$1>/g;
- }
-
- # POD doesn't interpret E<> inside a verbatim block.
- if ($shift eq "") {
- s/</&lt;/g;
- s/>/&gt;/g;
- } else {
- s/</&LT;/g;
- s/>/&GT;/g;
- }
-
- # Single line command handlers.
-
- /^\@include\s+(.+)$/ and do {
- push @instack, $inf;
- $inf = gensym();
-
- # Try cwd and $ibase.
- open($inf, "<" . $1)
- or open($inf, "<" . $ibase . "/" . $1)
- or die "cannot open $1 or $ibase/$1: $!\n";
- next;
- };
-
- /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
- and $_ = "\n=head2 $1\n";
- /^\@subsection\s+(.+)$/
- and $_ = "\n=head3 $1\n";
-
- # Block command handlers:
- /^\@itemize\s+(\@[a-z]+|\*|-)/ and do {
- push @endwstack, $endw;
- push @icstack, $ic;
- $ic = $1;
- $_ = "\n=over 4\n";
- $endw = "itemize";
- };
-
- /^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do {
- push @endwstack, $endw;
- push @icstack, $ic;
- if (defined $1) {
- $ic = $1 . ".";
- } else {
- $ic = "1.";
- }
- $_ = "\n=over 4\n";
- $endw = "enumerate";
- };
-
- /^\@([fv]?table)\s+(\@[a-z]+)/ and do {
- push @endwstack, $endw;
- push @icstack, $ic;
- $endw = $1;
- $ic = $2;
- $ic =~ s/\@(?:samp|strong|key|gcctabopt|env)/B/;
- $ic =~ s/\@(?:code|kbd)/C/;
- $ic =~ s/\@(?:dfn|var|emph|cite|i)/I/;
- $ic =~ s/\@(?:file)/F/;
- $_ = "\n=over 4\n";
- };
-
- /^\@((?:small)?example|display)/ and do {
- push @endwstack, $endw;
- $endw = $1;
- $shift = "\t";
- $_ = ""; # need a paragraph break
- };
-
- /^\@itemx?\s*(.+)?$/ and do {
- if (defined $1) {
- # Entity escapes prevent munging by the <> processing below.
- $_ = "\n=item $ic\&LT;$1\&GT;\n";
- } else {
- $_ = "\n=item $ic\n";
- $ic =~ y/A-Ya-y/B-Zb-z/;
- $ic =~ s/(\d+)/$1 + 1/eg;
- }
- };
-
- $section .= $shift.$_."\n";
-}
-# End of current file.
-close($inf);
-$inf = pop @instack;
-}
-
-die "No filename or title\n" unless defined $fn && defined $tl;
-
-$sects{NAME} = "$fn \- $tl\n";
-$sects{FOOTNOTES} .= "=back\n" if exists $sects{FOOTNOTES};
-
-for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT FILES
- BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
- if(exists $sects{$sect}) {
- $head = $sect;
- $head =~ s/SEEALSO/SEE ALSO/;
- print "=head1 $head\n\n";
- print scalar unmunge ($sects{$sect});
- print "\n";
- }
-}
-
-sub usage
-{
- die "usage: $0 [-D toggle...] [infile [outfile]]\n";
-}
-
-sub postprocess
-{
- local $_ = $_[0];
-
- # @value{foo} is replaced by whatever 'foo' is defined as.
- while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) {
- if (! exists $defs{$2}) {
- print STDERR "Option $2 not defined\n";
- s/\Q$1\E//;
- } else {
- $value = $defs{$2};
- s/\Q$1\E/$value/;
- }
- }
-
- # Formatting commands.
- # Temporary escape for @r.
- s/\@r\{([^\}]*)\}/R<$1>/g;
- s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g;
- s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
- s/\@(?:gccoptlist|samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g;
- s/\@sc\{([^\}]*)\}/\U$1/g;
- s/\@file\{([^\}]*)\}/F<$1>/g;
- s/\@w\{([^\}]*)\}/S<$1>/g;
- s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
-
- # Cross references are thrown away, as are @noindent and @refill.
- # (@noindent is impossible in .pod, and @refill is unnecessary.)
- # @* is also impossible in .pod; we discard it and any newline that
- # follows it. Similarly, our macro @gol must be discarded.
-
- s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g;
- s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g;
- s/;\s+\@pxref\{(?:[^\}]*)\}//g;
- s/\@noindent\s*//g;
- s/\@refill//g;
- s/\@gol//g;
- s/\@\*\s*\n?//g;
-
- # @uref can take one, two, or three arguments, with different
- # semantics each time. @url and @email are just like @uref with
- # one argument, for our purposes.
- s/\@(?:uref|url|email)\{([^\},]*)\}/&lt;B<$1>&gt;/g;
- s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
- s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
-
- # Un-escape <> at this point.
- s/&LT;/</g;
- s/&GT;/>/g;
-
- # Now un-nest all B<>, I<>, R<>. Theoretically we could have
- # indefinitely deep nesting; in practice, one level suffices.
- 1 while s/([BIR])<([^<>]*)([BIR])<([^<>]*)>/$1<$2>$3<$4>$1</g;
-
- # Replace R<...> with bare ...; eliminate empty markup, B<>;
- # shift white space at the ends of [BI]<...> expressions outside
- # the expression.
- s/R<([^<>]*)>/$1/g;
- s/[BI]<>//g;
- s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
- s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;
-
- # Extract footnotes. This has to be done after all other
- # processing because otherwise the regexp will choke on formatting
- # inside @footnote.
- while (/\@footnote/g) {
- s/\@footnote\{([^\}]+)\}/[$fnno]/;
- add_footnote($1, $fnno);
- $fnno++;
- }
-
- return $_;
-}
-
-sub unmunge
-{
- # Replace escaped symbols with their equivalents.
- local $_ = $_[0];
-
- s/&lt;/E<lt>/g;
- s/&gt;/E<gt>/g;
- s/&lbrace;/\{/g;
- s/&rbrace;/\}/g;
- s/&at;/\@/g;
- s/&amp;/&/g;
- return $_;
-}
-
-sub add_footnote
-{
- unless (exists $sects{FOOTNOTES}) {
- $sects{FOOTNOTES} = "\n=over 4\n\n";
- }
-
- $sects{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++;
- $sects{FOOTNOTES} .= $_[0];
- $sects{FOOTNOTES} .= "\n\n";
-}
-
-# stolen from Symbol.pm
-{
- my $genseq = 0;
- sub gensym
- {
- my $name = "GEN" . $genseq++;
- my $ref = \*{$name};
- delete $::{$name};
- return $ref;
- }
-}
diff --git a/contrib/binutils/etc/ChangeLog b/contrib/binutils/etc/ChangeLog
deleted file mode 100644
index debe735ca99f..000000000000
--- a/contrib/binutils/etc/ChangeLog
+++ /dev/null
@@ -1,552 +0,0 @@
-2002-06-11 Nick Clifton <nickc@cambridge.redhat.com>
-
- Import the following patches from the FSF GCC sources:
- 2002-03-25 Zack Weinberg <zack@codesourcery.com>
-
- * texi2pod.pl: Handle @end ftable and @end vtable.
-
- 2001-12-12 Matthias Klose <doko@debian.org>
-
- * texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows
- generation of more than one man page from one source.
- Add '-' to set of valid chars for an identifier.
- Let -D option accept flags of the form <flag>=<value>.
- Use \s+ for whitespace detection in '@c man' lines.
- Handle @set and @clear independent of $output.
- Substitute all @value{}'s in a line.
-
- 2001-11-14 Joseph S. Myers <jsm28@cam.ac.uk>
-
- * texi2pod.pl: Handle @ifnottex, @iftex and @display. Handle @var
- in verbatim blocks specially. Handle @unnumbered, @unnumberedsec
- and @center. Allow [a-z] after @enumerate. Handle 0 and numbers
- greater than 9 in enumerations.
-
- 2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
-
- * texi2pod.pl: Handle @r inside @item.
-
-2002-02-27 Andrew Cagney <ac131313@redhat.com>
-
- * fdl.texi: New file.
-
-2002-02-24 Andrew Cagney <ac131313@redhat.com>
-
- * standards.texi: Import February 14, 2002 version.
- * make-stds.texi: Import 2001 version.
-
-2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
-
- * Makefile.in (install): Depend on install-info.
-
-2001-03-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * texi2pod.pl: New file (from gcc/contrib).
-
-1999-04-01 Jim Blandy <jimb@zwingli.cygnus.com>
-
- * add-log.el, add-log.vi: New files.
-
-1999-01-20 Angela Marie Thomas (angela@cygnus.com)
-
- * comp-tools-verify: Remove some checks that are no longer valid.
-
-1998-12-03 Nick Clifton <nickc@cygnus.com>
-
- * targetdoc/fr30.texi: New document.
-
-1998-10-01 Angela Marie Thomas (angela@cygnus.com)
-
- * comp-tools-fix, cross-tools-fix: Replace /usr/include
- with ${FIXINCDIR}.
-
-1998-08-11 Doug Evans <devans@canuck.cygnus.com>
-
- * make-rel-sym-tree (version): Update calculation.
-
-1998-06-12 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.texi: Various additions.
- * Makefile.in (TEXI2HTML, DVIPS): New variables.
- (standards.ps): New target.
- (configure.dvi): Copy .tin files in as well.
- (configure.ps, configure.html): New targets.
- (clean): Remove configdev.jpg and configbuild.jpg.
- * configdev.fig: New file.
- * configdev.ein: New file (EPS version of configdev.fig).
- * configdev.jin: New file (JPEG version of configdev.fig).
- * configbuild.fig: New file.
- * configbuild.ein: New file (EPS version of configbuild.fig).
- * configbuild.jin: New file (JPEG version of configbuild.fig).
-
-1998-06-10 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.texi: New file.
- * configdev.tin: New file.
- * configbuild.tin: New file.
- * Makefile.in (MAKEINFO): Use makeinfo from texinfo directory if
- it exists.
- (TEXI2DVI): Likewise for texi2dvi.
- (INFOFILES): Add configure.info.
- (DVIFILES): Add configure.dvi.
- (info): Only build info files if the source files exist.
- (install-info): Only install info files if they exist.
- (dvi): Only build DVI files if the sources files exist.
- (configure.info): New target.
- (configure.dvi): New target.
- (clean): Remove configdev and configbuild derived files.
-
- Remove obsolete documentation.
- * intro.texi: Remove.
- * install.texi: Remove.
- * config-names.texi: Remove.
- * screen1.eps: Remove.
- * screen1.obj: Remove.
- * screen2.eps: Remove.
- * screen2.obj: Remove.
- * Makefile.in: Remove references to the above.
-
-Thu May 21 14:34:51 1998 Nick Clifton <nickc@cygnus.com>
-
- * targetdoc/arm-interwork.texi: Add note about ignoring linker
- warning message when using --support-old-code.
-
-Mon May 18 14:27:37 1998 Angela Marie Thomas (angela@cygnus.com)
-
- * Install.in, comp-tools-fix, comp-tools-verify, cross-tools-fix:
- Use $GCCvn rather than substitute everywhere.
-
-Thu May 14 14:43:10 1998 Nick Clifton <nickc@cygnus.com>
-
- * targetdoc/arm-interwork.texi: Document dlltool support of
- interworking.
-
-Thu May 7 16:49:38 1998 Jason Molenda (crash@bugshack.cygnus.com)
-
- * Install.in: Remove references to TCL_LIBRARY, TK_LIBRARY,
- and GDBTK_FILENAME.
-
-Wed Apr 1 17:11:44 1998 Nick Clifton <nickc@cygnus.com>
-
- * targetdoc/arm-interwork.texi: Document ARM/thumb interworking.
-
-Tue Mar 31 15:28:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * standards.texi, make-stds.texi: Update to current FSF versions.
- * Makefile.in (standards.info): Depend upon make-std.texi.
-
-Tue Mar 24 16:13:26 1998 Stu Grossman <grossman@bhuna.cygnus.co.uk>
-
- * configure: Regenerate with autoconf 2.12.1 to fix shell issues
- for NT native builds.
-
-Mon Mar 9 16:41:04 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * make-rel-sym-tree (binprogs): Add objcopy.
-
-Tue Feb 24 18:11:58 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * make-rel-sym-tree: as.new -> as-new, ld.new -> ld-new
- nm.new -> nm-new. Make symlinks to crt*.o.
-
-Fri Nov 21 12:54:58 1997 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in: Add --no-split argument to avoid creating files
- with names longer than 14 characters.
-
-Thu Sep 25 13:13:11 1997 Jason Molenda (crash@pern.cygnus.com)
-
- * intro.texi: Add closing ifset.
-
-Mon Sep 1 10:31:32 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * Install.in: Move setting HOST and TARGET to the beginning
- of the file for editing convenience.
-
-Mon Sep 1 10:28:37 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * Install.in.: More friendly options/messages when extracting
- from a file instead of a tape device.
-
-Tue Jun 17 15:50:23 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * Install.in: Add /usr/bsd to PATH for Irix (home of compress)
-
-Thu Jun 12 13:47:00 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * Install.in (show_exec_prefix_msg): fix quoting
-
-Wed Jun 4 15:31:43 1997 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * rebuilding.texi: Removed.
-
-Sat May 24 18:02:20 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * cross-tools-fix: Remove host check since it doesn't matter
- for this case.
- * Install.in (guess_system): clean up more unused hosts.
- * Install.in, cross-tools-fix, comp-tools-fix, comp-tools-verify:
- Hack for host check to not warn the user for certain cases.
-
-Fri May 23 23:46:10 1997 Angela Marie Thomas (angela@cygnus.com)
-
- * subst-strings: Remove a lot of unused code
- * Install.in: Remove reference to TAPEdflt, use variables instead of
- string substitution when able.
-
-Fri Apr 11 17:25:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change file named in AC_INIT to Makefile.in.
- * configure: Rebuild.
-
-Fri Apr 11 18:12:42 1997 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Install.in (guess_system): Back out change to INSTALLHOST to
- call all IRIX systems "mips-sgi-irix4"
-
- * Makefile.in: Remove references to configure.texi and cfg-paper.texi.
-
-Thu Apr 10 23:26:45 1997 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * srctree.texi, emacs-relnotes.texi, cfg-paper.texi: Remove.
- * Install.in: Remove Ultrix-specific hacks.
- Update Cygnus phone numbers.
- (guess_system): Remove some old systems (Ultrix, OSF1 v1 & 2,
- m68k-HPUX, m68k SunOS, etc.)
- (show_gnu_root_msg): Remove.
- Removed all the remove option code.
-
-Thu Apr 10 23:23:33 1997 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * configure.man, configure.texi: Remote.
-
-Mon Apr 7 18:15:00 1997 Brendan Kehoe <brendan@cygnus.com>
-
- * Fix the version string for OSF1 4.0 to recognize either
- V4.* or X4.*
-
-Mon Apr 7 15:34:47 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * standards.texi, make-stds.texi: Update to current FSF versions.
-
-Tue Nov 19 15:36:14 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * make-rel-sym-tree: New file.
-
-Wed Oct 23 00:34:07 1996 Angela Marie Thomas (angela@cygnus.com)
-
- * Lots of patches from progressive...
- * Install.in: restore DDOPTS for AIX 4.x
- * Install.in, subst-strings: add case for DG Aviion
- * subst-strings: fix typo in INSTALLdir var setting
- * comp-tools-verify: set SHLIB_PATH for shared libs
- * Install.in, subst-strings: add case for solaris2.5
- * Install.in: fix regression for hppa1.1 check
- * comp-tools-fix: set LD_LIBRARY_PATH
- * comp-tools-fix: If fixincludes fixes /usr/include/limits.h,
- install it as syslimits.h.
-
-Wed Oct 16 19:20:42 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * Install.in (guess_system): Treat powerpc-ibm-aix4.1 the same as
- rs6000-ibm-aix4.1, since the compiler now uses common mode by
- default.
-
-Wed Oct 2 15:39:07 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * configure.in (AC_PROG_INSTALL): Added.
- * Makefile.in (distclean): Remove config.cache.
-
-Wed Oct 2 14:33:58 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * configure.in: Switch to autoconf configure.in.
- * configure: New.
- * Makefile.in: Use autoconf-substituted values.
-
-Tue Jun 25 18:56:08 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (datadir): Changed to $(prefix)/share.
-
-Fri Mar 29 11:38:01 1996 J.T. Conklin (jtc@lisa.cygnus.com)
-
- * configure.man: Changed to be recognized by catman -w on Solaris.
-
-Wed Dec 6 15:40:28 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * comp-tools-fix (fixincludes): Define FIXPROTO_DEFINES from
- .../install-tools/fixproto-defines.
-
-Sun Nov 12 19:31:27 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * comp-tools-verify (verify_cxx_initializers): delete argv,
- argc declarations, add -static to compile line.
- (verify_cxx_hello_world): delete argv, argc declarations, add
- -static to compile line.
-
-Wed Sep 20 13:21:52 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean): New target, synonym for
- realclean.
-
-Mon Aug 28 17:25:49 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * Install.in (PATH): add /usr/ucb to $PATH (for SunOS 4.1.x).
-
-Tue Aug 15 21:51:58 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * Install.in (guess_system): Match OSF/1 v3.x as the same as
- v2.x--v2.x binaries are upward compatible.
-
-Tue Aug 15 21:46:54 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * Install.in (guess_system): recognize HP 9000/800 systems as the
- same as HP 9000/700 systems.
-
-Tue Aug 8 13:11:56 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * Install.in: For emacs, run show_emacs_alternate_msg and exit.
- (show_emacs_alternate_msg): New message saying how emacs can't be
- installed in an alternate prefix.
-
-Thu Jun 8 00:42:56 1995 Angela Marie Thomas <angela@cirdan.cygnus.com>
-
- * subst-strings: change du commands to $BINDIR/. & $SRCDIR/. just
- in case they are symlinks.
-
-Tue Apr 18 14:23:10 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * cdk-fix: Extracted table of targets that don't need their
- headers fixed from gcc's configure script.
-
- * cdk-fix, cdk-verify: Use ${HOST} instead of ||HOSTstr||
-
- * cdk-fix, cdk-verify: New files, install script fragments used
- for Cygnus Developer's Kit.
-
- * Install.in (do_mkdir): New function.
-
- * Install.in: Added support for --with and --without options.
- Changed so that tape commands are not run when extracting
- from a file.
- (do_mt): Changed to take only one argument.
-
-Wed Mar 29 11:16:38 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * Install.in: catch UNAME==alpha-dec-osf2.x and correct entry for
- alpha-dec-osf1.x
-
-Fri Jan 27 12:04:29 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * subst-strings (mips-sgi-irix5): New entry in table.
-
-Thu Jan 19 12:15:44 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * Install.in: Major rewrite, bundle dependent code (for example,
- fixincludes for comp-tools) will be inserted into the Install
- script when it is generated.
-
-Tue Jan 17 16:51:32 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * Makefile.in (Makefile): Rebuild using $(SHELL).
-
-Thu Nov 3 19:30:33 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (install-info): Depend on info.
-
-Fri Aug 19 16:16:38 1994 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * Install.in: set $FIX_HEADER so fixproto can find fix-header.
-
-Fri May 6 16:18:58 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Makefile.in (install-info): add a semicolon in the if statement.
-
-Fri Apr 29 16:56:07 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * cfg-paper.texi: Update some outdated information.
-
- * Makefile.in (install-info): Pass file, not directory, as last
- arg to INSTALL_DATA.
- (uninstall): New target.
-
-Thu Apr 28 14:42:22 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * configure.texi: Comment out @smallbook.
-
- * Makefile.in: Define TEXI2DVI and TEXIDIR, and use the latter.
- Remove info files in realclean, not clean, per coding standards.
- Remove TeX output in clean.
-
-Tue Apr 26 17:18:03 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: fixincludes output is actually put in fixincludes.log,
- but echo'ed messages claim it is fixinc.log. This is the same
- messages as I logged in March 4 1994, but for some reason we found
- the change hadn't been done. I'll have to dig through the logs
- and find out what I really did do that day. :)
-
-Mon Apr 25 20:28:19 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: use eval to call do_mt() for Ultrix brokenness.
-
-Mon Apr 25 20:00:00 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in(do_mt): exit with error status 1 if # of parameters
- != 3.
-
-Mon Apr 25 19:42:36 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: lose TAPE_FORWARD and TAPE_REWIND, add do_mt()
- to do all tape movement operations. Currently untested. Addresses
- PR # 4886 from bull.
-
- * Install.in: add 1994 to the copyright thing.
-
-Fri Apr 22 19:05:13 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * standards.texi: Update from FSF.
-
-Fri Apr 22 15:46:10 1994 Jason Molenda (crash@cygnus.com)
-
- * Install.in: Add $DDOPTS, has ``bs=124b'' for all systems except
- AIX (some versions of AIX don't understand bs=124b. Silly OS).
-
-Mon Apr 4 22:55:05 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: null out $TOOLS before adding stuff to it
- non-destructively.
-
-Wed Mar 30 21:45:35 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * standards.texi: Fix typo.
-
- * configure.texi, configure.man: Document --disable-.
-
-Mon Mar 28 13:22:15 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * standards.texi: Update from FSF.
-
-Sat Mar 26 09:21:44 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * standards.texi, make-stds.texi: Update from FSF.
-
-Fri Mar 25 22:59:45 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * configure.texi, configure.man: Document --enable-* options.
-
-Wed Mar 23 23:38:24 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: set CPP to be gcc -E for fixincludes.
-
-Wed Mar 23 13:42:48 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: set PATH to $PATH:/bin:/usr/bin so we can pick
- up native tools even if the user doesn't have them in his
- path.
-
- * Install.in: ``hppa-1.1-hp-hpux'' -> ``hppa1.1-hp-hpux''.
-
-Tue Mar 15 22:09:20 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: TAPE_REWIND and TAPE_FORWARD variables for Unixunaware,
- added switch statement to detect if system is Unixunaware.
-
-Fri Mar 4 12:10:30 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * Install.in: fixincludes output is actually put in fixincludes.log,
- but echo'ed messages claim it is fixinc.log.
-
-Wed Nov 3 02:58:02 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
-
- * subst-strings: output TEXBUNDLE for more install notes matching
- * install-texi.in: PRMS info now exists
-
-Tue Oct 26 16:57:12 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * subst-strings: match solaris*. Also, add default case to catch
- and error out for unrecognized systems.
-
-Thu Aug 19 18:21:31 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * Install.in: handle the new fixproto work
-
-Mon Jul 19 12:05:41 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com)
-
- * Install.in: remove "MT=tctl" for AIX (not needed, and barely
- worked anyway)
-
-Mon Jun 14 19:09:22 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * subst-strings: changed HOST to recognize Solaris for install notes
-
-Thu Jun 10 16:01:25 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * dos-inst.texi: new file.
-
-Wed Jun 9 19:23:59 1993 Jeffrey Osier (jeffrey@rtl.cygnus.com)
-
- * install-texi.in: added conditionals (nearly complete)
- cleaned up
- added support for other releases (not done)
-
-Wed Jun 9 15:53:58 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * Makefile.in (install-info): Use INSTALL_DATA.
- ({dist,real}clean): Also delete Makefile and config.status.
-
-Fri Jun 4 17:09:56 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * subst-strings: added data for OS_STRING
-
- * subst-strings: added support for OS_STRING
-
-Thu Jun 3 00:37:01 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Install.in: pull COPYING and COPYING.LIB off of the tape
-
-Tue Jun 1 16:52:08 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * subst-strings: replace RELEASE_DIR too
-
-Mon Mar 22 23:55:27 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: add installcheck target
-
-Wed Mar 17 02:21:15 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Install.in: fix 'source only' extraction bug where it looked for
- the src dir under H-<host>/src instead of src; also remove stray
- reference to EMACSHIBIN
-
-Mon Mar 15 01:25:45 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * make-stds.texi: added 'installcheck' to the standard targets
-
-Tue Mar 9 19:48:28 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * standards.texi: added INFO-DIR-ENTRY, updated version from the FSF
-
-Tue Feb 9 12:40:23 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (standards.info): Added -I$(srcdir) to find
- make-stds.texi.
-
-Mon Feb 1 16:32:56 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * standards.texi: updated to latest FSF version, which includes:
-
- * make-stds.texi: new file
-
-Mon Nov 30 01:31:40 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * install-texi.in, relnotes.texi, intro.texi: changed Cygnus phone
- numbers from the old Palo Alto ones to the new Mtn. View numbers
-
-Mon Nov 16 16:50:43 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: define $(RM) to "rm -f"
-
-Sun Oct 11 16:05:48 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * intro.texi: added INFO-DIR-ENTRY
-
diff --git a/contrib/binutils/etc/Makefile.in b/contrib/binutils/etc/Makefile.in
deleted file mode 100644
index 2bc34574540e..000000000000
--- a/contrib/binutils/etc/Makefile.in
+++ /dev/null
@@ -1,157 +0,0 @@
-#
-# Makefile.in for etc
-#
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-bindir = @bindir@
-libdir = @libdir@
-tooldir = $(libdir)
-datadir = @datadir@
-
-mandir = @mandir@
-man1dir = $(mandir)/man1
-man2dir = $(mandir)/man2
-man3dir = $(mandir)/man3
-man4dir = $(mandir)/man4
-man5dir = $(mandir)/man5
-man6dir = $(mandir)/man6
-man7dir = $(mandir)/man7
-man8dir = $(mandir)/man8
-man9dir = $(mandir)/man9
-infodir = @infodir@
-
-SHELL = /bin/sh
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-MAKEINFO = `if [ -f ../texinfo/makeinfo/makeinfo ]; \
- then echo ../texinfo/makeinfo/makeinfo; \
- else echo makeinfo; fi`
-TEXI2DVI = `if [ -f ../texinfo/util/texi2dvi ]; \
- then echo ../texinfo/util/texi2dvi; \
- else echo texi2dvi; fi`
-TEXI2HTML = texi2html
-DVIPS = dvips
-
-# Where to find texinfo.tex to format documentation with TeX.
-TEXIDIR = $(srcdir)/../texinfo
-
-#### Host, target, and site specific Makefile fragments come in here.
-###
-
-INFOFILES = standards.info configure.info
-DVIFILES = standards.dvi configure.dvi
-
-all:
-
-# We want install to imply install-info as per GNU standards.
-install: install-info
-
-uninstall:
-
-info:
- for f in $(INFOFILES); do \
- if test -f $(srcdir)/`echo $$f | sed -e 's/.info$$/.texi/'`; then \
- if $(MAKE) "MAKEINFO=$(MAKEINFO)" $$f; then \
- true; \
- else \
- exit 1; \
- fi; \
- fi; \
- done
-
-install-info: info
- $(SHELL) $(srcdir)/../mkinstalldirs $(infodir)
- if test ! -f standards.info; then cd $(srcdir); fi; \
- if test -f standards.info; then \
- for i in standards.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done; \
- fi
- if test ! -f configure.info; then cd $(srcdir); fi; \
- if test -f configure.info; then \
- for i in configure.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done; \
- fi
-
-dvi:
- for f in $(DVIFILES); do \
- if test -f $(srcdir)/`echo $$f | sed -e 's/.dvi$$/.texi/'`; then \
- if $(MAKE) "TEXI2DVI=$(TEXI2DVI)" $$f; then \
- true; \
- else \
- exit 1; \
- fi; \
- fi; \
- done
-
-standards.info: $(srcdir)/standards.texi $(srcdir)/make-stds.texi
- $(MAKEINFO) --no-split -I$(srcdir) -o standards.info $(srcdir)/standards.texi
-
-standards.dvi: $(srcdir)/standards.texi
- TEXINPUTS=$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/standards.texi
-
-standards.ps: standards.dvi
- $(DVIPS) standards.dvi -o standards.ps
-
-# makeinfo requires images to be in the current directory.
-configure.info: $(srcdir)/configure.texi $(srcdir)/configdev.tin $(srcdir)/configbuild.tin
- rm -f configdev.txt configbuild.txt
- cp $(srcdir)/configdev.tin configdev.txt
- cp $(srcdir)/configbuild.tin configbuild.txt
- $(MAKEINFO) -I$(srcdir) -o configure.info $(srcdir)/configure.texi
- rm -f configdev.txt configbuild.txt
-
-# texi2dvi wants both the .txt and the .eps files.
-configure.dvi: $(srcdir)/configure.texi $(srcdir)/configdev.tin $(srcdir)/configbuild.tin $(srcdir)/configdev.ein $(srcdir)/configbuild.ein
- rm -f configdev.txt configbuild.txt
- cp $(srcdir)/configdev.tin configdev.txt
- cp $(srcdir)/configbuild.tin configbuild.txt
- rm -f configdev.eps configbuild.eps
- cp $(srcdir)/configdev.ein configdev.eps
- cp $(srcdir)/configbuild.ein configbuild.eps
- TEXINPUTS=$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/configure.texi
- rm -f configdev.txt configbuild.txt
- rm -f configdev.eps configbuild.eps
-
-# dvips requires images to be in the current directory
-configure.ps: configure.dvi $(srcdir)/configdev.ein $(srcdir)/configbuild.ein
- rm -f configdev.eps configbuild.eps
- cp $(srcdir)/configdev.ein configdev.eps
- cp $(srcdir)/configbuild.ein configbuild.eps
- $(DVIPS) configure.dvi -o configure.ps
- rm -f configdev.eps configbuild.eps
-
-configure.html: $(srcdir)/configure.texi
- $(TEXI2HTML) -split_chapter $(srcdir)/configure.texi
-
-clean:
- rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.log
- rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs
- rm -f configdev.txt configbuild.txt configdev.eps configbuild.eps
- rm -f configdev.jpg configbuild.jpg
-
-mostlyclean: clean
-
-distclean: clean
- rm -f Makefile config.status config.cache
-
-maintainer-clean realclean: distclean
- rm -f *.info*
-
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag)
- $(SHELL) ./config.status
-
-## these last targets are for standards.texi conformance
-dist:
-check:
-installcheck:
-TAGS:
diff --git a/contrib/binutils/etc/add-log.el b/contrib/binutils/etc/add-log.el
deleted file mode 100644
index 60c88e8c9490..000000000000
--- a/contrib/binutils/etc/add-log.el
+++ /dev/null
@@ -1,573 +0,0 @@
-;;; ============ NOTE WELL! =============
-;;;
-;;; You only need to use this file if you're using a version of Emacs
-;;; prior to 20.1 to work on GDB. The only difference between this
-;;; and the standard add-log.el provided with 19.34 is that it
-;;; generates dates using the terser format used by Emacs 20. This is
-;;; the format recommended for use in GDB ChangeLogs.
-;;;
-;;; To use this code, you should create a directory `~/elisp', save the code
-;;; below in `~/elisp/add-log.el', and then put something like this in
-;;; your `~/.emacs' file, to tell Emacs where to find it:
-;;;
-;;; (setq load-path
-;;; (cons (expand-file-name "~/elisp")
-;;; load-path))
-;;;
-;;; If you want, you can also byte-compile it --- it'll run a little
-;;; faster, and use a little less memory. (Not that those matter much for
-;;; this file.) To do that, after you've saved the text as
-;;; ~/elisp/add-log.el, bring it up in Emacs, and type
-;;;
-;;; C-u M-x byte-compile-file
-;;;
-;;; --- Jim Blandy
-
-;;; add-log.el --- change log maintenance commands for Emacs
-
-;; Copyright (C) 1985, 1986, 1988, 1993, 1994 Free Software Foundation, Inc.
-
-;; Keywords: maint
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; This facility is documented in the Emacs Manual.
-
-;;; Code:
-
-(defvar change-log-default-name nil
- "*Name of a change log file for \\[add-change-log-entry].")
-
-(defvar add-log-current-defun-function nil
- "\
-*If non-nil, function to guess name of current function from surrounding text.
-\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun'
-instead) with no arguments. It returns a string or nil if it cannot guess.")
-
-;;;###autoload
-(defvar add-log-full-name nil
- "*Full name of user, for inclusion in ChangeLog daily headers.
-This defaults to the value returned by the `user-full-name' function.")
-
-;;;###autoload
-(defvar add-log-mailing-address nil
- "*Electronic mail address of user, for inclusion in ChangeLog daily headers.
-This defaults to the value of `user-mail-address'.")
-
-(defvar change-log-font-lock-keywords
- '(("^[SMTWF].+" . font-lock-function-name-face) ; Date line.
- ("^\t\\* \\([^ :\n]+\\)" 1 font-lock-comment-face) ; File name.
- ("(\\([^)\n]+\\)):" 1 font-lock-keyword-face)) ; Function name.
- "Additional expressions to highlight in Change Log mode.")
-
-(defvar change-log-mode-map nil
- "Keymap for Change Log major mode.")
-(if change-log-mode-map
- nil
- (setq change-log-mode-map (make-sparse-keymap))
- (define-key change-log-mode-map "\M-q" 'change-log-fill-paragraph))
-
-(defun change-log-name ()
- (or change-log-default-name
- (if (eq system-type 'vax-vms)
- "$CHANGE_LOG$.TXT"
- (if (or (eq system-type 'ms-dos) (eq system-type 'windows-nt))
- "changelo"
- "ChangeLog"))))
-
-;;;###autoload
-(defun prompt-for-change-log-name ()
- "Prompt for a change log name."
- (let* ((default (change-log-name))
- (name (expand-file-name
- (read-file-name (format "Log file (default %s): " default)
- nil default))))
- ;; Handle something that is syntactically a directory name.
- ;; Look for ChangeLog or whatever in that directory.
- (if (string= (file-name-nondirectory name) "")
- (expand-file-name (file-name-nondirectory default)
- name)
- ;; Handle specifying a file that is a directory.
- (if (file-directory-p name)
- (expand-file-name (file-name-nondirectory default)
- (file-name-as-directory name))
- name))))
-
-;;;###autoload
-(defun find-change-log (&optional file-name)
- "Find a change log file for \\[add-change-log-entry] and return the name.
-
-Optional arg FILE-NAME specifies the file to use.
-If FILE-NAME is nil, use the value of `change-log-default-name'.
-If 'change-log-default-name' is nil, behave as though it were 'ChangeLog'
-\(or whatever we use on this operating system).
-
-If 'change-log-default-name' contains a leading directory component, then
-simply find it in the current directory. Otherwise, search in the current
-directory and its successive parents for a file so named.
-
-Once a file is found, `change-log-default-name' is set locally in the
-current buffer to the complete file name."
- ;; If user specified a file name or if this buffer knows which one to use,
- ;; just use that.
- (or file-name
- (setq file-name (and change-log-default-name
- (file-name-directory change-log-default-name)
- change-log-default-name))
- (progn
- ;; Chase links in the source file
- ;; and use the change log in the dir where it points.
- (setq file-name (or (and buffer-file-name
- (file-name-directory
- (file-chase-links buffer-file-name)))
- default-directory))
- (if (file-directory-p file-name)
- (setq file-name (expand-file-name (change-log-name) file-name)))
- ;; Chase links before visiting the file.
- ;; This makes it easier to use a single change log file
- ;; for several related directories.
- (setq file-name (file-chase-links file-name))
- (setq file-name (expand-file-name file-name))
- ;; Move up in the dir hierarchy till we find a change log file.
- (let ((file1 file-name)
- parent-dir)
- (while (and (not (or (get-file-buffer file1) (file-exists-p file1)))
- (progn (setq parent-dir
- (file-name-directory
- (directory-file-name
- (file-name-directory file1))))
- ;; Give up if we are already at the root dir.
- (not (string= (file-name-directory file1)
- parent-dir))))
- ;; Move up to the parent dir and try again.
- (setq file1 (expand-file-name
- (file-name-nondirectory (change-log-name))
- parent-dir)))
- ;; If we found a change log in a parent, use that.
- (if (or (get-file-buffer file1) (file-exists-p file1))
- (setq file-name file1)))))
- ;; Make a local variable in this buffer so we needn't search again.
- (set (make-local-variable 'change-log-default-name) file-name)
- file-name)
-
-;;;###autoload
-(defun add-change-log-entry (&optional whoami file-name other-window new-entry)
- "Find change log file and add an entry for today.
-Optional arg (interactive prefix) non-nil means prompt for user name and site.
-Second arg is file name of change log. If nil, uses `change-log-default-name'.
-Third arg OTHER-WINDOW non-nil means visit in other window.
-Fourth arg NEW-ENTRY non-nil means always create a new entry at the front;
-never append to an existing entry."
- (interactive (list current-prefix-arg
- (prompt-for-change-log-name)))
- (or add-log-full-name
- (setq add-log-full-name (user-full-name)))
- (or add-log-mailing-address
- (setq add-log-mailing-address user-mail-address))
- (if whoami
- (progn
- (setq add-log-full-name (read-input "Full name: " add-log-full-name))
- ;; Note that some sites have room and phone number fields in
- ;; full name which look silly when inserted. Rather than do
- ;; anything about that here, let user give prefix argument so that
- ;; s/he can edit the full name field in prompter if s/he wants.
- (setq add-log-mailing-address
- (read-input "Mailing address: " add-log-mailing-address))))
- (let ((defun (funcall (or add-log-current-defun-function
- 'add-log-current-defun)))
- paragraph-end entry)
-
- (setq file-name (expand-file-name (find-change-log file-name)))
-
- ;; Set ENTRY to the file name to use in the new entry.
- (and buffer-file-name
- ;; Never want to add a change log entry for the ChangeLog file itself.
- (not (string= buffer-file-name file-name))
- (setq entry (if (string-match
- (concat "^" (regexp-quote (file-name-directory
- file-name)))
- buffer-file-name)
- (substring buffer-file-name (match-end 0))
- (file-name-nondirectory buffer-file-name))))
-
- (if (and other-window (not (equal file-name buffer-file-name)))
- (find-file-other-window file-name)
- (find-file file-name))
- (or (eq major-mode 'change-log-mode)
- (change-log-mode))
- (undo-boundary)
- (goto-char (point-min))
- (let ((heading (format "%s %s <%s>"
- (format-time-string "%Y-%m-%d")
- add-log-full-name
- add-log-mailing-address)))
- (if (looking-at (regexp-quote heading))
- (forward-line 1)
- (insert heading "\n\n")))
-
- ;; Search only within the first paragraph.
- (if (looking-at "\n*[^\n* \t]")
- (skip-chars-forward "\n")
- (forward-paragraph 1))
- (setq paragraph-end (point))
- (goto-char (point-min))
-
- ;; Now insert the new line for this entry.
- (cond ((re-search-forward "^\\s *\\*\\s *$" paragraph-end t)
- ;; Put this file name into the existing empty entry.
- (if entry
- (insert entry)))
- ((and (not new-entry)
- (let (case-fold-search)
- (re-search-forward
- (concat (regexp-quote (concat "* " entry))
- ;; Don't accept `foo.bar' when
- ;; looking for `foo':
- "\\(\\s \\|[(),:]\\)")
- paragraph-end t)))
- ;; Add to the existing entry for the same file.
- (re-search-forward "^\\s *$\\|^\\s \\*")
- (goto-char (match-beginning 0))
- ;; Delete excess empty lines; make just 2.
- (while (and (not (eobp)) (looking-at "^\\s *$"))
- (delete-region (point) (save-excursion (forward-line 1) (point))))
- (insert "\n\n")
- (forward-line -2)
- (indent-relative-maybe))
- (t
- ;; Make a new entry.
- (forward-line 1)
- (while (looking-at "\\sW")
- (forward-line 1))
- (while (and (not (eobp)) (looking-at "^\\s *$"))
- (delete-region (point) (save-excursion (forward-line 1) (point))))
- (insert "\n\n\n")
- (forward-line -2)
- (indent-to left-margin)
- (insert "* " (or entry ""))))
- ;; Now insert the function name, if we have one.
- ;; Point is at the entry for this file,
- ;; either at the end of the line or at the first blank line.
- (if defun
- (progn
- ;; Make it easy to get rid of the function name.
- (undo-boundary)
- (insert (if (save-excursion
- (beginning-of-line 1)
- (looking-at "\\s *$"))
- ""
- " ")
- "(" defun "): "))
- ;; No function name, so put in a colon unless we have just a star.
- (if (not (save-excursion
- (beginning-of-line 1)
- (looking-at "\\s *\\(\\*\\s *\\)?$")))
- (insert ": ")))))
-
-;;;###autoload
-(defun add-change-log-entry-other-window (&optional whoami file-name)
- "Find change log file in other window and add an entry for today.
-Optional arg (interactive prefix) non-nil means prompt for user name and site.
-Second arg is file name of change log. \
-If nil, uses `change-log-default-name'."
- (interactive (if current-prefix-arg
- (list current-prefix-arg
- (prompt-for-change-log-name))))
- (add-change-log-entry whoami file-name t))
-;;;###autoload (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
-
-;;;###autoload
-(defun change-log-mode ()
- "Major mode for editing change logs; like Indented Text Mode.
-Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
-New log entries are usually made with \\[add-change-log-entry] or \\[add-change-log-entry-other-window].
-Each entry behaves as a paragraph, and the entries for one day as a page.
-Runs `change-log-mode-hook'."
- (interactive)
- (kill-all-local-variables)
- (indented-text-mode)
- (setq major-mode 'change-log-mode
- mode-name "Change Log"
- left-margin 8
- fill-column 74
- indent-tabs-mode t
- tab-width 8)
- (use-local-map change-log-mode-map)
- ;; Let each entry behave as one paragraph:
- ;; We really do want "^" in paragraph-start below: it is only the lines that
- ;; begin at column 0 (despite the left-margin of 8) that we are looking for.
- (set (make-local-variable 'paragraph-start) "\\s *$\\|\f\\|^\\sw")
- (set (make-local-variable 'paragraph-separate) "\\s *$\\|\f\\|^\\sw")
- ;; Let all entries for one day behave as one page.
- ;; Match null string on the date-line so that the date-line
- ;; is grouped with what follows.
- (set (make-local-variable 'page-delimiter) "^\\<\\|^\f")
- (set (make-local-variable 'version-control) 'never)
- (set (make-local-variable 'adaptive-fill-regexp) "\\s *")
- (set (make-local-variable 'font-lock-defaults)
- '(change-log-font-lock-keywords t))
- (run-hooks 'change-log-mode-hook))
-
-;; It might be nice to have a general feature to replace this. The idea I
-;; have is a variable giving a regexp matching text which should not be
-;; moved from bol by filling. change-log-mode would set this to "^\\s *\\s(".
-;; But I don't feel up to implementing that today.
-(defun change-log-fill-paragraph (&optional justify)
- "Fill the paragraph, but preserve open parentheses at beginning of lines.
-Prefix arg means justify as well."
- (interactive "P")
- (let ((end (save-excursion (forward-paragraph) (point)))
- (beg (save-excursion (backward-paragraph)(point)))
- (paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
- (fill-region beg end justify)))
-
-(defvar add-log-current-defun-header-regexp
- "^\\([A-Z][A-Z_ ]*[A-Z_]\\|[-_a-zA-Z]+\\)[ \t]*[:=]"
- "*Heuristic regexp used by `add-log-current-defun' for unknown major modes.")
-
-;;;###autoload
-(defun add-log-current-defun ()
- "Return name of function definition point is in, or nil.
-
-Understands C, Lisp, LaTeX (\"functions\" are chapters, sections, ...),
-Texinfo (@node titles), Perl, and Fortran.
-
-Other modes are handled by a heuristic that looks in the 10K before
-point for uppercase headings starting in the first column or
-identifiers followed by `:' or `=', see variable
-`add-log-current-defun-header-regexp'.
-
-Has a preference of looking backwards."
- (condition-case nil
- (save-excursion
- (let ((location (point)))
- (cond ((memq major-mode '(emacs-lisp-mode lisp-mode scheme-mode
- lisp-interaction-mode))
- ;; If we are now precisely at the beginning of a defun,
- ;; make sure beginning-of-defun finds that one
- ;; rather than the previous one.
- (or (eobp) (forward-char 1))
- (beginning-of-defun)
- ;; Make sure we are really inside the defun found, not after it.
- (if (and (looking-at "\\s(")
- (progn (end-of-defun)
- (< location (point)))
- (progn (forward-sexp -1)
- (>= location (point))))
- (progn
- (if (looking-at "\\s(")
- (forward-char 1))
- (forward-sexp 1)
- (skip-chars-forward " '")
- (buffer-substring (point)
- (progn (forward-sexp 1) (point))))))
- ((and (memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
- (save-excursion (beginning-of-line)
- ;; Use eq instead of = here to avoid
- ;; error when at bob and char-after
- ;; returns nil.
- (while (eq (char-after (- (point) 2)) ?\\)
- (forward-line -1))
- (looking-at "[ \t]*#[ \t]*define[ \t]")))
- ;; Handle a C macro definition.
- (beginning-of-line)
- (while (eq (char-after (- (point) 2)) ?\\) ;not =; note above
- (forward-line -1))
- (search-forward "define")
- (skip-chars-forward " \t")
- (buffer-substring (point)
- (progn (forward-sexp 1) (point))))
- ((memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
- (beginning-of-line)
- ;; See if we are in the beginning part of a function,
- ;; before the open brace. If so, advance forward.
- (while (not (looking-at "{\\|\\(\\s *$\\)"))
- (forward-line 1))
- (or (eobp)
- (forward-char 1))
- (beginning-of-defun)
- (if (progn (end-of-defun)
- (< location (point)))
- (progn
- (backward-sexp 1)
- (let (beg tem)
-
- (forward-line -1)
- ;; Skip back over typedefs of arglist.
- (while (and (not (bobp))
- (looking-at "[ \t\n]"))
- (forward-line -1))
- ;; See if this is using the DEFUN macro used in Emacs,
- ;; or the DEFUN macro used by the C library.
- (if (condition-case nil
- (and (save-excursion
- (end-of-line)
- (while (= (preceding-char) ?\\)
- (end-of-line 2))
- (backward-sexp 1)
- (beginning-of-line)
- (setq tem (point))
- (looking-at "DEFUN\\b"))
- (>= location tem))
- (error nil))
- (progn
- (goto-char tem)
- (down-list 1)
- (if (= (char-after (point)) ?\")
- (progn
- (forward-sexp 1)
- (skip-chars-forward " ,")))
- (buffer-substring (point)
- (progn (forward-sexp 1) (point))))
- (if (looking-at "^[+-]")
- (get-method-definition)
- ;; Ordinary C function syntax.
- (setq beg (point))
- (if (and (condition-case nil
- ;; Protect against "Unbalanced parens" error.
- (progn
- (down-list 1) ; into arglist
- (backward-up-list 1)
- (skip-chars-backward " \t")
- t)
- (error nil))
- ;; Verify initial pos was after
- ;; real start of function.
- (save-excursion
- (goto-char beg)
- ;; For this purpose, include the line
- ;; that has the decl keywords. This
- ;; may also include some of the
- ;; comments before the function.
- (while (and (not (bobp))
- (save-excursion
- (forward-line -1)
- (looking-at "[^\n\f]")))
- (forward-line -1))
- (>= location (point)))
- ;; Consistency check: going down and up
- ;; shouldn't take us back before BEG.
- (> (point) beg))
- (let (end middle)
- ;; Don't include any final newline
- ;; in the name we use.
- (if (= (preceding-char) ?\n)
- (forward-char -1))
- (setq end (point))
- (backward-sexp 1)
- ;; Now find the right beginning of the name.
- ;; Include certain keywords if they
- ;; precede the name.
- (setq middle (point))
- (forward-word -1)
- ;; Ignore these subparts of a class decl
- ;; and move back to the class name itself.
- (while (looking-at "public \\|private ")
- (skip-chars-backward " \t:")
- (setq end (point))
- (backward-sexp 1)
- (setq middle (point))
- (forward-word -1))
- (and (bolp)
- (looking-at "struct \\|union \\|class ")
- (setq middle (point)))
- (buffer-substring middle end)))))))))
- ((memq major-mode
- '(TeX-mode plain-TeX-mode LaTeX-mode;; tex-mode.el
- plain-tex-mode latex-mode;; cmutex.el
- ))
- (if (re-search-backward
- "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)" nil t)
- (progn
- (goto-char (match-beginning 0))
- (buffer-substring (1+ (point));; without initial backslash
- (progn
- (end-of-line)
- (point))))))
- ((eq major-mode 'texinfo-mode)
- (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
- (buffer-substring (match-beginning 1)
- (match-end 1))))
- ((eq major-mode 'perl-mode)
- (if (re-search-backward "^sub[ \t]+\\([^ \t\n]+\\)" nil t)
- (buffer-substring (match-beginning 1)
- (match-end 1))))
- ((eq major-mode 'fortran-mode)
- ;; must be inside function body for this to work
- (beginning-of-fortran-subprogram)
- (let ((case-fold-search t)) ; case-insensitive
- ;; search for fortran subprogram start
- (if (re-search-forward
- "^[ \t]*\\(program\\|subroutine\\|function\
-\\|[ \ta-z0-9*]*[ \t]+function\\)"
- nil t)
- (progn
- ;; move to EOL or before first left paren
- (if (re-search-forward "[(\n]" nil t)
- (progn (forward-char -1)
- (skip-chars-backward " \t"))
- (end-of-line))
- ;; Use the name preceding that.
- (buffer-substring (point)
- (progn (forward-sexp -1)
- (point)))))))
- (t
- ;; If all else fails, try heuristics
- (let (case-fold-search)
- (end-of-line)
- (if (re-search-backward add-log-current-defun-header-regexp
- (- (point) 10000)
- t)
- (buffer-substring (match-beginning 1)
- (match-end 1))))))))
- (error nil)))
-
-(defvar get-method-definition-md)
-
-;; Subroutine used within get-method-definition.
-;; Add the last match in the buffer to the end of `md',
-;; followed by the string END; move to the end of that match.
-(defun get-method-definition-1 (end)
- (setq get-method-definition-md
- (concat get-method-definition-md
- (buffer-substring (match-beginning 1) (match-end 1))
- end))
- (goto-char (match-end 0)))
-
-;; For objective C, return the method name if we are in a method.
-(defun get-method-definition ()
- (let ((get-method-definition-md "["))
- (save-excursion
- (if (re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t)
- (get-method-definition-1 " ")))
- (save-excursion
- (cond
- ((re-search-forward "^\\([-+]\\)[ \t\n\f\r]*\\(([^)]*)\\)?\\s-*" nil t)
- (get-method-definition-1 "")
- (while (not (looking-at "[{;]"))
- (looking-at
- "\\([A-Za-z_]*:?\\)\\s-*\\(([^)]*)\\)?[A-Za-z_]*[ \t\n\f\r]*")
- (get-method-definition-1 ""))
- (concat get-method-definition-md "]"))))))
-
-
-(provide 'add-log)
-
-;;; add-log.el ends here
diff --git a/contrib/binutils/etc/add-log.vi b/contrib/binutils/etc/add-log.vi
deleted file mode 100644
index efb8c77aa2b8..000000000000
--- a/contrib/binutils/etc/add-log.vi
+++ /dev/null
@@ -1,11 +0,0 @@
-Here is a vi macro to create entries in the recommended format for
-GDB's ChangeLogs.
-
-map  1GO:r !date '+\%Y-\%m-\%d'2GA Jason Molenda (:r !whoamikJxA@:r !hostnameA)kJxkddjO * k$
-
-It contains control and escape sequences, so don't just cut and paste it.
-You'll need to change the "Jason Molenda" bit, of course. :-) Put this
-in your $HOME/.exrc and when you type control-X in move-around-mode,
-you'll have a changelog template inserted.
-
---- Jason Molenda
diff --git a/contrib/binutils/etc/cfg-paper.texi b/contrib/binutils/etc/cfg-paper.texi
deleted file mode 100644
index bcfbb31e13f8..000000000000
--- a/contrib/binutils/etc/cfg-paper.texi
+++ /dev/null
@@ -1,717 +0,0 @@
-\input texinfo
-@c %**start of header
-@setfilename cfg-paper.info
-@settitle On Configuring Development Tools
-@c %**end of header
-@setchapternewpage off
-
-@ifinfo
-This document attempts to describe the general concepts behind
-configuration of the @sc{gnu} Development Tools.
-It also discusses common usage.
-
-Copyright (C) 1991, 1992, 1994 Cygnus Support
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by Cygnus Support.
-@end ifinfo
-
-@titlepage
-@sp 10
-@title{On Configuring Development Tools}
-@author{K. Richard Pixley, @code{rich@@cygnus.com}}
-@author{Cygnus Support}
-@page
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 1992, 1994 Cygnus Support
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by Cygnus Support.
-@end titlepage
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* configuration: (cfg-paper). Some theory on configuring source.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@node top, Some Basic Terms, (dir), (dir)
-
-@ifinfo
-This document attempts to describe the general concepts behind
-configuration of the @sc{gnu} Development Tools.
-It also discusses common usage.
-@end ifinfo
-
-@menu
-* Some Basic Terms:: Some Basic Terms
-* Specifics.:: Specifics
-* Building Development Environments:: Building Development Environments
-* A Walk Through:: A Walk Through
-* Final Notes:: Final Notes
-* Index:: Index
-
- --- The Detailed Node Listing ---
-
-Some Basic Terms
-
-* Host Environments:: Host Environments
-* Configuration Time Options:: Configuration Time Options
-
-A Walk Through
-
-* Native Development Environments:: Native Development Environments
-* Emulation Environments:: Emulation Environments
-* Simple Cross Environments:: Simple Cross Environments
-* Crossing Into Targets:: Crossing Into Targets
-* Canadian Cross:: Canadian Cross
-
-Final Notes
-
-* Hacking Configurations:: Hacking Configurations
-@end menu
-
-@node Some Basic Terms, Specifics., top, top
-@chapter Some Basic Terms
-
-There are a lot of terms that are frequently used when discussing
-development tools. Most of the common terms have been used for many
-different concepts such that their meanings have become ambiguous to the
-point of being confusing. Typically, we only guess at their meanings
-from context and we frequently guess wrong.
-
-This document uses very few terms by comparison. The intent is to make
-the concepts as clear as possible in order to convey the usage and
-intent of these tools.
-
-@emph{Programs} run on @emph{machines}. Programs are very nearly always
-written in @emph{source}. Programs are @emph{built} from source.
-@emph{Compilation} is a process that is frequently, but not always, used
-when building programs.
-@cindex Programs
-@cindex Machines
-@cindex Source
-@cindex Building
-@cindex Compilation
-
-@menu
-* Host Environments:: Host Environments
-* Configuration Time Options:: Configuration Time Options
-@end menu
-
-@node Host Environments, Configuration Time Options, Some Basic Terms, Some Basic Terms
-@section Host Environments
-
-@cindex host
-In this document, the word @emph{host} refers to the environment in
-which the source in question will be compiled. @emph{host} and
-@emph{host name} have nothing to do with the proper name of your host,
-like @emph{ucbvax}, @emph{prep.ai.mit.edu} or @emph{att.com}. Instead
-they refer to things like @emph{sun4} and @emph{dec3100}.
-
-Forget for a moment that this particular directory of source is the
-source for a development environment. Instead, pretend that it is the
-source for a simpler, more mundane, application, say, a desk calculator.
-
-Source that can be compiled in more than one environment, generally
-needs to be set up for each environment explicitly. Here we refer to
-that process as configuration. That is, we configure the source for a
-host.
-
-For example, if we wanted to configure our mythical desk calculator to
-compile on a SparcStation, we might configure for host sun4. With our
-configuration system:
-
-@example
-cd desk-calculator ; ./configure sun4
-@end example
-
-@noindent
-does the trick. @code{configure} is a shell script that sets up Makefiles,
-subdirectories, and symbolic links appropriate for compiling the source
-on a sun4.
-
-The @emph{host} environment does not necessarily refer to the machine on
-which the tools are built. It is possible to provide a sun3 development
-environment on a sun4. If we wanted to use a cross compiler on the sun4
-to build a program intended to be run on a sun3, we would configure the
-source for sun3.
-
-@example
-cd desk-calculator ; ./configure sun3
-@end example
-
-@noindent
-The fact that we are actually building the program on a sun4 makes no
-difference if the sun3 cross compiler presents an environment that looks
-like a sun3 from the point of view of the desk calculator source code.
-Specifically, the environment is a sun3 environment if the header files,
-predefined symbols, and libraries appear as they do on a sun3.
-
-Nor does the host environment refer to the the machine on which the
-program to be built will run. It is possible to provide a sun3
-emulation environment on a sun4 such that programs built in a sun3
-development environment actually run on the sun4. This technique is
-often used within individual programs to remedy deficiencies in the host
-operating system. For example, some operating systems do not provide
-the @code{bcopy} function and so it is emulated using the
-@code{memcpy} funtion.
-
-Host environment simply refers to the environment in which the program
-will be built from the source.
-
-
-@node Configuration Time Options, , Host Environments, Some Basic Terms
-@section Configuration Time Options
-
-Many programs have compile time options. That is, features of the
-program that are either compiled into the program or not based on a
-choice made by the person who builds the program. We refer to these as
-@emph{configuration options}. For example, our desk calculator might be
-capable of being compiled into a program that either uses infix notation
-or postfix as a configuration option. For a sun3, to choose infix you
-might use:
-
-@example
-./configure sun3 --enable-notation=infix
-@end example
-
-@noindent
-while for a sun4 with postfix you might use:
-
-@example
-./configure sun4 --enable-notation=postfix
-@end example
-
-If we wanted to build both at the same time, the intermediate pieces
-used in the build process must be kept separate.
-
-@example
-mkdir ../objdir.sun4
-(cd ../objdir.sun4 ; ../configure sun4 --enable-notation=postfix --srcdir=../src)
-mkdir ../objdir.sun3
-(cd ../objdir.sun3 ; ../configure sun3 --enable-notation=infix --srcdir=../src)
-@end example
-
-@noindent
-will create subdirectories for the intermediate pieces of the sun4 and
-sun3 configurations. This is necessary as previous systems were only
-capable of one configuration at a time. Otherwise, a second
-configuration would write over the first. We've chosen to retain this
-behaviour so the obj directories and the @code{--srcdir} configuration
-option are necessary to get the new behaviour. The order of the
-arguments doesn't matter. There should be exactly one argument without
-a leading @samp{-} and that argument will be assumed to be the host
-name.
-
-From here on the examples will assume that you want to build the tools
-@emph{in place} and won't show the @code{--srcdir} option, but remember
-that it is available.
-
-In order to actually install the program, the configuration system needs
-to know where you would like the program installed. The default
-location is @file{/usr/local}. We refer to this location as
-@code{$(prefix)}. All user visible programs will be installed in
-@file{@code{$(prefix)}/bin}. All other programs and files will be
-installed in a subdirectory of @file{@code{$(prefix)}/lib}.
-
-You can only change @code{$(prefix)} as a configuration time
-option.
-
-@example
-./configure sun4 --enable-notation=postfix --prefix=/local
-@end example
-
-@noindent
-Will configure the source such that:
-
-@example
-make install
-@end example
-
-@noindent
-will put its programs in @file{/local/bin} and @file{/local/lib/gcc}.
-If you change @code{$(prefix)} after building the source, you will need
-to:
-
-@example
-make clean
-@end example
-
-@noindent
-before the change will be propogated properly. This is because some
-tools need to know the locations of other tools.
-
-With these concepts in mind, we can drop the desk calculator example and
-move on to the application that resides in these directories, namely,
-the source to a development environment.
-
-@node Specifics., Building Development Environments, Some Basic Terms, top
-@chapter Specifics
-
-The @sc{gnu} Development Tools can be built on a wide variety of hosts. So,
-of course, they must be configured. Like the last example,
-
-@example
-./configure sun4 --prefix=/local
-./configure sun3 --prefix=/local
-@end example
-
-@noindent
-will configure the source to be built in subdirectories, in order to
-keep the intermediate pieces separate, and to be installed in
-@file{/local}.
-
-When built with suitable development environments, these will be native
-tools. We'll explain the term @emph{native} later.
-
-@node Building Development Environments, A Walk Through, Specifics., top
-@chapter Building Development Environments
-
-@cindex Target
-
-The @sc{gnu} development tools can not only be built in a
-number of host development environments, they can also be configured to
-create a number of different development environments on each of those
-hosts. We refer to a specific development environment created as a
-@emph{target}. That is, the word @emph{target} refers to the development
-environment produced by compiling this source and installing the
-resulting programs.
-
-For the @sc{gnu} development tools, the default target is the
-same as the host. That is, the development environment produced is
-intended to be compatible with the environment used to build the tools.
-
-In the example above, we created two configurations, one for sun4 and
-one for sun3. The first configuration is expecting to be built in a
-sun4 development environment, to create a sun4 development environment.
-It doesn't necessarily need to be built on a sun4 if a sun4 development
-environment is available elsewhere. Likewise, if the available sun4
-development environment produces executables intended for something
-other than sun4, then the development environment built from this sun4
-configuration will run on something other than a sun4. From the point
-of view of the configuration system and the @sc{gnu} development tools
-source, this doesn't matter. What matters is that they will be built in
-a sun4 environment.
-
-Similarly, the second configuration given above is expecting to be built
-in a sun3 development environment, to create a sun3 development
-environment.
-
-The development environment produced is a configuration time option,
-just like @code{$(prefix)}.
-
-@example
-./configure sun4 --prefix=/local --target=sun3
-./configure sun3 --prefix=/local --target=sun4
-@end example
-
-In this example, like before, we create two configurations. The first
-is intended to be built in a sun4 environment, in subdirectories, to be
-installed in @file{/local}. The second is intended to be built in a
-sun3 environment, in subdirectories, to be installed in @file{/local}.
-
-Unlike the previous example, the first configuration will produce a sun3
-development environment, perhaps even suitable for building the second
-configuration. Likewise, the second configuration will produce a sun4
-development environment, perhaps even suitable for building the first
-configuration.
-
-The development environment used to build these configurations will
-determine the machines on which the resulting development environments
-can be used.
-
-
-@node A Walk Through, Final Notes, Building Development Environments, top
-@chapter A Walk Through
-
-
-@menu
-* Native Development Environments:: Native Development Environments
-* Emulation Environments:: Emulation Environments
-* Simple Cross Environments:: Simple Cross Environments
-* Crossing Into Targets:: Crossing Into Targets
-* Canadian Cross:: Canadian Cross
-@end menu
-
-@node Native Development Environments, Emulation Environments, A Walk Through, A Walk Through
-@section Native Development Environments
-
-Let us assume for a moment that you have a sun4 and that with your sun4
-you received a development environment. This development environment is
-intended to be run on your sun4 to build programs that can be run on
-your sun4. You could, for instance, run this development environment on
-your sun4 to build our example desk calculator program. You could then
-run the desk calculator program on your sun4.
-
-@cindex Native
-@cindex Foreign
-The resulting desk calculator program is referred to as a @emph{native}
-program. The development environment itself is composed of native
-programs that, when run, build other native programs. Any other program
-is referred to as @emph{foreign}. Programs intended for other machines are
-foreign programs.
-
-This type of development environment, which is by far the most common,
-is refered to as @emph{native}. That is, a native development environment
-runs on some machine to build programs for that same machine. The
-process of using a native development environment to build native
-programs is called a @emph{native} build.
-
-@example
-./configure sun4
-@end example
-
-@noindent
-will configure this source such that when built in a sun4 development
-environment, with a development environment that builds programs
-intended to be run on sun4 machines, the programs built will be native
-programs and the resulting development environment will be a native
-development environment.
-
-The development system that came with your sun4 is one such environment.
-Using it to build the @sc{gnu} Development Tools is a very common activity
-and the resulting development environment is quite popular.
-
-@example
-make all
-@end example
-
-@noindent
-will build the tools as configured and will assume that you want to use
-the native development environment that came with your machine.
-
-@cindex Bootstrapping
-@cindex Stage1
-Using a development environment to build a development environment is
-called @emph{bootstrapping}. The release of the @sc{gnu}
-Development Tools is capable of bootstrapping itself. This is a very
-powerful feature that we'll return to later. For now, let's pretend
-that you used the native development environment that came with your
-sun4 to bootstrap the release and let's call the new
-development environment @emph{stage1}.
-
-Why bother? Well, most people find that the @sc{gnu} development
-environment builds programs that run faster and take up less space than
-the native development environments that came with their machines. Some
-people didn't get development environments with their machines and some
-people just like using the @sc{gnu} tools better than using other tools.
-
-@cindex Stage2
-While you're at it, if the @sc{gnu} tools produce better programs, maybe you
-should use them to build the @sc{gnu} tools. So let's
-pretend that you do. Let's call the new development environment
-@emph{stage2}.
-
-@cindex Stage3
-So far you've built a development environment, stage1, and you've used
-stage1 to build a new, faster and smaller development environment,
-stage2, but you haven't run any of the programs that the @sc{gnu} tools have
-built. You really don't yet know if these tools work. Do you have any
-programs built with the @sc{gnu} tools? Yes, you do. stage2. What does
-that program do? It builds programs. Ok, do you have any source handy
-to build into a program? Yes, you do. The @sc{gnu} tools themselves. In
-fact, if you use stage2 to build the @sc{gnu} tools again the resulting
-programs should be identical to stage2. Let's pretend that you do and
-call the new development environment @emph{stage3}.
-
-@cindex Three stage boot
-You've just completed what's called a @emph{three stage boot}. You now have
-a small, fast, somewhat tested, development environment.
-
-@example
-make bootstrap
-@end example
-
-@noindent
-will do a three stage boot across all tools and will compare stage2 to
-stage3 and complain if they are not identical.
-
-Once built,
-
-@example
-make install
-@end example
-
-@noindent
-will install the development environment in the default location, or in
-@code{$(prefix)} if you specified an alternate when you configured.
-
-@cindex Cross
-Any development environment that is not a native development environment
-is refered to as a @emph{cross} development environment. There are many
-different types of cross development environments but most fall into one
-of three basic categories.
-
-
-@node Emulation Environments, Simple Cross Environments, Native Development Environments, A Walk Through
-@section Emulation Environments
-
-@cindex Emulation
-The first category of cross development environment is called
-@emph{emulation}. There are two primary types of emulation, but both
-types result in programs that run on the native host.
-
-@cindex Software emulation
-@cindex Software emulator
-The first type is @emph{software emulation}. This form of cross
-development environment involves a native program that when run on the
-native host, is capable of interpreting, and in most aspects running, a
-program intended for some other machine. This technique is typically
-used when the other machine is either too expensive, too slow, too fast,
-or not available, perhaps because it hasn't yet been built. The native,
-interpreting program is called a @emph{software emulator}.
-
-The @sc{gnu} Development Tools do not currently include any software
-emulators. Some do exist and the @sc{gnu} Development Tools can be
-configured to create simple cross development environments for with
-these emulators. More on this later.
-
-The second type of emulation is when source intended for some other
-development environment is built into a program intended for the native
-host. The concepts of operating system universes and hosted operating
-systems are two such development environments.
-
-@node Simple Cross Environments, Crossing Into Targets, Emulation Environments, A Walk Through
-@section Simple Cross Environments
-
-@example
-./configure sun4 --target=a29k
-@end example
-
-@noindent
-will configure the tools such that when compiled in a sun4 development
-environment the resulting development environment can be used to create
-programs intended for an a29k. Again, this does not necessarily mean
-that the new development environment can be run on a sun4. That would
-depend on the development environment used to build these tools.
-
-Earlier you saw how to configure the tools to build a native development
-environment, that is, a development environment that runs on your sun4
-and builds programs for your sun4. Let's pretend that you use stage3 to
-build this simple cross configuration and let's call the new development
-environment gcc-a29k. Remember that this is a native build. Gcc-a29k
-is a collection of native programs intended to run on your sun4. That's
-what stage3 builds, programs for your sun4. Gcc-a29k represents an a29k
-development environment that builds programs intended to run on an a29k.
-But, remember, gcc-a29k runs on your sun4. Programs built with gcc-a29k
-will run on your sun4 only with the help of an appropriate software
-emulator.
-
-@cindex Simple cross
-@cindex Crossing to
-Building gcc-a29k is also a bootstrap but of a slightly different sort.
-We call gcc-a29k a @emph{simple cross} environment and using gcc-a29k to
-build a program intended for a29k is called @emph{crossing to} a29k.
-Simple cross environments are the second category of cross development
-environments.
-
-
-@node Crossing Into Targets, Canadian Cross, Simple Cross Environments, A Walk Through
-@section Crossing Into Targets
-
-@example
-./configure a29k --target=a29k
-@end example
-
-@noindent
-will configure the tools such that when compiled in an a29k development
-environment, the resulting development environment can be used to create
-programs intended for an a29k. Again, this does not necessarily mean
-that the new development environment can be run on an a29k. That would
-depend on the development environment used to build these tools.
-
-If you've been following along this walk through, then you've already
-built an a29k environment, namely gcc-a29k. Let's pretend you use
-gcc-a29k to build the current configuration.
-
-Gcc-a29k builds programs intended for the a29k so the new development
-environment will be intended for use on an a29k. That is, this new gcc
-consists of programs that are foreign to your sun4. They cannot be run
-on your sun4.
-
-@cindex Crossing into
-The process of building this configuration is a another bootstrap. This
-bootstrap is also a cross to a29k. Because this type of build is both a
-bootstrap and a cross to a29k, it is sometimes referred to as a
-@emph{cross into} a29k. This new development environment isn't really a
-cross development environment at all. It is intended to run on an a29k
-to produce programs for an a29k. You'll remember that this makes it, by
-definition, an a29k native compiler. @emph{Crossing into} has been
-introduced here not because it is a type of cross development
-environment, but because it is frequently mistaken as one. The process
-is @emph{a cross} but the resulting development environment is a native
-development environment.
-
-You could not have built this configuration with stage3, because stage3
-doesn't provide an a29k environment. Instead it provides a sun4
-environment.
-
-If you happen to have an a29k lying around, you could now use this fresh
-development environment on the a29k to three-stage these tools all over
-again. This process would look just like it did when we built the
-native sun4 development environment because we would be building another
-native development environment, this one on a29k.
-
-
-@node Canadian Cross, , Crossing Into Targets, A Walk Through
-@section Canadian Cross
-
-So far you've seen that our development environment source must be
-configured for a specific host and for a specific target. You've also
-seen that the resulting development environment depends on the
-development environment used in the build process.
-
-When all four match identically, that is, the configured host, the
-configured target, the environment presented by the development
-environment used in the build, and the machine on which the resulting
-development environment is intended to run, then the new development
-environment will be a native development environment.
-
-When all four match except the configured host, then we can assume that
-the development environment used in the build is some form of library
-emulation.
-
-When all four match except for the configured target, then the resulting
-development environment will be a simple cross development environment.
-
-When all four match except for the host on which the development
-environment used in the build runs, the build process is a @emph{cross into}
-and the resulting development environment will be native to some other
-machine.
-
-Most of the other permutations do exist in some form, but only one more
-is interesting to the current discussion.
-
-@example
-./configure a29k --target=sun3
-@end example
-
-@noindent
-will configure the tools such that when compiled in an a29k development
-environment, the resulting development environment can be used to create
-programs intended for a sun3. Again, this does not necessarily mean
-that the new development environment can be run on an a29k. That would
-depend on the development environment used to build these tools.
-
-If you are still following along, then you have two a29k development
-environments, the native development environment that runs on a29k, and
-the simple cross that runs on your sun4. If you use the a29k native
-development environment on the a29k, you will be doing the same thing we
-did a while back, namely building a simple cross from a29k to sun3.
-Let's pretend that instead, you use gcc-a29k, the simple cross
-development environment that runs on sun4 but produces programs for
-a29k.
-
-The resulting development environment will run on a29k because that's
-what gcc-a29k builds, a29k programs. This development environment will
-produce programs for a sun3 because that is how it was configured. This
-means that the resulting development environment is a simple cross.
-
-@cindex Canadian Cross
-@cindex Three party cross
-There really isn't a common name for this process because very few
-development environments are capable of being configured this
-extensively. For the sake of discussion, let's call this process a
-@emph{Canadian cross}. It's a three party cross, Canada has a three
-party system, hence Canadian Cross.
-
-@node Final Notes, Index, A Walk Through, top
-@chapter Final Notes
-
-By @emph{configures}, I mean that links, Makefile, .gdbinit, and
-config.status are built. Configuration is always done from the source
-directory.
-
-@table @code
-
-@item ./configure @var{name}
-configures this directory, perhaps recursively, for a single host+target
-pair where the host and target are both @var{name}. If a previous
-configuration existed, it will be overwritten.
-
-@item ./configure @var{hostname} --target=@var{targetname}
-configures this directory, perhaps recursively, for a single host+target
-pair where the host is @var{hostname} and target is @var{targetname}.
-If a previous configuration existed, it will be overwritten.
-
-@end table
-
-@menu
-* Hacking Configurations:: Hacking Configurations
-@end menu
-
-@node Hacking Configurations, , Final Notes, Final Notes
-@section Hacking Configurations
-
-The configure scripts essentially do three things, create subdirectories
-if appropriate, build a @file{Makefile}, and create links to files, all
-based on and tailored to, a specific host+target pair. The scripts also
-create a @file{.gdbinit} if appropriate but this is not tailored.
-
-The Makefile is created by prepending some variable definitions to a
-Makefile template called @file{Makefile.in} and then inserting host and
-target specific Makefile fragments. The variables are set based on the
-chosen host+target pair and build style, that is, if you use
-@code{--srcdir} or not. The host and target specific Makefile may or may
-not exist.
-
-@itemize @bullet
-
-@item
-Makefiles can be edited directly, but those changes will eventually be
-lost. Changes intended to be permanent for a specific host should be
-made to the host specific Makefile fragment. This should be in
-@file{./config/mh-@var{host}} if it exists. Changes intended to be
-permanent for a specific target should be made to the target specific
-Makefile fragment. This should be in @file{./config/mt-@var{target}} if
-it exists. Changes intended to be permanent for the directory should be
-made in @file{Makefile.in}. To propogate changes to any of these,
-either use @code{make Makefile} or @code{./config.status} or
-re-configure.
-
-@end itemize
-
-@page
-@node Index, , Final Notes, top
-@appendix Index
-
-@printindex cp
-
-@contents
-@bye
-
-@c Local Variables:
-@c fill-column: 72
-@c End:
diff --git a/contrib/binutils/etc/configbuild.ein b/contrib/binutils/etc/configbuild.ein
deleted file mode 100644
index 7a0e214f2d52..000000000000
--- a/contrib/binutils/etc/configbuild.ein
+++ /dev/null
@@ -1,149 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: configbuild.fig
-%%Creator: fig2dev Version 3.1 Patchlevel 1
-%%CreationDate: Fri Jun 12 20:13:16 1998
-%%For: ian@tito.cygnus.com (Ian Lance Taylor)
-%%Orientation: Portrait
-%%BoundingBox: 0 0 322 173
-%%Pages: 0
-%%BeginSetup
-%%IncludeFeature: *PageSize Letter
-%%EndSetup
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {} def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
--62.0 226.0 translate
-1 -1 scale
-
-/clp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-%%EndProlog
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-7.500 slw
-% Polyline
-n 1050 900 m 2100 900 l 2100 1425 l 1050 1425 l clp gs col-1 s gr
-% Polyline
-n 1500 1425 m 1500 2100 l gs col-1 s gr
-n 1530.00 1980.00 m 1500.00 2100.00 l 1470.00 1980.00 l 1500.50 1980.50 l 1530.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 1500 2625 m 1500 3300 l gs col-1 s gr
-n 1530.00 3180.00 m 1500.00 3300.00 l 1470.00 3180.00 l 1500.50 3180.50 l 1530.00 3180.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 2925 900 m 3825 900 l 3825 1425 l 2925 1425 l clp gs col-1 s gr
-% Polyline
-n 1155 2100 m 1050 2100 1050 2520 105 arcto 4 {pop} repeat 1050 2625 2220 2625 105 arcto 4 {pop} repeat 2325 2625 2325 2205 105 arcto 4 {pop} repeat 2325 2100 1155 2100 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 2850 2100 m 4125 2100 l 4125 2625 l 2850 2625 l clp gs col-1 s gr
-% Polyline
-n 3375 1425 m 3375 2100 l gs col-1 s gr
-n 3405.00 1980.00 m 3375.00 2100.00 l 3345.00 1980.00 l 3375.50 1980.50 l 3405.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 5100 900 m 6300 900 l 6300 1350 l 5100 1350 l clp gs col-1 s gr
-% Polyline
-n 5625 1350 m 5625 2100 l gs col-1 s gr
-n 5655.00 1980.00 m 5625.00 2100.00 l 5595.00 1980.00 l 5625.50 1980.50 l 5655.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 5205 2100 m 5100 2100 5100 2520 105 arcto 4 {pop} repeat 5100 2625 6270 2625 105 arcto 4 {pop} repeat 6375 2625 6375 2205 105 arcto 4 {pop} repeat 6375 2100 5205 2100 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 5625 2625 m 5625 3300 l gs col-1 s gr
-n 5655.00 3180.00 m 5625.00 3300.00 l 5595.00 3180.00 l 5625.50 3180.50 l 5655.00 3180.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 5100 3300 m 6225 3300 l 6225 3750 l 5100 3750 l clp gs col-1 s gr
-% Polyline
- [1 50.0] 50.000000 setdash
-n 2850 2400 m 2325 2400 l gs col-1 s gr [] 0 setdash
-n 2445.00 2430.00 m 2325.00 2400.00 l 2445.00 2370.00 l 2445.50 2400.50 l 2445.00 2430.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
- [1 50.0] 50.000000 setdash
-n 4125 2400 m 5100 2400 l gs col-1 s gr [] 0 setdash
-n 4980.00 2370.00 m 5100.00 2400.00 l 4980.00 2430.00 l 4980.50 2400.50 l 4980.00 2370.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 1050 3300 m 1950 3300 l 1950 3750 l 1050 3750 l clp gs col-1 s gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 1200 m
-gs 1 -1 sc (config.in) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3000 1200 m
-gs 1 -1 sc (configure) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3000 2400 m
-gs 1 -1 sc (config.status) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 2400 m
-gs 1 -1 sc (config.status) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 3600 m
-gs 1 -1 sc (config.h) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5250 1200 m
-gs 1 -1 sc (Makefile.in) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5250 2400 m
-gs 1 -1 sc (config.status) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5250 3600 m
-gs 1 -1 sc (Makefile) col-1 show gr
-$F2psEnd
-restore
diff --git a/contrib/binutils/etc/configbuild.fig b/contrib/binutils/etc/configbuild.fig
deleted file mode 100644
index 747592d3d623..000000000000
--- a/contrib/binutils/etc/configbuild.fig
+++ /dev/null
@@ -1,50 +0,0 @@
-#FIG 3.1
-Portrait
-Center
-Inches
-1200 2
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 1050 900 2100 900 2100 1425 1050 1425 1050 900
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 1500 1425 1500 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 1500 2625 1500 3300
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 2925 900 3825 900 3825 1425 2925 1425 2925 900
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 2325 2625 2325 2100 1050 2100 1050 2625 2325 2625
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 2850 2100 4125 2100 4125 2625 2850 2625 2850 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 3375 1425 3375 2100
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 5100 900 6300 900 6300 1350 5100 1350 5100 900
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 5625 1350 5625 2100
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 6375 2625 6375 2100 5100 2100 5100 2625 6375 2625
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 5625 2625 5625 3300
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 5100 3300 6225 3300 6225 3750 5100 3750 5100 3300
-2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 2850 2400 2325 2400
-2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 4125 2400 5100 2400
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 1050 3300 1950 3300 1950 3750 1050 3750 1050 3300
-4 0 -1 0 0 0 12 0.0000000 4 180 645 1200 1200 config.in\001
-4 0 -1 0 0 0 12 0.0000000 4 180 705 3000 1200 configure\001
-4 0 -1 0 0 0 12 0.0000000 4 180 990 3000 2400 config.status\001
-4 0 -1 0 0 0 12 0.0000000 4 180 990 1200 2400 config.status\001
-4 0 -1 0 0 0 12 0.0000000 4 180 600 1200 3600 config.h\001
-4 0 -1 0 0 0 12 0.0000000 4 135 855 5250 1200 Makefile.in\001
-4 0 -1 0 0 0 12 0.0000000 4 180 990 5250 2400 config.status\001
-4 0 -1 0 0 0 12 0.0000000 4 135 675 5250 3600 Makefile\001
diff --git a/contrib/binutils/etc/configbuild.jin b/contrib/binutils/etc/configbuild.jin
deleted file mode 100644
index 44cd9397aa16..000000000000
--- a/contrib/binutils/etc/configbuild.jin
+++ /dev/null
Binary files differ
diff --git a/contrib/binutils/etc/configbuild.tin b/contrib/binutils/etc/configbuild.tin
deleted file mode 100644
index cfdd6fe07437..000000000000
--- a/contrib/binutils/etc/configbuild.tin
+++ /dev/null
@@ -1,9 +0,0 @@
- config.in *configure* Makefile.in
- | | |
- | v |
- | config.status |
- | | |
- *config.status*<======+==========>*config.status*
- | |
- v v
- config.h Makefile
diff --git a/contrib/binutils/etc/configdev.ein b/contrib/binutils/etc/configdev.ein
deleted file mode 100644
index 7f837850d695..000000000000
--- a/contrib/binutils/etc/configdev.ein
+++ /dev/null
@@ -1,185 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: configdev.fig
-%%Creator: fig2dev Version 3.1 Patchlevel 1
-%%CreationDate: Mon Jun 15 17:35:19 1998
-%%For: ian@tito.cygnus.com (Ian Lance Taylor)
-%%Orientation: Portrait
-%%BoundingBox: 0 0 344 317
-%%Pages: 0
-%%BeginSetup
-%%IncludeFeature: *PageSize Letter
-%%EndSetup
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {} def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
--62.0 370.0 translate
-1 -1 scale
-
-/clp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-%%EndProlog
-
-$F2psBegin
-10 setmiterlimit
- 0.06000 0.06000 sc
-7.500 slw
-% Polyline
-n 1050 900 m 2100 900 l 2100 1425 l 1050 1425 l clp gs col-1 s gr
-% Polyline
-n 2925 900 m 3975 900 l 3975 1425 l 2925 1425 l clp gs col-1 s gr
-% Polyline
-n 5550 900 m 6750 900 l 6750 1350 l 5550 1350 l clp gs col-1 s gr
-% Polyline
-n 3750 1800 m 5025 1800 l 5025 2250 l 3750 2250 l clp gs col-1 s gr
-% Polyline
-n 1155 2100 m 1050 2100 1050 2520 105 arcto 4 {pop} repeat 1050 2625 2070 2625 105 arcto 4 {pop} repeat 2175 2625 2175 2205 105 arcto 4 {pop} repeat 2175 2100 1155 2100 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 5550 3300 m 6675 3300 l 6675 3750 l 5550 3750 l clp gs col-1 s gr
-% Polyline
-n 5655 2100 m 5550 2100 5550 2520 105 arcto 4 {pop} repeat 5550 2625 6495 2625 105 arcto 4 {pop} repeat 6600 2625 6600 2205 105 arcto 4 {pop} repeat 6600 2100 5655 2100 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 3750 3600 m 4875 3600 l 4875 4050 l 3750 4050 l clp gs col-1 s gr
-% Polyline
-n 3855 2700 m 3750 2700 3750 3045 105 arcto 4 {pop} repeat 3750 3150 4545 3150 105 arcto 4 {pop} repeat 4650 3150 4650 2805 105 arcto 4 {pop} repeat 4650 2700 3855 2700 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 2850 5700 m 3750 5700 l 3750 6150 l 2850 6150 l clp gs col-1 s gr
-% Polyline
-n 3030 4800 m 2925 4800 2925 5145 105 arcto 4 {pop} repeat 2925 5250 3645 5250 105 arcto 4 {pop} repeat 3750 5250 3750 4905 105 arcto 4 {pop} repeat 3750 4800 3030 4800 105 arcto 4 {pop} repeat clp gs col-1 s gr
-% Polyline
-n 1500 1425 m 1500 2100 l gs col-1 s gr
-n 1530.00 1980.00 m 1500.00 2100.00 l 1470.00 1980.00 l 1500.50 1980.50 l 1530.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 3300 1425 m 3300 4800 l gs col-1 s gr
-n 3330.00 4680.00 m 3300.00 4800.00 l 3270.00 4680.00 l 3300.50 4680.50 l 3330.00 4680.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 3300 1575 m 1875 1575 l 1875 2100 l gs col-1 s gr
-n 1905.00 1980.00 m 1875.00 2100.00 l 1845.00 1980.00 l 1875.50 1980.50 l 1905.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 3300 1575 m 5700 1575 l 5700 2100 l gs col-1 s gr
-n 5730.00 1980.00 m 5700.00 2100.00 l 5670.00 1980.00 l 5700.50 1980.50 l 5730.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 6225 1350 m 6225 2100 l gs col-1 s gr
-n 6255.00 1980.00 m 6225.00 2100.00 l 6195.00 1980.00 l 6225.50 1980.50 l 6255.00 1980.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 6075 2625 m 6075 3300 l gs col-1 s gr
-n 6105.00 3180.00 m 6075.00 3300.00 l 6045.00 3180.00 l 6075.50 3180.50 l 6105.00 3180.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 4200 2250 m 4200 2700 l gs col-1 s gr
-n 4230.00 2580.00 m 4200.00 2700.00 l 4170.00 2580.00 l 4200.50 2580.50 l 4230.00 2580.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 4200 3150 m 4200 3600 l gs col-1 s gr
-n 4230.00 3480.00 m 4200.00 3600.00 l 4170.00 3480.00 l 4200.50 3480.50 l 4230.00 3480.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 4200 4050 m 4200 4500 l 3675 4500 l 3675 4800 l gs col-1 s gr
-n 3705.00 4680.00 m 3675.00 4800.00 l 3645.00 4680.00 l 3675.50 4680.50 l 3705.00 4680.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 3375 5250 m 3375 5700 l gs col-1 s gr
-n 3405.00 5580.00 m 3375.00 5700.00 l 3345.00 5580.00 l 3375.50 5580.50 l 3405.00 5580.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 3300 2925 m 3750 2925 l gs col-1 s gr
-n 3630.00 2895.00 m 3750.00 2925.00 l 3630.00 2955.00 l 3630.50 2925.50 l 3630.00 2895.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 1500 2625 m 1500 3300 l gs col-1 s gr
-n 1530.00 3180.00 m 1500.00 3300.00 l 1470.00 3180.00 l 1500.50 3180.50 l 1530.00 3180.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-% Polyline
-n 1050 3300 m 2100 3300 l 2100 3750 l 1050 3750 l clp gs col-1 s gr
-% Polyline
-n 4875 3825 m 5250 3825 l 5250 2400 l 5550 2400 l gs col-1 s gr
-n 5430.00 2370.00 m 5550.00 2400.00 l 5430.00 2430.00 l 5430.50 2400.50 l 5430.00 2370.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 1200 m
-gs 1 -1 sc (acconfig.h) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3000 1200 m
-gs 1 -1 sc (configure.in) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5700 1200 m
-gs 1 -1 sc (Makefile.am) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3900 2100 m
-gs 1 -1 sc (acinclude.m4) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 2400 m
-gs 1 -1 sc (autoheader) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-1200 3600 m
-gs 1 -1 sc (config.in) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5700 3600 m
-gs 1 -1 sc (Makefile.in) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-5700 2400 m
-gs 1 -1 sc (automake) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3900 3900 m
-gs 1 -1 sc (aclocal.m4) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3900 3000 m
-gs 1 -1 sc (aclocal) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3000 6000 m
-gs 1 -1 sc (configure) col-1 show gr
-/Times-Roman findfont 180.00 scalefont setfont
-3000 5100 m
-gs 1 -1 sc (autoconf) col-1 show gr
-$F2psEnd
-restore
diff --git a/contrib/binutils/etc/configdev.fig b/contrib/binutils/etc/configdev.fig
deleted file mode 100644
index 4d386ec4ff7a..000000000000
--- a/contrib/binutils/etc/configdev.fig
+++ /dev/null
@@ -1,80 +0,0 @@
-#FIG 3.1
-Portrait
-Center
-Inches
-1200 2
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 1050 900 2100 900 2100 1425 1050 1425 1050 900
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 2925 900 3975 900 3975 1425 2925 1425 2925 900
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 5550 900 6750 900 6750 1350 5550 1350 5550 900
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 3750 1800 5025 1800 5025 2250 3750 2250 3750 1800
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 2175 2625 2175 2100 1050 2100 1050 2625 2175 2625
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 5550 3300 6675 3300 6675 3750 5550 3750 5550 3300
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 6600 2625 6600 2100 5550 2100 5550 2625 6600 2625
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 3750 3600 4875 3600 4875 4050 3750 4050 3750 3600
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 4650 3150 4650 2700 3750 2700 3750 3150 4650 3150
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 2850 5700 3750 5700 3750 6150 2850 6150 2850 5700
-2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
- 3750 5250 3750 4800 2925 4800 2925 5250 3750 5250
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 1500 1425 1500 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 3300 1425 3300 4800
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 3
- 1 1 1.00 60.00 120.00
- 3300 1575 1875 1575 1875 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 3
- 1 1 1.00 60.00 120.00
- 3300 1575 5700 1575 5700 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 6225 1350 6225 2100
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 6075 2625 6075 3300
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 4200 2250 4200 2700
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 4200 3150 4200 3600
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 4
- 1 1 1.00 60.00 120.00
- 4200 4050 4200 4500 3675 4500 3675 4800
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 3375 5250 3375 5700
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 3300 2925 3750 2925
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
- 1 1 1.00 60.00 120.00
- 1500 2625 1500 3300
-2 2 0 1 -1 7 0 0 -1 0.000 0 0 0 0 0 5
- 1050 3300 2100 3300 2100 3750 1050 3750 1050 3300
-2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 4
- 1 1 1.00 60.00 120.00
- 4875 3825 5250 3825 5250 2400 5550 2400
-4 0 -1 0 0 0 12 0.0000000 4 180 780 1200 1200 acconfig.h\001
-4 0 -1 0 0 0 12 0.0000000 4 180 885 3000 1200 configure.in\001
-4 0 -1 0 0 0 12 0.0000000 4 135 945 5700 1200 Makefile.am\001
-4 0 -1 0 0 0 12 0.0000000 4 135 990 3900 2100 acinclude.m4\001
-4 0 -1 0 0 0 12 0.0000000 4 135 840 1200 2400 autoheader\001
-4 0 -1 0 0 0 12 0.0000000 4 180 645 1200 3600 config.in\001
-4 0 -1 0 0 0 12 0.0000000 4 135 855 5700 3600 Makefile.in\001
-4 0 -1 0 0 0 12 0.0000000 4 135 735 5700 2400 automake\001
-4 0 -1 0 0 0 12 0.0000000 4 135 810 3900 3900 aclocal.m4\001
-4 0 -1 0 0 0 12 0.0000000 4 135 540 3900 3000 aclocal\001
-4 0 -1 0 0 0 12 0.0000000 4 180 705 3000 6000 configure\001
-4 0 -1 0 0 0 12 0.0000000 4 135 660 3000 5100 autoconf\001
diff --git a/contrib/binutils/etc/configdev.jin b/contrib/binutils/etc/configdev.jin
deleted file mode 100644
index 9b11a71acd7d..000000000000
--- a/contrib/binutils/etc/configdev.jin
+++ /dev/null
Binary files differ
diff --git a/contrib/binutils/etc/configdev.tin b/contrib/binutils/etc/configdev.tin
deleted file mode 100644
index c9b6f34f4d79..000000000000
--- a/contrib/binutils/etc/configdev.tin
+++ /dev/null
@@ -1,17 +0,0 @@
- acconfig.h configure.in Makefile.am
- | | |
- | --------------+---------------------- |
- | | | | |
- v v | acinclude.m4 | |
- *autoheader* | | v v
- | | v --->*automake*
- v |--->*aclocal* | |
- config.in | | | v
- | v | Makefile.in
- | aclocal.m4---
- | |
- v v
- *autoconf*
- |
- v
- configure
diff --git a/contrib/binutils/etc/configure b/contrib/binutils/etc/configure
deleted file mode 100755
index 101fcefecfcc..000000000000
--- a/contrib/binutils/etc/configure
+++ /dev/null
@@ -1,862 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12.1
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # 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 << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.12.1"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=Makefile.in
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:555: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set) 2>&1 | grep ac_space` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.12.1"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/contrib/binutils/etc/configure.in b/contrib/binutils/etc/configure.in
deleted file mode 100644
index b785068009eb..000000000000
--- a/contrib/binutils/etc/configure.in
+++ /dev/null
@@ -1,7 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.5)
-AC_INIT(Makefile.in)
-
-AC_PROG_INSTALL
-
-AC_OUTPUT(Makefile)
diff --git a/contrib/binutils/etc/configure.man b/contrib/binutils/etc/configure.man
deleted file mode 100644
index a7699041a711..000000000000
--- a/contrib/binutils/etc/configure.man
+++ /dev/null
@@ -1,166 +0,0 @@
-.\" -*- nroff -*-
-.\" Copyright (c) 1991, 1992, 1996 Cygnus Support
-.\" written by K. Richard Pixley
-.TH configure 1 "29 March 1996" "cygnus support" "Cygnus Support"
-.de BP
-.sp
-.ti \-.2i
-\(**
-..
-
-.SH NAME
-configure \- prepare source code to be built
-
-.SH SYNOPSIS
-configure HOST [--target=TARGET] [--srcdir=DIR] [--rm]
- [--site=SITE] [--prefix=DIR] [--exec_prefix=DIR]
- [--program_prefix=DIR] [--tmpdir=DIR]
- [--with-PACKAGE[=YES/NO]] [--without-PACKAGE]
- [--enable-FEATURE[=YES/NO]] [--disable-FEATURE]
- [--norecursion] [--nfp] [-s] [-v] [-V | --version] [--help]
-
-.SH DESCRIPTION
-.I configure
-is a program used to prepare souce code to be built. It does this by
-generating Makefiles and .gdbinit files, creating symlinks, recursing
-in subdirectories, and some other miscellaneous file editing.
-
-.SH OPTIONS
-.I configure
-accepts the following options:
-
-.TP
-.I \--target=TARGET
-Requests that the sources be configured to target the
-.I TARGET
-machine. If no target is specified explicitly, the target is assumed
-to be the same as the host.
-
-.TP
-.I \--srcdir=DIR
-tells configure to find the source in
-.I DIR.
-Object code is always built in the current directory,
-.I `.'.
-
-.TP
-.I \--rm
-asks configure to remove a configuration rather than create one.
-
-.TP
-.I \--site=SITE
-asks configure to use any site-specific Makefile fragments for
-.I SITE
-when building Makefiles.
-
-.TP
-.I \--prefix=DIR
-sets the location in which to install files to
-.I DIR.
-The default is "/usr/local".
-
-.TP
-.I \--exec_prefix=DIR
-sets the root directory for host-dependent files to
-.I DIR.
-The default location is the value of
-.I prefix.
-
-.TP
-.I \--program_prefix=DIR
-configures the source to install programs which have the same names as
-common Unix programs, such as "make", in
-.I DIR.
-Also applies to programs which might be used for cross-compilation.
-
-.TP
-.I \--tmpdir=DIR
-sets the directory in which configure creates temporary files to
-.I DIR.
-
-.TP
-.I \--with-PACKAGE[=YES/NO]
-sets a flag for the build to recognize that
-.I PACKAGE
-is explicitly present or not present. If
-.I \=YES/NO
-is nonexistent, the default is
-.I YES.
-.I \--without-PACKAGE
-is equivalent to
-.IR \--with-PACKAGE=no .
-
-.TP
-.I \--enable-FEATURE[=YES/NO]
-sets a flag for the build to recognize that
-.I FEATURE
-should be included or not included. If
-.I \=YES/NO
-is nonexistent, the default is
-.I YES.
-.I \--disable-FEATURE
-is equivalent to
-.IR --enable-FEATURE=no .
-
-.TP
-.I \--norecursion
-asks that only the current directory be configured. Normally
-.I configure
-recurs on subdirectories.
-
-.TP
-.I \-nfp
-Notifies
-.I configure
-that all of the specified hosts have
-.I no floating point
-units.
-
-.TP
-.I \-s
-used internally by configure to supress status messages on
-subdirectory recursions. Override with
-.I \-v
-
-.TP
-.I \-v
-verbose output. Asks that configure print status lines for each
-directory configured. Normally, only the status lines for the current
-directory are printed.
-
-.TP
-.I \--version
-.I \-V
-prints
-.I configure
-version number.
-
-.TP
-.I \-help
-displays a brief usage summary.
-
-
-.SH FILES
-configure.in for each directory's individual needs
-.br
-Makefile.in Makefile template
-.br
-config.sub for parsing configuration names
-.br
-config.guess for guessing HOST when not specified
-.br
-config.status non-recursively rebuilds current directory
-
-.SH FILES
-.ta \w'gmon.sum 'u
-a.out the namelist and text space.
-.br
-gmon.out dynamic call graph and profile.
-.br
-gmon.sum summarized dynamic call graph and profile.
-
-.SH "SEE ALSO"
-.RB "`\|" configure "\|'"
-entry in
-.B
-info.
diff --git a/contrib/binutils/etc/configure.texi b/contrib/binutils/etc/configure.texi
deleted file mode 100644
index 91401671f925..000000000000
--- a/contrib/binutils/etc/configure.texi
+++ /dev/null
@@ -1,2644 +0,0 @@
-\input texinfo
-@c %**start of header
-@setfilename configure.info
-@settitle The GNU configure and build system
-@setchapternewpage off
-@c %**end of header
-
-@dircategory GNU admin
-@direntry
-* configure: (configure). The GNU configure and build system
-@end direntry
-
-@ifinfo
-This file documents the GNU configure and build system.
-
-Copyright (C) 1998 Cygnus Solutions.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@titlepage
-@title The GNU configure and build system
-@author Ian Lance Taylor
-
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1998 Cygnus Solutions
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation
-approved by the Free Software Foundation.
-@end titlepage
-
-@ifinfo
-@node Top
-@top GNU configure and build system
-
-The GNU configure and build system.
-
-@menu
-* Introduction:: Introduction.
-* Getting Started:: Getting Started.
-* Files:: Files.
-* Configuration Names:: Configuration Names.
-* Cross Compilation Tools:: Cross Compilation Tools.
-* Canadian Cross:: Canadian Cross.
-* Cygnus Configure:: Cygnus Configure.
-* Multilibs:: Multilibs.
-* FAQ:: Frequently Asked Questions.
-* Index:: Index.
-@end menu
-
-@end ifinfo
-
-@node Introduction
-@chapter Introduction
-
-This document describes the GNU configure and build systems. It
-describes how autoconf, automake, libtool, and make fit together. It
-also includes a discussion of the older Cygnus configure system.
-
-This document does not describe in detail how to use each of the tools;
-see the respective manuals for that. Instead, it describes which files
-the developer must write, which files are machine generated and how they
-are generated, and where certain common problems should be addressed.
-
-@ifnothtml
-This document draws on several sources, including the autoconf manual by
-David MacKenzie (@pxref{Top, , autoconf overview, autoconf, Autoconf}),
-the automake manual by David MacKenzie and Tom Tromey (@pxref{Top, ,
-automake overview, automake, GNU Automake}), the libtool manual by
-Gordon Matzigkeit (@pxref{Top, , libtool overview, libtool, GNU
-libtool}), and the Cygnus configure manual by K. Richard Pixley.
-@end ifnothtml
-@ifhtml
-This document draws on several sources, including
-@uref{http://www.delorie.com/gnu/docs/autoconf/autoconf_toc.html, the
-autoconf manual} by David MacKenzie,
-@uref{http://www.delorie.com/gnu/docs/automake/automake_toc.html, the
-automake manual} by David MacKenzie and Tom Tromey,
-@uref{http://www.delorie.com/gnu/docs/libtool/libtool_toc.html, the
-libtool manual} by Gordon Matzigkeit, and the Cygnus configure manual by
-K. Richard Pixley.
-@end ifhtml
-
-@menu
-* Goals:: Goals.
-* Tools:: The tools.
-* History:: History.
-* Building:: Building.
-@end menu
-
-@node Goals
-@section Goals
-@cindex goals
-
-The GNU configure and build system has two main goals.
-
-The first is to simplify the development of portable programs. The
-system permits the developer to concentrate on writing the program,
-simplifying many details of portability across Unix and even Windows
-systems, and permitting the developer to describe how to build the
-program using simple rules rather than complex Makefiles.
-
-The second is to simplify the building of programs distributed as source
-code. All programs are built using a simple, standardized, two step
-process. The program builder need not install any special tools in
-order to build the program.
-
-@node Tools
-@section Tools
-
-The GNU configure and build system is comprised of several different
-tools. Program developers must build and install all of these tools.
-
-People who just want to build programs from distributed sources normally
-do not need any special tools beyond a Unix shell, a make program, and a
-C compiler.
-
-@table @asis
-@item autoconf
-provides a general portability framework, based on testing the features
-of the host system at build time.
-@item automake
-a system for describing how to build a program, permitting the developer
-to write a simplified @file{Makefile}.
-@item libtool
-a standardized approach to building shared libraries.
-@item gettext
-provides a framework for translation of text messages into other
-languages; not really discussed in this document.
-@item m4
-autoconf requires the GNU version of m4; the standard Unix m4 does not
-suffice.
-@item perl
-automake requires perl.
-@end table
-
-@node History
-@section History
-@cindex history
-
-This is a very brief and probably inaccurate history.
-
-As the number of Unix variants increased during the 1980s, it became
-harder to write programs which could run on all variants. While it was
-often possible to use @code{#ifdef} to identify particular systems,
-developers frequently did not have access to every system, and the
-characteristics of some systems changed from version to version.
-
-By 1992, at least three different approaches had been developed:
-@itemize @bullet
-@item
-The Metaconfig program, by Larry Wall, Harlan Stenn, and Raphael
-Manfredi.
-@item
-The Cygnus configure script, by K. Richard Pixley, and the gcc configure
-script, by Richard Stallman. These use essentially the same approach,
-and the developers communicated regularly.
-@item
-The autoconf program, by David MacKenzie.
-@end itemize
-
-The Metaconfig program is still used for Perl and a few other programs.
-It is part of the Dist package. I do not know if it is being developed.
-
-In 1994, David MacKenzie and others modified autoconf to incorporate all
-the features of Cygnus configure. Since then, there has been a slow but
-steady conversion of GNU programs from Cygnus configure to autoconf. gcc
-has been converted, eliminating the gcc configure script.
-
-GNU autoconf was regularly maintained until late 1996. As of this
-writing in June, 1998, it has no public maintainer.
-
-Most programs are built using the make program, which requires the
-developer to write Makefiles describing how to build the programs.
-Since most programs are built in pretty much the same way, this led to a
-lot of duplication.
-
-The X Window system is built using the imake tool, which uses a database
-of rules to eliminate the duplication. However, building a tool which
-was developed using imake requires that the builder have imake
-installed, violating one of the goals of the GNU system.
-
-The new BSD make provides a standard library of Makefile fragments,
-which permits developers to write very simple Makefiles. However, this
-requires that the builder install the new BSD make program.
-
-In 1994, David MacKenzie wrote the first version of automake, which
-permitted writing a simple build description which was converted into a
-Makefile which could be used by the standard make program. In 1995, Tom
-Tromey completely rewrote automake in Perl, and he continues to enhance
-it.
-
-Various free packages built libraries, and by around 1995 several
-included support to build shared libraries on various platforms.
-However, there was no consistent approach. In early 1996, Gordon
-Matzigkeit began working on libtool, which provided a standardized
-approach to building shared libraries. This was integrated into
-automake from the start.
-
-The development of automake and libtool was driven by the GNITS project,
-a group of GNU maintainers who designed standardized tools to help meet
-the GNU coding standards.
-
-@node Building
-@section Building
-
-Most readers of this document should already know how to build a tool by
-running @samp{configure} and @samp{make}. This section may serve as a
-quick introduction or reminder.
-
-Building a tool is normally as simple as running @samp{configure}
-followed by @samp{make}. You should normally run @samp{configure} from
-an empty directory, using some path to refer to the @samp{configure}
-script in the source directory. The directory in which you run
-@samp{configure} is called the @dfn{object directory}.
-
-In order to use a object directory which is different from the source
-directory, you must be using the GNU version of @samp{make}, which has
-the required @samp{VPATH} support. Despite this restriction, using a
-different object directory is highly recommended:
-@itemize @bullet
-@item
-It keeps the files generated during the build from cluttering up your
-sources.
-@item
-It permits you to remove the built files by simply removing the entire
-build directory.
-@item
-It permits you to build from the same sources with several sets of
-configure options simultaneously.
-@end itemize
-
-If you don't have GNU @samp{make}, you will have to run @samp{configure}
-in the source directory. All GNU packages should support this; in
-particular, GNU packages should not assume the presence of GNU
-@samp{make}.
-
-After running @samp{configure}, you can build the tools by running
-@samp{make}.
-
-To install the tools, run @samp{make install}. Installing the tools
-will copy the programs and any required support files to the
-@dfn{installation directory}. The location of the installation
-directory is controlled by @samp{configure} options, as described below.
-
-In the Cygnus tree at present, the info files are built and installed as
-a separate step. To build them, run @samp{make info}. To install them,
-run @samp{make install-info}.
-
-All @samp{configure} scripts support a wide variety of options. The
-most interesting ones are @samp{--with} and @samp{--enable} options
-which are generally specific to particular tools. You can usually use
-the @samp{--help} option to get a list of interesting options for a
-particular configure script.
-
-The only generic options you are likely to use are the @samp{--prefix}
-and @samp{--exec-prefix} options. These options are used to specify the
-installation directory.
-
-The directory named by the @samp{--prefix} option will hold machine
-independent files such as info files.
-
-The directory named by the @samp{--exec-prefix} option, which is
-normally a subdirectory of the @samp{--prefix} directory, will hold
-machine dependent files such as executables.
-
-The default for @samp{--prefix} is @file{/usr/local}. The default for
-@samp{--exec-prefix} is the value used for @samp{--prefix}.
-
-The convention used in Cygnus releases is to use a @samp{--prefix}
-option of @file{/usr/cygnus/@var{release}}, where @var{release} is the
-name of the release, and to use a @samp{--exec-prefix} option of
-@file{/usr/cygnus/@var{release}/H-@var{host}}, where @var{host} is the
-configuration name of the host system (@pxref{Configuration Names}).
-
-Do not use either the source or the object directory as the installation
-directory. That will just lead to confusion.
-
-@node Getting Started
-@chapter Getting Started
-
-To start using the GNU configure and build system with your software
-package, you must write three files, and you must run some tools to
-manually generate additional files.
-
-@menu
-* Write configure.in:: Write configure.in.
-* Write Makefile.am:: Write Makefile.am.
-* Write acconfig.h:: Write acconfig.h.
-* Generate files:: Generate files.
-* Getting Started Example:: Example.
-@end menu
-
-@node Write configure.in
-@section Write configure.in
-@cindex @file{configure.in}, writing
-
-You must first write the file @file{configure.in}. This is an autoconf
-input file, and the autoconf manual describes in detail what this file
-should look like.
-
-You will write tests in your @file{configure.in} file to check for
-conditions that may change from one system to another, such as the
-presence of particular header files or functions.
-
-For example, not all systems support the @samp{gettimeofday} function.
-If you want to use the @samp{gettimeofday} function when it is
-available, and to use some other function when it is not, you would
-check for this by putting @samp{AC_CHECK_FUNCS(gettimeofday)} in
-@file{configure.in}.
-
-When the configure script is run at build time, this will arrange to
-define the preprocessor macro @samp{HAVE_GETTIMEOFDAY} to the value 1 if
-the @samp{gettimeofday} function is available, and to not define the
-macro at all if the function is not available. Your code can then use
-@samp{#ifdef} to test whether it is safe to call @samp{gettimeofday}.
-
-If you have an existing body of code, the @samp{autoscan} program may
-help identify potential portability problems, and hence configure tests
-that you will want to use.
-@ifnothtml
-@xref{Invoking autoscan, , , autoconf, the autoconf manual}.
-@end ifnothtml
-@ifhtml
-See @uref{http://www.delorie.com/gnu/docs/autoconf/autoconf_4.html, the
-autoscan documentation}.
-@end ifhtml
-
-Another handy tool for an existing body of code is @samp{ifnames}. This
-will show you all the preprocessor conditionals that the code already
-uses.
-@ifnothtml
-@xref{Invoking ifnames, , , autoconf, the autoconf manual}.
-@end ifnothtml
-@ifhtml
-See @uref{http://www.delorie.com/gnu/docs/autoconf/autoconf_5.html, the
-ifnames documentation}.
-@end ifhtml
-
-Besides the portability tests which are specific to your particular
-package, every @file{configure.in} file should contain the following
-macros.
-
-@table @samp
-@item AC_INIT
-@cindex @samp{AC_INIT}
-This macro takes a single argument, which is the name of a file in your
-package. For example, @samp{AC_INIT(foo.c)}.
-
-@item AC_PREREQ(@var{VERSION})
-@cindex @samp{AC_PREREQ}
-This macro is optional. It may be used to indicate the version of
-@samp{autoconf} that you are using. This will prevent users from
-running an earlier version of @samp{autoconf} and perhaps getting an
-invalid @file{configure} script. For example, @samp{AC_PREREQ(2.12)}.
-
-@item AM_INIT_AUTOMAKE
-@cindex @samp{AM_INIT_AUTOMAKE}
-This macro takes two arguments: the name of the package, and a version
-number. For example, @samp{AM_INIT_AUTOMAKE(foo, 1.0)}. (This macro is
-not needed if you are not using automake).
-
-@item AM_CONFIG_HEADER
-@cindex @samp{AM_CONFIG_HEADER}
-This macro names the header file which will hold the preprocessor macro
-definitions at run time. Normally this should be @file{config.h}. Your
-sources would then use @samp{#include "config.h"} to include it.
-
-This macro may optionally name the input file for that header file; by
-default, this is @file{config.h.in}, but that file name works poorly on
-DOS filesystems. Therefore, it is often better to name it explicitly as
-@file{config.in}.
-
-This is what you should normally put in @file{configure.in}:
-@example
-AM_CONFIG_HEADER(config.h:config.in)
-@end example
-
-@cindex @samp{AC_CONFIG_HEADER}
-(If you are not using automake, use @samp{AC_CONFIG_HEADER} rather than
-@samp{AM_CONFIG_HEADER}).
-
-@item AM_MAINTAINER_MODE
-@cindex @samp{AM_MAINTAINER_MODE}
-This macro always appears in Cygnus configure scripts. Other programs
-may or may not use it.
-
-If this macro is used, the @samp{--enable-maintainer-mode} option is
-required to enable automatic rebuilding of generated files used by the
-configure system. This of course requires that developers be aware of,
-and use, that option.
-
-If this macro is not used, then the generated files will always be
-rebuilt automatically. This will cause problems if the wrong versions
-of autoconf, automake, or others are in the builder's @samp{PATH}.
-
-(If you are not using automake, you do not need to use this macro).
-
-@item AC_EXEEXT
-@cindex @samp{AC_EXEEXT}
-@cindex @samp{AM_EXEEXT}
-Either this macro or @samp{AM_EXEEXT} always appears in Cygnus configure
-files. Other programs may or may not use one of them.
-
-This macro looks for the executable suffix used on the host system. On
-Unix systems, this is the empty string. On Windows systems, this is
-@samp{.exe}. This macro directs automake to use the executable suffix
-as appropriate when creating programs. This macro does not take any
-arguments.
-
-The @samp{AC_EXEEXT} form is new, and is part of a Cygnus patch to
-autoconf to support compiling with Visual C++. Older programs use
-@samp{AM_EXEEXT} instead.
-
-(Programs which do not use automake use neither @samp{AC_EXEEXT} nor
-@samp{AM_EXEEXT}).
-
-@item AC_PROG_CC
-@cindex @samp{AC_PROG_CC}
-If you are writing C code, you will normally want to use this macro. It
-locates the C compiler to use. It does not take any arguments.
-
-However, if this @file{configure.in} file is for a library which is to
-be compiled by a cross compiler which may not fully work, then you will
-not want to use @samp{AC_PROG_CC}. Instead, you will want to use a
-variant which does not call the macro @samp{AC_PROG_CC_WORKS}. Examples
-can be found in various @file{configure.in} files for libraries that are
-compiled with cross compilers, such as libiberty or libgloss. This is
-essentially a bug in autoconf, and there will probably be a better
-workaround at some point.
-
-@item AC_PROG_CXX
-@cindex @samp{AC_PROG_CXX}
-If you are writing C++ code, you will want to use this macro. It
-locates the C++ compiler to use. It does not take any arguments. The
-same cross compiler comments apply as for @samp{AC_PROG_CC}.
-
-@item AM_PROG_LIBTOOL
-@cindex @samp{AM_PROG_LIBTOOL}
-If you want to build libraries, and you want to permit them to be
-shared, or you want to link against libraries which were built using
-libtool, then you will need this macro. This macro is required in order
-to use libtool.
-
-@cindex @samp{AM_DISABLE_SHARED}
-By default, this will cause all libraries to be built as shared
-libraries. To prevent this--to change the default--use
-@samp{AM_DISABLE_SHARED} before @samp{AM_PROG_LIBTOOL}. The configure
-options @samp{--enable-shared} and @samp{--disable-shared} may be used
-to override the default at build time.
-
-@item AC_DEFINE(_GNU_SOURCE)
-@cindex @samp{_GNU_SOURCE}
-GNU packages should normally include this line before any other feature
-tests. This defines the macro @samp{_GNU_SOURCE} when compiling, which
-directs the libc header files to provide the standard GNU system
-interfaces including all GNU extensions. If this macro is not defined,
-certain GNU extensions may not be available.
-
-@item AC_OUTPUT
-@cindex @samp{AC_OUTPUT}
-This macro takes a list of file names which the configure process should
-produce. This is normally a list of one or more @file{Makefile} files
-in different directories. If your package lives entirely in a single
-directory, you would use simply @samp{AC_OUTPUT(Makefile)}. If you also
-have, for example, a @file{lib} subdirectory, you would use
-@samp{AC_OUTPUT(Makefile lib/Makefile)}.
-@end table
-
-If you want to use locally defined macros in your @file{configure.in}
-file, then you will need to write a @file{acinclude.m4} file which
-defines them (if not using automake, this file is called
-@file{aclocal.m4}). Alternatively, you can put separate macros in an
-@file{m4} subdirectory, and put @samp{ACLOCAL_AMFLAGS = -I m4} in your
-@file{Makefile.am} file so that the @samp{aclocal} program will be able
-to find them.
-
-The different macro prefixes indicate which tool defines the macro.
-Macros which start with @samp{AC_} are part of autoconf. Macros which
-start with @samp{AM_} are provided by automake or libtool.
-
-@node Write Makefile.am
-@section Write Makefile.am
-@cindex @file{Makefile.am}, writing
-
-You must write the file @file{Makefile.am}. This is an automake input
-file, and the automake manual describes in detail what this file should
-look like.
-
-The automake commands in @file{Makefile.am} mostly look like variable
-assignments in a @file{Makefile}. automake recognizes special variable
-names, and automatically add make rules to the output as needed.
-
-There will be one @file{Makefile.am} file for each directory in your
-package. For each directory with subdirectories, the @file{Makefile.am}
-file should contain the line
-@smallexample
-SUBDIRS = @var{dir} @var{dir} @dots{}
-@end smallexample
-@noindent
-where each @var{dir} is the name of a subdirectory.
-
-For each @file{Makefile.am}, there should be a corresponding
-@file{Makefile} in the @samp{AC_OUTPUT} macro in @file{configure.in}.
-
-Every @file{Makefile.am} written at Cygnus should contain the line
-@smallexample
-AUTOMAKE_OPTIONS = cygnus
-@end smallexample
-@noindent
-This puts automake into Cygnus mode. See the automake manual for
-details.
-
-You may to include the version number of @samp{automake} that you are
-using on the @samp{AUTOMAKE_OPTIONS} line. For example,
-@smallexample
-AUTOMAKE_OPTIONS = cygnus 1.3
-@end smallexample
-@noindent
-This will prevent users from running an earlier version of
-@samp{automake} and perhaps getting an invalid @file{Makefile.in}.
-
-If your package builds a program, then in the directory where that
-program is built you will normally want a line like
-@smallexample
-bin_PROGRAMS = @var{program}
-@end smallexample
-@noindent
-where @var{program} is the name of the program. You will then want a
-line like
-@smallexample
-@var{program}_SOURCES = @var{file} @var{file} @dots{}
-@end smallexample
-@noindent
-where each @var{file} is the name of a source file to link into the
-program (e.g., @samp{foo.c}).
-
-If your package builds a library, and you do not want the library to
-ever be built as a shared library, then in the directory where that
-library is built you will normally want a line like
-@smallexample
-lib_LIBRARIES = lib@var{name}.a
-@end smallexample
-@noindent
-where @samp{lib@var{name}.a} is the name of the library. You will then
-want a line like
-@smallexample
-lib@var{name}_a_SOURCES = @var{file} @var{file} @dots{}
-@end smallexample
-@noindent
-where each @var{file} is the name of a source file to add to the
-library.
-
-If your package builds a library, and you want to permit building the
-library as a shared library, then in the directory where that library is
-built you will normally want a line like
-@smallexample
-lib_LTLIBRARIES = lib@var{name}.la
-@end smallexample
-The use of @samp{LTLIBRARIES}, and the @samp{.la} extension, indicate a
-library to be built using libtool. As usual, you will then want a line
-like
-@smallexample
-lib@var{name}_la_SOURCES = @var{file} @var{file} @dots{}
-@end smallexample
-
-The strings @samp{bin} and @samp{lib} that appear above in
-@samp{bin_PROGRAMS} and @samp{lib_LIBRARIES} are not arbitrary. They
-refer to particular directories, which may be set by the @samp{--bindir}
-and @samp{--libdir} options to @file{configure}. If those options are
-not used, the default values are based on the @samp{--prefix} or
-@samp{--exec-prefix} options to @file{configure}. It is possible to use
-other names if the program or library should be installed in some other
-directory.
-
-The @file{Makefile.am} file may also contain almost anything that may
-appear in a normal @file{Makefile}. automake also supports many other
-special variables, as well as conditionals.
-
-See the automake manual for more information.
-
-@node Write acconfig.h
-@section Write acconfig.h
-@cindex @file{acconfig.h}, writing
-
-If you are generating a portability header file, (i.e., you are using
-@samp{AM_CONFIG_HEADER} in @file{configure.in}), then you will have to
-write a @file{acconfig.h} file. It will have to contain the following
-lines.
-
-@smallexample
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
-@end smallexample
-
-This requirement is really a bug in the system, and the requirement may
-be eliminated at some later date.
-
-The @file{acconfig.h} file will also similar comment and @samp{#undef}
-lines for any unusual macros in the @file{configure.in} file, including
-any macro which appears in a @samp{AC_DEFINE} macro.
-
-In particular, if you are writing a GNU package and therefore include
-@samp{AC_DEFINE(_GNU_SOURCE)} in @file{configure.in} as suggested above,
-you will need lines like this in @file{acconfig.h}:
-@smallexample
-/* Enable GNU extensions. */
-#undef _GNU_SOURCE
-@end smallexample
-
-Normally the @samp{autoheader} program will inform you of any such
-requirements by printing an error message when it is run. However, if
-you do anything particular odd in your @file{configure.in} file, you
-will have to make sure that the right entries appear in
-@file{acconfig.h}, since otherwise the results of the tests may not be
-available in the @file{config.h} file which your code will use.
-
-(Thee @samp{PACKAGE} and @samp{VERSION} lines are not required if you
-are not using automake, and in that case you may not need a
-@file{acconfig.h} file at all).
-
-@node Generate files
-@section Generate files
-
-Once you have written @file{configure.in}, @file{Makefile.am},
-@file{acconfig.h}, and possibly @file{acinclude.m4}, you must use
-autoconf and automake programs to produce the first versions of the
-generated files. This is done by executing the following sequence of
-commands.
-
-@smallexample
-aclocal
-autoconf
-autoheader
-automake
-@end smallexample
-
-The @samp{aclocal} and @samp{automake} commands are part of the automake
-package, and the @samp{autoconf} and @samp{autoheader} commands are part
-of the autoconf package.
-
-If you are using a @file{m4} subdirectory for your macros, you will need
-to use the @samp{-I m4} option when you run @samp{aclocal}.
-
-If you are not using the Cygnus tree, use the @samp{-a} option when
-running @samp{automake} command in order to copy the required support
-files into your source directory.
-
-If you are using libtool, you must build and install the libtool package
-with the same @samp{--prefix} and @samp{--exec-prefix} options as you
-used with the autoconf and automake packages. You must do this before
-running any of the above commands. If you are not using the Cygnus
-tree, you will need to run the @samp{libtoolize} program to copy the
-libtool support files into your directory.
-
-Once you have managed to run these commands without getting any errors,
-you should create a new empty directory, and run the @samp{configure}
-script which will have been created by @samp{autoconf} with the
-@samp{--enable-maintainer-mode} option. This will give you a set of
-Makefiles which will include rules to automatically rebuild all the
-generated files.
-
-After doing that, whenever you have changed some of the input files and
-want to regenerated the other files, go to your object directory and run
-@samp{make}. Doing this is more reliable than trying to rebuild the
-files manually, because there are complex order dependencies and it is
-easy to forget something.
-
-@node Getting Started Example
-@section Example
-
-Let's consider a trivial example.
-
-Suppose we want to write a simple version of @samp{touch}. Our program,
-which we will call @samp{poke}, will take a single file name argument,
-and use the @samp{utime} system call to set the modification and access
-times of the file to the current time. We want this program to be
-highly portable.
-
-We'll first see what this looks like without using autoconf and
-automake, and then see what it looks like with them.
-
-@menu
-* Getting Started Example 1:: First Try.
-* Getting Started Example 2:: Second Try.
-* Getting Started Example 3:: Third Try.
-* Generate Files in Example:: Generate Files.
-@end menu
-
-@node Getting Started Example 1
-@subsection First Try
-
-Here is our first try at @samp{poke.c}. Note that we've written it
-without ANSI/ISO C prototypes, since we want it to be highly portable.
-
-@example
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <utime.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-@{
- if (argc != 2)
- @{
- fprintf (stderr, "Usage: poke file\n");
- exit (1);
- @}
-
- if (utime (argv[1], NULL) < 0)
- @{
- perror ("utime");
- exit (1);
- @}
-
- exit (0);
-@}
-@end example
-
-We also write a simple @file{Makefile}.
-
-@example
-CC = gcc
-CFLAGS = -g -O2
-
-all: poke
-
-poke: poke.o
- $(CC) -o poke $(CFLAGS) $(LDFLAGS) poke.o
-@end example
-
-So far, so good.
-
-Unfortunately, there are a few problems.
-
-On older Unix systems derived from BSD 4.3, the @samp{utime} system call
-does not accept a second argument of @samp{NULL}. On those systems, we
-need to pass a pointer to @samp{struct utimbuf} structure.
-Unfortunately, even older systems don't define that structure; on those
-systems, we need to pass an array of two @samp{long} values.
-
-The header file @file{stdlib.h} was invented by ANSI C, and older
-systems don't have a copy. We included it above to get a declaration of
-@samp{exit}.
-
-We can find some of these portability problems by running
-@samp{autoscan}, which will create a @file{configure.scan} file which we
-can use as a prototype for our @file{configure.in} file. I won't show
-the output, but it will notice the potential problems with @samp{utime}
-and @file{stdlib.h}.
-
-In our @file{Makefile}, we don't provide any way to install the program.
-This doesn't matter much for such a simple example, but a real program
-will need an @samp{install} target. For that matter, we will also want
-a @samp{clean} target.
-
-@node Getting Started Example 2
-@subsection Second Try
-
-Here is our second try at this program.
-
-We modify @file{poke.c} to use preprocessor macros to control what
-features are available. (I've cheated a bit by using the same macro
-names which autoconf will use).
-
-@example
-#include <stdio.h>
-
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#endif
-
-#include <sys/types.h>
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-
-#ifndef HAVE_UTIME_NULL
-
-#include <time.h>
-
-#ifndef HAVE_STRUCT_UTIMBUF
-
-struct utimbuf
-@{
- long actime;
- long modtime;
-@};
-
-#endif
-
-static int
-utime_now (file)
- char *file;
-@{
- struct utimbuf now;
-
- now.actime = now.modtime = time (NULL);
- return utime (file, &now);
-@}
-
-#define utime(f, p) utime_now (f)
-
-#endif /* HAVE_UTIME_NULL */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-@{
- if (argc != 2)
- @{
- fprintf (stderr, "Usage: poke file\n");
- exit (1);
- @}
-
- if (utime (argv[1], NULL) < 0)
- @{
- perror ("utime");
- exit (1);
- @}
-
- exit (0);
-@}
-@end example
-
-Here is the associated @file{Makefile}. We've added support for the
-preprocessor flags we use. We've also added @samp{install} and
-@samp{clean} targets.
-
-@example
-# Set this to your installation directory.
-bindir = /usr/local/bin
-
-# Uncomment this if you have the standard ANSI/ISO C header files.
-# STDC_HDRS = -DSTDC_HEADERS
-
-# Uncomment this if you have utime.h.
-# UTIME_H = -DHAVE_UTIME_H
-
-# Uncomment this if utime (FILE, NULL) works on your system.
-# UTIME_NULL = -DHAVE_UTIME_NULL
-
-# Uncomment this if struct utimbuf is defined in utime.h.
-# UTIMBUF = -DHAVE_STRUCT_UTIMBUF
-
-CC = gcc
-CFLAGS = -g -O2
-
-ALL_CFLAGS = $(STDC_HDRS) $(UTIME_H) $(UTIME_NULL) $(UTIMBUF) $(CFLAGS)
-
-all: poke
-
-poke: poke.o
- $(CC) -o poke $(ALL_CFLAGS) $(LDFLAGS) poke.o
-
-.c.o:
- $(CC) -c $(ALL_CFLAGS) poke.c
-
-install: poke
- cp poke $(bindir)/poke
-
-clean:
- rm poke poke.o
-@end example
-
-Some problems with this approach should be clear.
-
-Users who want to compile poke will have to know how @samp{utime} works
-on their systems, so that they can uncomment the @file{Makefile}
-correctly.
-
-The installation is done using @samp{cp}, but many systems have an
-@samp{install} program which may be used, and which supports optional
-features such as stripping debugging information out of the installed
-binary.
-
-The use of @file{Makefile} variables like @samp{CC}, @samp{CFLAGS} and
-@samp{LDFLAGS} follows the requirements of the GNU standards. This is
-convenient for all packages, since it reduces surprises for users.
-However, it is easy to get the details wrong, and wind up with a
-slightly nonstandard distribution.
-
-@node Getting Started Example 3
-@subsection Third Try
-
-For our third try at this program, we will write a @file{configure.in}
-script to discover the configuration features on the host system, rather
-than requiring the user to edit the @file{Makefile}. We will also write
-a @file{Makefile.am} rather than a @file{Makefile}.
-
-The only change to @file{poke.c} is to add a line at the start of the
-file:
-@smallexample
-#include "config.h"
-@end smallexample
-
-The new @file{configure.in} file is as follows.
-
-@example
-AC_INIT(poke.c)
-AM_INIT_AUTOMAKE(poke, 1.0)
-AM_CONFIG_HEADER(config.h:config.in)
-AC_PROG_CC
-AC_HEADER_STDC
-AC_CHECK_HEADERS(utime.h)
-AC_EGREP_HEADER(utimbuf, utime.h, AC_DEFINE(HAVE_STRUCT_UTIMBUF))
-AC_FUNC_UTIME_NULL
-AC_OUTPUT(Makefile)
-@end example
-
-The first four macros in this file, and the last one, were described
-above; see @ref{Write configure.in}. If we omit these macros, then when
-we run @samp{automake} we will get a reminder that we need them.
-
-The other macros are standard autoconf macros.
-
-@table @samp
-@item AC_HEADER_STDC
-Check for standard C headers.
-@item AC_CHECK_HEADERS
-Check whether a particular header file exists.
-@item AC_EGREP_HEADER
-Check for a particular string in a particular header file, in this case
-checking for @samp{utimbuf} in @file{utime.h}.
-@item AC_FUNC_UTIME_NULL
-Check whether @samp{utime} accepts a NULL second argument to set the
-file change time to the current time.
-@end table
-
-See the autoconf manual for a more complete description.
-
-The new @file{Makefile.am} file is as follows. Note how simple this is
-compared to our earlier @file{Makefile}.
-
-@example
-bin_PROGRAMS = poke
-
-poke_SOURCES = poke.c
-@end example
-
-This means that we should build a single program name @samp{poke}. It
-should be installed in the binary directory, which we called
-@samp{bindir} earlier. The program @samp{poke} is built from the source
-file @file{poke.c}.
-
-We must also write a @file{acconfig.h} file. Besides @samp{PACKAGE} and
-@samp{VERSION}, which must be mentioned for all packages which use
-automake, we must include @samp{HAVE_STRUCT_UTIMBUF}, since we mentioned
-it in an @samp{AC_DEFINE}.
-
-@example
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
-
-/* Whether utime.h defines struct utimbuf. */
-#undef HAVE_STRUCT_UTIMBUF
-@end example
-
-@node Generate Files in Example
-@subsection Generate Files
-
-We must now generate the other files, using the following commands.
-
-@smallexample
-aclocal
-autoconf
-autoheader
-automake
-@end smallexample
-
-When we run @samp{autoheader}, it will remind us of any macros we forgot
-to add to @file{acconfig.h}.
-
-When we run @samp{automake}, it will want to add some files to our
-distribution. It will add them automatically if we use the
-@samp{--add-missing} option.
-
-By default, @samp{automake} will run in GNU mode, which means that it
-will want us to create certain additional files; as of this writing, it
-will want @file{NEWS}, @file{README}, @file{AUTHORS}, and
-@file{ChangeLog}, all of which are files which should appear in a
-standard GNU distribution. We can either add those files, or run
-@samp{automake} with the @samp{--foreign} option.
-
-Running these tools will generate the following files, all of which are
-described in the next chapter.
-
-@itemize @bullet
-@item
-@file{aclocal.m4}
-@item
-@file{configure}
-@item
-@file{config.in}
-@item
-@file{Makefile.in}
-@item
-@file{stamp-h.in}
-@end itemize
-
-@node Files
-@chapter Files
-
-As was seen in the previous chapter, the GNU configure and build system
-uses a number of different files. The developer must write a few files.
-The others are generated by various tools.
-
-The system is rather flexible, and can be used in many different ways.
-In describing the files that it uses, I will describe the common case,
-and mention some other cases that may arise.
-
-@menu
-* Developer Files:: Developer Files.
-* Build Files:: Build Files.
-* Support Files:: Support Files.
-@end menu
-
-@node Developer Files
-@section Developer Files
-
-This section describes the files written or generated by the developer
-of a package.
-
-@menu
-* Developer Files Picture:: Developer Files Picture.
-* Written Developer Files:: Written Developer Files.
-* Generated Developer Files:: Generated Developer Files.
-@end menu
-
-@node Developer Files Picture
-@subsection Developer Files Picture
-
-Here is a picture of the files which are written by the developer, the
-generated files which would be included with a complete source
-distribution, and the tools which create those files.
-@ifinfo
-The file names are plain text and the tool names are enclosed by
-@samp{*} characters
-@end ifinfo
-@ifnotinfo
-The file names are in rectangles with square corners and the tool names
-are in rectangles with rounded corners
-@end ifnotinfo
-(e.g., @samp{autoheader} is the name of a tool, not the name of a file).
-
-@image{configdev}
-
-@node Written Developer Files
-@subsection Written Developer Files
-
-The following files would be written by the developer.
-
-@table @file
-@item configure.in
-@cindex @file{configure.in}
-This is the configuration script. This script contains invocations of
-autoconf macros. It may also contain ordinary shell script code. This
-file will contain feature tests for portability issues. The last thing
-in the file will normally be an @samp{AC_OUTPUT} macro listing which
-files to create when the builder runs the configure script. This file
-is always required when using the GNU configure system. @xref{Write
-configure.in}.
-
-@item Makefile.am
-@cindex @file{Makefile.am}
-This is the automake input file. It describes how the code should be
-built. It consists of definitions of automake variables. It may also
-contain ordinary Makefile targets. This file is only needed when using
-automake (newer tools normally use automake, but there are still older
-tools which have not been converted, in which the developer writes
-@file{Makefile.in} directly). @xref{Write Makefile.am}.
-
-@item acconfig.h
-@cindex @file{acconfig.h}
-When the configure script creates a portability header file, by using
-@samp{AM_CONFIG_HEADER} (or, if not using automake,
-@samp{AC_CONFIG_HEADER}), this file is used to describe macros which are
-not recognized by the @samp{autoheader} command. This is normally a
-fairly uninteresting file, consisting of a collection of @samp{#undef}
-lines with comments. Normally any call to @samp{AC_DEFINE} in
-@file{configure.in} will require a line in this file. @xref{Write
-acconfig.h}.
-
-@item acinclude.m4
-@cindex @file{acinclude.m4}
-This file is not always required. It defines local autoconf macros.
-These macros may then be used in @file{configure.in}. If you don't need
-any local autoconf macros, then you don't need this file at all. In
-fact, in general, you never need local autoconf macros, since you can
-put everything in @file{configure.in}, but sometimes a local macro is
-convenient.
-
-Newer tools may omit @file{acinclude.m4}, and instead use a
-subdirectory, typically named @file{m4}, and define
-@samp{ACLOCAL_AMFLAGS = -I m4} in @file{Makefile.am} to force
-@samp{aclocal} to look there for macro definitions. The macro
-definitions are then placed in separate files in that directory.
-
-The @file{acinclude.m4} file is only used when using automake; in older
-tools, the developer writes @file{aclocal.m4} directly, if it is needed.
-@end table
-
-@node Generated Developer Files
-@subsection Generated Developer Files
-
-The following files would be generated by the developer.
-
-When using automake, these files are normally not generated manually
-after the first time. Instead, the generated @file{Makefile} contains
-rules to automatically rebuild the files as required. When
-@samp{AM_MAINTAINER_MODE} is used in @file{configure.in} (the normal
-case in Cygnus code), the automatic rebuilding rules will only be
-defined if you configure using the @samp{--enable-maintainer-mode}
-option.
-
-When using automatic rebuilding, it is important to ensure that all the
-various tools have been built and installed on your @samp{PATH}. Using
-automatic rebuilding is highly recommended, so much so that I'm not
-going to explain what you have to do if you don't use it.
-
-@table @file
-@item configure
-@cindex @file{configure}
-This is the configure script which will be run when building the
-package. This is generated by @samp{autoconf} from @file{configure.in}
-and @file{aclocal.m4}. This is a shell script.
-
-@item Makefile.in
-@cindex @file{Makefile.in}
-This is the file which the configure script will turn into the
-@file{Makefile} at build time. This file is generated by
-@samp{automake} from @file{Makefile.am}. If you aren't using automake,
-you must write this file yourself. This file is pretty much a normal
-@file{Makefile}, with some configure substitutions for certain
-variables.
-
-@item aclocal.m4
-@cindex @file{aclocal.m4}
-This file is created by the @samp{aclocal} program, based on the
-contents of @file{configure.in} and @file{acinclude.m4} (or, as noted in
-the description of @file{acinclude.m4} above, on the contents of an
-@file{m4} subdirectory). This file contains definitions of autoconf
-macros which @samp{autoconf} will use when generating the file
-@file{configure}. These autoconf macros may be defined by you in
-@file{acinclude.m4} or they may be defined by other packages such as
-automake, libtool or gettext. If you aren't using automake, you will
-normally write this file yourself; in that case, if @file{configure.in}
-uses only standard autoconf macros, this file will not be needed at all.
-
-@item config.in
-@cindex @file{config.in}
-@cindex @file{config.h.in}
-This file is created by @samp{autoheader} based on @file{acconfig.h} and
-@file{configure.in}. At build time, the configure script will define
-some of the macros in it to create @file{config.h}, which may then be
-included by your program. This permits your C code to use preprocessor
-conditionals to change its behaviour based on the characteristics of the
-host system. This file may also be called @file{config.h.in}.
-
-@item stamp.h-in
-@cindex @file{stamp-h.in}
-This rather uninteresting file, which I omitted from the picture, is
-generated by @samp{automake}. It always contains the string
-@samp{timestamp}. It is used as a timestamp file indicating whether
-@file{config.in} is up to date. Using a timestamp file means that
-@file{config.in} can be marked as up to date without actually changing
-its modification time. This is useful since @file{config.in} depends
-upon @file{configure.in}, but it is easy to change @file{configure.in}
-in a way which does not affect @file{config.in}.
-@end table
-
-@node Build Files
-@section Build Files
-
-This section describes the files which are created at configure and
-build time. These are the files which somebody who builds the package
-will see.
-
-Of course, the developer will also build the package. The distinction
-between developer files and build files is not that the developer does
-not see the build files, but that somebody who only builds the package
-does not have to worry about the developer files.
-
-@menu
-* Build Files Picture:: Build Files Picture.
-* Build Files Description:: Build Files Description.
-@end menu
-
-@node Build Files Picture
-@subsection Build Files Picture
-
-Here is a picture of the files which will be created at build time.
-@file{config.status} is both a created file and a shell script which is
-run to create other files, and the picture attempts to show that.
-
-@image{configbuild}
-
-@node Build Files Description
-@subsection Build Files Description
-
-This is a description of the files which are created at build time.
-
-@table @file
-@item config.status
-@cindex @file{config.status}
-The first step in building a package is to run the @file{configure}
-script. The @file{configure} script will create the file
-@file{config.status}, which is itself a shell script. When you first
-run @file{configure}, it will automatically run @file{config.status}.
-An @file{Makefile} derived from an automake generated @file{Makefile.in}
-will contain rules to automatically run @file{config.status} again when
-necessary to recreate certain files if their inputs change.
-
-@item Makefile
-@cindex @file{Makefile}
-This is the file which make will read to build the program. The
-@file{config.status} script will transform @file{Makefile.in} into
-@file{Makefile}.
-
-@item config.h
-@cindex @file{config.h}
-This file defines C preprocessor macros which C code can use to adjust
-its behaviour on different systems. The @file{config.status} script
-will transform @file{config.in} into @file{config.h}.
-
-@item config.cache
-@cindex @file{config.cache}
-This file did not fit neatly into the picture, and I omitted it. It is
-used by the @file{configure} script to cache results between runs. This
-can be an important speedup. If you modify @file{configure.in} in such
-a way that the results of old tests should change (perhaps you have
-added a new library to @samp{LDFLAGS}), then you will have to remove
-@file{config.cache} to force the tests to be rerun.
-
-The autoconf manual explains how to set up a site specific cache file.
-This can speed up running @file{configure} scripts on your system.
-
-@item stamp.h
-@cindex @file{stamp-h}
-This file, which I omitted from the picture, is similar to
-@file{stamp-h.in}. It is used as a timestamp file indicating whether
-@file{config.h} is up to date. This is useful since @file{config.h}
-depends upon @file{config.status}, but it is easy for
-@file{config.status} to change in a way which does not affect
-@file{config.h}.
-@end table
-
-@node Support Files
-@section Support Files
-
-The GNU configure and build system requires several support files to be
-included with your distribution. You do not normally need to concern
-yourself with these. If you are using the Cygnus tree, most are already
-present. Otherwise, they will be installed with your source by
-@samp{automake} (with the @samp{--add-missing} option) and
-@samp{libtoolize}.
-
-You don't have to put the support files in the top level directory. You
-can put them in a subdirectory, and use the @samp{AC_CONFIG_AUX_DIR}
-macro in @file{configure.in} to tell @samp{automake} and the
-@file{configure} script where they are.
-
-In this section, I describe the support files, so that you can know what
-they are and why they are there.
-
-@table @file
-@item ABOUT-NLS
-Added by automake if you are using gettext. This is a documentation
-file about the gettext project.
-@item ansi2knr.c
-Used by an automake generated @file{Makefile} if you put @samp{ansi2knr}
-in @samp{AUTOMAKE_OPTIONS} in @file{Makefile.am}. This permits
-compiling ANSI C code with a K&R C compiler.
-@item ansi2knr.1
-The man page which goes with @file{ansi2knr.c}.
-@item config.guess
-A shell script which determines the configuration name for the system on
-which it is run.
-@item config.sub
-A shell script which canonicalizes a configuration name entered by a
-user.
-@item elisp-comp
-Used to compile Emacs LISP files.
-@item install-sh
-A shell script which installs a program. This is used if the configure
-script can not find an install binary.
-@item ltconfig
-Used by libtool. This is a shell script which configures libtool for
-the particular system on which it is used.
-@item ltmain.sh
-Used by libtool. This is the actual libtool script which is used, after
-it is configured by @file{ltconfig} to build a library.
-@item mdate-sh
-A shell script used by an automake generated @file{Makefile} to pretty
-print the modification time of a file. This is used to maintain version
-numbers for texinfo files.
-@item missing
-A shell script used if some tool is missing entirely. This is used by
-an automake generated @file{Makefile} to avoid certain sorts of
-timestamp problems.
-@item mkinstalldirs
-A shell script which creates a directory, including all parent
-directories. This is used by an automake generated @file{Makefile}
-during installation.
-@item texinfo.tex
-Required if you have any texinfo files. This is used when converting
-Texinfo files into DVI using @samp{texi2dvi} and @TeX{}.
-@item ylwrap
-A shell script used by an automake generated @file{Makefile} to run
-programs like @samp{bison}, @samp{yacc}, @samp{flex}, and @samp{lex}.
-These programs default to producing output files with a fixed name, and
-the @file{ylwrap} script runs them in a subdirectory to avoid file name
-conflicts when using a parallel make program.
-@end table
-
-@node Configuration Names
-@chapter Configuration Names
-@cindex configuration names
-@cindex configuration triplets
-@cindex triplets
-@cindex host names
-@cindex host triplets
-@cindex canonical system names
-@cindex system names
-@cindex system types
-
-The GNU configure system names all systems using a @dfn{configuration
-name}. All such names used to be triplets (they may now contain four
-parts in certain cases), and the term @dfn{configuration triplet} is
-still seen.
-
-@menu
-* Configuration Name Definition:: Configuration Name Definition.
-* Using Configuration Names:: Using Configuration Names.
-@end menu
-
-@node Configuration Name Definition
-@section Configuration Name Definition
-
-This is a string of the form
-@var{cpu}-@var{manufacturer}-@var{operating_system}. In some cases,
-this is extended to a four part form:
-@var{cpu}-@var{manufacturer}-@var{kernel}-@var{operating_system}.
-
-When using a configuration name in a configure option, it is normally
-not necessary to specify an entire name. In particular, the
-@var{manufacturer} field is often omitted, leading to strings such as
-@samp{i386-linux} or @samp{sparc-sunos}. The shell script
-@file{config.sub} will translate these shortened strings into the
-canonical form. autoconf will arrange for @file{config.sub} to be run
-automatically when it is needed.
-
-The fields of a configuration name are as follows:
-
-@table @var
-@item cpu
-The type of processor. This is typically something like @samp{i386} or
-@samp{sparc}. More specific variants are used as well, such as
-@samp{mipsel} to indicate a little endian MIPS processor.
-@item manufacturer
-A somewhat freeform field which indicates the manufacturer of the
-system. This is often simply @samp{unknown}. Other common strings are
-@samp{pc} for an IBM PC compatible system, or the name of a workstation
-vendor, such as @samp{sun}.
-@item operating_system
-The name of the operating system which is run on the system. This will
-be something like @samp{solaris2.5} or @samp{irix6.3}. There is no
-particular restriction on the version number, and strings like
-@samp{aix4.1.4.0} are seen. For an embedded system, which has no
-operating system, this field normally indicates the type of object file
-format, such as @samp{elf} or @samp{coff}.
-@item kernel
-This is used mainly for GNU/Linux. A typical GNU/Linux configuration
-name is @samp{i586-pc-linux-gnulibc1}. In this case the kernel,
-@samp{linux}, is separated from the operating system, @samp{gnulibc1}.
-@end table
-
-The shell script @file{config.guess} will normally print the correct
-configuration name for the system on which it is run. It does by
-running @samp{uname} and by examining other characteristics of the
-system.
-
-Because @file{config.guess} can normally determine the configuration
-name for a machine, it is normally only necessary to specify a
-configuration name when building a cross-compiler or when building using
-a cross-compiler.
-
-@node Using Configuration Names
-@section Using Configuration Names
-
-A configure script will sometimes have to make a decision based on a
-configuration name. You will need to do this if you have to compile
-code differently based on something which can not be tested using a
-standard autoconf feature test.
-
-It is normally better to test for particular features, rather than to
-test for a particular system. This is because as Unix evolves,
-different systems copy features from one another. Even if you need to
-determine whether the feature is supported based on a configuration
-name, you should define a macro which describes the feature, rather than
-defining a macro which describes the particular system you are on.
-
-Testing for a particular system is normally done using a case statement
-in @file{configure.in}. The case statement might look something like
-the following, assuming that @samp{host} is a shell variable holding a
-canonical configuration name (which will be the case if
-@file{configure.in} uses the @samp{AC_CANONICAL_HOST} or
-@samp{AC_CANONICAL_SYSTEM} macro).
-
-@smallexample
-case "$@{host@}" in
-i[3456]86-*-linux-gnu*) do something ;;
-sparc*-sun-solaris2.[56789]*) do something ;;
-sparc*-sun-solaris*) do something ;;
-mips*-*-elf*) do something ;;
-esac
-@end smallexample
-
-It is particularly important to use @samp{*} after the operating system
-field, in order to match the version number which will be generated by
-@file{config.guess}.
-
-In most cases you must be careful to match a range of processor types.
-For most processor families, a trailing @samp{*} suffices, as in
-@samp{mips*} above. For the i386 family, something along the lines of
-@samp{i[3456]86} suffices at present. For the m68k family, you will
-need something like @samp{m68*}. Of course, if you do not need to match
-on the processor, it is simpler to just replace the entire field by a
-@samp{*}, as in @samp{*-*-irix*}.
-
-@node Cross Compilation Tools
-@chapter Cross Compilation Tools
-@cindex cross tools
-
-The GNU configure and build system can be used to build @dfn{cross
-compilation} tools. A cross compilation tool is a tool which runs on
-one system and produces code which runs on another system.
-
-@menu
-* Cross Compilation Concepts:: Cross Compilation Concepts.
-* Host and Target:: Host and Target.
-* Using the Host Type:: Using the Host Type.
-* Specifying the Target:: Specifying the Target.
-* Using the Target Type:: Using the Target Type.
-* Cross Tools in the Cygnus Tree:: Cross Tools in the Cygnus Tree
-@end menu
-
-@node Cross Compilation Concepts
-@section Cross Compilation Concepts
-
-@cindex cross compiler
-A compiler which produces programs which run on a different system is a
-cross compilation compiler, or simply a @dfn{cross compiler}.
-Similarly, we speak of cross assemblers, cross linkers, etc.
-
-In the normal case, a compiler produces code which runs on the same
-system as the one on which the compiler runs. When it is necessary to
-distinguish this case from the cross compilation case, such a compiler
-is called a @dfn{native compiler}. Similarly, we speak of native
-assemblers, etc.
-
-Although the debugger is not strictly speaking a compilation tool, it is
-nevertheless meaningful to speak of a cross debugger: a debugger which
-is used to debug code which runs on another system. Everything that is
-said below about configuring cross compilation tools applies to the
-debugger as well.
-
-@node Host and Target
-@section Host and Target
-@cindex host system
-@cindex target system
-
-When building cross compilation tools, there are two different systems
-involved: the system on which the tools will run, and the system for
-which the tools generate code.
-
-The system on which the tools will run is called the @dfn{host} system.
-
-The system for which the tools generate code is called the @dfn{target}
-system.
-
-For example, suppose you have a compiler which runs on a GNU/Linux
-system and generates ELF programs for a MIPS embedded system. In this
-case the GNU/Linux system is the host, and the MIPS ELF system is the
-target. Such a compiler could be called a GNU/Linux cross MIPS ELF
-compiler, or, equivalently, a @samp{i386-linux-gnu} cross
-@samp{mips-elf} compiler.
-
-Naturally, most programs are not cross compilation tools. For those
-programs, it does not make sense to speak of a target. It only makes
-sense to speak of a target for tools like @samp{gcc} or the
-@samp{binutils} which actually produce running code. For example, it
-does not make sense to speak of the target of a tool like @samp{bison}
-or @samp{make}.
-
-Most cross compilation tools can also serve as native tools. For a
-native compilation tool, it is still meaningful to speak of a target.
-For a native tool, the target is the same as the host. For example, for
-a GNU/Linux native compiler, the host is GNU/Linux, and the target is
-also GNU/Linux.
-
-@node Using the Host Type
-@section Using the Host Type
-
-In almost all cases the host system is the system on which you run the
-@samp{configure} script, and on which you build the tools (for the case
-when they differ, @pxref{Canadian Cross}).
-
-@cindex @samp{AC_CANONICAL_HOST}
-If your configure script needs to know the configuration name of the
-host system, and the package is not a cross compilation tool and
-therefore does not have a target, put @samp{AC_CANONICAL_HOST} in
-@file{configure.in}. This macro will arrange to define a few shell
-variables when the @samp{configure} script is run.
-
-@table @samp
-@item host
-The canonical configuration name of the host. This will normally be
-determined by running the @file{config.guess} shell script, although the
-user is permitted to override this by using an explicit @samp{--host}
-option.
-@item host_alias
-In the unusual case that the user used an explicit @samp{--host} option,
-this will be the argument to @samp{--host}. In the normal case, this
-will be the same as the @samp{host} variable.
-@item host_cpu
-@itemx host_vendor
-@itemx host_os
-The first three parts of the canonical configuration name.
-@end table
-
-The shell variables may be used by putting shell code in
-@file{configure.in}. For an example, see @ref{Using Configuration
-Names}.
-
-@node Specifying the Target
-@section Specifying the Target
-
-By default, the @samp{configure} script will assume that the target is
-the same as the host. This is the more common case; for example, it
-leads to a native compiler rather than a cross compiler.
-
-@cindex @samp{--target} option
-@cindex target option
-@cindex configure target
-If you want to build a cross compilation tool, you must specify the
-target explicitly by using the @samp{--target} option when you run
-@samp{configure}. The argument to @samp{--target} is the configuration
-name of the system for which you wish to generate code.
-@xref{Configuration Names}.
-
-For example, to build tools which generate code for a MIPS ELF embedded
-system, you would use @samp{--target mips-elf}.
-
-@node Using the Target Type
-@section Using the Target Type
-
-@cindex @samp{AC_CANONICAL_SYSTEM}
-When writing @file{configure.in} for a cross compilation tool, you will
-need to use information about the target. To do this, put
-@samp{AC_CANONICAL_SYSTEM} in @file{configure.in}.
-
-@samp{AC_CANONICAL_SYSTEM} will look for a @samp{--target} option and
-canonicalize it using the @file{config.sub} shell script. It will also
-run @samp{AC_CANONICAL_HOST} (@pxref{Using the Host Type}).
-
-The target type will be recorded in the following shell variables. Note
-that the host versions of these variables will also be defined by
-@samp{AC_CANONICAL_HOST}.
-
-@table @samp
-@item target
-The canonical configuration name of the target.
-@item target_alias
-The argument to the @samp{--target} option. If the user did not specify
-a @samp{--target} option, this will be the same as @samp{host_alias}.
-@item target_cpu
-@itemx target_vendor
-@itemx target_os
-The first three parts of the canonical target configuration name.
-@end table
-
-Note that if @samp{host} and @samp{target} are the same string, you can
-assume a native configuration. If they are different, you can assume a
-cross configuration.
-
-It is arguably possible for @samp{host} and @samp{target} to represent
-the same system, but for the strings to not be identical. For example,
-if @samp{config.guess} returns @samp{sparc-sun-sunos4.1.4}, and somebody
-configures with @samp{--target sparc-sun-sunos4.1}, then the slight
-differences between the two versions of SunOS may be unimportant for
-your tool. However, in the general case it can be quite difficult to
-determine whether the differences between two configuration names are
-significant or not. Therefore, by convention, if the user specifies a
-@samp{--target} option without specifying a @samp{--host} option, it is
-assumed that the user wants to configure a cross compilation tool.
-
-The variables @samp{target} and @samp{target_alias} should be handled
-differently.
-
-In general, whenever the user may actually see a string,
-@samp{target_alias} should be used. This includes anything which may
-appear in the file system, such as a directory name or part of a tool
-name. It also includes any tool output, unless it is clearly labelled
-as the canonical target configuration name. This permits the user to
-use the @samp{--target} option to specify how the tool will appear to
-the outside world.
-
-On the other hand, when checking for characteristics of the target
-system, @samp{target} should be used. This is because a wide variety of
-@samp{--target} options may map into the same canonical configuration
-name. You should not attempt to duplicate the canonicalization done by
-@samp{config.sub} in your own code.
-
-By convention, cross tools are installed with a prefix of the argument
-used with the @samp{--target} option, also known as @samp{target_alias}
-(@pxref{Using the Target Type}). If the user does not use the
-@samp{--target} option, and thus is building a native tool, no prefix is
-used.
-
-For example, if gcc is configured with @samp{--target mips-elf}, then
-the installed binary will be named @samp{mips-elf-gcc}. If gcc is
-configured without a @samp{--target} option, then the installed binary
-will be named @samp{gcc}.
-
-The autoconf macro @samp{AC_ARG_PROGRAM} will handle this for you. If
-you are using automake, no more need be done; the programs will
-automatically be installed with the correct prefixes. Otherwise, see
-the autoconf documentation for @samp{AC_ARG_PROGRAM}.
-
-@node Cross Tools in the Cygnus Tree
-@section Cross Tools in the Cygnus Tree
-
-The Cygnus tree is used for various packages including gdb, the GNU
-binutils, and egcs. It is also, of course, used for Cygnus releases.
-
-In the Cygnus tree, the top level @file{configure} script uses the old
-Cygnus configure system, not autoconf. The top level @file{Makefile.in}
-is written to build packages based on what is in the source tree, and
-supports building a large number of tools in a single
-@samp{configure}/@samp{make} step.
-
-The Cygnus tree may be configured with a @samp{--target} option. The
-@samp{--target} option applies recursively to every subdirectory, and
-permits building an entire set of cross tools at once.
-
-@menu
-* Host and Target Libraries:: Host and Target Libraries.
-* Target Library Configure Scripts:: Target Library Configure Scripts.
-* Make Targets in Cygnus Tree:: Make Targets in Cygnus Tree.
-* Target libiberty:: Target libiberty
-@end menu
-
-@node Host and Target Libraries
-@subsection Host and Target Libraries
-
-The Cygnus tree distinguishes host libraries from target libraries.
-
-Host libraries are built with the compiler used to build the programs
-which run on the host, which is called the host compiler. This includes
-libraries such as @samp{bfd} and @samp{tcl}. These libraries are built
-with the host compiler, and are linked into programs like the binutils
-or gcc which run on the host.
-
-Target libraries are built with the target compiler. If gcc is present
-in the source tree, then the target compiler is the gcc that is built
-using the host compiler. Target libraries are libraries such as
-@samp{newlib} and @samp{libstdc++}. These libraries are not linked into
-the host programs, but are instead made available for use with programs
-built with the target compiler.
-
-For the rest of this section, assume that gcc is present in the source
-tree, so that it will be used to build the target libraries.
-
-There is a complication here. The configure process needs to know which
-compiler you are going to use to build a tool; otherwise, the feature
-tests will not work correctly. The Cygnus tree handles this by not
-configuring the target libraries until the target compiler is built. In
-order to permit everything to build using a single
-@samp{configure}/@samp{make}, the configuration of the target libraries
-is actually triggered during the make step.
-
-When the target libraries are configured, the @samp{--target} option is
-not used. Instead, the @samp{--host} option is used with the argument
-of the @samp{--target} option for the overall configuration. If no
-@samp{--target} option was used for the overall configuration, the
-@samp{--host} option will be passed with the output of the
-@file{config.guess} shell script. Any @samp{--build} option is passed
-down unchanged.
-
-This translation of configuration options is done because since the
-target libraries are compiled with the target compiler, they are being
-built in order to run on the target of the overall configuration. By
-the definition of host, this means that their host system is the same as
-the target system of the overall configuration.
-
-The same process is used for both a native configuration and a cross
-configuration. Even when using a native configuration, the target
-libraries will be configured and built using the newly built compiler.
-This is particularly important for the C++ libraries, since there is no
-reason to assume that the C++ compiler used to build the host tools (if
-there even is one) uses the same ABI as the g++ compiler which will be
-used to build the target libraries.
-
-There is one difference between a native configuration and a cross
-configuration. In a native configuration, the target libraries are
-normally configured and built as siblings of the host tools. In a cross
-configuration, the target libraries are normally built in a subdirectory
-whose name is the argument to @samp{--target}. This is mainly for
-historical reasons.
-
-To summarize, running @samp{configure} in the Cygnus tree configures all
-the host libraries and tools, but does not configure any of the target
-libraries. Running @samp{make} then does the following steps:
-
-@itemize @bullet
-@item
-Build the host libraries.
-@item
-Build the host programs, including gcc. Note that we call gcc both a
-host program (since it runs on the host) and a target compiler (since it
-generates code for the target).
-@item
-Using the newly built target compiler, configure the target libraries.
-@item
-Build the target libraries.
-@end itemize
-
-The steps need not be done in precisely this order, since they are
-actually controlled by @file{Makefile} targets.
-
-@node Target Library Configure Scripts
-@subsection Target Library Configure Scripts
-
-There are a few things you must know in order to write a configure
-script for a target library. This is just a quick sketch, and beginners
-shouldn't worry if they don't follow everything here.
-
-The target libraries are configured and built using a newly built target
-compiler. There may not be any startup files or libraries for this
-target compiler. In fact, those files will probably be built as part of
-some target library, which naturally means that they will not exist when
-your target library is configured.
-
-This means that the configure script for a target library may not use
-any test which requires doing a link. This unfortunately includes many
-useful autoconf macros, such as @samp{AC_CHECK_FUNCS}. autoconf macros
-which do a compile but not a link, such as @samp{AC_CHECK_HEADERS}, may
-be used.
-
-This is a severe restriction, but normally not a fatal one, as target
-libraries can often assume the presence of other target libraries, and
-thus know which functions will be available.
-
-As of this writing, the autoconf macro @samp{AC_PROG_CC} does a link to
-make sure that the compiler works. This may fail in a target library,
-so target libraries must use a different set of macros to locate the
-compiler. See the @file{configure.in} file in a directory like
-@file{libiberty} or @file{libgloss} for an example.
-
-As noted in the previous section, target libraries are sometimes built
-in directories which are siblings to the host tools, and are sometimes
-built in a subdirectory. The @samp{--with-target-subdir} configure
-option will be passed when the library is configured. Its value will be
-an empty string if the target library is a sibling. Its value will be
-the name of the subdirectory if the target library is in a subdirectory.
-
-If the overall build is not a native build (i.e., the overall configure
-used the @samp{--target} option), then the library will be configured
-with the @samp{--with-cross-host} option. The value of this option will
-be the host system of the overall build. Recall that the host system of
-the library will be the target of the overall build. If the overall
-build is a native build, the @samp{--with-cross-host} option will not be
-used.
-
-A library which can be built both standalone and as a target library may
-want to install itself into different directories depending upon the
-case. When built standalone, or when built native, the library should
-be installed in @samp{$(libdir)}. When built as a target library which
-is not native, the library should be installed in @samp{$(tooldir)/lib}.
-The @samp{--with-cross-host} option may be used to distinguish these
-cases.
-
-This same test of @samp{--with-cross-host} may be used to see whether it
-is OK to use link tests in the configure script. If the
-@samp{--with-cross-host} option is not used, then the library is being
-built either standalone or native, and a link should work.
-
-@node Make Targets in Cygnus Tree
-@subsection Make Targets in Cygnus Tree
-
-The top level @file{Makefile} in the Cygnus tree defines targets for
-every known subdirectory.
-
-For every subdirectory @var{dir} which holds a host library or program,
-the @file{Makefile} target @samp{all-@var{dir}} will build that library
-or program.
-
-There are dependencies among host tools. For example, building gcc
-requires first building gas, because the gcc build process invokes the
-target assembler. These dependencies are reflected in the top level
-@file{Makefile}.
-
-For every subdirectory @var{dir} which holds a target library, the
-@file{Makefile} target @samp{configure-target-@var{dir}} will configure
-that library. The @file{Makefile} target @samp{all-target-@var{dir}}
-will build that library.
-
-Every @samp{configure-target-@var{dir}} target depends upon
-@samp{all-gcc}, since gcc, the target compiler, is required to configure
-the tool. Every @samp{all-target-@var{dir}} target depends upon the
-corresponding @samp{configure-target-@var{dir}} target.
-
-There are several other targets which may be of interest for each
-directory: @samp{install-@var{dir}}, @samp{clean-@var{dir}}, and
-@samp{check-@var{dir}}. There are also corresponding @samp{target}
-versions of these for the target libraries , such as
-@samp{install-target-@var{dir}}.
-
-@node Target libiberty
-@subsection Target libiberty
-
-The @file{libiberty} subdirectory is currently a special case, in that
-it is the only directory which is built both using the host compiler and
-using the target compiler.
-
-This is because the files in @file{libiberty} are used when building the
-host tools, and they are also incorporated into the @file{libstdc++}
-target library as support code.
-
-This duality does not pose any particular difficulties. It means that
-there are targets for both @samp{all-libiberty} and
-@samp{all-target-libiberty}.
-
-In a native configuration, when target libraries are not built in a
-subdirectory, the same objects are normally used as both the host build
-and the target build. This is normally OK, since libiberty contains
-only C code, and in a native configuration the results of the host
-compiler and the target compiler are normally interoperable.
-
-Irix 6 is again an exception here, since the SGI native compiler
-defaults to using the @samp{O32} ABI, and gcc defaults to using the
-@samp{N32} ABI. On Irix 6, the target libraries are built in a
-subdirectory even for a native configuration, avoiding this problem.
-
-There are currently no other libraries built for both the host and the
-target, but there is no conceptual problem with adding more.
-
-@node Canadian Cross
-@chapter Canadian Cross
-@cindex canadian cross
-@cindex building with a cross compiler
-@cindex cross compiler, building with
-
-It is possible to use the GNU configure and build system to build a
-program which will run on a system which is different from the system on
-which the tools are built. In other words, it is possible to build
-programs using a cross compiler.
-
-This is referred to as a @dfn{Canadian Cross}.
-
-@menu
-* Canadian Cross Example:: Canadian Cross Example.
-* Canadian Cross Concepts:: Canadian Cross Concepts.
-* Build Cross Host Tools:: Build Cross Host Tools.
-* Build and Host Options:: Build and Host Options.
-* CCross not in Cygnus Tree:: Canadian Cross not in Cygnus Tree.
-* CCross in Cygnus Tree:: Canadian Cross in Cygnus Tree.
-* Supporting Canadian Cross:: Supporting Canadian Cross.
-@end menu
-
-@node Canadian Cross Example
-@section Canadian Cross Example
-
-Here is an example of a Canadian Cross.
-
-While running on a GNU/Linux, you can build a program which will run on
-a Solaris system. You would use a GNU/Linux cross Solaris compiler to
-build the program.
-
-Of course, you could not run the resulting program on your GNU/Linux
-system. You would have to copy it over to a Solaris system before you
-would run it.
-
-Of course, you could also simply build the programs on the Solaris
-system in the first place. However, perhaps the Solaris system is not
-available for some reason; perhaps you actually don't have one, but you
-want to build the tools for somebody else to use. Or perhaps your
-GNU/Linux system is much faster than your Solaris system.
-
-A Canadian Cross build is most frequently used when building programs to
-run on a non-Unix system, such as DOS or Windows. It may be simpler to
-configure and build on a Unix system than to support the configuration
-machinery on a non-Unix system.
-
-@node Canadian Cross Concepts
-@section Canadian Cross Concepts
-
-When building a Canadian Cross, there are at least two different systems
-involved: the system on which the tools are being built, and the system
-on which the tools will run.
-
-The system on which the tools are being built is called the @dfn{build}
-system.
-
-The system on which the tools will run is called the host system.
-
-For example, if you are building a Solaris program on a GNU/Linux
-system, as in the previous section, the build system would be GNU/Linux,
-and the host system would be Solaris.
-
-It is, of course, possible to build a cross compiler using a Canadian
-Cross (i.e., build a cross compiler using a cross compiler). In this
-case, the system for which the resulting cross compiler generates code
-is called the target system. (For a more complete discussion of host
-and target systems, @pxref{Host and Target}).
-
-An example of building a cross compiler using a Canadian Cross would be
-building a Windows cross MIPS ELF compiler on a GNU/Linux system. In
-this case the build system would be GNU/Linux, the host system would be
-Windows, and the target system would be MIPS ELF.
-
-The name Canadian Cross comes from the case when the build, host, and
-target systems are all different. At the time that these issues were
-all being hashed out, Canada had three national political parties.
-
-@node Build Cross Host Tools
-@section Build Cross Host Tools
-
-In order to configure a program for a Canadian Cross build, you must
-first build and install the set of cross tools you will use to build the
-program.
-
-These tools will be build cross host tools. That is, they will run on
-the build system, and will produce code that runs on the host system.
-
-It is easy to confuse the meaning of build and host here. Always
-remember that the build system is where you are doing the build, and the
-host system is where the resulting program will run. Therefore, you
-need a build cross host compiler.
-
-In general, you must have a complete cross environment in order to do
-the build. This normally means a cross compiler, cross assembler, and
-so forth, as well as libraries and include files for the host system.
-
-@node Build and Host Options
-@section Build and Host Options
-@cindex configuring a canadian cross
-@cindex canadian cross, configuring
-
-When you run @file{configure}, you must use both the @samp{--build} and
-@samp{--host} options.
-
-@cindex @samp{--build} option
-@cindex build option
-@cindex configure build system
-The @samp{--build} option is used to specify the configuration name of
-the build system. This can normally be the result of running the
-@file{config.guess} shell script, and it is reasonable to use
-@samp{--build=`config.guess`}.
-
-@cindex @samp{--host} option
-@cindex host option
-@cindex configure host
-The @samp{--host} option is used to specify the configuration name of
-the host system.
-
-As we explained earlier, @file{config.guess} is used to set the default
-value for the @samp{--host} option (@pxref{Using the Host Type}). We
-can now see that since @file{config.guess} returns the type of system on
-which it is run, it really identifies the build system. Since the host
-system is normally the same as the build system (i.e., people do not
-normally build using a cross compiler), it is reasonable to use the
-result of @file{config.guess} as the default for the host system when
-the @samp{--host} option is not used.
-
-It might seem that if the @samp{--host} option were used without the
-@samp{--build} option that the configure script could run
-@file{config.guess} to determine the build system, and presume a
-Canadian Cross if the result of @file{config.guess} differed from the
-@samp{--host} option. However, for historical reasons, some configure
-scripts are routinely run using an explicit @samp{--host} option, rather
-than using the default from @file{config.guess}. As noted earlier, it
-is difficult or impossible to reliably compare configuration names
-(@pxref{Using the Target Type}). Therefore, by convention, if the
-@samp{--host} option is used, but the @samp{--build} option is not used,
-then the build system defaults to the host system.
-
-@node CCross not in Cygnus Tree
-@section Canadian Cross not in Cygnus Tree.
-
-If you are not using the Cygnus tree, you must explicitly specify the
-cross tools which you want to use to build the program. This is done by
-setting environment variables before running the @file{configure}
-script.
-
-You must normally set at least the environment variables @samp{CC},
-@samp{AR}, and @samp{RANLIB} to the cross tools which you want to use to
-build.
-
-For some programs, you must set additional cross tools as well, such as
-@samp{AS}, @samp{LD}, or @samp{NM}.
-
-You would set these environment variables to the build cross tools which
-you are going to use.
-
-For example, if you are building a Solaris program on a GNU/Linux
-system, and your GNU/Linux cross Solaris compiler were named
-@samp{solaris-gcc}, then you would set the environment variable
-@samp{CC} to @samp{solaris-gcc}.
-
-@node CCross in Cygnus Tree
-@section Canadian Cross in Cygnus Tree
-@cindex canadian cross in cygnus tree
-
-This section describes configuring and building a Canadian Cross when
-using the Cygnus tree.
-
-@menu
-* Standard Cygnus CCross:: Building a Normal Program.
-* Cross Cygnus CCross:: Building a Cross Program.
-@end menu
-
-@node Standard Cygnus CCross
-@subsection Building a Normal Program
-
-When configuring a Canadian Cross in the Cygnus tree, all the
-appropriate environment variables are automatically set to
-@samp{@var{host}-@var{tool}}, where @var{host} is the value used for the
-@samp{--host} option, and @var{tool} is the name of the tool (e.g.,
-@samp{gcc}, @samp{as}, etc.). These tools must be on your @samp{PATH}.
-
-Adding a prefix of @var{host} will give the usual name for the build
-cross host tools. To see this, consider that when these cross tools
-were built, they were configured to run on the build system and to
-produce code for the host system. That is, they were configured with a
-@samp{--target} option that is the same as the system which we are now
-calling the host. Recall that the default name for installed cross
-tools uses the target system as a prefix (@pxref{Using the Target
-Type}). Since that is the system which we are now calling the host,
-@var{host} is the right prefix to use.
-
-For example, if you configure with @samp{--build=i386-linux-gnu} and
-@samp{--host=solaris}, then the Cygnus tree will automatically default
-to using the compiler @samp{solaris-gcc}. You must have previously
-built and installed this compiler, probably by doing a build with no
-@samp{--host} option and with a @samp{--target} option of
-@samp{solaris}.
-
-@node Cross Cygnus CCross
-@subsection Building a Cross Program
-
-There are additional considerations if you want to build a cross
-compiler, rather than a native compiler, in the Cygnus tree using a
-Canadian Cross.
-
-When you build a cross compiler using the Cygnus tree, then the target
-libraries will normally be built with the newly built target compiler
-(@pxref{Host and Target Libraries}). However, this will not work when
-building with a Canadian Cross. This is because the newly built target
-compiler will be a program which runs on the host system, and therefore
-will not be able to run on the build system.
-
-Therefore, when building a cross compiler with the Cygnus tree, you must
-first install a set of build cross target tools. These tools will be
-used when building the target libraries.
-
-Note that this is not a requirement of a Canadian Cross in general. For
-example, it would be possible to build just the host cross target tools
-on the build system, to copy the tools to the host system, and to build
-the target libraries on the host system. The requirement for build
-cross target tools is imposed by the Cygnus tree, which expects to be
-able to build both host programs and target libraries in a single
-@samp{configure}/@samp{make} step. Because it builds these in a single
-step, it expects to be able to build the target libraries on the build
-system, which means that it must use a build cross target toolchain.
-
-For example, suppose you want to build a Windows cross MIPS ELF compiler
-on a GNU/Linux system. You must have previously installed both a
-GNU/Linux cross Windows compiler and a GNU/Linux cross MIPS ELF
-compiler.
-
-In order to build the Windows (configuration name @samp{i386-cygwin32})
-cross MIPS ELF (configure name @samp{mips-elf}) compiler, you might
-execute the following commands (long command lines are broken across
-lines with a trailing backslash as a continuation character).
-
-@example
-mkdir linux-x-cygwin32
-cd linux-x-cygwin32
-@var{srcdir}/configure --target i386-cygwin32 --prefix=@var{installdir} \
- --exec-prefix=@var{installdir}/H-i386-linux
-make
-make install
-cd ..
-mkdir linux-x-mips-elf
-cd linux-x-mips-elf
-@var{srcdir}/configure --target mips-elf --prefix=@var{installdir} \
- --exec-prefix=@var{installdir}/H-i386-linux
-make
-make install
-cd ..
-mkdir cygwin32-x-mips-elf
-cd cygwin32-x-mips-elf
-@var{srcdir}/configure --build=i386-linux-gnu --host=i386-cygwin32 \
- --target=mips-elf --prefix=@var{wininstalldir} \
- --exec-prefix=@var{wininstalldir}/H-i386-cygwin32
-make
-make install
-@end example
-
-You would then copy the contents of @var{wininstalldir} over to the
-Windows machine, and run the resulting programs.
-
-@node Supporting Canadian Cross
-@section Supporting Canadian Cross
-
-If you want to make it possible to build a program you are developing
-using a Canadian Cross, you must take some care when writing your
-configure and make rules. Simple cases will normally work correctly.
-However, it is not hard to write configure and make tests which will
-fail in a Canadian Cross.
-
-@menu
-* CCross in Configure:: Supporting Canadian Cross in Configure Scripts.
-* CCross in Make:: Supporting Canadian Cross in Makefiles.
-@end menu
-
-@node CCross in Configure
-@subsection Supporting Canadian Cross in Configure Scripts
-@cindex canadian cross in configure
-
-In a @file{configure.in} file, after calling @samp{AC_PROG_CC}, you can
-find out whether this is a Canadian Cross configure by examining the
-shell variable @samp{cross_compiling}. In a Canadian Cross, which means
-that the compiler is a cross compiler, @samp{cross_compiling} will be
-@samp{yes}. In a normal configuration, @samp{cross_compiling} will be
-@samp{no}.
-
-You ordinarily do not need to know the type of the build system in a
-configure script. However, if you do need that information, you can get
-it by using the macro @samp{AC_CANONICAL_SYSTEM}, the same macro that is
-used to determine the target system. This macro will set the variables
-@samp{build}, @samp{build_alias}, @samp{build_cpu}, @samp{build_vendor},
-and @samp{build_os}, which correspond to the similar @samp{target} and
-@samp{host} variables, except that they describe the build system.
-
-When writing tests in @file{configure.in}, you must remember that you
-want to test the host environment, not the build environment.
-
-Macros like @samp{AC_CHECK_FUNCS} which use the compiler will test the
-host environment. That is because the tests will be done by running the
-compiler, which is actually a build cross host compiler. If the
-compiler can find the function, that means that the function is present
-in the host environment.
-
-Tests like @samp{test -f /dev/ptyp0}, on the other hand, will test the
-build environment. Remember that the configure script is running on the
-build system, not the host system. If your configure scripts examines
-files, those files will be on the build system. Whatever you determine
-based on those files may or may not be the case on the host system.
-
-Most autoconf macros will work correctly for a Canadian Cross. The main
-exception is @samp{AC_TRY_RUN}. This macro tries to compile and run a
-test program. This will fail in a Canadian Cross, because the program
-will be compiled for the host system, which means that it will not run
-on the build system.
-
-The @samp{AC_TRY_RUN} macro provides an optional argument to tell the
-configure script what to do in a Canadian Cross. If that argument is
-not present, you will get a warning when you run @samp{autoconf}:
-@smallexample
-warning: AC_TRY_RUN called without default to allow cross compiling
-@end smallexample
-@noindent
-This tells you that the resulting @file{configure} script will not work
-with a Canadian Cross.
-
-In some cases while it may better to perform a test at configure time,
-it is also possible to perform the test at run time. In such a case you
-can use the cross compiling argument to @samp{AC_TRY_RUN} to tell your
-program that the test could not be performed at configure time.
-
-There are a few other autoconf macros which will not work correctly with
-a Canadian Cross: a partial list is @samp{AC_FUNC_GETPGRP},
-@samp{AC_FUNC_SETPGRP}, @samp{AC_FUNC_SETVBUF_REVERSED}, and
-@samp{AC_SYS_RESTARTABLE_SYSCALLS}. The @samp{AC_CHECK_SIZEOF} macro is
-generally not very useful with a Canadian Cross; it permits an optional
-argument indicating the default size, but there is no way to know what
-the correct default should be.
-
-@node CCross in Make
-@subsection Supporting Canadian Cross in Makefiles.
-@cindex canadian cross in makefile
-
-The main Canadian Cross issue in a @file{Makefile} arises when you want
-to use a subsidiary program to generate code or data which you will then
-include in your real program.
-
-If you compile this subsidiary program using @samp{$(CC)} in the usual
-way, you will not be able to run it. This is because @samp{$(CC)} will
-build a program for the host system, but the program is being built on
-the build system.
-
-You must instead use a compiler for the build system, rather than the
-host system. In the Cygnus tree, this make variable
-@samp{$(CC_FOR_BUILD)} will hold a compiler for the build system.
-
-Note that you should not include @file{config.h} in a file you are
-compiling with @samp{$(CC_FOR_BUILD)}. The @file{configure} script will
-build @file{config.h} with information for the host system. However,
-you are compiling the file using a compiler for the build system (a
-native compiler). Subsidiary programs are normally simple filters which
-do no user interaction, and it is normally possible to write them in a
-highly portable fashion so that the absence of @file{config.h} is not
-crucial.
-
-@cindex @samp{HOST_CC}
-The gcc @file{Makefile.in} shows a complex situation in which certain
-files, such as @file{rtl.c}, must be compiled into both subsidiary
-programs run on the build system and into the final program. This
-approach may be of interest for advanced build system hackers. Note
-that the build system compiler is rather confusingly called
-@samp{HOST_CC}.
-
-@node Cygnus Configure
-@chapter Cygnus Configure
-@cindex cygnus configure
-
-The Cygnus configure script predates autoconf. All of its interesting
-features have been incorporated into autoconf. No new programs should
-be written to use the Cygnus configure script.
-
-However, the Cygnus configure script is still used in a few places: at
-the top of the Cygnus tree and in a few target libraries in the Cygnus
-tree. Until those uses have been replaced with autoconf, some brief
-notes are appropriate here. This is not complete documentation, but it
-should be possible to use this as a guide while examining the scripts
-themselves.
-
-@menu
-* Cygnus Configure Basics:: Cygnus Configure Basics.
-* Cygnus Configure in C++ Libraries:: Cygnus Configure in C++ Libraries.
-@end menu
-
-@node Cygnus Configure Basics
-@section Cygnus Configure Basics
-
-Cygnus configure does not use any generated files; there is no program
-corresponding to @samp{autoconf}. Instead, there is a single shell
-script named @samp{configure} which may be found at the top of the
-Cygnus tree. This shell script was written by hand; it was not
-generated by autoconf, and it is incorrect, and indeed harmful, to run
-@samp{autoconf} in the top level of a Cygnus tree.
-
-Cygnus configure works in a particular directory by examining the file
-@file{configure.in} in that directory. That file is broken into four
-separate shell scripts.
-
-The first is the contents of @file{configure.in} up to a line that
-starts with @samp{# per-host:}. This is the common part.
-
-The second is the rest of @file{configure.in} up to a line that starts
-with @samp{# per-target:}. This is the per host part.
-
-The third is the rest of @file{configure.in} up to a line that starts
-with @samp{# post-target:}. This is the per target part.
-
-The fourth is the remainder of @file{configure.in}. This is the post
-target part.
-
-If any of these comment lines are missing, the corresponding shell
-script is empty.
-
-Cygnus configure will first execute the common part. This must set the
-shell variable @samp{srctrigger} to the name of a source file, to
-confirm that Cygnus configure is looking at the right directory. This
-may set the shell variables @samp{package_makefile_frag} and
-@samp{package_makefile_rules_frag}.
-
-Cygnus configure will next set the @samp{build} and @samp{host} shell
-variables, and execute the per host part. This may set the shell
-variable @samp{host_makefile_frag}.
-
-Cygnus configure will next set the @samp{target} variable, and execute
-the per target part. This may set the shell variable
-@samp{target_makefile_frag}.
-
-Any of these scripts may set the @samp{subdirs} shell variable. This
-variable is a list of subdirectories where a @file{Makefile.in} file may
-be found. Cygnus configure will automatically look for a
-@file{Makefile.in} file in the current directory. The @samp{subdirs}
-shell variable is not normally used, and I believe that the only
-directory which uses it at present is @file{newlib}.
-
-For each @file{Makefile.in}, Cygnus configure will automatically create
-a @file{Makefile} by adding definitions for @samp{make} variables such
-as @samp{host} and @samp{target}, and automatically editing the values
-of @samp{make} variables such as @samp{prefix} if they are present.
-
-Also, if any of the @samp{makefile_frag} shell variables are set, Cygnus
-configure will interpret them as file names relative to either the
-working directory or the source directory, and will read the contents of
-the file into the generated @file{Makefile}. The file contents will be
-read in after the first line in @file{Makefile.in} which starts with
-@samp{####}.
-
-These @file{Makefile} fragments are used to customize behaviour for a
-particular host or target. They serve to select particular files to
-compile, and to define particular preprocessor macros by providing
-values for @samp{make} variables which are then used during compilation.
-Cygnus configure, unlike autoconf, normally does not do feature tests,
-and normally requires support to be added manually for each new host.
-
-The @file{Makefile} fragment support is similar to the autoconf
-@samp{AC_SUBST_FILE} macro.
-
-After creating each @file{Makefile}, the post target script will be run
-(i.e., it may be run several times). This script may further customize
-the @file{Makefile}. When it is run, the shell variable @samp{Makefile}
-will hold the name of the @file{Makefile}, including the appropriate
-directory component.
-
-Like an autoconf generated @file{configure} script, Cygnus configure
-will create a file named @file{config.status} which, when run, will
-automatically recreate the configuration. The @file{config.status} file
-will simply execute the Cygnus configure script again with the
-appropriate arguments.
-
-Any of the parts of @file{configure.in} may set the shell variables
-@samp{files} and @samp{links}. Cygnus configure will set up symlinks
-from the names in @samp{links} to the files named in @samp{files}. This
-is similar to the autoconf @samp{AC_LINK_FILES} macro.
-
-Finally, any of the parts of @file{configure.in} may set the shell
-variable @samp{configdirs} to a set of subdirectories. If it is set,
-Cygnus configure will recursively run the configure process in each
-subdirectory. If the subdirectory uses Cygnus configure, it will
-contain a @file{configure.in} file but no @file{configure} file, in
-which case Cygnus configure will invoke itself recursively. If the
-subdirectory has a @file{configure} file, Cygnus configure assumes that
-it is an autoconf generated @file{configure} script, and simply invokes
-it directly.
-
-@node Cygnus Configure in C++ Libraries
-@section Cygnus Configure in C++ Libraries
-@cindex @file{libstdc++} configure
-@cindex @file{libio} configure
-@cindex @file{libg++} configure
-
-The C++ library configure system, written by Per Bothner, deserves
-special mention. It uses Cygnus configure, but it does feature testing
-like that done by autoconf generated @file{configure} scripts. This
-approach is used in the libraries @file{libio}, @file{libstdc++}, and
-@file{libg++}.
-
-Most of the @file{Makefile} information is written out by the shell
-script @file{libio/config.shared}. Each @file{configure.in} file sets
-certain shell variables, and then invokes @file{config.shared} to create
-two package @file{Makefile} fragments. These fragments are then
-incorporated into the resulting @file{Makefile} by the Cygnus configure
-script.
-
-The file @file{_G_config.h} is created in the @file{libio} object
-directory by running the shell script @file{libio/gen-params}. This
-shell script uses feature tests to define macros and typedefs in
-@file{_G_config.h}.
-
-@node Multilibs
-@chapter Multilibs
-@cindex multilibs
-
-For some targets gcc may have different processor requirements depending
-upon command line options. An obvious example is the
-@samp{-msoft-float} option supported on several processors. This option
-means that the floating point registers are not available, which means
-that floating point operations must be done by calling an emulation
-subroutine rather than by using machine instructions.
-
-For such options, gcc is often configured to compile target libraries
-twice: once with @samp{-msoft-float} and once without. When gcc
-compiles target libraries more than once, the resulting libraries are
-called @dfn{multilibs}.
-
-Multilibs are not really part of the GNU configure and build system, but
-we discuss them here since they require support in the @file{configure}
-scripts and @file{Makefile}s used for target libraries.
-
-@menu
-* Multilibs in gcc:: Multilibs in gcc.
-* Multilibs in Target Libraries:: Multilibs in Target Libraries.
-@end menu
-
-@node Multilibs in gcc
-@section Multilibs in gcc
-
-In gcc, multilibs are defined by setting the variable
-@samp{MULTILIB_OPTIONS} in the target @file{Makefile} fragment. Several
-other @samp{MULTILIB} variables may also be defined there. @xref{Target
-Fragment, , The Target Makefile Fragment, gcc, Using and Porting GNU
-CC}.
-
-If you have built gcc, you can see what multilibs it uses by running it
-with the @samp{-print-multi-lib} option. The output @samp{.;} means
-that no multilibs are used. In general, the output is a sequence of
-lines, one per multilib. The first part of each line, up to the
-@samp{;}, is the name of the multilib directory. The second part is a
-list of compiler options separated by @samp{@@} characters.
-
-Multilibs are built in a tree of directories. The top of the tree,
-represented by @samp{.} in the list of multilib directories, is the
-default library to use when no special compiler options are used. The
-subdirectories of the tree hold versions of the library to use when
-particular compiler options are used.
-
-@node Multilibs in Target Libraries
-@section Multilibs in Target Libraries
-
-The target libraries in the Cygnus tree are automatically built with
-multilibs. That means that each library is built multiple times.
-
-This default is set in the top level @file{configure.in} file, by adding
-@samp{--enable-multilib} to the list of arguments passed to configure
-when it is run for the target libraries (@pxref{Host and Target
-Libraries}).
-
-Each target library uses the shell script @file{config-ml.in}, written
-by Doug Evans, to prepare to build target libraries. This shell script
-is invoked after the @file{Makefile} has been created by the
-@file{configure} script. If multilibs are not enabled, it does nothing,
-otherwise it modifies the @file{Makefile} to support multilibs.
-
-The @file{config-ml.in} script makes one copy of the @file{Makefile} for
-each multilib in the appropriate subdirectory. When configuring in the
-source directory (which is not recommended), it will build a symlink
-tree of the sources in each subdirectory.
-
-The @file{config-ml.in} script sets several variables in the various
-@file{Makefile}s. The @file{Makefile.in} must have definitions for
-these variables already; @file{config-ml.in} simply changes the existing
-values. The @file{Makefile} should use default values for these
-variables which will do the right thing in the subdirectories.
-
-@table @samp
-@item MULTISRCTOP
-@file{config-ml.in} will set this to a sequence of @samp{../} strings,
-where the number of strings is the number of multilib levels in the
-source tree. The default value should be the empty string.
-@item MULTIBUILDTOP
-@file{config-ml.in} will set this to a sequence of @samp{../} strings,
-where the number of strings is number of multilib levels in the object
-directory. The default value should be the empty string. This will
-differ from @samp{MULTISRCTOP} when configuring in the source tree
-(which is not recommended).
-@item MULTIDIRS
-In the top level @file{Makefile} only, @file{config-ml.in} will set this
-to the list of multilib subdirectories. The default value should be the
-empty string.
-@item MULTISUBDIR
-@file{config-ml.in} will set this to the installed subdirectory name to
-use for this subdirectory, with a leading @samp{/}. The default value
-shold be the empty string.
-@item MULTIDO
-@itemx MULTICLEAN
-In the top level @file{Makefile} only, @file{config-ml.in} will set
-these variables to commands to use when doing a recursive make. These
-variables should both default to the string @samp{true}, so that by
-default nothing happens.
-@end table
-
-All references to the parent of the source directory should use the
-variable @samp{MULTISRCTOP}. Instead of writing @samp{$(srcdir)/..},
-you must write @samp{$(srcdir)/$(MULTISRCTOP)..}.
-
-Similarly, references to the parent of the object directory should use
-the variable @samp{MULTIBUILDTOP}.
-
-In the installation target, the libraries should be installed in the
-subdirectory @samp{MULTISUBDIR}. Instead of installing
-@samp{$(libdir)/libfoo.a}, install
-@samp{$(libdir)$(MULTISUBDIR)/libfoo.a}.
-
-The @file{config-ml.in} script also modifies the top level
-@file{Makefile} to add @samp{multi-do} and @samp{multi-clean} targets
-which are used when building multilibs.
-
-The default target of the @file{Makefile} should include the following
-command:
-@smallexample
-@@$(MULTIDO) $(FLAGS_TO_PASS) DO=all multi-do
-@end smallexample
-@noindent
-This assumes that @samp{$(FLAGS_TO_PASS)} is defined as a set of
-variables to pass to a recursive invocation of @samp{make}. This will
-build all the multilibs. Note that the default value of @samp{MULTIDO}
-is @samp{true}, so by default this command will do nothing. It will
-only do something in the top level @file{Makefile} if multilibs were
-enabled.
-
-The @samp{install} target of the @file{Makefile} should include the
-following command:
-@smallexample
-@@$(MULTIDO) $(FLAGS_TO_PASS) DO=install multi-do
-@end smallexample
-
-In general, any operation, other than clean, which should be performed
-on all the multilibs should use a @samp{$(MULTIDO)} line, setting the
-variable @samp{DO} to the target of each recursive call to @samp{make}.
-
-The @samp{clean} targets (@samp{clean}, @samp{mostlyclean}, etc.) should
-use @samp{$(MULTICLEAN)}. For example, the @samp{clean} target should
-do this:
-@smallexample
-@@$(MULTICLEAN) DO=clean multi-clean
-@end smallexample
-
-@node FAQ
-@chapter Frequently Asked Questions
-
-@table @asis
-@item Which do I run first, @samp{autoconf} or @samp{automake}?
-Except when you first add autoconf or automake support to a package, you
-shouldn't run either by hand. Instead, configure with the
-@samp{--enable-maintainer-mode} option, and let @samp{make} take care of
-it.
-
-@cindex undefined macros
-@item @samp{autoconf} says something about undefined macros.
-This means that you have macros in your @file{configure.in} which are
-not defined by @samp{autoconf}. You may be using an old version of
-@samp{autoconf}; try building and installing a newer one. Make sure the
-newly installled @samp{autoconf} is first on your @samp{PATH}. Also,
-see the next question.
-
-@cindex @samp{CY_GNU_GETTEXT} in @file{configure}
-@cindex @samp{AM_PROG_LIBTOOL} in @file{configure}
-@item My @file{configure} script has stuff like @samp{CY_GNU_GETTEXT} in it.
-This means that you have macros in your @file{configure.in} which should
-be defined in your @file{aclocal.m4} file, but aren't. This usually
-means that @samp{aclocal} was not able to appropriate definitions of the
-macros. Make sure that you have installed all the packages you need.
-In particular, make sure that you have installed libtool (this is where
-@samp{AM_PROG_LIBTOOL} is defined) and gettext (this is where
-@samp{CY_GNU_GETTEXT} is defined, at least in the Cygnus version of
-gettext).
-
-@cindex @file{Makefile}, garbage characters
-@item My @file{Makefile} has @samp{@@} characters in it.
-This may mean that you tried to use an autoconf substitution in your
-@file{Makefile.in} without adding the appropriate @samp{AC_SUBST} call
-to your @file{configure} script. Or it may just mean that you need to
-rebuild @file{Makefile} in your build directory. To rebuild
-@file{Makefile} from @file{Makefile.in}, run the shell script
-@file{config.status} with no arguments. If you need to force
-@file{configure} to run again, first run @samp{config.status --recheck}.
-These runs are normally done automatically by @file{Makefile} targets,
-but if your @file{Makefile} has gotten messed up you'll need to help
-them along.
-
-@cindex @samp{config.status --recheck}
-@item Why do I have to run both @samp{config.status --recheck} and @samp{config.status}?
-Normally, you don't; they will be run automatically by @file{Makefile}
-targets. If you do need to run them, use @samp{config.status --recheck}
-to run the @file{configure} script again with the same arguments as the
-first time you ran it. Use @samp{config.status} (with no arguments) to
-regenerate all files (@file{Makefile}, @file{config.h}, etc.) based on
-the results of the configure script. The two cases are separate because
-it isn't always necessary to regenerate all the files after running
-@samp{config.status --recheck}. The @file{Makefile} targets generated
-by automake will use the environment variables @samp{CONFIG_FILES} and
-@samp{CONFIG_HEADERS} to only regenerate files as they are needed.
-
-@item What is the Cygnus tree?
-The Cygnus tree is used for various packages including gdb, the GNU
-binutils, and egcs. It is also, of course, used for Cygnus releases.
-It is the build system which was developed at Cygnus, using the Cygnus
-configure script. It permits building many different packages with a
-single configure and make. The configure scripts in the tree are being
-converted to autoconf, but the general build structure remains intact.
-
-@item Why do I have to keep rebuilding and reinstalling the tools?
-I know, it's a pain. Unfortunately, there are bugs in the tools
-themselves which need to be fixed, and each time that happens everybody
-who uses the tools need to reinstall new versions of them. I don't know
-if there is going to be a clever fix until the tools stabilize.
-
-@item Why not just have a Cygnus tree @samp{make} target to update the tools?
-The tools unfortunately need to be installed before they can be used.
-That means that they must be built using an appropriate prefix, and it
-seems unwise to assume that every configuration uses an appropriate
-prefix. It might be possible to make them work in place, or it might be
-possible to install them in some subdirectory; so far these approaches
-have not been implemented.
-@end table
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
diff --git a/contrib/binutils/etc/make-stds.texi b/contrib/binutils/etc/make-stds.texi
deleted file mode 100644
index 250867adfcd4..000000000000
--- a/contrib/binutils/etc/make-stds.texi
+++ /dev/null
@@ -1,955 +0,0 @@
-@comment This file is included by both standards.texi and make.texinfo.
-@comment It was broken out of standards.texi on 1/6/93 by roland.
-
-@node Makefile Conventions
-@chapter Makefile Conventions
-@comment standards.texi does not print an index, but make.texinfo does.
-@cindex makefile, conventions for
-@cindex conventions for makefiles
-@cindex standards for makefiles
-
-@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001 Free
-@c Software Foundation, Inc.
-
-@c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.1
-@c or any later version published by the Free Software Foundation;
-@c with no Invariant Sections, with no
-@c Front-Cover Texts, and with no Back-Cover Texts.
-@c A copy of the license is included in the section entitled ``GNU
-@c Free Documentation License''.
-
-This
-@ifinfo
-node
-@end ifinfo
-@iftex
-@ifset CODESTD
-section
-@end ifset
-@ifclear CODESTD
-chapter
-@end ifclear
-@end iftex
-describes conventions for writing the Makefiles for GNU programs.
-Using Automake will help you write a Makefile that follows these
-conventions.
-
-@menu
-* Makefile Basics:: General Conventions for Makefiles
-* Utilities in Makefiles:: Utilities in Makefiles
-* Command Variables:: Variables for Specifying Commands
-* Directory Variables:: Variables for Installation Directories
-* Standard Targets:: Standard Targets for Users
-* Install Command Categories:: Three categories of commands in the `install'
- rule: normal, pre-install and post-install.
-@end menu
-
-@node Makefile Basics
-@section General Conventions for Makefiles
-
-Every Makefile should contain this line:
-
-@example
-SHELL = /bin/sh
-@end example
-
-@noindent
-to avoid trouble on systems where the @code{SHELL} variable might be
-inherited from the environment. (This is never a problem with GNU
-@code{make}.)
-
-Different @code{make} programs have incompatible suffix lists and
-implicit rules, and this sometimes creates confusion or misbehavior. So
-it is a good idea to set the suffix list explicitly using only the
-suffixes you need in the particular Makefile, like this:
-
-@example
-.SUFFIXES:
-.SUFFIXES: .c .o
-@end example
-
-@noindent
-The first line clears out the suffix list, the second introduces all
-suffixes which may be subject to implicit rules in this Makefile.
-
-Don't assume that @file{.} is in the path for command execution. When
-you need to run programs that are a part of your package during the
-make, please make sure that it uses @file{./} if the program is built as
-part of the make or @file{$(srcdir)/} if the file is an unchanging part
-of the source code. Without one of these prefixes, the current search
-path is used.
-
-The distinction between @file{./} (the @dfn{build directory}) and
-@file{$(srcdir)/} (the @dfn{source directory}) is important because
-users can build in a separate directory using the @samp{--srcdir} option
-to @file{configure}. A rule of the form:
-
-@smallexample
-foo.1 : foo.man sedscript
- sed -e sedscript foo.man > foo.1
-@end smallexample
-
-@noindent
-will fail when the build directory is not the source directory, because
-@file{foo.man} and @file{sedscript} are in the source directory.
-
-When using GNU @code{make}, relying on @samp{VPATH} to find the source
-file will work in the case where there is a single dependency file,
-since the @code{make} automatic variable @samp{$<} will represent the
-source file wherever it is. (Many versions of @code{make} set @samp{$<}
-only in implicit rules.) A Makefile target like
-
-@smallexample
-foo.o : bar.c
- $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
-@end smallexample
-
-@noindent
-should instead be written as
-
-@smallexample
-foo.o : bar.c
- $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@@
-@end smallexample
-
-@noindent
-in order to allow @samp{VPATH} to work correctly. When the target has
-multiple dependencies, using an explicit @samp{$(srcdir)} is the easiest
-way to make the rule work well. For example, the target above for
-@file{foo.1} is best written as:
-
-@smallexample
-foo.1 : foo.man sedscript
- sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@@
-@end smallexample
-
-GNU distributions usually contain some files which are not source
-files---for example, Info files, and the output from Autoconf, Automake,
-Bison or Flex. Since these files normally appear in the source
-directory, they should always appear in the source directory, not in the
-build directory. So Makefile rules to update them should put the
-updated files in the source directory.
-
-However, if a file does not appear in the distribution, then the
-Makefile should not put it in the source directory, because building a
-program in ordinary circumstances should not modify the source directory
-in any way.
-
-Try to make the build and installation targets, at least (and all their
-subtargets) work correctly with a parallel @code{make}.
-
-@node Utilities in Makefiles
-@section Utilities in Makefiles
-
-Write the Makefile commands (and any shell scripts, such as
-@code{configure}) to run in @code{sh}, not in @code{csh}. Don't use any
-special features of @code{ksh} or @code{bash}.
-
-The @code{configure} script and the Makefile rules for building and
-installation should not use any utilities directly except these:
-
-@c dd find
-@c gunzip gzip md5sum
-@c mkfifo mknod tee uname
-
-@example
-cat cmp cp diff echo egrep expr false grep install-info
-ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
-@end example
-
-The compression program @code{gzip} can be used in the @code{dist} rule.
-
-Stick to the generally supported options for these programs. For
-example, don't use @samp{mkdir -p}, convenient as it may be, because
-most systems don't support it.
-
-It is a good idea to avoid creating symbolic links in makefiles, since a
-few systems don't support them.
-
-The Makefile rules for building and installation can also use compilers
-and related programs, but should do so via @code{make} variables so that the
-user can substitute alternatives. Here are some of the programs we
-mean:
-
-@example
-ar bison cc flex install ld ldconfig lex
-make makeinfo ranlib texi2dvi yacc
-@end example
-
-Use the following @code{make} variables to run those programs:
-
-@example
-$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
-$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
-@end example
-
-When you use @code{ranlib} or @code{ldconfig}, you should make sure
-nothing bad happens if the system does not have the program in question.
-Arrange to ignore an error from that command, and print a message before
-the command to tell the user that failure of this command does not mean
-a problem. (The Autoconf @samp{AC_PROG_RANLIB} macro can help with
-this.)
-
-If you use symbolic links, you should implement a fallback for systems
-that don't have symbolic links.
-
-Additional utilities that can be used via Make variables are:
-
-@example
-chgrp chmod chown mknod
-@end example
-
-It is ok to use other utilities in Makefile portions (or scripts)
-intended only for particular systems where you know those utilities
-exist.
-
-@node Command Variables
-@section Variables for Specifying Commands
-
-Makefiles should provide variables for overriding certain commands, options,
-and so on.
-
-In particular, you should run most utility programs via variables.
-Thus, if you use Bison, have a variable named @code{BISON} whose default
-value is set with @samp{BISON = bison}, and refer to it with
-@code{$(BISON)} whenever you need to use Bison.
-
-File management utilities such as @code{ln}, @code{rm}, @code{mv}, and
-so on, need not be referred to through variables in this way, since users
-don't need to replace them with other programs.
-
-Each program-name variable should come with an options variable that is
-used to supply options to the program. Append @samp{FLAGS} to the
-program-name variable name to get the options variable name---for
-example, @code{BISONFLAGS}. (The names @code{CFLAGS} for the C
-compiler, @code{YFLAGS} for yacc, and @code{LFLAGS} for lex, are
-exceptions to this rule, but we keep them because they are standard.)
-Use @code{CPPFLAGS} in any compilation command that runs the
-preprocessor, and use @code{LDFLAGS} in any compilation command that
-does linking as well as in any direct use of @code{ld}.
-
-If there are C compiler options that @emph{must} be used for proper
-compilation of certain files, do not include them in @code{CFLAGS}.
-Users expect to be able to specify @code{CFLAGS} freely themselves.
-Instead, arrange to pass the necessary options to the C compiler
-independently of @code{CFLAGS}, by writing them explicitly in the
-compilation commands or by defining an implicit rule, like this:
-
-@smallexample
-CFLAGS = -g
-ALL_CFLAGS = -I. $(CFLAGS)
-.c.o:
- $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
-@end smallexample
-
-Do include the @samp{-g} option in @code{CFLAGS}, because that is not
-@emph{required} for proper compilation. You can consider it a default
-that is only recommended. If the package is set up so that it is
-compiled with GCC by default, then you might as well include @samp{-O}
-in the default value of @code{CFLAGS} as well.
-
-Put @code{CFLAGS} last in the compilation command, after other variables
-containing compiler options, so the user can use @code{CFLAGS} to
-override the others.
-
-@code{CFLAGS} should be used in every invocation of the C compiler,
-both those which do compilation and those which do linking.
-
-Every Makefile should define the variable @code{INSTALL}, which is the
-basic command for installing a file into the system.
-
-Every Makefile should also define the variables @code{INSTALL_PROGRAM}
-and @code{INSTALL_DATA}. (The default for @code{INSTALL_PROGRAM} should
-be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
-@code{$@{INSTALL@} -m 644}.) Then it should use those variables as the
-commands for actual installation, for executables and nonexecutables
-respectively. Use these variables as follows:
-
-@example
-$(INSTALL_PROGRAM) foo $(bindir)/foo
-$(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
-@end example
-
-Optionally, you may prepend the value of @code{DESTDIR} to the target
-filename. Doing this allows the installer to create a snapshot of the
-installation to be copied onto the real target filesystem later. Do not
-set the value of @code{DESTDIR} in your Makefile, and do not include it
-in any installed files. With support for @code{DESTDIR}, the above
-examples become:
-
-@example
-$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
-$(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
-@end example
-
-@noindent
-Always use a file name, not a directory name, as the second argument of
-the installation commands. Use a separate command for each file to be
-installed.
-
-@node Directory Variables
-@section Variables for Installation Directories
-
-Installation directories should always be named by variables, so it is
-easy to install in a nonstandard place. The standard names for these
-variables are described below. They are based on a standard filesystem
-layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
-and other modern operating systems.
-
-These two variables set the root for the installation. All the other
-installation directories should be subdirectories of one of these two,
-and nothing should be directly installed into these two directories.
-
-@table @code
-@item prefix
-@vindex prefix
-A prefix used in constructing the default values of the variables listed
-below. The default value of @code{prefix} should be @file{/usr/local}.
-When building the complete GNU system, the prefix will be empty and
-@file{/usr} will be a symbolic link to @file{/}.
-(If you are using Autoconf, write it as @samp{@@prefix@@}.)
-
-Running @samp{make install} with a different value of @code{prefix} from
-the one used to build the program should @emph{not} recompile the
-program.
-
-@item exec_prefix
-@vindex exec_prefix
-A prefix used in constructing the default values of some of the
-variables listed below. The default value of @code{exec_prefix} should
-be @code{$(prefix)}.
-(If you are using Autoconf, write it as @samp{@@exec_prefix@@}.)
-
-Generally, @code{$(exec_prefix)} is used for directories that contain
-machine-specific files (such as executables and subroutine libraries),
-while @code{$(prefix)} is used directly for other directories.
-
-Running @samp{make install} with a different value of @code{exec_prefix}
-from the one used to build the program should @emph{not} recompile the
-program.
-@end table
-
-Executable programs are installed in one of the following directories.
-
-@table @code
-@item bindir
-@vindex bindir
-The directory for installing executable programs that users can run.
-This should normally be @file{/usr/local/bin}, but write it as
-@file{$(exec_prefix)/bin}.
-(If you are using Autoconf, write it as @samp{@@bindir@@}.)
-
-@item sbindir
-@vindex sbindir
-The directory for installing executable programs that can be run from
-the shell, but are only generally useful to system administrators. This
-should normally be @file{/usr/local/sbin}, but write it as
-@file{$(exec_prefix)/sbin}.
-(If you are using Autoconf, write it as @samp{@@sbindir@@}.)
-
-@item libexecdir
-@vindex libexecdir
-@comment This paragraph adjusted to avoid overfull hbox --roland 5jul94
-The directory for installing executable programs to be run by other
-programs rather than by users. This directory should normally be
-@file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}.
-(If you are using Autoconf, write it as @samp{@@libexecdir@@}.)
-@end table
-
-Data files used by the program during its execution are divided into
-categories in two ways.
-
-@itemize @bullet
-@item
-Some files are normally modified by programs; others are never normally
-modified (though users may edit some of these).
-
-@item
-Some files are architecture-independent and can be shared by all
-machines at a site; some are architecture-dependent and can be shared
-only by machines of the same kind and operating system; others may never
-be shared between two machines.
-@end itemize
-
-This makes for six different possibilities. However, we want to
-discourage the use of architecture-dependent files, aside from object
-files and libraries. It is much cleaner to make other data files
-architecture-independent, and it is generally not hard.
-
-Therefore, here are the variables Makefiles should use to specify
-directories:
-
-@table @samp
-@item datadir
-The directory for installing read-only architecture independent data
-files. This should normally be @file{/usr/local/share}, but write it as
-@file{$(prefix)/share}.
-(If you are using Autoconf, write it as @samp{@@datadir@@}.)
-As a special exception, see @file{$(infodir)}
-and @file{$(includedir)} below.
-
-@item sysconfdir
-The directory for installing read-only data files that pertain to a
-single machine--that is to say, files for configuring a host. Mailer
-and network configuration files, @file{/etc/passwd}, and so forth belong
-here. All the files in this directory should be ordinary ASCII text
-files. This directory should normally be @file{/usr/local/etc}, but
-write it as @file{$(prefix)/etc}.
-(If you are using Autoconf, write it as @samp{@@sysconfdir@@}.)
-
-Do not install executables here in this directory (they probably belong
-in @file{$(libexecdir)} or @file{$(sbindir)}). Also do not install
-files that are modified in the normal course of their use (programs
-whose purpose is to change the configuration of the system excluded).
-Those probably belong in @file{$(localstatedir)}.
-
-@item sharedstatedir
-The directory for installing architecture-independent data files which
-the programs modify while they run. This should normally be
-@file{/usr/local/com}, but write it as @file{$(prefix)/com}.
-(If you are using Autoconf, write it as @samp{@@sharedstatedir@@}.)
-
-@item localstatedir
-The directory for installing data files which the programs modify while
-they run, and that pertain to one specific machine. Users should never
-need to modify files in this directory to configure the package's
-operation; put such configuration information in separate files that go
-in @file{$(datadir)} or @file{$(sysconfdir)}. @file{$(localstatedir)}
-should normally be @file{/usr/local/var}, but write it as
-@file{$(prefix)/var}.
-(If you are using Autoconf, write it as @samp{@@localstatedir@@}.)
-
-@item libdir
-The directory for object files and libraries of object code. Do not
-install executables here, they probably ought to go in @file{$(libexecdir)}
-instead. The value of @code{libdir} should normally be
-@file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}.
-(If you are using Autoconf, write it as @samp{@@libdir@@}.)
-
-@item infodir
-The directory for installing the Info files for this package. By
-default, it should be @file{/usr/local/info}, but it should be written
-as @file{$(prefix)/info}.
-(If you are using Autoconf, write it as @samp{@@infodir@@}.)
-
-@item lispdir
-The directory for installing any Emacs Lisp files in this package. By
-default, it should be @file{/usr/local/share/emacs/site-lisp}, but it
-should be written as @file{$(prefix)/share/emacs/site-lisp}.
-
-If you are using Autoconf, write the default as @samp{@@lispdir@@}.
-In order to make @samp{@@lispdir@@} work, you need the following lines
-in your @file{configure.in} file:
-
-@example
-lispdir='$@{datadir@}/emacs/site-lisp'
-AC_SUBST(lispdir)
-@end example
-
-@item includedir
-@c rewritten to avoid overfull hbox --roland
-The directory for installing header files to be included by user
-programs with the C @samp{#include} preprocessor directive. This
-should normally be @file{/usr/local/include}, but write it as
-@file{$(prefix)/include}.
-(If you are using Autoconf, write it as @samp{@@includedir@@}.)
-
-Most compilers other than GCC do not look for header files in directory
-@file{/usr/local/include}. So installing the header files this way is
-only useful with GCC. Sometimes this is not a problem because some
-libraries are only really intended to work with GCC. But some libraries
-are intended to work with other compilers. They should install their
-header files in two places, one specified by @code{includedir} and one
-specified by @code{oldincludedir}.
-
-@item oldincludedir
-The directory for installing @samp{#include} header files for use with
-compilers other than GCC. This should normally be @file{/usr/include}.
-(If you are using Autoconf, you can write it as @samp{@@oldincludedir@@}.)
-
-The Makefile commands should check whether the value of
-@code{oldincludedir} is empty. If it is, they should not try to use
-it; they should cancel the second installation of the header files.
-
-A package should not replace an existing header in this directory unless
-the header came from the same package. Thus, if your Foo package
-provides a header file @file{foo.h}, then it should install the header
-file in the @code{oldincludedir} directory if either (1) there is no
-@file{foo.h} there or (2) the @file{foo.h} that exists came from the Foo
-package.
-
-To tell whether @file{foo.h} came from the Foo package, put a magic
-string in the file---part of a comment---and @code{grep} for that string.
-@end table
-
-Unix-style man pages are installed in one of the following:
-
-@table @samp
-@item mandir
-The top-level directory for installing the man pages (if any) for this
-package. It will normally be @file{/usr/local/man}, but you should
-write it as @file{$(prefix)/man}.
-(If you are using Autoconf, write it as @samp{@@mandir@@}.)
-
-@item man1dir
-The directory for installing section 1 man pages. Write it as
-@file{$(mandir)/man1}.
-@item man2dir
-The directory for installing section 2 man pages. Write it as
-@file{$(mandir)/man2}
-@item @dots{}
-
-@strong{Don't make the primary documentation for any GNU software be a
-man page. Write a manual in Texinfo instead. Man pages are just for
-the sake of people running GNU software on Unix, which is a secondary
-application only.}
-
-@item manext
-The file name extension for the installed man page. This should contain
-a period followed by the appropriate digit; it should normally be @samp{.1}.
-
-@item man1ext
-The file name extension for installed section 1 man pages.
-@item man2ext
-The file name extension for installed section 2 man pages.
-@item @dots{}
-Use these names instead of @samp{manext} if the package needs to install man
-pages in more than one section of the manual.
-@end table
-
-And finally, you should set the following variable:
-
-@table @samp
-@item srcdir
-The directory for the sources being compiled. The value of this
-variable is normally inserted by the @code{configure} shell script.
-(If you are using Autconf, use @samp{srcdir = @@srcdir@@}.)
-@end table
-
-For example:
-
-@smallexample
-@c I have changed some of the comments here slightly to fix an overfull
-@c hbox, so the make manual can format correctly. --roland
-# Common prefix for installation directories.
-# NOTE: This directory must exist when you start the install.
-prefix = /usr/local
-exec_prefix = $(prefix)
-# Where to put the executable for the command `gcc'.
-bindir = $(exec_prefix)/bin
-# Where to put the directories used by the compiler.
-libexecdir = $(exec_prefix)/libexec
-# Where to put the Info files.
-infodir = $(prefix)/info
-@end smallexample
-
-If your program installs a large number of files into one of the
-standard user-specified directories, it might be useful to group them
-into a subdirectory particular to that program. If you do this, you
-should write the @code{install} rule to create these subdirectories.
-
-Do not expect the user to include the subdirectory name in the value of
-any of the variables listed above. The idea of having a uniform set of
-variable names for installation directories is to enable the user to
-specify the exact same values for several different GNU packages. In
-order for this to be useful, all the packages must be designed so that
-they will work sensibly when the user does so.
-
-@node Standard Targets
-@section Standard Targets for Users
-
-All GNU programs should have the following targets in their Makefiles:
-
-@table @samp
-@item all
-Compile the entire program. This should be the default target. This
-target need not rebuild any documentation files; Info files should
-normally be included in the distribution, and DVI files should be made
-only when explicitly asked for.
-
-By default, the Make rules should compile and link with @samp{-g}, so
-that executable programs have debugging symbols. Users who don't mind
-being helpless can strip the executables later if they wish.
-
-@item install
-Compile the program and copy the executables, libraries, and so on to
-the file names where they should reside for actual use. If there is a
-simple test to verify that a program is properly installed, this target
-should run that test.
-
-Do not strip executables when installing them. Devil-may-care users can
-use the @code{install-strip} target to do that.
-
-If possible, write the @code{install} target rule so that it does not
-modify anything in the directory where the program was built, provided
-@samp{make all} has just been done. This is convenient for building the
-program under one user name and installing it under another.
-
-The commands should create all the directories in which files are to be
-installed, if they don't already exist. This includes the directories
-specified as the values of the variables @code{prefix} and
-@code{exec_prefix}, as well as all subdirectories that are needed.
-One way to do this is by means of an @code{installdirs} target
-as described below.
-
-Use @samp{-} before any command for installing a man page, so that
-@code{make} will ignore any errors. This is in case there are systems
-that don't have the Unix man page documentation system installed.
-
-The way to install Info files is to copy them into @file{$(infodir)}
-with @code{$(INSTALL_DATA)} (@pxref{Command Variables}), and then run
-the @code{install-info} program if it is present. @code{install-info}
-is a program that edits the Info @file{dir} file to add or update the
-menu entry for the given Info file; it is part of the Texinfo package.
-Here is a sample rule to install an Info file:
-
-@comment This example has been carefully formatted for the Make manual.
-@comment Please do not reformat it without talking to roland@gnu.ai.mit.edu.
-@smallexample
-$(DESTDIR)$(infodir)/foo.info: foo.info
- $(POST_INSTALL)
-# There may be a newer info file in . than in srcdir.
- -if test -f foo.info; then d=.; \
- else d=$(srcdir); fi; \
- $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@@; \
-# Run install-info only if it exists.
-# Use `if' instead of just prepending `-' to the
-# line so we notice real errors from install-info.
-# We use `$(SHELL) -c' because some shells do not
-# fail gracefully when there is an unknown command.
- if $(SHELL) -c 'install-info --version' \
- >/dev/null 2>&1; then \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir \
- $(DESTDIR)$(infodir)/foo.info; \
- else true; fi
-@end smallexample
-
-When writing the @code{install} target, you must classify all the
-commands into three categories: normal ones, @dfn{pre-installation}
-commands and @dfn{post-installation} commands. @xref{Install Command
-Categories}.
-
-@item uninstall
-Delete all the installed files---the copies that the @samp{install}
-target creates.
-
-This rule should not modify the directories where compilation is done,
-only the directories where files are installed.
-
-The uninstallation commands are divided into three categories, just like
-the installation commands. @xref{Install Command Categories}.
-
-@item install-strip
-Like @code{install}, but strip the executable files while installing
-them. In simple cases, this target can use the @code{install} target in
-a simple way:
-
-@smallexample
-install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
- install
-@end smallexample
-
-But if the package installs scripts as well as real executables, the
-@code{install-strip} target can't just refer to the @code{install}
-target; it has to strip the executables but not the scripts.
-
-@code{install-strip} should not strip the executables in the build
-directory which are being copied for installation. It should only strip
-the copies that are installed.
-
-Normally we do not recommend stripping an executable unless you are sure
-the program has no bugs. However, it can be reasonable to install a
-stripped executable for actual execution while saving the unstripped
-executable elsewhere in case there is a bug.
-
-@comment The gratuitous blank line here is to make the table look better
-@comment in the printed Make manual. Please leave it in.
-@item clean
-
-Delete all files from the current directory that are normally created by
-building the program. Don't delete the files that record the
-configuration. Also preserve files that could be made by building, but
-normally aren't because the distribution comes with them.
-
-Delete @file{.dvi} files here if they are not part of the distribution.
-
-@item distclean
-Delete all files from the current directory that are created by
-configuring or building the program. If you have unpacked the source
-and built the program without creating any other files, @samp{make
-distclean} should leave only the files that were in the distribution.
-
-@item mostlyclean
-Like @samp{clean}, but may refrain from deleting a few files that people
-normally don't want to recompile. For example, the @samp{mostlyclean}
-target for GCC does not delete @file{libgcc.a}, because recompiling it
-is rarely necessary and takes a lot of time.
-
-@item maintainer-clean
-Delete almost everything from the current directory that can be
-reconstructed with this Makefile. This typically includes everything
-deleted by @code{distclean}, plus more: C source files produced by
-Bison, tags tables, Info files, and so on.
-
-The reason we say ``almost everything'' is that running the command
-@samp{make maintainer-clean} should not delete @file{configure} even if
-@file{configure} can be remade using a rule in the Makefile. More generally,
-@samp{make maintainer-clean} should not delete anything that needs to
-exist in order to run @file{configure} and then begin to build the
-program. This is the only exception; @code{maintainer-clean} should
-delete everything else that can be rebuilt.
-
-The @samp{maintainer-clean} target is intended to be used by a maintainer of
-the package, not by ordinary users. You may need special tools to
-reconstruct some of the files that @samp{make maintainer-clean} deletes.
-Since these files are normally included in the distribution, we don't
-take care to make them easy to reconstruct. If you find you need to
-unpack the full distribution again, don't blame us.
-
-To help make users aware of this, the commands for the special
-@code{maintainer-clean} target should start with these two:
-
-@smallexample
-@@echo 'This command is intended for maintainers to use; it'
-@@echo 'deletes files that may need special tools to rebuild.'
-@end smallexample
-
-@item TAGS
-Update a tags table for this program.
-@c ADR: how?
-
-@item info
-Generate any Info files needed. The best way to write the rules is as
-follows:
-
-@smallexample
-info: foo.info
-
-foo.info: foo.texi chap1.texi chap2.texi
- $(MAKEINFO) $(srcdir)/foo.texi
-@end smallexample
-
-@noindent
-You must define the variable @code{MAKEINFO} in the Makefile. It should
-run the @code{makeinfo} program, which is part of the Texinfo
-distribution.
-
-Normally a GNU distribution comes with Info files, and that means the
-Info files are present in the source directory. Therefore, the Make
-rule for an info file should update it in the source directory. When
-users build the package, ordinarily Make will not update the Info files
-because they will already be up to date.
-
-@item dvi
-Generate DVI files for all Texinfo documentation.
-For example:
-
-@smallexample
-dvi: foo.dvi
-
-foo.dvi: foo.texi chap1.texi chap2.texi
- $(TEXI2DVI) $(srcdir)/foo.texi
-@end smallexample
-
-@noindent
-You must define the variable @code{TEXI2DVI} in the Makefile. It should
-run the program @code{texi2dvi}, which is part of the Texinfo
-distribution.@footnote{@code{texi2dvi} uses @TeX{} to do the real work
-of formatting. @TeX{} is not distributed with Texinfo.} Alternatively,
-write just the dependencies, and allow GNU @code{make} to provide the command.
-
-@item dist
-Create a distribution tar file for this program. The tar file should be
-set up so that the file names in the tar file start with a subdirectory
-name which is the name of the package it is a distribution for. This
-name can include the version number.
-
-For example, the distribution tar file of GCC version 1.40 unpacks into
-a subdirectory named @file{gcc-1.40}.
-
-The easiest way to do this is to create a subdirectory appropriately
-named, use @code{ln} or @code{cp} to install the proper files in it, and
-then @code{tar} that subdirectory.
-
-Compress the tar file with @code{gzip}. For example, the actual
-distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}.
-
-The @code{dist} target should explicitly depend on all non-source files
-that are in the distribution, to make sure they are up to date in the
-distribution.
-@ifset CODESTD
-@xref{Releases, , Making Releases}.
-@end ifset
-@ifclear CODESTD
-@xref{Releases, , Making Releases, standards, GNU Coding Standards}.
-@end ifclear
-
-@item check
-Perform self-tests (if any). The user must build the program before
-running the tests, but need not install the program; you should write
-the self-tests so that they work when the program is built but not
-installed.
-@end table
-
-The following targets are suggested as conventional names, for programs
-in which they are useful.
-
-@table @code
-@item installcheck
-Perform installation tests (if any). The user must build and install
-the program before running the tests. You should not assume that
-@file{$(bindir)} is in the search path.
-
-@item installdirs
-It's useful to add a target named @samp{installdirs} to create the
-directories where files are installed, and their parent directories.
-There is a script called @file{mkinstalldirs} which is convenient for
-this; you can find it in the Texinfo package.
-@c It's in /gd/gnu/lib/mkinstalldirs.
-You can use a rule like this:
-
-@comment This has been carefully formatted to look decent in the Make manual.
-@comment Please be sure not to make it extend any further to the right.--roland
-@smallexample
-# Make sure all installation directories (e.g. $(bindir))
-# actually exist by making them if necessary.
-installdirs: mkinstalldirs
- $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
- $(libdir) $(infodir) \
- $(mandir)
-@end smallexample
-
-@noindent
-or, if you wish to support @env{DESTDIR},
-
-@smallexample
-# Make sure all installation directories (e.g. $(bindir))
-# actually exist by making them if necessary.
-installdirs: mkinstalldirs
- $(srcdir)/mkinstalldirs \
- $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
- $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
- $(DESTDIR)$(mandir)
-@end smallexample
-
-This rule should not modify the directories where compilation is done.
-It should do nothing but create installation directories.
-@end table
-
-@node Install Command Categories
-@section Install Command Categories
-
-@cindex pre-installation commands
-@cindex post-installation commands
-When writing the @code{install} target, you must classify all the
-commands into three categories: normal ones, @dfn{pre-installation}
-commands and @dfn{post-installation} commands.
-
-Normal commands move files into their proper places, and set their
-modes. They may not alter any files except the ones that come entirely
-from the package they belong to.
-
-Pre-installation and post-installation commands may alter other files;
-in particular, they can edit global configuration files or data bases.
-
-Pre-installation commands are typically executed before the normal
-commands, and post-installation commands are typically run after the
-normal commands.
-
-The most common use for a post-installation command is to run
-@code{install-info}. This cannot be done with a normal command, since
-it alters a file (the Info directory) which does not come entirely and
-solely from the package being installed. It is a post-installation
-command because it needs to be done after the normal command which
-installs the package's Info files.
-
-Most programs don't need any pre-installation commands, but we have the
-feature just in case it is needed.
-
-To classify the commands in the @code{install} rule into these three
-categories, insert @dfn{category lines} among them. A category line
-specifies the category for the commands that follow.
-
-A category line consists of a tab and a reference to a special Make
-variable, plus an optional comment at the end. There are three
-variables you can use, one for each category; the variable name
-specifies the category. Category lines are no-ops in ordinary execution
-because these three Make variables are normally undefined (and you
-@emph{should not} define them in the makefile).
-
-Here are the three possible category lines, each with a comment that
-explains what it means:
-
-@smallexample
- $(PRE_INSTALL) # @r{Pre-install commands follow.}
- $(POST_INSTALL) # @r{Post-install commands follow.}
- $(NORMAL_INSTALL) # @r{Normal commands follow.}
-@end smallexample
-
-If you don't use a category line at the beginning of the @code{install}
-rule, all the commands are classified as normal until the first category
-line. If you don't use any category lines, all the commands are
-classified as normal.
-
-These are the category lines for @code{uninstall}:
-
-@smallexample
- $(PRE_UNINSTALL) # @r{Pre-uninstall commands follow.}
- $(POST_UNINSTALL) # @r{Post-uninstall commands follow.}
- $(NORMAL_UNINSTALL) # @r{Normal commands follow.}
-@end smallexample
-
-Typically, a pre-uninstall command would be used for deleting entries
-from the Info directory.
-
-If the @code{install} or @code{uninstall} target has any dependencies
-which act as subroutines of installation, then you should start
-@emph{each} dependency's commands with a category line, and start the
-main target's commands with a category line also. This way, you can
-ensure that each command is placed in the right category regardless of
-which of the dependencies actually run.
-
-Pre-installation and post-installation commands should not run any
-programs except for these:
-
-@example
-[ basename bash cat chgrp chmod chown cmp cp dd diff echo
-egrep expand expr false fgrep find getopt grep gunzip gzip
-hostname install install-info kill ldconfig ln ls md5sum
-mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
-test touch true uname xargs yes
-@end example
-
-@cindex binary packages
-The reason for distinguishing the commands in this way is for the sake
-of making binary packages. Typically a binary package contains all the
-executables and other files that need to be installed, and has its own
-method of installing them---so it does not need to run the normal
-installation commands. But installing the binary package does need to
-execute the pre-installation and post-installation commands.
-
-Programs to build binary packages work by extracting the
-pre-installation and post-installation commands. Here is one way of
-extracting the pre-installation commands:
-
-@smallexample
-make -n install -o all \
- PRE_INSTALL=pre-install \
- POST_INSTALL=post-install \
- NORMAL_INSTALL=normal-install \
- | gawk -f pre-install.awk
-@end smallexample
-
-@noindent
-where the file @file{pre-install.awk} could contain this:
-
-@smallexample
-$0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ @{on = 0@}
-on @{print $0@}
-$0 ~ /^\t[ \t]*pre_install[ \t]*$/ @{on = 1@}
-@end smallexample
-
-The resulting file of pre-installation commands is executed as a shell
-script as part of installing the binary package.
diff --git a/contrib/binutils/etc/standards.texi b/contrib/binutils/etc/standards.texi
deleted file mode 100644
index 5aa508e0184e..000000000000
--- a/contrib/binutils/etc/standards.texi
+++ /dev/null
@@ -1,3742 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename standards.info
-@settitle GNU Coding Standards
-@c This date is automagically updated when you save this file:
-@set lastupdate February 14, 2002
-@c %**end of header
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Standards: (standards). GNU coding standards.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@c @setchapternewpage odd
-@setchapternewpage off
-
-@c Put everything in one index (arbitrarily chosen to be the concept index).
-@syncodeindex fn cp
-@syncodeindex ky cp
-@syncodeindex pg cp
-@syncodeindex vr cp
-
-@c This is used by a cross ref in make-stds.texi
-@set CODESTD 1
-@iftex
-@set CHAPTER chapter
-@end iftex
-@ifinfo
-@set CHAPTER node
-@end ifinfo
-
-@ifinfo
-GNU Coding Standards
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 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.1
-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''.
-@end ifinfo
-
-@titlepage
-@title GNU Coding Standards
-@author Richard Stallman, et al.
-@author last updated @value{lastupdate}
-@page
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 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.1
-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''.
-@end titlepage
-
-@ifinfo
-@node Top, Preface, (dir), (dir)
-@top Version
-
-Last updated @value{lastupdate}.
-@end ifinfo
-
-@menu
-* Preface:: About the GNU Coding Standards
-* Legal Issues:: Keeping Free Software Free
-* Design Advice:: General Program Design
-* Program Behavior:: Program Behavior for All Programs
-* Writing C:: Making The Best Use of C
-* Documentation:: Documenting Programs
-* Managing Releases:: The Release Process
-* References:: References to Non-Free Software or Documentation
-* Copying This Manual:: How to Make Copies of This Manual
-* Index::
-
-@end menu
-
-@node Preface
-@chapter About the GNU Coding Standards
-
-The GNU Coding Standards were written by Richard Stallman and other GNU
-Project volunteers. Their purpose is to make the GNU system clean,
-consistent, and easy to install. This document can also be read as a
-guide to writing portable, robust and reliable programs. It focuses on
-programs written in C, but many of the rules and principles are useful
-even if you write in another programming language. The rules often
-state reasons for writing in a certain way.
-
-This release of the GNU Coding Standards was last updated
-@value{lastupdate}.
-
-@cindex where to obtain @code{standards.texi}
-@cindex downloading this manual
-If you did not obtain this file directly from the GNU project and
-recently, please check for a newer version. You can ftp the GNU
-Coding Standards from any GNU FTP host in the directory
-@file{/pub/gnu/standards/}. The GNU Coding Standards are available
-there in several different formats: @file{standards.text},
-@file{standards.info}, and @file{standards.dvi}, as well as the
-Texinfo ``source'' which is divided in two files:
-@file{standards.texi} and @file{make-stds.texi}. The GNU Coding
-Standards are also available on the GNU World Wide Web server:
-@uref{http://www.gnu.org/prep/standards_toc.html}.
-
-Corrections or suggestions for this document should be sent to
-@email{bug-standards@@gnu.org}. If you make a suggestion, please include a
-suggested new wording for it; our time is limited. We prefer a context
-diff to the @file{standards.texi} or @file{make-stds.texi} files, but if
-you don't have those files, please mail your suggestion anyway.
-
-These standards cover the minimum of what is important when writing a
-GNU package. Likely, the needs for additional standards will come up.
-Sometimes, you might suggest that such standards be added to this
-document. If you think your standards would be generally useful, please
-do suggest them.
-
-You should also set standards for your package on many questions not
-addressed or not firmly specified here. The most important point is to
-be self-consistent---try to stick to the conventions you pick, and try
-to document them as much as possible. That way, your program will be
-more maintainable by others.
-
-@node Legal Issues
-@chapter Keeping Free Software Free
-@cindex legal aspects
-
-This @value{CHAPTER} discusses how you can make sure that GNU software
-avoids legal difficulties, and other related issues.
-
-@menu
-* Reading Non-Free Code:: Referring to Proprietary Programs
-* Contributions:: Accepting Contributions
-* Trademarks:: How We Deal with Trademark Issues
-@end menu
-
-@node Reading Non-Free Code
-@section Referring to Proprietary Programs
-@cindex proprietary programs
-@cindex avoiding proprietary code
-
-Don't in any circumstances refer to Unix source code for or during
-your work on GNU! (Or to any other proprietary programs.)
-
-If you have a vague recollection of the internals of a Unix program,
-this does not absolutely mean you can't write an imitation of it, but
-do try to organize the imitation internally along different lines,
-because this is likely to make the details of the Unix version
-irrelevant and dissimilar to your results.
-
-For example, Unix utilities were generally optimized to minimize
-memory use; if you go for speed instead, your program will be very
-different. You could keep the entire input file in core and scan it
-there instead of using stdio. Use a smarter algorithm discovered more
-recently than the Unix program. Eliminate use of temporary files. Do
-it in one pass instead of two (we did this in the assembler).
-
-Or, on the contrary, emphasize simplicity instead of speed. For some
-applications, the speed of today's computers makes simpler algorithms
-adequate.
-
-Or go for generality. For example, Unix programs often have static
-tables or fixed-size strings, which make for arbitrary limits; use
-dynamic allocation instead. Make sure your program handles NULs and
-other funny characters in the input files. Add a programming language
-for extensibility and write part of the program in that language.
-
-Or turn some parts of the program into independently usable libraries.
-Or use a simple garbage collector instead of tracking precisely when
-to free memory, or use a new GNU facility such as obstacks.
-
-@node Contributions
-@section Accepting Contributions
-@cindex legal papers
-@cindex accepting contributions
-
-If the program you are working on is copyrighted by the Free Software
-Foundation, then when someone else sends you a piece of code to add to
-the program, we need legal papers to use it---just as we asked you to
-sign papers initially. @emph{Each} person who makes a nontrivial
-contribution to a program must sign some sort of legal papers in order
-for us to have clear title to the program; the main author alone is not
-enough.
-
-So, before adding in any contributions from other people, please tell
-us, so we can arrange to get the papers. Then wait until we tell you
-that we have received the signed papers, before you actually use the
-contribution.
-
-This applies both before you release the program and afterward. If
-you receive diffs to fix a bug, and they make significant changes, we
-need legal papers for that change.
-
-This also applies to comments and documentation files. For copyright
-law, comments and code are just text. Copyright applies to all kinds of
-text, so we need legal papers for all kinds.
-
-We know it is frustrating to ask for legal papers; it's frustrating for
-us as well. But if you don't wait, you are going out on a limb---for
-example, what if the contributor's employer won't sign a disclaimer?
-You might have to take that code out again!
-
-You don't need papers for changes of a few lines here or there, since
-they are not significant for copyright purposes. Also, you don't need
-papers if all you get from the suggestion is some ideas, not actual code
-which you use. For example, if someone send you one implementation, but
-you write a different implementation of the same idea, you don't need to
-get papers.
-
-The very worst thing is if you forget to tell us about the other
-contributor. We could be very embarrassed in court some day as a
-result.
-
-We have more detailed advice for maintainers of programs; if you have
-reached the stage of actually maintaining a program for GNU (whether
-released or not), please ask us for a copy.
-
-@node Trademarks
-@section Trademarks
-@cindex trademarks
-
-Please do not include any trademark acknowledgements in GNU software
-packages or documentation.
-
-Trademark acknowledgements are the statements that such-and-such is a
-trademark of so-and-so. The GNU Project has no objection to the basic
-idea of trademarks, but these acknowledgements feel like kowtowing, so
-we don't use them. There is no legal requirement for them.
-
-What is legally required, as regards other people's trademarks, is to
-avoid using them in ways which a reader might read as naming or labeling
-our own programs or activities. For example, since ``Objective C'' is
-(or at least was) a trademark, we made sure to say that we provide a
-``compiler for the Objective C language'' rather than an ``Objective C
-compiler''. The latter is meant to be short for the former, but it does
-not explicitly state the relationship, so it could be misinterpreted as
-using ``Objective C'' as a label for the compiler rather than for the
-language.
-
-@node Design Advice
-@chapter General Program Design
-@cindex program design
-
-This @value{CHAPTER} discusses some of the issues you should take into
-account when designing your program.
-
-@c Standard or ANSI C
-@c
-@c In 1989 the American National Standards Institute (ANSI) standardized
-@c C as standard X3.159-1989. In December of that year the
-@c International Standards Organization ISO adopted the ANSI C standard
-@c making minor changes. In 1990 ANSI then re-adopted ISO standard
-@c C. This version of C is known as either ANSI C or Standard C.
-
-@c A major revision of the C Standard appeared in 1999.
-
-@menu
-* Source Language:: Which languges to use.
-* Compatibility:: Compatibility with other implementations
-* Using Extensions:: Using non-standard features
-* Standard C:: Using Standard C features
-* Conditional Compilation:: Compiling Code Only If A Conditional is True
-@end menu
-
-@node Source Language
-@section Which Languages to Use
-@cindex programming languges
-
-When you want to use a language that gets compiled and runs at high
-speed, the best language to use is C. Using another language is like
-using a non-standard feature: it will cause trouble for users. Even if
-GCC supports the other language, users may find it inconvenient to have
-to install the compiler for that other language in order to build your
-program. For example, if you write your program in C++, people will
-have to install the GNU C++ compiler in order to compile your program.
-
-C has one other advantage over C++ and other compiled languages: more
-people know C, so more people will find it easy to read and modify the
-program if it is written in C.
-
-So in general it is much better to use C, rather than the
-comparable alternatives.
-
-But there are two exceptions to that conclusion:
-
-@itemize @bullet
-@item
-It is no problem to use another language to write a tool specifically
-intended for use with that language. That is because the only people
-who want to build the tool will be those who have installed the other
-language anyway.
-
-@item
-If an application is of interest only to a narrow part of the community,
-then the question of which language it is written in has less effect on
-other people, so you may as well please yourself.
-@end itemize
-
-Many programs are designed to be extensible: they include an interpreter
-for a language that is higher level than C. Often much of the program
-is written in that language, too. The Emacs editor pioneered this
-technique.
-
-@cindex GUILE
-The standard extensibility interpreter for GNU software is GUILE, which
-implements the language Scheme (an especially clean and simple dialect
-of Lisp). @uref{http://www.gnu.org/software/guile/}. We don't reject
-programs written in other ``scripting languages'' such as Perl and
-Python, but using GUILE is very important for the overall consistency of
-the GNU system.
-
-@node Compatibility
-@section Compatibility with Other Implementations
-@cindex compatibility with C and @sc{posix} standards
-@cindex @sc{posix} compatibility
-
-With occasional exceptions, utility programs and libraries for GNU
-should be upward compatible with those in Berkeley Unix, and upward
-compatible with Standard C if Standard C specifies their
-behavior, and upward compatible with @sc{posix} if @sc{posix} specifies
-their behavior.
-
-When these standards conflict, it is useful to offer compatibility
-modes for each of them.
-
-@cindex options for compatibility
-Standard C and @sc{posix} prohibit many kinds of extensions. Feel
-free to make the extensions anyway, and include a @samp{--ansi},
-@samp{--posix}, or @samp{--compatible} option to turn them off.
-However, if the extension has a significant chance of breaking any real
-programs or scripts, then it is not really upward compatible. So you
-should try to redesign its interface to make it upward compatible.
-
-@cindex @code{POSIXLY_CORRECT}, environment variable
-Many GNU programs suppress extensions that conflict with @sc{posix} if the
-environment variable @code{POSIXLY_CORRECT} is defined (even if it is
-defined with a null value). Please make your program recognize this
-variable if appropriate.
-
-When a feature is used only by users (not by programs or command
-files), and it is done poorly in Unix, feel free to replace it
-completely with something totally different and better. (For example,
-@code{vi} is replaced with Emacs.) But it is nice to offer a compatible
-feature as well. (There is a free @code{vi} clone, so we offer it.)
-
-Additional useful features are welcome regardless of whether
-there is any precedent for them.
-
-@node Using Extensions
-@section Using Non-standard Features
-@cindex non-standard extensions
-
-Many GNU facilities that already exist support a number of convenient
-extensions over the comparable Unix facilities. Whether to use these
-extensions in implementing your program is a difficult question.
-
-On the one hand, using the extensions can make a cleaner program.
-On the other hand, people will not be able to build the program
-unless the other GNU tools are available. This might cause the
-program to work on fewer kinds of machines.
-
-With some extensions, it might be easy to provide both alternatives.
-For example, you can define functions with a ``keyword'' @code{INLINE}
-and define that as a macro to expand into either @code{inline} or
-nothing, depending on the compiler.
-
-In general, perhaps it is best not to use the extensions if you can
-straightforwardly do without them, but to use the extensions if they
-are a big improvement.
-
-An exception to this rule are the large, established programs (such as
-Emacs) which run on a great variety of systems. Using GNU extensions in
-such programs would make many users unhappy, so we don't do that.
-
-Another exception is for programs that are used as part of compilation:
-anything that must be compiled with other compilers in order to
-bootstrap the GNU compilation facilities. If these require the GNU
-compiler, then no one can compile them without having them installed
-already. That would be extremely troublesome in certain cases.
-
-@node Standard C
-@section Standard C and Pre-Standard C
-@cindex @sc{ansi} C standard
-
-1989 Standard C is widespread enough now that it is ok to use its
-features in new programs. There is one exception: do not ever use the
-``trigraph'' feature of Standard C.
-
-1999 Standard C is not widespread yet, so please do not require its
-features in programs. It is ok to use its features if they are present.
-
-However, it is easy to support pre-standard compilers in most programs,
-so if you know how to do that, feel free. If a program you are
-maintaining has such support, you should try to keep it working.
-
-@cindex function prototypes
-To support pre-standard C, instead of writing function definitions in
-standard prototype form,
-
-@example
-int
-foo (int x, int y)
-@dots{}
-@end example
-
-@noindent
-write the definition in pre-standard style like this,
-
-@example
-int
-foo (x, y)
- int x, y;
-@dots{}
-@end example
-
-@noindent
-and use a separate declaration to specify the argument prototype:
-
-@example
-int foo (int, int);
-@end example
-
-You need such a declaration anyway, in a header file, to get the benefit
-of prototypes in all the files where the function is called. And once
-you have the declaration, you normally lose nothing by writing the
-function definition in the pre-standard style.
-
-This technique does not work for integer types narrower than @code{int}.
-If you think of an argument as being of a type narrower than @code{int},
-declare it as @code{int} instead.
-
-There are a few special cases where this technique is hard to use. For
-example, if a function argument needs to hold the system type
-@code{dev_t}, you run into trouble, because @code{dev_t} is shorter than
-@code{int} on some machines; but you cannot use @code{int} instead,
-because @code{dev_t} is wider than @code{int} on some machines. There
-is no type you can safely use on all machines in a non-standard
-definition. The only way to support non-standard C and pass such an
-argument is to check the width of @code{dev_t} using Autoconf and choose
-the argument type accordingly. This may not be worth the trouble.
-
-In order to support pre-standard compilers that do not recognize
-prototypes, you may want to use a preprocessor macro like this:
-
-@example
-/* Declare the prototype for a general external function. */
-#if defined (__STDC__) || defined (WINDOWSNT)
-#define P_(proto) proto
-#else
-#define P_(proto) ()
-#endif
-@end example
-
-@node Conditional Compilation
-@section Conditional Compilation
-
-When supporting configuration options already known when building your
-program we prefer using @code{if (... )} over conditional compilation,
-as in the former case the compiler is able to perform more extensive
-checking of all possible code paths.
-
-For example, please write
-
-@smallexample
- if (HAS_FOO)
- ...
- else
- ...
-@end smallexample
-
-instead of:
-
-@smallexample
- #ifdef HAS_FOO
- ...
- #else
- ...
- #endif
-@end smallexample
-
-A modern compiler such as GCC will generate exactly the same code in
-both cases, and we have been using similar techniques with good success
-in several projects.
-
-While this is not a silver bullet solving all portability problems,
-following this policy would have saved the GCC project alone many person
-hours if not days per year.
-
-In the case of function-like macros like @code{REVERSIBLE_CC_MODE} in
-GCC which cannot be simply used in @code{if( ...)} statements, there is
-an easy workaround. Simply introduce another macro
-@code{HAS_REVERSIBLE_CC_MODE} as in the following example:
-
-@smallexample
- #ifdef REVERSIBLE_CC_MODE
- #define HAS_REVERSIBLE_CC_MODE 1
- #else
- #define HAS_REVERSIBLE_CC_MODE 0
- #endif
-@end smallexample
-
-@node Program Behavior
-@chapter Program Behavior for All Programs
-
-This @value{CHAPTER} describes conventions for writing robust
-software. It also describes general standards for error messages, the
-command line interface, and how libraries should behave.
-
-@menu
-* Semantics:: Writing robust programs
-* Libraries:: Library behavior
-* Errors:: Formatting error messages
-* User Interfaces:: Standards about interfaces generally
-* Graphical Interfaces:: Standards for graphical interfaces
-* Command-Line Interfaces:: Standards for command line interfaces
-* Option Table:: Table of long options
-* Memory Usage:: When and how to care about memory needs
-* File Usage:: Which files to use, and where
-@end menu
-
-@node Semantics
-@section Writing Robust Programs
-
-@cindex arbitrary limits on data
-Avoid arbitrary limits on the length or number of @emph{any} data
-structure, including file names, lines, files, and symbols, by allocating
-all data structures dynamically. In most Unix utilities, ``long lines
-are silently truncated''. This is not acceptable in a GNU utility.
-
-@cindex @code{NUL} characters
-Utilities reading files should not drop NUL characters, or any other
-nonprinting characters @emph{including those with codes above 0177}.
-The only sensible exceptions would be utilities specifically intended
-for interface to certain types of terminals or printers
-that can't handle those characters.
-Whenever possible, try to make programs work properly with
-sequences of bytes that represent multibyte characters, using encodings
-such as UTF-8 and others.
-
-@cindex error messages
-Check every system call for an error return, unless you know you wish to
-ignore errors. Include the system error text (from @code{perror} or
-equivalent) in @emph{every} error message resulting from a failing
-system call, as well as the name of the file if any and the name of the
-utility. Just ``cannot open foo.c'' or ``stat failed'' is not
-sufficient.
-
-@cindex @code{malloc} return value
-@cindex memory allocation failure
-Check every call to @code{malloc} or @code{realloc} to see if it
-returned zero. Check @code{realloc} even if you are making the block
-smaller; in a system that rounds block sizes to a power of 2,
-@code{realloc} may get a different block if you ask for less space.
-
-In Unix, @code{realloc} can destroy the storage block if it returns
-zero. GNU @code{realloc} does not have this bug: if it fails, the
-original block is unchanged. Feel free to assume the bug is fixed. If
-you wish to run your program on Unix, and wish to avoid lossage in this
-case, you can use the GNU @code{malloc}.
-
-You must expect @code{free} to alter the contents of the block that was
-freed. Anything you want to fetch from the block, you must fetch before
-calling @code{free}.
-
-If @code{malloc} fails in a noninteractive program, make that a fatal
-error. In an interactive program (one that reads commands from the
-user), it is better to abort the command and return to the command
-reader loop. This allows the user to kill other processes to free up
-virtual memory, and then try the command again.
-
-@cindex command-line arguments, decoding
-Use @code{getopt_long} to decode arguments, unless the argument syntax
-makes this unreasonable.
-
-When static storage is to be written in during program execution, use
-explicit C code to initialize it. Reserve C initialized declarations
-for data that will not be changed.
-@c ADR: why?
-
-Try to avoid low-level interfaces to obscure Unix data structures (such
-as file directories, utmp, or the layout of kernel memory), since these
-are less likely to work compatibly. If you need to find all the files
-in a directory, use @code{readdir} or some other high-level interface.
-These are supported compatibly by GNU.
-
-@cindex signal handling
-The preferred signal handling facilities are the BSD variant of
-@code{signal}, and the @sc{posix} @code{sigaction} function; the
-alternative USG @code{signal} interface is an inferior design.
-
-Nowadays, using the @sc{posix} signal functions may be the easiest way
-to make a program portable. If you use @code{signal}, then on GNU/Linux
-systems running GNU libc version 1, you should include
-@file{bsd/signal.h} instead of @file{signal.h}, so as to get BSD
-behavior. It is up to you whether to support systems where
-@code{signal} has only the USG behavior, or give up on them.
-
-@cindex impossible conditions
-In error checks that detect ``impossible'' conditions, just abort.
-There is usually no point in printing any message. These checks
-indicate the existence of bugs. Whoever wants to fix the bugs will have
-to read the source code and run a debugger. So explain the problem with
-comments in the source. The relevant data will be in variables, which
-are easy to examine with the debugger, so there is no point moving them
-elsewhere.
-
-Do not use a count of errors as the exit status for a program.
-@emph{That does not work}, because exit status values are limited to 8
-bits (0 through 255). A single run of the program might have 256
-errors; if you try to return 256 as the exit status, the parent process
-will see 0 as the status, and it will appear that the program succeeded.
-
-@cindex temporary files
-@cindex @code{TMPDIR} environment variable
-If you make temporary files, check the @code{TMPDIR} environment
-variable; if that variable is defined, use the specified directory
-instead of @file{/tmp}.
-
-In addition, be aware that there is a possible security problem when
-creating temporary files in world-writable directories. In C, you can
-avoid this problem by creating temporary files in this manner:
-
-@example
-fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
-@end example
-
-@noindent
-or by using the @code{mkstemps} function from libiberty.
-
-In bash, use @code{set -C} to avoid this problem.
-
-@node Libraries
-@section Library Behavior
-@cindex libraries
-
-Try to make library functions reentrant. If they need to do dynamic
-storage allocation, at least try to avoid any nonreentrancy aside from
-that of @code{malloc} itself.
-
-Here are certain name conventions for libraries, to avoid name
-conflicts.
-
-Choose a name prefix for the library, more than two characters long.
-All external function and variable names should start with this
-prefix. In addition, there should only be one of these in any given
-library member. This usually means putting each one in a separate
-source file.
-
-An exception can be made when two external symbols are always used
-together, so that no reasonable program could use one without the
-other; then they can both go in the same file.
-
-External symbols that are not documented entry points for the user
-should have names beginning with @samp{_}. The @samp{_} should be
-followed by the chosen name prefix for the library, to prevent
-collisions with other libraries. These can go in the same files with
-user entry points if you like.
-
-Static functions and variables can be used as you like and need not
-fit any naming convention.
-
-@node Errors
-@section Formatting Error Messages
-@cindex formatting error messages
-@cindex error messages, formatting
-
-Error messages from compilers should look like this:
-
-@example
-@var{source-file-name}:@var{lineno}: @var{message}
-@end example
-
-@noindent
-If you want to mention the column number, use this format:
-
-@example
-@var{source-file-name}:@var{lineno}:@var{column}: @var{message}
-@end example
-
-@noindent
-Line numbers should start from 1 at the beginning of the file, and
-column numbers should start from 1 at the beginning of the line. (Both
-of these conventions are chosen for compatibility.) Calculate column
-numbers assuming that space and all ASCII printing characters have
-equal width, and assuming tab stops every 8 columns.
-
-Error messages from other noninteractive programs should look like this:
-
-@example
-@var{program}:@var{source-file-name}:@var{lineno}: @var{message}
-@end example
-
-@noindent
-when there is an appropriate source file, or like this:
-
-@example
-@var{program}: @var{message}
-@end example
-
-@noindent
-when there is no relevant source file.
-
-If you want to mention the column number, use this format:
-
-@example
-@var{program}:@var{source-file-name}:@var{lineno}:@var{column}: @var{message}
-@end example
-
-In an interactive program (one that is reading commands from a
-terminal), it is better not to include the program name in an error
-message. The place to indicate which program is running is in the
-prompt or with the screen layout. (When the same program runs with
-input from a source other than a terminal, it is not interactive and
-would do best to print error messages using the noninteractive style.)
-
-The string @var{message} should not begin with a capital letter when
-it follows a program name and/or file name. Also, it should not end
-with a period.
-
-Error messages from interactive programs, and other messages such as
-usage messages, should start with a capital letter. But they should not
-end with a period.
-
-@node User Interfaces
-@section Standards for Interfaces Generally
-
-@cindex program name and its behavior
-@cindex behavior, dependent on program's name
-Please don't make the behavior of a utility depend on the name used
-to invoke it. It is useful sometimes to make a link to a utility
-with a different name, and that should not change what it does.
-
-Instead, use a run time option or a compilation switch or both
-to select among the alternate behaviors.
-
-@cindex output device and program's behavior
-Likewise, please don't make the behavior of the program depend on the
-type of output device it is used with. Device independence is an
-important principle of the system's design; do not compromise it merely
-to save someone from typing an option now and then. (Variation in error
-message syntax when using a terminal is ok, because that is a side issue
-that people do not depend on.)
-
-If you think one behavior is most useful when the output is to a
-terminal, and another is most useful when the output is a file or a
-pipe, then it is usually best to make the default behavior the one that
-is useful with output to a terminal, and have an option for the other
-behavior.
-
-Compatibility requires certain programs to depend on the type of output
-device. It would be disastrous if @code{ls} or @code{sh} did not do so
-in the way all users expect. In some of these cases, we supplement the
-program with a preferred alternate version that does not depend on the
-output device type. For example, we provide a @code{dir} program much
-like @code{ls} except that its default output format is always
-multi-column format.
-
-@node Graphical Interfaces
-@section Standards for Graphical Interfaces
-@cindex graphical user interface
-
-@cindex gtk
-When you write a program that provides a graphical user interface,
-please make it work with X Windows and the GTK toolkit unless the
-functionality specifically requires some alternative (for example,
-``displaying jpeg images while in console mode'').
-
-In addition, please provide a command-line interface to control the
-functionality. (In many cases, the graphical user interface can be a
-separate program which invokes the command-line program.) This is
-so that the same jobs can be done from scripts.
-
-@cindex corba
-@cindex gnome
-Please also consider providing a CORBA interface (for use from GNOME), a
-library interface (for use from C), and perhaps a keyboard-driven
-console interface (for use by users from console mode). Once you are
-doing the work to provide the functionality and the graphical interface,
-these won't be much extra work.
-
-@node Command-Line Interfaces
-@section Standards for Command Line Interfaces
-@cindex command-line interface
-
-@findex getopt
-It is a good idea to follow the @sc{posix} guidelines for the
-command-line options of a program. The easiest way to do this is to use
-@code{getopt} to parse them. Note that the GNU version of @code{getopt}
-will normally permit options anywhere among the arguments unless the
-special argument @samp{--} is used. This is not what @sc{posix}
-specifies; it is a GNU extension.
-
-@cindex long-named options
-Please define long-named options that are equivalent to the
-single-letter Unix-style options. We hope to make GNU more user
-friendly this way. This is easy to do with the GNU function
-@code{getopt_long}.
-
-One of the advantages of long-named options is that they can be
-consistent from program to program. For example, users should be able
-to expect the ``verbose'' option of any GNU program which has one, to be
-spelled precisely @samp{--verbose}. To achieve this uniformity, look at
-the table of common long-option names when you choose the option names
-for your program (@pxref{Option Table}).
-
-It is usually a good idea for file names given as ordinary arguments to
-be input files only; any output files would be specified using options
-(preferably @samp{-o} or @samp{--output}). Even if you allow an output
-file name as an ordinary argument for compatibility, try to provide an
-option as another way to specify it. This will lead to more consistency
-among GNU utilities, and fewer idiosyncracies for users to remember.
-
-@cindex standard command-line options
-All programs should support two standard options: @samp{--version}
-and @samp{--help}.
-
-@table @code
-@cindex @samp{--version} option
-@item --version
-This option should direct the program to print information about its name,
-version, origin and legal status, all on standard output, and then exit
-successfully. Other options and arguments should be ignored once this
-is seen, and the program should not perform its normal function.
-
-@cindex canonical name of a program
-@cindex program's canonical name
-The first line is meant to be easy for a program to parse; the version
-number proper starts after the last space. In addition, it contains
-the canonical name for this program, in this format:
-
-@example
-GNU Emacs 19.30
-@end example
-
-@noindent
-The program's name should be a constant string; @emph{don't} compute it
-from @code{argv[0]}. The idea is to state the standard or canonical
-name for the program, not its file name. There are other ways to find
-out the precise file name where a command is found in @code{PATH}.
-
-If the program is a subsidiary part of a larger package, mention the
-package name in parentheses, like this:
-
-@example
-emacsserver (GNU Emacs) 19.30
-@end example
-
-@noindent
-If the package has a version number which is different from this
-program's version number, you can mention the package version number
-just before the close-parenthesis.
-
-If you @strong{need} to mention the version numbers of libraries which
-are distributed separately from the package which contains this program,
-you can do so by printing an additional line of version info for each
-library you want to mention. Use the same format for these lines as for
-the first line.
-
-Please do not mention all of the libraries that the program uses ``just
-for completeness''---that would produce a lot of unhelpful clutter.
-Please mention library version numbers only if you find in practice that
-they are very important to you in debugging.
-
-The following line, after the version number line or lines, should be a
-copyright notice. If more than one copyright notice is called for, put
-each on a separate line.
-
-Next should follow a brief statement that the program is free software,
-and that users are free to copy and change it on certain conditions. If
-the program is covered by the GNU GPL, say so here. Also mention that
-there is no warranty, to the extent permitted by law.
-
-It is ok to finish the output with a list of the major authors of the
-program, as a way of giving credit.
-
-Here's an example of output that follows these rules:
-
-@smallexample
-GNU Emacs 19.34.5
-Copyright (C) 1996 Free Software Foundation, Inc.
-GNU Emacs comes with NO WARRANTY,
-to the extent permitted by law.
-You may redistribute copies of GNU Emacs
-under the terms of the GNU General Public License.
-For more information about these matters,
-see the files named COPYING.
-@end smallexample
-
-You should adapt this to your program, of course, filling in the proper
-year, copyright holder, name of program, and the references to
-distribution terms, and changing the rest of the wording as necessary.
-
-This copyright notice only needs to mention the most recent year in
-which changes were made---there's no need to list the years for previous
-versions' changes. You don't have to mention the name of the program in
-these notices, if that is inconvenient, since it appeared in the first
-line.
-
-Translations of the above lines must preserve the validity of the
-copyright notices (@pxref{Internationalization}). If the translation's
-character set supports it, the @samp{(C)} should be replaced with the
-copyright symbol, as follows:
-
-@ifinfo
-(the official copyright symbol, which is the letter C in a circle);
-@end ifinfo
-@ifnotinfo
-@copyright{}
-@end ifnotinfo
-
-Write the word ``Copyright'' exactly like that, in English. Do not
-translate it into another language. International treaties recognize
-the English word ``Copyright''; translations into other languages do not
-have legal significance.
-
-
-@cindex @samp{--help} option
-@item --help
-This option should output brief documentation for how to invoke the
-program, on standard output, then exit successfully. Other options and
-arguments should be ignored once this is seen, and the program should
-not perform its normal function.
-
-@cindex address for bug reports
-@cindex bug reports
-Near the end of the @samp{--help} option's output there should be a line
-that says where to mail bug reports. It should have this format:
-
-@example
-Report bugs to @var{mailing-address}.
-@end example
-@end table
-
-@node Option Table
-@section Table of Long Options
-@cindex long option names
-@cindex table of long options
-
-Here is a table of long options used by GNU programs. It is surely
-incomplete, but we aim to list all the options that a new program might
-want to be compatible with. If you use names not already in the table,
-please send @email{bug-standards@@gnu.org} a list of them, with their
-meanings, so we can update the table.
-
-@c Please leave newlines between items in this table; it's much easier
-@c to update when it isn't completely squashed together and unreadable.
-@c When there is more than one short option for a long option name, put
-@c a semicolon between the lists of the programs that use them, not a
-@c period. --friedman
-
-@table @samp
-@item after-date
-@samp{-N} in @code{tar}.
-
-@item all
-@samp{-a} in @code{du}, @code{ls}, @code{nm}, @code{stty}, @code{uname},
-and @code{unexpand}.
-
-@item all-text
-@samp{-a} in @code{diff}.
-
-@item almost-all
-@samp{-A} in @code{ls}.
-
-@item append
-@samp{-a} in @code{etags}, @code{tee}, @code{time};
-@samp{-r} in @code{tar}.
-
-@item archive
-@samp{-a} in @code{cp}.
-
-@item archive-name
-@samp{-n} in @code{shar}.
-
-@item arglength
-@samp{-l} in @code{m4}.
-
-@item ascii
-@samp{-a} in @code{diff}.
-
-@item assign
-@samp{-v} in @code{gawk}.
-
-@item assume-new
-@samp{-W} in Make.
-
-@item assume-old
-@samp{-o} in Make.
-
-@item auto-check
-@samp{-a} in @code{recode}.
-
-@item auto-pager
-@samp{-a} in @code{wdiff}.
-
-@item auto-reference
-@samp{-A} in @code{ptx}.
-
-@item avoid-wraps
-@samp{-n} in @code{wdiff}.
-
-@item background
-For server programs, run in the background.
-
-@item backward-search
-@samp{-B} in @code{ctags}.
-
-@item basename
-@samp{-f} in @code{shar}.
-
-@item batch
-Used in GDB.
-
-@item baud
-Used in GDB.
-
-@item before
-@samp{-b} in @code{tac}.
-
-@item binary
-@samp{-b} in @code{cpio} and @code{diff}.
-
-@item bits-per-code
-@samp{-b} in @code{shar}.
-
-@item block-size
-Used in @code{cpio} and @code{tar}.
-
-@item blocks
-@samp{-b} in @code{head} and @code{tail}.
-
-@item break-file
-@samp{-b} in @code{ptx}.
-
-@item brief
-Used in various programs to make output shorter.
-
-@item bytes
-@samp{-c} in @code{head}, @code{split}, and @code{tail}.
-
-@item c@t{++}
-@samp{-C} in @code{etags}.
-
-@item catenate
-@samp{-A} in @code{tar}.
-
-@item cd
-Used in various programs to specify the directory to use.
-
-@item changes
-@samp{-c} in @code{chgrp} and @code{chown}.
-
-@item classify
-@samp{-F} in @code{ls}.
-
-@item colons
-@samp{-c} in @code{recode}.
-
-@item command
-@samp{-c} in @code{su};
-@samp{-x} in GDB.
-
-@item compare
-@samp{-d} in @code{tar}.
-
-@item compat
-Used in @code{gawk}.
-
-@item compress
-@samp{-Z} in @code{tar} and @code{shar}.
-
-@item concatenate
-@samp{-A} in @code{tar}.
-
-@item confirmation
-@samp{-w} in @code{tar}.
-
-@item context
-Used in @code{diff}.
-
-@item copyleft
-@samp{-W copyleft} in @code{gawk}.
-
-@item copyright
-@samp{-C} in @code{ptx}, @code{recode}, and @code{wdiff};
-@samp{-W copyright} in @code{gawk}.
-
-@item core
-Used in GDB.
-
-@item count
-@samp{-q} in @code{who}.
-
-@item count-links
-@samp{-l} in @code{du}.
-
-@item create
-Used in @code{tar} and @code{cpio}.
-
-@item cut-mark
-@samp{-c} in @code{shar}.
-
-@item cxref
-@samp{-x} in @code{ctags}.
-
-@item date
-@samp{-d} in @code{touch}.
-
-@item debug
-@samp{-d} in Make and @code{m4};
-@samp{-t} in Bison.
-
-@item define
-@samp{-D} in @code{m4}.
-
-@item defines
-@samp{-d} in Bison and @code{ctags}.
-
-@item delete
-@samp{-D} in @code{tar}.
-
-@item dereference
-@samp{-L} in @code{chgrp}, @code{chown}, @code{cpio}, @code{du},
-@code{ls}, and @code{tar}.
-
-@item dereference-args
-@samp{-D} in @code{du}.
-
-@item device
-Specify an I/O device (special file name).
-
-@item diacritics
-@samp{-d} in @code{recode}.
-
-@item dictionary-order
-@samp{-d} in @code{look}.
-
-@item diff
-@samp{-d} in @code{tar}.
-
-@item digits
-@samp{-n} in @code{csplit}.
-
-@item directory
-Specify the directory to use, in various programs. In @code{ls}, it
-means to show directories themselves rather than their contents. In
-@code{rm} and @code{ln}, it means to not treat links to directories
-specially.
-
-@item discard-all
-@samp{-x} in @code{strip}.
-
-@item discard-locals
-@samp{-X} in @code{strip}.
-
-@item dry-run
-@samp{-n} in Make.
-
-@item ed
-@samp{-e} in @code{diff}.
-
-@item elide-empty-files
-@samp{-z} in @code{csplit}.
-
-@item end-delete
-@samp{-x} in @code{wdiff}.
-
-@item end-insert
-@samp{-z} in @code{wdiff}.
-
-@item entire-new-file
-@samp{-N} in @code{diff}.
-
-@item environment-overrides
-@samp{-e} in Make.
-
-@item eof
-@samp{-e} in @code{xargs}.
-
-@item epoch
-Used in GDB.
-
-@item error-limit
-Used in @code{makeinfo}.
-
-@item error-output
-@samp{-o} in @code{m4}.
-
-@item escape
-@samp{-b} in @code{ls}.
-
-@item exclude-from
-@samp{-X} in @code{tar}.
-
-@item exec
-Used in GDB.
-
-@item exit
-@samp{-x} in @code{xargs}.
-
-@item exit-0
-@samp{-e} in @code{unshar}.
-
-@item expand-tabs
-@samp{-t} in @code{diff}.
-
-@item expression
-@samp{-e} in @code{sed}.
-
-@item extern-only
-@samp{-g} in @code{nm}.
-
-@item extract
-@samp{-i} in @code{cpio};
-@samp{-x} in @code{tar}.
-
-@item faces
-@samp{-f} in @code{finger}.
-
-@item fast
-@samp{-f} in @code{su}.
-
-@item fatal-warnings
-@samp{-E} in @code{m4}.
-
-@item file
-@samp{-f} in @code{info}, @code{gawk}, Make, @code{mt}, and @code{tar};
-@samp{-n} in @code{sed};
-@samp{-r} in @code{touch}.
-
-@item field-separator
-@samp{-F} in @code{gawk}.
-
-@item file-prefix
-@samp{-b} in Bison.
-
-@item file-type
-@samp{-F} in @code{ls}.
-
-@item files-from
-@samp{-T} in @code{tar}.
-
-@item fill-column
-Used in @code{makeinfo}.
-
-@item flag-truncation
-@samp{-F} in @code{ptx}.
-
-@item fixed-output-files
-@samp{-y} in Bison.
-
-@item follow
-@samp{-f} in @code{tail}.
-
-@item footnote-style
-Used in @code{makeinfo}.
-
-@item force
-@samp{-f} in @code{cp}, @code{ln}, @code{mv}, and @code{rm}.
-
-@item force-prefix
-@samp{-F} in @code{shar}.
-
-@item foreground
-For server programs, run in the foreground;
-in other words, don't do anything special to run the server
-in the background.
-
-@item format
-Used in @code{ls}, @code{time}, and @code{ptx}.
-
-@item freeze-state
-@samp{-F} in @code{m4}.
-
-@item fullname
-Used in GDB.
-
-@item gap-size
-@samp{-g} in @code{ptx}.
-
-@item get
-@samp{-x} in @code{tar}.
-
-@item graphic
-@samp{-i} in @code{ul}.
-
-@item graphics
-@samp{-g} in @code{recode}.
-
-@item group
-@samp{-g} in @code{install}.
-
-@item gzip
-@samp{-z} in @code{tar} and @code{shar}.
-
-@item hashsize
-@samp{-H} in @code{m4}.
-
-@item header
-@samp{-h} in @code{objdump} and @code{recode}
-
-@item heading
-@samp{-H} in @code{who}.
-
-@item help
-Used to ask for brief usage information.
-
-@item here-delimiter
-@samp{-d} in @code{shar}.
-
-@item hide-control-chars
-@samp{-q} in @code{ls}.
-
-@item html
-In @code{makeinfo}, output HTML.
-
-@item idle
-@samp{-u} in @code{who}.
-
-@item ifdef
-@samp{-D} in @code{diff}.
-
-@item ignore
-@samp{-I} in @code{ls};
-@samp{-x} in @code{recode}.
-
-@item ignore-all-space
-@samp{-w} in @code{diff}.
-
-@item ignore-backups
-@samp{-B} in @code{ls}.
-
-@item ignore-blank-lines
-@samp{-B} in @code{diff}.
-
-@item ignore-case
-@samp{-f} in @code{look} and @code{ptx};
-@samp{-i} in @code{diff} and @code{wdiff}.
-
-@item ignore-errors
-@samp{-i} in Make.
-
-@item ignore-file
-@samp{-i} in @code{ptx}.
-
-@item ignore-indentation
-@samp{-I} in @code{etags}.
-
-@item ignore-init-file
-@samp{-f} in Oleo.
-
-@item ignore-interrupts
-@samp{-i} in @code{tee}.
-
-@item ignore-matching-lines
-@samp{-I} in @code{diff}.
-
-@item ignore-space-change
-@samp{-b} in @code{diff}.
-
-@item ignore-zeros
-@samp{-i} in @code{tar}.
-
-@item include
-@samp{-i} in @code{etags};
-@samp{-I} in @code{m4}.
-
-@item include-dir
-@samp{-I} in Make.
-
-@item incremental
-@samp{-G} in @code{tar}.
-
-@item info
-@samp{-i}, @samp{-l}, and @samp{-m} in Finger.
-
-@item init-file
-In some programs, specify the name of the file to read as the user's
-init file.
-
-@item initial
-@samp{-i} in @code{expand}.
-
-@item initial-tab
-@samp{-T} in @code{diff}.
-
-@item inode
-@samp{-i} in @code{ls}.
-
-@item interactive
-@samp{-i} in @code{cp}, @code{ln}, @code{mv}, @code{rm};
-@samp{-e} in @code{m4};
-@samp{-p} in @code{xargs};
-@samp{-w} in @code{tar}.
-
-@item intermix-type
-@samp{-p} in @code{shar}.
-
-@item iso-8601
-Used in @code{date}
-
-@item jobs
-@samp{-j} in Make.
-
-@item just-print
-@samp{-n} in Make.
-
-@item keep-going
-@samp{-k} in Make.
-
-@item keep-files
-@samp{-k} in @code{csplit}.
-
-@item kilobytes
-@samp{-k} in @code{du} and @code{ls}.
-
-@item language
-@samp{-l} in @code{etags}.
-
-@item less-mode
-@samp{-l} in @code{wdiff}.
-
-@item level-for-gzip
-@samp{-g} in @code{shar}.
-
-@item line-bytes
-@samp{-C} in @code{split}.
-
-@item lines
-Used in @code{split}, @code{head}, and @code{tail}.
-
-@item link
-@samp{-l} in @code{cpio}.
-
-@item lint
-@itemx lint-old
-Used in @code{gawk}.
-
-@item list
-@samp{-t} in @code{cpio};
-@samp{-l} in @code{recode}.
-
-@item list
-@samp{-t} in @code{tar}.
-
-@item literal
-@samp{-N} in @code{ls}.
-
-@item load-average
-@samp{-l} in Make.
-
-@item login
-Used in @code{su}.
-
-@item machine
-No listing of which programs already use this;
-someone should check to
-see if any actually do, and tell @email{gnu@@gnu.org}.
-
-@item macro-name
-@samp{-M} in @code{ptx}.
-
-@item mail
-@samp{-m} in @code{hello} and @code{uname}.
-
-@item make-directories
-@samp{-d} in @code{cpio}.
-
-@item makefile
-@samp{-f} in Make.
-
-@item mapped
-Used in GDB.
-
-@item max-args
-@samp{-n} in @code{xargs}.
-
-@item max-chars
-@samp{-n} in @code{xargs}.
-
-@item max-lines
-@samp{-l} in @code{xargs}.
-
-@item max-load
-@samp{-l} in Make.
-
-@item max-procs
-@samp{-P} in @code{xargs}.
-
-@item mesg
-@samp{-T} in @code{who}.
-
-@item message
-@samp{-T} in @code{who}.
-
-@item minimal
-@samp{-d} in @code{diff}.
-
-@item mixed-uuencode
-@samp{-M} in @code{shar}.
-
-@item mode
-@samp{-m} in @code{install}, @code{mkdir}, and @code{mkfifo}.
-
-@item modification-time
-@samp{-m} in @code{tar}.
-
-@item multi-volume
-@samp{-M} in @code{tar}.
-
-@item name-prefix
-@samp{-a} in Bison.
-
-@item nesting-limit
-@samp{-L} in @code{m4}.
-
-@item net-headers
-@samp{-a} in @code{shar}.
-
-@item new-file
-@samp{-W} in Make.
-
-@item no-builtin-rules
-@samp{-r} in Make.
-
-@item no-character-count
-@samp{-w} in @code{shar}.
-
-@item no-check-existing
-@samp{-x} in @code{shar}.
-
-@item no-common
-@samp{-3} in @code{wdiff}.
-
-@item no-create
-@samp{-c} in @code{touch}.
-
-@item no-defines
-@samp{-D} in @code{etags}.
-
-@item no-deleted
-@samp{-1} in @code{wdiff}.
-
-@item no-dereference
-@samp{-d} in @code{cp}.
-
-@item no-inserted
-@samp{-2} in @code{wdiff}.
-
-@item no-keep-going
-@samp{-S} in Make.
-
-@item no-lines
-@samp{-l} in Bison.
-
-@item no-piping
-@samp{-P} in @code{shar}.
-
-@item no-prof
-@samp{-e} in @code{gprof}.
-
-@item no-regex
-@samp{-R} in @code{etags}.
-
-@item no-sort
-@samp{-p} in @code{nm}.
-
-@item no-split
-Used in @code{makeinfo}.
-
-@item no-static
-@samp{-a} in @code{gprof}.
-
-@item no-time
-@samp{-E} in @code{gprof}.
-
-@item no-timestamp
-@samp{-m} in @code{shar}.
-
-@item no-validate
-Used in @code{makeinfo}.
-
-@item no-wait
-Used in @code{emacsclient}.
-
-@item no-warn
-Used in various programs to inhibit warnings.
-
-@item node
-@samp{-n} in @code{info}.
-
-@item nodename
-@samp{-n} in @code{uname}.
-
-@item nonmatching
-@samp{-f} in @code{cpio}.
-
-@item nstuff
-@samp{-n} in @code{objdump}.
-
-@item null
-@samp{-0} in @code{xargs}.
-
-@item number
-@samp{-n} in @code{cat}.
-
-@item number-nonblank
-@samp{-b} in @code{cat}.
-
-@item numeric-sort
-@samp{-n} in @code{nm}.
-
-@item numeric-uid-gid
-@samp{-n} in @code{cpio} and @code{ls}.
-
-@item nx
-Used in GDB.
-
-@item old-archive
-@samp{-o} in @code{tar}.
-
-@item old-file
-@samp{-o} in Make.
-
-@item one-file-system
-@samp{-l} in @code{tar}, @code{cp}, and @code{du}.
-
-@item only-file
-@samp{-o} in @code{ptx}.
-
-@item only-prof
-@samp{-f} in @code{gprof}.
-
-@item only-time
-@samp{-F} in @code{gprof}.
-
-@item options
-@samp{-o} in @code{getopt}, @code{fdlist}, @code{fdmount},
-@code{fdmountd}, and @code{fdumount}.
-
-@item output
-In various programs, specify the output file name.
-
-@item output-prefix
-@samp{-o} in @code{shar}.
-
-@item override
-@samp{-o} in @code{rm}.
-
-@item overwrite
-@samp{-c} in @code{unshar}.
-
-@item owner
-@samp{-o} in @code{install}.
-
-@item paginate
-@samp{-l} in @code{diff}.
-
-@item paragraph-indent
-Used in @code{makeinfo}.
-
-@item parents
-@samp{-p} in @code{mkdir} and @code{rmdir}.
-
-@item pass-all
-@samp{-p} in @code{ul}.
-
-@item pass-through
-@samp{-p} in @code{cpio}.
-
-@item port
-@samp{-P} in @code{finger}.
-
-@item portability
-@samp{-c} in @code{cpio} and @code{tar}.
-
-@item posix
-Used in @code{gawk}.
-
-@item prefix-builtins
-@samp{-P} in @code{m4}.
-
-@item prefix
-@samp{-f} in @code{csplit}.
-
-@item preserve
-Used in @code{tar} and @code{cp}.
-
-@item preserve-environment
-@samp{-p} in @code{su}.
-
-@item preserve-modification-time
-@samp{-m} in @code{cpio}.
-
-@item preserve-order
-@samp{-s} in @code{tar}.
-
-@item preserve-permissions
-@samp{-p} in @code{tar}.
-
-@item print
-@samp{-l} in @code{diff}.
-
-@item print-chars
-@samp{-L} in @code{cmp}.
-
-@item print-data-base
-@samp{-p} in Make.
-
-@item print-directory
-@samp{-w} in Make.
-
-@item print-file-name
-@samp{-o} in @code{nm}.
-
-@item print-symdefs
-@samp{-s} in @code{nm}.
-
-@item printer
-@samp{-p} in @code{wdiff}.
-
-@item prompt
-@samp{-p} in @code{ed}.
-
-@item proxy
-Specify an HTTP proxy.
-
-@item query-user
-@samp{-X} in @code{shar}.
-
-@item question
-@samp{-q} in Make.
-
-@item quiet
-Used in many programs to inhibit the usual output. @strong{Note:} every
-program accepting @samp{--quiet} should accept @samp{--silent} as a
-synonym.
-
-@item quiet-unshar
-@samp{-Q} in @code{shar}
-
-@item quote-name
-@samp{-Q} in @code{ls}.
-
-@item rcs
-@samp{-n} in @code{diff}.
-
-@item re-interval
-Used in @code{gawk}.
-
-@item read-full-blocks
-@samp{-B} in @code{tar}.
-
-@item readnow
-Used in GDB.
-
-@item recon
-@samp{-n} in Make.
-
-@item record-number
-@samp{-R} in @code{tar}.
-
-@item recursive
-Used in @code{chgrp}, @code{chown}, @code{cp}, @code{ls}, @code{diff},
-and @code{rm}.
-
-@item reference-limit
-Used in @code{makeinfo}.
-
-@item references
-@samp{-r} in @code{ptx}.
-
-@item regex
-@samp{-r} in @code{tac} and @code{etags}.
-
-@item release
-@samp{-r} in @code{uname}.
-
-@item reload-state
-@samp{-R} in @code{m4}.
-
-@item relocation
-@samp{-r} in @code{objdump}.
-
-@item rename
-@samp{-r} in @code{cpio}.
-
-@item replace
-@samp{-i} in @code{xargs}.
-
-@item report-identical-files
-@samp{-s} in @code{diff}.
-
-@item reset-access-time
-@samp{-a} in @code{cpio}.
-
-@item reverse
-@samp{-r} in @code{ls} and @code{nm}.
-
-@item reversed-ed
-@samp{-f} in @code{diff}.
-
-@item right-side-defs
-@samp{-R} in @code{ptx}.
-
-@item same-order
-@samp{-s} in @code{tar}.
-
-@item same-permissions
-@samp{-p} in @code{tar}.
-
-@item save
-@samp{-g} in @code{stty}.
-
-@item se
-Used in GDB.
-
-@item sentence-regexp
-@samp{-S} in @code{ptx}.
-
-@item separate-dirs
-@samp{-S} in @code{du}.
-
-@item separator
-@samp{-s} in @code{tac}.
-
-@item sequence
-Used by @code{recode} to chose files or pipes for sequencing passes.
-
-@item shell
-@samp{-s} in @code{su}.
-
-@item show-all
-@samp{-A} in @code{cat}.
-
-@item show-c-function
-@samp{-p} in @code{diff}.
-
-@item show-ends
-@samp{-E} in @code{cat}.
-
-@item show-function-line
-@samp{-F} in @code{diff}.
-
-@item show-tabs
-@samp{-T} in @code{cat}.
-
-@item silent
-Used in many programs to inhibit the usual output.
-@strong{Note:} every program accepting
-@samp{--silent} should accept @samp{--quiet} as a synonym.
-
-@item size
-@samp{-s} in @code{ls}.
-
-@item socket
-Specify a file descriptor for a network server to use for its socket,
-instead of opening and binding a new socket. This provides a way to
-run, in a nonpriveledged process, a server that normally needs a
-reserved port number.
-
-@item sort
-Used in @code{ls}.
-
-@item source
-@samp{-W source} in @code{gawk}.
-
-@item sparse
-@samp{-S} in @code{tar}.
-
-@item speed-large-files
-@samp{-H} in @code{diff}.
-
-@item split-at
-@samp{-E} in @code{unshar}.
-
-@item split-size-limit
-@samp{-L} in @code{shar}.
-
-@item squeeze-blank
-@samp{-s} in @code{cat}.
-
-@item start-delete
-@samp{-w} in @code{wdiff}.
-
-@item start-insert
-@samp{-y} in @code{wdiff}.
-
-@item starting-file
-Used in @code{tar} and @code{diff} to specify which file within
-a directory to start processing with.
-
-@item statistics
-@samp{-s} in @code{wdiff}.
-
-@item stdin-file-list
-@samp{-S} in @code{shar}.
-
-@item stop
-@samp{-S} in Make.
-
-@item strict
-@samp{-s} in @code{recode}.
-
-@item strip
-@samp{-s} in @code{install}.
-
-@item strip-all
-@samp{-s} in @code{strip}.
-
-@item strip-debug
-@samp{-S} in @code{strip}.
-
-@item submitter
-@samp{-s} in @code{shar}.
-
-@item suffix
-@samp{-S} in @code{cp}, @code{ln}, @code{mv}.
-
-@item suffix-format
-@samp{-b} in @code{csplit}.
-
-@item sum
-@samp{-s} in @code{gprof}.
-
-@item summarize
-@samp{-s} in @code{du}.
-
-@item symbolic
-@samp{-s} in @code{ln}.
-
-@item symbols
-Used in GDB and @code{objdump}.
-
-@item synclines
-@samp{-s} in @code{m4}.
-
-@item sysname
-@samp{-s} in @code{uname}.
-
-@item tabs
-@samp{-t} in @code{expand} and @code{unexpand}.
-
-@item tabsize
-@samp{-T} in @code{ls}.
-
-@item terminal
-@samp{-T} in @code{tput} and @code{ul}.
-@samp{-t} in @code{wdiff}.
-
-@item text
-@samp{-a} in @code{diff}.
-
-@item text-files
-@samp{-T} in @code{shar}.
-
-@item time
-Used in @code{ls} and @code{touch}.
-
-@item timeout
-Specify how long to wait before giving up on some operation.
-
-@item to-stdout
-@samp{-O} in @code{tar}.
-
-@item total
-@samp{-c} in @code{du}.
-
-@item touch
-@samp{-t} in Make, @code{ranlib}, and @code{recode}.
-
-@item trace
-@samp{-t} in @code{m4}.
-
-@item traditional
-@samp{-t} in @code{hello};
-@samp{-W traditional} in @code{gawk};
-@samp{-G} in @code{ed}, @code{m4}, and @code{ptx}.
-
-@item tty
-Used in GDB.
-
-@item typedefs
-@samp{-t} in @code{ctags}.
-
-@item typedefs-and-c++
-@samp{-T} in @code{ctags}.
-
-@item typeset-mode
-@samp{-t} in @code{ptx}.
-
-@item uncompress
-@samp{-z} in @code{tar}.
-
-@item unconditional
-@samp{-u} in @code{cpio}.
-
-@item undefine
-@samp{-U} in @code{m4}.
-
-@item undefined-only
-@samp{-u} in @code{nm}.
-
-@item update
-@samp{-u} in @code{cp}, @code{ctags}, @code{mv}, @code{tar}.
-
-@item usage
-Used in @code{gawk}; same as @samp{--help}.
-
-@item uuencode
-@samp{-B} in @code{shar}.
-
-@item vanilla-operation
-@samp{-V} in @code{shar}.
-
-@item verbose
-Print more information about progress. Many programs support this.
-
-@item verify
-@samp{-W} in @code{tar}.
-
-@item version
-Print the version number.
-
-@item version-control
-@samp{-V} in @code{cp}, @code{ln}, @code{mv}.
-
-@item vgrind
-@samp{-v} in @code{ctags}.
-
-@item volume
-@samp{-V} in @code{tar}.
-
-@item what-if
-@samp{-W} in Make.
-
-@item whole-size-limit
-@samp{-l} in @code{shar}.
-
-@item width
-@samp{-w} in @code{ls} and @code{ptx}.
-
-@item word-regexp
-@samp{-W} in @code{ptx}.
-
-@item writable
-@samp{-T} in @code{who}.
-
-@item zeros
-@samp{-z} in @code{gprof}.
-@end table
-
-@node Memory Usage
-@section Memory Usage
-@cindex memory usage
-
-If a program typically uses just a few meg of memory, don't bother making any
-effort to reduce memory usage. For example, if it is impractical for
-other reasons to operate on files more than a few meg long, it is
-reasonable to read entire input files into core to operate on them.
-
-However, for programs such as @code{cat} or @code{tail}, that can
-usefully operate on very large files, it is important to avoid using a
-technique that would artificially limit the size of files it can handle.
-If a program works by lines and could be applied to arbitrary
-user-supplied input files, it should keep only a line in memory, because
-this is not very hard and users will want to be able to operate on input
-files that are bigger than will fit in core all at once.
-
-If your program creates complicated data structures, just make them in
-core and give a fatal error if @code{malloc} returns zero.
-
-@node File Usage
-@section File Usage
-@cindex file usage
-
-Programs should be prepared to operate when @file{/usr} and @file{/etc}
-are read-only file systems. Thus, if the program manages log files,
-lock files, backup files, score files, or any other files which are
-modified for internal purposes, these files should not be stored in
-@file{/usr} or @file{/etc}.
-
-There are two exceptions. @file{/etc} is used to store system
-configuration information; it is reasonable for a program to modify
-files in @file{/etc} when its job is to update the system configuration.
-Also, if the user explicitly asks to modify one file in a directory, it
-is reasonable for the program to store other files in the same
-directory.
-
-@node Writing C
-@chapter Making The Best Use of C
-
-This @value{CHAPTER} provides advice on how best to use the C language
-when writing GNU software.
-
-@menu
-* Formatting:: Formatting Your Source Code
-* Comments:: Commenting Your Work
-* Syntactic Conventions:: Clean Use of C Constructs
-* Names:: Naming Variables, Functions, and Files
-* System Portability:: Portability between different operating systems
-* CPU Portability:: Supporting the range of CPU types
-* System Functions:: Portability and ``standard'' library functions
-* Internationalization:: Techniques for internationalization
-* Mmap:: How you can safely use @code{mmap}.
-@end menu
-
-@node Formatting
-@section Formatting Your Source Code
-@cindex formatting source code
-
-@cindex open brace
-@cindex braces, in C source
-It is important to put the open-brace that starts the body of a C
-function in column zero, and avoid putting any other open-brace or
-open-parenthesis or open-bracket in column zero. Several tools look
-for open-braces in column zero to find the beginnings of C functions.
-These tools will not work on code not formatted that way.
-
-It is also important for function definitions to start the name of the
-function in column zero. This helps people to search for function
-definitions, and may also help certain tools recognize them. Thus,
-the proper format is this:
-
-@example
-static char *
-concat (s1, s2) /* Name starts in column zero here */
- char *s1, *s2;
-@{ /* Open brace in column zero here */
- @dots{}
-@}
-@end example
-
-@noindent
-or, if you want to use Standard C syntax, format the definition like
-this:
-
-@example
-static char *
-concat (char *s1, char *s2)
-@{
- @dots{}
-@}
-@end example
-
-In Standard C, if the arguments don't fit nicely on one line,
-split it like this:
-
-@example
-int
-lots_of_args (int an_integer, long a_long, short a_short,
- double a_double, float a_float)
-@dots{}
-@end example
-
-The rest of this section gives our recommendations for other aspects of
-C formatting style, which is also the default style of the @code{indent}
-program in version 1.2 and newer. It corresponds to the options
-
-@smallexample
--nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
--ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
-@end smallexample
-
-We don't think of these recommendations as requirements, because it
-causes no problems for users if two different programs have different
-formatting styles.
-
-But whatever style you use, please use it consistently, since a mixture
-of styles within one program tends to look ugly. If you are
-contributing changes to an existing program, please follow the style of
-that program.
-
-For the body of the function, our recommended style looks like this:
-
-@example
-if (x < foo (y, z))
- haha = bar[4] + 5;
-else
- @{
- while (z)
- @{
- haha += foo (z, z);
- z--;
- @}
- return ++x + bar ();
- @}
-@end example
-
-@cindex spaces before open-paren
-We find it easier to read a program when it has spaces before the
-open-parentheses and after the commas. Especially after the commas.
-
-When you split an expression into multiple lines, split it
-before an operator, not after one. Here is the right way:
-
-@cindex expressions, splitting
-@example
-if (foo_this_is_long && bar > win (x, y, z)
- && remaining_condition)
-@end example
-
-Try to avoid having two operators of different precedence at the same
-level of indentation. For example, don't write this:
-
-@example
-mode = (inmode[j] == VOIDmode
- || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])
- ? outmode[j] : inmode[j]);
-@end example
-
-Instead, use extra parentheses so that the indentation shows the nesting:
-
-@example
-mode = ((inmode[j] == VOIDmode
- || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])))
- ? outmode[j] : inmode[j]);
-@end example
-
-Insert extra parentheses so that Emacs will indent the code properly.
-For example, the following indentation looks nice if you do it by hand,
-
-@example
-v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
- + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
-@end example
-
-@noindent
-but Emacs would alter it. Adding a set of parentheses produces
-something that looks equally nice, and which Emacs will preserve:
-
-@example
-v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
- + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000);
-@end example
-
-Format do-while statements like this:
-
-@example
-do
- @{
- a = foo (a);
- @}
-while (a > 0);
-@end example
-
-@cindex formfeed
-@cindex control-L
-Please use formfeed characters (control-L) to divide the program into
-pages at logical places (but not within a function). It does not matter
-just how long the pages are, since they do not have to fit on a printed
-page. The formfeeds should appear alone on lines by themselves.
-
-@node Comments
-@section Commenting Your Work
-@cindex commenting
-
-Every program should start with a comment saying briefly what it is for.
-Example: @samp{fmt - filter for simple filling of text}.
-
-Please write the comments in a GNU program in English, because English
-is the one language that nearly all programmers in all countries can
-read. If you do not write English well, please write comments in
-English as well as you can, then ask other people to help rewrite them.
-If you can't write comments in English, please find someone to work with
-you and translate your comments into English.
-
-Please put a comment on each function saying what the function does,
-what sorts of arguments it gets, and what the possible values of
-arguments mean and are used for. It is not necessary to duplicate in
-words the meaning of the C argument declarations, if a C type is being
-used in its customary fashion. If there is anything nonstandard about
-its use (such as an argument of type @code{char *} which is really the
-address of the second character of a string, not the first), or any
-possible values that would not work the way one would expect (such as,
-that strings containing newlines are not guaranteed to work), be sure
-to say so.
-
-Also explain the significance of the return value, if there is one.
-
-Please put two spaces after the end of a sentence in your comments, so
-that the Emacs sentence commands will work. Also, please write
-complete sentences and capitalize the first word. If a lower-case
-identifier comes at the beginning of a sentence, don't capitalize it!
-Changing the spelling makes it a different identifier. If you don't
-like starting a sentence with a lower case letter, write the sentence
-differently (e.g., ``The identifier lower-case is @dots{}'').
-
-The comment on a function is much clearer if you use the argument
-names to speak about the argument values. The variable name itself
-should be lower case, but write it in upper case when you are speaking
-about the value rather than the variable itself. Thus, ``the inode
-number NODE_NUM'' rather than ``an inode''.
-
-There is usually no purpose in restating the name of the function in
-the comment before it, because the reader can see that for himself.
-There might be an exception when the comment is so long that the function
-itself would be off the bottom of the screen.
-
-There should be a comment on each static variable as well, like this:
-
-@example
-/* Nonzero means truncate lines in the display;
- zero means continue them. */
-int truncate_lines;
-@end example
-
-@cindex conditionals, comments for
-@cindex @code{#endif}, commenting
-Every @samp{#endif} should have a comment, except in the case of short
-conditionals (just a few lines) that are not nested. The comment should
-state the condition of the conditional that is ending, @emph{including
-its sense}. @samp{#else} should have a comment describing the condition
-@emph{and sense} of the code that follows. For example:
-
-@example
-@group
-#ifdef foo
- @dots{}
-#else /* not foo */
- @dots{}
-#endif /* not foo */
-@end group
-@group
-#ifdef foo
- @dots{}
-#endif /* foo */
-@end group
-@end example
-
-@noindent
-but, by contrast, write the comments this way for a @samp{#ifndef}:
-
-@example
-@group
-#ifndef foo
- @dots{}
-#else /* foo */
- @dots{}
-#endif /* foo */
-@end group
-@group
-#ifndef foo
- @dots{}
-#endif /* not foo */
-@end group
-@end example
-
-@node Syntactic Conventions
-@section Clean Use of C Constructs
-@cindex syntactic conventions
-
-@cindex implicit @code{int}
-@cindex function argument, declaring
-Please explicitly declare the types of all objects. For example, you
-should explicitly declare all arguments to functions, and you should
-declare functions to return @code{int} rather than omitting the
-@code{int}.
-
-@cindex compiler warnings
-@cindex @samp{-Wall} compiler option
-Some programmers like to use the GCC @samp{-Wall} option, and change the
-code whenever it issues a warning. If you want to do this, then do.
-Other programmers prefer not to use @samp{-Wall}, because it gives
-warnings for valid and legitimate code which they do not want to change.
-If you want to do this, then do. The compiler should be your servant,
-not your master.
-
-Declarations of external functions and functions to appear later in the
-source file should all go in one place near the beginning of the file
-(somewhere before the first function definition in the file), or else
-should go in a header file. Don't put @code{extern} declarations inside
-functions.
-
-@cindex temporary variables
-It used to be common practice to use the same local variables (with
-names like @code{tem}) over and over for different values within one
-function. Instead of doing this, it is better declare a separate local
-variable for each distinct purpose, and give it a name which is
-meaningful. This not only makes programs easier to understand, it also
-facilitates optimization by good compilers. You can also move the
-declaration of each local variable into the smallest scope that includes
-all its uses. This makes the program even cleaner.
-
-Don't use local variables or parameters that shadow global identifiers.
-
-@cindex multiple variables in a line
-Don't declare multiple variables in one declaration that spans lines.
-Start a new declaration on each line, instead. For example, instead
-of this:
-
-@example
-@group
-int foo,
- bar;
-@end group
-@end example
-
-@noindent
-write either this:
-
-@example
-int foo, bar;
-@end example
-
-@noindent
-or this:
-
-@example
-int foo;
-int bar;
-@end example
-
-@noindent
-(If they are global variables, each should have a comment preceding it
-anyway.)
-
-When you have an @code{if}-@code{else} statement nested in another
-@code{if} statement, always put braces around the @code{if}-@code{else}.
-Thus, never write like this:
-
-@example
-if (foo)
- if (bar)
- win ();
- else
- lose ();
-@end example
-
-@noindent
-always like this:
-
-@example
-if (foo)
- @{
- if (bar)
- win ();
- else
- lose ();
- @}
-@end example
-
-If you have an @code{if} statement nested inside of an @code{else}
-statement, either write @code{else if} on one line, like this,
-
-@example
-if (foo)
- @dots{}
-else if (bar)
- @dots{}
-@end example
-
-@noindent
-with its @code{then}-part indented like the preceding @code{then}-part,
-or write the nested @code{if} within braces like this:
-
-@example
-if (foo)
- @dots{}
-else
- @{
- if (bar)
- @dots{}
- @}
-@end example
-
-Don't declare both a structure tag and variables or typedefs in the
-same declaration. Instead, declare the structure tag separately
-and then use it to declare the variables or typedefs.
-
-Try to avoid assignments inside @code{if}-conditions. For example,
-don't write this:
-
-@example
-if ((foo = (char *) malloc (sizeof *foo)) == 0)
- fatal ("virtual memory exhausted");
-@end example
-
-@noindent
-instead, write this:
-
-@example
-foo = (char *) malloc (sizeof *foo);
-if (foo == 0)
- fatal ("virtual memory exhausted");
-@end example
-
-@pindex lint
-Don't make the program ugly to placate @code{lint}. Please don't insert any
-casts to @code{void}. Zero without a cast is perfectly fine as a null
-pointer constant, except when calling a varargs function.
-
-@node Names
-@section Naming Variables, Functions, and Files
-
-@cindex names of variables, functions, and files
-The names of global variables and functions in a program serve as
-comments of a sort. So don't choose terse names---instead, look for
-names that give useful information about the meaning of the variable or
-function. In a GNU program, names should be English, like other
-comments.
-
-Local variable names can be shorter, because they are used only within
-one context, where (presumably) comments explain their purpose.
-
-Try to limit your use of abbreviations in symbol names. It is ok to
-make a few abbreviations, explain what they mean, and then use them
-frequently, but don't use lots of obscure abbreviations.
-
-Please use underscores to separate words in a name, so that the Emacs
-word commands can be useful within them. Stick to lower case; reserve
-upper case for macros and @code{enum} constants, and for name-prefixes
-that follow a uniform convention.
-
-For example, you should use names like @code{ignore_space_change_flag};
-don't use names like @code{iCantReadThis}.
-
-Variables that indicate whether command-line options have been
-specified should be named after the meaning of the option, not after
-the option-letter. A comment should state both the exact meaning of
-the option and its letter. For example,
-
-@example
-@group
-/* Ignore changes in horizontal whitespace (-b). */
-int ignore_space_change_flag;
-@end group
-@end example
-
-When you want to define names with constant integer values, use
-@code{enum} rather than @samp{#define}. GDB knows about enumeration
-constants.
-
-@cindex file-name limitations
-@pindex doschk
-You might want to make sure that none of the file names would conflict
-the files were loaded onto an MS-DOS file system which shortens the
-names. You can use the program @code{doschk} to test for this.
-
-Some GNU programs were designed to limit themselves to file names of 14
-characters or less, to avoid file name conflicts if they are read into
-older System V systems. Please preserve this feature in the existing
-GNU programs that have it, but there is no need to do this in new GNU
-programs. @code{doschk} also reports file names longer than 14
-characters.
-
-@node System Portability
-@section Portability between System Types
-@cindex portability, between system types
-
-In the Unix world, ``portability'' refers to porting to different Unix
-versions. For a GNU program, this kind of portability is desirable, but
-not paramount.
-
-The primary purpose of GNU software is to run on top of the GNU kernel,
-compiled with the GNU C compiler, on various types of @sc{cpu}. So the
-kinds of portability that are absolutely necessary are quite limited.
-But it is important to support Linux-based GNU systems, since they
-are the form of GNU that is popular.
-
-Beyond that, it is good to support the other free operating systems
-(*BSD), and it is nice to support other Unix-like systems if you want
-to. Supporting a variety of Unix-like systems is desirable, although
-not paramount. It is usually not too hard, so you may as well do it.
-But you don't have to consider it an obligation, if it does turn out to
-be hard.
-
-@pindex autoconf
-The easiest way to achieve portability to most Unix-like systems is to
-use Autoconf. It's unlikely that your program needs to know more
-information about the host platform than Autoconf can provide, simply
-because most of the programs that need such knowledge have already been
-written.
-
-Avoid using the format of semi-internal data bases (e.g., directories)
-when there is a higher-level alternative (@code{readdir}).
-
-@cindex non-@sc{posix} systems, and portability
-As for systems that are not like Unix, such as MSDOS, Windows, the
-Macintosh, VMS, and MVS, supporting them is often a lot of work. When
-that is the case, it is better to spend your time adding features that
-will be useful on GNU and GNU/Linux, rather than on supporting other
-incompatible systems.
-
-It is a good idea to define the ``feature test macro''
-@code{_GNU_SOURCE} when compiling your C files. When you compile on GNU
-or GNU/Linux, this will enable the declarations of GNU library extension
-functions, and that will usually give you a compiler error message if
-you define the same function names in some other way in your program.
-(You don't have to actually @emph{use} these functions, if you prefer
-to make the program more portable to other systems.)
-
-But whether or not you use these GNU extensions, you should avoid
-using their names for any other meanings. Doing so would make it hard
-to move your code into other GNU programs.
-
-@node CPU Portability
-@section Portability between @sc{cpu}s
-
-@cindex data types, and portability
-@cindex portability, and data types
-Even GNU systems will differ because of differences among @sc{cpu}
-types---for example, difference in byte ordering and alignment
-requirements. It is absolutely essential to handle these differences.
-However, don't make any effort to cater to the possibility that an
-@code{int} will be less than 32 bits. We don't support 16-bit machines
-in GNU.
-
-Similarly, don't make any effort to cater to the possibility that
-@code{long} will be smaller than predefined types like @code{size_t}.
-For example, the following code is ok:
-
-@example
-printf ("size = %lu\n", (unsigned long) sizeof array);
-printf ("diff = %ld\n", (long) (pointer2 - pointer1));
-@end example
-
-1989 Standard C requires this to work, and we know of only one
-counterexample: 64-bit programs on Microsoft Windows IA-64. We will
-leave it to those who want to port GNU programs to that environment
-to figure out how to do it.
-
-Predefined file-size types like @code{off_t} are an exception: they are
-longer than @code{long} on many platforms, so code like the above won't
-work with them. One way to print an @code{off_t} value portably is to
-print its digits yourself, one by one.
-
-Don't assume that the address of an @code{int} object is also the
-address of its least-significant byte. This is false on big-endian
-machines. Thus, don't make the following mistake:
-
-@example
-int c;
-@dots{}
-while ((c = getchar()) != EOF)
- write(file_descriptor, &c, 1);
-@end example
-
-When calling functions, you need not worry about the difference between
-pointers of various types, or between pointers and integers. On most
-machines, there's no difference anyway. As for the few machines where
-there is a difference, all of them support Standard C prototypes, so you can
-use prototypes (perhaps conditionalized to be active only in Standard C)
-to make the code work on those systems.
-
-In certain cases, it is ok to pass integer and pointer arguments
-indiscriminately to the same function, and use no prototype on any
-system. For example, many GNU programs have error-reporting functions
-that pass their arguments along to @code{printf} and friends:
-
-@example
-error (s, a1, a2, a3)
- char *s;
- char *a1, *a2, *a3;
-@{
- fprintf (stderr, "error: ");
- fprintf (stderr, s, a1, a2, a3);
-@}
-@end example
-
-@noindent
-In practice, this works on all machines, since a pointer is generally
-the widest possible kind of argument; it is much simpler than any
-``correct'' alternative. Be sure @emph{not} to use a prototype for such
-functions.
-
-If you have decided to use Standard C, then you can instead define
-@code{error} using @file{stdarg.h}, and pass the arguments along to
-@code{vfprintf}.
-
-@cindex casting pointers to integers
-Avoid casting pointers to integers if you can. Such casts greatly
-reduce portability, and in most programs they are easy to avoid. In the
-cases where casting pointers to integers is essential---such as, a Lisp
-interpreter which stores type information as well as an address in one
-word---you'll have to make explicit provisions to handle different word
-sizes. You will also need to make provision for systems in which the
-normal range of addresses you can get from @code{malloc} starts far away
-from zero.
-
-@node System Functions
-@section Calling System Functions
-@cindex library functions, and portability
-@cindex portability, and library functions
-
-C implementations differ substantially. Standard C reduces but does
-not eliminate the incompatibilities; meanwhile, many GNU packages still
-support pre-standard compilers because this is not hard to do. This
-chapter gives recommendations for how to use the more-or-less standard C
-library functions to avoid unnecessary loss of portability.
-
-@itemize @bullet
-@item
-Don't use the return value of @code{sprintf}. It returns the number of
-characters written on some systems, but not on all systems.
-
-@item
-Be aware that @code{vfprintf} is not always available.
-
-@item
-@code{main} should be declared to return type @code{int}. It should
-terminate either by calling @code{exit} or by returning the integer
-status code; make sure it cannot ever return an undefined value.
-
-@cindex declaration for system functions
-@item
-Don't declare system functions explicitly.
-
-Almost any declaration for a system function is wrong on some system.
-To minimize conflicts, leave it to the system header files to declare
-system functions. If the headers don't declare a function, let it
-remain undeclared.
-
-While it may seem unclean to use a function without declaring it, in
-practice this works fine for most system library functions on the
-systems where this really happens; thus, the disadvantage is only
-theoretical. By contrast, actual declarations have frequently caused
-actual conflicts.
-
-@item
-If you must declare a system function, don't specify the argument types.
-Use an old-style declaration, not a Standard C prototype. The more you
-specify about the function, the more likely a conflict.
-
-@item
-In particular, don't unconditionally declare @code{malloc} or
-@code{realloc}.
-
-Most GNU programs use those functions just once, in functions
-conventionally named @code{xmalloc} and @code{xrealloc}. These
-functions call @code{malloc} and @code{realloc}, respectively, and
-check the results.
-
-Because @code{xmalloc} and @code{xrealloc} are defined in your program,
-you can declare them in other files without any risk of type conflict.
-
-On most systems, @code{int} is the same length as a pointer; thus, the
-calls to @code{malloc} and @code{realloc} work fine. For the few
-exceptional systems (mostly 64-bit machines), you can use
-@strong{conditionalized} declarations of @code{malloc} and
-@code{realloc}---or put these declarations in configuration files
-specific to those systems.
-
-@cindex string library functions
-@item
-The string functions require special treatment. Some Unix systems have
-a header file @file{string.h}; others have @file{strings.h}. Neither
-file name is portable. There are two things you can do: use Autoconf to
-figure out which file to include, or don't include either file.
-
-@item
-If you don't include either strings file, you can't get declarations for
-the string functions from the header file in the usual way.
-
-That causes less of a problem than you might think. The newer standard
-string functions should be avoided anyway because many systems still
-don't support them. The string functions you can use are these:
-
-@example
-strcpy strncpy strcat strncat
-strlen strcmp strncmp
-strchr strrchr
-@end example
-
-The copy and concatenate functions work fine without a declaration as
-long as you don't use their values. Using their values without a
-declaration fails on systems where the width of a pointer differs from
-the width of @code{int}, and perhaps in other cases. It is trivial to
-avoid using their values, so do that.
-
-The compare functions and @code{strlen} work fine without a declaration
-on most systems, possibly all the ones that GNU software runs on.
-You may find it necessary to declare them @strong{conditionally} on a
-few systems.
-
-The search functions must be declared to return @code{char *}. Luckily,
-there is no variation in the data type they return. But there is
-variation in their names. Some systems give these functions the names
-@code{index} and @code{rindex}; other systems use the names
-@code{strchr} and @code{strrchr}. Some systems support both pairs of
-names, but neither pair works on all systems.
-
-You should pick a single pair of names and use it throughout your
-program. (Nowadays, it is better to choose @code{strchr} and
-@code{strrchr} for new programs, since those are the standard
-names.) Declare both of those names as functions returning @code{char
-*}. On systems which don't support those names, define them as macros
-in terms of the other pair. For example, here is what to put at the
-beginning of your file (or in a header) if you want to use the names
-@code{strchr} and @code{strrchr} throughout:
-
-@example
-#ifndef HAVE_STRCHR
-#define strchr index
-#endif
-#ifndef HAVE_STRRCHR
-#define strrchr rindex
-#endif
-
-char *strchr ();
-char *strrchr ();
-@end example
-@end itemize
-
-Here we assume that @code{HAVE_STRCHR} and @code{HAVE_STRRCHR} are
-macros defined in systems where the corresponding functions exist.
-One way to get them properly defined is to use Autoconf.
-
-@node Internationalization
-@section Internationalization
-@cindex internationalization
-
-@pindex gettext
-GNU has a library called GNU gettext that makes it easy to translate the
-messages in a program into various languages. You should use this
-library in every program. Use English for the messages as they appear
-in the program, and let gettext provide the way to translate them into
-other languages.
-
-Using GNU gettext involves putting a call to the @code{gettext} macro
-around each string that might need translation---like this:
-
-@example
-printf (gettext ("Processing file `%s'..."));
-@end example
-
-@noindent
-This permits GNU gettext to replace the string @code{"Processing file
-`%s'..."} with a translated version.
-
-Once a program uses gettext, please make a point of writing calls to
-@code{gettext} when you add new strings that call for translation.
-
-Using GNU gettext in a package involves specifying a @dfn{text domain
-name} for the package. The text domain name is used to separate the
-translations for this package from the translations for other packages.
-Normally, the text domain name should be the same as the name of the
-package---for example, @samp{fileutils} for the GNU file utilities.
-
-@cindex message text, and internationalization
-To enable gettext to work well, avoid writing code that makes
-assumptions about the structure of words or sentences. When you want
-the precise text of a sentence to vary depending on the data, use two or
-more alternative string constants each containing a complete sentences,
-rather than inserting conditionalized words or phrases into a single
-sentence framework.
-
-Here is an example of what not to do:
-
-@example
-printf ("%d file%s processed", nfiles,
- nfiles != 1 ? "s" : "");
-@end example
-
-@noindent
-The problem with that example is that it assumes that plurals are made
-by adding `s'. If you apply gettext to the format string, like this,
-
-@example
-printf (gettext ("%d file%s processed"), nfiles,
- nfiles != 1 ? "s" : "");
-@end example
-
-@noindent
-the message can use different words, but it will still be forced to use
-`s' for the plural. Here is a better way:
-
-@example
-printf ((nfiles != 1 ? "%d files processed"
- : "%d file processed"),
- nfiles);
-@end example
-
-@noindent
-This way, you can apply gettext to each of the two strings
-independently:
-
-@example
-printf ((nfiles != 1 ? gettext ("%d files processed")
- : gettext ("%d file processed")),
- nfiles);
-@end example
-
-@noindent
-This can be any method of forming the plural of the word for ``file'', and
-also handles languages that require agreement in the word for
-``processed''.
-
-A similar problem appears at the level of sentence structure with this
-code:
-
-@example
-printf ("# Implicit rule search has%s been done.\n",
- f->tried_implicit ? "" : " not");
-@end example
-
-@noindent
-Adding @code{gettext} calls to this code cannot give correct results for
-all languages, because negation in some languages requires adding words
-at more than one place in the sentence. By contrast, adding
-@code{gettext} calls does the job straightfowardly if the code starts
-out like this:
-
-@example
-printf (f->tried_implicit
- ? "# Implicit rule search has been done.\n",
- : "# Implicit rule search has not been done.\n");
-@end example
-
-@node Mmap
-@section Mmap
-@findex mmap
-
-Don't assume that @code{mmap} either works on all files or fails
-for all files. It may work on some files and fail on others.
-
-The proper way to use @code{mmap} is to try it on the specific file for
-which you want to use it---and if @code{mmap} doesn't work, fall back on
-doing the job in another way using @code{read} and @code{write}.
-
-The reason this precaution is needed is that the GNU kernel (the HURD)
-provides a user-extensible file system, in which there can be many
-different kinds of ``ordinary files.'' Many of them support
-@code{mmap}, but some do not. It is important to make programs handle
-all these kinds of files.
-
-@node Documentation
-@chapter Documenting Programs
-@cindex documentation
-
-A GNU program should ideally come with full free documentation, adequate
-for both reference and tutorial purposes. If the package can be
-programmed or extended, the documentation should cover programming or
-extending it, as well as just using it.
-
-@menu
-* GNU Manuals:: Writing proper manuals.
-* Doc Strings and Manuals:: Compiling doc strings doesn't make a manual.
-* Manual Structure Details:: Specific structure conventions.
-* License for Manuals:: Writing the distribution terms for a manual.
-* Manual Credits:: Giving credit to documentation contributors.
-* Printed Manuals:: Mentioning the printed manual.
-* NEWS File:: NEWS files supplement manuals.
-* Change Logs:: Recording Changes
-* Man Pages:: Man pages are secondary.
-* Reading other Manuals:: How far you can go in learning
- from other manuals.
-@end menu
-
-@node GNU Manuals
-@section GNU Manuals
-
-The preferred document format for the GNU system is the Texinfo
-formatting language. Every GNU package should (ideally) have
-documentation in Texinfo both for reference and for learners. Texinfo
-makes it possible to produce a good quality formatted book, using
-@TeX{}, and to generate an Info file. It is also possible to generate
-HTML output from Texinfo source. See the Texinfo manual, either the
-hardcopy, or the on-line version available through @code{info} or the
-Emacs Info subsystem (@kbd{C-h i}).
-
-Nowadays some other formats such as Docbook and Sgmltexi can be
-converted automatically into Texinfo. It is ok to produce the Texinfo
-documentation by conversion this way, as long as it gives good results.
-
-Programmers often find it most natural to structure the documentation
-following the structure of the implementation, which they know. But
-this structure is not necessarily good for explaining how to use the
-program; it may be irrelevant and confusing for a user.
-
-At every level, from the sentences in a paragraph to the grouping of
-topics into separate manuals, the right way to structure documentation
-is according to the concepts and questions that a user will have in mind
-when reading it. Sometimes this structure of ideas matches the
-structure of the implementation of the software being documented---but
-often they are different. Often the most important part of learning to
-write good documentation is learning to notice when you are structuring
-the documentation like the implementation, and think about better
-alternatives.
-
-For example, each program in the GNU system probably ought to be
-documented in one manual; but this does not mean each program should
-have its own manual. That would be following the structure of the
-implementation, rather than the structure that helps the user
-understand.
-
-Instead, each manual should cover a coherent @emph{topic}. For example,
-instead of a manual for @code{diff} and a manual for @code{diff3}, we
-have one manual for ``comparison of files'' which covers both of those
-programs, as well as @code{cmp}. By documenting these programs
-together, we can make the whole subject clearer.
-
-The manual which discusses a program should certainly document all of
-the program's command-line options and all of its commands. It should
-give examples of their use. But don't organize the manual as a list of
-features. Instead, organize it logically, by subtopics. Address the
-questions that a user will ask when thinking about the job that the
-program does.
-
-In general, a GNU manual should serve both as tutorial and reference.
-It should be set up for convenient access to each topic through Info,
-and for reading straight through (appendixes aside). A GNU manual
-should give a good introduction to a beginner reading through from the
-start, and should also provide all the details that hackers want.
-The Bison manual is a good example of this---please take a look at it
-to see what we mean.
-
-That is not as hard as it first sounds. Arrange each chapter as a
-logical breakdown of its topic, but order the sections, and write their
-text, so that reading the chapter straight through makes sense. Do
-likewise when structuring the book into chapters, and when structuring a
-section into paragraphs. The watchword is, @emph{at each point, address
-the most fundamental and important issue raised by the preceding text.}
-
-If necessary, add extra chapters at the beginning of the manual which
-are purely tutorial and cover the basics of the subject. These provide
-the framework for a beginner to understand the rest of the manual. The
-Bison manual provides a good example of how to do this.
-
-To serve as a reference, a manual should have an Index that list all the
-functions, variables, options, and important concepts that are part of
-the program. One combined Index should do for a short manual, but
-sometimes for a complex package it is better to use multiple indices.
-The Texinfo manual includes advice on preparing good index entries, see
-@ref{Index Entries, , Making Index Entries, texinfo, The GNU Texinfo
-Manual}, and see @ref{Indexing Commands, , Defining the Entries of an
-Index, texinfo, The GNU Texinfo manual}.
-
-Don't use Unix man pages as a model for how to write GNU documentation;
-most of them are terse, badly structured, and give inadequate
-explanation of the underlying concepts. (There are, of course, some
-exceptions.) Also, Unix man pages use a particular format which is
-different from what we use in GNU manuals.
-
-Please include an email address in the manual for where to report
-bugs @emph{in the manual}.
-
-Please do not use the term ``pathname'' that is used in Unix
-documentation; use ``file name'' (two words) instead. We use the term
-``path'' only for search paths, which are lists of directory names.
-
-Please do not use the term ``illegal'' to refer to erroneous input to a
-computer program. Please use ``invalid'' for this, and reserve the term
-``illegal'' for activities punishable by law.
-
-@node Doc Strings and Manuals
-@section Doc Strings and Manuals
-
-Some programming systems, such as Emacs, provide a documentation string
-for each function, command or variable. You may be tempted to write a
-reference manual by compiling the documentation strings and writing a
-little additional text to go around them---but you must not do it. That
-approach is a fundamental mistake. The text of well-written
-documentation strings will be entirely wrong for a manual.
-
-A documentation string needs to stand alone---when it appears on the
-screen, there will be no other text to introduce or explain it.
-Meanwhile, it can be rather informal in style.
-
-The text describing a function or variable in a manual must not stand
-alone; it appears in the context of a section or subsection. Other text
-at the beginning of the section should explain some of the concepts, and
-should often make some general points that apply to several functions or
-variables. The previous descriptions of functions and variables in the
-section will also have given information about the topic. A description
-written to stand alone would repeat some of that information; this
-redundance looks bad. Meanwhile, the informality that is acceptable in
-a documentation string is totally unacceptable in a manual.
-
-The only good way to use documentation strings in writing a good manual
-is to use them as a source of information for writing good text.
-
-@node Manual Structure Details
-@section Manual Structure Details
-@cindex manual structure
-
-The title page of the manual should state the version of the programs or
-packages documented in the manual. The Top node of the manual should
-also contain this information. If the manual is changing more
-frequently than or independent of the program, also state a version
-number for the manual in both of these places.
-
-Each program documented in the manual should have a node named
-@samp{@var{program} Invocation} or @samp{Invoking @var{program}}. This
-node (together with its subnodes, if any) should describe the program's
-command line arguments and how to run it (the sort of information people
-would look in a man page for). Start with an @samp{@@example}
-containing a template for all the options and arguments that the program
-uses.
-
-Alternatively, put a menu item in some menu whose item name fits one of
-the above patterns. This identifies the node which that item points to
-as the node for this purpose, regardless of the node's actual name.
-
-The @samp{--usage} feature of the Info reader looks for such a node
-or menu item in order to find the relevant text, so it is essential
-for every Texinfo file to have one.
-
-If one manual describes several programs, it should have such a node for
-each program described in the manual.
-
-@node License for Manuals
-@section License for Manuals
-@cindex license for manuals
-
-Please use the GNU Free Documentation License for all GNU manuals that
-are more than a few pages long. Likewise for a collection of short
-documents---you only need one copy of the GNU FDL for the whole
-collection. For a single short document, you can use a very permissive
-non-copyleft license, to avoid taking up space with a long license.
-
-See @uref{http://www.gnu.org/copyleft/fdl-howto.html} for more explanation
-of how to employ the GFDL.
-
-Note that it is not obligatory to include a copy of the GNU GPL or GNU
-LGPL in a manual whose license is neither the GPL nor the LGPL. It can
-be a good idea to include the program's license in a large manual; in a
-short manual, whose size would be increased considerably by including
-the program's license, it is probably better not to include it.
-
-@node Manual Credits
-@section Manual Credits
-@cindex credits for manuals
-
-Please credit the principal human writers of the manual as the authors,
-on the title page of the manual. If a company sponsored the work, thank
-the company in a suitable place in the manual, but do not cite the
-company as an author.
-
-@node Printed Manuals
-@section Printed Manuals
-
-The FSF publishes some GNU manuals in printed form. To encourage sales
-of these manuals, the on-line versions of the manual should mention at
-the very start that the printed manual is available and should point at
-information for getting it---for instance, with a link to the page
-@url{http://www.gnu.org/order/order.html}. This should not be included
-in the printed manual, though, because there it is redundant.
-
-It is also useful to explain in the on-line forms of the manual how the
-user can print out the manual from the sources.
-
-@node NEWS File
-@section The NEWS File
-@cindex @file{NEWS} file
-
-In addition to its manual, the package should have a file named
-@file{NEWS} which contains a list of user-visible changes worth
-mentioning. In each new release, add items to the front of the file and
-identify the version they pertain to. Don't discard old items; leave
-them in the file after the newer items. This way, a user upgrading from
-any previous version can see what is new.
-
-If the @file{NEWS} file gets very long, move some of the older items
-into a file named @file{ONEWS} and put a note at the end referring the
-user to that file.
-
-@node Change Logs
-@section Change Logs
-@cindex change logs
-
-Keep a change log to describe all the changes made to program source
-files. The purpose of this is so that people investigating bugs in the
-future will know about the changes that might have introduced the bug.
-Often a new bug can be found by looking at what was recently changed.
-More importantly, change logs can help you eliminate conceptual
-inconsistencies between different parts of a program, by giving you a
-history of how the conflicting concepts arose and who they came from.
-
-@menu
-* Change Log Concepts::
-* Style of Change Logs::
-* Simple Changes::
-* Conditional Changes::
-* Indicating the Part Changed::
-@end menu
-
-@node Change Log Concepts
-@subsection Change Log Concepts
-
-You can think of the change log as a conceptual ``undo list'' which
-explains how earlier versions were different from the current version.
-People can see the current version; they don't need the change log
-to tell them what is in it. What they want from a change log is a
-clear explanation of how the earlier version differed.
-
-The change log file is normally called @file{ChangeLog} and covers an
-entire directory. Each directory can have its own change log, or a
-directory can use the change log of its parent directory--it's up to
-you.
-
-Another alternative is to record change log information with a version
-control system such as RCS or CVS. This can be converted automatically
-to a @file{ChangeLog} file using @code{rcs2log}; in Emacs, the command
-@kbd{C-x v a} (@code{vc-update-change-log}) does the job.
-
-There's no need to describe the full purpose of the changes or how they
-work together. If you think that a change calls for explanation, you're
-probably right. Please do explain it---but please put the explanation
-in comments in the code, where people will see it whenever they see the
-code. For example, ``New function'' is enough for the change log when
-you add a function, because there should be a comment before the
-function definition to explain what it does.
-
-However, sometimes it is useful to write one line to describe the
-overall purpose of a batch of changes.
-
-The easiest way to add an entry to @file{ChangeLog} is with the Emacs
-command @kbd{M-x add-change-log-entry}. An entry should have an
-asterisk, the name of the changed file, and then in parentheses the name
-of the changed functions, variables or whatever, followed by a colon.
-Then describe the changes you made to that function or variable.
-
-@node Style of Change Logs
-@subsection Style of Change Logs
-@cindex change logs, style
-
-Here are some simple examples of change log entries, starting with the
-header line that says who made the change and when, followed by
-descriptions of specific changes. (These examples are drawn from Emacs
-and GCC.)
-
-@example
-1998-08-17 Richard Stallman <rms@@gnu.org>
-
-* register.el (insert-register): Return nil.
-(jump-to-register): Likewise.
-
-* sort.el (sort-subr): Return nil.
-
-* tex-mode.el (tex-bibtex-file, tex-file, tex-region):
-Restart the tex shell if process is gone or stopped.
-(tex-shell-running): New function.
-
-* expr.c (store_one_arg): Round size up for move_block_to_reg.
-(expand_call): Round up when emitting USE insns.
-* stmt.c (assign_parms): Round size up for move_block_from_reg.
-@end example
-
-It's important to name the changed function or variable in full. Don't
-abbreviate function or variable names, and don't combine them.
-Subsequent maintainers will often search for a function name to find all
-the change log entries that pertain to it; if you abbreviate the name,
-they won't find it when they search.
-
-For example, some people are tempted to abbreviate groups of function
-names by writing @samp{* register.el (@{insert,jump-to@}-register)};
-this is not a good idea, since searching for @code{jump-to-register} or
-@code{insert-register} would not find that entry.
-
-Separate unrelated change log entries with blank lines. When two
-entries represent parts of the same change, so that they work together,
-then don't put blank lines between them. Then you can omit the file
-name and the asterisk when successive entries are in the same file.
-
-Break long lists of function names by closing continued lines with
-@samp{)}, rather than @samp{,}, and opening the continuation with
-@samp{(} as in this example:
-
-@example
-* keyboard.c (menu_bar_items, tool_bar_items)
-(Fexecute_extended_command): Deal with `keymap' property.
-@end example
-
-@node Simple Changes
-@subsection Simple Changes
-
-Certain simple kinds of changes don't need much detail in the change
-log.
-
-When you change the calling sequence of a function in a simple fashion,
-and you change all the callers of the function to use the new calling
-sequence, there is no need to make individual entries for all the
-callers that you changed. Just write in the entry for the function
-being called, ``All callers changed''---like this:
-
-@example
-* keyboard.c (Fcommand_execute): New arg SPECIAL.
-All callers changed.
-@end example
-
-When you change just comments or doc strings, it is enough to write an
-entry for the file, without mentioning the functions. Just ``Doc
-fixes'' is enough for the change log.
-
-There's no need to make change log entries for documentation files.
-This is because documentation is not susceptible to bugs that are hard
-to fix. Documentation does not consist of parts that must interact in a
-precisely engineered fashion. To correct an error, you need not know
-the history of the erroneous passage; it is enough to compare what the
-documentation says with the way the program actually works.
-
-@node Conditional Changes
-@subsection Conditional Changes
-@cindex conditional changes, and change logs
-@cindex change logs, conditional changes
-
-C programs often contain compile-time @code{#if} conditionals. Many
-changes are conditional; sometimes you add a new definition which is
-entirely contained in a conditional. It is very useful to indicate in
-the change log the conditions for which the change applies.
-
-Our convention for indicating conditional changes is to use square
-brackets around the name of the condition.
-
-Here is a simple example, describing a change which is conditional but
-does not have a function or entity name associated with it:
-
-@example
-* xterm.c [SOLARIS2]: Include string.h.
-@end example
-
-Here is an entry describing a new definition which is entirely
-conditional. This new definition for the macro @code{FRAME_WINDOW_P} is
-used only when @code{HAVE_X_WINDOWS} is defined:
-
-@example
-* frame.h [HAVE_X_WINDOWS] (FRAME_WINDOW_P): Macro defined.
-@end example
-
-Here is an entry for a change within the function @code{init_display},
-whose definition as a whole is unconditional, but the changes themselves
-are contained in a @samp{#ifdef HAVE_LIBNCURSES} conditional:
-
-@example
-* dispnew.c (init_display) [HAVE_LIBNCURSES]: If X, call tgetent.
-@end example
-
-Here is an entry for a change that takes affect only when
-a certain macro is @emph{not} defined:
-
-@example
-(gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
-@end example
-
-@node Indicating the Part Changed
-@subsection Indicating the Part Changed
-
-Indicate the part of a function which changed by using angle brackets
-enclosing an indication of what the changed part does. Here is an entry
-for a change in the part of the function @code{sh-while-getopts} that
-deals with @code{sh} commands:
-
-@example
-* progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
-user-specified option string is empty.
-@end example
-
-
-@node Man Pages
-@section Man Pages
-@cindex man pages
-
-In the GNU project, man pages are secondary. It is not necessary or
-expected for every GNU program to have a man page, but some of them do.
-It's your choice whether to include a man page in your program.
-
-When you make this decision, consider that supporting a man page
-requires continual effort each time the program is changed. The time
-you spend on the man page is time taken away from more useful work.
-
-For a simple program which changes little, updating the man page may be
-a small job. Then there is little reason not to include a man page, if
-you have one.
-
-For a large program that changes a great deal, updating a man page may
-be a substantial burden. If a user offers to donate a man page, you may
-find this gift costly to accept. It may be better to refuse the man
-page unless the same person agrees to take full responsibility for
-maintaining it---so that you can wash your hands of it entirely. If
-this volunteer later ceases to do the job, then don't feel obliged to
-pick it up yourself; it may be better to withdraw the man page from the
-distribution until someone else agrees to update it.
-
-When a program changes only a little, you may feel that the
-discrepancies are small enough that the man page remains useful without
-updating. If so, put a prominent note near the beginning of the man
-page explaining that you don't maintain it and that the Texinfo manual
-is more authoritative. The note should say how to access the Texinfo
-documentation.
-
-@node Reading other Manuals
-@section Reading other Manuals
-
-There may be non-free books or documentation files that describe the
-program you are documenting.
-
-It is ok to use these documents for reference, just as the author of a
-new algebra textbook can read other books on algebra. A large portion
-of any non-fiction book consists of facts, in this case facts about how
-a certain program works, and these facts are necessarily the same for
-everyone who writes about the subject. But be careful not to copy your
-outline structure, wording, tables or examples from preexisting non-free
-documentation. Copying from free documentation may be ok; please check
-with the FSF about the individual case.
-
-@node Managing Releases
-@chapter The Release Process
-@cindex releasing
-
-Making a release is more than just bundling up your source files in a
-tar file and putting it up for FTP. You should set up your software so
-that it can be configured to run on a variety of systems. Your Makefile
-should conform to the GNU standards described below, and your directory
-layout should also conform to the standards discussed below. Doing so
-makes it easy to include your package into the larger framework of
-all GNU software.
-
-@menu
-* Configuration:: How Configuration Should Work
-* Makefile Conventions:: Makefile Conventions
-* Releases:: Making Releases
-@end menu
-
-@node Configuration
-@section How Configuration Should Work
-@cindex program configuration
-
-@pindex configure
-Each GNU distribution should come with a shell script named
-@code{configure}. This script is given arguments which describe the
-kind of machine and system you want to compile the program for.
-
-The @code{configure} script must record the configuration options so
-that they affect compilation.
-
-One way to do this is to make a link from a standard name such as
-@file{config.h} to the proper configuration file for the chosen system.
-If you use this technique, the distribution should @emph{not} contain a
-file named @file{config.h}. This is so that people won't be able to
-build the program without configuring it first.
-
-Another thing that @code{configure} can do is to edit the Makefile. If
-you do this, the distribution should @emph{not} contain a file named
-@file{Makefile}. Instead, it should include a file @file{Makefile.in} which
-contains the input used for editing. Once again, this is so that people
-won't be able to build the program without configuring it first.
-
-If @code{configure} does write the @file{Makefile}, then @file{Makefile}
-should have a target named @file{Makefile} which causes @code{configure}
-to be rerun, setting up the same configuration that was set up last
-time. The files that @code{configure} reads should be listed as
-dependencies of @file{Makefile}.
-
-All the files which are output from the @code{configure} script should
-have comments at the beginning explaining that they were generated
-automatically using @code{configure}. This is so that users won't think
-of trying to edit them by hand.
-
-The @code{configure} script should write a file named @file{config.status}
-which describes which configuration options were specified when the
-program was last configured. This file should be a shell script which,
-if run, will recreate the same configuration.
-
-The @code{configure} script should accept an option of the form
-@samp{--srcdir=@var{dirname}} to specify the directory where sources are found
-(if it is not the current directory). This makes it possible to build
-the program in a separate directory, so that the actual source directory
-is not modified.
-
-If the user does not specify @samp{--srcdir}, then @code{configure} should
-check both @file{.} and @file{..} to see if it can find the sources. If
-it finds the sources in one of these places, it should use them from
-there. Otherwise, it should report that it cannot find the sources, and
-should exit with nonzero status.
-
-Usually the easy way to support @samp{--srcdir} is by editing a
-definition of @code{VPATH} into the Makefile. Some rules may need to
-refer explicitly to the specified source directory. To make this
-possible, @code{configure} can add to the Makefile a variable named
-@code{srcdir} whose value is precisely the specified directory.
-
-The @code{configure} script should also take an argument which specifies the
-type of system to build the program for. This argument should look like
-this:
-
-@example
-@var{cpu}-@var{company}-@var{system}
-@end example
-
-For example, a Sun 3 might be @samp{m68k-sun-sunos4.1}.
-
-The @code{configure} script needs to be able to decode all plausible
-alternatives for how to describe a machine. Thus, @samp{sun3-sunos4.1}
-would be a valid alias. For many programs, @samp{vax-dec-ultrix} would
-be an alias for @samp{vax-dec-bsd}, simply because the differences
-between Ultrix and @sc{bsd} are rarely noticeable, but a few programs
-might need to distinguish them.
-@c Real 4.4BSD now runs on some Suns.
-
-There is a shell script called @file{config.sub} that you can use
-as a subroutine to validate system types and canonicalize aliases.
-
-@cindex optional features, configure-time
-Other options are permitted to specify in more detail the software
-or hardware present on the machine, and include or exclude optional
-parts of the package:
-
-@table @samp
-@item --enable-@var{feature}@r{[}=@var{parameter}@r{]}
-Configure the package to build and install an optional user-level
-facility called @var{feature}. This allows users to choose which
-optional features to include. Giving an optional @var{parameter} of
-@samp{no} should omit @var{feature}, if it is built by default.
-
-No @samp{--enable} option should @strong{ever} cause one feature to
-replace another. No @samp{--enable} option should ever substitute one
-useful behavior for another useful behavior. The only proper use for
-@samp{--enable} is for questions of whether to build part of the program
-or exclude it.
-
-@item --with-@var{package}
-@c @r{[}=@var{parameter}@r{]}
-The package @var{package} will be installed, so configure this package
-to work with @var{package}.
-
-@c Giving an optional @var{parameter} of
-@c @samp{no} should omit @var{package}, if it is used by default.
-
-Possible values of @var{package} include
-@samp{gnu-as} (or @samp{gas}), @samp{gnu-ld}, @samp{gnu-libc},
-@samp{gdb},
-@samp{x},
-and
-@samp{x-toolkit}.
-
-Do not use a @samp{--with} option to specify the file name to use to
-find certain files. That is outside the scope of what @samp{--with}
-options are for.
-@end table
-
-All @code{configure} scripts should accept all of these ``detail''
-options, whether or not they make any difference to the particular
-package at hand. In particular, they should accept any option that
-starts with @samp{--with-} or @samp{--enable-}. This is so users will
-be able to configure an entire GNU source tree at once with a single set
-of options.
-
-You will note that the categories @samp{--with-} and @samp{--enable-}
-are narrow: they @strong{do not} provide a place for any sort of option
-you might think of. That is deliberate. We want to limit the possible
-configuration options in GNU software. We do not want GNU programs to
-have idiosyncratic configuration options.
-
-Packages that perform part of the compilation process may support
-cross-compilation. In such a case, the host and target machines for the
-program may be different.
-
-The @code{configure} script should normally treat the specified type of
-system as both the host and the target, thus producing a program which
-works for the same type of machine that it runs on.
-
-To configure a cross-compiler, cross-assembler, or what have you, you
-should specify a target different from the host, using the configure
-option @samp{--target=@var{targettype}}. The syntax for
-@var{targettype} is the same as for the host type. So the command would
-look like this:
-
-@example
-./configure @var{hosttype} --target=@var{targettype}
-@end example
-
-Programs for which cross-operation is not meaningful need not accept the
-@samp{--target} option, because configuring an entire operating system for
-cross-operation is not a meaningful operation.
-
-Bootstrapping a cross-compiler requires compiling it on a machine other
-than the host it will run on. Compilation packages accept a
-configuration option @samp{--build=@var{buildtype}} for specifying the
-configuration on which you will compile them, but the configure script
-should normally guess the build machine type (using
-@file{config.guess}), so this option is probably not necessary. The
-host and target types normally default from the build type, so in
-bootstrapping a cross-compiler you must specify them both explicitly.
-
-Some programs have ways of configuring themselves automatically. If
-your program is set up to do this, your @code{configure} script can simply
-ignore most of its arguments.
-
-@comment The makefile standards are in a separate file that is also
-@comment included by make.texinfo. Done by roland@gnu.ai.mit.edu on 1/6/93.
-@comment For this document, turn chapters into sections, etc.
-@lowersections
-@include make-stds.texi
-@raisesections
-
-@node Releases
-@section Making Releases
-@cindex packaging
-
-Package the distribution of @code{Foo version 69.96} up in a gzipped tar
-file with the name @file{foo-69.96.tar.gz}. It should unpack into a
-subdirectory named @file{foo-69.96}.
-
-Building and installing the program should never modify any of the files
-contained in the distribution. This means that all the files that form
-part of the program in any way must be classified into @dfn{source
-files} and @dfn{non-source files}. Source files are written by humans
-and never changed automatically; non-source files are produced from
-source files by programs under the control of the Makefile.
-
-@cindex @file{README} file
-The distribution should contain a file named @file{README} which gives
-the name of the package, and a general description of what it does. It
-is also good to explain the purpose of each of the first-level
-subdirectories in the package, if there are any. The @file{README} file
-should either state the version number of the package, or refer to where
-in the package it can be found.
-
-The @file{README} file should refer to the file @file{INSTALL}, which
-should contain an explanation of the installation procedure.
-
-The @file{README} file should also refer to the file which contains the
-copying conditions. The GNU GPL, if used, should be in a file called
-@file{COPYING}. If the GNU LGPL is used, it should be in a file called
-@file{COPYING.LIB}.
-
-Naturally, all the source files must be in the distribution. It is okay
-to include non-source files in the distribution, provided they are
-up-to-date and machine-independent, so that building the distribution
-normally will never modify them. We commonly include non-source files
-produced by Bison, @code{lex}, @TeX{}, and @code{makeinfo}; this helps avoid
-unnecessary dependencies between our distributions, so that users can
-install whichever packages they want to install.
-
-Non-source files that might actually be modified by building and
-installing the program should @strong{never} be included in the
-distribution. So if you do distribute non-source files, always make
-sure they are up to date when you make a new distribution.
-
-Make sure that the directory into which the distribution unpacks (as
-well as any subdirectories) are all world-writable (octal mode 777).
-This is so that old versions of @code{tar} which preserve the
-ownership and permissions of the files from the tar archive will be
-able to extract all the files even if the user is unprivileged.
-
-Make sure that all the files in the distribution are world-readable.
-
-Make sure that no file name in the distribution is more than 14
-characters long. Likewise, no file created by building the program
-should have a name longer than 14 characters. The reason for this is
-that some systems adhere to a foolish interpretation of the @sc{posix}
-standard, and refuse to open a longer name, rather than truncating as
-they did in the past.
-
-Don't include any symbolic links in the distribution itself. If the tar
-file contains symbolic links, then people cannot even unpack it on
-systems that don't support symbolic links. Also, don't use multiple
-names for one file in different directories, because certain file
-systems cannot handle this and that prevents unpacking the
-distribution.
-
-Try to make sure that all the file names will be unique on MS-DOS. A
-name on MS-DOS consists of up to 8 characters, optionally followed by a
-period and up to three characters. MS-DOS will truncate extra
-characters both before and after the period. Thus,
-@file{foobarhacker.c} and @file{foobarhacker.o} are not ambiguous; they
-are truncated to @file{foobarha.c} and @file{foobarha.o}, which are
-distinct.
-
-@cindex @file{texinfo.tex}, in a distribution
-Include in your distribution a copy of the @file{texinfo.tex} you used
-to test print any @file{*.texinfo} or @file{*.texi} files.
-
-Likewise, if your program uses small GNU software packages like regex,
-getopt, obstack, or termcap, include them in the distribution file.
-Leaving them out would make the distribution file a little smaller at
-the expense of possible inconvenience to a user who doesn't know what
-other files to get.
-
-@node References
-@chapter References to Non-Free Software and Documentation
-@cindex references to non-free material
-
-A GNU program should not recommend use of any non-free program. We
-can't stop some people from writing proprietary programs, or stop
-other people from using them, but we can and should avoid helping to
-advertise them to new potential customers. Proprietary software is a
-social and ethical problem, and the point of GNU is to solve that
-problem.
-
-When a non-free program or system is well known, you can mention it in
-passing---that is harmless, since users who might want to use it
-probably already know about it. For instance, it is fine to explain
-how to build your package on top of some non-free operating system, or
-how to use it together with some widely used non-free program.
-
-However, you should give only the necessary information to help those
-who already use the non-free program to use your program with
-it---don't give, or refer to, any further information about the
-proprietary program, and don't imply that the proprietary program
-enhances your program, or that its existence is in any way a good
-thing. The goal should be that people already using the proprietary
-program will get the advice they need about how to use your free
-program, while people who don't already use the proprietary program
-will not see anything to lead them to take an interest in it.
-
-If a non-free program or system is obscure in your program's domain,
-your program should not mention or support it at all, since doing so
-would tend to popularize the non-free program more than it popularizes
-your program. (You cannot hope to find many additional users among
-the users of Foobar if the users of Foobar are few.)
-
-A GNU package should not refer the user to any non-free documentation
-for free software. Free documentation that can be included in free
-operating systems is essential for completing the GNU system, so it is
-a major focus of the GNU Project; to recommend use of documentation
-that we are not allowed to use in GNU would undermine the efforts to
-get documentation that we can include. So GNU packages should never
-recommend non-free documentation.
-
-@node Copying This Manual
-@appendix Copying This Manual
-
-@menu
-* GNU Free Documentation License:: License for copying this manual
-@end menu
-
-@include fdl.texi
-
-@node Index
-@unnumbered Index
-@printindex cp
-
-@contents
-
-@bye
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c time-stamp-start: "@set lastupdate "
-@c time-stamp-end: "$"
-@c time-stamp-format: "%:b %:d, %:y"
-@c compile-command: "make just-standards"
-@c End:
diff --git a/contrib/binutils/gas/acconfig.h b/contrib/binutils/gas/acconfig.h
deleted file mode 100644
index c9c60025c757..000000000000
--- a/contrib/binutils/gas/acconfig.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
-
-/* Should gas use high-level BFD interfaces? */
-#undef BFD_ASSEMBLER
-
-/* Some assert/preprocessor combinations are incapable of handling
- certain kinds of constructs in the argument of assert. For example,
- quoted strings (if requoting isn't done right) or newlines. */
-#undef BROKEN_ASSERT
-
-/* If we aren't doing cross-assembling, some operations can be optimized,
- since byte orders and value sizes don't need to be adjusted. */
-#undef CROSS_COMPILE
-
-/* Some gas code wants to know these parameters. */
-#undef TARGET_ALIAS
-#undef TARGET_CPU
-#undef TARGET_CANONICAL
-#undef TARGET_OS
-#undef TARGET_VENDOR
-
-/* Sometimes the system header files don't declare strstr. */
-#undef NEED_DECLARATION_STRSTR
-
-/* Sometimes the system header files don't declare malloc and realloc. */
-#undef NEED_DECLARATION_MALLOC
-
-/* Sometimes the system header files don't declare free. */
-#undef NEED_DECLARATION_FREE
-
-/* Sometimes the system header files don't declare sbrk. */
-#undef NEED_DECLARATION_SBRK
-
-/* Sometimes errno.h doesn't declare errno itself. */
-#undef NEED_DECLARATION_ERRNO
-
-#undef MANY_SEGMENTS
-
-/* The configure script defines this for some targets based on the
- target name used. It is not always defined. */
-#undef TARGET_BYTES_BIG_ENDIAN
-
-/* Needed only for some configurations that can produce multiple output
- formats. */
-#undef DEFAULT_EMULATION
-#undef EMULATIONS
-#undef USE_EMULATIONS
-#undef OBJ_MAYBE_AOUT
-#undef OBJ_MAYBE_BOUT
-#undef OBJ_MAYBE_COFF
-#undef OBJ_MAYBE_ECOFF
-#undef OBJ_MAYBE_ELF
-#undef OBJ_MAYBE_GENERIC
-#undef OBJ_MAYBE_HP300
-#undef OBJ_MAYBE_IEEE
-#undef OBJ_MAYBE_SOM
-#undef OBJ_MAYBE_VMS
-
-/* Used for some of the COFF configurations, when the COFF code needs
- to select something based on the CPU type before it knows it... */
-#undef I386COFF
-#undef M68KCOFF
-#undef M88KCOFF
-
-/* Using cgen code? */
-#undef USING_CGEN
-
-/* Needed only for sparc configuration. */
-#undef DEFAULT_ARCH
-
-/* Needed only for PowerPC Solaris. */
-#undef TARGET_SOLARIS_COMMENT
-
-/* Needed only for SCO 5. */
-#undef SCO_ELF
diff --git a/contrib/binutils/gas/as.h b/contrib/binutils/gas/as.h
index 5e30f478313e..890ecd8f1056 100644
--- a/contrib/binutils/gas/as.h
+++ b/contrib/binutils/gas/as.h
@@ -1,6 +1,6 @@
/* as.h - global header file
Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -397,22 +397,6 @@ typedef unsigned int relax_substateT;
/* Enough bits for address, but still an integer type.
Could be a problem, cross-assembling for 64-bit machines. */
typedef addressT relax_addressT;
-
-struct relax_type
-{
- /* Forward reach. Signed number. > 0. */
- offsetT rlx_forward;
- /* Backward reach. Signed number. < 0. */
- offsetT rlx_backward;
-
- /* Bytes length of this address. */
- unsigned char rlx_length;
-
- /* Next longer relax-state. 0 means there is no 'next' relax-state. */
- relax_substateT rlx_more;
-};
-
-typedef struct relax_type relax_typeS;
/* main program "as.c" (command arguments etc) */
diff --git a/contrib/binutils/gas/conf.in b/contrib/binutils/gas/conf.in
deleted file mode 100644
index d56807cd88d5..000000000000
--- a/contrib/binutils/gas/conf.in
+++ /dev/null
@@ -1,127 +0,0 @@
-/* conf.in. Generated automatically from configure.in by autoheader. */
-
-/* Define if using alloca.c. */
-#undef C_ALLOCA
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
- This function is required for alloca.c support on those systems. */
-#undef CRAY_STACKSEG_END
-
-/* Define if you have alloca, as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
-#undef HAVE_ALLOCA_H
-
-/* Define as __inline if that's what the C compiler calls it. */
-#undef inline
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-#undef STACK_DIRECTION
-
-/* Should gas use high-level BFD interfaces? */
-#undef BFD_ASSEMBLER
-
-/* Some assert/preprocessor combinations are incapable of handling
- certain kinds of constructs in the argument of assert. For example,
- quoted strings (if requoting isn't done right) or newlines. */
-#undef BROKEN_ASSERT
-
-/* If we aren't doing cross-assembling, some operations can be optimized,
- since byte orders and value sizes don't need to be adjusted. */
-#undef CROSS_COMPILE
-
-/* Some gas code wants to know these parameters. */
-#undef TARGET_ALIAS
-#undef TARGET_CPU
-#undef TARGET_CANONICAL
-#undef TARGET_OS
-#undef TARGET_VENDOR
-
-/* Sometimes the system header files don't declare strstr. */
-#undef NEED_DECLARATION_STRSTR
-
-/* Sometimes the system header files don't declare malloc and realloc. */
-#undef NEED_DECLARATION_MALLOC
-
-/* Sometimes the system header files don't declare free. */
-#undef NEED_DECLARATION_FREE
-
-/* Sometimes the system header files don't declare sbrk. */
-#undef NEED_DECLARATION_SBRK
-
-/* Sometimes errno.h doesn't declare errno itself. */
-#undef NEED_DECLARATION_ERRNO
-
-#undef MANY_SEGMENTS
-
-/* Needed only for sparc configuration. */
-#undef SPARC_V9
-#undef SPARC_ARCH64
-
-/* Defined if using CGEN. */
-#undef USING_CGEN
-
-/* Needed only for some configurations that can produce multiple output
- formats. */
-#undef DEFAULT_EMULATION
-#undef EMULATIONS
-#undef USE_EMULATIONS
-#undef OBJ_MAYBE_AOUT
-#undef OBJ_MAYBE_BOUT
-#undef OBJ_MAYBE_COFF
-#undef OBJ_MAYBE_ECOFF
-#undef OBJ_MAYBE_ELF
-#undef OBJ_MAYBE_GENERIC
-#undef OBJ_MAYBE_HP300
-#undef OBJ_MAYBE_IEEE
-#undef OBJ_MAYBE_SOM
-#undef OBJ_MAYBE_VMS
-
-/* Used for some of the COFF configurations, when the COFF code needs
- to select something based on the CPU type before it knows it... */
-#undef I386COFF
-#undef M68KCOFF
-#undef M88KCOFF
-
-/* Define if you have the remove function. */
-#undef HAVE_REMOVE
-
-/* Define if you have the sbrk function. */
-#undef HAVE_SBRK
-
-/* Define if you have the unlink function. */
-#undef HAVE_UNLINK
-
-/* Define if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the <varargs.h> header file. */
-#undef HAVE_VARARGS_H
diff --git a/contrib/binutils/gas/config/i386coff.mt b/contrib/binutils/gas/config/i386coff.mt
deleted file mode 100644
index efda83365181..000000000000
--- a/contrib/binutils/gas/config/i386coff.mt
+++ /dev/null
@@ -1 +0,0 @@
-TDEFINES=-DI386COFF
diff --git a/contrib/binutils/gas/config/obj-generic.c b/contrib/binutils/gas/config/obj-generic.c
deleted file mode 100644
index 69fc3d1dbf96..000000000000
--- a/contrib/binutils/gas/config/obj-generic.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* This file is obj-generic.c and is intended to be a template for
- object format specific source files.
-
- Copyright (C) 1987-1992 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 2, 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* Chars that can be used to separate mant from exp in floating point nums */
-char EXP_CHARS[] = "eE";
-
-/* Chars that mean this number is a floating point constant */
-/* As in 0f12.456 */
-/* or 0d1.2345e12 */
-char FLT_CHARS[] = "rRsSfFdDxXpP";
-
-/* These chars start a comment anywhere in a source file (except inside
- another comment */
-const char comment_chars[] = "#";
-
-/*
- * Local Variables:
- * comment-column: 0
- * fill-column: 131
- * End:
- */
-
-/* end of obj-generic.c */
diff --git a/contrib/binutils/gas/config/obj-generic.h b/contrib/binutils/gas/config/obj-generic.h
deleted file mode 100644
index 8cb8020d0a42..000000000000
--- a/contrib/binutils/gas/config/obj-generic.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* This file is obj-generic.h
- Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 2000
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/*
- * This file is obj-generic.h and is intended to be a template for
- * object format specific header files.
- */
-
-/* define an obj specific macro off which target cpu back ends may key. */
-#define OBJ_GENERIC 1
-
-/* include whatever target cpu is appropriate. */
-#include "targ-cpu.h"
-
-/*
- * SYMBOLS
- */
-
-/*
- * If your object format needs to reorder symbols, define this. When
- * defined, symbols are kept on a doubly linked list and functions are
- * made available for push, insert, append, and delete. If not defined,
- * symbols are kept on a singly linked list, only the append and clear
- * facilities are available, and they are macros.
- */
-
-/* #define SYMBOLS_NEED_PACKPOINTERS */
-
-/* */
-typedef struct
- {
- void *nothing;
- }
-
-obj_symbol_type; /* should be the format's symbol structure */
-
-typedef void *object_headers;
-
-/* symbols have names */
-#define S_GET_NAME(s) ("foo") /* get the name of a symbolP */
-#define S_SET_NAME(s,v) ;
-/* symbols have segments */
-#define S_GET_SEGMENT(s) (SEG_UNKNOWN)
-#define S_SET_SEGMENT(s,v) ;
-/* symbols may be external */
-#define S_IS_EXTERNAL(s) (0)
-#define S_SET_EXTERNAL(s) ;
-
-/* symbols may or may not be defined */
-#define S_IS_DEFINED(s) (0)
-
-#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (0) /* your magic number */
-
-#define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */
-
-/*
- * Local Variables:
- * comment-column: 0
- * fill-column: 131
- * End:
- */
diff --git a/contrib/binutils/gas/config/sco5.mt b/contrib/binutils/gas/config/sco5.mt
deleted file mode 100644
index 8879320c4e1e..000000000000
--- a/contrib/binutils/gas/config/sco5.mt
+++ /dev/null
@@ -1 +0,0 @@
-TDEFINES=-DSCO_ELF
diff --git a/contrib/binutils/gas/config/tc-sh.c b/contrib/binutils/gas/config/tc-sh.c
deleted file mode 100644
index 1361cb8d5155..000000000000
--- a/contrib/binutils/gas/config/tc-sh.c
+++ /dev/null
@@ -1,4054 +0,0 @@
-/* tc-sh.c -- Assemble code for the Hitachi Super-H
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
- 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 2, 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, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* Written By Steve Chamberlain <sac@cygnus.com> */
-
-#include <stdio.h>
-#include "as.h"
-#include "bfd.h"
-#include "subsegs.h"
-#define DEFINE_TABLE
-#include "opcodes/sh-opc.h"
-#include "safe-ctype.h"
-#include "struc-symbol.h"
-
-#ifdef OBJ_ELF
-#include "elf/sh.h"
-#endif
-
-#include "dwarf2dbg.h"
-
-typedef struct
- {
- sh_arg_type type;
- int reg;
- expressionS immediate;
- }
-sh_operand_info;
-
-const char comment_chars[] = "!";
-const char line_separator_chars[] = ";";
-const char line_comment_chars[] = "!#";
-
-static void s_uses PARAMS ((int));
-
-static void sh_count_relocs PARAMS ((bfd *, segT, PTR));
-static void sh_frob_section PARAMS ((bfd *, segT, PTR));
-
-static void s_uacons PARAMS ((int));
-static sh_opcode_info *find_cooked_opcode PARAMS ((char **));
-static unsigned int assemble_ppi PARAMS ((char *, sh_opcode_info *));
-static void little PARAMS ((int));
-static void big PARAMS ((int));
-static int parse_reg PARAMS ((char *, int *, int *));
-static char *parse_exp PARAMS ((char *, sh_operand_info *));
-static char *parse_at PARAMS ((char *, sh_operand_info *));
-static void get_operand PARAMS ((char **, sh_operand_info *));
-static char *get_operands
- PARAMS ((sh_opcode_info *, char *, sh_operand_info *));
-static sh_opcode_info *get_specific
- PARAMS ((sh_opcode_info *, sh_operand_info *));
-static void insert PARAMS ((char *, int, int, sh_operand_info *));
-static void build_relax PARAMS ((sh_opcode_info *, sh_operand_info *));
-static char *insert_loop_bounds PARAMS ((char *, sh_operand_info *));
-static unsigned int build_Mytes
- PARAMS ((sh_opcode_info *, sh_operand_info *));
-
-#ifdef OBJ_ELF
-static void sh_elf_cons PARAMS ((int));
-
-inline static int sh_PIC_related_p PARAMS ((symbolS *));
-static int sh_check_fixup PARAMS ((expressionS *, bfd_reloc_code_real_type *));
-inline static char *sh_end_of_match PARAMS ((char *, char *));
-
-symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
-#endif
-
-static void
-big (ignore)
- int ignore ATTRIBUTE_UNUSED;
-{
- if (! target_big_endian)
- as_bad (_("directive .big encountered when option -big required"));
-
- /* Stop further messages. */
- target_big_endian = 1;
-}
-
-static void
-little (ignore)
- int ignore ATTRIBUTE_UNUSED;
-{
- if (target_big_endian)
- as_bad (_("directive .little encountered when option -little required"));
-
- /* Stop further messages. */
- target_big_endian = 0;
-}
-
-/* This table describes all the machine specific pseudo-ops the assembler
- has to support. The fields are:
- pseudo-op name without dot
- function to call to execute this pseudo-op
- Integer arg to pass to the function. */
-
-const pseudo_typeS md_pseudo_table[] =
-{
-#ifdef OBJ_ELF
- {"long", sh_elf_cons, 4},
- {"int", sh_elf_cons, 4},
- {"word", sh_elf_cons, 2},
- {"short", sh_elf_cons, 2},
-#else
- {"int", cons, 4},
- {"word", cons, 2},
-#endif /* OBJ_ELF */
- {"big", big, 0},
- {"form", listing_psize, 0},
- {"little", little, 0},
- {"heading", listing_title, 0},
- {"import", s_ignore, 0},
- {"page", listing_eject, 0},
- {"program", s_ignore, 0},
- {"uses", s_uses, 0},
- {"uaword", s_uacons, 2},
- {"ualong", s_uacons, 4},
- {"uaquad", s_uacons, 8},
- {"2byte", s_uacons, 2},
- {"4byte", s_uacons, 4},
- {"8byte", s_uacons, 8},
-#ifdef BFD_ASSEMBLER
- {"file", dwarf2_directive_file, 0 },
- {"loc", dwarf2_directive_loc, 0 },
-#endif
-#ifdef HAVE_SH64
- {"mode", s_sh64_mode, 0 },
-
- /* Have the old name too. */
- {"isa", s_sh64_mode, 0 },
-
- /* Assert that the right ABI is used. */
- {"abi", s_sh64_abi, 0 },
-
- { "vtable_inherit", sh64_vtable_inherit, 0 },
- { "vtable_entry", sh64_vtable_entry, 0 },
-#endif /* HAVE_SH64 */
- {0, 0, 0}
-};
-
-/*int md_reloc_size; */
-
-int sh_relax; /* set if -relax seen */
-
-/* Whether -small was seen. */
-
-int sh_small;
-
-/* Whether -dsp was seen. */
-
-static int sh_dsp;
-
-/* The bit mask of architectures that could
- accomodate the insns seen so far. */
-static int valid_arch;
-
-const char EXP_CHARS[] = "eE";
-
-/* Chars that mean this number is a floating point constant. */
-/* As in 0f12.456 */
-/* or 0d1.2345e12 */
-const char FLT_CHARS[] = "rRsSfFdDxXpP";
-
-#define C(a,b) ENCODE_RELAX(a,b)
-
-#define ENCODE_RELAX(what,length) (((what) << 4) + (length))
-#define GET_WHAT(x) ((x>>4))
-
-/* These are the three types of relaxable instrction. */
-/* These are the types of relaxable instructions; except for END which is
- a marker. */
-#define COND_JUMP 1
-#define COND_JUMP_DELAY 2
-#define UNCOND_JUMP 3
-
-#ifdef HAVE_SH64
-
-/* A 16-bit (times four) pc-relative operand, at most expanded to 32 bits. */
-#define SH64PCREL16_32 4
-/* A 16-bit (times four) pc-relative operand, at most expanded to 64 bits. */
-#define SH64PCREL16_64 5
-
-/* Variants of the above for adjusting the insn to PTA or PTB according to
- the label. */
-#define SH64PCREL16PT_32 6
-#define SH64PCREL16PT_64 7
-
-/* A MOVI expansion, expanding to at most 32 or 64 bits. */
-#define MOVI_IMM_32 8
-#define MOVI_IMM_32_PCREL 9
-#define MOVI_IMM_64 10
-#define MOVI_IMM_64_PCREL 11
-#define END 12
-
-#else /* HAVE_SH64 */
-
-#define END 4
-
-#endif /* HAVE_SH64 */
-
-#define UNDEF_DISP 0
-#define COND8 1
-#define COND12 2
-#define COND32 3
-#define UNDEF_WORD_DISP 4
-
-#define UNCOND12 1
-#define UNCOND32 2
-
-#ifdef HAVE_SH64
-#define UNDEF_SH64PCREL 0
-#define SH64PCREL16 1
-#define SH64PCREL32 2
-#define SH64PCREL48 3
-#define SH64PCREL64 4
-#define SH64PCRELPLT 5
-
-#define UNDEF_MOVI 0
-#define MOVI_16 1
-#define MOVI_32 2
-#define MOVI_48 3
-#define MOVI_64 4
-#define MOVI_PLT 5
-#define MOVI_GOTOFF 6
-#define MOVI_GOTPC 7
-#endif /* HAVE_SH64 */
-
-/* Branch displacements are from the address of the branch plus
- four, thus all minimum and maximum values have 4 added to them. */
-#define COND8_F 258
-#define COND8_M -252
-#define COND8_LENGTH 2
-
-/* There is one extra instruction before the branch, so we must add
- two more bytes to account for it. */
-#define COND12_F 4100
-#define COND12_M -4090
-#define COND12_LENGTH 6
-
-#define COND12_DELAY_LENGTH 4
-
-/* ??? The minimum and maximum values are wrong, but this does not matter
- since this relocation type is not supported yet. */
-#define COND32_F (1<<30)
-#define COND32_M -(1<<30)
-#define COND32_LENGTH 14
-
-#define UNCOND12_F 4098
-#define UNCOND12_M -4092
-#define UNCOND12_LENGTH 2
-
-/* ??? The minimum and maximum values are wrong, but this does not matter
- since this relocation type is not supported yet. */
-#define UNCOND32_F (1<<30)
-#define UNCOND32_M -(1<<30)
-#define UNCOND32_LENGTH 14
-
-#ifdef HAVE_SH64
-/* The trivial expansion of a SH64PCREL16 relaxation is just a "PT label,
- TRd" as is the current insn, so no extra length. Note that the "reach"
- is calculated from the address *after* that insn, but the offset in the
- insn is calculated from the beginning of the insn. We also need to
- take into account the implicit 1 coded as the "A" in PTA when counting
- forward. If PTB reaches an odd address, we trap that as an error
- elsewhere, so we don't have to have different relaxation entries. We
- don't add a one to the negative range, since PTB would then have the
- farthest backward-reaching value skipped, not generated at relaxation. */
-#define SH64PCREL16_F (32767 * 4 - 4 + 1)
-#define SH64PCREL16_M (-32768 * 4 - 4)
-#define SH64PCREL16_LENGTH 0
-
-/* The next step is to change that PT insn into
- MOVI ((label - datalabel Ln) >> 16) & 65535, R25
- SHORI (label - datalabel Ln) & 65535, R25
- Ln:
- PTREL R25,TRd
- which means two extra insns, 8 extra bytes. This is the limit for the
- 32-bit ABI.
-
- The expressions look a bit bad since we have to adjust this to avoid overflow on a
- 32-bit host. */
-#define SH64PCREL32_F ((((long) 1 << 30) - 1) * 2 + 1 - 4)
-#define SH64PCREL32_LENGTH (2 * 4)
-
-/* Similarly, we just change the MOVI and add a SHORI for the 48-bit
- expansion. */
-#if BFD_HOST_64BIT_LONG
-/* The "reach" type is long, so we can only do this for a 64-bit-long
- host. */
-#define SH64PCREL32_M (((long) -1 << 30) * 2 - 4)
-#define SH64PCREL48_F ((((long) 1 << 47) - 1) - 4)
-#define SH64PCREL48_M (((long) -1 << 47) - 4)
-#define SH64PCREL48_LENGTH (3 * 4)
-#else
-/* If the host does not have 64-bit longs, just make this state identical
- in reach to the 32-bit state. Note that we have a slightly incorrect
- reach, but the correct one above will overflow a 32-bit number. */
-#define SH64PCREL32_M (((long) -1 << 30) * 2)
-#define SH64PCREL48_F SH64PCREL32_F
-#define SH64PCREL48_M SH64PCREL32_M
-#define SH64PCREL48_LENGTH (3 * 4)
-#endif /* BFD_HOST_64BIT_LONG */
-
-/* And similarly for the 64-bit expansion; a MOVI + SHORI + SHORI + SHORI
- + PTREL sequence. */
-#define SH64PCREL64_LENGTH (4 * 4)
-
-/* For MOVI, we make the MOVI + SHORI... expansion you can see in the
- SH64PCREL expansions. The PCREL one is similar, but the other has no
- pc-relative reach; it must be fully expanded in
- shmedia_md_estimate_size_before_relax. */
-#define MOVI_16_LENGTH 0
-#define MOVI_16_F (32767 - 4)
-#define MOVI_16_M (-32768 - 4)
-#define MOVI_32_LENGTH 4
-#define MOVI_32_F ((((long) 1 << 30) - 1) * 2 + 1 - 4)
-#define MOVI_48_LENGTH 8
-
-#if BFD_HOST_64BIT_LONG
-/* The "reach" type is long, so we can only do this for a 64-bit-long
- host. */
-#define MOVI_32_M (((long) -1 << 30) * 2 - 4)
-#define MOVI_48_F ((((long) 1 << 47) - 1) - 4)
-#define MOVI_48_M (((long) -1 << 47) - 4)
-#else
-/* If the host does not have 64-bit longs, just make this state identical
- in reach to the 32-bit state. Note that we have a slightly incorrect
- reach, but the correct one above will overflow a 32-bit number. */
-#define MOVI_32_M (((long) -1 << 30) * 2)
-#define MOVI_48_F MOVI_32_F
-#define MOVI_48_M MOVI_32_M
-#endif /* BFD_HOST_64BIT_LONG */
-
-#define MOVI_64_LENGTH 12
-#endif /* HAVE_SH64 */
-
-#define EMPTY { 0, 0, 0, 0 }
-
-const relax_typeS md_relax_table[C (END, 0)] = {
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- EMPTY,
- /* C (COND_JUMP, COND8) */
- { COND8_F, COND8_M, COND8_LENGTH, C (COND_JUMP, COND12) },
- /* C (COND_JUMP, COND12) */
- { COND12_F, COND12_M, COND12_LENGTH, C (COND_JUMP, COND32), },
- /* C (COND_JUMP, COND32) */
- { COND32_F, COND32_M, COND32_LENGTH, 0, },
- /* C (COND_JUMP, UNDEF_WORD_DISP) */
- { 0, 0, COND32_LENGTH, 0, },
- EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- EMPTY,
- /* C (COND_JUMP_DELAY, COND8) */
- { COND8_F, COND8_M, COND8_LENGTH, C (COND_JUMP_DELAY, COND12) },
- /* C (COND_JUMP_DELAY, COND12) */
- { COND12_F, COND12_M, COND12_DELAY_LENGTH, C (COND_JUMP_DELAY, COND32), },
- /* C (COND_JUMP_DELAY, COND32) */
- { COND32_F, COND32_M, COND32_LENGTH, 0, },
- /* C (COND_JUMP_DELAY, UNDEF_WORD_DISP) */
- { 0, 0, COND32_LENGTH, 0, },
- EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- EMPTY,
- /* C (UNCOND_JUMP, UNCOND12) */
- { UNCOND12_F, UNCOND12_M, UNCOND12_LENGTH, C (UNCOND_JUMP, UNCOND32), },
- /* C (UNCOND_JUMP, UNCOND32) */
- { UNCOND32_F, UNCOND32_M, UNCOND32_LENGTH, 0, },
- EMPTY,
- /* C (UNCOND_JUMP, UNDEF_WORD_DISP) */
- { 0, 0, UNCOND32_LENGTH, 0, },
- EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
-#ifdef HAVE_SH64
- /* C (SH64PCREL16_32, SH64PCREL16) */
- EMPTY,
- { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16_32, SH64PCREL32) },
- /* C (SH64PCREL16_32, SH64PCREL32) */
- { 0, 0, SH64PCREL32_LENGTH, 0 },
- EMPTY, EMPTY,
- /* C (SH64PCREL16_32, SH64PCRELPLT) */
- { 0, 0, SH64PCREL32_LENGTH, 0 },
- EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (SH64PCREL16_64, SH64PCREL16) */
- EMPTY,
- { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16_64, SH64PCREL32) },
- /* C (SH64PCREL16_64, SH64PCREL32) */
- { SH64PCREL32_F, SH64PCREL32_M, SH64PCREL32_LENGTH, C (SH64PCREL16_64, SH64PCREL48) },
- /* C (SH64PCREL16_64, SH64PCREL48) */
- { SH64PCREL48_F, SH64PCREL48_M, SH64PCREL48_LENGTH, C (SH64PCREL16_64, SH64PCREL64) },
- /* C (SH64PCREL16_64, SH64PCREL64) */
- { 0, 0, SH64PCREL64_LENGTH, 0 },
- /* C (SH64PCREL16_64, SH64PCRELPLT) */
- { 0, 0, SH64PCREL64_LENGTH, 0 },
- EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (SH64PCREL16PT_32, SH64PCREL16) */
- EMPTY,
- { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16PT_32, SH64PCREL32) },
- /* C (SH64PCREL16PT_32, SH64PCREL32) */
- { 0, 0, SH64PCREL32_LENGTH, 0 },
- EMPTY, EMPTY,
- /* C (SH64PCREL16PT_32, SH64PCRELPLT) */
- { 0, 0, SH64PCREL32_LENGTH, 0 },
- EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (SH64PCREL16PT_64, SH64PCREL16) */
- EMPTY,
- { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16PT_64, SH64PCREL32) },
- /* C (SH64PCREL16PT_64, SH64PCREL32) */
- { SH64PCREL32_F,
- SH64PCREL32_M,
- SH64PCREL32_LENGTH,
- C (SH64PCREL16PT_64, SH64PCREL48) },
- /* C (SH64PCREL16PT_64, SH64PCREL48) */
- { SH64PCREL48_F, SH64PCREL48_M, SH64PCREL48_LENGTH, C (SH64PCREL16PT_64, SH64PCREL64) },
- /* C (SH64PCREL16PT_64, SH64PCREL64) */
- { 0, 0, SH64PCREL64_LENGTH, 0 },
- /* C (SH64PCREL16PT_64, SH64PCRELPLT) */
- { 0, 0, SH64PCREL64_LENGTH, 0},
- EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (MOVI_IMM_32, UNDEF_MOVI) */
- { 0, 0, MOVI_32_LENGTH, 0 },
- /* C (MOVI_IMM_32, MOVI_16) */
- { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_32, MOVI_32) },
- /* C (MOVI_IMM_32, MOVI_32) */
- { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, 0 },
- EMPTY, EMPTY, EMPTY,
- /* C (MOVI_IMM_32, MOVI_GOTOFF) */
- { 0, 0, MOVI_32_LENGTH, 0 },
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (MOVI_IMM_32_PCREL, MOVI_16) */
- EMPTY,
- { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_32_PCREL, MOVI_32) },
- /* C (MOVI_IMM_32_PCREL, MOVI_32) */
- { 0, 0, MOVI_32_LENGTH, 0 },
- EMPTY, EMPTY,
- /* C (MOVI_IMM_32_PCREL, MOVI_PLT) */
- { 0, 0, MOVI_32_LENGTH, 0 },
- EMPTY,
- /* C (MOVI_IMM_32_PCREL, MOVI_GOTPC) */
- { 0, 0, MOVI_32_LENGTH, 0 },
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (MOVI_IMM_64, UNDEF_MOVI) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- /* C (MOVI_IMM_64, MOVI_16) */
- { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_64, MOVI_32) },
- /* C (MOVI_IMM_64, MOVI_32) */
- { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, C (MOVI_IMM_64, MOVI_48) },
- /* C (MOVI_IMM_64, MOVI_48) */
- { MOVI_48_F, MOVI_48_M, MOVI_48_LENGTH, C (MOVI_IMM_64, MOVI_64) },
- /* C (MOVI_IMM_64, MOVI_64) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- EMPTY,
- /* C (MOVI_IMM_64, MOVI_GOTOFF) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
- /* C (MOVI_IMM_64_PCREL, MOVI_16) */
- EMPTY,
- { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_32) },
- /* C (MOVI_IMM_64_PCREL, MOVI_32) */
- { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_48) },
- /* C (MOVI_IMM_64_PCREL, MOVI_48) */
- { MOVI_48_F, MOVI_48_M, MOVI_48_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_64) },
- /* C (MOVI_IMM_64_PCREL, MOVI_64) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- /* C (MOVI_IMM_64_PCREL, MOVI_PLT) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- EMPTY,
- /* C (MOVI_IMM_64_PCREL, MOVI_GOTPC) */
- { 0, 0, MOVI_64_LENGTH, 0 },
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-
-#endif /* HAVE_SH64 */
-
-};
-
-#undef EMPTY
-
-static struct hash_control *opcode_hash_control; /* Opcode mnemonics */
-
-
-#ifdef OBJ_ELF
-/* Determinet whether the symbol needs any kind of PIC relocation. */
-
-inline static int
-sh_PIC_related_p (sym)
- symbolS *sym;
-{
- expressionS *exp;
-
- if (! sym)
- return 0;
-
- if (sym == GOT_symbol)
- return 1;
-
-#ifdef HAVE_SH64
- if (sh_PIC_related_p (*symbol_get_tc (sym)))
- return 1;
-#endif
-
- exp = symbol_get_value_expression (sym);
-
- return (exp->X_op == O_PIC_reloc
- || sh_PIC_related_p (exp->X_add_symbol)
- || sh_PIC_related_p (exp->X_op_symbol));
-}
-
-/* Determine the relocation type to be used to represent the
- expression, that may be rearranged. */
-
-static int
-sh_check_fixup (main_exp, r_type_p)
- expressionS *main_exp;
- bfd_reloc_code_real_type *r_type_p;
-{
- expressionS *exp = main_exp;
-
- /* This is here for backward-compatibility only. GCC used to generated:
-
- f@PLT + . - (.LPCS# + 2)
-
- but we'd rather be able to handle this as a PIC-related reference
- plus/minus a symbol. However, gas' parser gives us:
-
- O_subtract (O_add (f@PLT, .), .LPCS#+2)
-
- so we attempt to transform this into:
-
- O_subtract (f@PLT, O_subtract (.LPCS#+2, .))
-
- which we can handle simply below. */
- if (exp->X_op == O_subtract)
- {
- if (sh_PIC_related_p (exp->X_op_symbol))
- return 1;
-
- exp = symbol_get_value_expression (exp->X_add_symbol);
-
- if (exp && sh_PIC_related_p (exp->X_op_symbol))
- return 1;
-
- if (exp && exp->X_op == O_add
- && sh_PIC_related_p (exp->X_add_symbol))
- {
- symbolS *sym = exp->X_add_symbol;
-
- exp->X_op = O_subtract;
- exp->X_add_symbol = main_exp->X_op_symbol;
-
- main_exp->X_op_symbol = main_exp->X_add_symbol;
- main_exp->X_add_symbol = sym;
-
- main_exp->X_add_number += exp->X_add_number;
- exp->X_add_number = 0;
- }
-
- exp = main_exp;
- }
- else if (exp->X_op == O_add && sh_PIC_related_p (exp->X_op_symbol))
- return 1;
-
- if (exp->X_op == O_symbol || exp->X_op == O_add || exp->X_op == O_subtract)
- {
-#ifdef HAVE_SH64
- if (exp->X_add_symbol
- && (exp->X_add_symbol == GOT_symbol
- || (GOT_symbol
- && *symbol_get_tc (exp->X_add_symbol) == GOT_symbol)))
- {
- switch (*r_type_p)
- {
- case BFD_RELOC_SH_IMM_LOW16:
- *r_type_p = BFD_RELOC_SH_GOTPC_LOW16;
- break;
-
- case BFD_RELOC_SH_IMM_MEDLOW16:
- *r_type_p = BFD_RELOC_SH_GOTPC_MEDLOW16;
- break;
-
- case BFD_RELOC_SH_IMM_MEDHI16:
- *r_type_p = BFD_RELOC_SH_GOTPC_MEDHI16;
- break;
-
- case BFD_RELOC_SH_IMM_HI16:
- *r_type_p = BFD_RELOC_SH_GOTPC_HI16;
- break;
-
- case BFD_RELOC_NONE:
- case BFD_RELOC_UNUSED:
- *r_type_p = BFD_RELOC_SH_GOTPC;
- break;
-
- default:
- abort ();
- }
- return 0;
- }
-#else
- if (exp->X_add_symbol && exp->X_add_symbol == GOT_symbol)
- {
- *r_type_p = BFD_RELOC_SH_GOTPC;
- return 0;
- }
-#endif
- exp = symbol_get_value_expression (exp->X_add_symbol);
- if (! exp)
- return 0;
- }
-
- if (exp->X_op == O_PIC_reloc)
- {
-#ifdef HAVE_SH64
- switch (*r_type_p)
- {
- case BFD_RELOC_NONE:
- case BFD_RELOC_UNUSED:
- *r_type_p = exp->X_md;
- break;
-
- case BFD_RELOC_SH_IMM_LOW16:
- switch (exp->X_md)
- {
- case BFD_RELOC_32_GOTOFF:
- *r_type_p = BFD_RELOC_SH_GOTOFF_LOW16;
- break;
-
- case BFD_RELOC_SH_GOTPLT32:
- *r_type_p = BFD_RELOC_SH_GOTPLT_LOW16;
- break;
-
- case BFD_RELOC_32_GOT_PCREL:
- *r_type_p = BFD_RELOC_SH_GOT_LOW16;
- break;
-
- case BFD_RELOC_32_PLT_PCREL:
- *r_type_p = BFD_RELOC_SH_PLT_LOW16;
- break;
-
- default:
- abort ();
- }
- break;
-
- case BFD_RELOC_SH_IMM_MEDLOW16:
- switch (exp->X_md)
- {
- case BFD_RELOC_32_GOTOFF:
- *r_type_p = BFD_RELOC_SH_GOTOFF_MEDLOW16;
- break;
-
- case BFD_RELOC_SH_GOTPLT32:
- *r_type_p = BFD_RELOC_SH_GOTPLT_MEDLOW16;
- break;
-
- case BFD_RELOC_32_GOT_PCREL:
- *r_type_p = BFD_RELOC_SH_GOT_MEDLOW16;
- break;
-
- case BFD_RELOC_32_PLT_PCREL:
- *r_type_p = BFD_RELOC_SH_PLT_MEDLOW16;
- break;
-
- default:
- abort ();
- }
- break;
-
- case BFD_RELOC_SH_IMM_MEDHI16:
- switch (exp->X_md)
- {
- case BFD_RELOC_32_GOTOFF:
- *r_type_p = BFD_RELOC_SH_GOTOFF_MEDHI16;
- break;
-
- case BFD_RELOC_SH_GOTPLT32:
- *r_type_p = BFD_RELOC_SH_GOTPLT_MEDHI16;
- break;
-
- case BFD_RELOC_32_GOT_PCREL:
- *r_type_p = BFD_RELOC_SH_GOT_MEDHI16;
- break;
-
- case BFD_RELOC_32_PLT_PCREL:
- *r_type_p = BFD_RELOC_SH_PLT_MEDHI16;
- break;
-
- default:
- abort ();
- }
- break;
-
- case BFD_RELOC_SH_IMM_HI16:
- switch (exp->X_md)
- {
- case BFD_RELOC_32_GOTOFF:
- *r_type_p = BFD_RELOC_SH_GOTOFF_HI16;
- break;
-
- case BFD_RELOC_SH_GOTPLT32:
- *r_type_p = BFD_RELOC_SH_GOTPLT_HI16;
- break;
-
- case BFD_RELOC_32_GOT_PCREL:
- *r_type_p = BFD_RELOC_SH_GOT_HI16;
- break;
-
- case BFD_RELOC_32_PLT_PCREL:
- *r_type_p = BFD_RELOC_SH_PLT_HI16;
- break;
-
- default:
- abort ();
- }
- break;
-
- default:
- abort ();
- }
-#else
- *r_type_p = exp->X_md;
-#endif
- if (exp == main_exp)
- exp->X_op = O_symbol;
- else
- {
- main_exp->X_add_symbol = exp->X_add_symbol;
- main_exp->X_add_number += exp->X_add_number;
- }
- }
- else
- return (sh_PIC_related_p (exp->X_add_symbol)
- || sh_PIC_related_p (exp->X_op_symbol));
-
- return 0;
-}
-
-/* Add expression EXP of SIZE bytes to offset OFF of fragment FRAG. */
-
-void
-sh_cons_fix_new (frag, off, size, exp)
- fragS *frag;
- int off, size;
- expressionS *exp;
-{
- bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
-
- if (sh_check_fixup (exp, &r_type))
- as_bad (_("Invalid PIC expression."));
-
- if (r_type == BFD_RELOC_UNUSED)
- switch (size)
- {
- case 1:
- r_type = BFD_RELOC_8;
- break;
-
- case 2:
- r_type = BFD_RELOC_16;
- break;
-
- case 4:
- r_type = BFD_RELOC_32;
- break;
-
-#ifdef HAVE_SH64
- case 8:
- r_type = BFD_RELOC_64;
- break;
-#endif
-
- default:
- goto error;
- }
- else if (size != 4)
- {
- error:
- as_bad (_("unsupported BFD relocation size %u"), size);
- r_type = BFD_RELOC_UNUSED;
- }
-
- fix_new_exp (frag, off, size, exp, 0, r_type);
-}
-
-/* The regular cons() function, that reads constants, doesn't support
- suffixes such as @GOT, @GOTOFF and @PLT, that generate
- machine-specific relocation types. So we must define it here. */
-/* Clobbers input_line_pointer, checks end-of-line. */
-static void
-sh_elf_cons (nbytes)
- register int nbytes; /* 1=.byte, 2=.word, 4=.long */
-{
- expressionS exp;
-
-#ifdef HAVE_SH64
-
- /* Update existing range to include a previous insn, if there was one. */
- sh64_update_contents_mark (true);
-
- /* We need to make sure the contents type is set to data. */
- sh64_flag_output ();
-
-#endif /* HAVE_SH64 */
-
- if (is_it_end_of_statement ())
- {
- demand_empty_rest_of_line ();
- return;
- }
-
- do
- {
- expression (&exp);
- emit_expr (&exp, (unsigned int) nbytes);
- }
- while (*input_line_pointer++ == ',');
-
- input_line_pointer--; /* Put terminator back into stream. */
- if (*input_line_pointer == '#' || *input_line_pointer == '!')
- {
- while (! is_end_of_line[(unsigned char) *input_line_pointer++]);
- }
- else
- demand_empty_rest_of_line ();
-}
-#endif /* OBJ_ELF */
-
-
-/* This function is called once, at assembler startup time. This should
- set up all the tables, etc that the MD part of the assembler needs. */
-
-void
-md_begin ()
-{
- sh_opcode_info *opcode;
- char *prev_name = "";
- int target_arch;
-
- target_arch = arch_sh1_up & ~(sh_dsp ? arch_sh3e_up : arch_sh_dsp_up);
- valid_arch = target_arch;
-
-#ifdef HAVE_SH64
- shmedia_md_begin ();
-#endif
-
- opcode_hash_control = hash_new ();
-
- /* Insert unique names into hash table. */
- for (opcode = sh_table; opcode->name; opcode++)
- {
- if (strcmp (prev_name, opcode->name))
- {
- if (! (opcode->arch & target_arch))
- continue;
- prev_name = opcode->name;
- hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
- }
- else
- {
- /* Make all the opcodes with the same name point to the same
- string. */
- opcode->name = prev_name;
- }
- }
-}
-
-static int reg_m;
-static int reg_n;
-static int reg_x, reg_y;
-static int reg_efg;
-static int reg_b;
-
-#define IDENT_CHAR(c) (ISALNUM (c) || (c) == '_')
-
-/* Try to parse a reg name. Return the number of chars consumed. */
-
-static int
-parse_reg (src, mode, reg)
- char *src;
- int *mode;
- int *reg;
-{
- char l0 = TOLOWER (src[0]);
- char l1 = l0 ? TOLOWER (src[1]) : 0;
-
- /* We use ! IDENT_CHAR for the next character after the register name, to
- make sure that we won't accidentally recognize a symbol name such as
- 'sram' or sr_ram as being a reference to the register 'sr'. */
-
- if (l0 == 'r')
- {
- if (l1 == '1')
- {
- if (src[2] >= '0' && src[2] <= '5'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_REG_N;
- *reg = 10 + src[2] - '0';
- return 3;
- }
- }
- if (l1 >= '0' && l1 <= '9'
- && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_REG_N;
- *reg = (l1 - '0');
- return 2;
- }
- if (l1 >= '0' && l1 <= '7' && strncasecmp (&src[2], "_bank", 5) == 0
- && ! IDENT_CHAR ((unsigned char) src[7]))
- {
- *mode = A_REG_B;
- *reg = (l1 - '0');
- return 7;
- }
-
- if (l1 == 'e' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_RE;
- return 2;
- }
- if (l1 == 's' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_RS;
- return 2;
- }
- }
-
- if (l0 == 'a')
- {
- if (l1 == '0')
- {
- if (! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = DSP_REG_N;
- *reg = A_A0_NUM;
- return 2;
- }
- if (TOLOWER (src[2]) == 'g' && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = DSP_REG_N;
- *reg = A_A0G_NUM;
- return 3;
- }
- }
- if (l1 == '1')
- {
- if (! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = DSP_REG_N;
- *reg = A_A1_NUM;
- return 2;
- }
- if (TOLOWER (src[2]) == 'g' && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = DSP_REG_N;
- *reg = A_A1G_NUM;
- return 3;
- }
- }
-
- if (l1 == 'x' && src[2] >= '0' && src[2] <= '1'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_REG_N;
- *reg = 4 + (l1 - '0');
- return 3;
- }
- if (l1 == 'y' && src[2] >= '0' && src[2] <= '1'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_REG_N;
- *reg = 6 + (l1 - '0');
- return 3;
- }
- if (l1 == 's' && src[2] >= '0' && src[2] <= '3'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- int n = l1 - '0';
-
- *mode = A_REG_N;
- *reg = n | ((~n & 2) << 1);
- return 3;
- }
- }
-
- if (l0 == 'i' && l1 && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- if (l1 == 's')
- {
- *mode = A_REG_N;
- *reg = 8;
- return 2;
- }
- if (l1 == 'x')
- {
- *mode = A_REG_N;
- *reg = 8;
- return 2;
- }
- if (l1 == 'y')
- {
- *mode = A_REG_N;
- *reg = 9;
- return 2;
- }
- }
-
- if (l0 == 'x' && l1 >= '0' && l1 <= '1'
- && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = DSP_REG_N;
- *reg = A_X0_NUM + l1 - '0';
- return 2;
- }
-
- if (l0 == 'y' && l1 >= '0' && l1 <= '1'
- && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = DSP_REG_N;
- *reg = A_Y0_NUM + l1 - '0';
- return 2;
- }
-
- if (l0 == 'm' && l1 >= '0' && l1 <= '1'
- && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = DSP_REG_N;
- *reg = l1 == '0' ? A_M0_NUM : A_M1_NUM;
- return 2;
- }
-
- if (l0 == 's'
- && l1 == 's'
- && TOLOWER (src[2]) == 'r' && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_SSR;
- return 3;
- }
-
- if (l0 == 's' && l1 == 'p' && TOLOWER (src[2]) == 'c'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_SPC;
- return 3;
- }
-
- if (l0 == 's' && l1 == 'g' && TOLOWER (src[2]) == 'r'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_SGR;
- return 3;
- }
-
- if (l0 == 'd' && l1 == 's' && TOLOWER (src[2]) == 'r'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_DSR;
- return 3;
- }
-
- if (l0 == 'd' && l1 == 'b' && TOLOWER (src[2]) == 'r'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_DBR;
- return 3;
- }
-
- if (l0 == 's' && l1 == 'r' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_SR;
- return 2;
- }
-
- if (l0 == 's' && l1 == 'p' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_REG_N;
- *reg = 15;
- return 2;
- }
-
- if (l0 == 'p' && l1 == 'r' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- *mode = A_PR;
- return 2;
- }
- if (l0 == 'p' && l1 == 'c' && ! IDENT_CHAR ((unsigned char) src[2]))
- {
- /* Don't use A_DISP_PC here - that would accept stuff like 'mova pc,r0'
- and use an uninitialized immediate. */
- *mode = A_PC;
- return 2;
- }
- if (l0 == 'g' && l1 == 'b' && TOLOWER (src[2]) == 'r'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_GBR;
- return 3;
- }
- if (l0 == 'v' && l1 == 'b' && TOLOWER (src[2]) == 'r'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_VBR;
- return 3;
- }
-
- if (l0 == 'm' && l1 == 'a' && TOLOWER (src[2]) == 'c'
- && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- if (TOLOWER (src[3]) == 'l')
- {
- *mode = A_MACL;
- return 4;
- }
- if (TOLOWER (src[3]) == 'h')
- {
- *mode = A_MACH;
- return 4;
- }
- }
- if (l0 == 'm' && l1 == 'o' && TOLOWER (src[2]) == 'd'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = A_MOD;
- return 3;
- }
- if (l0 == 'f' && l1 == 'r')
- {
- if (src[2] == '1')
- {
- if (src[3] >= '0' && src[3] <= '5'
- && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- *mode = F_REG_N;
- *reg = 10 + src[3] - '0';
- return 4;
- }
- }
- if (src[2] >= '0' && src[2] <= '9'
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = F_REG_N;
- *reg = (src[2] - '0');
- return 3;
- }
- }
- if (l0 == 'd' && l1 == 'r')
- {
- if (src[2] == '1')
- {
- if (src[3] >= '0' && src[3] <= '4' && ! ((src[3] - '0') & 1)
- && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- *mode = D_REG_N;
- *reg = 10 + src[3] - '0';
- return 4;
- }
- }
- if (src[2] >= '0' && src[2] <= '8' && ! ((src[2] - '0') & 1)
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = D_REG_N;
- *reg = (src[2] - '0');
- return 3;
- }
- }
- if (l0 == 'x' && l1 == 'd')
- {
- if (src[2] == '1')
- {
- if (src[3] >= '0' && src[3] <= '4' && ! ((src[3] - '0') & 1)
- && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- *mode = X_REG_N;
- *reg = 11 + src[3] - '0';
- return 4;
- }
- }
- if (src[2] >= '0' && src[2] <= '8' && ! ((src[2] - '0') & 1)
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = X_REG_N;
- *reg = (src[2] - '0') + 1;
- return 3;
- }
- }
- if (l0 == 'f' && l1 == 'v')
- {
- if (src[2] == '1'&& src[3] == '2' && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- *mode = V_REG_N;
- *reg = 12;
- return 4;
- }
- if ((src[2] == '0' || src[2] == '4' || src[2] == '8')
- && ! IDENT_CHAR ((unsigned char) src[3]))
- {
- *mode = V_REG_N;
- *reg = (src[2] - '0');
- return 3;
- }
- }
- if (l0 == 'f' && l1 == 'p' && TOLOWER (src[2]) == 'u'
- && TOLOWER (src[3]) == 'l'
- && ! IDENT_CHAR ((unsigned char) src[4]))
- {
- *mode = FPUL_N;
- return 4;
- }
-
- if (l0 == 'f' && l1 == 'p' && TOLOWER (src[2]) == 's'
- && TOLOWER (src[3]) == 'c'
- && TOLOWER (src[4]) == 'r' && ! IDENT_CHAR ((unsigned char) src[5]))
- {
- *mode = FPSCR_N;
- return 5;
- }
-
- if (l0 == 'x' && l1 == 'm' && TOLOWER (src[2]) == 't'
- && TOLOWER (src[3]) == 'r'
- && TOLOWER (src[4]) == 'x' && ! IDENT_CHAR ((unsigned char) src[5]))
- {
- *mode = XMTRX_M4;
- return 5;
- }
-
- return 0;
-}
-
-static char *
-parse_exp (s, op)
- char *s;
- sh_operand_info *op;
-{
- char *save;
- char *new;
-
- save = input_line_pointer;
- input_line_pointer = s;
- expression (&op->immediate);
- if (op->immediate.X_op == O_absent)
- as_bad (_("missing operand"));
-#ifdef OBJ_ELF
- else if (op->immediate.X_op == O_PIC_reloc
- || sh_PIC_related_p (op->immediate.X_add_symbol)
- || sh_PIC_related_p (op->immediate.X_op_symbol))
- as_bad (_("misplaced PIC operand"));
-#endif
- new = input_line_pointer;
- input_line_pointer = save;
- return new;
-}
-
-/* The many forms of operand:
-
- Rn Register direct
- @Rn Register indirect
- @Rn+ Autoincrement
- @-Rn Autodecrement
- @(disp:4,Rn)
- @(disp:8,GBR)
- @(disp:8,PC)
-
- @(R0,Rn)
- @(R0,GBR)
-
- disp:8
- disp:12
- #imm8
- pr, gbr, vbr, macl, mach
- */
-
-static char *
-parse_at (src, op)
- char *src;
- sh_operand_info *op;
-{
- int len;
- int mode;
- src++;
- if (src[0] == '-')
- {
- /* Must be predecrement. */
- src++;
-
- len = parse_reg (src, &mode, &(op->reg));
- if (mode != A_REG_N)
- as_bad (_("illegal register after @-"));
-
- op->type = A_DEC_N;
- src += len;
- }
- else if (src[0] == '(')
- {
- /* Could be @(disp, rn), @(disp, gbr), @(disp, pc), @(r0, gbr) or
- @(r0, rn). */
- src++;
- len = parse_reg (src, &mode, &(op->reg));
- if (len && mode == A_REG_N)
- {
- src += len;
- if (op->reg != 0)
- {
- as_bad (_("must be @(r0,...)"));
- }
- if (src[0] == ',')
- {
- src++;
- /* Now can be rn or gbr. */
- len = parse_reg (src, &mode, &(op->reg));
- }
- else
- {
- len = 0;
- }
- if (len)
- {
- if (mode == A_GBR)
- {
- op->type = A_R0_GBR;
- }
- else if (mode == A_REG_N)
- {
- op->type = A_IND_R0_REG_N;
- }
- else
- {
- as_bad (_("syntax error in @(r0,...)"));
- }
- }
- else
- {
- as_bad (_("syntax error in @(r0...)"));
- }
- }
- else
- {
- /* Must be an @(disp,.. thing). */
- src = parse_exp (src, op);
- if (src[0] == ',')
- src++;
- /* Now can be rn, gbr or pc. */
- len = parse_reg (src, &mode, &op->reg);
- if (len)
- {
- if (mode == A_REG_N)
- {
- op->type = A_DISP_REG_N;
- }
- else if (mode == A_GBR)
- {
- op->type = A_DISP_GBR;
- }
- else if (mode == A_PC)
- {
- /* We want @(expr, pc) to uniformly address . + expr,
- no matter if expr is a constant, or a more complex
- expression, e.g. sym-. or sym1-sym2.
- However, we also used to accept @(sym,pc)
- as adressing sym, i.e. meaning the same as plain sym.
- Some existing code does use the @(sym,pc) syntax, so
- we give it the old semantics for now, but warn about
- its use, so that users have some time to fix their code.
-
- Note that due to this backward compatibility hack,
- we'll get unexpected results when @(offset, pc) is used,
- and offset is a symbol that is set later to an an address
- difference, or an external symbol that is set to an
- address difference in another source file, so we want to
- eventually remove it. */
- if (op->immediate.X_op == O_symbol)
- {
- op->type = A_DISP_PC;
- as_warn (_("Deprecated syntax."));
- }
- else
- {
- op->type = A_DISP_PC_ABS;
- /* Such operands don't get corrected for PC==.+4, so
- make the correction here. */
- op->immediate.X_add_number -= 4;
- }
- }
- else
- {
- as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
- }
- }
- else
- {
- as_bad (_("syntax error in @(disp,[Rn, gbr, pc])"));
- }
- }
- src += len;
- if (src[0] != ')')
- as_bad (_("expecting )"));
- else
- src++;
- }
- else
- {
- src += parse_reg (src, &mode, &(op->reg));
- if (mode != A_REG_N)
- as_bad (_("illegal register after @"));
-
- if (src[0] == '+')
- {
- char l0, l1;
-
- src++;
- l0 = TOLOWER (src[0]);
- l1 = TOLOWER (src[1]);
-
- if ((l0 == 'r' && l1 == '8')
- || (l0 == 'i' && (l1 == 'x' || l1 == 's')))
- {
- src += 2;
- op->type = A_PMOD_N;
- }
- else if ( (l0 == 'r' && l1 == '9')
- || (l0 == 'i' && l1 == 'y'))
- {
- src += 2;
- op->type = A_PMODY_N;
- }
- else
- op->type = A_INC_N;
- }
- else
- op->type = A_IND_N;
- }
- return src;
-}
-
-static void
-get_operand (ptr, op)
- char **ptr;
- sh_operand_info *op;
-{
- char *src = *ptr;
- int mode = -1;
- unsigned int len;
-
- if (src[0] == '#')
- {
- src++;
- *ptr = parse_exp (src, op);
- op->type = A_IMM;
- return;
- }
-
- else if (src[0] == '@')
- {
- *ptr = parse_at (src, op);
- return;
- }
- len = parse_reg (src, &mode, &(op->reg));
- if (len)
- {
- *ptr = src + len;
- op->type = mode;
- return;
- }
- else
- {
- /* Not a reg, the only thing left is a displacement. */
- *ptr = parse_exp (src, op);
- op->type = A_DISP_PC;
- return;
- }
-}
-
-static char *
-get_operands (info, args, operand)
- sh_opcode_info *info;
- char *args;
- sh_operand_info *operand;
-{
- char *ptr = args;
- if (info->arg[0])
- {
- /* The pre-processor will eliminate whitespace in front of '@'
- after the first argument; we may be called multiple times
- from assemble_ppi, so don't insist on finding whitespace here. */
- if (*ptr == ' ')
- ptr++;
-
- get_operand (&ptr, operand + 0);
- if (info->arg[1])
- {
- if (*ptr == ',')
- {
- ptr++;
- }
- get_operand (&ptr, operand + 1);
- /* ??? Hack: psha/pshl have a varying operand number depending on
- the type of the first operand. We handle this by having the
- three-operand version first and reducing the number of operands
- parsed to two if we see that the first operand is an immediate.
- This works because no insn with three operands has an immediate
- as first operand. */
- if (info->arg[2] && operand[0].type != A_IMM)
- {
- if (*ptr == ',')
- {
- ptr++;
- }
- get_operand (&ptr, operand + 2);
- }
- else
- {
- operand[2].type = 0;
- }
- }
- else
- {
- operand[1].type = 0;
- operand[2].type = 0;
- }
- }
- else
- {
- operand[0].type = 0;
- operand[1].type = 0;
- operand[2].type = 0;
- }
- return ptr;
-}
-
-/* Passed a pointer to a list of opcodes which use different
- addressing modes, return the opcode which matches the opcodes
- provided. */
-
-static sh_opcode_info *
-get_specific (opcode, operands)
- sh_opcode_info *opcode;
- sh_operand_info *operands;
-{
- sh_opcode_info *this_try = opcode;
- char *name = opcode->name;
- int n = 0;
-
- while (opcode->name)
- {
- this_try = opcode++;
- if (this_try->name != name)
- {
- /* We've looked so far down the table that we've run out of
- opcodes with the same name. */
- return 0;
- }
-
- /* Look at both operands needed by the opcodes and provided by
- the user - since an arg test will often fail on the same arg
- again and again, we'll try and test the last failing arg the
- first on each opcode try. */
- for (n = 0; this_try->arg[n]; n++)
- {
- sh_operand_info *user = operands + n;
- sh_arg_type arg = this_try->arg[n];
-
- switch (arg)
- {
- case A_DISP_PC:
- if (user->type == A_DISP_PC_ABS)
- break;
- /* Fall through. */
- case A_IMM:
- case A_BDISP12:
- case A_BDISP8:
- case A_DISP_GBR:
- case A_MACH:
- case A_PR:
- case A_MACL:
- if (user->type != arg)
- goto fail;
- break;
- case A_R0:
- /* opcode needs r0 */
- if (user->type != A_REG_N || user->reg != 0)
- goto fail;
- break;
- case A_R0_GBR:
- if (user->type != A_R0_GBR || user->reg != 0)
- goto fail;
- break;
- case F_FR0:
- if (user->type != F_REG_N || user->reg != 0)
- goto fail;
- break;
-
- case A_REG_N:
- case A_INC_N:
- case A_DEC_N:
- case A_IND_N:
- case A_IND_R0_REG_N:
- case A_DISP_REG_N:
- case F_REG_N:
- case D_REG_N:
- case X_REG_N:
- case V_REG_N:
- case FPUL_N:
- case FPSCR_N:
- case A_PMOD_N:
- case A_PMODY_N:
- case DSP_REG_N:
- /* Opcode needs rn */
- if (user->type != arg)
- goto fail;
- reg_n = user->reg;
- break;
- case DX_REG_N:
- if (user->type != D_REG_N && user->type != X_REG_N)
- goto fail;
- reg_n = user->reg;
- break;
- case A_GBR:
- case A_SR:
- case A_VBR:
- case A_DSR:
- case A_MOD:
- case A_RE:
- case A_RS:
- case A_SSR:
- case A_SPC:
- case A_SGR:
- case A_DBR:
- if (user->type != arg)
- goto fail;
- break;
-
- case A_REG_B:
- if (user->type != arg)
- goto fail;
- reg_b = user->reg;
- break;
-
- case A_REG_M:
- case A_INC_M:
- case A_DEC_M:
- case A_IND_M:
- case A_IND_R0_REG_M:
- case A_DISP_REG_M:
- case DSP_REG_M:
- /* Opcode needs rn */
- if (user->type != arg - A_REG_M + A_REG_N)
- goto fail;
- reg_m = user->reg;
- break;
-
- case DSP_REG_X:
- if (user->type != DSP_REG_N)
- goto fail;
- switch (user->reg)
- {
- case A_X0_NUM:
- reg_x = 0;
- break;
- case A_X1_NUM:
- reg_x = 1;
- break;
- case A_A0_NUM:
- reg_x = 2;
- break;
- case A_A1_NUM:
- reg_x = 3;
- break;
- default:
- goto fail;
- }
- break;
-
- case DSP_REG_Y:
- if (user->type != DSP_REG_N)
- goto fail;
- switch (user->reg)
- {
- case A_Y0_NUM:
- reg_y = 0;
- break;
- case A_Y1_NUM:
- reg_y = 1;
- break;
- case A_M0_NUM:
- reg_y = 2;
- break;
- case A_M1_NUM:
- reg_y = 3;
- break;
- default:
- goto fail;
- }
- break;
-
- case DSP_REG_E:
- if (user->type != DSP_REG_N)
- goto fail;
- switch (user->reg)
- {
- case A_X0_NUM:
- reg_efg = 0 << 10;
- break;
- case A_X1_NUM:
- reg_efg = 1 << 10;
- break;
- case A_Y0_NUM:
- reg_efg = 2 << 10;
- break;
- case A_A1_NUM:
- reg_efg = 3 << 10;
- break;
- default:
- goto fail;
- }
- break;
-
- case DSP_REG_F:
- if (user->type != DSP_REG_N)
- goto fail;
- switch (user->reg)
- {
- case A_Y0_NUM:
- reg_efg |= 0 << 8;
- break;
- case A_Y1_NUM:
- reg_efg |= 1 << 8;
- break;
- case A_X0_NUM:
- reg_efg |= 2 << 8;
- break;
- case A_A1_NUM:
- reg_efg |= 3 << 8;
- break;
- default:
- goto fail;
- }
- break;
-
- case DSP_REG_G:
- if (user->type != DSP_REG_N)
- goto fail;
- switch (user->reg)
- {
- case A_M0_NUM:
- reg_efg |= 0 << 2;
- break;
- case A_M1_NUM:
- reg_efg |= 1 << 2;
- break;
- case A_A0_NUM:
- reg_efg |= 2 << 2;
- break;
- case A_A1_NUM:
- reg_efg |= 3 << 2;
- break;
- default:
- goto fail;
- }
- break;
-
- case A_A0:
- if (user->type != DSP_REG_N || user->reg != A_A0_NUM)
- goto fail;
- break;
- case A_X0:
- if (user->type != DSP_REG_N || user->reg != A_X0_NUM)
- goto fail;
- break;
- case A_X1:
- if (user->type != DSP_REG_N || user->reg != A_X1_NUM)
- goto fail;
- break;
- case A_Y0:
- if (user->type != DSP_REG_N || user->reg != A_Y0_NUM)
- goto fail;
- break;
- case A_Y1:
- if (user->type != DSP_REG_N || user->reg != A_Y1_NUM)
- goto fail;
- break;
-
- case F_REG_M:
- case D_REG_M:
- case X_REG_M:
- case V_REG_M:
- case FPUL_M:
- case FPSCR_M:
- /* Opcode needs rn */
- if (user->type != arg - F_REG_M + F_REG_N)
- goto fail;
- reg_m = user->reg;
- break;
- case DX_REG_M:
- if (user->type != D_REG_N && user->type != X_REG_N)
- goto fail;
- reg_m = user->reg;
- break;
- case XMTRX_M4:
- if (user->type != XMTRX_M4)
- goto fail;
- reg_m = 4;
- break;
-
- default:
- printf (_("unhandled %d\n"), arg);
- goto fail;
- }
- }
- if ( !(valid_arch & this_try->arch))
- goto fail;
- valid_arch &= this_try->arch;
- return this_try;
- fail:
- ;
- }
-
- return 0;
-}
-
-static void
-insert (where, how, pcrel, op)
- char *where;
- int how;
- int pcrel;
- sh_operand_info *op;
-{
- fix_new_exp (frag_now,
- where - frag_now->fr_literal,
- 2,
- &op->immediate,
- pcrel,
- how);
-}
-
-static void
-build_relax (opcode, op)
- sh_opcode_info *opcode;
- sh_operand_info *op;
-{
- int high_byte = target_big_endian ? 0 : 1;
- char *p;
-
- if (opcode->arg[0] == A_BDISP8)
- {
- int what = (opcode->nibbles[1] & 4) ? COND_JUMP_DELAY : COND_JUMP;
- p = frag_var (rs_machine_dependent,
- md_relax_table[C (what, COND32)].rlx_length,
- md_relax_table[C (what, COND8)].rlx_length,
- C (what, 0),
- op->immediate.X_add_symbol,
- op->immediate.X_add_number,
- 0);
- p[high_byte] = (opcode->nibbles[0] << 4) | (opcode->nibbles[1]);
- }
- else if (opcode->arg[0] == A_BDISP12)
- {
- p = frag_var (rs_machine_dependent,
- md_relax_table[C (UNCOND_JUMP, UNCOND32)].rlx_length,
- md_relax_table[C (UNCOND_JUMP, UNCOND12)].rlx_length,
- C (UNCOND_JUMP, 0),
- op->immediate.X_add_symbol,
- op->immediate.X_add_number,
- 0);
- p[high_byte] = (opcode->nibbles[0] << 4);
- }
-
-}
-
-/* Insert ldrs & ldre with fancy relocations that relaxation can recognize. */
-
-static char *
-insert_loop_bounds (output, operand)
- char *output;
- sh_operand_info *operand;
-{
- char *name;
- symbolS *end_sym;
-
- /* Since the low byte of the opcode will be overwritten by the reloc, we
- can just stash the high byte into both bytes and ignore endianness. */
- output[0] = 0x8c;
- output[1] = 0x8c;
- insert (output, BFD_RELOC_SH_LOOP_START, 1, operand);
- insert (output, BFD_RELOC_SH_LOOP_END, 1, operand + 1);
-
- if (sh_relax)
- {
- static int count = 0;
-
- /* If the last loop insn is a two-byte-insn, it is in danger of being
- swapped with the insn after it. To prevent this, create a new
- symbol - complete with SH_LABEL reloc - after the last loop insn.
- If the last loop insn is four bytes long, the symbol will be
- right in the middle, but four byte insns are not swapped anyways. */
- /* A REPEAT takes 6 bytes. The SH has a 32 bit address space.
- Hence a 9 digit number should be enough to count all REPEATs. */
- name = alloca (11);
- sprintf (name, "_R%x", count++ & 0x3fffffff);
- end_sym = symbol_new (name, undefined_section, 0, &zero_address_frag);
- /* Make this a local symbol. */
-#ifdef OBJ_COFF
- SF_SET_LOCAL (end_sym);
-#endif /* OBJ_COFF */
- symbol_table_insert (end_sym);
- end_sym->sy_value = operand[1].immediate;
- end_sym->sy_value.X_add_number += 2;
- fix_new (frag_now, frag_now_fix (), 2, end_sym, 0, 1, BFD_RELOC_SH_LABEL);
- }
-
- output = frag_more (2);
- output[0] = 0x8e;
- output[1] = 0x8e;
- insert (output, BFD_RELOC_SH_LOOP_START, 1, operand);
- insert (output, BFD_RELOC_SH_LOOP_END, 1, operand + 1);
-
- return frag_more (2);
-}
-
-/* Now we know what sort of opcodes it is, let's build the bytes. */
-
-static unsigned int
-build_Mytes (opcode, operand)
- sh_opcode_info *opcode;
- sh_operand_info *operand;
-{
- int index;
- char nbuf[4];
- char *output = frag_more (2);
- unsigned int size = 2;
- int low_byte = target_big_endian ? 1 : 0;
- nbuf[0] = 0;
- nbuf[1] = 0;
- nbuf[2] = 0;
- nbuf[3] = 0;
-
- for (index = 0; index < 4; index++)
- {
- sh_nibble_type i = opcode->nibbles[index];
- if (i < 16)
- {
- nbuf[index] = i;
- }
- else
- {
- switch (i)
- {
- case REG_N:
- nbuf[index] = reg_n;
- break;
- case REG_M:
- nbuf[index] = reg_m;
- break;
- case SDT_REG_N:
- if (reg_n < 2 || reg_n > 5)
- as_bad (_("Invalid register: 'r%d'"), reg_n);
- nbuf[index] = (reg_n & 3) | 4;
- break;
- case REG_NM:
- nbuf[index] = reg_n | (reg_m >> 2);
- break;
- case REG_B:
- nbuf[index] = reg_b | 0x08;
- break;
- case IMM0_4BY4:
- insert (output + low_byte, BFD_RELOC_SH_IMM4BY4, 0, operand);
- break;
- case IMM0_4BY2:
- insert (output + low_byte, BFD_RELOC_SH_IMM4BY2, 0, operand);
- break;
- case IMM0_4:
- insert (output + low_byte, BFD_RELOC_SH_IMM4, 0, operand);
- break;
- case IMM1_4BY4:
- insert (output + low_byte, BFD_RELOC_SH_IMM4BY4, 0, operand + 1);
- break;
- case IMM1_4BY2:
- insert (output + low_byte, BFD_RELOC_SH_IMM4BY2, 0, operand + 1);
- break;
- case IMM1_4:
- insert (output + low_byte, BFD_RELOC_SH_IMM4, 0, operand + 1);
- break;
- case IMM0_8BY4:
- insert (output + low_byte, BFD_RELOC_SH_IMM8BY4, 0, operand);
- break;
- case IMM0_8BY2:
- insert (output + low_byte, BFD_RELOC_SH_IMM8BY2, 0, operand);
- break;
- case IMM0_8:
- insert (output + low_byte, BFD_RELOC_SH_IMM8, 0, operand);
- break;
- case IMM1_8BY4:
- insert (output + low_byte, BFD_RELOC_SH_IMM8BY4, 0, operand + 1);
- break;
- case IMM1_8BY2:
- insert (output + low_byte, BFD_RELOC_SH_IMM8BY2, 0, operand + 1);
- break;
- case IMM1_8:
- insert (output + low_byte, BFD_RELOC_SH_IMM8, 0, operand + 1);
- break;
- case PCRELIMM_8BY4:
- insert (output, BFD_RELOC_SH_PCRELIMM8BY4,
- operand->type != A_DISP_PC_ABS, operand);
- break;
- case PCRELIMM_8BY2:
- insert (output, BFD_RELOC_SH_PCRELIMM8BY2,
- operand->type != A_DISP_PC_ABS, operand);
- break;
- case REPEAT:
- output = insert_loop_bounds (output, operand);
- nbuf[index] = opcode->nibbles[3];
- operand += 2;
- break;
- default:
- printf (_("failed for %d\n"), i);
- }
- }
- }
- if (!target_big_endian)
- {
- output[1] = (nbuf[0] << 4) | (nbuf[1]);
- output[0] = (nbuf[2] << 4) | (nbuf[3]);
- }
- else
- {
- output[0] = (nbuf[0] << 4) | (nbuf[1]);
- output[1] = (nbuf[2] << 4) | (nbuf[3]);
- }
- return size;
-}
-
-/* Find an opcode at the start of *STR_P in the hash table, and set
- *STR_P to the first character after the last one read. */
-
-static sh_opcode_info *
-find_cooked_opcode (str_p)
- char **str_p;
-{
- char *str = *str_p;
- unsigned char *op_start;
- unsigned char *op_end;
- char name[20];
- int nlen = 0;
-
- /* Drop leading whitespace. */
- while (*str == ' ')
- str++;
-
- /* Find the op code end.
- The pre-processor will eliminate whitespace in front of
- any '@' after the first argument; we may be called from
- assemble_ppi, so the opcode might be terminated by an '@'. */
- for (op_start = op_end = (unsigned char *) (str);
- *op_end
- && nlen < 20
- && !is_end_of_line[*op_end] && *op_end != ' ' && *op_end != '@';
- op_end++)
- {
- unsigned char c = op_start[nlen];
-
- /* The machine independent code will convert CMP/EQ into cmp/EQ
- because it thinks the '/' is the end of the symbol. Moreover,
- all but the first sub-insn is a parallel processing insn won't
- be capitalized. Instead of hacking up the machine independent
- code, we just deal with it here. */
- c = TOLOWER (c);
- name[nlen] = c;
- nlen++;
- }
-
- name[nlen] = 0;
- *str_p = op_end;
-
- if (nlen == 0)
- as_bad (_("can't find opcode "));
-
- return (sh_opcode_info *) hash_find (opcode_hash_control, name);
-}
-
-/* Assemble a parallel processing insn. */
-#define DDT_BASE 0xf000 /* Base value for double data transfer insns */
-
-static unsigned int
-assemble_ppi (op_end, opcode)
- char *op_end;
- sh_opcode_info *opcode;
-{
- int movx = 0;
- int movy = 0;
- int cond = 0;
- int field_b = 0;
- char *output;
- int move_code;
- unsigned int size;
-
- for (;;)
- {
- sh_operand_info operand[3];
-
- /* Some insn ignore one or more register fields, e.g. psts machl,a0.
- Make sure we encode a defined insn pattern. */
- reg_x = 0;
- reg_y = 0;
- reg_n = 0;
-
- if (opcode->arg[0] != A_END)
- op_end = get_operands (opcode, op_end, operand);
- opcode = get_specific (opcode, operand);
- if (opcode == 0)
- {
- /* Couldn't find an opcode which matched the operands. */
- char *where = frag_more (2);
- size = 2;
-
- where[0] = 0x0;
- where[1] = 0x0;
- as_bad (_("invalid operands for opcode"));
- return size;
- }
-
- if (opcode->nibbles[0] != PPI)
- as_bad (_("insn can't be combined with parallel processing insn"));
-
- switch (opcode->nibbles[1])
- {
-
- case NOPX:
- if (movx)
- as_bad (_("multiple movx specifications"));
- movx = DDT_BASE;
- break;
- case NOPY:
- if (movy)
- as_bad (_("multiple movy specifications"));
- movy = DDT_BASE;
- break;
-
- case MOVX:
- if (movx)
- as_bad (_("multiple movx specifications"));
- if (reg_n < 4 || reg_n > 5)
- as_bad (_("invalid movx address register"));
- if (opcode->nibbles[2] & 8)
- {
- if (reg_m == A_A1_NUM)
- movx = 1 << 7;
- else if (reg_m != A_A0_NUM)
- as_bad (_("invalid movx dsp register"));
- }
- else
- {
- if (reg_x > 1)
- as_bad (_("invalid movx dsp register"));
- movx = reg_x << 7;
- }
- movx += ((reg_n - 4) << 9) + (opcode->nibbles[2] << 2) + DDT_BASE;
- break;
-
- case MOVY:
- if (movy)
- as_bad (_("multiple movy specifications"));
- if (opcode->nibbles[2] & 8)
- {
- /* Bit 3 in nibbles[2] is intended for bit 4 of the opcode,
- so add 8 more. */
- movy = 8;
- if (reg_m == A_A1_NUM)
- movy += 1 << 6;
- else if (reg_m != A_A0_NUM)
- as_bad (_("invalid movy dsp register"));
- }
- else
- {
- if (reg_y > 1)
- as_bad (_("invalid movy dsp register"));
- movy = reg_y << 6;
- }
- if (reg_n < 6 || reg_n > 7)
- as_bad (_("invalid movy address register"));
- movy += ((reg_n - 6) << 8) + opcode->nibbles[2] + DDT_BASE;
- break;
-
- case PSH:
- if (operand[0].immediate.X_op != O_constant)
- as_bad (_("dsp immediate shift value not constant"));
- field_b = ((opcode->nibbles[2] << 12)
- | (operand[0].immediate.X_add_number & 127) << 4
- | reg_n);
- break;
- case PPI3:
- if (field_b)
- as_bad (_("multiple parallel processing specifications"));
- field_b = ((opcode->nibbles[2] << 12) + (opcode->nibbles[3] << 8)
- + (reg_x << 6) + (reg_y << 4) + reg_n);
- break;
- case PDC:
- if (cond)
- as_bad (_("multiple condition specifications"));
- cond = opcode->nibbles[2] << 8;
- if (*op_end)
- goto skip_cond_check;
- break;
- case PPIC:
- if (field_b)
- as_bad (_("multiple parallel processing specifications"));
- field_b = ((opcode->nibbles[2] << 12) + (opcode->nibbles[3] << 8)
- + cond + (reg_x << 6) + (reg_y << 4) + reg_n);
- cond = 0;
- break;
- case PMUL:
- if (field_b)
- {
- if ((field_b & 0xef00) != 0xa100)
- as_bad (_("insn cannot be combined with pmuls"));
- field_b -= 0x8100;
- switch (field_b & 0xf)
- {
- case A_X0_NUM:
- field_b += 0 - A_X0_NUM;
- break;
- case A_Y0_NUM:
- field_b += 1 - A_Y0_NUM;
- break;
- case A_A0_NUM:
- field_b += 2 - A_A0_NUM;
- break;
- case A_A1_NUM:
- field_b += 3 - A_A1_NUM;
- break;
- default:
- as_bad (_("bad padd / psub pmuls output operand"));
- }
- /* Generate warning if the destination register for padd / psub
- and pmuls is the same ( only for A0 or A1 ).
- If the last nibble is 1010 then A0 is used in both
- padd / psub and pmuls. If it is 1111 then A1 is used
- as destination register in both padd / psub and pmuls. */
-
- if ((((field_b | reg_efg) & 0x000F) == 0x000A)
- || (((field_b | reg_efg) & 0x000F) == 0x000F))
- as_warn (_("destination register is same for parallel insns"));
- }
- field_b += 0x4000 + reg_efg;
- break;
- default:
- abort ();
- }
- if (cond)
- {
- as_bad (_("condition not followed by conditionalizable insn"));
- cond = 0;
- }
- if (! *op_end)
- break;
- skip_cond_check:
- opcode = find_cooked_opcode (&op_end);
- if (opcode == NULL)
- {
- (as_bad
- (_("unrecognized characters at end of parallel processing insn")));
- break;
- }
- }
-
- move_code = movx | movy;
- if (field_b)
- {
- /* Parallel processing insn. */
- unsigned long ppi_code = (movx | movy | 0xf800) << 16 | field_b;
-
- output = frag_more (4);
- size = 4;
- if (! target_big_endian)
- {
- output[3] = ppi_code >> 8;
- output[2] = ppi_code;
- }
- else
- {
- output[2] = ppi_code >> 8;
- output[3] = ppi_code;
- }
- move_code |= 0xf800;
- }
- else
- {
- /* Just a double data transfer. */
- output = frag_more (2);
- size = 2;
- }
- if (! target_big_endian)
- {
- output[1] = move_code >> 8;
- output[0] = move_code;
- }
- else
- {
- output[0] = move_code >> 8;
- output[1] = move_code;
- }
- return size;
-}
-
-/* This is the guts of the machine-dependent assembler. STR points to a
- machine dependent instruction. This function is supposed to emit
- the frags/bytes it assembles to. */
-
-void
-md_assemble (str)
- char *str;
-{
- unsigned char *op_end;
- sh_operand_info operand[3];
- sh_opcode_info *opcode;
- unsigned int size = 0;
-
-#ifdef HAVE_SH64
- if (sh64_isa_mode == sh64_isa_shmedia)
- {
- shmedia_md_assemble (str);
- return;
- }
- else
- {
- /* If we've seen pseudo-directives, make sure any emitted data or
- frags are marked as data. */
- if (seen_insn == false)
- {
- sh64_update_contents_mark (true);
- sh64_set_contents_type (CRT_SH5_ISA16);
- }
-
- seen_insn = true;
- }
-#endif /* HAVE_SH64 */
-
- opcode = find_cooked_opcode (&str);
- op_end = str;
-
- if (opcode == NULL)
- {
- as_bad (_("unknown opcode"));
- return;
- }
-
- if (sh_relax
- && ! seg_info (now_seg)->tc_segment_info_data.in_code)
- {
- /* Output a CODE reloc to tell the linker that the following
- bytes are instructions, not data. */
- fix_new (frag_now, frag_now_fix (), 2, &abs_symbol, 0, 0,
- BFD_RELOC_SH_CODE);
- seg_info (now_seg)->tc_segment_info_data.in_code = 1;
- }
-
- if (opcode->nibbles[0] == PPI)
- {
- size = assemble_ppi (op_end, opcode);
- }
- else
- {
- if (opcode->arg[0] == A_BDISP12
- || opcode->arg[0] == A_BDISP8)
- {
- parse_exp (op_end + 1, &operand[0]);
- build_relax (opcode, &operand[0]);
- }
- else
- {
- if (opcode->arg[0] == A_END)
- {
- /* Ignore trailing whitespace. If there is any, it has already
- been compressed to a single space. */
- if (*op_end == ' ')
- op_end++;
- }
- else
- {
- op_end = get_operands (opcode, op_end, operand);
- }
- opcode = get_specific (opcode, operand);
-
- if (opcode == 0)
- {
- /* Couldn't find an opcode which matched the operands. */
- char *where = frag_more (2);
- size = 2;
-
- where[0] = 0x0;
- where[1] = 0x0;
- as_bad (_("invalid operands for opcode"));
- }
- else
- {
- if (*op_end)
- as_bad (_("excess operands: '%s'"), op_end);
-
- size = build_Mytes (opcode, operand);
- }
- }
- }
-
-#ifdef BFD_ASSEMBLER
- dwarf2_emit_insn (size);
-#endif
-}
-
-/* This routine is called each time a label definition is seen. It
- emits a BFD_RELOC_SH_LABEL reloc if necessary. */
-
-void
-sh_frob_label ()
-{
- static fragS *last_label_frag;
- static int last_label_offset;
-
- if (sh_relax
- && seg_info (now_seg)->tc_segment_info_data.in_code)
- {
- int offset;
-
- offset = frag_now_fix ();
- if (frag_now != last_label_frag
- || offset != last_label_offset)
- {
- fix_new (frag_now, offset, 2, &abs_symbol, 0, 0, BFD_RELOC_SH_LABEL);
- last_label_frag = frag_now;
- last_label_offset = offset;
- }
- }
-}
-
-/* This routine is called when the assembler is about to output some
- data. It emits a BFD_RELOC_SH_DATA reloc if necessary. */
-
-void
-sh_flush_pending_output ()
-{
- if (sh_relax
- && seg_info (now_seg)->tc_segment_info_data.in_code)
- {
- fix_new (frag_now, frag_now_fix (), 2, &abs_symbol, 0, 0,
- BFD_RELOC_SH_DATA);
- seg_info (now_seg)->tc_segment_info_data.in_code = 0;
- }
-}
-
-symbolS *
-md_undefined_symbol (name)
- char *name ATTRIBUTE_UNUSED;
-{
- return 0;
-}
-
-#ifdef OBJ_COFF
-#ifndef BFD_ASSEMBLER
-
-void
-tc_crawl_symbol_chain (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
-{
- printf (_("call to tc_crawl_symbol_chain \n"));
-}
-
-void
-tc_headers_hook (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
-{
- printf (_("call to tc_headers_hook \n"));
-}
-
-#endif
-#endif
-
-/* Various routines to kill one day. */
-/* Equal to MAX_PRECISION in atof-ieee.c. */
-#define MAX_LITTLENUMS 6
-
-/* Turn a string in input_line_pointer into a floating point constant
- of type TYPE, and store the appropriate bytes in *LITP. The number
- of LITTLENUMS emitted is stored in *SIZEP . An error message is
- returned, or NULL on OK. */
-
-char *
-md_atof (type, litP, sizeP)
- int type;
- char *litP;
- int *sizeP;
-{
- int prec;
- LITTLENUM_TYPE words[4];
- char *t;
- int i;
-
- switch (type)
- {
- case 'f':
- prec = 2;
- break;
-
- case 'd':
- prec = 4;
- break;
-
- default:
- *sizeP = 0;
- return _("bad call to md_atof");
- }
-
- t = atof_ieee (input_line_pointer, type, words);
- if (t)
- input_line_pointer = t;
-
- *sizeP = prec * 2;
-
- if (! target_big_endian)
- {
- for (i = prec - 1; i >= 0; i--)
- {
- md_number_to_chars (litP, (valueT) words[i], 2);
- litP += 2;
- }
- }
- else
- {
- for (i = 0; i < prec; i++)
- {
- md_number_to_chars (litP, (valueT) words[i], 2);
- litP += 2;
- }
- }
-
- return NULL;
-}
-
-/* Handle the .uses pseudo-op. This pseudo-op is used just before a
- call instruction. It refers to a label of the instruction which
- loads the register which the call uses. We use it to generate a
- special reloc for the linker. */
-
-static void
-s_uses (ignore)
- int ignore ATTRIBUTE_UNUSED;
-{
- expressionS ex;
-
- if (! sh_relax)
- as_warn (_(".uses pseudo-op seen when not relaxing"));
-
- expression (&ex);
-
- if (ex.X_op != O_symbol || ex.X_add_number != 0)
- {
- as_bad (_("bad .uses format"));
- ignore_rest_of_line ();
- return;
- }
-
- fix_new_exp (frag_now, frag_now_fix (), 2, &ex, 1, BFD_RELOC_SH_USES);
-
- demand_empty_rest_of_line ();
-}
-
-const char *md_shortopts = "";
-struct option md_longopts[] =
-{
-#define OPTION_RELAX (OPTION_MD_BASE)
-#define OPTION_BIG (OPTION_MD_BASE + 1)
-#define OPTION_LITTLE (OPTION_BIG + 1)
-#define OPTION_SMALL (OPTION_LITTLE + 1)
-#define OPTION_DSP (OPTION_SMALL + 1)
-
- {"relax", no_argument, NULL, OPTION_RELAX},
- {"big", no_argument, NULL, OPTION_BIG},
- {"little", no_argument, NULL, OPTION_LITTLE},
- {"small", no_argument, NULL, OPTION_SMALL},
- {"dsp", no_argument, NULL, OPTION_DSP},
-#ifdef HAVE_SH64
-#define OPTION_ISA (OPTION_DSP + 1)
-#define OPTION_ABI (OPTION_ISA + 1)
-#define OPTION_NO_MIX (OPTION_ABI + 1)
-#define OPTION_SHCOMPACT_CONST_CRANGE (OPTION_NO_MIX + 1)
-#define OPTION_NO_EXPAND (OPTION_SHCOMPACT_CONST_CRANGE + 1)
-#define OPTION_PT32 (OPTION_NO_EXPAND + 1)
- {"isa", required_argument, NULL, OPTION_ISA},
- {"abi", required_argument, NULL, OPTION_ABI},
- {"no-mix", no_argument, NULL, OPTION_NO_MIX},
- {"shcompact-const-crange", no_argument, NULL, OPTION_SHCOMPACT_CONST_CRANGE},
- {"no-expand", no_argument, NULL, OPTION_NO_EXPAND},
- {"expand-pt32", no_argument, NULL, OPTION_PT32},
-#endif /* HAVE_SH64 */
-
- {NULL, no_argument, NULL, 0}
-};
-size_t md_longopts_size = sizeof (md_longopts);
-
-int
-md_parse_option (c, arg)
- int c;
- char *arg ATTRIBUTE_UNUSED;
-{
- switch (c)
- {
- case OPTION_RELAX:
- sh_relax = 1;
- break;
-
- case OPTION_BIG:
- target_big_endian = 1;
- break;
-
- case OPTION_LITTLE:
- target_big_endian = 0;
- break;
-
- case OPTION_SMALL:
- sh_small = 1;
- break;
-
- case OPTION_DSP:
- sh_dsp = 1;
- break;
-
-#ifdef HAVE_SH64
- case OPTION_ISA:
- if (strcasecmp (arg, "shmedia") == 0)
- {
- if (sh64_isa_mode == sh64_isa_shcompact)
- as_bad (_("Invalid combination: --isa=SHcompact with --isa=SHmedia"));
- sh64_isa_mode = sh64_isa_shmedia;
- }
- else if (strcasecmp (arg, "shcompact") == 0)
- {
- if (sh64_isa_mode == sh64_isa_shmedia)
- as_bad (_("Invalid combination: --isa=SHmedia with --isa=SHcompact"));
- if (sh64_abi == sh64_abi_64)
- as_bad (_("Invalid combination: --abi=64 with --isa=SHcompact"));
- sh64_isa_mode = sh64_isa_shcompact;
- }
- else
- as_bad ("Invalid argument to --isa option: %s", arg);
- break;
-
- case OPTION_ABI:
- if (strcmp (arg, "32") == 0)
- {
- if (sh64_abi == sh64_abi_64)
- as_bad (_("Invalid combination: --abi=32 with --abi=64"));
- sh64_abi = sh64_abi_32;
- }
- else if (strcmp (arg, "64") == 0)
- {
- if (sh64_abi == sh64_abi_32)
- as_bad (_("Invalid combination: --abi=64 with --abi=32"));
- if (sh64_isa_mode == sh64_isa_shcompact)
- as_bad (_("Invalid combination: --isa=SHcompact with --abi=64"));
- sh64_abi = sh64_abi_64;
- }
- else
- as_bad ("Invalid argument to --abi option: %s", arg);
- break;
-
- case OPTION_NO_MIX:
- sh64_mix = false;
- break;
-
- case OPTION_SHCOMPACT_CONST_CRANGE:
- sh64_shcompact_const_crange = true;
- break;
-
- case OPTION_NO_EXPAND:
- sh64_expand = false;
- break;
-
- case OPTION_PT32:
- sh64_pt32 = true;
- break;
-#endif /* HAVE_SH64 */
-
- default:
- return 0;
- }
-
- return 1;
-}
-
-void
-md_show_usage (stream)
- FILE *stream;
-{
- fprintf (stream, _("\
-SH options:\n\
--little generate little endian code\n\
--big generate big endian code\n\
--relax alter jump instructions for long displacements\n\
--small align sections to 4 byte boundaries, not 16\n\
--dsp enable sh-dsp insns, and disable sh3e / sh4 insns.\n"));
-#ifdef HAVE_SH64
- fprintf (stream, _("\
--isa=[shmedia set default instruction set for SH64\n\
- | SHmedia\n\
- | shcompact\n\
- | SHcompact]\n\
--abi=[32|64] set size of expanded SHmedia operands and object\n\
- file type\n\
--shcompact-const-crange emit code-range descriptors for constants in\n\
- SHcompact code sections\n\
--no-mix disallow SHmedia code in the same section as\n\
- constants and SHcompact code\n\
--no-expand do not expand MOVI, PT, PTA or PTB instructions\n\
--expand-pt32 with -abi=64, expand PT, PTA and PTB instructions\n\
- to 32 bits only"));
-#endif /* HAVE_SH64 */
-}
-
-/* This struct is used to pass arguments to sh_count_relocs through
- bfd_map_over_sections. */
-
-struct sh_count_relocs
-{
- /* Symbol we are looking for. */
- symbolS *sym;
- /* Count of relocs found. */
- int count;
-};
-
-/* Count the number of fixups in a section which refer to a particular
- symbol. When using BFD_ASSEMBLER, this is called via
- bfd_map_over_sections. */
-
-static void
-sh_count_relocs (abfd, sec, data)
- bfd *abfd ATTRIBUTE_UNUSED;
- segT sec;
- PTR data;
-{
- struct sh_count_relocs *info = (struct sh_count_relocs *) data;
- segment_info_type *seginfo;
- symbolS *sym;
- fixS *fix;
-
- seginfo = seg_info (sec);
- if (seginfo == NULL)
- return;
-
- sym = info->sym;
- for (fix = seginfo->fix_root; fix != NULL; fix = fix->fx_next)
- {
- if (fix->fx_addsy == sym)
- {
- ++info->count;
- fix->fx_tcbit = 1;
- }
- }
-}
-
-/* Handle the count relocs for a particular section. When using
- BFD_ASSEMBLER, this is called via bfd_map_over_sections. */
-
-static void
-sh_frob_section (abfd, sec, ignore)
- bfd *abfd ATTRIBUTE_UNUSED;
- segT sec;
- PTR ignore ATTRIBUTE_UNUSED;
-{
- segment_info_type *seginfo;
- fixS *fix;
-
- seginfo = seg_info (sec);
- if (seginfo == NULL)
- return;
-
- for (fix = seginfo->fix_root; fix != NULL; fix = fix->fx_next)
- {
- symbolS *sym;
- bfd_vma val;
- fixS *fscan;
- struct sh_count_relocs info;
-
- if (fix->fx_r_type != BFD_RELOC_SH_USES)
- continue;
-
- /* The BFD_RELOC_SH_USES reloc should refer to a defined local
- symbol in the same section. */
- sym = fix->fx_addsy;
- if (sym == NULL
- || fix->fx_subsy != NULL
- || fix->fx_addnumber != 0
- || S_GET_SEGMENT (sym) != sec
-#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF)
- || S_GET_STORAGE_CLASS (sym) == C_EXT
-#endif
- || S_IS_EXTERNAL (sym))
- {
- as_warn_where (fix->fx_file, fix->fx_line,
- _(".uses does not refer to a local symbol in the same section"));
- continue;
- }
-
- /* Look through the fixups again, this time looking for one
- at the same location as sym. */
- val = S_GET_VALUE (sym);
- for (fscan = seginfo->fix_root;
- fscan != NULL;
- fscan = fscan->fx_next)
- if (val == fscan->fx_frag->fr_address + fscan->fx_where
- && fscan->fx_r_type != BFD_RELOC_SH_ALIGN
- && fscan->fx_r_type != BFD_RELOC_SH_CODE
- && fscan->fx_r_type != BFD_RELOC_SH_DATA
- && fscan->fx_r_type != BFD_RELOC_SH_LABEL)
- break;
- if (fscan == NULL)
- {
- as_warn_where (fix->fx_file, fix->fx_line,
- _("can't find fixup pointed to by .uses"));
- continue;
- }
-
- if (fscan->fx_tcbit)
- {
- /* We've already done this one. */
- continue;
- }
-
- /* The variable fscan should also be a fixup to a local symbol
- in the same section. */
- sym = fscan->fx_addsy;
- if (sym == NULL
- || fscan->fx_subsy != NULL
- || fscan->fx_addnumber != 0
- || S_GET_SEGMENT (sym) != sec
-#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF)
- || S_GET_STORAGE_CLASS (sym) == C_EXT
-#endif
- || S_IS_EXTERNAL (sym))
- {
- as_warn_where (fix->fx_file, fix->fx_line,
- _(".uses target does not refer to a local symbol in the same section"));
- continue;
- }
-
- /* Now we look through all the fixups of all the sections,
- counting the number of times we find a reference to sym. */
- info.sym = sym;
- info.count = 0;
-#ifdef BFD_ASSEMBLER
- bfd_map_over_sections (stdoutput, sh_count_relocs, (PTR) &info);
-#else
- {
- int iscan;
-
- for (iscan = SEG_E0; iscan < SEG_UNKNOWN; iscan++)
- sh_count_relocs ((bfd *) NULL, iscan, (PTR) &info);
- }
-#endif
-
- if (info.count < 1)
- abort ();
-
- /* Generate a BFD_RELOC_SH_COUNT fixup at the location of sym.
- We have already adjusted the value of sym to include the
- fragment address, so we undo that adjustment here. */
- subseg_change (sec, 0);
- fix_new (fscan->fx_frag,
- S_GET_VALUE (sym) - fscan->fx_frag->fr_address,
- 4, &abs_symbol, info.count, 0, BFD_RELOC_SH_COUNT);
- }
-}
-
-/* This function is called after the symbol table has been completed,
- but before the relocs or section contents have been written out.
- If we have seen any .uses pseudo-ops, they point to an instruction
- which loads a register with the address of a function. We look
- through the fixups to find where the function address is being
- loaded from. We then generate a COUNT reloc giving the number of
- times that function address is referred to. The linker uses this
- information when doing relaxing, to decide when it can eliminate
- the stored function address entirely. */
-
-void
-sh_frob_file ()
-{
-#ifdef HAVE_SH64
- shmedia_frob_file_before_adjust ();
-#endif
-
- if (! sh_relax)
- return;
-
-#ifdef BFD_ASSEMBLER
- bfd_map_over_sections (stdoutput, sh_frob_section, (PTR) NULL);
-#else
- {
- int iseg;
-
- for (iseg = SEG_E0; iseg < SEG_UNKNOWN; iseg++)
- sh_frob_section ((bfd *) NULL, iseg, (PTR) NULL);
- }
-#endif
-}
-
-/* Called after relaxing. Set the correct sizes of the fragments, and
- create relocs so that md_apply_fix3 will fill in the correct values. */
-
-void
-md_convert_frag (headers, seg, fragP)
-#ifdef BFD_ASSEMBLER
- bfd *headers ATTRIBUTE_UNUSED;
-#else
- object_headers *headers ATTRIBUTE_UNUSED;
-#endif
- segT seg;
- fragS *fragP;
-{
- int donerelax = 0;
-
- switch (fragP->fr_subtype)
- {
- case C (COND_JUMP, COND8):
- case C (COND_JUMP_DELAY, COND8):
- subseg_change (seg, 0);
- fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, fragP->fr_offset,
- 1, BFD_RELOC_SH_PCDISP8BY2);
- fragP->fr_fix += 2;
- fragP->fr_var = 0;
- break;
-
- case C (UNCOND_JUMP, UNCOND12):
- subseg_change (seg, 0);
- fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, fragP->fr_offset,
- 1, BFD_RELOC_SH_PCDISP12BY2);
- fragP->fr_fix += 2;
- fragP->fr_var = 0;
- break;
-
- case C (UNCOND_JUMP, UNCOND32):
- case C (UNCOND_JUMP, UNDEF_WORD_DISP):
- if (fragP->fr_symbol == NULL)
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement overflows 12-bit field"));
- else if (S_IS_DEFINED (fragP->fr_symbol))
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement to defined symbol %s overflows 12-bit field"),
- S_GET_NAME (fragP->fr_symbol));
- else
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement to undefined symbol %s overflows 12-bit field"),
- S_GET_NAME (fragP->fr_symbol));
- /* Stabilize this frag, so we don't trip an assert. */
- fragP->fr_fix += fragP->fr_var;
- fragP->fr_var = 0;
- break;
-
- case C (COND_JUMP, COND12):
- case C (COND_JUMP_DELAY, COND12):
- /* A bcond won't fit, so turn it into a b!cond; bra disp; nop. */
- /* I found that a relax failure for gcc.c-torture/execute/930628-1.c
- was due to gas incorrectly relaxing an out-of-range conditional
- branch with delay slot. It turned:
- bf.s L6 (slot mov.l r12,@(44,r0))
- into:
-
-2c: 8f 01 a0 8b bf.s 32 <_main+32> (slot bra L6)
-30: 00 09 nop
-32: 10 cb mov.l r12,@(44,r0)
- Therefore, branches with delay slots have to be handled
- differently from ones without delay slots. */
- {
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
- int highbyte = target_big_endian ? 0 : 1;
- int lowbyte = target_big_endian ? 1 : 0;
- int delay = fragP->fr_subtype == C (COND_JUMP_DELAY, COND12);
-
- /* Toggle the true/false bit of the bcond. */
- buffer[highbyte] ^= 0x2;
-
- /* If this is a delayed branch, we may not put the bra in the
- slot. So we change it to a non-delayed branch, like that:
- b! cond slot_label; bra disp; slot_label: slot_insn
- ??? We should try if swapping the conditional branch and
- its delay-slot insn already makes the branch reach. */
-
- /* Build a relocation to six / four bytes farther on. */
- subseg_change (seg, 0);
- fix_new (fragP, fragP->fr_fix, 2,
-#ifdef BFD_ASSEMBLER
- section_symbol (seg),
-#else
- seg_info (seg)->dot,
-#endif
- fragP->fr_address + fragP->fr_fix + (delay ? 4 : 6),
- 1, BFD_RELOC_SH_PCDISP8BY2);
-
- /* Set up a jump instruction. */
- buffer[highbyte + 2] = 0xa0;
- buffer[lowbyte + 2] = 0;
- fix_new (fragP, fragP->fr_fix + 2, 2, fragP->fr_symbol,
- fragP->fr_offset, 1, BFD_RELOC_SH_PCDISP12BY2);
-
- if (delay)
- {
- buffer[highbyte] &= ~0x4; /* Removes delay slot from branch. */
- fragP->fr_fix += 4;
- }
- else
- {
- /* Fill in a NOP instruction. */
- buffer[highbyte + 4] = 0x0;
- buffer[lowbyte + 4] = 0x9;
-
- fragP->fr_fix += 6;
- }
- fragP->fr_var = 0;
- donerelax = 1;
- }
- break;
-
- case C (COND_JUMP, COND32):
- case C (COND_JUMP_DELAY, COND32):
- case C (COND_JUMP, UNDEF_WORD_DISP):
- case C (COND_JUMP_DELAY, UNDEF_WORD_DISP):
- if (fragP->fr_symbol == NULL)
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement overflows 8-bit field"));
- else if (S_IS_DEFINED (fragP->fr_symbol))
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement to defined symbol %s overflows 8-bit field"),
- S_GET_NAME (fragP->fr_symbol));
- else
- as_bad_where (fragP->fr_file, fragP->fr_line,
- _("displacement to undefined symbol %s overflows 8-bit field "),
- S_GET_NAME (fragP->fr_symbol));
- /* Stabilize this frag, so we don't trip an assert. */
- fragP->fr_fix += fragP->fr_var;
- fragP->fr_var = 0;
- break;
-
- default:
-#ifdef HAVE_SH64
- shmedia_md_convert_frag (headers, seg, fragP, true);
-#else
- abort ();
-#endif
- }
-
- if (donerelax && !sh_relax)
- as_warn_where (fragP->fr_file, fragP->fr_line,
- _("overflow in branch to %s; converted into longer instruction sequence"),
- (fragP->fr_symbol != NULL
- ? S_GET_NAME (fragP->fr_symbol)
- : ""));
-}
-
-valueT
-md_section_align (seg, size)
- segT seg ATTRIBUTE_UNUSED;
- valueT size;
-{
-#ifdef BFD_ASSEMBLER
-#ifdef OBJ_ELF
- return size;
-#else /* ! OBJ_ELF */
- return ((size + (1 << bfd_get_section_alignment (stdoutput, seg)) - 1)
- & (-1 << bfd_get_section_alignment (stdoutput, seg)));
-#endif /* ! OBJ_ELF */
-#else /* ! BFD_ASSEMBLER */
- return ((size + (1 << section_alignment[(int) seg]) - 1)
- & (-1 << section_alignment[(int) seg]));
-#endif /* ! BFD_ASSEMBLER */
-}
-
-/* This static variable is set by s_uacons to tell sh_cons_align that
- the expession does not need to be aligned. */
-
-static int sh_no_align_cons = 0;
-
-/* This handles the unaligned space allocation pseudo-ops, such as
- .uaword. .uaword is just like .word, but the value does not need
- to be aligned. */
-
-static void
-s_uacons (bytes)
- int bytes;
-{
- /* Tell sh_cons_align not to align this value. */
- sh_no_align_cons = 1;
- cons (bytes);
-}
-
-/* If a .word, et. al., pseud-op is seen, warn if the value is not
- aligned correctly. Note that this can cause warnings to be issued
- when assembling initialized structured which were declared with the
- packed attribute. FIXME: Perhaps we should require an option to
- enable this warning? */
-
-void
-sh_cons_align (nbytes)
- int nbytes;
-{
- int nalign;
- char *p;
-
- if (sh_no_align_cons)
- {
- /* This is an unaligned pseudo-op. */
- sh_no_align_cons = 0;
- return;
- }
-
- nalign = 0;
- while ((nbytes & 1) == 0)
- {
- ++nalign;
- nbytes >>= 1;
- }
-
- if (nalign == 0)
- return;
-
- if (now_seg == absolute_section)
- {
- if ((abs_section_offset & ((1 << nalign) - 1)) != 0)
- as_warn (_("misaligned data"));
- return;
- }
-
- p = frag_var (rs_align_test, 1, 1, (relax_substateT) 0,
- (symbolS *) NULL, (offsetT) nalign, (char *) NULL);
-
- record_alignment (now_seg, nalign);
-}
-
-/* When relaxing, we need to output a reloc for any .align directive
- that requests alignment to a four byte boundary or larger. This is
- also where we check for misaligned data. */
-
-void
-sh_handle_align (frag)
- fragS *frag;
-{
- int bytes = frag->fr_next->fr_address - frag->fr_address - frag->fr_fix;
-
- if (frag->fr_type == rs_align_code)
- {
- static const unsigned char big_nop_pattern[] = { 0x00, 0x09 };
- static const unsigned char little_nop_pattern[] = { 0x09, 0x00 };
-
- char *p = frag->fr_literal + frag->fr_fix;
-
- if (bytes & 1)
- {
- *p++ = 0;
- bytes--;
- frag->fr_fix += 1;
- }
-
- if (target_big_endian)
- {
- memcpy (p, big_nop_pattern, sizeof big_nop_pattern);
- frag->fr_var = sizeof big_nop_pattern;
- }
- else
- {
- memcpy (p, little_nop_pattern, sizeof little_nop_pattern);
- frag->fr_var = sizeof little_nop_pattern;
- }
- }
- else if (frag->fr_type == rs_align_test)
- {
- if (bytes != 0)
- as_warn_where (frag->fr_file, frag->fr_line, _("misaligned data"));
- }
-
- if (sh_relax
- && (frag->fr_type == rs_align
- || frag->fr_type == rs_align_code)
- && frag->fr_address + frag->fr_fix > 0
- && frag->fr_offset > 1
- && now_seg != bss_section)
- fix_new (frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset, 0,
- BFD_RELOC_SH_ALIGN);
-}
-
-/* This macro decides whether a particular reloc is an entry in a
- switch table. It is used when relaxing, because the linker needs
- to know about all such entries so that it can adjust them if
- necessary. */
-
-#ifdef BFD_ASSEMBLER
-#define SWITCH_TABLE_CONS(fix) (0)
-#else
-#define SWITCH_TABLE_CONS(fix) \
- ((fix)->fx_r_type == 0 \
- && ((fix)->fx_size == 2 \
- || (fix)->fx_size == 1 \
- || (fix)->fx_size == 4))
-#endif
-
-#define SWITCH_TABLE(fix) \
- ((fix)->fx_addsy != NULL \
- && (fix)->fx_subsy != NULL \
- && S_GET_SEGMENT ((fix)->fx_addsy) == text_section \
- && S_GET_SEGMENT ((fix)->fx_subsy) == text_section \
- && ((fix)->fx_r_type == BFD_RELOC_32 \
- || (fix)->fx_r_type == BFD_RELOC_16 \
- || (fix)->fx_r_type == BFD_RELOC_8 \
- || SWITCH_TABLE_CONS (fix)))
-
-/* See whether we need to force a relocation into the output file.
- This is used to force out switch and PC relative relocations when
- relaxing. */
-
-int
-sh_force_relocation (fix)
- fixS *fix;
-{
-
- if (fix->fx_r_type == BFD_RELOC_VTABLE_INHERIT
- || fix->fx_r_type == BFD_RELOC_VTABLE_ENTRY
- || fix->fx_r_type == BFD_RELOC_SH_LOOP_START
- || fix->fx_r_type == BFD_RELOC_SH_LOOP_END)
- return 1;
-
- if (! sh_relax)
- return 0;
-
- return (fix->fx_pcrel
- || SWITCH_TABLE (fix)
- || fix->fx_r_type == BFD_RELOC_SH_COUNT
- || fix->fx_r_type == BFD_RELOC_SH_ALIGN
- || fix->fx_r_type == BFD_RELOC_SH_CODE
- || fix->fx_r_type == BFD_RELOC_SH_DATA
-#ifdef HAVE_SH64
- || fix->fx_r_type == BFD_RELOC_SH_SHMEDIA_CODE
-#endif
- || fix->fx_r_type == BFD_RELOC_SH_LABEL);
-}
-
-#ifdef OBJ_ELF
-boolean
-sh_fix_adjustable (fixP)
- fixS *fixP;
-{
-
- if (fixP->fx_addsy == NULL)
- return 1;
-
- if (fixP->fx_r_type == BFD_RELOC_SH_PCDISP8BY2
- || fixP->fx_r_type == BFD_RELOC_SH_PCDISP12BY2
- || fixP->fx_r_type == BFD_RELOC_SH_PCRELIMM8BY2
- || fixP->fx_r_type == BFD_RELOC_SH_PCRELIMM8BY4
- || fixP->fx_r_type == BFD_RELOC_8_PCREL
- || fixP->fx_r_type == BFD_RELOC_SH_SWITCH16
- || fixP->fx_r_type == BFD_RELOC_SH_SWITCH32)
- return 1;
-
- if (! TC_RELOC_RTSYM_LOC_FIXUP (fixP)
- || fixP->fx_r_type == BFD_RELOC_RVA)
- return 0;
-
- /* We need the symbol name for the VTABLE entries */
- if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
- || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
- return 0;
-
- return 1;
-}
-
-void
-sh_elf_final_processing ()
-{
- int val;
-
- /* Set file-specific flags to indicate if this code needs
- a processor with the sh-dsp / sh3e ISA to execute. */
-#ifdef HAVE_SH64
- /* SH5 and above don't know about the valid_arch arch_sh* bits defined
- in sh-opc.h, so check SH64 mode before checking valid_arch. */
- if (sh64_isa_mode != sh64_isa_unspecified)
- val = EF_SH5;
- else
-#endif /* HAVE_SH64 */
- if (valid_arch & arch_sh1)
- val = EF_SH1;
- else if (valid_arch & arch_sh2)
- val = EF_SH2;
- else if (valid_arch & arch_sh_dsp)
- val = EF_SH_DSP;
- else if (valid_arch & arch_sh3)
- val = EF_SH3;
- else if (valid_arch & arch_sh3_dsp)
- val = EF_SH_DSP;
- else if (valid_arch & arch_sh3e)
- val = EF_SH3E;
- else if (valid_arch & arch_sh4)
- val = EF_SH4;
- else
- abort ();
-
- elf_elfheader (stdoutput)->e_flags &= ~EF_SH_MACH_MASK;
- elf_elfheader (stdoutput)->e_flags |= val;
-}
-#endif
-
-/* Apply a fixup to the object file. */
-
-void
-md_apply_fix3 (fixP, valP, seg)
- fixS * fixP;
- valueT * valP;
- segT seg ATTRIBUTE_UNUSED;
-{
- char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
- int lowbyte = target_big_endian ? 1 : 0;
- int highbyte = target_big_endian ? 0 : 1;
- long val = (long) *valP;
- long max, min;
- int shift;
-
-#ifdef BFD_ASSEMBLER
- /* A difference between two symbols, the second of which is in the
- current section, is transformed in a PC-relative relocation to
- the other symbol. We have to adjust the relocation type here. */
- if (fixP->fx_pcrel)
- {
- switch (fixP->fx_r_type)
- {
- default:
- break;
-
- case BFD_RELOC_32:
- fixP->fx_r_type = BFD_RELOC_32_PCREL;
- break;
-
- /* Currently, we only support 32-bit PCREL relocations.
- We'd need a new reloc type to handle 16_PCREL, and
- 8_PCREL is already taken for R_SH_SWITCH8, which
- apparently does something completely different than what
- we need. FIXME. */
- case BFD_RELOC_16:
- bfd_set_error (bfd_error_bad_value);
- return;
-
- case BFD_RELOC_8:
- bfd_set_error (bfd_error_bad_value);
- return;
- }
- }
-
- /* The function adjust_reloc_syms won't convert a reloc against a weak
- symbol into a reloc against a section, but bfd_install_relocation
- will screw up if the symbol is defined, so we have to adjust val here
- to avoid the screw up later.
-
- For ordinary relocs, this does not happen for ELF, since for ELF,
- bfd_install_relocation uses the "special function" field of the
- howto, and does not execute the code that needs to be undone, as long
- as the special function does not return bfd_reloc_continue.
- It can happen for GOT- and PLT-type relocs the way they are
- described in elf32-sh.c as they use bfd_elf_generic_reloc, but it
- doesn't matter here since those relocs don't use VAL; see below. */
- if (OUTPUT_FLAVOR != bfd_target_elf_flavour
- && fixP->fx_addsy != NULL
- && S_IS_WEAK (fixP->fx_addsy))
- val -= S_GET_VALUE (fixP->fx_addsy);
-#endif
-
-#ifndef BFD_ASSEMBLER
- if (fixP->fx_r_type == 0)
- {
- if (fixP->fx_size == 2)
- fixP->fx_r_type = BFD_RELOC_16;
- else if (fixP->fx_size == 4)
- fixP->fx_r_type = BFD_RELOC_32;
- else if (fixP->fx_size == 1)
- fixP->fx_r_type = BFD_RELOC_8;
- else
- abort ();
- }
-#endif
-
- max = min = 0;
- shift = 0;
- switch (fixP->fx_r_type)
- {
- case BFD_RELOC_SH_IMM4:
- max = 0xf;
- *buf = (*buf & 0xf0) | (val & 0xf);
- break;
-
- case BFD_RELOC_SH_IMM4BY2:
- max = 0xf;
- shift = 1;
- *buf = (*buf & 0xf0) | ((val >> 1) & 0xf);
- break;
-
- case BFD_RELOC_SH_IMM4BY4:
- max = 0xf;
- shift = 2;
- *buf = (*buf & 0xf0) | ((val >> 2) & 0xf);
- break;
-
- case BFD_RELOC_SH_IMM8BY2:
- max = 0xff;
- shift = 1;
- *buf = val >> 1;
- break;
-
- case BFD_RELOC_SH_IMM8BY4:
- max = 0xff;
- shift = 2;
- *buf = val >> 2;
- break;
-
- case BFD_RELOC_8:
- case BFD_RELOC_SH_IMM8:
- /* Sometimes the 8 bit value is sign extended (e.g., add) and
- sometimes it is not (e.g., and). We permit any 8 bit value.
- Note that adding further restrictions may invalidate
- reasonable looking assembly code, such as ``and -0x1,r0''. */
- max = 0xff;
- min = -0xff;
- *buf++ = val;
- break;
-
- case BFD_RELOC_SH_PCRELIMM8BY4:
- /* The lower two bits of the PC are cleared before the
- displacement is added in. We can assume that the destination
- is on a 4 byte bounday. If this instruction is also on a 4
- byte boundary, then we want
- (target - here) / 4
- and target - here is a multiple of 4.
- Otherwise, we are on a 2 byte boundary, and we want
- (target - (here - 2)) / 4
- and target - here is not a multiple of 4. Computing
- (target - (here - 2)) / 4 == (target - here + 2) / 4
- works for both cases, since in the first case the addition of
- 2 will be removed by the division. target - here is in the
- variable val. */
- val = (val + 2) / 4;
- if (val & ~0xff)
- as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
- buf[lowbyte] = val;
- break;
-
- case BFD_RELOC_SH_PCRELIMM8BY2:
- val /= 2;
- if (val & ~0xff)
- as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
- buf[lowbyte] = val;
- break;
-
- case BFD_RELOC_SH_PCDISP8BY2:
- val /= 2;
- if (val < -0x80 || val > 0x7f)
- as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
- buf[lowbyte] = val;
- break;
-
- case BFD_RELOC_SH_PCDISP12BY2:
- val /= 2;
- if (val < -0x800 || val > 0x7ff)
- as_bad_where (fixP->fx_file, fixP->fx_line, _("pcrel too far"));
- buf[lowbyte] = val & 0xff;
- buf[highbyte] |= (val >> 8) & 0xf;
- break;
-
- case BFD_RELOC_32:
- case BFD_RELOC_32_PCREL:
- md_number_to_chars (buf, val, 4);
- break;
-
- case BFD_RELOC_16:
- md_number_to_chars (buf, val, 2);
- break;
-
- case BFD_RELOC_SH_USES:
- /* Pass the value into sh_coff_reloc_mangle. */
- fixP->fx_addnumber = val;
- break;
-
- case BFD_RELOC_SH_COUNT:
- case BFD_RELOC_SH_ALIGN:
- case BFD_RELOC_SH_CODE:
- case BFD_RELOC_SH_DATA:
- case BFD_RELOC_SH_LABEL:
- /* Nothing to do here. */
- break;
-
- case BFD_RELOC_SH_LOOP_START:
- case BFD_RELOC_SH_LOOP_END:
-
- case BFD_RELOC_VTABLE_INHERIT:
- case BFD_RELOC_VTABLE_ENTRY:
- fixP->fx_done = 0;
- return;
-
-#ifdef OBJ_ELF
- case BFD_RELOC_32_PLT_PCREL:
- /* Make the jump instruction point to the address of the operand. At
- runtime we merely add the offset to the actual PLT entry. */
- * valP = 0xfffffffc;
- val = fixP->fx_addnumber;
- if (fixP->fx_subsy)
- val -= S_GET_VALUE (fixP->fx_subsy);
- md_number_to_chars (buf, val, 4);
- break;
-
- case BFD_RELOC_SH_GOTPC:
- /* This is tough to explain. We end up with this one if we have
- operands that look like "_GLOBAL_OFFSET_TABLE_+[.-.L284]".
- The goal here is to obtain the absolute address of the GOT,
- and it is strongly preferable from a performance point of
- view to avoid using a runtime relocation for this. There are
- cases where you have something like:
-
- .long _GLOBAL_OFFSET_TABLE_+[.-.L66]
-
- and here no correction would be required. Internally in the
- assembler we treat operands of this form as not being pcrel
- since the '.' is explicitly mentioned, and I wonder whether
- it would simplify matters to do it this way. Who knows. In
- earlier versions of the PIC patches, the pcrel_adjust field
- was used to store the correction, but since the expression is
- not pcrel, I felt it would be confusing to do it this way. */
- * valP -= 1;
- md_number_to_chars (buf, val, 4);
- break;
-
- case BFD_RELOC_32_GOT_PCREL:
- case BFD_RELOC_SH_GOTPLT32:
- * valP = 0; /* Fully resolved at runtime. No addend. */
- md_number_to_chars (buf, 0, 4);
- break;
-
- case BFD_RELOC_32_GOTOFF:
- md_number_to_chars (buf, val, 4);
- break;
-#endif
-
- default:
-#ifdef HAVE_SH64
- shmedia_md_apply_fix3 (fixP, valP);
- return;
-#else
- abort ();
-#endif
- }
-
- if (shift != 0)
- {
- if ((val & ((1 << shift) - 1)) != 0)
- as_bad_where (fixP->fx_file, fixP->fx_line, _("misaligned offset"));
- if (val >= 0)
- val >>= shift;
- else
- val = ((val >> shift)
- | ((long) -1 & ~ ((long) -1 >> shift)));
- }
- if (max != 0 && (val < min || val > max))
- as_bad_where (fixP->fx_file, fixP->fx_line, _("offset out of range"));
-
- if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
- fixP->fx_done = 1;
-}
-
-/* Called just before address relaxation. Return the length
- by which a fragment must grow to reach it's destination. */
-
-int
-md_estimate_size_before_relax (fragP, segment_type)
- register fragS *fragP;
- register segT segment_type;
-{
- int what;
-
- switch (fragP->fr_subtype)
- {
- default:
-#ifdef HAVE_SH64
- return shmedia_md_estimate_size_before_relax (fragP, segment_type);
-#else
- abort ();
-#endif
-
-
- case C (UNCOND_JUMP, UNDEF_DISP):
- /* Used to be a branch to somewhere which was unknown. */
- if (!fragP->fr_symbol)
- {
- fragP->fr_subtype = C (UNCOND_JUMP, UNCOND12);
- }
- else if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type)
- {
- fragP->fr_subtype = C (UNCOND_JUMP, UNCOND12);
- }
- else
- {
- fragP->fr_subtype = C (UNCOND_JUMP, UNDEF_WORD_DISP);
- }
- break;
-
- case C (COND_JUMP, UNDEF_DISP):
- case C (COND_JUMP_DELAY, UNDEF_DISP):
- what = GET_WHAT (fragP->fr_subtype);
- /* Used to be a branch to somewhere which was unknown. */
- if (fragP->fr_symbol
- && S_GET_SEGMENT (fragP->fr_symbol) == segment_type)
- {
- /* Got a symbol and it's defined in this segment, become byte
- sized - maybe it will fix up. */
- fragP->fr_subtype = C (what, COND8);
- }
- else if (fragP->fr_symbol)
- {
- /* Its got a segment, but its not ours, so it will always be long. */
- fragP->fr_subtype = C (what, UNDEF_WORD_DISP);
- }
- else
- {
- /* We know the abs value. */
- fragP->fr_subtype = C (what, COND8);
- }
- break;
-
- case C (UNCOND_JUMP, UNCOND12):
- case C (UNCOND_JUMP, UNCOND32):
- case C (UNCOND_JUMP, UNDEF_WORD_DISP):
- case C (COND_JUMP, COND8):
- case C (COND_JUMP, COND12):
- case C (COND_JUMP, COND32):
- case C (COND_JUMP, UNDEF_WORD_DISP):
- case C (COND_JUMP_DELAY, COND8):
- case C (COND_JUMP_DELAY, COND12):
- case C (COND_JUMP_DELAY, COND32):
- case C (COND_JUMP_DELAY, UNDEF_WORD_DISP):
- /* When relaxing a section for the second time, we don't need to
- do anything besides return the current size. */
- break;
- }
-
- fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length;
- return fragP->fr_var;
-}
-
-/* Put number into target byte order. */
-
-void
-md_number_to_chars (ptr, use, nbytes)
- char *ptr;
- valueT use;
- int nbytes;
-{
-#ifdef HAVE_SH64
- /* We might need to set the contents type to data. */
- sh64_flag_output ();
-#endif
-
- if (! target_big_endian)
- number_to_chars_littleendian (ptr, use, nbytes);
- else
- number_to_chars_bigendian (ptr, use, nbytes);
-}
-
-/* This version is used in obj-coff.c when not using BFD_ASSEMBLER.
- eg for the sh-hms target. */
-
-long
-md_pcrel_from (fixP)
- fixS *fixP;
-{
- return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address + 2;
-}
-
-long
-md_pcrel_from_section (fixP, sec)
- fixS *fixP;
- segT sec;
-{
- if (fixP->fx_addsy != (symbolS *) NULL
- && (! S_IS_DEFINED (fixP->fx_addsy)
- || S_IS_EXTERN (fixP->fx_addsy)
- || S_IS_WEAK (fixP->fx_addsy)
- || S_GET_SEGMENT (fixP->fx_addsy) != sec))
- {
- /* The symbol is undefined (or is defined but not in this section,
- or we're not sure about it being the final definition). Let the
- linker figure it out. We need to adjust the subtraction of a
- symbol to the position of the relocated data, though. */
- return fixP->fx_subsy ? fixP->fx_where + fixP->fx_frag->fr_address : 0;
- }
-
- return md_pcrel_from (fixP);
-}
-
-#ifdef OBJ_COFF
-
-int
-tc_coff_sizemachdep (frag)
- fragS *frag;
-{
- return md_relax_table[frag->fr_subtype].rlx_length;
-}
-
-#endif /* OBJ_COFF */
-
-#ifndef BFD_ASSEMBLER
-#ifdef OBJ_COFF
-
-/* Map BFD relocs to SH COFF relocs. */
-
-struct reloc_map
-{
- bfd_reloc_code_real_type bfd_reloc;
- int sh_reloc;
-};
-
-static const struct reloc_map coff_reloc_map[] =
-{
- { BFD_RELOC_32, R_SH_IMM32 },
- { BFD_RELOC_16, R_SH_IMM16 },
- { BFD_RELOC_8, R_SH_IMM8 },
- { BFD_RELOC_SH_PCDISP8BY2, R_SH_PCDISP8BY2 },
- { BFD_RELOC_SH_PCDISP12BY2, R_SH_PCDISP },
- { BFD_RELOC_SH_IMM4, R_SH_IMM4 },
- { BFD_RELOC_SH_IMM4BY2, R_SH_IMM4BY2 },
- { BFD_RELOC_SH_IMM4BY4, R_SH_IMM4BY4 },
- { BFD_RELOC_SH_IMM8, R_SH_IMM8 },
- { BFD_RELOC_SH_IMM8BY2, R_SH_IMM8BY2 },
- { BFD_RELOC_SH_IMM8BY4, R_SH_IMM8BY4 },
- { BFD_RELOC_SH_PCRELIMM8BY2, R_SH_PCRELIMM8BY2 },
- { BFD_RELOC_SH_PCRELIMM8BY4, R_SH_PCRELIMM8BY4 },
- { BFD_RELOC_8_PCREL, R_SH_SWITCH8 },
- { BFD_RELOC_SH_SWITCH16, R_SH_SWITCH16 },
- { BFD_RELOC_SH_SWITCH32, R_SH_SWITCH32 },
- { BFD_RELOC_SH_USES, R_SH_USES },
- { BFD_RELOC_SH_COUNT, R_SH_COUNT },
- { BFD_RELOC_SH_ALIGN, R_SH_ALIGN },
- { BFD_RELOC_SH_CODE, R_SH_CODE },
- { BFD_RELOC_SH_DATA, R_SH_DATA },
- { BFD_RELOC_SH_LABEL, R_SH_LABEL },
- { BFD_RELOC_UNUSED, 0 }
-};
-
-/* Adjust a reloc for the SH. This is similar to the generic code,
- but does some minor tweaking. */
-
-void
-sh_coff_reloc_mangle (seg, fix, intr, paddr)
- segment_info_type *seg;
- fixS *fix;
- struct internal_reloc *intr;
- unsigned int paddr;
-{
- symbolS *symbol_ptr = fix->fx_addsy;
- symbolS *dot;
-
- intr->r_vaddr = paddr + fix->fx_frag->fr_address + fix->fx_where;
-
- if (! SWITCH_TABLE (fix))
- {
- const struct reloc_map *rm;
-
- for (rm = coff_reloc_map; rm->bfd_reloc != BFD_RELOC_UNUSED; rm++)
- if (rm->bfd_reloc == (bfd_reloc_code_real_type) fix->fx_r_type)
- break;
- if (rm->bfd_reloc == BFD_RELOC_UNUSED)
- as_bad_where (fix->fx_file, fix->fx_line,
- _("Can not represent %s relocation in this object file format"),
- bfd_get_reloc_code_name (fix->fx_r_type));
- intr->r_type = rm->sh_reloc;
- intr->r_offset = 0;
- }
- else
- {
- know (sh_relax);
-
- if (fix->fx_r_type == BFD_RELOC_16)
- intr->r_type = R_SH_SWITCH16;
- else if (fix->fx_r_type == BFD_RELOC_8)
- intr->r_type = R_SH_SWITCH8;
- else if (fix->fx_r_type == BFD_RELOC_32)
- intr->r_type = R_SH_SWITCH32;
- else
- abort ();
-
- /* For a switch reloc, we set r_offset to the difference between
- the reloc address and the subtrahend. When the linker is
- doing relaxing, it can use the determine the starting and
- ending points of the switch difference expression. */
- intr->r_offset = intr->r_vaddr - S_GET_VALUE (fix->fx_subsy);
- }
-
- /* PC relative relocs are always against the current section. */
- if (symbol_ptr == NULL)
- {
- switch (fix->fx_r_type)
- {
- case BFD_RELOC_SH_PCRELIMM8BY2:
- case BFD_RELOC_SH_PCRELIMM8BY4:
- case BFD_RELOC_SH_PCDISP8BY2:
- case BFD_RELOC_SH_PCDISP12BY2:
- case BFD_RELOC_SH_USES:
- symbol_ptr = seg->dot;
- break;
- default:
- break;
- }
- }
-
- if (fix->fx_r_type == BFD_RELOC_SH_USES)
- {
- /* We can't store the offset in the object file, since this
- reloc does not take up any space, so we store it in r_offset.
- The fx_addnumber field was set in md_apply_fix3. */
- intr->r_offset = fix->fx_addnumber;
- }
- else if (fix->fx_r_type == BFD_RELOC_SH_COUNT)
- {
- /* We can't store the count in the object file, since this reloc
- does not take up any space, so we store it in r_offset. The
- fx_offset field was set when the fixup was created in
- sh_coff_frob_file. */
- intr->r_offset = fix->fx_offset;
- /* This reloc is always absolute. */
- symbol_ptr = NULL;
- }
- else if (fix->fx_r_type == BFD_RELOC_SH_ALIGN)
- {
- /* Store the alignment in the r_offset field. */
- intr->r_offset = fix->fx_offset;
- /* This reloc is always absolute. */
- symbol_ptr = NULL;
- }
- else if (fix->fx_r_type == BFD_RELOC_SH_CODE
- || fix->fx_r_type == BFD_RELOC_SH_DATA
- || fix->fx_r_type == BFD_RELOC_SH_LABEL)
- {
- /* These relocs are always absolute. */
- symbol_ptr = NULL;
- }
-
- /* Turn the segment of the symbol into an offset. */
- if (symbol_ptr != NULL)
- {
- dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot;
- if (dot != NULL)
- intr->r_symndx = dot->sy_number;
- else
- intr->r_symndx = symbol_ptr->sy_number;
- }
- else
- intr->r_symndx = -1;
-}
-
-#endif /* OBJ_COFF */
-#endif /* ! BFD_ASSEMBLER */
-
-#ifdef BFD_ASSEMBLER
-
-/* Create a reloc. */
-
-arelent *
-tc_gen_reloc (section, fixp)
- asection *section ATTRIBUTE_UNUSED;
- fixS *fixp;
-{
- arelent *rel;
- bfd_reloc_code_real_type r_type;
-
- rel = (arelent *) xmalloc (sizeof (arelent));
- rel->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
- *rel->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
- rel->address = fixp->fx_frag->fr_address + fixp->fx_where;
-
- if (fixp->fx_subsy
- && S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
- {
- fixp->fx_addnumber -= S_GET_VALUE (fixp->fx_subsy);
- fixp->fx_subsy = 0;
- }
-
- r_type = fixp->fx_r_type;
-
- if (SWITCH_TABLE (fixp))
- {
- rel->addend = rel->address - S_GET_VALUE (fixp->fx_subsy);
- if (r_type == BFD_RELOC_16)
- r_type = BFD_RELOC_SH_SWITCH16;
- else if (r_type == BFD_RELOC_8)
- r_type = BFD_RELOC_8_PCREL;
- else if (r_type == BFD_RELOC_32)
- r_type = BFD_RELOC_SH_SWITCH32;
- else
- abort ();
- }
- else if (r_type == BFD_RELOC_SH_USES)
- rel->addend = fixp->fx_addnumber;
- else if (r_type == BFD_RELOC_SH_COUNT)
- rel->addend = fixp->fx_offset;
- else if (r_type == BFD_RELOC_SH_ALIGN)
- rel->addend = fixp->fx_offset;
- else if (r_type == BFD_RELOC_VTABLE_INHERIT
- || r_type == BFD_RELOC_VTABLE_ENTRY)
- rel->addend = fixp->fx_offset;
- else if (r_type == BFD_RELOC_SH_LOOP_START
- || r_type == BFD_RELOC_SH_LOOP_END)
- rel->addend = fixp->fx_offset;
- else if (r_type == BFD_RELOC_SH_LABEL && fixp->fx_pcrel)
- {
- rel->addend = 0;
- rel->address = rel->addend = fixp->fx_offset;
- }
-#ifdef HAVE_SH64
- else if (shmedia_init_reloc (rel, fixp))
- ;
-#endif
- else if (fixp->fx_pcrel)
- rel->addend = fixp->fx_addnumber;
- else if (r_type == BFD_RELOC_32 || r_type == BFD_RELOC_32_GOTOFF)
- rel->addend = fixp->fx_addnumber;
- else
- rel->addend = 0;
-
- rel->howto = bfd_reloc_type_lookup (stdoutput, r_type);
- if (rel->howto == NULL || fixp->fx_subsy)
- {
- as_bad_where (fixp->fx_file, fixp->fx_line,
- _("Cannot represent relocation type %s"),
- bfd_get_reloc_code_name (r_type));
- /* Set howto to a garbage value so that we can keep going. */
- rel->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);
- assert (rel->howto != NULL);
- }
-
- return rel;
-}
-
-#ifdef OBJ_ELF
-inline static char *
-sh_end_of_match (cont, what)
- char *cont, *what;
-{
- int len = strlen (what);
-
- if (strncasecmp (cont, what, strlen (what)) == 0
- && ! is_part_of_name (cont[len]))
- return cont + len;
-
- return NULL;
-}
-
-int
-sh_parse_name (name, exprP, nextcharP)
- char const *name;
- expressionS *exprP;
- char *nextcharP;
-{
- char *next = input_line_pointer;
- char *next_end;
- int reloc_type;
- segT segment;
-
- exprP->X_op_symbol = NULL;
-
- if (strcmp (name, GLOBAL_OFFSET_TABLE_NAME) == 0)
- {
- if (! GOT_symbol)
- GOT_symbol = symbol_find_or_make (name);
-
- exprP->X_add_symbol = GOT_symbol;
- no_suffix:
- /* If we have an absolute symbol or a reg, then we know its
- value now. */
- segment = S_GET_SEGMENT (exprP->X_add_symbol);
- if (segment == absolute_section)
- {
- exprP->X_op = O_constant;
- exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
- exprP->X_add_symbol = NULL;
- }
- else if (segment == reg_section)
- {
- exprP->X_op = O_register;
- exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
- exprP->X_add_symbol = NULL;
- }
- else
- {
- exprP->X_op = O_symbol;
- exprP->X_add_number = 0;
- }
-
- return 1;
- }
-
- exprP->X_add_symbol = symbol_find_or_make (name);
-
- if (*nextcharP != '@')
- goto no_suffix;
- else if ((next_end = sh_end_of_match (next + 1, "GOTOFF")))
- reloc_type = BFD_RELOC_32_GOTOFF;
- else if ((next_end = sh_end_of_match (next + 1, "GOTPLT")))
- reloc_type = BFD_RELOC_SH_GOTPLT32;
- else if ((next_end = sh_end_of_match (next + 1, "GOT")))
- reloc_type = BFD_RELOC_32_GOT_PCREL;
- else if ((next_end = sh_end_of_match (next + 1, "PLT")))
- reloc_type = BFD_RELOC_32_PLT_PCREL;
- else
- goto no_suffix;
-
- *input_line_pointer = *nextcharP;
- input_line_pointer = next_end;
- *nextcharP = *input_line_pointer;
- *input_line_pointer = '\0';
-
- exprP->X_op = O_PIC_reloc;
- exprP->X_add_number = 0;
- exprP->X_md = reloc_type;
-
- return 1;
-}
-#endif
-#endif /* BFD_ASSEMBLER */
diff --git a/contrib/binutils/gas/config/tc-sh.h b/contrib/binutils/gas/config/tc-sh.h
deleted file mode 100644
index ffe948a7dd6c..000000000000
--- a/contrib/binutils/gas/config/tc-sh.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/* This file is tc-sh.h
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
- 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 2, 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, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#define TC_SH
-
-#define TARGET_ARCH bfd_arch_sh
-
-#if ANSI_PROTOTYPES
-struct segment_info_struct;
-struct internal_reloc;
-#endif
-
-/* Whether -relax was used. */
-extern int sh_relax;
-
-/* Whether -small was used. */
-extern int sh_small;
-
-/* Don't try to break words. */
-#define WORKING_DOT_WORD
-
-/* All SH instructions are multiples of 16 bits. */
-#define DWARF2_LINE_MIN_INSN_LENGTH 2
-
-/* We require .long, et. al., to be aligned correctly. */
-#define md_cons_align(nbytes) sh_cons_align (nbytes)
-extern void sh_cons_align PARAMS ((int));
-
-/* When relaxing, we need to generate relocations for alignment
- directives. */
-#define HANDLE_ALIGN(frag) sh_handle_align (frag)
-extern void sh_handle_align PARAMS ((fragS *));
-
-#define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2)
-
-/* We need to force out some relocations when relaxing. */
-#define TC_FORCE_RELOCATION(fix) sh_force_relocation (fix)
-
-/* The type fixS is defined (to struct fix) in write.h, but write.h uses
- definitions from this file. To avoid problems with including write.h
- after the "right" definitions, don't; just forward-declare struct fix
- here. */
-struct fix;
-extern int sh_force_relocation PARAMS ((struct fix *));
-
-#ifdef OBJ_ELF
-#define obj_fix_adjustable(fixP) sh_fix_adjustable(fixP)
-struct fix;
-extern boolean sh_fix_adjustable PARAMS ((struct fix *));
-
-/* This arranges for gas/write.c to not apply a relocation if
- obj_fix_adjustable() says it is not adjustable. */
-/* ??? fixups with symbols in SEC_MERGE sections are marked with
- obj_fix_adjustable and have a non-section symbol, as in
- "vwxyz"+1 in execute/string-opt-6.c . Maybe the test of
- (symbol_used_in_reloc_p should be done in the machine-independent code. */
-#define TC_FIX_ADJUSTABLE(fixP) \
- (! symbol_used_in_reloc_p (fixP->fx_addsy) && obj_fix_adjustable (fixP))
-#endif
-
-#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
-extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
-
-#define IGNORE_NONSTANDARD_ESCAPES
-
-#define LISTING_HEADER \
- (!target_big_endian \
- ? "Hitachi Super-H GAS Little Endian" : "Hitachi Super-H GAS Big Endian")
-
-#define md_operand(x)
-
-extern const struct relax_type md_relax_table[];
-#define TC_GENERIC_RELAX_TABLE md_relax_table
-
-/* We record, for each section, whether we have most recently output a
- CODE reloc or a DATA reloc. */
-struct sh_segment_info_type
-{
- int in_code : 1;
-};
-#define TC_SEGMENT_INFO_TYPE struct sh_segment_info_type
-
-/* We call a routine to emit a reloc for a label, so that the linker
- can align loads and stores without crossing a label. */
-extern void sh_frob_label PARAMS ((void));
-#define tc_frob_label(sym) sh_frob_label ()
-
-/* We call a routine to flush pending output in order to output a DATA
- reloc when required. */
-extern void sh_flush_pending_output PARAMS ((void));
-#define md_flush_pending_output() sh_flush_pending_output ()
-
-#ifdef BFD_ASSEMBLER
-#define tc_frob_file_before_adjust sh_frob_file
-#else
-#define tc_frob_file sh_frob_file
-#endif
-extern void sh_frob_file PARAMS ((void));
-
-#ifdef OBJ_COFF
-/* COFF specific definitions. */
-
-#define DO_NOT_STRIP 0
-
-/* This macro translates between an internal fix and an coff reloc type */
-#define TC_COFF_FIX2RTYPE(fix) ((fix)->fx_r_type)
-
-#define BFD_ARCH TARGET_ARCH
-
-#define COFF_MAGIC (!target_big_endian ? SH_ARCH_MAGIC_LITTLE : SH_ARCH_MAGIC_BIG)
-
-/* We need to write out relocs which have not been completed. */
-#define TC_COUNT_RELOC(fix) ((fix)->fx_addsy != NULL)
-
-#define TC_RELOC_MANGLE(seg, fix, int, paddr) \
- sh_coff_reloc_mangle ((seg), (fix), (int), (paddr))
-extern void sh_coff_reloc_mangle
- PARAMS ((struct segment_info_struct *, struct fix *,
- struct internal_reloc *, unsigned int));
-
-#define tc_coff_symbol_emit_hook(a) ; /* not used */
-
-#define NEED_FX_R_TYPE 1
-
-#define TC_KEEP_FX_OFFSET 1
-
-#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
-extern int tc_coff_sizemachdep PARAMS ((fragS *));
-
-#ifdef BFD_ASSEMBLER
-#define SEG_NAME(SEG) segment_name (SEG)
-#else
-#define SEG_NAME(SEG) obj_segment_name (SEG)
-#endif
-
-/* We align most sections to a 16 byte boundary. */
-#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \
- (strncmp (SEG_NAME (SEG), ".stabstr", 8) == 0 \
- ? 0 \
- : ((strncmp (SEG_NAME (SEG), ".stab", 5) == 0 \
- || strcmp (SEG_NAME (SEG), ".ctors") == 0 \
- || strcmp (SEG_NAME (SEG), ".dtors") == 0) \
- ? 2 \
- : (sh_small ? 2 : 4)))
-
-#endif /* OBJ_COFF */
-
-#ifdef OBJ_ELF
-/* ELF specific definitions. */
-
-/* Whether or not the target is big endian */
-extern int target_big_endian;
-#ifdef TE_LINUX
-#define TARGET_FORMAT (!target_big_endian ? "elf32-sh-linux" : "elf32-shbig-linux")
-#elif defined(TE_NetBSD)
-#define TARGET_FORMAT (!target_big_endian ? "elf32-shl-nbsd" : "elf32-sh-nbsd")
-#else
-#define TARGET_FORMAT (!target_big_endian ? "elf32-shl" : "elf32-sh")
-#endif
-
-#define elf_tc_final_processing sh_elf_final_processing
-extern void sh_elf_final_processing PARAMS ((void));
-
-#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
-
-#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
-
-/* This is the relocation type for direct references to
- GLOBAL_OFFSET_TABLE. It comes up in complicated expressions such
- as _GLOBAL_OFFSET_TABLE_+[.-.L284], which cannot be expressed
- normally with the regular expressions. The fixup specified here
- when used at runtime implies that we should add the address of the
- GOT to the specified location, and as a result we have simplified
- the expression into something we can use. */
-#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_SH_GOTPC
-
-/* This expression evaluates to false if the relocation is for a local object
- for which we still want to do the relocation at runtime. True if we
- are willing to perform this relocation while building the .o file.
- This is only used for pcrel relocations, so GOTOFF does not need to be
- checked here. I am not sure if some of the others are ever used with
- pcrel, but it is easier to be safe than sorry.
-
- We can't resolve references to the GOT or the PLT when creating the
- object file, since these tables are only created by the linker.
- Also, if the symbol is global, weak, common or not defined, the
- assembler can't compute the appropriate reloc, since its location
- can only be determined at link time. */
-
-#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
- ((FIX)->fx_r_type != BFD_RELOC_32_PLT_PCREL \
- && (FIX)->fx_r_type != BFD_RELOC_32_GOT_PCREL \
- && (FIX)->fx_r_type != BFD_RELOC_SH_GOTPC \
- && ((FIX)->fx_addsy == NULL \
- || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
- && ! S_IS_WEAK ((FIX)->fx_addsy) \
- && S_IS_DEFINED ((FIX)->fx_addsy) \
- && ! S_IS_COMMON ((FIX)->fx_addsy))))
-
-#define md_parse_name(name, exprP, nextcharP) \
- sh_parse_name ((name), (exprP), (nextcharP))
-int sh_parse_name PARAMS ((char const *name,
- expressionS *exprP,
- char *nextchar));
-
-#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
- sh_cons_fix_new ((FRAG), (OFF), (LEN), (EXP))
-void sh_cons_fix_new PARAMS ((fragS *, int, int, expressionS *));
-
-/* This is used to construct expressions out of @GOTOFF, @PLT and @GOT
- symbols. The relocation type is stored in X_md. */
-#define O_PIC_reloc O_md1
-
-#endif /* OBJ_ELF */
diff --git a/contrib/binutils/gas/config/tc-tic30.c b/contrib/binutils/gas/config/tc-tic30.c
deleted file mode 100644
index 1258b1317d54..000000000000
--- a/contrib/binutils/gas/config/tc-tic30.c
+++ /dev/null
@@ -1,1881 +0,0 @@
-/* tc-c30.c -- Assembly code for the Texas Instruments TMS320C30
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
-
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/* Texas Instruments TMS320C30 machine specific gas.
- Written by Steven Haworth (steve@pm.cse.rmit.edu.au).
- Bugs & suggestions are completely welcome. This is free software.
- Please help us make it better. */
-
-#include "as.h"
-#include "safe-ctype.h"
-#include "opcode/tic30.h"
-
-/* Put here all non-digit non-letter charcters that may occur in an
- operand. */
-static char operand_special_chars[] = "%$-+(,)*._~/<>&^!:[@]";
-static char *ordinal_names[] = {
- "first", "second", "third", "fourth", "fifth"
-};
-
-const int md_reloc_size = 0;
-
-const char comment_chars[] = ";";
-const char line_comment_chars[] = "*";
-const char line_separator_chars[] = "";
-
-const char *md_shortopts = "";
-struct option md_longopts[] = {
- {NULL, no_argument, NULL, 0}
-};
-
-size_t md_longopts_size = sizeof (md_longopts);
-
-/* Chars that mean this number is a floating point constant. */
-/* As in 0f12.456 */
-/* or 0d1.2345e12 */
-const char FLT_CHARS[] = "fFdDxX";
-
-/* Chars that can be used to separate mant from exp in floating point
- nums. */
-const char EXP_CHARS[] = "eE";
-
-/* tables for lexical analysis */
-static char opcode_chars[256];
-static char register_chars[256];
-static char operand_chars[256];
-static char space_chars[256];
-static char identifier_chars[256];
-static char digit_chars[256];
-
-/* lexical macros */
-#define is_opcode_char(x) (opcode_chars[(unsigned char) x])
-#define is_operand_char(x) (operand_chars[(unsigned char) x])
-#define is_register_char(x) (register_chars[(unsigned char) x])
-#define is_space_char(x) (space_chars[(unsigned char) x])
-#define is_identifier_char(x) (identifier_chars[(unsigned char) x])
-#define is_digit_char(x) (digit_chars[(unsigned char) x])
-
-const pseudo_typeS md_pseudo_table[] = {
- {0, 0, 0}
-};
-
-#undef USE_STDOUT
-#define USE_STDOUT 1
-
-#ifdef USE_STDARG
-
-#include <stdarg.h>
-
-int
-debug (const char *string, ...)
-{
- if (flag_debug)
- {
- va_list argptr;
- char str[100];
-
- va_start (argptr, string);
- vsprintf (str, string, argptr);
- if (str[0] == '\0')
- return (0);
- va_end (argptr);
- fputs (str, USE_STDOUT ? stdout : stderr);
- return strlen (str);
- }
- else
- return 0;
-}
-#else
-int
-debug (string, va_alist)
- const char *string;
- va_dcl
-{
- if (flag_debug)
- {
- va_list argptr;
- char str[100];
- int cnt;
-
- va_start (argptr, string);
- cnt = vsprintf (str, string, argptr);
- if (str[0] == NULL)
- return (0);
- va_end (argptr);
- fputs (str, USE_STDOUT ? stdout : stderr);
- return (cnt);
- }
- else
- return 0;
-}
-#endif
-
-/* hash table for opcode lookup */
-static struct hash_control *op_hash;
-/* hash table for parallel opcode lookup */
-static struct hash_control *parop_hash;
-/* hash table for register lookup */
-static struct hash_control *reg_hash;
-/* hash table for indirect addressing lookup */
-static struct hash_control *ind_hash;
-
-void
-md_begin ()
-{
- const char *hash_err;
- debug ("In md_begin()\n");
- op_hash = hash_new ();
- {
- const template *current_optab = tic30_optab;
- for (; current_optab < tic30_optab_end; current_optab++)
- {
- hash_err = hash_insert (op_hash, current_optab->name, (char *) current_optab);
- if (hash_err)
- as_fatal ("Internal Error: Can't Hash %s: %s", current_optab->name, hash_err);
- }
- }
- parop_hash = hash_new ();
- {
- const partemplate *current_parop = tic30_paroptab;
- for (; current_parop < tic30_paroptab_end; current_parop++)
- {
- hash_err = hash_insert (parop_hash, current_parop->name, (char *) current_parop);
- if (hash_err)
- as_fatal ("Internal Error: Can't Hash %s: %s", current_parop->name, hash_err);
- }
- }
- reg_hash = hash_new ();
- {
- const reg *current_reg = tic30_regtab;
- for (; current_reg < tic30_regtab_end; current_reg++)
- {
- hash_err = hash_insert (reg_hash, current_reg->name, (char *) current_reg);
- if (hash_err)
- as_fatal ("Internal Error: Can't Hash %s: %s", current_reg->name, hash_err);
- }
- }
- ind_hash = hash_new ();
- {
- const ind_addr_type *current_ind = tic30_indaddr_tab;
- for (; current_ind < tic30_indaddrtab_end; current_ind++)
- {
- hash_err = hash_insert (ind_hash, current_ind->syntax, (char *) current_ind);
- if (hash_err)
- as_fatal ("Internal Error: Can't Hash %s: %s", current_ind->syntax, hash_err);
- }
- }
- /* fill in lexical tables: opcode_chars, operand_chars, space_chars */
- {
- register int c;
- register char *p;
-
- for (c = 0; c < 256; c++)
- {
- if (ISLOWER (c) || ISDIGIT (c))
- {
- opcode_chars[c] = c;
- register_chars[c] = c;
- }
- else if (ISUPPER (c))
- {
- opcode_chars[c] = TOLOWER (c);
- register_chars[c] = opcode_chars[c];
- }
- else if (c == ')' || c == '(')
- {
- register_chars[c] = c;
- }
- if (ISUPPER (c) || ISLOWER (c) || ISDIGIT (c))
- operand_chars[c] = c;
- if (ISDIGIT (c) || c == '-')
- digit_chars[c] = c;
- if (ISALPHA (c) || c == '_' || c == '.' || ISDIGIT (c))
- identifier_chars[c] = c;
- if (c == ' ' || c == '\t')
- space_chars[c] = c;
- if (c == '_')
- opcode_chars[c] = c;
- }
- for (p = operand_special_chars; *p != '\0'; p++)
- operand_chars[(unsigned char) *p] = *p;
- }
-}
-
-/* Address Mode OR values */
-#define AM_Register 0x00000000
-#define AM_Direct 0x00200000
-#define AM_Indirect 0x00400000
-#define AM_Immediate 0x00600000
-#define AM_NotReq 0xFFFFFFFF
-
-/* PC Relative OR values */
-#define PC_Register 0x00000000
-#define PC_Relative 0x02000000
-
-typedef struct {
- unsigned op_type;
- struct {
- int resolved;
- unsigned address;
- char *label;
- expressionS direct_expr;
- } direct;
- struct {
- unsigned mod;
- int ARnum;
- unsigned char disp;
- } indirect;
- struct {
- unsigned opcode;
- } reg;
- struct {
- int resolved;
- int decimal_found;
- float f_number;
- int s_number;
- unsigned int u_number;
- char *label;
- expressionS imm_expr;
- } immediate;
-} operand;
-
-int tic30_parallel_insn PARAMS ((char *));
-operand *tic30_operand PARAMS ((char *));
-char *tic30_find_parallel_insn PARAMS ((char *, char *));
-
-template *opcode;
-
-struct tic30_insn {
- template *tm; /* Template of current instruction */
- unsigned opcode; /* Final opcode */
- int operands; /* Number of given operands */
- /* Type of operand given in instruction */
- operand *operand_type[MAX_OPERANDS];
- unsigned addressing_mode; /* Final addressing mode of instruction */
-};
-
-struct tic30_insn insn;
-static int found_parallel_insn;
-
-void
-md_assemble (line)
- char *line;
-{
- template *opcode;
- char *current_posn;
- char *token_start;
- char save_char;
- int count;
-
- debug ("In md_assemble() with argument %s\n", line);
- memset (&insn, '\0', sizeof (insn));
- if (found_parallel_insn)
- {
- debug ("Line is second part of parallel instruction\n\n");
- found_parallel_insn = 0;
- return;
- }
- if ((current_posn = tic30_find_parallel_insn (line, input_line_pointer + 1)) == NULL)
- current_posn = line;
- else
- found_parallel_insn = 1;
- while (is_space_char (*current_posn))
- current_posn++;
- token_start = current_posn;
- if (!is_opcode_char (*current_posn))
- {
- as_bad ("Invalid character %s in opcode", output_invalid (*current_posn));
- return;
- }
- /* Check if instruction is a parallel instruction by seeing if the first
- character is a q. */
- if (*token_start == 'q')
- {
- if (tic30_parallel_insn (token_start))
- {
- if (found_parallel_insn)
- free (token_start);
- return;
- }
- }
- while (is_opcode_char (*current_posn))
- current_posn++;
- { /* Find instruction */
- save_char = *current_posn;
- *current_posn = '\0';
- opcode = (template *) hash_find (op_hash, token_start);
- if (opcode)
- {
- debug ("Found instruction %s\n", opcode->name);
- insn.tm = opcode;
- }
- else
- {
- debug ("Didn't find insn\n");
- as_bad ("Unknown TMS320C30 instruction: %s", token_start);
- return;
- }
- *current_posn = save_char;
- }
- if (*current_posn != END_OF_INSN)
- { /* Find operands */
- int paren_not_balanced;
- int expecting_operand = 0;
- int this_operand;
- do
- {
- /* skip optional white space before operand */
- while (!is_operand_char (*current_posn) && *current_posn != END_OF_INSN)
- {
- if (!is_space_char (*current_posn))
- {
- as_bad ("Invalid character %s before %s operand",
- output_invalid (*current_posn),
- ordinal_names[insn.operands]);
- return;
- }
- current_posn++;
- }
- token_start = current_posn; /* after white space */
- paren_not_balanced = 0;
- while (paren_not_balanced || *current_posn != ',')
- {
- if (*current_posn == END_OF_INSN)
- {
- if (paren_not_balanced)
- {
- as_bad ("Unbalanced parenthesis in %s operand.",
- ordinal_names[insn.operands]);
- return;
- }
- else
- break; /* we are done */
- }
- else if (!is_operand_char (*current_posn) && !is_space_char (*current_posn))
- {
- as_bad ("Invalid character %s in %s operand",
- output_invalid (*current_posn),
- ordinal_names[insn.operands]);
- return;
- }
- if (*current_posn == '(')
- ++paren_not_balanced;
- if (*current_posn == ')')
- --paren_not_balanced;
- current_posn++;
- }
- if (current_posn != token_start)
- { /* yes, we've read in another operand */
- this_operand = insn.operands++;
- if (insn.operands > MAX_OPERANDS)
- {
- as_bad ("Spurious operands; (%d operands/instruction max)",
- MAX_OPERANDS);
- return;
- }
- /* now parse operand adding info to 'insn' as we go along */
- save_char = *current_posn;
- *current_posn = '\0';
- insn.operand_type[this_operand] = tic30_operand (token_start);
- *current_posn = save_char;
- if (insn.operand_type[this_operand] == NULL)
- return;
- }
- else
- {
- if (expecting_operand)
- {
- as_bad ("Expecting operand after ','; got nothing");
- return;
- }
- if (*current_posn == ',')
- {
- as_bad ("Expecting operand before ','; got nothing");
- return;
- }
- }
- /* now *current_posn must be either ',' or END_OF_INSN */
- if (*current_posn == ',')
- {
- if (*++current_posn == END_OF_INSN)
- { /* just skip it, if it's \n complain */
- as_bad ("Expecting operand after ','; got nothing");
- return;
- }
- expecting_operand = 1;
- }
- }
- while (*current_posn != END_OF_INSN); /* until we get end of insn */
- }
- debug ("Number of operands found: %d\n", insn.operands);
- /* Check that number of operands is correct */
- if (insn.operands != insn.tm->operands)
- {
- int i;
- int numops = insn.tm->operands;
- /* If operands are not the same, then see if any of the operands are not
- required. Then recheck with number of given operands. If they are still not
- the same, then give an error, otherwise carry on. */
- for (i = 0; i < insn.tm->operands; i++)
- if (insn.tm->operand_types[i] & NotReq)
- numops--;
- if (insn.operands != numops)
- {
- as_bad ("Incorrect number of operands given");
- return;
- }
- }
- insn.addressing_mode = AM_NotReq;
- for (count = 0; count < insn.operands; count++)
- {
- if (insn.operand_type[count]->op_type & insn.tm->operand_types[count])
- {
- debug ("Operand %d matches\n", count + 1);
- /* If instruction has two operands and has an AddressMode modifier then set
- addressing mode type for instruction */
- if (insn.tm->opcode_modifier == AddressMode)
- {
- int addr_insn = 0;
- /* Store instruction uses the second operand for the address mode. */
- if ((insn.tm->operand_types[1] & (Indirect | Direct)) == (Indirect | Direct))
- addr_insn = 1;
- if (insn.operand_type[addr_insn]->op_type & (AllReg))
- insn.addressing_mode = AM_Register;
- else if (insn.operand_type[addr_insn]->op_type & Direct)
- insn.addressing_mode = AM_Direct;
- else if (insn.operand_type[addr_insn]->op_type & Indirect)
- insn.addressing_mode = AM_Indirect;
- else
- insn.addressing_mode = AM_Immediate;
- }
- }
- else
- {
- as_bad ("The %s operand doesn't match", ordinal_names[count]);
- return;
- }
- }
- /* Now set the addressing mode for 3 operand instructions. */
- if ((insn.tm->operand_types[0] & op3T1) && (insn.tm->operand_types[1] & op3T2))
- {
- /* Set the addressing mode to the values used for 2 operand instructions in the
- G addressing field of the opcode. */
- char *p;
- switch (insn.operand_type[0]->op_type)
- {
- case Rn:
- case ARn:
- case DPReg:
- case OtherReg:
- if (insn.operand_type[1]->op_type & (AllReg))
- insn.addressing_mode = AM_Register;
- else if (insn.operand_type[1]->op_type & Indirect)
- insn.addressing_mode = AM_Direct;
- else
- {
- /* Shouldn't make it to this stage */
- as_bad ("Incompatible first and second operands in instruction");
- return;
- }
- break;
- case Indirect:
- if (insn.operand_type[1]->op_type & (AllReg))
- insn.addressing_mode = AM_Indirect;
- else if (insn.operand_type[1]->op_type & Indirect)
- insn.addressing_mode = AM_Immediate;
- else
- {
- /* Shouldn't make it to this stage */
- as_bad ("Incompatible first and second operands in instruction");
- return;
- }
- break;
- }
- /* Now make up the opcode for the 3 operand instructions. As in parallel
- instructions, there will be no unresolved values, so they can be fully formed
- and added to the frag table. */
- insn.opcode = insn.tm->base_opcode;
- if (insn.operand_type[0]->op_type & Indirect)
- {
- insn.opcode |= (insn.operand_type[0]->indirect.ARnum);
- insn.opcode |= (insn.operand_type[0]->indirect.mod << 3);
- }
- else
- insn.opcode |= (insn.operand_type[0]->reg.opcode);
- if (insn.operand_type[1]->op_type & Indirect)
- {
- insn.opcode |= (insn.operand_type[1]->indirect.ARnum << 8);
- insn.opcode |= (insn.operand_type[1]->indirect.mod << 11);
- }
- else
- insn.opcode |= (insn.operand_type[1]->reg.opcode << 8);
- if (insn.operands == 3)
- insn.opcode |= (insn.operand_type[2]->reg.opcode << 16);
- insn.opcode |= insn.addressing_mode;
- p = frag_more (INSN_SIZE);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- { /* Not a three operand instruction */
- char *p;
- int am_insn = -1;
- insn.opcode = insn.tm->base_opcode;
- /* Create frag for instruction - all instructions are 4 bytes long. */
- p = frag_more (INSN_SIZE);
- if ((insn.operands > 0) && (insn.tm->opcode_modifier == AddressMode))
- {
- insn.opcode |= insn.addressing_mode;
- if (insn.addressing_mode == AM_Indirect)
- {
- /* Determine which operand gives the addressing mode */
- if (insn.operand_type[0]->op_type & Indirect)
- am_insn = 0;
- if ((insn.operands > 1) && (insn.operand_type[1]->op_type & Indirect))
- am_insn = 1;
- insn.opcode |= (insn.operand_type[am_insn]->indirect.disp);
- insn.opcode |= (insn.operand_type[am_insn]->indirect.ARnum << 8);
- insn.opcode |= (insn.operand_type[am_insn]->indirect.mod << 11);
- if (insn.operands > 1)
- insn.opcode |= (insn.operand_type[!am_insn]->reg.opcode << 16);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if (insn.addressing_mode == AM_Register)
- {
- insn.opcode |= (insn.operand_type[0]->reg.opcode);
- if (insn.operands > 1)
- insn.opcode |= (insn.operand_type[1]->reg.opcode << 16);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if (insn.addressing_mode == AM_Direct)
- {
- if (insn.operand_type[0]->op_type & Direct)
- am_insn = 0;
- if ((insn.operands > 1) && (insn.operand_type[1]->op_type & Direct))
- am_insn = 1;
- if (insn.operands > 1)
- insn.opcode |= (insn.operand_type[!am_insn]->reg.opcode << 16);
- if (insn.operand_type[am_insn]->direct.resolved == 1)
- {
- /* Resolved values can be placed straight into instruction word, and output */
- insn.opcode |= (insn.operand_type[am_insn]->direct.address & 0x0000FFFF);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- { /* Unresolved direct addressing mode instruction */
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix_new_exp (frag_now, p + 2 - (frag_now->fr_literal), 2, &insn.operand_type[am_insn]->direct.direct_expr, 0, 0);
- }
- }
- else if (insn.addressing_mode == AM_Immediate)
- {
- if (insn.operand_type[0]->immediate.resolved == 1)
- {
- char *keeploc;
- int size;
- if (insn.operands > 1)
- insn.opcode |= (insn.operand_type[1]->reg.opcode << 16);
- switch (insn.tm->imm_arg_type)
- {
- case Imm_Float:
- debug ("Floating point first operand\n");
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- keeploc = input_line_pointer;
- input_line_pointer = insn.operand_type[0]->immediate.label;
- if (md_atof ('f', p + 2, &size) != 0)
- {
- as_bad ("invalid short form floating point immediate operand");
- return;
- }
- input_line_pointer = keeploc;
- break;
- case Imm_UInt:
- debug ("Unsigned int first operand\n");
- if (insn.operand_type[0]->immediate.decimal_found)
- as_warn ("rounding down first operand float to unsigned int");
- if (insn.operand_type[0]->immediate.u_number > 0xFFFF)
- as_warn ("only lower 16-bits of first operand are used");
- insn.opcode |= (insn.operand_type[0]->immediate.u_number & 0x0000FFFFL);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- break;
- case Imm_SInt:
- debug ("Int first operand\n");
- if (insn.operand_type[0]->immediate.decimal_found)
- as_warn ("rounding down first operand float to signed int");
- if (insn.operand_type[0]->immediate.s_number < -32768 ||
- insn.operand_type[0]->immediate.s_number > 32767)
- {
- as_bad ("first operand is too large for 16-bit signed int");
- return;
- }
- insn.opcode |= (insn.operand_type[0]->immediate.s_number & 0x0000FFFFL);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- break;
- }
- }
- else
- { /* Unresolved immediate label */
- if (insn.operands > 1)
- insn.opcode |= (insn.operand_type[1]->reg.opcode << 16);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix_new_exp (frag_now, p + 2 - (frag_now->fr_literal), 2, &insn.operand_type[0]->immediate.imm_expr, 0, 0);
- }
- }
- }
- else if (insn.tm->opcode_modifier == PCRel)
- {
- /* Conditional Branch and Call instructions */
- if ((insn.tm->operand_types[0] & (AllReg | Disp)) == (AllReg | Disp))
- {
- if (insn.operand_type[0]->op_type & (AllReg))
- {
- insn.opcode |= (insn.operand_type[0]->reg.opcode);
- insn.opcode |= PC_Register;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- insn.opcode |= PC_Relative;
- if (insn.operand_type[0]->immediate.resolved == 1)
- {
- insn.opcode |= (insn.operand_type[0]->immediate.s_number & 0x0000FFFF);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix_new_exp (frag_now, p + 2 - (frag_now->fr_literal), 2, &insn.operand_type[0]->immediate.imm_expr, 1, 0);
- }
- }
- }
- else if ((insn.tm->operand_types[0] & ARn) == ARn)
- {
- /* Decrement and Branch instructions */
- insn.opcode |= ((insn.operand_type[0]->reg.opcode - 0x08) << 22);
- if (insn.operand_type[1]->op_type & (AllReg))
- {
- insn.opcode |= (insn.operand_type[1]->reg.opcode);
- insn.opcode |= PC_Register;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if (insn.operand_type[1]->immediate.resolved == 1)
- {
- if (insn.operand_type[0]->immediate.decimal_found)
- {
- as_bad ("first operand is floating point");
- return;
- }
- if (insn.operand_type[0]->immediate.s_number < -32768 ||
- insn.operand_type[0]->immediate.s_number > 32767)
- {
- as_bad ("first operand is too large for 16-bit signed int");
- return;
- }
- insn.opcode |= (insn.operand_type[1]->immediate.s_number);
- insn.opcode |= PC_Relative;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- insn.opcode |= PC_Relative;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix_new_exp (frag_now, p + 2 - frag_now->fr_literal, 2, &insn.operand_type[1]->immediate.imm_expr, 1, 0);
- }
- }
- }
- else if (insn.tm->operand_types[0] == IVector)
- {
- /* Trap instructions */
- if (insn.operand_type[0]->op_type & IVector)
- insn.opcode |= (insn.operand_type[0]->immediate.u_number);
- else
- { /* Shouldn't get here */
- as_bad ("interrupt vector for trap instruction out of range");
- return;
- }
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if (insn.tm->opcode_modifier == StackOp || insn.tm->opcode_modifier == Rotate)
- {
- /* Push, Pop and Rotate instructions */
- insn.opcode |= (insn.operand_type[0]->reg.opcode << 16);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if ((insn.tm->operand_types[0] & (Abs24 | Direct)) == (Abs24 | Direct))
- {
- /* LDP Instruction needs to be tested for before the next section */
- if (insn.operand_type[0]->op_type & Direct)
- {
- if (insn.operand_type[0]->direct.resolved == 1)
- {
- /* Direct addressing uses lower 8 bits of direct address */
- insn.opcode |= (insn.operand_type[0]->direct.address & 0x00FF0000) >> 16;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- fixS *fix;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix = fix_new_exp (frag_now, p + 3 - (frag_now->fr_literal), 1, &insn.operand_type[0]->direct.direct_expr, 0, 0);
- /* Ensure that the assembler doesn't complain about fitting a 24-bit
- address into 8 bits. */
- fix->fx_no_overflow = 1;
- }
- }
- else
- {
- if (insn.operand_type[0]->immediate.resolved == 1)
- {
- /* Immediate addressing uses upper 8 bits of address */
- if (insn.operand_type[0]->immediate.u_number > 0x00FFFFFF)
- {
- as_bad ("LDP instruction needs a 24-bit operand");
- return;
- }
- insn.opcode |= ((insn.operand_type[0]->immediate.u_number & 0x00FF0000) >> 16);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- fixS *fix;
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix = fix_new_exp (frag_now, p + 3 - (frag_now->fr_literal), 1, &insn.operand_type[0]->immediate.imm_expr, 0, 0);
- fix->fx_no_overflow = 1;
- }
- }
- }
- else if (insn.tm->operand_types[0] & (Imm24))
- {
- /* Unconditional Branch and Call instructions */
- if (insn.operand_type[0]->immediate.resolved == 1)
- {
- if (insn.operand_type[0]->immediate.u_number > 0x00FFFFFF)
- as_warn ("first operand is too large for a 24-bit displacement");
- insn.opcode |= (insn.operand_type[0]->immediate.u_number & 0x00FFFFFF);
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else
- {
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- fix_new_exp (frag_now, p + 1 - (frag_now->fr_literal), 3, &insn.operand_type[0]->immediate.imm_expr, 0, 0);
- }
- }
- else if (insn.tm->operand_types[0] & NotReq)
- {
- /* Check for NOP instruction without arguments. */
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- else if (insn.tm->operands == 0)
- {
- /* Check for instructions without operands. */
- md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
- }
- }
- debug ("Addressing mode: %08X\n", insn.addressing_mode);
- {
- int i;
- for (i = 0; i < insn.operands; i++)
- {
- if (insn.operand_type[i]->immediate.label)
- free (insn.operand_type[i]->immediate.label);
- free (insn.operand_type[i]);
- }
- }
- debug ("Final opcode: %08X\n", insn.opcode);
- debug ("\n");
-}
-
-struct tic30_par_insn {
- partemplate *tm; /* Template of current parallel instruction */
- int operands[2]; /* Number of given operands for each insn */
- /* Type of operand given in instruction */
- operand *operand_type[2][MAX_OPERANDS];
- int swap_operands; /* Whether to swap operands around. */
- unsigned p_field; /* Value of p field in multiply add/sub instructions */
- unsigned opcode; /* Final opcode */
-};
-
-struct tic30_par_insn p_insn;
-
-int
-tic30_parallel_insn (char *token)
-{
- static partemplate *p_opcode;
- char *current_posn = token;
- char *token_start;
- char save_char;
-
- debug ("In tic30_parallel_insn with %s\n", token);
- memset (&p_insn, '\0', sizeof (p_insn));
- while (is_opcode_char (*current_posn))
- current_posn++;
- { /* Find instruction */
- save_char = *current_posn;
- *current_posn = '\0';
- p_opcode = (partemplate *) hash_find (parop_hash, token);
- if (p_opcode)
- {
- debug ("Found instruction %s\n", p_opcode->name);
- p_insn.tm = p_opcode;
- }
- else
- {
- char first_opcode[6] =
- {0};
- char second_opcode[6] =
- {0};
- int i;
- int current_opcode = -1;
- int char_ptr = 0;
-
- for (i = 0; i < strlen (token); i++)
- {
- char ch = *(token + i);
- if (ch == '_' && current_opcode == -1)
- {
- current_opcode = 0;
- continue;
- }
- if (ch == '_' && current_opcode == 0)
- {
- current_opcode = 1;
- char_ptr = 0;
- continue;
- }
- switch (current_opcode)
- {
- case 0:
- first_opcode[char_ptr++] = ch;
- break;
- case 1:
- second_opcode[char_ptr++] = ch;
- break;
- }
- }
- debug ("first_opcode = %s\n", first_opcode);
- debug ("second_opcode = %s\n", second_opcode);
- sprintf (token, "q_%s_%s", second_opcode, first_opcode);
- p_opcode = (partemplate *) hash_find (parop_hash, token);
- if (p_opcode)
- {
- debug ("Found instruction %s\n", p_opcode->name);
- p_insn.tm = p_opcode;
- p_insn.swap_operands = 1;
- }
- else
- return 0;
- }
- *current_posn = save_char;
- }
- { /* Find operands */
- int paren_not_balanced;
- int expecting_operand = 0;
- int found_separator = 0;
- do
- {
- /* skip optional white space before operand */
- while (!is_operand_char (*current_posn) && *current_posn != END_OF_INSN)
- {
- if (!is_space_char (*current_posn) && *current_posn != PARALLEL_SEPARATOR)
- {
- as_bad ("Invalid character %s before %s operand",
- output_invalid (*current_posn),
- ordinal_names[insn.operands]);
- return 1;
- }
- if (*current_posn == PARALLEL_SEPARATOR)
- found_separator = 1;
- current_posn++;
- }
- token_start = current_posn; /* after white space */
- paren_not_balanced = 0;
- while (paren_not_balanced || *current_posn != ',')
- {
- if (*current_posn == END_OF_INSN)
- {
- if (paren_not_balanced)
- {
- as_bad ("Unbalanced parenthesis in %s operand.",
- ordinal_names[insn.operands]);
- return 1;
- }
- else
- break; /* we are done */
- }
- else if (*current_posn == PARALLEL_SEPARATOR)
- {
- while (is_space_char (*(current_posn - 1)))
- current_posn--;
- break;
- }
- else if (!is_operand_char (*current_posn) && !is_space_char (*current_posn))
- {
- as_bad ("Invalid character %s in %s operand",
- output_invalid (*current_posn),
- ordinal_names[insn.operands]);
- return 1;
- }
- if (*current_posn == '(')
- ++paren_not_balanced;
- if (*current_posn == ')')
- --paren_not_balanced;
- current_posn++;
- }
- if (current_posn != token_start)
- { /* yes, we've read in another operand */
- p_insn.operands[found_separator]++;
- if (p_insn.operands[found_separator] > MAX_OPERANDS)
- {
- as_bad ("Spurious operands; (%d operands/instruction max)",
- MAX_OPERANDS);
- return 1;
- }
- /* now parse operand adding info to 'insn' as we go along */
- save_char = *current_posn;
- *current_posn = '\0';
- p_insn.operand_type[found_separator][p_insn.operands[found_separator] - 1] =
- tic30_operand (token_start);
- *current_posn = save_char;
- if (!p_insn.operand_type[found_separator][p_insn.operands[found_separator] - 1])
- return 1;
- }
- else
- {
- if (expecting_operand)
- {
- as_bad ("Expecting operand after ','; got nothing");
- return 1;
- }
- if (*current_posn == ',')
- {
- as_bad ("Expecting operand before ','; got nothing");
- return 1;
- }
- }
- /* now *current_posn must be either ',' or END_OF_INSN */
- if (*current_posn == ',')
- {
- if (*++current_posn == END_OF_INSN)
- { /* just skip it, if it's \n complain */
- as_bad ("Expecting operand after ','; got nothing");
- return 1;
- }
- expecting_operand = 1;
- }
- }
- while (*current_posn != END_OF_INSN); /* until we get end of insn */
- }
- if (p_insn.swap_operands)
- {
- int temp_num, i;
- operand *temp_op;
-
- temp_num = p_insn.operands[0];
- p_insn.operands[0] = p_insn.operands[1];
- p_insn.operands[1] = temp_num;
- for (i = 0; i < MAX_OPERANDS; i++)
- {
- temp_op = p_insn.operand_type[0][i];
- p_insn.operand_type[0][i] = p_insn.operand_type[1][i];
- p_insn.operand_type[1][i] = temp_op;
- }
- }
- if (p_insn.operands[0] != p_insn.tm->operands_1)
- {
- as_bad ("incorrect number of operands given in the first instruction");
- return 1;
- }
- if (p_insn.operands[1] != p_insn.tm->operands_2)
- {
- as_bad ("incorrect number of operands given in the second instruction");
- return 1;
- }
- debug ("Number of operands in first insn: %d\n", p_insn.operands[0]);
- debug ("Number of operands in second insn: %d\n", p_insn.operands[1]);
- { /* Now check if operands are correct */
- int count;
- int num_rn = 0;
- int num_ind = 0;
- for (count = 0; count < 2; count++)
- {
- int i;
- for (i = 0; i < p_insn.operands[count]; i++)
- {
- if ((p_insn.operand_type[count][i]->op_type &
- p_insn.tm->operand_types[count][i]) == 0)
- {
- as_bad ("%s instruction, operand %d doesn't match", ordinal_names[count], i + 1);
- return 1;
- }
- /* Get number of R register and indirect reference contained within the first
- two operands of each instruction. This is required for the multiply
- parallel instructions which require two R registers and two indirect
- references, but not in any particular place. */
- if ((p_insn.operand_type[count][i]->op_type & Rn) && i < 2)
- num_rn++;
- else if ((p_insn.operand_type[count][i]->op_type & Indirect) && i < 2)
- num_ind++;
- }
- }
- if ((p_insn.tm->operand_types[0][0] & (Indirect | Rn)) == (Indirect | Rn))
- {
- /* Check for the multiply instructions */
- if (num_rn != 2)
- {
- as_bad ("incorrect format for multiply parallel instruction");
- return 1;
- }
- if (num_ind != 2)
- { /* Shouldn't get here */
- as_bad ("incorrect format for multiply parallel instruction");
- return 1;
- }
- if ((p_insn.operand_type[0][2]->reg.opcode != 0x00) &&
- (p_insn.operand_type[0][2]->reg.opcode != 0x01))
- {
- as_bad ("destination for multiply can only be R0 or R1");
- return 1;
- }
- if ((p_insn.operand_type[1][2]->reg.opcode != 0x02) &&
- (p_insn.operand_type[1][2]->reg.opcode != 0x03))
- {
- as_bad ("destination for add/subtract can only be R2 or R3");
- return 1;
- }
- /* Now determine the P field for the instruction */
- if (p_insn.operand_type[0][0]->op_type & Indirect)
- {
- if (p_insn.operand_type[0][1]->op_type & Indirect)
- p_insn.p_field = 0x00000000; /* Ind * Ind, Rn +/- Rn */
- else if (p_insn.operand_type[1][0]->op_type & Indirect)
- p_insn.p_field = 0x01000000; /* Ind * Rn, Ind +/- Rn */
- else
- p_insn.p_field = 0x03000000; /* Ind * Rn, Rn +/- Ind */
- }
- else
- {
- if (p_insn.operand_type[0][1]->op_type & Rn)
- p_insn.p_field = 0x02000000; /* Rn * Rn, Ind +/- Ind */
- else if (p_insn.operand_type[1][0]->op_type & Indirect)
- {
- operand *temp;
- p_insn.p_field = 0x01000000; /* Rn * Ind, Ind +/- Rn */
- /* Need to swap the two multiply operands around so that everything is in
- its place for the opcode makeup ie so Ind * Rn, Ind +/- Rn */
- temp = p_insn.operand_type[0][0];
- p_insn.operand_type[0][0] = p_insn.operand_type[0][1];
- p_insn.operand_type[0][1] = temp;
- }
- else
- {
- operand *temp;
- p_insn.p_field = 0x03000000; /* Rn * Ind, Rn +/- Ind */
- temp = p_insn.operand_type[0][0];
- p_insn.operand_type[0][0] = p_insn.operand_type[0][1];
- p_insn.operand_type[0][1] = temp;
- }
- }
- }
- }
- debug ("P field: %08X\n", p_insn.p_field);
- /* Finalise opcode. This is easier for parallel instructions as they have to be
- fully resolved, there are no memory addresses allowed, except through indirect
- addressing, so there are no labels to resolve. */
- {
- p_insn.opcode = p_insn.tm->base_opcode;
- switch (p_insn.tm->oporder)
- {
- case OO_4op1:
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 22);
- break;
- case OO_4op2:
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][1]->reg.opcode << 19);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 22);
- if (p_insn.operand_type[1][1]->reg.opcode == p_insn.operand_type[0][1]->reg.opcode)
- as_warn ("loading the same register in parallel operation");
- break;
- case OO_4op3:
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][0]->reg.opcode << 22);
- break;
- case OO_5op1:
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 19);
- p_insn.opcode |= (p_insn.operand_type[0][2]->reg.opcode << 22);
- break;
- case OO_5op2:
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][0]->reg.opcode << 19);
- p_insn.opcode |= (p_insn.operand_type[0][2]->reg.opcode << 22);
- break;
- case OO_PField:
- p_insn.opcode |= p_insn.p_field;
- if (p_insn.operand_type[0][2]->reg.opcode == 0x01)
- p_insn.opcode |= 0x00800000;
- if (p_insn.operand_type[1][2]->reg.opcode == 0x03)
- p_insn.opcode |= 0x00400000;
- switch (p_insn.p_field)
- {
- case 0x00000000:
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[0][1]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][1]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 19);
- break;
- case 0x01000000:
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][1]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 19);
- break;
- case 0x02000000:
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[1][0]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][0]->reg.opcode << 19);
- break;
- case 0x03000000:
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.ARnum);
- p_insn.opcode |= (p_insn.operand_type[1][1]->indirect.mod << 3);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.ARnum << 8);
- p_insn.opcode |= (p_insn.operand_type[0][0]->indirect.mod << 11);
- p_insn.opcode |= (p_insn.operand_type[1][0]->reg.opcode << 16);
- p_insn.opcode |= (p_insn.operand_type[0][1]->reg.opcode << 19);
- break;
- }
- break;
- }
- } /* Opcode is finalised at this point for all parallel instructions. */
- { /* Output opcode */
- char *p;
- p = frag_more (INSN_SIZE);
- md_number_to_chars (p, (valueT) p_insn.opcode, INSN_SIZE);
- }
- {
- int i, j;
- for (i = 0; i < 2; i++)
- for (j = 0; j < p_insn.operands[i]; j++)
- free (p_insn.operand_type[i][j]);
- }
- debug ("Final opcode: %08X\n", p_insn.opcode);
- debug ("\n");
- return 1;
-}
-
-operand *
-tic30_operand (token)
- char *token;
-{
- int count;
- char ind_buffer[strlen (token)];
- operand *current_op;
-
- debug ("In tic30_operand with %s\n", token);
- current_op = (operand *) malloc (sizeof (operand));
- memset (current_op, '\0', sizeof (operand));
- if (*token == DIRECT_REFERENCE)
- {
- char *token_posn = token + 1;
- int direct_label = 0;
- debug ("Found direct reference\n");
- while (*token_posn)
- {
- if (!is_digit_char (*token_posn))
- direct_label = 1;
- token_posn++;
- }
- if (direct_label)
- {
- char *save_input_line_pointer;
- segT retval;
- debug ("Direct reference is a label\n");
- current_op->direct.label = token + 1;
- save_input_line_pointer = input_line_pointer;
- input_line_pointer = token + 1;
- debug ("Current input_line_pointer: %s\n", input_line_pointer);
- retval = expression (&current_op->direct.direct_expr);
- debug ("Expression type: %d\n", current_op->direct.direct_expr.X_op);
- debug ("Expression addnum: %d\n", current_op->direct.direct_expr.X_add_number);
- debug ("Segment: %d\n", retval);
- input_line_pointer = save_input_line_pointer;
- if (current_op->direct.direct_expr.X_op == O_constant)
- {
- current_op->direct.address = current_op->direct.direct_expr.X_add_number;
- current_op->direct.resolved = 1;
- }
- }
- else
- {
- debug ("Direct reference is a number\n");
- current_op->direct.address = atoi (token + 1);
- current_op->direct.resolved = 1;
- }
- current_op->op_type = Direct;
- }
- else if (*token == INDIRECT_REFERENCE)
- { /* Indirect reference operand */
- int found_ar = 0;
- int found_disp = 0;
- int ar_number = -1;
- int disp_number = 0;
- int buffer_posn = 1;
- ind_addr_type *ind_addr_op;
- debug ("Found indirect reference\n");
- ind_buffer[0] = *token;
- for (count = 1; count < strlen (token); count++)
- { /* Strip operand */
- ind_buffer[buffer_posn] = TOLOWER (*(token + count));
- if ((*(token + count - 1) == 'a' || *(token + count - 1) == 'A') &&
- (*(token + count) == 'r' || *(token + count) == 'R'))
- {
- /* AR reference is found, so get its number and remove it from the buffer
- so it can pass through hash_find() */
- if (found_ar)
- {
- as_bad ("More than one AR register found in indirect reference");
- return NULL;
- }
- if (*(token + count + 1) < '0' || *(token + count + 1) > '7')
- {
- as_bad ("Illegal AR register in indirect reference");
- return NULL;
- }
- ar_number = *(token + count + 1) - '0';
- found_ar = 1;
- count++;
- }
- if (*(token + count) == '(')
- {
- /* Parenthesis found, so check if a displacement value is inside. If so, get
- the value and remove it from the buffer. */
- if (is_digit_char (*(token + count + 1)))
- {
- char disp[10];
- int disp_posn = 0;
-
- if (found_disp)
- {
- as_bad ("More than one displacement found in indirect reference");
- return NULL;
- }
- count++;
- while (*(token + count) != ')')
- {
- if (!is_digit_char (*(token + count)))
- {
- as_bad ("Invalid displacement in indirect reference");
- return NULL;
- }
- disp[disp_posn++] = *(token + (count++));
- }
- disp[disp_posn] = '\0';
- disp_number = atoi (disp);
- count--;
- found_disp = 1;
- }
- }
- buffer_posn++;
- }
- ind_buffer[buffer_posn] = '\0';
- if (!found_ar)
- {
- as_bad ("AR register not found in indirect reference");
- return NULL;
- }
- ind_addr_op = (ind_addr_type *) hash_find (ind_hash, ind_buffer);
- if (ind_addr_op)
- {
- debug ("Found indirect reference: %s\n", ind_addr_op->syntax);
- if (ind_addr_op->displacement == IMPLIED_DISP)
- {
- found_disp = 1;
- disp_number = 1;
- }
- else if ((ind_addr_op->displacement == DISP_REQUIRED) && !found_disp)
- {
- /* Maybe an implied displacement of 1 again */
- as_bad ("required displacement wasn't given in indirect reference");
- return 0;
- }
- }
- else
- {
- as_bad ("illegal indirect reference");
- return NULL;
- }
- if (found_disp && (disp_number < 0 || disp_number > 255))
- {
- as_bad ("displacement must be an unsigned 8-bit number");
- return NULL;
- }
- current_op->indirect.mod = ind_addr_op->modfield;
- current_op->indirect.disp = disp_number;
- current_op->indirect.ARnum = ar_number;
- current_op->op_type = Indirect;
- }
- else
- {
- reg *regop = (reg *) hash_find (reg_hash, token);
- if (regop)
- {
- debug ("Found register operand: %s\n", regop->name);
- if (regop->regtype == REG_ARn)
- current_op->op_type = ARn;
- else if (regop->regtype == REG_Rn)
- current_op->op_type = Rn;
- else if (regop->regtype == REG_DP)
- current_op->op_type = DPReg;
- else
- current_op->op_type = OtherReg;
- current_op->reg.opcode = regop->opcode;
- }
- else
- {
- if (!is_digit_char (*token) || *(token + 1) == 'x' || strchr (token, 'h'))
- {
- char *save_input_line_pointer;
- segT retval;
- debug ("Probably a label: %s\n", token);
- current_op->immediate.label = (char *) malloc (strlen (token) + 1);
- strcpy (current_op->immediate.label, token);
- current_op->immediate.label[strlen (token)] = '\0';
- save_input_line_pointer = input_line_pointer;
- input_line_pointer = token;
- debug ("Current input_line_pointer: %s\n", input_line_pointer);
- retval = expression (&current_op->immediate.imm_expr);
- debug ("Expression type: %d\n", current_op->immediate.imm_expr.X_op);
- debug ("Expression addnum: %d\n", current_op->immediate.imm_expr.X_add_number);
- debug ("Segment: %d\n", retval);
- input_line_pointer = save_input_line_pointer;
- if (current_op->immediate.imm_expr.X_op == O_constant)
- {
- current_op->immediate.s_number = current_op->immediate.imm_expr.X_add_number;
- current_op->immediate.u_number = (unsigned int) current_op->immediate.imm_expr.X_add_number;
- current_op->immediate.resolved = 1;
- }
- }
- else
- {
- unsigned count;
- debug ("Found a number or displacement\n");
- for (count = 0; count < strlen (token); count++)
- if (*(token + count) == '.')
- current_op->immediate.decimal_found = 1;
- current_op->immediate.label = (char *) malloc (strlen (token) + 1);
- strcpy (current_op->immediate.label, token);
- current_op->immediate.label[strlen (token)] = '\0';
- current_op->immediate.f_number = (float) atof (token);
- current_op->immediate.s_number = (int) atoi (token);
- current_op->immediate.u_number = (unsigned int) atoi (token);
- current_op->immediate.resolved = 1;
- }
- current_op->op_type = Disp | Abs24 | Imm16 | Imm24;
- if (current_op->immediate.u_number >= 0 && current_op->immediate.u_number <= 31)
- current_op->op_type |= IVector;
- }
- }
- return current_op;
-}
-
-/* next_line points to the next line after the current instruction (current_line).
- Search for the parallel bars, and if found, merge two lines into internal syntax
- for a parallel instruction:
- q_[INSN1]_[INSN2] [OPERANDS1] | [OPERANDS2]
- By this stage, all comments are scrubbed, and only the bare lines are given.
- */
-
-#define NONE 0
-#define START_OPCODE 1
-#define END_OPCODE 2
-#define START_OPERANDS 3
-#define END_OPERANDS 4
-
-char *
-tic30_find_parallel_insn (current_line, next_line)
- char *current_line;
- char *next_line;
-{
- int found_parallel = 0;
- char first_opcode[256];
- char second_opcode[256];
- char first_operands[256];
- char second_operands[256];
- char *parallel_insn;
-
- debug ("In tic30_find_parallel_insn()\n");
- while (!is_end_of_line[(unsigned char) *next_line])
- {
- if (*next_line == PARALLEL_SEPARATOR && *(next_line + 1) == PARALLEL_SEPARATOR)
- {
- found_parallel = 1;
- next_line++;
- break;
- }
- next_line++;
- }
- if (!found_parallel)
- return NULL;
- debug ("Found a parallel instruction\n");
- {
- int i;
- char *opcode, *operands, *line;
-
- for (i = 0; i < 2; i++)
- {
- if (i == 0)
- {
- opcode = &first_opcode[0];
- operands = &first_operands[0];
- line = current_line;
- }
- else
- {
- opcode = &second_opcode[0];
- operands = &second_operands[0];
- line = next_line;
- }
- {
- int search_status = NONE;
- int char_ptr = 0;
- char c;
-
- while (!is_end_of_line[(unsigned char) (c = *line)])
- {
- if (is_opcode_char (c) && search_status == NONE)
- {
- opcode[char_ptr++] = TOLOWER (c);
- search_status = START_OPCODE;
- }
- else if (is_opcode_char (c) && search_status == START_OPCODE)
- {
- opcode[char_ptr++] = TOLOWER (c);
- }
- else if (!is_opcode_char (c) && search_status == START_OPCODE)
- {
- opcode[char_ptr] = '\0';
- char_ptr = 0;
- search_status = END_OPCODE;
- }
- else if (is_operand_char (c) && search_status == START_OPERANDS)
- {
- operands[char_ptr++] = c;
- }
- if (is_operand_char (c) && search_status == END_OPCODE)
- {
- operands[char_ptr++] = c;
- search_status = START_OPERANDS;
- }
- line++;
- }
- if (search_status != START_OPERANDS)
- return NULL;
- operands[char_ptr] = '\0';
- }
- }
- }
- parallel_insn = (char *) malloc (strlen (first_opcode) + strlen (first_operands) +
- strlen (second_opcode) + strlen (second_operands) + 8);
- sprintf (parallel_insn, "q_%s_%s %s | %s", first_opcode, second_opcode, first_operands, second_operands);
- debug ("parallel insn = %s\n", parallel_insn);
- return parallel_insn;
-}
-
-#undef NONE
-#undef START_OPCODE
-#undef END_OPCODE
-#undef START_OPERANDS
-#undef END_OPERANDS
-
-/* In order to get gas to ignore any | chars at the start of a line,
- this function returns true if a | is found in a line. */
-
-int
-tic30_unrecognized_line (c)
- int c;
-{
- debug ("In tc_unrecognized_line\n");
- return (c == PARALLEL_SEPARATOR);
-}
-
-int
-md_estimate_size_before_relax (fragP, segment)
- fragS *fragP;
- segT segment;
-{
- debug ("In md_estimate_size_before_relax()\n");
- return 0;
-}
-
-void
-md_convert_frag (abfd, sec, fragP)
- bfd *abfd;
- segT sec;
- register fragS *fragP;
-{
- debug ("In md_convert_frag()\n");
-}
-
-void
-md_apply_fix3 (fixP, valP, seg)
- fixS *fixP;
- valueT *valP;
- segT seg ATTRIBUTE_UNUSED;
-{
- valueT value = *valP;
-
- debug ("In md_apply_fix() with value = %ld\n", (long) value);
- debug ("Values in fixP\n");
- debug ("fx_size = %d\n", fixP->fx_size);
- debug ("fx_pcrel = %d\n", fixP->fx_pcrel);
- debug ("fx_where = %d\n", fixP->fx_where);
- debug ("fx_offset = %d\n", (int) fixP->fx_offset);
- {
- char *buf = fixP->fx_frag->fr_literal + fixP->fx_where;
-
- value /= INSN_SIZE;
- if (fixP->fx_size == 1)
- /* Special fix for LDP instruction. */
- value = (value & 0x00FF0000) >> 16;
-
- debug ("new value = %ld\n", (long) value);
- md_number_to_chars (buf, value, fixP->fx_size);
- }
-
- if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
- fixP->fx_done = 1;
-}
-
-int
-md_parse_option (c, arg)
- int c;
- char *arg;
-{
- int i;
-
- debug ("In md_parse_option()\n");
- for (i = 0; i < c; i++)
- {
- printf ("%c\n", arg[c]);
- }
- return 0;
-}
-
-void
-md_show_usage (stream)
- FILE *stream;
-{
- debug ("In md_show_usage()\n");
-}
-
-symbolS *
-md_undefined_symbol (name)
- char *name;
-{
- debug ("In md_undefined_symbol()\n");
- return (symbolS *) 0;
-}
-
-valueT
-md_section_align (segment, size)
- segT segment;
- valueT size;
-{
- debug ("In md_section_align() segment = %d and size = %d\n", segment, size);
- size = (size + 3) / 4;
- size *= 4;
- debug ("New size value = %d\n", size);
- return size;
-}
-
-long
-md_pcrel_from (fixP)
- fixS *fixP;
-{
- int offset;
-
- debug ("In md_pcrel_from()\n");
- debug ("fx_where = %d\n", fixP->fx_where);
- debug ("fx_size = %d\n", fixP->fx_size);
- /* Find the opcode that represents the current instruction in the fr_literal
- storage area, and check bit 21. Bit 21 contains whether the current instruction
- is a delayed one or not, and then set the offset value appropriately. */
- if (fixP->fx_frag->fr_literal[fixP->fx_where - fixP->fx_size + 1] & 0x20)
- offset = 3;
- else
- offset = 1;
- debug ("offset = %d\n", offset);
- /* PC Relative instructions have a format:
- displacement = Label - (PC + offset)
- This function returns PC + offset where:
- fx_where - fx_size = PC
- INSN_SIZE * offset = offset number of instructions
- */
- return fixP->fx_where - fixP->fx_size + (INSN_SIZE * offset);
-}
-
-char *
-md_atof (what_statement_type, literalP, sizeP)
- int what_statement_type;
- char *literalP;
- int *sizeP;
-{
- int prec;
- char *token;
- char keepval;
- unsigned long value;
- /* char *atof_ieee (); */
- float float_value;
- debug ("In md_atof()\n");
- debug ("precision = %c\n", what_statement_type);
- debug ("literal = %s\n", literalP);
- debug ("line = ");
- token = input_line_pointer;
- while (!is_end_of_line[(unsigned char) *input_line_pointer]
- && (*input_line_pointer != ','))
- {
- debug ("%c", *input_line_pointer);
- input_line_pointer++;
- }
- keepval = *input_line_pointer;
- *input_line_pointer = '\0';
- debug ("\n");
- float_value = (float) atof (token);
- *input_line_pointer = keepval;
- debug ("float_value = %f\n", float_value);
- switch (what_statement_type)
- {
- case 'f':
- case 'F':
- case 's':
- case 'S':
- prec = 2;
- break;
-
- case 'd':
- case 'D':
- case 'r':
- case 'R':
- prec = 4;
- break;
-
- default:
- *sizeP = 0;
- return "Bad call to MD_ATOF()";
- }
- if (float_value == 0.0)
- {
- value = (prec == 2) ? 0x00008000L : 0x80000000L;
- }
- else
- {
- unsigned long exp, sign, mant, tmsfloat;
- tmsfloat = *((long *) &float_value);
- sign = tmsfloat & 0x80000000;
- mant = tmsfloat & 0x007FFFFF;
- exp = tmsfloat & 0x7F800000;
- exp <<= 1;
- if (exp == 0xFF000000)
- {
- if (mant == 0)
- value = 0x7F7FFFFF;
- else if (sign == 0)
- value = 0x7F7FFFFF;
- else
- value = 0x7F800000;
- }
- else
- {
- exp -= 0x7F000000;
- if (sign)
- {
- mant = mant & 0x007FFFFF;
- mant = -mant;
- mant = mant & 0x00FFFFFF;
- if (mant == 0)
- {
- mant |= 0x00800000;
- exp = (long) exp - 0x01000000;
- }
- }
- tmsfloat = exp | mant;
- value = tmsfloat;
- }
- if (prec == 2)
- {
- long exp, mant;
-
- if (tmsfloat == 0x80000000)
- {
- value = 0x8000;
- }
- else
- {
- value = 0;
- exp = (tmsfloat & 0xFF000000);
- exp >>= 24;
- mant = tmsfloat & 0x007FFFFF;
- if (tmsfloat & 0x00800000)
- {
- mant |= 0xFF000000;
- mant += 0x00000800;
- mant >>= 12;
- mant |= 0x00000800;
- mant &= 0x0FFF;
- if (exp > 7)
- value = 0x7800;
- }
- else
- {
- mant |= 0x00800000;
- mant += 0x00000800;
- exp += (mant >> 24);
- mant >>= 12;
- mant &= 0x07FF;
- if (exp > 7)
- value = 0x77FF;
- }
- if (exp < -8)
- value = 0x8000;
- if (value == 0)
- {
- mant = (exp << 12) | mant;
- value = mant & 0xFFFF;
- }
- }
- }
- }
- md_number_to_chars (literalP, value, prec);
- *sizeP = prec;
- return 0;
-}
-
-void
-md_number_to_chars (buf, val, n)
- char *buf;
- valueT val;
- int n;
-{
- debug ("In md_number_to_chars()\n");
- number_to_chars_bigendian (buf, val, n);
- /* number_to_chars_littleendian(buf,val,n); */
-}
-
-#define F(SZ,PCREL) (((SZ) << 1) + (PCREL))
-#define MAP(SZ,PCREL,TYPE) case F(SZ,PCREL): code = (TYPE); break
-
-arelent *
-tc_gen_reloc (section, fixP)
- asection *section;
- fixS *fixP;
-{
- arelent *rel;
- bfd_reloc_code_real_type code = 0;
-
- debug ("In tc_gen_reloc()\n");
- debug ("fixP.size = %d\n", fixP->fx_size);
- debug ("fixP.pcrel = %d\n", fixP->fx_pcrel);
- debug ("addsy.name = %s\n", S_GET_NAME (fixP->fx_addsy));
- switch (F (fixP->fx_size, fixP->fx_pcrel))
- {
- MAP (1, 0, BFD_RELOC_TIC30_LDP);
- MAP (2, 0, BFD_RELOC_16);
- MAP (3, 0, BFD_RELOC_24);
- MAP (2, 1, BFD_RELOC_16_PCREL);
- MAP (4, 0, BFD_RELOC_32);
- default:
- as_bad ("Can not do %d byte %srelocation", fixP->fx_size,
- fixP->fx_pcrel ? "pc-relative " : "");
- }
-#undef MAP
-#undef F
-
- rel = (arelent *) xmalloc (sizeof (arelent));
- assert (rel != 0);
- rel->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
- *rel->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy);
- rel->address = fixP->fx_frag->fr_address + fixP->fx_where;
- if (fixP->fx_pcrel)
- rel->addend = fixP->fx_addnumber;
- else
- rel->addend = 0;
- rel->howto = bfd_reloc_type_lookup (stdoutput, code);
- if (!rel->howto)
- {
- const char *name;
- name = S_GET_NAME (fixP->fx_addsy);
- if (name == NULL)
- name = "<unknown>";
- as_fatal ("Cannot generate relocation type for symbol %s, code %s", name, bfd_get_reloc_code_name (code));
- }
- return rel;
-}
-
-void
-tc_aout_pre_write_hook ()
-{
- debug ("In tc_aout_pre_write_hook()\n");
-}
-
-void
-md_operand (expressionP)
- expressionS *expressionP;
-{
- debug ("In md_operand()\n");
-}
-
-char output_invalid_buf[8];
-
-char *
-output_invalid (c)
- char c;
-{
- if (ISPRINT (c))
- sprintf (output_invalid_buf, "'%c'", c);
- else
- sprintf (output_invalid_buf, "(0x%x)", (unsigned) c);
- return output_invalid_buf;
-}
diff --git a/contrib/binutils/gas/config/tc-tic30.h b/contrib/binutils/gas/config/tc-tic30.h
deleted file mode 100644
index d55c8702cfe8..000000000000
--- a/contrib/binutils/gas/config/tc-tic30.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* tc-tic30.h -- Header file for tc-tic30.c
- Copyright 1998, 2000 Free Software Foundation, Inc.
- Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
-
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-#ifndef _TC_TIC30_H_
-#define _TC_TIC30_H_
-
-#define TC_TIC30 1
-
-#ifdef OBJ_AOUT
-#define TARGET_FORMAT "a.out-tic30"
-#endif
-
-#define TARGET_ARCH bfd_arch_tic30
-#define TARGET_BYTES_BIG_ENDIAN 1
-
-#define WORKING_DOT_WORD
-
-char *output_invalid PARAMS ((int c));
-
-#define END_OF_INSN '\0'
-#define MAX_OPERANDS 6
-#define DIRECT_REFERENCE '@'
-#define INDIRECT_REFERENCE '*'
-#define PARALLEL_SEPARATOR '|'
-#define INSN_SIZE 4
-
-/* Define this to 1 if you want the debug output to be on stdout,
- otherwise stderr will be used. If stderr is used, there will be a
- better synchronisation with the as_bad outputs, but you can't
- capture the output. */
-#define USE_STDOUT 0
-
-#define tc_unrecognized_line tic30_unrecognized_line
-
-extern int tic30_unrecognized_line PARAMS ((int));
-
-#endif
diff --git a/contrib/binutils/gas/config/tc-v850.c b/contrib/binutils/gas/config/tc-v850.c
deleted file mode 100644
index e1e54758ee6d..000000000000
--- a/contrib/binutils/gas/config/tc-v850.c
+++ /dev/null
@@ -1,2434 +0,0 @@
-/* tc-v850.c -- Assembler code for the NEC V850
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
- 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 2, 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, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "as.h"
-#include "safe-ctype.h"
-#include "subsegs.h"
-#include "opcode/v850.h"
-#include "dwarf2dbg.h"
-
-/* Sign-extend a 16-bit number. */
-#define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000)
-
-/* Temporarily holds the reloc in a cons expression. */
-static bfd_reloc_code_real_type hold_cons_reloc = BFD_RELOC_UNUSED;
-
-/* Set to TRUE if we want to be pedantic about signed overflows. */
-static boolean warn_signed_overflows = FALSE;
-static boolean warn_unsigned_overflows = FALSE;
-
-/* Indicates the target BFD machine number. */
-static int machine = -1;
-
-/* Indicates the target processor(s) for the assemble. */
-static int processor_mask = -1;
-
-/* Structure to hold information about predefined registers. */
-struct reg_name {
- const char *name;
- int value;
-};
-
-/* Generic assembler global variables which must be defined by all
- targets. */
-
-/* Characters which always start a comment. */
-const char comment_chars[] = "#";
-
-/* Characters which start a comment at the beginning of a line. */
-const char line_comment_chars[] = ";#";
-
-/* Characters which may be used to separate multiple commands on a
- single line. */
-const char line_separator_chars[] = ";";
-
-/* Characters which are used to indicate an exponent in a floating
- point number. */
-const char EXP_CHARS[] = "eE";
-
-/* Characters which mean that a number is a floating point constant,
- as in 0d1.0. */
-const char FLT_CHARS[] = "dD";
-
-const relax_typeS md_relax_table[] = {
- /* Conditional branches. */
- {0xff, -0x100, 2, 1},
- {0x1fffff, -0x200000, 6, 0},
- /* Unconditional branches. */
- {0xff, -0x100, 2, 3},
- {0x1fffff, -0x200000, 4, 0},
-};
-
-/* Fixups. */
-#define MAX_INSN_FIXUPS (5)
-struct v850_fixup {
- expressionS exp;
- int opindex;
- bfd_reloc_code_real_type reloc;
-};
-
-struct v850_fixup fixups[MAX_INSN_FIXUPS];
-static int fc;
-
-struct v850_seg_entry
-{
- segT s;
- const char *name;
- flagword flags;
-};
-
-struct v850_seg_entry v850_seg_table[] =
-{
- { NULL, ".sdata",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS
- | SEC_SMALL_DATA },
- { NULL, ".tdata",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS },
- { NULL, ".zdata",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS },
- { NULL, ".sbss",
- SEC_ALLOC | SEC_SMALL_DATA },
- { NULL, ".tbss",
- SEC_ALLOC },
- { NULL, ".zbss",
- SEC_ALLOC},
- { NULL, ".rosdata",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_DATA
- | SEC_HAS_CONTENTS | SEC_SMALL_DATA },
- { NULL, ".rozdata",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_DATA
- | SEC_HAS_CONTENTS },
- { NULL, ".scommon",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS
- | SEC_SMALL_DATA | SEC_IS_COMMON },
- { NULL, ".tcommon",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS
- | SEC_IS_COMMON },
- { NULL, ".zcommon",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS
- | SEC_IS_COMMON },
- { NULL, ".call_table_data",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS },
- { NULL, ".call_table_text",
- SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_CODE
- | SEC_HAS_CONTENTS},
- { NULL, ".bss",
- SEC_ALLOC }
-};
-
-#define SDATA_SECTION 0
-#define TDATA_SECTION 1
-#define ZDATA_SECTION 2
-#define SBSS_SECTION 3
-#define TBSS_SECTION 4
-#define ZBSS_SECTION 5
-#define ROSDATA_SECTION 6
-#define ROZDATA_SECTION 7
-#define SCOMMON_SECTION 8
-#define TCOMMON_SECTION 9
-#define ZCOMMON_SECTION 10
-#define CALL_TABLE_DATA_SECTION 11
-#define CALL_TABLE_TEXT_SECTION 12
-#define BSS_SECTION 13
-
-static void do_v850_seg PARAMS ((int, subsegT));
-
-static void
-do_v850_seg (i, sub)
- int i;
- subsegT sub;
-{
- struct v850_seg_entry *seg = v850_seg_table + i;
-
- obj_elf_section_change_hook ();
- if (seg->s != NULL)
- {
- subseg_set (seg->s, sub);
- }
- else
- {
- seg->s = subseg_new (seg->name, sub);
- bfd_set_section_flags (stdoutput, seg->s, seg->flags);
- if ((seg->flags & SEC_LOAD) == 0)
- seg_info (seg->s)->bss = 1;
- }
-}
-
-static void v850_seg PARAMS ((int i));
-
-static void
-v850_seg (i)
- int i;
-{
- subsegT sub = get_absolute_expression ();
-
- do_v850_seg (i, sub);
- demand_empty_rest_of_line ();
-}
-
-static void v850_offset PARAMS ((int));
-
-static void
-v850_offset (ignore)
- int ignore ATTRIBUTE_UNUSED;
-{
- int temp = get_absolute_expression ();
-
- temp -= frag_now_fix ();
-
- if (temp > 0)
- (void) frag_more (temp);
-
- demand_empty_rest_of_line ();
-}
-
-/* Copied from obj_elf_common() in gas/config/obj-elf.c. */
-
-static void v850_comm PARAMS ((int));
-
-static void
-v850_comm (area)
- int area;
-{
- char *name;
- char c;
- char *p;
- int temp;
- unsigned int size;
- symbolS *symbolP;
- int have_align;
-
- name = input_line_pointer;
- c = get_symbol_end ();
-
- /* Just after name is now '\0'. */
- p = input_line_pointer;
- *p = c;
-
- SKIP_WHITESPACE ();
-
- if (*input_line_pointer != ',')
- {
- as_bad (_("Expected comma after symbol-name"));
- ignore_rest_of_line ();
- return;
- }
-
- /* Skip ','. */
- input_line_pointer++;
-
- if ((temp = get_absolute_expression ()) < 0)
- {
- /* xgettext:c-format */
- as_bad (_(".COMMon length (%d.) < 0! Ignored."), temp);
- ignore_rest_of_line ();
- return;
- }
-
- size = temp;
- *p = 0;
- symbolP = symbol_find_or_make (name);
- *p = c;
-
- if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
- {
- as_bad (_("Ignoring attempt to re-define symbol"));
- ignore_rest_of_line ();
- return;
- }
-
- if (S_GET_VALUE (symbolP) != 0)
- {
- if (S_GET_VALUE (symbolP) != size)
- {
- /* xgettext:c-format */
- as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."),
- S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
- }
- }
-
- know (symbol_get_frag (symbolP) == &zero_address_frag);
-
- if (*input_line_pointer != ',')
- have_align = 0;
- else
- {
- have_align = 1;
- input_line_pointer++;
- SKIP_WHITESPACE ();
- }
-
- if (! have_align || *input_line_pointer != '"')
- {
- if (! have_align)
- temp = 0;
- else
- {
- temp = get_absolute_expression ();
-
- if (temp < 0)
- {
- temp = 0;
- as_warn (_("Common alignment negative; 0 assumed"));
- }
- }
-
- if (symbol_get_obj (symbolP)->local)
- {
- segT old_sec;
- int old_subsec;
- char *pfrag;
- int align;
- flagword applicable;
-
- old_sec = now_seg;
- old_subsec = now_subseg;
-
- applicable = bfd_applicable_section_flags (stdoutput);
-
- applicable &= SEC_ALLOC;
-
- switch (area)
- {
- case SCOMMON_SECTION:
- do_v850_seg (SBSS_SECTION, 0);
- break;
-
- case ZCOMMON_SECTION:
- do_v850_seg (ZBSS_SECTION, 0);
- break;
-
- case TCOMMON_SECTION:
- do_v850_seg (TBSS_SECTION, 0);
- break;
- }
-
- if (temp)
- {
- /* Convert to a power of 2 alignment. */
- for (align = 0; (temp & 1) == 0; temp >>= 1, ++align)
- ;
-
- if (temp != 1)
- {
- as_bad (_("Common alignment not a power of 2"));
- ignore_rest_of_line ();
- return;
- }
- }
- else
- align = 0;
-
- record_alignment (now_seg, align);
-
- if (align)
- frag_align (align, 0, 0);
-
- switch (area)
- {
- case SCOMMON_SECTION:
- if (S_GET_SEGMENT (symbolP) == v850_seg_table[SBSS_SECTION].s)
- symbol_get_frag (symbolP)->fr_symbol = 0;
- break;
-
- case ZCOMMON_SECTION:
- if (S_GET_SEGMENT (symbolP) == v850_seg_table[ZBSS_SECTION].s)
- symbol_get_frag (symbolP)->fr_symbol = 0;
- break;
-
- case TCOMMON_SECTION:
- if (S_GET_SEGMENT (symbolP) == v850_seg_table[TBSS_SECTION].s)
- symbol_get_frag (symbolP)->fr_symbol = 0;
- break;
-
- default:
- abort ();
- }
-
- symbol_set_frag (symbolP, frag_now);
- pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
- (offsetT) size, (char *) 0);
- *pfrag = 0;
- S_SET_SIZE (symbolP, size);
-
- switch (area)
- {
- case SCOMMON_SECTION:
- S_SET_SEGMENT (symbolP, v850_seg_table[SBSS_SECTION].s);
- break;
-
- case ZCOMMON_SECTION:
- S_SET_SEGMENT (symbolP, v850_seg_table[ZBSS_SECTION].s);
- break;
-
- case TCOMMON_SECTION:
- S_SET_SEGMENT (symbolP, v850_seg_table[TBSS_SECTION].s);
- break;
-
- default:
- abort ();
- }
-
- S_CLEAR_EXTERNAL (symbolP);
- obj_elf_section_change_hook ();
- subseg_set (old_sec, old_subsec);
- }
- else
- {
- allocate_common:
- S_SET_VALUE (symbolP, (valueT) size);
- S_SET_ALIGN (symbolP, temp);
- S_SET_EXTERNAL (symbolP);
-
- switch (area)
- {
- case SCOMMON_SECTION:
- case ZCOMMON_SECTION:
- case TCOMMON_SECTION:
- do_v850_seg (area, 0);
- S_SET_SEGMENT (symbolP, v850_seg_table[area].s);
- break;
-
- default:
- abort ();
- }
- }
- }
- else
- {
- input_line_pointer++;
-
- /* @@ Some use the dot, some don't. Can we get some consistency?? */
- if (*input_line_pointer == '.')
- input_line_pointer++;
-
- /* @@ Some say data, some say bss. */
- if (strncmp (input_line_pointer, "bss\"", 4)
- && strncmp (input_line_pointer, "data\"", 5))
- {
- while (*--input_line_pointer != '"')
- ;
- input_line_pointer--;
- goto bad_common_segment;
- }
- while (*input_line_pointer++ != '"')
- ;
- goto allocate_common;
- }
-
- symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
-
- demand_empty_rest_of_line ();
- return;
-
- {
- bad_common_segment:
- p = input_line_pointer;
- while (*p && *p != '\n')
- p++;
- c = *p;
- *p = '\0';
- as_bad (_("bad .common segment %s"), input_line_pointer + 1);
- *p = c;
- input_line_pointer = p;
- ignore_rest_of_line ();
- return;
- }
-}
-
-static void set_machine PARAMS ((int));
-
-static void
-set_machine (number)
- int number;
-{
- machine = number;
- bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine);
-
- switch (machine)
- {
- case 0: processor_mask = PROCESSOR_V850; break;
- case bfd_mach_v850e: processor_mask = PROCESSOR_V850E; break;
- case bfd_mach_v850ea: processor_mask = PROCESSOR_V850EA; break;
- }
-}
-
-/* The target specific pseudo-ops which we support. */
-const pseudo_typeS md_pseudo_table[] = {
- { "sdata", v850_seg, SDATA_SECTION },
- { "tdata", v850_seg, TDATA_SECTION },
- { "zdata", v850_seg, ZDATA_SECTION },
- { "sbss", v850_seg, SBSS_SECTION },
- { "tbss", v850_seg, TBSS_SECTION },
- { "zbss", v850_seg, ZBSS_SECTION },
- { "rosdata", v850_seg, ROSDATA_SECTION },
- { "rozdata", v850_seg, ROZDATA_SECTION },
- { "bss", v850_seg, BSS_SECTION },
- { "offset", v850_offset, 0 },
- { "word", cons, 4 },
- { "zcomm", v850_comm, ZCOMMON_SECTION },
- { "scomm", v850_comm, SCOMMON_SECTION },
- { "tcomm", v850_comm, TCOMMON_SECTION },
- { "v850", set_machine, 0 },
- { "call_table_data", v850_seg, CALL_TABLE_DATA_SECTION },
- { "call_table_text", v850_seg, CALL_TABLE_TEXT_SECTION },
- { "v850e", set_machine, bfd_mach_v850e },
- { "v850ea", set_machine, bfd_mach_v850ea },
- { "file", dwarf2_directive_file, 0 },
- { "loc", dwarf2_directive_loc, 0 },
- { NULL, NULL, 0 }
-};
-
-/* Opcode hash table. */
-static struct hash_control *v850_hash;
-
-/* This table is sorted. Suitable for searching by a binary search. */
-static const struct reg_name pre_defined_registers[] = {
- { "ep", 30 }, /* ep - element ptr */
- { "gp", 4 }, /* gp - global ptr */
- { "hp", 2 }, /* hp - handler stack ptr */
- { "lp", 31 }, /* lp - link ptr */
- { "r0", 0 },
- { "r1", 1 },
- { "r10", 10 },
- { "r11", 11 },
- { "r12", 12 },
- { "r13", 13 },
- { "r14", 14 },
- { "r15", 15 },
- { "r16", 16 },
- { "r17", 17 },
- { "r18", 18 },
- { "r19", 19 },
- { "r2", 2 },
- { "r20", 20 },
- { "r21", 21 },
- { "r22", 22 },
- { "r23", 23 },
- { "r24", 24 },
- { "r25", 25 },
- { "r26", 26 },
- { "r27", 27 },
- { "r28", 28 },
- { "r29", 29 },
- { "r3", 3 },
- { "r30", 30 },
- { "r31", 31 },
- { "r4", 4 },
- { "r5", 5 },
- { "r6", 6 },
- { "r7", 7 },
- { "r8", 8 },
- { "r9", 9 },
- { "sp", 3 }, /* sp - stack ptr */
- { "tp", 5 }, /* tp - text ptr */
- { "zero", 0 },
-};
-
-#define REG_NAME_CNT \
- (sizeof (pre_defined_registers) / sizeof (struct reg_name))
-
-static const struct reg_name system_registers[] = {
- { "ctbp", 20 },
- { "ctpc", 16 },
- { "ctpsw", 17 },
- { "dbpc", 18 },
- { "dbpsw", 19 },
- { "ecr", 4 },
- { "eipc", 0 },
- { "eipsw", 1 },
- { "fepc", 2 },
- { "fepsw", 3 },
- { "psw", 5 },
-};
-
-#define SYSREG_NAME_CNT \
- (sizeof (system_registers) / sizeof (struct reg_name))
-
-static const struct reg_name system_list_registers[] = {
- {"PS", 5 },
- {"SR", 0 + 1}
-};
-
-#define SYSREGLIST_NAME_CNT \
- (sizeof (system_list_registers) / sizeof (struct reg_name))
-
-static const struct reg_name cc_names[] = {
- { "c", 0x1 },
- { "e", 0x2 },
- { "ge", 0xe },
- { "gt", 0xf },
- { "h", 0xb },
- { "l", 0x1 },
- { "le", 0x7 },
- { "lt", 0x6 },
- { "n", 0x4 },
- { "nc", 0x9 },
- { "ne", 0xa },
- { "nh", 0x3 },
- { "nl", 0x9 },
- { "ns", 0xc },
- { "nv", 0x8 },
- { "nz", 0xa },
- { "p", 0xc },
- { "s", 0x4 },
- { "sa", 0xd },
- { "t", 0x5 },
- { "v", 0x0 },
- { "z", 0x2 },
-};
-
-#define CC_NAME_CNT \
- (sizeof (cc_names) / sizeof (struct reg_name))
-
-/* Do a binary search of the given register table to see if NAME is a
- valid regiter name. Return the register number from the array on
- success, or -1 on failure. */
-
-static int reg_name_search
- PARAMS ((const struct reg_name *, int, const char *, boolean));
-
-static int
-reg_name_search (regs, regcount, name, accept_numbers)
- const struct reg_name *regs;
- int regcount;
- const char *name;
- boolean accept_numbers;
-{
- int middle, low, high;
- int cmp;
- symbolS *symbolP;
-
- /* If the register name is a symbol, then evaluate it. */
- if ((symbolP = symbol_find (name)) != NULL)
- {
- /* If the symbol is an alias for another name then use that.
- If the symbol is an alias for a number, then return the number. */
- if (symbol_equated_p (symbolP))
- {
- name
- = S_GET_NAME (symbol_get_value_expression (symbolP)->X_add_symbol);
- }
- else if (accept_numbers)
- {
- int reg = S_GET_VALUE (symbolP);
-
- if (reg >= 0 && reg <= 31)
- return reg;
- }
-
- /* Otherwise drop through and try parsing name normally. */
- }
-
- low = 0;
- high = regcount - 1;
-
- do
- {
- middle = (low + high) / 2;
- cmp = strcasecmp (name, regs[middle].name);
- if (cmp < 0)
- high = middle - 1;
- else if (cmp > 0)
- low = middle + 1;
- else
- return regs[middle].value;
- }
- while (low <= high);
- return -1;
-}
-
-/* Summary of register_name().
- *
- * in: Input_line_pointer points to 1st char of operand.
- *
- * out: An expressionS.
- * The operand may have been a register: in this case, X_op == O_register,
- * X_add_number is set to the register number, and truth is returned.
- * Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state. */
-
-static boolean register_name PARAMS ((expressionS *));
-
-static boolean
-register_name (expressionP)
- expressionS *expressionP;
-{
- int reg_number;
- char *name;
- char *start;
- char c;
-
- /* Find the spelling of the operand. */
- start = name = input_line_pointer;
-
- c = get_symbol_end ();
-
- reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT,
- name, FALSE);
-
- /* Put back the delimiting char. */
- *input_line_pointer = c;
-
- /* Look to see if it's in the register table. */
- if (reg_number >= 0)
- {
- expressionP->X_op = O_register;
- expressionP->X_add_number = reg_number;
-
- /* Make the rest nice. */
- expressionP->X_add_symbol = NULL;
- expressionP->X_op_symbol = NULL;
-
- return true;
- }
- else
- {
- /* Reset the line as if we had not done anything. */
- input_line_pointer = start;
-
- return false;
- }
-}
-
-/* Summary of system_register_name().
- *
- * in: INPUT_LINE_POINTER points to 1st char of operand.
- * EXPRESSIONP points to an expression structure to be filled in.
- * ACCEPT_NUMBERS is true iff numerical register names may be used.
- * ACCEPT_LIST_NAMES is true iff the special names PS and SR may be
- * accepted.
- *
- * out: An expressionS structure in expressionP.
- * The operand may have been a register: in this case, X_op == O_register,
- * X_add_number is set to the register number, and truth is returned.
- * Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state. */
-
-static boolean system_register_name PARAMS ((expressionS *, boolean, boolean));
-
-static boolean
-system_register_name (expressionP, accept_numbers, accept_list_names)
- expressionS *expressionP;
- boolean accept_numbers;
- boolean accept_list_names;
-{
- int reg_number;
- char *name;
- char *start;
- char c;
-
- /* Find the spelling of the operand. */
- start = name = input_line_pointer;
-
- c = get_symbol_end ();
- reg_number = reg_name_search (system_registers, SYSREG_NAME_CNT, name,
- accept_numbers);
-
- /* Put back the delimiting char. */
- *input_line_pointer = c;
-
- if (reg_number < 0
- && accept_numbers)
- {
- /* Reset input_line pointer. */
- input_line_pointer = start;
-
- if (ISDIGIT (*input_line_pointer))
- {
- reg_number = strtol (input_line_pointer, &input_line_pointer, 10);
-
- /* Make sure that the register number is allowable. */
- if (reg_number < 0
- || (reg_number > 5 && reg_number < 16)
- || reg_number > 20)
- {
- reg_number = -1;
- }
- }
- else if (accept_list_names)
- {
- c = get_symbol_end ();
- reg_number = reg_name_search (system_list_registers,
- SYSREGLIST_NAME_CNT, name, FALSE);
-
- /* Put back the delimiting char. */
- *input_line_pointer = c;
- }
- }
-
- /* Look to see if it's in the register table. */
- if (reg_number >= 0)
- {
- expressionP->X_op = O_register;
- expressionP->X_add_number = reg_number;
-
- /* Make the rest nice. */
- expressionP->X_add_symbol = NULL;
- expressionP->X_op_symbol = NULL;
-
- return true;
- }
- else
- {
- /* Reset the line as if we had not done anything. */
- input_line_pointer = start;
-
- return false;
- }
-}
-
-/* Summary of cc_name().
- *
- * in: INPUT_LINE_POINTER points to 1st char of operand.
- *
- * out: An expressionS.
- * The operand may have been a register: in this case, X_op == O_register,
- * X_add_number is set to the register number, and truth is returned.
- * Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state. */
-
-static boolean cc_name PARAMS ((expressionS *));
-
-static boolean
-cc_name (expressionP)
- expressionS *expressionP;
-{
- int reg_number;
- char *name;
- char *start;
- char c;
-
- /* Find the spelling of the operand. */
- start = name = input_line_pointer;
-
- c = get_symbol_end ();
- reg_number = reg_name_search (cc_names, CC_NAME_CNT, name, FALSE);
-
- /* Put back the delimiting char. */
- *input_line_pointer = c;
-
- /* Look to see if it's in the register table. */
- if (reg_number >= 0)
- {
- expressionP->X_op = O_constant;
- expressionP->X_add_number = reg_number;
-
- /* Make the rest nice. */
- expressionP->X_add_symbol = NULL;
- expressionP->X_op_symbol = NULL;
-
- return true;
- }
- else
- {
- /* Reset the line as if we had not done anything. */
- input_line_pointer = start;
-
- return false;
- }
-}
-
-static void skip_white_space PARAMS ((void));
-
-static void
-skip_white_space ()
-{
- while (*input_line_pointer == ' '
- || *input_line_pointer == '\t')
- ++input_line_pointer;
-}
-
-/* Summary of parse_register_list ().
- *
- * in: INPUT_LINE_POINTER points to 1st char of a list of registers.
- * INSN is the partially constructed instruction.
- * OPERAND is the operand being inserted.
- *
- * out: NULL if the parse completed successfully, otherwise a
- * pointer to an error message is returned. If the parse
- * completes the correct bit fields in the instruction
- * will be filled in.
- *
- * Parses register lists with the syntax:
- *
- * { rX }
- * { rX, rY }
- * { rX - rY }
- * { rX - rY, rZ }
- * etc
- *
- * and also parses constant epxressions whoes bits indicate the
- * registers in the lists. The LSB in the expression refers to
- * the lowest numbered permissable register in the register list,
- * and so on upwards. System registers are considered to be very
- * high numbers. */
-
-static char *parse_register_list
- PARAMS ((unsigned long *, const struct v850_operand *));
-
-static char *
-parse_register_list (insn, operand)
- unsigned long *insn;
- const struct v850_operand *operand;
-{
- static int type1_regs[32] = {
- 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24
- };
- static int type2_regs[32] = {
- 19, 18, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24
- };
- static int type3_regs[32] = {
- 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 15, 13, 12, 7, 6, 5, 4, 11, 10, 9, 8
- };
- int *regs;
- expressionS exp;
-
- /* Select a register array to parse. */
- switch (operand->shift)
- {
- case 0xffe00001: regs = type1_regs; break;
- case 0xfff8000f: regs = type2_regs; break;
- case 0xfff8001f: regs = type3_regs; break;
- default:
- as_bad (_("unknown operand shift: %x\n"), operand->shift);
- return _("internal failure in parse_register_list");
- }
-
- skip_white_space ();
-
- /* If the expression starts with a curly brace it is a register list.
- Otherwise it is a constant expression, whoes bits indicate which
- registers are to be included in the list. */
-
- if (*input_line_pointer != '{')
- {
- int reg;
- int i;
-
- expression (&exp);
-
- if (exp.X_op != O_constant)
- return _("constant expression or register list expected");
-
- if (regs == type1_regs)
- {
- if (exp.X_add_number & 0xFFFFF000)
- return _("high bits set in register list expression");
-
- for (reg = 20; reg < 32; reg++)
- if (exp.X_add_number & (1 << (reg - 20)))
- {
- for (i = 0; i < 32; i++)
- if (regs[i] == reg)
- *insn |= (1 << i);
- }
- }
- else if (regs == type2_regs)
- {
- if (exp.X_add_number & 0xFFFE0000)
- return _("high bits set in register list expression");
-
- for (reg = 1; reg < 16; reg++)
- if (exp.X_add_number & (1 << (reg - 1)))
- {
- for (i = 0; i < 32; i++)
- if (regs[i] == reg)
- *insn |= (1 << i);
- }
-
- if (exp.X_add_number & (1 << 15))
- *insn |= (1 << 3);
-
- if (exp.X_add_number & (1 << 16))
- *insn |= (1 << 19);
- }
- else /* regs == type3_regs */
- {
- if (exp.X_add_number & 0xFFFE0000)
- return _("high bits set in register list expression");
-
- for (reg = 16; reg < 32; reg++)
- if (exp.X_add_number & (1 << (reg - 16)))
- {
- for (i = 0; i < 32; i++)
- if (regs[i] == reg)
- *insn |= (1 << i);
- }
-
- if (exp.X_add_number & (1 << 16))
- *insn |= (1 << 19);
- }
-
- return NULL;
- }
-
- input_line_pointer++;
-
- /* Parse the register list until a terminator (closing curly brace or
- new-line) is found. */
- for (;;)
- {
- if (register_name (&exp))
- {
- int i;
-
- /* Locate the given register in the list, and if it is there,
- insert the corresponding bit into the instruction. */
- for (i = 0; i < 32; i++)
- {
- if (regs[i] == exp.X_add_number)
- {
- *insn |= (1 << i);
- break;
- }
- }
-
- if (i == 32)
- {
- return _("illegal register included in list");
- }
- }
- else if (system_register_name (&exp, true, true))
- {
- if (regs == type1_regs)
- {
- return _("system registers cannot be included in list");
- }
- else if (exp.X_add_number == 5)
- {
- if (regs == type2_regs)
- return _("PSW cannot be included in list");
- else
- *insn |= 0x8;
- }
- else if (exp.X_add_number < 4)
- *insn |= 0x80000;
- else
- return _("High value system registers cannot be included in list");
- }
- else if (*input_line_pointer == '}')
- {
- input_line_pointer++;
- break;
- }
- else if (*input_line_pointer == ',')
- {
- input_line_pointer++;
- continue;
- }
- else if (*input_line_pointer == '-')
- {
- /* We have encountered a range of registers: rX - rY. */
- int j;
- expressionS exp2;
-
- /* Skip the dash. */
- ++input_line_pointer;
-
- /* Get the second register in the range. */
- if (! register_name (&exp2))
- {
- return _("second register should follow dash in register list");
- exp2.X_add_number = exp.X_add_number;
- }
-
- /* Add the rest of the registers in the range. */
- for (j = exp.X_add_number + 1; j <= exp2.X_add_number; j++)
- {
- int i;
-
- /* Locate the given register in the list, and if it is there,
- insert the corresponding bit into the instruction. */
- for (i = 0; i < 32; i++)
- {
- if (regs[i] == j)
- {
- *insn |= (1 << i);
- break;
- }
- }
-
- if (i == 32)
- return _("illegal register included in list");
- }
- }
- else
- {
- break;
- }
-
- skip_white_space ();
- }
-
- return NULL;
-}
-
-const char *md_shortopts = "m:";
-
-struct option md_longopts[] = {
- {NULL, no_argument, NULL, 0}
-};
-
-size_t md_longopts_size = sizeof (md_longopts);
-
-void
-md_show_usage (stream)
- FILE *stream;
-{
- fprintf (stream, _(" V850 options:\n"));
- fprintf (stream, _(" -mwarn-signed-overflow Warn if signed immediate values overflow\n"));
- fprintf (stream, _(" -mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n"));
- fprintf (stream, _(" -mv850 The code is targeted at the v850\n"));
- fprintf (stream, _(" -mv850e The code is targeted at the v850e\n"));
- fprintf (stream, _(" -mv850ea The code is targeted at the v850ea\n"));
- fprintf (stream, _(" -mv850any The code is generic, despite any processor specific instructions\n"));
-}
-
-int
-md_parse_option (c, arg)
- int c;
- char *arg;
-{
- if (c != 'm')
- {
- if (c != 'a')
- /* xgettext:c-format */
- fprintf (stderr, _("unknown command line option: -%c%s\n"), c, arg);
- return 0;
- }
-
- if (strcmp (arg, "warn-signed-overflow") == 0)
- {
- warn_signed_overflows = TRUE;
- }
- else if (strcmp (arg, "warn-unsigned-overflow") == 0)
- {
- warn_unsigned_overflows = TRUE;
- }
- else if (strcmp (arg, "v850") == 0)
- {
- machine = 0;
- processor_mask = PROCESSOR_V850;
- }
- else if (strcmp (arg, "v850e") == 0)
- {
- machine = bfd_mach_v850e;
- processor_mask = PROCESSOR_V850E;
- }
- else if (strcmp (arg, "v850ea") == 0)
- {
- machine = bfd_mach_v850ea;
- processor_mask = PROCESSOR_V850EA;
- }
- else if (strcmp (arg, "v850any") == 0)
- {
- /* Tell the world that this is for any v850 chip. */
- machine = 0;
-
- /* But support instructions for the extended versions. */
- processor_mask = PROCESSOR_V850EA;
- }
- else
- {
- /* xgettext:c-format */
- fprintf (stderr, _("unknown command line option: -%c%s\n"), c, arg);
- return 0;
- }
-
- return 1;
-}
-
-symbolS *
-md_undefined_symbol (name)
- char *name ATTRIBUTE_UNUSED;
-{
- return 0;
-}
-
-char *
-md_atof (type, litp, sizep)
- int type;
- char *litp;
- int *sizep;
-{
- int prec;
- LITTLENUM_TYPE words[4];
- char *t;
- int i;
-
- switch (type)
- {
- case 'f':
- prec = 2;
- break;
-
- case 'd':
- prec = 4;
- break;
-
- default:
- *sizep = 0;
- return _("bad call to md_atof");
- }
-
- t = atof_ieee (input_line_pointer, type, words);
- if (t)
- input_line_pointer = t;
-
- *sizep = prec * 2;
-
- for (i = prec - 1; i >= 0; i--)
- {
- md_number_to_chars (litp, (valueT) words[i], 2);
- litp += 2;
- }
-
- return NULL;
-}
-
-/* Very gross. */
-
-void
-md_convert_frag (abfd, sec, fragP)
- bfd *abfd ATTRIBUTE_UNUSED;
- asection *sec;
- fragS *fragP;
-{
- subseg_change (sec, 0);
-
- /* In range conditional or unconditional branch. */
- if (fragP->fr_subtype == 0 || fragP->fr_subtype == 2)
- {
- fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol,
- fragP->fr_offset, 1, BFD_RELOC_UNUSED + (int)fragP->fr_opcode);
- fragP->fr_fix += 2;
- }
- /* Out of range conditional branch. Emit a branch around a jump. */
- else if (fragP->fr_subtype == 1)
- {
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
-
- /* Reverse the condition of the first branch. */
- buffer[0] ^= 0x08;
- /* Mask off all the displacement bits. */
- buffer[0] &= 0x8f;
- buffer[1] &= 0x07;
- /* Now set the displacement bits so that we branch
- around the unconditional branch. */
- buffer[0] |= 0x30;
-
- /* Now create the unconditional branch + fixup to the final
- target. */
- md_number_to_chars (buffer + 2, 0x00000780, 4);
- fix_new (fragP, fragP->fr_fix + 2, 4, fragP->fr_symbol,
- fragP->fr_offset, 1, BFD_RELOC_UNUSED +
- (int) fragP->fr_opcode + 1);
- fragP->fr_fix += 6;
- }
- /* Out of range unconditional branch. Emit a jump. */
- else if (fragP->fr_subtype == 3)
- {
- md_number_to_chars (fragP->fr_fix + fragP->fr_literal, 0x00000780, 4);
- fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol,
- fragP->fr_offset, 1, BFD_RELOC_UNUSED +
- (int) fragP->fr_opcode + 1);
- fragP->fr_fix += 4;
- }
- else
- abort ();
-}
-
-valueT
-md_section_align (seg, addr)
- asection *seg;
- valueT addr;
-{
- int align = bfd_get_section_alignment (stdoutput, seg);
- return ((addr + (1 << align) - 1) & (-1 << align));
-}
-
-void
-md_begin ()
-{
- char *prev_name = "";
- register const struct v850_opcode *op;
-
- if (strncmp (TARGET_CPU, "v850ea", 6) == 0)
- {
- if (machine == -1)
- machine = bfd_mach_v850ea;
-
- if (processor_mask == -1)
- processor_mask = PROCESSOR_V850EA;
- }
- else if (strncmp (TARGET_CPU, "v850e", 5) == 0)
- {
- if (machine == -1)
- machine = bfd_mach_v850e;
-
- if (processor_mask == -1)
- processor_mask = PROCESSOR_V850E;
- }
- else if (strncmp (TARGET_CPU, "v850", 4) == 0)
- {
- if (machine == -1)
- machine = 0;
-
- if (processor_mask == -1)
- processor_mask = PROCESSOR_V850;
- }
- else
- /* xgettext:c-format */
- as_bad (_("Unable to determine default target processor from string: %s"),
- TARGET_CPU);
-
- v850_hash = hash_new ();
-
- /* Insert unique names into hash table. The V850 instruction set
- has many identical opcode names that have different opcodes based
- on the operands. This hash table then provides a quick index to
- the first opcode with a particular name in the opcode table. */
-
- op = v850_opcodes;
- while (op->name)
- {
- if (strcmp (prev_name, op->name))
- {
- prev_name = (char *) op->name;
- hash_insert (v850_hash, op->name, (char *) op);
- }
- op++;
- }
-
- v850_seg_table[BSS_SECTION].s = bss_section;
- bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine);
-}
-
-static bfd_reloc_code_real_type handle_ctoff
- PARAMS ((const struct v850_operand *));
-
-static bfd_reloc_code_real_type
-handle_ctoff (operand)
- const struct v850_operand *operand;
-{
- if (operand == NULL)
- return BFD_RELOC_V850_CALLT_16_16_OFFSET;
-
- if (operand->bits != 6
- || operand->shift != 0)
- {
- as_bad (_("ctoff() relocation used on an instruction which does not support it"));
- return BFD_RELOC_64; /* Used to indicate an error condition. */
- }
-
- return BFD_RELOC_V850_CALLT_6_7_OFFSET;
-}
-
-static bfd_reloc_code_real_type handle_sdaoff
- PARAMS ((const struct v850_operand *));
-
-static bfd_reloc_code_real_type
-handle_sdaoff (operand)
- const struct v850_operand *operand;
-{
- if (operand == NULL)
- return BFD_RELOC_V850_SDA_16_16_OFFSET;
-
- if (operand->bits == 15 && operand->shift == 17)
- return BFD_RELOC_V850_SDA_15_16_OFFSET;
-
- if (operand->bits == -1)
- return BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET;
-
- if (operand->bits != 16
- || operand->shift != 16)
- {
- as_bad (_("sdaoff() relocation used on an instruction which does not support it"));
- return BFD_RELOC_64; /* Used to indicate an error condition. */
- }
-
- return BFD_RELOC_V850_SDA_16_16_OFFSET;
-}
-
-static bfd_reloc_code_real_type handle_zdaoff
- PARAMS ((const struct v850_operand *));
-
-static bfd_reloc_code_real_type
-handle_zdaoff (operand)
- const struct v850_operand *operand;
-{
- if (operand == NULL)
- return BFD_RELOC_V850_ZDA_16_16_OFFSET;
-
- if (operand->bits == 15 && operand->shift == 17)
- return BFD_RELOC_V850_ZDA_15_16_OFFSET;
-
- if (operand->bits == -1)
- return BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET;
-
- if (operand->bits != 16
- || operand->shift != 16)
- {
- as_bad (_("zdaoff() relocation used on an instruction which does not support it"));
- /* Used to indicate an error condition. */
- return BFD_RELOC_64;
- }
-
- return BFD_RELOC_V850_ZDA_16_16_OFFSET;
-}
-
-static bfd_reloc_code_real_type handle_tdaoff
- PARAMS ((const struct v850_operand *));
-
-static bfd_reloc_code_real_type
-handle_tdaoff (operand)
- const struct v850_operand *operand;
-{
- if (operand == NULL)
- /* Data item, not an instruction. */
- return BFD_RELOC_V850_TDA_7_7_OFFSET;
-
- if (operand->bits == 6 && operand->shift == 1)
- /* sld.w/sst.w, operand: D8_6 */
- return BFD_RELOC_V850_TDA_6_8_OFFSET;
-
- if (operand->bits == 4 && operand->insert != NULL)
- /* sld.hu, operand: D5-4 */
- return BFD_RELOC_V850_TDA_4_5_OFFSET;
-
- if (operand->bits == 4 && operand->insert == NULL)
- /* sld.bu, operand: D4 */
- return BFD_RELOC_V850_TDA_4_4_OFFSET;
-
- if (operand->bits == 16 && operand->shift == 16)
- /* set1 & chums, operands: D16 */
- return BFD_RELOC_V850_TDA_16_16_OFFSET;
-
- if (operand->bits != 7)
- {
- as_bad (_("tdaoff() relocation used on an instruction which does not support it"));
- /* Used to indicate an error condition. */
- return BFD_RELOC_64;
- }
-
- return operand->insert != NULL
- ? BFD_RELOC_V850_TDA_7_8_OFFSET /* sld.h/sst.h, operand: D8_7 */
- : BFD_RELOC_V850_TDA_7_7_OFFSET; /* sld.b/sst.b, opreand: D7 */
-}
-
-/* Warning: The code in this function relies upon the definitions
- in the v850_operands[] array (defined in opcodes/v850-opc.c)
- matching the hard coded values contained herein. */
-
-static bfd_reloc_code_real_type v850_reloc_prefix
- PARAMS ((const struct v850_operand *));
-
-static bfd_reloc_code_real_type
-v850_reloc_prefix (operand)
- const struct v850_operand *operand;
-{
- boolean paren_skipped = false;
-
- /* Skip leading opening parenthesis. */
- if (*input_line_pointer == '(')
- {
- ++input_line_pointer;
- paren_skipped = true;
- }
-
-#define CHECK_(name, reloc) \
- if (strncmp (input_line_pointer, name "(", strlen (name) + 1) == 0) \
- { \
- input_line_pointer += strlen (name); \
- return reloc; \
- }
-
- CHECK_ ("hi0", BFD_RELOC_HI16 );
- CHECK_ ("hi", BFD_RELOC_HI16_S );
- CHECK_ ("lo", BFD_RELOC_LO16 );
- CHECK_ ("sdaoff", handle_sdaoff (operand));
- CHECK_ ("zdaoff", handle_zdaoff (operand));
- CHECK_ ("tdaoff", handle_tdaoff (operand));
- CHECK_ ("hilo", BFD_RELOC_32 );
- CHECK_ ("ctoff", handle_ctoff (operand) );
-
- /* Restore skipped parenthesis. */
- if (paren_skipped)
- --input_line_pointer;
-
- return BFD_RELOC_UNUSED;
-}
-
-/* Insert an operand value into an instruction. */
-
-static unsigned long v850_insert_operand
- PARAMS ((unsigned long, const struct v850_operand *, offsetT, char *,
- unsigned int, char *));
-
-static unsigned long
-v850_insert_operand (insn, operand, val, file, line, str)
- unsigned long insn;
- const struct v850_operand *operand;
- offsetT val;
- char *file;
- unsigned int line;
- char *str;
-{
- if (operand->insert)
- {
- const char *message = NULL;
-
- insn = operand->insert (insn, val, &message);
- if (message != NULL)
- {
- if ((operand->flags & V850_OPERAND_SIGNED)
- && ! warn_signed_overflows
- && strstr (message, "out of range") != NULL)
- {
- /* Skip warning... */
- }
- else if ((operand->flags & V850_OPERAND_SIGNED) == 0
- && ! warn_unsigned_overflows
- && strstr (message, "out of range") != NULL)
- {
- /* Skip warning... */
- }
- else if (str)
- {
- if (file == (char *) NULL)
- as_warn ("%s: %s", str, message);
- else
- as_warn_where (file, line, "%s: %s", str, message);
- }
- else
- {
- if (file == (char *) NULL)
- as_warn (message);
- else
- as_warn_where (file, line, message);
- }
- }
- }
- else
- {
- if (operand->bits != 32)
- {
- long min, max;
-
- if ((operand->flags & V850_OPERAND_SIGNED) != 0)
- {
- if (! warn_signed_overflows)
- max = (1 << operand->bits) - 1;
- else
- max = (1 << (operand->bits - 1)) - 1;
-
- min = -(1 << (operand->bits - 1));
- }
- else
- {
- max = (1 << operand->bits) - 1;
-
- if (! warn_unsigned_overflows)
- min = -(1 << (operand->bits - 1));
- else
- min = 0;
- }
-
- if (val < (offsetT) min || val > (offsetT) max)
- {
- /* xgettext:c-format */
- const char *err =
- _("operand out of range (%s not between %ld and %ld)");
- char buf[100];
-
- /* Restore min and mix to expected values for decimal ranges. */
- if ((operand->flags & V850_OPERAND_SIGNED)
- && ! warn_signed_overflows)
- max = (1 << (operand->bits - 1)) - 1;
-
- if (! (operand->flags & V850_OPERAND_SIGNED)
- && ! warn_unsigned_overflows)
- min = 0;
-
- if (str)
- {
- sprintf (buf, "%s: ", str);
-
- sprint_value (buf + strlen (buf), val);
- }
- else
- sprint_value (buf, val);
-
- if (file == (char *) NULL)
- as_warn (err, buf, min, max);
- else
- as_warn_where (file, line, err, buf, min, max);
- }
- }
-
- insn |= (((long) val & ((1 << operand->bits) - 1)) << operand->shift);
- }
-
- return insn;
-}
-
-static char copy_of_instruction[128];
-
-void
-md_assemble (str)
- char *str;
-{
- char *s;
- char *start_of_operands;
- struct v850_opcode *opcode;
- struct v850_opcode *next_opcode;
- const unsigned char *opindex_ptr;
- int next_opindex;
- int relaxable = 0;
- unsigned long insn;
- unsigned long insn_size;
- char *f;
- int i;
- int match;
- boolean extra_data_after_insn = false;
- unsigned extra_data_len = 0;
- unsigned long extra_data = 0;
- char *saved_input_line_pointer;
-
- strncpy (copy_of_instruction, str, sizeof (copy_of_instruction) - 1);
-
- /* Get the opcode. */
- for (s = str; *s != '\0' && ! ISSPACE (*s); s++)
- continue;
-
- if (*s != '\0')
- *s++ = '\0';
-
- /* Find the first opcode with the proper name. */
- opcode = (struct v850_opcode *) hash_find (v850_hash, str);
- if (opcode == NULL)
- {
- /* xgettext:c-format */
- as_bad (_("Unrecognized opcode: `%s'"), str);
- ignore_rest_of_line ();
- return;
- }
-
- str = s;
- while (ISSPACE (*str))
- ++str;
-
- start_of_operands = str;
-
- saved_input_line_pointer = input_line_pointer;
-
- for (;;)
- {
- const char *errmsg = NULL;
-
- match = 0;
-
- if ((opcode->processors & processor_mask) == 0)
- {
- errmsg = _("Target processor does not support this instruction.");
- goto error;
- }
-
- relaxable = 0;
- fc = 0;
- next_opindex = 0;
- insn = opcode->opcode;
- extra_data_after_insn = false;
-
- input_line_pointer = str = start_of_operands;
-
- for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++)
- {
- const struct v850_operand *operand;
- char *hold;
- expressionS ex;
- bfd_reloc_code_real_type reloc;
-
- if (next_opindex == 0)
- {
- operand = &v850_operands[*opindex_ptr];
- }
- else
- {
- operand = &v850_operands[next_opindex];
- next_opindex = 0;
- }
-
- errmsg = NULL;
-
- while (*str == ' ' || *str == ',' || *str == '[' || *str == ']')
- ++str;
-
- if (operand->flags & V850_OPERAND_RELAX)
- relaxable = 1;
-
- /* Gather the operand. */
- hold = input_line_pointer;
- input_line_pointer = str;
-
- /* lo(), hi(), hi0(), etc... */
- if ((reloc = v850_reloc_prefix (operand)) != BFD_RELOC_UNUSED)
- {
- /* This is a fake reloc, used to indicate an error condition. */
- if (reloc == BFD_RELOC_64)
- {
- match = 1;
- goto error;
- }
-
- expression (&ex);
-
- if (ex.X_op == O_constant)
- {
- switch (reloc)
- {
- case BFD_RELOC_V850_ZDA_16_16_OFFSET:
- /* To cope with "not1 7, zdaoff(0xfffff006)[r0]"
- and the like. */
- /* Fall through. */
-
- case BFD_RELOC_LO16:
- {
- /* Truncate, then sign extend the value. */
- ex.X_add_number = SEXT16 (ex.X_add_number);
- break;
- }
-
- case BFD_RELOC_HI16:
- {
- /* Truncate, then sign extend the value. */
- ex.X_add_number = SEXT16 (ex.X_add_number >> 16);
- break;
- }
-
- case BFD_RELOC_HI16_S:
- {
- /* Truncate, then sign extend the value. */
- int temp = (ex.X_add_number >> 16) & 0xffff;
-
- temp += (ex.X_add_number >> 15) & 1;
-
- ex.X_add_number = SEXT16 (temp);
- break;
- }
-
- case BFD_RELOC_32:
- if ((operand->flags & V850E_IMMEDIATE32) == 0)
- {
- errmsg = _("immediate operand is too large");
- goto error;
- }
-
- extra_data_after_insn = true;
- extra_data_len = 4;
- extra_data = ex.X_add_number;
- ex.X_add_number = 0;
- break;
-
- default:
- fprintf (stderr, "reloc: %d\n", reloc);
- as_bad (_("AAARG -> unhandled constant reloc"));
- break;
- }
-
- if (fc > MAX_INSN_FIXUPS)
- as_fatal (_("too many fixups"));
-
- fixups[fc].exp = ex;
- fixups[fc].opindex = *opindex_ptr;
- fixups[fc].reloc = reloc;
- fc++;
- }
- else
- {
- if (reloc == BFD_RELOC_32)
- {
- if ((operand->flags & V850E_IMMEDIATE32) == 0)
- {
- errmsg = _("immediate operand is too large");
- goto error;
- }
-
- extra_data_after_insn = true;
- extra_data_len = 4;
- extra_data = ex.X_add_number;
- }
-
- if (fc > MAX_INSN_FIXUPS)
- as_fatal (_("too many fixups"));
-
- fixups[fc].exp = ex;
- fixups[fc].opindex = *opindex_ptr;
- fixups[fc].reloc = reloc;
- fc++;
- }
- }
- else
- {
- errmsg = NULL;
-
- if ((operand->flags & V850_OPERAND_REG) != 0)
- {
- if (!register_name (&ex))
- {
- errmsg = _("invalid register name");
- }
- else if ((operand->flags & V850_NOT_R0)
- && ex.X_add_number == 0)
- {
- errmsg = _("register r0 cannot be used here");
-
- /* Force an error message to be generated by
- skipping over any following potential matches
- for this opcode. */
- opcode += 3;
- }
- }
- else if ((operand->flags & V850_OPERAND_SRG) != 0)
- {
- if (!system_register_name (&ex, true, false))
- {
- errmsg = _("invalid system register name");
- }
- }
- else if ((operand->flags & V850_OPERAND_EP) != 0)
- {
- char *start = input_line_pointer;
- char c = get_symbol_end ();
-
- if (strcmp (start, "ep") != 0 && strcmp (start, "r30") != 0)
- {
- /* Put things back the way we found them. */
- *input_line_pointer = c;
- input_line_pointer = start;
- errmsg = _("expected EP register");
- goto error;
- }
-
- *input_line_pointer = c;
- str = input_line_pointer;
- input_line_pointer = hold;
-
- while (*str == ' ' || *str == ','
- || *str == '[' || *str == ']')
- ++str;
- continue;
- }
- else if ((operand->flags & V850_OPERAND_CC) != 0)
- {
- if (!cc_name (&ex))
- {
- errmsg = _("invalid condition code name");
- }
- }
- else if (operand->flags & V850E_PUSH_POP)
- {
- errmsg = parse_register_list (&insn, operand);
-
- /* The parse_register_list() function has already done
- everything, so fake a dummy expression. */
- ex.X_op = O_constant;
- ex.X_add_number = 0;
- }
- else if (operand->flags & V850E_IMMEDIATE16)
- {
- expression (&ex);
-
- if (ex.X_op != O_constant)
- errmsg = _("constant expression expected");
- else if (ex.X_add_number & 0xffff0000)
- {
- if (ex.X_add_number & 0xffff)
- errmsg = _("constant too big to fit into instruction");
- else if ((insn & 0x001fffc0) == 0x00130780)
- ex.X_add_number >>= 16;
- else
- errmsg = _("constant too big to fit into instruction");
- }
-
- extra_data_after_insn = true;
- extra_data_len = 2;
- extra_data = ex.X_add_number;
- ex.X_add_number = 0;
- }
- else if (operand->flags & V850E_IMMEDIATE32)
- {
- expression (&ex);
-
- if (ex.X_op != O_constant)
- errmsg = _("constant expression expected");
-
- extra_data_after_insn = true;
- extra_data_len = 4;
- extra_data = ex.X_add_number;
- ex.X_add_number = 0;
- }
- else if (register_name (&ex)
- && (operand->flags & V850_OPERAND_REG) == 0)
- {
- char c;
- int exists = 0;
-
- /* It is possible that an alias has been defined that
- matches a register name. For example the code may
- include a ".set ZERO, 0" directive, which matches
- the register name "zero". Attempt to reparse the
- field as an expression, and only complain if we
- cannot generate a constant. */
-
- input_line_pointer = str;
-
- c = get_symbol_end ();
-
- if (symbol_find (str) != NULL)
- exists = 1;
-
- *input_line_pointer = c;
- input_line_pointer = str;
-
- expression (&ex);
-
- if (ex.X_op != O_constant)
- {
- /* If this register is actually occuring too early on
- the parsing of the instruction, (because another
- field is missing) then report this. */
- if (opindex_ptr[1] != 0
- && (v850_operands[opindex_ptr[1]].flags
- & V850_OPERAND_REG))
- errmsg = _("syntax error: value is missing before the register name");
- else
- errmsg = _("syntax error: register not expected");
-
- /* If we created a symbol in the process of this
- test then delete it now, so that it will not
- be output with the real symbols... */
- if (exists == 0
- && ex.X_op == O_symbol)
- symbol_remove (ex.X_add_symbol,
- &symbol_rootP, &symbol_lastP);
- }
- }
- else if (system_register_name (&ex, false, false)
- && (operand->flags & V850_OPERAND_SRG) == 0)
- {
- errmsg = _("syntax error: system register not expected");
- }
- else if (cc_name (&ex)
- && (operand->flags & V850_OPERAND_CC) == 0)
- {
- errmsg = _("syntax error: condition code not expected");
- }
- else
- {
- expression (&ex);
- /* Special case:
- If we are assembling a MOV instruction (or a CALLT.... :-)
- and the immediate value does not fit into the bits
- available then create a fake error so that the next MOV
- instruction will be selected. This one has a 32 bit
- immediate field. */
-
- if (((insn & 0x07e0) == 0x0200)
- && ex.X_op == O_constant
- && (ex.X_add_number < (-(1 << (operand->bits - 1)))
- || ex.X_add_number > ((1 << (operand->bits - 1)) - 1)))
- errmsg = _("immediate operand is too large");
- }
-
- if (errmsg)
- goto error;
-
-#if 0
- fprintf (stderr,
- " insn: %x, operand %d, op: %d, add_number: %d\n",
- insn, opindex_ptr - opcode->operands,
- ex.X_op, ex.X_add_number);
-#endif
-
- switch (ex.X_op)
- {
- case O_illegal:
- errmsg = _("illegal operand");
- goto error;
- case O_absent:
- errmsg = _("missing operand");
- goto error;
- case O_register:
- if ((operand->flags
- & (V850_OPERAND_REG | V850_OPERAND_SRG)) == 0)
- {
- errmsg = _("invalid operand");
- goto error;
- }
- insn = v850_insert_operand (insn, operand, ex.X_add_number,
- (char *) NULL, 0,
- copy_of_instruction);
- break;
-
- case O_constant:
- insn = v850_insert_operand (insn, operand, ex.X_add_number,
- (char *) NULL, 0,
- copy_of_instruction);
- break;
-
- default:
- /* We need to generate a fixup for this expression. */
- if (fc >= MAX_INSN_FIXUPS)
- as_fatal (_("too many fixups"));
-
- fixups[fc].exp = ex;
- fixups[fc].opindex = *opindex_ptr;
- fixups[fc].reloc = BFD_RELOC_UNUSED;
- ++fc;
- break;
- }
- }
-
- str = input_line_pointer;
- input_line_pointer = hold;
-
- while (*str == ' ' || *str == ',' || *str == '[' || *str == ']'
- || *str == ')')
- ++str;
- }
- match = 1;
-
- error:
- if (match == 0)
- {
- next_opcode = opcode + 1;
- if (next_opcode->name != NULL
- && strcmp (next_opcode->name, opcode->name) == 0)
- {
- opcode = next_opcode;
-
- /* Skip versions that are not supported by the target
- processor. */
- if ((opcode->processors & processor_mask) == 0)
- goto error;
-
- continue;
- }
-
- as_bad ("%s: %s", copy_of_instruction, errmsg);
-
- if (*input_line_pointer == ']')
- ++input_line_pointer;
-
- ignore_rest_of_line ();
- input_line_pointer = saved_input_line_pointer;
- return;
- }
- break;
- }
-
- while (ISSPACE (*str))
- ++str;
-
- if (*str != '\0')
- /* xgettext:c-format */
- as_bad (_("junk at end of line: `%s'"), str);
-
- input_line_pointer = str;
-
- /* Tie dwarf2 debug info to the address at the start of the insn.
- We can't do this after the insn has been output as the current
- frag may have been closed off. eg. by frag_var. */
- dwarf2_emit_insn (0);
-
- /* Write out the instruction. */
-
- if (relaxable && fc > 0)
- {
- insn_size = 2;
- fc = 0;
-
- if (!strcmp (opcode->name, "br"))
- {
- f = frag_var (rs_machine_dependent, 4, 2, 2,
- fixups[0].exp.X_add_symbol,
- fixups[0].exp.X_add_number,
- (char *) fixups[0].opindex);
- md_number_to_chars (f, insn, insn_size);
- md_number_to_chars (f + 2, 0, 2);
- }
- else
- {
- f = frag_var (rs_machine_dependent, 6, 4, 0,
- fixups[0].exp.X_add_symbol,
- fixups[0].exp.X_add_number,
- (char *) fixups[0].opindex);
- md_number_to_chars (f, insn, insn_size);
- md_number_to_chars (f + 2, 0, 4);
- }
- }
- else
- {
- /* Four byte insns have an opcode with the two high bits on. */
- if ((insn & 0x0600) == 0x0600)
- insn_size = 4;
- else
- insn_size = 2;
-
- /* Special case: 32 bit MOV. */
- if ((insn & 0xffe0) == 0x0620)
- insn_size = 2;
-
- f = frag_more (insn_size);
- md_number_to_chars (f, insn, insn_size);
-
- if (extra_data_after_insn)
- {
- f = frag_more (extra_data_len);
- md_number_to_chars (f, extra_data, extra_data_len);
-
- extra_data_after_insn = false;
- }
- }
-
- /* Create any fixups. At this point we do not use a
- bfd_reloc_code_real_type, but instead just use the
- BFD_RELOC_UNUSED plus the operand index. This lets us easily
- handle fixups for any operand type, although that is admittedly
- not a very exciting feature. We pick a BFD reloc type in
- md_apply_fix3. */
- for (i = 0; i < fc; i++)
- {
- const struct v850_operand *operand;
- bfd_reloc_code_real_type reloc;
-
- operand = &v850_operands[fixups[i].opindex];
-
- reloc = fixups[i].reloc;
-
- if (reloc != BFD_RELOC_UNUSED)
- {
- reloc_howto_type *reloc_howto =
- bfd_reloc_type_lookup (stdoutput, reloc);
- int size;
- int address;
- fixS *fixP;
-
- if (!reloc_howto)
- abort ();
-
- size = bfd_get_reloc_size (reloc_howto);
-
- /* XXX This will abort on an R_V850_8 reloc -
- is this reloc actually used? */
- if (size != 2 && size != 4)
- abort ();
-
- address = (f - frag_now->fr_literal) + insn_size - size;
-
- if (reloc == BFD_RELOC_32)
- address += 2;
-
- fixP = fix_new_exp (frag_now, address, size,
- &fixups[i].exp,
- reloc_howto->pc_relative,
- reloc);
-
- switch (reloc)
- {
- case BFD_RELOC_LO16:
- case BFD_RELOC_HI16:
- case BFD_RELOC_HI16_S:
- fixP->fx_no_overflow = 1;
- break;
- default:
- break;
- }
- }
- else
- {
- fix_new_exp (frag_now,
- f - frag_now->fr_literal, 4,
- & fixups[i].exp,
- 1 /* FIXME: V850_OPERAND_RELATIVE ??? */,
- (bfd_reloc_code_real_type) (fixups[i].opindex
- + (int) BFD_RELOC_UNUSED));
- }
- }
-
- input_line_pointer = saved_input_line_pointer;
-}
-
-/* If while processing a fixup, a reloc really needs to be created
- then it is done here. */
-
-arelent *
-tc_gen_reloc (seg, fixp)
- asection *seg ATTRIBUTE_UNUSED;
- fixS *fixp;
-{
- arelent *reloc;
-
- reloc = (arelent *) xmalloc (sizeof (arelent));
- reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
- *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
- reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
- reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
-
- if (reloc->howto == (reloc_howto_type *) NULL)
- {
- as_bad_where (fixp->fx_file, fixp->fx_line,
- /* xgettext:c-format */
- _("reloc %d not supported by object file format"),
- (int) fixp->fx_r_type);
-
- xfree (reloc);
-
- return NULL;
- }
-
- if (fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
- || fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT)
- reloc->addend = fixp->fx_offset;
- else
- reloc->addend = fixp->fx_addnumber;
-
- return reloc;
-}
-
-/* Return current size of variable part of frag. */
-
-int
-md_estimate_size_before_relax (fragp, seg)
- fragS *fragp;
- asection *seg ATTRIBUTE_UNUSED;
-{
- if (fragp->fr_subtype >= sizeof (md_relax_table) / sizeof (md_relax_table[0]))
- abort ();
-
- return md_relax_table[fragp->fr_subtype].rlx_length;
-}
-
-long
-v850_pcrel_from_section (fixp, section)
- fixS *fixp;
- segT section;
-{
- /* If the symbol is undefined, or in a section other than our own,
- or it is weak (in which case it may well be in another section,
- then let the linker figure it out. */
- if (fixp->fx_addsy != (symbolS *) NULL
- && (! S_IS_DEFINED (fixp->fx_addsy)
- || S_IS_WEAK (fixp->fx_addsy)
- || (S_GET_SEGMENT (fixp->fx_addsy) != section)))
- return 0;
-
- return fixp->fx_frag->fr_address + fixp->fx_where;
-}
-
-void
-md_apply_fix3 (fixP, valueP, seg)
- fixS *fixP;
- valueT *valueP;
- segT seg ATTRIBUTE_UNUSED;
-{
- valueT value = * valueP;
- char *where;
-
- if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
- || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
- {
- fixP->fx_done = 0;
- return;
- }
-
- if (fixP->fx_addsy == (symbolS *) NULL)
- fixP->fx_done = 1;
-
- else if (fixP->fx_pcrel)
- ;
-
- else
- {
- value = fixP->fx_offset;
- if (fixP->fx_subsy != (symbolS *) NULL)
- {
- if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
- value -= S_GET_VALUE (fixP->fx_subsy);
- else
- {
- /* We don't actually support subtracting a symbol. */
- as_bad_where (fixP->fx_file, fixP->fx_line,
- _("expression too complex"));
- }
- }
- }
-
- if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
- {
- int opindex;
- const struct v850_operand *operand;
- unsigned long insn;
-
- opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
- operand = &v850_operands[opindex];
-
- /* Fetch the instruction, insert the fully resolved operand
- value, and stuff the instruction back again.
-
- Note the instruction has been stored in little endian
- format! */
- where = fixP->fx_frag->fr_literal + fixP->fx_where;
-
- insn = bfd_getl32 ((unsigned char *) where);
- insn = v850_insert_operand (insn, operand, (offsetT) value,
- fixP->fx_file, fixP->fx_line, NULL);
- bfd_putl32 ((bfd_vma) insn, (unsigned char *) where);
-
- if (fixP->fx_done)
- /* Nothing else to do here. */
- return;
-
- /* Determine a BFD reloc value based on the operand information.
- We are only prepared to turn a few of the operands into relocs. */
-
- if (operand->bits == 22)
- fixP->fx_r_type = BFD_RELOC_V850_22_PCREL;
- else if (operand->bits == 9)
- fixP->fx_r_type = BFD_RELOC_V850_9_PCREL;
- else
- {
-#if 0
- fprintf (stderr, "bits: %d, insn: %x\n", operand->bits, insn);
-#endif
-
- as_bad_where (fixP->fx_file, fixP->fx_line,
- _("unresolved expression that must be resolved"));
- fixP->fx_done = 1;
- return;
- }
- }
- else if (fixP->fx_done)
- {
- /* We still have to insert the value into memory! */
- where = fixP->fx_frag->fr_literal + fixP->fx_where;
-
- if (fixP->fx_size == 1)
- *where = value & 0xff;
- else if (fixP->fx_size == 2)
- bfd_putl16 (value & 0xffff, (unsigned char *) where);
- else if (fixP->fx_size == 4)
- bfd_putl32 (value, (unsigned char *) where);
- }
-
- fixP->fx_addnumber = value;
-}
-
-/* Parse a cons expression. We have to handle hi(), lo(), etc
- on the v850. */
-
-void
-parse_cons_expression_v850 (exp)
- expressionS *exp;
-{
- /* See if there's a reloc prefix like hi() we have to handle. */
- hold_cons_reloc = v850_reloc_prefix (NULL);
-
- /* Do normal expression parsing. */
- expression (exp);
-}
-
-/* Create a fixup for a cons expression. If parse_cons_expression_v850
- found a reloc prefix, then we use that reloc, else we choose an
- appropriate one based on the size of the expression. */
-
-void
-cons_fix_new_v850 (frag, where, size, exp)
- fragS *frag;
- int where;
- int size;
- expressionS *exp;
-{
- if (hold_cons_reloc == BFD_RELOC_UNUSED)
- {
- if (size == 4)
- hold_cons_reloc = BFD_RELOC_32;
- if (size == 2)
- hold_cons_reloc = BFD_RELOC_16;
- if (size == 1)
- hold_cons_reloc = BFD_RELOC_8;
- }
-
- if (exp != NULL)
- fix_new_exp (frag, where, size, exp, 0, hold_cons_reloc);
- else
- fix_new (frag, where, size, NULL, 0, 0, hold_cons_reloc);
-
- hold_cons_reloc = BFD_RELOC_UNUSED;
-}
-
-boolean
-v850_fix_adjustable (fixP)
- fixS *fixP;
-{
- if (fixP->fx_addsy == NULL)
- return 1;
-
- /* Prevent all adjustments to global symbols. */
- if (S_IS_EXTERN (fixP->fx_addsy))
- return 0;
-
- /* Similarly for weak symbols. */
- if (S_IS_WEAK (fixP->fx_addsy))
- return 0;
-
- /* Don't adjust function names. */
- if (S_IS_FUNCTION (fixP->fx_addsy))
- return 0;
-
- /* We need the symbol name for the VTABLE entries. */
- if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
- || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
- return 0;
-
- return 1;
-}
-
-int
-v850_force_relocation (fixP)
- struct fix *fixP;
-{
- if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy))
- return 1;
-
- if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
- || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
- return 1;
-
- return 0;
-}
diff --git a/contrib/binutils/gas/config/tc-v850.h b/contrib/binutils/gas/config/tc-v850.h
deleted file mode 100644
index 8257428eabec..000000000000
--- a/contrib/binutils/gas/config/tc-v850.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* tc-v850.h -- Header file for tc-v850.c.
- Copyright 1996, 1997, 1998, 2000, 2001, 2002
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-#define TC_V850
-
-#include "elf/v850.h"
-
-#define TARGET_BYTES_BIG_ENDIAN 0
-
-#ifndef BFD_ASSEMBLER
- #error V850 support requires BFD_ASSEMBLER
-#endif
-
-/* The target BFD architecture. */
-#define TARGET_ARCH bfd_arch_v850
-
-/* The target BFD format. */
-#define TARGET_FORMAT "elf32-v850"
-
-#define md_operand(x)
-
-#define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP)
-extern boolean v850_fix_adjustable PARAMS ((struct fix *));
-
-#define TC_FORCE_RELOCATION(fixp) v850_force_relocation(fixp)
-extern int v850_force_relocation PARAMS ((struct fix *));
-
-#ifdef OBJ_ELF
-/* This arranges for gas/write.c to not apply a relocation if
- obj_fix_adjustable() says it is not adjustable. */
-#define TC_FIX_ADJUSTABLE(fixP) obj_fix_adjustable (fixP)
-#endif
-
-/* Permit temporary numeric labels. */
-#define LOCAL_LABELS_FB 1
-
-#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs. */
-
-/* We don't need to handle .word strangely. */
-#define WORKING_DOT_WORD
-
-#define md_number_to_chars number_to_chars_littleendian
-
-/* We need to handle lo(), hi(), etc etc in .hword, .word, etc
- directives, so we have to parse "cons" expressions ourselves. */
-#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
-extern void parse_cons_expression_v850 PARAMS ((expressionS *));
-
-#define TC_CONS_FIX_NEW cons_fix_new_v850
-extern void cons_fix_new_v850 PARAMS ((fragS *, int, int, expressionS *));
-
-#define TC_GENERIC_RELAX_TABLE md_relax_table
-extern const struct relax_type md_relax_table[];
-
-/* This section must be in the small data area (pointed to by GP). */
-#define SHF_V850_GPREL 0x10000000
-/* This section must be in the tiny data area (pointed to by EP). */
-#define SHF_V850_EPREL 0x20000000
-/* This section must be in the zero data area (pointed to by R0). */
-#define SHF_V850_R0REL 0x40000000
-
-#define ELF_TC_SPECIAL_SECTIONS \
- { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \
- { ".rosdata", SHT_PROGBITS, SHF_ALLOC + SHF_V850_GPREL }, \
- { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \
- { ".scommon", SHT_V850_SCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_GPREL }, \
- { ".tdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL }, \
- { ".tbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_EPREL }, \
- { ".tcommon", SHT_V850_TCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \
- { ".zdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \
- { ".rozdata", SHT_PROGBITS, SHF_ALLOC + SHF_V850_R0REL }, \
- { ".zbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \
- { ".zcommon", SHT_V850_ZCOMMON, SHF_ALLOC + SHF_WRITE + SHF_V850_R0REL }, \
- { ".call_table_data", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \
- { ".call_table_text", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_EXECINSTR },
-
-#define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section)
-extern long v850_pcrel_from_section PARAMS ((struct fix *, asection *));
-
-#define DWARF2_LINE_MIN_INSN_LENGTH 2
diff --git a/contrib/binutils/gas/config/tc-z8k.c b/contrib/binutils/gas/config/tc-z8k.c
deleted file mode 100644
index f5b05a632f9c..000000000000
--- a/contrib/binutils/gas/config/tc-z8k.c
+++ /dev/null
@@ -1,1566 +0,0 @@
-/* tc-z8k.c -- Assemble code for the Zilog Z800n
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/* Written By Steve Chamberlain <sac@cygnus.com>. */
-
-#define DEFINE_TABLE
-#include <stdio.h>
-
-#include "as.h"
-#include "bfd.h"
-#include "safe-ctype.h"
-#include "opcodes/z8k-opc.h"
-
-const char comment_chars[] = "!";
-const char line_comment_chars[] = "#";
-const char line_separator_chars[] = ";";
-
-extern int machine;
-extern int coff_flags;
-int segmented_mode;
-const int md_reloc_size;
-
-void cons ();
-
-void
-s_segm ()
-{
- segmented_mode = 1;
- machine = bfd_mach_z8001;
- coff_flags = F_Z8001;
-}
-
-void
-s_unseg ()
-{
- segmented_mode = 0;
- machine = bfd_mach_z8002;
- coff_flags = F_Z8002;
-}
-
-static void
-even ()
-{
- frag_align (1, 0, 0);
- record_alignment (now_seg, 1);
-}
-
-void obj_coff_section ();
-
-int
-tohex (c)
- int c;
-{
- if (ISDIGIT (c))
- return c - '0';
- if (ISLOWER (c))
- return c - 'a' + 10;
- return c - 'A' + 10;
-}
-
-void
-sval ()
-{
- SKIP_WHITESPACE ();
- if (*input_line_pointer == '\'')
- {
- int c;
- input_line_pointer++;
- c = *input_line_pointer++;
- while (c != '\'')
- {
- if (c == '%')
- {
- c = (tohex (input_line_pointer[0]) << 4)
- | tohex (input_line_pointer[1]);
- input_line_pointer += 2;
- }
- FRAG_APPEND_1_CHAR (c);
- c = *input_line_pointer++;
- }
- demand_empty_rest_of_line ();
- }
-}
-
-/* This table describes all the machine specific pseudo-ops the assembler
- has to support. The fields are:
- pseudo-op name without dot
- function to call to execute this pseudo-op
- Integer arg to pass to the function
- */
-
-const pseudo_typeS md_pseudo_table[] = {
- {"int" , cons , 2},
- {"data.b" , cons , 1},
- {"data.w" , cons , 2},
- {"data.l" , cons , 4},
- {"form" , listing_psize , 0},
- {"heading", listing_title , 0},
- {"import" , s_ignore , 0},
- {"page" , listing_eject , 0},
- {"program", s_ignore , 0},
- {"z8001" , s_segm , 0},
- {"z8002" , s_unseg , 0},
-
- {"segm" , s_segm , 0},
- {"unsegm" , s_unseg , 0},
- {"unseg" , s_unseg , 0},
- {"name" , s_app_file , 0},
- {"global" , s_globl , 0},
- {"wval" , cons , 2},
- {"lval" , cons , 4},
- {"bval" , cons , 1},
- {"sval" , sval , 0},
- {"rsect" , obj_coff_section, 0},
- {"sect" , obj_coff_section, 0},
- {"block" , s_space , 0},
- {"even" , even , 0},
- {0 , 0 , 0}
-};
-
-const char EXP_CHARS[] = "eE";
-
-/* Chars that mean this number is a floating point constant.
- As in 0f12.456
- or 0d1.2345e12 */
-const char FLT_CHARS[] = "rRsSfFdDxXpP";
-
-/* Opcode mnemonics. */
-static struct hash_control *opcode_hash_control;
-
-void
-md_begin ()
-{
- opcode_entry_type *opcode;
- char *prev_name = "";
- int idx = 0;
-
- opcode_hash_control = hash_new ();
-
- for (opcode = z8k_table; opcode->name; opcode++)
- {
- /* Only enter unique codes into the table. */
- if (strcmp (opcode->name, prev_name))
- {
- hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
- idx++;
- }
- opcode->idx = idx;
- prev_name = opcode->name;
- }
-
- /* Default to z8002. */
- s_unseg ();
-
- /* Insert the pseudo ops, too. */
- for (idx = 0; md_pseudo_table[idx].poc_name; idx++)
- {
- opcode_entry_type *fake_opcode;
- fake_opcode = (opcode_entry_type *) malloc (sizeof (opcode_entry_type));
- fake_opcode->name = md_pseudo_table[idx].poc_name;
- fake_opcode->func = (void *) (md_pseudo_table + idx);
- fake_opcode->opcode = 250;
- hash_insert (opcode_hash_control, fake_opcode->name, fake_opcode);
- }
-
- linkrelax = 1;
-}
-
-struct z8k_exp {
- char *e_beg;
- char *e_end;
- expressionS e_exp;
-};
-
-typedef struct z8k_op {
- /* 'b','w','r','q'. */
- char regsize;
-
- /* 0 .. 15. */
- unsigned int reg;
-
- int mode;
-
- /* Any other register associated with the mode. */
- unsigned int x_reg;
-
- /* Any expression. */
- expressionS exp;
-} op_type;
-
-static expressionS *da_operand;
-static expressionS *imm_operand;
-
-int reg[16];
-int the_cc;
-int the_ctrl;
-int the_flags;
-int the_interrupt;
-
-char *
-whatreg (reg, src)
- int *reg;
- char *src;
-{
- if (ISDIGIT (src[1]))
- {
- *reg = (src[0] - '0') * 10 + src[1] - '0';
- return src + 2;
- }
- else
- {
- *reg = (src[0] - '0');
- return src + 1;
- }
-}
-
-/* Parse operands
-
- rh0-rh7, rl0-rl7
- r0-r15
- rr0-rr14
- rq0--rq12
- WREG r0,r1,r2,r3,r4,r5,r6,r7,fp,sp
- r0l,r0h,..r7l,r7h
- @WREG
- @WREG+
- @-WREG
- #const
-*/
-
-/* Try to parse a reg name. Return a pointer to the first character
- in SRC after the reg name. */
-
-char *
-parse_reg (src, mode, reg)
- char *src;
- int *mode;
- unsigned int *reg;
-{
- char *res = 0;
- char regno;
-
- if (src[0] == 's' && src[1] == 'p' && (src[2] == 0 || src[2] == ','))
- {
- if (segmented_mode)
- {
- *mode = CLASS_REG_LONG;
- *reg = 14;
- }
- else
- {
- *mode = CLASS_REG_WORD;
- *reg = 15;
- }
- return src + 2;
- }
- if (src[0] == 'r')
- {
- if (src[1] == 'r')
- {
- if (src[2] < '0' || src[2] > '9')
- return res; /* Assume no register name but a label starting with 'rr'. */
- *mode = CLASS_REG_LONG;
- res = whatreg (reg, src + 2);
- regno = *reg;
- if (regno > 14)
- as_warn (_("register rr%d, out of range."), regno);
- }
- else if (src[1] == 'h')
- {
- if (src[2] < '0' || src[2] > '9')
- return res; /* Assume no register name but a label starting with 'rh'. */
- *mode = CLASS_REG_BYTE;
- res = whatreg (reg, src + 2);
- regno = *reg;
- if (regno > 7)
- as_warn (_("register rh%d, out of range."), regno);
- }
- else if (src[1] == 'l')
- {
- if (src[2] < '0' || src[2] > '9')
- return res; /* Assume no register name but a label starting with 'rl'. */
- *mode = CLASS_REG_BYTE;
- res = whatreg (reg, src + 2);
- regno = *reg;
- if (regno > 7)
- as_warn (_("register rl%d, out of range."), regno);
- *reg += 8;
- }
- else if (src[1] == 'q')
- {
- if (src[2] < '0' || src[2] > '9')
- return res; /* Assume no register name but a label starting with 'rq'. */
- *mode = CLASS_REG_QUAD;
- res = whatreg (reg, src + 2);
- regno = *reg;
- if (regno > 12)
- as_warn (_("register rq%d, out of range."), regno);
- }
- else
- {
- if (src[1] < '0' || src[1] > '9')
- return res; /* Assume no register name but a label starting with 'r'. */
- *mode = CLASS_REG_WORD;
- res = whatreg (reg, src + 1);
- regno = *reg;
- if (regno > 15)
- as_warn (_("register r%d, out of range."), regno);
- }
- }
- return res;
-}
-
-char *
-parse_exp (s, op)
- char *s;
- expressionS *op;
-{
- char *save = input_line_pointer;
- char *new;
-
- input_line_pointer = s;
- expression (op);
- if (op->X_op == O_absent)
- as_bad (_("missing operand"));
- new = input_line_pointer;
- input_line_pointer = save;
- return new;
-}
-
-/* The many forms of operand:
-
- <rb>
- <r>
- <rr>
- <rq>
- @r
- #exp
- exp
- exp(r)
- r(#exp)
- r(r)
- */
-
-static char *
-checkfor (ptr, what)
- char *ptr;
- char what;
-{
- if (*ptr == what)
- ptr++;
- else
- as_bad (_("expected %c"), what);
-
- return ptr;
-}
-
-/* Make sure the mode supplied is the size of a word. */
-
-static void
-regword (mode, string)
- int mode;
- char *string;
-{
- int ok;
-
- ok = CLASS_REG_WORD;
- if (ok != mode)
- {
- as_bad (_("register is wrong size for a word %s"), string);
- }
-}
-
-/* Make sure the mode supplied is the size of an address. */
-
-static void
-regaddr (mode, string)
- int mode;
- char *string;
-{
- int ok;
-
- ok = segmented_mode ? CLASS_REG_LONG : CLASS_REG_WORD;
- if (ok != mode)
- {
- as_bad (_("register is wrong size for address %s"), string);
- }
-}
-
-struct ctrl_names {
- int value;
- char *name;
-};
-
-struct ctrl_names ctrl_table[] = {
- { 0x2, "fcw" },
- { 0x3, "refresh" },
- { 0x4, "psapseg" },
- { 0x5, "psapoff" },
- { 0x5, "psap" },
- { 0x6, "nspseg" },
- { 0x7, "nspoff" },
- { 0x7, "nsp" },
- { 0 , 0 }
-};
-
-static void
-get_ctrl_operand (ptr, mode, dst)
- char **ptr;
- struct z8k_op *mode;
- unsigned int dst ATTRIBUTE_UNUSED;
-{
- char *src = *ptr;
- int i;
-
- while (*src == ' ')
- src++;
-
- mode->mode = CLASS_CTRL;
- for (i = 0; ctrl_table[i].name; i++)
- {
- int j;
-
- for (j = 0; ctrl_table[i].name[j]; j++)
- {
- if (ctrl_table[i].name[j] != src[j])
- goto fail;
- }
- the_ctrl = ctrl_table[i].value;
- *ptr = src + j;
- return;
- fail:
- ;
- }
- the_ctrl = 0;
- return;
-}
-
-struct flag_names {
- int value;
- char *name;
-
-};
-
-struct flag_names flag_table[] = {
- { 0x1, "p" },
- { 0x1, "v" },
- { 0x2, "s" },
- { 0x4, "z" },
- { 0x8, "c" },
- { 0x0, "+" },
- { 0, 0 }
-};
-
-static void
-get_flags_operand (ptr, mode, dst)
- char **ptr;
- struct z8k_op *mode;
- unsigned int dst ATTRIBUTE_UNUSED;
-{
- char *src = *ptr;
- int i;
- int j;
-
- while (*src == ' ')
- src++;
-
- mode->mode = CLASS_FLAGS;
- the_flags = 0;
- for (j = 0; j <= 9; j++)
- {
- if (!src[j])
- goto done;
- for (i = 0; flag_table[i].name; i++)
- {
- if (flag_table[i].name[0] == src[j])
- {
- the_flags = the_flags | flag_table[i].value;
- goto match;
- }
- }
- goto done;
- match:
- ;
- }
- done:
- *ptr = src + j;
- return;
-}
-
-struct interrupt_names {
- int value;
- char *name;
-
-};
-
-struct interrupt_names intr_table[] = {
- { 0x1, "nvi" },
- { 0x2, "vi" },
- { 0x3, "both" },
- { 0x3, "all" },
- { 0, 0 }
-};
-
-static void
-get_interrupt_operand (ptr, mode, dst)
- char **ptr;
- struct z8k_op *mode;
- unsigned int dst ATTRIBUTE_UNUSED;
-{
- char *src = *ptr;
- int i;
-
- while (*src == ' ')
- src++;
-
- mode->mode = CLASS_IMM;
- for (i = 0; intr_table[i].name; i++)
- {
- int j;
-
- for (j = 0; intr_table[i].name[j]; j++)
- {
- if (intr_table[i].name[j] != src[j])
- goto fail;
- }
- the_interrupt = intr_table[i].value;
- *ptr = src + j;
- return;
- fail:
- ;
- }
- the_interrupt = 0x0;
- return;
-}
-
-struct cc_names {
- int value;
- char *name;
-
-};
-
-struct cc_names table[] = {
- { 0x0, "f" },
- { 0x1, "lt" },
- { 0x2, "le" },
- { 0x3, "ule" },
- { 0x4, "ov" },
- { 0x4, "pe" },
- { 0x5, "mi" },
- { 0x6, "eq" },
- { 0x6, "z" },
- { 0x7, "c" },
- { 0x7, "ult" },
- { 0x8, "t" },
- { 0x9, "ge" },
- { 0xa, "gt" },
- { 0xb, "ugt" },
- { 0xc, "nov" },
- { 0xc, "po" },
- { 0xd, "pl" },
- { 0xe, "ne" },
- { 0xe, "nz" },
- { 0xf, "nc" },
- { 0xf, "uge" },
- { 0 , 0 }
-};
-
-static void
-get_cc_operand (ptr, mode, dst)
- char **ptr;
- struct z8k_op *mode;
- unsigned int dst ATTRIBUTE_UNUSED;
-{
- char *src = *ptr;
- int i;
-
- while (*src == ' ')
- src++;
-
- mode->mode = CLASS_CC;
- for (i = 0; table[i].name; i++)
- {
- int j;
-
- for (j = 0; table[i].name[j]; j++)
- {
- if (table[i].name[j] != src[j])
- goto fail;
- }
- the_cc = table[i].value;
- *ptr = src + j;
- return;
- fail:
- ;
- }
- the_cc = 0x8;
-}
-
-static void
-get_operand (ptr, mode, dst)
- char **ptr;
- struct z8k_op *mode;
- unsigned int dst ATTRIBUTE_UNUSED;
-{
- char *src = *ptr;
- char *end;
-
- mode->mode = 0;
-
- while (*src == ' ')
- src++;
- if (*src == '#')
- {
- mode->mode = CLASS_IMM;
- imm_operand = &(mode->exp);
- src = parse_exp (src + 1, &(mode->exp));
- }
- else if (*src == '@')
- {
- int d;
-
- mode->mode = CLASS_IR;
- src = parse_reg (src + 1, &d, &mode->reg);
- }
- else
- {
- int regn;
-
- end = parse_reg (src, &mode->mode, &regn);
-
- if (end)
- {
- int nw, nr;
-
- src = end;
- if (*src == '(')
- {
- src++;
- end = parse_reg (src, &nw, &nr);
- if (end)
- {
- /* Got Ra(Rb). */
- src = end;
-
- if (*src != ')')
- as_bad (_("Missing ) in ra(rb)"));
- else
- src++;
-
- regaddr (mode->mode, "ra(rb) ra");
-#if 0
- regword (mode->mode, "ra(rb) rb");
-#endif
- mode->mode = CLASS_BX;
- mode->reg = regn;
- mode->x_reg = nr;
- reg[ARG_RX] = nr;
- }
- else
- {
- /* Got Ra(disp). */
- if (*src == '#')
- src++;
- src = parse_exp (src, &(mode->exp));
- src = checkfor (src, ')');
- mode->mode = CLASS_BA;
- mode->reg = regn;
- mode->x_reg = 0;
- imm_operand = &(mode->exp);
- }
- }
- else
- {
- mode->reg = regn;
- mode->x_reg = 0;
- }
- }
- else
- {
- /* No initial reg. */
- src = parse_exp (src, &(mode->exp));
- if (*src == '(')
- {
- src++;
- end = parse_reg (src, &(mode->mode), &regn);
- regword (mode->mode, "addr(Ra) ra");
- mode->mode = CLASS_X;
- mode->reg = regn;
- mode->x_reg = 0;
- da_operand = &(mode->exp);
- src = checkfor (end, ')');
- }
- else
- {
- /* Just an address. */
- mode->mode = CLASS_DA;
- mode->reg = 0;
- mode->x_reg = 0;
- da_operand = &(mode->exp);
- }
- }
- }
- *ptr = src;
-}
-
-static char *
-get_operands (opcode, op_end, operand)
- opcode_entry_type *opcode;
- char *op_end;
- op_type *operand;
-{
- char *ptr = op_end;
- char *savptr;
-
- switch (opcode->noperands)
- {
- case 0:
- operand[0].mode = 0;
- operand[1].mode = 0;
- break;
-
- case 1:
- ptr++;
- if (opcode->arg_info[0] == CLASS_CC)
- {
- get_cc_operand (&ptr, operand + 0, 0);
- }
- else if (opcode->arg_info[0] == CLASS_FLAGS)
- {
- get_flags_operand (&ptr, operand + 0, 0);
- }
- else if (opcode->arg_info[0] == (CLASS_IMM + (ARG_IMM2)))
- {
- get_interrupt_operand (&ptr, operand + 0, 0);
- }
- else
- {
- get_operand (&ptr, operand + 0, 0);
- }
- operand[1].mode = 0;
- break;
-
- case 2:
- ptr++;
- savptr = ptr;
- if (opcode->arg_info[0] == CLASS_CC)
- {
- get_cc_operand (&ptr, operand + 0, 0);
- }
- else if (opcode->arg_info[0] == CLASS_CTRL)
- {
- get_ctrl_operand (&ptr, operand + 0, 0);
- if (the_ctrl == 0)
- {
- ptr = savptr;
- get_operand (&ptr, operand + 0, 0);
- if (ptr == 0)
- return NULL;
- if (*ptr == ',')
- ptr++;
- get_ctrl_operand (&ptr, operand + 1, 1);
- return ptr;
- }
- }
- else
- {
- get_operand (&ptr, operand + 0, 0);
- }
- if (ptr == 0)
- return NULL;
- if (*ptr == ',')
- ptr++;
- get_operand (&ptr, operand + 1, 1);
- break;
-
- case 3:
- ptr++;
- get_operand (&ptr, operand + 0, 0);
- if (*ptr == ',')
- ptr++;
- get_operand (&ptr, operand + 1, 1);
- if (*ptr == ',')
- ptr++;
- get_operand (&ptr, operand + 2, 2);
- break;
-
- case 4:
- ptr++;
- get_operand (&ptr, operand + 0, 0);
- if (*ptr == ',')
- ptr++;
- get_operand (&ptr, operand + 1, 1);
- if (*ptr == ',')
- ptr++;
- get_operand (&ptr, operand + 2, 2);
- if (*ptr == ',')
- ptr++;
- get_cc_operand (&ptr, operand + 3, 3);
- break;
-
- default:
- abort ();
- }
-
- return ptr;
-}
-
-/* Passed a pointer to a list of opcodes which use different
- addressing modes. Return the opcode which matches the opcodes
- provided. */
-
-static opcode_entry_type *
-get_specific (opcode, operands)
- opcode_entry_type *opcode;
- op_type *operands;
-
-{
- opcode_entry_type *this_try = opcode;
- int found = 0;
- unsigned int noperands = opcode->noperands;
-
- int this_index = opcode->idx;
-
- while (this_index == opcode->idx && !found)
- {
- unsigned int i;
-
- this_try = opcode++;
- for (i = 0; i < noperands; i++)
- {
- unsigned int mode = operands[i].mode;
-
- if ((mode & CLASS_MASK) != (this_try->arg_info[i] & CLASS_MASK))
- {
- /* It could be an pc rel operand, if this is a da mode
- and we like disps, then insert it. */
-
- if (mode == CLASS_DA && this_try->arg_info[i] == CLASS_DISP)
- {
- /* This is the case. */
- operands[i].mode = CLASS_DISP;
- }
- else if (mode == CLASS_BA && this_try->arg_info[i])
- {
- /* Can't think of a way to turn what we've been
- given into something that's OK. */
- goto fail;
- }
- else if (this_try->arg_info[i] & CLASS_PR)
- {
- if (mode == CLASS_REG_LONG && segmented_mode)
- {
- /* OK. */
- }
- else if (mode == CLASS_REG_WORD && !segmented_mode)
- {
- /* OK. */
- }
- else
- goto fail;
- }
- else
- goto fail;
- }
- switch (mode & CLASS_MASK)
- {
- default:
- break;
- case CLASS_X:
- case CLASS_IR:
- case CLASS_BA:
- case CLASS_BX:
- case CLASS_DISP:
- case CLASS_REG:
- case CLASS_REG_WORD:
- case CLASS_REG_BYTE:
- case CLASS_REG_QUAD:
- case CLASS_REG_LONG:
- case CLASS_REGN0:
- reg[this_try->arg_info[i] & ARG_MASK] = operands[i].reg;
- break;
- }
- }
-
- found = 1;
- fail:
- ;
- }
- if (found)
- return this_try;
- else
- return 0;
-}
-
-#if 0 /* Not used. */
-static void
-check_operand (operand, width, string)
- struct z8k_op *operand;
- unsigned int width;
- char *string;
-{
- if (operand->exp.X_add_symbol == 0
- && operand->exp.X_op_symbol == 0)
- {
-
- /* No symbol involved, let's look at offset, it's dangerous if
- any of the high bits are not 0 or ff's, find out by oring or
- anding with the width and seeing if the answer is 0 or all
- fs. */
- if ((operand->exp.X_add_number & ~width) != 0 &&
- (operand->exp.X_add_number | width) != (~0))
- {
- as_warn (_("operand %s0x%x out of range."),
- string, operand->exp.X_add_number);
- }
- }
-
-}
-#endif
-
-static char buffer[20];
-
-static void
-newfix (ptr, type, operand)
- int ptr;
- int type;
- expressionS *operand;
-{
- if (operand->X_add_symbol
- || operand->X_op_symbol
- || operand->X_add_number)
- {
- fix_new_exp (frag_now,
- ptr,
- 1,
- operand,
- 0,
- type);
- }
-}
-
-static char *
-apply_fix (ptr, type, operand, size)
- char *ptr;
- int type;
- expressionS *operand;
- int size;
-{
- int n = operand->X_add_number;
-
- newfix ((ptr - buffer) / 2, type, operand);
- switch (size)
- {
- case 8: /* 8 nibbles == 32 bits. */
- *ptr++ = n >> 28;
- *ptr++ = n >> 24;
- *ptr++ = n >> 20;
- *ptr++ = n >> 16;
- case 4: /* 4 nibbles == 16 bits. */
- *ptr++ = n >> 12;
- *ptr++ = n >> 8;
- case 2:
- *ptr++ = n >> 4;
- case 1:
- *ptr++ = n >> 0;
- break;
- }
- return ptr;
-}
-
-/* Now we know what sort of opcodes it is. Let's build the bytes. */
-
-#define INSERT(x,y) *x++ = y>>24; *x++ = y>> 16; *x++=y>>8; *x++ =y;
-
-static void
-build_bytes (this_try, operand)
- opcode_entry_type *this_try;
- struct z8k_op *operand ATTRIBUTE_UNUSED;
-{
- char *output_ptr = buffer;
- int c;
- int nib;
- int nibble;
- unsigned int *class_ptr;
-
- frag_wane (frag_now);
- frag_new (0);
-
- memset (buffer, 20, 0);
- class_ptr = this_try->byte_info;
-
- for (nibble = 0; (c = *class_ptr++); nibble++)
- {
-
- switch (c & CLASS_MASK)
- {
- default:
- abort ();
-
- case CLASS_ADDRESS:
- /* Direct address, we don't cope with the SS mode right now. */
- if (segmented_mode)
- {
- /* da_operand->X_add_number |= 0x80000000; -- Now set at relocation time. */
- output_ptr = apply_fix (output_ptr, R_IMM32, da_operand, 8);
- }
- else
- {
- output_ptr = apply_fix (output_ptr, R_IMM16, da_operand, 4);
- }
- da_operand = 0;
- break;
- case CLASS_DISP8:
- /* pc rel 8 bit */
- output_ptr = apply_fix (output_ptr, R_JR, da_operand, 2);
- da_operand = 0;
- break;
-
- case CLASS_0DISP7:
- /* pc rel 7 bit */
- *output_ptr = 0;
- output_ptr = apply_fix (output_ptr, R_DISP7, da_operand, 2);
- da_operand = 0;
- break;
-
- case CLASS_1DISP7:
- /* pc rel 7 bit */
- *output_ptr = 0x80;
- output_ptr = apply_fix (output_ptr, R_DISP7, da_operand, 2);
- output_ptr[-2] = 0x8;
- da_operand = 0;
- break;
-
- case CLASS_BIT_1OR2:
- *output_ptr = c & 0xf;
- if (imm_operand)
- {
- if (imm_operand->X_add_number == 2)
- *output_ptr |= 2;
- else if (imm_operand->X_add_number != 1)
- as_bad (_("immediate must be 1 or 2"));
- }
- else
- as_bad (_("immediate 1 or 2 expected"));
- output_ptr++;
- break;
- case CLASS_CC:
- *output_ptr++ = the_cc;
- break;
- case CLASS_0CCC:
- *output_ptr++ = the_ctrl;
- break;
- case CLASS_1CCC:
- *output_ptr++ = the_ctrl | 0x8;
- break;
- case CLASS_00II:
- *output_ptr++ = (~the_interrupt & 0x3);
- break;
- case CLASS_01II:
- *output_ptr++ = (~the_interrupt & 0x3) | 0x4;
- break;
- case CLASS_FLAGS:
- *output_ptr++ = the_flags;
- break;
- case CLASS_BIT:
- *output_ptr++ = c & 0xf;
- break;
- case CLASS_REGN0:
- if (reg[c & 0xf] == 0)
- as_bad (_("can't use R0 here"));
- /* Fall through. */
- case CLASS_REG:
- case CLASS_REG_BYTE:
- case CLASS_REG_WORD:
- case CLASS_REG_LONG:
- case CLASS_REG_QUAD:
- /* Insert bit mattern of right reg. */
- *output_ptr++ = reg[c & 0xf];
- break;
- case CLASS_DISP:
- switch (c & ARG_MASK)
- {
- case ARG_DISP12:
- output_ptr = apply_fix (output_ptr, R_CALLR, da_operand, 4);
- break;
- case ARG_DISP16:
- output_ptr = apply_fix (output_ptr, R_REL16, da_operand, 4);
- break;
- default:
- output_ptr = apply_fix (output_ptr, R_IMM16, da_operand, 4);
- }
- da_operand = 0;
- break;
-
- case CLASS_IMM:
- {
- nib = 0;
- switch (c & ARG_MASK)
- {
- case ARG_IMM4:
- output_ptr = apply_fix (output_ptr, R_IMM4L, imm_operand, 1);
- break;
- case ARG_IMM4M1:
- imm_operand->X_add_number--;
- output_ptr = apply_fix (output_ptr, R_IMM4L, imm_operand, 1);
- break;
- case ARG_IMMNMINUS1:
- imm_operand->X_add_number--;
- output_ptr = apply_fix (output_ptr, R_IMM4L, imm_operand, 1);
- break;
- case ARG_NIM8:
- imm_operand->X_add_number = -imm_operand->X_add_number;
- case ARG_IMM8:
- output_ptr = apply_fix (output_ptr, R_IMM8, imm_operand, 2);
- break;
- case ARG_IMM16:
- output_ptr = apply_fix (output_ptr, R_IMM16, imm_operand, 4);
- break;
-
- case ARG_IMM32:
- output_ptr = apply_fix (output_ptr, R_IMM32, imm_operand, 8);
- break;
-
- default:
- abort ();
- }
- }
- }
- }
-
- /* Copy from the nibble buffer into the frag. */
- {
- int length = (output_ptr - buffer) / 2;
- char *src = buffer;
- char *fragp = frag_more (length);
-
- while (src < output_ptr)
- {
- *fragp = (src[0] << 4) | src[1];
- src += 2;
- fragp++;
- }
- }
-}
-
-/* This is the guts of the machine-dependent assembler. STR points to a
- machine dependent instruction. This function is supposed to emit
- the frags/bytes it assembles to. */
-
-void
-md_assemble (str)
- char *str;
-{
- char c;
- char *op_start;
- char *op_end;
- struct z8k_op operand[3];
- opcode_entry_type *opcode;
- opcode_entry_type *prev_opcode;
-
- /* Drop leading whitespace. */
- while (*str == ' ')
- str++;
-
- /* Find the op code end. */
- for (op_start = op_end = str;
- *op_end != 0 && *op_end != ' ';
- op_end++)
- ;
-
- if (op_end == op_start)
- {
- as_bad (_("can't find opcode "));
- }
- c = *op_end;
-
- *op_end = 0;
-
- opcode = (opcode_entry_type *) hash_find (opcode_hash_control, op_start);
-
- if (opcode == NULL)
- {
- as_bad (_("unknown opcode"));
- return;
- }
-
- if (opcode->opcode == 250)
- {
- /* Was really a pseudo op. */
-
- pseudo_typeS *p;
- char oc;
-
- char *old = input_line_pointer;
- *op_end = c;
-
- input_line_pointer = op_end;
-
- oc = *old;
- *old = '\n';
- while (*input_line_pointer == ' ')
- input_line_pointer++;
- p = (pseudo_typeS *) (opcode->func);
-
- (p->poc_handler) (p->poc_val);
- input_line_pointer = old;
- *old = oc;
- }
- else
- {
- input_line_pointer = get_operands (opcode, op_end, operand);
- prev_opcode = opcode;
-
- opcode = get_specific (opcode, operand);
-
- if (opcode == 0)
- {
- /* Couldn't find an opcode which matched the operands. */
- char *where = frag_more (2);
-
- where[0] = 0x0;
- where[1] = 0x0;
-
- as_bad (_("Can't find opcode to match operands"));
- return;
- }
-
- build_bytes (opcode, operand);
- }
-}
-
-void
-tc_crawl_symbol_chain (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
-{
- printf (_("call to tc_crawl_symbol_chain \n"));
-}
-
-symbolS *
-md_undefined_symbol (name)
- char *name ATTRIBUTE_UNUSED;
-{
- return 0;
-}
-
-void
-tc_headers_hook (headers)
- object_headers *headers ATTRIBUTE_UNUSED;
-{
- printf (_("call to tc_headers_hook \n"));
-}
-
-/* Various routines to kill one day. */
-/* Equal to MAX_PRECISION in atof-ieee.c. */
-#define MAX_LITTLENUMS 6
-
-/* Turn a string in input_line_pointer into a floating point constant
- of type TYPE, and store the appropriate bytes in *LITP. The number
- of LITTLENUMS emitted is stored in *SIZEP. An error message is
- returned, or NULL on OK. */
-
-char *
-md_atof (type, litP, sizeP)
- char type;
- char *litP;
- int *sizeP;
-{
- int prec;
- LITTLENUM_TYPE words[MAX_LITTLENUMS];
- LITTLENUM_TYPE *wordP;
- char *t;
- char *atof_ieee ();
-
- switch (type)
- {
- case 'f':
- case 'F':
- case 's':
- case 'S':
- prec = 2;
- break;
-
- case 'd':
- case 'D':
- case 'r':
- case 'R':
- prec = 4;
- break;
-
- case 'x':
- case 'X':
- prec = 6;
- break;
-
- case 'p':
- case 'P':
- prec = 6;
- break;
-
- default:
- *sizeP = 0;
- return _("Bad call to MD_ATOF()");
- }
- t = atof_ieee (input_line_pointer, type, words);
- if (t)
- input_line_pointer = t;
-
- *sizeP = prec * sizeof (LITTLENUM_TYPE);
- for (wordP = words; prec--;)
- {
- md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE));
- litP += sizeof (LITTLENUM_TYPE);
- }
- return 0;
-}
-
-CONST char *md_shortopts = "z:";
-
-struct option md_longopts[] = {
- {NULL, no_argument, NULL, 0}
-};
-
-size_t md_longopts_size = sizeof (md_longopts);
-
-int
-md_parse_option (c, arg)
- int c;
- char *arg;
-{
- switch (c)
- {
- case 'z':
- if (!strcmp (arg, "8001"))
- s_segm ();
- else if (!strcmp (arg, "8002"))
- s_unseg ();
- else
- {
- as_bad (_("invalid architecture -z%s"), arg);
- return 0;
- }
- break;
-
- default:
- return 0;
- }
-
- return 1;
-}
-
-void
-md_show_usage (stream)
- FILE *stream;
-{
- fprintf (stream, _("\
-Z8K options:\n\
--z8001 generate segmented code\n\
--z8002 generate unsegmented code\n"));
-}
-
-void
-tc_aout_fix_to_chars ()
-{
- printf (_("call to tc_aout_fix_to_chars \n"));
- abort ();
-}
-
-void
-md_convert_frag (headers, seg, fragP)
- object_headers *headers ATTRIBUTE_UNUSED;
- segT seg ATTRIBUTE_UNUSED;
- fragS *fragP ATTRIBUTE_UNUSED;
-{
- printf (_("call to md_convert_frag \n"));
- abort ();
-}
-
-valueT
-md_section_align (seg, size)
- segT seg;
- valueT size;
-{
- return ((size + (1 << section_alignment[(int) seg]) - 1)
- & (-1 << section_alignment[(int) seg]));
-
-}
-
-void
-md_apply_fix3 (fixP, valP, segment)
- fixS *fixP;
- valueT * valP;
- segT segment ATTRIBUTE_UNUSED;
-{
- long val = * (long *) valP;
- char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
-
- switch (fixP->fx_r_type)
- {
- case R_IMM4L:
- buf[0] = (buf[0] & 0xf0) | ((buf[0] + val) & 0xf);
- break;
-
- case R_JR:
-
- *buf++ = val;
-#if 0
- if (val != 0)
- abort ();
-#endif
- break;
-
- case R_DISP7:
-
- *buf++ += val;
-#if 0
- if (val != 0)
- abort ();
-#endif
- break;
-
- case R_IMM8:
- buf[0] += val;
- break;
- case R_IMM16:
- *buf++ = (val >> 8);
- *buf++ = val;
- break;
- case R_IMM32:
- *buf++ = (val >> 24);
- *buf++ = (val >> 16);
- *buf++ = (val >> 8);
- *buf++ = val;
- break;
-#if 0
- case R_DA | R_SEG:
- *buf++ = (val >> 16);
- *buf++ = 0x00;
- *buf++ = (val >> 8);
- *buf++ = val;
- break;
-#endif
-
- case 0:
- md_number_to_chars (buf, val, fixP->fx_size);
- break;
-
- default:
- abort ();
- }
-
- if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
- fixP->fx_done = 1;
-}
-
-int
-md_estimate_size_before_relax (fragP, segment_type)
- register fragS *fragP ATTRIBUTE_UNUSED;
- register segT segment_type ATTRIBUTE_UNUSED;
-{
- printf (_("call tomd_estimate_size_before_relax \n"));
- abort ();
-}
-
-/* Put number into target byte order. */
-
-void
-md_number_to_chars (ptr, use, nbytes)
- char *ptr;
- valueT use;
- int nbytes;
-{
- number_to_chars_bigendian (ptr, use, nbytes);
-}
-
-long
-md_pcrel_from (fixP)
- fixS *fixP ATTRIBUTE_UNUSED;
-{
- abort ();
-}
-
-void
-tc_coff_symbol_emit_hook (s)
- symbolS *s ATTRIBUTE_UNUSED;
-{
-}
-
-void
-tc_reloc_mangle (fix_ptr, intr, base)
- fixS *fix_ptr;
- struct internal_reloc *intr;
- bfd_vma base;
-
-{
- symbolS *symbol_ptr;
-
- if (fix_ptr->fx_addsy
- && fix_ptr->fx_subsy)
- {
- symbolS *add = fix_ptr->fx_addsy;
- symbolS *sub = fix_ptr->fx_subsy;
-
- if (S_GET_SEGMENT (add) != S_GET_SEGMENT (sub))
- as_bad (_("Can't subtract symbols in different sections %s %s"),
- S_GET_NAME (add), S_GET_NAME (sub));
- else
- {
- int diff = S_GET_VALUE (add) - S_GET_VALUE (sub);
-
- fix_ptr->fx_addsy = 0;
- fix_ptr->fx_subsy = 0;
- fix_ptr->fx_offset += diff;
- }
- }
- symbol_ptr = fix_ptr->fx_addsy;
-
- /* If this relocation is attached to a symbol then it's ok
- to output it. */
- if (fix_ptr->fx_r_type == 0)
- {
- /* cons likes to create reloc32's whatever the size of the reloc. */
- switch (fix_ptr->fx_size)
- {
- case 2:
- intr->r_type = R_IMM16;
- break;
- case 1:
- intr->r_type = R_IMM8;
- break;
- case 4:
- intr->r_type = R_IMM32;
- break;
- default:
- abort ();
- }
- }
- else
- intr->r_type = fix_ptr->fx_r_type;
-
- intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base;
- intr->r_offset = fix_ptr->fx_offset;
-
- if (symbol_ptr)
- intr->r_symndx = symbol_ptr->sy_number;
- else
- intr->r_symndx = -1;
-}
diff --git a/contrib/binutils/gas/config/tc-z8k.h b/contrib/binutils/gas/config/tc-z8k.h
deleted file mode 100644
index d1899e1564fd..000000000000
--- a/contrib/binutils/gas/config/tc-z8k.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is tc-z8k.h
- Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1997, 1998,
- 2000
- 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-#define TC_Z8K
-#define TARGET_BYTES_BIG_ENDIAN 1
-
-#if ANSI_PROTOTYPES
-struct internal_reloc;
-#endif
-
-#define WORKING_DOT_WORD
-
-#ifndef BFD_ASSEMBLER
-#define LOCAL_LABEL(x) 0
-#endif
-
-/* This macro translates between an internal fix and an coff reloc type */
-#define TC_COFF_FIX2RTYPE(fixP) abort ();
-
-#define BFD_ARCH bfd_arch_z8k
-#define COFF_MAGIC 0x8000
-#define TC_COUNT_RELOC(x) (1)
-#define IGNORE_NONSTANDARD_ESCAPES
-
-#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a,b,c)
-extern void tc_reloc_mangle
- PARAMS ((struct fix *, struct internal_reloc *, bfd_vma));
-
-#define DO_NOT_STRIP 0
-#define LISTING_HEADER "Zilog Z8000 GAS "
-#define NEED_FX_R_TYPE 1
-#define RELOC_32 1234
-
-#define md_operand(x)
diff --git a/contrib/binutils/gas/config/te-multi.h b/contrib/binutils/gas/config/te-multi.h
deleted file mode 100644
index b8eda4505fb7..000000000000
--- a/contrib/binutils/gas/config/te-multi.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * This file is te-generic.h and is intended to be a template for
- * target environment specific header files.
- *
- * It is my intent that this file will evolve into a file suitable for config,
- * compile, and copying as an aid for testing and porting. xoxorich.
- */
-
-/* Added these, because if we don't know what we're targetting we may
- need an assembler version of libgcc, and that will use local
- labels. */
-#define LOCAL_LABELS_DOLLAR 1
-#define LOCAL_LABELS_FB 1
-
-/* these define interfaces */
-#ifdef OBJ_HEADER
-#include OBJ_HEADER
-#else
-#include "obj-format.h"
-#endif
-
-/* end of te-generic.h */
diff --git a/contrib/binutils/gas/doc/c-v850.texi b/contrib/binutils/gas/doc/c-v850.texi
deleted file mode 100644
index 4b36461ee52b..000000000000
--- a/contrib/binutils/gas/doc/c-v850.texi
+++ /dev/null
@@ -1,363 +0,0 @@
-@c Copyright 1997 Free Software Foundation, Inc.
-@c This is part of the GAS manual.
-@c For copying conditions, see the file as.texinfo.
-
-@node V850-Dependent
-@chapter v850 Dependent Features
-
-@cindex V850 support
-@menu
-* V850 Options:: Options
-* V850 Syntax:: Syntax
-* V850 Floating Point:: Floating Point
-* V850 Directives:: V850 Machine Directives
-* V850 Opcodes:: Opcodes
-@end menu
-
-@node V850 Options
-@section Options
-@cindex V850 options (none)
-@cindex options for V850 (none)
-@code{@value{AS}} supports the following additional command-line options
-for the V850 processor family:
-
-@cindex command line options, V850
-@cindex V850 command line options
-@table @code
-
-@cindex @code{-wsigned_overflow} command line option, V850
-@item -wsigned_overflow
-Causes warnings to be produced when signed immediate values overflow the
-space available for then within their opcodes. By default this option
-is disabled as it is possible to receive spurious warnings due to using
-exact bit patterns as immediate constants.
-
-@cindex @code{-wunsigned_overflow} command line option, V850
-@item -wunsigned_overflow
-Causes warnings to be produced when unsigned immediate values overflow
-the space available for then within their opcodes. By default this
-option is disabled as it is possible to receive spurious warnings due to
-using exact bit patterns as immediate constants.
-
-@cindex @code{-mv850} command line option, V850
-@item -mv850
-Specifies that the assembled code should be marked as being targeted at
-the V850 processor. This allows the linker to detect attempts to link
-such code with code assembled for other processors.
-
-@cindex @code{-mv850e} command line option, V850
-@item -mv850e
-Specifies that the assembled code should be marked as being targeted at
-the V850E processor. This allows the linker to detect attempts to link
-such code with code assembled for other processors.
-
-@cindex @code{-mv850any} command line option, V850
-@item -mv850any
-Specifies that the assembled code should be marked as being targeted at
-the V850 processor but support instructions that are specific to the
-extended variants of the process. This allows the production of
-binaries that contain target specific code, but which are also intended
-to be used in a generic fashion. For example libgcc.a contains generic
-routines used by the code produced by GCC for all versions of the v850
-architecture, together with support routines only used by the V850E
-architecture.
-
-@end table
-
-
-@node V850 Syntax
-@section Syntax
-@menu
-* V850-Chars:: Special Characters
-* V850-Regs:: Register Names
-@end menu
-
-@node V850-Chars
-@subsection Special Characters
-
-@cindex line comment character, V850
-@cindex V850 line comment character
-@samp{#} is the line comment character.
-@node V850-Regs
-@subsection Register Names
-
-@cindex V850 register names
-@cindex register names, V850
-@code{@value{AS}} supports the following names for registers:
-@table @code
-@cindex @code{zero} register, V850
-@item general register 0
-r0, zero
-@item general register 1
-r1
-@item general register 2
-r2, hp
-@cindex @code{sp} register, V850
-@item general register 3
-r3, sp
-@cindex @code{gp} register, V850
-@item general register 4
-r4, gp
-@cindex @code{tp} register, V850
-@item general register 5
-r5, tp
-@item general register 6
-r6
-@item general register 7
-r7
-@item general register 8
-r8
-@item general register 9
-r9
-@item general register 10
-r10
-@item general register 11
-r11
-@item general register 12
-r12
-@item general register 13
-r13
-@item general register 14
-r14
-@item general register 15
-r15
-@item general register 16
-r16
-@item general register 17
-r17
-@item general register 18
-r18
-@item general register 19
-r19
-@item general register 20
-r20
-@item general register 21
-r21
-@item general register 22
-r22
-@item general register 23
-r23
-@item general register 24
-r24
-@item general register 25
-r25
-@item general register 26
-r26
-@item general register 27
-r27
-@item general register 28
-r28
-@item general register 29
-r29
-@cindex @code{ep} register, V850
-@item general register 30
-r30, ep
-@cindex @code{lp} register, V850
-@item general register 31
-r31, lp
-@cindex @code{eipc} register, V850
-@item system register 0
-eipc
-@cindex @code{eipsw} register, V850
-@item system register 1
-eipsw
-@cindex @code{fepc} register, V850
-@item system register 2
-fepc
-@cindex @code{fepsw} register, V850
-@item system register 3
-fepsw
-@cindex @code{ecr} register, V850
-@item system register 4
-ecr
-@cindex @code{psw} register, V850
-@item system register 5
-psw
-@cindex @code{ctpc} register, V850
-@item system register 16
-ctpc
-@cindex @code{ctpsw} register, V850
-@item system register 17
-ctpsw
-@cindex @code{dbpc} register, V850
-@item system register 18
-dbpc
-@cindex @code{dbpsw} register, V850
-@item system register 19
-dbpsw
-@cindex @code{ctbp} register, V850
-@item system register 20
-ctbp
-@end table
-
-@node V850 Floating Point
-@section Floating Point
-
-@cindex floating point, V850 (@sc{ieee})
-@cindex V850 floating point (@sc{ieee})
-The V850 family uses @sc{ieee} floating-point numbers.
-
-@node V850 Directives
-@section V850 Machine Directives
-
-@cindex machine directives, V850
-@cindex V850 machine directives
-@table @code
-@cindex @code{offset} directive, V850
-@item .offset @var{<expression>}
-Moves the offset into the current section to the specified amount.
-
-@cindex @code{section} directive, V850
-@item .section "name", <type>
-This is an extension to the standard .section directive. It sets the
-current section to be <type> and creates an alias for this section
-called "name".
-
-@cindex @code{.v850} directive, V850
-@item .v850
-Specifies that the assembled code should be marked as being targeted at
-the V850 processor. This allows the linker to detect attempts to link
-such code with code assembled for other processors.
-
-@cindex @code{.v850e} directive, V850
-@item .v850e
-Specifies that the assembled code should be marked as being targeted at
-the V850E processor. This allows the linker to detect attempts to link
-such code with code assembled for other processors.
-
-@end table
-
-@node V850 Opcodes
-@section Opcodes
-
-@cindex V850 opcodes
-@cindex opcodes for V850
-@code{@value{AS}} implements all the standard V850 opcodes.
-
-@code{@value{AS}} also implements the following pseudo ops:
-
-@table @code
-
-@cindex @code{hi0} pseudo-op, V850
-@item hi0()
-Computes the higher 16 bits of the given expression and stores it into
-the immediate operand field of the given instruction. For example:
-
- @samp{mulhi hi0(here - there), r5, r6}
-
-computes the difference between the address of labels 'here' and
-'there', takes the upper 16 bits of this difference, shifts it down 16
-bits and then mutliplies it by the lower 16 bits in register 5, putting
-the result into register 6.
-
-@cindex @code{lo} pseudo-op, V850
-@item lo()
-Computes the lower 16 bits of the given expression and stores it into
-the immediate operand field of the given instruction. For example:
-
- @samp{addi lo(here - there), r5, r6}
-
-computes the difference between the address of labels 'here' and
-'there', takes the lower 16 bits of this difference and adds it to
-register 5, putting the result into register 6.
-
-@cindex @code{hi} pseudo-op, V850
-@item hi()
-Computes the higher 16 bits of the given expression and then adds the
-value of the most significant bit of the lower 16 bits of the expression
-and stores the result into the immediate operand field of the given
-instruction. For example the following code can be used to compute the
-address of the label 'here' and store it into register 6:
-
- @samp{movhi hi(here), r0, r6}
- @samp{movea lo(here), r6, r6}
-
-The reason for this special behaviour is that movea performs a sign
-extention on its immediate operand. So for example if the address of
-'here' was 0xFFFFFFFF then without the special behaviour of the hi()
-pseudo-op the movhi instruction would put 0xFFFF0000 into r6, then the
-movea instruction would takes its immediate operand, 0xFFFF, sign extend
-it to 32 bits, 0xFFFFFFFF, and then add it into r6 giving 0xFFFEFFFF
-which is wrong (the fifth nibble is E). With the hi() pseudo op adding
-in the top bit of the lo() pseudo op, the movhi instruction actually
-stores 0 into r6 (0xFFFF + 1 = 0x0000), so that the movea instruction
-stores 0xFFFFFFFF into r6 - the right value.
-
-@cindex @code{hilo} pseudo-op, V850
-@item hilo()
-Computes the 32 bit value of the given expression and stores it into
-the immediate operand field of the given instruction (which must be a
-mov instruction). For example:
-
- @samp{mov hilo(here), r6}
-
-computes the absolute address of label 'here' and puts the result into
-register 6.
-
-@cindex @code{sdaoff} pseudo-op, V850
-@item sdaoff()
-Computes the offset of the named variable from the start of the Small
-Data Area (whoes address is held in register 4, the GP register) and
-stores the result as a 16 bit signed value in the immediate operand
-field of the given instruction. For example:
-
- @samp{ld.w sdaoff(_a_variable)[gp],r6}
-
-loads the contents of the location pointed to by the label '_a_variable'
-into register 6, provided that the label is located somewhere within +/-
-32K of the address held in the GP register. [Note the linker assumes
-that the GP register contains a fixed address set to the address of the
-label called '__gp'. This can either be set up automatically by the
-linker, or specifically set by using the @samp{--defsym __gp=<value>}
-command line option].
-
-@cindex @code{tdaoff} pseudo-op, V850
-@item tdaoff()
-Computes the offset of the named variable from the start of the Tiny
-Data Area (whoes address is held in register 30, the EP register) and
-stores the result as a 4,5, 7 or 8 bit unsigned value in the immediate
-operand field of the given instruction. For example:
-
- @samp{sld.w tdaoff(_a_variable)[ep],r6}
-
-loads the contents of the location pointed to by the label '_a_variable'
-into register 6, provided that the label is located somewhere within +256
-bytes of the address held in the EP register. [Note the linker assumes
-that the EP register contains a fixed address set to the address of the
-label called '__ep'. This can either be set up automatically by the
-linker, or specifically set by using the @samp{--defsym __ep=<value>}
-command line option].
-
-@cindex @code{zdaoff} pseudo-op, V850
-@item zdaoff()
-Computes the offset of the named variable from address 0 and stores the
-result as a 16 bit signed value in the immediate operand field of the
-given instruction. For example:
-
- @samp{movea zdaoff(_a_variable),zero,r6}
-
-puts the address of the label '_a_variable' into register 6, assuming
-that the label is somewhere within the first 32K of memory. (Strictly
-speaking it also possible to access the last 32K of memory as well, as
-the offsets are signed).
-
-@cindex @code{ctoff} pseudo-op, V850
-@item ctoff()
-Computes the offset of the named variable from the start of the Call
-Table Area (whoes address is helg in system register 20, the CTBP
-register) and stores the result a 6 or 16 bit unsigned value in the
-immediate field of then given instruction or piece of data. For
-example:
-
- @samp{callt ctoff(table_func1)}
-
-will put the call the function whoes address is held in the call table
-at the location labeled 'table_func1'.
-
-@end table
-
-
-For information on the V850 instruction set, see @cite{V850
-Family 32-/16-Bit single-Chip Microcontroller Architecture Manual} from NEC.
-Ltd.
-
diff --git a/contrib/binutils/gas/doc/c-z8k.texi b/contrib/binutils/gas/doc/c-z8k.texi
deleted file mode 100644
index d98adeaf04aa..000000000000
--- a/contrib/binutils/gas/doc/c-z8k.texi
+++ /dev/null
@@ -1,380 +0,0 @@
-@c Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-@c This is part of the GAS manual.
-@c For copying conditions, see the file as.texinfo.
-@ifset GENERIC
-@page
-@node Z8000-Dependent
-@chapter Z8000 Dependent Features
-@end ifset
-@ifclear GENERIC
-@node Machine Dependencies
-@chapter Z8000 Dependent Features
-@end ifclear
-
-@cindex Z8000 support
-The Z8000 @value{AS} supports both members of the Z8000 family: the
-unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
-24 bit addresses.
-
-When the assembler is in unsegmented mode (specified with the
-@code{unsegm} directive), an address takes up one word (16 bit)
-sized register. When the assembler is in segmented mode (specified with
-the @code{segm} directive), a 24-bit address takes up a long (32 bit)
-register. @xref{Z8000 Directives,,Assembler Directives for the Z8000},
-for a list of other Z8000 specific assembler directives.
-
-@menu
-* Z8000 Options:: No special command-line options for Z8000
-* Z8000 Syntax:: Assembler syntax for the Z8000
-* Z8000 Directives:: Special directives for the Z8000
-* Z8000 Opcodes:: Opcodes
-@end menu
-
-@node Z8000 Options
-@section Options
-
-@cindex Z8000 options
-@cindex options, Z8000
-@code{@value{AS}} has no additional command-line options for the Zilog
-Z8000 family.
-
-@node Z8000 Syntax
-@section Syntax
-@menu
-* Z8000-Chars:: Special Characters
-* Z8000-Regs:: Register Names
-* Z8000-Addressing:: Addressing Modes
-@end menu
-
-@node Z8000-Chars
-@subsection Special Characters
-
-@cindex line comment character, Z8000
-@cindex Z8000 line comment character
-@samp{!} is the line comment character.
-
-@cindex line separator, Z8000
-@cindex statement separator, Z8000
-@cindex Z8000 line separator
-You can use @samp{;} instead of a newline to separate statements.
-
-@node Z8000-Regs
-@subsection Register Names
-
-@cindex Z8000 registers
-@cindex registers, Z8000
-The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can refer
-to different sized groups of registers by register number, with the
-prefix @samp{r} for 16 bit registers, @samp{rr} for 32 bit registers and
-@samp{rq} for 64 bit registers. You can also refer to the contents of
-the first eight (of the sixteen 16 bit registers) by bytes. They are
-named @samp{r@var{n}h} and @samp{r@var{n}l}.
-
-@smallexample
-@exdent @emph{byte registers}
-r0l r0h r1h r1l r2h r2l r3h r3l
-r4h r4l r5h r5l r6h r6l r7h r7l
-
-@exdent @emph{word registers}
-r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
-
-@exdent @emph{long word registers}
-rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
-
-@exdent @emph{quad word registers}
-rq0 rq4 rq8 rq12
-@end smallexample
-
-@node Z8000-Addressing
-@subsection Addressing Modes
-
-@cindex addressing modes, Z8000
-@cindex Z800 addressing modes
-@value{AS} understands the following addressing modes for the Z8000:
-
-@table @code
-@item r@var{n}
-Register direct
-
-@item @@r@var{n}
-Indirect register
-
-@item @var{addr}
-Direct: the 16 bit or 24 bit address (depending on whether the assembler
-is in segmented or unsegmented mode) of the operand is in the instruction.
-
-@item address(r@var{n})
-Indexed: the 16 or 24 bit address is added to the 16 bit register to produce
-the final address in memory of the operand.
-
-@item r@var{n}(#@var{imm})
-Base Address: the 16 or 24 bit register is added to the 16 bit sign
-extended immediate displacement to produce the final address in memory
-of the operand.
-
-@item r@var{n}(r@var{m})
-Base Index: the 16 or 24 bit register r@var{n} is added to the sign
-extended 16 bit index register r@var{m} to produce the final address in
-memory of the operand.
-
-@item #@var{xx}
-Immediate data @var{xx}.
-@end table
-
-@node Z8000 Directives
-@section Assembler Directives for the Z8000
-
-@cindex Z8000 directives
-@cindex directives, Z8000
-The Z8000 port of @value{AS} includes these additional assembler directives,
-for compatibility with other Z8000 assemblers. As shown, these do not
-begin with @samp{.} (unlike the ordinary @value{AS} directives).
-
-@table @code
-@kindex segm
-@item segm
-Generates code for the segmented Z8001.
-
-@kindex unsegm
-@item unsegm
-Generates code for the unsegmented Z8002.
-
-@kindex name
-@item name
-Synonym for @code{.file}
-
-@kindex global
-@item global
-Synonym for @code{.global}
-
-@kindex wval
-@item wval
-Synonym for @code{.word}
-
-@kindex lval
-@item lval
-Synonym for @code{.long}
-
-@kindex bval
-@item bval
-Synonym for @code{.byte}
-
-@kindex sval
-@item sval
-Assemble a string. @code{sval} expects one string literal, delimited by
-single quotes. It assembles each byte of the string into consecutive
-addresses. You can use the escape sequence @samp{%@var{xx}} (where
-@var{xx} represents a two-digit hexadecimal number) to represent the
-character whose @sc{ascii} value is @var{xx}. Use this feature to
-describe single quote and other characters that may not appear in string
-literals as themselves. For example, the C statement @w{@samp{char *a =
-"he said \"it's 50% off\"";}} is represented in Z8000 assembly language
-(shown with the assembler output in hex at the left) as
-
-@iftex
-@begingroup
-@let@nonarrowing=@comment
-@end iftex
-@smallexample
-68652073 sval 'he said %22it%27s 50%25 off%22%00'
-61696420
-22697427
-73203530
-25206F66
-662200
-@end smallexample
-@iftex
-@endgroup
-@end iftex
-
-@kindex rsect
-@item rsect
-synonym for @code{.section}
-
-@kindex block
-@item block
-synonym for @code{.space}
-
-@kindex even
-@item even
-special case of @code{.align}; aligns output to even byte boundary.
-@end table
-
-@node Z8000 Opcodes
-@section Opcodes
-
-@cindex Z8000 opcode summary
-@cindex opcode summary, Z8000
-@cindex mnemonics, Z8000
-@cindex instruction summary, Z8000
-For detailed information on the Z8000 machine instruction set, see
-@cite{Z8000 Technical Manual}.
-
-@ifset SMALL
-@c this table, due to the multi-col faking and hardcoded order, looks silly
-@c except in smallbook. See comments below "@set SMALL" near top of this file.
-
-The following table summarizes the opcodes and their arguments:
-@iftex
-@begingroup
-@let@nonarrowing=@comment
-@end iftex
-@smallexample
-
- rs @r{16 bit source register}
- rd @r{16 bit destination register}
- rbs @r{8 bit source register}
- rbd @r{8 bit destination register}
- rrs @r{32 bit source register}
- rrd @r{32 bit destination register}
- rqs @r{64 bit source register}
- rqd @r{64 bit destination register}
- addr @r{16/24 bit address}
- imm @r{immediate data}
-
-adc rd,rs clrb addr cpsir @@rd,@@rs,rr,cc
-adcb rbd,rbs clrb addr(rd) cpsirb @@rd,@@rs,rr,cc
-add rd,@@rs clrb rbd dab rbd
-add rd,addr com @@rd dbjnz rbd,disp7
-add rd,addr(rs) com addr dec @@rd,imm4m1
-add rd,imm16 com addr(rd) dec addr(rd),imm4m1
-add rd,rs com rd dec addr,imm4m1
-addb rbd,@@rs comb @@rd dec rd,imm4m1
-addb rbd,addr comb addr decb @@rd,imm4m1
-addb rbd,addr(rs) comb addr(rd) decb addr(rd),imm4m1
-addb rbd,imm8 comb rbd decb addr,imm4m1
-addb rbd,rbs comflg flags decb rbd,imm4m1
-addl rrd,@@rs cp @@rd,imm16 di i2
-addl rrd,addr cp addr(rd),imm16 div rrd,@@rs
-addl rrd,addr(rs) cp addr,imm16 div rrd,addr
-addl rrd,imm32 cp rd,@@rs div rrd,addr(rs)
-addl rrd,rrs cp rd,addr div rrd,imm16
-and rd,@@rs cp rd,addr(rs) div rrd,rs
-and rd,addr cp rd,imm16 divl rqd,@@rs
-and rd,addr(rs) cp rd,rs divl rqd,addr
-and rd,imm16 cpb @@rd,imm8 divl rqd,addr(rs)
-and rd,rs cpb addr(rd),imm8 divl rqd,imm32
-andb rbd,@@rs cpb addr,imm8 divl rqd,rrs
-andb rbd,addr cpb rbd,@@rs djnz rd,disp7
-andb rbd,addr(rs) cpb rbd,addr ei i2
-andb rbd,imm8 cpb rbd,addr(rs) ex rd,@@rs
-andb rbd,rbs cpb rbd,imm8 ex rd,addr
-bit @@rd,imm4 cpb rbd,rbs ex rd,addr(rs)
-bit addr(rd),imm4 cpd rd,@@rs,rr,cc ex rd,rs
-bit addr,imm4 cpdb rbd,@@rs,rr,cc exb rbd,@@rs
-bit rd,imm4 cpdr rd,@@rs,rr,cc exb rbd,addr
-bit rd,rs cpdrb rbd,@@rs,rr,cc exb rbd,addr(rs)
-bitb @@rd,imm4 cpi rd,@@rs,rr,cc exb rbd,rbs
-bitb addr(rd),imm4 cpib rbd,@@rs,rr,cc ext0e imm8
-bitb addr,imm4 cpir rd,@@rs,rr,cc ext0f imm8
-bitb rbd,imm4 cpirb rbd,@@rs,rr,cc ext8e imm8
-bitb rbd,rs cpl rrd,@@rs ext8f imm8
-bpt cpl rrd,addr exts rrd
-call @@rd cpl rrd,addr(rs) extsb rd
-call addr cpl rrd,imm32 extsl rqd
-call addr(rd) cpl rrd,rrs halt
-calr disp12 cpsd @@rd,@@rs,rr,cc in rd,@@rs
-clr @@rd cpsdb @@rd,@@rs,rr,cc in rd,imm16
-clr addr cpsdr @@rd,@@rs,rr,cc inb rbd,@@rs
-clr addr(rd) cpsdrb @@rd,@@rs,rr,cc inb rbd,imm16
-clr rd cpsi @@rd,@@rs,rr,cc inc @@rd,imm4m1
-clrb @@rd cpsib @@rd,@@rs,rr,cc inc addr(rd),imm4m1
-inc addr,imm4m1 ldb rbd,rs(rx) mult rrd,addr(rs)
-inc rd,imm4m1 ldb rd(imm16),rbs mult rrd,imm16
-incb @@rd,imm4m1 ldb rd(rx),rbs mult rrd,rs
-incb addr(rd),imm4m1 ldctl ctrl,rs multl rqd,@@rs
-incb addr,imm4m1 ldctl rd,ctrl multl rqd,addr
-incb rbd,imm4m1 ldd @@rs,@@rd,rr multl rqd,addr(rs)
-ind @@rd,@@rs,ra lddb @@rs,@@rd,rr multl rqd,imm32
-indb @@rd,@@rs,rba lddr @@rs,@@rd,rr multl rqd,rrs
-inib @@rd,@@rs,ra lddrb @@rs,@@rd,rr neg @@rd
-inibr @@rd,@@rs,ra ldi @@rd,@@rs,rr neg addr
-iret ldib @@rd,@@rs,rr neg addr(rd)
-jp cc,@@rd ldir @@rd,@@rs,rr neg rd
-jp cc,addr ldirb @@rd,@@rs,rr negb @@rd
-jp cc,addr(rd) ldk rd,imm4 negb addr
-jr cc,disp8 ldl @@rd,rrs negb addr(rd)
-ld @@rd,imm16 ldl addr(rd),rrs negb rbd
-ld @@rd,rs ldl addr,rrs nop
-ld addr(rd),imm16 ldl rd(imm16),rrs or rd,@@rs
-ld addr(rd),rs ldl rd(rx),rrs or rd,addr
-ld addr,imm16 ldl rrd,@@rs or rd,addr(rs)
-ld addr,rs ldl rrd,addr or rd,imm16
-ld rd(imm16),rs ldl rrd,addr(rs) or rd,rs
-ld rd(rx),rs ldl rrd,imm32 orb rbd,@@rs
-ld rd,@@rs ldl rrd,rrs orb rbd,addr
-ld rd,addr ldl rrd,rs(imm16) orb rbd,addr(rs)
-ld rd,addr(rs) ldl rrd,rs(rx) orb rbd,imm8
-ld rd,imm16 ldm @@rd,rs,n orb rbd,rbs
-ld rd,rs ldm addr(rd),rs,n out @@rd,rs
-ld rd,rs(imm16) ldm addr,rs,n out imm16,rs
-ld rd,rs(rx) ldm rd,@@rs,n outb @@rd,rbs
-lda rd,addr ldm rd,addr(rs),n outb imm16,rbs
-lda rd,addr(rs) ldm rd,addr,n outd @@rd,@@rs,ra
-lda rd,rs(imm16) ldps @@rs outdb @@rd,@@rs,rba
-lda rd,rs(rx) ldps addr outib @@rd,@@rs,ra
-ldar rd,disp16 ldps addr(rs) outibr @@rd,@@rs,ra
-ldb @@rd,imm8 ldr disp16,rs pop @@rd,@@rs
-ldb @@rd,rbs ldr rd,disp16 pop addr(rd),@@rs
-ldb addr(rd),imm8 ldrb disp16,rbs pop addr,@@rs
-ldb addr(rd),rbs ldrb rbd,disp16 pop rd,@@rs
-ldb addr,imm8 ldrl disp16,rrs popl @@rd,@@rs
-ldb addr,rbs ldrl rrd,disp16 popl addr(rd),@@rs
-ldb rbd,@@rs mbit popl addr,@@rs
-ldb rbd,addr mreq rd popl rrd,@@rs
-ldb rbd,addr(rs) mres push @@rd,@@rs
-ldb rbd,imm8 mset push @@rd,addr
-ldb rbd,rbs mult rrd,@@rs push @@rd,addr(rs)
-ldb rbd,rs(imm16) mult rrd,addr push @@rd,imm16
-push @@rd,rs set addr,imm4 subl rrd,imm32
-pushl @@rd,@@rs set rd,imm4 subl rrd,rrs
-pushl @@rd,addr set rd,rs tcc cc,rd
-pushl @@rd,addr(rs) setb @@rd,imm4 tccb cc,rbd
-pushl @@rd,rrs setb addr(rd),imm4 test @@rd
-res @@rd,imm4 setb addr,imm4 test addr
-res addr(rd),imm4 setb rbd,imm4 test addr(rd)
-res addr,imm4 setb rbd,rs test rd
-res rd,imm4 setflg imm4 testb @@rd
-res rd,rs sinb rbd,imm16 testb addr
-resb @@rd,imm4 sinb rd,imm16 testb addr(rd)
-resb addr(rd),imm4 sind @@rd,@@rs,ra testb rbd
-resb addr,imm4 sindb @@rd,@@rs,rba testl @@rd
-resb rbd,imm4 sinib @@rd,@@rs,ra testl addr
-resb rbd,rs sinibr @@rd,@@rs,ra testl addr(rd)
-resflg imm4 sla rd,imm8 testl rrd
-ret cc slab rbd,imm8 trdb @@rd,@@rs,rba
-rl rd,imm1or2 slal rrd,imm8 trdrb @@rd,@@rs,rba
-rlb rbd,imm1or2 sll rd,imm8 trib @@rd,@@rs,rbr
-rlc rd,imm1or2 sllb rbd,imm8 trirb @@rd,@@rs,rbr
-rlcb rbd,imm1or2 slll rrd,imm8 trtdrb @@ra,@@rb,rbr
-rldb rbb,rba sout imm16,rs trtib @@ra,@@rb,rr
-rr rd,imm1or2 soutb imm16,rbs trtirb @@ra,@@rb,rbr
-rrb rbd,imm1or2 soutd @@rd,@@rs,ra trtrb @@ra,@@rb,rbr
-rrc rd,imm1or2 soutdb @@rd,@@rs,rba tset @@rd
-rrcb rbd,imm1or2 soutib @@rd,@@rs,ra tset addr
-rrdb rbb,rba soutibr @@rd,@@rs,ra tset addr(rd)
-rsvd36 sra rd,imm8 tset rd
-rsvd38 srab rbd,imm8 tsetb @@rd
-rsvd78 sral rrd,imm8 tsetb addr
-rsvd7e srl rd,imm8 tsetb addr(rd)
-rsvd9d srlb rbd,imm8 tsetb rbd
-rsvd9f srll rrd,imm8 xor rd,@@rs
-rsvdb9 sub rd,@@rs xor rd,addr
-rsvdbf sub rd,addr xor rd,addr(rs)
-sbc rd,rs sub rd,addr(rs) xor rd,imm16
-sbcb rbd,rbs sub rd,imm16 xor rd,rs
-sc imm8 sub rd,rs xorb rbd,@@rs
-sda rd,rs subb rbd,@@rs xorb rbd,addr
-sdab rbd,rs subb rbd,addr xorb rbd,addr(rs)
-sdal rrd,rs subb rbd,addr(rs) xorb rbd,imm8
-sdl rd,rs subb rbd,imm8 xorb rbd,rbs
-sdlb rbd,rs subb rbd,rbs xorb rbd,rbs
-sdll rrd,rs subl rrd,@@rs
-set @@rd,imm4 subl rrd,addr
-set addr(rd),imm4 subl rrd,addr(rs)
-@end smallexample
-@iftex
-@endgroup
-@end iftex
-@end ifset
-
diff --git a/contrib/binutils/gas/doc/gasp.texi b/contrib/binutils/gas/doc/gasp.texi
deleted file mode 100644
index 889e997105ce..000000000000
--- a/contrib/binutils/gas/doc/gasp.texi
+++ /dev/null
@@ -1,1456 +0,0 @@
-\input texinfo @c -*- Texinfo -*-
-@setfilename gasp.info
-@c
-@c This file documents the assembly preprocessor "GASP"
-@c
-@c Copyright 1994, 1995, 2000, 2002 Free Software Foundation, Inc.
-@c
-@c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.1
-@c or any later version published by the Free Software Foundation;
-@c with no Invariant Sections, with no Front-Cover Texts, and with no
-@c Back-Cover Texts. A copy of the license is included in the
-@c section entitled "GNU Free Documentation License".
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* gasp: (gasp). The GNU Assembler Preprocessor
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@syncodeindex ky cp
-@syncodeindex fn cp
-
-@finalout
-@setchapternewpage odd
-@settitle GASP
-@titlepage
-@c FIXME boring title
-@title GASP, an assembly preprocessor
-@subtitle for GASP version 1
-@sp 1
-@subtitle March 1994
-@author Roland Pesch
-@page
-
-@tex
-{\parskip=0pt \hfill Cygnus Support\par
-}
-@end tex
-
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1994, 1995, 2000, 2002 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.1
- 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".
-
-@end titlepage
-
-@ifinfo
-Copyright @copyright{} 1994, 1995, 2000, 2002 Free Software Foundation, Inc.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1
- 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".
-
-
-@node Top
-@top GASP
-
-GASP is a preprocessor for assembly programs.
-
-This file describes version 1 of GASP.
-
-Steve Chamberlain wrote GASP; Roland Pesch wrote this manual.
-
-@menu
-* Overview:: What is GASP?
-* Invoking GASP:: Command line options.
-* Commands:: Preprocessor commands.
-* GNU Free Documentation License:: GNU Free Documentation License
-* Index:: Index.
-@end menu
-@end ifinfo
-
-@node Overview
-@chapter What is GASP?
-
-The primary purpose of the @sc{gnu} assembler is to assemble the output of
-other programs---notably compilers. When you have to hand-code
-specialized routines in assembly, that means the @sc{gnu} assembler is
-an unfriendly processor: it has no directives for macros, conditionals,
-or many other conveniences that you might expect.
-
-In some cases you can simply use the C preprocessor, or a generalized
-preprocessor like @sc{m4}; but this can be awkward, since none of these
-things are designed with assembly in mind.
-
-@sc{gasp} fills this need. It is expressly designed to provide the
-facilities you need with hand-coded assembly code. Implementing it as a
-preprocessor, rather than part of the assembler, allows the maximum
-flexibility: you can use it with hand-coded assembly, without paying a
-penalty of added complexity in the assembler you use for compiler
-output.
-
-@emph{Note} The use of @sc{gasp} has now been deprecated. Anything
-that it could do can now be done by the macro facilities built into
-@sc{gas} itself. At some point in the future the @sc{gasp} sources will
-be removed entirely from the binutils distribution.
-
-Here is a small example to give the flavor of @sc{gasp}. This input to
-@sc{gasp}
-
-@cartouche
-@example
- .MACRO saveregs from=8 to=14
-count .ASSIGNA \from
- ! save r\from..r\to
- .AWHILE \&count LE \to
- mov r\&count,@@-sp
-count .ASSIGNA \&count + 1
- .AENDW
- .ENDM
-
- saveregs from=12
-
-bar: mov #H'dead+10,r0
-foo .SDATAC "hello"<10>
- .END
-@end example
-@end cartouche
-
-@noindent
-generates this assembly program:
-
-@cartouche
-@example
- ! save r12..r14
- mov r12,@@-sp
- mov r13,@@-sp
- mov r14,@@-sp
-
-bar: mov #57005+10,r0
-foo: .byte 6,104,101,108,108,111,10
-@end example
-@end cartouche
-
-@node Invoking GASP
-@chapter Command Line Options
-
-@c FIXME! Or is there a simpler way, calling from GAS option?
-The simplest way to use @sc{gasp} is to run it as a filter and assemble
-its output. In Unix and its ilk, you can do this, for example:
-
-@c FIXME! GASP filename suffix convention?
-@example
-$ gasp prog.asm | as -o prog.o
-@end example
-
-Naturally, there are also a few command-line options to allow you to
-request variations on this basic theme. Here is the full set of
-possibilities for the @sc{gasp} command line.
-
-@example
-gasp [ -a | --alternate ]
- [ -c @var{char} | --commentchar @var{char} ]
- [ -d | --debug ] [ -h | --help ] [ -M | --mri ]
- [ -o @var{outfile} | --output @var{outfile} ]
- [ -p | --print ] [ -s | --copysource ]
- [ -u | --unreasonable ] [ -v | --version ]
- @var{infile} @dots{}
-@end example
-
-@ftable @code
-@item @var{infile} @dots{}
-@c FIXME! Why not stdin as default infile?
-The input file names. You must specify at least one input file; if you
-specify more, @sc{gasp} preprocesses them all, concatenating the output
-in the order you list the @var{infile} arguments.
-
-Mark the end of each input file with the preprocessor command
-@code{.END}. @xref{Other Commands,, Miscellaneous commands}.
-
-@item -a
-@itemx --alternate
-Use alternative macro syntax. @xref{Alternate,, Alternate macro
-syntax}, for a discussion of how this syntax differs from the default
-@sc{gasp} syntax.
-
-@cindex comment character, changing
-@cindex semicolon, as comment
-@cindex exclamation mark, as comment
-@cindex shriek, as comment
-@cindex bang, as comment
-@cindex @code{!} default comment char
-@cindex @code{;} as comment char
-@item -c '@var{char}'
-@itemx --commentchar '@var{char}'
-Use @var{char} as the comment character. The default comment character
-is @samp{!}. For example, to use a semicolon as the comment character,
-specify @w{@samp{-c ';'}} on the @sc{gasp} command line. Since
-assembler command characters often have special significance to command
-shells, it is a good idea to quote or escape @var{char} when you specify
-a comment character.
-
-For the sake of simplicity, all examples in this manual use the default
-comment character @samp{!}.
-
-@item -d
-@itemx --debug
-Show debugging statistics. In this version of @sc{gasp}, this option
-produces statistics about the string buffers that @sc{gasp} allocates
-internally. For each defined buffersize @var{s}, @sc{gasp} shows the
-number of strings @var{n} that it allocated, with a line like this:
-
-@example
-strings size @var{s} : @var{n}
-@end example
-
-@noindent
-@sc{gasp} displays these statistics on the standard error stream, when
-done preprocessing.
-
-@item -h
-@itemx --help
-Display a summary of the @sc{gasp} command line options.
-
-@item -M
-@itemx --mri
-Use MRI compatibility mode. Using this option causes @sc{gasp} to
-accept the syntax and pseudo-ops used by the Microtec Research
-@code{ASM68K} assembler.
-
-@item -o @var{outfile}
-@itemx --output @var{outfile}
-Write the output in a file called @var{outfile}. If you do not use the
-@samp{-o} option, @sc{gasp} writes its output on the standard output
-stream.
-
-@item -p
-@itemx --print
-Print line numbers. @sc{gasp} obeys this option @emph{only} if you also
-specify @samp{-s} to copy source lines to its output. With @samp{-s
--p}, @sc{gasp} displays the line number of each source line copied
-(immediately after the comment character at the beginning of the line).
-
-@item -s
-@itemx --copysource
-Copy the source lines to the output file. Use this option
-to see the effect of each preprocessor line on the @sc{gasp} output.
-@sc{gasp} places a comment character (@samp{!} by default) at
-the beginning of each source line it copies, so that you can use this
-option and still assemble the result.
-
-@item -u
-@itemx --unreasonable
-Bypass ``unreasonable expansion'' limit. Since you can define @sc{gasp}
-macros inside other macro definitions, the preprocessor normally
-includes a sanity check. If your program requires more than 1,000
-nested expansions, @sc{gasp} normally exits with an error message. Use
-this option to turn off this check, allowing unlimited nested
-expansions.
-
-@item -v
-@itemx --version
-Display the @sc{gasp} version number.
-@end ftable
-
-@node Commands
-@chapter Preprocessor Commands
-
-@sc{gasp} commands have a straightforward syntax that fits in well with
-assembly conventions. In general, a command extends for a line, and may
-have up to three fields: an optional label, the command itself, and
-optional arguments to the command. You can write commands in upper or
-lower case, though this manual shows them in upper case. @xref{Syntax
-Details,, Details of the GASP syntax}, for more information.
-
-@menu
-* Conditionals::
-* Loops::
-* Variables::
-* Macros::
-* Data::
-* Listings::
-* Other Commands::
-* Syntax Details::
-* Alternate::
-@end menu
-
-@node Conditionals
-@section Conditional assembly
-
-The conditional-assembly directives allow you to include or exclude
-portions of an assembly depending on how a pair of expressions, or a
-pair of strings, compare.
-
-The overall structure of conditionals is familiar from many other
-contexts. @code{.AIF} marks the start of a conditional, and precedes
-assembly for the case when the condition is true. An optional
-@code{.AELSE} precedes assembly for the converse case, and an
-@code{.AENDI} marks the end of the condition.
-
-@c FIXME! Why doesn't -u turn off this check?
-You may nest conditionals up to a depth of 100; @sc{gasp} rejects
-nesting beyond that, because it may indicate a bug in your macro
-structure.
-
-@c FIXME! Why isn't there something like cpp's -D option? Conditionals
-@c would be much more useful if there were.
-Conditionals are primarily useful inside macro definitions, where you
-often need different effects depending on argument values.
-@xref{Macros,, Defining your own directives}, for details about defining
-macros.
-
-@ftable @code
-@item .AIF @var{expra} @var{cmp} @var{exprb}
-@itemx .AIF "@var{stra}" @var{cmp} "@var{strb}"
-
-The governing condition goes on the same line as the @code{.AIF}
-preprocessor command. You may compare either two strings, or two
-expressions.
-
-When you compare strings, only two conditional @var{cmp} comparison
-operators are available: @samp{EQ} (true if @var{stra} and @var{strb}
-are identical), and @samp{NE} (the opposite).
-
-When you compare two expressions, @emph{both expressions must be
-absolute} (@pxref{Expressions,, Arithmetic expressions in GASP}). You
-can use these @var{cmp} comparison operators with expressions:
-
-@ftable @code
-@item EQ
-Are @var{expra} and @var{exprb} equal? (For strings, are @var{stra} and
-@var{strb} identical?)
-
-@item NE
-Are @var{expra} and @var{exprb} different? (For strings, are @var{stra}
-and @var{strb} different?
-
-@item LT
-Is @var{expra} less than @var{exprb}? (Not allowed for strings.)
-
-@item LE
-Is @var{expra} less than or equal to @var{exprb}? (Not allowed for strings.)
-
-@item GT
-Is @var{expra} greater than @var{exprb}? (Not allowed for strings.)
-
-@item GE
-Is @var{expra} greater than or equal to @var{exprb}? (Not allowed for
-strings.)
-@end ftable
-
-@item .AELSE
-Marks the start of assembly code to be included if the condition fails.
-Optional, and only allowed within a conditional (between @code{.AIF} and
-@code{.AENDI}).
-
-@item .AENDI
-Marks the end of a conditional assembly.
-@end ftable
-
-@node Loops
-@section Repetitive sections of assembly
-
-Two preprocessor directives allow you to repeatedly issue copies of the
-same block of assembly code.
-
-@ftable @code
-@item .AREPEAT @var{aexp}
-@itemx .AENDR
-If you simply need to repeat the same block of assembly over and over a
-fixed number of times, sandwich one instance of the repeated block
-between @code{.AREPEAT} and @code{.AENDR}. Specify the number of
-copies as @var{aexp} (which must be an absolute expression). For
-example, this repeats two assembly statements three times in succession:
-
-@cartouche
-@example
- .AREPEAT 3
- rotcl r2
- div1 r0,r1
- .AENDR
-@end example
-@end cartouche
-
-@item .AWHILE @var{expra} @var{cmp} @var{exprb}
-@itemx .AENDW
-@itemx .AWHILE @var{stra} @var{cmp} @var{strb}
-@itemx .AENDW
-To repeat a block of assembly depending on a conditional test, rather
-than repeating it for a specific number of times, use @code{.AWHILE}.
-@code{.AENDW} marks the end of the repeated block. The conditional
-comparison works exactly the same way as for @code{.AIF}, with the same
-comparison operators (@pxref{Conditionals,, Conditional assembly}).
-
-Since the terms of the comparison must be absolute expression,
-@code{.AWHILE} is primarily useful within macros. @xref{Macros,,
-Defining your own directives}.
-@end ftable
-
-@cindex loops, breaking out of
-@cindex breaking out of loops
-You can use the @code{.EXITM} preprocessor directive to break out of
-loops early (as well as to break out of macros). @xref{Macros,,
-Defining your own directives}.
-
-@node Variables
-@section Preprocessor variables
-
-You can use variables in @sc{gasp} to represent strings, registers, or
-the results of expressions.
-
-You must distinguish two kinds of variables:
-@enumerate
-@item
-Variables defined with @code{.EQU} or @code{.ASSIGN}. To evaluate this
-kind of variable in your assembly output, simply mention its name. For
-example, these two lines define and use a variable @samp{eg}:
-
-@cartouche
-@example
-eg .EQU FLIP-64
- @dots{}
- mov.l eg,r0
-@end example
-@end cartouche
-
-@emph{Do not use} this kind of variable in conditional expressions or
-while loops; @sc{gasp} only evaluates these variables when writing
-assembly output.
-
-@item
-Variables for use during preprocessing. You can define these
-with @code{.ASSIGNC} or @code{.ASSIGNA}. To evaluate this
-kind of variable, write @samp{\&} before the variable name; for example,
-
-@cartouche
-@example
-opcit .ASSIGNA 47
- @dots{}
- .AWHILE \&opcit GT 0
- @dots{}
- .AENDW
-@end example
-@end cartouche
-
-@sc{gasp} treats macro arguments almost the same way, but to evaluate
-them you use the prefix @samp{\} rather than @samp{\&}.
-@xref{Macros,, Defining your own directives}.
-@end enumerate
-
-@ftable @code
-@item @var{pvar} .EQU @var{expr}
-@c FIXME! Anything to beware of re GAS directive of same name?
-Assign preprocessor variable @var{pvar} the value of the expression
-@var{expr}. There are no restrictions on redefinition; use @samp{.EQU}
-with the same @var{pvar} as often as you find it convenient.
-
-@item @var{pvar} .ASSIGN @var{expr}
-Almost the same as @code{.EQU}, save that you may not redefine
-@var{pvar} using @code{.ASSIGN} once it has a value.
-@c FIXME!! Supposed to work this way, apparently, but on 9feb94 works
-@c just like .EQU
-
-@item @var{pvar} .ASSIGNA @var{aexpr}
-Define a variable with a numeric value, for use during preprocessing.
-@var{aexpr} must be an absolute expression. You can redefine variables
-with @code{.ASSIGNA} at any time.
-
-@item @var{pvar} .ASSIGNC "@var{str}"
-Define a variable with a string value, for use during preprocessing.
-You can redefine variables with @code{.ASSIGNC} at any time.
-
-@item @var{pvar} .REG (@var{register})
-Use @code{.REG} to define a variable that represents a register. In
-particular, @var{register} is @emph{not evaluated} as an expression.
-You may use @code{.REG} at will to redefine register variables.
-@end ftable
-
-All these directives accept the variable name in the ``label'' position,
-that is at the left margin. You may specify a colon after the variable
-name if you wish; the first example above could have started @samp{eg:}
-with the same effect.
-
-@c pagebreak makes for better aesthetics---ensures macro and expansion together
-@page
-@node Macros
-@section Defining your own directives
-
-The commands @code{.MACRO} and @code{.ENDM} allow you to define macros
-that generate assembly output. You can use these macros with a syntax
-similar to built-in @sc{gasp} or assembler directives. For example,
-this definition specifies a macro @code{SUM} that adds together a range of
-consecutive registers:
-
-@cartouche
-@example
- .MACRO SUM FROM=0, TO=9
- ! \FROM \TO
- mov r\FROM,r10
-COUNT .ASSIGNA \FROM+1
- .AWHILE \&COUNT LE \TO
- add r\&COUNT,r10
-COUNT .ASSIGNA \&COUNT+1
- .AENDW
- .ENDM
-@end example
-@end cartouche
-
-@noindent
-With that definition, @samp{SUM 0,5} generates this assembly output:
-
-@cartouche
-@example
- ! 0 5
- mov r0,r10
- add r1,r10
- add r2,r10
- add r3,r10
- add r4,r10
- add r5,r10
-@end example
-@end cartouche
-
-@ftable @code
-@item .MACRO @var{macname}
-@itemx .MACRO @var{macname} @var{macargs} @dots{}
-Begin the definition of a macro called @var{macname}. If your macro
-definition requires arguments, specify their names after the macro name,
-separated by commas or spaces. You can supply a default value for any
-macro argument by following the name with @samp{=@var{deflt}}. For
-example, these are all valid @code{.MACRO} statements:
-
-@table @code
-@item .MACRO COMM
-Begin the definition of a macro called @code{COMM}, which takes no
-arguments.
-
-@item .MACRO PLUS1 P, P1
-@itemx .MACRO PLUS1 P P1
-Either statement begins the definition of a macro called @code{PLUS1},
-which takes two arguments; within the macro definition, write
-@samp{\P} or @samp{\P1} to evaluate the arguments.
-
-@item .MACRO RESERVE_STR P1=0 P2
-Begin the definition of a macro called @code{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
-@samp{RESERVE_STR @var{a},@var{b}} (with @samp{\P1} evaluating to
-@var{a} and @samp{\P2} evaluating to @var{b}), or as @samp{RESERVE_STR
-,@var{b}} (with @samp{\P1} evaluating as the default, in this case
-@samp{0}, and @samp{\P2} evaluating to @var{b}).
-@end table
-
-When you call a macro, you can specify the argument values either by
-position, or by keyword. For example, @samp{SUM 9,17} is equivalent to
-@samp{SUM TO=17, FROM=9}. Macro arguments are preprocessor variables
-similar to the variables you define with @samp{.ASSIGNA} or
-@samp{.ASSIGNC}; in particular, you can use them in conditionals or for
-loop control. (The only difference is the prefix you write to evaluate
-the variable: for a macro argument, write @samp{\@var{argname}}, but for
-a preprocessor variable, write @samp{\&@var{varname}}.)
-
-@item @var{name} .MACRO
-@itemx @var{name} .MACRO ( @var{macargs} @dots{} )
-@c FIXME check: I think no error _and_ no args recognized if I use form
-@c NAME .MACRO ARG ARG
-An alternative form of introducing a macro definition: specify the macro
-name in the label position, and the arguments (if any) between
-parentheses after the name. Defaulting rules and usage work the same
-way as for the other macro definition syntax.
-
-@item .ENDM
-Mark the end of a macro definition.
-
-@item .EXITM
-Exit early from the current macro definition, @code{.AREPEAT} loop, or
-@code{.AWHILE} loop.
-
-@cindex number of macros executed
-@cindex macros, count executed
-@item \@@
-@sc{gasp} maintains a counter of how many macros it has
-executed in this pseudo-variable; you can copy that number to your
-output with @samp{\@@}, but @emph{only within a macro definition}.
-
-@item LOCAL @var{name} [ , @dots{} ]
-@emph{Warning: @code{LOCAL} is only available if you select ``alternate
-macro syntax'' with @samp{-a} or @samp{--alternate}.} @xref{Alternate,,
-Alternate macro syntax}.
-
-Generate a string replacement for each of the @var{name} arguments, and
-replace any instances of @var{name} in each macro expansion. The
-replacement string is unique in the assembly, and different for each
-separate macro expansion. @code{LOCAL} allows you to write macros that
-define symbols, without fear of conflict between separate macro expansions.
-@end ftable
-
-@node Data
-@section Data output
-
-In assembly code, you often need to specify working areas of memory;
-depending on the application, you may want to initialize such memory or
-not. @sc{gasp} provides preprocessor directives to help you avoid
-repetitive coding for both purposes.
-
-You can use labels as usual to mark the data areas.
-
-@menu
-* Initialized::
-* Uninitialized::
-@end menu
-
-@node Initialized
-@subsection Initialized data
-
-These are the @sc{gasp} directives for initialized data, and the standard
-@sc{gnu} assembler directives they expand to:
-
-@ftable @code
-@item .DATA @var{expr}, @var{expr}, @dots{}
-@itemx .DATA.B @var{expr}, @var{expr}, @dots{}
-@itemx .DATA.W @var{expr}, @var{expr}, @dots{}
-@itemx .DATA.L @var{expr}, @var{expr}, @dots{}
-Evaluate arithmetic expressions @var{expr}, and emit the corresponding
-@code{as} directive (labelled with @var{lab}). The unqualified
-@code{.DATA} emits @samp{.long}; @code{.DATA.B} emits @samp{.byte};
-@code{.DATA.W} emits @samp{.short}; and @code{.DATA.L} emits
-@samp{.long}.
-
-For example, @samp{foo .DATA 1,2,3} emits @samp{foo: .long 1,2,3}.
-
-@item .DATAB @var{repeat}, @var{expr}
-@itemx .DATAB.B @var{repeat}, @var{expr}
-@itemx .DATAB.W @var{repeat}, @var{expr}
-@itemx .DATAB.L @var{repeat}, @var{expr}
-@c FIXME! Looks like gasp accepts and ignores args after 2nd.
-Make @code{as} emit @var{repeat} copies of the value of the expression
-@var{expr} (using the @code{as} directive @code{.fill}).
-@samp{.DATAB.B} repeats one-byte values; @samp{.DATAB.W} repeats
-two-byte values; and @samp{.DATAB.L} repeats four-byte values.
-@samp{.DATAB} without a suffix repeats four-byte values, just like
-@samp{.DATAB.L}.
-
-@c FIXME! Allowing zero might be useful for edge conditions in macros.
-@var{repeat} must be an absolute expression with a positive value.
-
-@item .SDATA "@var{str}" @dots{}
-String data. Emits a concatenation of bytes, precisely as you specify
-them (in particular, @emph{nothing is added to mark the end} of the
-string). @xref{Constants,, String and numeric constants}, for details
-about how to write strings. @code{.SDATA} concatenates multiple
-arguments, making it easy to switch between string representations. You
-can use commas to separate the individual arguments for clarity, if you
-choose.
-
-@item .SDATAB @var{repeat}, "@var{str}" @dots{}
-Repeated string data. The first argument specifies how many copies of
-the string to emit; the remaining arguments specify the string, in the
-same way as the arguments to @code{.SDATA}.
-
-@item .SDATAZ "@var{str}" @dots{}
-Zero-terminated string data. Just like @code{.SDATA}, except that
-@code{.SDATAZ} writes a zero byte at the end of the string.
-
-@item .SDATAC "@var{str}" @dots{}
-Count-prefixed string data. Just like @code{.SDATA}, except that
-@sc{gasp} precedes the string with a leading one-byte count. For
-example, @samp{.SDATAC "HI"} generates @samp{.byte 2,72,73}. Since the
-count field is only one byte, you can only use @code{.SDATAC} for
-strings less than 256 bytes in length.
-@end ftable
-
-@node Uninitialized
-@subsection Uninitialized data
-
-@c FIXME! .space different on some platforms, notably HPPA. Config?
-Use the @code{.RES}, @code{.SRES}, @code{.SRESC}, and @code{.SRESZ}
-directives to reserve memory and leave it uninitialized. @sc{gasp}
-resolves these directives to appropriate calls of the @sc{gnu}
-@code{as} @code{.space} directive.
-
-@ftable @code
-@item .RES @var{count}
-@itemx .RES.B @var{count}
-@itemx .RES.W @var{count}
-@itemx .RES.L @var{count}
-Reserve room for @var{count} uninitialized elements of data. The
-suffix specifies the size of each element: @code{.RES.B} reserves
-@var{count} bytes, @code{.RES.W} reserves @var{count} pairs of bytes,
-and @code{.RES.L} reserves @var{count} quartets. @code{.RES} without a
-suffix is equivalent to @code{.RES.L}.
-
-@item .SRES @var{count}
-@itemx .SRES.B @var{count}
-@itemx .SRES.W @var{count}
-@itemx .SRES.L @var{count}
-@c FIXME! This is boring. Shouldn't it at least have a different
-@c default size? (e.g. the "S" suggests "string", for which .B
-@c would be more appropriate)
-@code{.SRES} is a synonym for @samp{.RES}.
-
-@item .SRESC @var{count}
-@itemx .SRESC.B @var{count}
-@itemx .SRESC.W @var{count}
-@itemx .SRESC.L @var{count}
-Like @code{.SRES}, but reserves space for @code{@var{count}+1} elements.
-
-@item .SRESZ @var{count}
-@itemx .SRESZ.B @var{count}
-@itemx .SRESZ.W @var{count}
-@itemx .SRESZ.L @var{count}
-Like @code{.SRES}, but reserves space for @code{@var{count}+1} elements.
-@end ftable
-
-@node Listings
-@section Assembly listing control
-
-The @sc{gasp} listing-control directives correspond to
-related @sc{gnu} @code{as} directives.
-
-@ftable @code
-@item .PRINT LIST
-@itemx .PRINT NOLIST
-Print control. This directive emits the @sc{gnu} @code{as} directive
-@code{.list} or @code{.nolist}, according to its argument. @xref{List,,
-@code{.list}, as.info, Using as}, for details on how these directives
-interact.
-
-@item .FORM LIN=@var{ln}
-@itemx .FORM COL=@var{cols}
-@itemx .FORM LIN=@var{ln} COL=@var{cols}
-Specify the page size for assembly listings: @var{ln} represents the
-number of lines, and @var{cols} the number of columns. You may specify
-either page dimension independently, or both together. If you do not
-specify the number of lines, @sc{gasp} assumes 60 lines; if you do not
-specify the number of columns, @sc{gasp} assumes 132 columns.
-(Any values you may have specified in previous instances of @code{.FORM}
-do @emph{not} carry over as defaults.) Emits the @code{.psize}
-assembler directive.
-
-@item .HEADING @var{string}
-Specify @var{string} as the title of your assembly listings. Emits
-@samp{.title "@var{string}"}.
-
-@item .PAGE
-Force a new page in assembly listings. Emits @samp{.eject}.
-@end ftable
-
-@node Other Commands
-@section Miscellaneous commands
-
-@ftable @code
-@item .ALTERNATE
-Use the alternate macro syntax henceforth in the assembly.
-@xref{Alternate,, Alternate macro syntax}.
-
-@item .ORG
-@c FIXME! This is very strange, since _GAS_ understands .org
-This command is recognized, but not yet implemented. @sc{gasp}
-generates an error message for programs that use @code{.ORG}.
-
-@item .RADIX @var{s}
-@c FIXME no test cases in testsuite/gasp
-@sc{gasp} understands numbers in any of base two, eight, ten, or
-sixteen. You can encode the base explicitly in any numeric constant
-(@pxref{Constants,, String and numeric constants}). If you write
-numbers without an explicit indication of the base, the most recent
-@samp{.RADIX @var{s}} command determines how they are interpreted.
-@var{s} is a single letter, one of the following:
-
-@table @code
-@item .RADIX B
-Base 2.
-
-@item .RADIX Q
-Base 8.
-
-@item .RADIX D
-Base 10. This is the original default radix.
-
-@item .RADIX H
-Base 16.
-@end table
-
-You may specify the argument @var{s} in lower case (any of @samp{bqdh})
-with the same effects.
-
-@item .EXPORT @var{name}
-@itemx .GLOBAL @var{name}
-@c FIXME! No test cases in testsuite/gasp
-Declare @var{name} global (emits @samp{.global @var{name}}). The two
-directives are synonymous.
-
-@item .PROGRAM
-No effect: @sc{gasp} accepts this directive, and silently ignores it.
-
-@item .END
-Mark end of each preprocessor file. @sc{gasp} issues a warning if it
-reaches end of file without seeing this command.
-
-@item .INCLUDE "@var{str}"
-Preprocess the file named by @var{str}, as if its contents appeared
-where the @code{.INCLUDE} directive does. @sc{gasp} imposes a maximum
-limit of 30 stacked include files, as a sanity check.
-@c FIXME! Why is include depth not affected by -u?
-
-@item .ALIGN @var{size}
-@c FIXME! Why is this not utterly pointless?
-Evaluate the absolute expression @var{size}, and emit the assembly
-instruction @samp{.align @var{size}} using the result.
-@end ftable
-
-@node Syntax Details
-@section Details of the GASP syntax
-
-Since @sc{gasp} is meant to work with assembly code, its statement
-syntax has no surprises for the assembly programmer.
-
-@cindex whitespace
-@emph{Whitespace} (blanks or tabs; @emph{not} newline) is partially
-significant, in that it delimits up to three fields in a line. The
-amount of whitespace does not matter; you may line up fields in separate
-lines if you wish, but @sc{gasp} does not require that.
-
-@cindex fields of @sc{gasp} source line
-@cindex label field
-The @emph{first field}, an optional @dfn{label}, must be flush left in a
-line (with no leading whitespace) if it appears at all. You may use a
-colon after the label if you wish; @sc{gasp} neither requires the colon
-nor objects to it (but will not include it as part of the label name).
-
-@cindex directive field
-The @emph{second field}, which must appear after some whitespace,
-contains a @sc{gasp} or assembly @dfn{directive}.
-
-@cindex argument fields
-Any @emph{further fields} on a line are @dfn{arguments} to the
-directive; you can separate them from one another using either commas or
-whitespace.
-
-@menu
-* Markers::
-* Constants::
-* Symbols::
-* Expressions::
-* String Builtins::
-@end menu
-
-@node Markers
-@subsection Special syntactic markers
-
-@sc{gasp} recognizes a few special markers: to delimit comments, to
-continue a statement on the next line, to separate symbols from other
-characters, and to copy text to the output literally. (One other
-special marker, @samp{\@@}, works only within macro definitions;
-@pxref{Macros,, Defining your own directives}.)
-
-@cindex comments
-The trailing part of any @sc{gasp} source line may be a @dfn{comment}.
-A comment begins with the first unquoted comment character (@samp{!} by
-default), or an escaped or doubled comment character (@samp{\!} or
-@samp{!!} by default), and extends to the end of a line. You can
-specify what comment character to use with the @samp{-c} option
-(@pxref{Invoking GASP,, Command Line Options}). The two kinds of
-comment markers lead to slightly different treatment:
-
-@table @code
-@item !
-A single, un-escaped comment character generates an assembly comment in
-the @sc{gasp} output. @sc{gasp} evaluates any preprocessor variables
-(macro arguments, or variables defined with @code{.ASSIGNA} or
-@code{.ASSIGNC}) present. For example, a macro that begins like this
-
-@example
- .MACRO SUM FROM=0, TO=9
- ! \FROM \TO
-@end example
-
-@noindent
-issues as the first line of output a comment that records the
-values you used to call the macro.
-
-@c comments, preprocessor-only
-@c preprocessor-only comments
-@c GASP-only comments
-@item \!
-@itemx !!
-Either an escaped comment character, or a double comment character,
-marks a @sc{gasp} source comment. @sc{gasp} does not copy such comments
-to the assembly output.
-@end table
-
-@cindex continuation character
-@kindex +
-To @emph{continue a statement} on the next line of the file, begin the
-second line with the character @samp{+}.
-
-@cindex literal copy to output
-@cindex copying literally to output
-@cindex preprocessing, avoiding
-@cindex avoiding preprocessing
-Occasionally you may want to prevent @sc{gasp} from preprocessing some
-particular bit of text. To @emph{copy literally} from the @sc{gasp}
-source to its output, place @samp{\(} before the string to copy, and
-@samp{)} at the end. For example, write @samp{\(\!)} if you need the
-characters @samp{\!} in your assembly output.
-
-@cindex symbol separator
-@cindex text, separating from symbols
-@cindex symbols, separating from text
-To @emph{separate a preprocessor variable} from text to appear
-immediately after its value, write a single quote (@code{'}). For
-example, @samp{.SDATA "\P'1"} writes a string built by concatenating the
-value of @code{P} and the digit @samp{1}. (You cannot achieve this by
-writing just @samp{\P1}, since @samp{P1} is itself a valid name for a
-preprocessor variable.)
-
-@node Constants
-@subsection String and numeric constants
-
-There are two ways of writing @dfn{string constants} in @sc{gasp}: as
-literal text, and by numeric byte value. Specify a string literal
-between double quotes (@code{"@var{str}"}). Specify an individual
-numeric byte value as an absolute expression between angle brackets
-(@code{<@var{expr}>}. Directives that output strings allow you to
-specify any number of either kind of value, in whatever order is
-convenient, and concatenate the result. (Alternate syntax mode
-introduces a number of alternative string notations; @pxref{Alternate,,
-Alternate macro syntax}.)
-
-@c Details of numeric notation, e.g. base prefixes
-You can write @dfn{numeric constants} either in a specific base, or in
-whatever base is currently selected (either 10, or selected by the most
-recent @code{.RADIX}).
-
-To write a number in a @emph{specific base}, use the pattern
-@code{@var{s}'@var{ddd}}: a base specifier character @var{s}, followed
-by a single quote followed by digits @var{ddd}. The base specifier
-character matches those you can specify with @code{.RADIX}: @samp{B} for
-base 2, @samp{Q} for base 8, @samp{D} for base 10, and @samp{H} for base
-16. (You can write this character in lower case if you prefer.)
-
-You can write floating point constants using the same syntax recognised
-by GAS @ref{Flonums,,Flonums,as,The GNU Assembler.}. A constraint is
-that these constants will be interpreted as decimal values irrespective
-of the currently selected base.
-
-@c FIXME! What are rules for recognizing number in deflt base? Whatever
-@c is left over after parsing other things??
-
-@node Symbols
-@subsection Symbols
-
-@sc{gasp} recognizes symbol names that start with any alphabetic character,
-@samp{_}, or @samp{$}, and continue with any of the same characters or
-with digits. Label names follow the same rules.
-
-@node Expressions
-@subsection Arithmetic expressions in GASP
-
-@cindex absolute expressions
-@cindex relocatable expressions
-There are two kinds of expressions, depending on their result:
-@dfn{absolute} expressions, which resolve to a constant (that is, they
-do not involve any values unknown to @sc{gasp}), and @dfn{relocatable}
-expressions, which must reduce to the form
-
-@example
-@var{addsym}+@var{const}-@var{subsym}
-@end example
-
-@noindent
-where @var{addsym} and @var{subsym} are assembly symbols of unknown
-value, and @var{const} is a constant.
-
-Arithmetic for @sc{gasp} expressions follows very similar rules to C.
-You can use parentheses to change precedence; otherwise, arithmetic
-primitives have decreasing precedence in the order of the following
-list.
-
-@enumerate
-@item
-Single-argument @code{+} (identity), @code{-} (arithmetic opposite), or
-@code{~} (bitwise negation). @emph{The argument must be an absolute
-expression.}
-
-@item
-@code{*} (multiplication) and @code{/} (division). @emph{Both arguments
-must be absolute expressions.}
-
-@item
-@code{+} (addition) and @code{-} (subtraction). @emph{At least one argument
-must be absolute.}
-@c FIXME! Actually, subtraction doesn't check for this.
-
-@item
-@code{&} (bitwise and). @emph{Both arguments must be absolute.}
-
-@item
-@c FIXME! I agree ~ is a better notation than ^ for xor, but is the
-@c improvement worth differing from C?
-@code{|} (bitwise or) and @code{~} (bitwise exclusive or; @code{^} in
-C). @emph{Both arguments must be absolute.}
-@end enumerate
-
-@node String Builtins
-@subsection String primitives
-
-You can use these primitives to manipulate strings (in the argument
-field of @sc{gasp} statements):
-
-@ftable @code
-@item .LEN("@var{str}")
-Calculate the length of string @code{"@var{str}"}, as an absolute
-expression. For example, @samp{.RES.B .LEN("sample")} reserves six
-bytes of memory.
-
-@item .INSTR("@var{string}", "@var{seg}", @var{ix})
-Search for the first occurrence of @var{seg} after position @var{ix} of
-@var{string}. For example, @samp{.INSTR("ABCDEFG", "CDE", 0)} evaluates
-to the absolute result @code{2}.
-
-The result is @code{-1} if @var{seg} does not occur in @var{string}
-after position @var{ix}.
-
-@item .SUBSTR("@var{string}",@var{start},@var{len})
-The substring of @var{string} beginning at byte number @var{start} and
-extending for @var{len} bytes.
-@end ftable
-
-@node Alternate
-@section Alternate macro syntax
-
-If you specify @samp{-a} or @samp{--alternate} on the @sc{gasp} command
-line, the preprocessor uses somewhat different syntax. This syntax is
-reminiscent of the syntax of Phar Lap macro assembler, but it
-is @emph{not} meant to be a full emulation of Phar Lap or similar
-assemblers. In particular, @sc{gasp} does not support directives such
-as @code{DB} and @code{IRP}, even in alternate syntax mode.
-
-In particular, @samp{-a} (or @samp{--alternate}) elicits these
-differences:
-
-@table @emph
-@item Preprocessor directives
-You can use @sc{gasp} preprocessor directives without a leading @samp{.}
-dot. For example, you can write @samp{SDATA} with the same effect as
-@samp{.SDATA}.
-
-@item LOCAL
-One additional directive, @code{LOCAL}, is available. @xref{Macros,,
-Defining your own directives}, for an explanation of how to use
-@code{LOCAL}.
-
-@need 2000
-@item String delimiters
-You can write strings delimited in these other ways besides
-@code{"@var{string}"}:
-
-@table @code
-@item '@var{string}'
-You can delimit strings with single-quote charaters.
-
-@item <@var{string}>
-You can delimit strings with matching angle brackets.
-@end table
-
-@item 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 @samp{!} (an exclamation mark). For example, you can
-write @samp{<4.3 !> 5.4!!>} to get the literal text @samp{4.3 > 5.4!}.
-
-@item Expression results as strings
-You can write @samp{%@var{expr}} to evaluate the expression @var{expr}
-and use the result as a string.
-@end table
-
-@node GNU Free Documentation License
-@chapter GNU Free Documentation License
-
- GNU Free Documentation License
-
- Version 1.1, March 2000
-
- Copyright (C) 2000 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- 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
-written 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 that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License. The "Document", below, refers to any
-such manual or work. Any member of the public is a licensee, and is
-addressed as "you".
-
-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. (For example, 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.
-
-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 "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-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 has been designed to thwart or discourage
-subsequent modification by readers is not Transparent. 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 designed for human modification. Opaque formats include
-PostScript, PDF, 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 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.
-
-
-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 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 publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols. 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 less than five).
-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", and 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. In any section entitled "Acknowledgements" or "Dedications",
- preserve the section's title, 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 as "Endorsements"
- or to conflict in title with any Invariant Section.
-
-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.
-
-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, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation. Such a compilation is called an "aggregate", and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-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 quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around 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 provided that you also include the
-original English version of this License. In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
-
-9. TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-
-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.
-
-
-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:
-
-@smallexample
- 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.1
- or any later version published by the Free Software Foundation;
- with the Invariant Sections being LIST THEIR TITLES, with the
- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
- A copy of the license is included in the section entitled "GNU
- Free Documentation License".
-@end smallexample
-
-If you have no Invariant Sections, write "with no Invariant Sections"
-instead of saying which ones are invariant. If you have no
-Front-Cover Texts, write "no Front-Cover Texts" instead of
-"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
-
-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.
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
diff --git a/contrib/binutils/gas/gasp.c b/contrib/binutils/gas/gasp.c
deleted file mode 100644
index d1e41850486b..000000000000
--- a/contrib/binutils/gas/gasp.c
+++ /dev/null
@@ -1,3761 +0,0 @@
-/* gasp.c - Gnu assembler preprocessor main program.
- Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
- Free Software Foundation, Inc.
-
- Written by Steve and Judy Chamberlain of Cygnus Support,
- sac@cygnus.com
-
- This file is part of GASP, the GNU Assembler Preprocessor.
-
- GASP is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- GASP 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 GASP; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-/*
-This program translates the input macros and stuff into a form
-suitable for gas to consume.
-
- gasp [-sdhau] [-c char] [-o <outfile>] <infile>*
-
- -s copy source to output
- -c <char> comments are started with <char> instead of !
- -u allow unreasonable stuff
- -p print line numbers
- -d print debugging stats
- -s semi colons start comments
- -a use alternate syntax
- Pseudo ops can start with or without a .
- Labels have to be in first column.
- -I specify include dir
- Macro arg parameters subsituted by name, don't need the &.
- String can start with ' too.
- Strings can be surrounded by <..>
- A %<exp> in a string evaluates the expression
- Literal char in a string with !
-*/
-
-#include "config.h"
-#include "bin-bugs.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-#include "getopt.h"
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef NEED_MALLOC_DECLARATION
-extern char *malloc ();
-#endif
-
-#include "ansidecl.h"
-#include "libiberty.h"
-#include "safe-ctype.h"
-#include "sb.h"
-#include "macro.h"
-#include "asintl.h"
-#include "xregex.h"
-
-char *program_version = "1.2";
-
-/* This is normally declared in as.h, but we don't include that. We
- need the function because other files linked with gasp.c might call
- it. */
-extern void as_abort PARAMS ((const char *, int, const char *));
-
-/* The default obstack chunk size. If we set this to zero, the
- obstack code will use whatever will fit in a 4096 byte block. This
- is used by the hash table code used by macro.c. */
-int chunksize = 0;
-
-#define MAX_INCLUDES 30 /* Maximum include depth. */
-#define MAX_REASONABLE 1000 /* Maximum number of expansions. */
-
-int unreasonable; /* -u on command line. */
-int stats; /* -d on command line. */
-int print_line_number; /* -p flag on command line. */
-int copysource; /* -c flag on command line. */
-int warnings; /* Number of WARNINGs generated so far. */
-int errors; /* Number of ERRORs generated so far. */
-int fatals; /* Number of fatal ERRORs generated so far (either 0 or 1). */
-int alternate = 0; /* -a on command line. */
-int mri = 0; /* -M on command line. */
-char comment_char = '!';
-int radix = 10; /* Default radix. */
-
-int had_end; /* Seen .END. */
-
-/* The output stream. */
-FILE *outfile;
-
-/* The attributes of each character are stored as a bit pattern
- chartype, which gives us quick tests. */
-
-#define FIRSTBIT 1
-#define NEXTBIT 2
-#define SEPBIT 4
-#define WHITEBIT 8
-#define COMMENTBIT 16
-#define BASEBIT 32
-#define ISCOMMENTCHAR(x) (chartype[(unsigned char)(x)] & COMMENTBIT)
-#define ISFIRSTCHAR(x) (chartype[(unsigned char)(x)] & FIRSTBIT)
-#define ISNEXTCHAR(x) (chartype[(unsigned char)(x)] & NEXTBIT)
-#define ISSEP(x) (chartype[(unsigned char)(x)] & SEPBIT)
-#define ISWHITE(x) (chartype[(unsigned char)(x)] & WHITEBIT)
-#define ISBASE(x) (chartype[(unsigned char)(x)] & BASEBIT)
-static char chartype[256];
-
-/* Conditional assembly uses the `ifstack'. Each aif pushes another
- entry onto the stack, and sets the on flag if it should. The aelse
- sets hadelse, and toggles on. An aend pops a level. We limit to
- 100 levels of nesting, not because we're facists pigs with read
- only minds, but because more than 100 levels of nesting is probably
- a bug in the user's macro structure. */
-
-#define IFNESTING 100
-struct {
- int on; /* Is the level being output. */
- int hadelse; /* Has an aelse been seen. */
-} ifstack[IFNESTING];
-
-int ifi;
-
-/* The final and intermediate results of expression evaluation are kept in
- exp_t's. Note that a symbol is not an sb, but a pointer into the input
- line. It must be coped somewhere safe before the next line is read in. */
-
-typedef struct {
- char *name;
- int len;
-} symbol;
-
-typedef struct {
- int value; /* Constant part. */
- symbol add_symbol; /* Name part. */
- symbol sub_symbol; /* Name part. */
-} exp_t;
-
-/* Hashing is done in a pretty standard way. A hash_table has a
- pointer to a vector of pointers to hash_entrys, and the size of the
- vector. A hash_entry contains a union of all the info we like to
- store in hash table. If there is a hash collision, hash_entries
- with the same hash are kept in a chain. */
-
-/* What the data in a hash_entry means. */
-typedef enum {
- hash_integer, /* Name->integer mapping. */
- hash_string, /* Name->string mapping. */
- hash_macro, /* Name is a macro. */
- hash_formal /* Name is a formal argument. */
-} hash_type;
-
-typedef struct hs {
- sb key; /* Symbol name. */
- hash_type type; /* Symbol meaning. */
- union {
- sb s;
- int i;
- struct macro_struct *m;
- struct formal_struct *f;
- } value;
- struct hs *next; /* Next hash_entry with same hash key. */
-} hash_entry;
-
-typedef struct {
- hash_entry **table;
- int size;
-} hash_table;
-
-/* How we nest files and expand macros etc.
-
- We keep a stack of of include_stack structs. Each include file
- pushes a new level onto the stack. We keep an sb with a pushback
- too. unget chars are pushed onto the pushback sb, getchars first
- checks the pushback sb before reading from the input stream.
-
- Small things are expanded by adding the text of the item onto the
- pushback sb. Larger items are grown by pushing a new level and
- allocating the entire pushback buf for the item. Each time
- something like a macro is expanded, the stack index is changed. We
- can then perform an exitm by popping all entries off the stack with
- the same stack index. If we're being reasonable, we can detect
- recusive expansion by checking the index is reasonably small. */
-
-typedef enum {
- include_file, include_repeat, include_while, include_macro
-} include_type;
-
-struct include_stack {
- sb pushback; /* Current pushback stream. */
- int pushback_index; /* Next char to read from stream. */
- FILE *handle; /* Open file. */
- sb name; /* Name of file. */
- int linecount; /* Number of lines read so far. */
- include_type type;
- int index; /* Index of this layer. */
-} include_stack[MAX_INCLUDES];
-
-struct include_stack *sp;
-#define isp (sp - include_stack)
-
-/* Include file list. */
-
-typedef struct include_path {
- struct include_path *next;
- sb path;
-} include_path;
-
-include_path *paths_head;
-include_path *paths_tail;
-
-static void quit PARAMS ((void));
-static void hash_new_table PARAMS ((int, hash_table *));
-static int hash PARAMS ((sb *));
-static hash_entry *hash_create PARAMS ((hash_table *, sb *));
-static void hash_add_to_string_table PARAMS ((hash_table *, sb *, sb *, int));
-static void hash_add_to_int_table PARAMS ((hash_table *, sb *, int));
-static hash_entry *hash_lookup PARAMS ((hash_table *, sb *));
-static void checkconst PARAMS ((int, exp_t *));
-static int is_flonum PARAMS ((int, sb *));
-static int chew_flonum PARAMS ((int, sb *, sb *));
-static int sb_strtol PARAMS ((int, sb *, int, int *));
-static int level_0 PARAMS ((int, sb *, exp_t *));
-static int level_1 PARAMS ((int, sb *, exp_t *));
-static int level_2 PARAMS ((int, sb *, exp_t *));
-static int level_3 PARAMS ((int, sb *, exp_t *));
-static int level_4 PARAMS ((int, sb *, exp_t *));
-static int level_5 PARAMS ((int, sb *, exp_t *));
-static int exp_parse PARAMS ((int, sb *, exp_t *));
-static void exp_string PARAMS ((exp_t *, sb *));
-static int exp_get_abs PARAMS ((const char *, int, sb *, int *));
-#if 0
-static void strip_comments PARAMS ((sb *));
-#endif
-static void unget PARAMS ((int));
-static void include_buf PARAMS ((sb *, sb *, include_type, int));
-static void include_print_where_line PARAMS ((FILE *));
-static void include_print_line PARAMS ((FILE *));
-static int get_line PARAMS ((sb *));
-static int grab_label PARAMS ((sb *, sb *));
-static void change_base PARAMS ((int, sb *, sb *));
-static void do_end PARAMS ((sb *));
-static void do_assign PARAMS ((int, int, sb *));
-static void do_radix PARAMS ((sb *));
-static int get_opsize PARAMS ((int, sb *, int *));
-static int eol PARAMS ((int, sb *));
-static void do_data PARAMS ((int, sb *, int));
-static void do_datab PARAMS ((int, sb *));
-static void do_align PARAMS ((int, sb *));
-static void do_res PARAMS ((int, sb *, int));
-static void do_export PARAMS ((sb *));
-static void do_print PARAMS ((int, sb *));
-static void do_heading PARAMS ((int, sb *));
-static void do_page PARAMS ((void));
-static void do_form PARAMS ((int, sb *));
-static int get_any_string PARAMS ((int, sb *, sb *, int, int));
-static int skip_openp PARAMS ((int, sb *));
-static int skip_closep PARAMS ((int, sb *));
-static int dolen PARAMS ((int, sb *, sb *));
-static int doinstr PARAMS ((int, sb *, sb *));
-static int dosubstr PARAMS ((int, sb *, sb *));
-static void process_assigns PARAMS ((int, sb *, sb *));
-static int get_and_process PARAMS ((int, sb *, sb *));
-static void process_file PARAMS ((void));
-static void free_old_entry PARAMS ((hash_entry *));
-static void do_assigna PARAMS ((int, sb *));
-static void do_assignc PARAMS ((int, sb *));
-static void do_reg PARAMS ((int, sb *));
-static int condass_lookup_name PARAMS ((sb *, int, sb *, int));
-static int whatcond PARAMS ((int, sb *, int *));
-static int istrue PARAMS ((int, sb *));
-static void do_aif PARAMS ((int, sb *));
-static void do_aelse PARAMS ((void));
-static void do_aendi PARAMS ((void));
-static int condass_on PARAMS ((void));
-static void do_if PARAMS ((int, sb *, int));
-static int get_mri_string PARAMS ((int, sb *, sb *, int));
-static void do_ifc PARAMS ((int, sb *, int));
-static void do_aendr PARAMS ((void));
-static void do_awhile PARAMS ((int, sb *));
-static void do_aendw PARAMS ((void));
-static void do_exitm PARAMS ((void));
-static void do_arepeat PARAMS ((int, sb *));
-static void do_endm PARAMS ((void));
-static void do_irp PARAMS ((int, sb *, int));
-static void do_local PARAMS ((int, sb *));
-static void do_macro PARAMS ((int, sb *));
-static int macro_op PARAMS ((int, sb *));
-static int getstring PARAMS ((int, sb *, sb *));
-static void do_sdata PARAMS ((int, sb *, int));
-static void do_sdatab PARAMS ((int, sb *));
-static int new_file PARAMS ((const char *));
-static void do_include PARAMS ((int, sb *));
-static void include_pop PARAMS ((void));
-static int get PARAMS ((void));
-static int linecount PARAMS ((void));
-static int include_next_index PARAMS ((void));
-static void chartype_init PARAMS ((void));
-static int process_pseudo_op PARAMS ((int, sb *, sb *));
-static void add_keyword PARAMS ((const char *, int));
-static void process_init PARAMS ((void));
-static void do_define PARAMS ((const char *));
-static void show_usage PARAMS ((FILE *, int));
-static void show_help PARAMS ((void));
-
-#define FATAL(x) \
- do \
- { \
- include_print_where_line (stderr); \
- fprintf x; \
- fatals++; \
- quit (); \
- } \
- while (0)
-
-#define ERROR(x) \
- do \
- { \
- include_print_where_line (stderr); \
- fprintf x; \
- errors++; \
- } \
- while (0)
-
-#define WARNING(x) \
- do \
- { \
- include_print_where_line (stderr); \
- fprintf x; \
- warnings++; \
- } \
- while (0)
-
-/* Exit the program and return the right ERROR code. */
-
-static void
-quit ()
-{
- int exitcode;
- if (fatals + errors)
- exitcode = 1;
- else
- exitcode = 0;
-
- if (stats)
- {
- int i;
- for (i = 0; i < sb_max_power_two; i++)
- {
- fprintf (stderr, "strings size %8d : %d\n",
- 1 << i, string_count[i]);
- }
- }
- exit (exitcode);
-}
-
-/* Hash table maintenance. */
-
-/* Build a new hash table with size buckets
- and fill in the info at ptr. */
-
-static void
-hash_new_table (size, ptr)
- int size;
- hash_table *ptr;
-{
- int i;
- ptr->size = size;
- ptr->table = (hash_entry **) xmalloc (size * (sizeof (hash_entry *)));
- /* Fill with null-pointer, not zero-bit-pattern. */
- for (i = 0; i < size; i++)
- ptr->table[i] = 0;
-}
-
-/* Calculate and return the hash value of the sb at key. */
-
-static int
-hash (key)
- sb *key;
-{
- int k = 0x1234;
- int i;
- char *p = key->ptr;
- for (i = 0; i < key->len; i++)
- {
- k ^= (k << 2) ^ *p;
- p++;
- }
- return k & 0xf0fff;
-}
-
-/* Look up key in hash_table tab. If present, then return it,
- otherwise build a new one and fill it with hash_integer. */
-
-static hash_entry *
-hash_create (tab, key)
- hash_table *tab;
- sb *key;
-{
- int k = hash (key) % tab->size;
- hash_entry *p;
- hash_entry **table = tab->table;
-
- p = table[k];
-
- while (1)
- {
- if (!p)
- {
- hash_entry *n = (hash_entry *) xmalloc (sizeof (hash_entry));
- n->next = table[k];
- sb_new (&n->key);
- sb_add_sb (&n->key, key);
- table[k] = n;
- n->type = hash_integer;
- return n;
- }
- if (strncmp (table[k]->key.ptr, key->ptr, key->len) == 0)
- {
- return p;
- }
- p = p->next;
- }
-}
-
-/* Add sb name with key into hash_table tab.
- If replacing old value and again, then ERROR. */
-
-static void
-hash_add_to_string_table (tab, key, name, again)
- hash_table *tab;
- sb *key;
- sb *name;
- int again;
-{
- hash_entry *ptr = hash_create (tab, key);
- if (ptr->type == hash_integer)
- {
- sb_new (&ptr->value.s);
- }
- if (ptr->value.s.len)
- {
- if (!again)
- ERROR ((stderr, _("redefinition not allowed\n")));
- }
-
- ptr->type = hash_string;
- sb_reset (&ptr->value.s);
-
- sb_add_sb (&ptr->value.s, name);
-}
-
-/* Add integer name to hash_table tab with sb key. */
-
-static void
-hash_add_to_int_table (tab, key, name)
- hash_table *tab;
- sb *key;
- int name;
-{
- hash_entry *ptr = hash_create (tab, key);
- ptr->value.i = name;
-}
-
-/* Look up sb key in hash_table tab.
- If found, return hash_entry result, else 0. */
-
-static hash_entry *
-hash_lookup (tab, key)
- hash_table *tab;
- sb *key;
-{
- int k = hash (key) % tab->size;
- hash_entry **table = tab->table;
- hash_entry *p = table[k];
- while (p)
- {
- if (p->key.len == key->len
- && strncmp (p->key.ptr, key->ptr, key->len) == 0)
- return p;
- p = p->next;
- }
- return 0;
-}
-
-/* expressions
-
- are handled in a really simple recursive decent way. each bit of
- the machine takes an index into an sb and a pointer to an exp_t,
- modifies the *exp_t and returns the index of the first character
- past the part of the expression parsed.
-
- expression precedence:
- ( )
- unary + - ~
- * /
- + -
- &
- | ~
-*/
-
-/* Make sure that the exp_t at term is constant.
- If not the give the op ERROR. */
-
-static void
-checkconst (op, term)
- int op;
- exp_t *term;
-{
- if (term->add_symbol.len
- || term->sub_symbol.len)
- {
- ERROR ((stderr, _("the %c operator cannot take non-absolute arguments.\n"), op));
- }
-}
-
-/* Chew the flonum from the string starting at idx. Adjust idx to
- point to the next character after the flonum. */
-
-static int
-chew_flonum (idx, string, out)
- int idx;
- sb *string;
- sb *out;
-{
- sb buf;
- regex_t reg;
- regmatch_t match;
-
- /* Duplicate and null terminate `string'. */
- sb_new (&buf);
- sb_add_sb (&buf, string);
- sb_add_char (&buf, '\0');
-
- if (regcomp (&reg, "([0-9]*\\.[0-9]+([eE][+-]?[0-9]+)?)", REG_EXTENDED) != 0)
- return idx;
- if (regexec (&reg, &buf.ptr[idx], 1, &match, 0) != 0)
- return idx;
-
- /* Copy the match to the output. */
- assert (match.rm_eo >= match.rm_so);
- sb_add_buffer (out, &buf.ptr[idx], match.rm_eo - match.rm_so);
-
- sb_kill (&buf);
- regfree (&reg);
- idx += match.rm_eo;
- return idx;
-}
-
-static int
-is_flonum (idx, string)
- int idx;
- sb *string;
-{
- sb buf;
- regex_t reg;
- int rc;
-
- /* Duplicate and null terminate `string'. */
- sb_new (&buf);
- sb_add_sb (&buf, string);
- sb_add_char (&buf, '\0');
-
- if (regcomp (&reg, "^[0-9]*\\.[0-9]+([eE][+-]?[0-9]+)?", REG_EXTENDED) != 0)
- return 0;
-
- rc = regexec (&reg, &buf.ptr[idx], 0, NULL, 0);
- sb_kill (&buf);
- regfree (&reg);
- return (rc == 0);
-}
-
-/* Turn the number in string at idx into a number of base, fill in
- ptr, and return the index of the first character not in the number. */
-
-static int
-sb_strtol (idx, string, base, ptr)
- int idx;
- sb *string;
- int base;
- int *ptr;
-{
- int value = 0;
- idx = sb_skip_white (idx, string);
-
- while (idx < string->len)
- {
- int ch = string->ptr[idx];
- int dig = 0;
- if (ISDIGIT (ch))
- dig = ch - '0';
- else if (ch >= 'a' && ch <= 'f')
- dig = ch - 'a' + 10;
- else if (ch >= 'A' && ch <= 'F')
- dig = ch - 'A' + 10;
- else
- break;
-
- if (dig >= base)
- break;
-
- value = value * base + dig;
- idx++;
- }
- *ptr = value;
- return idx;
-}
-
-static int
-level_0 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- lhs->add_symbol.len = 0;
- lhs->add_symbol.name = 0;
-
- lhs->sub_symbol.len = 0;
- lhs->sub_symbol.name = 0;
-
- idx = sb_skip_white (idx, string);
-
- lhs->value = 0;
-
- if (ISDIGIT (string->ptr[idx]))
- {
- idx = sb_strtol (idx, string, 10, &lhs->value);
- }
- else if (ISFIRSTCHAR (string->ptr[idx]))
- {
- int len = 0;
- lhs->add_symbol.name = string->ptr + idx;
- while (idx < string->len && ISNEXTCHAR (string->ptr[idx]))
- {
- idx++;
- len++;
- }
- lhs->add_symbol.len = len;
- }
- else if (string->ptr[idx] == '"')
- {
- sb acc;
- sb_new (&acc);
- ERROR ((stderr, _("string where expression expected.\n")));
- idx = getstring (idx, string, &acc);
- sb_kill (&acc);
- }
- else
- {
- ERROR ((stderr, _("can't find primary in expression.\n")));
- idx++;
- }
- return sb_skip_white (idx, string);
-}
-
-static int
-level_1 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- idx = sb_skip_white (idx, string);
-
- switch (string->ptr[idx])
- {
- case '+':
- idx = level_1 (idx + 1, string, lhs);
- break;
- case '~':
- idx = level_1 (idx + 1, string, lhs);
- checkconst ('~', lhs);
- lhs->value = ~lhs->value;
- break;
- case '-':
- {
- symbol t;
- idx = level_1 (idx + 1, string, lhs);
- lhs->value = -lhs->value;
- t = lhs->add_symbol;
- lhs->add_symbol = lhs->sub_symbol;
- lhs->sub_symbol = t;
- break;
- }
- case '(':
- idx++;
- idx = level_5 (sb_skip_white (idx, string), string, lhs);
- if (string->ptr[idx] != ')')
- ERROR ((stderr, _("misplaced closing parens.\n")));
- else
- idx++;
- break;
- default:
- idx = level_0 (idx, string, lhs);
- break;
- }
- return sb_skip_white (idx, string);
-}
-
-static int
-level_2 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- exp_t rhs;
-
- idx = level_1 (idx, string, lhs);
-
- while (idx < string->len && (string->ptr[idx] == '*'
- || string->ptr[idx] == '/'))
- {
- char op = string->ptr[idx++];
- idx = level_1 (idx, string, &rhs);
- switch (op)
- {
- case '*':
- checkconst ('*', lhs);
- checkconst ('*', &rhs);
- lhs->value *= rhs.value;
- break;
- case '/':
- checkconst ('/', lhs);
- checkconst ('/', &rhs);
- if (rhs.value == 0)
- ERROR ((stderr, _("attempt to divide by zero.\n")));
- else
- lhs->value /= rhs.value;
- break;
- }
- }
- return sb_skip_white (idx, string);
-}
-
-static int
-level_3 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- exp_t rhs;
-
- idx = level_2 (idx, string, lhs);
-
- while (idx < string->len
- && (string->ptr[idx] == '+'
- || string->ptr[idx] == '-'))
- {
- char op = string->ptr[idx++];
- idx = level_2 (idx, string, &rhs);
- switch (op)
- {
- case '+':
- lhs->value += rhs.value;
- if (lhs->add_symbol.name && rhs.add_symbol.name)
- {
- ERROR ((stderr, _("can't add two relocatable expressions\n")));
- }
- /* Change nn+symbol to symbol + nn. */
- if (rhs.add_symbol.name)
- {
- lhs->add_symbol = rhs.add_symbol;
- }
- break;
- case '-':
- lhs->value -= rhs.value;
- lhs->sub_symbol = rhs.add_symbol;
- break;
- }
- }
- return sb_skip_white (idx, string);
-}
-
-static int
-level_4 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- exp_t rhs;
-
- idx = level_3 (idx, string, lhs);
-
- while (idx < string->len &&
- string->ptr[idx] == '&')
- {
- char op = string->ptr[idx++];
- idx = level_3 (idx, string, &rhs);
- switch (op)
- {
- case '&':
- checkconst ('&', lhs);
- checkconst ('&', &rhs);
- lhs->value &= rhs.value;
- break;
- }
- }
- return sb_skip_white (idx, string);
-}
-
-static int
-level_5 (idx, string, lhs)
- int idx;
- sb *string;
- exp_t *lhs;
-{
- exp_t rhs;
-
- idx = level_4 (idx, string, lhs);
-
- while (idx < string->len
- && (string->ptr[idx] == '|' || string->ptr[idx] == '~'))
- {
- char op = string->ptr[idx++];
- idx = level_4 (idx, string, &rhs);
- switch (op)
- {
- case '|':
- checkconst ('|', lhs);
- checkconst ('|', &rhs);
- lhs->value |= rhs.value;
- break;
- case '~':
- checkconst ('~', lhs);
- checkconst ('~', &rhs);
- lhs->value ^= rhs.value;
- break;
- }
- }
- return sb_skip_white (idx, string);
-}
-
-/* Parse the expression at offset idx into string, fill up res with
- the result. Return the index of the first char past the
- expression. */
-
-static int
-exp_parse (idx, string, res)
- int idx;
- sb *string;
- exp_t *res;
-{
- return level_5 (sb_skip_white (idx, string), string, res);
-}
-
-/* Turn the expression at exp into text and glue it onto the end of
- string. */
-
-static void
-exp_string (exp, string)
- exp_t *exp;
- sb *string;
-{
- int np = 0;
- int ad = 0;
- sb_reset (string);
-
- if (exp->add_symbol.len)
- {
- sb_add_buffer (string, exp->add_symbol.name, exp->add_symbol.len);
- np = 1;
- ad = 1;
- }
- if (exp->value)
- {
- char buf[20];
- if (np)
- sb_add_char (string, '+');
- sprintf (buf, "%d", exp->value);
- sb_add_string (string, buf);
- np = 1;
- ad = 1;
- }
- if (exp->sub_symbol.len)
- {
- sb_add_char (string, '-');
- sb_add_buffer (string, exp->add_symbol.name, exp->add_symbol.len);
- np = 0;
- ad = 1;
- }
-
- if (!ad)
- sb_add_char (string, '0');
-}
-
-/* Parse the expression at offset idx into sb in. Return the value in
- val. If the expression is not constant, give ERROR emsg. Return
- the index of the first character past the end of the expression. */
-
-static int
-exp_get_abs (emsg, idx, in, val)
- const char *emsg;
- int idx;
- sb *in;
- int *val;
-{
- exp_t res;
- idx = exp_parse (idx, in, &res);
- if (res.add_symbol.len || res.sub_symbol.len)
- ERROR ((stderr, "%s", emsg));
- *val = res.value;
- return idx;
-}
-
-/* Current label parsed from line. */
-sb label;
-
-/* Hash table for all assigned variables. */
-hash_table assign_hash_table;
-
-/* Hash table for keyword. */
-hash_table keyword_hash_table;
-
-/* Hash table for eq variables. */
-hash_table vars;
-
-#define in_comment ';'
-
-#if 0
-static void
-strip_comments (out)
- sb *out;
-{
- char *s = out->ptr;
- int i = 0;
- for (i = 0; i < out->len; i++)
- {
- if (ISCOMMENTCHAR (s[i]))
- {
- out->len = i;
- return;
- }
- }
-}
-#endif
-
-/* Push back character ch so that it can be read again. */
-
-static void
-unget (ch)
- int ch;
-{
- if (ch == '\n')
- {
- sp->linecount--;
- }
- if (sp->pushback_index)
- sp->pushback_index--;
- else
- sb_add_char (&sp->pushback, ch);
-}
-
-/* Push the sb ptr onto the include stack, with the given name, type
- and index. */
-
-static void
-include_buf (name, ptr, type, index)
- sb *name;
- sb *ptr;
- include_type type;
- int index;
-{
- sp++;
- if (sp - include_stack >= MAX_INCLUDES)
- FATAL ((stderr, _("unreasonable nesting.\n")));
- sb_new (&sp->name);
- sb_add_sb (&sp->name, name);
- sp->handle = 0;
- sp->linecount = 1;
- sp->pushback_index = 0;
- sp->type = type;
- sp->index = index;
- sb_new (&sp->pushback);
- sb_add_sb (&sp->pushback, ptr);
-}
-
-/* Used in ERROR messages, print info on where the include stack is
- onto file. */
-
-static void
-include_print_where_line (file)
- FILE *file;
-{
- struct include_stack *p = include_stack + 1;
-
- while (p <= sp)
- {
- fprintf (file, "%s:%d ", sb_name (&p->name), p->linecount - 1);
- p++;
- }
-}
-
-/* Used in listings, print the line number onto file. */
-
-static void
-include_print_line (file)
- FILE *file;
-{
- int n;
- struct include_stack *p = include_stack + 1;
-
- n = fprintf (file, "%4d", p->linecount);
- p++;
- while (p <= sp)
- {
- n += fprintf (file, ".%d", p->linecount);
- p++;
- }
- while (n < 8 * 3)
- {
- fprintf (file, " ");
- n++;
- }
-}
-
-/* Read a line from the top of the include stack into sb in. */
-
-static int
-get_line (in)
- sb *in;
-{
- int online = 0;
- int more = 1;
-
- if (copysource)
- {
- putc (comment_char, outfile);
- if (print_line_number)
- include_print_line (outfile);
- }
-
- while (1)
- {
- int ch = get ();
-
- while (ch == '\r')
- ch = get ();
-
- if (ch == EOF)
- {
- if (online)
- {
- WARNING ((stderr, _("End of file not at start of line.\n")));
- if (copysource)
- putc ('\n', outfile);
- ch = '\n';
- }
- else
- more = 0;
- break;
- }
-
- if (copysource)
- {
- putc (ch, outfile);
- }
-
- if (ch == '\n')
- {
- ch = get ();
- online = 0;
- if (ch == '+')
- {
- /* Continued line. */
- if (copysource)
- {
- putc (comment_char, outfile);
- putc ('+', outfile);
- }
- ch = get ();
- }
- else
- {
- if (ch != EOF)
- unget (ch);
- break;
- }
- }
- else
- {
- sb_add_char (in, ch);
- }
- online++;
- }
-
- return more;
-}
-
-/* Find a label from sb in and put it in out. */
-
-static int
-grab_label (in, out)
- sb *in;
- sb *out;
-{
- int i = 0;
- sb_reset (out);
- if (ISFIRSTCHAR (in->ptr[i]) || in->ptr[i] == '\\')
- {
- sb_add_char (out, in->ptr[i]);
- i++;
- while ((ISNEXTCHAR (in->ptr[i])
- || in->ptr[i] == '\\'
- || in->ptr[i] == '&')
- && i < in->len)
- {
- sb_add_char (out, in->ptr[i]);
- i++;
- }
- }
- return i;
-}
-
-/* Find all strange base stuff and turn into decimal. Also
- find all the other numbers and convert them from the default radix. */
-
-static void
-change_base (idx, in, out)
- int idx;
- sb *in;
- sb *out;
-{
- char buffer[20];
-
- while (idx < in->len)
- {
- if (in->ptr[idx] == '\\'
- && idx + 1 < in->len
- && in->ptr[idx + 1] == '(')
- {
- idx += 2;
- while (idx < in->len
- && in->ptr[idx] != ')')
- {
- sb_add_char (out, in->ptr[idx]);
- idx++;
- }
- if (idx < in->len)
- idx++;
- }
- else if (idx < in->len - 1 && in->ptr[idx + 1] == '\'' && ! mri)
- {
- int base;
- int value;
- switch (in->ptr[idx])
- {
- case 'b':
- case 'B':
- base = 2;
- break;
- case 'q':
- case 'Q':
- base = 8;
- break;
- case 'h':
- case 'H':
- base = 16;
- break;
- case 'd':
- case 'D':
- base = 10;
- break;
- default:
- ERROR ((stderr, _("Illegal base character %c.\n"), in->ptr[idx]));
- base = 10;
- break;
- }
-
- idx = sb_strtol (idx + 2, in, base, &value);
- sprintf (buffer, "%d", value);
- sb_add_string (out, buffer);
- }
- else if (ISFIRSTCHAR (in->ptr[idx]))
- {
- /* Copy entire names through quickly. */
- sb_add_char (out, in->ptr[idx]);
- idx++;
- while (idx < in->len && ISNEXTCHAR (in->ptr[idx]))
- {
- sb_add_char (out, in->ptr[idx]);
- idx++;
- }
- }
- else if (is_flonum (idx, in))
- {
- idx = chew_flonum (idx, in, out);
- }
- else if (ISDIGIT (in->ptr[idx]))
- {
- int value;
- /* All numbers must start with a digit, let's chew it and
- spit out decimal. */
- idx = sb_strtol (idx, in, radix, &value);
- sprintf (buffer, "%d", value);
- sb_add_string (out, buffer);
-
- /* Skip all undigsested letters. */
- while (idx < in->len && ISNEXTCHAR (in->ptr[idx]))
- {
- sb_add_char (out, in->ptr[idx]);
- idx++;
- }
- }
- else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
- {
- char tchar = in->ptr[idx];
- /* Copy entire names through quickly. */
- sb_add_char (out, in->ptr[idx]);
- idx++;
- while (idx < in->len && in->ptr[idx] != tchar)
- {
- sb_add_char (out, in->ptr[idx]);
- idx++;
- }
- }
- else
- {
- /* Nothing special, just pass it through. */
- sb_add_char (out, in->ptr[idx]);
- idx++;
- }
- }
-
-}
-
-/* .end */
-
-static void
-do_end (in)
- sb *in;
-{
- had_end = 1;
- if (mri)
- fprintf (outfile, "%s\n", sb_name (in));
-}
-
-/* .assign */
-
-static void
-do_assign (again, idx, in)
- int again;
- int idx;
- sb *in;
-{
- /* Stick label in symbol table with following value. */
- exp_t e;
- sb acc;
-
- sb_new (&acc);
- idx = exp_parse (idx, in, &e);
- exp_string (&e, &acc);
- hash_add_to_string_table (&assign_hash_table, &label, &acc, again);
- sb_kill (&acc);
-}
-
-/* .radix [b|q|d|h] */
-
-static void
-do_radix (ptr)
- sb *ptr;
-{
- int idx = sb_skip_white (0, ptr);
- switch (ptr->ptr[idx])
- {
- case 'B':
- case 'b':
- radix = 2;
- break;
- case 'q':
- case 'Q':
- radix = 8;
- break;
- case 'd':
- case 'D':
- radix = 10;
- break;
- case 'h':
- case 'H':
- radix = 16;
- break;
- default:
- ERROR ((stderr, _("radix is %c must be one of b, q, d or h"), radix));
- }
-}
-
-/* Parse off a .b, .w or .l. */
-
-static int
-get_opsize (idx, in, size)
- int idx;
- sb *in;
- int *size;
-{
- *size = 4;
- if (in->ptr[idx] == '.')
- {
- idx++;
- }
- switch (in->ptr[idx])
- {
- case 'b':
- case 'B':
- *size = 1;
- break;
- case 'w':
- case 'W':
- *size = 2;
- break;
- case 'l':
- case 'L':
- *size = 4;
- break;
- case ' ':
- case '\t':
- break;
- default:
- ERROR ((stderr, _("size must be one of b, w or l, is %c.\n"), in->ptr[idx]));
- break;
- }
- idx++;
-
- return idx;
-}
-
-static int
-eol (idx, line)
- int idx;
- sb *line;
-{
- idx = sb_skip_white (idx, line);
- if (idx < line->len
- && ISCOMMENTCHAR(line->ptr[idx]))
- return 1;
- if (idx >= line->len)
- return 1;
- return 0;
-}
-
-/* .data [.b|.w|.l] <data>*
- or d[bwl] <data>* */
-
-static void
-do_data (idx, in, size)
- int idx;
- sb *in;
- int size;
-{
- int opsize = 4;
- char *opname = ".yikes!";
- sb acc;
- sb_new (&acc);
-
- if (!size)
- {
- idx = get_opsize (idx, in, &opsize);
- }
- else
- {
- opsize = size;
- }
- switch (opsize)
- {
- case 4:
- opname = ".long";
- break;
- case 2:
- opname = ".short";
- break;
- case 1:
- opname = ".byte";
- break;
- }
-
- fprintf (outfile, "%s\t", opname);
-
- idx = sb_skip_white (idx, in);
-
- if (alternate
- && idx < in->len
- && in->ptr[idx] == '"')
- {
- int i;
- idx = getstring (idx, in, &acc);
- for (i = 0; i < acc.len; i++)
- {
- if (i)
- fprintf (outfile, ",");
- fprintf (outfile, "%d", acc.ptr[i]);
- }
- }
- else
- {
- while (!eol (idx, in))
- {
- exp_t e;
- idx = exp_parse (idx, in, &e);
- exp_string (&e, &acc);
- sb_add_char (&acc, 0);
- fprintf (outfile, "%s", acc.ptr);
- if (idx < in->len && in->ptr[idx] == ',')
- {
- fprintf (outfile, ",");
- idx++;
- }
- }
- }
- sb_kill (&acc);
- sb_print_at (outfile, idx, in);
- fprintf (outfile, "\n");
-}
-
-/* .datab [.b|.w|.l] <repeat>,<fill> */
-
-static void
-do_datab (idx, in)
- int idx;
- sb *in;
-{
- int opsize;
- int repeat;
- int fill;
-
- idx = get_opsize (idx, in, &opsize);
-
- idx = exp_get_abs (_("datab repeat must be constant.\n"), idx, in, &repeat);
- idx = sb_skip_comma (idx, in);
- idx = exp_get_abs (_("datab data must be absolute.\n"), idx, in, &fill);
-
- fprintf (outfile, ".fill\t%d,%d,%d\n", repeat, opsize, fill);
-}
-
-/* .align <size> */
-
-static void
-do_align (idx, in)
- int idx;
- sb *in;
-{
- int al, have_fill, fill;
-
- idx = exp_get_abs (_("align needs absolute expression.\n"), idx, in, &al);
- idx = sb_skip_white (idx, in);
- have_fill = 0;
- fill = 0;
- if (! eol (idx, in))
- {
- idx = sb_skip_comma (idx, in);
- idx = exp_get_abs (_(".align needs absolute fill value.\n"), idx, in,
- &fill);
- have_fill = 1;
- }
-
- fprintf (outfile, ".align %d", al);
- if (have_fill)
- fprintf (outfile, ",%d", fill);
- fprintf (outfile, "\n");
-}
-
-/* .res[.b|.w|.l] <size> */
-
-static void
-do_res (idx, in, type)
- int idx;
- sb *in;
- int type;
-{
- int size = 4;
- int count = 0;
-
- idx = get_opsize (idx, in, &size);
- while (!eol (idx, in))
- {
- idx = sb_skip_white (idx, in);
- if (in->ptr[idx] == ',')
- idx++;
- idx = exp_get_abs (_("res needs absolute expression for fill count.\n"), idx, in, &count);
-
- if (type == 'c' || type == 'z')
- count++;
-
- fprintf (outfile, ".space %d\n", count * size);
- }
-}
-
-/* .export */
-
-static void
-do_export (in)
- sb *in;
-{
- fprintf (outfile, ".global %s\n", sb_name (in));
-}
-
-/* .print [list] [nolist] */
-
-static void
-do_print (idx, in)
- int idx;
- sb *in;
-{
- idx = sb_skip_white (idx, in);
- while (idx < in->len)
- {
- if (strncasecmp (in->ptr + idx, "LIST", 4) == 0)
- {
- fprintf (outfile, ".list\n");
- idx += 4;
- }
- else if (strncasecmp (in->ptr + idx, "NOLIST", 6) == 0)
- {
- fprintf (outfile, ".nolist\n");
- idx += 6;
- }
- idx++;
- }
-}
-
-/* .head */
-
-static void
-do_heading (idx, in)
- int idx;
- sb *in;
-{
- sb head;
- sb_new (&head);
- idx = getstring (idx, in, &head);
- fprintf (outfile, ".title \"%s\"\n", sb_name (&head));
- sb_kill (&head);
-}
-
-/* .page */
-
-static void
-do_page ()
-{
- fprintf (outfile, ".eject\n");
-}
-
-/* .form [lin=<value>] [col=<value>] */
-
-static void
-do_form (idx, in)
- int idx;
- sb *in;
-{
- int lines = 60;
- int columns = 132;
- idx = sb_skip_white (idx, in);
-
- while (idx < in->len)
- {
-
- if (strncasecmp (in->ptr + idx, "LIN=", 4) == 0)
- {
- idx += 4;
- idx = exp_get_abs (_("form LIN= needs absolute expresssion.\n"), idx, in, &lines);
- }
-
- if (strncasecmp (in->ptr + idx, _("COL="), 4) == 0)
- {
- idx += 4;
- idx = exp_get_abs (_("form COL= needs absolute expresssion.\n"), idx, in, &columns);
- }
-
- idx++;
- }
- fprintf (outfile, ".psize %d,%d\n", lines, columns);
-
-}
-
-/* Fetch string from the input stream,
- rules:
- 'Bxyx<whitespace> -> return 'Bxyza
- %<char> -> return string of decimal value of x
- "<string>" -> return string
- xyx<whitespace> -> return xyz
-*/
-
-static int
-get_any_string (idx, in, out, expand, pretend_quoted)
- int idx;
- sb *in;
- sb *out;
- int expand;
- int pretend_quoted;
-{
- sb_reset (out);
- idx = sb_skip_white (idx, in);
-
- if (idx < in->len)
- {
- if (in->len > 2 && in->ptr[idx + 1] == '\'' && ISBASE (in->ptr[idx]))
- {
- while (!ISSEP (in->ptr[idx]))
- sb_add_char (out, in->ptr[idx++]);
- }
- else if (in->ptr[idx] == '%'
- && alternate
- && expand)
- {
- int val;
- char buf[20];
- /* Turns the next expression into a string. */
- /* xgettext: no-c-format */
- idx = exp_get_abs (_("% operator needs absolute expression"),
- idx + 1,
- in,
- &val);
- sprintf (buf, "%d", val);
- sb_add_string (out, buf);
- }
- else if (in->ptr[idx] == '"'
- || in->ptr[idx] == '<'
- || (alternate && in->ptr[idx] == '\''))
- {
- if (alternate && expand)
- {
- /* Keep the quotes. */
- sb_add_char (out, '\"');
-
- idx = getstring (idx, in, out);
- sb_add_char (out, '\"');
-
- }
- else
- {
- idx = getstring (idx, in, out);
- }
- }
- else
- {
- while (idx < in->len
- && (in->ptr[idx] == '"'
- || in->ptr[idx] == '\''
- || pretend_quoted
- || !ISSEP (in->ptr[idx])))
- {
- if (in->ptr[idx] == '"'
- || in->ptr[idx] == '\'')
- {
- char tchar = in->ptr[idx];
- sb_add_char (out, in->ptr[idx++]);
- while (idx < in->len
- && in->ptr[idx] != tchar)
- sb_add_char (out, in->ptr[idx++]);
- if (idx == in->len)
- return idx;
- }
- sb_add_char (out, in->ptr[idx++]);
- }
- }
- }
-
- return idx;
-}
-
-/* Skip along sb in starting at idx, suck off whitespace a ( and more
- whitespace. Return the idx of the next char. */
-
-static int
-skip_openp (idx, in)
- int idx;
- sb *in;
-{
- idx = sb_skip_white (idx, in);
- if (in->ptr[idx] != '(')
- ERROR ((stderr, _("misplaced ( .\n")));
- idx = sb_skip_white (idx + 1, in);
- return idx;
-}
-
-/* Skip along sb in starting at idx, suck off whitespace a ) and more
- whitespace. Return the idx of the next char. */
-
-static int
-skip_closep (idx, in)
- int idx;
- sb *in;
-{
- idx = sb_skip_white (idx, in);
- if (in->ptr[idx] != ')')
- ERROR ((stderr, _("misplaced ).\n")));
- idx = sb_skip_white (idx + 1, in);
- return idx;
-}
-
-/* .len */
-
-static int
-dolen (idx, in, out)
- int idx;
- sb *in;
- sb *out;
-{
-
- sb stringout;
- char buffer[10];
-
- sb_new (&stringout);
- idx = skip_openp (idx, in);
- idx = get_and_process (idx, in, &stringout);
- idx = skip_closep (idx, in);
- sprintf (buffer, "%d", stringout.len);
- sb_add_string (out, buffer);
-
- sb_kill (&stringout);
- return idx;
-}
-
-/* .instr */
-
-static int
-doinstr (idx, in, out)
- int idx;
- sb *in;
- sb *out;
-{
- sb string;
- sb search;
- int i;
- int start;
- int res;
- char buffer[10];
-
- sb_new (&string);
- sb_new (&search);
- idx = skip_openp (idx, in);
- idx = get_and_process (idx, in, &string);
- idx = sb_skip_comma (idx, in);
- idx = get_and_process (idx, in, &search);
- idx = sb_skip_comma (idx, in);
- if (ISDIGIT (in->ptr[idx]))
- {
- idx = exp_get_abs (_(".instr needs absolute expresson.\n"), idx, in, &start);
- }
- else
- {
- start = 0;
- }
- idx = skip_closep (idx, in);
- res = -1;
- for (i = start; i < string.len; i++)
- {
- if (strncmp (string.ptr + i, search.ptr, search.len) == 0)
- {
- res = i;
- break;
- }
- }
- sprintf (buffer, "%d", res);
- sb_add_string (out, buffer);
- sb_kill (&string);
- sb_kill (&search);
- return idx;
-}
-
-static int
-dosubstr (idx, in, out)
- int idx;
- sb *in;
- sb *out;
-{
- sb string;
- int pos;
- int len;
- sb_new (&string);
-
- idx = skip_openp (idx, in);
- idx = get_and_process (idx, in, &string);
- idx = sb_skip_comma (idx, in);
- idx = exp_get_abs (_("need absolute position.\n"), idx, in, &pos);
- idx = sb_skip_comma (idx, in);
- idx = exp_get_abs (_("need absolute length.\n"), idx, in, &len);
- idx = skip_closep (idx, in);
-
- if (len < 0 || pos < 0 ||
- pos > string.len
- || pos + len > string.len)
- {
- sb_add_string (out, " ");
- }
- else
- {
- sb_add_char (out, '"');
- while (len > 0)
- {
- sb_add_char (out, string.ptr[pos++]);
- len--;
- }
- sb_add_char (out, '"');
- }
- sb_kill (&string);
- return idx;
-}
-
-/* Scan line, change tokens in the hash table to their replacements. */
-
-static void
-process_assigns (idx, in, buf)
- int idx;
- sb *in;
- sb *buf;
-{
- while (idx < in->len)
- {
- hash_entry *ptr;
- if (in->ptr[idx] == '\\'
- && idx + 1 < in->len
- && in->ptr[idx + 1] == '(')
- {
- do
- {
- sb_add_char (buf, in->ptr[idx]);
- idx++;
- }
- while (idx < in->len && in->ptr[idx - 1] != ')');
- }
- else if (in->ptr[idx] == '\\'
- && idx + 1 < in->len
- && in->ptr[idx + 1] == '&')
- {
- idx = condass_lookup_name (in, idx + 2, buf, 1);
- }
- else if (in->ptr[idx] == '\\'
- && idx + 1 < in->len
- && in->ptr[idx + 1] == '$')
- {
- idx = condass_lookup_name (in, idx + 2, buf, 0);
- }
- else if (idx + 3 < in->len
- && in->ptr[idx] == '.'
- && TOUPPER (in->ptr[idx + 1]) == 'L'
- && TOUPPER (in->ptr[idx + 2]) == 'E'
- && TOUPPER (in->ptr[idx + 3]) == 'N')
- idx = dolen (idx + 4, in, buf);
- else if (idx + 6 < in->len
- && in->ptr[idx] == '.'
- && TOUPPER (in->ptr[idx + 1]) == 'I'
- && TOUPPER (in->ptr[idx + 2]) == 'N'
- && TOUPPER (in->ptr[idx + 3]) == 'S'
- && TOUPPER (in->ptr[idx + 4]) == 'T'
- && TOUPPER (in->ptr[idx + 5]) == 'R')
- idx = doinstr (idx + 6, in, buf);
- else if (idx + 7 < in->len
- && in->ptr[idx] == '.'
- && TOUPPER (in->ptr[idx + 1]) == 'S'
- && TOUPPER (in->ptr[idx + 2]) == 'U'
- && TOUPPER (in->ptr[idx + 3]) == 'B'
- && TOUPPER (in->ptr[idx + 4]) == 'S'
- && TOUPPER (in->ptr[idx + 5]) == 'T'
- && TOUPPER (in->ptr[idx + 6]) == 'R')
- idx = dosubstr (idx + 7, in, buf);
- else if (ISFIRSTCHAR (in->ptr[idx]))
- {
- /* May be a simple name subsitution, see if we have a word. */
- sb acc;
- int cur = idx + 1;
- while (cur < in->len
- && (ISNEXTCHAR (in->ptr[cur])))
- cur++;
-
- sb_new (&acc);
- sb_add_buffer (&acc, in->ptr + idx, cur - idx);
- ptr = hash_lookup (&assign_hash_table, &acc);
- if (ptr)
- {
- /* Found a definition for it. */
- sb_add_sb (buf, &ptr->value.s);
- }
- else
- {
- /* No definition, just copy the word. */
- sb_add_sb (buf, &acc);
- }
- sb_kill (&acc);
- idx = cur;
- }
- else
- {
- sb_add_char (buf, in->ptr[idx++]);
- }
- }
-}
-
-static int
-get_and_process (idx, in, out)
- int idx;
- sb *in;
- sb *out;
-{
- sb t;
- sb_new (&t);
- idx = get_any_string (idx, in, &t, 1, 0);
- process_assigns (0, &t, out);
- sb_kill (&t);
- return idx;
-}
-
-static void
-process_file ()
-{
- sb line;
- sb t1, t2;
- sb acc;
- sb label_in;
- int more;
-
- sb_new (&line);
- sb_new (&t1);
- sb_new (&t2);
- sb_new (&acc);
- sb_new (&label_in);
- sb_reset (&line);
- more = get_line (&line);
- while (more)
- {
- /* Find any label and pseudo op that we're intested in. */
- int l;
- if (line.len == 0)
- {
- if (condass_on ())
- fprintf (outfile, "\n");
- }
- else if (mri
- && (line.ptr[0] == '*'
- || line.ptr[0] == '!'))
- {
- /* MRI line comment. */
- fprintf (outfile, "%s", sb_name (&line));
- }
- else
- {
- l = grab_label (&line, &label_in);
- sb_reset (&label);
-
- if (line.ptr[l] == ':')
- l++;
- while (ISWHITE (line.ptr[l]) && l < line.len)
- l++;
-
- if (label_in.len)
- {
- int do_assigns;
-
- /* Munge the label, unless this is EQU or ASSIGN. */
- do_assigns = 1;
- if (l < line.len
- && (line.ptr[l] == '.' || alternate || mri))
- {
- int lx = l;
-
- if (line.ptr[lx] == '.')
- ++lx;
- if (lx + 3 <= line.len
- && strncasecmp ("EQU", line.ptr + lx, 3) == 0
- && (lx + 3 == line.len
- || ! ISFIRSTCHAR (line.ptr[lx + 3])))
- do_assigns = 0;
- else if (lx + 6 <= line.len
- && strncasecmp ("ASSIGN", line.ptr + lx, 6) == 0
- && (lx + 6 == line.len
- || ! ISFIRSTCHAR (line.ptr[lx + 6])))
- do_assigns = 0;
- }
-
- if (do_assigns)
- process_assigns (0, &label_in, &label);
- else
- sb_add_sb (&label, &label_in);
- }
-
- if (l < line.len)
- {
- if (process_pseudo_op (l, &line, &acc))
- {
-
- }
- else if (condass_on ())
- {
- if (macro_op (l, &line))
- {
-
- }
- else
- {
- {
- if (label.len)
- {
- fprintf (outfile, "%s:\t", sb_name (&label));
- }
- else
- fprintf (outfile, "\t");
- sb_reset (&t1);
- process_assigns (l, &line, &t1);
- sb_reset (&t2);
- change_base (0, &t1, &t2);
- fprintf (outfile, "%s\n", sb_name (&t2));
- }
- }
- }
- }
- else
- {
- /* Only a label on this line. */
- if (label.len && condass_on ())
- {
- fprintf (outfile, "%s:\n", sb_name (&label));
- }
- }
- }
-
- if (had_end)
- break;
- sb_reset (&line);
- more = get_line (&line);
- }
-
- if (!had_end && !mri)
- WARNING ((stderr, _("END missing from end of file.\n")));
-}
-
-static void
-free_old_entry (ptr)
- hash_entry *ptr;
-{
- if (ptr)
- {
- if (ptr->type == hash_string)
- sb_kill (&ptr->value.s);
- }
-}
-
-/* name: .ASSIGNA <value> */
-
-static void
-do_assigna (idx, in)
- int idx;
- sb *in;
-{
- sb tmp;
- int val;
- sb_new (&tmp);
-
- process_assigns (idx, in, &tmp);
- idx = exp_get_abs (_(".ASSIGNA needs constant expression argument.\n"), 0, &tmp, &val);
-
- if (!label.len)
- {
- ERROR ((stderr, _(".ASSIGNA without label.\n")));
- }
- else
- {
- hash_entry *ptr = hash_create (&vars, &label);
- free_old_entry (ptr);
- ptr->type = hash_integer;
- ptr->value.i = val;
- }
- sb_kill (&tmp);
-}
-
-/* name: .ASSIGNC <string> */
-
-static void
-do_assignc (idx, in)
- int idx;
- sb *in;
-{
- sb acc;
- sb_new (&acc);
- idx = getstring (idx, in, &acc);
-
- if (!label.len)
- {
- ERROR ((stderr, _(".ASSIGNS without label.\n")));
- }
- else
- {
- hash_entry *ptr = hash_create (&vars, &label);
- free_old_entry (ptr);
- ptr->type = hash_string;
- sb_new (&ptr->value.s);
- sb_add_sb (&ptr->value.s, &acc);
- }
- sb_kill (&acc);
-}
-
-/* name: .REG (reg) */
-
-static void
-do_reg (idx, in)
- int idx;
- sb *in;
-{
- /* Remove reg stuff from inside parens. */
- sb what;
- if (!mri)
- idx = skip_openp (idx, in);
- else
- idx = sb_skip_white (idx, in);
- sb_new (&what);
- while (idx < in->len
- && (mri
- ? ! eol (idx, in)
- : in->ptr[idx] != ')'))
- {
- sb_add_char (&what, in->ptr[idx]);
- idx++;
- }
- hash_add_to_string_table (&assign_hash_table, &label, &what, 1);
- sb_kill (&what);
-}
-
-static int
-condass_lookup_name (inbuf, idx, out, warn)
- sb *inbuf;
- int idx;
- sb *out;
- int warn;
-{
- hash_entry *ptr;
- sb condass_acc;
- sb_new (&condass_acc);
-
- while (idx < inbuf->len
- && ISNEXTCHAR (inbuf->ptr[idx]))
- {
- sb_add_char (&condass_acc, inbuf->ptr[idx++]);
- }
-
- if (inbuf->ptr[idx] == '\'')
- idx++;
- ptr = hash_lookup (&vars, &condass_acc);
-
- if (!ptr)
- {
- if (warn)
- {
- WARNING ((stderr, _("Can't find preprocessor variable %s.\n"), sb_name (&condass_acc)));
- }
- else
- {
- sb_add_string (out, "0");
- }
- }
- else
- {
- if (ptr->type == hash_integer)
- {
- char buffer[30];
- sprintf (buffer, "%d", ptr->value.i);
- sb_add_string (out, buffer);
- }
- else
- {
- sb_add_sb (out, &ptr->value.s);
- }
- }
- sb_kill (&condass_acc);
- return idx;
-}
-
-#define EQ 1
-#define NE 2
-#define GE 3
-#define LT 4
-#define LE 5
-#define GT 6
-#define NEVER 7
-
-static int
-whatcond (idx, in, val)
- int idx;
- sb *in;
- int *val;
-{
- int cond;
-
- idx = sb_skip_white (idx, in);
- cond = NEVER;
- if (idx + 1 < in->len)
- {
- char *p;
- char a, b;
-
- p = in->ptr + idx;
- a = TOUPPER (p[0]);
- b = TOUPPER (p[1]);
- if (a == 'E' && b == 'Q')
- cond = EQ;
- else if (a == 'N' && b == 'E')
- cond = NE;
- else if (a == 'L' && b == 'T')
- cond = LT;
- else if (a == 'L' && b == 'E')
- cond = LE;
- else if (a == 'G' && b == 'T')
- cond = GT;
- else if (a == 'G' && b == 'E')
- cond = GE;
- }
- if (cond == NEVER)
- {
- ERROR ((stderr, _("Comparison operator must be one of EQ, NE, LT, LE, GT or GE.\n")));
- cond = NEVER;
- }
- idx = sb_skip_white (idx + 2, in);
- *val = cond;
- return idx;
-}
-
-static int
-istrue (idx, in)
- int idx;
- sb *in;
-{
- int res;
- sb acc_a;
- sb cond;
- sb acc_b;
- sb_new (&acc_a);
- sb_new (&cond);
- sb_new (&acc_b);
- idx = sb_skip_white (idx, in);
-
- if (in->ptr[idx] == '"')
- {
- int cond;
- int same;
- /* This is a string comparision. */
- idx = getstring (idx, in, &acc_a);
- idx = whatcond (idx, in, &cond);
- idx = getstring (idx, in, &acc_b);
- same = acc_a.len == acc_b.len
- && (strncmp (acc_a.ptr, acc_b.ptr, acc_a.len) == 0);
-
- if (cond != EQ && cond != NE)
- {
- ERROR ((stderr, _("Comparison operator for strings must be EQ or NE\n")));
- res = 0;
- }
- else
- res = (cond != EQ) ^ same;
- }
- else
- /* This is a numeric expression. */
- {
- int vala;
- int valb;
- int cond;
- idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"), idx, in, &vala);
- idx = whatcond (idx, in, &cond);
- idx = sb_skip_white (idx, in);
- if (in->ptr[idx] == '"')
- {
- WARNING ((stderr, _("String compared against expression.\n")));
- res = 0;
- }
- else
- {
- idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"), idx, in, &valb);
- switch (cond)
- {
- default:
- res = 42;
- break;
- case EQ:
- res = vala == valb;
- break;
- case NE:
- res = vala != valb;
- break;
- case LT:
- res = vala < valb;
- break;
- case LE:
- res = vala <= valb;
- break;
- case GT:
- res = vala > valb;
- break;
- case GE:
- res = vala >= valb;
- break;
- case NEVER:
- res = 0;
- break;
- }
- }
- }
-
- sb_kill (&acc_a);
- sb_kill (&cond);
- sb_kill (&acc_b);
- return res;
-}
-
-/* .AIF */
-
-static void
-do_aif (idx, in)
- int idx;
- sb *in;
-{
- if (ifi >= IFNESTING)
- {
- FATAL ((stderr, _("AIF nesting unreasonable.\n")));
- }
- ifi++;
- ifstack[ifi].on = ifstack[ifi - 1].on ? istrue (idx, in) : 0;
- ifstack[ifi].hadelse = 0;
-}
-
-/* .AELSE */
-
-static void
-do_aelse ()
-{
- ifstack[ifi].on = ifstack[ifi - 1].on ? !ifstack[ifi].on : 0;
- if (ifstack[ifi].hadelse)
- {
- ERROR ((stderr, _("Multiple AELSEs in AIF.\n")));
- }
- ifstack[ifi].hadelse = 1;
-}
-
-/* .AENDI */
-
-static void
-do_aendi ()
-{
- if (ifi != 0)
- {
- ifi--;
- }
- else
- {
- ERROR ((stderr, _("AENDI without AIF.\n")));
- }
-}
-
-static int
-condass_on ()
-{
- return ifstack[ifi].on;
-}
-
-/* MRI IFEQ, IFNE, IFLT, IFLE, IFGE, IFGT. */
-
-static void
-do_if (idx, in, cond)
- int idx;
- sb *in;
- int cond;
-{
- int val;
- int res;
-
- if (ifi >= IFNESTING)
- {
- FATAL ((stderr, _("IF nesting unreasonable.\n")));
- }
-
- idx = exp_get_abs (_("Conditional operator must have absolute operands.\n"),
- idx, in, &val);
- switch (cond)
- {
- default:
- case EQ: res = val == 0; break;
- case NE: res = val != 0; break;
- case LT: res = val < 0; break;
- case LE: res = val <= 0; break;
- case GE: res = val >= 0; break;
- case GT: res = val > 0; break;
- }
-
- ifi++;
- ifstack[ifi].on = ifstack[ifi - 1].on ? res : 0;
- ifstack[ifi].hadelse = 0;
-}
-
-/* Get a string for the MRI IFC or IFNC pseudo-ops. */
-
-static int
-get_mri_string (idx, in, val, terminator)
- int idx;
- sb *in;
- sb *val;
- int terminator;
-{
- idx = sb_skip_white (idx, in);
-
- if (idx < in->len
- && in->ptr[idx] == '\'')
- {
- sb_add_char (val, '\'');
- for (++idx; idx < in->len; ++idx)
- {
- sb_add_char (val, in->ptr[idx]);
- if (in->ptr[idx] == '\'')
- {
- ++idx;
- if (idx >= in->len
- || in->ptr[idx] != '\'')
- break;
- }
- }
- idx = sb_skip_white (idx, in);
- }
- else
- {
- int i;
-
- while (idx < in->len
- && in->ptr[idx] != terminator)
- {
- sb_add_char (val, in->ptr[idx]);
- ++idx;
- }
- i = val->len - 1;
- while (i >= 0 && ISWHITE (val->ptr[i]))
- --i;
- val->len = i + 1;
- }
-
- return idx;
-}
-
-/* MRI IFC, IFNC */
-
-static void
-do_ifc (idx, in, ifnc)
- int idx;
- sb *in;
- int ifnc;
-{
- sb first;
- sb second;
- int res;
-
- if (ifi >= IFNESTING)
- {
- FATAL ((stderr, _("IF nesting unreasonable.\n")));
- }
-
- sb_new (&first);
- sb_new (&second);
-
- idx = get_mri_string (idx, in, &first, ',');
-
- if (idx >= in->len || in->ptr[idx] != ',')
- {
- ERROR ((stderr, _("Bad format for IF or IFNC.\n")));
- return;
- }
-
- idx = get_mri_string (idx + 1, in, &second, ';');
-
- res = (first.len == second.len
- && strncmp (first.ptr, second.ptr, first.len) == 0);
- res ^= ifnc;
-
- ifi++;
- ifstack[ifi].on = ifstack[ifi - 1].on ? res : 0;
- ifstack[ifi].hadelse = 0;
-}
-
-/* .ENDR */
-
-static void
-do_aendr ()
-{
- if (!mri)
- ERROR ((stderr, _("AENDR without a AREPEAT.\n")));
- else
- ERROR ((stderr, _("ENDR without a REPT.\n")));
-}
-
-/* .AWHILE */
-
-static void
-do_awhile (idx, in)
- int idx;
- sb *in;
-{
- int line = linecount ();
- sb exp;
- sb sub;
- int doit;
-
- sb_new (&sub);
- sb_new (&exp);
-
- process_assigns (idx, in, &exp);
- doit = istrue (0, &exp);
-
- if (! buffer_and_nest ("AWHILE", "AENDW", &sub, get_line))
- FATAL ((stderr, _("AWHILE without a AENDW at %d.\n"), line - 1));
-
- /* Turn
- .AWHILE exp
- foo
- .AENDW
- into
- foo
- .AWHILE exp
- foo
- .ENDW
- */
-
- if (doit)
- {
- int index = include_next_index ();
-
- sb copy;
- sb_new (&copy);
- sb_add_sb (&copy, &sub);
- sb_add_sb (&copy, in);
- sb_add_string (&copy, "\n");
- sb_add_sb (&copy, &sub);
- sb_add_string (&copy, "\t.AENDW\n");
- /* Push another WHILE. */
- include_buf (&exp, &copy, include_while, index);
- sb_kill (&copy);
- }
- sb_kill (&exp);
- sb_kill (&sub);
-}
-
-/* .AENDW */
-
-static void
-do_aendw ()
-{
- ERROR ((stderr, _("AENDW without a AENDW.\n")));
-}
-
-/* .EXITM
-
- Pop things off the include stack until the type and index changes. */
-
-static void
-do_exitm ()
-{
- include_type type = sp->type;
- if (type == include_repeat
- || type == include_while
- || type == include_macro)
- {
- int index = sp->index;
- include_pop ();
- while (sp->index == index
- && sp->type == type)
- {
- include_pop ();
- }
- }
-}
-
-/* .AREPEAT */
-
-static void
-do_arepeat (idx, in)
- int idx;
- sb *in;
-{
- int line = linecount ();
- sb exp; /* Buffer with expression in it. */
- sb copy; /* Expanded repeat block. */
- sb sub; /* Contents of AREPEAT. */
- int rc;
- int ret;
- char buffer[30];
-
- sb_new (&exp);
- sb_new (&copy);
- sb_new (&sub);
- process_assigns (idx, in, &exp);
- idx = exp_get_abs (_("AREPEAT must have absolute operand.\n"), 0, &exp, &rc);
- if (!mri)
- ret = buffer_and_nest ("AREPEAT", "AENDR", &sub, get_line);
- else
- ret = buffer_and_nest ("REPT", "ENDR", &sub, get_line);
- if (! ret)
- FATAL ((stderr, _("AREPEAT without a AENDR at %d.\n"), line - 1));
- if (rc > 0)
- {
- /* Push back the text following the repeat, and another repeat block
- so
- .AREPEAT 20
- foo
- .AENDR
- gets turned into
- foo
- .AREPEAT 19
- foo
- .AENDR
- */
- int index = include_next_index ();
- sb_add_sb (&copy, &sub);
- if (rc > 1)
- {
- if (!mri)
- sprintf (buffer, "\t.AREPEAT %d\n", rc - 1);
- else
- sprintf (buffer, "\tREPT %d\n", rc - 1);
- sb_add_string (&copy, buffer);
- sb_add_sb (&copy, &sub);
- if (!mri)
- sb_add_string (&copy, " .AENDR\n");
- else
- sb_add_string (&copy, " ENDR\n");
- }
-
- include_buf (&exp, &copy, include_repeat, index);
- }
- sb_kill (&exp);
- sb_kill (&sub);
- sb_kill (&copy);
-}
-
-/* .ENDM */
-
-static void
-do_endm ()
-{
- ERROR ((stderr, _(".ENDM without a matching .MACRO.\n")));
-}
-
-/* MRI IRP pseudo-op. */
-
-static void
-do_irp (idx, in, irpc)
- int idx;
- sb *in;
- int irpc;
-{
- const char *err;
- sb out;
-
- sb_new (&out);
-
- err = expand_irp (irpc, idx, in, &out, get_line, comment_char);
- if (err != NULL)
- ERROR ((stderr, "%s\n", err));
-
- fprintf (outfile, "%s", sb_terminate (&out));
-
- sb_kill (&out);
-}
-
-/* Macro processing. */
-
-/* Parse off LOCAL n1, n2,... Invent a label name for it. */
-
-static void
-do_local (idx, line)
- int idx ATTRIBUTE_UNUSED;
- sb *line ATTRIBUTE_UNUSED;
-{
- ERROR ((stderr, _("LOCAL outside of MACRO")));
-}
-
-static void
-do_macro (idx, in)
- int idx;
- sb *in;
-{
- const char *err;
- int line = linecount ();
-
- err = define_macro (idx, in, &label, get_line, (const char **) NULL);
- if (err != NULL)
- ERROR ((stderr, _("macro at line %d: %s\n"), line - 1, err));
-}
-
-static int
-macro_op (idx, in)
- int idx;
- sb *in;
-{
- const char *err;
- sb out;
- sb name;
-
- if (! macro_defined)
- return 0;
-
- sb_terminate (in);
- if (! check_macro (in->ptr + idx, &out, comment_char, &err, NULL))
- return 0;
-
- if (err != NULL)
- ERROR ((stderr, "%s\n", err));
-
- sb_new (&name);
- sb_add_string (&name, _("macro expansion"));
-
- include_buf (&name, &out, include_macro, include_next_index ());
-
- sb_kill (&name);
- sb_kill (&out);
-
- return 1;
-}
-
-/* String handling. */
-
-static int
-getstring (idx, in, acc)
- int idx;
- sb *in;
- sb *acc;
-{
- idx = sb_skip_white (idx, in);
-
- while (idx < in->len
- && (in->ptr[idx] == '"'
- || in->ptr[idx] == '<'
- || (in->ptr[idx] == '\'' && alternate)))
- {
- if (in->ptr[idx] == '<')
- {
- if (alternate || mri)
- {
- int nest = 0;
- idx++;
- while ((in->ptr[idx] != '>' || nest)
- && idx < in->len)
- {
- if (in->ptr[idx] == '!')
- {
- idx++;
- sb_add_char (acc, in->ptr[idx++]);
- }
- else
- {
- if (in->ptr[idx] == '>')
- nest--;
- if (in->ptr[idx] == '<')
- nest++;
- sb_add_char (acc, in->ptr[idx++]);
- }
- }
- idx++;
- }
- else
- {
- int code;
- idx++;
- idx = exp_get_abs (_("Character code in string must be absolute expression.\n"),
- idx, in, &code);
- sb_add_char (acc, code);
-
- if (in->ptr[idx] != '>')
- ERROR ((stderr, _("Missing > for character code.\n")));
- idx++;
- }
- }
- else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
- {
- char tchar = in->ptr[idx];
- idx++;
- while (idx < in->len)
- {
- if (alternate && in->ptr[idx] == '!')
- {
- idx++;
- sb_add_char (acc, in->ptr[idx++]);
- }
- else
- {
- if (in->ptr[idx] == tchar)
- {
- idx++;
- if (idx >= in->len || in->ptr[idx] != tchar)
- break;
- }
- sb_add_char (acc, in->ptr[idx]);
- idx++;
- }
- }
- }
- }
-
- return idx;
-}
-
-/* .SDATA[C|Z] <string> */
-
-static void
-do_sdata (idx, in, type)
- int idx;
- sb *in;
- int type;
-{
- int nc = 0;
- int pidx = -1;
- sb acc;
- sb_new (&acc);
- fprintf (outfile, ".byte\t");
-
- while (!eol (idx, in))
- {
- int i;
- sb_reset (&acc);
- idx = sb_skip_white (idx, in);
- while (!eol (idx, in))
- {
- pidx = idx = get_any_string (idx, in, &acc, 0, 1);
- if (type == 'c')
- {
- if (acc.len > 255)
- {
- ERROR ((stderr, _("string for SDATAC longer than 255 characters (%d).\n"), acc.len));
- }
- fprintf (outfile, "%d", acc.len);
- nc = 1;
- }
-
- for (i = 0; i < acc.len; i++)
- {
- if (nc)
- {
- fprintf (outfile, ",");
- }
- fprintf (outfile, "%d", acc.ptr[i]);
- nc = 1;
- }
-
- if (type == 'z')
- {
- if (nc)
- fprintf (outfile, ",");
- fprintf (outfile, "0");
- }
- idx = sb_skip_comma (idx, in);
- if (idx == pidx)
- break;
- }
- if (!alternate && in->ptr[idx] != ',' && idx != in->len)
- {
- fprintf (outfile, "\n");
- ERROR ((stderr, _("illegal character in SDATA line (0x%x).\n"),
- in->ptr[idx]));
- break;
- }
- idx++;
- }
- sb_kill (&acc);
- fprintf (outfile, "\n");
-}
-
-/* .SDATAB <count> <string> */
-
-static void
-do_sdatab (idx, in)
- int idx;
- sb *in;
-{
- int repeat;
- int i;
- sb acc;
- sb_new (&acc);
-
- idx = exp_get_abs (_("Must have absolute SDATAB repeat count.\n"), idx, in, &repeat);
- if (repeat <= 0)
- {
- ERROR ((stderr, _("Must have positive SDATAB repeat count (%d).\n"), repeat));
- repeat = 1;
- }
-
- idx = sb_skip_comma (idx, in);
- idx = getstring (idx, in, &acc);
-
- for (i = 0; i < repeat; i++)
- {
- if (i)
- fprintf (outfile, "\t");
- fprintf (outfile, ".byte\t");
- sb_print (outfile, &acc);
- fprintf (outfile, "\n");
- }
- sb_kill (&acc);
-
-}
-
-static int
-new_file (name)
- const char *name;
-{
- FILE *newone = fopen (name, "r");
- if (!newone)
- return 0;
-
- if (isp == MAX_INCLUDES)
- FATAL ((stderr, _("Unreasonable include depth (%ld).\n"), (long) isp));
-
- sp++;
- sp->handle = newone;
-
- sb_new (&sp->name);
- sb_add_string (&sp->name, name);
-
- sp->linecount = 1;
- sp->pushback_index = 0;
- sp->type = include_file;
- sp->index = 0;
- sb_new (&sp->pushback);
- return 1;
-}
-
-static void
-do_include (idx, in)
- int idx;
- sb *in;
-{
- sb t;
- sb cat;
- include_path *includes;
-
- sb_new (&t);
- sb_new (&cat);
-
- if (! mri)
- idx = getstring (idx, in, &t);
- else
- {
- idx = sb_skip_white (idx, in);
- while (idx < in->len && ! ISWHITE (in->ptr[idx]))
- {
- sb_add_char (&t, in->ptr[idx]);
- ++idx;
- }
- }
-
- for (includes = paths_head; includes; includes = includes->next)
- {
- sb_reset (&cat);
- sb_add_sb (&cat, &includes->path);
- sb_add_char (&cat, '/');
- sb_add_sb (&cat, &t);
- if (new_file (sb_name (&cat)))
- {
- break;
- }
- }
- if (!includes)
- {
- if (! new_file (sb_name (&t)))
- FATAL ((stderr, _("Can't open include file `%s'.\n"), sb_name (&t)));
- }
- sb_kill (&cat);
- sb_kill (&t);
-}
-
-static void
-include_pop ()
-{
- if (sp != include_stack)
- {
- if (sp->handle)
- fclose (sp->handle);
- sp--;
- }
-}
-
-/* Get the next character from the include stack. If there's anything
- in the pushback buffer, take that first. If we're at eof, pop from
- the stack and try again. Keep the linecount up to date. */
-
-static int
-get ()
-{
- int r;
-
- if (sp->pushback.len != sp->pushback_index)
- {
- r = (char) (sp->pushback.ptr[sp->pushback_index++]);
- /* When they've all gone, reset the pointer. */
- if (sp->pushback_index == sp->pushback.len)
- {
- sp->pushback.len = 0;
- sp->pushback_index = 0;
- }
- }
- else if (sp->handle)
- {
- r = getc (sp->handle);
- }
- else
- r = EOF;
-
- if (r == EOF && isp)
- {
- include_pop ();
- r = get ();
- while (r == EOF && isp)
- {
- include_pop ();
- r = get ();
- }
- return r;
- }
- if (r == '\n')
- {
- sp->linecount++;
- }
-
- return r;
-}
-
-static int
-linecount ()
-{
- return sp->linecount;
-}
-
-static int
-include_next_index ()
-{
- static int index;
- if (!unreasonable
- && index > MAX_REASONABLE)
- FATAL ((stderr, _("Unreasonable expansion (-u turns off check).\n")));
- return ++index;
-}
-
-/* Initialize the chartype vector. */
-
-static void
-chartype_init ()
-{
- int x;
- for (x = 0; x < 256; x++)
- {
- if (ISALPHA (x) || x == '_' || x == '$')
- chartype[x] |= FIRSTBIT;
-
- if (mri && x == '.')
- chartype[x] |= FIRSTBIT;
-
- if (ISDIGIT (x) || ISALPHA (x) || x == '_' || x == '$')
- chartype[x] |= NEXTBIT;
-
- if (x == ' ' || x == '\t' || x == ',' || x == '"' || x == ';'
- || x == '"' || x == '<' || x == '>' || x == ')' || x == '(')
- chartype[x] |= SEPBIT;
-
- if (x == 'b' || x == 'B'
- || x == 'q' || x == 'Q'
- || x == 'h' || x == 'H'
- || x == 'd' || x == 'D')
- chartype [x] |= BASEBIT;
-
- if (x == ' ' || x == '\t')
- chartype[x] |= WHITEBIT;
-
- if (x == comment_char)
- chartype[x] |= COMMENTBIT;
- }
-}
-
-/* What to do with all the keywords. */
-#define PROCESS 0x1000 /* Run substitution over the line. */
-#define LAB 0x2000 /* Spit out the label. */
-
-#define K_EQU (PROCESS|1)
-#define K_ASSIGN (PROCESS|2)
-#define K_REG (PROCESS|3)
-#define K_ORG (PROCESS|4)
-#define K_RADIX (PROCESS|5)
-#define K_DATA (LAB|PROCESS|6)
-#define K_DATAB (LAB|PROCESS|7)
-#define K_SDATA (LAB|PROCESS|8)
-#define K_SDATAB (LAB|PROCESS|9)
-#define K_SDATAC (LAB|PROCESS|10)
-#define K_SDATAZ (LAB|PROCESS|11)
-#define K_RES (LAB|PROCESS|12)
-#define K_SRES (LAB|PROCESS|13)
-#define K_SRESC (LAB|PROCESS|14)
-#define K_SRESZ (LAB|PROCESS|15)
-#define K_EXPORT (LAB|PROCESS|16)
-#define K_GLOBAL (LAB|PROCESS|17)
-#define K_PRINT (LAB|PROCESS|19)
-#define K_FORM (LAB|PROCESS|20)
-#define K_HEADING (LAB|PROCESS|21)
-#define K_PAGE (LAB|PROCESS|22)
-#define K_IMPORT (LAB|PROCESS|23)
-#define K_PROGRAM (LAB|PROCESS|24)
-#define K_END (PROCESS|25)
-#define K_INCLUDE (PROCESS|26)
-#define K_IGNORED (PROCESS|27)
-#define K_ASSIGNA (PROCESS|28)
-#define K_ASSIGNC (29)
-#define K_AIF (PROCESS|30)
-#define K_AELSE (PROCESS|31)
-#define K_AENDI (PROCESS|32)
-#define K_AREPEAT (PROCESS|33)
-#define K_AENDR (PROCESS|34)
-#define K_AWHILE (35)
-#define K_AENDW (PROCESS|36)
-#define K_EXITM (37)
-#define K_MACRO (PROCESS|38)
-#define K_ENDM (39)
-#define K_ALIGN (PROCESS|LAB|40)
-#define K_ALTERNATE (41)
-#define K_DB (LAB|PROCESS|42)
-#define K_DW (LAB|PROCESS|43)
-#define K_DL (LAB|PROCESS|44)
-#define K_LOCAL (45)
-#define K_IFEQ (PROCESS|46)
-#define K_IFNE (PROCESS|47)
-#define K_IFLT (PROCESS|48)
-#define K_IFLE (PROCESS|49)
-#define K_IFGE (PROCESS|50)
-#define K_IFGT (PROCESS|51)
-#define K_IFC (PROCESS|52)
-#define K_IFNC (PROCESS|53)
-#define K_IRP (PROCESS|54)
-#define K_IRPC (PROCESS|55)
-
-struct keyword {
- char *name;
- int code;
- int extra;
-};
-
-static struct keyword kinfo[] = {
- { "EQU", K_EQU, 0 },
- { "ALTERNATE", K_ALTERNATE, 0 },
- { "ASSIGN", K_ASSIGN, 0 },
- { "REG", K_REG, 0 },
- { "ORG", K_ORG, 0 },
- { "RADIX", K_RADIX, 0 },
- { "DATA", K_DATA, 0 },
- { "DB", K_DB, 0 },
- { "DW", K_DW, 0 },
- { "DL", K_DL, 0 },
- { "DATAB", K_DATAB, 0 },
- { "SDATA", K_SDATA, 0 },
- { "SDATAB", K_SDATAB, 0 },
- { "SDATAZ", K_SDATAZ, 0 },
- { "SDATAC", K_SDATAC, 0 },
- { "RES", K_RES, 0 },
- { "SRES", K_SRES, 0 },
- { "SRESC", K_SRESC, 0 },
- { "SRESZ", K_SRESZ, 0 },
- { "EXPORT", K_EXPORT, 0 },
- { "GLOBAL", K_GLOBAL, 0 },
- { "PRINT", K_PRINT, 0 },
- { "FORM", K_FORM, 0 },
- { "HEADING", K_HEADING, 0 },
- { "PAGE", K_PAGE, 0 },
- { "PROGRAM", K_IGNORED, 0 },
- { "END", K_END, 0 },
- { "INCLUDE", K_INCLUDE, 0 },
- { "ASSIGNA", K_ASSIGNA, 0 },
- { "ASSIGNC", K_ASSIGNC, 0 },
- { "AIF", K_AIF, 0 },
- { "AELSE", K_AELSE, 0 },
- { "AENDI", K_AENDI, 0 },
- { "AREPEAT", K_AREPEAT, 0 },
- { "AENDR", K_AENDR, 0 },
- { "EXITM", K_EXITM, 0 },
- { "MACRO", K_MACRO, 0 },
- { "ENDM", K_ENDM, 0 },
- { "AWHILE", K_AWHILE, 0 },
- { "ALIGN", K_ALIGN, 0 },
- { "AENDW", K_AENDW, 0 },
- { "ALTERNATE", K_ALTERNATE, 0 },
- { "LOCAL", K_LOCAL, 0 },
- { NULL, 0, 0 }
-};
-
-/* Although the conditional operators are handled by gas, we need to
- handle them here as well, in case they are used in a recursive
- macro to end the recursion. */
-
-static struct keyword mrikinfo[] = {
- { "IFEQ", K_IFEQ, 0 },
- { "IFNE", K_IFNE, 0 },
- { "IFLT", K_IFLT, 0 },
- { "IFLE", K_IFLE, 0 },
- { "IFGE", K_IFGE, 0 },
- { "IFGT", K_IFGT, 0 },
- { "IFC", K_IFC, 0 },
- { "IFNC", K_IFNC, 0 },
- { "ELSEC", K_AELSE, 0 },
- { "ENDC", K_AENDI, 0 },
- { "MEXIT", K_EXITM, 0 },
- { "REPT", K_AREPEAT, 0 },
- { "IRP", K_IRP, 0 },
- { "IRPC", K_IRPC, 0 },
- { "ENDR", K_AENDR, 0 },
- { NULL, 0, 0 }
-};
-
-/* Look for a pseudo op on the line. If one's there then call
- its handler. */
-
-static int
-process_pseudo_op (idx, line, acc)
- int idx;
- sb *line;
- sb *acc;
-{
- int oidx = idx;
-
- if (line->ptr[idx] == '.' || alternate || mri)
- {
- /* Scan forward and find pseudo name. */
- char *in;
- hash_entry *ptr;
-
- char *s;
- char *e;
- if (line->ptr[idx] == '.')
- idx++;
- in = line->ptr + idx;
- s = in;
- e = s;
- sb_reset (acc);
-
- while (idx < line->len && *e && ISFIRSTCHAR (*e))
- {
- sb_add_char (acc, *e);
- e++;
- idx++;
- }
-
- ptr = hash_lookup (&keyword_hash_table, acc);
-
- if (!ptr)
- {
-#if 0
- /* This one causes lots of pain when trying to preprocess
- ordinary code. */
- WARNING ((stderr, _("Unrecognised pseudo op `%s'.\n"),
- sb_name (acc)));
-#endif
- return 0;
- }
- if (ptr->value.i & LAB)
- {
- /* Output the label. */
- if (label.len)
- {
- fprintf (outfile, "%s:\t", sb_name (&label));
- }
- else
- fprintf (outfile, "\t");
- }
-
- if (mri && ptr->value.i == K_END)
- {
- sb t;
-
- sb_new (&t);
- sb_add_buffer (&t, line->ptr + oidx, idx - oidx);
- fprintf (outfile, "\t%s", sb_name (&t));
- sb_kill (&t);
- }
-
- if (ptr->value.i & PROCESS)
- {
- /* Polish the rest of the line before handling the pseudo op. */
-#if 0
- strip_comments (line);
-#endif
- sb_reset (acc);
- process_assigns (idx, line, acc);
- sb_reset (line);
- change_base (0, acc, line);
- idx = 0;
- }
- if (!condass_on ())
- {
- switch (ptr->value.i)
- {
- case K_AIF:
- do_aif (idx, line);
- break;
- case K_AELSE:
- do_aelse ();
- break;
- case K_AENDI:
- do_aendi ();
- break;
- }
- return 1;
- }
- else
- {
- switch (ptr->value.i)
- {
- case K_ALTERNATE:
- alternate = 1;
- macro_init (1, mri, 0, exp_get_abs);
- return 1;
- case K_AELSE:
- do_aelse ();
- return 1;
- case K_AENDI:
- do_aendi ();
- return 1;
- case K_ORG:
- ERROR ((stderr, _("ORG command not allowed.\n")));
- break;
- case K_RADIX:
- do_radix (line);
- return 1;
- case K_DB:
- do_data (idx, line, 1);
- return 1;
- case K_DW:
- do_data (idx, line, 2);
- return 1;
- case K_DL:
- do_data (idx, line, 4);
- return 1;
- case K_DATA:
- do_data (idx, line, 0);
- return 1;
- case K_DATAB:
- do_datab (idx, line);
- return 1;
- case K_SDATA:
- do_sdata (idx, line, 0);
- return 1;
- case K_SDATAB:
- do_sdatab (idx, line);
- return 1;
- case K_SDATAC:
- do_sdata (idx, line, 'c');
- return 1;
- case K_SDATAZ:
- do_sdata (idx, line, 'z');
- return 1;
- case K_ASSIGN:
- do_assign (0, 0, line);
- return 1;
- case K_AIF:
- do_aif (idx, line);
- return 1;
- case K_AREPEAT:
- do_arepeat (idx, line);
- return 1;
- case K_AENDW:
- do_aendw ();
- return 1;
- case K_AWHILE:
- do_awhile (idx, line);
- return 1;
- case K_AENDR:
- do_aendr ();
- return 1;
- case K_EQU:
- do_assign (1, idx, line);
- return 1;
- case K_ALIGN:
- do_align (idx, line);
- return 1;
- case K_RES:
- do_res (idx, line, 0);
- return 1;
- case K_SRES:
- do_res (idx, line, 's');
- return 1;
- case K_INCLUDE:
- do_include (idx, line);
- return 1;
- case K_LOCAL:
- do_local (idx, line);
- return 1;
- case K_MACRO:
- do_macro (idx, line);
- return 1;
- case K_ENDM:
- do_endm ();
- return 1;
- case K_SRESC:
- do_res (idx, line, 'c');
- return 1;
- case K_PRINT:
- do_print (idx, line);
- return 1;
- case K_FORM:
- do_form (idx, line);
- return 1;
- case K_HEADING:
- do_heading (idx, line);
- return 1;
- case K_PAGE:
- do_page ();
- return 1;
- case K_GLOBAL:
- case K_EXPORT:
- do_export (line);
- return 1;
- case K_IMPORT:
- return 1;
- case K_SRESZ:
- do_res (idx, line, 'z');
- return 1;
- case K_IGNORED:
- return 1;
- case K_END:
- do_end (line);
- return 1;
- case K_ASSIGNA:
- do_assigna (idx, line);
- return 1;
- case K_ASSIGNC:
- do_assignc (idx, line);
- return 1;
- case K_EXITM:
- do_exitm ();
- return 1;
- case K_REG:
- do_reg (idx, line);
- return 1;
- case K_IFEQ:
- do_if (idx, line, EQ);
- return 1;
- case K_IFNE:
- do_if (idx, line, NE);
- return 1;
- case K_IFLT:
- do_if (idx, line, LT);
- return 1;
- case K_IFLE:
- do_if (idx, line, LE);
- return 1;
- case K_IFGE:
- do_if (idx, line, GE);
- return 1;
- case K_IFGT:
- do_if (idx, line, GT);
- return 1;
- case K_IFC:
- do_ifc (idx, line, 0);
- return 1;
- case K_IFNC:
- do_ifc (idx, line, 1);
- return 1;
- case K_IRP:
- do_irp (idx, line, 0);
- return 1;
- case K_IRPC:
- do_irp (idx, line, 1);
- return 1;
- }
- }
- }
- return 0;
-}
-
-/* Add a keyword to the hash table. */
-
-static void
-add_keyword (name, code)
- const char *name;
- int code;
-{
- sb label;
- int j;
-
- sb_new (&label);
- sb_add_string (&label, name);
-
- hash_add_to_int_table (&keyword_hash_table, &label, code);
-
- sb_reset (&label);
- for (j = 0; name[j]; j++)
- sb_add_char (&label, name[j] - 'A' + 'a');
- hash_add_to_int_table (&keyword_hash_table, &label, code);
-
- sb_kill (&label);
-}
-
-/* Build the keyword hash table - put each keyword in the table twice,
- once upper and once lower case. */
-
-static void
-process_init ()
-{
- int i;
-
- for (i = 0; kinfo[i].name; i++)
- add_keyword (kinfo[i].name, kinfo[i].code);
-
- if (mri)
- {
- for (i = 0; mrikinfo[i].name; i++)
- add_keyword (mrikinfo[i].name, mrikinfo[i].code);
- }
-}
-
-static void
-do_define (string)
- const char *string;
-{
- sb label;
- int res = 1;
- hash_entry *ptr;
- sb_new (&label);
-
- while (*string)
- {
- if (*string == '=')
- {
- sb value;
- sb_new (&value);
- string++;
- while (*string)
- {
- sb_add_char (&value, *string);
- string++;
- }
- exp_get_abs (_("Invalid expression on command line.\n"),
- 0, &value, &res);
- sb_kill (&value);
- break;
- }
- sb_add_char (&label, *string);
-
- string++;
- }
-
- ptr = hash_create (&vars, &label);
- free_old_entry (ptr);
- ptr->type = hash_integer;
- ptr->value.i = res;
- sb_kill (&label);
-}
-
-char *program_name;
-
-/* The list of long options. */
-static struct option long_options[] =
-{
- { "alternate", no_argument, 0, 'a' },
- { "include", required_argument, 0, 'I' },
- { "commentchar", required_argument, 0, 'c' },
- { "copysource", no_argument, 0, 's' },
- { "debug", no_argument, 0, 'd' },
- { "help", no_argument, 0, 'h' },
- { "mri", no_argument, 0, 'M' },
- { "output", required_argument, 0, 'o' },
- { "print", no_argument, 0, 'p' },
- { "unreasonable", no_argument, 0, 'u' },
- { "version", no_argument, 0, 'v' },
- { "define", required_argument, 0, 'd' },
- { NULL, no_argument, 0, 0 }
-};
-
-/* Show a usage message and exit. */
-static void
-show_usage (file, status)
- FILE *file;
- int status;
-{
- fprintf (file, _("\
-Usage: %s \n\
- [-a] [--alternate] enter alternate macro mode\n\
- [-c char] [--commentchar char] change the comment character from !\n\
- [-d] [--debug] print some debugging info\n\
- [-h] [--help] print this message\n\
- [-M] [--mri] enter MRI compatibility mode\n\
- [-o out] [--output out] set the output file\n\
- [-p] [--print] print line numbers\n"), program_name);
- fprintf (file, _("\
- [-s] [--copysource] copy source through as comments \n\
- [-u] [--unreasonable] allow unreasonable nesting\n\
- [-v] [--version] print the program version\n\
- [-Dname=value] create preprocessor variable called name, with value\n\
- [-Ipath] add to include path list\n\
- [in-file]\n"));
- if (status == 0)
- printf (_("Report bugs to %s\n"), REPORT_BUGS_TO);
- exit (status);
-}
-
-/* Display a help message and exit. */
-
-static void
-show_help ()
-{
- printf (_("%s: Gnu Assembler Macro Preprocessor\n"), program_name);
- show_usage (stdout, 0);
-}
-
-int main PARAMS ((int, char **));
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int opt;
- char *out_name = 0;
- sp = include_stack;
-
- ifstack[0].on = 1;
- ifi = 0;
-
-#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
- setlocale (LC_MESSAGES, "");
-#endif
-#if defined (HAVE_SETLOCALE)
- setlocale (LC_CTYPE, "");
-#endif
- bindtextdomain (PACKAGE, LOCALEDIR);
- textdomain (PACKAGE);
-
- program_name = argv[0];
- xmalloc_set_program_name (program_name);
-
- hash_new_table (101, &keyword_hash_table);
- hash_new_table (101, &assign_hash_table);
- hash_new_table (101, &vars);
-
- sb_new (&label);
-
- while ((opt = getopt_long (argc, argv, "I:sdhavc:upo:D:M", long_options,
- (int *) NULL))
- != EOF)
- {
- switch (opt)
- {
- case 'o':
- out_name = optarg;
- break;
- case 'u':
- unreasonable = 1;
- break;
- case 'I':
- {
- include_path *p = (include_path *) xmalloc (sizeof (include_path));
- p->next = NULL;
- sb_new (&p->path);
- sb_add_string (&p->path, optarg);
- if (paths_tail)
- paths_tail->next = p;
- else
- paths_head = p;
- paths_tail = p;
- }
- break;
- case 'p':
- print_line_number = 1;
- break;
- case 'c':
- comment_char = optarg[0];
- break;
- case 'a':
- alternate = 1;
- break;
- case 's':
- copysource = 1;
- break;
- case 'd':
- stats = 1;
- break;
- case 'D':
- do_define (optarg);
- break;
- case 'M':
- mri = 1;
- comment_char = ';';
- break;
- case 'h':
- show_help ();
- /* NOTREACHED */
- case 'v':
- /* This output is intended to follow the GNU standards document. */
- printf (_("GNU assembler pre-processor %s\n"), program_version);
- printf (_("Copyright 1996 Free Software Foundation, Inc.\n"));
- printf (_("\
-This program is free software; you may redistribute it under the terms of\n\
-the GNU General Public License. This program has absolutely no warranty.\n"));
- exit (0);
- /* NOTREACHED */
- case 0:
- break;
- default:
- show_usage (stderr, 1);
- /* NOTREACHED */
- }
- }
-
- process_init ();
-
- macro_init (alternate, mri, 0, exp_get_abs);
-
- if (out_name)
- {
- outfile = fopen (out_name, "w");
- if (!outfile)
- {
- fprintf (stderr, _("%s: Can't open output file `%s'.\n"),
- program_name, out_name);
- exit (1);
- }
- }
- else
- {
- outfile = stdout;
- }
-
- chartype_init ();
- if (!outfile)
- outfile = stdout;
-
- /* Process all the input files. */
-
- while (optind < argc)
- {
- if (new_file (argv[optind]))
- {
- process_file ();
- }
- else
- {
- fprintf (stderr, _("%s: Can't open input file `%s'.\n"),
- program_name, argv[optind]);
- exit (1);
- }
- optind++;
- }
-
- quit ();
- return 0;
-}
-
-/* This function is used because an abort in some of the other files
- may be compiled into as_abort because they include as.h. */
-
-void
-as_abort (file, line, fn)
- const char *file, *fn;
- int line;
-{
- fprintf (stderr, _("Internal error, aborting at %s line %d"), file, line);
- if (fn)
- fprintf (stderr, " in %s", fn);
- fprintf (stderr, _("\nPlease report this bug.\n"));
- exit (1);
-}
diff --git a/contrib/binutils/gas/itbl-lex.l b/contrib/binutils/gas/itbl-lex.l
deleted file mode 100644
index e924efc56ef0..000000000000
--- a/contrib/binutils/gas/itbl-lex.l
+++ /dev/null
@@ -1,114 +0,0 @@
-/* itbl-lex.l
- Copyright 1997, 1998, 2001 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-%{
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <itbl-parse.h>
-
-#ifdef DEBUG
-#define DBG(x) printf x
-#define MDBG(x) printf x
-#else
-#define DBG(x)
-#define MDBG(x)
-#endif
-
-int insntbl_line = 1;
-%}
-
-ALNUM [A-Za-z0-9_]
-DIGIT [0-9]
-ALPHA [A-Za-z_]
-HEX [0-9A-Fa-f]
-
-%%
-
-"creg"|"CREG" {
- return CREG;
- }
-"dreg"|"DREG" {
- return DREG;
- }
-"greg"|"GREG" {
- return GREG;
- }
-"immed"|"IMMED" {
- return IMMED;
- }
-"addr"|"ADDR" {
- return ADDR;
- }
-"insn"|"INSN" {
- return INSN;
- }
-"p"{DIGIT} {
- yytext[yyleng] = 0;
- yylval.processor = strtoul (yytext+1, 0, 0);
- return PNUM;
- }
-{DIGIT}+ {
- yytext[yyleng] = 0;
- yylval.num = strtoul (yytext, 0, 0);
- return NUM;
- }
-"0x"{HEX}+ {
- yytext[yyleng] = 0;
- yylval.num = strtoul (yytext, 0, 0);
- return NUM;
- }
-{ALPHA}{ALNUM}* {
- yytext[yyleng] = 0;
- yylval.str = strdup (yytext);
- return ID;
- }
-";"|"#" {
- int c;
- while ((c = input ()) != EOF)
- {
- if (c == '\n')
- {
- unput (c);
- break;
- }
- }
- }
-"\n" {
- insntbl_line++;
- MDBG (("in lex, NL = %d (x%x)\n", NL, NL));
- return NL;
- }
-" "|"\t" {
- }
-. {
- MDBG (("char = %x, %d\n", yytext[0], yytext[0]));
- return yytext[0];
- }
-%%
-
-#ifndef yywrap
-int
-yywrap ()
- {
- return 1;
- }
-#endif
diff --git a/contrib/binutils/gas/itbl-parse.y b/contrib/binutils/gas/itbl-parse.y
deleted file mode 100644
index 9a0b7c3ccbd0..000000000000
--- a/contrib/binutils/gas/itbl-parse.y
+++ /dev/null
@@ -1,460 +0,0 @@
-/* itbl-parse.y
- Copyright 1997 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-%{
-
-/*
-
-Yacc grammar for instruction table entries.
-
-=======================================================================
-Original Instruction table specification document:
-
- MIPS Coprocessor Table Specification
- ====================================
-
-This document describes the format of the MIPS coprocessor table. The
-table specifies a list of valid functions, data registers and control
-registers that can be used in coprocessor instructions. This list,
-together with the coprocessor instruction classes listed below,
-specifies the complete list of coprocessor instructions that will
-be recognized and assembled by the GNU assembler. In effect,
-this makes the GNU assembler table-driven, where the table is
-specified by the programmer.
-
-The table is an ordinary text file that the GNU assembler reads when
-it starts. Using the information in the table, the assembler
-generates an internal list of valid coprocessor registers and
-functions. The assembler uses this internal list in addition to the
-standard MIPS registers and instructions which are built-in to the
-assembler during code generation.
-
-To specify the coprocessor table when invoking the GNU assembler, use
-the command line option "--itbl file", where file is the
-complete name of the table, including path and extension.
-
-Examples:
-
- gas -t cop.tbl test.s -o test.o
- gas -t /usr/local/lib/cop.tbl test.s -o test.o
- gas --itbl d:\gnu\data\cop.tbl test.s -o test.o
-
-Only one table may be supplied during a single invocation of
-the assembler.
-
-
-Instruction classes
-===================
-
-Below is a list of the valid coprocessor instruction classes for
-any given coprocessor "z". These instructions are already recognized
-by the assembler, and are listed here only for reference.
-
-Class format instructions
--------------------------------------------------
-Class1:
- op base rt offset
- LWCz rt,offset (base)
- SWCz rt,offset (base)
-Class2:
- COPz sub rt rd 0
- MTCz rt,rd
- MFCz rt,rd
- CTCz rt,rd
- CFCz rt,rd
-Class3:
- COPz CO cofun
- COPz cofun
-Class4:
- COPz BC br offset
- BCzT offset
- BCzF offset
-Class5:
- COPz sub rt rd 0
- DMFCz rt,rd
- DMTCz rt,rd
-Class6:
- op base rt offset
- LDCz rt,offset (base)
- SDCz rt,offset (base)
-Class7:
- COPz BC br offset
- BCzTL offset
- BCzFL offset
-
-The coprocessor table defines coprocessor-specific registers that can
-be used with all of the above classes of instructions, where
-appropriate. It also defines additional coprocessor-specific
-functions for Class3 (COPz cofun) instructions, Thus, the table allows
-the programmer to use convenient mnemonics and operands for these
-functions, instead of the COPz mmenmonic and cofun operand.
-
-The names of the MIPS general registers and their aliases are defined
-by the assembler and will be recognized as valid register names by the
-assembler when used (where allowed) in coprocessor instructions.
-However, the names and values of all coprocessor data and control
-register mnemonics must be specified in the coprocessor table.
-
-
-Table Grammar
-=============
-
-Here is the grammar for the coprocessor table:
-
- table -> entry*
-
- entry -> [z entrydef] [comment] '\n'
-
- entrydef -> type name val
- entrydef -> 'insn' name val funcdef ; type of entry (instruction)
-
- z -> 'p'['0'..'3'] ; processor number
- type -> ['dreg' | 'creg' | 'greg' ] ; type of entry (register)
- ; 'dreg', 'creg' or 'greg' specifies a data, control, or general
- ; register mnemonic, respectively
- name -> [ltr|dec]* ; mnemonic of register/function
- val -> [dec|hex] ; register/function number (integer constant)
-
- funcdef -> frange flags fields
- ; bitfield range for opcode
- ; list of fields' formats
- fields -> field*
- field -> [','] ftype frange flags
- flags -> ['*' flagexpr]
- flagexpr -> '[' flagexpr ']'
- flagexpr -> val '|' flagexpr
- ftype -> [ type | 'immed' | 'addr' ]
- ; 'immed' specifies an immediate value; see grammar for "val" above
- ; 'addr' specifies a C identifier; name of symbol to be resolved at
- ; link time
- frange -> ':' val '-' val ; starting to ending bit positions, where
- ; where 0 is least significant bit
- frange -> (null) ; default range of 31-0 will be assumed
-
- comment -> [';'|'#'] [char]*
- char -> any printable character
- ltr -> ['a'..'z'|'A'..'Z']
- dec -> ['0'..'9']* ; value in decimal
- hex -> '0x'['0'..'9' | 'a'..'f' | 'A'..'F']* ; value in hexidecimal
-
-
-Examples
-========
-
-Example 1:
-
-The table:
-
- p1 dreg d1 1 ; data register "d1" for COP1 has value 1
- p1 creg c3 3 ; ctrl register "c3" for COP1 has value 3
- p3 func fill 0x1f:24-20 ; function "fill" for COP3 has value 31 and
- ; no fields
-
-will allow the assembler to accept the following coprocessor instructions:
-
- LWC1 d1,0x100 ($2)
- fill
-
-Here, the general purpose register "$2", and instruction "LWC1", are standard
-mnemonics built-in to the MIPS assembler.
-
-
-Example 2:
-
-The table:
-
- p3 dreg d3 3 ; data register "d3" for COP3 has value 3
- p3 creg c2 22 ; control register "c2" for COP3 has value 22
- p3 func fee 0x1f:24-20 dreg:17-13 creg:12-8 immed:7-0
- ; function "fee" for COP3 has value 31, and 3 fields
- ; consisting of a data register, a control register,
- ; and an immediate value.
-
-will allow the assembler to accept the following coprocessor instruction:
-
- fee d3,c2,0x1
-
-and will emit the object code:
-
- 31-26 25 24-20 19-18 17-13 12-8 7-0
- COPz CO fun dreg creg immed
- 010011 1 11111 00 00011 10110 00000001
-
- 0x4ff07601
-
-
-Example 3:
-
-The table:
-
- p3 dreg d3 3 ; data register "d3" for COP3 has value 3
- p3 creg c2 22 ; control register "c2" for COP3 has value 22
- p3 func fuu 0x01f00001 dreg:17-13 creg:12-8
-
-will allow the assembler to accept the following coprocessor
-instruction:
-
- fuu d3,c2
-
-and will emit the object code:
-
- 31-26 25 24-20 19-18 17-13 12-8 7-0
- COPz CO fun dreg creg
- 010011 1 11111 00 00011 10110 00000001
-
- 0x4ff07601
-
-In this way, the programmer can force arbitrary bits of an instruction
-to have predefined values.
-
-=======================================================================
-Additional notes:
-
-Encoding of ranges:
-To handle more than one bit position range within an instruction,
-use 0s to mask out the ranges which don't apply.
-May decide to modify the syntax to allow commas separate multiple
-ranges within an instruction (range','range).
-
-Changes in grammar:
- The number of parms argument to the function entry
-was deleted from the original format such that we now count the fields.
-
-----
-FIXME! should really change lexical analyzer
-to recognize 'dreg' etc. in context sensative way.
-Currently function names or mnemonics may be incorrectly parsed as keywords
-
-FIXME! hex is ambiguous with any digit
-
-*/
-
-#include <stdio.h>
-#include "itbl-ops.h"
-
-/* #define DEBUG */
-
-#ifdef DEBUG
-#ifndef DBG_LVL
-#define DBG_LVL 1
-#endif
-#else
-#define DBG_LVL 0
-#endif
-
-#if DBG_LVL >= 1
-#define DBG(x) printf x
-#else
-#define DBG(x)
-#endif
-
-#if DBG_LVL >= 2
-#define DBGL2(x) printf x
-#else
-#define DBGL2(x)
-#endif
-
-static int sbit, ebit;
-static struct itbl_entry *insn=0;
-extern int insntbl_line;
-int yyparse PARAMS ((void));
-int yylex PARAMS ((void));
-static int yyerror PARAMS ((const char *));
-
-%}
-
-%union
- {
- char *str;
- int num;
- int processor;
- unsigned long val;
- }
-
-%token DREG CREG GREG IMMED ADDR INSN NUM ID NL PNUM
-%type <val> value flags flagexpr
-%type <num> number NUM ftype regtype pnum PNUM
-%type <str> ID name
-
-%start insntbl
-
-%%
-
-insntbl:
- entrys
- ;
-
-entrys:
- entry entrys
- |
- ;
-
-entry:
- pnum regtype name value NL
- {
- DBG (("line %d: entry pnum=%d type=%d name=%s value=x%x\n",
- insntbl_line, $1, $2, $3, $4));
- itbl_add_reg ($1, $2, $3, $4);
- }
- | pnum INSN name value range flags
- {
- DBG (("line %d: entry pnum=%d type=INSN name=%s value=x%x",
- insntbl_line, $1, $3, $4));
- DBG ((" sbit=%d ebit=%d flags=0x%x\n", sbit, ebit, $6));
- insn=itbl_add_insn ($1, $3, $4, sbit, ebit, $6);
- }
- fieldspecs NL
- {}
- | NL
- | error NL
- ;
-
-fieldspecs:
- ',' fieldspec fieldspecs
- | fieldspec fieldspecs
- |
- ;
-
-ftype:
- regtype
- {
- DBGL2 (("ftype\n"));
- $$ = $1;
- }
- | ADDR
- {
- DBGL2 (("addr\n"));
- $$ = ADDR;
- }
- | IMMED
- {
- DBGL2 (("immed\n"));
- $$ = IMMED;
- }
- ;
-
-fieldspec:
- ftype range flags
- {
- DBG (("line %d: field type=%d sbit=%d ebit=%d, flags=0x%x\n",
- insntbl_line, $1, sbit, ebit, $3));
- itbl_add_operand (insn, $1, sbit, ebit, $3);
- }
- ;
-
-flagexpr:
- NUM '|' flagexpr
- {
- $$ = $1 | $3;
- }
- | '[' flagexpr ']'
- {
- $$ = $2;
- }
- | NUM
- {
- $$ = $1;
- }
- ;
-
-flags:
- '*' flagexpr
- {
- DBGL2 (("flags=%d\n", $2));
- $$ = $2;
- }
- |
- {
- $$ = 0;
- }
- ;
-
-range:
- ':' NUM '-' NUM
- {
- DBGL2 (("range %d %d\n", $2, $4));
- sbit = $2;
- ebit = $4;
- }
- |
- {
- sbit = 31;
- ebit = 0;
- }
- ;
-
-pnum:
- PNUM
- {
- DBGL2 (("pnum=%d\n",$1));
- $$ = $1;
- }
- ;
-
-regtype:
- DREG
- {
- DBGL2 (("dreg\n"));
- $$ = DREG;
- }
- | CREG
- {
- DBGL2 (("creg\n"));
- $$ = CREG;
- }
- | GREG
- {
- DBGL2 (("greg\n"));
- $$ = GREG;
- }
- ;
-
-name:
- ID
- {
- DBGL2 (("name=%s\n",$1));
- $$ = $1;
- }
- ;
-
-number:
- NUM
- {
- DBGL2 (("num=%d\n",$1));
- $$ = $1;
- }
- ;
-
-value:
- NUM
- {
- DBGL2 (("val=x%x\n",$1));
- $$ = $1;
- }
- ;
-%%
-
-static int
-yyerror (msg)
- const char *msg;
-{
- printf ("line %d: %s\n", insntbl_line, msg);
- return 0;
-}
diff --git a/contrib/binutils/gas/tc.h b/contrib/binutils/gas/tc.h
index 5d7b44d66457..f4a2826ae07f 100644
--- a/contrib/binutils/gas/tc.h
+++ b/contrib/binutils/gas/tc.h
@@ -24,6 +24,25 @@
extern const pseudo_typeS md_pseudo_table[];
+/* JF moved this here from as.h under the theory that nobody except MACHINE.c
+ and write.c care about it anyway. */
+
+struct relax_type
+{
+ /* Forward reach. Signed number. > 0. */
+ long rlx_forward;
+ /* Backward reach. Signed number. < 0. */
+ long rlx_backward;
+
+ /* Bytes length of this address. */
+ unsigned char rlx_length;
+
+ /* Next longer relax-state. 0 means there is no 'next' relax-state. */
+ relax_substateT rlx_more;
+};
+
+typedef struct relax_type relax_typeS;
+
extern const int md_reloc_size; /* Size of a relocation record */
char *md_atof (int what_statement_type, char *literalP, int *sizeP);
diff --git a/contrib/binutils/gprof/po/Make-in b/contrib/binutils/gprof/po/Make-in
deleted file mode 100644
index 833d418224cb..000000000000
--- a/contrib/binutils/gprof/po/Make-in
+++ /dev/null
@@ -1,253 +0,0 @@
-# Makefile for program source directory in GNU NLS utilities package.
-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file file be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
-subdir = po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-
-CC = @CC@
-GENCAT = @GENCAT@
-GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
-MSGMERGE = PATH=../src:$$PATH msgmerge
-
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I.. -I$(top_srcdir)/intl
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-SOURCES = cat-id-tbl.c
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
-stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
-
-.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-
-.c.o:
- $(COMPILE) $<
-
-.po.pox:
- $(MAKE) $(PACKAGE).pot
- $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
-
-.po.mo:
- $(MSGFMT) -o $@ $<
-
-.po.gmo:
- file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
- && test -w $$file \
- && (rm -f $$file && $(GMSGFMT) -o $$file $< ) \
- || echo "$$file is not writable"
-
-.po.cat:
- sed -f ../intl/po2msg.sed < $< > $*.msg \
- && rm -f $@ && $(GENCAT) $@ $*.msg
-
-
-all: all-@USE_NLS@
-
-all-yes: $(CATALOGS) @MAINT@ $(PACKAGE).pot
-all-no:
-
-$(srcdir)/$(PACKAGE).pot: $(POTFILES)
- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
- --add-comments --keyword=_ --keyword=N_ \
- --files-from=$(srcdir)/POTFILES.in
- rm -f $(srcdir)/$(PACKAGE).pot
- mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
-
-$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
-$(srcdir)/stamp-cat-id: $(PACKAGE).pot
- rm -f cat-id-tbl.tmp
- sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
- | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
- if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
- rm cat-id-tbl.tmp; \
- else \
- echo cat-id-tbl.c changed; \
- rm -f $(srcdir)/cat-id-tbl.c; \
- mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
- fi
- cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-
-
-install: install-exec install-data
-install-exec:
-install-info:
-install-data: install-data-@USE_NLS@
-install-data-no: all
-install-data-yes: all
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(datadir); \
- else \
- $(top_srcdir)/mkinstalldirs $(datadir); \
- fi
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- case "$$cat" in \
- *.gmo) destdir=$(gnulocaledir);; \
- *) destdir=$(localedir);; \
- esac; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- dir=$$destdir/$$lang/LC_MESSAGES; \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $$dir; \
- else \
- $(top_srcdir)/mkinstalldirs $$dir; \
- fi; \
- if test -r $$cat; then \
- $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- else \
- $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- fi; \
- if test -r $$cat.m; then \
- $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- if test -r $(srcdir)/$$cat.m ; then \
- $(INSTALL_DATA) $(srcdir)/$$cat.m \
- $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- true; \
- fi; \
- fi; \
- done
- if test "$(PACKAGE)" = "gettext"; then \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(gettextsrcdir); \
- else \
- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
- fi; \
- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
- $(gettextsrcdir)/Makefile.in.in; \
- else \
- : ; \
- fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- done
- rm -f $(gettextsrcdir)/po-Makefile.in.in
-
-check: all
-
-cat-id-tbl.o: ../intl/libgettext.h
-
-dvi info tags TAGS ID:
-
-mostlyclean:
- rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f $(GMOFILES)
-
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- for file in $$dists; do \
- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir); \
- done
-
-update-po: Makefile
- $(MAKE) $(PACKAGE).pot
- PATH=`pwd`/../src:$$PATH; \
- cd $(srcdir); \
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- mv $$lang.po $$lang.old.po; \
- echo "$$lang:"; \
- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
- rm -f $$lang.old.po; \
- else \
- echo "msgmerge for $$cat failed!"; \
- rm -f $$lang.po; \
- mv $$lang.old.po $$lang.po; \
- fi; \
- done
-
-POTFILES: POTFILES.in
- ( if test 'x$(srcdir)' != 'x.'; then \
- posrcprefix='$(top_srcdir)/'; \
- else \
- posrcprefix="../"; \
- fi; \
- rm -f $@-t $@ \
- && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
- -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
- | sed -e '$$s/\\$$//') > $@-t \
- && chmod a-w $@-t \
- && mv $@-t $@ )
-
-POTFILES.in: @MAINT@ ../Makefile
- cd .. && $(MAKE) po/POTFILES.in
-
-Makefile: Make-in ../config.status POTFILES
- cd .. \
- && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
- CONFIG_HEADERS= $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/contrib/binutils/gprof/po/POTFILES.in b/contrib/binutils/gprof/po/POTFILES.in
deleted file mode 100644
index 6ea40f18244c..000000000000
--- a/contrib/binutils/gprof/po/POTFILES.in
+++ /dev/null
@@ -1,38 +0,0 @@
-alpha.c
-basic_blocks.c
-basic_blocks.h
-call_graph.c
-call_graph.h
-cg_arcs.c
-cg_arcs.h
-cg_dfn.c
-cg_dfn.h
-cg_print.c
-cg_print.h
-corefile.c
-corefile.h
-gmon.h
-gmon_io.c
-gmon_io.h
-gmon_out.h
-gprof.c
-gprof.h
-hertz.c
-hertz.h
-hist.c
-hist.h
-i386.c
-mips.c
-search_list.c
-search_list.h
-source.c
-source.h
-sparc.c
-sym_ids.c
-sym_ids.h
-symtab.c
-symtab.h
-tahoe.c
-utils.c
-utils.h
-vax.c
diff --git a/contrib/binutils/gprof/po/gprof.pot b/contrib/binutils/gprof/po/gprof.pot
deleted file mode 100644
index ab103f4007e0..000000000000
--- a/contrib/binutils/gprof/po/gprof.pot
+++ /dev/null
@@ -1,507 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-30 10:08-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: alpha.c:103 mips.c:57
-msgid "<indirect child>"
-msgstr ""
-
-#: alpha.c:120 mips.c:74
-#, c-format
-msgid "[find_call] %s: 0x%lx to 0x%lx\n"
-msgstr ""
-
-#: alpha.c:142
-#, c-format
-msgid "[find_call] 0x%lx: jsr%s <indirect_child>\n"
-msgstr ""
-
-#: alpha.c:152
-#, c-format
-msgid "[find_call] 0x%lx: bsr"
-msgstr ""
-
-#: basic_blocks.c:134 call_graph.c:94 hist.c:98
-#, c-format
-msgid "%s: %s: unexpected end of file\n"
-msgstr ""
-
-#: basic_blocks.c:202
-#, c-format
-msgid "%s: warning: ignoring basic-block exec counts (use -l or --line)\n"
-msgstr ""
-
-#. FIXME: This only works if bfd_vma is unsigned long.
-#: basic_blocks.c:295 basic_blocks.c:305
-#, c-format
-msgid "%s:%d: (%s:0x%lx) %lu executions\n"
-msgstr ""
-
-#: basic_blocks.c:296 basic_blocks.c:306
-msgid "<unknown>"
-msgstr ""
-
-#: basic_blocks.c:553
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Top %d Lines:\n"
-"\n"
-" Line Count\n"
-"\n"
-msgstr ""
-
-#: basic_blocks.c:577
-msgid ""
-"\n"
-"Execution Summary:\n"
-"\n"
-msgstr ""
-
-#: basic_blocks.c:578
-#, c-format
-msgid "%9ld Executable lines in this file\n"
-msgstr ""
-
-#: basic_blocks.c:580
-#, c-format
-msgid "%9ld Lines executed\n"
-msgstr ""
-
-#: basic_blocks.c:581
-#, c-format
-msgid "%9.2f Percent of the file executed\n"
-msgstr ""
-
-#: basic_blocks.c:585
-#, c-format
-msgid ""
-"\n"
-"%9lu Total number of line executions\n"
-msgstr ""
-
-#: basic_blocks.c:587
-#, c-format
-msgid "%9.2f Average executions per line\n"
-msgstr ""
-
-#: call_graph.c:71
-#, c-format
-msgid "[cg_tally] arc from %s to %s traversed %lu times\n"
-msgstr ""
-
-#: cg_print.c:73
-msgid ""
-"\t\t Call graph (explanation follows)\n"
-"\n"
-msgstr ""
-
-#: cg_print.c:75
-msgid ""
-"\t\t\tCall graph\n"
-"\n"
-msgstr ""
-
-#: cg_print.c:78 hist.c:363
-#, c-format
-msgid ""
-"\n"
-"granularity: each sample hit covers %ld byte(s)"
-msgstr ""
-
-#: cg_print.c:82
-#, c-format
-msgid ""
-" for %.2f%% of %.2f seconds\n"
-"\n"
-msgstr ""
-
-#: cg_print.c:86
-msgid ""
-" no time propagated\n"
-"\n"
-msgstr ""
-
-#: cg_print.c:95 cg_print.c:98 cg_print.c:100
-msgid "called"
-msgstr ""
-
-#: cg_print.c:95 cg_print.c:100
-msgid "total"
-msgstr ""
-
-#: cg_print.c:95
-msgid "parents"
-msgstr ""
-
-#: cg_print.c:97 cg_print.c:98
-msgid "index"
-msgstr ""
-
-#: cg_print.c:97
-#, c-format
-msgid "%time"
-msgstr ""
-
-#: cg_print.c:97 cg_print.c:98
-msgid "self"
-msgstr ""
-
-#: cg_print.c:97
-msgid "descendants"
-msgstr ""
-
-#: cg_print.c:98 hist.c:389
-msgid "name"
-msgstr ""
-
-#: cg_print.c:100
-msgid "children"
-msgstr ""
-
-#: cg_print.c:105
-#, c-format
-msgid "index %% time self children called name\n"
-msgstr ""
-
-#: cg_print.c:129
-#, c-format
-msgid " <cycle %d as a whole> [%d]\n"
-msgstr ""
-
-#: cg_print.c:363
-#, c-format
-msgid "%6.6s %5.5s %7.7s %11.11s %7.7s %7.7s <spontaneous>\n"
-msgstr ""
-
-#: cg_print.c:364
-#, c-format
-msgid "%6.6s %5.5s %7.7s %7.7s %7.7s %7.7s <spontaneous>\n"
-msgstr ""
-
-#: cg_print.c:604
-msgid ""
-"Index by function name\n"
-"\n"
-msgstr ""
-
-#: cg_print.c:661 cg_print.c:670
-#, c-format
-msgid "<cycle %d>"
-msgstr ""
-
-#: corefile.c:64
-#, c-format
-msgid "%s: could not open %s.\n"
-msgstr ""
-
-#: corefile.c:78 corefile.c:112
-#, c-format
-msgid "%s: unable to parse mapping file %s.\n"
-msgstr ""
-
-#: corefile.c:155
-#, c-format
-msgid "%s: %s: not in a.out format\n"
-msgstr ""
-
-#: corefile.c:166
-#, c-format
-msgid "%s: can't find .text section in %s\n"
-msgstr ""
-
-#: corefile.c:225
-#, c-format
-msgid "%s: ran out room for %lu bytes of text space\n"
-msgstr ""
-
-#: corefile.c:239
-#, c-format
-msgid "%s: can't do -c\n"
-msgstr ""
-
-#: corefile.c:276
-#, c-format
-msgid "%s: -c not supported on architecture %s\n"
-msgstr ""
-
-#: corefile.c:447
-#, c-format
-msgid "%s: file `%s' has no symbols\n"
-msgstr ""
-
-#: corefile.c:748
-#, c-format
-msgid "%s: somebody miscounted: ltab.len=%d instead of %ld\n"
-msgstr ""
-
-#: gmon_io.c:96 gmon_io.c:159 gmon_io.c:219 gmon_io.c:251 gmon_io.c:422
-#: gmon_io.c:449 gmon_io.c:646 gmon_io.c:671
-#, c-format
-msgid "%s: bits per address has unexpected value of %u\n"
-msgstr ""
-
-#: gmon_io.c:288 gmon_io.c:383
-#, c-format
-msgid "%s: file too short to be a gmon file\n"
-msgstr ""
-
-#: gmon_io.c:298 gmon_io.c:432
-#, c-format
-msgid "%s: file `%s' has bad magic cookie\n"
-msgstr ""
-
-#: gmon_io.c:309
-#, c-format
-msgid "%s: file `%s' has unsupported version %d\n"
-msgstr ""
-
-#: gmon_io.c:339
-#, c-format
-msgid "%s: %s: found bad tag %d (file corrupted?)\n"
-msgstr ""
-
-#: gmon_io.c:405
-#, c-format
-msgid "%s: profiling rate incompatible with first gmon file\n"
-msgstr ""
-
-#: gmon_io.c:465
-#, c-format
-msgid "%s: incompatible with first gmon file\n"
-msgstr ""
-
-#: gmon_io.c:493
-#, c-format
-msgid "%s: file '%s' does not appear to be in gmon.out format\n"
-msgstr ""
-
-#: gmon_io.c:514
-#, c-format
-msgid "%s: unexpected EOF after reading %d/%d bins\n"
-msgstr ""
-
-#: gmon_io.c:547
-msgid "time is in ticks, not seconds\n"
-msgstr ""
-
-#: gmon_io.c:553 gmon_io.c:742
-#, c-format
-msgid "%s: don't know how to deal with file format %d\n"
-msgstr ""
-
-#: gmon_io.c:560
-#, c-format
-msgid "File `%s' (version %d) contains:\n"
-msgstr ""
-
-#: gmon_io.c:563
-#, c-format
-msgid "\t%d histogram record\n"
-msgstr ""
-
-#: gmon_io.c:564
-#, c-format
-msgid "\t%d histogram records\n"
-msgstr ""
-
-#: gmon_io.c:566
-#, c-format
-msgid "\t%d call-graph record\n"
-msgstr ""
-
-#: gmon_io.c:567
-#, c-format
-msgid "\t%d call-graph records\n"
-msgstr ""
-
-#: gmon_io.c:569
-#, c-format
-msgid "\t%d basic-block count record\n"
-msgstr ""
-
-#: gmon_io.c:570
-#, c-format
-msgid "\t%d basic-block count records\n"
-msgstr ""
-
-#: gprof.c:163
-#, c-format
-msgid ""
-"Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n"
-"\t[-d[num]] [-k from/to] [-m min-count] [-t table-length]\n"
-"\t[--[no-]annotated-source[=name]] [--[no-]exec-counts[=name]]\n"
-"\t[--[no-]flat-profile[=name]] [--[no-]graph[=name]]\n"
-"\t[--[no-]time=name] [--all-lines] [--brief] [--debug[=level]]\n"
-"\t[--function-ordering] [--file-ordering]\n"
-"\t[--directory-path=dirs] [--display-unused-functions]\n"
-"\t[--file-format=name] [--file-info] [--help] [--line] [--min-count=n]\n"
-"\t[--no-static] [--print-path] [--separate-files]\n"
-"\t[--static-call-graph] [--sum] [--table-length=len] [--traditional]\n"
-"\t[--version] [--width=n] [--ignore-non-functions]\n"
-"\t[--demangle[=STYLE]] [--no-demangle]\n"
-"\t[image-file] [profile-file...]\n"
-msgstr ""
-
-#: gprof.c:179
-#, c-format
-msgid "Report bugs to %s\n"
-msgstr ""
-
-#: gprof.c:253
-#, c-format
-msgid "%s: debugging not supported; -d ignored\n"
-msgstr ""
-
-#: gprof.c:333
-#, c-format
-msgid "%s: unknown file format %s\n"
-msgstr ""
-
-#. This output is intended to follow the GNU standards document.
-#: gprof.c:417
-#, c-format
-msgid "GNU gprof %s\n"
-msgstr ""
-
-#: gprof.c:418
-msgid ""
-"Based on BSD gprof, copyright 1983 Regents of the University of California.\n"
-msgstr ""
-
-#: gprof.c:419
-msgid ""
-"This program is free software. This program has absolutely no warranty.\n"
-msgstr ""
-
-#: gprof.c:460
-#, c-format
-msgid "%s: unknown demangling style `%s'\n"
-msgstr ""
-
-#: gprof.c:480
-#, c-format
-msgid ""
-"%s: Only one of --function-ordering and --file-ordering may be specified.\n"
-msgstr ""
-
-#: gprof.c:578
-#, c-format
-msgid "%s: sorry, file format `prof' is not yet supported\n"
-msgstr ""
-
-#: gprof.c:639
-#, c-format
-msgid "%s: gmon.out file is missing histogram\n"
-msgstr ""
-
-#: gprof.c:646
-#, c-format
-msgid "%s: gmon.out file is missing call-graph data\n"
-msgstr ""
-
-#: hist.c:127
-#, c-format
-msgid "%s: `%s' is incompatible with first gmon file\n"
-msgstr ""
-
-#: hist.c:143
-#, c-format
-msgid "%s: %s: unexpected EOF after reading %d of %d samples\n"
-msgstr ""
-
-#: hist.c:359
-#, c-format
-msgid "%c%c/call"
-msgstr ""
-
-#: hist.c:367
-#, c-format
-msgid ""
-" for %.2f%% of %.2f %s\n"
-"\n"
-msgstr ""
-
-#: hist.c:373
-#, c-format
-msgid ""
-"\n"
-"Each sample counts as %g %s.\n"
-msgstr ""
-
-#: hist.c:378
-msgid ""
-" no time accumulated\n"
-"\n"
-msgstr ""
-
-#: hist.c:385
-msgid "cumulative"
-msgstr ""
-
-#: hist.c:385
-msgid "self "
-msgstr ""
-
-#: hist.c:385
-msgid "total "
-msgstr ""
-
-#: hist.c:388
-msgid "time"
-msgstr ""
-
-#: hist.c:388
-msgid "calls"
-msgstr ""
-
-#: hist.c:481
-msgid ""
-"\n"
-"\n"
-"\n"
-"flat profile:\n"
-msgstr ""
-
-#: hist.c:487
-msgid "Flat profile:\n"
-msgstr ""
-
-#: mips.c:85
-#, c-format
-msgid "[find_call] 0x%lx: jal"
-msgstr ""
-
-#: mips.c:110
-#, c-format
-msgid "[find_call] 0x%lx: jalr\n"
-msgstr ""
-
-#: source.c:166
-#, c-format
-msgid "%s: could not locate `%s'\n"
-msgstr ""
-
-#: source.c:241
-#, c-format
-msgid "*** File %s:\n"
-msgstr ""
-
-#: utils.c:109
-#, c-format
-msgid " <cycle %d>"
-msgstr ""
diff --git a/contrib/binutils/include/callback.h b/contrib/binutils/include/callback.h
deleted file mode 100644
index 30752842ed90..000000000000
--- a/contrib/binutils/include/callback.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/* Remote target system call callback support.
- Copyright 1997 Free Software Foundation, Inc.
- Contributed by Cygnus Solutions.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* This interface isn't intended to be specific to any particular kind
- of remote (hardware, simulator, whatever). As such, support for it
- (e.g. sim/common/callback.c) should *not* live in the simulator source
- tree, nor should it live in the gdb source tree. */
-
-/* There are various ways to handle system calls:
-
- 1) Have a simulator intercept the appropriate trap instruction and
- directly perform the system call on behalf of the target program.
- This is the typical way of handling system calls for embedded targets.
- [Handling system calls for embedded targets isn't that much of an
- oxymoron as running compiler testsuites make use of the capability.]
-
- This method of system call handling is done when STATE_ENVIRONMENT
- is ENVIRONMENT_USER.
-
- 2) Have a simulator emulate the hardware as much as possible.
- If the program running on the real hardware communicates with some sort
- of target manager, one would want to be able to run this program on the
- simulator as well.
-
- This method of system call handling is done when STATE_ENVIRONMENT
- is ENVIRONMENT_OPERATING.
-*/
-
-#ifndef CALLBACK_H
-#define CALLBACK_H
-
-/* ??? The reason why we check for va_start here should be documented. */
-
-#ifndef va_start
-#include <ansidecl.h>
-#ifdef ANSI_PROTOTYPES
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#endif
-
-/* Mapping of host/target values. */
-/* ??? For debugging purposes, one might want to add a string of the
- name of the symbol. */
-
-typedef struct {
- int host_val;
- int target_val;
-} CB_TARGET_DEFS_MAP;
-
-#define MAX_CALLBACK_FDS 10
-
-/* Forward decl for stat/fstat. */
-struct stat;
-
-typedef struct host_callback_struct host_callback;
-
-struct host_callback_struct
-{
- int (*close) PARAMS ((host_callback *,int));
- int (*get_errno) PARAMS ((host_callback *));
- int (*isatty) PARAMS ((host_callback *, int));
- int (*lseek) PARAMS ((host_callback *, int, long , int));
- int (*open) PARAMS ((host_callback *, const char*, int mode));
- int (*read) PARAMS ((host_callback *,int, char *, int));
- int (*read_stdin) PARAMS (( host_callback *, char *, int));
- int (*rename) PARAMS ((host_callback *, const char *, const char *));
- int (*system) PARAMS ((host_callback *, const char *));
- long (*time) PARAMS ((host_callback *, long *));
- int (*unlink) PARAMS ((host_callback *, const char *));
- int (*write) PARAMS ((host_callback *,int, const char *, int));
- int (*write_stdout) PARAMS ((host_callback *, const char *, int));
- void (*flush_stdout) PARAMS ((host_callback *));
- int (*write_stderr) PARAMS ((host_callback *, const char *, int));
- void (*flush_stderr) PARAMS ((host_callback *));
- int (*stat) PARAMS ((host_callback *, const char *, struct stat *));
- int (*fstat) PARAMS ((host_callback *, int, struct stat *));
-
- /* When present, call to the client to give it the oportunity to
- poll any io devices for a request to quit (indicated by a nonzero
- return value). */
- int (*poll_quit) PARAMS ((host_callback *));
-
- /* Used when the target has gone away, so we can close open
- handles and free memory etc etc. */
- int (*shutdown) PARAMS ((host_callback *));
- int (*init) PARAMS ((host_callback *));
-
- /* depreciated, use vprintf_filtered - Talk to the user on a console. */
- void (*printf_filtered) PARAMS ((host_callback *, const char *, ...));
-
- /* Talk to the user on a console. */
- void (*vprintf_filtered) PARAMS ((host_callback *, const char *, va_list));
-
- /* Same as vprintf_filtered but to stderr. */
- void (*evprintf_filtered) PARAMS ((host_callback *, const char *, va_list));
-
- /* Print an error message and "exit".
- In the case of gdb "exiting" means doing a longjmp back to the main
- command loop. */
- void (*error) PARAMS ((host_callback *, const char *, ...));
-
- int last_errno; /* host format */
-
- int fdmap[MAX_CALLBACK_FDS];
- char fdopen[MAX_CALLBACK_FDS];
- char alwaysopen[MAX_CALLBACK_FDS];
-
- /* System call numbers. */
- CB_TARGET_DEFS_MAP *syscall_map;
- /* Errno values. */
- CB_TARGET_DEFS_MAP *errno_map;
- /* Flags to the open system call. */
- CB_TARGET_DEFS_MAP *open_map;
- /* Signal numbers. */
- CB_TARGET_DEFS_MAP *signal_map;
- /* Layout of `stat' struct.
- The format is a series of "name,length" pairs separated by colons.
- Empty space is indicated with a `name' of "space".
- All padding must be explicitly mentioned.
- Lengths are in bytes. If this needs to be extended to bits,
- use "name.bits".
- Example: "st_dev,4:st_ino,4:st_mode,4:..." */
- const char *stat_map;
-
- /* Marker for those wanting to do sanity checks.
- This should remain the last member of this struct to help catch
- miscompilation errors. */
-#define HOST_CALLBACK_MAGIC 4705 /* teds constant */
- int magic;
-};
-
-extern host_callback default_callback;
-
-/* Canonical versions of system call numbers.
- It's not intended to willy-nilly throw every system call ever heard
- of in here. Only include those that have an important use.
- ??? One can certainly start a discussion over the ones that are currently
- here, but that will always be true. */
-
-/* These are used by the ANSI C support of libc. */
-#define CB_SYS_exit 1
-#define CB_SYS_open 2
-#define CB_SYS_close 3
-#define CB_SYS_read 4
-#define CB_SYS_write 5
-#define CB_SYS_lseek 6
-#define CB_SYS_unlink 7
-#define CB_SYS_getpid 8
-#define CB_SYS_kill 9
-#define CB_SYS_fstat 10
-/*#define CB_SYS_sbrk 11 - not currently a system call, but reserved. */
-
-/* ARGV support. */
-#define CB_SYS_argvlen 12
-#define CB_SYS_argv 13
-
-/* These are extras added for one reason or another. */
-#define CB_SYS_chdir 14
-#define CB_SYS_stat 15
-#define CB_SYS_chmod 16
-#define CB_SYS_utime 17
-#define CB_SYS_time 18
-
-/* Struct use to pass and return information necessary to perform a
- system call. */
-/* FIXME: Need to consider target word size. */
-
-typedef struct cb_syscall {
- /* The target's value of what system call to perform. */
- int func;
- /* The arguments to the syscall. */
- long arg1, arg2, arg3, arg4;
-
- /* The result. */
- long result;
- /* Some system calls have two results. */
- long result2;
- /* The target's errno value, or 0 if success.
- This is converted to the target's value with host_to_target_errno. */
- int errcode;
-
- /* Working space to be used by memory read/write callbacks. */
- PTR p1;
- PTR p2;
- long x1,x2;
-
- /* Callbacks for reading/writing memory (e.g. for read/write syscalls).
- ??? long or unsigned long might be better to use for the `count'
- argument here. We mimic sim_{read,write} for now. Be careful to
- test any changes with -Wall -Werror, mixed signed comparisons
- will get you. */
- int (*read_mem) PARAMS ((host_callback * /*cb*/, struct cb_syscall * /*sc*/,
- unsigned long /*taddr*/, char * /*buf*/,
- int /*bytes*/));
- int (*write_mem) PARAMS ((host_callback * /*cb*/, struct cb_syscall * /*sc*/,
- unsigned long /*taddr*/, const char * /*buf*/,
- int /*bytes*/));
-
- /* For sanity checking, should be last entry. */
- int magic;
-} CB_SYSCALL;
-
-/* Magic number sanity checker. */
-#define CB_SYSCALL_MAGIC 0x12344321
-
-/* Macro to initialize CB_SYSCALL. Called first, before filling in
- any fields. */
-#define CB_SYSCALL_INIT(sc) \
-do { \
- memset ((sc), 0, sizeof (*(sc))); \
- (sc)->magic = CB_SYSCALL_MAGIC; \
-} while (0)
-
-/* Return codes for various interface routines. */
-
-typedef enum {
- CB_RC_OK = 0,
- /* generic error */
- CB_RC_ERR,
- /* either file not found or no read access */
- CB_RC_ACCESS,
- CB_RC_NO_MEM
-} CB_RC;
-
-/* Read in target values for system call numbers, errno values, signals. */
-CB_RC cb_read_target_syscall_maps PARAMS ((host_callback *, const char *));
-
-/* Translate target to host syscall function numbers. */
-int cb_target_to_host_syscall PARAMS ((host_callback *, int));
-
-/* Translate host to target errno value. */
-int cb_host_to_target_errno PARAMS ((host_callback *, int));
-
-/* Translate target to host open flags. */
-int cb_target_to_host_open PARAMS ((host_callback *, int));
-
-/* Translate target signal number to host. */
-int cb_target_to_host_signal PARAMS ((host_callback *, int));
-
-/* Translate host signal number to target. */
-int cb_host_to_target_signal PARAMS ((host_callback *, int));
-
-/* Translate host stat struct to target.
- If stat struct ptr is NULL, just compute target stat struct size.
- Result is size of target stat struct or 0 if error. */
-int cb_host_to_target_stat PARAMS ((host_callback *, const struct stat *, PTR));
-
-/* Perform a system call. */
-CB_RC cb_syscall PARAMS ((host_callback *, CB_SYSCALL *));
-
-#endif
diff --git a/contrib/binutils/include/elf/arm-oabi.h b/contrib/binutils/include/elf/arm-oabi.h
deleted file mode 100644
index da5e7316eed6..000000000000
--- a/contrib/binutils/include/elf/arm-oabi.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* ARM ELF support for BFD.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-
- This file is part of BFD, the Binary File Descriptor library.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#ifndef _ELF_ARM_H
-#define _ELF_ARM_H
-
-#include "elf/reloc-macros.h"
-
-/* Processor specific flags for the ELF header e_flags field. */
-#define EF_ARM_RELEXEC 0x01
-#define EF_ARM_HASENTRY 0x02
-#define EF_INTERWORK 0x04
-#define EF_APCS_26 0x08
-#define EF_APCS_FLOAT 0x10
-#define EF_PIC 0x20
-#define EF_ALIGN8 0x40 /* 8-bit structure alignment is in use. */
-#define EF_NEW_ABI 0x80
-#define EF_OLD_ABI 0x100
-
-/* Local aliases for some flags to match names used by COFF port. */
-#define F_INTERWORK EF_INTERWORK
-#define F_APCS26 EF_APCS_26
-#define F_APCS_FLOAT EF_APCS_FLOAT
-#define F_PIC EF_PIC
-
-/* Additional symbol types for Thumb. */
-#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
-#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
-
-/* ARM-specific values for sh_flags. */
-#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */
-#define SHF_COMDEF 0x80000000 /* Section may be multiply defined in the input to a link step. */
-
-/* ARM-specific program header flags. */
-#define PF_ARM_SB 0x10000000 /* Segment contains the location addressed by the static base. */
-
-/* Relocation types. */
-START_RELOC_NUMBERS (elf_arm_reloc_type)
- RELOC_NUMBER (R_ARM_NONE, 0)
- RELOC_NUMBER (R_ARM_PC24, 1)
- RELOC_NUMBER (R_ARM_ABS32, 2)
- RELOC_NUMBER (R_ARM_REL32, 3)
- RELOC_NUMBER (R_ARM_ABS8, 4)
- RELOC_NUMBER (R_ARM_ABS16, 5)
- RELOC_NUMBER (R_ARM_ABS12, 6)
- RELOC_NUMBER (R_ARM_THM_ABS5, 7)
- RELOC_NUMBER (R_ARM_THM_PC22, 8)
- RELOC_NUMBER (R_ARM_SBREL32, 9)
- RELOC_NUMBER (R_ARM_AMP_VCALL9, 10)
- RELOC_NUMBER (R_ARM_THM_PC11, 11) /* Cygnus extension to abi: Thumb unconditional branch. */
- RELOC_NUMBER (R_ARM_THM_PC9, 12) /* Cygnus extension to abi: Thumb conditional branch. */
- RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 13)
- RELOC_NUMBER (R_ARM_GNU_VTENTRY, 14)
- RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */
- RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */
- RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* Create PLT entry. */
- RELOC_NUMBER (R_ARM_RELATIVE, 23) /* Adjust by program base. */
- RELOC_NUMBER (R_ARM_GOTOFF, 24) /* 32 bit offset to GOT. */
- RELOC_NUMBER (R_ARM_GOTPC, 25) /* 32 bit PC relative offset to GOT. */
- RELOC_NUMBER (R_ARM_GOT32, 26) /* 32 bit GOT entry. */
- RELOC_NUMBER (R_ARM_PLT32, 27) /* 32 bit PLT address. */
- FAKE_RELOC (FIRST_INVALID_RELOC, 28)
- FAKE_RELOC (LAST_INVALID_RELOC, 249)
- RELOC_NUMBER (R_ARM_RSBREL32, 250)
- RELOC_NUMBER (R_ARM_THM_RPC22, 251)
- RELOC_NUMBER (R_ARM_RREL32, 252)
- RELOC_NUMBER (R_ARM_RABS32, 253)
- RELOC_NUMBER (R_ARM_RPC24, 254)
- RELOC_NUMBER (R_ARM_RBASE, 255)
-END_RELOC_NUMBERS
-
-#endif
diff --git a/contrib/binutils/include/elf/po/Make-in b/contrib/binutils/include/elf/po/Make-in
deleted file mode 100644
index 0552db1feef3..000000000000
--- a/contrib/binutils/include/elf/po/Make-in
+++ /dev/null
@@ -1,251 +0,0 @@
-# Makefile for program source directory in GNU NLS utilities package.
-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file file be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
-subdir = po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-
-CC = @CC@
-GENCAT = @GENCAT@
-GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
-MSGMERGE = PATH=../src:$$PATH msgmerge
-
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I.. -I$(top_srcdir)/intl
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-SOURCES = cat-id-tbl.c
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
-stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
-
-.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-
-.c.o:
- $(COMPILE) $<
-
-.po.pox:
- $(MAKE) $(PACKAGE).pot
- $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
-
-.po.mo:
- $(MSGFMT) -o $@ $<
-
-.po.gmo:
- file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
- && rm -f $$file && $(GMSGFMT) -o $$file $<
-
-.po.cat:
- sed -f ../intl/po2msg.sed < $< > $*.msg \
- && rm -f $@ && $(GENCAT) $@ $*.msg
-
-
-all: all-@USE_NLS@
-
-all-yes: $(CATALOGS) @MAINT@ $(PACKAGE).pot
-all-no:
-
-$(srcdir)/$(PACKAGE).pot: $(POTFILES)
- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
- --add-comments --keyword=_ --keyword=N_ \
- --files-from=$(srcdir)/POTFILES.in
- rm -f $(srcdir)/$(PACKAGE).pot
- mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
-
-$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
-$(srcdir)/stamp-cat-id: $(PACKAGE).pot
- rm -f cat-id-tbl.tmp
- sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
- | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
- if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
- rm cat-id-tbl.tmp; \
- else \
- echo cat-id-tbl.c changed; \
- rm -f $(srcdir)/cat-id-tbl.c; \
- mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
- fi
- cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-
-
-install: install-exec install-data
-install-exec:
-install-info:
-install-data: install-data-@USE_NLS@
-install-data-no: all
-install-data-yes: all
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(datadir); \
- else \
- $(top_srcdir)/mkinstalldirs $(datadir); \
- fi
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- case "$$cat" in \
- *.gmo) destdir=$(gnulocaledir);; \
- *) destdir=$(localedir);; \
- esac; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- dir=$$destdir/$$lang/LC_MESSAGES; \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $$dir; \
- else \
- $(top_srcdir)/mkinstalldirs $$dir; \
- fi; \
- if test -r $$cat; then \
- $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- else \
- $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- fi; \
- if test -r $$cat.m; then \
- $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- if test -r $(srcdir)/$$cat.m ; then \
- $(INSTALL_DATA) $(srcdir)/$$cat.m \
- $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- true; \
- fi; \
- fi; \
- done
- if test "$(PACKAGE)" = "gettext"; then \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(gettextsrcdir); \
- else \
- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
- fi; \
- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
- $(gettextsrcdir)/Makefile.in.in; \
- else \
- : ; \
- fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- done
- rm -f $(gettextsrcdir)/po-Makefile.in.in
-
-check: all
-
-cat-id-tbl.o: ../intl/libgettext.h
-
-dvi info tags TAGS ID:
-
-mostlyclean:
- rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f $(GMOFILES)
-
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- for file in $$dists; do \
- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir); \
- done
-
-update-po: Makefile
- $(MAKE) $(PACKAGE).pot
- PATH=`pwd`/../src:$$PATH; \
- cd $(srcdir); \
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- mv $$lang.po $$lang.old.po; \
- echo "$$lang:"; \
- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
- rm -f $$lang.old.po; \
- else \
- echo "msgmerge for $$cat failed!"; \
- rm -f $$lang.po; \
- mv $$lang.old.po $$lang.po; \
- fi; \
- done
-
-POTFILES: POTFILES.in
- ( if test 'x$(srcdir)' != 'x.'; then \
- posrcprefix='$(top_srcdir)/'; \
- else \
- posrcprefix="../"; \
- fi; \
- rm -f $@-t $@ \
- && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
- -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
- | sed -e '$$s/\\$$//') > $@-t \
- && chmod a-w $@-t \
- && mv $@-t $@ )
-
-POTFILES.in: @MAINT@ ../Makefile
- cd .. && $(MAKE) po/POTFILES.in
-
-Makefile: Make-in ../config.status POTFILES
- cd .. \
- && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
- CONFIG_HEADERS= $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/contrib/binutils/include/elf/po/POTFILES.in b/contrib/binutils/include/elf/po/POTFILES.in
deleted file mode 100644
index a3a05867fb25..000000000000
--- a/contrib/binutils/include/elf/po/POTFILES.in
+++ /dev/null
@@ -1,55 +0,0 @@
-addr2line.c
-ar.c
-arsup.c
-arsup.h
-bucomm.c
-bucomm.h
-budbg.h
-coffdump.c
-coffgrok.c
-coffgrok.h
-debug.c
-debug.c
-debug.h
-dlltool.c
-dlltool.h
-dllwrap.c
-dyn-string.c
-dyn-string.h
-filemode.c
-ieee.c
-ieee.c
-is-ranlib.c
-is-strip.c
-maybe-ranlib.c
-maybe-strip.c
-nlmconv.c
-nlmconv.h
-nm.c
-not-ranlib.c
-not-strip.c
-objcopy.c
-objdump.c
-prdbg.c
-rdcoff.c
-rdcoff.c
-rddbg.c
-rddbg.c
-readelf.c
-rename.c
-resbin.c
-rescoff.c
-resrc.c
-resres.c
-size.c
-srconv.c
-stabs.c
-stabs.c
-strings.c
-sysdump.c
-version.c
-windres.c
-windres.h
-winduni.c
-winduni.h
-wrstabs.c
diff --git a/contrib/binutils/include/elf/po/binutils.pot b/contrib/binutils/include/elf/po/binutils.pot
deleted file mode 100644
index ed7ba0c4282b..000000000000
--- a/contrib/binutils/include/elf/po/binutils.pot
+++ /dev/null
@@ -1,3756 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-05 14:09+0930\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: addr2line.c:76
-#, c-format
-msgid ""
-"Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n"
-" [-e executable] [--exe=executable] [--demangle]\n"
-" [--basenames] [--functions] [addr addr ...]\n"
-msgstr ""
-
-#: addr2line.c:83 ar.c:286 nlmconv.c:1141 nm.c:306 objcopy.c:358 objcopy.c:390
-#: objdump.c:277 readelf.c:1703 size.c:89 strings.c:512 windres.c:737
-#, c-format
-msgid "Report bugs to %s\n"
-msgstr ""
-
-#: addr2line.c:243
-#, c-format
-msgid "%s: can not get addresses from archive"
-msgstr ""
-
-#: ar.c:235
-#, c-format
-msgid "no entry %s in archive\n"
-msgstr ""
-
-#: ar.c:252
-#, c-format
-msgid ""
-"Usage: %s [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file "
-"file...\n"
-msgstr ""
-
-#: ar.c:255
-#, c-format
-msgid " %s -M [<mri-script]\n"
-msgstr ""
-
-#: ar.c:256
-msgid " commands:\n"
-msgstr ""
-
-#: ar.c:257
-msgid " d - delete file(s) from the archive\n"
-msgstr ""
-
-#: ar.c:258
-msgid " m[ab] - move file(s) in the archive\n"
-msgstr ""
-
-#: ar.c:259
-msgid " p - print file(s) found in the archive\n"
-msgstr ""
-
-#: ar.c:260
-msgid " q[f] - quick append file(s) to the archive\n"
-msgstr ""
-
-#: ar.c:261
-msgid ""
-" r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
-msgstr ""
-
-#: ar.c:262
-msgid " t - display contents of archive\n"
-msgstr ""
-
-#: ar.c:263
-msgid " x[o] - extract file(s) from the archive\n"
-msgstr ""
-
-#: ar.c:264
-msgid " command specific modifiers:\n"
-msgstr ""
-
-#: ar.c:265
-msgid " [a] - put file(s) after [member-name]\n"
-msgstr ""
-
-#: ar.c:266
-msgid " [b] - put file(s) before [member-name] (same as [i])\n"
-msgstr ""
-
-#: ar.c:267
-msgid " [N] - use instance [count] of name\n"
-msgstr ""
-
-#: ar.c:268
-msgid " [f] - truncate inserted file names\n"
-msgstr ""
-
-#: ar.c:269
-msgid " [P] - use full path names when matching\n"
-msgstr ""
-
-#: ar.c:270
-msgid " [o] - preserve original dates\n"
-msgstr ""
-
-#: ar.c:271
-msgid ""
-" [u] - only replace files that are newer than current archive "
-"contents\n"
-msgstr ""
-
-#: ar.c:272
-msgid " generic modifiers:\n"
-msgstr ""
-
-#: ar.c:273
-msgid " [c] - do not warn if the library had to be created\n"
-msgstr ""
-
-#: ar.c:274
-msgid " [s] - create an archive index (cf. ranlib)\n"
-msgstr ""
-
-#: ar.c:275
-msgid " [S] - do not build a symbol table\n"
-msgstr ""
-
-#: ar.c:276
-msgid " [v] - be verbose\n"
-msgstr ""
-
-#: ar.c:277
-msgid " [V] - display the version number\n"
-msgstr ""
-
-#: ar.c:281
-#, c-format
-msgid "Usage: %s [-vV] archive\n"
-msgstr ""
-
-#: ar.c:466
-msgid "two different operation options specified"
-msgstr ""
-
-#: ar.c:541
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr ""
-
-#: ar.c:573
-msgid "no operation specified"
-msgstr ""
-
-#: ar.c:576
-msgid "`u' is only meaningful with the `r' option."
-msgstr ""
-
-#: ar.c:586
-msgid "`N' is only meaningful with the `x' and 'd' options."
-msgstr ""
-
-#: ar.c:589
-msgid "Value for `N' must be positive."
-msgstr ""
-
-#: ar.c:672
-#, c-format
-msgid "%s: internal error -- this option not implemented\n"
-msgstr ""
-
-#: ar.c:790 ar.c:841 ar.c:1283 objcopy.c:1104
-#, c-format
-msgid "internal stat error on %s"
-msgstr ""
-
-#: ar.c:810 ar.c:878
-#, c-format
-msgid "%s is not a valid archive"
-msgstr ""
-
-#: ar.c:846
-#, c-format
-msgid "stat returns negative size for %s"
-msgstr ""
-
-#: ar.c:967
-#, c-format
-msgid "%s is not an archive"
-msgstr ""
-
-#: ar.c:974
-#, c-format
-msgid "%s: creating %s\n"
-msgstr ""
-
-#: ar.c:1181
-#, c-format
-msgid "No member named `%s'\n"
-msgstr ""
-
-#: ar.c:1233
-#, c-format
-msgid "%s: no entry %s in archive %s!\n"
-msgstr ""
-
-#: ar.c:1395
-#, c-format
-msgid "%s: no archive map to update"
-msgstr ""
-
-#: arsup.c:87
-#, c-format
-msgid "No entry %s in archive.\n"
-msgstr ""
-
-#: arsup.c:119
-#, c-format
-msgid "Can't open file %s\n"
-msgstr ""
-
-#: arsup.c:167
-#, c-format
-msgid "%s: Can't open output archive %s\n"
-msgstr ""
-
-#: arsup.c:179
-#, c-format
-msgid "%s: Can't open input archive %s\n"
-msgstr ""
-
-#: arsup.c:185
-#, c-format
-msgid "%s: file %s is not an archive\n"
-msgstr ""
-
-#: arsup.c:226
-#, c-format
-msgid "%s: no output archive specified yet\n"
-msgstr ""
-
-#: arsup.c:246 arsup.c:281 arsup.c:317 arsup.c:337 arsup.c:395
-#, c-format
-msgid "%s: no open output archive\n"
-msgstr ""
-
-#: arsup.c:254 arsup.c:355 arsup.c:375
-#, c-format
-msgid "%s: can't open file %s\n"
-msgstr ""
-
-#: arsup.c:302 arsup.c:371 arsup.c:450
-#, c-format
-msgid "%s: can't find module file %s\n"
-msgstr ""
-
-#: arsup.c:402
-#, c-format
-msgid "Current open archive is %s\n"
-msgstr ""
-
-#: arsup.c:429
-#, c-format
-msgid "%s: no open archive\n"
-msgstr ""
-
-#: bucomm.c:139
-#, c-format
-msgid "can't set BFD default target to `%s': %s"
-msgstr ""
-
-#: bucomm.c:151
-#, c-format
-msgid "%s: Matching formats:"
-msgstr ""
-
-#: bucomm.c:168
-msgid "Supported targets:"
-msgstr ""
-
-#: bucomm.c:170
-#, c-format
-msgid "%s: supported targets:"
-msgstr ""
-
-#: bucomm.c:263
-#, c-format
-msgid "%s: bad number: %s"
-msgstr ""
-
-#: coffdump.c:94
-#, c-format
-msgid "#lines %d "
-msgstr ""
-
-#: coffdump.c:456 sysdump.c:719
-#, c-format
-msgid "%s: Print a human readable interpretation of a SYSROFF object file\n"
-msgstr ""
-
-#: coffdump.c:498 srconv.c:1940 sysdump.c:755
-#, c-format
-msgid "GNU %s version %s\n"
-msgstr ""
-
-#: coffdump.c:516 srconv.c:1977 sysdump.c:775
-#, c-format
-msgid "%s: no input file specified\n"
-msgstr ""
-
-#: debug.c:653
-msgid "debug_add_to_current_namespace: no current file"
-msgstr ""
-
-#: debug.c:736
-msgid "debug_start_source: no debug_set_filename call"
-msgstr ""
-
-#: debug.c:795
-msgid "debug_record_function: no debug_set_filename call"
-msgstr ""
-
-#: debug.c:851
-msgid "debug_record_parameter: no current function"
-msgstr ""
-
-#: debug.c:885
-msgid "debug_end_function: no current function"
-msgstr ""
-
-#: debug.c:891
-msgid "debug_end_function: some blocks were not closed"
-msgstr ""
-
-#: debug.c:921
-msgid "debug_start_block: no current block"
-msgstr ""
-
-#: debug.c:959
-msgid "debug_end_block: no current block"
-msgstr ""
-
-#: debug.c:966
-msgid "debug_end_block: attempt to close top level block"
-msgstr ""
-
-#: debug.c:992
-msgid "debug_record_line: no current unit"
-msgstr ""
-
-#. FIXME
-#: debug.c:1046
-msgid "debug_start_common_block: not implemented"
-msgstr ""
-
-#. FIXME
-#: debug.c:1058
-msgid "debug_end_common_block: not implemented"
-msgstr ""
-
-#. FIXME.
-#: debug.c:1152
-msgid "debug_record_label not implemented"
-msgstr ""
-
-#: debug.c:1178
-msgid "debug_record_variable: no current file"
-msgstr ""
-
-#: debug.c:1194
-msgid "debug_record_variable: no current block"
-msgstr ""
-
-#: debug.c:1764
-msgid "debug_make_undefined_type: unsupported kind"
-msgstr ""
-
-#: debug.c:1970
-msgid "debug_name_type: no current file"
-msgstr ""
-
-#: debug.c:2018
-msgid "debug_tag_type: no current file"
-msgstr ""
-
-#: debug.c:2026
-msgid "debug_tag_type: extra tag attempted"
-msgstr ""
-
-#: debug.c:2066
-#, c-format
-msgid "Warning: changing type size from %d to %d\n"
-msgstr ""
-
-#: debug.c:2090
-msgid "debug_find_named_type: no current compilation unit"
-msgstr ""
-
-#: debug.c:2197
-#, c-format
-msgid "debug_get_real_type: circular debug information for %s\n"
-msgstr ""
-
-#: debug.c:2662
-msgid "debug_write_type: illegal type encountered"
-msgstr ""
-
-#: dlltool.c:770 dlltool.c:794 dlltool.c:819
-#, c-format
-msgid "Internal error: Unknown machine type: %d\n"
-msgstr ""
-
-#: dlltool.c:856
-#, c-format
-msgid "Can't open def file: %s"
-msgstr ""
-
-#: dlltool.c:861
-#, c-format
-msgid "Processing def file: %s"
-msgstr ""
-
-#: dlltool.c:865
-msgid "Processed def file"
-msgstr ""
-
-#: dlltool.c:890
-#, c-format
-msgid "Syntax error in def file %s:%d\n"
-msgstr ""
-
-#: dlltool.c:923
-#, c-format
-msgid "NAME: %s base: %x"
-msgstr ""
-
-#: dlltool.c:926
-msgid "Can't have LIBRARY and NAME\n"
-msgstr ""
-
-#: dlltool.c:942
-#, c-format
-msgid "LIBRARY: %s base: %x"
-msgstr ""
-
-#: dlltool.c:945
-#, c-format
-msgid "%s: Can't have LIBRARY and NAME\n"
-msgstr ""
-
-#: dlltool.c:1200 resrc.c:271
-#, c-format
-msgid "wait: %s"
-msgstr ""
-
-#: dlltool.c:1205 resrc.c:276
-#, c-format
-msgid "subprocess got fatal signal %d"
-msgstr ""
-
-#: dlltool.c:1211
-#, c-format
-msgid "%s exited with status %d\n"
-msgstr ""
-
-#: dlltool.c:1243
-#, c-format
-msgid "Sucking in info from %s section in %s\n"
-msgstr ""
-
-#: dlltool.c:1367
-#, c-format
-msgid "Excluding symbol: %s\n"
-msgstr ""
-
-#: dlltool.c:1462 dlltool.c:1473 nm.c:904 nm.c:915 objdump.c:444 objdump.c:461
-#, c-format
-msgid "%s: no symbols\n"
-msgstr ""
-
-#. FIXME: we ought to read in and block out the base relocations
-#: dlltool.c:1500
-#, c-format
-msgid "Done reading %s\n"
-msgstr ""
-
-#: dlltool.c:1511
-#, c-format
-msgid "Unable to open object file: %s"
-msgstr ""
-
-#: dlltool.c:1514
-#, c-format
-msgid "Scanning object file %s"
-msgstr ""
-
-#: dlltool.c:1529
-#, c-format
-msgid "Cannot produce mcore-elf dll from archive file: %s"
-msgstr ""
-
-#: dlltool.c:1621
-msgid "Adding exports to output file"
-msgstr ""
-
-#: dlltool.c:1666
-msgid "Added exports to output file"
-msgstr ""
-
-#: dlltool.c:1790
-#, c-format
-msgid "Generating export file: %s\n"
-msgstr ""
-
-#: dlltool.c:1795
-#, c-format
-msgid "Unable to open temporary assembler file: %s"
-msgstr ""
-
-#: dlltool.c:1798
-#, c-format
-msgid "Opened temporary file: %s"
-msgstr ""
-
-#: dlltool.c:2012
-msgid "Generated exports file"
-msgstr ""
-
-#: dlltool.c:2267
-#, c-format
-msgid "bfd_open failed open stub file: %s"
-msgstr ""
-
-#: dlltool.c:2270
-#, c-format
-msgid "Creating stub file: %s"
-msgstr ""
-
-#: dlltool.c:2657
-#, c-format
-msgid "failed to open temporary head file: %s"
-msgstr ""
-
-#: dlltool.c:2716
-#, c-format
-msgid "failed to open temporary tail file: %s"
-msgstr ""
-
-#: dlltool.c:2784
-#, c-format
-msgid "Can't open .lib file: %s"
-msgstr ""
-
-#: dlltool.c:2787
-#, c-format
-msgid "Creating library file: %s\n"
-msgstr ""
-
-#: dlltool.c:2846
-#, c-format
-msgid "cannot delete %s: %s\n"
-msgstr ""
-
-#: dlltool.c:2850
-msgid "Created lib file"
-msgstr ""
-
-#: dlltool.c:2955
-#, c-format
-msgid "Warning, ignoring duplicate EXPORT %s %d,%d\n"
-msgstr ""
-
-#: dlltool.c:2961
-#, c-format
-msgid "Error, duplicate EXPORT with oridinals: %s"
-msgstr ""
-
-#: dlltool.c:3088
-msgid "Processing definitions"
-msgstr ""
-
-#: dlltool.c:3126
-msgid "Processed definitions"
-msgstr ""
-
-#. xgetext:c-format
-#: dlltool.c:3137
-#, c-format
-msgid "Usage %s <options> <object-files>\n"
-msgstr ""
-
-#. xgetext:c-format
-#: dlltool.c:3139
-#, c-format
-msgid ""
-" -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
-msgstr ""
-
-#: dlltool.c:3140
-msgid ""
-" possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, "
-"ppc, thumb\n"
-msgstr ""
-
-#: dlltool.c:3141
-msgid " -e --output-exp <outname> Generate an export file.\n"
-msgstr ""
-
-#: dlltool.c:3142
-msgid " -l --output-lib <outname> Generate an interface library.\n"
-msgstr ""
-
-#: dlltool.c:3143
-msgid " -a --add-indirect Add dll indirects to export file.\n"
-msgstr ""
-
-#: dlltool.c:3144
-msgid ""
-" -D --dllname <name> Name of input dll to put into interface lib.\n"
-msgstr ""
-
-#: dlltool.c:3145
-msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
-msgstr ""
-
-#: dlltool.c:3146
-msgid " -z --output-def <deffile> Name of .def file to be created.\n"
-msgstr ""
-
-#: dlltool.c:3147
-msgid " --export-all-symbols Export all symbols to .def\n"
-msgstr ""
-
-#: dlltool.c:3148
-msgid " --no-export-all-symbols Only export listed symbols\n"
-msgstr ""
-
-#: dlltool.c:3149
-msgid " --exclude-symbols <list> Don't export <list>\n"
-msgstr ""
-
-#: dlltool.c:3150
-msgid " --no-default-excludes Clear default exclude symbols\n"
-msgstr ""
-
-#: dlltool.c:3151
-msgid " -b --base-file <basefile> Read linker generated base file.\n"
-msgstr ""
-
-#: dlltool.c:3152
-msgid " -x --no-idata4 Don't generate idata$4 section.\n"
-msgstr ""
-
-#: dlltool.c:3153
-msgid " -c --no-idata5 Don't generate idata$5 section.\n"
-msgstr ""
-
-#: dlltool.c:3154
-msgid ""
-" -U --add-underscore Add underscores to symbols in interface "
-"library.\n"
-msgstr ""
-
-#: dlltool.c:3155
-msgid " -k --kill-at Kill @<n> from exported names.\n"
-msgstr ""
-
-#: dlltool.c:3156
-msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
-msgstr ""
-
-#: dlltool.c:3157
-msgid " -S --as <name> Use <name> for assembler.\n"
-msgstr ""
-
-#: dlltool.c:3158
-msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
-msgstr ""
-
-#: dlltool.c:3159
-msgid ""
-" -C --compat-implib Create backward compatible import library.\n"
-msgstr ""
-
-#: dlltool.c:3160
-msgid ""
-" -n --no-delete Keep temp files (repeat for extra "
-"preservation).\n"
-msgstr ""
-
-#: dlltool.c:3161
-msgid " -v --verbose Be verbose.\n"
-msgstr ""
-
-#: dlltool.c:3162
-msgid " -V --version Display the program version.\n"
-msgstr ""
-
-#: dlltool.c:3163
-msgid " -h --help Display this information.\n"
-msgstr ""
-
-#: dlltool.c:3165
-msgid ""
-" -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
-msgstr ""
-
-#: dlltool.c:3166
-msgid " -L --linker <name> Use <name> as the linker.\n"
-msgstr ""
-
-#: dlltool.c:3167
-msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
-msgstr ""
-
-#: dlltool.c:3311
-#, c-format
-msgid "Unable to open base-file: %s"
-msgstr ""
-
-#: dlltool.c:3340
-#, c-format
-msgid "Machine '%s' not supported"
-msgstr ""
-
-#: dlltool.c:3443 dllwrap.c:215
-#, c-format
-msgid "Tried file: %s"
-msgstr ""
-
-#: dlltool.c:3450 dllwrap.c:222
-#, c-format
-msgid "Using file: %s"
-msgstr ""
-
-#: ieee.c:316
-msgid "unexpected end of debugging information"
-msgstr ""
-
-#: ieee.c:411
-msgid "invalid number"
-msgstr ""
-
-#: ieee.c:470
-msgid "invalid string length"
-msgstr ""
-
-#: ieee.c:527 ieee.c:568
-msgid "expression stack overflow"
-msgstr ""
-
-#: ieee.c:547
-msgid "unsupported IEEE expression operator"
-msgstr ""
-
-#: ieee.c:562
-msgid "unknown section"
-msgstr ""
-
-#: ieee.c:583
-msgid "expression stack underflow"
-msgstr ""
-
-#: ieee.c:597
-msgid "expression stack mismatch"
-msgstr ""
-
-#: ieee.c:636
-msgid "unknown builtin type"
-msgstr ""
-
-#: ieee.c:781
-msgid "BCD float type not supported"
-msgstr ""
-
-#: ieee.c:927
-msgid "unexpected number"
-msgstr ""
-
-#: ieee.c:934
-msgid "unexpected record type"
-msgstr ""
-
-#: ieee.c:967
-msgid "blocks left on stack at end"
-msgstr ""
-
-#: ieee.c:1232
-msgid "unknown BB type"
-msgstr ""
-
-#: ieee.c:1241
-msgid "stack overflow"
-msgstr ""
-
-#: ieee.c:1266
-msgid "stack underflow"
-msgstr ""
-
-#: ieee.c:1380 ieee.c:1452 ieee.c:2151
-msgid "illegal variable index"
-msgstr ""
-
-#: ieee.c:1430
-msgid "illegal type index"
-msgstr ""
-
-#: ieee.c:1440 ieee.c:1477
-msgid "unknown TY code"
-msgstr ""
-
-#: ieee.c:1459
-msgid "undefined variable in TY"
-msgstr ""
-
-#. Pascal file name. FIXME.
-#: ieee.c:1870
-msgid "Pascal file name not supported"
-msgstr ""
-
-#: ieee.c:1918
-msgid "unsupported qualifer"
-msgstr ""
-
-#: ieee.c:2189
-msgid "undefined variable in ATN"
-msgstr ""
-
-#: ieee.c:2232
-msgid "unknown ATN type"
-msgstr ""
-
-#. Reserved for FORTRAN common.
-#: ieee.c:2354
-msgid "unsupported ATN11"
-msgstr ""
-
-#. We have no way to record this information. FIXME.
-#: ieee.c:2381
-msgid "unsupported ATN12"
-msgstr ""
-
-#: ieee.c:2441
-msgid "unexpected string in C++ misc"
-msgstr ""
-
-#: ieee.c:2454
-msgid "bad misc record"
-msgstr ""
-
-#: ieee.c:2497
-msgid "unrecognized C++ misc record"
-msgstr ""
-
-#: ieee.c:2614
-msgid "undefined C++ object"
-msgstr ""
-
-#: ieee.c:2648
-msgid "unrecognized C++ object spec"
-msgstr ""
-
-#: ieee.c:2684
-msgid "unsupported C++ object type"
-msgstr ""
-
-#: ieee.c:2694
-msgid "C++ base class not defined"
-msgstr ""
-
-#: ieee.c:2706 ieee.c:2811
-msgid "C++ object has no fields"
-msgstr ""
-
-#: ieee.c:2725
-msgid "C++ base class not found in container"
-msgstr ""
-
-#: ieee.c:2832
-msgid "C++ data member not found in container"
-msgstr ""
-
-#: ieee.c:2873 ieee.c:3023
-msgid "unknown C++ visibility"
-msgstr ""
-
-#: ieee.c:2907
-msgid "bad C++ field bit pos or size"
-msgstr ""
-
-#: ieee.c:2999
-msgid "bad type for C++ method function"
-msgstr ""
-
-#: ieee.c:3009
-msgid "no type information for C++ method function"
-msgstr ""
-
-#: ieee.c:3048
-msgid "C++ static virtual method"
-msgstr ""
-
-#: ieee.c:3143
-msgid "unrecognized C++ object overhead spec"
-msgstr ""
-
-#: ieee.c:3182
-msgid "undefined C++ vtable"
-msgstr ""
-
-#: ieee.c:3253
-msgid "C++ default values not in a function"
-msgstr ""
-
-#: ieee.c:3293
-msgid "unrecognized C++ default type"
-msgstr ""
-
-#: ieee.c:3324
-msgid "reference parameter is not a pointer"
-msgstr ""
-
-#: ieee.c:3409
-msgid "unrecognized C++ reference type"
-msgstr ""
-
-#: ieee.c:3491
-msgid "C++ reference not found"
-msgstr ""
-
-#: ieee.c:3499
-msgid "C++ reference is not pointer"
-msgstr ""
-
-#: ieee.c:3528 ieee.c:3536
-msgid "missing required ASN"
-msgstr ""
-
-#: ieee.c:3566 ieee.c:3574
-msgid "missing required ATN65"
-msgstr ""
-
-#: ieee.c:3588
-msgid "bad ATN65 record"
-msgstr ""
-
-#: ieee.c:4235
-msgid "IEEE numeric overflow: 0x"
-msgstr ""
-
-#: ieee.c:4281
-#, c-format
-msgid "IEEE string length overflow: %u\n"
-msgstr ""
-
-#: ieee.c:5315
-#, c-format
-msgid "IEEE unsupported integer type size %u\n"
-msgstr ""
-
-#: ieee.c:5351
-#, c-format
-msgid "IEEE unsupported float type size %u\n"
-msgstr ""
-
-#: ieee.c:5387
-#, c-format
-msgid "IEEE unsupported complex type size %u\n"
-msgstr ""
-
-#: nlmconv.c:275 srconv.c:1966
-#, c-format
-msgid "%s: input and output files must be different\n"
-msgstr ""
-
-#: nlmconv.c:325
-#, c-format
-msgid "%s: input file named both on command line and with INPUT\n"
-msgstr ""
-
-#: nlmconv.c:336
-#, c-format
-msgid "%s: no input file\n"
-msgstr ""
-
-#: nlmconv.c:366
-#, c-format
-msgid "%s: no name for output file\n"
-msgstr ""
-
-#: nlmconv.c:381
-#, c-format
-msgid "%s: warning:input and output formats are not compatible\n"
-msgstr ""
-
-#: nlmconv.c:411
-msgid "make .bss section"
-msgstr ""
-
-#: nlmconv.c:420
-msgid "make .nlmsections section"
-msgstr ""
-
-#: nlmconv.c:422
-msgid "set .nlmsections flags"
-msgstr ""
-
-#: nlmconv.c:450
-msgid "set .bss vma"
-msgstr ""
-
-#: nlmconv.c:457
-msgid "set .data size"
-msgstr ""
-
-#: nlmconv.c:638
-#, c-format
-msgid "%s: warning: symbol %s imported but not in import list\n"
-msgstr ""
-
-#: nlmconv.c:658
-msgid "set start address"
-msgstr ""
-
-#: nlmconv.c:707
-#, c-format
-msgid "%s: warning: START procedure %s not defined\n"
-msgstr ""
-
-#: nlmconv.c:710
-#, c-format
-msgid "%s: warning: EXIT procedure %s not defined\n"
-msgstr ""
-
-#: nlmconv.c:714
-#, c-format
-msgid "%s: warning: CHECK procedure %s not defined\n"
-msgstr ""
-
-#: nlmconv.c:736 nlmconv.c:928
-msgid "custom section"
-msgstr ""
-
-#: nlmconv.c:757 nlmconv.c:960
-msgid "help section"
-msgstr ""
-
-#: nlmconv.c:779 nlmconv.c:979
-msgid "message section"
-msgstr ""
-
-#: nlmconv.c:795 nlmconv.c:1012
-msgid "module section"
-msgstr ""
-
-#: nlmconv.c:815 nlmconv.c:1029
-msgid "rpc section"
-msgstr ""
-
-#: nlmconv.c:852
-#, c-format
-msgid "%s:%s: warning: shared libraries can not have uninitialized data\n"
-msgstr ""
-
-#: nlmconv.c:873 nlmconv.c:1049
-msgid "shared section"
-msgstr ""
-
-#: nlmconv.c:881
-#, c-format
-msgid "%s: warning: No version number given\n"
-msgstr ""
-
-#: nlmconv.c:922 nlmconv.c:954 nlmconv.c:973 nlmconv.c:1023 nlmconv.c:1043
-#, c-format
-msgid "%s:%s: read: %s\n"
-msgstr ""
-
-#: nlmconv.c:946
-#, c-format
-msgid "%s: warning: MAP and FULLMAP are not supported; try ld -M\n"
-msgstr ""
-
-#: nlmconv.c:1121
-#, c-format
-msgid "%s: Convert an object file into a NetWare Loadable Module\n"
-msgstr ""
-
-#: nlmconv.c:1133
-#, c-format
-msgid ""
-"Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n"
-" [--input-target=bfdname] [--output-target=bfdname]\n"
-" [--header-file=file] [--linker=linker] [--debug]\n"
-" [--help] [--version]\n"
-" [in-file [out-file]]\n"
-msgstr ""
-
-#: nlmconv.c:1173
-#, c-format
-msgid "%s: support not compiled in for %s\n"
-msgstr ""
-
-#: nlmconv.c:1216
-msgid "make section"
-msgstr ""
-
-#: nlmconv.c:1230
-msgid "set section size"
-msgstr ""
-
-#: nlmconv.c:1236
-msgid "set section alignment"
-msgstr ""
-
-#: nlmconv.c:1240
-msgid "set section flags"
-msgstr ""
-
-#: nlmconv.c:1251
-msgid "set .nlmsections size"
-msgstr ""
-
-#: nlmconv.c:1339 nlmconv.c:1347 nlmconv.c:1356 nlmconv.c:1361
-msgid "set .nlmsection contents"
-msgstr ""
-
-#: nlmconv.c:1864
-msgid "stub section sizes"
-msgstr ""
-
-#: nlmconv.c:1913
-msgid "writing stub"
-msgstr ""
-
-#: nlmconv.c:2003
-#, c-format
-msgid "%s: unresolved PC relative reloc against %s\n"
-msgstr ""
-
-#: nlmconv.c:2068
-#, c-format
-msgid "%s: overflow when adjusting relocation against %s\n"
-msgstr ""
-
-#: nlmconv.c:2191
-#, c-format
-msgid "%s: execution of %s failed: "
-msgstr ""
-
-#: nlmconv.c:2206
-#, c-format
-msgid "%s: Execution of %s failed\n"
-msgstr ""
-
-#: nm.c:294
-#, c-format
-msgid ""
-"Usage: %s [-aABCDglnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n"
-" [--debug-syms] [--extern-only] [--print-armap] [--print-file-name]\n"
-" [--numeric-sort] [--no-sort] [--reverse-sort] [--size-sort]\n"
-" [--undefined-only] [--portability] [-f {bsd,sysv,posix}]\n"
-" [--format={bsd,sysv,posix}] [--demangle] [--no-demangle] [--dynamic]\n"
-" [--defined-only] [--line-numbers]\n"
-" [--version] [--help]\n"
-" [file...]\n"
-msgstr ""
-
-#: nm.c:339
-#, c-format
-msgid "%s: %s: invalid radix\n"
-msgstr ""
-
-#: nm.c:365
-#, c-format
-msgid "%s: %s: invalid output format\n"
-msgstr ""
-
-#: nm.c:492
-#, c-format
-msgid "%s: data size %ld\n"
-msgstr ""
-
-#: nm.c:1283
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: nm.c:1285
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s:\n"
-"\n"
-msgstr ""
-
-#: nm.c:1286 nm.c:1340
-msgid ""
-"Name Value Class Type Size Line "
-"Section\n"
-"\n"
-msgstr ""
-
-#: nm.c:1337
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Undefined symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: nm.c:1339
-#, c-format
-msgid ""
-"\n"
-"\n"
-"Symbols from %s[%s]:\n"
-"\n"
-msgstr ""
-
-#: nm.c:1510
-msgid ""
-"\n"
-"Archive index:\n"
-msgstr ""
-
-#: objcopy.c:309
-#, c-format
-msgid "Usage: %s <switches> in-file [out-file]\n"
-msgstr ""
-
-#: objcopy.c:310 objcopy.c:368
-msgid " The switches are:\n"
-msgstr ""
-
-#: objcopy.c:311
-msgid ""
-" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
-" -O --output-target <bfdname> Create an output file in format "
-"<bfdname>\n"
-" -F --target <bfdname> Set both input and output format to "
-"<bfdname>\n"
-" --debugging Convert debugging information, if "
-"possible\n"
-" -p --preserve-dates Copy modified/access timestamps to the "
-"output\n"
-" -j --only-section <name> Only copy section <name> into the output\n"
-" -R --remove-section <name> Remove section <name> from the output\n"
-" -S --strip-all Remove all symbol and relocation "
-"information\n"
-" -g --strip-debug Remove all debugging symbols\n"
-" --strip-unneeded Remove all symbols not needed by "
-"relocations\n"
-" -N --strip-symbol <name> Do not copy symbol <name>\n"
-" -K --keep-symbol <name> Only copy symbol <name>\n"
-" -L --localize-symbol <name> Force symbol <name> to be marked as a "
-"local\n"
-" -W --weaken-symbol <name> Force symbol <name> to be marked as a "
-"weak\n"
-" --weaken Force all global symbols to be marked as "
-"weak\n"
-" -x --discard-all Remove all non-global symbols\n"
-" -X --discard-locals Remove any compiler-generated symbols\n"
-" -i --interleave <number> Only copy one out of every <number> "
-"bytes\n"
-" -b --byte <num> Select byte <num> in every interleaved "
-"block\n"
-" --gap-fill <val> Fill gaps between sections with <val>\n"
-" --pad-to <addr> Pad the last section up to address "
-"<addr>\n"
-" --set-start <addr> Set the start address to <addr>\n"
-" {--change-start|--adjust-start} <incr>\n"
-" Add <incr> to the start address\n"
-" {--change-addresses|--adjust-vma} <incr>\n"
-" Add <incr> to LMA, VMA and start "
-"addresses\n"
-" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
-" Change LMA and VMA of section <name> by "
-"<val>\n"
-" --change-section-lma <name>{=|+|-}<val>\n"
-" Change the LMA of section <name> by "
-"<val>\n"
-" --change-section-vma <name>{=|+|-}<val>\n"
-" Change the VMA of section <name> by "
-"<val>\n"
-" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
-" Warn if a named section does not exist\n"
-" --set-section-flags <name>=<flags>\n"
-" Set section <name>'s properties to "
-"<flags>\n"
-" --add-section <name>=<file> Add section <name> found in <file> to "
-"output\n"
-" --change-leading-char Force output format's leading character "
-"style\n"
-" --remove-leading-char Remove leading character from global "
-"symbols\n"
-" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
-" -v --verbose List all object files modified\n"
-" -V --version Display this program's version number\n"
-" -h --help Display this output\n"
-msgstr ""
-
-#: objcopy.c:367
-#, c-format
-msgid "Usage: %s <switches> in-file(s)\n"
-msgstr ""
-
-#: objcopy.c:369
-msgid ""
-" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
-" -O --output-target <bfdname> Create an output file in format "
-"<bfdname>\n"
-" -F --target <bfdname> Set both input and output format to "
-"<bfdname>\n"
-" -p --preserve-dates Copy modified/access timestamps to the "
-"output\n"
-" -R --remove-section <name> Remove section <name> from the output\n"
-" -s --strip-all Remove all symbol and relocation "
-"information\n"
-" -g -S --strip-debug Remove all debugging symbols\n"
-" --strip-unneeded Remove all symbols not needed by "
-"relocations\n"
-" -N --strip-symbol <name> Do not copy symbol <name>\n"
-" -K --keep-symbol <name> Only copy symbol <name>\n"
-" -x --discard-all Remove all non-global symbols\n"
-" -X --discard-locals Remove any compiler-generated symbols\n"
-" -v --verbose List all object files modified\n"
-" -V --version Display this program's version number\n"
-" -h --help Display this output\n"
-" -o <file> Place stripped output into <file>\n"
-msgstr ""
-
-#: objcopy.c:439
-#, c-format
-msgid "unrecognized section flag `%s'"
-msgstr ""
-
-#: objcopy.c:440
-#, c-format
-msgid "supported flags: %s"
-msgstr ""
-
-#: objcopy.c:692
-#, c-format
-msgid "%s: Multiple redefinition of symbol \"%s\""
-msgstr ""
-
-#: objcopy.c:699
-#, c-format
-msgid "%s: Symbol \"%s\" is target of more than one redefinition"
-msgstr ""
-
-#: objcopy.c:753
-#, c-format
-msgid "copy from %s(%s) to %s(%s)\n"
-msgstr ""
-
-#: objcopy.c:772
-#, c-format
-msgid "Warning: Output file cannot represent architecture %s"
-msgstr ""
-
-#: objcopy.c:799
-#, c-format
-msgid "can't create section `%s': %s"
-msgstr ""
-
-#: objcopy.c:885
-#, c-format
-msgid "Can't fill gap after %s: %s"
-msgstr ""
-
-#: objcopy.c:910
-#, c-format
-msgid "Can't add padding to %s: %s"
-msgstr ""
-
-#: objcopy.c:1048
-#, c-format
-msgid "%s: error copying private BFD data: %s"
-msgstr ""
-
-#: objcopy.c:1082
-#, c-format
-msgid "cannot mkdir %s for archive copying (error: %s)"
-msgstr ""
-
-#: objcopy.c:1351
-#, c-format
-msgid "%s: section `%s': error in %s: %s"
-msgstr ""
-
-#: objcopy.c:1625
-#, c-format
-msgid "%s: can't create debugging section: %s"
-msgstr ""
-
-#: objcopy.c:1640
-#, c-format
-msgid "%s: can't set debugging section contents: %s"
-msgstr ""
-
-#: objcopy.c:1649
-#, c-format
-msgid "%s: don't know how to write debugging information for %s"
-msgstr ""
-
-#: objcopy.c:1754
-#, c-format
-msgid "%s: cannot stat: %s"
-msgstr ""
-
-#: objcopy.c:1804
-msgid "byte number must be non-negative"
-msgstr ""
-
-#: objcopy.c:1810
-msgid "interleave must be positive"
-msgstr ""
-
-#: objcopy.c:1830 objcopy.c:1838
-#, c-format
-msgid "%s both copied and removed"
-msgstr ""
-
-#: objcopy.c:1907 objcopy.c:1977 objcopy.c:2078 objcopy.c:2106
-#, c-format
-msgid "bad format for %s"
-msgstr ""
-
-#: objcopy.c:1910
-#, c-format
-msgid "cannot stat: %s: %s"
-msgstr ""
-
-#: objcopy.c:1928
-#, c-format
-msgid "cannot open: %s: %s"
-msgstr ""
-
-#: objcopy.c:1932
-#, c-format
-msgid "%s: fread failed"
-msgstr ""
-
-#: objcopy.c:2046
-#, c-format
-msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
-msgstr ""
-
-#: objcopy.c:2140
-msgid "byte number must be less than interleave"
-msgstr ""
-
-#: objcopy.c:2159
-#, c-format
-msgid "Cannot stat: %s: %s"
-msgstr ""
-
-#: objcopy.c:2199 objcopy.c:2213
-#, c-format
-msgid "%s %s%c0x%s never used"
-msgstr ""
-
-#: objdump.c:229
-#, c-format
-msgid "Usage: %s <switches> file(s)\n"
-msgstr ""
-
-#: objdump.c:230
-msgid " At least one of the following switches must be given:\n"
-msgstr ""
-
-#: objdump.c:231
-msgid ""
-" -a --archive-headers Display archive header information\n"
-" -f --file-headers Display the contents of the overall file header\n"
-" -p --private-headers Display object format specific file header "
-"contents\n"
-" -h --[section-]headers Display the contents of the section headers\n"
-" -x --all-headers Display the contents of all headers\n"
-" -d --disassemble Display assembler contents of executable "
-"sections\n"
-" -D --disassemble-all Display assembler contents of all sections\n"
-" -S --source Intermix source code with disassembly\n"
-" -s --full-contents Display the full contents of all sections "
-"requested\n"
-" -g --debugging Display debug information in object file\n"
-" -G --stabs Display the STABS contents of an ELF format file\n"
-" -t --syms Display the contents of the symbol table(s)\n"
-" -T --dynamic-syms Display the contents of the dynamic symbol table\n"
-" -r --reloc Display the relocation entries in the file\n"
-" -R --dynamic-reloc Display the dynamic relocation entries in the "
-"file\n"
-" -V --version Display this program's version number\n"
-" -i --info List object formats and architectures supported\n"
-" -H --help Display this information\n"
-msgstr ""
-
-#: objdump.c:253
-msgid ""
-"\n"
-" The following switches are optional:\n"
-msgstr ""
-
-#: objdump.c:254
-msgid ""
-" -b --target <bfdname> Specify the target object format as "
-"<bfdname>\n"
-" -m --architecture <machine> Specify the target architecture as "
-"<machine>\n"
-" -j --section <name> Only display information for section "
-"<name>\n"
-" -M --disassembler-options <o> Pass text <o> on to the disassembler\n"
-" -EB --endian=big Assume big endian format when "
-"disassembling\n"
-" -EL --endian=little Assume little endian format when "
-"disassembling\n"
-" --file-start-context Include context from start of file (with "
-"-S)\n"
-" -l --line-numbers Include line numbers and filenames in "
-"output\n"
-" -C --demangle Decode mangled/processed symbol names\n"
-" -w --wide Format output for more than 80 columns\n"
-" -z --disassemble-zeroes Do not skip blocks of zeroes when "
-"disassembling\n"
-" --start-address <addr> Only process data whoes address is >= "
-"<addr>\n"
-" --stop-address <addr> Only process data whoes address is <= "
-"<addr>\n"
-" --prefix-addresses Print complete address alongside "
-"disassembly\n"
-" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
-" --adjust-vma <offset> Add <offset> to all displayed section "
-"addresses\n"
-"\n"
-msgstr ""
-
-#: objdump.c:420
-msgid "Sections:\n"
-msgstr ""
-
-#: objdump.c:423
-msgid "Idx Name Size VMA LMA File off Algn"
-msgstr ""
-
-#: objdump.c:425
-msgid ""
-"Idx Name Size VMA LMA File off "
-"Algn"
-msgstr ""
-
-#: objdump.c:429
-msgid " Flags"
-msgstr ""
-
-#: objdump.c:479
-#, c-format
-msgid "%s: %s: not a dynamic object\n"
-msgstr ""
-
-#: objdump.c:496
-#, c-format
-msgid "%s: %s: No dynamic symbols\n"
-msgstr ""
-
-#: objdump.c:1200
-msgid "Out of virtual memory\n"
-msgstr ""
-
-#: objdump.c:1611
-#, c-format
-msgid "%s: Can't use supplied machine %s\n"
-msgstr ""
-
-#: objdump.c:1632
-#, c-format
-msgid "%s: Can't disassemble for architecture %s\n"
-msgstr ""
-
-#: objdump.c:1709
-#, c-format
-msgid "Disassembly of section %s:\n"
-msgstr ""
-
-#: objdump.c:1883
-#, c-format
-msgid ""
-"No %s section present\n"
-"\n"
-msgstr ""
-
-#: objdump.c:1890
-#, c-format
-msgid "%s: %s has no %s section\n"
-msgstr ""
-
-#: objdump.c:1904 objdump.c:1916
-#, c-format
-msgid "%s: Reading %s section of %s failed: %s\n"
-msgstr ""
-
-#: objdump.c:1959
-#, c-format
-msgid ""
-"Contents of %s section:\n"
-"\n"
-msgstr ""
-
-#: objdump.c:2059
-#, c-format
-msgid "architecture: %s, "
-msgstr ""
-
-#: objdump.c:2062
-#, c-format
-msgid "flags 0x%08x:\n"
-msgstr ""
-
-#: objdump.c:2075
-msgid ""
-"\n"
-"start address 0x"
-msgstr ""
-
-#: objdump.c:2107
-#, c-format
-msgid ""
-"\n"
-"%s: file format %s\n"
-msgstr ""
-
-#: objdump.c:2150
-#, c-format
-msgid "%s: printing debugging information failed\n"
-msgstr ""
-
-#: objdump.c:2227
-#, c-format
-msgid "In archive %s:\n"
-msgstr ""
-
-#: objdump.c:2279
-#, c-format
-msgid "Contents of section %s:\n"
-msgstr ""
-
-#: objdump.c:2788
-#, c-format
-msgid "BFD header file version %s\n"
-msgstr ""
-
-#: objdump.c:2861
-#, c-format
-msgid "%s: unrecognized -E option\n"
-msgstr ""
-
-#: objdump.c:2873
-#, c-format
-msgid "%s: unrecognized --endian type `%s'\n"
-msgstr ""
-
-#: rdcoff.c:204
-#, c-format
-msgid "%s: parse_coff_type: Bad type code 0x%x\n"
-msgstr ""
-
-#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:712
-#, c-format
-msgid "%s: bfd_coff_get_syment failed: %s\n"
-msgstr ""
-
-#: rdcoff.c:439 rdcoff.c:732
-#, c-format
-msgid "%s: bfd_coff_get_auxent failed: %s\n"
-msgstr ""
-
-#: rdcoff.c:798
-#, c-format
-msgid "%s: %ld: .bf without preceding function\n"
-msgstr ""
-
-#: rdcoff.c:848
-#, c-format
-msgid "%s: %ld: unexpected .ef\n"
-msgstr ""
-
-#: rddbg.c:87
-#, c-format
-msgid "%s: no recognized debugging information\n"
-msgstr ""
-
-#: rddbg.c:410
-msgid "Last stabs entries before error:\n"
-msgstr ""
-
-#: readelf.c:303 readelf.c:329
-#, c-format
-msgid "%s: Error: "
-msgstr ""
-
-#: readelf.c:315 readelf.c:344
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: readelf.c:394 readelf.c:532
-#, c-format
-msgid "Unhandled data length: %d\n"
-msgstr ""
-
-#: readelf.c:591
-msgid "Don't know about relocations on this machine architecture\n"
-msgstr ""
-
-#: readelf.c:631 readelf.c:660 readelf.c:692 readelf.c:720
-msgid "out of memory parsing relocs"
-msgstr ""
-
-#: readelf.c:738
-msgid ""
-" Offset Info Type Symbol's Value Symbol's Name "
-"Addend\n"
-msgstr ""
-
-#: readelf.c:741
-msgid " Offset Info Type Symbol's Value Symbol's Name\n"
-msgstr ""
-
-#: readelf.c:885 readelf.c:887
-#, c-format
-msgid "unrecognised: %-7lx"
-msgstr ""
-
-#: readelf.c:912
-#, c-format
-msgid "<string table index %3ld>"
-msgstr ""
-
-#: readelf.c:1119
-#, c-format
-msgid "Processor Specific: %lx"
-msgstr ""
-
-#: readelf.c:1138
-#, c-format
-msgid "Operating System specific: %lx"
-msgstr ""
-
-#: readelf.c:1141 readelf.c:1506
-#, c-format
-msgid "<unknown>: %lx"
-msgstr ""
-
-#: readelf.c:1155
-msgid "NONE (None)"
-msgstr ""
-
-#: readelf.c:1156
-msgid "REL (Relocatable file)"
-msgstr ""
-
-#: readelf.c:1157
-msgid "EXEC (Executable file)"
-msgstr ""
-
-#: readelf.c:1158
-msgid "DYN (Shared object file)"
-msgstr ""
-
-#: readelf.c:1159
-msgid "CORE (Core file)"
-msgstr ""
-
-#: readelf.c:1163
-#, c-format
-msgid "Processor Specific: (%x)"
-msgstr ""
-
-#: readelf.c:1165
-#, c-format
-msgid "OS Specific: (%x)"
-msgstr ""
-
-#: readelf.c:1167 readelf.c:1244 readelf.c:1638
-#, c-format
-msgid "<unknown>: %x"
-msgstr ""
-
-#: readelf.c:1180
-msgid "None"
-msgstr ""
-
-#: readelf.c:1676
-msgid "Usage: readelf {options} elf-file(s)\n"
-msgstr ""
-
-#: readelf.c:1677
-msgid " Options are:\n"
-msgstr ""
-
-#: readelf.c:1678
-msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
-msgstr ""
-
-#: readelf.c:1679
-msgid " -h or --file-header Display the ELF file header\n"
-msgstr ""
-
-#: readelf.c:1680
-msgid " -l or --program-headers or --segments\n"
-msgstr ""
-
-#: readelf.c:1681
-msgid " Display the program headers\n"
-msgstr ""
-
-#: readelf.c:1682
-msgid " -S or --section-headers or --sections\n"
-msgstr ""
-
-#: readelf.c:1683
-msgid " Display the sections' header\n"
-msgstr ""
-
-#: readelf.c:1684
-msgid " -e or --headers Equivalent to: -h -l -S\n"
-msgstr ""
-
-#: readelf.c:1685
-msgid " -s or --syms or --symbols Display the symbol table\n"
-msgstr ""
-
-#: readelf.c:1686
-msgid " -n or --notes Display the core notes (if present)\n"
-msgstr ""
-
-#: readelf.c:1687
-msgid " -r or --relocs Display the relocations (if present)\n"
-msgstr ""
-
-#: readelf.c:1688
-msgid " -d or --dynamic Display the dynamic segment (if present)\n"
-msgstr ""
-
-#: readelf.c:1689
-msgid " -V or --version-info Display the version sections (if present)\n"
-msgstr ""
-
-#: readelf.c:1690
-msgid ""
-" -A or --arch-specific Display architecture specific information (if "
-"any).\n"
-msgstr ""
-
-#: readelf.c:1691
-msgid ""
-" -D or --use-dynamic Use the dynamic section info when displaying "
-"symbols\n"
-msgstr ""
-
-#: readelf.c:1692
-msgid " -x <number> or --hex-dump=<number>\n"
-msgstr ""
-
-#: readelf.c:1693
-msgid " Dump the contents of section <number>\n"
-msgstr ""
-
-#: readelf.c:1694
-msgid " -w[liapr] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]\n"
-msgstr ""
-
-#: readelf.c:1695
-msgid ""
-" Display the contents of DWARF2 debug sections\n"
-msgstr ""
-
-#: readelf.c:1697
-msgid " -i <number> or --instruction-dump=<number>\n"
-msgstr ""
-
-#: readelf.c:1698
-msgid ""
-" Disassemble the contents of section <number>\n"
-msgstr ""
-
-#: readelf.c:1700
-msgid " -I or --histogram Display histogram of bucket list lengths\n"
-msgstr ""
-
-#: readelf.c:1701
-msgid " -v or --version Display the version number of readelf\n"
-msgstr ""
-
-#: readelf.c:1702
-msgid " -H or --help Display this information\n"
-msgstr ""
-
-#: readelf.c:1720
-msgid "Out of memory allocating dump request table."
-msgstr ""
-
-#: readelf.c:1855
-#, c-format
-msgid "Unrecognised debug option '%s'\n"
-msgstr ""
-
-#: readelf.c:1880
-#, c-format
-msgid "Invalid option '-%c'\n"
-msgstr ""
-
-#: readelf.c:1893
-msgid "Nothing to do.\n"
-msgstr ""
-
-#: readelf.c:1906 readelf.c:1923 readelf.c:3493
-msgid "none"
-msgstr ""
-
-#: readelf.c:1907
-msgid "ELF32"
-msgstr ""
-
-#: readelf.c:1908
-msgid "ELF64"
-msgstr ""
-
-#: readelf.c:1910 readelf.c:1927 readelf.c:1946
-#, c-format
-msgid "<unknown: %x>"
-msgstr ""
-
-#: readelf.c:1924
-msgid "2's complement, little endian"
-msgstr ""
-
-#: readelf.c:1925
-msgid "2's complement, big endian"
-msgstr ""
-
-#: readelf.c:1940
-msgid "UNIX - System V"
-msgstr ""
-
-#: readelf.c:1941
-msgid "UNIX - HP-UX"
-msgstr ""
-
-#: readelf.c:1942
-msgid "UNIX - Linux"
-msgstr ""
-
-#: readelf.c:1943
-msgid "Standalone App"
-msgstr ""
-
-#: readelf.c:1944
-msgid "ARM"
-msgstr ""
-
-#: readelf.c:1961
-msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
-msgstr ""
-
-#: readelf.c:1969
-msgid "ELF Header:\n"
-msgstr ""
-
-#: readelf.c:1970
-msgid " Magic: "
-msgstr ""
-
-#: readelf.c:1974
-#, c-format
-msgid " Class: %s\n"
-msgstr ""
-
-#: readelf.c:1976
-#, c-format
-msgid " Data: %s\n"
-msgstr ""
-
-#: readelf.c:1978
-#, c-format
-msgid " Version: %d %s\n"
-msgstr ""
-
-#: readelf.c:1985
-#, c-format
-msgid " OS/ABI: %s\n"
-msgstr ""
-
-#: readelf.c:1987
-#, c-format
-msgid " ABI Version: %d\n"
-msgstr ""
-
-#: readelf.c:1989
-#, c-format
-msgid " Type: %s\n"
-msgstr ""
-
-#: readelf.c:1991
-#, c-format
-msgid " Machine: %s\n"
-msgstr ""
-
-#: readelf.c:1993
-#, c-format
-msgid " Version: 0x%lx\n"
-msgstr ""
-
-#: readelf.c:1996
-msgid " Entry point address: "
-msgstr ""
-
-#: readelf.c:1998
-msgid ""
-"\n"
-" Start of program headers: "
-msgstr ""
-
-#: readelf.c:2000
-msgid ""
-" (bytes into file)\n"
-" Start of section headers: "
-msgstr ""
-
-#: readelf.c:2002
-msgid " (bytes into file)\n"
-msgstr ""
-
-#: readelf.c:2004
-#, c-format
-msgid " Flags: 0x%lx%s\n"
-msgstr ""
-
-#: readelf.c:2007
-#, c-format
-msgid " Size of this header: %ld (bytes)\n"
-msgstr ""
-
-#: readelf.c:2009
-#, c-format
-msgid " Size of program headers: %ld (bytes)\n"
-msgstr ""
-
-#: readelf.c:2011
-#, c-format
-msgid " Number of program headers: %ld\n"
-msgstr ""
-
-#: readelf.c:2013
-#, c-format
-msgid " Size of section headers: %ld (bytes)\n"
-msgstr ""
-
-#: readelf.c:2015
-#, c-format
-msgid " Number of section headers: %ld\n"
-msgstr ""
-
-#: readelf.c:2017
-#, c-format
-msgid " Section header string table index: %ld\n"
-msgstr ""
-
-#: readelf.c:2102
-msgid ""
-"\n"
-"There are no program headers in this file.\n"
-msgstr ""
-
-#: readelf.c:2108
-#, c-format
-msgid ""
-"\n"
-"Elf file type is %s\n"
-msgstr ""
-
-#: readelf.c:2109
-msgid "Entry point "
-msgstr ""
-
-#: readelf.c:2111
-#, c-format
-msgid ""
-"\n"
-"There are %d program headers, starting at offset "
-msgstr ""
-
-#: readelf.c:2122 readelf.c:2298 readelf.c:2340 readelf.c:2383 readelf.c:2424
-#: readelf.c:2932 readelf.c:2973 readelf.c:3149 readelf.c:4111 readelf.c:4125
-#: readelf.c:7023 readelf.c:7063
-msgid "Out of memory\n"
-msgstr ""
-
-#: readelf.c:2140
-#, c-format
-msgid ""
-"\n"
-"Program Header%s:\n"
-msgstr ""
-
-#: readelf.c:2144
-msgid ""
-" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
-msgstr ""
-
-#: readelf.c:2148
-msgid " Type Offset VirtAddr PhysAddr\n"
-msgstr ""
-
-#: readelf.c:2150
-msgid " FileSiz MemSiz Flags Align\n"
-msgstr ""
-
-#: readelf.c:2208
-msgid "more than one dynamic segment\n"
-msgstr ""
-
-#: readelf.c:2216
-msgid "Unable to find program interpreter name\n"
-msgstr ""
-
-#: readelf.c:2223
-#, c-format
-msgid ""
-"\n"
-" [Requesting program interpreter: %s]"
-msgstr ""
-
-#: readelf.c:2241
-msgid ""
-"\n"
-" Section to Segment mapping:\n"
-msgstr ""
-
-#: readelf.c:2242
-msgid " Segment Sections...\n"
-msgstr ""
-
-#: readelf.c:2505
-msgid ""
-"\n"
-"There are no sections in this file.\n"
-msgstr ""
-
-#: readelf.c:2511
-#, c-format
-msgid "There are %d section headers, starting at offset 0x%lx:\n"
-msgstr ""
-
-#: readelf.c:2551
-msgid "File contains multiple dynamic symbol tables\n"
-msgstr ""
-
-#: readelf.c:2564
-msgid "File contains multiple dynamic string tables\n"
-msgstr ""
-
-#: readelf.c:2591
-#, c-format
-msgid ""
-"\n"
-"Section Header%s:\n"
-msgstr ""
-
-#: readelf.c:2595
-msgid ""
-" [Nr] Name Type Addr Off Size ES Flg Lk "
-"Inf Al\n"
-msgstr ""
-
-#: readelf.c:2598
-msgid " [Nr] Name Type Address Offset\n"
-msgstr ""
-
-#: readelf.c:2599
-msgid " Size EntSize Flags Link Info Align\n"
-msgstr ""
-
-#: readelf.c:2646
-msgid ""
-"Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings)\n"
-msgstr ""
-
-#: readelf.c:2647
-msgid ""
-" I (info), L (link order), O (extra OS processing required)\n"
-msgstr ""
-
-#: readelf.c:2648
-msgid " o (os specific), p (processor specific) x (unknown)\n"
-msgstr ""
-
-#: readelf.c:2706
-#, c-format
-msgid ""
-"\n"
-"Relocation section at offset 0x%lx contains %ld bytes:\n"
-msgstr ""
-
-#: readelf.c:2713
-msgid ""
-"\n"
-"There are no dynamic relocations in this file.\n"
-msgstr ""
-
-#: readelf.c:2741
-msgid ""
-"\n"
-"Relocation section "
-msgstr ""
-
-#: readelf.c:2748
-#, c-format
-msgid " at offset 0x%lx contains %lu entries:\n"
-msgstr ""
-
-#: readelf.c:2776
-msgid ""
-"\n"
-"There are no relocations in this file.\n"
-msgstr ""
-
-#: readelf.c:3026
-msgid ""
-"\n"
-"There is no dynamic segment in this file.\n"
-msgstr ""
-
-#: readelf.c:3060
-msgid "Unable to seek to end of file!"
-msgstr ""
-
-#: readelf.c:3069
-msgid "Unable to determine the number of symbols to load\n"
-msgstr ""
-
-#: readelf.c:3099
-msgid "Unable to seek to end of file\n"
-msgstr ""
-
-#: readelf.c:3105
-msgid "Unable to determine the length of the dynamic string table\n"
-msgstr ""
-
-#: readelf.c:3166
-#, c-format
-msgid ""
-"\n"
-"Dynamic segment at offset 0x%x contains %ld entries:\n"
-msgstr ""
-
-#: readelf.c:3169
-msgid " Tag Type Name/Value\n"
-msgstr ""
-
-#: readelf.c:3200
-msgid "Auxiliary library"
-msgstr ""
-
-#: readelf.c:3202
-msgid "Filter library"
-msgstr ""
-
-#: readelf.c:3218 readelf.c:3239 readelf.c:3265
-msgid "Flags:"
-msgstr ""
-
-#: readelf.c:3220 readelf.c:3241 readelf.c:3267
-msgid " None\n"
-msgstr ""
-
-#: readelf.c:3370
-#, c-format
-msgid "Shared library: [%s]"
-msgstr ""
-
-#: readelf.c:3373
-msgid " program interpreter"
-msgstr ""
-
-#: readelf.c:3377
-#, c-format
-msgid "Library soname: [%s]"
-msgstr ""
-
-#: readelf.c:3381
-#, c-format
-msgid "Library rpath: [%s]"
-msgstr ""
-
-#: readelf.c:3442
-#, c-format
-msgid "Not needed object: [%s]\n"
-msgstr ""
-
-#: readelf.c:3539
-#, c-format
-msgid ""
-"\n"
-"Version definition section '%s' contains %ld entries:\n"
-msgstr ""
-
-#: readelf.c:3542
-msgid " Addr: 0x"
-msgstr ""
-
-#: readelf.c:3544 readelf.c:3732
-#, c-format
-msgid " Offset: %#08lx Link: %lx (%s)\n"
-msgstr ""
-
-#: readelf.c:3574
-#, c-format
-msgid " %#06x: Rev: %d Flags: %s"
-msgstr ""
-
-#: readelf.c:3577
-#, c-format
-msgid " Index: %d Cnt: %d "
-msgstr ""
-
-#: readelf.c:3588
-#, c-format
-msgid "Name: %s\n"
-msgstr ""
-
-#: readelf.c:3590
-#, c-format
-msgid "Name index: %ld\n"
-msgstr ""
-
-#: readelf.c:3605
-#, c-format
-msgid " %#06x: Parent %d: %s\n"
-msgstr ""
-
-#: readelf.c:3608
-#, c-format
-msgid " %#06x: Parent %d, name index: %ld\n"
-msgstr ""
-
-#: readelf.c:3627
-#, c-format
-msgid ""
-"\n"
-"Version needs section '%s' contains %ld entries:\n"
-msgstr ""
-
-#: readelf.c:3630
-msgid " Addr: 0x"
-msgstr ""
-
-#: readelf.c:3632
-#, c-format
-msgid " Offset: %#08lx Link to section: %ld (%s)\n"
-msgstr ""
-
-#: readelf.c:3658
-#, c-format
-msgid " %#06x: Version: %d"
-msgstr ""
-
-#: readelf.c:3661
-#, c-format
-msgid " File: %s"
-msgstr ""
-
-#: readelf.c:3663
-#, c-format
-msgid " File: %lx"
-msgstr ""
-
-#: readelf.c:3665
-#, c-format
-msgid " Cnt: %d\n"
-msgstr ""
-
-#: readelf.c:3683
-#, c-format
-msgid " %#06x: Name: %s"
-msgstr ""
-
-#: readelf.c:3686
-#, c-format
-msgid " %#06x: Name index: %lx"
-msgstr ""
-
-#: readelf.c:3689
-#, c-format
-msgid " Flags: %s Version: %d\n"
-msgstr ""
-
-#: readelf.c:3727
-#, c-format
-msgid ""
-"\n"
-"Version symbols section '%s' contains %d entries:\n"
-msgstr ""
-
-#: readelf.c:3730
-msgid " Addr: "
-msgstr ""
-
-#: readelf.c:3760
-msgid " 0 (*local*) "
-msgstr ""
-
-#: readelf.c:3764
-msgid " 1 (*global*) "
-msgstr ""
-
-#: readelf.c:3986
-msgid ""
-"\n"
-"No version information found in this file.\n"
-msgstr ""
-
-#: readelf.c:4004 readelf.c:4039
-#, c-format
-msgid "<processor specific>: %d"
-msgstr ""
-
-#: readelf.c:4006 readelf.c:4051
-#, c-format
-msgid "<OS specific>: %d"
-msgstr ""
-
-#: readelf.c:4008 readelf.c:4054
-#, c-format
-msgid "<unknown>: %d"
-msgstr ""
-
-#: readelf.c:4117
-msgid "Unable to read in dynamic data\n"
-msgstr ""
-
-#: readelf.c:4159
-msgid "Unable to seek to start of dynamic information"
-msgstr ""
-
-#: readelf.c:4165
-msgid "Failed to read in number of buckets\n"
-msgstr ""
-
-#: readelf.c:4171
-msgid "Failed to read in number of chains\n"
-msgstr ""
-
-#: readelf.c:4191
-msgid ""
-"\n"
-"Symbol table for image:\n"
-msgstr ""
-
-#: readelf.c:4193
-msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: readelf.c:4195
-msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: readelf.c:4239
-#, c-format
-msgid ""
-"\n"
-"Symbol table '%s' contains %lu entries:\n"
-msgstr ""
-
-#: readelf.c:4243
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: readelf.c:4245
-msgid " Num: Value Size Type Bind Vis Ndx Name\n"
-msgstr ""
-
-#: readelf.c:4354
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: readelf.c:4413
-msgid ""
-"\n"
-"Dynamic symbol information is not available for displaying symbols.\n"
-msgstr ""
-
-#: readelf.c:4425
-#, c-format
-msgid ""
-"\n"
-"Histogram for bucket list length (total of %d buckets):\n"
-msgstr ""
-
-#: readelf.c:4427
-msgid " Length Number %% of total Coverage\n"
-msgstr ""
-
-#: readelf.c:4432 readelf.c:4451 readelf.c:6704 readelf.c:6897
-msgid "Out of memory"
-msgstr ""
-
-#: readelf.c:4500
-#, c-format
-msgid ""
-"\n"
-"Dynamic info segment at offset 0x%lx contains %d entries:\n"
-msgstr ""
-
-#: readelf.c:4503
-msgid " Num: Name BoundTo Flags\n"
-msgstr ""
-
-#: readelf.c:4551
-#, c-format
-msgid ""
-"\n"
-"Assembly dump of section %s\n"
-msgstr ""
-
-#: readelf.c:4574
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no data to dump.\n"
-msgstr ""
-
-#: readelf.c:4579
-#, c-format
-msgid ""
-"\n"
-"Hex dump of section '%s':\n"
-msgstr ""
-
-#: readelf.c:4731
-msgid "badly formed extended line op encountered!"
-msgstr ""
-
-#: readelf.c:4738
-#, c-format
-msgid " Extended opcode %d: "
-msgstr ""
-
-#: readelf.c:4743
-msgid ""
-"End of Sequence\n"
-"\n"
-msgstr ""
-
-#: readelf.c:4749
-#, c-format
-msgid "set Address to 0x%lx\n"
-msgstr ""
-
-#: readelf.c:4754
-msgid " define new File Table entry\n"
-msgstr ""
-
-#: readelf.c:4755 readelf.c:4877
-msgid " Entry\tDir\tTime\tSize\tName\n"
-msgstr ""
-
-#: readelf.c:4757
-#, c-format
-msgid " %d\t"
-msgstr ""
-
-#: readelf.c:4760 readelf.c:4762 readelf.c:4764 readelf.c:4889 readelf.c:4891
-#: readelf.c:4893
-#, c-format
-msgid "%lu\t"
-msgstr ""
-
-#: readelf.c:4765
-#, c-format
-msgid ""
-"%s\n"
-"\n"
-msgstr ""
-
-#: readelf.c:4769
-#, c-format
-msgid "UNKNOWN: length %d\n"
-msgstr ""
-
-#: readelf.c:4795
-#, c-format
-msgid ""
-"\n"
-"Dump of debug contents of section %s:\n"
-"\n"
-msgstr ""
-
-#: readelf.c:4807
-msgid "The line info appears to be corrupt - the section is too small\n"
-msgstr ""
-
-#: readelf.c:4815
-msgid "Only DWARF version 2 line info is currently supported.\n"
-msgstr ""
-
-#: readelf.c:4830
-#, c-format
-msgid " Length: %ld\n"
-msgstr ""
-
-#: readelf.c:4831
-#, c-format
-msgid " DWARF Version: %d\n"
-msgstr ""
-
-#: readelf.c:4832
-#, c-format
-msgid " Prolgue Length: %d\n"
-msgstr ""
-
-#: readelf.c:4833
-#, c-format
-msgid " Minimum Instruction Length: %d\n"
-msgstr ""
-
-#: readelf.c:4834
-#, c-format
-msgid " Initial value of 'is_stmt': %d\n"
-msgstr ""
-
-#: readelf.c:4835
-#, c-format
-msgid " Line Base: %d\n"
-msgstr ""
-
-#: readelf.c:4836
-#, c-format
-msgid " Line Range: %d\n"
-msgstr ""
-
-#: readelf.c:4837
-#, c-format
-msgid " Opcode Base: %d\n"
-msgstr ""
-
-#: readelf.c:4846
-msgid ""
-"\n"
-" Opcodes:\n"
-msgstr ""
-
-#: readelf.c:4849
-#, c-format
-msgid " Opcode %d has %d args\n"
-msgstr ""
-
-#: readelf.c:4855
-msgid ""
-"\n"
-" The Directory Table is empty.\n"
-msgstr ""
-
-#: readelf.c:4858
-msgid ""
-"\n"
-" The Directory Table:\n"
-msgstr ""
-
-#: readelf.c:4862
-#, c-format
-msgid " %s\n"
-msgstr ""
-
-#: readelf.c:4873
-msgid ""
-"\n"
-" The File Name Table is empty.\n"
-msgstr ""
-
-#: readelf.c:4876
-msgid ""
-"\n"
-" The File Name Table:\n"
-msgstr ""
-
-#: readelf.c:4884
-#, c-format
-msgid " %d\t"
-msgstr ""
-
-#: readelf.c:4895
-#, c-format
-msgid "%s\n"
-msgstr ""
-
-#. Now display the statements.
-#: readelf.c:4903
-msgid ""
-"\n"
-" Line Number Statements:\n"
-msgstr ""
-
-#: readelf.c:4922
-msgid " Copy\n"
-msgstr ""
-
-#: readelf.c:4929
-#, c-format
-msgid " Advance PC by %d to %lx\n"
-msgstr ""
-
-#: readelf.c:4937
-#, c-format
-msgid " Advance Line by %d to %d\n"
-msgstr ""
-
-#: readelf.c:4944
-#, c-format
-msgid " Set File Name to entry %d in the File Name Table\n"
-msgstr ""
-
-#: readelf.c:4952
-#, c-format
-msgid " Set column to %d\n"
-msgstr ""
-
-#: readelf.c:4959
-#, c-format
-msgid " Set is_stmt to %d\n"
-msgstr ""
-
-#: readelf.c:4964
-msgid " Set basic block\n"
-msgstr ""
-
-#: readelf.c:4972
-#, c-format
-msgid " Advance PC by constant %d to 0x%lx\n"
-msgstr ""
-
-#: readelf.c:4980
-#, c-format
-msgid " Advance PC by fixed size amount %d to 0x%lx\n"
-msgstr ""
-
-#: readelf.c:4988
-#, c-format
-msgid " Special opcode %d: advance Address by %d to 0x%lx"
-msgstr ""
-
-#: readelf.c:4992
-#, c-format
-msgid " and Line by %d to %d\n"
-msgstr ""
-
-#: readelf.c:5015 readelf.c:5437
-#, c-format
-msgid ""
-"Contents of the %s section:\n"
-"\n"
-msgstr ""
-
-#: readelf.c:5034
-msgid "Only DWARF 2 pubnames are currently supported"
-msgstr ""
-
-#: readelf.c:5038
-#, c-format
-msgid " Length: %ld\n"
-msgstr ""
-
-#: readelf.c:5040
-#, c-format
-msgid " Version: %d\n"
-msgstr ""
-
-#: readelf.c:5042
-#, c-format
-msgid " Offset into .debug_info section: %ld\n"
-msgstr ""
-
-#: readelf.c:5044
-#, c-format
-msgid " Size of area in .debug_info section: %ld\n"
-msgstr ""
-
-#: readelf.c:5047
-msgid ""
-"\n"
-" Offset\tName\n"
-msgstr ""
-
-#: readelf.c:5129
-#, c-format
-msgid "Unknown TAG value: %lx"
-msgstr ""
-
-#: readelf.c:5224
-#, c-format
-msgid "Unknown AT value: %lx"
-msgstr ""
-
-#: readelf.c:5261
-#, c-format
-msgid "Unknown FORM value: %lx"
-msgstr ""
-
-#: readelf.c:5443
-msgid " Number TAG\n"
-msgstr ""
-
-#: readelf.c:5449
-#, c-format
-msgid " %ld %s [%s]\n"
-msgstr ""
-
-#: readelf.c:5452
-msgid "has children"
-msgstr ""
-
-#: readelf.c:5452
-msgid "no children"
-msgstr ""
-
-#: readelf.c:5456
-#, c-format
-msgid " %-18s %s\n"
-msgstr ""
-
-#: readelf.c:5475
-#, c-format
-msgid " %lu byte block: "
-msgstr ""
-
-#: readelf.c:5939
-msgid "(User defined location op)"
-msgstr ""
-
-#: readelf.c:5941
-msgid "(Unknown location op)"
-msgstr ""
-
-#: readelf.c:6058
-#, c-format
-msgid "Unable to handle FORM: %d"
-msgstr ""
-
-#: readelf.c:6062
-#, c-format
-msgid "Unrecognised form: %d"
-msgstr ""
-
-#: readelf.c:6075
-msgid "(not inlined)"
-msgstr ""
-
-#: readelf.c:6076
-msgid "(inlined)"
-msgstr ""
-
-#: readelf.c:6077
-msgid "(declared as inline but ignored)"
-msgstr ""
-
-#: readelf.c:6078
-msgid "(declared as inline and inlined)"
-msgstr ""
-
-#: readelf.c:6079
-#, c-format
-msgid " (Unknown inline attribute value: %lx)"
-msgstr ""
-
-#: readelf.c:6209 readelf.c:6333
-#, c-format
-msgid ""
-"The section %s contains:\n"
-"\n"
-msgstr ""
-
-#: readelf.c:6231
-msgid "Only version 2 DWARF debug information is currently supported.\n"
-msgstr ""
-
-#: readelf.c:6235
-msgid " Compilation Unit:\n"
-msgstr ""
-
-#: readelf.c:6236
-#, c-format
-msgid " Length: %ld\n"
-msgstr ""
-
-#: readelf.c:6237
-#, c-format
-msgid " Version: %d\n"
-msgstr ""
-
-#: readelf.c:6238
-#, c-format
-msgid " Abbrev Offset: %ld\n"
-msgstr ""
-
-#: readelf.c:6239
-#, c-format
-msgid " Pointer Size: %d\n"
-msgstr ""
-
-#: readelf.c:6259
-msgid "Unable to locate .debug_abbrev section!\n"
-msgstr ""
-
-#: readelf.c:6299
-#, c-format
-msgid "Unable to locate entry %lu in the abbreviation table\n"
-msgstr ""
-
-#: readelf.c:6304
-#, c-format
-msgid " <%d><%x>: Abbrev Number: %lu (%s)\n"
-msgstr ""
-
-#: readelf.c:6352
-#, c-format
-msgid " Length: %ld\n"
-msgstr ""
-
-#: readelf.c:6353
-#, c-format
-msgid " Version: %d\n"
-msgstr ""
-
-#: readelf.c:6354
-#, c-format
-msgid " Offset into .debug_info: %lx\n"
-msgstr ""
-
-#: readelf.c:6355
-#, c-format
-msgid " Pointer Size: %d\n"
-msgstr ""
-
-#: readelf.c:6356
-#, c-format
-msgid " Segment Size: %d\n"
-msgstr ""
-
-#: readelf.c:6358
-msgid ""
-"\n"
-" Address Length\n"
-msgstr ""
-
-#: readelf.c:6399
-#, c-format
-msgid "Displaying the debug contents of section %s is not yet supported.\n"
-msgstr ""
-
-#: readelf.c:6461
-#, c-format
-msgid ""
-"\n"
-"Section '%s' has no debugging data.\n"
-msgstr ""
-
-#: readelf.c:6477
-#, c-format
-msgid "Unrecognised debug section: %s\n"
-msgstr ""
-
-#: readelf.c:6549
-msgid "Some sections were not dumped because they do not exist!\n"
-msgstr ""
-
-#: readelf.c:6728
-#, c-format
-msgid ""
-"\n"
-"Section '%s' contains %d entries:\n"
-msgstr ""
-
-#: readelf.c:6890
-msgid "conflict list with without table"
-msgstr ""
-
-#: readelf.c:6918
-#, c-format
-msgid ""
-"\n"
-"Section '.conflict' contains %d entries:\n"
-msgstr ""
-
-#: readelf.c:6919
-msgid " Num: Index Value Name"
-msgstr ""
-
-#: readelf.c:6944
-msgid "NT_PRSTATUS (prstatus structure)"
-msgstr ""
-
-#: readelf.c:6945
-msgid "NT_FPREGSET (floating point registers)"
-msgstr ""
-
-#: readelf.c:6946
-msgid "NT_PRPSINFO (prpsinfo structure)"
-msgstr ""
-
-#: readelf.c:6947
-msgid "NT_TASKSTRUCT (task structure)"
-msgstr ""
-
-#: readelf.c:6948
-msgid "NT_PRXFPREG (user_xfpregs structure)"
-msgstr ""
-
-#: readelf.c:6949
-msgid "NT_PSTATUS (pstatus structure)"
-msgstr ""
-
-#: readelf.c:6950
-msgid "NT_FPREGS (floating point registers)"
-msgstr ""
-
-#: readelf.c:6951
-msgid "NT_PSINFO (psinfo structure)"
-msgstr ""
-
-#: readelf.c:6952
-msgid "NT_LWPSTATUS (lwpstatus_t structure)"
-msgstr ""
-
-#: readelf.c:6953
-msgid "NT_LWPSINFO (lwpsinfo_t structure)"
-msgstr ""
-
-#: readelf.c:6954
-msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)"
-msgstr ""
-
-#: readelf.c:6956
-#, c-format
-msgid "Unknown note type: (0x%08x)"
-msgstr ""
-
-#: readelf.c:6994
-#, c-format
-msgid ""
-"\n"
-"Notes at offset 0x%08lx with length 0x%08lx:\n"
-msgstr ""
-
-#: readelf.c:6997
-msgid " Owner\t\tData size\tDescription\n"
-msgstr ""
-
-#: readelf.c:7108
-msgid "No note segments present in the core file.\n"
-msgstr ""
-
-#: readelf.c:7186
-msgid "This instance of readelf has been built without support for a\n"
-msgstr ""
-
-#: readelf.c:7187
-msgid "64 bit data type and so it cannot read 64 bit ELF files.\n"
-msgstr ""
-
-#: readelf.c:7222
-#, c-format
-msgid "Cannot stat input file %s.\n"
-msgstr ""
-
-#: readelf.c:7229
-#, c-format
-msgid "Input file %s not found.\n"
-msgstr ""
-
-#: readelf.c:7235
-#, c-format
-msgid "%s: Failed to read file header\n"
-msgstr ""
-
-#: readelf.c:7249
-#, c-format
-msgid ""
-"\n"
-"File: %s\n"
-msgstr ""
-
-#: rename.c:131
-#, c-format
-msgid "%s: cannot set time: %s"
-msgstr ""
-
-#. We have to clean up here.
-#: rename.c:170 rename.c:203
-#, c-format
-msgid "%s: rename: %s"
-msgstr ""
-
-#: rename.c:211
-#, c-format
-msgid "%s: simple_copy: %s"
-msgstr ""
-
-#: resbin.c:130
-#, c-format
-msgid "%s: not enough binary data"
-msgstr ""
-
-#: resbin.c:149
-msgid "null terminated unicode string"
-msgstr ""
-
-#: resbin.c:179 resbin.c:185
-msgid "resource ID"
-msgstr ""
-
-#: resbin.c:229
-msgid "cursor"
-msgstr ""
-
-#: resbin.c:263 resbin.c:270
-msgid "menu header"
-msgstr ""
-
-#: resbin.c:280
-msgid "menuex header"
-msgstr ""
-
-#: resbin.c:284
-msgid "menuex offset"
-msgstr ""
-
-#: resbin.c:291
-#, c-format
-msgid "unsupported menu version %d"
-msgstr ""
-
-#: resbin.c:319 resbin.c:334 resbin.c:400
-msgid "menuitem header"
-msgstr ""
-
-#: resbin.c:430
-msgid "menuitem"
-msgstr ""
-
-#: resbin.c:471 resbin.c:499
-msgid "dialog header"
-msgstr ""
-
-#: resbin.c:489
-#, c-format
-msgid "unexpected dialog signature %d"
-msgstr ""
-
-#: resbin.c:531
-msgid "dialog font point size"
-msgstr ""
-
-#: resbin.c:539
-msgid "dialogex font information"
-msgstr ""
-
-#: resbin.c:564 resbin.c:582
-msgid "dialog control"
-msgstr ""
-
-#: resbin.c:574
-msgid "dialogex control"
-msgstr ""
-
-#: resbin.c:603
-msgid "dialog control end"
-msgstr ""
-
-#: resbin.c:615
-msgid "dialog control data"
-msgstr ""
-
-#: resbin.c:658
-msgid "stringtable string length"
-msgstr ""
-
-#: resbin.c:668
-msgid "stringtable string"
-msgstr ""
-
-#: resbin.c:701
-msgid "fontdir header"
-msgstr ""
-
-#: resbin.c:714
-msgid "fontdir"
-msgstr ""
-
-#: resbin.c:730
-msgid "fontdir device name"
-msgstr ""
-
-#: resbin.c:736
-msgid "fontdir face name"
-msgstr ""
-
-#: resbin.c:779
-msgid "accelerator"
-msgstr ""
-
-#: resbin.c:843
-msgid "group cursor header"
-msgstr ""
-
-#: resbin.c:847
-#, c-format
-msgid "unexpected group cursor type %d"
-msgstr ""
-
-#: resbin.c:862
-msgid "group cursor"
-msgstr ""
-
-#: resbin.c:901
-msgid "group icon header"
-msgstr ""
-
-#: resbin.c:905
-#, c-format
-msgid "unexpected group icon type %d"
-msgstr ""
-
-#: resbin.c:920
-msgid "group icon"
-msgstr ""
-
-#: resbin.c:991 resbin.c:1210
-msgid "unexpected version string"
-msgstr ""
-
-#: resbin.c:1025
-#, c-format
-msgid "version length %d does not match resource length %lu"
-msgstr ""
-
-#: resbin.c:1029
-#, c-format
-msgid "unexpected version type %d"
-msgstr ""
-
-#: resbin.c:1041
-#, c-format
-msgid "unexpected fixed version information length %d"
-msgstr ""
-
-#: resbin.c:1044
-msgid "fixed version info"
-msgstr ""
-
-#: resbin.c:1048
-#, c-format
-msgid "unexpected fixed version signature %lu"
-msgstr ""
-
-#: resbin.c:1052
-#, c-format
-msgid "unexpected fixed version info version %lu"
-msgstr ""
-
-#: resbin.c:1081
-msgid "version var info"
-msgstr ""
-
-#: resbin.c:1098
-#, c-format
-msgid "unexpected stringfileinfo value length %d"
-msgstr ""
-
-#: resbin.c:1108
-#, c-format
-msgid "unexpected version stringtable value length %d"
-msgstr ""
-
-#: resbin.c:1142
-#, c-format
-msgid "unexpected version string length %d != %d + %d"
-msgstr ""
-
-#: resbin.c:1153
-#, c-format
-msgid "unexpected version string length %d < %d"
-msgstr ""
-
-#: resbin.c:1170
-#, c-format
-msgid "unexpected varfileinfo value length %d"
-msgstr ""
-
-#: resbin.c:1189
-msgid "version varfileinfo"
-msgstr ""
-
-#: resbin.c:1204
-#, c-format
-msgid "unexpected version value length %d"
-msgstr ""
-
-#: rescoff.c:128
-msgid "filename required for COFF input"
-msgstr ""
-
-#: rescoff.c:145
-#, c-format
-msgid "%s: %s: no resource section\n"
-msgstr ""
-
-#: rescoff.c:154
-msgid "can't read resource section"
-msgstr ""
-
-#: rescoff.c:180
-#, c-format
-msgid "%s: %s: address out of bounds"
-msgstr ""
-
-#: rescoff.c:199
-msgid "directory"
-msgstr ""
-
-#: rescoff.c:227
-msgid "named directory entry"
-msgstr ""
-
-#: rescoff.c:236
-msgid "directory entry name"
-msgstr ""
-
-#: rescoff.c:256
-msgid "named subdirectory"
-msgstr ""
-
-#: rescoff.c:264
-msgid "named resource"
-msgstr ""
-
-#: rescoff.c:279
-msgid "ID directory entry"
-msgstr ""
-
-#: rescoff.c:296
-msgid "ID subdirectory"
-msgstr ""
-
-#: rescoff.c:304
-msgid "ID resource"
-msgstr ""
-
-#: rescoff.c:330
-msgid "resource type unknown"
-msgstr ""
-
-#: rescoff.c:333
-msgid "data entry"
-msgstr ""
-
-#: rescoff.c:341
-msgid "resource data"
-msgstr ""
-
-#: rescoff.c:346
-msgid "resource data size"
-msgstr ""
-
-#: rescoff.c:441
-msgid "filename required for COFF output"
-msgstr ""
-
-#: rescoff.c:740
-msgid "can't get BFD_RELOC_RVA relocation type"
-msgstr ""
-
-#: resrc.c:240 resrc.c:312
-#, c-format
-msgid "can't open temporary file `%s': %s"
-msgstr ""
-
-#: resrc.c:246
-#, c-format
-msgid "can't redirect stdout: `%s': %s"
-msgstr ""
-
-#: resrc.c:262
-#, c-format
-msgid "%s %s: %s"
-msgstr ""
-
-#: resrc.c:283
-#, c-format
-msgid "%s exited with status %d"
-msgstr ""
-
-#: resrc.c:308
-#, c-format
-msgid "can't execute `%s': %s"
-msgstr ""
-
-#: resrc.c:317
-#, c-format
-msgid "Using temporary file `%s' to read preprocessor output\n"
-msgstr ""
-
-#: resrc.c:324
-#, c-format
-msgid "can't popen `%s': %s"
-msgstr ""
-
-#: resrc.c:326
-msgid "Using popen to read preprocessor output\n"
-msgstr ""
-
-#: resrc.c:369
-#, c-format
-msgid "Tried `%s'\n"
-msgstr ""
-
-#: resrc.c:380
-#, c-format
-msgid "Using `%s'\n"
-msgstr ""
-
-#: resrc.c:544
-#, c-format
-msgid "%s:%d: %s\n"
-msgstr ""
-
-#: resrc.c:553
-#, c-format
-msgid "%s: unexpected EOF"
-msgstr ""
-
-#: resrc.c:610
-#, c-format
-msgid "%s: read of %lu returned %lu"
-msgstr ""
-
-#: resrc.c:652 resrc.c:883 resrc.c:1156 resrc.c:1310
-#, c-format
-msgid "stat failed on bitmap file `%s': %s"
-msgstr ""
-
-#: resrc.c:705
-#, c-format
-msgid "cursor file `%s' does not contain cursor data"
-msgstr ""
-
-#: resrc.c:737 resrc.c:1027
-#, c-format
-msgid "%s: fseek to %lu failed: %s"
-msgstr ""
-
-#: resrc.c:996
-#, c-format
-msgid "icon file `%s' does not contain icon data"
-msgstr ""
-
-#: resrc.c:1515
-#, c-format
-msgid "can't open `%s' for output: %s"
-msgstr ""
-
-#: size.c:79
-#, c-format
-msgid ""
-"Usage: %s [-ABdoxV] [--format=berkeley|sysv] [--radix=8|10|16]\n"
-" [--target=bfdname] [--version] [--help] [file...]\n"
-msgstr ""
-
-#: size.c:83
-msgid "default is --format=berkeley\n"
-msgstr ""
-
-#: size.c:85
-msgid "default is --format=sysv\n"
-msgstr ""
-
-#: size.c:139
-#, c-format
-msgid "invalid argument to --format: %s\n"
-msgstr ""
-
-#: size.c:166
-#, c-format
-msgid "Invalid radix: %s\n"
-msgstr ""
-
-#: srconv.c:1879
-#, c-format
-msgid "Usage: %s [-dhVq] in-file [out-file]\n"
-msgstr ""
-
-#: srconv.c:1886
-#, c-format
-msgid "%s: Convert a COFF object file into a SYSROFF object file\n"
-msgstr ""
-
-#: srconv.c:2024
-#, c-format
-msgid "%s: unable to open output file %s\n"
-msgstr ""
-
-#: stabs.c:349 stabs.c:1769
-msgid "numeric overflow"
-msgstr ""
-
-#: stabs.c:360
-#, c-format
-msgid "Bad stab: %s\n"
-msgstr ""
-
-#: stabs.c:370
-#, c-format
-msgid "Warning: %s: %s\n"
-msgstr ""
-
-#: stabs.c:492
-msgid "N_LBRAC not within function\n"
-msgstr ""
-
-#: stabs.c:531
-msgid "Too many N_RBRACs\n"
-msgstr ""
-
-#: stabs.c:780
-msgid "unknown C++ encoded name"
-msgstr ""
-
-#. Complain and keep going, so compilers can invent new
-#. cross-reference types.
-#: stabs.c:1306
-msgid "unrecognized cross reference type"
-msgstr ""
-
-#. Does this actually ever happen? Is that why we are worrying
-#. about dealing with it rather than just calling error_type?
-#: stabs.c:1861
-msgid "missing index type"
-msgstr ""
-
-#: stabs.c:2188
-msgid "unknown virtual character for baseclass"
-msgstr ""
-
-#: stabs.c:2206
-msgid "unknown visibility character for baseclass"
-msgstr ""
-
-#: stabs.c:2398
-msgid "unnamed $vb type"
-msgstr ""
-
-#: stabs.c:2404
-msgid "unrecognized C++ abbreviation"
-msgstr ""
-
-#: stabs.c:2484
-msgid "unknown visibility character for field"
-msgstr ""
-
-#: stabs.c:2740
-msgid "const/volatile indicator missing"
-msgstr ""
-
-#: stabs.c:2980
-#, c-format
-msgid "No mangling for \"%s\"\n"
-msgstr ""
-
-#: stabs.c:3293
-msgid "Undefined N_EXCL"
-msgstr ""
-
-#: stabs.c:3381
-#, c-format
-msgid "Type file number %d out of range\n"
-msgstr ""
-
-#: stabs.c:3386
-#, c-format
-msgid "Type index number %d out of range\n"
-msgstr ""
-
-#: stabs.c:3473
-#, c-format
-msgid "Unrecognized XCOFF type %d\n"
-msgstr ""
-
-#: stabs.c:3772
-#, c-format
-msgid "bad mangled name `%s'\n"
-msgstr ""
-
-#: stabs.c:3868
-msgid "no argument types in mangled string\n"
-msgstr ""
-
-#: strings.c:159
-#, c-format
-msgid "%s: invalid number %s\n"
-msgstr ""
-
-#: strings.c:494
-#, c-format
-msgid "%s: invalid integer argument %s\n"
-msgstr ""
-
-#: strings.c:505
-#, c-format
-msgid ""
-"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n"
-" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n"
-" [--target=bfdname] [--help] [--version] file...\n"
-msgstr ""
-
-#: sysdump.c:712
-#, c-format
-msgid "Usage: %s [-hV] in-file\n"
-msgstr ""
-
-#: sysdump.c:783
-#, c-format
-msgid "%s: cannot open input file %s\n"
-msgstr ""
-
-#: version.c:39
-msgid "Copyright 1997, 1998, 1999 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: version.c:40
-msgid ""
-"This program is free software; you may redistribute it under the terms of\n"
-"the GNU General Public License. This program has absolutely no warranty.\n"
-msgstr ""
-
-#: windres.c:237
-#, c-format
-msgid "can't open %s `%s': %s"
-msgstr ""
-
-#: windres.c:416
-msgid ": expected to be a directory\n"
-msgstr ""
-
-#: windres.c:428
-msgid ": expected to be a leaf\n"
-msgstr ""
-
-#: windres.c:437
-#, c-format
-msgid "%s: warning: "
-msgstr ""
-
-#: windres.c:439
-msgid ": duplicate value\n"
-msgstr ""
-
-#: windres.c:602
-#, c-format
-msgid "%s: unknown format type `%s'\n"
-msgstr ""
-
-#: windres.c:603
-#, c-format
-msgid "%s: supported formats:"
-msgstr ""
-
-#. Otherwise, we give up.
-#: windres.c:690
-#, c-format
-msgid "can not determine type of file `%s'; use the -I option"
-msgstr ""
-
-#: windres.c:704
-#, c-format
-msgid "Usage: %s [options] [input-file] [output-file]\n"
-msgstr ""
-
-#: windres.c:706
-msgid ""
-"Options:\n"
-" -i FILE, --input FILE Name input file\n"
-" -o FILE, --output FILE Name output file\n"
-" -I FORMAT, --input-format FORMAT\n"
-" Specify input format\n"
-" -O FORMAT, --output-format FORMAT\n"
-" Specify output format\n"
-" -F TARGET, --target TARGET Specify COFF target\n"
-" --preprocessor PROGRAM Program to use to preprocess rc file\n"
-" --include-dir DIR Include directory when preprocessing rc file\n"
-" -DSYM[=VAL], --define SYM[=VAL]\n"
-" Define SYM when preprocessing rc file\n"
-" -v Verbose - tells you what it's doing\n"
-" --language VAL Set language when reading rc file\n"
-" --use-temp-file Use a temporary file instead of popen to read\n"
-" the preprocessor output\n"
-" --no-use-temp-file Use popen (default)\n"
-msgstr ""
-
-#: windres.c:725
-msgid " --yydebug Turn on parser debugging\n"
-msgstr ""
-
-#: windres.c:728
-msgid ""
-" --help Print this help message\n"
-" --version Print version information\n"
-msgstr ""
-
-#: windres.c:731
-msgid ""
-"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
-"extension if not specified. A single file name is an input file.\n"
-"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
-msgstr ""
-
-#: windres.c:980
-msgid "no resources"
-msgstr ""
-
-#: wrstabs.c:366 wrstabs.c:2028
-#, c-format
-msgid "string_hash_lookup failed: %s\n"
-msgstr ""
-
-#: wrstabs.c:666
-#, c-format
-msgid "stab_int_type: bad size %u\n"
-msgstr ""
-
-#: wrstabs.c:1468
-#, c-format
-msgid "%s: warning: unknown size for field `%s' in struct\n"
-msgstr ""
diff --git a/contrib/binutils/include/regs/ChangeLog b/contrib/binutils/include/regs/ChangeLog
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/contrib/binutils/include/regs/ChangeLog
+++ /dev/null
diff --git a/contrib/binutils/include/remote-sim.h b/contrib/binutils/include/remote-sim.h
deleted file mode 100644
index 726ec623fbdf..000000000000
--- a/contrib/binutils/include/remote-sim.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/* This file defines the interface between the simulator and gdb.
- Copyright 1993, 1994, 1996, 1997, 1998, 2000
- Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#if !defined (REMOTE_SIM_H)
-#define REMOTE_SIM_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This file is used when building stand-alone simulators, so isolate this
- file from gdb. */
-
-/* Pick up CORE_ADDR_TYPE if defined (from gdb), otherwise use same value as
- gdb does (unsigned int - from defs.h). */
-
-#ifndef CORE_ADDR_TYPE
-typedef unsigned int SIM_ADDR;
-#else
-typedef CORE_ADDR_TYPE SIM_ADDR;
-#endif
-
-
-/* Semi-opaque type used as result of sim_open and passed back to all
- other routines. "desc" is short for "descriptor".
- It is up to each simulator to define `sim_state'. */
-
-typedef struct sim_state *SIM_DESC;
-
-
-/* Values for `kind' arg to sim_open. */
-
-typedef enum {
- SIM_OPEN_STANDALONE, /* simulator used standalone (run.c) */
- SIM_OPEN_DEBUG /* simulator used by debugger (gdb) */
-} SIM_OPEN_KIND;
-
-
-/* Return codes from various functions. */
-
-typedef enum {
- SIM_RC_FAIL = 0,
- SIM_RC_OK = 1,
- SIM_RC_UNKNOWN_BREAKPOINT = 2,
- SIM_RC_INSUFFICIENT_RESOURCES = 3,
- SIM_RC_DUPLICATE_BREAKPOINT = 4
-} SIM_RC;
-
-
-/* The bfd struct, as an opaque type. */
-
-struct _bfd;
-
-
-/* Main simulator entry points. */
-
-
-/* Create a fully initialized simulator instance.
-
- (This function is called when the simulator is selected from the
- gdb command line.)
-
- KIND specifies how the simulator shall be used. Currently there
- are only two kinds: stand-alone and debug.
-
- CALLBACK specifies a standard host callback (defined in callback.h).
-
- ABFD, when non NULL, designates a target program. The program is
- not loaded.
-
- ARGV is a standard ARGV pointer such as that passed from the
- command line. The syntax of the argument list is is assumed to be
- ``SIM-PROG { SIM-OPTION } [ TARGET-PROGRAM { TARGET-OPTION } ]''.
- The trailing TARGET-PROGRAM and args are only valid for a
- stand-alone simulator.
-
- On success, the result is a non NULL descriptor that shall be
- passed to the other sim_foo functions. While the simulator
- configuration can be parameterized by (in decreasing precedence)
- ARGV's SIM-OPTION, ARGV's TARGET-PROGRAM and the ABFD argument, the
- successful creation of the simulator shall not dependent on the
- presence of any of these arguments/options.
-
- Hardware simulator: The created simulator shall be sufficiently
- initialized to handle, with out restrictions any client requests
- (including memory reads/writes, register fetch/stores and a
- resume).
-
- Process simulator: that process is not created until a call to
- sim_create_inferior. FIXME: What should the state of the simulator
- be? */
-
-SIM_DESC sim_open PARAMS ((SIM_OPEN_KIND kind, struct host_callback_struct *callback, struct _bfd *abfd, char **argv));
-
-
-/* Destory a simulator instance.
-
- QUITTING is non-zero if we cannot hang on errors.
-
- This may involve freeing target memory and closing any open files
- and mmap'd areas. You cannot assume sim_kill has already been
- called. */
-
-void sim_close PARAMS ((SIM_DESC sd, int quitting));
-
-
-/* Load program PROG into the simulators memory.
-
- If ABFD is non-NULL, the bfd for the file has already been opened.
- The result is a return code indicating success.
-
- Hardware simulator: Normally, each program section is written into
- memory according to that sections LMA using physical (direct)
- addressing. The exception being systems, such as PPC/CHRP, which
- support more complicated program loaders. A call to this function
- should not effect the state of the processor registers. Multiple
- calls to this function are permitted and have an accumulative
- effect.
-
- Process simulator: Calls to this function may be ignored.
-
- FIXME: Most hardware simulators load the image at the VMA using
- virtual addressing.
-
- FIXME: For some hardware targets, before a loaded program can be
- executed, it requires the manipulation of VM registers and tables.
- Such manipulation should probably (?) occure in
- sim_create_inferior. */
-
-SIM_RC sim_load PARAMS ((SIM_DESC sd, char *prog, struct _bfd *abfd, int from_tty));
-
-
-/* Prepare to run the simulated program.
-
- ABFD, if not NULL, provides initial processor state information.
- ARGV and ENV, if non NULL, are NULL terminated lists of pointers.
-
- Hardware simulator: This function shall initialize the processor
- registers to a known value. The program counter and possibly stack
- pointer shall be set using information obtained from ABFD (or
- hardware reset defaults). ARGV and ENV, dependant on the target
- ABI, may be written to memory.
-
- Process simulator: After a call to this function, a new process
- instance shall exist. The TEXT, DATA, BSS and stack regions shall
- all be initialized, ARGV and ENV shall be written to process
- address space (according to the applicable ABI) and the program
- counter and stack pointer set accordingly. */
-
-SIM_RC sim_create_inferior PARAMS ((SIM_DESC sd, struct _bfd *abfd, char **argv, char **env));
-
-
-/* Fetch LENGTH bytes of the simulated program's memory. Start fetch
- at virtual address MEM and store in BUF. Result is number of bytes
- read, or zero if error. */
-
-int sim_read PARAMS ((SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length));
-
-
-/* Store LENGTH bytes from BUF into the simulated program's
- memory. Store bytes starting at virtual address MEM. Result is
- number of bytes write, or zero if error. */
-
-int sim_write PARAMS ((SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length));
-
-
-/* Fetch register REGNO storing its raw (target endian) value in the
- LENGTH byte buffer BUF. Return the actual size of the register or
- zero if REGNO is not applicable.
-
- Legacy implementations ignore LENGTH and always return -1.
-
- If LENGTH does not match the size of REGNO no data is transfered
- (the actual register size is still returned). */
-
-int sim_fetch_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf, int length));
-
-
-/* Store register REGNO from the raw (target endian) value in BUF.
- Return the actual size of the register or zero if REGNO is not
- applicable.
-
- Legacy implementations ignore LENGTH and always return -1.
-
- If LENGTH does not match the size of REGNO no data is transfered
- (the actual register size is still returned). */
-
-int sim_store_register PARAMS ((SIM_DESC sd, int regno, unsigned char *buf, int length));
-
-
-/* Print whatever statistics the simulator has collected.
-
- VERBOSE is currently unused and must always be zero. */
-
-void sim_info PARAMS ((SIM_DESC sd, int verbose));
-
-
-/* Run (or resume) the simulated program.
-
- STEP, when non-zero indicates that only a single simulator cycle
- should be emulated.
-
- SIGGNAL, if non-zero is a (HOST) SIGRC value indicating the type of
- event (hardware interrupt, signal) to be delivered to the simulated
- program.
-
- Hardware simulator: If the SIGRC value returned by
- sim_stop_reason() is passed back to the simulator via SIGGNAL then
- the hardware simulator shall correctly deliver the hardware event
- indicated by that signal. If a value of zero is passed in then the
- simulation will continue as if there were no outstanding signal.
- The effect of any other SIGGNAL value is is implementation
- dependant.
-
- Process simulator: If SIGRC is non-zero then the corresponding
- signal is delivered to the simulated program and execution is then
- continued. A zero SIGRC value indicates that the program should
- continue as normal. */
-
-void sim_resume PARAMS ((SIM_DESC sd, int step, int siggnal));
-
-
-/* Asynchronous request to stop the simulation.
- A nonzero return indicates that the simulator is able to handle
- the request */
-
-int sim_stop PARAMS ((SIM_DESC sd));
-
-
-/* Fetch the REASON why the program stopped.
-
- SIM_EXITED: The program has terminated. SIGRC indicates the target
- dependant exit status.
-
- SIM_STOPPED: The program has stopped. SIGRC uses the host's signal
- numbering as a way of identifying the reaon: program interrupted by
- user via a sim_stop request (SIGINT); a breakpoint instruction
- (SIGTRAP); a completed single step (SIGTRAP); an internal error
- condition (SIGABRT); an illegal instruction (SIGILL); Access to an
- undefined memory region (SIGSEGV); Mis-aligned memory access
- (SIGBUS). For some signals information in addition to the signal
- number may be retained by the simulator (e.g. offending address),
- that information is not directly accessable via this interface.
-
- SIM_SIGNALLED: The program has been terminated by a signal. The
- simulator has encountered target code that causes the the program
- to exit with signal SIGRC.
-
- SIM_RUNNING, SIM_POLLING: The return of one of these values
- indicates a problem internal to the simulator. */
-
-enum sim_stop { sim_running, sim_polling, sim_exited, sim_stopped, sim_signalled };
-
-void sim_stop_reason PARAMS ((SIM_DESC sd, enum sim_stop *reason, int *sigrc));
-
-
-/* Passthru for other commands that the simulator might support.
- Simulators should be prepared to deal with any combination of NULL
- or empty CMD. */
-
-void sim_do_command PARAMS ((SIM_DESC sd, char *cmd));
-
-/* Call these functions to set and clear breakpoints at ADDR. */
-
-SIM_RC sim_set_breakpoint PARAMS ((SIM_DESC sd, SIM_ADDR addr));
-SIM_RC sim_clear_breakpoint PARAMS ((SIM_DESC sd, SIM_ADDR addr));
-SIM_RC sim_clear_all_breakpoints PARAMS ((SIM_DESC sd));
-
-/* These functions are used to enable and disable breakpoints. */
-
-SIM_RC sim_enable_breakpoint PARAMS ((SIM_DESC sd, SIM_ADDR addr));
-SIM_RC sim_disable_breakpoint PARAMS ((SIM_DESC sd, SIM_ADDR addr));
-SIM_RC sim_enable_all_breakpoints PARAMS ((SIM_DESC sd));
-SIM_RC sim_disable_all_breakpoints PARAMS ((SIM_DESC sd));
-
-
-/* Provide simulator with a default (global) host_callback_struct.
- THIS PROCEDURE IS DEPRECIATED.
- GDB and NRUN do not use this interface.
- This procedure does not take a SIM_DESC argument as it is
- used before sim_open. */
-
-void sim_set_callbacks PARAMS ((struct host_callback_struct *));
-
-
-/* Set the size of the simulator memory array.
- THIS PROCEDURE IS DEPRECIATED.
- GDB and NRUN do not use this interface.
- This procedure does not take a SIM_DESC argument as it is
- used before sim_open. */
-
-void sim_size PARAMS ((int i));
-
-
-/* Single-step simulator with tracing enabled.
- THIS PROCEDURE IS DEPRECIATED.
- THIS PROCEDURE IS EVEN MORE DEPRECATED THAN SIM_SET_TRACE
- GDB and NRUN do not use this interface.
- This procedure returns: ``0'' indicating that the simulator should
- be continued using sim_trace() calls; ``1'' indicating that the
- simulation has finished. */
-
-int sim_trace PARAMS ((SIM_DESC sd));
-
-
-/* Enable tracing.
- THIS PROCEDURE IS DEPRECIATED.
- GDB and NRUN do not use this interface.
- This procedure returns: ``0'' indicating that the simulator should
- be continued using sim_trace() calls; ``1'' indicating that the
- simulation has finished. */
-
-void sim_set_trace PARAMS ((void));
-
-
-/* Configure the size of the profile buffer.
- THIS PROCEDURE IS DEPRECIATED.
- GDB and NRUN do not use this interface.
- This procedure does not take a SIM_DESC argument as it is
- used before sim_open. */
-
-void sim_set_profile_size PARAMS ((int n));
-
-
-/* Kill the running program.
- THIS PROCEDURE IS DEPRECIATED.
- GDB and NRUN do not use this interface.
- This procedure will be replaced as part of the introduction of
- multi-cpu simulators. */
-
-void sim_kill PARAMS ((SIM_DESC sd));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined (REMOTE_SIM_H) */
diff --git a/contrib/binutils/include/wait.h b/contrib/binutils/include/wait.h
deleted file mode 100644
index fa3c9ccb1d7e..000000000000
--- a/contrib/binutils/include/wait.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Define how to access the int that the wait system call stores.
- This has been compatible in all Unix systems since time immemorial,
- but various well-meaning people have defined various different
- words for the same old bits in the same old int (sometimes claimed
- to be a struct). We just know it's an int and we use these macros
- to access the bits. */
-
-/* The following macros are defined equivalently to their definitions
- in POSIX.1. We fail to define WNOHANG and WUNTRACED, which POSIX.1
- <sys/wait.h> defines, since our code does not use waitpid(). We
- also fail to declare wait() and waitpid(). */
-
-#ifndef WIFEXITED
-#define WIFEXITED(w) (((w)&0377) == 0)
-#endif
-
-#ifndef WIFSIGNALED
-#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
-#endif
-
-#ifndef WIFSTOPPED
-#ifdef IBM6000
-
-/* Unfortunately, the above comment (about being compatible in all Unix
- systems) is not quite correct for AIX, sigh. And AIX 3.2 can generate
- status words like 0x57c (sigtrap received after load), and gdb would
- choke on it. */
-
-#define WIFSTOPPED(w) ((w)&0x40)
-
-#else
-#define WIFSTOPPED(w) (((w)&0377) == 0177)
-#endif
-#endif
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(w) (((w) >> 8) & 0377) /* same as WRETCODE */
-#endif
-
-#ifndef WTERMSIG
-#define WTERMSIG(w) ((w) & 0177)
-#endif
-
-#ifndef WSTOPSIG
-#define WSTOPSIG WEXITSTATUS
-#endif
-
-/* These are not defined in POSIX, but are used by our programs. */
-
-#define WAITTYPE int
-
-#ifndef WCOREDUMP
-#define WCOREDUMP(w) (((w)&0200) != 0)
-#endif
-
-#ifndef WSETEXIT
-#define WSETEXIT(w,status) ((w) = (0 | ((status) << 8)))
-#endif
-
-#ifndef WSETSTOP
-#define WSETSTOP(w,sig) ((w) = (0177 | ((sig) << 8)))
-#endif
-
diff --git a/contrib/binutils/install.sh b/contrib/binutils/install.sh
deleted file mode 100755
index 4b883b386de2..000000000000
--- a/contrib/binutils/install.sh
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/contrib/binutils/ld/acconfig.h b/contrib/binutils/ld/acconfig.h
deleted file mode 100644
index c627d7faa97a..000000000000
--- a/contrib/binutils/ld/acconfig.h
+++ /dev/null
@@ -1,22 +0,0 @@
-
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
-
-/* Whether strstr must be declared even if <string.h> is included. */
-#undef NEED_DECLARATION_STRSTR
-
-/* Whether free must be declared even if <stdlib.h> is included. */
-#undef NEED_DECLARATION_FREE
-
-/* Whether sbrk must be declared even if <unistd.h> is included. */
-#undef NEED_DECLARATION_SBRK
-
-/* Whether getenv must be declared even if <stdlib.h> is included. */
-#undef NEED_DECLARATION_GETENV
-@TOP@
-
-/* Do we need to use the b modifier when opening binary files? */
-#undef USE_BINARY_FOPEN
diff --git a/contrib/binutils/ld/configdoc.texi b/contrib/binutils/ld/configdoc.texi
deleted file mode 100644
index 8d1acad1ef16..000000000000
--- a/contrib/binutils/ld/configdoc.texi
+++ /dev/null
@@ -1,14 +0,0 @@
-@c ------------------------------ CONFIGURATION VARS:
-@c 1. Inclusiveness of this manual
-@set GENERIC
-
-@c 2. Specific target machines
-@set H8300
-@set I960
-@set TICOFF
-
-@c 3. Properties of this configuration
-@clear SingleFormat
-@set UsesEnvVars
-@c ------------------------------ end CONFIGURATION VARS
-
diff --git a/contrib/binutils/ld/emulparams/armelf_linux26.sh b/contrib/binutils/ld/emulparams/armelf_linux26.sh
deleted file mode 100644
index 36d1b0ec5c7a..000000000000
--- a/contrib/binutils/ld/emulparams/armelf_linux26.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-ARCH=arm
-SCRIPT_NAME=elf
-OUTPUT_FORMAT="elf32-littlearm"
-BIG_OUTPUT_FORMAT="elf32-bigarm"
-LITTLE_OUTPUT_FORMAT="elf32-littlearm"
-MAXPAGESIZE=0x8000
-TEMPLATE_NAME=armelf
-GENERATE_SHLIB_SCRIPT=yes
-
-DATA_START_SYMBOLS='__data_start = . ;';
-OTHER_BSS_SYMBOLS='__bss_start__ = .;'
-OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
-
-# This needs to be high enough so that we can load ld.so below it,
-# yet low enough to stay away from the mmap area at 0x01100000.
-# Also, it is small enough so that relocs which are pointing
-# at absolute 0 will still be fixed up.
-# These values give us about 0.5MB for ld.so, 16.5MB for user
-# programs, and 15MB for mmap which seems a reasonable compromise.
-TEXT_START_ADDR=0x00080000
diff --git a/contrib/binutils/ld/emultempl/stringify.sed b/contrib/binutils/ld/emultempl/stringify.sed
deleted file mode 100644
index a526d3ffc4c5..000000000000
--- a/contrib/binutils/ld/emultempl/stringify.sed
+++ /dev/null
@@ -1,4 +0,0 @@
-s/["\\]/\\&/g
-s/$/\\n\\/
-1 s/^/"/
-$ s/$/n"/
diff --git a/contrib/binutils/ld/po/Make-in b/contrib/binutils/ld/po/Make-in
deleted file mode 100644
index 4291090c0009..000000000000
--- a/contrib/binutils/ld/po/Make-in
+++ /dev/null
@@ -1,251 +0,0 @@
-# Makefile for program source directory in GNU NLS utilities package.
-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file file be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
-subdir = po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-
-CC = @CC@
-GENCAT = @GENCAT@
-GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
-MSGMERGE = PATH=../src:$$PATH msgmerge
-
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I.. -I$(top_srcdir)/intl
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-SOURCES = cat-id-tbl.c
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
-stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
-
-.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-
-.c.o:
- $(COMPILE) $<
-
-.po.pox:
- $(MAKE) $(PACKAGE).pot
- $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
-
-.po.mo:
- $(MSGFMT) -o $@ $<
-
-.po.gmo:
- file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
- && rm -f $$file && $(GMSGFMT) -o $$file $<
-
-.po.cat:
- sed -f ../intl/po2msg.sed < $< > $*.msg \
- && rm -f $@ && $(GENCAT) $@ $*.msg
-
-
-all: all-@USE_NLS@
-
-all-yes: $(CATALOGS) @MAINT@ $(PACKAGE).pot
-all-no:
-
-$(srcdir)/$(PACKAGE).pot: $(POTFILES)
- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
- --add-comments -C --keyword=_ --keyword=N_ \
- --files-from=$(srcdir)/POTFILES.in
- rm -f $(srcdir)/$(PACKAGE).pot
- mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
-
-$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
-$(srcdir)/stamp-cat-id: $(PACKAGE).pot
- rm -f cat-id-tbl.tmp
- sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
- | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
- if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
- rm cat-id-tbl.tmp; \
- else \
- echo cat-id-tbl.c changed; \
- rm -f $(srcdir)/cat-id-tbl.c; \
- mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
- fi
- cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-
-
-install: install-exec install-data
-install-exec:
-install-info:
-install-data: install-data-@USE_NLS@
-install-data-no: all
-install-data-yes: all
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(datadir); \
- else \
- $(top_srcdir)/mkinstalldirs $(datadir); \
- fi
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- case "$$cat" in \
- *.gmo) destdir=$(gnulocaledir);; \
- *) destdir=$(localedir);; \
- esac; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- dir=$$destdir/$$lang/LC_MESSAGES; \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $$dir; \
- else \
- $(top_srcdir)/mkinstalldirs $$dir; \
- fi; \
- if test -r $$cat; then \
- $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- else \
- $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- fi; \
- if test -r $$cat.m; then \
- $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- if test -r $(srcdir)/$$cat.m ; then \
- $(INSTALL_DATA) $(srcdir)/$$cat.m \
- $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- true; \
- fi; \
- fi; \
- done
- if test "$(PACKAGE)" = "gettext"; then \
- if test -r $(MKINSTALLDIRS); then \
- $(MKINSTALLDIRS) $(gettextsrcdir); \
- else \
- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
- fi; \
- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
- $(gettextsrcdir)/Makefile.in.in; \
- else \
- : ; \
- fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- done
- rm -f $(gettextsrcdir)/po-Makefile.in.in
-
-check: all
-
-cat-id-tbl.o: ../intl/libgettext.h
-
-dvi info tags TAGS ID:
-
-mostlyclean:
- rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f $(GMOFILES)
-
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- for file in $$dists; do \
- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir); \
- done
-
-update-po: Makefile
- $(MAKE) $(PACKAGE).pot
- PATH=`pwd`/../src:$$PATH; \
- cd $(srcdir); \
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- mv $$lang.po $$lang.old.po; \
- echo "$$lang:"; \
- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
- rm -f $$lang.old.po; \
- else \
- echo "msgmerge for $$cat failed!"; \
- rm -f $$lang.po; \
- mv $$lang.old.po $$lang.po; \
- fi; \
- done
-
-POTFILES: POTFILES.in
- ( if test 'x$(srcdir)' != 'x.'; then \
- posrcprefix='$(top_srcdir)/'; \
- else \
- posrcprefix="../"; \
- fi; \
- rm -f $@-t $@ \
- && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
- -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
- | sed -e '$$s/\\$$//') > $@-t \
- && chmod a-w $@-t \
- && mv $@-t $@ )
-
-POTFILES.in: @MAINT@ ../Makefile
- cd .. && $(MAKE) po/POTFILES.in
-
-Makefile: Make-in ../config.status POTFILES
- cd .. \
- && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
- CONFIG_HEADERS= $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/contrib/binutils/ld/po/POTFILES.in b/contrib/binutils/ld/po/POTFILES.in
deleted file mode 100644
index f7a614d82d92..000000000000
--- a/contrib/binutils/ld/po/POTFILES.in
+++ /dev/null
@@ -1,29 +0,0 @@
-deffile.h
-emultempl/armcoff.em
-emultempl/pe.em
-ld.h
-ldcref.c
-ldctor.c
-ldctor.h
-ldemul.c
-ldemul.h
-ldexp.c
-ldexp.h
-ldfile.c
-ldfile.h
-ldlang.c
-ldlang.h
-ldlex.h
-ldmain.c
-ldmain.h
-ldmisc.c
-ldmisc.h
-ldver.c
-ldver.h
-ldwrite.c
-ldwrite.h
-lexsup.c
-mri.c
-mri.h
-pe-dll.c
-pe-dll.h
diff --git a/contrib/binutils/ld/po/ld.pot b/contrib/binutils/ld/po/ld.pot
deleted file mode 100644
index 87119b59134b..000000000000
--- a/contrib/binutils/ld/po/ld.pot
+++ /dev/null
@@ -1,1693 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-30 10:08-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: emultempl/armcoff.em:71
-msgid " --support-old-code Support interworking with old code\n"
-msgstr ""
-
-#: emultempl/armcoff.em:72
-msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
-msgstr ""
-
-#: emultempl/armcoff.em:141
-#, c-format
-msgid "Errors encountered processing file %s"
-msgstr ""
-
-#: emultempl/armcoff.em:207 emultempl/pe.em:1422
-msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
-msgstr ""
-
-#: emultempl/armcoff.em:212 emultempl/pe.em:1427
-msgid "%P: warning: connot find thumb start symbol %s\n"
-msgstr ""
-
-#: emultempl/pe.em:317
-msgid ""
-" --base_file <basefile> Generate a base file for relocatable "
-"DLLs\n"
-msgstr ""
-
-#: emultempl/pe.em:318
-msgid ""
-" --dll Set image base to the default for DLLs\n"
-msgstr ""
-
-#: emultempl/pe.em:319
-msgid " --file-alignment <size> Set file alignment\n"
-msgstr ""
-
-#: emultempl/pe.em:320
-msgid " --heap <size> Set initial size of the heap\n"
-msgstr ""
-
-#: emultempl/pe.em:321
-msgid ""
-" --image-base <address> Set start address of the executable\n"
-msgstr ""
-
-#: emultempl/pe.em:322
-msgid ""
-" --major-image-version <number> Set version number of the executable\n"
-msgstr ""
-
-#: emultempl/pe.em:323
-msgid " --major-os-version <number> Set minimum required OS version\n"
-msgstr ""
-
-#: emultempl/pe.em:324
-msgid ""
-" --major-subsystem-version <number> Set minimum required OS subsystem "
-"version\n"
-msgstr ""
-
-#: emultempl/pe.em:325
-msgid ""
-" --minor-image-version <number> Set revision number of the executable\n"
-msgstr ""
-
-#: emultempl/pe.em:326
-msgid " --minor-os-version <number> Set minimum required OS revision\n"
-msgstr ""
-
-#: emultempl/pe.em:327
-msgid ""
-" --minor-subsystem-version <number> Set minimum required OS subsystem "
-"revision\n"
-msgstr ""
-
-#: emultempl/pe.em:328
-msgid " --section-alignment <size> Set section alignment\n"
-msgstr ""
-
-#: emultempl/pe.em:329
-msgid " --stack <size> Set size of the initial stack\n"
-msgstr ""
-
-#: emultempl/pe.em:330
-msgid ""
-" --subsystem <name>[:<version>] Set required OS subsystem [& version]\n"
-msgstr ""
-
-#: emultempl/pe.em:331
-msgid ""
-" --support-old-code Support interworking with old code\n"
-msgstr ""
-
-#: emultempl/pe.em:332
-msgid ""
-" --thumb-entry=<symbol> Set the entry point to be Thumb "
-"<symbol>\n"
-msgstr ""
-
-#: emultempl/pe.em:334
-msgid ""
-" --add-stdcall-alias Export symbols with and without @nn\n"
-msgstr ""
-
-#: emultempl/pe.em:335
-msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n"
-msgstr ""
-
-#: emultempl/pe.em:336
-msgid ""
-" --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n"
-msgstr ""
-
-#: emultempl/pe.em:337
-msgid ""
-" --exclude-symbols sym,sym,... Exclude symbols from automatic export\n"
-msgstr ""
-
-#: emultempl/pe.em:338
-msgid ""
-" --exclude-libs lib,lib,... Exclude libraries from automatic "
-"export\n"
-msgstr ""
-
-#: emultempl/pe.em:339
-msgid ""
-" --export-all-symbols Automatically export all globals to "
-"DLL\n"
-msgstr ""
-
-#: emultempl/pe.em:340
-msgid " --kill-at Remove @nn from exported symbols\n"
-msgstr ""
-
-#: emultempl/pe.em:341
-msgid " --out-implib <file> Generate import library\n"
-msgstr ""
-
-#: emultempl/pe.em:342
-msgid ""
-" --output-def <file> Generate a .DEF file for the built DLL\n"
-msgstr ""
-
-#: emultempl/pe.em:343
-msgid " --warn-duplicate-exports Warn about duplicate exports.\n"
-msgstr ""
-
-#: emultempl/pe.em:344
-msgid ""
-" --compat-implib Create backward compatible import "
-"libs;\n"
-" create __imp_<SYMBOL> as well.\n"
-msgstr ""
-
-#: emultempl/pe.em:346
-msgid ""
-" --enable-auto-image-base Automatically choose image base for "
-"DLLs\n"
-" unless user specifies one\n"
-msgstr ""
-
-#: emultempl/pe.em:348
-msgid ""
-" --disable-auto-image-base Do not auto-choose image base. "
-"(default)\n"
-msgstr ""
-
-#: emultempl/pe.em:349
-msgid ""
-" --dll-search-prefix=<string> When linking dynamically to a dll "
-"without an\n"
-" importlib, use <string><basename>."
-"dll \n"
-" in preference to lib<basename>.dll \n"
-msgstr ""
-
-#: emultempl/pe.em:352
-msgid ""
-" --enable-auto-import Do sophistcated linking of _sym to \n"
-" __imp_sym for DATA references\n"
-msgstr ""
-
-#: emultempl/pe.em:354
-msgid ""
-" --disable-auto-import Do not auto-import DATA items from "
-"DLLs\n"
-msgstr ""
-
-#: emultempl/pe.em:355
-msgid ""
-" --enable-extra-pe-debug Enable verbose debug output when "
-"building\n"
-" or linking to DLLs (esp. auto-"
-"import)\n"
-msgstr ""
-
-#: emultempl/pe.em:424
-msgid "%P: warning: bad version number in -subsystem option\n"
-msgstr ""
-
-#: emultempl/pe.em:460
-msgid "%P%F: invalid subsystem type %s\n"
-msgstr ""
-
-#: emultempl/pe.em:475
-msgid "%P%F: invalid hex number for PE parameter '%s'\n"
-msgstr ""
-
-#: emultempl/pe.em:493
-msgid "%P%F: strange hex info for PE parameter '%s'\n"
-msgstr ""
-
-#: emultempl/pe.em:532
-#, c-format
-msgid "%s: Can't open base file %s\n"
-msgstr ""
-
-#: emultempl/pe.em:738
-msgid "%P: warning, file alignment > section alignment.\n"
-msgstr ""
-
-#: emultempl/pe.em:822 emultempl/pe.em:848
-#, c-format
-msgid "Warning: resolving %s by linking to %s\n"
-msgstr ""
-
-#: emultempl/pe.em:827 emultempl/pe.em:853
-msgid "Use --enable-stdcall-fixup to disable these warnings\n"
-msgstr ""
-
-#: emultempl/pe.em:828 emultempl/pe.em:854
-msgid "Use --disable-stdcall-fixup to disable these fixups\n"
-msgstr ""
-
-#: emultempl/pe.em:879
-#, c-format
-msgid "%C: Cannot get section contents - auto-import exception\n"
-msgstr ""
-
-#: emultempl/pe.em:887
-msgid ""
-"%C: variable '%T' can't be auto-imported. Please read the documentation for "
-"ld's --enable-auto-import for details.\n"
-msgstr ""
-
-#: emultempl/pe.em:916
-#, c-format
-msgid "Info: resolving %s by linking to %s (auto-import)\n"
-msgstr ""
-
-#: emultempl/pe.em:997
-msgid "%F%P: PE operations on non PE file.\n"
-msgstr ""
-
-#: emultempl/pe.em:1226
-#, c-format
-msgid "Errors encountered processing file %s\n"
-msgstr ""
-
-#: emultempl/pe.em:1249
-#, c-format
-msgid "Errors encountered processing file %s for interworking"
-msgstr ""
-
-#: emultempl/pe.em:1305 ldlang.c:2071 ldlang.c:4613 ldlang.c:4646
-#: ldmain.c:1062
-msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
-msgstr ""
-
-#: ldcref.c:158
-msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
-msgstr ""
-
-#: ldcref.c:164
-msgid "%X%P: cref_hash_lookup failed: %E\n"
-msgstr ""
-
-#: ldcref.c:235
-msgid ""
-"\n"
-"Cross Reference Table\n"
-"\n"
-msgstr ""
-
-#: ldcref.c:236
-msgid "Symbol"
-msgstr ""
-
-#: ldcref.c:244
-msgid "File\n"
-msgstr ""
-
-#: ldcref.c:248
-msgid "No symbols\n"
-msgstr ""
-
-#: ldcref.c:400
-msgid "%P: symbol `%T' missing from main hash table\n"
-msgstr ""
-
-#: ldcref.c:465
-msgid "%B%F: could not read symbols; %E\n"
-msgstr ""
-
-#: ldcref.c:469 ldmain.c:1128 ldmain.c:1132
-msgid "%B%F: could not read symbols: %E\n"
-msgstr ""
-
-#: ldcref.c:537 ldcref.c:544 ldmain.c:1178 ldmain.c:1185
-msgid "%B%F: could not read relocs: %E\n"
-msgstr ""
-
-#. We found a reloc for the symbol. The symbol is defined
-#. in OUTSECNAME. This reloc is from a section which is
-#. mapped into a section from which references to OUTSECNAME
-#. are prohibited. We must report an error.
-#: ldcref.c:563
-msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
-msgstr ""
-
-#: ldctor.c:88
-msgid "%P%X: Different relocs used in set %s\n"
-msgstr ""
-
-#: ldctor.c:106
-msgid "%P%X: Different object file formats composing set %s\n"
-msgstr ""
-
-#: ldctor.c:288 ldctor.c:302
-msgid "%P%X: %s does not support reloc %s for set %s\n"
-msgstr ""
-
-#: ldctor.c:323
-msgid "%P%X: Unsupported size %d for set %s\n"
-msgstr ""
-
-#: ldctor.c:344
-msgid ""
-"\n"
-"Set Symbol\n"
-"\n"
-msgstr ""
-
-#: ldemul.c:225
-#, c-format
-msgid "%S SYSLIB ignored\n"
-msgstr ""
-
-#: ldemul.c:232
-#, c-format
-msgid "%S HLL ignored\n"
-msgstr ""
-
-#: ldemul.c:253
-msgid "%P: unrecognised emulation mode: %s\n"
-msgstr ""
-
-#: ldemul.c:254
-msgid "Supported emulations: "
-msgstr ""
-
-#: ldemul.c:298
-msgid " no emulation specific options.\n"
-msgstr ""
-
-#: ldexp.c:184
-msgid "%F%P: %s uses undefined section %s\n"
-msgstr ""
-
-#: ldexp.c:186
-msgid "%F%P: %s forward reference of section %s\n"
-msgstr ""
-
-#: ldexp.c:400
-#, c-format
-msgid "%F%S %% by zero\n"
-msgstr ""
-
-#: ldexp.c:407
-#, c-format
-msgid "%F%S / by zero\n"
-msgstr ""
-
-#: ldexp.c:581
-#, c-format
-msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
-msgstr ""
-
-#: ldexp.c:601
-#, c-format
-msgid "%F%S: undefined symbol `%s' referenced in expression\n"
-msgstr ""
-
-#: ldexp.c:726
-#, c-format
-msgid "%F%S can not PROVIDE assignment to location counter\n"
-msgstr ""
-
-#: ldexp.c:736
-#, c-format
-msgid "%F%S invalid assignment to location counter\n"
-msgstr ""
-
-#: ldexp.c:740
-#, c-format
-msgid "%F%S assignment to location counter invalid outside of SECTION\n"
-msgstr ""
-
-#: ldexp.c:749
-msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
-msgstr ""
-
-#: ldexp.c:776
-msgid "%P%F:%s: hash creation failed\n"
-msgstr ""
-
-#: ldexp.c:1078 ldexp.c:1112
-#, c-format
-msgid "%F%S nonconstant expression for %s\n"
-msgstr ""
-
-#: ldexp.c:1167
-#, c-format
-msgid "%F%S non constant expression for %s\n"
-msgstr ""
-
-#: ldfile.c:105
-#, c-format
-msgid "attempt to open %s failed\n"
-msgstr ""
-
-#: ldfile.c:107
-#, c-format
-msgid "attempt to open %s succeeded\n"
-msgstr ""
-
-#: ldfile.c:113
-msgid "%F%P: invalid BFD target `%s'\n"
-msgstr ""
-
-#: ldfile.c:218 ldfile.c:234
-msgid "%P: skipping incompatible %s when searching for %s\n"
-msgstr ""
-
-#: ldfile.c:326
-msgid "%F%P: cannot open %s for %s: %E\n"
-msgstr ""
-
-#: ldfile.c:329
-msgid "%F%P: cannot open %s: %E\n"
-msgstr ""
-
-#: ldfile.c:359
-msgid "%F%P: cannot find %s\n"
-msgstr ""
-
-#: ldfile.c:378 ldfile.c:394
-#, c-format
-msgid "cannot find script file %s\n"
-msgstr ""
-
-#: ldfile.c:380 ldfile.c:396
-#, c-format
-msgid "opened script file %s\n"
-msgstr ""
-
-#: ldfile.c:445
-msgid "%P%F: cannot open linker script file %s: %E\n"
-msgstr ""
-
-#: ldfile.c:483
-msgid "%P%F: unknown architecture: %s\n"
-msgstr ""
-
-#: ldfile.c:499
-msgid "%P%F: target architecture respecified\n"
-msgstr ""
-
-#: ldfile.c:553
-msgid "%P%F: cannot represent machine `%s'\n"
-msgstr ""
-
-#: ldlang.c:784
-msgid ""
-"\n"
-"Memory Configuration\n"
-"\n"
-msgstr ""
-
-#: ldlang.c:786
-msgid "Name"
-msgstr ""
-
-#: ldlang.c:786
-msgid "Origin"
-msgstr ""
-
-#: ldlang.c:786
-msgid "Length"
-msgstr ""
-
-#: ldlang.c:786
-msgid "Attributes"
-msgstr ""
-
-#: ldlang.c:828
-msgid ""
-"\n"
-"Linker script and memory map\n"
-"\n"
-msgstr ""
-
-#: ldlang.c:845
-msgid "%P%F: Illegal use of `%s' section\n"
-msgstr ""
-
-#: ldlang.c:855
-msgid "%P%F: output format %s cannot represent section called %s\n"
-msgstr ""
-
-#: ldlang.c:1016
-msgid "%P: %B: warning: ignoring duplicate section `%s'\n"
-msgstr ""
-
-#: ldlang.c:1019
-msgid "%P: %B: warning: ignoring duplicate `%s' section symbol `%s'\n"
-msgstr ""
-
-#: ldlang.c:1033
-msgid "%P: %B: warning: duplicate section `%s' has different size\n"
-msgstr ""
-
-#: ldlang.c:1084
-msgid "%P%F: Failed to create hash table\n"
-msgstr ""
-
-#: ldlang.c:1503
-msgid "%B: file not recognized: %E\n"
-msgstr ""
-
-#: ldlang.c:1504
-msgid "%B: matching formats:"
-msgstr ""
-
-#: ldlang.c:1511
-msgid "%F%B: file not recognized: %E\n"
-msgstr ""
-
-#: ldlang.c:1567
-msgid "%F%B: member %B in archive is not an object\n"
-msgstr ""
-
-#: ldlang.c:1578 ldlang.c:1592
-msgid "%F%B: could not read symbols: %E\n"
-msgstr ""
-
-#: ldlang.c:1859
-msgid ""
-"%P: warning: could not find any targets that match endianness requirement\n"
-msgstr ""
-
-#: ldlang.c:1872
-msgid "%P%F: target %s not found\n"
-msgstr ""
-
-#: ldlang.c:1874
-msgid "%P%F: cannot open output file %s: %E\n"
-msgstr ""
-
-#: ldlang.c:1884
-msgid "%P%F:%s: can not make object file: %E\n"
-msgstr ""
-
-#: ldlang.c:1888
-msgid "%P%F:%s: can not set architecture: %E\n"
-msgstr ""
-
-#: ldlang.c:1892
-msgid "%P%F: can not create link hash table: %E\n"
-msgstr ""
-
-#: ldlang.c:2241
-msgid " load address 0x%V"
-msgstr ""
-
-#: ldlang.c:2381
-msgid "%W (size before relaxing)\n"
-msgstr ""
-
-#: ldlang.c:2468
-#, c-format
-msgid "Address of section %s set to "
-msgstr ""
-
-#: ldlang.c:2629
-#, c-format
-msgid "Fail with %d\n"
-msgstr ""
-
-#: ldlang.c:2874
-msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
-msgstr ""
-
-#: ldlang.c:2903
-msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
-msgstr ""
-
-#: ldlang.c:2911
-msgid "%X%P: region %s is full (%B section %s)\n"
-msgstr ""
-
-#: ldlang.c:2961
-msgid "%P%X: Internal error on COFF shared library section %s\n"
-msgstr ""
-
-#: ldlang.c:3005
-msgid "%P: warning: no memory region specified for section `%s'\n"
-msgstr ""
-
-#: ldlang.c:3020
-msgid "%P: warning: changing start of section %s by %u bytes\n"
-msgstr ""
-
-#: ldlang.c:3033
-#, c-format
-msgid "%F%S: non constant address expression for section %s\n"
-msgstr ""
-
-#: ldlang.c:3208
-msgid "%P%F: can't relax section: %E\n"
-msgstr ""
-
-#: ldlang.c:3403
-msgid "%F%P: invalid data statement\n"
-msgstr ""
-
-#: ldlang.c:3440
-msgid "%F%P: invalid reloc statement\n"
-msgstr ""
-
-#: ldlang.c:3579
-msgid "%P%F:%s: can't set start address\n"
-msgstr ""
-
-#: ldlang.c:3592 ldlang.c:3610
-msgid "%P%F: can't set start address\n"
-msgstr ""
-
-#: ldlang.c:3604
-msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
-msgstr ""
-
-#: ldlang.c:3615
-msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
-msgstr ""
-
-#: ldlang.c:3665
-msgid ""
-"%P%F: Relocatable linking with relocations from format %s (%B) to format %s "
-"(%B) is not supported\n"
-msgstr ""
-
-#: ldlang.c:3674
-msgid ""
-"%P: warning: %s architecture of input file `%B' is incompatible with %s "
-"output\n"
-msgstr ""
-
-#: ldlang.c:3695
-msgid "%E%X: failed to merge target specific data of file %B\n"
-msgstr ""
-
-#: ldlang.c:3784
-msgid ""
-"\n"
-"Allocating common symbols\n"
-msgstr ""
-
-#: ldlang.c:3785
-msgid ""
-"Common symbol size file\n"
-"\n"
-msgstr ""
-
-#. This message happens when using the
-#. svr3.ifile linker script, so I have
-#. disabled it.
-#: ldlang.c:3863
-msgid "%P: no [COMMON] command, defaulting to .bss\n"
-msgstr ""
-
-#: ldlang.c:3922
-msgid "%P%F: invalid syntax in flags\n"
-msgstr ""
-
-#: ldlang.c:4537
-msgid "%P%Fmultiple STARTUP files\n"
-msgstr ""
-
-#: ldlang.c:4580
-msgid "%X%P:%S: section has both a load address and a load region\n"
-msgstr ""
-
-#: ldlang.c:4830
-msgid "%F%P: bfd_record_phdr failed: %E\n"
-msgstr ""
-
-#: ldlang.c:4849
-msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
-msgstr ""
-
-#: ldlang.c:5150
-msgid "%X%P: unknown language `%s' in version information\n"
-msgstr ""
-
-#: ldlang.c:5202
-msgid ""
-"%X%P: anonymous version tag cannot be combined with other version tags\n"
-msgstr ""
-
-#: ldlang.c:5209
-msgid "%X%P: duplicate version tag `%s'\n"
-msgstr ""
-
-#: ldlang.c:5222 ldlang.c:5235
-msgid "%X%P: duplicate expression `%s' in version information\n"
-msgstr ""
-
-#: ldlang.c:5277
-msgid "%X%P: unable to find version dependency `%s'\n"
-msgstr ""
-
-#: ldlang.c:5299
-msgid "%X%P: unable to read .exports section contents\n"
-msgstr ""
-
-#: ldmain.c:198
-msgid "%X%P: can't set BFD default target to `%s': %E\n"
-msgstr ""
-
-#: ldmain.c:291
-msgid "%P%F: -r and --mpc860c0 may not be used together\n"
-msgstr ""
-
-#: ldmain.c:293
-msgid "%P%F: --relax and -r may not be used together\n"
-msgstr ""
-
-#: ldmain.c:295
-msgid "%P%F: -r and -shared may not be used together\n"
-msgstr ""
-
-#: ldmain.c:301
-msgid "%P%F: -F may not be used without -shared\n"
-msgstr ""
-
-#: ldmain.c:303
-msgid "%P%F: -f may not be used without -shared\n"
-msgstr ""
-
-#: ldmain.c:342
-msgid "using external linker script:"
-msgstr ""
-
-#: ldmain.c:344
-msgid "using internal linker script:"
-msgstr ""
-
-#: ldmain.c:378
-msgid "%P%F: no input files\n"
-msgstr ""
-
-#: ldmain.c:383
-msgid "%P: mode %s\n"
-msgstr ""
-
-#: ldmain.c:400
-msgid "%P%F: cannot open map file %s: %E\n"
-msgstr ""
-
-#: ldmain.c:433
-msgid "%P: link errors found, deleting executable `%s'\n"
-msgstr ""
-
-#: ldmain.c:444
-msgid "%F%B: final close failed: %E\n"
-msgstr ""
-
-#: ldmain.c:468
-msgid "%X%P: unable to open for source of copy `%s'\n"
-msgstr ""
-
-#: ldmain.c:470
-msgid "%X%P: unable to open for destination of copy `%s'\n"
-msgstr ""
-
-#: ldmain.c:476
-msgid "%P: Error writing file `%s'\n"
-msgstr ""
-
-#: ldmain.c:482 pe-dll.c:1465
-#, c-format
-msgid "%P: Error closing file `%s'\n"
-msgstr ""
-
-#: ldmain.c:499
-#, c-format
-msgid "%s: total time in link: %ld.%06ld\n"
-msgstr ""
-
-#: ldmain.c:502
-#, c-format
-msgid "%s: data size %ld\n"
-msgstr ""
-
-#: ldmain.c:543
-msgid "%P%F: missing argument to -m\n"
-msgstr ""
-
-#: ldmain.c:671 ldmain.c:692 ldmain.c:723
-msgid "%P%F: bfd_hash_table_init failed: %E\n"
-msgstr ""
-
-#: ldmain.c:676 ldmain.c:695
-msgid "%P%F: bfd_hash_lookup failed: %E\n"
-msgstr ""
-
-#: ldmain.c:710
-msgid "%X%P: error: duplicate retain-symbols-file\n"
-msgstr ""
-
-#: ldmain.c:754
-msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
-msgstr ""
-
-#: ldmain.c:759
-msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
-msgstr ""
-
-#: ldmain.c:835
-msgid ""
-"Archive member included because of file (symbol)\n"
-"\n"
-msgstr ""
-
-#: ldmain.c:906
-msgid "%X%C: multiple definition of `%T'\n"
-msgstr ""
-
-#: ldmain.c:909
-msgid "%D: first defined here\n"
-msgstr ""
-
-#: ldmain.c:913
-msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
-msgstr ""
-
-#: ldmain.c:944
-msgid "%B: warning: definition of `%T' overriding common\n"
-msgstr ""
-
-#: ldmain.c:947
-msgid "%B: warning: common is here\n"
-msgstr ""
-
-#: ldmain.c:954
-msgid "%B: warning: common of `%T' overridden by definition\n"
-msgstr ""
-
-#: ldmain.c:957
-msgid "%B: warning: defined here\n"
-msgstr ""
-
-#: ldmain.c:964
-msgid "%B: warning: common of `%T' overridden by larger common\n"
-msgstr ""
-
-#: ldmain.c:967
-msgid "%B: warning: larger common is here\n"
-msgstr ""
-
-#: ldmain.c:971
-msgid "%B: warning: common of `%T' overriding smaller common\n"
-msgstr ""
-
-#: ldmain.c:974
-msgid "%B: warning: smaller common is here\n"
-msgstr ""
-
-#: ldmain.c:978
-msgid "%B: warning: multiple common of `%T'\n"
-msgstr ""
-
-#: ldmain.c:980
-msgid "%B: warning: previous common is here\n"
-msgstr ""
-
-#: ldmain.c:1001 ldmain.c:1040
-msgid "%P: warning: global constructor %s used\n"
-msgstr ""
-
-#: ldmain.c:1050
-msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
-msgstr ""
-
-#: ldmain.c:1234
-msgid "%F%P: bfd_hash_table_init failed: %E\n"
-msgstr ""
-
-#: ldmain.c:1241
-msgid "%F%P: bfd_hash_lookup failed: %E\n"
-msgstr ""
-
-#: ldmain.c:1261
-msgid "%C: undefined reference to `%T'\n"
-msgstr ""
-
-#: ldmain.c:1267
-msgid "%D: more undefined references to `%T' follow\n"
-msgstr ""
-
-#: ldmain.c:1274
-msgid "%B: undefined reference to `%T'\n"
-msgstr ""
-
-#: ldmain.c:1280
-msgid "%B: more undefined references to `%T' follow\n"
-msgstr ""
-
-#: ldmain.c:1300 ldmain.c:1321 ldmain.c:1340
-msgid "%P%X: generated"
-msgstr ""
-
-#: ldmain.c:1303
-msgid " relocation truncated to fit: %s %T"
-msgstr ""
-
-#: ldmain.c:1324
-#, c-format
-msgid "dangerous relocation: %s\n"
-msgstr ""
-
-#: ldmain.c:1343
-msgid " reloc refers to symbol `%T' which is not being output\n"
-msgstr ""
-
-#: ldmisc.c:157
-msgid "no symbol"
-msgstr ""
-
-#: ldmisc.c:221
-#, c-format
-msgid "built in linker script:%u"
-msgstr ""
-
-#: ldmisc.c:271 ldmisc.c:275
-msgid "%B%F: could not read symbols\n"
-msgstr ""
-
-#. We use abfd->filename in this initial line,
-#. in case filename is a .h file or something
-#. similarly unhelpful.
-#: ldmisc.c:311
-msgid "%B: In function `%T':\n"
-msgstr ""
-
-#: ldmisc.c:463
-msgid "%F%P: internal error %s %d\n"
-msgstr ""
-
-#: ldmisc.c:513
-msgid "%P: internal error: aborting at %s line %d in %s\n"
-msgstr ""
-
-#: ldmisc.c:516
-msgid "%P: internal error: aborting at %s line %d\n"
-msgstr ""
-
-#: ldmisc.c:518
-msgid "%P%F: please report this bug\n"
-msgstr ""
-
-#. Output for noisy == 2 is intended to follow the GNU standards.
-#: ldver.c:38
-#, c-format
-msgid "GNU ld version %s\n"
-msgstr ""
-
-#: ldver.c:42
-msgid "Copyright 2002 Free Software Foundation, Inc.\n"
-msgstr ""
-
-#: ldver.c:43
-msgid ""
-"This program is free software; you may redistribute it under the terms of\n"
-"the GNU General Public License. This program has absolutely no warranty.\n"
-msgstr ""
-
-#: ldver.c:52
-msgid " Supported emulations:\n"
-msgstr ""
-
-#: ldwrite.c:59 ldwrite.c:195
-msgid "%P%F: bfd_new_link_order failed\n"
-msgstr ""
-
-#: ldwrite.c:325
-msgid "%F%P: clone section failed: %E\n"
-msgstr ""
-
-#: ldwrite.c:364
-#, c-format
-msgid "%8x something else\n"
-msgstr ""
-
-#: ldwrite.c:547
-msgid "%F%P: final link failed: %E\n"
-msgstr ""
-
-#: lexsup.c:173 lexsup.c:268
-msgid "KEYWORD"
-msgstr ""
-
-#: lexsup.c:173
-msgid "Shared library control for HP/UX compatibility"
-msgstr ""
-
-#: lexsup.c:176
-msgid "ARCH"
-msgstr ""
-
-#: lexsup.c:176
-msgid "Set architecture"
-msgstr ""
-
-#: lexsup.c:178 lexsup.c:339
-msgid "TARGET"
-msgstr ""
-
-#: lexsup.c:178
-msgid "Specify target for following input files"
-msgstr ""
-
-#: lexsup.c:180 lexsup.c:221 lexsup.c:233 lexsup.c:242 lexsup.c:313
-#: lexsup.c:346 lexsup.c:386
-msgid "FILE"
-msgstr ""
-
-#: lexsup.c:180
-msgid "Read MRI format linker script"
-msgstr ""
-
-#: lexsup.c:182
-msgid "Force common symbols to be defined"
-msgstr ""
-
-#: lexsup.c:186 lexsup.c:376 lexsup.c:378 lexsup.c:380
-msgid "ADDRESS"
-msgstr ""
-
-#: lexsup.c:186
-msgid "Set start address"
-msgstr ""
-
-#: lexsup.c:188
-msgid "Export all dynamic symbols"
-msgstr ""
-
-#: lexsup.c:190
-msgid "Link big-endian objects"
-msgstr ""
-
-#: lexsup.c:192
-msgid "Link little-endian objects"
-msgstr ""
-
-#: lexsup.c:194 lexsup.c:197
-msgid "SHLIB"
-msgstr ""
-
-#: lexsup.c:194
-msgid "Auxiliary filter for shared object symbol table"
-msgstr ""
-
-#: lexsup.c:197
-msgid "Filter for shared object symbol table"
-msgstr ""
-
-#: lexsup.c:199
-msgid "Ignored"
-msgstr ""
-
-#: lexsup.c:201
-msgid "SIZE"
-msgstr ""
-
-#: lexsup.c:201
-msgid "Small data size (if no size, same as --shared)"
-msgstr ""
-
-#: lexsup.c:204
-msgid "FILENAME"
-msgstr ""
-
-#: lexsup.c:204
-msgid "Set internal name of shared library"
-msgstr ""
-
-#: lexsup.c:206
-msgid "PROGRAM"
-msgstr ""
-
-#: lexsup.c:206
-msgid "Set PROGRAM as the dynamic linker to use"
-msgstr ""
-
-#: lexsup.c:208
-msgid "LIBNAME"
-msgstr ""
-
-#: lexsup.c:208
-msgid "Search for library LIBNAME"
-msgstr ""
-
-#: lexsup.c:210
-msgid "DIRECTORY"
-msgstr ""
-
-#: lexsup.c:210
-msgid "Add DIRECTORY to library search path"
-msgstr ""
-
-#: lexsup.c:212
-msgid "EMULATION"
-msgstr ""
-
-#: lexsup.c:212
-msgid "Set emulation"
-msgstr ""
-
-#: lexsup.c:214
-msgid "Print map file on standard output"
-msgstr ""
-
-#: lexsup.c:216
-msgid "Do not page align data"
-msgstr ""
-
-#: lexsup.c:218
-msgid "Do not page align data, do not make text readonly"
-msgstr ""
-
-#: lexsup.c:221
-msgid "Set output file name"
-msgstr ""
-
-#: lexsup.c:223
-msgid "Optimize output file"
-msgstr ""
-
-#: lexsup.c:225
-msgid "Ignored for SVR4 compatibility"
-msgstr ""
-
-#: lexsup.c:229
-msgid "Generate relocateable output"
-msgstr ""
-
-#: lexsup.c:233
-msgid "Just link symbols (if directory, same as --rpath)"
-msgstr ""
-
-#: lexsup.c:236
-msgid "Strip all symbols"
-msgstr ""
-
-#: lexsup.c:238
-msgid "Strip debugging symbols"
-msgstr ""
-
-#: lexsup.c:240
-msgid "Trace file opens"
-msgstr ""
-
-#: lexsup.c:242
-msgid "Read linker script"
-msgstr ""
-
-#: lexsup.c:244 lexsup.c:260 lexsup.c:299 lexsup.c:311 lexsup.c:370
-#: lexsup.c:389 lexsup.c:409
-msgid "SYMBOL"
-msgstr ""
-
-#: lexsup.c:244
-msgid "Start with undefined reference to SYMBOL"
-msgstr ""
-
-#: lexsup.c:246
-msgid "[=SECTION]"
-msgstr ""
-
-#: lexsup.c:246
-msgid "Don't merge input [SECTION | orphan] sections"
-msgstr ""
-
-#: lexsup.c:248
-msgid "Build global constructor/destructor tables"
-msgstr ""
-
-#: lexsup.c:250
-msgid "Print version information"
-msgstr ""
-
-#: lexsup.c:252
-msgid "Print version and emulation information"
-msgstr ""
-
-#: lexsup.c:254
-msgid "Discard all local symbols"
-msgstr ""
-
-#: lexsup.c:256
-msgid "Discard temporary local symbols (default)"
-msgstr ""
-
-#: lexsup.c:258
-msgid "Don't discard any local symbols"
-msgstr ""
-
-#: lexsup.c:260
-msgid "Trace mentions of SYMBOL"
-msgstr ""
-
-#: lexsup.c:262 lexsup.c:348 lexsup.c:350
-msgid "PATH"
-msgstr ""
-
-#: lexsup.c:262
-msgid "Default search path for Solaris compatibility"
-msgstr ""
-
-#: lexsup.c:264
-msgid "Start a group"
-msgstr ""
-
-#: lexsup.c:266
-msgid "End a group"
-msgstr ""
-
-#: lexsup.c:268
-msgid "Ignored for SunOS compatibility"
-msgstr ""
-
-#: lexsup.c:270
-msgid "Link against shared libraries"
-msgstr ""
-
-#: lexsup.c:276
-msgid "Do not link against shared libraries"
-msgstr ""
-
-#: lexsup.c:284
-msgid "Bind global references locally"
-msgstr ""
-
-#: lexsup.c:286
-msgid "Check section addresses for overlaps (default)"
-msgstr ""
-
-#: lexsup.c:288
-msgid "Do not check section addresses for overlaps"
-msgstr ""
-
-#: lexsup.c:291
-msgid "Output cross reference table"
-msgstr ""
-
-#: lexsup.c:293
-msgid "SYMBOL=EXPRESSION"
-msgstr ""
-
-#: lexsup.c:293
-msgid "Define a symbol"
-msgstr ""
-
-#: lexsup.c:295
-msgid "[=STYLE]"
-msgstr ""
-
-#: lexsup.c:295
-msgid "Demangle symbol names [using STYLE]"
-msgstr ""
-
-#: lexsup.c:297
-msgid "Generate embedded relocs"
-msgstr ""
-
-#: lexsup.c:299
-msgid "Call SYMBOL at unload-time"
-msgstr ""
-
-#: lexsup.c:301
-msgid "Force generation of file with .exe suffix"
-msgstr ""
-
-#: lexsup.c:303
-msgid "Remove unused sections (on some targets)"
-msgstr ""
-
-#: lexsup.c:306
-msgid "Don't remove unused sections (default)"
-msgstr ""
-
-#: lexsup.c:309
-msgid "Print option help"
-msgstr ""
-
-#: lexsup.c:311
-msgid "Call SYMBOL at load-time"
-msgstr ""
-
-#: lexsup.c:313
-msgid "Write a map file"
-msgstr ""
-
-#: lexsup.c:315
-msgid "Do not define Common storage"
-msgstr ""
-
-#: lexsup.c:317
-msgid "Do not demangle symbol names"
-msgstr ""
-
-#: lexsup.c:319
-msgid "Use less memory and more disk I/O"
-msgstr ""
-
-#: lexsup.c:321
-msgid "Allow no undefined symbols"
-msgstr ""
-
-#: lexsup.c:323
-msgid "Allow undefined symbols in shared objects"
-msgstr ""
-
-#: lexsup.c:325
-msgid "Allow multiple definitions"
-msgstr ""
-
-#: lexsup.c:327
-msgid "Disallow undefined version"
-msgstr ""
-
-#: lexsup.c:329
-msgid "Don't warn about mismatched input files"
-msgstr ""
-
-#: lexsup.c:331
-msgid "Turn off --whole-archive"
-msgstr ""
-
-#: lexsup.c:333
-msgid "Create an output file even if errors occur"
-msgstr ""
-
-#: lexsup.c:337
-msgid ""
-"Only use library directories specified on\n"
-"\t\t\t\tthe command line"
-msgstr ""
-
-#: lexsup.c:339
-msgid "Specify target of output file"
-msgstr ""
-
-#: lexsup.c:341
-msgid "Ignored for Linux compatibility"
-msgstr ""
-
-#: lexsup.c:343
-msgid "Relax branches on certain targets"
-msgstr ""
-
-#: lexsup.c:346
-msgid "Keep only symbols listed in FILE"
-msgstr ""
-
-#: lexsup.c:348
-msgid "Set runtime shared library search path"
-msgstr ""
-
-#: lexsup.c:350
-msgid "Set link time shared library search path"
-msgstr ""
-
-#: lexsup.c:352
-msgid "Create a shared library"
-msgstr ""
-
-#: lexsup.c:356
-msgid "Sort common symbols by size"
-msgstr ""
-
-#: lexsup.c:360
-msgid "COUNT"
-msgstr ""
-
-#: lexsup.c:360
-msgid "How many tags to reserve in .dynamic section"
-msgstr ""
-
-#: lexsup.c:362
-msgid "[=SIZE]"
-msgstr ""
-
-#: lexsup.c:362
-msgid "Split output sections every SIZE octets"
-msgstr ""
-
-#: lexsup.c:364
-msgid "[=COUNT]"
-msgstr ""
-
-#: lexsup.c:364
-msgid "Split output sections every COUNT relocs"
-msgstr ""
-
-#: lexsup.c:366
-msgid "Print memory usage statistics"
-msgstr ""
-
-#: lexsup.c:368
-msgid "Display target specific options"
-msgstr ""
-
-#: lexsup.c:370
-msgid "Do task level linking"
-msgstr ""
-
-#: lexsup.c:372
-msgid "Use same format as native linker"
-msgstr ""
-
-#: lexsup.c:374
-msgid "SECTION=ADDRESS"
-msgstr ""
-
-#: lexsup.c:374
-msgid "Set address of named section"
-msgstr ""
-
-#: lexsup.c:376
-msgid "Set address of .bss section"
-msgstr ""
-
-#: lexsup.c:378
-msgid "Set address of .data section"
-msgstr ""
-
-#: lexsup.c:380
-msgid "Set address of .text section"
-msgstr ""
-
-#: lexsup.c:382
-msgid "Output lots of information during link"
-msgstr ""
-
-#: lexsup.c:386
-msgid "Read version information script"
-msgstr ""
-
-#: lexsup.c:389
-msgid ""
-"Take export symbols list from .exports, using\n"
-"\t\t\t\tSYMBOL as the version."
-msgstr ""
-
-#: lexsup.c:392
-msgid "Warn about duplicate common symbols"
-msgstr ""
-
-#: lexsup.c:394
-msgid "Warn if global constructors/destructors are seen"
-msgstr ""
-
-#: lexsup.c:397
-msgid "Warn if the multiple GP values are used"
-msgstr ""
-
-#: lexsup.c:399
-msgid "Warn only once per undefined symbol"
-msgstr ""
-
-#: lexsup.c:401
-msgid "Warn if start of section changes due to alignment"
-msgstr ""
-
-#: lexsup.c:404
-msgid "Treat warnings as errors"
-msgstr ""
-
-#: lexsup.c:407
-msgid "Include all objects from following archives"
-msgstr ""
-
-#: lexsup.c:409
-msgid "Use wrapper functions for SYMBOL"
-msgstr ""
-
-#: lexsup.c:411
-msgid "[=WORDS]"
-msgstr ""
-
-#: lexsup.c:411
-msgid ""
-"Modify problematic branches in last WORDS (1-10,\n"
-"\t\t\t\tdefault 5) words of a page"
-msgstr ""
-
-#: lexsup.c:577
-msgid "%P: unrecognized option '%s'\n"
-msgstr ""
-
-#: lexsup.c:579
-msgid "%P%F: use the --help option for usage information\n"
-msgstr ""
-
-#: lexsup.c:598
-msgid "%P%F: unrecognized -a option `%s'\n"
-msgstr ""
-
-#: lexsup.c:611
-msgid "%P%F: unrecognized -assert option `%s'\n"
-msgstr ""
-
-#: lexsup.c:654
-msgid "%F%P: unknown demangling style `%s'"
-msgstr ""
-
-#: lexsup.c:714
-msgid "%P%F: invalid number `%s'\n"
-msgstr ""
-
-#. This can happen if the user put "-rpath,a" on the command
-#. line. (Or something similar. The comma is important).
-#. Getopt becomes confused and thinks that this is a -r option
-#. but it cannot parse the text after the -r so it refuses to
-#. increment the optind counter. Detect this case and issue
-#. an error message here. We cannot just make this a warning,
-#. increment optind, and continue because getopt is too confused
-#. and will seg-fault the next time around.
-#: lexsup.c:818
-msgid "%P%F: bad -rpath option\n"
-msgstr ""
-
-#: lexsup.c:916
-msgid "%P%F: -shared not supported\n"
-msgstr ""
-
-#: lexsup.c:948
-msgid "%P%F: invalid argument to option \"--section-start\"\n"
-msgstr ""
-
-#: lexsup.c:954
-msgid "%P%F: missing argument(s) to option \"--section-start\"\n"
-msgstr ""
-
-#: lexsup.c:1103
-msgid "%P%F: may not nest groups (--help for usage)\n"
-msgstr ""
-
-#: lexsup.c:1110
-msgid "%P%F: group ended before it began (--help for usage)\n"
-msgstr ""
-
-#: lexsup.c:1124
-msgid "%P%F: invalid argument to option \"mpc860c0\"\n"
-msgstr ""
-
-#: lexsup.c:1179
-msgid "%P%F: invalid hex number `%s'\n"
-msgstr ""
-
-#: lexsup.c:1191
-#, c-format
-msgid "Usage: %s [options] file...\n"
-msgstr ""
-
-#: lexsup.c:1193
-msgid "Options:\n"
-msgstr ""
-
-#. Note: Various tools (such as libtool) depend upon the
-#. format of the listings below - do not change them.
-#: lexsup.c:1276
-#, c-format
-msgid "%s: supported targets:"
-msgstr ""
-
-#: lexsup.c:1284
-#, c-format
-msgid "%s: supported emulations: "
-msgstr ""
-
-#: lexsup.c:1289
-#, c-format
-msgid "%s: emulation specific options:\n"
-msgstr ""
-
-#: lexsup.c:1293
-#, c-format
-msgid "Report bugs to %s\n"
-msgstr ""
-
-#: mri.c:334
-msgid "%P%F: unknown format type %s\n"
-msgstr ""
-
-#: pe-dll.c:323
-#, c-format
-msgid "%XUnsupported PEI architecture: %s\n"
-msgstr ""
-
-#: pe-dll.c:673
-#, c-format
-msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
-msgstr ""
-
-#: pe-dll.c:680
-#, c-format
-msgid "Warning, duplicate EXPORT: %s\n"
-msgstr ""
-
-#: pe-dll.c:744
-#, c-format
-msgid "%XCannot export %s: symbol not defined\n"
-msgstr ""
-
-#: pe-dll.c:750
-#, c-format
-msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
-msgstr ""
-
-#: pe-dll.c:757
-#, c-format
-msgid "%XCannot export %s: symbol not found\n"
-msgstr ""
-
-#: pe-dll.c:872
-#, c-format
-msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
-msgstr ""
-
-#: pe-dll.c:1183
-#, c-format
-msgid "%XError: %d-bit reloc in dll\n"
-msgstr ""
-
-#: pe-dll.c:1318
-#, c-format
-msgid "%s: Can't open output def file %s\n"
-msgstr ""
-
-#: pe-dll.c:1461
-msgid "; no contents available\n"
-msgstr ""
-
-#: pe-dll.c:2137
-#, c-format
-msgid "%XCan't open .lib file: %s\n"
-msgstr ""
-
-#: pe-dll.c:2142
-#, c-format
-msgid "Creating library file: %s\n"
-msgstr ""
diff --git a/contrib/binutils/ld/scripttempl/elfppc.sc b/contrib/binutils/ld/scripttempl/elfppc.sc
deleted file mode 100644
index ddab8f80f814..000000000000
--- a/contrib/binutils/ld/scripttempl/elfppc.sc
+++ /dev/null
@@ -1,288 +0,0 @@
-#
-# Unusual variables checked by this code:
-# NOP - two byte opcode for no-op (defaults to 0)
-# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
-# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
-# (e.g., .PARISC.milli)
-# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
-# (e.g., .PARISC.global)
-# OTHER_SECTIONS - at the end
-# EXECUTABLE_SYMBOLS - symbols that must be defined for an
-# executable (e.g., _DYNAMIC_LINK)
-# TEXT_START_SYMBOLS - symbols that appear at the start of the
-# .text section.
-# DATA_START_SYMBOLS - symbols that appear at the start of the
-# .data section.
-# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
-# .bss section besides __bss_start.
-#
-# When adding sections, do note that the names of some sections are used
-# when specifying the start address of the next.
-#
-test -z "$ENTRY" && ENTRY=_start
-test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-test "$LD_FLAG" = "N" && DATA_ADDR=.
-SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2) }"
-SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2) }"
-INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
-PLT=".plt ${RELOCATING-0} : { *(.plt) }"
-CTOR=".ctors ${CONSTRUCTING-0} :
- {
- ${CONSTRUCTING+${CTOR_START}}
- /* gcc uses crtbegin.o to find the start of
- the constructors, so we make sure it is
- first. Because this is a wildcard, it
- doesn't matter if the user does not
- actually link against crtbegin.o; the
- linker won't look for a file to match a
- wildcard. The wildcard also means that it
- doesn't matter which directory crtbegin.o
- is in. */
-
- KEEP (*crtbegin.o(.ctors))
-
- /* We don't want to include the .ctor section from
- from the crtend.o file until after the sorted ctors.
- The .ctor section from the crtend file contains the
- end of ctors marker and it must be last */
-
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- ${CONSTRUCTING+${CTOR_END}}
- }"
-
-DTOR=" .dtors ${CONSTRUCTING-0} :
- {
- ${CONSTRUCTING+${DTOR_START}}
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- ${CONSTRUCTING+${DTOR_END}}
- }"
-
-cat <<EOF
-OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
- "${LITTLE_OUTPUT_FORMAT}")
-OUTPUT_ARCH(${ARCH})
-ENTRY(${ENTRY})
-
-${RELOCATING+${LIB_SEARCH_DIRS}}
-${RELOCATING+/* Do we need any of these for elf?
- __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
-${RELOCATING+${EXECUTABLE_SYMBOLS}}
-${RELOCATING- /* For some reason, the Solaris linker makes bad executables
- if gld -r is used and the intermediate file has sections starting
- at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
- bug. But for now assigning the zero vmas works. */}
-
-${RELOCATING+PROVIDE (__stack = 0);}
-${RELOCATING+PROVIDE (___stack = 0);}
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_START_ADDR} + SIZEOF_HEADERS;}}
- ${CREATE_SHLIB+${RELOCATING+. = SIZEOF_HEADERS;}}
- ${CREATE_SHLIB-${INTERP}}
- .hash ${RELOCATING-0} : { *(.hash) }
- .dynsym ${RELOCATING-0} : { *(.dynsym) }
- .dynstr ${RELOCATING-0} : { *(.dynstr) }
- .gnu.version ${RELOCATING-0} : { *(.gnu.version) }
- .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d) }
- .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r) }
- .rela.text ${RELOCATING-0} :
- {
- *(.rela.text)
- ${RELOCATING+*(.rela.text.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.t*)}
- }
- .rela.data ${RELOCATING-0} :
- {
- *(.rela.data)
- ${RELOCATING+*(.rela.data.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.d*)}
- }
- .rela.rodata ${RELOCATING-0} :
- {
- *(.rela.rodata)
- ${RELOCATING+*(.rela.rodata.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.r*)}
- }
- .rela.got ${RELOCATING-0} : { *(.rela.got) }
- .rela.got1 ${RELOCATING-0} : { *(.rela.got1) }
- .rela.got2 ${RELOCATING-0} : { *(.rela.got2) }
- .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }
- .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }
- .rela.init ${RELOCATING-0} : { *(.rela.init) }
- .rela.fini ${RELOCATING-0} : { *(.rela.fini) }
- .rela.bss ${RELOCATING-0} : { *(.rela.bss) }
- .rela.plt ${RELOCATING-0} : { *(.rela.plt) }
- .rela.sdata ${RELOCATING-0} : { *(.rela.sdata) }
- .rela.sbss ${RELOCATING-0} : { *(.rela.sbss) }
- .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2) }
- .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2) }
- .text ${RELOCATING-0} :
- {
- ${RELOCATING+${TEXT_START_SYMBOLS}}
- *(.text)
- ${RELOCATING+*(.text.*)}
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- ${RELOCATING+*(.gnu.linkonce.t*)}
- } =${NOP-0}
- .init ${RELOCATING-0} : { KEEP (*(.init)) } =${NOP-0}
- .fini ${RELOCATING-0} : { KEEP (*(.fini)) } =${NOP-0}
- .rodata ${RELOCATING-0} :
- {
- *(.rodata)
- ${RELOCATING+*(.rodata.*)}
- ${RELOCATING+*(.gnu.linkonce.r*)}
- }
- .rodata1 ${RELOCATING-0} : { *(.rodata1) }
- ${RELOCATING+_etext = .;}
- ${RELOCATING+PROVIDE (etext = .);}
- ${RELOCATING+PROVIDE (__etext = .);}
- ${CREATE_SHLIB-${SDATA2}}
- ${CREATE_SHLIB-${SBSS2}}
- ${RELOCATING+${OTHER_READONLY_SECTIONS}}
-
- /* Adjust the address for the data segment. We want to adjust up to
- the same address within the page on the next page up. It would
- be more correct to do this:
- ${RELOCATING+. = ${DATA_ADDR-ALIGN(${MAXPAGESIZE}) + (ALIGN(8) & (${MAXPAGESIZE} - 1))};}
- The current expression does not correctly handle the case of a
- text segment ending precisely at the end of a page; it causes the
- data segment to skip a page. The above expression does not have
- this problem, but it will currently (2/95) cause BFD to allocate
- a single segment, combining both text and data, for this case.
- This will prevent the text segment from being shared among
- multiple executions of the program; I think that is more
- important than losing a page of the virtual address space (note
- that no actual memory is lost; the page which is skipped can not
- be referenced). */
- ${RELOCATING+. = ${DATA_ADDR- ALIGN(8) + ${MAXPAGESIZE}};}
-
- .data ${RELOCATING-0} :
- {
- ${RELOCATING+${DATA_START_SYMBOLS}}
- *(.data)
- ${RELOCATING+*(.data.*)}
- ${RELOCATING+*(.gnu.linkonce.d*)}
- ${CONSTRUCTING+CONSTRUCTORS}
- }
- .data1 ${RELOCATING-0} : { *(.data1) }
- ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
-
- .got1 ${RELOCATING-0} : { *(.got1) }
- .dynamic ${RELOCATING-0} : { *(.dynamic) }
-
- /* Put .ctors and .dtors next to the .got2 section, so that the pointers
- get relocated with -mrelocatable. Also put in the .fixup pointers.
- The current compiler no longer needs this, but keep it around for 2.7.2 */
-
- ${RELOCATING+PROVIDE (_GOT2_START_ = .);}
- ${RELOCATING+PROVIDE (__GOT2_START_ = .);}
- .got2 ${RELOCATING-0} : { *(.got2) }
-
- ${RELOCATING+PROVIDE (__CTOR_LIST__ = .);}
- ${RELOCATING+PROVIDE (___CTOR_LIST__ = .);}
- ${RELOCATING+${CTOR}}
- ${RELOCATING+PROVIDE (__CTOR_END__ = .);}
- ${RELOCATING+PROVIDE (___CTOR_END__ = .);}
-
- ${RELOCATING+PROVIDE (__DTOR_LIST__ = .);}
- ${RELOCATING+PROVIDE (___DTOR_LIST__ = .);}
- ${RELOCATING+${DTOR}}
- ${RELOCATING+PROVIDE (__DTOR_END__ = .);}
- ${RELOCATING+PROVIDE (___DTOR_END__ = .);}
-
- ${RELOCATING+PROVIDE (_FIXUP_START_ = .);}
- ${RELOCATING+PROVIDE (__FIXUP_START_ = .);}
- .fixup ${RELOCATING-0} : { *(.fixup) }
- ${RELOCATING+PROVIDE (_FIXUP_END_ = .);}
- ${RELOCATING+PROVIDE (__FIXUP_END_ = .);}
- ${RELOCATING+PROVIDE (_GOT2_END_ = .);}
- ${RELOCATING+PROVIDE (__GOT2_END_ = .);}
-
- ${RELOCATING+PROVIDE (_GOT_START_ = .);}
- ${RELOCATING+PROVIDE (__GOT_START_ = .);}
- .got ${RELOCATING-0} : { *(.got) }
- .got.plt ${RELOCATING-0} : { *(.got.plt) }
- ${CREATE_SHLIB+${SDATA2}}
- ${CREATE_SHLIB+${SBSS2}}
- ${RELOCATING+PROVIDE (_GOT_END_ = .);}
- ${RELOCATING+PROVIDE (__GOT_END_ = .);}
-
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
- .sdata ${RELOCATING-0} : { *(.sdata) }
- ${RELOCATING+_edata = .;}
- ${RELOCATING+PROVIDE (edata = .);}
- ${RELOCATING+PROVIDE (__edata = .);}
- .sbss ${RELOCATING-0} :
- {
- ${RELOCATING+PROVIDE (__sbss_start = .);}
- ${RELOCATING+PROVIDE (___sbss_start = .);}
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- ${RELOCATING+PROVIDE (__sbss_end = .);}
- ${RELOCATING+PROVIDE (___sbss_end = .);}
- }
- ${PLT}
- .bss ${RELOCATING-0} :
- {
- ${RELOCATING+${OTHER_BSS_SYMBOLS}}
- ${RELOCATING+PROVIDE (__bss_start = .);}
- ${RELOCATING+PROVIDE (___bss_start = .);}
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- ${RELOCATING+_end = . ;}
- ${RELOCATING+PROVIDE (end = .);}
- ${RELOCATING+PROVIDE (__end = .);}
-
- /* These are needed for ELF backends which have not yet been
- converted to the new style linker. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
-
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
-
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
-
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
-
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
-
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
-
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-
- /* These must appear regardless of ${RELOCATING}. */
- ${OTHER_SECTIONS}
-}
-EOF
diff --git a/contrib/binutils/ld/scripttempl/tic30aout.sc b/contrib/binutils/ld/scripttempl/tic30aout.sc
deleted file mode 100644
index 28baed37e614..000000000000
--- a/contrib/binutils/ld/scripttempl/tic30aout.sc
+++ /dev/null
@@ -1,34 +0,0 @@
-cat <<EOF
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-OUTPUT_ARCH(${ARCH})
-
-${STACKZERO+${RELOCATING+${STACKZERO}}}
-${RELOCATING+PROVIDE (__stack = 0);}
-SECTIONS
-{
- ${RELOCATING+. = ${TEXT_START_ADDR};}
- .text :
- {
- CREATE_OBJECT_SYMBOLS
- *(.text)
- ${RELOCATING+_etext = .;}
- ${RELOCATING+__etext = .;}
- ${PAD_TEXT+${RELOCATING+. = ${DATA_ALIGNMENT};}}
- }
- ${RELOCATING+. = ${DATA_ALIGNMENT};}
- .data :
- {
- *(.data)
- ${RELOCATING+_edata = .;}
- ${RELOCATING+__edata = .;}
- }
- .bss :
- {
- ${RELOCATING+ __bss_start = .};
- *(.bss)
- *(COMMON)
- ${RELOCATING+_end = ALIGN(4) };
- ${RELOCATING+__end = ALIGN(4) };
- }
-}
-EOF
diff --git a/contrib/binutils/ld/scripttempl/tic30coff.sc b/contrib/binutils/ld/scripttempl/tic30coff.sc
deleted file mode 100644
index df2d4f737cd3..000000000000
--- a/contrib/binutils/ld/scripttempl/tic30coff.sc
+++ /dev/null
@@ -1,58 +0,0 @@
-cat <<EOF
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-OUTPUT_ARCH("${OUTPUT_ARCH}")
-
-MEMORY
-{
- rom : ORIGIN = 0x00000300, LENGTH = 16k
- ram : ORIGIN = 0x00000300 + 16k, LENGTH = 16k
- ramblk0 : ORIGIN = 0x02026000, LENGTH = 0x1000
- ramblk1 : ORIGIN = 0x02027000, LENGTH = 0x1000
-}
-
-SECTIONS
-{
-.vectors 0x00000000 :
-{
- *(vectors)
-}
-
-.text :
-{
- *(.text)
-} > rom
-
-.const :
-{
- *(.const)
- __etext = . ;
-} > rom
-
-.mdata : AT( ADDR(.const) + SIZEOF(.const) )
-{
- __data = . ;
- *(.data);
- __edata = . ;
-} > ram
-
-.bss :
-{
- __bss = . ;
- *(.bss);
- *(COMMON);
- __ebss = . ;
-} > ram
-
-.ram0 :
-{
- *(ram0)
-} > ramblk0
-
-.ram1 :
-{
- *(ram1)
-} > ramblk1
-
-}
-
-EOF
diff --git a/contrib/binutils/ld/scripttempl/v850.sc b/contrib/binutils/ld/scripttempl/v850.sc
deleted file mode 100644
index 8958321b2b95..000000000000
--- a/contrib/binutils/ld/scripttempl/v850.sc
+++ /dev/null
@@ -1,230 +0,0 @@
-cat << EOF
-OUTPUT_FORMAT("elf32-v850", "elf32-v850",
- "elf32-v850")
-OUTPUT_ARCH(v850)
-ENTRY(_start)
-SEARCH_DIR(.);
-SECTIONS
-{
- /* This saves a little space in the ELF file, since the zda starts
- at a higher location that the ELF headers take up. */
-
- .zdata ${ZDATA_START_ADDR} :
- {
- *(.zdata)
- *(.zbss)
- *(reszdata)
- *(.zcommon)
- }
-
- /* This is the read only part of the zero data area.
- Having it as a seperate section prevents its
- attributes from being inherited by the zdata
- section. Specifically it prevents the zdata
- section from being marked READONLY. */
-
- .rozdata ${ROZDATA_START_ADDR} :
- {
- *(.rozdata)
- *(romzdata)
- *(romzbss)
- }
-
- /* Read-only sections, merged into text segment. */
- . = ${TEXT_START_ADDR};
- .interp : { *(.interp) }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .rel.text : { *(.rel.text) }
- .rela.text : { *(.rela.text) }
- .rel.data : { *(.rel.data) }
- .rela.data : { *(.rela.data) }
- .rel.rodata : { *(.rel.rodata) }
- .rela.rodata : { *(.rela.rodata) }
- .rel.gcc_except_table : { *(.rel.gcc_except_table) }
- .rela.gcc_except_table : { *(.rela.gcc_except_table) }
- .rel.got : { *(.rel.got) }
- .rela.got : { *(.rela.got) }
- .rel.ctors : { *(.rel.ctors) }
- .rela.ctors : { *(.rela.ctors) }
- .rel.dtors : { *(.rel.dtors) }
- .rela.dtors : { *(.rela.dtors) }
- .rel.init : { *(.rel.init) }
- .rela.init : { *(.rela.init) }
- .rel.fini : { *(.rel.fini) }
- .rela.fini : { *(.rela.fini) }
- .rel.bss : { *(.rel.bss) }
- .rela.bss : { *(.rela.bss) }
- .rel.plt : { *(.rel.plt) }
- .rela.plt : { *(.rela.plt) }
- .init : { KEEP (*(.init)) } =0
- .plt : { *(.plt) }
-
- .text :
- {
- *(.text)
- ${RELOCATING+*(.text.*)}
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
-
- ${RELOCATING+_etext = .;}
- ${RELOCATING+PROVIDE (etext = .);}
-
- /* This is special code area at the end of the normal text section.
- It contains a small lookup table at the start followed by the
- code pointed to by entries in the lookup table. */
-
- .call_table_data ${CALL_TABLE_START_ADDR} :
- {
- ${RELOCATING+PROVIDE(__ctbp = .);}
- *(.call_table_data)
- } = 0xff /* Fill gaps with 0xff. */
-
- .call_table_text :
- {
- *(.call_table_text)
- }
-
- .fini : { KEEP (*(.fini)) } =0
- .rodata : { *(.rodata) ${RELOCATING+*(.rodata.*)} *(.gnu.linkonce.r*) }
- .rodata1 : { *(.rodata1) }
-
- .data :
- {
- *(.data)
- ${RELOCATING+*(.data.*)}
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- .ctors :
- {
- ${CONSTRUCTING+___ctors = .;}
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*crtend(.ctors))
- ${CONSTRUCTING+___ctors_end = .;}
- }
- .dtors :
- {
- ${CONSTRUCTING+___dtors = .;}
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*crtend.o(.dtors))
- ${CONSTRUCTING+___dtors_end = .;}
- }
- .jcr :
- {
- KEEP (*(.jcr))
- }
-
- .gcc_except_table : { *(.gcc_except_table) }
-
- .got : { *(.got.plt) *(.got) }
- .dynamic : { *(.dynamic) }
-
- .tdata ${TDATA_START_ADDR} :
- {
- ${RELOCATING+PROVIDE (__ep = .);}
- *(.tbyte)
- *(.tcommon_byte)
- *(.tdata)
- *(.tbss)
- *(.tcommon)
- }
-
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
-
- .sdata ${SDATA_START_ADDR} :
- {
- ${RELOCATING+PROVIDE (__gp = . + 0x8000);}
- *(.sdata)
- }
-
- /* See comment about .rozdata. */
- .rosdata ${ROSDATA_START_ADDR} :
- {
- *(.rosdata)
- }
-
- /* We place the .sbss data section AFTER the .rosdata section, so that
- it can directly preceed the .bss section. This allows runtime startup
- code to initialise all the zero-data sections by simply taking the
- value of '_edata' and zeroing until it reaches '_end'. */
-
- .sbss :
- {
- ${RELOCATING+__sbss_start = .;}
- *(.sbss)
- *(.scommon)
- }
-
- ${RELOCATING+_edata = DEFINED (__sbss_start) ? __sbss_start : . ;}
- ${RELOCATING+PROVIDE (edata = _edata);}
-
- .bss :
- {
- ${RELOCATING+__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;}
- ${RELOCATING+__real_bss_start = . ;}
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
-
- ${RELOCATING+_end = . ;}
- ${RELOCATING+PROVIDE (end = .);}
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
-
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
-
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
-
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
-
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
-
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
-
- /* SGI/MIPS DWARF 2 extensions. */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-
- /* User stack. */
- .stack 0x200000 :
- {
- ${RELOCATING+__stack = .;}
- *(.stack)
- }
-}
-EOF
diff --git a/contrib/binutils/ld/scripttempl/z8000.sc b/contrib/binutils/ld/scripttempl/z8000.sc
deleted file mode 100644
index 646c88080a9a..000000000000
--- a/contrib/binutils/ld/scripttempl/z8000.sc
+++ /dev/null
@@ -1,57 +0,0 @@
-cat <<EOF
-OUTPUT_FORMAT("${OUTPUT_FORMAT}")
-OUTPUT_ARCH("${OUTPUT_ARCH}")
-ENTRY(_start)
-
-SECTIONS
-{
-.text ${BIG+ ${RELOCATING+ 0x0000000}} :
- {
- *(.text)
- *(.strings)
- *(.rdata)
- }
-
-.ctors ${BIG+ ${RELOCATING+ 0x2000000}} :
- {
- ${CONSTRUCTING+ ___ctors = . ; }
- *(.ctors);
- ${CONSTRUCTING+ ___ctors_end = . ; }
- ___dtors = . ;
- *(.dtors);
- ${CONSTRUCTING+ ___dtors_end = . ; }
- }
-
-.data ${BIG+ ${RELOCATING+ 0x3000000}} :
- {
- *(.data)
- }
-
-.bss ${BIG+ ${RELOCATING+ 0x4000000}} :
- {
- ${RELOCATING+ __start_bss = . ; }
- *(.bss);
- *(COMMON);
- ${RELOCATING+ __end_bss = . ; }
- }
-
-.heap ${BIG+ ${RELOCATING+ 0x5000000}} :
- {
- ${RELOCATING+ __start_heap = . ; }
- ${RELOCATING+ . = . + 20k ; }
- ${RELOCATING+ __end_heap = . ; }
- }
-
-.stack ${RELOCATING+ 0xf000 } :
- {
- ${RELOCATING+ _stack = . ; }
- *(.stack)
- ${RELOCATING+ __stack_top = . ; }
- }
-
-}
-EOF
-
-
-
-
diff --git a/contrib/binutils/libiberty/acconfig.h b/contrib/binutils/libiberty/acconfig.h
deleted file mode 100644
index f7c599df7ac6..000000000000
--- a/contrib/binutils/libiberty/acconfig.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Define if you have the sys_errlist variable. */
-#undef HAVE_SYS_ERRLIST
-
-/* Define if you have the sys_nerr variable. */
-#undef HAVE_SYS_NERR
-
-/* Define if you have the sys_siglist variable. */
-#undef HAVE_SYS_SIGLIST
-
-/* Define if you have the strerror function. */
-#undef HAVE_STRERROR
diff --git a/contrib/binutils/libiberty/alloca-botch.h b/contrib/binutils/libiberty/alloca-botch.h
deleted file mode 100644
index c909573f58c6..000000000000
--- a/contrib/binutils/libiberty/alloca-botch.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* RS/6000 AIX botched alloca and requires a pragma, which ordinary compilers
- throw up about, so we have to put it in a specially-configured file.
- Like this one. */
-
-#pragma alloca
diff --git a/contrib/binutils/libiberty/alloca-conf.h b/contrib/binutils/libiberty/alloca-conf.h
deleted file mode 100644
index 9c3eea396c19..000000000000
--- a/contrib/binutils/libiberty/alloca-conf.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "config.h"
-
-#if defined(__GNUC__) && !defined(C_ALLOCA)
-# ifndef alloca
-# define alloca __builtin_alloca
-# endif
-#else /* ! defined (__GNUC__) */
-# ifdef _AIX
- #pragma alloca
-# else
-# if defined(HAVE_ALLOCA_H) && !defined(C_ALLOCA)
-# include <alloca.h>
-# else /* ! defined (HAVE_ALLOCA_H) */
-# ifdef __STDC__
-extern PTR alloca (size_t);
-# else /* ! defined (__STDC__) */
-extern PTR alloca ();
-# endif /* ! defined (__STDC__) */
-# endif /* ! defined (HAVE_ALLOCA_H) */
-# ifdef _WIN32
-# include <malloc.h>
-# endif
-# endif /* ! defined (_AIX) */
-#endif /* ! defined (__GNUC__) */
diff --git a/contrib/binutils/libiberty/alloca-norm.h b/contrib/binutils/libiberty/alloca-norm.h
deleted file mode 100644
index bda4fc049adf..000000000000
--- a/contrib/binutils/libiberty/alloca-norm.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* "Normal" configuration for alloca. */
-
-#ifdef __GNUC__
-#ifndef alloca
-#define alloca __builtin_alloca
-#endif
-#else /* ! defined (__GNUC__) */
-#if defined (sparc) && defined (sun)
-#include <alloca.h>
-#ifdef __STDC__
-extern void *__builtin_alloca();
-#else /* ! defined (__STDC__) */
-extern char *__builtin_alloca(); /* Stupid include file doesn't declare it */
-#endif /* ! defined (__STDC__) */
-#else /* ! defined (sparc) || ! defined (sun) */
-#ifdef __STDC__
-PTR alloca (size_t);
-#else /* ! defined (__STDC__) */
-PTR alloca (); /* must agree with functions.def */
-#endif /* ! defined (__STDC__) */
-#endif /* ! defined (sparc) || ! defined (sun) */
-#ifdef _WIN32
-#include <malloc.h>
-#endif
-#endif /* ! defined (__GNUC__) */
diff --git a/contrib/binutils/libiberty/config/mh-sysv b/contrib/binutils/libiberty/config/mh-sysv
deleted file mode 100644
index eb102d550108..000000000000
--- a/contrib/binutils/libiberty/config/mh-sysv
+++ /dev/null
@@ -1 +0,0 @@
-RANLIB=true
diff --git a/contrib/binutils/libiberty/config/mh-sysv4 b/contrib/binutils/libiberty/config/mh-sysv4
deleted file mode 100644
index 4d1aa3cd61d5..000000000000
--- a/contrib/binutils/libiberty/config/mh-sysv4
+++ /dev/null
@@ -1,3 +0,0 @@
-HDEFINES = -DHAVE_SYSCONF
-RANLIB=true
-INSTALL = cp
diff --git a/contrib/binutils/libiberty/config/mt-mingw32 b/contrib/binutils/libiberty/config/mt-mingw32
deleted file mode 100644
index 2fb17d783d03..000000000000
--- a/contrib/binutils/libiberty/config/mt-mingw32
+++ /dev/null
@@ -1,27 +0,0 @@
-# Mingw32 target Makefile fragment.
-# The autoconfiguration fails for a Mingw32 target, because of an
-# incompatible definition of sys_errlist, which is imported from a DLL.
-# Therefore, we compute the dependencies by hand.
-
-HDEFINES = -DNO_SYS_PARAM_H -DNO_SYS_FILE_H
-CONFIG_H = mgconfig.h
-NEEDED_LIST = mgneeded-list
-
-mgconfig.h: Makefile
- if [ -f ../newlib/Makefile ]; then \
- $(MAKE) $(FLAGS_TO_PASS) xconfig.h; \
- cp xconfig.h mgconfig.h; \
- else \
- echo "#define NEED_sys_siglist 1" >>mgconfig.h; \
- echo "#define NEED_strsignal 1" >>mgconfig.h; \
- echo "#define NEED_psignal 1" >>mgconfig.h; \
- echo "#define NEED_basename 1" >>mgconfig.h; \
- fi
-
-mgneeded-list: Makefile
- if [ -f ../newlib/Makefile ]; then \
- $(MAKE) $(FLAGS_TO_PASS) xneeded-list; \
- cp xneeded-list mgneeded-list; \
- else \
- echo getopt.o vasprintf.o >mgneeded-list; \
- fi
diff --git a/contrib/binutils/libiberty/configure.in b/contrib/binutils/libiberty/configure.in
deleted file mode 100644
index a8dc66fa83c3..000000000000
--- a/contrib/binutils/libiberty/configure.in
+++ /dev/null
@@ -1,459 +0,0 @@
-dnl Process this file with autoconf to produce a configure script
-
-AC_PREREQ(2.13)
-AC_INIT(pexecute.c)
-
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported. We don't use libtool yet, but some day we might, so...
-ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-dnl We use these options to decide which functions to include.
-AC_ARG_WITH(target-subdir,
-[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target])
-AC_ARG_WITH(build-subdir,
-[ --with-build-subdir=SUBDIR Configuring in a subdirectory for build])
-AC_ARG_WITH(cross-host,
-[ --with-cross-host=HOST Configuring with a cross compiler])
-AC_ARG_WITH(newlib,
-[ --with-newlib Configuring with newlib])
-
-if test "${srcdir}" = "."; then
- if test -n "${with_build_subdir}"; then
- libiberty_topdir="${srcdir}/../.."
- with_target_subdir=
- elif test -z "${with_target_subdir}"; then
- libiberty_topdir="${srcdir}/.."
- else
- if test "${with_target_subdir}" != "."; then
- libiberty_topdir="${srcdir}/${with_multisrctop}../.."
- else
- libiberty_topdir="${srcdir}/${with_multisrctop}.."
- fi
- fi
-else
- libiberty_topdir="${srcdir}/.."
-fi
-AC_CONFIG_AUX_DIR($libiberty_topdir)
-
-dnl Very limited version of automake's enable-maintainer-mode
-
-AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode
- enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- maintainer_mode=$enableval,
- maintainer_mode=no)
-
-AC_MSG_RESULT($maintainer_mode)
-
-if test "$maintainer_mode" = "yes"; then
- MAINT=''
- NOTMAINT='#'
-else
- MAINT='#'
- NOTMAINT=''
-fi
-AC_SUBST(MAINT)dnl
-AC_SUBST(NOTMAINT)dnl
-
-# Do we have a single-tree copy of texinfo? Even if we do, we can't
-# rely on it - libiberty is built before texinfo.
-AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
-if test "x$MAKEINFO" = "x"; then
- MAKEINFO="@echo makeinfo missing; true"
- BUILD_INFO=
-else
- BUILD_INFO=info
- case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in
- x*\ [[1-3]].* )
- MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true"
- BUILD_INFO=
- AC_MSG_WARN([
-*** Makeinfo is too old. Info documentation will not be built.])
- ;;
- esac
-fi
-AC_SUBST(MAKEINFO)
-AC_SUBST(BUILD_INFO)
-
-AC_CHECK_PROG(PERL, perl, perl, )
-if test x"$PERL" = x""; then
- HAVE_PERL='#'
-else
- HAVE_PERL=''
-fi
-AC_SUBST(HAVE_PERL)
-
-AC_CANONICAL_HOST
-
-dnl When we start using automake:
-dnl AM_INIT_AUTOMAKE(libiberty, 1.0)
-
-dnl These must be called before AM_PROG_LIBTOOL, because it may want
-dnl to call AC_CHECK_PROG.
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-
-LIB_AC_PROG_CC
-
-AC_PROG_CC_C_O
-# autoconf is lame and doesn't give us any substitution variable for this.
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
- NO_MINUS_C_MINUS_O=yes
-else
- OUTPUT_OPTION='-o $@'
-fi
-AC_SUBST(NO_MINUS_C_MINUS_O)
-AC_SUBST(OUTPUT_OPTION)
-
-AC_ISC_POSIX
-AC_C_CONST
-AC_C_INLINE
-
-dnl When we start using libtool:
-dnl Default to a non shared library. This may be overridden by the
-dnl configure option --enable-shared.
-dnl AM_DISABLE_SHARED
-
-dnl When we start using libtool:
-dnl AM_PROG_LIBTOOL
-
-dnl When we start using automake:
-dnl AM_CONFIG_HEADER(config.h:config.in)
-AC_CONFIG_HEADER(config.h:config.in)
-
-dnl When we start using automake:
-dnl AM_MAINTAINER_MODE
-dnl AC_EXEEXT
-
-dnl When we start using automake:
-dnl AM_PROG_INSTALL
-AC_PROG_INSTALL
-
-. ${srcdir}/config.table
-host_makefile_frag=${frag}
-AC_SUBST_FILE(host_makefile_frag)
-
-# It's OK to check for header files. Although the compiler may not be
-# able to link anything, it had better be able to at least compile
-# something.
-AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h)
-AC_HEADER_SYS_WAIT
-AC_HEADER_TIME
-
-libiberty_AC_DECLARE_ERRNO
-
-AC_CHECK_TYPE(uintptr_t, unsigned long)
-
-if test $ac_cv_type_uintptr_t = yes
-then
- AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.])
-fi
-
-AC_TYPE_PID_T
-
-# This is the list of functions which libiberty will provide if they
-# are not available on the host.
-
-funcs="asprintf"
-funcs="$funcs atexit"
-funcs="$funcs basename"
-funcs="$funcs bcmp"
-funcs="$funcs bcopy"
-funcs="$funcs bsearch"
-funcs="$funcs bzero"
-funcs="$funcs calloc"
-funcs="$funcs clock"
-funcs="$funcs ffs"
-funcs="$funcs getcwd"
-funcs="$funcs getpagesize"
-funcs="$funcs index"
-funcs="$funcs insque"
-funcs="$funcs memchr"
-funcs="$funcs memcmp"
-funcs="$funcs memcpy"
-funcs="$funcs memmove"
-funcs="$funcs memset"
-funcs="$funcs mkstemps"
-funcs="$funcs putenv"
-funcs="$funcs random"
-funcs="$funcs rename"
-funcs="$funcs rindex"
-funcs="$funcs setenv"
-funcs="$funcs sigsetmask"
-funcs="$funcs strcasecmp"
-funcs="$funcs strchr"
-funcs="$funcs strdup"
-funcs="$funcs strncasecmp"
-funcs="$funcs strrchr"
-funcs="$funcs strstr"
-funcs="$funcs strtod"
-funcs="$funcs strtol"
-funcs="$funcs strtoul"
-funcs="$funcs tmpnam"
-funcs="$funcs vasprintf"
-funcs="$funcs vfprintf"
-funcs="$funcs vprintf"
-funcs="$funcs vsprintf"
-funcs="$funcs waitpid"
-
-# Also in the old function.def file: alloca, vfork, getopt.
-
-vars="sys_errlist sys_nerr sys_siglist"
-
-checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday"
-
-# These are neither executed nor required, but they help keep
-# autoheader happy without adding a bunch of text to acconfig.h.
-if test "x" = "y"; then
- AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock)
- AC_CHECK_FUNCS(getcwd getpagesize index insque mkstemps memchr memcmp memcpy)
- AC_CHECK_FUNCS(memmove memset putenv random rename rindex sigsetmask)
- AC_CHECK_FUNCS(strcasecmp setenv strchr strdup strncasecmp strrchr strstr)
- AC_CHECK_FUNCS(strtod strtol strtoul tmpnam vasprintf vfprintf vprintf)
- AC_CHECK_FUNCS(vsprintf waitpid getrusage on_exit psignal strerror strsignal)
- AC_CHECK_FUNCS(sysconf times sbrk gettimeofday ffs)
- AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
- AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
- AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
-fi
-
-# For each of these functions, if the host does not provide the
-# function we want to put FN.o in LIBOBJS, and if the host does
-# provide the function, we want to define HAVE_FN in config.h.
-
-setobjs=
-CHECK=
-target_header_dir=
-if test -n "${with_target_subdir}"; then
-
- # We are being configured as a target library. AC_REPLACE_FUNCS
- # may not work correctly, because the compiler may not be able to
- # link executables. Note that we may still be being configured
- # native.
-
- # If we are being configured for newlib, we know which functions
- # newlib provide and which ones we will be expected to provide.
-
- if test "x${with_newlib}" = "xyes"; then
- LIBOBJS="asprintf.o basename.o insque.o random.o strdup.o vasprintf.o"
-
- for f in $funcs; do
- case "$f" in
- asprintf | basename | insque | random | strdup | vasprintf)
- ;;
- *)
- n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- ;;
- esac
- done
-
- # newlib doesnt provide any of the variables in $vars, so we
- # dont have to check them here.
-
- # Of the functions in $checkfuncs, newlib only has strerror.
- AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
-
- setobjs=yes
-
- fi
-
- # We may wish to install the target headers somewhere.
- AC_ARG_ENABLE(install-libiberty,
- [ --enable-install-libiberty Install headers for end users],
- enable_install_libiberty=$enableval,
- enable_install_libiberty=no)dnl
-
- # Option parsed, now set things appropriately.
- case x"$enable_install_libiberty" in
- xyes|x)
- target_header_dir=libiberty
- ;;
- xno)
- target_header_dir=
- ;;
- *)
- # This could be sanity-checked in various ways...
- target_header_dir="${enable_install_libiberty}"
- ;;
- esac
-
-
-else
-
- # Not a target library, so we set things up to run the test suite.
- CHECK=check-cplus-dem
-
-fi
-
-AC_SUBST(CHECK)
-AC_SUBST(target_header_dir)
-
-case "${host}" in
- *-*-cygwin* | *-*-mingw*)
- AC_DEFINE_NOAUTOHEADER(HAVE_SYS_ERRLIST)
- AC_DEFINE_NOAUTOHEADER(HAVE_SYS_NERR)
- ;;
-esac
-
-if test -z "${setobjs}"; then
- case "${host}" in
-
- *-*-vxworks*)
- # Handle VxWorks configuration specially, since on VxWorks the
- # libraries are actually on the target board, not in the file
- # system.
- LIBOBJS="basename.o getpagesize.o insque.o random.o strcasecmp.o"
- LIBOBJS="$LIBOBJS strncasecmp.o strdup.o vfork.o waitpid.o vasprintf.o"
- for f in $funcs; do
- case "$f" in
- basename | getpagesize | insque | random | strcasecmp)
- ;;
- strncasecmp | strdup | vfork | waitpid | vasprintf)
- ;;
- *)
- n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- ;;
- esac
- done
-
- # VxWorks doesn't provide any of the variables in $vars, so we
- # don't have to check them here.
-
- # Of the functions in $checkfuncs, VxWorks only has strerror.
- AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
-
- setobjs=yes
- ;;
-
- esac
-fi
-
-if test -z "${setobjs}"; then
-
- case "${host}" in
-
- *-*-cygwin*)
- # The Cygwin library actually uses a couple of files from
- # libiberty when it is built. If we are building a native
- # Cygwin, and we run the tests, we will appear to have these
- # files. However, when we go on to build winsup, we will wind up
- # with a library which does not have the files, since they should
- # have come from libiberty.
-
- # We handle this by removing the functions the winsup library
- # provides from our shell variables, so that they appear to be
- # missing.
-
- # DJ - only if we're *building* cygwin, not just building *with* cygwin
-
- if test -n "${with_target_subdir}"
- then
- funcs="`echo $funcs | sed -e 's/random//'`"
- LIBOBJS="$LIBOBJS random.o"
- vars="`echo $vars | sed -e 's/sys_siglist//'`"
- checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
- fi
- ;;
-
- *-*-mingw32*)
- # Under mingw32, sys_nerr and sys_errlist exist, but they are
- # macros, so the test below won't find them.
- libiberty_cv_var_sys_nerr=yes
- libiberty_cv_var_sys_errlist=yes
- ;;
-
- *-*-uwin*)
- # Under some versions of uwin, vfork is notoriously buggy and the test
- # can hang configure; on other versions, vfork exists just as a stub.
- # FIXME: This should be removed once vfork in uwin's runtime is fixed.
- ac_cv_func_vfork_works=no
- # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
- # macros (actually, these are imported from a DLL, but the end effect
- # is the same), so the test below won't find them.
- libiberty_cv_var_sys_nerr=yes
- libiberty_cv_var_sys_errlist=yes
- ;;
-
- *-*-*vms*)
- # Under VMS, vfork works very different than on Unix. The standard test
- # won't work, and it isn't easily adaptable. It makes more sense to
- # just force it.
- ac_cv_func_vfork_works=yes
- ;;
-
- esac
-
- # We haven't set the list of objects yet. Use the standard autoconf
- # tests. This will only work if the compiler works.
- AC_PROG_CC_WORKS
- AC_REPLACE_FUNCS($funcs)
- libiberty_AC_FUNC_C_ALLOCA
- AC_FUNC_VFORK
- if test $ac_cv_func_vfork_works = no; then
- LIBOBJS="$LIBOBJS vfork.o"
- fi
- # We only need _doprnt if we might use it to implement v*printf.
- if test $ac_cv_func_vprintf != yes \
- || test $ac_cv_func_vfprintf != yes \
- || test $ac_cv_func_vsprintf != yes; then
- AC_REPLACE_FUNCS(_doprnt)
- else
- AC_CHECK_FUNCS(_doprnt)
- fi
-
- for v in $vars; do
- AC_MSG_CHECKING([for $v])
- AC_CACHE_VAL(libiberty_cv_var_$v,
- [AC_TRY_LINK([int *p;], [extern int $v []; p = $v;],
- [eval "libiberty_cv_var_$v=yes"],
- [eval "libiberty_cv_var_$v=no"])])
- if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then
- AC_MSG_RESULT(yes)
- n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- else
- AC_MSG_RESULT(no)
- fi
- done
- AC_CHECK_FUNCS($checkfuncs)
-fi
-
-libiberty_AC_FUNC_STRNCMP
-
-# Install a library built with a cross compiler in $(tooldir) rather
-# than $(libdir).
-if test -z "${with_cross_host}"; then
- INSTALL_DEST=libdir
-else
- INSTALL_DEST=tooldir
-fi
-AC_SUBST(INSTALL_DEST)
-
-# We need multilib support, but only if configuring for the target.
-AC_OUTPUT(Makefile testsuite/Makefile,
-[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-if test -n "$CONFIG_FILES"; then
- if test -n "${with_build_subdir}" || test -n "${with_target_subdir}"; then
- # FIXME: We shouldn't need to set ac_file
- ac_file=Makefile
- LD="${ORIGINAL_LD_FOR_MULTILIBS}"
- . ${libiberty_topdir}/config-ml.in
- fi
-fi],
-srcdir=${srcdir}
-host=${host}
-target=${target}
-with_target_subdir=${with_target_subdir}
-with_build_subdir=${with_build_subdir}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="--enable-multilib ${ac_configure_args}"
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-libiberty_topdir=${libiberty_topdir}
-)
diff --git a/contrib/binutils/libiberty/cp-demangle.c b/contrib/binutils/libiberty/cp-demangle.c
index bb543fa0c2fb..19f191ed8b8b 100644
--- a/contrib/binutils/libiberty/cp-demangle.c
+++ b/contrib/binutils/libiberty/cp-demangle.c
@@ -2396,8 +2396,6 @@ d_expr_primary (di)
const char *s;
type = cplus_demangle_type (di);
- if (type == NULL)
- return NULL;
/* If we have a type we know how to print, we aren't going to
print the type name itself. */
diff --git a/contrib/binutils/libiberty/dummy.c b/contrib/binutils/libiberty/dummy.c
deleted file mode 100644
index 08da647e30eb..000000000000
--- a/contrib/binutils/libiberty/dummy.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <ansidecl.h>
-
-#ifdef __STDC__
-#include <stddef.h>
-#define clock_t unsigned long
-#define DEF(NAME, RETURN_TYPE, ARGLIST, ARGS) extern RETURN_TYPE NAME (ARGS);
-#define DEFFUNC(NAME, RETURN_TYPE, ARGLIST, ARGS) extern RETURN_TYPE NAME (ARGS);
-#else
-#define void int
-#define size_t unsigned long
-#define clock_t unsigned long
-#define DEF(NAME, RETURN_TYPE, ARGLIST, ARGS) extern RETURN_TYPE NAME ();
-#define DEFFUNC(NAME, RETURN_TYPE, ARGLIST, ARGS) extern RETURN_TYPE NAME ();
-#endif
-
-#define DEFVAR(NAME,DECL,USE) extern DECL;
-
-#define NOTHING /*nothing*/
-
-#include "alloca-conf.h"
-#include "functions.def"
-
-/* Always use our: getopt.o getopt1.o obstack.o spaces.o */
-
-int
-main (argc, argv)
- int argc; char **argv;
-{
-
-/* Create a dummy function call for each DEF-defined function. */
-
-#undef DEF
-#undef DEFVAR
-#undef DEFFUNC
-#undef AND
-#define AND = 0;
-/* ARGS expands into a set of declaration. NAME ARG_LIST expands
- info a function call that uses those variables as actual parameters.
- If the function has been DEF'ed correctly, we can pass the right
- number and types of parameters, which is nice. (E.g. gcc may
- otherwise complain about the wrong number of parameters to certain
- builtins.) */
-#define DEF(NAME, RETURN_TYPE, ARG_LIST, ARGS) { ARGS; NAME ARG_LIST; }
-#define DEFVAR(NAME, DECL, USE) { USE; }
-#define DEFFUNC(NAME, RETURN_TYPE, ARG_LIST, ARGS) { ARGS; NAME ARG_LIST; }
-#include "functions.def"
-
- return (0);
-}
diff --git a/contrib/binutils/libiberty/functions.def b/contrib/binutils/libiberty/functions.def
deleted file mode 100644
index 0f13f107868e..000000000000
--- a/contrib/binutils/libiberty/functions.def
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * List of function definitions that may *optionally* be included
- * in libiberty.a. The function names must match the filenames,
- * e.g. bzero() is defined in bzero.c. (While each file can contain
- * extra functions, do not list them.)
- *
- * In the default libiberty configuration, these object files
- * (e.g bzero.o) are included if and only if cc fails to find
- * the corresponding function in libc.
- */
-
-DEF(asprintf, int, (), NOTHING)
-DEF(atexit, int, (f), void (*f)())
-DEF(bcmp, int, (s1, s2, length), char *s1 AND char *s2 AND int length )
-DEF(bcopy, void, (s1, s2, length), char *s1 AND char *s2 AND int length )
-DEF(bzero, void, (s, length), char *s AND int length)
-DEF(clock, clock_t, (), NOTHING)
-DEF(getopt, int, (argc, argv, optstring),
- int argc AND char **argv AND CONST char *optstring)
-DEF(getpagesize, int , (), NOTHING)
-DEF(getcwd, char*, (buf, len), char *buf AND int len)
-DEF(index, char*, (s, c), char *s AND int c)
-DEF(insque, void, (), NOTHING)
-DEF(memchr, PTR, (s, c, length), CONST PTR s AND int c AND size_t length)
-DEF(memcmp, int, (s1, s2, length),
- CONST PTR s1 AND CONST PTR s2 AND size_t length)
-DEF(memcpy, PTR, (s1, s2, length), PTR s1 AND CONST PTR s2 AND size_t length)
-DEF(memmove, PTR, (s1, s2, length), PTR s1 AND CONST PTR s2 AND size_t length)
-DEF(memset, PTR, (s, val, length), PTR s AND int val AND size_t length )
-DEF(random, long int, (), NOTHING)
-DEF(rename, int, (f, t), char *f AND char *t)
-DEF(rindex, char*, (s, c), char *s AND int c)
-DEF(strcasecmp, int, (s1, s2), char *s1 AND char *s2)
-DEF(strncasecmp, int, (s1, s2, n), char *s1 AND char *s2 AND int n)
-DEF(strchr, char*, (s, c), CONST char *s AND int c)
-DEF(strdup, char*, (s1), char * s1)
-DEF(strrchr, char*, (s, c), CONST char *s AND int c)
-DEF(strstr, char*, (), NOTHING)
-DEF(strtod, double, (), NOTHING)
-DEF(strtol, long, (), NOTHING)
-DEF(strtoul, unsigned long, (), NOTHING)
-DEF(tmpnam, char *, (s), char * s)
-DEF(vfork, int, (), NOTHING)
-DEF(vfprintf, int, (), NOTHING)
-DEF(vprintf, int, (), NOTHING)
-DEF(vsprintf, int, (), NOTHING)
-DEF(sigsetmask, int, (), NOTHING)
-DEF(alloca, PTR, (size), size_t size)
-DEF(waitpid, int, (pid, statp, opts), int pid AND int* statp AND int opts )
-DEF(vasprintf, int, (), NOTHING)
-
-/* List of global variables that we want to look for in the host
- environment, and to generate an entry NEED_<variable> in config.h
- if they are not found. The first arg is the variable name, the
- second arg is how to declare the variable, and the third is how to
- use it. */
-
-DEFVAR(sys_nerr, int sys_nerr, sys_nerr = 0)
-DEFVAR(sys_errlist, char *sys_errlist[], sys_errlist[0] = 0)
-DEFVAR(sys_siglist, char *sys_siglist[], sys_siglist[0] = 0)
-
-/* List of global functions that we want to look for in the host
- environment, and to generate an entry NEED_<funcname> in config.h
- if they are not found. */
-
-DEFFUNC(strerror, char*, (errnoval), int errnoval)
-DEFFUNC(psignal, void, (signo, message), unsigned signo AND char *message)
-DEFFUNC(basename, char *, (name), CONST char *name)
-DEFFUNC(on_exit, void, (f, arg), void (*f)() AND char *arg)
-DEFFUNC(strsignal, const char *, (signo), int signo)
diff --git a/contrib/binutils/libiberty/pexecute.c b/contrib/binutils/libiberty/pexecute.c
deleted file mode 100644
index 347c4db10924..000000000000
--- a/contrib/binutils/libiberty/pexecute.c
+++ /dev/null
@@ -1,792 +0,0 @@
-/* Utilities to execute a program in a subprocess (possibly linked by pipes
- with other subprocesses), and wait for it.
- Copyright (C) 1996-2000 Free Software Foundation, Inc.
-
-This file is part of the libiberty library.
-Libiberty is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-Libiberty 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with libiberty; see the file COPYING.LIB. If not,
-write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file exports two functions: pexecute and pwait. */
-
-/* This file lives in at least two places: libiberty and gcc.
- Don't change one without the other. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#ifdef NEED_DECLARATION_ERRNO
-extern int errno;
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#include "libiberty.h"
-#include "safe-ctype.h"
-
-/* stdin file number. */
-#define STDIN_FILE_NO 0
-
-/* stdout file number. */
-#define STDOUT_FILE_NO 1
-
-/* value of `pipe': port index for reading. */
-#define READ_PORT 0
-
-/* value of `pipe': port index for writing. */
-#define WRITE_PORT 1
-
-static char *install_error_msg = "installation problem, cannot exec `%s'";
-
-/* pexecute: execute a program.
-
-@deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
-
-Executes a program.
-
-@var{program} and @var{argv} are the arguments to
-@code{execv}/@code{execvp}.
-
-@var{this_pname} is name of the calling program (i.e., @code{argv[0]}).
-
-@var{temp_base} is the path name, sans suffix, of a temporary file to
-use if needed. This is currently only needed for MS-DOS ports that
-don't use @code{go32} (do any still exist?). Ports that don't need it
-can pass @code{NULL}.
-
-(@code{@var{flags} & PEXECUTE_SEARCH}) is non-zero if @env{PATH} should be searched
-(??? It's not clear that GCC passes this flag correctly). (@code{@var{flags} &
-PEXECUTE_FIRST}) is nonzero for the first process in chain.
-(@code{@var{flags} & PEXECUTE_FIRST}) is nonzero for the last process
-in chain. The first/last flags could be simplified to only mark the
-last of a chain of processes but that requires the caller to always
-mark the last one (and not give up early if some error occurs).
-It's more robust to require the caller to mark both ends of the chain.
-
-The result is the pid on systems like Unix where we
-@code{fork}/@code{exec} and on systems like WIN32 and OS/2 where we
-use @code{spawn}. It is up to the caller to wait for the child.
-
-The result is the @code{WEXITSTATUS} on systems like MS-DOS where we
-@code{spawn} and wait for the child here.
-
-Upon failure, @var{errmsg_fmt} and @var{errmsg_arg} are set to the
-text of the error message with an optional argument (if not needed,
-@var{errmsg_arg} is set to @code{NULL}), and @minus{}1 is returned.
-@code{errno} is available to the caller to use.
-
-@end deftypefn
-
-@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
-
-Waits for a program started by @code{pexecute} to finish.
-
-@var{pid} is the process id of the task to wait for. @var{status} is
-the `status' argument to wait. @var{flags} is currently unused (allows
-future enhancement without breaking upward compatibility). Pass 0 for now.
-
-The result is the pid of the child reaped, or -1 for failure
-(@code{errno} says why).
-
-On systems that don't support waiting for a particular child, @var{pid} is
-ignored. On systems like MS-DOS that don't really multitask @code{pwait}
-is just a mechanism to provide a consistent interface for the caller.
-
-@end deftypefn
-
-@undocumented pfinish
-
- pfinish: finish generation of script
-
- pfinish is necessary for systems like MPW where a script is generated that
- runs the requested programs. */
-
-#ifdef __MSDOS__
-
-/* MSDOS doesn't multitask, but for the sake of a consistent interface
- the code behaves like it does. pexecute runs the program, tucks the
- exit code away, and returns a "pid". pwait must be called to fetch the
- exit code. */
-
-#include <process.h>
-
-/* For communicating information from pexecute to pwait. */
-static int last_pid = 0;
-static int last_status = 0;
-static int last_reaped = 0;
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int rc;
-
- last_pid++;
- if (last_pid < 0)
- last_pid = 1;
-
- if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
- abort ();
-
-#ifdef __DJGPP__
- /* ??? What are the possible return values from spawnv? */
- rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (P_WAIT, program, argv);
-#else
- char *scmd, *rf;
- FILE *argfile;
- int i, el = flags & PEXECUTE_SEARCH ? 4 : 0;
-
- if (temp_base == 0)
- temp_base = choose_temp_base ();
- scmd = (char *) xmalloc (strlen (program) + strlen (temp_base) + 6 + el);
- rf = scmd + strlen(program) + 2 + el;
- sprintf (scmd, "%s%s @%s.gp", program,
- (flags & PEXECUTE_SEARCH ? ".exe" : ""), temp_base);
- argfile = fopen (rf, "w");
- if (argfile == 0)
- {
- int errno_save = errno;
- free (scmd);
- errno = errno_save;
- *errmsg_fmt = "cannot open `%s.gp'";
- *errmsg_arg = temp_base;
- return -1;
- }
-
- for (i=1; argv[i]; i++)
- {
- char *cp;
- for (cp = argv[i]; *cp; cp++)
- {
- if (*cp == '"' || *cp == '\'' || *cp == '\\' || ISSPACE (*cp))
- fputc ('\\', argfile);
- fputc (*cp, argfile);
- }
- fputc ('\n', argfile);
- }
- fclose (argfile);
-
- rc = system (scmd);
-
- {
- int errno_save = errno;
- remove (rf);
- free (scmd);
- errno = errno_save;
- }
-#endif
-
- if (rc == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = (char *)program;
- return -1;
- }
-
- /* Tuck the status away for pwait, and return a "pid". */
- last_status = rc << 8;
- return last_pid;
-}
-
-/* Use ECHILD if available, otherwise use EINVAL. */
-#ifdef ECHILD
-#define PWAIT_ERROR ECHILD
-#else
-#define PWAIT_ERROR EINVAL
-#endif
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- /* On MSDOS each pexecute must be followed by it's associated pwait. */
- if (pid != last_pid
- /* Called twice for the same child? */
- || pid == last_reaped)
- {
- errno = PWAIT_ERROR;
- return -1;
- }
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-#ifdef __DJGPP__
- *status = (last_status >> 8);
-#else
- *status = last_status;
-#endif
- last_reaped = last_pid;
- return last_pid;
-}
-
-#endif /* MSDOS */
-
-#if defined (_WIN32) && ! defined (_UWIN)
-
-#include <process.h>
-
-#ifdef __CYGWIN__
-
-#define fix_argv(argvec) (argvec)
-
-extern int _spawnv ();
-extern int _spawnvp ();
-
-#else /* ! __CYGWIN__ */
-
-/* This is a kludge to get around the Microsoft C spawn functions' propensity
- to remove the outermost set of double quotes from all arguments. */
-
-static const char * const *
-fix_argv (argvec)
- char **argvec;
-{
- int i;
-
- for (i = 1; argvec[i] != 0; i++)
- {
- int len, j;
- char *temp, *newtemp;
-
- temp = argvec[i];
- len = strlen (temp);
- for (j = 0; j < len; j++)
- {
- if (temp[j] == '"')
- {
- newtemp = xmalloc (len + 2);
- strncpy (newtemp, temp, j);
- newtemp [j] = '\\';
- strncpy (&newtemp [j+1], &temp [j], len-j);
- newtemp [len+1] = 0;
- temp = newtemp;
- len++;
- j++;
- }
- }
-
- argvec[i] = temp;
- }
-
- for (i = 0; argvec[i] != 0; i++)
- {
- if (strpbrk (argvec[i], " \t"))
- {
- int len, trailing_backslash;
- char *temp;
-
- len = strlen (argvec[i]);
- trailing_backslash = 0;
-
- /* There is an added complication when an arg with embedded white
- space ends in a backslash (such as in the case of -iprefix arg
- passed to cpp). The resulting quoted strings gets misinterpreted
- by the command interpreter -- it thinks that the ending quote
- is escaped by the trailing backslash and things get confused.
- We handle this case by escaping the trailing backslash, provided
- it was not escaped in the first place. */
- if (len > 1
- && argvec[i][len-1] == '\\'
- && argvec[i][len-2] != '\\')
- {
- trailing_backslash = 1;
- ++len; /* to escape the final backslash. */
- }
-
- len += 2; /* and for the enclosing quotes. */
-
- temp = xmalloc (len + 1);
- temp[0] = '"';
- strcpy (temp + 1, argvec[i]);
- if (trailing_backslash)
- temp[len-2] = '\\';
- temp[len-1] = '"';
- temp[len] = '\0';
-
- argvec[i] = temp;
- }
- }
-
- return (const char * const *) argvec;
-}
-#endif /* __CYGWIN__ */
-
-#include <io.h>
-#include <fcntl.h>
-#include <signal.h>
-
-/* mingw32 headers may not define the following. */
-
-#ifndef _P_WAIT
-# define _P_WAIT 0
-# define _P_NOWAIT 1
-# define _P_OVERLAY 2
-# define _P_NOWAITO 3
-# define _P_DETACH 4
-
-# define WAIT_CHILD 0
-# define WAIT_GRANDCHILD 1
-#endif
-
-/* Win32 supports pipes */
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int pid;
- int pdes[2], org_stdin, org_stdout;
- int input_desc, output_desc;
- int retries, sleep_interval;
-
- /* Pipe waiting from last process, to be used as input for the next one.
- Value is STDIN_FILE_NO if no pipe is waiting
- (i.e. the next command is the first of a group). */
- static int last_pipe_input;
-
- /* If this is the first process, initialize. */
- if (flags & PEXECUTE_FIRST)
- last_pipe_input = STDIN_FILE_NO;
-
- input_desc = last_pipe_input;
-
- /* If this isn't the last process, make a pipe for its output,
- and record it as waiting to be the input to the next process. */
- if (! (flags & PEXECUTE_LAST))
- {
- if (_pipe (pdes, 256, O_BINARY) < 0)
- {
- *errmsg_fmt = "pipe";
- *errmsg_arg = NULL;
- return -1;
- }
- output_desc = pdes[WRITE_PORT];
- last_pipe_input = pdes[READ_PORT];
- }
- else
- {
- /* Last process. */
- output_desc = STDOUT_FILE_NO;
- last_pipe_input = STDIN_FILE_NO;
- }
-
- if (input_desc != STDIN_FILE_NO)
- {
- org_stdin = dup (STDIN_FILE_NO);
- dup2 (input_desc, STDIN_FILE_NO);
- close (input_desc);
- }
-
- if (output_desc != STDOUT_FILE_NO)
- {
- org_stdout = dup (STDOUT_FILE_NO);
- dup2 (output_desc, STDOUT_FILE_NO);
- close (output_desc);
- }
-
- pid = (flags & PEXECUTE_SEARCH ? _spawnvp : _spawnv)
- (_P_NOWAIT, program, fix_argv(argv));
-
- if (input_desc != STDIN_FILE_NO)
- {
- dup2 (org_stdin, STDIN_FILE_NO);
- close (org_stdin);
- }
-
- if (output_desc != STDOUT_FILE_NO)
- {
- dup2 (org_stdout, STDOUT_FILE_NO);
- close (org_stdout);
- }
-
- if (pid == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = program;
- return -1;
- }
-
- return pid;
-}
-
-/* MS CRTDLL doesn't return enough information in status to decide if the
- child exited due to a signal or not, rather it simply returns an
- integer with the exit code of the child; eg., if the child exited with
- an abort() call and didn't have a handler for SIGABRT, it simply returns
- with status = 3. We fix the status code to conform to the usual WIF*
- macros. Note that WIFSIGNALED will never be true under CRTDLL. */
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
-#ifdef __CYGWIN__
- return wait (status);
-#else
- int termstat;
-
- pid = _cwait (&termstat, pid, WAIT_CHILD);
-
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-
- /* cwait returns the child process exit code in termstat.
- A value of 3 indicates that the child caught a signal, but not
- which one. Since only SIGABRT, SIGFPE and SIGINT do anything, we
- report SIGABRT. */
- if (termstat == 3)
- *status = SIGABRT;
- else
- *status = (((termstat) & 0xff) << 8);
-
- return pid;
-#endif /* __CYGWIN__ */
-}
-
-#endif /* _WIN32 && ! _UWIN */
-
-#ifdef OS2
-
-/* ??? Does OS2 have process.h? */
-extern int spawnv ();
-extern int spawnvp ();
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int pid;
-
- if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
- abort ();
- /* ??? Presumably 1 == _P_NOWAIT. */
- pid = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (1, program, argv);
- if (pid == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = program;
- return -1;
- }
- return pid;
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
- int pid = wait (status);
- return pid;
-}
-
-#endif /* OS2 */
-
-#ifdef MPW
-
-/* MPW pexecute doesn't actually run anything; instead, it writes out
- script commands that, when run, will do the actual executing.
-
- For example, in GCC's case, GCC will write out several script commands:
-
- cpp ...
- cc1 ...
- as ...
- ld ...
-
- and then exit. None of the above programs will have run yet. The task
- that called GCC will then execute the script and cause cpp,etc. to run.
- The caller must invoke pfinish before calling exit. This adds
- the finishing touches to the generated script. */
-
-static int first_time = 1;
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- char tmpprogram[255];
- char *cp, *tmpname;
- int i;
-
- mpwify_filename (program, tmpprogram);
- if (first_time)
- {
- printf ("Set Failed 0\n");
- first_time = 0;
- }
-
- fputs ("If {Failed} == 0\n", stdout);
- /* If being verbose, output a copy of the command. It should be
- accurate enough and escaped enough to be "clickable". */
- if (flags & PEXECUTE_VERBOSE)
- {
- fputs ("\tEcho ", stdout);
- fputc ('\'', stdout);
- fputs (tmpprogram, stdout);
- fputc ('\'', stdout);
- fputc (' ', stdout);
- for (i=1; argv[i]; i++)
- {
- fputc ('\'', stdout);
- /* See if we have an argument that needs fixing. */
- if (strchr(argv[i], '/'))
- {
- tmpname = (char *) xmalloc (256);
- mpwify_filename (argv[i], tmpname);
- argv[i] = tmpname;
- }
- for (cp = argv[i]; *cp; cp++)
- {
- /* Write an Option-d escape char in front of special chars. */
- if (strchr("'+", *cp))
- fputc ('\266', stdout);
- fputc (*cp, stdout);
- }
- fputc ('\'', stdout);
- fputc (' ', stdout);
- }
- fputs ("\n", stdout);
- }
- fputs ("\t", stdout);
- fputs (tmpprogram, stdout);
- fputc (' ', stdout);
-
- for (i=1; argv[i]; i++)
- {
- /* See if we have an argument that needs fixing. */
- if (strchr(argv[i], '/'))
- {
- tmpname = (char *) xmalloc (256);
- mpwify_filename (argv[i], tmpname);
- argv[i] = tmpname;
- }
- if (strchr (argv[i], ' '))
- fputc ('\'', stdout);
- for (cp = argv[i]; *cp; cp++)
- {
- /* Write an Option-d escape char in front of special chars. */
- if (strchr("'+", *cp))
- fputc ('\266', stdout);
- fputc (*cp, stdout);
- }
- if (strchr (argv[i], ' '))
- fputc ('\'', stdout);
- fputc (' ', stdout);
- }
-
- fputs ("\n", stdout);
-
- /* Output commands that arrange to clean up and exit if a failure occurs.
- We have to be careful to collect the status from the program that was
- run, rather than some other script command. Also, we don't exit
- immediately, since necessary cleanups are at the end of the script. */
- fputs ("\tSet TmpStatus {Status}\n", stdout);
- fputs ("\tIf {TmpStatus} != 0\n", stdout);
- fputs ("\t\tSet Failed {TmpStatus}\n", stdout);
- fputs ("\tEnd\n", stdout);
- fputs ("End\n", stdout);
-
- /* We're just composing a script, can't fail here. */
- return 0;
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- *status = 0;
- return 0;
-}
-
-/* Write out commands that will exit with the correct error code
- if something in the script failed. */
-
-void
-pfinish ()
-{
- printf ("\tExit \"{Failed}\"\n");
-}
-
-#endif /* MPW */
-
-/* include for Unix-like environments but not for Dos-like environments */
-#if ! defined (__MSDOS__) && ! defined (OS2) && ! defined (MPW) \
- && ! (defined (_WIN32) && ! defined (_UWIN))
-
-extern int execv ();
-extern int execvp ();
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base ATTRIBUTE_UNUSED;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int (*func)() = (flags & PEXECUTE_SEARCH ? execvp : execv);
- int pid;
- int pdes[2];
- int input_desc, output_desc;
- int retries, sleep_interval;
- /* Pipe waiting from last process, to be used as input for the next one.
- Value is STDIN_FILE_NO if no pipe is waiting
- (i.e. the next command is the first of a group). */
- static int last_pipe_input;
-
- /* If this is the first process, initialize. */
- if (flags & PEXECUTE_FIRST)
- last_pipe_input = STDIN_FILE_NO;
-
- input_desc = last_pipe_input;
-
- /* If this isn't the last process, make a pipe for its output,
- and record it as waiting to be the input to the next process. */
- if (! (flags & PEXECUTE_LAST))
- {
- if (pipe (pdes) < 0)
- {
- *errmsg_fmt = "pipe";
- *errmsg_arg = NULL;
- return -1;
- }
- output_desc = pdes[WRITE_PORT];
- last_pipe_input = pdes[READ_PORT];
- }
- else
- {
- /* Last process. */
- output_desc = STDOUT_FILE_NO;
- last_pipe_input = STDIN_FILE_NO;
- }
-
- /* Fork a subprocess; wait and retry if it fails. */
- sleep_interval = 1;
- pid = -1;
- for (retries = 0; retries < 4; retries++)
- {
- pid = fork ();
- if (pid >= 0)
- break;
- sleep (sleep_interval);
- sleep_interval *= 2;
- }
-
- switch (pid)
- {
- case -1:
- *errmsg_fmt = "fork";
- *errmsg_arg = NULL;
- return -1;
-
- case 0: /* child */
- /* Move the input and output pipes into place, if necessary. */
- if (input_desc != STDIN_FILE_NO)
- {
- close (STDIN_FILE_NO);
- dup (input_desc);
- close (input_desc);
- }
- if (output_desc != STDOUT_FILE_NO)
- {
- close (STDOUT_FILE_NO);
- dup (output_desc);
- close (output_desc);
- }
-
- /* Close the parent's descs that aren't wanted here. */
- if (last_pipe_input != STDIN_FILE_NO)
- close (last_pipe_input);
-
- /* Exec the program. */
- (*func) (program, argv);
-
- fprintf (stderr, "%s: ", this_pname);
- fprintf (stderr, install_error_msg, program);
- fprintf (stderr, ": %s\n", xstrerror (errno));
- exit (-1);
- /* NOTREACHED */
- return 0;
-
- default:
- /* In the parent, after forking.
- Close the descriptors that we made for this child. */
- if (input_desc != STDIN_FILE_NO)
- close (input_desc);
- if (output_desc != STDOUT_FILE_NO)
- close (output_desc);
-
- /* Return child's process number. */
- return pid;
- }
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags ATTRIBUTE_UNUSED;
-{
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-#ifdef VMS
- pid = waitpid (-1, status, 0);
-#else
- pid = wait (status);
-#endif
- return pid;
-}
-
-#endif /* ! __MSDOS__ && ! OS2 && ! MPW && ! (_WIN32 && ! _UWIN) */
diff --git a/contrib/binutils/md5.sum b/contrib/binutils/md5.sum
deleted file mode 100644
index c62704f18f90..000000000000
--- a/contrib/binutils/md5.sum
+++ /dev/null
@@ -1,3022 +0,0 @@
-0636e73ff0215e8d672dc4c32c317bb3 COPYING
-f30a9716ef3762e3467a2f62bf790f0a COPYING.LIB
-9cdb15c1e49c0070192d6d1c7a195e7e Makefile.in
-07c33a285703b40cd6f93a478e97e03b README
-22383b04c0616f41ee4ba51baca24655 bfd/ChangeLog
-ceab81aa1f02825092808fdafba0239d bfd/COPYING
-5a266b5dba92eea6d99752a62548bb2d bfd/doc/ChangeLog
-1e5a6fbefd1aaed4433ace8afce78961 bfd/doc/Makefile.am
-a464bee4132fb2fa44c4d2e46b58a754 bfd/doc/Makefile.in
-0fbe144d8d1782e0379db812371c6a57 bfd/doc/aoutx.texi
-6f34186ad28a5b230efc088a709560de bfd/doc/archive.texi
-f98e3a1458953a5a6fae44a5c5f75e30 bfd/doc/archures.texi
-84be077fe0d16ded1d48b6bd4602f737 bfd/doc/bfd.info
-a31bdf4569c4f1cd2745113b3083aa30 bfd/doc/bfd.info-1
-6911c8229b2daa3efa2ce01bd699c793 bfd/doc/bfd.info-2
-efa0b7d03876abc3e57a529aa5b43048 bfd/doc/bfd.info-3
-39bdefc46b786b1663d0b84f64fcf04f bfd/doc/bfd.info-4
-b2c4637dbb3c0690b75e900477fa1224 bfd/doc/bfd.info-5
-33ed65a4ba35b35445e5684b8454a0b9 bfd/doc/bfd.info-6
-ba54c1f2d34777c4624608c8cd032ade bfd/doc/bfd.info-7
-0b6e6b0217a3682a89b784120d6c6912 bfd/doc/bfd.texinfo
-bf1f24c962732c18cedacc546e577d38 bfd/doc/bfdint.texi
-8b6ecc6029ed69110c2fd06605bbb028 bfd/doc/bfdsumm.texi
-aeb854f56071a92ed682ea3a47ef412e bfd/doc/bfdt.texi
-a08da988e834eaa44ce036daed384f3f bfd/doc/cache.texi
-4e6650cba5f9d8f2bc248e7edfe2b166 bfd/doc/chew.c
-9b20193a1b085b49ad22e22a94d7eade bfd/doc/coffcode.texi
-99105e514872b3e0f5eadbc9844efeed bfd/doc/core.texi
-e67d8b07516154c4ddbee2e3bab3d75e bfd/doc/doc.str
-c60b298f07f5a175f2325d48bd009bdb bfd/doc/elf.texi
-d41d8cd98f00b204e9800998ecf8427e bfd/doc/elfcode.texi
-4e84142a7f35ea897af65f69d33fbae5 bfd/doc/format.texi
-1d846f321c1f04f609386d3c31201c93 bfd/doc/hash.texi
-7ac9a36b8a72594048188cd4ee5012dc bfd/doc/init.texi
-e17fcdf3ea8e298f1327ed8c4649a156 bfd/doc/libbfd.texi
-6f212b00766abadea5b686c91c024f16 bfd/doc/linker.texi
-5fa24958e8a60b2f879af658e615ccc0 bfd/doc/makefile.vms
-75adee5262cfe18e955d31dcec3d9a54 bfd/doc/opncls.texi
-5bf597a23995b21bfaefa45638e33df3 bfd/doc/proto.str
-6f8560b2e86ac189a40bce16c927dcdb bfd/doc/reloc.texi
-81e47720738cbb4c3361b092baf90841 bfd/doc/section.texi
-fd78f14948d36f7fae45d29db7b0d521 bfd/doc/syms.texi
-d193493718f22e2de122b05b741f660b bfd/doc/targets.texi
-f7f4648407c03c8d7ecdac1e9b3c267a bfd/po/Make-in
-445a1c3ee4b5467304d3568fc54a9530 bfd/po/bfd.pot
-6aaeff367ac449364787e94b6db53183 bfd/ChangeLog-9193
-78e72a396e9d529dc2f9e3f6c0eb7efb bfd/ChangeLog-9495
-45851bb85b21afd2c2247c5bd531eda0 bfd/ChangeLog-9697
-3a8b2876879b53a8f247a03416527a48 bfd/ChangeLog-9899
-d618facc3e8ce8bf3d02ba452e1be6ab bfd/MAINTAINERS
-cac2c8b510bd39ae04fe5bfce40a197e bfd/Makefile.am
-d99c8cebc58f57cc7982b4755bfcb6c5 bfd/Makefile.in
-6455e3c85b31e588ecb75f7d3c945c8d bfd/PORTING
-11627ef87a2a20a3326b87602d051620 bfd/README
-cd26654c6eb30680694867e434e40044 bfd/TODO
-fa9dc5a90d06b56e4fc7388caa0936f2 bfd/acinclude.m4
-3d436bc3696617e5f5539e46fbb81763 bfd/aclocal.m4
-783909cb3ba12056ddfd113362c66b8f bfd/aix386-core.c
-15d641f38a61d43e9540e89296e67321 bfd/aout-adobe.c
-d56d591b9a3938cd12de14ca63863c47 bfd/aout-arm.c
-e00ccede7e9e61f87ad5d8b67810817b bfd/aout-cris.c
-d80798e7e80396610c9817724df3d0fc bfd/aout-encap.c
-0bb2732a15a0255366389fa13f5034b8 bfd/aout-ns32k.c
-d4ee6f5c992ea87510be7b202fc06dfb bfd/aout-sparcle.c
-2f8b4091d064635ae41681ee597078d0 bfd/aout-target.h
-3e051d26fb5cbdd0c8530d67a5a829ad bfd/aout-tic30.c
-c2fa21aea08313dffcc9b4a2a3e9ca5b bfd/aout0.c
-710ff75a0a234773691c069654dd8ba6 bfd/aout32.c
-cae169ce11deb6f450104c569c23c853 bfd/aout64.c
-4a67efea73c2bf40983f1570607e10de bfd/aoutf1.h
-2e0b7e96647fd0d8a75c730fc92bd7ea bfd/aoutx.h
-e9c89491cabfaf3db12368e423003172 bfd/archive.c
-ed85bcca32de659b4ac834648c69e47a bfd/archures.c
-43473bfc2577fc75e330907ad43b810d bfd/armnetbsd.c
-68fc30620cce0b416e21fc8bf9ffb66d bfd/bfd-in.h
-d101e9977294c79488c7038e11bb8872 bfd/bfd-in2.h
-1ec8f01cd36a0410d6a358c13450d32c bfd/bfd.c
-43ab9de01b31034b63b1e34e58e171bf bfd/binary.c
-5b0964ce2bef841eca1cc28ac170b340 bfd/bout.c
-794d989c69536eac1b969452a240c617 bfd/cache.c
-6d3c1b378bc7ed685664fe6eca297523 bfd/cf-i386lynx.c
-545c111611d3dddaae8c666293aac89b bfd/cf-m68klynx.c
-09a8617f3c790897c5ac230aa7c9e683 bfd/cf-sparclynx.c
-ecf07e87f41eacfbb3f69e959b67986f bfd/cisco-core.c
-06ecc8e343ca4331ab10c8f00a9df323 bfd/coff-a29k.c
-2af31e3d92988fb31c0970a686aa7960 bfd/coff-alpha.c
-be66609cf0885355395701084da2a073 bfd/coff-apollo.c
-25815e411716c71b2e39e46996716db5 bfd/coff-arm.c
-04d8d5fe37fd8bdbf2c70031ff92db80 bfd/coff-aux.c
-57df3015110d34f4a343941c45f60577 bfd/coff-go32.c
-3546fff401b9a26bcd4121820ea52797 bfd/coff-h8300.c
-6e844c7259f2b47eeb578984f8b06b7a bfd/coff-h8500.c
-edc1a2a2a4106ddbe929545af6898e31 bfd/coff-i386.c
-eedf5424ec64783efbb545eb930fbd8e bfd/coff-i860.c
-f03155ea586d01ced8c85c43ec93dc9f bfd/coff-i960.c
-eae36e1c87fce17a42f52b56f71d1841 bfd/coff-ia64.c
-80ff3a9c87e1335f5fcd991a398c159f bfd/coff-m68k.c
-646163dbbe28724f933cc5dff8d6b522 bfd/coff-m88k.c
-9fd04d7b0c69cd43a51a42e4cac313e3 bfd/coff-mcore.c
-85217ef58e511dbf42d4b007f8f8e624 bfd/coff-mips.c
-0fe98f356a19d05611fa133c217e77e5 bfd/coff-pmac.c
-b31637614abfd34b5e72ad0f76f6418c bfd/coff-ppc.c
-92197be7dfa58b4f3c079ea0e91c165b bfd/coff-rs6000.c
-14096c1501e38762f71ecc48819cc389 bfd/coff-sh.c
-56dadcdfef723b9fd53ecc9a501f616f bfd/coff-sparc.c
-ff09554abd281030f46ccc417c403aa9 bfd/coff-stgo32.c
-0a6bcb90289a5f62cb39fb0ec0858560 bfd/coff-svm68k.c
-eddc8ea37292e1e57f26435d884e432b bfd/coff-tic30.c
-e6300d33022fe5164ebb75d09c20fabb bfd/coff-tic54x.c
-015b6a9faba6e0ee871d1c3e751c4261 bfd/coff-tic80.c
-f8c6308a039c92faded1d165112668a2 bfd/coff-u68k.c
-59a6770435f62b0214de775a03bf4e9c bfd/coff-w65.c
-d958f107aae4a2592d9bbc57e2fc50c5 bfd/coff-we32k.c
-81a2479479af147514f6cbe7ca941e07 bfd/coff-z8k.c
-b599fc0cbd45a2d9cb95845f9802ba28 bfd/coff64-rs6000.c
-d4e3ce939d94c50f67c16ba80bbd809f bfd/coffcode.h
-3029424ada4af130ef96b8e1d7a99a53 bfd/coffgen.c
-94a1415b45d3f1ca4c1cbd2cb591f62d bfd/cofflink.c
-c81791ff3f60009e8d28464b6c53c396 bfd/coffswap.h
-1d6832ab0a312bf399ac892d9666ef25 bfd/config.bfd
-2ebfc42d5d2a4668d364f1b54968b4bc bfd/config.in
-d1292a46d15e8d2b2b9c0fc4f837e375 bfd/configure
-a8485b69f68d81f4ef2f29b51bb36d85 bfd/configure.com
-da932a956ba7ad830b729bafd4af4644 bfd/configure.host
-12427c9975895d3dfc3cfa7724e630bc bfd/configure.in
-13256bb517cdf3f1b4b04eaabc8a4490 bfd/corefile.c
-6bc9b90664a2ebdf2b85f19dce0b7f11 bfd/cpu-a29k.c
-f93b02f976ea91934c4118be4ed019d4 bfd/cpu-alpha.c
-ebc8e4333cf21216de587d22524c9f57 bfd/cpu-arc.c
-2ac57d0ff930768b2fa927123e660ec9 bfd/cpu-arm.c
-9b9349ab23aa88786581dc0734f31316 bfd/cpu-avr.c
-89de8746c4102f5b0b89ff0b19314d7b bfd/cpu-cris.c
-6c476a3781d45cdca390650b9273d3ed bfd/cpu-d10v.c
-7a7d89b109710f951f825992832fb422 bfd/cpu-d30v.c
-fe25690c8c53442b507f5247c9635748 bfd/cpu-fr30.c
-567c27d0eb1ca67f1767099379a5957f bfd/cpu-h8300.c
-2b2928d3eba5ec4e99916940f24319b5 bfd/cpu-h8500.c
-5e942a325f1b1a2e50767f070ce3895c bfd/cpu-hppa.c
-5020c76b76859038dd5a92a46647a667 bfd/cpu-i370.c
-03868248f282503ee1ddc86c81d77804 bfd/cpu-i386.c
-b6d0fbb65c82465573f28353a930b3b6 bfd/cpu-i860.c
-42d1e5cfdae1ac51322e21ac410d7bc9 bfd/cpu-i960.c
-b7bffd30c0e7b6134a923b1be64ece2e bfd/cpu-ia64-opc.c
-2e48697f67575deb45fb727619267da3 bfd/cpu-ia64.c
-cdbfa4a9703bf5bfca24f4b7d6bc49a7 bfd/cpu-m10200.c
-3dcc6de8db1ffd6408ad3f3dd080b0d3 bfd/cpu-m10300.c
-4b5332540a2a4d907dd2d0d6552b4f2f bfd/cpu-m32r.c
-0ff542774da1203f6f6496971e8f33b8 bfd/cpu-m68hc11.c
-5f6585a0783899916bc3bd9ce42c0624 bfd/cpu-m68hc12.c
-431570536021941e2fb8658707a8deba bfd/cpu-m68k.c
-480b3bebf9d0b948bc3d51c23fbd511f bfd/cpu-m88k.c
-ecc303dc3afabbc076d866c4b1d40191 bfd/cpu-mcore.c
-84aedb91a48659311061f3779e1cc5b2 bfd/cpu-mips.c
-a0985008fc628157c9b27afceb9fa5fb bfd/cpu-ns32k.c
-57fd58bea31545e419d39485059294a4 bfd/cpu-pj.c
-21b3055e3b8cca8b2fa65ea72c010fbf bfd/cpu-powerpc.c
-2634d322a7c1b737c5ba95d727e70d5c bfd/cpu-rs6000.c
-76591b09ebf820167a73bee3d4f8b608 bfd/cpu-sh.c
-6c1f0f9816581e6654cfb4476ec51386 bfd/cpu-sparc.c
-4a7876d7cfd8a37c9e37f95d0968e7b4 bfd/cpu-tic30.c
-b43f6e6ead72cff7ff28c87cec93a33a bfd/cpu-tic54x.c
-424e7a355ca4b115f657609a91ade54e bfd/cpu-tic80.c
-6d0acf764ac828e6db63a074a54b80ba bfd/cpu-v850.c
-722f3f2dceee71c5eae9ab6d9a12e4a2 bfd/cpu-vax.c
-42b04e46e5c22d8231df9062c48f9cf8 bfd/cpu-w65.c
-3d3a88c1679b541231b65d10b197595c bfd/cpu-we32k.c
-17738f4235390683e20471a7a52ff886 bfd/cpu-z8k.c
-bf7c79bca2a5503d8e5a08eb2093e354 bfd/demo64.c
-325284c2aa7c21d58bf3592f16147525 bfd/dep-in.sed
-66ddc5e71a123f88fae4b649913a3625 bfd/dwarf1.c
-8e226ff61ec8397b649fcea23d18c5e6 bfd/dwarf2.c
-2bd82ca961cf8804c71a8a0f9418612d bfd/ecoff.c
-bb90a452e36b92549e623ae4b11b71b3 bfd/ecofflink.c
-338f536d95996bf70af288e87e2661bf bfd/ecoffswap.h
-35a5d5aa67cdcb354a57872bd6abf5ab bfd/efi-app-ia32.c
-e11d2ca6f1bb770ed54aa40386f69b6b bfd/efi-app-ia64.c
-069cfcb9e552adb039a5e7f8f54bf045 bfd/elf-bfd.h
-a45567b7ed9963c8917942cfb177f137 bfd/elf-hppa.h
-dea405a2cadc109a396e598e426782e3 bfd/elf-m10200.c
-b0bf972d5ef56f0c349e552cf6225116 bfd/elf-m10300.c
-7557a9d743f544179e1914eafb71ba2e bfd/elf.c
-c612153791413796ae7b0afe055e345d bfd/elf32-arc.c
-8107b55913a0bf1fe46d8ceed7ae71bf bfd/elf32-arm.h
-0ff7faa86372c71faaba9df3828878cc bfd/elf32-avr.c
-36378f4202010b3f3b89fd679a49320e bfd/elf32-cris.c
-c885ba8e2901116ce03d2b3dccac4e89 bfd/elf32-d10v.c
-0235362bfd052c523c133bf570acbd53 bfd/elf32-d30v.c
-49faab1462b330c4c49dbe7c9d180eaf bfd/elf32-fr30.c
-e8040020c66e66a42fd98d2bc855e805 bfd/elf32-gen.c
-3ee4163b4b9d0c3b7a164627c08771c8 bfd/elf32-hppa.c
-b7922397f8a9f48d5a4fc64833db13f9 bfd/elf32-hppa.h
-f23b710d855b7173334c6718bf6cd688 bfd/elf32-i370.c
-90cf2ef15a659400e8feb6645a367f6a bfd/elf32-i386.c
-d644f126ec840265005aeb71f67906e7 bfd/elf32-i860.c
-95d5d92e7306b53ea5ab95c62e2b5ea1 bfd/elf32-i960.c
-bef5efb28c6db1170c54e9fd3497aeee bfd/elf32-m32r.c
-3ac813e93933b49eb51dc510faff890b bfd/elf32-m68hc11.c
-ebbf73fbb693283520892daf4eaed2de bfd/elf32-m68hc12.c
-84b69778a652d2cfc29bcbf5d82d33af bfd/elf32-m68k.c
-6d08a2b4a53db400e322f8f712aa9498 bfd/elf32-m88k.c
-1f60d815efdef6aeaa046f8b354f53e4 bfd/elf32-mcore.c
-4fbbadc82c574345b50e8ce7a7c46cbc bfd/elf32-mips.c
-b3684e979f1de64ee10aa23e5685c5c2 bfd/elf32-pj.c
-17c6ae4e2299f25c786a18af88639931 bfd/elf32-ppc.c
-18f44608c596c17f9b986a18a3c9fa1e bfd/elf32-sh-lin.c
-177d3fec0eaa269a02d1d00174ffd176 bfd/elf32-sh.c
-b4b4859eb5d5c1c85481a34897fc1cda bfd/elf32-sparc.c
-f73cf274c056492df2771950064a22a9 bfd/elf32-v850.c
-ed57bd460ee2d4a61a5c445f280f295c bfd/elf32.c
-ab7d515fdfd6173798101dd1247c38e4 bfd/elf64-alpha.c
-7d66675b4fb106331426ca0775a0dd71 bfd/elf64-gen.c
-dfe015d5db4e49f664194f73f3bd3aa6 bfd/elf64-hppa.c
-8d4af471848e82a40a426088ad312988 bfd/elf64-hppa.h
-fdeb99876d995a5113705d365c39882f bfd/elf64-mips.c
-805e4b8c3b808a837780d88677b2b8d8 bfd/elf64-sparc.c
-51948652723cb7cbdc5bf48f68972960 bfd/elf64-x86-64.c
-0df4bff9f99908d451625f14be3dc667 bfd/elf64.c
-04c179c481f73ef38f4fde45099ea774 bfd/elfarm-nabi.c
-7a2f68e293672a469707ee7247ca431f bfd/elfarm-oabi.c
-1c857bcc6db894788e6d9612d9190fcd bfd/elfcode.h
-a179dd23bcf17071bcd156e30739e502 bfd/elfcore.h
-4665db235c5fc322fe645ec556a02351 bfd/elflink.c
-eec699dcafd99021dcd6ca470b97bfcb bfd/elflink.h
-ee628b92cd241097a81fd761ecfe709f bfd/elfxx-ia64.c
-0067bc443dde2afdfdcfa15fb2107267 bfd/elfxx-target.h
-5f9b71e52009091cb901280cbe42283c bfd/epoc-pe-arm.c
-c9f006f05a9b9f4d6be5fa84dcad8b6a bfd/epoc-pei-arm.c
-00882a27abee3c09285429e99d2872ee bfd/format.c
-4498092435cf035affd5b3f0d859f7f1 bfd/freebsd.h
-c16189d94fa43e845e6b066e6bd29401 bfd/gen-aout.c
-ee6fc742a96faf09cbe76a5b8933d3c4 bfd/genlink.h
-663a6979bd331c91d1385445edeca7b0 bfd/go32stub.h
-6e40031d51114640cfeba4f70e8fce2d bfd/hash.c
-d231e6f23f8ca89aa2914992a30a7439 bfd/host-aout.c
-4967093aecdbcaebab4be47ad87369f0 bfd/hp300bsd.c
-23f63c6bf8c8a673de96d7400861f16b bfd/hp300hpux.c
-5cfacfdd3fde9b8c36cbec0486280982 bfd/hppabsd-core.c
-035696490716fd55aa20a97a0137f622 bfd/hpux-core.c
-42b78f2024c6114d60dce39873229d91 bfd/i386aout.c
-f9e0718ca8ae927a262a15b909ca38ad bfd/i386bsd.c
-ab28a73ed28b2cb083c882f194d8e590 bfd/i386dynix.c
-78373f6cb8c37a9bca0681d2a20af1fb bfd/i386freebsd.c
-735a4d6ae9285e257a8cdd64b0ead47a bfd/i386linux.c
-4209c991c4f25fb8eb32a8f2437f8292 bfd/i386lynx.c
-b90ee8151f8b7c972b6dd46d6beede62 bfd/i386mach3.c
-0ce260445c167060070abf30a9e53c70 bfd/i386msdos.c
-cb70bc2c9f165797e7bdd0999f3abe31 bfd/i386netbsd.c
-ab3df517926791ecae7ca2156c959cb3 bfd/i386os9k.c
-bcbeff36cc77a574f222cabed9cf99fd bfd/ieee.c
-38785bca5642dd3180e2fad821cedd64 bfd/ihex.c
-35b7f1acea0a7c53f6785b40d6970b93 bfd/init.c
-dbacd89b0524dc23409add426b7472c8 bfd/irix-core.c
-00338a689deaa57875ec90cc111c41f0 bfd/libaout.h
-d168900c72cfeaf166dafd27860da0c2 bfd/libbfd-in.h
-54fd88f9cf5efec9f04566762600d19a bfd/libbfd.c
-426446ce4e817753d7424ef4a42e0ea2 bfd/libbfd.h
-670240432b1392be37be4e295d43b03b bfd/libcoff-in.h
-c00c38f574930e065d00ee76b5b4b6a8 bfd/libcoff.h
-dec4128d1fedb44090e144ceff634fd9 bfd/libecoff.h
-714e36507b340c549ba044a151edbdb8 bfd/libhppa.h
-809c3ca7fcfbcb52a7e89dbb7d3e3201 bfd/libieee.h
-71aaf625a223bf8edb9cb1426fa0e575 bfd/libnlm.h
-85a8008401af9b2ba92de57c32eee942 bfd/liboasys.h
-1ee2ef5ed0cc707ef280e29d5e7d3c3b bfd/libpei.h
-c71ee68d6a6055f1b6775ff042e4c300 bfd/linker.c
-17e42ae480674d8ab750a635c250225e bfd/lynx-core.c
-837d4132caf5e4cb009d65b614bf5ddc bfd/m68k4knetbsd.c
-ef9f1794858f2a82cf432f809297307b bfd/m68klinux.c
-c7a2b0353c8a2b2796a66ce71991d2e7 bfd/m68klynx.c
-c6fc3e1de6dc74acd4945b2190587398 bfd/m68knetbsd.c
-32f14321dcbc5b8eda9a2510e3d906af bfd/m88kmach3.c
-5de4da6a9169effb512e6ba4d014d420 bfd/makefile.vms
-4755d408c8274e1ecccf6218928dcf14 bfd/mipsbsd.c
-5971cd61d7c10702978519aa5ed41474 bfd/mpw-config.in
-85bd791a2ac9c9d7c2bea1932665d568 bfd/mpw-make.sed
-ffdf9f0b0e709d01320c67cbf89eb61a bfd/netbsd-core.c
-08197a4e2682c16a478d1d40d26c3ce7 bfd/netbsd.h
-7bea89213da645698442c08f787b5ef1 bfd/newsos3.c
-5b5a6b2076f5d451f84fbc5e5593df79 bfd/nlm-target.h
-3fe07db0117ce532feafa057cd418c00 bfd/nlm.c
-6e68f62fb373e47b3b0483f78f68a61d bfd/nlm32-alpha.c
-3cc80747d16f524a1fab743e6f4607cd bfd/nlm32-i386.c
-67161ce31c23459c26291b06c5571132 bfd/nlm32-ppc.c
-62934679d489e139b65d6474d4b85e12 bfd/nlm32-sparc.c
-ad09e68167b48df24f238e874a31a152 bfd/nlm32.c
-7d6920efa240ddfe625a9d076cd6510e bfd/nlm64.c
-a37d20d7c5f95eac0ba8e72ddd34157c bfd/nlmcode.h
-651e70e9dc3e8ab81ac750d642be169f bfd/nlmswap.h
-8e9c830cacb3843634b4438619c73365 bfd/ns32k.h
-9d9d06b881cde8a6f76df36b0478fd03 bfd/ns32knetbsd.c
-603c5e4485d4073f712bde82f05c3ab1 bfd/oasys.c
-d19472d4764ea44d34f0aa1ae28f8ea1 bfd/opncls.c
-286a3a9d629da6889f1bd0222f046dd2 bfd/osf-core.c
-359181d31e0067bb155f3130f09014b6 bfd/pc532-mach.c
-28eb753042c518eb7613dc0c07a9d712 bfd/pe-arm.c
-46dc4c0e41d9ac58d901ba24bf87ec58 bfd/pe-i386.c
-eac157e8749a4d566f023fc73ad2701b bfd/pe-mcore.c
-10af86983af7f89f498269be562242dc bfd/pe-mips.c
-2408372ef3e1635e1f21849c2df91516 bfd/pe-ppc.c
-8a9f5341f8b811ff4c9fefafa89a6f58 bfd/pe-sh.c
-b1211436c28e181afcc8ff2ecf88cdef bfd/peXXigen.c
-9631d64e8b1f1f63001359dd94506a91 bfd/pei-arm.c
-351655074548989187fe875754b59a71 bfd/pei-i386.c
-dbd6eb2c16f6c94bb0d3af6970467b5c bfd/pei-mcore.c
-ea8a74b5980841010a185ebd539e874f bfd/pei-mips.c
-f15a63befa27efcdbcd3711ecddd89a2 bfd/pei-ppc.c
-46016926e380a707142c8078f62dfb64 bfd/pei-sh.c
-c6ba7bb0aee2254c824408f4ebb1bafe bfd/peicode.h
-135fcf4f350b6df18bc13667f0877ddd bfd/ppcboot.c
-2646e6098d56703b47e5dd24f142f9f9 bfd/ptrace-core.c
-bc3a5994f67ded8dd965a8159c3e04f5 bfd/reloc.c
-1429ff69337a27fc5e5947c011bacf7a bfd/reloc16.c
-d05920c33c8e35c43e6b22ff14b165e3 bfd/riscix.c
-0d2c4a7c00dc63b2739abc22c82cfdf1 bfd/rs6000-core.c
-98fb2a13f09a7833c9a8cb6d998d55b9 bfd/sco5-core.c
-a80fa7325ce9c43ab3c9df9eb86a4e53 bfd/section.c
-946a61fb3971a2703997a3e24da9efaf bfd/som.c
-f4cab5ccf3d2f6c08f1a0665bd9a9a3a bfd/som.h
-bf0c4c812e4319f9fc2891c1ddd22524 bfd/sparclinux.c
-795fae048517419029a27b49302244ed bfd/sparclynx.c
-ea009eea5d4bd499cfcc6ec25ff8d083 bfd/sparcnetbsd.c
-9c5d025db2c856faa1cde13845fe0d6b bfd/srec.c
-891289f18ef687556cab8f090331e3fe bfd/stab-syms.c
-05ff64098a17cc71f4e623323c2262d3 bfd/stabs.c
-1ded054093de910d9786c62bc4fe8cc6 bfd/stamp-h.in
-5003da336bebe34495f3eb23f11e8530 bfd/sunos.c
-ca78ceb2375111f455986ce25f607e87 bfd/syms.c
-bcc86dba28f942df39328408dde24d01 bfd/sysdep.h
-d143a64c16594367d7b4034951a1d553 bfd/targets.c
-26dac42ee68d1de97152743dd098bd83 bfd/targmatch.sed
-7c96f19a6c01b1b4704c8f7915c46a19 bfd/tekhex.c
-6aeb10d91a1614ef27dfed54c94ecba8 bfd/trad-core.c
-56c006a80866e026335d4db420be7516 bfd/vaxnetbsd.c
-70319dc6d45749efd52f9d1393f1688c bfd/versados.c
-62552477c5cfcc583cbfdf6da1be2cc6 bfd/vms-gsd.c
-03148dc2fdb5f8b2fa0378995908c3ec bfd/vms-hdr.c
-9e245904fabf6630c8137c37a2908027 bfd/vms-misc.c
-cfe21991d8cccc770d34b0dfefa351fe bfd/vms-tir.c
-a953dee93ee3269e5a0d2f0eddc8517a bfd/vms.c
-ee46c5eaac647cd1d1685c506202d18e bfd/vms.h
-4772c3a29f7fcc7d9c10f1e42fa14cf5 bfd/xcoff-target.h
-71e5116d9e043a87784b978c63b82b2d bfd/xcofflink.c
-74b9e8377ce5ef7f2ad8914ad5e1dd41 bfd/hosts/alphalinux.h
-6626deeac79edaa6eef30082a4fd9dd4 bfd/hosts/alphavms.h
-70e1a59995604c3b804469fa27b92d94 bfd/hosts/decstation.h
-7f90b6f7c21bcc67525386bdb9399540 bfd/hosts/delta68.h
-5a75f0a8518cdf994c6837632317650a bfd/hosts/dpx2.h
-6d9ebd0f91f9085690638821e2ce67e0 bfd/hosts/hp300bsd.h
-50735617194ee653f1cf99af40a7dbc9 bfd/hosts/i386bsd.h
-c3d90b1a06731c814d89371f91583bb9 bfd/hosts/i386linux.h
-90fa9751fedd9623f399b8bcd6a646b3 bfd/hosts/i386mach3.h
-09a90ebd4e56bce95e72a93c6274997e bfd/hosts/i386sco.h
-1d13cbc7201d1b35dfd2353027122d33 bfd/hosts/i860mach3.h
-779197139aaf874e61ef9339cdf7df30 bfd/hosts/m68kaux.h
-c40f7966cbdb0fac0b4366c9c61eac06 bfd/hosts/m68klinux.h
-2563c4d1fef8234619b1c2007dfdaf90 bfd/hosts/m88kmach3.h
-8fbd4bfd38ea85aeedac03e1962242dc bfd/hosts/mipsbsd.h
-f61dc4a9a9a665ab9fba6861214bdea3 bfd/hosts/mipsmach3.h
-d4e865701ae3a5149a05ff92b2542e94 bfd/hosts/news-mips.h
-2a46cd81291f56275932a241e022f567 bfd/hosts/news.h
-21af1454d516fbfd996f6d6bc3b8db9b bfd/hosts/pc532mach.h
-2440e7cdd4e85ead6516650e1329bd0f bfd/hosts/riscos.h
-31fe7c1b8aaaf0174c5fe2ef83298ca9 bfd/hosts/symmetry.h
-627775bbea4f1d59b97edfa80e81a259 bfd/hosts/tahoe.h
-1214020ec5befbef1dda50900deb4740 bfd/hosts/vaxbsd.h
-9b476271b3bc5815a37f6b887c092090 bfd/hosts/vaxult.h
-9b476271b3bc5815a37f6b887c092090 bfd/hosts/vaxult2.h
-9fd8ff8120f96817fe7b034b4ed9b4f5 binutils/po/POTFILES.in
-bfb5c178c2404196ab54d7532a61e3d4 binutils/po/Make-in
-0c3e2088c29f5140c34d4c1a4cf50efb binutils/po/binutils.pot
-327a79cbc083ebf99b8c70353167405b binutils/ChangeLog
-2472bb0eaaa74c1313fa692818c05de1 binutils/ChangeLog-9197
-14304b5ca4a2273914dfcad6be18564e binutils/ChangeLog-9899
-13eece6d011b883aa4547d6456769697 binutils/MAINTAINERS
-f4074cf64ffef103687013a2e96d6fd0 binutils/Makefile.am
-0ceae7f8e4364ac489da69717c9bfea0 binutils/Makefile.in
-abacc206a632053405f9da3d19f357c0 binutils/NEWS
-d3c110ce10986acf5652bcede3ba5d15 binutils/README
-949ae831863e3d2d546a13e90598af7d binutils/acinclude.m4
-c76743519e57c546f30f57013f446bec binutils/aclocal.m4
-c1436a898294a0066903a5104d59658e binutils/addr2line.1
-c1296f6a626273f10323beba4c496201 binutils/addr2line.c
-98881d2c88484e6af6d780a96771be58 binutils/ar.1
-a04cdb2cef55746e411d28760663335c binutils/ar.c
-ffbb491f2776bf07259287e518ab943e binutils/arlex.c
-65306c2e52d8644d8b373eaa39b24062 binutils/arlex.l
-ca083bf7f778d5c3abb4dcf85f7fb069 binutils/arparse.c
-9f796192da100ab75cc8e8986cf5ec9f binutils/arparse.h
-5e234398e134240a685477dd35dfa867 binutils/arparse.y
-42e0a4af5d75962dbed3ab8c34b5c3f3 binutils/arsup.c
-0bf4eb9b7b9f8964c5d0aea4f501ea70 binutils/arsup.h
-f443d4e0d5c81d99f3ca85c213929794 binutils/binutils.info
-3d7f73b3f96ca7ba3a1ffb206393592e binutils/binutils.info-1
-519fe824e3b2fbcba9e27c543f16cafb binutils/binutils.info-2
-df7e54f71f2886c89077e97cd576f7ac binutils/binutils.info-3
-4e2cca724195b6b7503bfd507420da3b binutils/binutils.texi
-84e127713d45f096f8b6a23cf646e73f binutils/bucomm.c
-fb0535da62e6833d2db9abfc40161404 binutils/bucomm.h
-6e32645619af004d54c2b09867e2bed8 binutils/budbg.h
-0b097861a14f344d75659c82a0329699 binutils/coffdump.c
-712cbcb633b810aeca514045f7a091cb binutils/coffgrok.c
-727709ba9f525b95a78b7aa3453baffa binutils/coffgrok.h
-4e92063f698d7013de0286ef44322816 binutils/config.in
-4359fdef33618e0323337df0588c5cc3 binutils/config.texi
-ef0db6edcbe0610762e2414a9cfbc8a4 binutils/configure
-0df24a539b5dcfb1c9b147d28b80e05d binutils/configure.com
-b3a87f9e52b1cc40780b932ba7ea9909 binutils/configure.in
-150a0434297702b55b12a72ee3836b4e binutils/cxxfilt.man
-bd5c323adf047cfa77d61ab3a1d30948 binutils/debug.c
-d067535d0ee0e2dfef7c101ae9ed5afd binutils/debug.h
-52960f8f6f672312531d1cdcb4bde2cf binutils/deflex.c
-f3bc4c49528dbeb97029c901b2a1cfeb binutils/deflex.l
-a5799c90522edb7749356475e2b3c076 binutils/defparse.c
-01fa40dc7e4ed75477d60fe6853be93e binutils/defparse.h
-4f39891c79936bdfb4f03bb4b5cd1f39 binutils/defparse.y
-fb7920a70d8eba8b94fd446da371604e binutils/dep-in.sed
-826fb11427b3c2ce4aa0d35d57ebfcdf binutils/dlltool.c
-fcd4c7531e0ae0b27cc707d49df82bda binutils/dlltool.h
-2d6e186f8e50d1cfd2dbb2c6d77aa25a binutils/dllwrap.c
-d7bd6f5d07c781caf5cd1a0b20633900 binutils/filemode.c
-321ff0d85aa4e062bb891eba8f971734 binutils/ieee.c
-4d04341c680f1136f390abd07d49caef binutils/is-ranlib.c
-920b2431a9bafbda1144b22258327b10 binutils/is-strip.c
-39ac662d88dea0e279c66fee67cac871 binutils/mac-binutils.r
-fb2055ce0e0f73de2e8df95cc40641d9 binutils/makefile.vms-in
-f82d9835fa96d421d65a5ea7f5cb5299 binutils/maybe-ranlib.c
-aa064dac8c2147d98b05609a47b80ddd binutils/maybe-strip.c
-1d9d64c1d1409968c8f722c009b71b32 binutils/mpw-config.in
-2ccc0b509ed732287996815f4ec3bb81 binutils/mpw-make.sed
-3f9006583fe2a2baee6469944a4d6c06 binutils/nlmconv.1
-d13531ce33278c0b9469db895bb1d7e8 binutils/nlmconv.c
-cf949369d105afd57bab40a2101f089b binutils/nlmconv.h
-43f2bf49637f73763c155357169d3d6e binutils/nlmheader.c
-3426060b7fba0ed0184a410e33bf7fd3 binutils/nlmheader.h
-5fd07036b1458259b61aba4be0b68831 binutils/nlmheader.y
-216a9371bddca8d4638e129ad21a4337 binutils/nm.1
-59f887c696b56a5fd7c47faa4e031d81 binutils/nm.c
-b3c63de023675571764212902c24ee77 binutils/not-ranlib.c
-7b521296e81503ee1a37cc77039dc203 binutils/not-strip.c
-30b1bb7f3abcfa73a3c6b4b059329712 binutils/objcopy.1
-fb8a2b8519754c33584893536f1c9600 binutils/objcopy.c
-542a5564ba0a8082d59cdcdc8151c665 binutils/objdump.1
-8c9fef7b45cd7432093fbf89466a225f binutils/objdump.c
-f9e36e9e0cd55ab620e09fdebeca42cb binutils/prdbg.c
-020c2cec49a443a1b1865f95077e044e binutils/ranlib.1
-bec38036243f76c13fa87b092c0292e4 binutils/ranlib.sh
-352580333a5a5446ee5846eda6ed72e7 binutils/rclex.c
-d482dbfc392432a79f29b921679073c2 binutils/rclex.l
-218b925653d29f7fa28c0f4a4a7f7423 binutils/rcparse.c
-0bb76c3e578d61500674d6fafb307be3 binutils/rcparse.h
-df9b51d3071dfd3be7e34e765bbad589 binutils/rcparse.y
-ddd9b9d17599b40e8eb39c954503ee6b binutils/rdcoff.c
-c13b08d97206def27a7f8612f0b73e89 binutils/rddbg.c
-32295c33f18819cfe0d40d7f75213dc2 binutils/readelf.c
-301dda393ce6198dab5c0fd289e3d333 binutils/rename.c
-d128d999bb8a16ffc6c6a8d10eb05a41 binutils/resbin.c
-616cbfbe6d9e4a292c807f7fd9b8f993 binutils/rescoff.c
-2560f6c6d92efe9cac783ad2ac24e13a binutils/resrc.c
-e266faaa14043a879715b85dbf53d48a binutils/resres.c
-b62e62e9c7d29e37c5968c1a005f3eae binutils/sanity.sh
-e0d20337f2d99c6f1546cc14750c2af7 binutils/size.1
-c74508b4e2d421b3e011e4334742205c binutils/size.c
-f56f7d79f8b8754d1270ad6c8e2215ea binutils/srconv.c
-7bdd8bcf3f73100f2ba7a7455c04ee39 binutils/stabs.c
-1ded054093de910d9786c62bc4fe8cc6 binutils/stamp-h.in
-0548ad6ecd51c170effca26be02c225b binutils/strings.1
-b9c4d10fa3fc66eaf6fb3a525957d563 binutils/strings.c
-d2c537d036457e8b2a8ec56ea0a37a60 binutils/strip.1
-35812e6671c0dacf4b209aedd62cb242 binutils/sysdump.c
-e5df2443c5572a565ab25e875341c257 binutils/sysinfo.c
-c872c0449117476453fa1156a4ddd4fe binutils/sysinfo.h
-b5558d092a056006f557bde14786e7f3 binutils/sysinfo.y
-360e007536fd5fc8211a294bbaa1a8be binutils/syslex.c
-58ee0c7157e6cd1f73af7ae76033054b binutils/syslex.l
-2a0d9dfb5514c6c076eae77e837c9418 binutils/sysroff.info
-bc126ab62a0177393350b365f3a5e40e binutils/unwind-ia64.c
-836ad638b88e86bdb20e53e885f778a2 binutils/unwind-ia64.h
-ccedd336cd29294e43a17ba0d6e23c52 binutils/version.c
-195751181452e4a1a8f04ec25db22e71 binutils/windres.c
-6b39b8d57876e2116d6cc9a25d095196 binutils/windres.h
-d5e5a7f1ce5f0bfdac6677f94363937b binutils/winduni.c
-656d6daadd2719e5d0c7fe398114e95a binutils/winduni.h
-33a17a3bd3de007bd19f721d6499f665 binutils/wrstabs.c
-34d0ab842ffa4318e8cbe2bba4c565dd binutils/testsuite/binutils-all/bintest.s
-769e0d6ed347b047fb2540949475d543 binutils/testsuite/binutils-all/ar.exp
-a1f33ff9c6d058fa281146d85da8a7ad binutils/testsuite/binutils-all/objcopy.exp
-d58edef3a25f7729b8fa76f61a2c9648 binutils/testsuite/binutils-all/nm.exp
-8e5c9079f46f332db8bbe679b64c878b binutils/testsuite/binutils-all/hppa/addendbug.s
-d91ecc8b2ba6965842cf206d8144c3e1 binutils/testsuite/binutils-all/hppa/freg.s
-4412faac86e3f31dd926f7cca1b34fda binutils/testsuite/binutils-all/hppa/objdump.exp
-8c020e9f1b3dd06718965e6a68bee100 binutils/testsuite/binutils-all/objdump.exp
-c6a30881e7a8df05c3769f70c797d338 binutils/testsuite/binutils-all/readelf.exp
-fd5d39184621cf8c2e7ff6b2404d299d binutils/testsuite/binutils-all/readelf.h
-25d9186ef9252a2db8ef03ad11337e1e binutils/testsuite/binutils-all/readelf.r
-93a710740488294f2458be7b750ccadb binutils/testsuite/binutils-all/readelf.s
-e597a5420641d9d64c21fee25118b7cc binutils/testsuite/binutils-all/readelf.s-64
-b1d2f987e8bc3b99c2f25d3b1ad0ba7d binutils/testsuite/binutils-all/readelf.ss
-22c83167f1761586e80d622551da44d3 binutils/testsuite/binutils-all/readelf.ss-64
-04ab5a3452defc08311819709f841b07 binutils/testsuite/binutils-all/readelf.ss-mips
-99e8a65be94223ecc838421b47b19c49 binutils/testsuite/binutils-all/readelf.ss-tmips
-ea24bec237106a0e7811279341c8ad4c binutils/testsuite/binutils-all/readelf.wi
-472ee848e6a70cc6a512a388ca695d58 binutils/testsuite/binutils-all/size.exp
-96869108191b6a2bfb097357132aee71 binutils/testsuite/binutils-all/testprog.c
-3be37588c17084be375a802b4d40388e binutils/testsuite/ChangeLog
-9fdd25912eef439ee83ad374bfc5a271 binutils/testsuite/config/default.exp
-332890f8e08b7aa8c60bb35f6065c211 binutils/testsuite/config/hppa.sed
-6c8f3fff368112453697522201a340ce binutils/testsuite/lib/utils-lib.exp
-bf1e177862ddef9aa6970474ca011825 config/mpw/ChangeLog
-43d2a9ca5ff1a5f5acd3390b7b082830 config/mpw/MoveIfChange
-d9387d651ddbc91875c97259d0fc35af config/mpw/README
-a31a49fd4c06ba2b08ff299cc2cfac0d config/mpw/forward-include
-a9ee17c3900e8edf08a3cf209a87cf2d config/mpw/g-mpw-make.sed
-df7cf8189011eae6ec32c27a268ebc06 config/mpw/mpw-touch
-082758f13e230f38a846e9017ee6025d config/mpw/mpw-true
-39980e1a3d29624ec94a6df2dfb8dcd2 config/mpw/null-command
-71b670c5a9868b2833972721f73578e0 config/mpw/open-brace
-7588b51a118ab73de5d6a3ba0fc1e47f config/mpw/tr-7to8-src
-082758f13e230f38a846e9017ee6025d config/mpw/true
-02a96b04d8fd1586bfca132bac4e1a4e config/ChangeLog
-70c03dac891f6bc7d806b9427b31bc86 config/acinclude.m4
-141167afa246fce5e59bb9e55cfb2fc8 config/mh-a68bsd
-2b5476085f7589e173bd81316a7549c2 config/mh-aix386
-57925a69ccb24ae7ca7cf949a07d26d3 config/mh-apollo68
-9b65dc7f50a7134932aa278ac0378703 config/mh-armpic
-8d82479feea57715325ee949952ae5e5 config/mh-cxux
-ddde55c2eac58773f99aabb2f011e206 config/mh-cygwin
-251cf9b667a963075140fcfa616f06da config/mh-decstation
-a3dc79b2e3494813c3a0b352d2185c17 config/mh-delta88
-ab6f38194c18de21e5ac0761d0d6352d config/mh-dgux
-615158832b3fca3cea2f51053e67590e config/mh-dgux386
-2738c9de2581bc9c2d21f48950b18bec config/mh-djgpp
-9b65dc7f50a7134932aa278ac0378703 config/mh-elfalphapic
-153649fe7fb621b814baad06a2bf299f config/mh-hp300
-3330f1730b6b4bb70b09ffe2415c74be config/mh-hpux
-3330f1730b6b4bb70b09ffe2415c74be config/mh-hpux8
-9b65dc7f50a7134932aa278ac0378703 config/mh-i370pic
-740855ebe34cb2d01fba1f1bcb4264cf config/mh-ia64pic
-7add3042f79e57cdcb52abf304c26a70 config/mh-interix
-25c3bd9e7778c2c5d799fb6f1615be3f config/mh-irix4
-ffaaae454726b7ec67de856093365ec1 config/mh-irix5
-bc99b6de866022c39cde3cc7eda83fe3 config/mh-irix6
-1acb83eaa6a78c587598bd7efc2025d9 config/mh-lynxos
-6bace932d30f092a27fba43e01226c04 config/mh-lynxrs6k
-740855ebe34cb2d01fba1f1bcb4264cf config/mh-m68kpic
-7bb6a9aa44a68e1e71f76cf8b8c2d135 config/mh-mingw32
-44882b0820862d0e134a8e4e5537afce config/mh-ncr3000
-42f074ecc1191e9ebda8e447c4f46713 config/mh-ncrsvr43
-90b19906d7ba40a6e4b83efb959809c7 config/mh-necv4
-21c5c77600fd6fb58f378ef2acf0190c config/mh-openedition
-9b65dc7f50a7134932aa278ac0378703 config/mh-papic
-9b65dc7f50a7134932aa278ac0378703 config/mh-ppcpic
-e263a8fdee36cbc610757f2317da3991 config/mh-riscos
-ac3fc3e8d21f9f9fe83c4cbde3890387 config/mh-sco
-c502a579b42cb78af2154966343f491f config/mh-solaris
-fa84a282ce7cd6876d1eac368a31a368 config/mh-sparcpic
-2e3ce1267c492dd862c48b59eab932ac config/mh-sun3
-278ff58db0fc6c75e1cd39ca2ad1acfe config/mh-sysv
-a0992273a62d3448fe6ea65a74250899 config/mh-sysv4
-08516ddc97d1ada83d4bd631bd1964be config/mh-sysv5
-e75a559cf75354c524229f480b5f6e7a config/mh-vaxult2
-740855ebe34cb2d01fba1f1bcb4264cf config/mh-x86pic
-f80e59daab2815b9faf70f2fe2f0ec2c config/mpw-mh-mpw
-f60c118789c383f2548e2f8969513865 config/mt-aix43
-6eee2b9b80994128082ebcfb8285239d config/mt-armpic
-96289d06809692c31d71e69c4bedb6d7 config/mt-d30v
-6eee2b9b80994128082ebcfb8285239d config/mt-elfalphapic
-6eee2b9b80994128082ebcfb8285239d config/mt-i370pic
-4d21c96a048f825b25f5ecb7259866ef config/mt-ia64pic
-9c9256a473bc2e1204e258e48246cabf config/mt-linux
-4d21c96a048f825b25f5ecb7259866ef config/mt-m68kpic
-2067ce86494ccb89791fe169eee8c198 config/mt-netware
-5aa8f75c6588d513ce199e2e44c206e2 config/mt-ospace
-6eee2b9b80994128082ebcfb8285239d config/mt-papic
-6eee2b9b80994128082ebcfb8285239d config/mt-ppcpic
-05fc6527f7fe0692e7bd51c24868c2a3 config/mt-sparcpic
-4c029f499ccf3ba2561603b2a113178e config/mt-v810
-12b3030d3d59526c374c15af4f5944dd config/mt-wince
-4d21c96a048f825b25f5ecb7259866ef config/mt-x86pic
-8f1f7dafc590b26d22f3e597284f25b9 config-ml.in
-e0d75b8ca062b8ec4eebf664aab1644a config.guess
-306d551fd358a6363d2446486f1b8821 config.if
-3a43bdabca8b9eca92530bb3ea2eeb24 config.sub
-2523c7ca068da11d38e06af6347abce9 configure
-0473df9cb9367e9c8a77c289a6f5f764 configure.in
-e28364a0df955105a7f6898cc8ca366e etc/Makefile.in
-213e80930c0be010bb250612af54775f etc/configure
-e9b828169fe54bf6414ec1f4376af077 etc/configure.in
-27fb25be358ff0eec0a44ac86f3872ee etc/standards.texi
-fc8ef2abb184ab45779484c10d4d8d8f etc/make-stds.texi
-a76594be1e11898d26d9bdf1f54af07b etc/standards.info
-5ee7bcaad637e7010a2581db7927a16a etc/configure.texi
-193f671ff984e81653741fa7c212a232 etc/configure.info
-1a911cd9b8902678f64b5e33d457a8bd etc/configure.info-1
-ca127e48a13744e2fff22df3b893264e etc/configure.info-2
-1686cccb56366de0a01e848bfbfd9f22 etc/configure.info-3
-a20b40a0a5d3282f6a97c627be1e38c6 etc/configbuild.ein
-570746cd93c4dae506cf2a6153a2a1b3 etc/configbuild.fig
-f97ac2d5e05edeb335b73f8b6beef581 etc/configbuild.jin
-b2851bb6d77822adc89ffc6d323b5fea etc/configbuild.tin
-e67b330b1ad623f1bd3850483cd4666f etc/configdev.ein
-c1f7c41d3e596256ab5f5f933a66293f etc/configdev.fig
-8e14386548b8da4c5072aa2abea55886 etc/configdev.jin
-32fc10cbdbf679bd0ffc8857cf069b43 etc/configdev.tin
-e75bd9994061d19f9670d08acbd01eb1 gas/config/aout_gnu.h
-a802dbfeda3550bfd22804228399f0c2 gas/config/atof-ieee.c
-4027fb83cf42e6199aea0cb2526a06fc gas/config/atof-tahoe.c
-14a0f251c1273cce5c62b3a5edfc3dab gas/config/atof-vax.c
-09c324e401be218c9f9b18833e2bfd9b gas/config/e-crisaout.c
-88c6165199c1aae7bd9c2733ad9a1847 gas/config/e-criself.c
-8915ab931627c03103b8ff52bd2060eb gas/config/e-i386aout.c
-4592324396b51379efcdefa7b75a17da gas/config/e-i386coff.c
-90f70110e875b74bf055abc7f609c4be gas/config/e-i386elf.c
-a153ff4dc91266991257426d1a9d7309 gas/config/e-mipsecoff.c
-be51facd59d0de4cc60d8b0a64360795 gas/config/e-mipself.c
-4f384db2ef30841ca0502269a3e8f438 gas/config/itbl-mips.h
-5abd9bcd8f0e5ce25309035cbf3bc0fe gas/config/m68k-parse.h
-869147d7bca490ff7f20fbe121715a99 gas/config/m68k-parse.y
-0517b56ef366ac53f4921e66d1a85b2b gas/config/m88k-opcode.h
-8d517bccecde0b721a58b01a14731bb6 gas/config/obj-aout.c
-06b407be57cbacc7ba05787f8072be7d gas/config/obj-aout.h
-84532c4badb5b5a414ea7366c240b1f7 gas/config/obj-bout.c
-fdc8729ecc7985ac4dc9531bf8ef8e77 gas/config/obj-bout.h
-a15d8ba751d3b7dbfb8b378a57fc7fb3 gas/config/obj-coff.c
-c8c39016cef6730efd244c450075c988 gas/config/obj-coff.h
-6e39bf9284bfa403132fbc486c0058b5 gas/config/obj-ecoff.c
-39d1ce7b5d484ca95d660c2a1e4eebd0 gas/config/obj-ecoff.h
-5ad09dc220a6763becd6e5916e939354 gas/config/obj-elf.c
-34d18bd7dc155d66c4196ab7d06f7240 gas/config/obj-elf.h
-fc5244809078292ed69543b590057d60 gas/config/obj-evax.c
-409f2700494fb5da88cd17bd13787e30 gas/config/obj-evax.h
-1a5fb62914ddd24d361b7b129a038361 gas/config/obj-generic.c
-5697e716124f3115e85dea04de9597fc gas/config/obj-generic.h
-9e0918da00ab277c95f9a2b9e4f5f29d gas/config/obj-hp300.c
-7b4f9af8c88a8fddf18a0b0a2d81b0db gas/config/obj-hp300.h
-6bee9b63dc974cdcfd38fc323627c123 gas/config/obj-ieee.c
-c3c18ef4a1af26d29718ad6ce33cb4dd gas/config/obj-ieee.h
-32d6ee58a1474027c5403a0fae7a9ba4 gas/config/obj-multi.c
-9f5bf398a837e7a19947e088a9443b9f gas/config/obj-multi.h
-16a236759175a5714c77962a358d3c5c gas/config/obj-som.c
-80b8ff6d8f8c6f69b33d1a0275753fe1 gas/config/obj-som.h
-8ea02b18794c00460bc81a2b8119739a gas/config/obj-vms.c
-92be5fb47ee648292dfb0bc7ff27326b gas/config/obj-vms.h
-c1894be92519dd48b0314109f1881012 gas/config/tc-a29k.c
-c5139d88aed8bf2b090309497013dd6f gas/config/tc-a29k.h
-211e99ec1bb1759368747760c893df82 gas/config/tc-alpha.c
-33d0731b8586c060675186d139597c41 gas/config/tc-alpha.h
-a8fc2b9440f26a722f34715f08991ba7 gas/config/tc-arc.c
-081e35843ad7dcfeb68b50aedcab491e gas/config/tc-arc.h
-e15ea2817e89bc3ad3355c2c7207cd87 gas/config/tc-arm.c
-c920e78d25bbdd5900958e04709fd4b8 gas/config/tc-arm.h
-463b2242e8e491564d5e0e1506bb06de gas/config/tc-avr.c
-37d6caa633b2f7901f443b5307e8a905 gas/config/tc-avr.h
-00c243430f9f2f60ab15245d6bd15e7e gas/config/tc-cris.c
-c201f4750843a1fd322b38f8ed4e6bda gas/config/tc-cris.h
-2f9c666879c01e30c44aaf445b1033b5 gas/config/tc-d10v.c
-8faf078fa60927d88ed23dbd23ef1a38 gas/config/tc-d10v.h
-c08f0392e2dbbddc8f04f0779343f336 gas/config/tc-d30v.c
-8b7945ccc65e5da78d3a9fe09c2308e6 gas/config/tc-d30v.h
-0ed0301072d2438031d4e222b3d06d57 gas/config/tc-fr30.c
-ee4d3a84b465216e750f06b0fcdba621 gas/config/tc-fr30.h
-d41d8cd98f00b204e9800998ecf8427e gas/config/tc-generic.c
-eec169238b80630136c19235264cb04f gas/config/tc-generic.h
-ad92b1751356945284c3450fe0ed00c4 gas/config/tc-h8300.c
-801eb9030ae51576454343bceed3f8a4 gas/config/tc-h8300.h
-312f280c2f4d500378edd99087c7ff98 gas/config/tc-h8500.c
-664c496490b0f88854b345cb940eca9d gas/config/tc-h8500.h
-f763378e31a8c10cbb8437e2513b53b5 gas/config/tc-hppa.c
-4393890693232f88d07a9e1d76544d0e gas/config/tc-hppa.h
-73d71eb5625c8cab823b05718dad8379 gas/config/tc-i370.c
-50392712885658244102256d4333dbbb gas/config/tc-i370.h
-1287427633324e0b6ef2563288452b55 gas/config/tc-i386.c
-0d8b9453c5c2b85fbf52d5d18075bd5e gas/config/tc-i386.h
-f8adb51ebafdb40f294def677366a81f gas/config/tc-i860.c
-0b60639885f14b9d4262b1b5695e4ddf gas/config/tc-i860.h
-cc609a2100c2e89d7c34c9e3a40cc3c1 gas/config/tc-i960.c
-f46200f85ff3c2db7a0a88c7834014ce gas/config/tc-i960.h
-1ef7e0b07d22b5947cce3237e4c99ead gas/config/tc-ia64.c
-55a5ee0b822753196340782ebdb63fb7 gas/config/tc-ia64.h
-2c414ce59771fab4925ecdf8d8c0fe68 gas/config/tc-m32r.c
-1b6e3bee9d679bdad05dd205bee78995 gas/config/tc-m32r.h
-a12bd005331953eec47146cd4b2fcbb3 gas/config/tc-m68851.h
-eb109194d0009839d36ba51165ed6082 gas/config/tc-m68hc11.c
-a298ed6402724d90e5b8edee560a6a7e gas/config/tc-m68hc11.h
-023972affb12beccb32294a9a1908d65 gas/config/tc-m68k.c
-20302dc874a9489ce7bb7a38876de1b3 gas/config/tc-m68k.h
-6d621a3e526cc0a6d2b657dea4a2305d gas/config/tc-m88k.c
-107c3b50693b48561ea3e1f21427f814 gas/config/tc-m88k.h
-ef5e629ce116e621dcfdc2f24c9f2511 gas/config/tc-mcore.c
-79faecc51abb67e48eac14101fa5f41b gas/config/tc-mcore.h
-720b0edaa61cef121c857642cf070877 gas/config/tc-mips.c
-f1f594c95b827a8e431f1a7fad5fdca5 gas/config/tc-mips.h
-851173367f8b9e7ba049651482357a34 gas/config/tc-mn10200.c
-a1d9a4975a26d18367a870bcfd757ad0 gas/config/tc-mn10200.h
-15ecdb549363635ad76b2c3a86e700de gas/config/tc-mn10300.c
-7f67c8f56a13301960fd818cbbfabcc4 gas/config/tc-mn10300.h
-b00eae3c8b6829291b629c31015075e2 gas/config/tc-ns32k.c
-2de740c8af5873b4d86571cb87a4278f gas/config/tc-ns32k.h
-47f42d9d2b0868e4b8f317101b0c1684 gas/config/tc-pj.c
-8dc88fa36c8ae8d4d6dc0dd424b15154 gas/config/tc-pj.h
-e53e90d9045ed48820f1b5b07c98bea2 gas/config/tc-ppc.c
-801e811b0a3d378913351cdb8556d0c6 gas/config/tc-ppc.h
-b9bde6879b21d1fc21732d1c17b243ea gas/config/tc-sh.c
-23301ea5ae6486c30131563f56983c4e gas/config/tc-sh.h
-2f6a18c71d581798af6ef0148f863c4d gas/config/tc-sparc.c
-845af70a42df937b9ebf4c1d19002d75 gas/config/tc-sparc.h
-745fe32b81053e3b80ecb325654425ab gas/config/tc-tahoe.c
-ffcd4331c7d6d28e97466a66f3620f2b gas/config/tc-tahoe.h
-bc08cecd35802bed257d11dc5ee3aa02 gas/config/tc-tic30.c
-172636d7d3732eb57c67ead9709d4d96 gas/config/tc-tic30.h
-9d9818beb4f8c04429d8442d1624be53 gas/config/tc-tic54x.c
-8797523948d01e18fdd637d6dbe36d4d gas/config/tc-tic54x.h
-82c9a73a973825d66c344d6e271f4174 gas/config/tc-tic80.c
-a8de106e568896428baa8b248f1f7d8f gas/config/tc-tic80.h
-dd5e427d8cac9e551d263fddc7144024 gas/config/tc-v850.c
-5ce308c35dd719428af4510cb7adde41 gas/config/tc-v850.h
-f9107adcd738a440490415bd12bd5db8 gas/config/tc-vax.c
-a782b0af9745557989f35bb76a300bc8 gas/config/tc-vax.h
-6db1110e7f9a9f839c5bd245aa8b3b34 gas/config/tc-w65.c
-7ce6ac4d03348c1102b1d6e4308bf1e2 gas/config/tc-w65.h
-3e5bb9333fd37bcbbfc45d3b918e79de gas/config/tc-z8k.c
-b985cc503b319a201bc0ddf5a2e9cb23 gas/config/tc-z8k.h
-40b4f0d89e0f7a47828f7e6b2eb98cf8 gas/config/te-386bsd.h
-0d6f3b4695c8a69980eef0635a4b376b gas/config/te-aux.h
-904c7780c93025e1c16bd7facc5eb6d5 gas/config/te-delt88.h
-c30935955b6e3e593aec0c121bf741fb gas/config/te-delta.h
-47cd21925072d94dd095186c5202b92d gas/config/te-dpx2.h
-fbce03dceb71bf68d8c872bbb69b35aa gas/config/te-dynix.h
-7e2acd95eb4766b4530cd90d5da12e11 gas/config/te-epoc-pe.h
-4215a65e5e9aaf52a39c0277cec05a06 gas/config/te-freebsd.h
-9677889ebc4d2d31b7cf1d99bf884883 gas/config/te-generic.h
-9c4b72d5db2a3b58fe216e98e5d1604e gas/config/te-go32.h
-fdfff2ba26de59e5e34124666bbe255a gas/config/te-hp300.h
-e2bdcb851ea04db026cbd75585ce50c7 gas/config/te-hppa.h
-ffe54b5f97c4c93a036fcb434b0e2ce3 gas/config/te-hppa64.h
-8a89d0db3087edfef6adb3d11e461332 gas/config/te-hppalinux64.h
-37ed6767b7669c59a6f01cf229bb2763 gas/config/te-hpux.h
-c5c5a24aae2ba252078a1e9aba6f29dc gas/config/te-i386aix.h
-48983355f44a1998351bc155fe48f093 gas/config/te-ic960.h
-19b403b208d810d952e172e14e5ccc4d gas/config/te-interix.h
-4cfb2f20ec1301d37e9ff374e46317ce gas/config/te-linux.h
-0525817b2f140459473072028c30da2b gas/config/te-lnews.h
-2d77aec1c4985fc5f3a8eee88e95dec7 gas/config/te-lynx.h
-36d49af0e764532aaae5a64d2c046790 gas/config/te-mach.h
-9f70e9ab23ffcbdddf605e1f7b9479c4 gas/config/te-macos.h
-7adae751b97b48a10ca1f8483e539d6b gas/config/te-nbsd.h
-42e509551b9c1e76f3a8f4621d2eee03 gas/config/te-nbsd532.h
-c34e9c2b58482673113e11fd998598c1 gas/config/te-pc532mach.h
-158cb175a491e482d6e0d3412b0bb216 gas/config/te-pe.h
-a9cbae48ef62e7a20c33d8a94c576b4b gas/config/te-ppcnw.h
-a8a052866cd9c40ef31c0f4eaf7d653f gas/config/te-psos.h
-0ff6629cbf363fc1b3d16c4ee4877f1c gas/config/te-riscix.h
-4e442b2838e599466e9cc0fa346021fc gas/config/te-sparcaout.h
-68cff7532af5d9dc4f8678dbd215506f gas/config/te-sun3.h
-589c88a6aa89ffe655b1f8924e13bbd6 gas/config/te-svr4.h
-667553559949ecb7bc468a6fda1003f4 gas/config/te-sysv32.h
-5e785cb6f9a16599434f78b525b2a943 gas/config/te-tmips.h
-5dc896f3c45078f34974fe05fb94ee3e gas/config/te-wince-pe.h
-6599faa23572d356256aa616b013c64d gas/config/vax-inst.h
-fd1ee35049f9bb5ca0b5b40b8109e49f gas/config/vms-a-conf.h
-ed8248ba3c34b041f1d8942b285d6196 gas/config/vms-conf.h
-cf987871e5d5e86f6aa12afbc89fc785 gas/CONTRIBUTORS
-ceab81aa1f02825092808fdafba0239d gas/COPYING
-49b0c513e9e8f5c5f2d0f7a71435c914 gas/ChangeLog
-416a26a1162590c860fb1fefffc54cca gas/ChangeLog-9295
-6d8b241f06f94a04f180294552ee41a2 gas/ChangeLog-9697
-f577af562fb6cac4e22d6b5ae67235ac gas/ChangeLog-9899
-d618facc3e8ce8bf3d02ba452e1be6ab gas/MAINTAINERS
-c7d8894c1b4cae0cb9632c80b08092d7 gas/Makefile.am
-4f2f7020e0b422aca1cc93158938388e gas/Makefile.in
-d9a8e0c26cac87a5c4618803fe69ecde gas/NEWS
-0ed4366c2ef5bde49890368940dc9fa3 gas/README
-e8b1e941cbf0b441da52f38fd2ea9725 gas/README-vms
-c66ab308e6d86fac0000d1a9322838b1 gas/acinclude.m4
-43e54453976ff55cd63629d58e04fc0e gas/aclocal.m4
-0713cc4c7ba088fb707c5ccf5420b551 gas/app.c
-44c182a81fe50344e603258add9cc6f4 gas/as.c
-ce2e7980d3ce0ebb9027297f3059e8b2 gas/as.h
-70eee11ef3b99a2aef25cc4e5355cf38 gas/asintl.h
-a13029645c6a330d47f64661c7d7e472 gas/atof-generic.c
-75bf496ec970dc9712e80b4a5a4af824 gas/bignum-copy.c
-c096b326d8cba2abd6ece3ebb29df4c1 gas/bignum.h
-00240c3f69e4d6cafdf8b729e6e84d6d gas/bit_fix.h
-8fa009ac31ba211585c4f4ad3f80bed7 gas/cgen.c
-f2b1a3d53180488da57702ce8d6257d4 gas/cgen.h
-65dd281f88f92212b81bb354359b3336 gas/cond.c
-e46511c2ddcf00256c007081122f6678 gas/config-gas.com
-039f9a3e0b0fa261d5b5c272be4422de gas/config.in
-d9692a1b832b0d71391ac34ad78b1b49 gas/configure
-aae9c95aaea1df86eb2621b27ed3a99a gas/configure.in
-454732b991bc3adfbaed197eb7e87709 gas/debug.c
-402433baaaa08f73e6ec935228d2e751 gas/dep-in.sed
-e3fd8ef3d3d26dcd037e9bc72b5f1c91 gas/depend.c
-4b78ba859f531df84c9d04ba0eadc95f gas/dwarf2dbg.c
-191371b169a1a50bf4cfb6e95875f083 gas/dwarf2dbg.h
-05e52c03f16bce065122a178cb04f2bf gas/ecoff.c
-2ade498ef51a01b944ba9620a2f803f3 gas/ecoff.h
-2c00a55daccea8fa31dd514eb9ae7b95 gas/ehopt.c
-57b3fe37aafdffc79479ab3da84f901e gas/emul-target.h
-305fc57eaa656bac0b150bcc1ca2538d gas/emul.h
-c08f06fdeb6fc93631a01d7b53dd846f gas/expr.c
-03b127e2410c495a62d3f43bc0351b5c gas/expr.h
-35c5208ec46fa524456e2a41c18c67d8 gas/flonum-copy.c
-88bdca4528df9b542227513c3617a0b2 gas/flonum-konst.c
-2aaf2ac6e8260efb36ebf67b54ac6a78 gas/flonum-mult.c
-9b9175f8704d4952a56acef82dd58f85 gas/flonum.h
-6727bca8a71f454d76057aaad0b98707 gas/frags.c
-8584b7ba7291c886b9db82ad72401cf1 gas/frags.h
-49fc4a865d0a8dd8d46951b592d50ebe gas/gasp.c
-f728bf7e9df39918cf8c7467d5fa7478 gas/gdbinit.in
-00715f54f0585d4c32ab362142dac7a3 gas/hash.c
-ef6eb8d70fe48af05178e9af3ed9448b gas/hash.h
-e94dab0cc4b68a0ef5ce9dfdfcb09984 gas/input-file.c
-0df025a05b963cc8d9a890a686c92334 gas/input-file.h
-acbcd05187266da779112cd208f312f8 gas/input-scrub.c
-af2dde296a48962feabc18ea603b9480 gas/itbl-lex.c
-637856676a2c5e17d45ca48ee4d1edfa gas/itbl-lex.l
-fbc898da80a636f469f7765a1c6d50d6 gas/itbl-ops.c
-5ae99999af9ac5c1850c36b5f4921be9 gas/itbl-ops.h
-8568d6f215619a4ce44c36e32a3e65ff gas/itbl-parse.c
-04faf433a35cef1d6b5e9f445aaf6acc gas/itbl-parse.h
-b2285f69b5092425e6fa8b4195130f66 gas/itbl-parse.y
-c7fe4764b8aa7ac76eeed0a1de98a8d9 gas/link.cmd
-687e8b5eb64646e802334fd785512a73 gas/listing.c
-fb844327efbb1aeae5f388f656026f39 gas/listing.h
-adc284330e8a889f23d9153dc9eba7ad gas/literal.c
-962769307588bcf7e9b053afaf508395 gas/m68k-parse.c
-afe7080b22bc9b5e058f473469ced030 gas/mac-as.r
-b4edaba52caffcedfa007bea5a46ef73 gas/macro.c
-9f90a230cb447aa332f3dbf23af429da gas/macro.h
-b905aee5c2a099f7d2579459121c7e2b gas/make-gas.com
-c3cd93b34bceee0379472974735c6f6b gas/makefile.vms
-5ab92a359045f71aec9afc090f1e9ec8 gas/messages.c
-829e2d776ea96775c8298d5efddc22e7 gas/mpw-config.in
-3c7892f4cb73a22801aa4656e36bb469 gas/mpw-make.sed
-d5ef56b704245ff8f113091d867f6c6f gas/obj.h
-e09da02faa41e17d061587cf2e6df050 gas/output-file.c
-afffb943b1ad26344f206ee6bc357279 gas/output-file.h
-486dad21992ef1bbad46ca481351cfdb gas/read.c
-aea4edd3f3a9223bdd7b719e6aa46390 gas/read.h
-e7258e74de805cdf31e919271531c1b7 gas/sb.c
-cff195f2e145a3038579a1501e9fdbf5 gas/sb.h
-5364361aa996d6ecf5f78a55b3110b8b gas/stabs.c
-1ded054093de910d9786c62bc4fe8cc6 gas/stamp-h.in
-dd55eb01ef944ba463cb2ce5f34a7647 gas/struc-symbol.h
-f0b4d340f2ea14f0b248792e6c103174 gas/subsegs.c
-260af34792338267f3927dc44a3a8197 gas/subsegs.h
-752685a6111312f1187d42e7aa0b930b gas/symbols.c
-e78b627a67a43e407e6cc9d3966e6474 gas/symbols.h
-1da751d730b752f86eca5aaa24c563b2 gas/tc.h
-df57d3e0b2752e5caab5294b3acee98c gas/vmsconf.sh
-88a4db7edc70e897c4a8923cbf78bf68 gas/write.c
-78b058a7d893939c2ab422c2e85789d2 gas/write.h
-bb547fe62002b67ae96d3c52f72f9de2 gas/doc/Makefile.am
-2423cc0876c2510df60a5275b0bdd5b0 gas/doc/Makefile.in
-be60028bc97199721b146eb35125cc2d gas/doc/all.texi
-41db9086dadd0f035d15cb3d92bd1203 gas/doc/as.1
-362e4e8e3c9ac37b1cc1148df43222f4 gas/doc/as.info
-85161d87cc0e0d4297787c63456db47f gas/doc/as.info-1
-b81884593f4f05d264946d7a4891701e gas/doc/as.info-2
-b2d9e66a77e2e2986070575c066816c5 gas/doc/as.info-3
-26ae00e2c16b261a3a90dcb8cc4d4da7 gas/doc/as.info-4
-a696a5ced8c5d881f5ea63097dfc0597 gas/doc/as.info-5
-e09cf158c7e7cb65bdee3eebcff58ff9 gas/doc/as.info-6
-41fe1393b25845f0a16585f076c52f3c gas/doc/as.info-7
-94705e2e9f12c6ec33493e5dc00d4343 gas/doc/as.info-8
-94123531607079712cdc98925b407eb0 gas/doc/as.info-9
-2fbd5270dcebd346a0991e021a6f8915 gas/doc/as.texinfo
-a59215bdf94de57a0285409852af014d gas/doc/c-a29k.texi
-e01a5d41dd1d11b839b779cf991abe7b gas/doc/c-arc.texi
-6c7a0c6eb13ad819b865fdca9b883da8 gas/doc/c-arm.texi
-5dfb627124dfb35ac44d11fdd435d36c gas/doc/c-d10v.texi
-670a3dc2d7f147e973d1540d3e02059e gas/doc/c-d30v.texi
-6e93279725365b5846b332617955f22b gas/doc/c-h8300.texi
-1e370e38bad3cf84368e988413793571 gas/doc/c-h8500.texi
-4dc0aab471ec88e9f732b465812e10ab gas/doc/c-hppa.texi
-517ef856eea39abb37275974217b7297 gas/doc/c-i370.texi
-5e674e1c182709037cb3536a60efb929 gas/doc/c-i386.texi
-e8d13a43c909238a5916ce17e31d3ea5 gas/doc/c-i860.texi
-42b8ac98b598dd6f2ece88fabb284af0 gas/doc/c-i960.texi
-147c08afa3ccc82a2d9485e5f1a59317 gas/doc/c-m32r.texi
-fb7536ff2e6681fa34501b7c320df664 gas/doc/c-m68hc11.texi
-e0de947758a2e436eb5d00cb411666b7 gas/doc/c-m68k.texi
-5be2114dfab16f3522fc347cd44da217 gas/doc/c-mips.texi
-677a7e5662a701c8a5f9d82943f36257 gas/doc/c-ns32k.texi
-b12cf56f6b45fa508ec963382efcc726 gas/doc/c-pj.texi
-a3350f042ea6b18add50514707eb5d13 gas/doc/c-sh.texi
-c87b3dff39869ac245c49a82edafb776 gas/doc/c-sparc.texi
-29f6dccc43df1302dedd26fca1c362b1 gas/doc/c-tic54x.texi
-f5679aeb7a13f072790a4cd15c511019 gas/doc/c-v850.texi
-6d7f87c13f69ca2595e95c9eab762d92 gas/doc/c-vax.texi
-5810de21486a935844319423d7a6e9cf gas/doc/c-z8k.texi
-79b45497aca1b0c05295f8f2faee4b6f gas/doc/gasp.info
-8ba1c8507b412944e6c7bdc67da6d964 gas/doc/gasp.texi
-4359fdef33618e0323337df0588c5cc3 gas/doc/gasver.texi
-73b674cd9bd9d15802cc28334b6a25e1 gas/doc/h8.texi
-cf12d9be0d41e433cda51d024905eb5c gas/doc/internals.texi
-25c9af2d17e31c41a405f4da0a58984e gas/po/POTFILES.in
-bfb5c178c2404196ab54d7532a61e3d4 gas/po/Make-in
-8d085be47b4986e1d1f7b90d59722bb2 gas/po/gas.pot
-189b37e66fa0d5345240ac619d9c94c3 gas/testsuite/config/default.exp
-febbd8dc88b45e9686846ca773346af2 gas/testsuite/ChangeLog
-6fdc3af8b63d5c8dd0a98137215d3753 gas/testsuite/gas/all/cofftag.d
-acc0977114e4b9e65b9d2aa95c35ff8f gas/testsuite/gas/all/align.d
-a60277af402def6d8b222eb7aa29fd72 gas/testsuite/gas/all/align.s
-a43c5656afe02c36a6e1ef61a6027724 gas/testsuite/gas/all/cofftag.s
-7642a824a63aa87c0f0c07ebab2ea9ba gas/testsuite/gas/all/comment.s
-b693149b9cb9c53162d7d2eddc0ee4e8 gas/testsuite/gas/all/cond.d
-a0744db73ab7d631e72a1107ffb1c1d8 gas/testsuite/gas/all/cond.s
-7ec8ad8becdaf04c09bde661a8ae427e gas/testsuite/gas/all/diff1.s
-a3ed4c57221d0e6ae68721825604f04d gas/testsuite/gas/all/float.s
-d5cade1146f240feeeb31fa7cee691f3 gas/testsuite/gas/all/gas.exp
-ff0067e6fc03e40d69f6d4a3df69c315 gas/testsuite/gas/all/itbl
-ae3b5706bcb2b5451fa0da52c419c576 gas/testsuite/gas/all/itbl-test.c
-0a1bc24fd58a8e10476fda0bd5b649ed gas/testsuite/gas/all/itbl.s
-b61a6aca515ae31b7be7abda0a152bbc gas/testsuite/gas/all/p1480.s
-c9637636fc150630e2d44c82892f2551 gas/testsuite/gas/all/p2425.s
-856ac38b9fe37e63d8173f9299961115 gas/testsuite/gas/all/struct.d
-0b2dc0f909d4928a8de943eade54a345 gas/testsuite/gas/all/struct.s
-8ba076a868d6d446a4ab1462add54fd3 gas/testsuite/gas/all/x930509.s
-1a8de6cbd6b3c02a2a483c8cd6ce42a7 gas/testsuite/gas/arc/branch.d
-19197f29a6d87e3e78495e7a47ebf496 gas/testsuite/gas/arc/adc.d
-1b06ceb2288c093be970d894568fa5da gas/testsuite/gas/arc/adc.s
-65084e57125295318062997e920c19af gas/testsuite/gas/arc/add.d
-75e6baa15e0d53599edfd7ec770375b6 gas/testsuite/gas/arc/add.s
-4927747f607ee7be7bf50e7fd6ef02ee gas/testsuite/gas/arc/alias.d
-54f01e033f0d248759b8fc6fb71a06db gas/testsuite/gas/arc/alias.s
-b8a7885db402fc70652f0410a5820d50 gas/testsuite/gas/arc/and.d
-b8fce093a488f7b1c2e6418f7c31c9e3 gas/testsuite/gas/arc/and.s
-4bafbcb8f67131a387ad56e5b1bcfac1 gas/testsuite/gas/arc/arc.exp
-aa32ccad03a6d294726c0e58e6d2250a gas/testsuite/gas/arc/asl.d
-af955c8cf38c553fa4221383c64b6b13 gas/testsuite/gas/arc/asl.s
-56384c65539866b6e7fc0a0a05eabce8 gas/testsuite/gas/arc/asr.d
-9887c6e68d8176e71d75b9d91604e914 gas/testsuite/gas/arc/asr.s
-5288b51666fdc9bb0c65a07671c3c9fd gas/testsuite/gas/arc/b.d
-78b81ebb3355a47d5c478e1e56444ffb gas/testsuite/gas/arc/b.s
-402522bfb20c4387e1faba27224186ac gas/testsuite/gas/arc/bic.d
-ab22388e1552b8926d7b8960f9a6fe20 gas/testsuite/gas/arc/bic.s
-ec7abac24fa3c402b31f624a3ff9de77 gas/testsuite/gas/arc/bl.d
-e2c237cc25d1cfc82c9285818858e329 gas/testsuite/gas/arc/bl.s
-8432db29eb95c38348bb4216a28f43a4 gas/testsuite/gas/arc/branch.s
-1165c7d246f9e1a548af4c5b7f4e5f60 gas/testsuite/gas/arc/brk.d
-872c85cca67988958ef95591b4fecb7d gas/testsuite/gas/arc/brk.s
-acf1eca3b061941ff367bba7654f8a2e gas/testsuite/gas/arc/extb.d
-0ab2d9abcadcf93d9b6dd8eb0962d7ab gas/testsuite/gas/arc/extb.s
-cb8963efc4b0412d0cf5f6d2d4412d14 gas/testsuite/gas/arc/extw.d
-e66a84df62389472e90d215276e87384 gas/testsuite/gas/arc/extw.s
-53684f8cb4cc475d5632ffa22555b6c5 gas/testsuite/gas/arc/flag.d
-2b6e2dd0335ebc45bb694de8cc2f4c6b gas/testsuite/gas/arc/flag.s
-dd35c9020fa1c43318beec05e9d63dd6 gas/testsuite/gas/arc/insn3.d
-c9f07db5b59a1a725b1cb520c7dfffe2 gas/testsuite/gas/arc/insn3.s
-6623a00a22962dfb1afcb24a2f8920bb gas/testsuite/gas/arc/j.d
-7ee6358f55317d08d08f864238c78515 gas/testsuite/gas/arc/j.s
-431696fbe85080394483a455208af19c gas/testsuite/gas/arc/jl.d
-4a56cf56903f8e4c25dd7865dd1a92df gas/testsuite/gas/arc/jl.s
-59910ad05ca1dd842920f3ca9f4b491d gas/testsuite/gas/arc/ld.d
-d5a8532516e863d33880e4a649f8ebc9 gas/testsuite/gas/arc/ld.s
-4d7ba9b754c7afdba41dfec82239bc30 gas/testsuite/gas/arc/ld2.d
-28379656fb4f5c37963ed6991c582ed6 gas/testsuite/gas/arc/ld2.s
-af5c07a06b5ab10049b70efc03fe4310 gas/testsuite/gas/arc/lp.d
-657d876ad61daec2d6de3a4269bfeaf3 gas/testsuite/gas/arc/lp.s
-0b801348feff41c1625f9c681af122c5 gas/testsuite/gas/arc/lsr.d
-a9c2ebcafcfc68a8bb7014172813ee2c gas/testsuite/gas/arc/lsr.s
-ae005c091f26b4ceac5b19e8c13d8835 gas/testsuite/gas/arc/math.d
-c632e7e9e19d65e75557a5e42d513905 gas/testsuite/gas/arc/math.s
-42cc6922491da263d6ab87fca2593794 gas/testsuite/gas/arc/mov.d
-5bbe3186d21f23263b4a3743cfb1c0e5 gas/testsuite/gas/arc/mov.s
-ff9e23ba171eb9fab4ae4bf71ca1964f gas/testsuite/gas/arc/nop.d
-4b5a9a087212c040ef94e7cfc7c64113 gas/testsuite/gas/arc/nop.s
-c596ab98be90e4fcdb2e92e35e3ca66f gas/testsuite/gas/arc/or.d
-a9984178263c3d2fdc55aa82c0850038 gas/testsuite/gas/arc/or.s
-152d55e75d6f7079d969d4582e98e32c gas/testsuite/gas/arc/rlc.d
-7186c231f11739791f407f6ad9bfdfcd gas/testsuite/gas/arc/rlc.s
-f67f42d8077195a9ed9da2cd3ff93889 gas/testsuite/gas/arc/ror.d
-0f4fa90aec1e6518392567bb89d7420f gas/testsuite/gas/arc/ror.s
-cce2b1054c09a0d526bc548ea162dc6c gas/testsuite/gas/arc/rrc.d
-2a33859e8d1450a314390aee1eed985c gas/testsuite/gas/arc/rrc.s
-7d0b42fa66729b4df6f26c5daa47c6ee gas/testsuite/gas/arc/sbc.d
-6d4e549168ccb7340e4c87d6c3ca9f06 gas/testsuite/gas/arc/sbc.s
-b0ae0aa5baea6246ee417710ad641653 gas/testsuite/gas/arc/sexb.d
-e3e0516272a27d4fdde6e78fcfc0beae gas/testsuite/gas/arc/sexb.s
-753f0757cceff8d9fba7da206607b32c gas/testsuite/gas/arc/sexw.d
-505c87905fe1b3b19909f4ff658880e8 gas/testsuite/gas/arc/sexw.s
-04e291c6c4227ad3ea068b33bcca2bee gas/testsuite/gas/arc/sleep.d
-4b2c68f86079ddc3738d423a7d9286ec gas/testsuite/gas/arc/sleep.s
-dd35c9020fa1c43318beec05e9d63dd6 gas/testsuite/gas/arc/sshift.d
-285d03daf381a393d3099a8ff7ad1b92 gas/testsuite/gas/arc/sshift.s
-15bcea7e5243fe6d08107039eff96e76 gas/testsuite/gas/arc/st.d
-0416aa9321cbdc9a725bc459453431cc gas/testsuite/gas/arc/st.s
-e913933835012629d5199008027146f4 gas/testsuite/gas/arc/sub.d
-beca3fc3b72a58cc4eadd2369592d87f gas/testsuite/gas/arc/sub.s
-f2c956a2c8d124cf6924a93a3b18641d gas/testsuite/gas/arc/swi.d
-458a27c1ed4ecb3d834bc928af3a1969 gas/testsuite/gas/arc/swi.s
-ca575363e502545e2e5d2a6ab64c6af8 gas/testsuite/gas/arc/warn.exp
-8bdd04be09313ff33dba220b78d26d8c gas/testsuite/gas/arc/warn.s
-9020b43e63291859faac20e7065787d9 gas/testsuite/gas/arc/xor.d
-c1a790a7f1cc4e88b2235b226fae54b2 gas/testsuite/gas/arc/xor.s
-218ceddbec7e4efdd63a6186a62fded9 gas/testsuite/gas/template
-abe5158404494a7b0e74db43f784559a gas/testsuite/gas/alpha/fp.d
-eb3ec5f424ad44c0e52fe488caa1402e gas/testsuite/gas/alpha/fp.exp
-820ca91b26e95c2ba803e8b9a0ebe76e gas/testsuite/gas/alpha/fp.s
-a1361a5b37b54c593cbef99cd85f28a9 gas/testsuite/gas/arm/arch4t.s
-e805204a7256772ed77713643ce06a08 gas/testsuite/gas/arm/adrl.d
-fea3d814c57f0d641ed3e2b30e3fe9da gas/testsuite/gas/arm/adrl.s
-035a15045a9f50492d980d3fac9ef34a gas/testsuite/gas/arm/arm7dm.s
-84352b71a635ec348f8370891582ca03 gas/testsuite/gas/arm/arm.exp
-217d22388024d3ceb3c80613491f9d13 gas/testsuite/gas/arm/arm3.s
-1eb3fbffc325dda43f0f98e8237840f7 gas/testsuite/gas/arm/arm6.s
-3b3aa7939f5a6f1b53dc96025bbcfdd4 gas/testsuite/gas/arm/el_segundo.d
-b5f8101bcc3f3cc7e46c4e89b30a29f7 gas/testsuite/gas/arm/arm7t.d
-acdb01f03b31a3f8cae20ac99db63be5 gas/testsuite/gas/arm/arm7t.s
-d594c5bb1795675960702c68c17df8aa gas/testsuite/gas/arm/copro.s
-9b3a93b21d21ee58a49c1d0039a555de gas/testsuite/gas/arm/el_segundo.s
-6f3f35f3d1f4b051fddba9412542e087 gas/testsuite/gas/arm/float.s
-2134e910175749a301307015d968cbb1 gas/testsuite/gas/arm/immed.s
-796fb4584e45dbc501f5e85b09182a2d gas/testsuite/gas/arm/inst.d
-d451b7fb925e026001176d59277d67c5 gas/testsuite/gas/arm/inst.s
-b2fd7458f8e0d2cf15a9249f9fedac4d gas/testsuite/gas/arm/le-fpconst.d
-01ece05c7a31cb680e04d26a1f7dc281 gas/testsuite/gas/arm/le-fpconst.s
-3613c7ccdfda8492ba8127d99020ff2b gas/testsuite/gas/arm/pic.d
-528c3bb56cc6ae2b19157b75203221c6 gas/testsuite/gas/arm/pic.s
-55a46d871a3fe4417039c85265d830a1 gas/testsuite/gas/arm/thumb.s
-f91305f065fc92ec4cfd34af31197ff7 gas/testsuite/gas/arm/xscale.d
-814449ccde23eaac315e913ef381756a gas/testsuite/gas/arm/xscale.s
-109b1e2f911068bd6a3280a90061ea8b gas/testsuite/gas/cris/binop-extx.d
-eed41e12ba1edecaaa2d3c3789332377 gas/testsuite/gas/cris/addi.d
-04449730390af545ba20b42dccd5fe09 gas/testsuite/gas/cris/addi.s
-29cdb8544456ec0d40f1b406db48473a gas/testsuite/gas/cris/binop-cmpmove.d
-d2a858f83be22b61d2299cc2e5e10a0b gas/testsuite/gas/cris/binop-cmpmovx.d
-e31ad643fe65589cbbdb034e1e5f197f gas/testsuite/gas/cris/binop-segref.s
-7f94279e488ea079e8a1568dbeb09974 gas/testsuite/gas/cris/binop.d
-0128aaa3d875adaf235960d488417afc gas/testsuite/gas/cris/binop.s
-a3e707e09eac0416e1d96af6bc910dd0 gas/testsuite/gas/cris/bork.d
-67a42ca84f31bc333b785695009221fa gas/testsuite/gas/cris/bork.s
-d77f50b1d3d668af993e9fb633b9f401 gas/testsuite/gas/cris/branch-warn-1.s
-eb037cb8821e59f91c4e4b787f56cd78 gas/testsuite/gas/cris/branch-warn-2.s
-6cf3f5c1d500bd9b0a1de2c3416dffe0 gas/testsuite/gas/cris/branch-warn-3.s
-6475601840a6f889ee9eccdc91023bf9 gas/testsuite/gas/cris/branch.d
-caff7842b5ef92ca805daf6782c1e414 gas/testsuite/gas/cris/branch.s
-4e520a3efff1f37f0de6df15c0a34c10 gas/testsuite/gas/cris/break.d
-700be97c0689c4196f0da1842abcc231 gas/testsuite/gas/cris/break.s
-2aaf552ea3b069446af5a6a18ad2c7e0 gas/testsuite/gas/cris/brokw-1.d
-82d4b8908cfe41325173b31ad92d03fc gas/testsuite/gas/cris/brokw-1.s
-a13ae25cf3ec8d458caa16dc63c2b828 gas/testsuite/gas/cris/brokw-2.d
-99acc6281a586d428c2e81f5a3e76020 gas/testsuite/gas/cris/brokw-2.s
-9fb7e1ca811a353db12fab28f6d7a630 gas/testsuite/gas/cris/brokw-3.d
-b5ea3631270db99bda62649c3d96f03d gas/testsuite/gas/cris/brokw-3.s
-c4d5e7abbcaf212d987111b7c1e2040e gas/testsuite/gas/cris/bwtest-err-1.s
-d80841d50a9461e6e7533c43e44dd4d1 gas/testsuite/gas/cris/ccr.d
-fb52bd22addaa45d2f47fc8fc5bcc63f gas/testsuite/gas/cris/ccr.s
-0d39e0e05353afc3532e275b909fdbeb gas/testsuite/gas/cris/clear.d
-0c2ea11d1047cf554432ca3d4e9d03cc gas/testsuite/gas/cris/continue.d
-c87164ab4042aef14e7b7bed37d62d46 gas/testsuite/gas/cris/continue.s
-944c9803d087eee985d9f792da7c29be gas/testsuite/gas/cris/cris.exp
-ab7c0afd8d2cd448c3b0576af049256b gas/testsuite/gas/cris/diffexp-ovwr.d
-a5073cd621e46c9b6b371425b3a8059a gas/testsuite/gas/cris/diffexp-ovwr.s
-ee8c39803ebc83959f29ae641da137a0 gas/testsuite/gas/cris/fragtest.d
-8de93219134f7b607edec27266d57c27 gas/testsuite/gas/cris/fragtest.s
-37ac7adec86ed5a8fd0ef39db9a607f4 gas/testsuite/gas/cris/jump-type.d
-1763110b16f52ce71e7111a466e55493 gas/testsuite/gas/cris/labfloat.d
-2788020656f9952ba2200bfe6ed8b5f6 gas/testsuite/gas/cris/labfloat.s
-63b363c29b7f111d3522135b27a5baac gas/testsuite/gas/cris/macroat.d
-f2ac553ad97357a22204205c1c2c64d5 gas/testsuite/gas/cris/macroat.s
-7972fbd01b55832d66e9afe5b21a44d9 gas/testsuite/gas/cris/movem-to-reg.d
-06f511d9c5dfbbd6ec70e6b5fd954735 gas/testsuite/gas/cris/nosep.d
-fc504e0b22b646ea6326e679962d2062 gas/testsuite/gas/cris/nosep.s
-e87fda2ed120152aed5ef5927f48514d gas/testsuite/gas/cris/oneop-type.d
-2cdc382a264a948b2290859f9b0722f2 gas/testsuite/gas/cris/operand-err-1.s
-a9f5ed5476ee8f09aeb8676f6751b01f gas/testsuite/gas/cris/prefix.d
-ce78d7541cba3153c036b973d48c2233 gas/testsuite/gas/cris/prefix.s
-cef8a89ceeecbfe4d7566ccbfdd4a357 gas/testsuite/gas/cris/pushpop-byte-sreg.d
-1e8ffe5e395258d271453a7d182b125e gas/testsuite/gas/cris/pushpop-dcr1-sreg.d
-d97ab94343d60cc33c71b43c1fb5cabd gas/testsuite/gas/cris/pushpop-dword-sreg.d
-b27c33ec812e847a147601591093ccf0 gas/testsuite/gas/cris/pushpop-word-sreg.d
-38ca765cb65923ca112c69a5b347c04e gas/testsuite/gas/cris/pushpop.d
-5f57132a6921dd590b853ab871c16039 gas/testsuite/gas/cris/pushpop.s
-e4c7c0f31b9839d5536151310f544ee3 gas/testsuite/gas/cris/quick-s6.d
-7fa1053d2735accfe207c6bd9dc2c699 gas/testsuite/gas/cris/quick-u5.d
-0c9904527686c1ab40e8b41ebd824baf gas/testsuite/gas/cris/quick-u6.d
-078d655cbc167283db8ba953c3148a1b gas/testsuite/gas/cris/quick.s
-b76b6dbc2e3d8675977eba8b2c80fdeb gas/testsuite/gas/cris/range-err-1.s
-fb6ff1ccf6bc8984d311335bb1c65de2 gas/testsuite/gas/cris/range-err-2.s
-1aa963985a948084e7f57bc64ae394dc gas/testsuite/gas/cris/rd-regprefix-1.d
-483b2b941bdac034989505d636c292bb gas/testsuite/gas/cris/rd-regprefix-1.s
-ec4ae60abafccecdf76cfa6db8973836 gas/testsuite/gas/cris/rd-regprefix-1b.d
-ba3a8b1d41f12777d99bb3b0f0242e4a gas/testsuite/gas/cris/reg-to-mem.d
-c36b1354d494fa3d14e0f53cbdad14d1 gas/testsuite/gas/cris/regprefix-err-1.s
-daf514b146b6d788c0d44a44c78fb084 gas/testsuite/gas/cris/regreg.d
-57d564c932d2ec3a002e095c03b43755 gas/testsuite/gas/cris/regreg.s
-9b3f927669d4ef8900289aa5ec407517 gas/testsuite/gas/cris/return.d
-618b1c16f597a8c927d63668befe360c gas/testsuite/gas/cris/return.s
-e0ccfd23d8757d8497bf9428ced9a2be gas/testsuite/gas/cris/scc.d
-dfef1f180533d93400114eb0106e4047 gas/testsuite/gas/cris/scc.s
-a4016c7d0fb8462d531bedf3d29db82a gas/testsuite/gas/cris/sep-err-1.s
-0d8192d5d6fc2d3cf97a212a82d0ce7e gas/testsuite/gas/cris/sep-err-2.s
-faaccaed133c943daeb19f14b890ac70 gas/testsuite/gas/cris/sep-err-3.s
-62e83deae56f617278b9cc972afe4da2 gas/testsuite/gas/cris/separator.d
-e929807163f06ba801c4d3d98eef047a gas/testsuite/gas/cris/separator.s
-7dd5458e20d0ecb5c21cff9fa0a9f46a gas/testsuite/gas/cris/shexpr-1.d
-f6aed27cb988eadba85e4dacfcef485e gas/testsuite/gas/cris/shexpr-1.s
-47b5ed349286a89189e5915c07a7d945 gas/testsuite/gas/cris/sreg-to-x.d
-36ee6b68e98b7cbd9ffd498673bb83a8 gas/testsuite/gas/cris/string-1.d
-ba96569c4c3a69683f9eda2f2e804ac9 gas/testsuite/gas/cris/string-1.s
-5649d5e6ddaf6789f15e1b8cb1979b1c gas/testsuite/gas/cris/string-2.d
-6ddd84549c2ae105a7ffc9e339d1e37e gas/testsuite/gas/cris/string-2.s
-80c15d753b5f84e6b2dc8834e2f8906e gas/testsuite/gas/cris/test.d
-b7120a4705aa9a380d545c5a796c3159 gas/testsuite/gas/cris/unimplemented.d
-962270c17acff6001a62ba57047c826a gas/testsuite/gas/cris/unimplemented.s
-ddd6a1784dc2c7a34042c0a5fb3c1800 gas/testsuite/gas/cris/unop-mem.d
-ec2af75e8927ac1b38d610129de5962b gas/testsuite/gas/cris/unop.s
-75063b64ce4c7ce0ccb58e946587b1fb gas/testsuite/gas/cris/us-err-1.s
-57983a53289a7da6c1ed399d7fe0a3e9 gas/testsuite/gas/cris/us-err-2.s
-89b77f3261be6a0b6f7c2117ec573b35 gas/testsuite/gas/cris/us-err-3.s
-a325d1070d73f0a40781fd4c0feb8055 gas/testsuite/gas/cris/x-to-byte-sreg.d
-5f4256191fa514d404b9b31f0b48d973 gas/testsuite/gas/cris/x-to-dcr1-sreg.d
-183314b6dae188dbb4ed4b3dfbfbd02a gas/testsuite/gas/cris/x-to-dword-sreg.d
-be4438db4d0c5d5a732331453a4f54b3 gas/testsuite/gas/cris/x-to-word-sreg.d
-c1a784e8e7fc1cb601b7c63df2e1320f gas/testsuite/gas/d10v/d10.exp
-0004da131d3e5488db3b4b89bd259250 gas/testsuite/gas/d10v/inst.d
-bbe173f89d3ad611d31b7cf43d88291c gas/testsuite/gas/d10v/inst.s
-d7768075c27bdbdff4a1347c6b1746d0 gas/testsuite/gas/d30v/bittest.d
-a15d68d40c502f8fb891fb71e6a331b4 gas/testsuite/gas/d30v/align.d
-8ab5843e51782cc8150825c0aed13da9 gas/testsuite/gas/d30v/align.s
-8a9471a2ce14a0c94c7af09fd8cf6f7c gas/testsuite/gas/d30v/array.d
-afb9ee8fc39b6c6a3b5a607f0958dd2b gas/testsuite/gas/d30v/array.s
-36ccce5414200c372215e06d70d6aad0 gas/testsuite/gas/d30v/bittest.l
-4b9689db23a80dfeeb4e6217aaf0a8ad gas/testsuite/gas/d30v/bittest.s
-df0c590e221f5dd7900a1c128978ecea gas/testsuite/gas/d30v/d30.exp
-5c2ba5b08a8d87ddfc1a70cf2d7c90aa gas/testsuite/gas/d30v/guard-debug.d
-739c4467a3344e1787f7b4bdbf919705 gas/testsuite/gas/d30v/guard-debug.s
-24a691232054571885f6c30112e51658 gas/testsuite/gas/d30v/guard.d
-59254ab788d218d38c2c0d6e71251e76 gas/testsuite/gas/d30v/guard.s
-748040da85ada059191e19f00e2488f6 gas/testsuite/gas/d30v/inst.d
-39cdbdd6bd65bb5930b303daa6d76dcd gas/testsuite/gas/d30v/inst.s
-02e401be332104808af7c8300005fe7d gas/testsuite/gas/d30v/label-debug.d
-7f982990c748276d508b09332cdae4f6 gas/testsuite/gas/d30v/label-debug.s
-c483a48ce51ab77c8dee11cfab64b50a gas/testsuite/gas/d30v/label.d
-7f982990c748276d508b09332cdae4f6 gas/testsuite/gas/d30v/label.s
-26406f9a3cbcac3df375ce96f2bf6d60 gas/testsuite/gas/d30v/mul.d
-d16bd2d8de2333b4d7ee533c7fbdb1c4 gas/testsuite/gas/d30v/mul.s
-3f5d45bfe5794cd78197dab5eba2c4e6 gas/testsuite/gas/d30v/opt.d
-cd67e61c7ea236940d9b65c880a564b4 gas/testsuite/gas/d30v/opt.s
-7ede5044d404df6c8e7e4397218784b3 gas/testsuite/gas/d30v/reloc.d
-2ed511260d2382d512257ccd75e39887 gas/testsuite/gas/d30v/reloc.s
-d06a422e5cd491385a39700e8488ebe2 gas/testsuite/gas/d30v/serial.l
-26005134b177b676ea077b771aa246cc gas/testsuite/gas/d30v/serial.s
-ecab3756772637d3e43ed51d3afe89dd gas/testsuite/gas/d30v/serial2.l
-4c96fc10e8ae0de631d7681473ac66eb gas/testsuite/gas/d30v/serial2.s
-fbd1fa6f75f8a3d34dd0eb6b9bcfecf2 gas/testsuite/gas/d30v/serial2O.l
-4c96fc10e8ae0de631d7681473ac66eb gas/testsuite/gas/d30v/serial2O.s
-7fc2a4f0d0ed0a1e698ef2e351bacd11 gas/testsuite/gas/d30v/warn_oddreg.l
-04cb44d9a5a4e2791243c475947c1dfa gas/testsuite/gas/d30v/warn_oddreg.s
-3aa51e33fc3c4fb00d9f02ab8b6c1412 gas/testsuite/gas/elf/ehopt0.d
-6d8da292baf24ce6878336c3bed5a1db gas/testsuite/gas/elf/ehopt0.s
-7ddf696baeb3e5954c1d5755625f4f5c gas/testsuite/gas/elf/elf.exp
-2e585cb42734f16db2d5af3c7e3b8ae0 gas/testsuite/gas/elf/section0.d
-94799bbca15898e61e62e52d81f0bcca gas/testsuite/gas/elf/section0.s
-045c78bad26109f03785866dccb0aef6 gas/testsuite/gas/elf/section1.d
-b892afd90c0c8f8d9b5486dcd484d815 gas/testsuite/gas/elf/section1.s
-5c0da9476fde1f1fb1257eb5a7c1864b gas/testsuite/gas/elf/section2.e
-365f7f4f8f6fa73bf0c738244defbb98 gas/testsuite/gas/elf/section2.e-mips
-10cd1b592475b4aa51fad4414503db94 gas/testsuite/gas/elf/section2.l
-5a42c78c814dadc7e4a11cba2a795f97 gas/testsuite/gas/elf/section2.s
-8f760ce7cf5b0bcea1fd0c123134bc4b gas/testsuite/gas/fr30/allinsn.d
-f43f517834a1bcead42dab25e75f41d0 gas/testsuite/gas/fr30/allinsn.exp
-fdf34a19cb21c9273e472a9bb4c9e97f gas/testsuite/gas/fr30/allinsn.s
-4a1055775cc266d1a0458ce050e653d3 gas/testsuite/gas/fr30/fr30.exp
-2924c535df55b6a32889011860a29689 gas/testsuite/gas/h8300/addsub.s
-8b119bf28b7ba30807a8850b9edf96d3 gas/testsuite/gas/h8300/addsubh.s
-5b8c73d8de33afa02ff707f67065a1ef gas/testsuite/gas/h8300/addsubs.s
-d86b31775e7398f8bc4d446d9d0a017b gas/testsuite/gas/h8300/bitops1.s
-15fd0f35907c986489fa36bddebbb526 gas/testsuite/gas/h8300/bitops1h.s
-584a7cd8ad886afe1f0d2f9b5d817467 gas/testsuite/gas/h8300/bitops1s.s
-30ff0841f2e26ebb8e15aa636a64e4a5 gas/testsuite/gas/h8300/bitops2.s
-a741bf520d8175248d8c363dd660cad9 gas/testsuite/gas/h8300/bitops2h.s
-2e137c2f7cf12903edc7dd00bfe6d409 gas/testsuite/gas/h8300/bitops2s.s
-3d15e82abb0f85bdfacdbb653e083999 gas/testsuite/gas/h8300/bitops3.s
-82edeaa989ae932805db0608f8cc235a gas/testsuite/gas/h8300/bitops3h.s
-f5395cd9806896db584e3fbbdb548389 gas/testsuite/gas/h8300/bitops3s.s
-6249a5e4419949642c98aaa14f3d8b10 gas/testsuite/gas/h8300/bitops4.s
-5a394a0dbef8a7f14e4294b4dcfed8a5 gas/testsuite/gas/h8300/bitops4h.s
-791083648e92754b6c62f3201681ece1 gas/testsuite/gas/h8300/bitops4s.s
-23aecc0c8af29a4bf18f97a9607677d5 gas/testsuite/gas/h8300/branch.s
-1f02561f75f4c45679ba42b0492cc58a gas/testsuite/gas/h8300/branchh.s
-e251ed292c39572dbd1364f73d5fd32e gas/testsuite/gas/h8300/branchs.s
-f0e5262ac4229fe320614df5a40f35e9 gas/testsuite/gas/h8300/cbranch.s
-30d75e5d8c2ef426fe42a377456bda0b gas/testsuite/gas/h8300/cbranchh.s
-5fdbcffb87056d813eafd925d9c763f0 gas/testsuite/gas/h8300/cbranchs.s
-80cc8a6d96ee17417ea03077199ad4d7 gas/testsuite/gas/h8300/cmpsi2.s
-3be6267a929c5b26e8f4d69491d0877a gas/testsuite/gas/h8300/compare.s
-b2030d679f34f4563b5a00cbe2c1d072 gas/testsuite/gas/h8300/compareh.s
-94eec517c2a5cefb40f7bcc8a338a83a gas/testsuite/gas/h8300/compares.s
-437e6b6cef5f904dd70a700cd486f7ea gas/testsuite/gas/h8300/decimal.s
-9b32251ca7b543949470558b507ca6b3 gas/testsuite/gas/h8300/decimalh.s
-56fe63d196d46b2f8dc1c4bfca0c351d gas/testsuite/gas/h8300/decimals.s
-0c35be5ae497429ff49aa3076805fda3 gas/testsuite/gas/h8300/divmul.s
-d37984dfb136ed1c465a17ac6ff8cbb4 gas/testsuite/gas/h8300/divmulh.s
-d37984dfb136ed1c465a17ac6ff8cbb4 gas/testsuite/gas/h8300/divmuls.s
-f813008dac0b658d469085e795844664 gas/testsuite/gas/h8300/extendh.s
-4d7497fb959f22fd9f7b666d4c61eee6 gas/testsuite/gas/h8300/extends.s
-75a67be04365505ad29c72fef5a9ffe9 gas/testsuite/gas/h8300/ffxx1.d
-fac5432bff2a42ebe3ace2a5431b0028 gas/testsuite/gas/h8300/ffxx1.s
-67fb823dadfe9cc61cc4c40717871318 gas/testsuite/gas/h8300/h8300.exp
-d068dc8b49ea5e3a2841052399d04411 gas/testsuite/gas/h8300/incdec.s
-57ef072e39a9e088908da70b650fe6b7 gas/testsuite/gas/h8300/incdech.s
-68127cbf4156b232462ded46fb1eeb96 gas/testsuite/gas/h8300/incdecs.s
-ad670f4be1807bfa3361ea5dfdc0658d gas/testsuite/gas/h8300/logical.s
-4baf511d4fbb91925e6de834c9b49ea5 gas/testsuite/gas/h8300/logicalh.s
-c4d9cba61beedae407c0c1260e6e1d5d gas/testsuite/gas/h8300/logicals.s
-3c56ddac8216a69a609103570d7b3e49 gas/testsuite/gas/h8300/macs.s
-fb0d77314633b62d40a4a054311960e8 gas/testsuite/gas/h8300/misc.s
-0474a81ccc5b5408fc54aa171faafb52 gas/testsuite/gas/h8300/misch.s
-11bb474016acda38cc0db95df94487a3 gas/testsuite/gas/h8300/miscs.s
-9193c97fad2ede164c0c90d605b70f46 gas/testsuite/gas/h8300/mov32bug.s
-1883f564d24d685c8dc63486f070f4a6 gas/testsuite/gas/h8300/movb.s
-fcd326aa9537340e99b1100508c3aa5b gas/testsuite/gas/h8300/movbh.s
-7145f97672f9645e3de195a7fdf55a1b gas/testsuite/gas/h8300/movbs.s
-d8c9bc7371b9b1d46a2eefb32d90d58d gas/testsuite/gas/h8300/movlh.s
-0e5f5a058fd24a750a53bfa817b326a5 gas/testsuite/gas/h8300/movls.s
-3674b05426b7d9c23e487af7bb8465e2 gas/testsuite/gas/h8300/movw.s
-75e9728e4f42fb7fbedbba7ed96b11db gas/testsuite/gas/h8300/movwh.s
-b0068c567a3f9efc6b3b31cf95a5a318 gas/testsuite/gas/h8300/movws.s
-911d1f05cbac2099a9f3d2c76df2d656 gas/testsuite/gas/h8300/multiples.s
-4393180d58ab1ed9d690f02ff183b6f6 gas/testsuite/gas/h8300/pushpop.s
-4d82e273acc364dfaddc59b3a13ee22e gas/testsuite/gas/h8300/pushpoph.s
-8ff1c8b35100699d39d44f67e19a5176 gas/testsuite/gas/h8300/pushpops.s
-6cc6731a0e070e666e164d9163629113 gas/testsuite/gas/h8300/rotsh.s
-7bc113956c8ca4ddcd42503e4bd530e3 gas/testsuite/gas/h8300/rotshh.s
-811af24ecd9436d020bfaf84413f5847 gas/testsuite/gas/h8300/rotshs.s
-3f42a581ab454d64c32db9aee33ef424 gas/testsuite/gas/hppa/basic/basic.exp
-f0fc0667db6fc80b90e168e77d21a710 gas/testsuite/gas/hppa/basic/add.s
-98ee4fb8ed790b202a1c065b7e0b997b gas/testsuite/gas/hppa/basic/add2.s
-57ad58f96f1a781f50c99315319025b2 gas/testsuite/gas/hppa/basic/addi.s
-d9c4ae7672d35624f16301c6c3d2d6e3 gas/testsuite/gas/hppa/basic/branch.s
-018bafaddc464bf5344056a4a6ba62aa gas/testsuite/gas/hppa/basic/branch2.s
-2744044afb6af0ffe892e71482c7e83b gas/testsuite/gas/hppa/basic/comclr.s
-30e98c333c6c3c41f4230609d617d4bd gas/testsuite/gas/hppa/basic/copr.s
-18c064b287abc57be5f66793ce0a4ed8 gas/testsuite/gas/hppa/basic/coprmem.s
-593e94c43830b50ccf4ccf7aefdabc9a gas/testsuite/gas/hppa/basic/dcor.s
-54b1bb4ce869350a6860eea7ef011576 gas/testsuite/gas/hppa/basic/dcor2.s
-7f9d07824ecdd65dce64fdbb8ab88668 gas/testsuite/gas/hppa/basic/deposit.s
-9e7936d6dca987e90acb029a0794e50c gas/testsuite/gas/hppa/basic/deposit2.s
-4179bc45da0c3f5c674c51bce4f3ef42 gas/testsuite/gas/hppa/basic/deposit3.s
-5532f754b3ee74d823c916f73352f531 gas/testsuite/gas/hppa/basic/ds.s
-ebef581b3abd2e0a860dc45c474dcc77 gas/testsuite/gas/hppa/basic/extract.s
-f0c6b56da1f75e189baf27d8c1f535fe gas/testsuite/gas/hppa/basic/extract2.s
-51d8fb411be8712bd0c7ce811ad6dc38 gas/testsuite/gas/hppa/basic/extract3.s
-a982fc398cedf2e44201d59012ee7066 gas/testsuite/gas/hppa/basic/fmem.s
-a0babc25ea6d4372cb5eccc0ae3f4825 gas/testsuite/gas/hppa/basic/fmemLRbug.s
-91548514b195f47807497ea510c61712 gas/testsuite/gas/hppa/basic/fp_comp.s
-9847e0fce8c6da72b7f980b441367739 gas/testsuite/gas/hppa/basic/fp_comp2.s
-698e8f34a3b345696ad42ea0fe3a42dc gas/testsuite/gas/hppa/basic/fp_conv.s
-50c67d6e1a3d6914794a948be62b14f6 gas/testsuite/gas/hppa/basic/fp_fcmp.s
-67b6a72f5e598098f02c322b08238380 gas/testsuite/gas/hppa/basic/fp_misc.s
-bf748287a3393071018df9ef711ff79e gas/testsuite/gas/hppa/basic/imem.s
-382400fc1867cc374e7a9a97620ba203 gas/testsuite/gas/hppa/basic/immed.s
-3dcb29aed920c5fca9f33ae76fa7bf5e gas/testsuite/gas/hppa/basic/logical.s
-40808c7e14c9dd94905f168f5bd28a9d gas/testsuite/gas/hppa/basic/media.s
-3f9890f5f05691d773c5252cca7c3bdb gas/testsuite/gas/hppa/basic/perf.s
-5cc775342d33290ccc79a2c3392ba59c gas/testsuite/gas/hppa/basic/purge.s
-585389c4c1113b467f309f8b53564ddf gas/testsuite/gas/hppa/basic/purge2.s
-bc0a3320065bbb6f8c7226807fa35e7d gas/testsuite/gas/hppa/basic/sh1add.s
-7682c249ad6ac5dce5a7a0d5c70b9759 gas/testsuite/gas/hppa/basic/sh2add.s
-3976fa98bed24429b469cc702b660e93 gas/testsuite/gas/hppa/basic/sh3add.s
-69cfdc26fc07d25504dfb30978448340 gas/testsuite/gas/hppa/basic/shift.s
-f588468f60d1393a578d3147a655f303 gas/testsuite/gas/hppa/basic/shift2.s
-d35888a201d29276d5f468576ce69678 gas/testsuite/gas/hppa/basic/shift3.s
-b3128437c366866da97f401491e4854c gas/testsuite/gas/hppa/basic/shladd.s
-8ed6a738a1fd2383dbe99d68c8cf59e4 gas/testsuite/gas/hppa/basic/shladd2.s
-66715cf6565b3eabaabafd99e8b2dab6 gas/testsuite/gas/hppa/basic/special.s
-1af275b55a5680b0a941bfdf1e5496e9 gas/testsuite/gas/hppa/basic/spop.s
-cbe82b7200c01fac6ef8ad8c4c90e4a0 gas/testsuite/gas/hppa/basic/sub.s
-7f6527cc71e690f05a0d73c733c1b14b gas/testsuite/gas/hppa/basic/sub2.s
-c2fd7d2c7fc3f77c944b5af56ebbcb7d gas/testsuite/gas/hppa/basic/subi.s
-857c66689b29c2902448ccfc8b55d78a gas/testsuite/gas/hppa/basic/system.s
-9dec6c8e5b94b75cb0e0fb27c16ce4ee gas/testsuite/gas/hppa/basic/system2.s
-05e8ccf6f72f4a0efbdf0f852a206023 gas/testsuite/gas/hppa/basic/unit.s
-1ed85cf259a78d3d86ea435e74dfcbe6 gas/testsuite/gas/hppa/basic/unit2.s
-03008cde62428d4ff2464bef8cb8bcd2 gas/testsuite/gas/hppa/basic/weird.s
-73cbb56b2c330327d9c06ea89af0cd91 gas/testsuite/gas/hppa/README
-d93edd3b974fa05de350f6104c63af74 gas/testsuite/gas/hppa/parse/align1.s
-6a7df2ab8d1491f8f64f60fb0a359558 gas/testsuite/gas/hppa/parse/align2.s
-85d6e969f063c0bee9565d096c43657e gas/testsuite/gas/hppa/parse/appbug.s
-72ae2fe9c7ff74b0267402ab93c59282 gas/testsuite/gas/hppa/parse/badfmpyadd.s
-b0dd08d05ad154fa1797fbb7b65f1b3a gas/testsuite/gas/hppa/parse/block1.s
-44d0164ab1f3f2f8201ca4cac02f0a91 gas/testsuite/gas/hppa/parse/block2.s
-7012f9c767f18688e051c168e218464b gas/testsuite/gas/hppa/parse/calldatabug.s
-d26fcb5186e8ffda4892557ecf9d836a gas/testsuite/gas/hppa/parse/callinfobug.s
-36132d401bbf31234a71915b94762a26 gas/testsuite/gas/hppa/parse/defbug.s
-8355f3baa7c8bf6dfdde12165f166988 gas/testsuite/gas/hppa/parse/entrybug.s
-a8c2940c51c368a14265009963ce4a7d gas/testsuite/gas/hppa/parse/exportbug.s
-0aa9ab25448da72ed059168f45ee4e11 gas/testsuite/gas/hppa/parse/exprbug.s
-464c7378f55821348860da76fd77ed2e gas/testsuite/gas/hppa/parse/fixup7bug.s
-69d79811f23cb30bd2c536063a29c137 gas/testsuite/gas/hppa/parse/global.s
-eae1949a6363097a7e2ef5bd260b9aa7 gas/testsuite/gas/hppa/parse/labelbug.s
-a7ec38bf59489eb49f4bd3ce752f7cb4 gas/testsuite/gas/hppa/parse/linesepbug.s
-adf3dd32e97d184fa3a923e977ac0f20 gas/testsuite/gas/hppa/parse/lselbug.s
-e09d99b9bb0cc52546de922bf02a3a13 gas/testsuite/gas/hppa/parse/nosubspace.s
-8161b5f30367ba86f14e168e2fbf025a gas/testsuite/gas/hppa/parse/parse.exp
-030b7a7332dca245ae8a65a00ab8e169 gas/testsuite/gas/hppa/parse/procbug.s
-ba4a443e4362a957c9eda52f33e9ed56 gas/testsuite/gas/hppa/parse/regpopbug.s
-b19738063af645b6f2231ee644131542 gas/testsuite/gas/hppa/parse/spacebug.s
-16d00a249972a7d82fd5b443a6c006ea gas/testsuite/gas/hppa/parse/ssbug.s
-6e77c97c02695c15f9f54b9b531a5e2b gas/testsuite/gas/hppa/parse/stdreg.s
-e4c3228c9e3a74eb9b2170caafd9cf4c gas/testsuite/gas/hppa/parse/stringer.s
-b91fabc2587cd34b7543fe16032d9c3e gas/testsuite/gas/hppa/parse/undefbug.s
-ad0e0513effd832ce4787671ac4c5eac gas/testsuite/gas/hppa/parse/versionbug.s
-7f9b2353d22448012a9435f7b80ccf1a gas/testsuite/gas/hppa/parse/xmpyubug.s
-629e685800d946a73fba78f4f9e2a342 gas/testsuite/gas/hppa/reloc/applybug.s
-e7eccf3a36e653b9312fc78bb40a5022 gas/testsuite/gas/hppa/reloc/blebug.s
-9c8150c0635455986ba2e99432e230ad gas/testsuite/gas/hppa/reloc/blebug2.s
-cfe88051f0bd644932bc22814216e804 gas/testsuite/gas/hppa/reloc/blebug3.s
-2e83d05979fd4ec0c399182ad7513423 gas/testsuite/gas/hppa/reloc/exitbug.s
-a7ab875345b2ba9a0c1e6aee0c0b23cb gas/testsuite/gas/hppa/reloc/fixupbug.s
-84f724d5d6335f9367de5e493847499c gas/testsuite/gas/hppa/reloc/funcrelocbug.s
-8fd8e8d6557a090221c4b9382f712183 gas/testsuite/gas/hppa/reloc/labelopbug.s
-79c490df3cf5ac395769cfd1378b598b gas/testsuite/gas/hppa/reloc/longcall.s
-6fedcfa10d24c76dde19990cbdb53c1a gas/testsuite/gas/hppa/reloc/picreloc.s
-a30d0372d62d0a448e374ed80897e3bf gas/testsuite/gas/hppa/reloc/plabelbug.s
-f2f905140c0955e2a88e451fad681f42 gas/testsuite/gas/hppa/reloc/r_no_reloc.s
-5042b71ae3f83b270fa17a2b7f27fc92 gas/testsuite/gas/hppa/reloc/reduce.s
-bc728b6253b6c770472ed22f5def04e0 gas/testsuite/gas/hppa/reloc/reduce2.s
-45668f4718492900a833f2d3ebe47e57 gas/testsuite/gas/hppa/reloc/reduce3.s
-5fce2ee045a8f221d7d4a0470786d00b gas/testsuite/gas/hppa/reloc/reloc.exp
-2813e26c00aa991fb8cc3f67b56ae4f6 gas/testsuite/gas/hppa/reloc/roundmode.s
-c690211a1ccb9ebe1cda17e17b5d1cf4 gas/testsuite/gas/hppa/reloc/selectorbug.s
-c0e4f0dd244fb83332f776ca09756e5b gas/testsuite/gas/hppa/unsorted/align3.s
-a7b6914341e97c943a5b931b5ff724a1 gas/testsuite/gas/hppa/unsorted/align4.s
-d5ecda3dffcd60591d33b1718f89d02c gas/testsuite/gas/hppa/unsorted/brlenbug.s
-0854f5ede3fb810256df5394b5d17a6f gas/testsuite/gas/hppa/unsorted/common.s
-563abc929a52d7539bb83a990fbfcb65 gas/testsuite/gas/hppa/unsorted/fragbug.s
-3c295194b6d3754be9b7b7da67fddcb4 gas/testsuite/gas/hppa/unsorted/globalbug.s
-af9e915b6ea1a8a691914d94bb230546 gas/testsuite/gas/hppa/unsorted/importbug.s
-741867661d59451b7d71d392fc0d7206 gas/testsuite/gas/hppa/unsorted/labeldiffs.s
-0aa46fc17784b72b21d387564dddde36 gas/testsuite/gas/hppa/unsorted/locallabel.s
-f8705df6b564ae8bc51ff8255048afd1 gas/testsuite/gas/hppa/unsorted/ss_align.s
-da24d502a74952b6c5895ffc62d541d1 gas/testsuite/gas/hppa/unsorted/unsorted.exp
-dabaf1f82986e409d20127484c8388e3 gas/testsuite/gas/i386/general.l
-4f13cd819c9c8bdc0e25c3e1ea7e0be1 gas/testsuite/gas/i386/amd.d
-c89704ccdc6abd42145480c444772394 gas/testsuite/gas/i386/amd.s
-481a82666e24dd35712ddbe1953070fc gas/testsuite/gas/i386/float.l
-0df7ab956e3209428d665890983ef957 gas/testsuite/gas/i386/float.s
-c6f32143c1a338a7e3c688cadb2a27b3 gas/testsuite/gas/i386/general.s
-f55987a25b2d327d6cce6d34c2f1f3e4 gas/testsuite/gas/i386/i386.exp
-54bf1dea9d3fa662fd489d8ba6123a50 gas/testsuite/gas/i386/intel.d
-19173fe8ed78eaf92af5f4e7219aed51 gas/testsuite/gas/i386/intel.s
-734d748810614b19b03ac10dfde2b1f4 gas/testsuite/gas/i386/intelpic.d
-10af8323b3fdfb2580629d4bbb96414f gas/testsuite/gas/i386/intelpic.s
-92c2460d4bc6a3d856918e182ca720b3 gas/testsuite/gas/i386/inval.l
-ebaaadf5e7218736c6523e8c024e4a63 gas/testsuite/gas/i386/inval.s
-e6d4cc21cd6fd3850a2527bd9a0602df gas/testsuite/gas/i386/jump.d
-a5ac8a9636b7ab8c6a732203d0914133 gas/testsuite/gas/i386/jump.s
-73d7f5fe54695a0d1baff6361ee951af gas/testsuite/gas/i386/jump16.d
-72fb343c916713f2da32dd3ebcb13cd7 gas/testsuite/gas/i386/jump16.s
-c4bd4a9c5d709255664ff19de89fe4ce gas/testsuite/gas/i386/katmai.d
-3e427af40c4ab651d69de595d3f996f7 gas/testsuite/gas/i386/katmai.s
-d566afc7ce85d649e11306e09c745945 gas/testsuite/gas/i386/modrm.l
-1d1696a1b6db5c16aa2463cdd8b6a045 gas/testsuite/gas/i386/modrm.s
-a9f88835bfba484b001209393305e9ab gas/testsuite/gas/i386/naked.d
-b4fe60a42e7f416e8bcfc4c911652c79 gas/testsuite/gas/i386/naked.s
-91f562b065b071024b4ad049253cc00b gas/testsuite/gas/i386/opcode.d
-7c8d765ebc016ae5b7ce8941230d47ba gas/testsuite/gas/i386/opcode.s
-d1ab72522efa161dc5bb0d5d34c6cbe3 gas/testsuite/gas/i386/prefix.d
-18eb6094372a8ea6dcedecc52d4bbafb gas/testsuite/gas/i386/prefix.s
-6d542d1a416f943f08f7081f0ea15d6e gas/testsuite/gas/i386/relax.d
-1b8a63c63fa1cb4fd0069ad74110d3a8 gas/testsuite/gas/i386/relax.s
-73bd114ee58f8613e40dcc68dc44ecab gas/testsuite/gas/i386/reloc.d
-785e2743dba0137e0235c3a40f7ed72b gas/testsuite/gas/i386/reloc.s
-2d08693d201a298eb883722a268fb281 gas/testsuite/gas/i386/sse2.d
-266867e323b3248cd8cdad201276821d gas/testsuite/gas/i386/sse2.s
-108a9548a770fe8d5f7e2f92c9418545 gas/testsuite/gas/i386/ssemmx2.d
-e73e0f652b697100e02db9b419b06cd0 gas/testsuite/gas/i386/ssemmx2.s
-04f524b94eb61aaf58b37c180ab1e373 gas/testsuite/gas/i386/white.l
-305b7d730a90ea5ac8fb330a3bf13fec gas/testsuite/gas/i386/white.s
-62171adf925034f2497f65c4381bda77 gas/testsuite/gas/i386/x86_64.d
-167651a8472e8240a82c364ac9738761 gas/testsuite/gas/i386/x86_64.s
-dbbf38f460db18779a5e3b6d064eb499 gas/testsuite/gas/ia64/dv-branch.d
-ec058dd65d1af91fe84f41b725857462 gas/testsuite/gas/ia64/dv-branch.s
-956561267da937b1be0fada7c6ea25c7 gas/testsuite/gas/ia64/dv-entry-err.l
-e635d21d0f94975c7df306096506d41b gas/testsuite/gas/ia64/dv-entry-err.s
-d2c80d56ca498f06aaed101e323f583f gas/testsuite/gas/ia64/dv-imply.d
-a4c835f4336ab0d7bea5c1251fe02f94 gas/testsuite/gas/ia64/dv-imply.s
-091538d6530e8a161937745d99426d7a gas/testsuite/gas/ia64/dv-mutex-err.l
-91d93a728f474aa95c998e07a884224c gas/testsuite/gas/ia64/dv-mutex-err.s
-8126eb7a7fcdd728745e456cb576a1e3 gas/testsuite/gas/ia64/dv-mutex.d
-91cb93a568ee81bf4a049bfcad3be8f4 gas/testsuite/gas/ia64/dv-mutex.s
-faad91ad280ed985504df18b5df67462 gas/testsuite/gas/ia64/dv-raw-err.l
-47f0ecc4a6d44c41bceba1bf96951931 gas/testsuite/gas/ia64/dv-raw-err.s
-042d6a6ba6e6fab95e540ea3f117cadd gas/testsuite/gas/ia64/dv-safe.d
-c06a2d45e380eacc79be2946865839ea gas/testsuite/gas/ia64/dv-safe.s
-b08507477c737fd99ecbcdaf985f7864 gas/testsuite/gas/ia64/dv-srlz.d
-fcb5ba635bb6c1bf11217572aed8c194 gas/testsuite/gas/ia64/dv-srlz.s
-47a1c9e8c8d646cb1276022156938aef gas/testsuite/gas/ia64/dv-war-err.l
-96d62a881175a15f9d0eb1464592de82 gas/testsuite/gas/ia64/dv-war-err.s
-c29583516e19e2b432fc8be35ccfd38c gas/testsuite/gas/ia64/dv-waw-err.l
-5120b50924c7c72ed617ecf58bb839c4 gas/testsuite/gas/ia64/dv-waw-err.s
-4702e0589d4ecfea81d623654726c865 gas/testsuite/gas/ia64/fixup-dump.pl
-3340310e879de7f94d7008a34cd902e3 gas/testsuite/gas/ia64/ia64.exp
-e6ff55117be31d2e2338afa8ba6743e1 gas/testsuite/gas/ia64/opc-a-err.l
-c10f248c93a66cf00810e181bcf47859 gas/testsuite/gas/ia64/opc-a-err.s
-d01bcbbb33e4aaddf588cf96bb2818c3 gas/testsuite/gas/ia64/opc-a.d
-7a4b4b8b83d010b15200291b7428d900 gas/testsuite/gas/ia64/opc-a.pl
-25a4e13b65c5c563854c68b27850ec27 gas/testsuite/gas/ia64/opc-a.s
-6f669176b63ccb7041cff7a0c43bdd2a gas/testsuite/gas/ia64/opc-b.d
-a6e1c6d4094099abc90c4eddf392cf90 gas/testsuite/gas/ia64/opc-b.pl
-0a0dcd4d0f92863aacd3374f10cf89d4 gas/testsuite/gas/ia64/opc-b.s
-87d4c9bce119a46f50cd7873ecdbb579 gas/testsuite/gas/ia64/opc-f.d
-e44f587f12c4e939d44570b92b5ca82b gas/testsuite/gas/ia64/opc-f.pl
-7de8eef520f311b774af7bdea416eee9 gas/testsuite/gas/ia64/opc-f.s
-08b1ba95e8fd11a0f7f8c1f3705e0be2 gas/testsuite/gas/ia64/opc-i.d
-6df89ea375d396efe8cd150381479c12 gas/testsuite/gas/ia64/opc-i.pl
-2574b1a2f2579fa030a50947773fa6c0 gas/testsuite/gas/ia64/opc-i.s
-95ae13460bb1d9601c083697cac119e9 gas/testsuite/gas/ia64/opc-m.d
-85878e0564576b3b7bafb3eb82660f7d gas/testsuite/gas/ia64/opc-m.pl
-df0663aeae5336e53e1d06b3e39f6bb2 gas/testsuite/gas/ia64/opc-m.s
-42205102976e466e5bbffcdd4d3cfcb7 gas/testsuite/gas/ia64/opc-x.d
-da315d802d151e76d7d335473c729f38 gas/testsuite/gas/ia64/opc-x.s
-cd152fa44d0a9ca4200fbec848788915 gas/testsuite/gas/ia64/regs.d
-e6ce0da8b25a4cd6c5b44068eb4278cd gas/testsuite/gas/ia64/regs.pl
-b6c72b3bbf42fd15250f957014a139c9 gas/testsuite/gas/ia64/regs.s
-c8161d7293bcc7692937ee4d5b16fc60 gas/testsuite/gas/ieee-fp/x930509a.exp
-b0509b0492fd2fc8448b011ae03a41b8 gas/testsuite/gas/ieee-fp/x930509a.s
-649f145a8122db7f91f18b85740849a5 gas/testsuite/gas/m32r/allinsn.d
-239bb6ea0e35bbe2e8a5939edab2a2cb gas/testsuite/gas/m32r/allinsn.exp
-5f9b6e2b9934e8a02576ba496d16ab72 gas/testsuite/gas/m32r/allinsn.s
-74ef82c499b9dbc10b25373e6823c276 gas/testsuite/gas/m32r/error.exp
-d71cb8f6eee3bbdd0ccecaaca513831a gas/testsuite/gas/m32r/fslot.d
-da6bcd9a061b6fdd7a4ee5b2aec6811a gas/testsuite/gas/m32r/fslot.s
-da48ccf2513f4723fced3d98ee902eee gas/testsuite/gas/m32r/fslotx.d
-c81e23eb3020f45236c4ef7e98a14008 gas/testsuite/gas/m32r/fslotx.s
-13b1a745fafe89b83fc828fa73bc0ea5 gas/testsuite/gas/m32r/high-1.d
-0c257c8a3667fa667e99bb3cb9aff5a7 gas/testsuite/gas/m32r/high-1.s
-873accfff909b6aac6b9a2e8cf961856 gas/testsuite/gas/m32r/interfere.s
-d8115906f69c19b93a1fa6deba5b2d70 gas/testsuite/gas/m32r/m32r.exp
-6b48ad39eeb0006e1fc1c9010cfbc21d gas/testsuite/gas/m32r/m32rx.d
-778e305ed7747652af13150f315591a9 gas/testsuite/gas/m32r/m32rx.exp
-3e3e8b05f1651dbc0692a8a20fc804ba gas/testsuite/gas/m32r/m32rx.s
-c0b5f95ee4eec971ea74dc81435baec8 gas/testsuite/gas/m32r/outofrange.s
-32f8410f7bdb6db49efc7016f230360f gas/testsuite/gas/m32r/relax-1.d
-ee56272ade0ca1ed891d0bcdc81d1173 gas/testsuite/gas/m32r/relax-1.s
-ffadebffc2057e150da0f56aa0f6d511 gas/testsuite/gas/m32r/relax-2.d
-dfd4ad2ea1d8b29e222e48a671c648e1 gas/testsuite/gas/m32r/relax-2.s
-debc3c1322cf7602d46e1657a4249b10 gas/testsuite/gas/m32r/uppercase.d
-3ad7dc32e323605aaf71cc84e39717df gas/testsuite/gas/m32r/uppercase.s
-d21d472754ca0f699e8faf8c95175ec1 gas/testsuite/gas/m32r/wrongsize.s
-9187362c4020cfb7b9df8782637bb65d gas/testsuite/gas/m68hc11/all_insns.d
-f17b7c3ca3c536ffa8e6df6dc2f439f1 gas/testsuite/gas/m68hc11/all.exp
-57022ccbd6cef54a3a8ece7847d6569f gas/testsuite/gas/m68hc11/all_insns.s
-7bd42f694ffddccc2e193372d35e2541 gas/testsuite/gas/m68hc11/insns-dwarf2.d
-afeb3f5fe5cf302f22c11a8a73c76fe6 gas/testsuite/gas/m68hc11/insns.d
-b40598fa9d279a12c73b904dc7f640cd gas/testsuite/gas/m68hc11/insns.s
-d77d9f6b2a194247a6d436103c2aa5a6 gas/testsuite/gas/m68hc11/lbranch-dwarf2.d
-2ce8f16d1b2813d639637246318a2fa5 gas/testsuite/gas/m68hc11/lbranch.d
-270514d96ae94f63ea38a4eb9fccd095 gas/testsuite/gas/m68hc11/lbranch.s
-7e3463ce5e0c47ca8bdaaf6f3d443f8d gas/testsuite/gas/m68hc11/malis-include.s
-41ba77d190f160fb60f0392b97e0d453 gas/testsuite/gas/m68hc11/malis.d
-a469d5986f2366e13cba507b0314fdfd gas/testsuite/gas/m68hc11/malis.s
-89d1a83096ae0248028459092e1518ca gas/testsuite/gas/m68hc11/opers12-dwarf2.d
-9931e7658c6388e1ad91fb3bb0f38a38 gas/testsuite/gas/m68hc11/opers12.d
-bfd8edd9e0edf8fb9cd5ea3ebf070461 gas/testsuite/gas/m68hc11/opers12.s
-d36654135443b0740d6b2c78b03ad44b gas/testsuite/gas/m68k/bitfield.d
-2a34f43b42955f46a42618a50182de68 gas/testsuite/gas/m68k/all.exp
-fa19c98907bd173f6de4c396ef9acd45 gas/testsuite/gas/m68k/bitfield.s
-1c229d52fdc1160c9dd9f74b19c1ec69 gas/testsuite/gas/m68k/cas.d
-20e0445e36d8d9f35c6022fa7118a3da gas/testsuite/gas/m68k/cas.s
-96de03f7fc5967e5d267ae957ac508cf gas/testsuite/gas/m68k/disperr.s
-26dfd242ac765008271e85e25d9d8446 gas/testsuite/gas/m68k/fmoveml.d
-205a85d6482891f58292e065222b78fa gas/testsuite/gas/m68k/fmoveml.s
-b14e11a2793fb32f7d471e31e4ecf7b9 gas/testsuite/gas/m68k/link.d
-ea9ee18230b981ada48e2b69bb566220 gas/testsuite/gas/m68k/link.s
-85e6de04e2d6138d3b0e1e3e932fc884 gas/testsuite/gas/m68k/op68000.d
-d72997199e7c0cfb9dae24c9bc0347fd gas/testsuite/gas/m68k/operands.d
-d5012d936b1b45db947e4a29a883fc9d gas/testsuite/gas/m68k/operands.s
-b334f15354ebeffb3acba502cc1dae67 gas/testsuite/gas/m68k/p2410.s
-ce5152b0da290f444d58c6ef03d48e02 gas/testsuite/gas/m68k/p2663.s
-9f97c8240a44cb8d55e355b3577f7a7d gas/testsuite/gas/m68k/pcrel.d
-3bc8cba59ef27f67c6c6e2a67717db04 gas/testsuite/gas/m68k/pcrel.s
-c1fce4f35335083fbf7d4538c5a7230f gas/testsuite/gas/m68k/pic1.s
-6ebe1f8291de253ee6ce0e469b3e03aa gas/testsuite/gas/m68k/t2.d
-ba9a3e851cb31d41e5a33c44dc3ebd13 gas/testsuite/gas/m68k/t2.s
-3a162ab2de5525fc4745144a511922c9 gas/testsuite/gas/m68k-coff/p2389a.s
-4117edd076cf599f92777cbfea5d59ba gas/testsuite/gas/m68k-coff/gas.exp
-45f1ecda71b05960409560f553228a2d gas/testsuite/gas/m68k-coff/p2389.s
-29f7789ff1bca9100fda6a1276c73f70 gas/testsuite/gas/m68k-coff/p2430a.s
-2c65e9837c0fa5884e6d7aa8ab7f5b27 gas/testsuite/gas/m68k-coff/p2430.s
-9ae5a3f91535cb9ce86b48698e6096b1 gas/testsuite/gas/m68k-coff/t1.s
-abc6ff7e3825198ada07ac55f4f3ab7e gas/testsuite/gas/m88k/m88k.exp
-dccbd7ad6ededd07df99af498231642d gas/testsuite/gas/m88k/init.d
-ebcd9dfb18999e4f42a3c3d5a53fcb81 gas/testsuite/gas/m88k/init.s
-ef6c6bcefee3f0df10bbe2455661acc7 gas/testsuite/gas/macros/macros.exp
-06148aa2e0046074be6e05308a79b642 gas/testsuite/gas/macros/err.s
-f64593bf9530d575f681a8566ef216c3 gas/testsuite/gas/macros/irp.d
-e284db7fba30dba3218492a95521d6b1 gas/testsuite/gas/macros/irp.s
-369273a5f986fd76ff12a8c638e722a0 gas/testsuite/gas/macros/strings.d
-b320acc9c113dd9d1967db7ee0857e8a gas/testsuite/gas/macros/rept.d
-f5abc6437f073dff4af533a36ea9d280 gas/testsuite/gas/macros/rept.s
-efbeac5d9e630c2251fa42fd98bdfd47 gas/testsuite/gas/macros/semi.d
-e772243ae7fe04097bba952a6d9173bd gas/testsuite/gas/macros/semi.s
-8990b11a483140af060adb1ff48c4cc5 gas/testsuite/gas/macros/strings.s
-df6bcb5dd71cf55583464fc270bc52a1 gas/testsuite/gas/macros/test1.d
-74a3db320fafd23b64c4ab6f48a17246 gas/testsuite/gas/macros/test1.s
-ac43f2633f23586812df9e1a40627d82 gas/testsuite/gas/macros/test2.d
-0fd6102941c5acb1bb8e85a697a2ff23 gas/testsuite/gas/macros/test2.s
-7e8aafe277f842553e1bf935c32fa0e8 gas/testsuite/gas/macros/test3.d
-1dbcc25102396060274f0b3d1268f47c gas/testsuite/gas/macros/test3.s
-0544bcf7466e18eabd7d715e3059b24f gas/testsuite/gas/mcore/allinsn.d
-3f84389ae5d2fa1891f6db5a66746c47 gas/testsuite/gas/mcore/allinsn.exp
-0ee353f47d16db7430f79032977dc1af gas/testsuite/gas/mcore/allinsn.s
-537103a0821acc23c643173a5b44062a gas/testsuite/gas/mips/break20.d
-9c3689024c183a4b37014fce89d4c0eb gas/testsuite/gas/mips/abs.d
-93b8bd81a813fed709cc6b5639d4552a gas/testsuite/gas/mips/abs.s
-74518b2a94faa95c13c4d18516e73a48 gas/testsuite/gas/mips/add.d
-3aee944bf3dc58dded8dd88c0ef7e205 gas/testsuite/gas/mips/add.s
-0cecb6450a4984efe4d9dc93d53bb71d gas/testsuite/gas/mips/and.d
-31c4e7dfe6203941f0a009c79fe9aedb gas/testsuite/gas/mips/and.s
-be2f88510c23cf738e68b90ba8ed4984 gas/testsuite/gas/mips/beq.d
-0c68387d4560df31811cf1a8acbc2958 gas/testsuite/gas/mips/beq.s
-44bb49c8b2818b785c9ad7d0dec45df4 gas/testsuite/gas/mips/bge.d
-eca0c74d018c0e56f81d49381b5f9a6c gas/testsuite/gas/mips/bge.s
-c4faa565be53610538b153932918c3c0 gas/testsuite/gas/mips/bgeu.d
-5a9a9ba8716b251c9b6aea9a9ddfed78 gas/testsuite/gas/mips/bgeu.s
-588722af7a657b70b24f95c275fb2939 gas/testsuite/gas/mips/blt.d
-e28cc53eef33d048effa03ff1d696991 gas/testsuite/gas/mips/blt.s
-c7725bfac64a9dd54047de1f24f4106d gas/testsuite/gas/mips/bltu.d
-08821d562fd1d36b49bb73ec19a1b818 gas/testsuite/gas/mips/bltu.s
-01e30fca71ae643c6acb0e4c3d579f1c gas/testsuite/gas/mips/break20.s
-dd381a80a3175c0433c2778e559e66f7 gas/testsuite/gas/mips/delay.d
-f8386c3523ad68825b3b91215e3ce856 gas/testsuite/gas/mips/delay.s
-6ce614bbef53b14bfaae9d392f25d8e4 gas/testsuite/gas/mips/div-ilocks.d
-e18c56b9627325cb9dfc2fb280a822a1 gas/testsuite/gas/mips/div.d
-6da8cc8418138e9b9ee39ac970e437da gas/testsuite/gas/mips/div.s
-e86f1ff9069e89abc5f1398f3c2537ba gas/testsuite/gas/mips/dli.d
-89a3d7e768db094a0b11ede7bfca879d gas/testsuite/gas/mips/dli.s
-e66f7bf10e7ba1ebcee5676a941b05f8 gas/testsuite/gas/mips/e32-rel2.d
-f578f2ded6569ab283de19d512a81cdb gas/testsuite/gas/mips/e32el-rel2.d
-ed701440c13f9150f1e0048ee440e710 gas/testsuite/gas/mips/elf-rel.d
-eb8cd56831349b3482483c425b481301 gas/testsuite/gas/mips/elf-rel.s
-d2a5c89ee0e80dc9e0bc21bb0e30c063 gas/testsuite/gas/mips/elf-rel2.d
-f7a0c6062a5a8fe838e93a14441b72bc gas/testsuite/gas/mips/elf-rel2.s
-a43901f3dcf1dd5a64c0fd2c23f20f7c gas/testsuite/gas/mips/elf-rel3.d
-bed8097caa447a2852d225642aed4711 gas/testsuite/gas/mips/elf-rel3.s
-6531d00a109f1e0829eda1178a1b886a gas/testsuite/gas/mips/elf_e_flags.c
-6bbeff5a2159c064f18894cc7bd9b7ef gas/testsuite/gas/mips/elf_e_flags.s
-4da3a439698c64eaff4bd734ce0c63c4 gas/testsuite/gas/mips/elf_e_flags1.d
-f5171663be58260ab0f111c9a75b4bca gas/testsuite/gas/mips/elf_e_flags2.d
-9aa4cb59fdd9f8957c758e5bbc51b7d4 gas/testsuite/gas/mips/elf_e_flags3.d
-bd5416cb0030cdc4871db84d061ff5c6 gas/testsuite/gas/mips/elf_e_flags4.d
-50e4a37ba95ae53c1e082de05669c17a gas/testsuite/gas/mips/elfel-rel.d
-4a0d4da918ec2b87774c61b0ac676833 gas/testsuite/gas/mips/elfel-rel2.d
-162ad232f56d6e4900c815de5cdaf845 gas/testsuite/gas/mips/elfel-rel3.d
-2fd3b92c729abb0ea1523ccf238b5025 gas/testsuite/gas/mips/elfel-rel3.s
-b1d5e0f6b6bf2a8981fc5cf052b4a312 gas/testsuite/gas/mips/empic.d
-749cf53f3155f1f122aa79bf71ccacbc gas/testsuite/gas/mips/empic.s
-b47234477b017d8640d0a583d17b44cb gas/testsuite/gas/mips/itbl
-3be9cfa967f82e0b4325b152baf0f23a gas/testsuite/gas/mips/itbl.s
-f749ed9a6daa0dcdfd342b2a75b42e76 gas/testsuite/gas/mips/jal-empic.d
-21fcb5fb003bdd5da6023ae14ddf8136 gas/testsuite/gas/mips/jal-svr4pic.d
-644da8eaec6c846730e2b965a6fb0e39 gas/testsuite/gas/mips/jal-svr4pic.s
-fc6fd411b87de4fe1e4103bdfda61933 gas/testsuite/gas/mips/jal-xgot.d
-027b54f716266d307c80de2320fcf930 gas/testsuite/gas/mips/jal.d
-2a9d8534b670ee90e9212ab2a706cf87 gas/testsuite/gas/mips/jal.s
-5ae53c3943254fdd8222308abb126d38 gas/testsuite/gas/mips/la-empic.d
-e9c696756945df68acdf916951943741 gas/testsuite/gas/mips/la-empic.s
-cbdace2f18d6d189af31230093ca5e3c gas/testsuite/gas/mips/la-svr4pic.d
-68a536a51395e0081f92221ec4cb61e8 gas/testsuite/gas/mips/la-xgot.d
-6705c5e988e1c2a99690af6dda603789 gas/testsuite/gas/mips/la.d
-f479612dc60112156a66a5292a60b205 gas/testsuite/gas/mips/la.s
-0417463ce8f1bbac44b82e9a09f58321 gas/testsuite/gas/mips/lb-empic.d
-b941d24b4746291a2fe361540766913b gas/testsuite/gas/mips/lb-pic.s
-1f66be9b27c8016b848e92a9acd96d5d gas/testsuite/gas/mips/lb-svr4pic.d
-2f5e8e5ef8600d736cb629afe7485528 gas/testsuite/gas/mips/lb-xgot-ilocks.d
-d9289421eb691d41e325b6dd6a18c1ae gas/testsuite/gas/mips/lb-xgot.d
-b9b03ce62abe797e2aef0c820265c772 gas/testsuite/gas/mips/lb.d
-e9d35a3d0cdd51294a858378d467574d gas/testsuite/gas/mips/lb.s
-5120a014142934b9ec8957e5744a3260 gas/testsuite/gas/mips/ld-empic.d
-767e91de3b9f92ce2a668642a2ea2fbe gas/testsuite/gas/mips/ld-ilocks-addr32.d
-7cec7e938337dca05a5f45ca501cae66 gas/testsuite/gas/mips/ld-ilocks.d
-3e1c4e9e2e45a90c704db383f9551b8a gas/testsuite/gas/mips/ld-pic.s
-bdb41be78c421144777ffd68ce9cc12a gas/testsuite/gas/mips/ld-svr4pic.d
-30530f8ed4203f0e6335f1f4af66c0ed gas/testsuite/gas/mips/ld-xgot.d
-49b44c3c7b60070dfbdd9c8b2f3954ea gas/testsuite/gas/mips/ld.d
-8b08d1b9548f0a0ece2cede37c07ec87 gas/testsuite/gas/mips/ld.s
-1969dda2d40fff88c811833cd9ae5f51 gas/testsuite/gas/mips/li.d
-b5df74ea9e934e9bf65cd0bba8eac411 gas/testsuite/gas/mips/li.s
-9dbe0e03a5386d5721ff8fc5391dab33 gas/testsuite/gas/mips/lif-empic.d
-3f909a73d3a8fcdb607e4cc27437766a gas/testsuite/gas/mips/lif-svr4pic.d
-7005137e25034def6329f2f60e0996fd gas/testsuite/gas/mips/lif-xgot.d
-24416fc0940341f36bc025aefc05c604 gas/testsuite/gas/mips/lifloat.d
-a0a03d60c7fdb7e812a9f97325945910 gas/testsuite/gas/mips/lifloat.s
-642de403c1e77713b324b2a165adf6f8 gas/testsuite/gas/mips/lineno.d
-c2034fba9031ad7f3bc0a1128ae6198f gas/testsuite/gas/mips/lineno.s
-b9be97c1aa73ebe314f85ce9890aa75e gas/testsuite/gas/mips/mips.exp
-a9a10694a9e4101fc40f1b5fa6d8d999 gas/testsuite/gas/mips/mips16-e.d
-4785c49a602347865df48551df7121fc gas/testsuite/gas/mips/mips16-e.s
-0d9982c499e97a5f2a40d9b592586193 gas/testsuite/gas/mips/mips16-f.d
-7146e7075936aa4a1434864cf7bf6d4e gas/testsuite/gas/mips/mips16-f.s
-97b3d39a4f90d82f4d405ac12f4d5e72 gas/testsuite/gas/mips/mips16.d
-a686ad0a2da9fe043d717c57b4580d0b gas/testsuite/gas/mips/mips16.s
-15f633e687d2e28e792496ad3cb4dc4c gas/testsuite/gas/mips/mips32.d
-9f4640a5a47e4b1a26a968bc837de82a gas/testsuite/gas/mips/mips32.s
-282d43dd59cb14d4ee715f2131946725 gas/testsuite/gas/mips/mips4.d
-1d91653bf695ab6b54caf527440eb0b2 gas/testsuite/gas/mips/mips4.s
-f35695633c08bea813f1c5da947c770c gas/testsuite/gas/mips/mips4010.d
-cd49d59fb8e9057e6313f5ff630015b9 gas/testsuite/gas/mips/mips4010.s
-3fadda766878ce990b5372bc2d1096d5 gas/testsuite/gas/mips/mips4100.d
-957bb8b99fce311beffd2fe9f3a0eddc gas/testsuite/gas/mips/mips4100.s
-1e6151ac3b3ac15d2556fd22174e2a29 gas/testsuite/gas/mips/mips4650.d
-5c10900661e0928e9a340c3c925418b1 gas/testsuite/gas/mips/mips4650.s
-0b85782f82b845c698359f73731196c5 gas/testsuite/gas/mips/mips64.d
-4929310e699e0e1ac8bc28e44030ebff gas/testsuite/gas/mips/mips64.s
-d54d4a935c5a458282d8b82f7a890831 gas/testsuite/gas/mips/mipsel16-f.d
-56c7733ca5f7e921738b527a5f447964 gas/testsuite/gas/mips/mul-ilocks.d
-0b2e9dc8e1a3454098fd8fb66651fc5a gas/testsuite/gas/mips/mul.d
-03190409f6e3f76c2b66c8ab590d10bf gas/testsuite/gas/mips/mul.s
-24250759fab3a88ba80dc09edff83f78 gas/testsuite/gas/mips/nodelay.d
-c46536d17d5ebad3eee458a52073330b gas/testsuite/gas/mips/rol.d
-5f8fefb5bda995779109a3d959bc071f gas/testsuite/gas/mips/rol.s
-d4c27ce7dd87092e695e4df919a7ef61 gas/testsuite/gas/mips/sb.d
-15410af41b16b3678e11c8c7d4d6d7a7 gas/testsuite/gas/mips/sb.s
-5d3f8be0295dfe3afa394af2d492190b gas/testsuite/gas/mips/sync.d
-ffcef95bbefaf3a59e62285fe39bda76 gas/testsuite/gas/mips/sync.s
-bb8eff4fb1f49d667833720ec1ed1a45 gas/testsuite/gas/mips/telempic.d
-d7d31ccd74befcdad7317366421d5329 gas/testsuite/gas/mips/tempic.d
-7ac6d404e2e9d57ca4cd51e929b836fe gas/testsuite/gas/mips/tmips16-e.d
-f02641e647b4b68646fe54322af84d5f gas/testsuite/gas/mips/tmipsel16-e.d
-a9f05cfa4f3975b1ec93ee3cc56561ec gas/testsuite/gas/mips/trap20.d
-f7d1e998d2057f17dfa22040879794f5 gas/testsuite/gas/mips/trap20.s
-0b9071247431c2b789835f4dc4ec45ec gas/testsuite/gas/mips/trunc.d
-6206de0006f0d3b3552c2c4de6d4d40c gas/testsuite/gas/mips/trunc.s
-e5f5b974d0da7c046bb033afcf60fc48 gas/testsuite/gas/mips/uld.d
-4dfc3d5c85518711401b4a15122c6cea gas/testsuite/gas/mips/uld.s
-ea3815f56ffded46b428ff097414aa19 gas/testsuite/gas/mips/ulh-empic.d
-42668d2b953e17216dad9ff5b51a11b8 gas/testsuite/gas/mips/ulh-pic.s
-5158cd2e3607a2a5db193c8407f2b383 gas/testsuite/gas/mips/ulh-svr4pic.d
-ed27ca0c51a00192b6d32d81a354aa2a gas/testsuite/gas/mips/ulh-xgot.d
-4c374b4e6113d1add0a7b267949a1bf0 gas/testsuite/gas/mips/ulh.d
-d4c1e8e91b66176d0dd73baa903929d9 gas/testsuite/gas/mips/ulh.s
-8a640531f9842fac05e6a906e0cd4e33 gas/testsuite/gas/mips/ulw.d
-ed019962f9d9264d80ac0a3ec29faaf3 gas/testsuite/gas/mips/ulw.s
-ab4867894e361a5bd27a784519eabced gas/testsuite/gas/mips/usd.d
-c4f723634a0f69013515468922c55a04 gas/testsuite/gas/mips/usd.s
-f0fac62ab8f363574dc13b6b5b43ec5d gas/testsuite/gas/mips/ush.d
-fa20601e0c404bd38a90edf5f43077bb gas/testsuite/gas/mips/ush.s
-3c18be69c1508086bc845c86099ddab6 gas/testsuite/gas/mips/usw.d
-59b429c3b2d1ea0daf2377204cbdfdca gas/testsuite/gas/mips/usw.s
-b00b8e50d58ac967e8e84c9dc8df9075 gas/testsuite/gas/mn10200/basic.exp
-c58581edb3ac95b306f040bbc2c16678 gas/testsuite/gas/mn10200/add.s
-b117e36f812c2eb416156d441f26185e gas/testsuite/gas/mn10200/logical.s
-9411b8190fac3aad748696ea30bba5b0 gas/testsuite/gas/mn10200/bcc.s
-efa2232339233fab01e2fe7ca6c2f3cf gas/testsuite/gas/mn10200/bccx.s
-aabf4d8010190b4ebadb4d4dce938282 gas/testsuite/gas/mn10200/bit.s
-3f51363ea969316f726dc5529904888e gas/testsuite/gas/mn10200/cmp.s
-874b6bc0f155eecbaffecb93a5642416 gas/testsuite/gas/mn10200/ext.s
-1ff17a9ade34cc243a67f4e5afb1873e gas/testsuite/gas/mn10200/muldiv.s
-ea8599975d89b01f9aaba3b664947565 gas/testsuite/gas/mn10200/mov1.s
-3386b14210f3cd873dde20c6166162c6 gas/testsuite/gas/mn10200/mov2.s
-a0b70b1cc9ec5e2783428dcc483ee86d gas/testsuite/gas/mn10200/mov3.s
-6e62837e492b9688e29de9625549b402 gas/testsuite/gas/mn10200/mov4.s
-e37e1b13a06659d005a650675dcf3935 gas/testsuite/gas/mn10200/movb.s
-f6ce44141165b449c3cb51ebe486e98e gas/testsuite/gas/mn10200/movbu.s
-32dfde7ae5c5361c03c746481b7aee8d gas/testsuite/gas/mn10200/movx.s
-723c642cba806a6ce6dda8c3881ef233 gas/testsuite/gas/mn10200/other.s
-21b9f1644f5a62fdc603b218708648f3 gas/testsuite/gas/mn10200/shift.s
-7ac2864fac53b6b778c4aba3efb1a2e1 gas/testsuite/gas/mn10200/sub.s
-3c5d635c4e529ba743b2062006ab8a00 gas/testsuite/gas/mn10300/am33_2.s
-02ba050389aba06e510285db97af882b gas/testsuite/gas/mn10300/add.s
-3bb44c38f4fbab75c570123d255c57f8 gas/testsuite/gas/mn10300/am33.s
-dfe221c89fe65738a2360f231c2b6794 gas/testsuite/gas/mn10300/am33_3.s
-593bbef9992d2f23b91f4ea176b28957 gas/testsuite/gas/mn10300/am33_4.s
-62ae8325beee2a8180a39e125355ba2b gas/testsuite/gas/mn10300/am33_5.s
-90dcb58c5eb364963271d465adac73ef gas/testsuite/gas/mn10300/am33_6.s
-ae77079066eabaa0cc3b0db53f95500b gas/testsuite/gas/mn10300/am33_7.s
-631a649907d27d317cee70928c6c27fc gas/testsuite/gas/mn10300/am33_8.s
-04890830259a2f960fa1ef6f2d344ee8 gas/testsuite/gas/mn10300/basic.exp
-9411b8190fac3aad748696ea30bba5b0 gas/testsuite/gas/mn10300/bcc.s
-b15e3790182c7ba25b21a4185f2a55e6 gas/testsuite/gas/mn10300/bit.s
-647a9c89d56b470cb3fef7839a32834d gas/testsuite/gas/mn10300/cmp.s
-3828018d3809076328223d9d3c1e48c5 gas/testsuite/gas/mn10300/ext.s
-f6db4622ff4a88bc9ebf44aec56bc245 gas/testsuite/gas/mn10300/extend.s
-f2b5260884e40bc35f8694403da505f8 gas/testsuite/gas/mn10300/logical.s
-d3d15560536638ff0e38a1cd6bea678a gas/testsuite/gas/mn10300/loop.s
-e554261a6559698fe2722b841dd1b5e3 gas/testsuite/gas/mn10300/mov1.s
-1453d74ea0d60c24e054f9443aa26fe4 gas/testsuite/gas/mn10300/mov2.s
-8d091f8bc50686881c4104f6dc9b6ab7 gas/testsuite/gas/mn10300/mov3.s
-e5df57ebcca23c27b6c2399780e9a146 gas/testsuite/gas/mn10300/mov4.s
-384122880cfa3e6fa4a8b08c350c62a8 gas/testsuite/gas/mn10300/movbu.s
-075a3ba2756f3cf09ac1926492ccf614 gas/testsuite/gas/mn10300/movhu.s
-155d5bd225998f0bf8a65d543230adc5 gas/testsuite/gas/mn10300/movm.s
-aa222b2f903cde208e2be8c3972e3c8a gas/testsuite/gas/mn10300/muldiv.s
-9cbe29313848966be970cdecdc09e7b2 gas/testsuite/gas/mn10300/other.s
-293fa500fcb2e85940176a545801b046 gas/testsuite/gas/mn10300/shift.s
-ed9edfd6a0eea176f6974376bd321b10 gas/testsuite/gas/mn10300/sub.s
-961a51d51720b650cb383a6aa510d4d9 gas/testsuite/gas/mn10300/udf.s
-4b259d611c94c789b73572d5b0863a5b gas/testsuite/gas/mri/comment.d
-5ffc5b9af8cd82e8ff721a39d583a9cb gas/testsuite/gas/mri/char.d
-016f8a629209b7d7313c4a4e3c37c909 gas/testsuite/gas/mri/char.s
-84c565776c727a1f5986b5d8d39ba13e gas/testsuite/gas/mri/comment.s
-aca62962ea755bbc1aaeb56b32c53974 gas/testsuite/gas/mri/common.d
-7b6bfc157de809b518bb8820f293f78c gas/testsuite/gas/mri/common.s
-c3db4a831aaf5f148abfde517fff14f2 gas/testsuite/gas/mri/constants.d
-df9ad2212b59618793c7080d043c14e4 gas/testsuite/gas/mri/constants.s
-2258c0445fb6b2005828c77b96c0520a gas/testsuite/gas/mri/empty.s
-78ea402a49a07c1a325a03a28be37678 gas/testsuite/gas/mri/equ.d
-83843a1d515852848a6fc1054a984792 gas/testsuite/gas/mri/equ.s
-ceec8399c07b39bee0a4ea07eece6d2f gas/testsuite/gas/mri/expr.d
-21255a47a57f7e00246072b10af9b641 gas/testsuite/gas/mri/expr.s
-bc4dc43acfdddf49f994908c7e26abe6 gas/testsuite/gas/mri/float.d
-4f7756364607bd924587f3689b8b16b7 gas/testsuite/gas/mri/float.s
-2e7a0a8ee1508d01e6532c6c6c7b11b1 gas/testsuite/gas/mri/for.d
-70d33f74b91d862f9f9b6c4dd173ce58 gas/testsuite/gas/mri/for.s
-75333d0367e1162e0f31471a7731fbf5 gas/testsuite/gas/mri/if.d
-ba2ce35b0663f91570cc0725695f2f0f gas/testsuite/gas/mri/if.s
-4b03ed946465a72d469e2aeff2ddd6f5 gas/testsuite/gas/mri/immconst.d
-f1f5c0c93c39409b9a82cf956d42e39e gas/testsuite/gas/mri/label.d
-ed17ca77ec65b8492a436ad06a222487 gas/testsuite/gas/mri/label.s
-31e12f9de66d36f631e1883a3f763077 gas/testsuite/gas/mri/moveml.d
-4e57586c117d02856b0a1e2fe1e199cb gas/testsuite/gas/mri/moveml.s
-6f90672446c28d52cef0a7a5ce335254 gas/testsuite/gas/mri/mri.exp
-4f6263a77a91affd2a0cd34b177000bd gas/testsuite/gas/mri/repeat.d
-1684df3330c24639ae41d526858b2a80 gas/testsuite/gas/mri/repeat.s
-67ebccbf76d5002534361af491abfddf gas/testsuite/gas/mri/semi.d
-da1cdabe1af1adb9735d5d609dccca32 gas/testsuite/gas/mri/semi.s
-bf93368342190b86a250e95b9de09d8a gas/testsuite/gas/mri/while.d
-cdd1ad74d4bb0147f32931b83c7383be gas/testsuite/gas/mri/while.s
-f3a7124485548781ba12a81c18199e29 gas/testsuite/gas/pj/ops.d
-308d2177ed3b3b087d977e46c924fc0c gas/testsuite/gas/pj/ops.s
-a6667ed6fc7b116477f95ef897bc5444 gas/testsuite/gas/pj/pj.exp
-96a9890816c6c3314d3862d35fe59f3f gas/testsuite/gas/ppc/astest.d
-5254d1fc440f434a46e97eb96b2735c1 gas/testsuite/gas/ppc/astest.s
-b9b4926634e4c4e6e812b47b38a2f84b gas/testsuite/gas/ppc/astest2.d
-9ae09fa391c3aa343824a7745551b28e gas/testsuite/gas/ppc/astest2.s
-318ca470fd4b138732e4907c229b9bf6 gas/testsuite/gas/ppc/ppc.exp
-d2e3625ca66a7c30b9270f806c67c877 gas/testsuite/gas/ppc/simpshft.d
-0fc9ce29053c855d0a3abe241d93c961 gas/testsuite/gas/ppc/simpshft.s
-f32ff8e646f5d0e0fbc6ecb76c4682e5 gas/testsuite/gas/sh/basic.exp
-83d353a7646413b74d2087aa22fae13b gas/testsuite/gas/sh/err-1.s
-495cac29a4993f28c4782ef285228c38 gas/testsuite/gas/sh/err.exp
-70b8c1e3f6395cf992292993dcbdf601 gas/testsuite/gas/sh/fp.s
-4b815d3da1c2d2bceeb98994c659c492 gas/testsuite/gas/sparc/membar.d
-392efaa6637a8734d3ab35e579615a53 gas/testsuite/gas/sparc/asi.d
-8f35c68aef641d7cc35698d67a32557e gas/testsuite/gas/sparc/asi.s
-521b5671f3aa6bae70f78b5f3d37de1a gas/testsuite/gas/sparc/membar.s
-12b5e618325d4a4bc80cb8766bbfc064 gas/testsuite/gas/sparc/mism-1.s
-706c79f848f389921b20f0f64dde1ecd gas/testsuite/gas/sparc/mismatch.exp
-d85c226fa388a66bd2689ba3efedf5e4 gas/testsuite/gas/sparc/prefetch.d
-0b615422f6c8ad3fe5c42f2a8c7af1e4 gas/testsuite/gas/sparc/prefetch.s
-9c7bc5ce86d96a964c5c7f02d43db0da gas/testsuite/gas/sparc/rdpr.d
-09f5e33dbd927c548c928b9db9f14fe0 gas/testsuite/gas/sparc/rdpr.s
-78517d2fce6c7707fd2f09689ebc3d72 gas/testsuite/gas/sparc/reloc64.d
-7d56aec0e050e09c004a33abd25a9293 gas/testsuite/gas/sparc/reloc64.s
-08afa18cf165a3043a6b92153526c876 gas/testsuite/gas/sparc/set64.d
-1facb5655fe83c44ac900776c563e717 gas/testsuite/gas/sparc/set64.s
-59861c3ea98eff8780189bc79824a7b4 gas/testsuite/gas/sparc/sparc.exp
-3564e46bcf53613a512e32f2633c3d05 gas/testsuite/gas/sparc/splet-2.d
-69817b445f39a0e3cf591de872fa74e5 gas/testsuite/gas/sparc/splet-2.s
-5fa3fb7a059f3fd315df0af21e0c9619 gas/testsuite/gas/sparc/splet.d
-6236b0423a317e0a2340bdb317c54d1e gas/testsuite/gas/sparc/splet.s
-a6b1a41bb26dc70e130bc42ef7133cc7 gas/testsuite/gas/sparc/synth.d
-0e0dead95b89c31c1ed49b21c430bc1a gas/testsuite/gas/sparc/synth.s
-b041cafa83c1f1f131ca949780217e54 gas/testsuite/gas/sparc/synth64.d
-0303005116e0116e28f1dd473ca39f28 gas/testsuite/gas/sparc/synth64.s
-8f196520d2f35fd1890df94723f6aec3 gas/testsuite/gas/sparc/unalign.d
-1eeb1d4db023af72c50e896a4bb90638 gas/testsuite/gas/sparc/unalign.s
-10dd2c15d6932af5f1203d03fbc6dae6 gas/testsuite/gas/sparc/wrpr.d
-d44c4548a463c3e491d6fdaaa0f20177 gas/testsuite/gas/sparc/wrpr.s
-f65f40edb42735b8af3a4baaacd662f5 gas/testsuite/gas/sparc-solaris/addend.exp
-7dd4467acc1dda3c1753ebcbfeeead33 gas/testsuite/gas/sparc-solaris/addend.s
-dd2ab79e6bd90288569274206313966b gas/testsuite/gas/sparc-solaris/gas.exp
-b2d813e248b8ec085ca8d551271274bf gas/testsuite/gas/sparc-solaris/sol-cc.s
-2e927e8072e145441bb882a01e3ac8cd gas/testsuite/gas/sparc-solaris/sol-gcc.s
-54a6b727f437bf7989e266329d0dd875 gas/testsuite/gas/sun4/addend.d
-b648f70387617b14507805caeea0b6d6 gas/testsuite/gas/sun4/addend.exp
-7dd4467acc1dda3c1753ebcbfeeead33 gas/testsuite/gas/sun4/addend.s
-8d19328fb89c3001a897cbf2f4f3b92d gas/testsuite/gas/symver/symver.exp
-f942ca1487fba1e0fa62d14b0f2cca1d gas/testsuite/gas/symver/symver0.d
-7f2d42503901978e4eb5bab37fd01df2 gas/testsuite/gas/symver/symver0.s
-711847708837ed39c80fa62ab704b649 gas/testsuite/gas/symver/symver1.d
-1d6eb4d5a6cbf6ac541ca7d4c561b74f gas/testsuite/gas/symver/symver1.s
-b44c04d7f2b689d60bccae544b854f95 gas/testsuite/gas/symver/symver2.l
-7214f11688ed0284f53c3c060fa973bf gas/testsuite/gas/symver/symver2.s
-d37568e052e76a50c9d4775eede01585 gas/testsuite/gas/symver/symver3.l
-7f58a39bd0e6eda06fa15260adaa1044 gas/testsuite/gas/symver/symver3.s
-aaf2746f913c7c81f487786bd9b99543 gas/testsuite/gas/symver/symver4.l
-ff40f84c77b398ca408422048eb1684e gas/testsuite/gas/symver/symver4.s
-c2401f7310b24ae252e1905a90fbb133 gas/testsuite/gas/symver/symver5.l
-ed56c563fc819e4c50c4160a17f8abae gas/testsuite/gas/symver/symver5.s
-a3a92a55022c0edb85d34af1d1739ee8 gas/testsuite/gas/symver/symver6.l
-73c983230d1435795774501e7247e78c gas/testsuite/gas/symver/symver6.s
-06219e9948de26c5c3c06e783256d8e5 gas/testsuite/gas/tic54x/address.d
-78c05303f9f0cbc1a4610cafd8684961 gas/testsuite/gas/tic54x/address.s
-fb347ccf07d51593edd432f687aa5376 gas/testsuite/gas/tic54x/addrfar.d
-25c170a2e98a7b134c9d90c32965c1b3 gas/testsuite/gas/tic54x/align.d
-59a3b1b5bc5d51e4f20df8ea41128d88 gas/testsuite/gas/tic54x/align.s
-6b7b3e8e956870e9d7ce471e2a1b6ebf gas/testsuite/gas/tic54x/all-opcodes.d
-16b138265d758ee38dbf89a41696f4b4 gas/testsuite/gas/tic54x/all-opcodes.s
-6ed8469e573b882990ad930cd270b1b1 gas/testsuite/gas/tic54x/asg.d
-64c9ec95e386f8e5d0040c26fee7321c gas/testsuite/gas/tic54x/asg.s
-fcd7df0d00621d5b547d92bd23c4ca62 gas/testsuite/gas/tic54x/cons.d
-671f83be79acf4e42032f33d828864ac gas/testsuite/gas/tic54x/cons.s
-2f04f28d19f65600c0958cf168558a6d gas/testsuite/gas/tic54x/consfar.d
-f29bcaee02fc92a68ccfdd32f6999527 gas/testsuite/gas/tic54x/extaddr.d
-7eae8033cffbecce992afdaa9c339ff6 gas/testsuite/gas/tic54x/extaddr.s
-953d25fcac101a1860be2b36bb61ec50 gas/testsuite/gas/tic54x/field.d
-534ff025c4a332a0b3a4811c889d9637 gas/testsuite/gas/tic54x/field.s
-e8334221e9d81711a8120983fc654f4b gas/testsuite/gas/tic54x/in_mlib.asm
-6b81ff294df52cc2ee0cde1d128f3253 gas/testsuite/gas/tic54x/labels.d
-aae9f04acb5f59969bf1f0465d7c78bd gas/testsuite/gas/tic54x/labels.inc
-b745801cf3d0eb59ca1b1a583e26a0b1 gas/testsuite/gas/tic54x/labels.s
-28e2dc705290da3c4d7010494599f100 gas/testsuite/gas/tic54x/loop.d
-4a609e1f44de00f164f48203d5df870b gas/testsuite/gas/tic54x/loop.s
-eb2b6fc38f9bd4793dd7020a05122e3b gas/testsuite/gas/tic54x/lp.d
-2c650e0c313376b80d7a6950039ff3b4 gas/testsuite/gas/tic54x/lp.s
-c8161a6bcb529ab6c94cfa3a3521e429 gas/testsuite/gas/tic54x/macro.d
-d76d2e7a0d946a16279b4eeafcfa0cc7 gas/testsuite/gas/tic54x/macro.s
-09c277ba1f7d69551c473cd20cbb14bd gas/testsuite/gas/tic54x/macro1.s
-ddbfc019917d779c19002992f3929367 gas/testsuite/gas/tic54x/macros.lib
-7ad5a03901cc52759b77b30e51f34875 gas/testsuite/gas/tic54x/math.d
-1ff7d6cd1fb20b8cde42e82ea5e38dfa gas/testsuite/gas/tic54x/math.s
-aa3b0bac4ffdf82c7a4b6121ec3fc560 gas/testsuite/gas/tic54x/opcodes.d
-03c7d9751c849b0f4a04ce24d181e494 gas/testsuite/gas/tic54x/opcodes.s
-d1f6def2d5b9c1a697baaa24128bc192 gas/testsuite/gas/tic54x/sections.d
-4c9b7302923b60d63cd64bee9dd621d5 gas/testsuite/gas/tic54x/sections.s
-41deec8226f138d357d5a06609ff7c1b gas/testsuite/gas/tic54x/set.d
-cdf1f13fafc4d4abd831567cdda40eff gas/testsuite/gas/tic54x/set.s
-cdf7f966b14c2ae2815b55e4b6eaa023 gas/testsuite/gas/tic54x/struct.d
-28bcc7e09d20e59e1ccb70e318f45324 gas/testsuite/gas/tic54x/struct.s
-3a49bc7e30027613e26e13d25b7f5dbd gas/testsuite/gas/tic54x/subsym.d
-a6d4e40952285da31a31a7146766dc04 gas/testsuite/gas/tic54x/subsym.s
-a3547e6b13dd61f04ad639ae18c38bb3 gas/testsuite/gas/tic54x/subsym1.s
-b2df4dd8056e7236407bbc4c60b27b02 gas/testsuite/gas/tic54x/tic54x.exp
-f3ab69523e22267482a9bb7a4ca35543 gas/testsuite/gas/tic80/align.lst
-bed809ed517aeb7c1246209c7f5b0ede gas/testsuite/gas/tic80/add.d
-98eb432f2b3667f4172bc7bf8279fae8 gas/testsuite/gas/tic80/add.lst
-126505861238887b38542c2c007b4f44 gas/testsuite/gas/tic80/add.s
-26a1a236ac7ccef8f9d5ae9f771a1e15 gas/testsuite/gas/tic80/align.d
-e184de59b384a0b61f611f43fd0481db gas/testsuite/gas/tic80/bitnum.d
-0bd85a81ad6b84115fb27616eec5abd5 gas/testsuite/gas/tic80/align.s
-4e8424d297ee11749b57a2dec2bfd7be gas/testsuite/gas/tic80/bitnum.lst
-8670ee2178617d2fab1746489ec22609 gas/testsuite/gas/tic80/bitnum.s
-4d4729704be4f2a668a5b8f589fc6922 gas/testsuite/gas/tic80/ccode.d
-ee5b688ae7df591cadc29f06f26845a0 gas/testsuite/gas/tic80/ccode.lst
-2b9858d4ebadb84b9197d33ccc1422e1 gas/testsuite/gas/tic80/ccode.s
-7a715f4871362014afea0032c8ab1bde gas/testsuite/gas/tic80/cregops.d
-74aaf84be9651b7d468afe9d57016a6d gas/testsuite/gas/tic80/cregops.lst
-ef4ba470d30ac045a040677b704ffc66 gas/testsuite/gas/tic80/cregops.s
-626d4a37405c1c8ebc93a7be21c2a9b0 gas/testsuite/gas/tic80/endmask.d
-46833c7025b93bab36f855a40a5be3ce gas/testsuite/gas/tic80/endmask.lst
-00643dd65f546646666046d4e2cfdef5 gas/testsuite/gas/tic80/endmask.s
-6fa3699cda567401f6236547132b0d20 gas/testsuite/gas/tic80/float.d
-f97907246c6a0d4370a3b08b1f7d6829 gas/testsuite/gas/tic80/float.lst
-e9392428f1929a6f12c8d0c5bfc7d95c gas/testsuite/gas/tic80/float.s
-924d1ef98e49d0d881d7936c76795f26 gas/testsuite/gas/tic80/regops.d
-68f717e98126f6612a5fa278576ffcb1 gas/testsuite/gas/tic80/regops.lst
-16bbb022a6816956f454d4f141d87b8f gas/testsuite/gas/tic80/regops.s
-ff82220cf29c5cd876cb0ba8a495695a gas/testsuite/gas/tic80/regops2.d
-207cc576c6c79969fe4510ae1c0fb1e0 gas/testsuite/gas/tic80/regops2.lst
-0e21bec7cf7231f015d0890f3c60c750 gas/testsuite/gas/tic80/regops2.s
-cab98129d538fef49483e468bea9cab7 gas/testsuite/gas/tic80/regops3.d
-fb72f4fadb5605b36c53f5c798139907 gas/testsuite/gas/tic80/regops3.lst
-dca27d2d5b2888ad207b35cbb5a5c1bf gas/testsuite/gas/tic80/regops3.s
-4a437df1abe33ea3d6b4a744dd1b3c71 gas/testsuite/gas/tic80/regops4.d
-d127941ee0d43b5f508f2e40744df9fc gas/testsuite/gas/tic80/regops4.lst
-610f8fb61cc924958615f15cbd3fb591 gas/testsuite/gas/tic80/regops4.s
-987bf57eb106e1f96eef6b5a8add52c1 gas/testsuite/gas/tic80/relocs1.c
-96d6b8f21498eb373bcd7cf1c0438c0c gas/testsuite/gas/tic80/relocs1.d
-1932c15229e0d07381c8f8cea548fd75 gas/testsuite/gas/tic80/relocs1.lst
-db5aaea7f4cbc104391f2a92ac06f28f gas/testsuite/gas/tic80/relocs1.s
-22e1b37d7fdb2c192a1203a5e71a7fad gas/testsuite/gas/tic80/relocs1b.d
-e53f695a65c5ec81a507b69f66537d65 gas/testsuite/gas/tic80/relocs2.c
-420fdeac1619d019ca440ea87663d870 gas/testsuite/gas/tic80/relocs2.d
-04fecb799cbd9447e058e8d53ed75ff4 gas/testsuite/gas/tic80/relocs2.lst
-5c763a74cae5be60ace2421226e27631 gas/testsuite/gas/tic80/relocs2.s
-2c1dc022a0f215dae6dea890f28798d8 gas/testsuite/gas/tic80/relocs2b.d
-d7d5f18226711cd03767a8e2538cdbef gas/testsuite/gas/tic80/tic80.exp
-ce0fc256b576a00b3292ad52441d079c gas/testsuite/gas/v850/basic.exp
-b3daff1073feeab915c5d25268ab1d71 gas/testsuite/gas/v850/arith.s
-d33db5351243bff28f76ada8284737dc gas/testsuite/gas/v850/branch.s
-fd5263cb3409650f6bb2e9b610eab2d9 gas/testsuite/gas/v850/bit.s
-e3d311e55349338e4876c3711ed91c46 gas/testsuite/gas/v850/compare.s
-986292c2ba21464166aa337ab580a139 gas/testsuite/gas/v850/fepsw.s
-5f8e79e5bec30791f19218a7ad23040d gas/testsuite/gas/v850/hilo.s
-f7d87df456dee97f2d28be5a29afde0a gas/testsuite/gas/v850/hilo2.s
-36254aabdcf9005f2dd8e7fba47de388 gas/testsuite/gas/v850/jumps.s
-ee5a6da54e89a759bccef5da2ce4747e gas/testsuite/gas/v850/logical.s
-79263247214c7d46c383e26aafc74d31 gas/testsuite/gas/v850/mem.s
-2db16d6b7c2aa2cc17e621ac1da852eb gas/testsuite/gas/v850/misc.s
-8c5fd0446e831223f93adebecec8a2b2 gas/testsuite/gas/v850/move.s
-90c3465d11f275837ad5b9cac2dd51c4 gas/testsuite/gas/v850/range.s
-10e8b025bce8af1b59c395fc5799236c gas/testsuite/gas/v850/reloc.s
-9dab247181eb9a6ca08677f2b567cec0 gas/testsuite/gas/vax/quad.exp
-c36a2f8942f73fe7a5550ba90d2ecfd7 gas/testsuite/gas/vax/quad.s
-1e191c0d4f723e71c2f4f44b14cfa942 gas/testsuite/gas/vtable/entry0.d
-bb679f23724eed5be0d4524e7f14005c gas/testsuite/gas/vtable/entry0.s
-0b1998d125aec2d1e508c646ac5da657 gas/testsuite/gas/vtable/entry1.d
-bb679f23724eed5be0d4524e7f14005c gas/testsuite/gas/vtable/entry1.s
-64f7daf21aa03263ec1f75c8b4ebbebe gas/testsuite/gas/vtable/inherit0.d
-a37bd60d99eb2ada7ec2360039dc1b4a gas/testsuite/gas/vtable/inherit0.s
-a90dff346874aeab5a7833b62a12e5db gas/testsuite/gas/vtable/inherit1.l
-fcc7f1b5a640e5714a1bcd9d50df7979 gas/testsuite/gas/vtable/inherit1.s
-1b1f9e422b1d90576fac2ffee6256a9f gas/testsuite/gas/vtable/vtable.exp
-5c08b2b199bcea246a03344173d3f96b gas/testsuite/gasp/assign.asm
-99deacf6e3a96c8e21a453709af6ca01 gas/testsuite/gasp/INC1.H
-a926c95abb0d81a9a764bed20ca06f0c gas/testsuite/gasp/INC2.H
-269356bda8c304ef47bacd331b4fc968 gas/testsuite/gasp/mri/embed.asm
-fd5ca6b2f3c6e59aa7040e532f28600e gas/testsuite/gasp/mri/embed.out
-6b8744910f78aef4b165e287973af04f gas/testsuite/gasp/mri/exists.asm
-ac5385c093c3023ebc8370ef66cf3b41 gas/testsuite/gasp/mri/exists.out
-ceadf5cddc8000502be2f2fbc24cabec gas/testsuite/gasp/mri/irp.asm
-c41e38e1116c0009a93516f09e86f839 gas/testsuite/gasp/mri/irp.out
-728e6db3e88d2ddb22e424fc2e404dae gas/testsuite/gasp/mri/irpc.asm
-c4d925d7fdc60ddafa773c5b7830cf2e gas/testsuite/gasp/mri/irpc.out
-bc9ea91fe33eea9993f7dd5b737cb880 gas/testsuite/gasp/mri/macro.asm
-8bf5e77911c284a34bfdf9c3f34d9e49 gas/testsuite/gasp/mri/macro.out
-7a68842c90401e4b34071449715e0f0e gas/testsuite/gasp/mri/narg.asm
-87693669559588c329af7213cd9c487a gas/testsuite/gasp/mri/narg.out
-d0af25ef7f1c265d961ee9e088cf8276 gas/testsuite/gasp/mri/rept.asm
-e2065f7a89c27a29049327cf8e31b18e gas/testsuite/gasp/mri/rept.out
-563a4800e8b40729415090306bce6554 gas/testsuite/gasp/assign.err
-42447b48e38c0caa7934fe72d48f1724 gas/testsuite/gasp/assign.out
-7e11017965ff9319ca614e437e3b269a gas/testsuite/gasp/condass.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/condass.err
-e7bf1012067a2a9008084234aea5c23c gas/testsuite/gasp/condass.out
-03ec63f9050b6d77982db47bd7216cda gas/testsuite/gasp/crash.asm
-f92c854daee87f8949312ec1faf02864 gas/testsuite/gasp/crash.err
-9f1a1ec87f3fcc35cf3ab8f943ee0f04 gas/testsuite/gasp/crash.out
-70aced41deb34edfe61b2888a0f2d2b4 gas/testsuite/gasp/crash1.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/crash1.err
-a23d7921aa2ba917503b2994e53ddf1a gas/testsuite/gasp/crash1.out
-0a6ae29a56ebe74b4f93dc149949dbe5 gas/testsuite/gasp/crash2.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/crash2.err
-d18e176c99fab5d444ef8ef98ef476c1 gas/testsuite/gasp/crash2.out
-e8e046b711151d3439e06411493b6b67 gas/testsuite/gasp/data.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/data.err
-dd5d6726c6d3ab3b244367d15e5a33a5 gas/testsuite/gasp/data.out
-d3a831ce902a2c7a641807d41bf060b3 gas/testsuite/gasp/exp.asm
-635e19beab5dc8dbda0faae105390da5 gas/testsuite/gasp/exp.err
-3cfa517a87ee6808108dd82d821a9142 gas/testsuite/gasp/exp.out
-d9840554d6f6404180190fb46ecfa609 gas/testsuite/gasp/gasp.exp
-6952d6e84b8eff6f8ad3735049384d9b gas/testsuite/gasp/include.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/include.err
-38f5ce2c3d1abd4c85cbae3381a35d00 gas/testsuite/gasp/include.out
-b336cf59f3381637b0bbc85903836f49 gas/testsuite/gasp/listing.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/listing.err
-d64ca2c01c09d852ee97d0b9e283f427 gas/testsuite/gasp/listing.out
-2cbe9e11582b63f485413fb0c8d4882a gas/testsuite/gasp/macro.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/macro.err
-3aeb89bd83e0cf8b84c7281b5191ba07 gas/testsuite/gasp/macro.out
-8111773c73a99298c21c45704eb6fa11 gas/testsuite/gasp/mdouble.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/mdouble.err
-fbfd85681f676ecec67e21d8aa571bf6 gas/testsuite/gasp/mdouble.out
-a7284cd713fd12560f811939fc784860 gas/testsuite/gasp/pl1.asm
-76cefca44793036ef20556314fdafadd gas/testsuite/gasp/pl1.err
-266d215f1b5b7d6743c3bb75be698654 gas/testsuite/gasp/pl1.out
-b67a3bb2f6c1256c5252c8f3b6e76bfd gas/testsuite/gasp/pl2.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl2.err
-21bd454e41c190fc028359db94f60626 gas/testsuite/gasp/pl2.out
-80cb3c666405f7145b2a385fc6e4dfbd gas/testsuite/gasp/pl3.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl3.err
-089301edb4b459a59d61ffcfe7d709dc gas/testsuite/gasp/pl3.out
-b8410781da6854955ede10668b40acb0 gas/testsuite/gasp/pl4.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl4.err
-4344b2df49ee03937e0e6757e9546441 gas/testsuite/gasp/pl4.out
-f0836880911e25120d0e919a3e3c9a6e gas/testsuite/gasp/pl5.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl5.err
-531bce879bdb6df7858a251b2489548c gas/testsuite/gasp/pl5.out
-214848f5a01f2721b749c0d6d179fc7a gas/testsuite/gasp/pl6.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl6.err
-6c5154a2e0886aa2ed34040e9fe697c4 gas/testsuite/gasp/pl6.out
-ed7dc7cdd7cba3f7d2bfd972654e741b gas/testsuite/gasp/pl7.asm
-76cefca44793036ef20556314fdafadd gas/testsuite/gasp/pl7.err
-2b0bfdec74d0f2d405f6dcaf11e9cb9d gas/testsuite/gasp/pl7.out
-c2ec7a594dd444a867ccb269a255c592 gas/testsuite/gasp/pl8.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl8.err
-a01ab58299b4bbda08c5a55e3152301d gas/testsuite/gasp/pl8.out
-1b8fdb309983468765a0f26231b7db2a gas/testsuite/gasp/pr7583.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pr7583.err
-a29f353fa5f949d2eb12b499baf3bd0c gas/testsuite/gasp/pr7583.out
-f94a30de39715bba6e11b2720e2a7a24 gas/testsuite/gasp/reg.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/reg.err
-129ad1aea55cbd6afe5b5e44c433ee57 gas/testsuite/gasp/reg.out
-6287f41f28e5d0a372bcec00489a1fcc gas/testsuite/gasp/rep.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/rep.err
-0d497169dff397f2e446fe23b5ee981f gas/testsuite/gasp/rep.out
-a91feea67b9afd9c2d123299e917cdb2 gas/testsuite/gasp/repeat.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/repeat.err
-7fe9d715fbf1f3e90c282b69c8a388af gas/testsuite/gasp/repeat.out
-a0420f1482401d14d10ef4d4c8da644f gas/testsuite/gasp/reperr.asm
-76cefca44793036ef20556314fdafadd gas/testsuite/gasp/reperr.err
-f4c30bc7915f5d47168f3b47094c1449 gas/testsuite/gasp/reperr.out
-e042647132f714b19a98c4ab535fcf69 gas/testsuite/gasp/reperr1.asm
-527eea9a7e1feaa36aee5f84c4691465 gas/testsuite/gasp/reperr1.err
-5bde34ef89fa801ac3eaf1c59f7d4763 gas/testsuite/gasp/reperr1.out
-b4b91fe28ecaa31df9618a2a4a9e2a76 gas/testsuite/gasp/reperr2.asm
-443731a66bbfcc1831647071a681f5b1 gas/testsuite/gasp/reperr2.err
-a9f1da65b7f9da6492a84ce6296970fa gas/testsuite/gasp/reperr2.out
-f85e0a8deb6e54c906e2750b42d7cfd2 gas/testsuite/gasp/reperr3.asm
-4eeca830592748b13cde26461bac739b gas/testsuite/gasp/reperr3.err
-2f151098b19ade3dad0cbef222e86a5d gas/testsuite/gasp/reperr3.out
-1b326c95c48895d14dba16c01e763bb0 gas/testsuite/gasp/sdata.asm
-0c62f96d2af905dfa64eb1427a600c11 gas/testsuite/gasp/sdata.err
-657f7bdf02673edba4a055158e9cb587 gas/testsuite/gasp/sdata.out
-6b52ad9f5150dfabecadf59651b01012 gas/testsuite/gasp/sfunc.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/sfunc.err
-3f5c6078bb1164493fd7d975fa78134c gas/testsuite/gasp/sfunc.out
-c928b32a65029c49d6add1539b555a17 gas/testsuite/gasp/t1.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/t1.err
-37921430797b568a3ac395ffdcd1030c gas/testsuite/gasp/t1.out
-94f4985650874fa3f2223be2ca97a494 gas/testsuite/gasp/t2.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/t2.err
-e63f0cf737dcecca010288e940156820 gas/testsuite/gasp/t2.out
-0aa649aaacfcdbf138acd6302e51444b gas/testsuite/gasp/t3.asm
-76cefca44793036ef20556314fdafadd gas/testsuite/gasp/t3.err
-cb8d602227b2b4e0ee0cbc24905b1c92 gas/testsuite/gasp/t3.out
-65f971bbfd23b3e6f4f256550fa6c999 gas/testsuite/gasp/while.asm
-d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/while.err
-a68b47ff34892c8fa97aaf9cc09bc975 gas/testsuite/gasp/while.out
-133e9f8bb4d12ac7e498f0ac5d0246c0 gas/testsuite/lib/doobjcmp
-5725f8e58e03bd6026f3e2721e1db22e gas/testsuite/lib/doboth
-aad4965bf0067bf9fb71acc19f7877d4 gas/testsuite/lib/dostriptest
-bdf5e4dee40167a92f0a45965b0375b7 gas/testsuite/lib/dotest
-af650aab07403b5a05623713b613856f gas/testsuite/lib/dounsreloc
-30764ced5c424e3c2c384059cbe2a227 gas/testsuite/lib/dounssym
-5cbf6643d54a0c593fffc5eb026afd65 gas/testsuite/lib/gas-defs.exp
-d78aaf1191d033531d00fa9888214ee0 gas/testsuite/lib/gas-dg.exp
-499042a4448e4b2d3bd2b2a1b0b5d859 gas/testsuite/lib/run
-c25a2b439faecdbc5a8cd011fb753f1f gettext.m4
-f830d343ce09eb11786979f2ce0bf68d gprof/po/POTFILES.in
-bfb5c178c2404196ab54d7532a61e3d4 gprof/po/Make-in
-ba1bcadd6275dd4ce7f7663645c967ac gprof/po/gprof.pot
-b167dc5dcf583c07feecea0f8003e647 gprof/.gdbinit
-8b210aedaec55d2d7d197fc9fd49e2de gprof/ChangeLog
-d618facc3e8ce8bf3d02ba452e1be6ab gprof/MAINTAINERS
-deef5e76f10703bf9ad39c89e1900111 gprof/Makefile.am
-eb9abc12601593ac6521d4786a708b77 gprof/Makefile.in
-55be9544e8fe419300921fa44a0aa692 gprof/NOTES
-84c06350a03466660f0f691ed1220657 gprof/TEST
-62728c5b834e3893e5414a8bae9a99d8 gprof/TODO
-b33dab2d2e4ea1694e3d63ff4715142b gprof/acconfig.h
-2e77183c94ff25e517327793c2db2e55 gprof/acinclude.m4
-245c5c6842c9a94a0e48a3d8deeebe75 gprof/aclocal.m4
-e778a923257c810d68dec13fd488eb17 gprof/alpha.c
-56d1218121151f1e7557f69ea5241ea0 gprof/basic_blocks.c
-ca39735906fdd30d5e4123366e064b55 gprof/basic_blocks.h
-fb26efc191946b1c391604afbadfe436 gprof/bb_exit_func.c
-67083749ab9eb7b9869f600e24046960 gprof/bbconv.pl
-25e7c14a812ac2befca1efaba7326de3 gprof/bsd_callg_bl.c
-cadeef23b67be4bb67efb8d51c426a84 gprof/bsd_callg_bl.m
-c2d75700c52ecc745ba87093070c2415 gprof/call_graph.c
-aaf334303399885b664cb82016829e9a gprof/call_graph.h
-d2d5dc44d4751291a986e067fc8487ed gprof/cg_arcs.c
-f4b4564ff4855580d031efb91d6b96c8 gprof/cg_arcs.h
-d698389b5fb62def7dca627e691f69f2 gprof/cg_dfn.c
-9763120b90a70649f8da911568b308fc gprof/cg_dfn.h
-f38dbd64edd9486f1caf893b22dc17b9 gprof/cg_print.c
-0982459c755ac5d97b53a306ec100aba gprof/cg_print.h
-b8cefe113dfdf660fcf039d46fec1d84 gprof/configure
-55653a53a4dc8a073937819596bacfeb gprof/configure.in
-6124e24af0d750f7ad26144e2e549e25 gprof/corefile.c
-69ca0d5792b82ef544c23d1ad975c43e gprof/corefile.h
-fb7920a70d8eba8b94fd446da371604e gprof/dep-in.sed
-b25cb6184818f6bb4dea4962b70ea3bb gprof/flat_bl.c
-d6498bb2d3ec24087785cd109c215067 gprof/flat_bl.m
-8929b59fb940ea7c3d784d48d652200d gprof/fsf_callg_bl.c
-609bbce6f5cedf6b0c8d25c3061b582a gprof/fsf_callg_bl.m
-82f03d11db14e68944e0afe9b989de7d gprof/gconfig.in
-95f54ce5c8c2dab23e194640fcd4e7cb gprof/gen-c-prog.awk
-9478de676b8aef7172f520c48c6e7b6c gprof/gmon.h
-c9a6058973dc17f9603ec7302347c6db gprof/gmon_io.c
-16cff2f007a3be70b454770aaa01e8e5 gprof/gmon_io.h
-2911752bcbb7d22a193dcc22d3c8abed gprof/gmon_out.h
-24d890c7d2b01bf70a015038155504a2 gprof/gprof.1
-180ebbeb622b3f0a7e6f2373b0f9c5f0 gprof/gprof.c
-1f49635b9990b75a4f482f23f80639df gprof/gprof.h
-fd4e33072a67b1aed065e8a56a681c01 gprof/gprof.info
-7a0a344dee265ffc777fed1dac3f40fd gprof/gprof.info-1
-e0558f0ebe0660c2f99b60e45aa3b86e gprof/gprof.info-2
-4f5a8f8d3c765480e3926b416714bb8b gprof/gprof.info-3
-cd3f0020f31b79a9b3c26e7066d24550 gprof/gprof.texi
-774dcfa219e6de263957873db9bb656a gprof/hertz.c
-02cf975780e3e9ea8f94840e5e907513 gprof/hertz.h
-3e1ff6771e7e61c5838928f2c549d985 gprof/hist.c
-6926b0108166d8ad8581e568f9c82b3d gprof/hist.h
-de5f7a6bc76456fcde059a4c496dcbef gprof/i386.c
-a41c773603a5e194a6a96222a73da05d gprof/search_list.c
-a0c5df87181a20319a478d8f4c6aad8c gprof/search_list.h
-b4d532476731b57e44ba662fc0cded13 gprof/source.c
-9a6fbf36a7ef053211da8d84411a00c4 gprof/source.h
-fb1a645046a0682ea7c81a99c9d58504 gprof/sparc.c
-1ded054093de910d9786c62bc4fe8cc6 gprof/stamp-h.in
-0317be88177207a78e64a3ca49783604 gprof/sym_ids.c
-c5d1c00631c1434a38b4d75c37996a36 gprof/sym_ids.h
-abcb4dccea34be3939eb77be053c32d1 gprof/symtab.c
-7bc5ed3a10d3698b36cccd7ab92ee679 gprof/symtab.h
-c53db119688d6704d758ca2c264eadfa gprof/tahoe.c
-33ade2a875836fa6fe418757473dbe3e gprof/utils.c
-9174a73ed79e0d552e57d09390065985 gprof/utils.h
-80e67bdaa5940b70f9dd3aa7d3e7c1d1 gprof/vax.c
-056e5ad4bbaad338a99f25d1c82a6b54 include/ChangeLog
-94d55d512a9ba36caa9b7df079bae19f include/COPYING
-6514be18199969dce1c96374a8d2f48f include/aout/ChangeLog
-cc18d2a17ec338312f00622e1fa4692e include/aout/adobe.h
-a7ad447d7a0696596a330bbe0e1bf620 include/aout/aout64.h
-c6b08000298f64bb35885212da785e44 include/aout/ar.h
-0b3a71cdc523174aee63e9db7b093187 include/aout/dynix3.h
-64818c4cc3aab586e47bc9daa57ed4e2 include/aout/encap.h
-d56e5b7b7841033c99960c96365579c4 include/aout/host.h
-5d9fed058c072b61553cf62174a8e37e include/aout/hp.h
-3b82142ce45a3be868eb0eda0a107c47 include/aout/hp300hpux.h
-d82993bf02befd5682dcd44b076ad991 include/aout/hppa.h
-e91c2c24d9be7b5cbfa6047d799cb850 include/aout/ranlib.h
-d06f0176a5098d444f22d53fabc7c2e8 include/aout/reloc.h
-7ab3b77967f4eb33111904b27f0796a2 include/aout/stab.def
-4fc8401a176b5d472bc2a60e1a0917ab include/aout/stab_gnu.h
-f76759c6246b1e8376e84e0c1d8ef6bc include/aout/sun4.h
-e8f3b123eb50e26e1d38ca5af44d9ba1 include/coff/ChangeLog
-19860cc610e4a705a4706e96d21c3b83 include/coff/a29k.h
-552fa1e45d76f2c7892c12472a3ac391 include/coff/alpha.h
-3b46257336484efd619c1d349f26758f include/coff/apollo.h
-24e7f4f443444e67f0cf849662f36f90 include/coff/arm.h
-7b2f28b2e4bf9e88bb4a23a3e96e99f6 include/coff/aux-coff.h
-c6d820306c035dd8dd33743a04701097 include/coff/ecoff.h
-5ef1801dfbf3fd9d07b95d8e5a075438 include/coff/go32exe.h
-aa8789afe1c0c03506bfe72b6d03e557 include/coff/h8300.h
-71e1ab83c4f3edad768f13096af183df include/coff/h8500.h
-9f42dbf0d95444bb422133f705ae5b50 include/coff/i386.h
-c4f8a3ba91f77c4dafc810968584c027 include/coff/i860.h
-10948521baf96106b8b1a493b76e6428 include/coff/i960.h
-37b14ce150fc5efb823f8a24bf036917 include/coff/ia64.h
-4b9d948ced9fa1991bc044284eda23a2 include/coff/internal.h
-f2d5296a6f39f7cb8b11123dc2e9446a include/coff/m68k.h
-2ec742a1917661fce2c9a968c67742cd include/coff/m88k.h
-ad94876330906bc5cd98ce46ecb3147c include/coff/mcore.h
-d78f43558e5749316731ff8da7afbee2 include/coff/mips.h
-e592618085487f0bc467ae02d7ebdf27 include/coff/mipspe.h
-bbe77385f8f20e3871cd2a3310348376 include/coff/pe.h
-c0a52b2daa52523bc0c4a5958af2a055 include/coff/powerpc.h
-ca7551ab79d241ffbb45086318f24ec5 include/coff/rs6000.h
-58270182d29df55e7ebac9935b7ce813 include/coff/rs6k64.h
-6863d4494aaa304631d878c6c0d32bae include/coff/sh.h
-d93e26806dd11c6c492db5f4cfc50dbc include/coff/sparc.h
-49952fda1e759e5aa659f8f78d7e0ba0 include/coff/sym.h
-ac2f6431d01bacf541ecc3e5e8dc5499 include/coff/symconst.h
-d404152f19d5fd917f5c213cab9dfe55 include/coff/ti.h
-a943e5f95323f5c3a0d0cc76899b3157 include/coff/tic30.h
-00a943a23f99cb26ae4ef0f1cd874052 include/coff/tic54x.h
-2bea3280a510b0e60456554172c30f7d include/coff/tic80.h
-8243e196db4d55775bea63595f65cdc3 include/coff/w65.h
-f65be1056446cc9f95448245334c9346 include/coff/we32k.h
-5b68b9272205b8a20a37a7244f936e54 include/coff/z8k.h
-d618facc3e8ce8bf3d02ba452e1be6ab include/MAINTAINERS
-de46742edca3a9276eefa5ae8fdee5eb include/alloca-conf.h
-15001c35bd6d66101a28ff4d4f48c6b9 include/ansidecl.h
-2aa37081b825fc7f9371fb2f2bb14477 include/bfdlink.h
-e4247635fdf4b4f00f70e8d0fb756cf7 include/bin-bugs.h
-0134165067ac86d517e032aa5a861e4c include/bout.h
-c4f59b0838482455edea3d3ec13bfe62 include/callback.h
-96b8f1978567a85a54e7985a848d1bed include/demangle.h
-68e677849a73047588da295c7b37165e include/dis-asm.h
-bdf2bd343ec6e5fb41e946812accd405 include/dyn-string.h
-df592480ae2f45f93360b1f1270756ab include/filenames.h
-8a01536b114929e73727fdd96b0f39b0 include/floatformat.h
-d54eb7868908574db9965575a16c1819 include/fnmatch.h
-b2cd17a9267bc2e92df461d3170cb15c include/fopen-bin.h
-87444b5c85b3c2bc734f8b86157b15db include/fopen-same.h
-2f3ef0265ac665d61a8721a78c47a79f include/fopen-vms.h
-7b08d623511997558fcc99b0df47efc5 include/gdbm.h
-3a8f21303285c19af2ff8a2d88c9599d include/getopt.h
-0a7705129476cbc81cb4a95a69b5177a include/hashtab.h
-09291cabd10c827ec23605fd27575d8b include/hp-symtab.h
-4140d269a4d719013db3beba8f684572 include/ieee.h
-39f09bdf2a300b24072642a1bb540149 include/libiberty.h
-e1b9929975775d9831fb9d726e48230e include/md5.h
-07de9606e88a074c745d5bbcd835c1e2 include/oasys.h
-88d315194393cec8fa190539965d5113 include/objalloc.h
-63b71216672f5453f509d6111030e0ef include/obstack.h
-82709f401badc29ca812065155ff60b9 include/os9k.h
-a9720ee19979bb321c07fabfa9c50bea include/partition.h
-d011632065e457c8589b28d0c53e5b04 include/progress.h
-8a280b18f0cabe5ebf764a3030dd481a include/remote-sim.h
-12f13d7f77320135261fd50e0abd94ba include/safe-ctype.h
-c8670b4767badb71a4da8a851b014eee include/sim-d10v.h
-866d60698fbecc154ad3cf29e029ebc6 include/sort.h
-d8d1601c2d1ee96513826d0cba20ba1b include/splay-tree.h
-4ebaa58a8bcb2ad62a520447123446ed include/symcat.h
-dbea2ed322e7ea959fc2a2c3949d01ef include/elf/ChangeLog
-f42fa13c6c33a69368f7ba26963fe866 include/elf/alpha.h
-3bf4ae3474c9c4b8310da4a84aec1dca include/elf/arc.h
-2fe80e192d9659bea7b0bdaa31aa149e include/elf/arm.h
-58a80a77bf1669d85ca0d6095e6e85b4 include/elf/avr.h
-2cfc0b1bf4c1d7d5bc9fdfe215f72619 include/elf/common.h
-81b2f401fb8c6bff37f28f811a70210b include/elf/cris.h
-f65a19cb8f5a2d53a4c0f71c90bef0e7 include/elf/d10v.h
-e1bbf4eba14b2efe2dd202e9a7038bd1 include/elf/d30v.h
-d350084ff96d123c4ee539745ed1ef2c include/elf/dwarf.h
-744b35dfe0baf98be9bc289bd0f00448 include/elf/dwarf2.h
-bd2e0d99c91c060a6afd29a774572ae9 include/elf/external.h
-2adb44173bb9ba06c13aef464c4701a3 include/elf/fr30.h
-0899399867f5ede8459434cb58862e61 include/elf/hppa.h
-3244632ab2a049af0ebcef9b16c9f0b5 include/elf/i370.h
-91ea37d0949ed5198393c4e36cac949b include/elf/i386.h
-6e10443e0f1746964a6cc3fa883215b5 include/elf/i860.h
-4f6c7e8248b9ec284b181a55ff15a17a include/elf/i960.h
-2e5a2836ae170cd5df905e1badfb6c6f include/elf/ia64.h
-57a2acfa4c0f4764f1f181b0deee1741 include/elf/internal.h
-f2816b5aaef73516d44b235aa098e22a include/elf/m32r.h
-d289b5c4850dd5c1979d66a9568ad9db include/elf/m68hc11.h
-c8eda6e35260f4d7f9897ad95a2248c5 include/elf/m68k.h
-97ed3477e1b76ff78e6ae3c361506869 include/elf/mcore.h
-d2fdeb878c7b8c208630b9a9a2ff5e84 include/elf/mips.h
-9090a0078b91916eb138a6e96ba1ffab include/elf/mn10200.h
-238dcb5869243682d1de4b464c288fbc include/elf/mn10300.h
-f9cffe9859496c157656bbd3a7b7459f include/elf/pj.h
-9d168cba90f8b5bd18e49bd33876f3c5 include/elf/ppc.h
-883bdfc4fbbbd6a89013a5522ce509f9 include/elf/reloc-macros.h
-5f9856492ae08f28a4a37826e7398365 include/elf/sh.h
-36bd8460c99395fd2c73b66e5882380e include/elf/sparc.h
-3aa9b74a41a552e5cff4d62cdb2017db include/elf/v850.h
-a02d6617c483d114704d8b89e7af3e0c include/elf/x86-64.h
-5dbb507e309b9fe20c45d16972bfb936 include/mpw/sys/resource.h
-6bc56500657f8c3b71b20af4c69e967f include/mpw/sys/file.h
-6bc56500657f8c3b71b20af4c69e967f include/mpw/sys/param.h
-745d20e08d92b71d289da383e8a47168 include/mpw/sys/stat.h
-99098422e0de596f6a2e552220346da7 include/mpw/sys/time.h
-009a0ee881c63ae879dd80dde06daca5 include/mpw/sys/types.h
-34d253468a44fc96db48e38814a2e4ce include/mpw/ChangeLog
-ac05e56eb8acd390d0fa557abc21380d include/mpw/README
-d1c1f4e66376b9ef2e8d4c79446503ba include/mpw/dir.h
-c293cf9a745465e2371edda6e3f700d5 include/mpw/dirent.h
-fd0c0ec6483a6ac794cfe370f323c8e7 include/mpw/fcntl.h
-211595cb825444acd3656a8172a3261c include/mpw/grp.h
-7a2ba7b6e2b168f335e8d53b1003ab24 include/mpw/mpw.h
-32f1e7dc45c3a15418ec5e0998f1f8f3 include/mpw/pwd.h
-55d48ac5e6e6ef01dcad00aeb8b33831 include/mpw/spin.h
-043c8982bc0ff4fd987727abd7341aa9 include/mpw/stat.h
-94cd8a35a9f625ee6a4d19ef2a481042 include/mpw/utime.h
-30ab289a4d9376ba8ec961019e3c291c include/mpw/varargs.h
-17e1d26830cfdfcfd3f10ac77b0fbca8 include/nlm/ChangeLog
-ee9fe4c84a50cb6d303eb3848fbd6eba include/nlm/alpha-ext.h
-cd1bbe2052d94d6d0ba5892f15b1d48a include/nlm/common.h
-3c99c8ba8f85e2cb10829f35e3223113 include/nlm/external.h
-119b651e264af67466b26517fa1ab516 include/nlm/i386-ext.h
-83eee47917743f8eadb3cab94449dbee include/nlm/internal.h
-5446642ff3b9fee027d46b00a0cd9383 include/nlm/ppc-ext.h
-12311cd52e4c3cbb45b2f8eb775cc8c4 include/nlm/sparc32-ext.h
-de353dec3d3156369ebeda0962c5b39e include/opcode/ChangeLog
-462ffbe74d2be5d6f8607b4f072e53f5 include/opcode/a29k.h
-0c6d0efab2da874133036face81c3666 include/opcode/alpha.h
-0281afdeeedaeafda7a17fd25a67ec00 include/opcode/arc.h
-f51724681cb616b8ddaa4ed0aacb67fb include/opcode/arm.h
-98fab9ee305c764c0d98bdaa52ddb874 include/opcode/avr.h
-32ab4453846d992862d569d9873ba281 include/opcode/cgen.h
-b68941a9545d607ec5245a96ccd399c9 include/opcode/convex.h
-58d48256e88159d47d7911df439e43f3 include/opcode/cris.h
-ac443bb309a4a778383af46b6f101901 include/opcode/d10v.h
-61819e55d807e7953d1864c88ba74c1c include/opcode/d30v.h
-38c8a41b5a691d7f48cfa40495e0c5a2 include/opcode/h8300.h
-b74df8d0c0456132c090adf9b7173a65 include/opcode/hppa.h
-7e3c952acc4568fdd1d873147e3c0d2d include/opcode/i370.h
-ba1c64016e7e1949f14a81b15651e106 include/opcode/i386.h
-b2d9c35e0647c729335b50866309ed9b include/opcode/i860.h
-10654d7ed7402428c40546e33e5f147c include/opcode/i960.h
-05bf164aa56c4c5ab3dcb35d8785aac1 include/opcode/ia64.h
-7628171c45c02183c4c952b6760ebcdd include/opcode/m68hc11.h
-ba270bed72f4cbb17d70d9964a2779c7 include/opcode/m68k.h
-fad6ef73bfcbcf77fb6ff04c05d2b215 include/opcode/m88k.h
-5a1abd8839180eaa24ffd1dff62739f9 include/opcode/mips.h
-43e315bf6f41c74ceeb8422191c76ffb include/opcode/mn10200.h
-ad7ece4aed093a098c3ea27047837dad include/opcode/mn10300.h
-f08f60834808b211b5ea9531e53bfd49 include/opcode/np1.h
-8201356f4327535622d9aaefab8f7e42 include/opcode/ns32k.h
-2686b284377642c3a6afb790785808f4 include/opcode/pj.h
-10a57ede0f7fe1825b0412223edf5852 include/opcode/pn.h
-56e3e2af3e522292571f6a8b18255f99 include/opcode/ppc.h
-57b6865994b962b82214d3e543408f2a include/opcode/pyr.h
-67834671955468c7dcaf51979772ef9c include/opcode/sparc.h
-c69e19287023c929ac20ee5311acfadc include/opcode/tahoe.h
-2b0f365ad336acad633a116537cfd018 include/opcode/tic30.h
-f6d161f577d67533b30aa8fa85ca3c33 include/opcode/tic54x.h
-d2c9644c874999bbb1f275ebf8adea86 include/opcode/tic80.h
-f02fe800bd8571f3e2677aa2c3a06c90 include/opcode/v850.h
-e78acf38376a53ce9ac029cdd1c4d560 include/opcode/vax.h
-d41d8cd98f00b204e9800998ecf8427e include/regs/ChangeLog
-5afe8eb5573965dfb58378e4e46f3813 install-sh
-c3f98161a09663d4152a318793fde272 intl/ChangeLog
-e824af0ffcae539e52cac31fa3faf1d5 intl/Makefile.in
-ee2ff1244c36ed348643bd1a51001f4f intl/acconfig.h
-6e16646448de7fab92862eefbdcca179 intl/aclocal.m4
-da7585912c32cc902a40682c188c9c76 intl/bindtextdom.c
-caa3581b00edb0a7d3811a24a3e46c5c intl/cat-compat.c
-da5e55ccdeae42d336d8f9225cebfd75 intl/config.h
-bd51dd1c7684c9f15ee4532bfd7bf12f intl/config.in
-05c6a93ed8c2801c09dfe15e6cd47452 intl/config.status
-2f9be0885ee6447a29fd0550b52c40aa intl/configure
-eb4685d54a1e3da00cab275a5c3fa6c4 intl/configure.in
-b542cbb1c1c4a9dfac867172246e0a20 intl/dcgettext.c
-63df19e31e5f6a6df817da915b44ed3d intl/dgettext.c
-4db7c1b94ee4cda24bc74474f3a59a3e intl/explodename.c
-4b12bb77b2d9d268b8ec6ee39d12c4a8 intl/finddomain.c
-a3f9f228e0044a48c00cf5970b8be258 intl/gettext.c
-2ba9a94b32d0c8056e617e85ad7a994a intl/gettext.h
-5f9d7d7a72a3e8e42034c55b5c7f83eb intl/gettextP.h
-5fca7fa018536a827790bf56e384cb5d intl/hash-string.h
-93e4ab4b2eba5d2b8a36e1b2380190c5 intl/intl-compat.c
-f00903218b78761c55cd76aea43e0cad intl/intlh.inst.in
-3ee800e1115b811c49bd4f0b8a6a65aa intl/l10nflist.c
-792fd16022a69b1321042701c46218d0 intl/libgettext.h
-07e60d7ada1d5cf14da1c4c2823feaf0 intl/libintl.glibc
-88c9303406b57aeed1f313b827c28e3a intl/linux-msg.sed
-bc7989f895f4e4e38d43419dc0f4777b intl/loadinfo.h
-441f20d1c11229acbe9eb350b162548a intl/loadmsgcat.c
-122fc9bc010467ff915e57aa7114a780 intl/localealias.c
-606344532ffc07b36812c0d04acb1f38 intl/po2tbl.sed.in
-1ded054093de910d9786c62bc4fe8cc6 intl/stamp-h
-6283160be713ad0dc1102617ada6fa54 intl/textdomain.c
-0be261721efcbc3f04680d99e149f18a intl/xopen-msg.sed
-c289dc63e731d4a1da809249e0922832 ld/emulparams/aixppc.sh
-2e897117043ad88f2c7bcf35a606d76b ld/emulparams/README
-4f6b4154113438f7481f4661d09daabe ld/emulparams/a29k.sh
-b313a6fa271657abd14511455050cdb2 ld/emulparams/aixrs6.sh
-29fda341c48f8b90fbf258b6d475867e ld/emulparams/alpha.sh
-91e308e524924e29bc43412f89a2fead ld/emulparams/arcelf.sh
-2e08024e0d4b3c527d426e134d4af1ef ld/emulparams/arm_epoc_pe.sh
-a061559a038d4e5b1efe929656c6eabd ld/emulparams/armaoutb.sh
-a419e5e9b54e9511306099d0f8ddf0a5 ld/emulparams/armaoutl.sh
-d7a431dc9e8878378179623ccf9bfb47 ld/emulparams/armcoff.sh
-b89887d1de91912a100a09e766faafeb ld/emulparams/armelf.sh
-27ee98332d14972c9906e52f38dbc915 ld/emulparams/armelf_linux.sh
-4e88bc5535572c27ad8e22ea4f245202 ld/emulparams/armelf_oabi.sh
-0f7bcbd8a14e3f6392834cf18fde47fb ld/emulparams/armnbsd.sh
-f8974ac24d96f452ff36b40a6203383d ld/emulparams/armpe.sh
-d054a3453b323338552bb636ebb8e116 ld/emulparams/avr1200.sh
-35959d43d0a857cea44143e597becec1 ld/emulparams/avr23xx.sh
-6bce86ca67f3e0d62294eb9bd2635402 ld/emulparams/avr4433.sh
-3c8c6bed009efce2bf0242ef1d003245 ld/emulparams/avr44x4.sh
-b79ca66a017af6b2cc9612337262291c ld/emulparams/avr85xx.sh
-d612b547d13f97624ad3cabe1406a152 ld/emulparams/avrmega103.sh
-b9db3ff305090194178987e80d8ed449 ld/emulparams/avrmega161.sh
-fe83397f7a2e0de4d02d04b61f229a25 ld/emulparams/avrmega603.sh
-d47b82239f4ac8c14355a94378cf39b7 ld/emulparams/coff_sparc.sh
-2106e6a6c645d248df9265a8408980c2 ld/emulparams/crisaout.sh
-ce0b745d5a04bfd7bb575b1c7180641e ld/emulparams/criself.sh
-57b93a092a4cac65e988765446eb13da ld/emulparams/crislinux.sh
-4e68ea19373cca478057e6a64814e143 ld/emulparams/d10velf.sh
-17e84454d13546953021ef10207da62f ld/emulparams/d30v_e.sh
-094a88671f30762402b9e5c78e4e3e9e ld/emulparams/d30v_o.sh
-b904add983e2aa12033b4c8812a73cb4 ld/emulparams/d30velf.sh
-162d7cba8938432d260e1e9321bf43ce ld/emulparams/delta68.sh
-e8fa19901f4c10300649e6c2d30be9f8 ld/emulparams/ebmon29k.sh
-b30522a3c37bc370dfe45f546cca3127 ld/emulparams/elf32_i860.sh
-3d9de5e9ff61c57dfe7cae3508863c7f ld/emulparams/elf32_i960.sh
-5521057ee51d04b9c5be955ad01fa01d ld/emulparams/elf32_sparc.sh
-1dd17564c9aff8b6c2e40e7a9f571b7a ld/emulparams/elf32b4300.sh
-f64269d5383ab08f0c9e5b79c788caf0 ld/emulparams/elf32bmip.sh
-989be87f670515d0a102da2ee6102e7c ld/emulparams/elf32bmipn32.sh
-52f1a6b5e20bd996dc715168c8700d56 ld/emulparams/elf32bsmip.sh
-09ad12c799e0de160ea05b5e2c67977d ld/emulparams/elf32btsmip.sh
-41c14a8d73070481da1f2559785322b0 ld/emulparams/elf32ebmip.sh
-6f124bd5baf085b40380db07a4ba7c2e ld/emulparams/elf32elmip.sh
-ed5f10fa7edc2674622078dbfd378434 ld/emulparams/elf32fr30.sh
-8c345571cb4a1d16f3335639204f1b3b ld/emulparams/elf32i370.sh
-e6c4955bf2db80c6964e66af709f05cb ld/emulparams/elf32l4300.sh
-0fc4b854a11f17219053f735f3f6cec2 ld/emulparams/elf32lmip.sh
-1e20413e271fd05e253b187172ba8137 ld/emulparams/elf32lppc.sh
-92f6cc4fe8ca41fb6e6d15cd4f72838f ld/emulparams/elf32lppcsim.sh
-1143fb3d9743c026ec587df088bd31f8 ld/emulparams/elf32lsmip.sh
-f3acecc64f5801ead7fcc37b95faa23f ld/emulparams/elf32ltsmip.sh
-b0bd40fd4790073da2ca8a139dd5abbb ld/emulparams/elf32mcore.sh
-5e3d03a5417dbd051c0f465b832d15d4 ld/emulparams/elf32ppc.sh
-2d539f783dfb7d0fe71e2554f4b14841 ld/emulparams/elf32ppclinux.sh
-7790d9c91fc199cc51434abe289bf438 ld/emulparams/elf32ppcsim.sh
-792c26246fde59e0f132bb33c4039b48 ld/emulparams/elf64_ia64.sh
-7448f80602579636b9e1898cd5a37228 ld/emulparams/elf64_sparc.sh
-ed729adb5c8420afe7245240e95db0f1 ld/emulparams/elf64alpha.sh
-769fdd8cbe0bf5e72ca8dca7d78d3259 ld/emulparams/elf64bmip.sh
-8135eedeb358358243d545461b0090dd ld/emulparams/elf64btsmip.sh
-ff249db25e56dc6b03a8b61eb8a89070 ld/emulparams/elf64hppa.sh
-e3f95201ea2635af31251e96b95d75c6 ld/emulparams/elf64ltsmip.sh
-7ebad7c632abef6e016c94541d4ad30b ld/emulparams/elf_i386.sh
-e853a2e087ac512a0cfa5ffc4baa6474 ld/emulparams/elf_i386_be.sh
-05e655e5b9bba0d20b4020d660720f56 ld/emulparams/elf_i386_chaos.sh
-b48b2c27f9bc85ff6c979aafcdf82bf3 ld/emulparams/elf_x86_64.sh
-a12d58b36cd6e31986d7515c77fec3af ld/emulparams/gld960.sh
-16e204dd1b3a385eb2dcf14ccddaa50a ld/emulparams/gld960coff.sh
-3a7b9aaf11eae3f3cbd21b6220434ad0 ld/emulparams/h8300.sh
-38e60b173489d53692974c5b6a04cfb9 ld/emulparams/h8300h.sh
-f9d708a8c553ed19183a1f638fe633b4 ld/emulparams/h8300s.sh
-b3b0d0be943fd5517fbc171778f63de0 ld/emulparams/h8500.sh
-6dabd6ffde56b2445c38969243d3575e ld/emulparams/h8500b.sh
-6d71814235108ce0faa35813c1959495 ld/emulparams/h8500c.sh
-e8b9174ddad38feceda59af2dbec0d09 ld/emulparams/h8500m.sh
-f0a112f331b4c6bfbfbb1895cdd63eff ld/emulparams/h8500s.sh
-54b7e862187330b80b6314b2c1c1b05e ld/emulparams/hp300bsd.sh
-4bbb1b67f14d1e124683aecbd19e69cf ld/emulparams/hp3hpux.sh
-7af6e1ad74bc71f864b9c04412f1bebc ld/emulparams/hppaelf.sh
-dbcd064517314bc119e4b54ae7847284 ld/emulparams/hppalinux.sh
-0537af9ab3953ed67d099959cd4e181c ld/emulparams/i386aout.sh
-5ed1f528a6752f2ed12d48977cc43da1 ld/emulparams/i386beos.sh
-ca54144cdb2703b51ceb13bc03e36c83 ld/emulparams/i386bsd.sh
-d05a50688386622b8ad4e4c1f2286662 ld/emulparams/i386coff.sh
-8d213758c362dee91c9aca3fe2521321 ld/emulparams/i386go32.sh
-da7411bcf5fc48e4739d94a108c64f56 ld/emulparams/i386linux.sh
-7d2e038dbd7439a23c353688c7ff6087 ld/emulparams/i386lynx.sh
-fdc6893b38868d4006e1d62edc5a09bd ld/emulparams/i386mach.sh
-63dc5bed51de89c74fdfb27b20c5dcc9 ld/emulparams/i386moss.sh
-95e2973323b32d1896c6e19758582b09 ld/emulparams/i386msdos.sh
-fd44b883579ad95580bf3cae88bd91b4 ld/emulparams/i386nbsd.sh
-5714ea774490dece5da92c0fc5c72d77 ld/emulparams/i386nw.sh
-189c01efee7710b9d1b107f60db173a9 ld/emulparams/i386pe.sh
-168c0e6c22de9f60b4cfd893a1e0a4f0 ld/emulparams/i386pe_posix.sh
-50cd18f6ac43ffed547adab63eaf7fd0 ld/emulparams/lnk960.sh
-02117bc90d8d122568f4695bb15d61b7 ld/emulparams/m32relf.sh
-17f327870e9d5f2b67bb6767084eae64 ld/emulparams/m68hc11elf.sh
-f11b453814e07dfe2f126c575f25db31 ld/emulparams/m68hc11elfb.sh
-30b81dcf1f3db68cdb1e15bce5b41d78 ld/emulparams/m68hc12elf.sh
-7d1044ca8b044c1a519d8db2db658577 ld/emulparams/m68hc12elfb.sh
-2c03157a829a79d93b2ca4b5005f032a ld/emulparams/m68k4knbsd.sh
-173818cf70910edb066aa57cbad66829 ld/emulparams/m68kaout.sh
-00b17c39c4dcf1058751dc07f30dbea3 ld/emulparams/m68kaux.sh
-f0580d8a518bcc77032874c9cb72809d ld/emulparams/m68kcoff.sh
-d82fefa828fc4538f17bb3f788352154 ld/emulparams/m68kelf.sh
-7d5b500c05a8f5cd0eccbbc81dc99139 ld/emulparams/m68klinux.sh
-89788f2245a4c41e33afab79e70e6bb7 ld/emulparams/m68klynx.sh
-37404d78456eeb52a674a4dcbbb9bb36 ld/emulparams/m68knbsd.sh
-13f758bfc68e72e4e1df1cc8e8b01407 ld/emulparams/m68kpsos.sh
-71a6bb6cc26e527411df45774831e1fc ld/emulparams/m88kbcs.sh
-f1fa919d1c7900c6c69ad1137c008524 ld/emulparams/mcorepe.sh
-6c5efc2d80801d3ab24a03f11d108e39 ld/emulparams/mipsbig.sh
-8589776726fb0a88568b9dbda5660c35 ld/emulparams/mipsbsd.sh
-9b4dac4f3c4dcd64fa56cef06eff44fa ld/emulparams/mipsidt.sh
-a9f7e459186328fe620a7923de39340c ld/emulparams/mipsidtl.sh
-60661603c73c5ec9883d1f65e561e2d6 ld/emulparams/mipslit.sh
-8cb42fe6977ca6c642cb7b96a9b0fda0 ld/emulparams/mipslnews.sh
-1e83e0caf4fa27128375fc0ee5b0d362 ld/emulparams/mipspe.sh
-cb9ddc7149bdc45e4894ad3c5f7043dc ld/emulparams/mn10200.sh
-16199cff84a98df6ed43d1032f86d4ac ld/emulparams/mn10300.sh
-49337298ecef7c4e2569237b614c9675 ld/emulparams/news.sh
-a712bce9b19b7554abdf8de63140c88e ld/emulparams/ns32knbsd.sh
-a9ad37848e6c339a4fe81f322c3f3390 ld/emulparams/pc532macha.sh
-332eddb90f3e1d4a5a320243735ebf5c ld/emulparams/pjelf.sh
-8e2b9fce572d19af6ce84e6efbb74add ld/emulparams/pjlelf.sh
-cbcbc06cb401fb2074140cb8b535d4e8 ld/emulparams/ppcmacos.sh
-f71b3cd563ff272019f928ca9cbd0eba ld/emulparams/ppcnw.sh
-762b6a9cb39066b56d9cee03286dcf82 ld/emulparams/ppcpe.sh
-ff7570d6bf2e39ba10e74a394052028b ld/emulparams/riscix.sh
-e1c80afa234bc21751979b515fb688e2 ld/emulparams/sa29200.sh
-f363ccd6fc740ceec31fa8001cf2e9a0 ld/emulparams/sh.sh
-131aec9365eaee35bf7d15d9e28dec96 ld/emulparams/shelf.sh
-8b4b3eed32de796acbcf4a2b11a83e3b ld/emulparams/shelf_linux.sh
-0806db54e70993cecdd7023f339e4d39 ld/emulparams/shl.sh
-70d54bfad0f08afc691f19192fb244f8 ld/emulparams/shlelf.sh
-d1cb0ddcc185836f97a39dd37a0f49cb ld/emulparams/shlelf_linux.sh
-a316da8cf4e620c00377e161b3a15fa0 ld/emulparams/shpe.sh
-6062ec8406144fbbe4ad32e193a7ac04 ld/emulparams/sparcaout.sh
-16bbfb9268886d428a81d42f007c5f20 ld/emulparams/sparclinux.sh
-d004a32b2e6edcc69d900c2207bcbbbb ld/emulparams/sparclynx.sh
-957bd3e925d255ac965dde1aa7303f40 ld/emulparams/sparcnbsd.sh
-8f86834d923d64e45861594e4dc8c457 ld/emulparams/st2000.sh
-f8ff78cfcc19d1d4389a84330615a363 ld/emulparams/sun3.sh
-04380fc27e6223ffc89d2b43f9421434 ld/emulparams/sun4.sh
-5d10f221cc393b1ae1719132de13f3da ld/emulparams/tic30aout.sh
-4fc903e37671053625509f7486c63816 ld/emulparams/tic30coff.sh
-aead097a3385a27cba7210470e150a10 ld/emulparams/tic54xcoff.sh
-786ca05591eada9f7fbf7d5804dc0b81 ld/emulparams/tic80coff.sh
-31a5bc747cdaf134204652bf78e61771 ld/emulparams/v850.sh
-060bf2672cf53a505f23d413017e0be4 ld/emulparams/vanilla.sh
-1689044462ea8c0a614ff1b3a91a0192 ld/emulparams/vax.sh
-1e240622a795d134bad0e8a60460b9ae ld/emulparams/vsta.sh
-7efc4f8c9d1eca2e14084bcd65535b9a ld/emulparams/w65.sh
-cd93ec9e7e74cadfaf8044cca1581111 ld/emulparams/z8001.sh
-8890ef4fad0e25044c8d3200a9e77ee7 ld/emulparams/z8002.sh
-2a5cb94cef3195c5006cbcccd4ea6a78 ld/ChangeLog
-1ae0cd65c8a7fb4e347f5a8584cafd1a ld/ChangeLog-9197
-2e154e4e100af48493f6fa789d4517ae ld/ChangeLog-9899
-d618facc3e8ce8bf3d02ba452e1be6ab ld/MAINTAINERS
-52fe75d2d3eacdf3865e9968e646030f ld/Makefile.am
-4be7a6136d60892a1971cbfbbdd19a6e ld/Makefile.in
-8adc4dd7a7707cade1f72f88c49b818a ld/NEWS
-d3f15e73b68c6d694e6eddcdc11f1f04 ld/README
-01627b664c7e61ab5dc202bb72913e0a ld/TODO
-b802b0cc52e6c72a326c11a64c8155a0 ld/acinclude.m4
-f1734965ff3907806ff585fdbcda515d ld/aclocal.m4
-bcd1abcd9f55cd39380e86555cd04488 ld/config.in
-bdcfe9939e2b527a2c7ac3a4cbd09f6b ld/configure
-59c74394349437e37d4c7e5284aecb50 ld/configure.host
-a6a60d7fb5c82dde521faa647f2b2f49 ld/configure.in
-d4092cb236ed20c3872e350b7e3863a4 ld/configure.tgt
-d3d9eb4581bec474a3cf465160b1371e ld/deffile.h
-37e7fb1b97db43bb03690e4e7468f8ee ld/deffilep.y
-93fbfa053ffcf82c36613c2e7ca30eda ld/dep-in.sed
-e2677a696ed870d444e53cf69e8a69f6 ld/gen-doc.texi
-5a7a6887613081ade332f14f1262f907 ld/genscripts.sh
-d3d6fc53e5f8d5e5f962266911f0441b ld/h8-doc.texi
-a9ea9d042e8f202d1ae318bb4dcdeda6 ld/ld.1
-dc12c63e536bb4d30122799fcfcd61b2 ld/ld.h
-9af8fa62657be80f73f1c25215971bcb ld/ld.info
-8f0d53a6eedd7210635c279880569300 ld/ld.info-1
-b9e92eaf7909800eb27222331671da4f ld/ld.info-2
-d514b36ea675f9b1770d33101fe77c92 ld/ld.info-3
-84441dd528c1fc2bf3e446b0a20a240b ld/ld.info-4
-07f47d1279b089736e2bfa62102b1ad0 ld/ld.info-5
-c35193580f679ead6fe0137ced6ada69 ld/ld.info-6
-34c8d5659cc0bc70a2448f8e260d73ea ld/ld.texinfo
-42041e4e16e2fe5e78b67fbead7a431b ld/ldcref.c
-bdd86d7671d31e05370e5c4dd6563c27 ld/ldctor.c
-5feb38f9fdfff03477a2e903ab3b0a9a ld/ldctor.h
-eb13c3d4870762f25fcd6620cb14e53c ld/ldemul.c
-e922c33a61aab25af6710d9809c4f4c0 ld/ldemul.h
-a4bd1472be8a8e931a82825b319da567 ld/ldexp.c
-ceebb9e2a2f925e2dd6bd5eefdf13166 ld/ldexp.h
-367eab4d73a8b2eba9e1f317dcb3b7e9 ld/ldfile.c
-16f4a7510b084d57d6bdaf97da6193f8 ld/ldfile.h
-9b2dada8716782c20350d43caa2f21b7 ld/ldgram.c
-469602bdd786d950e9759b5c1c607058 ld/ldgram.h
-615e9abfaa087941ac1a665b03f6c9d5 ld/ldgram.y
-991cdf89843c7a85c80939a69f7744e5 ld/ldint.texinfo
-8ca47fabed6fbbcd7a76307cd0392d00 ld/ldlang.c
-573b0985ee45448098b2ecfd7ef68754 ld/ldlang.h
-e3589edbe9619a856c94a9e1472af695 ld/ldlex.c
-695387a63964774ce8bad66fa3cbc3ac ld/ldlex.h
-ab34ade19af66bcf41fd1cdf8316fbce ld/ldlex.l
-0456d4b5849cae5e7b5602e180c81fb1 ld/ldmain.c
-9bf1eb955e180d436f5179fba53a1582 ld/ldmain.h
-eaf5e555807b6f79e3df15fd87d501ab ld/ldmisc.c
-ade62229096754b98373b9ae23d91b70 ld/ldmisc.h
-3a602698f02818af629d09f4bd3f7fee ld/ldver.c
-672e26e69ab6b241da6d7e5e4775f943 ld/ldver.h
-4359fdef33618e0323337df0588c5cc3 ld/ldver.texi
-79e7b100959436e9e1e63d4dca95b6ed ld/ldwrite.c
-2b0d7a0f98da7f507f182b4dd2f9b616 ld/ldwrite.h
-72c0de82995b3f382dd79e9b8aee3744 ld/lexsup.c
-d2c2ef9b2c8b24061720ae93db1c4908 ld/mac-ld.r
-26d2c38dee9ec69444252636bb0f6cc9 ld/mpw-config.in
-75da5b27b1aed0cd7e35b59d9816e8ba ld/mpw-elfmips.c
-1aa6339246f903df40d56a6e1741125a ld/mpw-eppcmac.c
-d59f31235ae0e62676d70df668146a3a ld/mpw-esh.c
-b20a61570cea5126bbe2247bbf21b3c6 ld/mpw-idtmips.c
-01eb948a7c267f614ce2d08c8270170f ld/mpw-make.sed
-d42ccc86b79c8964f38a1411f8b7c5c3 ld/mri.c
-2ad4dc287abf549ea050d6ff283d603c ld/mri.h
-98560f9c1fc2227cc7c788586914cc15 ld/pe-dll.c
-da3989e60b39997de519cdbb5e6ea757 ld/pe-dll.h
-1ded054093de910d9786c62bc4fe8cc6 ld/stamp-h.in
-3f6f936b110ea5a5399a1446a3193c62 ld/sysdep.h
-33d53fcbafe88b22932a3319277862ea ld/emultempl/armcoff.em
-b812a798c37d8d5f5901f1821a8a648a ld/emultempl/README
-9b159b0dcd1b4592439409005af127bf ld/emultempl/aix.em
-12544d37e7ba4af1aa940499b149eb02 ld/emultempl/armelf.em
-9f11acc5b293ac007ef4f30069a0148c ld/emultempl/armelf_oabi.em
-995bbfc228460e4eef6eef52a09384a9 ld/emultempl/astring.sed
-da24b8a824c3f326149884affe72b954 ld/emultempl/beos.em
-d2fc27e169746e4690b9255988f3f959 ld/emultempl/elf32.em
-410858b431ec254ac37f760c1ea87f1a ld/emultempl/generic.em
-0a9fdf535a7a19ab8b1bad9713888740 ld/emultempl/gld960.em
-76c0c089a4a55b0c9621b49d38908e67 ld/emultempl/gld960c.em
-6b0ca1358cf1f8c0066f2e5301f46d56 ld/emultempl/hppaelf.em
-6f50e5470dba075e580db09276f7d3db ld/emultempl/linux.em
-9ee4fb106dcb3642b3c10ffd1e55457a ld/emultempl/lnk960.em
-e959cab000712c2d7827b28020188272 ld/emultempl/m68kcoff.em
-b995be733fe9aaafa45af874c12102a6 ld/emultempl/m68kelf.em
-448e845763e60a5c713e3b2fc9863cf3 ld/emultempl/mipsecoff.em
-a8190e4a0b5cca5b8677d8bb2d39940f ld/emultempl/ostring.sed
-e14202a045cb3c41ebfe042228e3252d ld/emultempl/pe.em
-8be5c13555bd37d1c70bbb1006b583da ld/emultempl/sunos.em
-e21fa8d986017ca6352be94fdff217bd ld/emultempl/ticoff.em
-1fc5ca4c2d336b91b473c13b241bf2b9 ld/emultempl/vanilla.em
-63397aaa2c2074aa7be7ffe57b2e6c69 ld/po/POTFILES.in
-ea2baddf1654fa8df40eb033d33b6068 ld/po/Make-in
-c8e20dea09bd30058704c752a202c8b9 ld/po/ld.pot
-d471f7a5a3dc4deffa1a8f2039a38504 ld/scripttempl/alpha.sc
-01c6e3598e372d510730e381dd25c2cd ld/scripttempl/README
-fdcbfdd0b93aa6b73e1b73127b28bdae ld/scripttempl/a29k.sc
-ebac9206176b1d49526ea9edbc71867a ld/scripttempl/aix.sc
-8e2be304cab1b30f2770ca3dd188f47f ld/scripttempl/armaout.sc
-11e720b2d4fbd6b8ad9ce26f980acd6a ld/scripttempl/aout.sc
-f40cc9e187c16d5d4170456ccb17d03a ld/scripttempl/armcoff.sc
-119e975ce8b1005742840a9152c03a99 ld/scripttempl/crisaout.sc
-3fb69113f5952434021a5fc481d5b417 ld/scripttempl/delta68.sc
-a4e630a7a2094f2b44f19e41069e4433 ld/scripttempl/ebmon29k.sc
-2f6206dfef231404aa0babbf12d2b69c ld/scripttempl/elf.sc
-c7f5cfe3ed0b5773a9d2107c7fe08475 ld/scripttempl/elf32avr.sc
-744fd7db42c234328f24006210a9f7a9 ld/scripttempl/elfd10v.sc
-557b6406e74fc2c9cefe6233f95fe5a8 ld/scripttempl/elfd30v.sc
-6ad7e39a3e5729ad923402573fd2351f ld/scripttempl/elfi370.sc
-e96aae5650c97ddede3769205d9256f6 ld/scripttempl/elfm68hc11.sc
-b435ff7b33225c47a2c42481b66fd5b6 ld/scripttempl/elfm68hc12.sc
-5393b9689fa4a05d916c9ebbb54f015f ld/scripttempl/epocpe.sc
-bb39f599d5755db06b3516d0471fe7f0 ld/scripttempl/h8300.sc
-03a31f296b07be57364e68342f141a75 ld/scripttempl/h8300h.sc
-b3675a21a2701e05a7895b6a28108d25 ld/scripttempl/h8300s.sc
-6c57b9f11a6f50c46ecce9df62061dbf ld/scripttempl/h8500.sc
-39da8240aa7f5aca7b23d93bcf243bb8 ld/scripttempl/h8500b.sc
-a1235b4e692307533adc69d75c98da06 ld/scripttempl/h8500c.sc
-45c5f295e421e663e1843207ae13951a ld/scripttempl/h8500m.sc
-b6ce335a288c23cf897c944a84aafe3b ld/scripttempl/h8500s.sc
-786aba3e828af6519ac1cb21ca5ebd9e ld/scripttempl/hppaelf.sc
-973ec6d5280fe67f4694d07f03b6991e ld/scripttempl/i386beos.sc
-89f55fbb09da1e8728f74f0dfda3192d ld/scripttempl/i386coff.sc
-606d3f3a80d30603f3bbaf5c75ca3bee ld/scripttempl/i386go32.sc
-debc01664da1e6913ca6ee1d350c7c9f ld/scripttempl/i386lynx.sc
-dd4667c5e75a68e5bcc4b0769830974b ld/scripttempl/i386msdos.sc
-f14aed79776fb856704487766477ef6b ld/scripttempl/i960.sc
-ac993ea32406502f14b7089c4239296f ld/scripttempl/m68kaux.sc
-0acb5ea28c8feeee6aae68de5fb62a67 ld/scripttempl/m68kcoff.sc
-5ac24db89fd94088b97b9b2a9b5c6ea2 ld/scripttempl/m68klynx.sc
-66790e6da2a36230461c111c12e5a6fc ld/scripttempl/m88kbcs.sc
-d942ea1043bca95ad16a43702655862c ld/scripttempl/mcorepe.sc
-13a45868ad3e92575be92f1558d1c9b7 ld/scripttempl/mips.sc
-756f010bc1fcebe9cb08b1c8afa66389 ld/scripttempl/mipsbsd.sc
-3219d28558d7ee8ceac00771c0f41aad ld/scripttempl/nw.sc
-305f38a09603aa92f10e6d0b4cfc7680 ld/scripttempl/pe.sc
-47e02e8254495a858dbef6c19c1ac173 ld/scripttempl/pj.sc
-219f146ba7cb4c7346c9abd2a6c78798 ld/scripttempl/ppcpe.sc
-ab0f8d8220dc084233dee358c5e57433 ld/scripttempl/psos.sc
-1ca280b61dcc707ecc1128cfa80b8243 ld/scripttempl/riscix.sc
-cd076d3e4b10af9d6eec06ff494e1c6e ld/scripttempl/sa29200.sc
-e9bf54b19fd6c440995f4bf7a7a34d64 ld/scripttempl/sh.sc
-1231890eaa6427329f4e49ef29a3b632 ld/scripttempl/sparccoff.sc
-a56557b365a2fc1cf4070c7c5663b79c ld/scripttempl/sparclynx.sc
-6277ea502afc8c184eeccce4362d538b ld/scripttempl/st2000.sc
-f9f56c0b4c0548aadba5f30ee7f105fe ld/scripttempl/tic30aout.sc
-581d4b5a31b2f67b8274aa96b201af92 ld/scripttempl/tic30coff.sc
-d66c340121962b6706c37311253b0ea8 ld/scripttempl/tic54xcoff.sc
-b6d1e44df8ff2382dcc53bf1816a4177 ld/scripttempl/tic80coff.sc
-9767716444e270cbeda9727d75e12b39 ld/scripttempl/v850.sc
-922fccd6995f0a119365fd7ceb7b25ce ld/scripttempl/vanilla.sc
-9ef634e16ac4537117ea157867e85207 ld/scripttempl/w65.sc
-474b1c82cd04327e7433dd108c93e239 ld/scripttempl/z8000.sc
-4c78bc0be539fce5e7b7d076f918b568 ld/testsuite/config/default.exp
-3205f2e22c9761eb0c10696266fdaf4d ld/testsuite/ChangeLog
-b9b40d74b338fd9bf9a0999931d1b6e8 ld/testsuite/ld-bootstrap/bootstrap.exp
-4b9f7ea09166acbf0b5d72c88c5b3956 ld/testsuite/ld-cdtest/cdtest-bar.cc
-7d245ef3c98762296b516547243311d0 ld/testsuite/ld-cdtest/cdtest-foo.cc
-6db246fa73606a55b99fd68fc8b67e5d ld/testsuite/ld-cdtest/cdtest-foo.h
-42bc325afd7f1f937f20faa53c9f1490 ld/testsuite/ld-cdtest/cdtest-main.cc
-cfb423f4424fe65c2fe45d99c49ff558 ld/testsuite/ld-cdtest/cdtest.dat
-f0953d15141cfb527557cdf3e2491e89 ld/testsuite/ld-cdtest/cdtest.exp
-d989349ade37c6c902c049861488e70b ld/testsuite/ld-checks/checks.exp
-328c5cac80b76bd422b0b77d5517d175 ld/testsuite/ld-checks/asm.s
-536a4d2e63692344109849b984f9da06 ld/testsuite/ld-checks/script
-8e56f3234a0494775108d96aa30d18da ld/testsuite/ld-elfvers/vers.exp
-5f2c2be170fc2ea8b5f4b1d7e8d72165 ld/testsuite/ld-elfvers/vers1.c
-580fae4dde72b7ecb4ddf9a2fb369b72 ld/testsuite/ld-elfvers/vers1.dsym
-0f0d48d66a7468bb1ea8f0f907f65f74 ld/testsuite/ld-elfvers/vers1.map
-e70fa3cc72507e3c454eeaff68f8c28f ld/testsuite/ld-elfvers/vers1.sym
-d739eb560d4a0f23ab4cf60df5378602 ld/testsuite/ld-elfvers/vers1.ver
-ca85484e74a669868fc7e52fe11d7fb4 ld/testsuite/ld-elfvers/vers13.asym
-e8cdfeee2880948d113226cb5004d92c ld/testsuite/ld-elfvers/vers15.c
-63a46548615c9f270349f427719d1b10 ld/testsuite/ld-elfvers/vers15.dsym
-46f1035151fe2009e5de509d8f7ebaf2 ld/testsuite/ld-elfvers/vers15.sym
-63f2b3b06a796f7a49a90902fbadd4ad ld/testsuite/ld-elfvers/vers15.ver
-d71d95fe36a6bc2f88c952ac37cb990a ld/testsuite/ld-elfvers/vers16.c
-ff7574e34a600f7ae616a4384f98ad0f ld/testsuite/ld-elfvers/vers16.dsym
-d057681641b9fc14e87f35c677b6243d ld/testsuite/ld-elfvers/vers16.map
-92e6d0ae0c0aef2c17de9ef04d6bf7f2 ld/testsuite/ld-elfvers/vers16a.c
-4d81c8fe8c0b5ea33ef6c4001cfee806 ld/testsuite/ld-elfvers/vers16a.dsym
-fb67971a2dd673bf9ae0506459f0bf2d ld/testsuite/ld-elfvers/vers16a.ver
-a2e06e03cf5f45c27839f309a5388b81 ld/testsuite/ld-elfvers/vers17.c
-35a714a53e208be7dd7f246285c4dd30 ld/testsuite/ld-elfvers/vers17.dsym
-db62e32b4b422023390633f11005c406 ld/testsuite/ld-elfvers/vers17.map
-bf382203a5c52664aa6e7728abbbd31a ld/testsuite/ld-elfvers/vers17.ver
-64ce133534d131385b4d10606c423b81 ld/testsuite/ld-elfvers/vers18.c
-3a85e7068b4a30ec5e7585a14b19ce69 ld/testsuite/ld-elfvers/vers18.dsym
-31b6949806df3bd1f959a957bed07ff6 ld/testsuite/ld-elfvers/vers18.map
-99fdeff24e389af67f2125724e3c0c2b ld/testsuite/ld-elfvers/vers18.sym
-3727b5769ad6291477eb3ffaa67eb9d2 ld/testsuite/ld-elfvers/vers18.ver
-039a925919afb81dc1ee342704f38935 ld/testsuite/ld-elfvers/vers19.c
-c1b9e106ce57e5a1d19a19e5ad108ea6 ld/testsuite/ld-elfvers/vers19.dsym
-56042a92306b44d3b68444cb64f9c768 ld/testsuite/ld-elfvers/vers19.ver
-0a2838d86e28cda599478f48e5b5bdfd ld/testsuite/ld-elfvers/vers2.c
-6c04dd6b5a1f83b8ad01dc66e0cef2c9 ld/testsuite/ld-elfvers/vers2.dsym
-0f243904b21ec2e5cda0083a35f9708e ld/testsuite/ld-elfvers/vers2.map
-a597d603357c6c6537d1ee1e806a56d6 ld/testsuite/ld-elfvers/vers2.ver
-2198856c8569cc7494ffe89650a9e63b ld/testsuite/ld-elfvers/vers3.c
-c1b9e106ce57e5a1d19a19e5ad108ea6 ld/testsuite/ld-elfvers/vers3.dsym
-d02949a2cd805d83970ffc3229895e01 ld/testsuite/ld-elfvers/vers3.ver
-eaeb7b786e1af44d384e8c84dc7a2dc4 ld/testsuite/ld-elfvers/vers4.c
-41acbfbc82b54219566366b069b2ce34 ld/testsuite/ld-elfvers/vers4.sym
-e878b24651400ca1fb1bdc0c16a22848 ld/testsuite/ld-elfvers/vers4a.dsym
-41acbfbc82b54219566366b069b2ce34 ld/testsuite/ld-elfvers/vers4a.sym
-e15e85042ec35363e4bc97c35187187a ld/testsuite/ld-elfvers/vers4a.ver
-940d06960890b0eb73114f452b44604a ld/testsuite/ld-elfvers/vers5.c
-3874cf48820bc48dd48d1ee16551af06 ld/testsuite/ld-elfvers/vers6.c
-440222caab8e6f857b77c1ba50d81e84 ld/testsuite/ld-elfvers/vers6.dsym
-b355de4ba2834305bca9bf3b7cc91e70 ld/testsuite/ld-elfvers/vers6.sym
-c6dda7839f06ae8858d0d413c6b436dc ld/testsuite/ld-elfvers/vers6.ver
-8c6338ab91836afb2918ef463e5e899a ld/testsuite/ld-elfvers/vers7.c
-9a7ae246a7154e67158fc0cdcda850d8 ld/testsuite/ld-elfvers/vers7.map
-8d7f1e06f9194fa66402e5efff269754 ld/testsuite/ld-elfvers/vers7a.c
-b3fdb5ca0a4cf57530bf9d838fe825da ld/testsuite/ld-elfvers/vers7a.dsym
-d466ec8b7fcadee36db85cac92c1601a ld/testsuite/ld-elfvers/vers7a.sym
-3cbade7d1c3f4ac6ccbc83cebf13d3f7 ld/testsuite/ld-elfvers/vers7a.ver
-258f61144bcd39b444b75dba182129e6 ld/testsuite/ld-elfvers/vers8.c
-3a208e171858590f5717735bf85432b6 ld/testsuite/ld-elfvers/vers8.map
-36514fcaa2e950e55d5930aa97782ea2 ld/testsuite/ld-elfvers/vers8.ver
-2866447458043d608659fc1fe92f617a ld/testsuite/ld-elfvers/vers9.c
-21dcd2120edc32b5e36974abdc6e1f3e ld/testsuite/ld-elfvers/vers9.dsym
-0d2f6f5317e5732e649745046ab2ab9a ld/testsuite/ld-elfvers/vers9.sym
-ba97850c4c77d6ae99535f328268af22 ld/testsuite/ld-elfvers/vers9.ver
-a1502268321d4816ffa1d1bb1cf335e1 ld/testsuite/ld-elfvsb/elf-offset.ld
-26f7423a78988457f44e1879ec1ec1b1 ld/testsuite/ld-elfvsb/elfvsb.dat
-c7e4e3bb61152914b24ca9d48c7414e8 ld/testsuite/ld-elfvsb/elfvsb.exp
-996a5cc52bf7b1f6356ea1e77aaca26e ld/testsuite/ld-elfvsb/main.c
-a5d04655b47574a63e0d034c2b15ecf8 ld/testsuite/ld-elfvsb/sh1.c
-2a301406fc0d5ccedb5fe48db23d0838 ld/testsuite/ld-elfvsb/sh2.c
-b77b2046bde3f0f47b7ed8412f4e095f ld/testsuite/ld-empic/empic.exp
-e7337619d5f156145600727d89a92cad ld/testsuite/ld-empic/relax.t
-9890e4435b569df5957bf349ae070544 ld/testsuite/ld-empic/relax1.c
-06661c7d74d2309ff2e35b10146bd41e ld/testsuite/ld-empic/relax2.c
-9bb9724eff6590e585dd1969fac15dff ld/testsuite/ld-empic/relax3.c
-c192f60f33fc224b5c2c16766d07994d ld/testsuite/ld-empic/relax4.c
-a8b21f91a17c7ecd1f8ca5b7f00e075b ld/testsuite/ld-empic/run.c
-37bc1d770c9e77e637c46e1ae7992247 ld/testsuite/ld-empic/runtest1.c
-a27a7a90ff46445fa4334638ec71ce3d ld/testsuite/ld-empic/runtest2.c
-75a0208d669a12ec40c6c09cda96a4b4 ld/testsuite/ld-empic/runtesti.s
-e882253a7b0f660986d5794a36239b1b ld/testsuite/ld-scripts/cross1.c
-dacdbdd934565fa39a43a2a2372dfe7f ld/testsuite/ld-scripts/cross1.t
-2bad1250e1d3998f3c2d678b1b90d275 ld/testsuite/ld-scripts/cross2.c
-f4850b548feaf5705683c9096cad261d ld/testsuite/ld-scripts/cross2.t
-6cda0a6cae6d6fe585c175aa49c2578e ld/testsuite/ld-scripts/cross3.c
-8e5623c6b47db95f8e2be269f12dd48f ld/testsuite/ld-scripts/crossref.exp
-3987c7a541be314eb899fb320d1236aa ld/testsuite/ld-scripts/defined.exp
-89dc613e3ce213bd756b77d022667dac ld/testsuite/ld-scripts/defined.s
-d3b1800f46a71805045a3a5732fd42bc ld/testsuite/ld-scripts/defined.t
-5dc9106fd27359a7db37212f56b0c101 ld/testsuite/ld-scripts/phdrs.exp
-9af38df1b2580b0ee309b0acfb185537 ld/testsuite/ld-scripts/phdrs.s
-56a4859269de48bfbf859d4d0a327e9f ld/testsuite/ld-scripts/phdrs.t
-b4fdfa8cd5673593833160a46be7b211 ld/testsuite/ld-scripts/script.exp
-8ef222fed2cbd6222ef9c4bfb5caceb3 ld/testsuite/ld-scripts/script.s
-b9bc56b095f61ceef7cb9a948be41609 ld/testsuite/ld-scripts/script.t
-a673788e6a586931f65fee9d8964d0b8 ld/testsuite/ld-scripts/scriptm.t
-b17503e5b20c63c8c98c18694e77f1c9 ld/testsuite/ld-scripts/sizeof.exp
-de2cf65f9506880e63f0fdd46bb23c12 ld/testsuite/ld-scripts/sizeof.s
-feffaafc250ae18dfdd493f8a6c4f2c6 ld/testsuite/ld-scripts/sizeof.t
-c135cc5906cdf4cfe49d4c51df63c515 ld/testsuite/ld-scripts/weak.exp
-3591b42540bac07bfbb66f7f0ce59d88 ld/testsuite/ld-scripts/weak.t
-8df46a87530dbe689785bcc1c1a75da7 ld/testsuite/ld-scripts/weak1.s
-b3bb044bcdc10e3eccef47d0c2c2429e ld/testsuite/ld-scripts/weak2.s
-0490e9a40c7efa469100cf3f29ea8143 ld/testsuite/ld-selective/3.cc
-3f6043e6b6bd49e760b9e753b6aaf9ac ld/testsuite/ld-selective/1.c
-237d849095a360c8cad108dd7c84812b ld/testsuite/ld-selective/2.c
-dcfb7a28e3bdf5d5453248236fbd60bc ld/testsuite/ld-selective/4.cc
-a2c9c1152a0133516e4640ed96422473 ld/testsuite/ld-selective/5.cc
-c5363d796238787cdb2c6ae148b90831 ld/testsuite/ld-selective/selective.exp
-fe57a8477f445b968630a746d538da92 ld/testsuite/ld-sh/sh.exp
-1480d5643c4a3a7456700440e9f108dc ld/testsuite/ld-sh/sh1.s
-4a6b928d31480c42bc368db1a2d729b3 ld/testsuite/ld-sh/sh2.c
-486895674299bb2c523133e56a567c1f ld/testsuite/ld-sh/start.s
-a1502268321d4816ffa1d1bb1cf335e1 ld/testsuite/ld-shared/elf-offset.ld
-662fbaf1e1bfcf9e0f69ece262c1fbc9 ld/testsuite/ld-shared/main.c
-1ac7636415298be4ec10d57894d7bd92 ld/testsuite/ld-shared/sh1.c
-dda81aa1c99d9fd983ae39378b5b69fd ld/testsuite/ld-shared/sh2.c
-7ac9ed1cf3e4b23bd77743315f0560d5 ld/testsuite/ld-shared/shared.dat
-8309ff0409c524b5958d7ffb2295f541 ld/testsuite/ld-shared/shared.exp
-8b38128b19d7be0a9f143a3fae14669f ld/testsuite/ld-shared/sun4.dat
-e8d8c5ef094b26b46377375f8ef076c3 ld/testsuite/ld-shared/symbolic.dat
-bf16787cbff593c9377800bda68bc12b ld/testsuite/ld-shared/xcoff.dat
-8541a6beb8232366c133e9097a10c8d2 ld/testsuite/ld-srec/srec.exp
-ff2b78b0df3a6bc56644e35ec4f068bd ld/testsuite/ld-srec/sr1.c
-6524623299b50b9299f4b3fca543b0fa ld/testsuite/ld-srec/sr2.c
-16d9ac8f3038072368a8550eb60b5d26 ld/testsuite/ld-srec/sr3.cc
-b619c6e42cb950ef08a2be4baed7e558 ld/testsuite/ld-undefined/undefined.c
-80908f8a2cc2983b2e57ab40e0505045 ld/testsuite/ld-undefined/undefined.exp
-68086317a3885311286459eb9083c71c ld/testsuite/ld-undefined/weak-undef.exp
-d46f02756d74cac491eccd91c9497ca3 ld/testsuite/ld-undefined/weak-undef.s
-ff2b7f892a6ef004c2076f2bab575ec0 ld/testsuite/ld-undefined/weak-undef.t
-29efa44de09187dfbd1badee054c2ffd ld/testsuite/ld-versados/versados.exp
-a3dd5e83356444e20dfff2b6986f9701 ld/testsuite/ld-versados/t1-1.ro
-20fa39afdcf19846ef54b8c8a63c09fa ld/testsuite/ld-versados/t1-2.ro
-750043b1377753643d66f2ea010d1d64 ld/testsuite/ld-versados/t1.ld
-1ea1a397873490e5a225282b08911b79 ld/testsuite/ld-versados/t1.ook
-b73a148ff92b3b9f50118dedddc8e9aa ld/testsuite/ld-versados/t2-1.ro
-6521d61c4bf4f500cb868ded9a47044e ld/testsuite/ld-versados/t2-2.ro
-ed2b6b448335acf507dc34b5a01710d8 ld/testsuite/ld-versados/t2-3.ro
-7020c6c2928c89ca798f517226862f1c ld/testsuite/ld-versados/t2.ld
-fb1e9ddf26ad5af0d34950d762f68ed9 ld/testsuite/ld-versados/t2.ook
-d8417145277c2f71b3d7c058472f3577 ld/testsuite/lib/ld-lib.exp
-e2677a696ed870d444e53cf69e8a69f6 ld/configdoc.texi
-7b65854f594c84e80295173de277b3dc libiberty/config/mh-cxux7
-4004fdcde347fda58406b4b84a995c66 libiberty/config/mh-aix
-b2eafdc4d4e0928a5d0e89d5f6fe116c libiberty/config/mh-beos
-044204f5b4bcac5eae2face0602129ae libiberty/config/mh-fbsd21
-904bdcd9daf97fa55a9ca8901ffe7435 libiberty/config/mh-openedition
-38e76da568ab25260754fdb9d5080513 libiberty/config/mh-windows
-f30a9716ef3762e3467a2f62bf790f0a libiberty/COPYING.LIB
-536f1ea00e95287882c108f51be00df5 libiberty/ChangeLog
-d43770145fb3c3433ac33986770a7b36 libiberty/Makefile.in
-08cc0e5f8cd2cc6bc1e4114011be131b libiberty/README
-5ca0eba5b33e5f6952114bfe84c167b9 libiberty/aclocal.m4
-de46742edca3a9276eefa5ae8fdee5eb libiberty/alloca-conf.h
-18b3e90c1496f1db337b93a2c3bda513 libiberty/alloca.c
-d54574b77c40ff38a37139b4df4918c8 libiberty/argv.c
-d837d38495c38d45d1c8bd94eda40b39 libiberty/asprintf.c
-d89da155295f797db9f987220ef9af4f libiberty/atexit.c
-0ec74e2bf6de5ac2ee096696b3f7dfb5 libiberty/basename.c
-8536a9fe63d5270026766fb6a833c0e3 libiberty/bcmp.c
-37f840db36868cae15135e9beb9d9c5b libiberty/bcopy.c
-c5855ab06709314b196b5ceb7a7cb5dc libiberty/bsearch.c
-3e539dda7281866347213ed444830f9b libiberty/bzero.c
-fd01fef67ce311c2462b1957ff06282e libiberty/calloc.c
-815fb49e28a8980f8b838aaecaefa891 libiberty/choose-temp.c
-4c081fe106364d829d16c720e3a99ad0 libiberty/clock.c
-6abc10aedbbd94274f97174a9ec454dd libiberty/concat.c
-fdaf5fdc2a84ff34103604588aea1a3b libiberty/config.h-vms
-bb2688eeee0799b47128613436b5731f libiberty/config.in
-6ba918af7eec27cd147903518d519d46 libiberty/config.table
-fde4aae2aac71c6837d5db1db1f4b880 libiberty/configure
-9cc359fd1437d6afd69b5169104ddffd libiberty/configure.in
-8493d27a97881009393ceec1aa431f0e libiberty/copysign.c
-4427c696ecc360a813ecf063589f84a3 libiberty/cp-demangle.c
-9463d7142e481f2a98e594901ca5a9f6 libiberty/cplus-dem.c
-231d3202aadb19e1d3209fa0797b4ec4 libiberty/dyn-string.c
-62121149a1d62bef125c75380131b180 libiberty/fdmatch.c
-85de4ab7bf13ff400ecbd15001f91950 libiberty/floatformat.c
-5a0e7522053fc29b178bcd5ee644aaee libiberty/fnmatch.c
-3508056d5c091a4a066ef6895b66a63c libiberty/getcwd.c
-2deefd98fad4fd25e2ed0facd2e5518f libiberty/getopt.c
-5fd11388f488b53ec69eeb3e71161636 libiberty/getopt1.c
-f4ed35bf0db2796c07db055f638abec8 libiberty/getpagesize.c
-9fc32d36b7617e6393b8d8aa4dc8a5e0 libiberty/getpwd.c
-b9bdf217753be4c1315c3a9689983290 libiberty/getruntime.c
-e05e129c9bbfca9c792724adff237e85 libiberty/hashtab.c
-d707920a44f45525dc4c6e310926a210 libiberty/hex.c
-004477cba1e0a85a2d443bee4a0af269 libiberty/index.c
-4c4b7edb35b7ffbbba5e7e2ec399d559 libiberty/insque.c
-e331b31ce1cbf27a44f2fbeb54fa7b17 libiberty/makefile.vms
-d985e08160b8aec6f4ba23175400181c libiberty/md5.c
-cdca3f90987260a7a860aee136ca740a libiberty/memchr.c
-2439abd355027df270d48733215f891a libiberty/memcmp.c
-f59c3c95c9ab8b66dfccaa3d7ba1f878 libiberty/memcpy.c
-8dda7ebe5e2c3c6c28aa53e06b283fcb libiberty/memmove.c
-57043300d663328adbb1b40c2cd7793e libiberty/memset.c
-bd2a139d55d7bbaeee671b50a45992fa libiberty/mkstemps.c
-969668698375a7ecf08bc086b9613a31 libiberty/mpw-config.in
-54c65d1bafd7d8d29b9d29761d977020 libiberty/mpw-make.sed
-9de6f56befd6350286f5a42836a8433a libiberty/mpw.c
-7897e43bedd2def4beb6eb73003efa68 libiberty/msdos.c
-9fbb504341d8982f9439a168b9ef825e libiberty/objalloc.c
-41b517bd87e0312eb4f1c72f641c2008 libiberty/obstack.c
-34f70650591a3e50bf80a47259b21063 libiberty/partition.c
-170b24f0daa4451a1a0c61badc6a2592 libiberty/pexecute.c
-1c26add2214f8d43e42a3ef76e0a2c4e libiberty/putenv.c
-892047691cd75e110b6c995047656068 libiberty/random.c
-9afa19a52697f0d83a8f94c8f55b0140 libiberty/rename.c
-b751b6a5c19944eded4cfcba1fd527df libiberty/rindex.c
-438e62574b58fc80136eb9b43aa4d6b7 libiberty/safe-ctype.c
-fb5ea509ef834b0fae40b4de9e121a4e libiberty/setenv.c
-1f3c59265795bbeeaa0682e30ec008fa libiberty/sigsetmask.c
-bcd38bbff8e80df6e908d7ee57d7b681 libiberty/sort.c
-4a3173c26ad8cb30302e1425135647f8 libiberty/spaces.c
-ea6978858b89cbdbf2bb796522e38603 libiberty/splay-tree.c
-406f9df3aca1c9cb104e35d93aa5f19a libiberty/strcasecmp.c
-25493d01cf01dddc7326eb6bb39b59d7 libiberty/strchr.c
-352f6f1cb2e6025866d406ede3a475c0 libiberty/strdup.c
-db0fc51193ca195a3f588e5184e1987a libiberty/strerror.c
-00040f08f420f8336e67840133efdd87 libiberty/strncasecmp.c
-2e333001f8ef8e01ae2f153e51b59ce4 libiberty/strncmp.c
-19847187ca2ed7b38342718371b57a89 libiberty/strrchr.c
-022d5e8aa132e524de1a9e087867161e libiberty/strsignal.c
-58984b80dbe4d3364feda5c675b3e23c libiberty/strstr.c
-0cd5eef7fa7708a43350f98eacf8776a libiberty/strtod.c
-a0e7c73c62ba8a24e1590c27e34c59d3 libiberty/strtol.c
-e06d6526f14dcd0834827520331fef16 libiberty/strtoul.c
-d0b4c29a87478edc4c2c69c3e9d2be0a libiberty/tmpnam.c
-8824ff84682ec60eca212b518429db18 libiberty/vasprintf.c
-1e46cffdcdf7e68d72a8f24c71c04d08 libiberty/vfork.c
-280fb05a979214b0876be4c9dc7d4061 libiberty/vfprintf.c
-9a46f8a6bd6b911849f209d09e94b66f libiberty/vmsbuild.com
-893d859616bab673df0504cb02a7feec libiberty/vprintf.c
-d187e50a7a7817fcbf2bbd6595093756 libiberty/vsprintf.c
-52860722750d8633eb78d1dbe6db4f5b libiberty/waitpid.c
-5caf61856a76a6eb1cb52bb1c86501c5 libiberty/xatexit.c
-357b147749e719e3c69315ac83c6a4bf libiberty/xexit.c
-e404c730a2531595d5fea1c5da957e98 libiberty/xmalloc.c
-b0feb91e581c43d5ae41b0576e877ab3 libiberty/xmemdup.c
-6ec02ce9b4802dd6939200d4d2faba6a libiberty/xstrdup.c
-e70805298181e0f55a52a64b17d72904 libiberty/xstrerror.c
-f209fdb2c52db4462c254e6b8d89f2ee libiberty/testsuite/Makefile.in
-6319e17edb27c399c30f1596c2ce41b5 libiberty/testsuite/demangle-expected
-5cd31fc5e2e642e2de1c3d6a0792b431 libiberty/testsuite/regress-demangle
-cc28484945e89f4d469672c4b1beaabe libtool.m4
-30c8f1fcca77253cf9e9657caac44c12 ltcf-c.sh
-3a3fcd8d6f8accd80d1d41301045b2d8 ltcf-cxx.sh
-1bf2c254103b812c60e6c8e8b90e4c83 ltcf-gcj.sh
-9dedd8a70b17964941f1446787f61c2d ltconfig
-906ef7ec1319467f83cfc91083949b01 ltmain.sh
-734690a438420e8479e15d8ee6971792 makefile.vms
-393d298125f8e03c13364afe447b308d missing
-fbe2467afef81c41c166173adeb0ee20 mkdep
-bc994884d395541d40c4192919a89a21 mkinstalldirs
-c71ddf72c059891ca0bd1727f5aa0de1 move-if-change
-a8fe1ab072e42efff2a0ec883d91130b mpw-README
-af52692753387da2241fc4bc6ccec120 mpw-build.in
-5479cbb3e13987fe2170b7a403b82e8f mpw-config.in
-d186332a893eacec29defecdc3524ecf mpw-configure
-96312bdd41def6a5946784d468dc29d3 mpw-install
-7476f5d64c6678694b06bc7aba53fb97 opcodes/po/POTFILES.in
-bfb5c178c2404196ab54d7532a61e3d4 opcodes/po/Make-in
-87185f7dbaa4e4671dd4d64d491ed41e opcodes/po/opcodes.pot
-5d10e6815b371dfeb9c53be2e06fc199 opcodes/ChangeLog
-47912714837729ee35d5261ffff2941c opcodes/ChangeLog-9297
-2b70061d7488180442b52de1c9a9e819 opcodes/ChangeLog-9899
-d618facc3e8ce8bf3d02ba452e1be6ab opcodes/MAINTAINERS
-253bd0a237fe51f196cde6b19edb1d19 opcodes/Makefile.am
-2008005afc9d925a582285b3debb7968 opcodes/Makefile.in
-84f5802b0b8a97be111d90fbe1eb5bc1 opcodes/a29k-dis.c
-901749e9292ba1f5f109f5cc195bfe8b opcodes/acinclude.m4
-1738493e94ddf315a5f49742feabafdd opcodes/aclocal.m4
-edc549a6c86437daebd9ca4d85dac4d1 opcodes/alpha-dis.c
-d57fd8d45f9ef301948abe020b8ea6ed opcodes/alpha-opc.c
-407f2ac5f227ea3ab0fdbc29a2c157b8 opcodes/arc-dis.c
-b35daf399df5036ff496742fbc5e08ec opcodes/arc-dis.h
-8b5ec96c147acb9028e535b3ad80525b opcodes/arc-ext.c
-2c085be449e338c2bda530572029c8c9 opcodes/arc-ext.h
-6406fb8a25796d8042fcfbea50575876 opcodes/arc-opc.c
-9e2b20ce7eeb3a319398ce3eb1d478f7 opcodes/arm-dis.c
-011a87a896e0f67c2954e823b7ae037f opcodes/arm-opc.h
-598016dc5a3065f79d352c18f24761cb opcodes/avr-dis.c
-e9c941efc984cb22a689256e26e43e14 opcodes/cgen-asm.c
-84c6a72bc58e3efe77abaa65e9190f86 opcodes/cgen-asm.in
-d6cf591b1c7d4d3dbe9306ae800c132f opcodes/cgen-dis.c
-7d118a2ff1141006931f55bffcd8e2ea opcodes/cgen-dis.in
-b75826a34eee8fb6a90848adcc4377f0 opcodes/cgen-ibld.in
-0086c001b35c9036a2d8cacae262aff4 opcodes/cgen-opc.c
-95f1a3447a2b756b0f3a2b1cbdb98a16 opcodes/cgen.sh
-0063bd27512e913f600d7732d1f6b455 opcodes/config.in
-64774095a357e0c5dc0968329dff579c opcodes/configure
-bcf375e26bbff52dc5d8df5f33a648d4 opcodes/configure.in
-a2f28fa183e6adf5e888277d00a09ec0 opcodes/cris-dis.c
-f9210ed755224660483db100711cd468 opcodes/cris-opc.c
-3ff7eece27f0263ad962483020d1596d opcodes/d10v-dis.c
-0557da1786712b947f0f29cd6141d7e1 opcodes/d10v-opc.c
-b8ff24c42fbc4e3520c40784e6d870d6 opcodes/d30v-dis.c
-0eebf1cce2cfd05039625773a97b8d40 opcodes/d30v-opc.c
-003af092c5d632b4f4d90904faecd02e opcodes/dep-in.sed
-21a789d7e4f7c00d4658aa7894ebb5f2 opcodes/dis-buf.c
-2900c6f1a9f22b5291942c8ab5a1cc38 opcodes/disassemble.c
-8575543eddea6b4909ecdd4aa7f96382 opcodes/fr30-asm.c
-91642ad67bfffb844412fe3fc162732b opcodes/fr30-desc.c
-44cf09ad36fa37532727361c3d655469 opcodes/fr30-desc.h
-621fc334dc302583ba0d3936c47d73f1 opcodes/fr30-dis.c
-7e3a44e24211aa6f1791a28192093777 opcodes/fr30-ibld.c
-75fd4b7a627f6abf22338ce0f2b5744b opcodes/fr30-opc.c
-751349749f75da04fc8ca9f007346f03 opcodes/fr30-opc.h
-734b36ee7995c1e6bc93a338b9d66af2 opcodes/h8300-dis.c
-dd0cbe2eae0c7d890d713979641e0836 opcodes/h8500-dis.c
-be7eeeaaf1ac843e1b1b862a2abbaeab opcodes/h8500-opc.h
-9e4136c02128d5cffedc2b42b26e13f8 opcodes/hppa-dis.c
-8baa539d215e542bf822c36afd58d1d3 opcodes/i370-dis.c
-f2ffaf6eaf3da84601fa3e11c75cb3b6 opcodes/i370-opc.c
-5e6140717c388d0ba1193e3b12da9284 opcodes/i386-dis.c
-325271abed39e7901f8e311329b7cd40 opcodes/i860-dis.c
-e09d15cb2de4a4b71fc524e5dca3ea33 opcodes/i960-dis.c
-f0469cd9c1a3c87e3bfd3a24c910f4c6 opcodes/ia64-asmtab.c
-4c555d2fbf3bb0d7002a8108f7e28656 opcodes/ia64-asmtab.h
-8384cb8430b26dfecca57f6cd6828fcd opcodes/ia64-dis.c
-a9d29c4a2268f28092c985c7ad75a13d opcodes/ia64-gen.c
-c36c8bd413a36bdbb0769eb453f96233 opcodes/ia64-ic.tbl
-0d52960c8b9c111364271ff7c52049b6 opcodes/ia64-opc-a.c
-8bc6bf983afd8d19ecbfd3956b3af1c2 opcodes/ia64-opc-b.c
-8c9afa7e15881357af5fe46b1f5d80a4 opcodes/ia64-opc-d.c
-c617e97d72c9f654b0305faf8b4ae10c opcodes/ia64-opc-f.c
-c7e9b3273a3c819c81ad3807e3f86d43 opcodes/ia64-opc-i.c
-489e185e02196bd26948258825b9d5ce opcodes/ia64-opc-m.c
-5ade2d80b63adb27604e529c84ec0bf1 opcodes/ia64-opc-x.c
-729f8bb05396f283169ef6d5cb5c62d1 opcodes/ia64-opc.c
-354757cd4b638d7e50f0b34fd6e2c87a opcodes/ia64-opc.h
-be62c652f94c6c4e4c7339a42025c43a opcodes/ia64-raw.tbl
-b3d7452b4310332b7974b34b09f65a6d opcodes/ia64-war.tbl
-a4eed6589f8feed99206080f7362eb7a opcodes/ia64-waw.tbl
-a9d541dd9eccd3a1ea0415880b9521a7 opcodes/m10200-dis.c
-cdf93ebf301a6f4b4072b2dfe4b56083 opcodes/m10200-opc.c
-e999a55493e5bb73dccd2c2f49245bcf opcodes/m10300-dis.c
-95476f50fb47e0c8423e8cdba158b341 opcodes/m10300-opc.c
-c3c8430e52ed581bb9703f342223cfc1 opcodes/m32r-asm.c
-c4ee7ef5b002da4ace8feed1be237d02 opcodes/m32r-desc.c
-4842ca40e0cc8f7213279fd51fbb360c opcodes/m32r-desc.h
-4d8e90904be8aecf6edf3f9e4affb910 opcodes/m32r-dis.c
-452bd9f0a50294c59e6d9ded993b8934 opcodes/m32r-ibld.c
-519f99255995a52ea031a68947874d03 opcodes/m32r-opc.c
-065e44be10d96ee13c9d99fbd652cb4b opcodes/m32r-opc.h
-b04da92be306da6813f23b988280eac7 opcodes/m32r-opinst.c
-750ee68160890cb6bb8dc85f42f8fab7 opcodes/m68hc11-dis.c
-534406cb1900704eb5bd5a8ab7c15362 opcodes/m68hc11-opc.c
-b6d13f9c4898cd69610db32745c555a0 opcodes/m68k-dis.c
-f95df4c61edcb7a72e97c651be941245 opcodes/m68k-opc.c
-ac754e1e474d8bbd929f0a2f76026917 opcodes/m88k-dis.c
-d129eed92c6947db4372b285656ef9a1 opcodes/makefile.vms
-deddfa1e5bfc0d1cd272bb335c44f6ed opcodes/mcore-dis.c
-5d1d73c7fcd371c3a4bb39d4a8e5cb44 opcodes/mcore-opc.h
-378f487e8bd120f93fc5c8df05f10435 opcodes/mips-dis.c
-3637f95bf25a1298bdebbbcc1ef8b2be opcodes/mips-opc.c
-c5f2a79141b09a53e3430582f3559b7b opcodes/mips16-opc.c
-5de239a139c71421a7cce634f8deca83 opcodes/mpw-config.in
-031902d455df71012bd4603e5d616ca6 opcodes/mpw-make.sed
-8720ca17359e24396f182810719f226a opcodes/ns32k-dis.c
-81a682289129e3eefb7cfd6ce9d10d92 opcodes/opintl.h
-5fd78854f081acef734b6313c9db3ed8 opcodes/pj-dis.c
-7d29ed3a2cb830feadb1382aa3895b6f opcodes/pj-opc.c
-ebd0146069b8dc7f178514f29b861060 opcodes/ppc-dis.c
-1959550f862696159952f6d1cd19a589 opcodes/ppc-opc.c
-81aca074f5c2f015f2607f33e4e2766f opcodes/sh-dis.c
-7a4b5aac9ceabeaed3863691a70e6ab6 opcodes/sh-opc.h
-ff77e2ad868c4cb2a913a04bbda42594 opcodes/sparc-dis.c
-c35af9a7f84cf1a894d7595d914bba1d opcodes/sparc-opc.c
-1ded054093de910d9786c62bc4fe8cc6 opcodes/stamp-h.in
-8e4842844d864baf1d2056cf0651c2df opcodes/sysdep.h
-5909eef2aabc61a8d5e9a71c9734defe opcodes/tic30-dis.c
-368332708cdfe65a7195a852455d2e52 opcodes/tic54x-dis.c
-971f75d91d6ba40f2040d21eb6f80b1f opcodes/tic54x-opc.c
-0bbe03c2f65c1128fd6a0b0916315af3 opcodes/tic80-dis.c
-2225052326dd29b94a99ca86fb0086d8 opcodes/tic80-opc.c
-b0eefa85cb7a554ecd2056548d6d1b28 opcodes/v850-dis.c
-5e2518c50d12ebda6e1fc9dd836c3602 opcodes/v850-opc.c
-9f55832c633c46d55657de6006a6a1f0 opcodes/vax-dis.c
-3cda2aff2cc4a955064f8a3f58a1887f opcodes/w65-dis.c
-988ea26bcea3fd0093c354df06c24c1a opcodes/w65-opc.h
-390692c1210bfd6864093e5dda087337 opcodes/z8k-dis.c
-2bab6fea415ef1dbac1f958c912bc0d2 opcodes/z8k-opc.h
-98b13794afa1b64b2c38411a2c72d404 opcodes/z8kgen.c
-0b03c02d551d6f9d9db0c64ddde56500 setup.com
-7d7855ad10def38a17850f5b17d3a9dd symlink-tree
-0a8fa11d23b640dd1b15a36f8a7f0d3f texinfo/texinfo.tex
-7588c5103af27cc93537977f059f52dc ylwrap
diff --git a/contrib/binutils/opcodes/acconfig.h b/contrib/binutils/opcodes/acconfig.h
deleted file mode 100644
index ef2f4966c1bd..000000000000
--- a/contrib/binutils/opcodes/acconfig.h
+++ /dev/null
@@ -1,6 +0,0 @@
-
-/* Name of package. */
-#undef PACKAGE
-
-/* Version of package. */
-#undef VERSION
diff --git a/contrib/binutils/opcodes/sparc-opc.c b/contrib/binutils/opcodes/sparc-opc.c
index 94708988eafa..22f18fadb5d1 100644
--- a/contrib/binutils/opcodes/sparc-opc.c
+++ b/contrib/binutils/opcodes/sparc-opc.c
@@ -1273,72 +1273,110 @@ cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */
#define FM_DF 2 /* v9 */
#define FM_QF 3 /* v9 */
-#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags, v9 }, \
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags, v9 }
+#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags, v9 }
-#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
+#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
/* FIXME: use fmovicc/fmovfcc? */ /* v9 */
-#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
-
-#define fmovicc(suffix, cond, flags) /* v9 */ \
-fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags), \
-fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags), \
-fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
-
-#define fmovfcc(suffix, fcond, flags) /* v9 */ \
-fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags), \
-fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags), \
-fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
-
-#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
-fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags), \
-fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags), \
-fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
-
-/* v9 */ fmovcc ("a", CONDA, FCONDA, 0),
-/* v9 */ fmovicc ("cc", CONDCC, 0),
-/* v9 */ fmovicc ("cs", CONDCS, 0),
-/* v9 */ fmovcc ("e", CONDE, FCONDE, 0),
-/* v9 */ fmovcc ("g", CONDG, FCONDG, 0),
-/* v9 */ fmovcc ("ge", CONDGE, FCONDGE, 0),
-/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
-/* v9 */ fmovicc ("gu", CONDGU, 0),
-/* v9 */ fmovcc ("l", CONDL, FCONDL, 0),
-/* v9 */ fmovcc ("le", CONDLE, FCONDLE, 0),
-/* v9 */ fmovicc ("leu", CONDLEU, 0),
-/* v9 */ fmovfcc ("lg", FCONDLG, 0),
-/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
-/* v9 */ fmovcc ("n", CONDN, FCONDN, 0),
-/* v9 */ fmovcc ("ne", CONDNE, FCONDNE, 0),
-/* v9 */ fmovicc ("neg", CONDNEG, 0),
-/* v9 */ fmovcc ("nz", CONDNZ, FCONDNZ, F_ALIAS),
-/* v9 */ fmovfcc ("o", FCONDO, 0),
-/* v9 */ fmovicc ("pos", CONDPOS, 0),
-/* v9 */ fmovfcc ("u", FCONDU, 0),
-/* v9 */ fmovfcc ("ue", FCONDUE, 0),
-/* v9 */ fmovfcc ("ug", FCONDUG, 0),
-/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
-/* v9 */ fmovfcc ("ul", FCONDUL, 0),
-/* v9 */ fmovfcc ("ule", FCONDULE, 0),
-/* v9 */ fmovicc ("vc", CONDVC, 0),
-/* v9 */ fmovicc ("vs", CONDVS, 0),
-/* v9 */ fmovcc ("z", CONDZ, FCONDZ, F_ALIAS),
-
-#undef fmoviccx /* v9 */
-#undef fmovfccx /* v9 */
-#undef fmovccx /* v9 */
+#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags | F_FLOAT, v9 }, \
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags | F_FLOAT, v9 }, \
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
+
+/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0),
+/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0),
+/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0),
+/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0),
+/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0),
+/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0),
+/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0),
+/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0),
+/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0),
+/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0),
+/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0),
+/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0),
+/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0),
+/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0),
+/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0),
+/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0),
+/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0),
+/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0),
+/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS),
+/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS),
+/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS),
+/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0),
+/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0),
+/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0),
+/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0),
+/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0),
+/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0),
+/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0),
+/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0),
+/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0),
+/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0),
+/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0),
+/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0),
+/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0),
+/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0),
+/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0),
+/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS),
+/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS),
+/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS),
+/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0),
+/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0),
+/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0),
+/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0),
+/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0),
+/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0),
+/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0),
+/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0),
+/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0),
+/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
+/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
+/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
+/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0),
+/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0),
+/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0),
+/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0),
+/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0),
+/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0),
+/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0),
+/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0),
+/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0),
+/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0),
+/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0),
+/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0),
+/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0),
+/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0),
+/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0),
+/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0),
+/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0),
+/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0),
+/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0),
+/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0),
+/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0),
+/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0),
+/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0),
+/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0),
+/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0),
+/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0),
+/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0),
+/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0),
+/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0),
+/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0),
+/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS),
+/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS),
+/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS),
+
#undef fmovicc /* v9 */
#undef fmovfcc /* v9 */
#undef fmovcc /* v9 */