diff -uprN binutils-2.11.90.0.4/ChangeLog binutils-2.11.90.0.5/ChangeLog --- binutils-2.11.90.0.4/ChangeLog Sun Apr 1 18:51:04 2001 +++ binutils-2.11.90.0.5/ChangeLog Fri Apr 13 11:17:38 2001 @@ -1,3 +1,8 @@ +2001-04-12 Alexandre Oliva + + * ltconfig, ltmain.sh, libtool.m4, ltcf-c.sh, ltcf-cxx.sh, + ltcf-gcj.sh: Upgraded to libtool 1.4a 1.641.2.226. + 2001-04-01 Alexandre Oliva * Makefile.in (CXX_FOR_TARGET_FOR_RECURSIVE_MAKE, RECURSE_FLAGS): diff -uprN binutils-2.11.90.0.4/bfd/ChangeLog binutils-2.11.90.0.5/bfd/ChangeLog --- binutils-2.11.90.0.4/bfd/ChangeLog Fri Mar 30 22:40:49 2001 +++ binutils-2.11.90.0.5/bfd/ChangeLog Sat Apr 14 12:40:46 2001 @@ -1,3 +1,91 @@ +2001-04-14 Jakub Jelinek + + * section.c (STD_SECTION): Add entsize. + +2001-04-13 H.J. Lu + + * section.c (SEC_MERGE): Define new flag for merging. + (SEC_STRINGS): Likewise. + (entsize): New field. + +2001-04-13 Roger Sayle + + * coff-i386.c (TARGET_SYM): SEC_READONLY is an applicable section + flag on pe-i386 targets. + +2001-04-13 Jakub Jelinek + + * libbfd-in.h (_bfd_merge_section): New. + (_bfd_write_merged_section): New. + (_bfd_merged_section_offset): New. + * libbfd.h: Rebuilt. + * linker.c (_bfd_generic_link_output_symbols): Handle + discard_sec_merge. + * aoutx.h (aout_link_write_symbols): Likewise. + * pdp11.c (aout_link_write_symbols): Likewise. + * elflink.h (elf_link_add_object_symbols): Call _bfd_merge_section. + (elf_bfd_final_link): Adjust global symbols pointing into SEC_MERGE + sections. + (elf_link_sec_merge_syms): New. + (elf_link_input_bfd): Call _bfd_merged_section_offset + and _bfd_write_merged_section. + Handle discard_sec_merge. + * elf-bfd.h (struct elf_link_hash_table): Add merge_info + field. + (struct bfd_elf_section_data): Likewise. + * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_MERGE and + SEC_STRINGS section flags and entsize from their ELF counterparts. + (_bfd_elf_link_hash_table_init): Initialize merge_info. + (elf_fake_sections): Set SHF_MERGE, SHF_STRINGS and sh_entsize + from their BFD counterparts. + * merge.c: New file. + * Makefile.am: Add strtab.lo. + * Makefile.in: Rebuilt. + +2001-04-09 Hans-Peter Nilsson + + * elflink.h (elf_fix_symbol_flags): For non-default visibilities, + only hide symbols marked STV_INTERNAL or STV_HIDDEN. + +2001-04-05 Steven J. Hill + + * config.bfd (mips*el*-*-linux-gnu*): Use traditional little + endian MIPS ELF target. + * config.bfd (mips*-*-linux-gnu*): Use traditional big endian + MIPS ELF target. + + * configure.in (bfd_elf64_tradbigmips_vec): New. Traditional + 64bit big endian MIPS ELF target. + (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little + endian MIPS ELF target. + * configure: Regenerated. + + * elf32-mips.c (IRIX_COMPAT): Handle traditional 64bit and + little endian targets. + (mips_elf_sym_is_global): Handle traditional targets. + + * elf64-mips.c (bfd_elf64_tradbigmips_vec): New. Traditional + 64bit big endian MIPS ELF target. + (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little + endian MIPS ELF target. + + * targets.c: (_bfd_target_vector): Add bfd_elf64_tradbigmips_vec + and bfd_elf64_tradlittlemips_vec. + +2001-04-05 David Mosberger + + * elf32-i386.c (elf_i386_fake_sections): Treat ".reloc" as an + ordinary "progbits" section. + +2001-04-04 Alan Modra + + * elflink.h (elf_fix_symbol_flags): Call elf_backend_hide_symbol + when -Bsymbolic causes a symbol to no longer need a .plt entry. + +2001-04-03 David Mosberger + + * efi-app-ia32.c (ALIGN_SECTIONS_IN_FILE): Deleted. + 2001-03-30 H.J. Lu * efi-app-ia32.c (PEI_TARGET_SUBSYSTEM): Rename from ... diff -uprN binutils-2.11.90.0.4/bfd/Makefile.am binutils-2.11.90.0.5/bfd/Makefile.am --- binutils-2.11.90.0.4/bfd/Makefile.am Fri Mar 23 14:37:27 2001 +++ binutils-2.11.90.0.5/bfd/Makefile.am Fri Apr 13 11:47:19 2001 @@ -30,14 +30,14 @@ BFD_LIBS = \ format.lo init.lo libbfd.lo opncls.lo reloc.lo \ section.lo syms.lo targets.lo hash.lo linker.lo \ srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \ - dwarf2.lo + merge.lo dwarf2.lo BFD_LIBS_CFILES = \ archive.c archures.c bfd.c cache.c coffgen.c corefile.c \ format.c init.c libbfd.c opncls.c reloc.c \ section.c syms.c targets.c hash.c linker.c \ srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \ - dwarf2.c + merge.c dwarf2.c # This list is alphabetized to make it easier to keep in sync # with the decls and initializer in archures.c. @@ -780,6 +780,7 @@ stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab.def stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def +merge.lo: merge.c $(INCDIR)/filenames.h dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h diff -uprN binutils-2.11.90.0.4/bfd/Makefile.in binutils-2.11.90.0.5/bfd/Makefile.in --- binutils-2.11.90.0.4/bfd/Makefile.in Fri Mar 23 14:37:28 2001 +++ binutils-2.11.90.0.5/bfd/Makefile.in Fri Apr 13 11:47:19 2001 @@ -144,10 +144,10 @@ BFD_H = bfd.h # for the debugger, so if you are downloading things as S-records you # need two copies of the executable, one to download and one for the # debugger). -BFD_LIBS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo dwarf2.lo +BFD_LIBS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo -BFD_LIBS_CFILES = archive.c archures.c bfd.c cache.c coffgen.c corefile.c format.c init.c libbfd.c opncls.c reloc.c section.c syms.c targets.c hash.c linker.c srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c dwarf2.c +BFD_LIBS_CFILES = archive.c archures.c bfd.c cache.c coffgen.c corefile.c format.c init.c libbfd.c opncls.c reloc.c section.c syms.c targets.c hash.c linker.c srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c merge.c dwarf2.c # This list is alphabetized to make it easier to keep in sync @@ -261,7 +261,7 @@ LTLIBRARIES = $(lib_LTLIBRARIES) libbfd_la_OBJECTS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo \ corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo \ syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo \ -ihex.lo stabs.lo stab-syms.lo dwarf2.lo +ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -887,6 +887,7 @@ stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab.def stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def +merge.lo: merge.c $(INCDIR)/filenames.h dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h diff -uprN binutils-2.11.90.0.4/bfd/aoutx.h binutils-2.11.90.0.5/bfd/aoutx.h --- binutils-2.11.90.0.4/bfd/aoutx.h Fri Mar 9 11:37:53 2001 +++ binutils-2.11.90.0.5/bfd/aoutx.h Fri Apr 13 11:47:20 2001 @@ -4341,6 +4341,7 @@ aout_link_write_symbols (finfo, input_bf switch (discard) { case discard_none: + case discard_sec_merge: break; case discard_l: if ((type & N_STAB) == 0 diff -uprN binutils-2.11.90.0.4/bfd/bfd-in2.h binutils-2.11.90.0.5/bfd/bfd-in2.h --- binutils-2.11.90.0.4/bfd/bfd-in2.h Fri Mar 23 14:37:28 2001 +++ binutils-2.11.90.0.5/bfd/bfd-in2.h Sat Apr 14 17:01:25 2001 @@ -1102,6 +1102,15 @@ typedef struct sec references found to any symbol in the section. */ #define SEC_CLINK 0x10000000 + /* Attempt to merge identical entities in the section. + Entity size is given in the entsize field. */ +#define SEC_MERGE 0x20000000 + + /* If given with SEC_MERGE, entities to merge are zero terminated + strings where entsize specifies character size instead of fixed + size entries. */ +#define SEC_STRINGS 0x40000000 + /* End of section flags. */ /* Some internal packed boolean fields. */ @@ -1213,6 +1222,10 @@ typedef struct sec /* Number of line number records. */ unsigned int lineno_count; + + /* Entity size for merging purposes. */ + + unsigned int entsize; /* Optional information about a COMDAT entry; NULL if not COMDAT. */ diff -uprN binutils-2.11.90.0.4/bfd/coff-i386.c binutils-2.11.90.0.5/bfd/coff-i386.c --- binutils-2.11.90.0.4/bfd/coff-i386.c Fri Mar 9 11:37:54 2001 +++ binutils-2.11.90.0.5/bfd/coff-i386.c Fri Apr 13 20:52:01 2001 @@ -1,6 +1,6 @@ /* BFD back-end for Intel 386 COFF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000 + 2000, 2001 Free Software Foundation, Inc. Written by Cygnus Support. @@ -576,7 +576,7 @@ const bfd_target (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* section flags */ #ifdef COFF_WITH_PE - | SEC_LINK_ONCE | SEC_LINK_DUPLICATES + | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY #endif | SEC_CODE | SEC_DATA), diff -uprN binutils-2.11.90.0.4/bfd/config.bfd binutils-2.11.90.0.5/bfd/config.bfd --- binutils-2.11.90.0.4/bfd/config.bfd Fri Feb 23 21:13:49 2001 +++ binutils-2.11.90.0.5/bfd/config.bfd Sat Apr 7 23:02:55 2001 @@ -663,15 +663,22 @@ case "${targ}" in targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" ;; - mips*el*-*-linux-gnu* | mips*el*-*-openbsd*) + mips*el*-*-openbsd*) targ_defvec=bfd_elf32_littlemips_vec targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_little_vec ecoff_big_vec" ;; - mips*-*-linux-gnu* | mips*-*-openbsd*) + mips*el*-*-linux-gnu*) + targ_defvec=bfd_elf32_tradlittlemips_vec + targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec" + ;; + mips*-*-openbsd*) targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec" ;; - + mips*-*-linux-gnu*) + targ_defvec=bfd_elf32_tradbigmips_vec + targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec" + ;; mn10200-*-*) targ_defvec=bfd_elf32_mn10200_vec ;; diff -uprN binutils-2.11.90.0.4/bfd/configure binutils-2.11.90.0.5/bfd/configure --- binutils-2.11.90.0.4/bfd/configure Fri Mar 30 22:52:44 2001 +++ binutils-2.11.90.0.5/bfd/configure Sat Apr 7 23:02:55 2001 @@ -916,7 +916,7 @@ fi PACKAGE=bfd -VERSION=2.11.90.0.4 +VERSION=2.11.90.0.5 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -5992,6 +5992,10 @@ do target64=true ;; bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elf64.lo $elf" target64=true ;; + bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo" + target64=true ;; + bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo" + target64=true ;; cisco_core_big_vec) tb="$tb cisco-core.lo" ;; cisco_core_little_vec) tb="$tb cisco-core.lo" ;; cris_aout_vec) tb="$tb aout-cris.lo" ;; @@ -6176,17 +6180,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6180: checking for $ac_hdr" >&5 +echo "configure:6184: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6215,12 +6219,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6219: checking for $ac_func" >&5 +echo "configure:6223: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6268,7 +6272,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6272: checking for working mmap" >&5 +echo "configure:6276: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6276,7 +6280,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -6441,12 +6445,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6445: checking for $ac_func" >&5 +echo "configure:6449: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else diff -uprN binutils-2.11.90.0.4/bfd/configure.in binutils-2.11.90.0.5/bfd/configure.in --- binutils-2.11.90.0.4/bfd/configure.in Fri Mar 30 22:52:44 2001 +++ binutils-2.11.90.0.5/bfd/configure.in Sat Apr 7 23:02:56 2001 @@ -7,7 +7,7 @@ AC_INIT(libbfd.c) AC_CANONICAL_SYSTEM AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.11.90.0.4) +AM_INIT_AUTOMAKE(bfd, 2.11.90.0.5) dnl These must be called before AM_PROG_LIBTOOL, because it may want dnl to call AC_CHECK_PROG. @@ -560,6 +560,10 @@ do bfd_elf64_s390_vec) tb="$tb elf64-s390.lo elf64.lo $elf" target64=true ;; bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elf64.lo $elf" + target64=true ;; + bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo" + target64=true ;; + bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo" target64=true ;; cisco_core_big_vec) tb="$tb cisco-core.lo" ;; cisco_core_little_vec) tb="$tb cisco-core.lo" ;; diff -uprN binutils-2.11.90.0.4/bfd/efi-app-ia32.c binutils-2.11.90.0.5/bfd/efi-app-ia32.c --- binutils-2.11.90.0.4/bfd/efi-app-ia32.c Fri Mar 30 22:41:05 2001 +++ binutils-2.11.90.0.5/bfd/efi-app-ia32.c Fri Apr 6 15:31:52 2001 @@ -28,7 +28,6 @@ Foundation, Inc., 59 Temple Place - Suit #define PCRELOFFSET true #define TARGET_UNDERSCORE '_' #define COFF_LONG_SECTION_NAMES -#define ALIGN_SECTIONS_IN_FILE #define PEI_TARGET_SUBSYSTEM IMAGE_SUBSYSTEM_EFI_APPLICATION #define PEI_FORCE_MINIMUM_ALIGNMENT diff -uprN binutils-2.11.90.0.4/bfd/elf-bfd.h binutils-2.11.90.0.5/bfd/elf-bfd.h --- binutils-2.11.90.0.4/bfd/elf-bfd.h Fri Mar 9 11:37:56 2001 +++ binutils-2.11.90.0.5/bfd/elf-bfd.h Fri Apr 13 11:47:21 2001 @@ -241,6 +241,8 @@ struct elf_link_hash_table struct elf_link_hash_entry *hgot; /* A pointer to information used to link stabs in sections. */ PTR stab_info; + /* A pointer to information used to merge SEC_MERGE sections. */ + PTR merge_info; /* A linked list of local symbols to be added to .dynsym. */ struct elf_link_local_dynamic_entry *dynlocal; /* A linked list of DT_RPATH/DT_RUNPATH names found in dynamic @@ -712,6 +714,8 @@ struct bfd_elf_section_data long dynindx; /* A pointer used for .stab linking optimizations. */ PTR stab_info; + /* A pointer used for SEC_MERGE optimizations. */ + PTR merge_info; /* A pointer available for the processor specific ELF backend. */ PTR tdata; /* Nonzero if this section uses RELA relocations, rather than REL. */ diff -uprN binutils-2.11.90.0.4/bfd/elf.c binutils-2.11.90.0.5/bfd/elf.c --- binutils-2.11.90.0.4/bfd/elf.c Fri Mar 9 11:37:56 2001 +++ binutils-2.11.90.0.5/bfd/elf.c Fri Apr 13 11:47:21 2001 @@ -386,6 +386,13 @@ _bfd_elf_make_section_from_shdr (abfd, h flags |= SEC_CODE; else if ((flags & SEC_LOAD) != 0) flags |= SEC_DATA; + if ((hdr->sh_flags & SHF_MERGE) != 0) + { + flags |= SEC_MERGE; + newsect->entsize = hdr->sh_entsize; + if ((hdr->sh_flags & SHF_STRINGS) != 0) + flags |= SEC_STRINGS; + } /* The debugging sections appear to be recognized only by name, not any sort of flag. */ @@ -1031,6 +1038,7 @@ _bfd_elf_link_hash_table_init (table, ab table->runpath = NULL; table->hgot = NULL; table->stab_info = NULL; + table->merge_info = NULL; table->dynlocal = NULL; return _bfd_link_hash_table_init (&table->root, abfd, newfunc); } @@ -1809,6 +1817,13 @@ elf_fake_sections (abfd, asect, failedpt this_hdr->sh_flags |= SHF_WRITE; if ((asect->flags & SEC_CODE) != 0) this_hdr->sh_flags |= SHF_EXECINSTR; + if ((asect->flags & SEC_MERGE) != 0) + { + this_hdr->sh_flags |= SHF_MERGE; + this_hdr->sh_entsize = asect->entsize; + if ((asect->flags & SEC_STRINGS) != 0) + this_hdr->sh_flags |= SHF_STRINGS; + } /* Check for processor-specific section types. */ if (bed->elf_backend_fake_sections) diff -uprN binutils-2.11.90.0.4/bfd/elf32-i386.c binutils-2.11.90.0.5/bfd/elf32-i386.c --- binutils-2.11.90.0.4/bfd/elf32-i386.c Fri Mar 9 11:37:57 2001 +++ binutils-2.11.90.0.5/bfd/elf32-i386.c Fri Apr 6 15:50:17 2001 @@ -2066,6 +2066,44 @@ elf_i386_finish_dynamic_sections (output return true; } +/* Set the correct type for an x86 ELF section. We do this by the + section name, which is a hack, but ought to work. */ + +static boolean +elf_i386_fake_sections (abfd, hdr, sec) + bfd *abfd ATTRIBUTE_UNUSED; + Elf32_Internal_Shdr *hdr; + asection *sec; +{ + register const char *name; + + name = bfd_get_section_name (abfd, sec); + + if (strcmp (name, ".reloc") == 0) + /* + * This is an ugly, but unfortunately necessary hack that is + * needed when producing EFI binaries on x86. It tells + * elf.c:elf_fake_sections() not to consider ".reloc" as a section + * containing ELF relocation info. We need this hack in order to + * be able to generate ELF binaries that can be translated into + * EFI applications (which are essentially COFF objects). Those + * files contain a COFF ".reloc" section inside an ELFNN object, + * which would normally cause BFD to segfault because it would + * attempt to interpret this section as containing relocation + * entries for section "oc". With this hack enabled, ".reloc" + * will be treated as a normal data section, which will avoid the + * segfault. However, you won't be able to create an ELFNN binary + * with a section named "oc" that needs relocations, but that's + * the kind of ugly side-effects you get when detecting section + * types based on their names... In practice, this limitation is + * unlikely to bite. + */ + hdr->sh_type = SHT_PROGBITS; + + return true; +} + + #define TARGET_LITTLE_SYM bfd_elf32_i386_vec #define TARGET_LITTLE_NAME "elf32-i386" #define ELF_ARCH bfd_arch_i386 @@ -2096,5 +2134,6 @@ elf_i386_finish_dynamic_sections (output #define elf_backend_gc_sweep_hook elf_i386_gc_sweep_hook #define elf_backend_relocate_section elf_i386_relocate_section #define elf_backend_size_dynamic_sections elf_i386_size_dynamic_sections +#define elf_backend_fake_sections elf_i386_fake_sections #include "elf32-target.h" diff -uprN binutils-2.11.90.0.4/bfd/elf32-mips.c binutils-2.11.90.0.5/bfd/elf32-mips.c --- binutils-2.11.90.0.4/bfd/elf32-mips.c Fri Mar 23 14:37:30 2001 +++ binutils-2.11.90.0.5/bfd/elf32-mips.c Sat Apr 7 23:02:56 2001 @@ -208,6 +208,9 @@ static int sort_dynamic_relocs PARAMS ((const void *, const void *)); extern const bfd_target bfd_elf32_tradbigmips_vec; +extern const bfd_target bfd_elf32_tradlittlemips_vec; +extern const bfd_target bfd_elf64_tradbigmips_vec; +extern const bfd_target bfd_elf64_tradlittlemips_vec; /* The level of IRIX compatibility we're striving for. */ @@ -225,8 +228,7 @@ static bfd *reldyn_sorting_bfd; #define ABI_N32_P(abfd) \ ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0) -/* Nonzero if ABFD is using the 64-bit ABI. FIXME: This is never - true, yet. */ +/* Nonzero if ABFD is using the 64-bit ABI. */ #define ABI_64_P(abfd) \ ((elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64) != 0) @@ -234,7 +236,10 @@ static bfd *reldyn_sorting_bfd; executables or "normal" MIPS ELF ABI executables. */ #define IRIX_COMPAT(abfd) \ - (abfd->xvec == &bfd_elf32_tradbigmips_vec ? ict_none : \ + (((abfd->xvec == &bfd_elf64_tradbigmips_vec) || \ + (abfd->xvec == &bfd_elf64_tradlittlemips_vec) || \ + (abfd->xvec == &bfd_elf32_tradbigmips_vec) || \ + (abfd->xvec == &bfd_elf32_tradlittlemips_vec)) ? ict_none : \ ((ABI_N32_P (abfd) || ABI_64_P (abfd)) ? ict_irix6 : ict_irix5)) /* Whether we are trying to be compatible with IRIX at all. */ @@ -2301,7 +2306,12 @@ mips_elf_sym_is_global (abfd, sym) bfd *abfd ATTRIBUTE_UNUSED; asymbol *sym; { - return (sym->flags & BSF_SECTION_SYM) == 0 ? true : false; + if (SGI_COMPAT(abfd)) + return (sym->flags & BSF_SECTION_SYM) == 0 ? true : false; + else + return ((sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0 + || bfd_is_und_section (bfd_get_section (sym)) + || bfd_is_com_section (bfd_get_section (sym))); } /* Set the right machine number for a MIPS ELF file. This is used for diff -uprN binutils-2.11.90.0.4/bfd/elf64-mips.c binutils-2.11.90.0.5/bfd/elf64-mips.c --- binutils-2.11.90.0.4/bfd/elf64-mips.c Fri Mar 9 11:15:56 2001 +++ binutils-2.11.90.0.5/bfd/elf64-mips.c Sat Apr 7 22:46:34 2001 @@ -2189,3 +2189,20 @@ const struct elf_size_info mips_elf64_si _bfd_archive_coff_update_armap_timestamp #include "elf64-target.h" + +/* Support for traditional mips targets */ + +#define INCLUDED_TARGET_FILE /* More a type of flag */ + +#undef TARGET_LITTLE_SYM +#undef TARGET_LITTLE_NAME +#undef TARGET_BIG_SYM +#undef TARGET_BIG_NAME + +#define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_vec +#define TARGET_LITTLE_NAME "elf64-tradlittlemips" +#define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec +#define TARGET_BIG_NAME "elf64-tradbigmips" + +/* Include the target file again for this target */ +#include "elf64-target.h" diff -uprN binutils-2.11.90.0.4/bfd/elflink.h binutils-2.11.90.0.5/bfd/elflink.h --- binutils-2.11.90.0.4/bfd/elflink.h Fri Mar 9 11:37:59 2001 +++ binutils-2.11.90.0.5/bfd/elflink.h Fri Apr 13 11:47:22 2001 @@ -2179,6 +2179,18 @@ elf_link_add_object_symbols (abfd, info) } } + if (! info->relocateable && ! dynamic) + { + asection *s; + + for (s = abfd->sections; s != NULL; s = s->next) + if ((s->flags & SEC_MERGE) + && ! _bfd_merge_section (abfd, + &elf_hash_table (info)->merge_info, + s, &elf_section_data (s)->merge_info)) + goto error_return; + } + return true; error_return: @@ -2969,14 +2981,13 @@ NAME(bfd_elf,size_dynamic_sections) (out } } + eif.info = info; + 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 (export_dynamic) { - struct elf_info_failed eif; - - eif.failed = false; - eif.info = info; elf_link_hash_traverse (elf_hash_table (info), elf_export_symbol, (PTR) &eif); if (eif.failed) @@ -2998,8 +3009,6 @@ NAME(bfd_elf,size_dynamic_sections) (out /* Find all symbols which were defined in a dynamic object and make the backend pick a reasonable value for them. */ - eif.failed = false; - eif.info = info; elf_link_hash_traverse (elf_hash_table (info), elf_adjust_dynamic_symbol, (PTR) &eif); @@ -3530,16 +3539,21 @@ elf_fix_symbol_flags (h, eif) /* 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. Likewise, if the symbol has any kind of - visibility (internal, hidden, or protected), it doesn't need a - PLT. */ + 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 - && (eif->info->symbolic || ELF_ST_VISIBILITY (h->other)) + && (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) { - h->elf_link_hash_flags &=~ ELF_LINK_HASH_NEEDS_PLT; - h->plt.offset = (bfd_vma) -1; + struct elf_backend_data *bed; + bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj); + (*bed->elf_backend_hide_symbol) (eif->info, h); } /* If this is a weak defined symbol in a dynamic object, and we know @@ -4079,6 +4093,8 @@ static boolean elf_link_flush_output_sym 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_input_bfd PARAMS ((struct elf_final_link_info *, bfd *)); static boolean elf_reloc_link_order @@ -4228,6 +4244,7 @@ elf_bfd_final_link (abfd, info) Elf_Internal_Shdr *symstrtab_hdr; struct elf_backend_data *bed = get_elf_backend_data (abfd); struct elf_outext_info eoinfo; + boolean merged; if (info->shared) abfd->flags |= DYNAMIC; @@ -4273,6 +4290,7 @@ elf_bfd_final_link (abfd, info) max_external_reloc_size = 0; max_internal_reloc_count = 0; max_sym_count = 0; + merged = false; for (o = abfd->sections; o != (asection *) NULL; o = o->next) { o->reloc_count = 0; @@ -4294,6 +4312,9 @@ elf_bfd_final_link (abfd, info) 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; @@ -4351,6 +4372,10 @@ elf_bfd_final_link (abfd, info) 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. */ @@ -5070,6 +5095,33 @@ elf_link_flush_output_syms (finfo) 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_defined + || h->root.type == bfd_link_hash_defweak) + && ((sec = h->root.u.def.section)->flags & SEC_MERGE) + && elf_section_data (sec)->merge_info) + { + 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)->merge_info, + h->root.u.def.value, (bfd_vma) 0); + } + + return true; +} + /* 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 @@ -5535,7 +5587,15 @@ elf_link_input_bfd (finfo, input_bfd) name = isec->name; } else if (isym->st_shndx > 0 && isym->st_shndx < SHN_LORESERVE) - isec = section_from_elf_index (input_bfd, isym->st_shndx); + { + isec = section_from_elf_index (input_bfd, isym->st_shndx); + if (isec && elf_section_data (isec)->merge_info + && ELF_ST_TYPE (isym->st_info) != STT_SECTION) + isym->st_value = + _bfd_merged_section_offset (output_bfd, &isec, + elf_section_data (isec)->merge_info, + isym->st_value, (bfd_vma) 0); + } else if (isym->st_shndx == SHN_ABS) { isec = bfd_abs_section_ptr; @@ -5637,7 +5697,9 @@ elf_link_input_bfd (finfo, input_bfd) if ((finfo->info->strip == strip_some && (bfd_hash_lookup (finfo->info->keep_hash, name, false, false) == NULL)) - || (finfo->info->discard == discard_l + || (((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; @@ -5899,7 +5961,20 @@ elf_link_input_bfd (finfo, input_bfd) } /* Write out the modified section contents. */ - if (elf_section_data (o)->stab_info == NULL) + if (elf_section_data (o)->stab_info) + { + if (! (_bfd_write_section_stabs + (output_bfd, &elf_hash_table (finfo->info)->stab_info, + o, &elf_section_data (o)->stab_info, contents))) + return false; + } + else if (elf_section_data (o)->merge_info) + { + if (! (_bfd_write_merged_section + (output_bfd, o, elf_section_data (o)->merge_info))) + return false; + } + else { if (! (o->flags & SEC_EXCLUDE) && ! bfd_set_section_contents (output_bfd, o->output_section, @@ -5907,13 +5982,6 @@ elf_link_input_bfd (finfo, input_bfd) (o->_cooked_size != 0 ? o->_cooked_size : o->_raw_size))) - return false; - } - else - { - if (! (_bfd_write_section_stabs - (output_bfd, &elf_hash_table (finfo->info)->stab_info, - o, &elf_section_data (o)->stab_info, contents))) return false; } } diff -uprN binutils-2.11.90.0.4/bfd/libbfd-in.h binutils-2.11.90.0.5/bfd/libbfd-in.h --- binutils-2.11.90.0.4/bfd/libbfd-in.h Fri Mar 9 11:16:01 2001 +++ binutils-2.11.90.0.5/bfd/libbfd-in.h Fri Apr 13 11:18:45 2001 @@ -462,6 +462,21 @@ extern boolean _bfd_write_stab_strings P extern bfd_vma _bfd_stab_section_offset PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma)); +/* Attempt to merge a SEC_MERGE section. */ + +extern boolean _bfd_merge_section + PARAMS ((bfd *, PTR *, asection *, PTR *)); + +/* Write out a merged section. */ + +extern boolean _bfd_write_merged_section + PARAMS ((bfd *, asection *, PTR)); + +/* Find an offset within a modified SEC_MERGE section. */ + +extern bfd_vma _bfd_merged_section_offset + PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma)); + /* Create a string table. */ extern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void)); diff -uprN binutils-2.11.90.0.4/bfd/libbfd.h binutils-2.11.90.0.5/bfd/libbfd.h --- binutils-2.11.90.0.4/bfd/libbfd.h Fri Mar 23 14:37:31 2001 +++ binutils-2.11.90.0.5/bfd/libbfd.h Fri Apr 13 11:47:23 2001 @@ -462,6 +462,21 @@ extern boolean _bfd_write_stab_strings P extern bfd_vma _bfd_stab_section_offset PARAMS ((bfd *, PTR *, asection *, PTR *, bfd_vma)); +/* Attempt to merge a SEC_MERGE section. */ + +extern boolean _bfd_merge_section + PARAMS ((bfd *, PTR *, asection *, PTR *)); + +/* Write out a merged section. */ + +extern boolean _bfd_write_merged_section + PARAMS ((bfd *, asection *, PTR)); + +/* Find an offset within a modified SEC_MERGE section. */ + +extern bfd_vma _bfd_merged_section_offset + PARAMS ((bfd *, asection **, PTR, bfd_vma, bfd_vma)); + /* Create a string table. */ extern struct bfd_strtab_hash *_bfd_stringtab_init PARAMS ((void)); diff -uprN binutils-2.11.90.0.4/bfd/linker.c binutils-2.11.90.0.5/bfd/linker.c --- binutils-2.11.90.0.4/bfd/linker.c Fri Mar 9 11:38:00 2001 +++ binutils-2.11.90.0.5/bfd/linker.c Fri Apr 13 11:47:23 2001 @@ -2279,6 +2279,12 @@ _bfd_generic_link_output_symbols (output case discard_all: output = false; break; + case discard_sec_merge: + output = true; + if (info->relocateable + || ! (sym->section->flags & SEC_MERGE)) + break; + /* FALLTHROUGH */ case discard_l: if (bfd_is_local_label (input_bfd, sym)) output = false; diff -uprN binutils-2.11.90.0.4/bfd/merge.c binutils-2.11.90.0.5/bfd/merge.c --- binutils-2.11.90.0.4/bfd/merge.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/bfd/merge.c Fri Apr 13 11:18:52 2001 @@ -0,0 +1,606 @@ +/* SEC_MERGE support. + Copyright 2001 Free Software Foundation, Inc. + Written by Jakub Jelinek . + +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. */ + +/* This file contains support for merging duplicate entities within sections, + as used in ELF SHF_MERGE. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" + +#include + +/* An entry in the section merge hash table. */ + +struct sec_merge_hash_entry +{ + struct bfd_hash_entry root; + /* Length of this entry. */ + unsigned int len; + /* Index within the merged section. */ + bfd_size_type index; + /* Which section is it in. */ + asection *sec; + /* Next entity in the hash table. */ + struct sec_merge_hash_entry *next; +}; + +/* The section merge hash table. */ + +struct sec_merge_hash +{ + struct bfd_hash_table table; + /* Next available index. */ + bfd_size_type size; + /* First entity in the SEC_MERGE sections of this type. */ + struct sec_merge_hash_entry *first; + /* Last entity in the SEC_MERGE sections of this type. */ + struct sec_merge_hash_entry *last; + /* Entity size. */ + unsigned int entsize; + /* Start of each string needs to be aligned to 1 << alignment_power + octets. */ + unsigned int alignment_power; + /* Are entries fixed size or zero terminated strings? */ + boolean strings; +}; + +struct sec_merge_info +{ + /* Chain of sec_merge_infos. */ + struct sec_merge_info *next; + /* A hash table used to hold section content. */ + struct sec_merge_hash *htab; + /* The last section attempted for merge. */ + asection *last; +}; + +struct sec_merge_sec_info +{ + /* A hash table used to hold section content. */ + struct sec_merge_hash *htab; + /* First string in this section. */ + struct sec_merge_hash_entry *first; + /* Original section content. */ + unsigned char contents[1]; +}; + +static struct bfd_hash_entry *sec_merge_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); +static struct sec_merge_hash_entry *sec_merge_hash_lookup + PARAMS ((struct sec_merge_hash *, const char *, boolean)); +static struct sec_merge_hash *sec_merge_init + PARAMS ((unsigned int, unsigned int, boolean)); +static struct sec_merge_hash_entry *sec_merge_add + PARAMS ((struct sec_merge_hash *, const char *)); +static boolean sec_merge_emit + PARAMS ((bfd *, struct sec_merge_hash *, struct sec_merge_hash_entry *)); + +/* Routine to create an entry in a section merge hashtab. */ + +static struct bfd_hash_entry * +sec_merge_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + struct sec_merge_hash_entry *ret = (struct sec_merge_hash_entry *) entry; + + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (ret == (struct sec_merge_hash_entry *) NULL) + ret = ((struct sec_merge_hash_entry *) + bfd_hash_allocate (table, sizeof (struct sec_merge_hash_entry))); + if (ret == (struct sec_merge_hash_entry *) NULL) + return NULL; + + /* Call the allocation method of the superclass. */ + ret = ((struct sec_merge_hash_entry *) + bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); + + if (ret) + { + /* Initialize the local fields. */ + ret->index = (bfd_size_type) -1; + ret->sec = NULL; + ret->next = NULL; + } + + return (struct bfd_hash_entry *)ret; +} + +/* Look up an entry in a section merge hash table. */ + +static struct sec_merge_hash_entry * +sec_merge_hash_lookup (table, string, create) + struct sec_merge_hash *table; + const char *string; + boolean create; +{ + register const unsigned char *s; + register unsigned long hash; + register unsigned int c; + struct sec_merge_hash_entry *hashp; + unsigned int len, i; + unsigned int index; + + hash = 0; + len = 0; + s = (const unsigned char *) string; + if (table->strings) + { + if (table->entsize == 1) + { + while ((c = *s++) != '\0') + { + hash += c + (c << 17); + hash ^= hash >> 2; + ++len; + } + hash += len + (len << 17); + } + else + { + for (;;) + { + for (i = 0; i < table->entsize; ++i) + if (s[i] != '\0') + break; + if (i == table->entsize) + break; + for (i = 0; i < table->entsize; ++i) + { + c = *s++; + hash += c + (c << 17); + hash ^= hash >> 2; + } + ++len; + } + hash += len + (len << 17); + len *= table->entsize; + } + hash ^= hash >> 2; + len += table->entsize; + } + else + { + for (i = 0; i < table->entsize; ++i) + { + c = *s++; + hash += c + (c << 17); + hash ^= hash >> 2; + } + len = table->entsize; + } + + index = hash % table->table.size; + for (hashp = (struct sec_merge_hash_entry *) table->table.table[index]; + hashp != (struct sec_merge_hash_entry *) NULL; + hashp = (struct sec_merge_hash_entry *) hashp->next) + { + if (hashp->root.hash == hash + && len == hashp->len + && memcmp (hashp->root.string, string, len) == 0) + return hashp; + } + + if (! create) + return (struct sec_merge_hash_entry *) NULL; + + hashp = (struct sec_merge_hash_entry *) + sec_merge_hash_newfunc ((struct bfd_hash_entry *) NULL, + (struct bfd_hash_table *) table, string); + if (hashp == (struct sec_merge_hash_entry *) NULL) + return (struct sec_merge_hash_entry *) NULL; + hashp->root.string = string; + hashp->root.hash = hash; + hashp->len = len; + hashp->root.next = table->table.table[index]; + table->table.table[index] = (struct bfd_hash_entry *) hashp; + + return hashp; +} + +/* Create a new hash table. */ + +static struct sec_merge_hash * +sec_merge_init (alignment_power, entsize, strings) + unsigned int alignment_power, entsize; + boolean strings; +{ + struct sec_merge_hash *table; + + table = ((struct sec_merge_hash *) + bfd_malloc (sizeof (struct sec_merge_hash))); + if (table == NULL) + return NULL; + + if (! bfd_hash_table_init (&table->table, sec_merge_hash_newfunc)) + { + free (table); + return NULL; + } + + table->size = 0; + table->first = NULL; + table->last = NULL; + table->alignment_power = alignment_power; + table->entsize = entsize; + table->strings = strings; + + return table; +} + +/* Get the index of an entity in a hash table, adding it if it is not + already present. */ + +static struct sec_merge_hash_entry * +sec_merge_add (tab, str) + struct sec_merge_hash *tab; + const char *str; +{ + register struct sec_merge_hash_entry *entry; + + entry = sec_merge_hash_lookup (tab, str, true); + if (entry == NULL) + return NULL; + + if (entry->index == (bfd_size_type) -1) + { + entry->index = tab->size; + tab->size += entry->len; + tab->size = align_power (tab->size, tab->alignment_power); + if (tab->first == NULL) + tab->first = entry; + else + tab->last->next = entry; + tab->last = entry; + } + + return entry; +} + +static boolean +sec_merge_emit (abfd, tab, entry) + register bfd *abfd; + struct sec_merge_hash *tab; + struct sec_merge_hash_entry *entry; +{ + asection *sec = entry->sec; + char *pad = ""; + + if (tab->alignment_power) + pad = bfd_zmalloc (1 << tab->alignment_power); + + for (; entry != NULL && entry->sec == sec; entry = entry->next) + { + register const char *str; + register size_t len; + + str = entry->root.string; + len = entry->len; + + if (bfd_write ((PTR) str, 1, len, abfd) != len) + break; + + if (tab->alignment_power) + { + len &= (1 << tab->alignment_power) - 1; + if (len && bfd_write ((PTR) pad, 1, + (1 << tab->alignment_power) - len, + abfd) != (1 << tab->alignment_power) - len) + break; + } + } + + if (tab->alignment_power) + free (pad); + + return entry == NULL || entry->sec != sec; +} + +/* This function is called for each input file from the add_symbols + pass of the linker. */ + +boolean +_bfd_merge_section (abfd, psinfo, sec, psecinfo) + bfd *abfd; + PTR *psinfo; + asection *sec; + PTR *psecinfo; +{ + boolean first, nul; + struct sec_merge_info *sinfo; + struct sec_merge_sec_info *secinfo; + unsigned char *p, *end; + bfd_vma mask; + unsigned int align; + unsigned int i; + + if (sec->_raw_size == 0 + || (sec->flags & SEC_MERGE) == 0 + || sec->entsize == 0) + return true; + + if ((sec->flags & SEC_RELOC) != 0) + { + /* We aren't prepared to handle relocations in merged sections. */ + return true; + } + + if (sec->output_section != NULL + && bfd_is_abs_section (sec->output_section)) + { + /* The section is being discarded from the link, so we should + just ignore it. */ + return true; + } + + align = bfd_get_section_alignment (abfd, sec); + if ((sec->flags & SEC_STRINGS) + && ((sec->entsize < (unsigned int)(1 << align) + && (sec->entsize & (sec->entsize - 1))) + || (sec->entsize > (unsigned int)(1 << align) + && (sec->entsize & ((1 << align) - 1))))) + { + /* Sanity check. If string character size is smaller than + alignment, then we require character size to be a power + of 2, otherwise character size must be integer multiple + of alignment. */ + return true; + } + + first = false; + + for (sinfo = (struct sec_merge_info *) *psinfo; sinfo; sinfo = sinfo->next) + if (! ((sinfo->last->flags ^ sec->flags) & (SEC_MERGE | SEC_STRINGS)) + && sinfo->last->entsize == sec->entsize + && ! strcmp (sinfo->last->name, sec->name) + && bfd_get_section_alignment (abfd, sinfo->last) == align) + break; + + if (sinfo == NULL) + { + /* Initialize the information we need to keep track of. */ + first = true; + sinfo = (struct sec_merge_info *) + bfd_alloc (abfd, sizeof (struct sec_merge_info)); + if (sinfo == NULL) + goto error_return; + sinfo->next = (struct sec_merge_info *) *psinfo; + *psinfo = (PTR) sinfo; + sinfo->htab = + sec_merge_init ((sec->flags & SEC_STRINGS) ? align : 0, + sec->entsize, (sec->flags & SEC_STRINGS)); + if (sinfo->htab == NULL) + goto error_return; + } + + /* Read the section from abfd. */ + + *psecinfo = bfd_alloc (abfd, sizeof (struct sec_merge_sec_info) + + sec->_raw_size - 1); + if (*psecinfo == NULL) + goto error_return; + + secinfo = (struct sec_merge_sec_info *)*psecinfo; + secinfo->htab = sinfo->htab; + sinfo->htab->size = 0; + secinfo->first = NULL; + + if (! bfd_get_section_contents (abfd, sec, secinfo->contents, 0, + sec->_raw_size)) + goto error_return; + + end = secinfo->contents + sec->_raw_size; + nul = false; + mask = ((bfd_vma)1 << sinfo->htab->alignment_power) - 1; + if (sec->flags & SEC_STRINGS) + { + for (p = secinfo->contents; p < end;) + { + struct sec_merge_hash_entry *entry; + + entry = sec_merge_add (sinfo->htab, p); + if (entry->sec == NULL) + { + if (secinfo->first == NULL) + secinfo->first = entry; + entry->sec = sec; + } + p += entry->len; + if (sec->entsize == 1) + { + while (p < end && *p == 0) + { + if (!nul && !((p - secinfo->contents) & mask)) + { + nul = true; + entry = sec_merge_add (sinfo->htab, ""); + if (entry->sec == NULL) + { + if (secinfo->first == NULL) + secinfo->first = entry; + entry->sec = sec; + } + } + p++; + } + } + else + { + while (p < end) + { + for (i = 0; i < sec->entsize; i++) + if (p[i] != '\0') + break; + if (i != sec->entsize) + break; + if (!nul && !((p - secinfo->contents) & mask)) + { + nul = true; + entry = sec_merge_add (sinfo->htab, p); + if (entry->sec == NULL) + { + if (secinfo->first == NULL) + secinfo->first = entry; + entry->sec = sec; + } + } + p += sec->entsize; + } + } + } + } + else + { + for (p = secinfo->contents; p < end; p += sec->entsize) + { + struct sec_merge_hash_entry *entry; + + entry = sec_merge_add (sinfo->htab, p); + if (entry->sec == NULL) + { + if (secinfo->first == NULL) + secinfo->first = entry; + entry->sec = sec; + } + } + } + + sec->_cooked_size = sinfo->htab->size; + if (!sec->_cooked_size) + sec->flags |= SEC_EXCLUDE; + sinfo->last = sec; + return true; + + error_return: + if (*psecinfo != NULL) + free (*psecinfo); + *psecinfo = NULL; + return false; +} + +/* Write out the merged section. */ + +boolean +_bfd_write_merged_section (output_bfd, sec, psecinfo) + bfd *output_bfd; + asection *sec; + PTR psecinfo; +{ + struct sec_merge_sec_info *secinfo; + + secinfo = (struct sec_merge_sec_info *) psecinfo; + + if (!secinfo->first) + return true; + + if (bfd_seek (output_bfd, + (sec->output_section->filepos + sec->output_offset), + SEEK_SET) != 0) + return false; + + if (! sec_merge_emit (output_bfd, secinfo->htab, secinfo->first)) + return false; + + return true; +} + +/* Adjust an address in the SEC_MERGE section. Given OFFSET within + *PSEC, this returns the new offset in the adjusted SEC_MERGE + section and writes the new section back into *PSEC. */ + +bfd_vma +_bfd_merged_section_offset (output_bfd, psec, psecinfo, offset, addend) + bfd *output_bfd ATTRIBUTE_UNUSED; + asection **psec; + PTR psecinfo; + bfd_vma offset, addend; +{ + struct sec_merge_sec_info *secinfo; + struct sec_merge_hash_entry *entry; + unsigned char *p; + asection *sec = *psec; + + secinfo = (struct sec_merge_sec_info *) psecinfo; + + if (offset + addend >= sec->_raw_size) + { + if (offset + addend > sec->_raw_size) + (*_bfd_error_handler) (_("%s: access beyond end of merged section (%ld + %ld)"), + bfd_get_filename (sec->owner), (long)offset, + (long) addend); + return (secinfo->first ? sec->_cooked_size : 0); + } + + if (secinfo->htab->strings) + { + if (sec->entsize == 1) + { + p = secinfo->contents + offset + addend - 1; + while (*p && p >= secinfo->contents) + --p; + ++p; + } + else + { + p = secinfo->contents + + ((offset + addend) / sec->entsize) * sec->entsize; + p -= sec->entsize; + while (p >= secinfo->contents) + { + unsigned int i; + + for (i = 0; i < sec->entsize; ++i) + if (p[i] != '\0') + break; + if (i == sec->entsize) + break; + p -= sec->entsize; + } + p += sec->entsize; + } + } + else + { + p = secinfo->contents + + ((offset + addend) / sec->entsize) * sec->entsize; + } + entry = sec_merge_hash_lookup (secinfo->htab, p, false); + if (!entry) + { + if (! secinfo->htab->strings) + abort (); + /* This should only happen if somebody points into the padding + after a NUL character but before next entity. */ + if (*p) + abort (); + if (! secinfo->htab->first) + abort (); + entry = secinfo->htab->first; + p = secinfo->contents + + ((offset + addend) / sec->entsize + 1) * sec->entsize + - entry->len; + } + + *psec = entry->sec; + return entry->index + (secinfo->contents + offset - p); +} diff -uprN binutils-2.11.90.0.4/bfd/pdp11.c binutils-2.11.90.0.5/bfd/pdp11.c --- binutils-2.11.90.0.4/bfd/pdp11.c Fri Mar 9 11:16:04 2001 +++ binutils-2.11.90.0.5/bfd/pdp11.c Fri Apr 13 11:18:48 2001 @@ -4110,6 +4110,7 @@ aout_link_write_symbols (finfo, input_bf switch (discard) { case discard_none: + case discard_sec_merge: break; case discard_l: if ((type & N_STAB) == 0 diff -uprN binutils-2.11.90.0.4/bfd/section.c binutils-2.11.90.0.5/bfd/section.c --- binutils-2.11.90.0.4/bfd/section.c Fri Mar 9 11:38:00 2001 +++ binutils-2.11.90.0.5/bfd/section.c Sat Apr 14 12:52:17 2001 @@ -1,6 +1,6 @@ /* Object file "section" support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000 + 2000, 2001 Free Software Foundation, Inc. Written by Cygnus Support. @@ -350,6 +350,15 @@ CODE_FRAGMENT . references found to any symbol in the section. *} .#define SEC_CLINK 0x10000000 . +. {* Attempt to merge identical entities in the section. +. Entity size is given in the entsize field. *} +.#define SEC_MERGE 0x20000000 +. +. {* If given with SEC_MERGE, entities to merge are zero terminated +. strings where entsize specifies character size instead of fixed +. size entries. *} +.#define SEC_STRINGS 0x40000000 +. . {* End of section flags. *} . . {* Some internal packed boolean fields. *} @@ -462,6 +471,10 @@ CODE_FRAGMENT . . unsigned int lineno_count; . +. {* Entity size for merging purposes. *} +. +. unsigned int entsize; +. . {* Optional information about a COMDAT entry; NULL if not COMDAT. *} . . struct bfd_comdat_info *comdat; @@ -577,11 +590,11 @@ static const asymbol global_syms[] = /* line_filepos, userdata, contents, lineno, lineno_count, */ \ 0, NULL, NULL, NULL, 0, \ \ - /* comdat, kept_section, moving_line_filepos, target_index, */ \ - NULL, NULL, 0, 0, \ + /* entsize, comdat, kept_section, moving_line_filepos, */ \ + 0, NULL, NULL, 0, \ \ - /* used_by_bfd, constructor_chain, owner, */ \ - NULL, NULL, NULL, \ + /* target_index, used_by_bfd, constructor_chain, owner, */ \ + 0, NULL, NULL, NULL, \ \ /* symbol, */ \ (struct symbol_cache_entry *) &global_syms[IDX], \ diff -uprN binutils-2.11.90.0.4/bfd/targets.c binutils-2.11.90.0.5/bfd/targets.c --- binutils-2.11.90.0.4/bfd/targets.c Fri Mar 9 11:38:01 2001 +++ binutils-2.11.90.0.5/bfd/targets.c Sat Apr 7 23:02:58 2001 @@ -564,6 +564,8 @@ extern const bfd_target bfd_elf64_ia64_b extern const bfd_target bfd_elf64_ia64_little_vec; extern const bfd_target bfd_elf64_little_generic_vec; extern const bfd_target bfd_elf64_littlemips_vec; +extern const bfd_target bfd_elf64_tradbigmips_vec; +extern const bfd_target bfd_elf64_tradlittlemips_vec; extern const bfd_target bfd_elf64_s390_vec; extern const bfd_target bfd_elf64_sparc_vec; extern const bfd_target bfd_elf64_x86_64_vec; @@ -781,7 +783,10 @@ static const bfd_target * const _bfd_tar &bfd_elf32_mcore_little_vec, &bfd_elf32_tradbigmips_vec, &bfd_elf32_tradlittlemips_vec, -#ifdef BFD64 /* No one seems to use this. */ +#ifdef BFD64 + &bfd_elf64_tradbigmips_vec, + &bfd_elf64_tradlittlemips_vec, + /* No one seems to use this. */ &bfd_elf64_big_generic_vec, &bfd_elf64_little_generic_vec, #endif diff -uprN binutils-2.11.90.0.4/binutils/ChangeLog binutils-2.11.90.0.5/binutils/ChangeLog --- binutils-2.11.90.0.4/binutils/ChangeLog Fri Mar 30 22:40:21 2001 +++ binutils-2.11.90.0.5/binutils/ChangeLog Fri Apr 13 11:17:44 2001 @@ -1,3 +1,12 @@ +2001-04-10 Alan Modra + + * MAINTAINERS: Update my email address + * nm.c (print_symbol_info_bsd): Use a simple printf string. + +2001-04-05 Hans-Peter Nilsson + + * readelf.c (display_debug_lines): Fix typo for "Prologue". + 2001-03-30 H.J. Lu * readelf.c (process_unwind): Just return if do_unwind is 0. diff -uprN binutils-2.11.90.0.4/binutils/MAINTAINERS binutils-2.11.90.0.5/binutils/MAINTAINERS --- binutils-2.11.90.0.4/binutils/MAINTAINERS Thu Mar 15 14:51:42 2001 +++ binutils-2.11.90.0.5/binutils/MAINTAINERS Fri Apr 13 11:17:45 2001 @@ -17,7 +17,7 @@ Ian Taylor Jeff Law Jim Wilson DJ Delorie -Alan Modra +Alan Modra Michael Meissner --------- Maintainers --------- @@ -36,10 +36,10 @@ other maintainers. ARM Nick Clifton AVR Denis Chertykov CRIS Hans-Peter Nilsson -HPPA elf32 Alan Modra +HPPA elf32 Alan Modra IA64 Jim Wilson i860 Jason Eckhardt -ix86 Alan Modra +ix86 Alan Modra ix86 COFF,PE DJ Delorie ix86 H.J.Lu ix86 INTEL MODE Diego Novillo diff -uprN binutils-2.11.90.0.4/binutils/addr2line.1 binutils-2.11.90.0.5/binutils/addr2line.1 --- binutils-2.11.90.0.4/binutils/addr2line.1 Sun Apr 1 19:29:24 2001 +++ binutils-2.11.90.0.5/binutils/addr2line.1 Sat Apr 14 17:50:32 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:24 2001 +.\" Sat Apr 14 17:50:27 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "ADDR2LINE.1 1" -.TH ADDR2LINE.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH ADDR2LINE.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" addr2line \- convert addresses into file names and line numbers. diff -uprN binutils-2.11.90.0.4/binutils/ar.1 binutils-2.11.90.0.5/binutils/ar.1 --- binutils-2.11.90.0.4/binutils/ar.1 Sun Apr 1 19:29:26 2001 +++ binutils-2.11.90.0.5/binutils/ar.1 Sat Apr 14 17:50:33 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:25 2001 +.\" Sat Apr 14 17:50:27 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "AR.1 1" -.TH AR.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH AR.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" ar \- create, modify, and extract from archives diff -uprN binutils-2.11.90.0.4/binutils/cxxfilt.man binutils-2.11.90.0.5/binutils/cxxfilt.man --- binutils-2.11.90.0.4/binutils/cxxfilt.man Sun Apr 1 19:29:36 2001 +++ binutils-2.11.90.0.5/binutils/cxxfilt.man Sat Apr 14 17:50:41 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:35 2001 +.\" Sat Apr 14 17:50:36 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "CXXFILT.MAN 1" -.TH CXXFILT.MAN 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH CXXFILT.MAN 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" cxxfilt \- Demangle \*(C+ and Java symbols. diff -uprN binutils-2.11.90.0.4/binutils/dlltool.1 binutils-2.11.90.0.5/binutils/dlltool.1 --- binutils-2.11.90.0.4/binutils/dlltool.1 Sun Apr 1 19:29:26 2001 +++ binutils-2.11.90.0.5/binutils/dlltool.1 Sat Apr 14 17:50:34 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:25 2001 +.\" Sat Apr 14 17:50:28 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "DLLTOOL.1 1" -.TH DLLTOOL.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH DLLTOOL.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" dlltool \- Create files needed to build and use DLLs. diff -uprN binutils-2.11.90.0.4/binutils/nlmconv.1 binutils-2.11.90.0.5/binutils/nlmconv.1 --- binutils-2.11.90.0.4/binutils/nlmconv.1 Sun Apr 1 19:29:28 2001 +++ binutils-2.11.90.0.5/binutils/nlmconv.1 Sat Apr 14 17:50:34 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:27 2001 +.\" Sat Apr 14 17:50:29 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "NLMCONV.1 1" -.TH NLMCONV.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH NLMCONV.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" nlmconv \- converts object code into an \s-1NLM\s0. diff -uprN binutils-2.11.90.0.4/binutils/nm.1 binutils-2.11.90.0.5/binutils/nm.1 --- binutils-2.11.90.0.4/binutils/nm.1 Sun Apr 1 19:29:29 2001 +++ binutils-2.11.90.0.5/binutils/nm.1 Sat Apr 14 17:50:35 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:28 2001 +.\" Sat Apr 14 17:50:30 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "NM.1 1" -.TH NM.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH NM.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" nm \- list symbols from object files diff -uprN binutils-2.11.90.0.4/binutils/nm.c binutils-2.11.90.0.5/binutils/nm.c --- binutils-2.11.90.0.4/binutils/nm.c Sat Mar 17 12:47:58 2001 +++ binutils-2.11.90.0.5/binutils/nm.c Fri Apr 13 11:47:25 2001 @@ -1476,10 +1476,9 @@ print_symbol_info_bsd (info, abfd) if (bfd_is_undefined_symclass (info->type)) { #ifdef BFD64 - printf ("%*s", 16, ""); -#else - printf ("%*s", 8, ""); + printf (" "); #endif + printf (" "); } else print_value (info->value); diff -uprN binutils-2.11.90.0.4/binutils/objcopy.1 binutils-2.11.90.0.5/binutils/objcopy.1 --- binutils-2.11.90.0.4/binutils/objcopy.1 Sun Apr 1 19:29:31 2001 +++ binutils-2.11.90.0.5/binutils/objcopy.1 Sat Apr 14 17:50:37 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:29 2001 +.\" Sat Apr 14 17:50:31 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "OBJCOPY.1 1" -.TH OBJCOPY.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH OBJCOPY.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" objcopy \- copy and translate object files diff -uprN binutils-2.11.90.0.4/binutils/objdump.1 binutils-2.11.90.0.5/binutils/objdump.1 --- binutils-2.11.90.0.4/binutils/objdump.1 Sun Apr 1 19:29:32 2001 +++ binutils-2.11.90.0.5/binutils/objdump.1 Sat Apr 14 17:50:37 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:31 2001 +.\" Sat Apr 14 17:50:32 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "OBJDUMP.1 1" -.TH OBJDUMP.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH OBJDUMP.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" objdump \- display information from object files. diff -uprN binutils-2.11.90.0.4/binutils/ranlib.1 binutils-2.11.90.0.5/binutils/ranlib.1 --- binutils-2.11.90.0.4/binutils/ranlib.1 Sun Apr 1 19:29:32 2001 +++ binutils-2.11.90.0.5/binutils/ranlib.1 Sat Apr 14 17:50:38 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:32 2001 +.\" Sat Apr 14 17:50:33 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "RANLIB.1 1" -.TH RANLIB.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH RANLIB.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" ranlib \- generate index to archive. diff -uprN binutils-2.11.90.0.4/binutils/readelf.1 binutils-2.11.90.0.5/binutils/readelf.1 --- binutils-2.11.90.0.4/binutils/readelf.1 Sun Apr 1 19:29:33 2001 +++ binutils-2.11.90.0.5/binutils/readelf.1 Sat Apr 14 17:50:39 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:33 2001 +.\" Sat Apr 14 17:50:34 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "READELF.1 1" -.TH READELF.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH READELF.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" readelf \- Displays information about \s-1ELF\s0 files. diff -uprN binutils-2.11.90.0.4/binutils/readelf.c binutils-2.11.90.0.5/binutils/readelf.c --- binutils-2.11.90.0.4/binutils/readelf.c Fri Mar 30 22:50:05 2001 +++ binutils-2.11.90.0.5/binutils/readelf.c Fri Apr 6 15:50:28 2001 @@ -5494,7 +5494,7 @@ display_debug_lines (section, start, fil printf (_(" Length: %ld\n"), info.li_length); printf (_(" DWARF Version: %d\n"), info.li_version); - printf (_(" Prolgue Length: %d\n"), info.li_prologue_length); + printf (_(" Prologue Length: %d\n"), info.li_prologue_length); printf (_(" Minimum Instruction Length: %d\n"), info.li_min_insn_length); printf (_(" Initial value of 'is_stmt': %d\n"), info.li_default_is_stmt); printf (_(" Line Base: %d\n"), info.li_line_base); diff -uprN binutils-2.11.90.0.4/binutils/size.1 binutils-2.11.90.0.5/binutils/size.1 --- binutils-2.11.90.0.4/binutils/size.1 Sun Apr 1 19:29:34 2001 +++ binutils-2.11.90.0.5/binutils/size.1 Sat Apr 14 17:50:39 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:33 2001 +.\" Sat Apr 14 17:50:34 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "SIZE.1 1" -.TH SIZE.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH SIZE.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" size \- list section sizes and total size. diff -uprN binutils-2.11.90.0.4/binutils/strings.1 binutils-2.11.90.0.5/binutils/strings.1 --- binutils-2.11.90.0.4/binutils/strings.1 Sun Apr 1 19:29:34 2001 +++ binutils-2.11.90.0.5/binutils/strings.1 Sat Apr 14 17:50:39 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:33 2001 +.\" Sat Apr 14 17:50:34 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "STRINGS.1 1" -.TH STRINGS.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH STRINGS.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" strings \- print the strings of printable characters in files. diff -uprN binutils-2.11.90.0.4/binutils/strip.1 binutils-2.11.90.0.5/binutils/strip.1 --- binutils-2.11.90.0.4/binutils/strip.1 Sun Apr 1 19:29:35 2001 +++ binutils-2.11.90.0.5/binutils/strip.1 Sat Apr 14 17:50:41 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:34 2001 +.\" Sat Apr 14 17:50:35 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "STRIP.1 1" -.TH STRIP.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH STRIP.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" strip \- Discard symbols from object files. diff -uprN binutils-2.11.90.0.4/binutils/windres.1 binutils-2.11.90.0.5/binutils/windres.1 --- binutils-2.11.90.0.4/binutils/windres.1 Sun Apr 1 19:29:35 2001 +++ binutils-2.11.90.0.5/binutils/windres.1 Sat Apr 14 17:50:41 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:29:35 2001 +.\" Sat Apr 14 17:50:35 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "WINDRES.1 1" -.TH WINDRES.1 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH WINDRES.1 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" windres \- manipulate Windows resources. diff -uprN binutils-2.11.90.0.4/binutils.spec binutils-2.11.90.0.5/binutils.spec --- binutils-2.11.90.0.4/binutils.spec Sun Apr 1 19:15:46 2001 +++ binutils-2.11.90.0.5/binutils.spec Sat Apr 14 17:31:49 2001 @@ -5,12 +5,12 @@ Summary: A GNU collection of binary util Name: binutils %ifarch i386 i486 i586 i686 %if %{COFF} -Version: 2.11.90.0.4.coff +Version: 2.11.90.0.5.coff %else -Version: 2.11.90.0.4 +Version: 2.11.90.0.5 %endif %else -Version: 2.11.90.0.4 +Version: 2.11.90.0.5 %endif Release: 1 Copyright: GPL diff -uprN binutils-2.11.90.0.4/gas/ChangeLog binutils-2.11.90.0.5/gas/ChangeLog --- binutils-2.11.90.0.4/gas/ChangeLog Sat Mar 31 19:48:09 2001 +++ binutils-2.11.90.0.5/gas/ChangeLog Sat Apr 14 12:41:44 2001 @@ -1,3 +1,86 @@ +2001-04-14 Alexandre Oliva + + * struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE. + * symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT. + + * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of + pc-relative relocations not placed at the end of the instruction. + +2001-04-13 Jim Wilson + + * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. + excluding br.i. + +2001-04-13 Jakub Jelinek + + * config/obj-elf.c (obj_elf_change_section): Add entsize argument, + handle SHF_MERGE and SHF_STRINGS. + (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. + (obj_elf_section): Allow additional argument specifying entity size. + * write.c (adjust_reloc_syms): Keep relocations against local symbols + in SEC_MERGE sections. + +2001-04-12 Jason Merrill + + * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. + +2001-04-12 Alexandre Oliva + + * expr.c (operand): Pass &c to md_parse_name(). + * config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust. + +2001-04-07 Steven J. Hill + + * config/tc-mips.c: Support ELF64 for traditional MIPS targets. + + * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. + * Makefile.in: Regenerated. + + * configure.in: Use traditional MIPS targets for Linux/MIPS. + * configure: Regenerated. + +2001-04-06 Alexandre Oliva + + * config/tc-mn10300.c (xr_registers): Added `pc'. + +2001-04-05 Alan Modra + + * configure.in: Add h8500-*-coff and h8500-*-rtems targets. + * configure: Regenerate. + + * config/tc-h8500.c (md_estimate_size_before_relax): Add missing + cases, and always return size based on current fr_subtype. + (md_begin): Move initialization of md_relax_table.. + (md_relax_table): ..to static initializer. Set rlx_length for + UNDEF_WORD_DISP cases. + * config/tc-w65.c (md_estimate_size_before_relax): Likewise. + (md_begin): Likewise. + (md_relax_table): Likewise. + * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + Set rlx_backward and rlx_forward to zero for unused states. + * config/tc-sh.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + (UNCOND12, UNCOND32): Remove duplicate defines. + +2001-04-04 Hans-Peter Nilsson + + * config/tc-cris.c (md_estimate_size_before_relax) : Don't emit + 32-bit branch, just set fragP->fr_subtype. Set fragP->fr_var. + : Always set fragP->fr_var using md_cris_relax_table. + Add cases to cover all relax states. + (cris_insn_first_word_frag): New. + (md_assemble): Call cris_insn_first_word_frag to get the first + frag in an insn, not frag_more. Don't call dwarf2_emit_insn at + end. Drop variable insn_size. + (gen_bdap): Call cris_insn_first_word_frag, not frag_more. + (cris_sym_leading_underscore): Wrap first as_bad parameter in _(). + (cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto. + + * write.c (write_object_file): Reset broken word state before + calling relax_seg. + 2001-03-31 Alan Modra * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT diff -uprN binutils-2.11.90.0.4/gas/Makefile.am binutils-2.11.90.0.5/gas/Makefile.am --- binutils-2.11.90.0.4/gas/Makefile.am Tue Feb 27 10:48:47 2001 +++ binutils-2.11.90.0.5/gas/Makefile.am Sat Apr 7 23:03:02 2001 @@ -361,7 +361,8 @@ TARG_ENV_HFILES = \ config/te-sparcaout.h \ config/te-sun3.h \ config/te-svr4.h \ - config/te-sysv32.h + config/te-sysv32.h \ + config/te-tmips.h # Multi files in config diff -uprN binutils-2.11.90.0.4/gas/Makefile.in binutils-2.11.90.0.5/gas/Makefile.in --- binutils-2.11.90.0.4/gas/Makefile.in Tue Feb 27 10:48:47 2001 +++ binutils-2.11.90.0.5/gas/Makefile.in Sat Apr 7 23:03:03 2001 @@ -482,7 +482,8 @@ TARG_ENV_HFILES = \ config/te-sparcaout.h \ config/te-sun3.h \ config/te-svr4.h \ - config/te-sysv32.h + config/te-sysv32.h \ + config/te-tmips.h # Multi files in config diff -uprN binutils-2.11.90.0.4/gas/config/obj-elf.c binutils-2.11.90.0.5/gas/config/obj-elf.c --- binutils-2.11.90.0.4/gas/config/obj-elf.c Fri Mar 9 11:38:15 2001 +++ binutils-2.11.90.0.5/gas/config/obj-elf.c Fri Apr 13 11:47:28 2001 @@ -619,9 +619,9 @@ static struct special_section const spec }; void -obj_elf_change_section (name, type, attr, push) +obj_elf_change_section (name, type, attr, entsize, push) char *name; - int type, attr, push; + int type, attr, entsize, push; { asection *old_sec; segT sec; @@ -689,7 +689,9 @@ obj_elf_change_section (name, type, attr | ((attr & SHF_WRITE) ? 0 : SEC_READONLY) | ((attr & SHF_ALLOC) ? SEC_ALLOC : 0) | (((attr & SHF_ALLOC) && type != SHT_NOBITS) ? SEC_LOAD : 0) - | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0)); + | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0) + | ((attr & SHF_MERGE) ? SEC_MERGE : 0) + | ((attr & SHF_STRINGS) ? SEC_STRINGS : 0)); #ifdef md_elf_section_flags flags = md_elf_section_flags (flags, attr, type); #endif @@ -703,6 +705,8 @@ obj_elf_change_section (name, type, attr seg_info (sec)->bss = 1; bfd_set_section_flags (stdoutput, sec, flags); + if (flags & SEC_MERGE) + sec->entsize = entsize; /* Add a symbol for this section to the symbol table. */ secsym = symbol_find (name); @@ -718,8 +722,10 @@ obj_elf_change_section (name, type, attr saw the first time. */ if ((old_sec->flags ^ flags) & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_EXCLUDE | SEC_SORT_ENTRIES)) + | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS)) as_warn (_("Ignoring changed section attributes for %s"), name); + else if ((flags & SEC_MERGE) && old_sec->entsize != entsize) + as_warn (_("Ignoring changed section entity size for %s"), name); } #ifdef md_elf_section_change_hook @@ -747,9 +753,15 @@ obj_elf_parse_section_letters (str, len) case 'x': attr |= SHF_EXECINSTR; break; + case 'm': + attr |= SHF_MERGE; + break; + case 's': + attr |= SHF_STRINGS; + break; default: { - char *bad_msg = _("Unrecognized .section attribute: want a,w,x"); + char *bad_msg = _("Unrecognized .section attribute: want a,m,s,w,x"); #ifdef md_elf_section_letter int md_attr = md_elf_section_letter (*str, &bad_msg); if (md_attr >= 0) @@ -821,6 +833,7 @@ obj_elf_section (push) { char *name, *beg, *end; int type, attr, dummy; + int entsize; #ifndef TC_I370 if (flag_mri) @@ -876,6 +889,7 @@ obj_elf_section (push) type = SHT_NULL; attr = 0; + entsize = 0; if (*input_line_pointer == ',') { @@ -918,6 +932,20 @@ obj_elf_section (push) type = obj_elf_section_type (beg, input_line_pointer - beg); } } + + SKIP_WHITESPACE (); + if ((attr & SHF_MERGE) && *input_line_pointer == ',') + { + ++input_line_pointer; + SKIP_WHITESPACE (); + entsize = get_absolute_expression (); + if (entsize < 0) + { + as_warn (_("Bad .section directive - invalid merge entity size")); + attr &= ~SHF_MERGE; + entsize = 0; + } + } } else { @@ -947,7 +975,13 @@ obj_elf_section (push) demand_empty_rest_of_line (); - obj_elf_change_section (name, type, attr, push); + if ((attr & SHF_MERGE) && entsize == 0) + { + as_warn (_("Entity size for SHF_MERGE not specified.\nSpecify entity size as 4th argument")); + attr &= SHF_MERGE; + } + + obj_elf_change_section (name, type, attr, entsize, push); } /* Change to the .data section. */ diff -uprN binutils-2.11.90.0.4/gas/config/tc-cris.c binutils-2.11.90.0.5/gas/config/tc-cris.c --- binutils-2.11.90.0.4/gas/config/tc-cris.c Thu Mar 29 17:36:03 2001 +++ binutils-2.11.90.0.5/gas/config/tc-cris.c Fri Apr 6 15:32:56 2001 @@ -145,6 +145,7 @@ static void cris_force_reg_prefix PARAMS static void cris_relax_reg_prefix PARAMS ((void)); static void cris_sym_leading_underscore PARAMS ((void)); static void cris_sym_no_leading_underscore PARAMS ((void)); +static char *cris_insn_first_word_frag PARAMS ((void)); /* Handle to the opcode hash table. */ static struct hash_control *op_hash = NULL; @@ -357,33 +358,14 @@ md_estimate_size_before_relax (fragP, se { case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF): if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) - { - /* The symbol lies in the same segment - a relaxable case. */ - fragP->fr_subtype - = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE); - } + /* The symbol lies in the same segment - a relaxable case. */ + fragP->fr_subtype + = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE); else - { - /* Unknown or not the same segment, so not relaxable. */ - char *writep; - - /* A small branch-always (2 bytes) to the "real" branch - instruction, plus a delay-slot nop (2 bytes), plus a - jump (2 plus 4 bytes). See gen_cond_branch_32. */ - fragP->fr_fix += 2 + 2 + 2 + 4; - writep = fragP->fr_literal + old_fr_fix; - gen_cond_branch_32 (fragP->fr_opcode, writep, fragP, - fragP->fr_symbol, (symbolS *) NULL, - fragP->fr_offset); - frag_wane (fragP); - } - break; - - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): - case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): - /* We *might* give a better initial guess if we peek at offsets - now, but the caller will relax correctly and without this, so - don't bother. */ + /* Unknown or not the same segment, so not relaxable. */ + fragP->fr_subtype + = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD); + fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; break; case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_UNDF): @@ -402,7 +384,7 @@ md_estimate_size_before_relax (fragP, se /* Go for dword if not absolute or same segment. */ fragP->fr_subtype = ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD); - fragP->fr_var += 4; + fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; } else { @@ -445,9 +427,15 @@ md_estimate_size_before_relax (fragP, se } break; + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD): + case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE): + case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD): case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD): /* When relaxing a section for the second time, we don't need to - do anything. */ + do anything except making sure that fr_var is set right. */ + fragP->fr_var = md_cris_relax_table[fragP->fr_subtype].rlx_length; break; default: @@ -662,6 +650,26 @@ md_create_long_jump (storep, from_addr, } } +/* Allocate space for the first piece of an insn, and mark it as the + start of the insn for debug-format use. */ + +static char * +cris_insn_first_word_frag () +{ + char *insnp = frag_more (2); + + /* We need to mark the start of the insn by passing dwarf2_emit_insn + the offset from the current fragment position. This must be done + after the first fragment is created but before any other fragments + (fixed or varying) are created. Note that the offset only + corresponds to the "size" of the insn for a fixed-size, + non-expanded insn. */ + if (OUTPUT_FLAVOR == bfd_target_elf_flavour) + dwarf2_emit_insn (2); + + return insnp; +} + /* Port-specific assembler initialization. */ void @@ -706,7 +714,6 @@ md_assemble (str) struct cris_prefix prefix; char *opcodep; char *p; - int insn_size = 0; know (str); @@ -734,8 +741,7 @@ md_assemble (str) case PREFIX_BDAP: case PREFIX_BIAP: case PREFIX_DIP: - insn_size += 2; - opcodep = frag_more (2); + opcodep = cris_insn_first_word_frag (); /* Output the prefix opcode. */ md_number_to_chars (opcodep, (long) prefix.opcode, 2); @@ -749,7 +755,6 @@ md_assemble (str) = (prefix.kind == PREFIX_DIP ? 4 : cris_get_pic_reloc_size (prefix.reloc)); - insn_size += relocsize; p = frag_more (relocsize); fix_new_exp (frag_now, (p - frag_now->fr_literal), relocsize, &prefix.expr, 0, prefix.reloc); @@ -757,8 +762,7 @@ md_assemble (str) break; case PREFIX_PUSH: - insn_size += 2; - opcodep = frag_more (2); + opcodep = cris_insn_first_word_frag (); /* Output the prefix opcode. Being a "push", we add the negative size of the register to "sp". */ @@ -784,8 +788,10 @@ md_assemble (str) return; /* Done with the prefix. Continue with the main instruction. */ - insn_size += 2; - opcodep = frag_more (2); + if (prefix.kind == PREFIX_NONE) + opcodep = cris_insn_first_word_frag (); + else + opcodep = frag_more (2); /* Output the instruction opcode. */ md_number_to_chars (opcodep, (long) (output_instruction.opcode), 2); @@ -833,7 +839,6 @@ md_assemble (str) branch. */ char *cond_jump = frag_more (10); - insn_size += 10; gen_cond_branch_32 (opcodep, cond_jump, frag_now, output_instruction.expr.X_add_symbol, (symbolS *) NULL, @@ -874,7 +879,6 @@ md_assemble (str) BAD_CASE (output_instruction.imm_oprnd_size); } - insn_size += output_instruction.imm_oprnd_size; p = frag_more (output_instruction.imm_oprnd_size); fix_new_exp (frag_now, (p - frag_now->fr_literal), output_instruction.imm_oprnd_size, @@ -894,9 +898,6 @@ md_assemble (str) output_instruction.reloc); } } - - if (OUTPUT_FLAVOR == bfd_target_elf_flavour) - dwarf2_emit_insn (insn_size); } /* Low level text-to-bits assembly. */ @@ -2350,7 +2351,7 @@ gen_bdap (base_regno, exprP) /* Put out the prefix opcode; assume quick immediate mode at first. */ opcode = BDAP_QUICK_OPCODE | (base_regno << 12); - opcodep = frag_more (2); + opcodep = cris_insn_first_word_frag (); md_number_to_chars (opcodep, opcode, 2); if (exprP->X_op == O_constant) @@ -3113,7 +3114,7 @@ static void cris_sym_leading_underscore the bfd is already created. */ if (symbols_have_leading_underscore == false) - as_bad (".syntax %s requires command-line option `--underscore'", + as_bad (_(".syntax %s requires command-line option `--underscore'"), SYNTAX_USER_SYM_LEADING_UNDERSCORE); } @@ -3122,7 +3123,7 @@ static void cris_sym_leading_underscore static void cris_sym_no_leading_underscore () { if (symbols_have_leading_underscore == true) - as_bad (".syntax %s requires command-line option `--no-underscore'", + as_bad (_(".syntax %s requires command-line option `--no-underscore'"), SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE); } @@ -3171,7 +3172,7 @@ s_cris_file (dummy) int dummy; { if (OUTPUT_FLAVOR != bfd_target_elf_flavour) - as_bad ("Pseudodirective .file is only valid when generating ELF"); + as_bad (_("Pseudodirective .file is only valid when generating ELF")); else dwarf2_directive_file (dummy); } @@ -3184,7 +3185,7 @@ s_cris_loc (dummy) int dummy; { if (OUTPUT_FLAVOR != bfd_target_elf_flavour) - as_bad ("Pseudodirective .loc is only valid when generating ELF"); + as_bad (_("Pseudodirective .loc is only valid when generating ELF")); else dwarf2_directive_loc (dummy); } diff -uprN binutils-2.11.90.0.4/gas/config/tc-h8500.c binutils-2.11.90.0.5/gas/config/tc-h8500.c --- binutils-2.11.90.0.4/gas/config/tc-h8500.c Thu Mar 29 17:36:04 2001 +++ binutils-2.11.90.0.5/gas/config/tc-h8500.c Fri Apr 6 15:32:57 2001 @@ -86,7 +86,31 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; #define WORD_F 32767 #define WORD_B 32768 -relax_typeS md_relax_table[C (END, 0)]; +relax_typeS md_relax_table[C (END, 0)] = { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + + /* BRANCH */ + { 0, 0, 0, 0 }, + { BYTE_F, BYTE_B, 2, C (BRANCH, WORD_DISP) }, + { WORD_F, WORD_B, 3, 0 }, + { 0, 0, 3, 0 }, + + /* SCB_F */ + { 0, 0, 0, 0 }, + { BYTE_F, BYTE_B, 3, C (SCB_F, WORD_DISP) }, + { WORD_F, WORD_B, 8, 0 }, + { 0, 0, 8, 0 }, + + /* SCB_TST */ + { 0, 0, 0, 0 }, + { BYTE_F, BYTE_B, 3, C (SCB_TST, WORD_DISP) }, + { WORD_F, WORD_B, 10, 0 }, + { 0, 0, 10, 0 } + +}; static struct hash_control *opcode_hash_control; /* Opcode mnemonics */ @@ -101,7 +125,6 @@ md_begin () h8500_opcode_info *opcode; char prev_buffer[100]; int idx = 0; - register relax_typeS *table; opcode_hash_control = hash_new (); prev_buffer[0] = 0; @@ -115,40 +138,6 @@ md_begin () idx++; } } - - /* Initialize the relax table. We use a local variable to avoid - warnings about modifying a supposedly const data structure. */ - table = (relax_typeS *) md_relax_table; - table[C (BRANCH, BYTE_DISP)].rlx_forward = BYTE_F; - table[C (BRANCH, BYTE_DISP)].rlx_backward = BYTE_B; - table[C (BRANCH, BYTE_DISP)].rlx_length = 2; - table[C (BRANCH, BYTE_DISP)].rlx_more = C (BRANCH, WORD_DISP); - - table[C (BRANCH, WORD_DISP)].rlx_forward = WORD_F; - table[C (BRANCH, WORD_DISP)].rlx_backward = WORD_B; - table[C (BRANCH, WORD_DISP)].rlx_length = 3; - table[C (BRANCH, WORD_DISP)].rlx_more = 0; - - table[C (SCB_F, BYTE_DISP)].rlx_forward = BYTE_F; - table[C (SCB_F, BYTE_DISP)].rlx_backward = BYTE_B; - table[C (SCB_F, BYTE_DISP)].rlx_length = 3; - table[C (SCB_F, BYTE_DISP)].rlx_more = C (SCB_F, WORD_DISP); - - table[C (SCB_F, WORD_DISP)].rlx_forward = WORD_F; - table[C (SCB_F, WORD_DISP)].rlx_backward = WORD_B; - table[C (SCB_F, WORD_DISP)].rlx_length = 8; - table[C (SCB_F, WORD_DISP)].rlx_more = 0; - - table[C (SCB_TST, BYTE_DISP)].rlx_forward = BYTE_F; - table[C (SCB_TST, BYTE_DISP)].rlx_backward = BYTE_B; - table[C (SCB_TST, BYTE_DISP)].rlx_length = 3; - table[C (SCB_TST, BYTE_DISP)].rlx_more = C (SCB_TST, WORD_DISP); - - table[C (SCB_TST, WORD_DISP)].rlx_forward = WORD_F; - table[C (SCB_TST, WORD_DISP)].rlx_backward = WORD_B; - table[C (SCB_TST, WORD_DISP)].rlx_length = 10; - table[C (SCB_TST, WORD_DISP)].rlx_more = 0; - } static int rn; /* register number used by RN */ @@ -1442,7 +1431,7 @@ md_estimate_size_before_relax (fragP, se register fragS *fragP; register segT segment_type; { - int what = GET_WHAT (fragP->fr_subtype); + int what; switch (fragP->fr_subtype) { @@ -1452,33 +1441,37 @@ md_estimate_size_before_relax (fragP, se case C (BRANCH, UNDEF_BYTE_DISP): case C (SCB_F, UNDEF_BYTE_DISP): case C (SCB_TST, UNDEF_BYTE_DISP): + what = GET_WHAT (fragP->fr_subtype); /* used to be a branch to somewhere which was unknown */ if (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, BYTE_DISP); - fragP->fr_var = md_relax_table[C (what, BYTE_DISP)].rlx_length; } else { /* Its got a segment, but its not ours, so it will always be long. */ fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (what, WORD_DISP)].rlx_length; } break; case C (BRANCH, BYTE_DISP): + case C (BRANCH, WORD_DISP): case C (BRANCH, UNDEF_WORD_DISP): case C (SCB_F, BYTE_DISP): + case C (SCB_F, WORD_DISP): case C (SCB_F, UNDEF_WORD_DISP): case C (SCB_TST, BYTE_DISP): + case C (SCB_TST, WORD_DISP): case C (SCB_TST, UNDEF_WORD_DISP): /* When relaxing a section for the second time, we don't need to - do anything. */ + do anything besides return the current size. */ break; } + + fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; return fragP->fr_var; } diff -uprN binutils-2.11.90.0.4/gas/config/tc-ia64.c binutils-2.11.90.0.5/gas/config/tc-ia64.c --- binutils-2.11.90.0.4/gas/config/tc-ia64.c Sat Mar 17 12:59:28 2001 +++ binutils-2.11.90.0.5/gas/config/tc-ia64.c Sat Apr 14 12:52:24 2001 @@ -6889,19 +6889,19 @@ ia64_canonicalize_symbol_name (name) return name; } +/* Return true if idesc is a conditional branch instruction. */ + static int is_conditional_branch (idesc) struct ia64_opcode *idesc; { - return (strncmp (idesc->name, "br", 2) == 0 - && (strcmp (idesc->name, "br") == 0 - || strncmp (idesc->name, "br.cond", 7) == 0 - || strncmp (idesc->name, "br.call", 7) == 0 - || strncmp (idesc->name, "br.ret", 6) == 0 - || strcmp (idesc->name, "brl") == 0 - || strncmp (idesc->name, "brl.cond", 7) == 0 - || strncmp (idesc->name, "brl.call", 7) == 0 - || strncmp (idesc->name, "brl.ret", 6) == 0)); + /* br is a conditional branch. Everything that starts with br. except + br.ia is a conditional branch. Everything that starts with brl is a + conditional branch. */ + return (idesc->name[0] == 'b' && idesc->name[1] == 'r' + && (idesc->name[2] == '\0' + || (idesc->name[2] == '.' && idesc->name[3] != 'i') + || idesc->name[2] == 'l')); } /* Return whether the given opcode is a taken branch. If there's any doubt, diff -uprN binutils-2.11.90.0.4/gas/config/tc-ia64.h binutils-2.11.90.0.5/gas/config/tc-ia64.h --- binutils-2.11.90.0.4/gas/config/tc-ia64.h Fri Mar 9 11:38:16 2001 +++ binutils-2.11.90.0.5/gas/config/tc-ia64.h Fri Apr 13 11:47:30 2001 @@ -92,7 +92,7 @@ extern void ia64_handle_align PARAMS ((f #define tc_unrecognized_line(ch) ia64_unrecognized_line (ch) #define tc_frob_label(s) ia64_frob_label (s) #define md_flush_pending_output() ia64_flush_pending_output () -#define md_parse_name(s,e) ia64_parse_name (s, e) +#define md_parse_name(s,e,c) ia64_parse_name (s, e) #define tc_canonicalize_symbol_name(s) ia64_canonicalize_symbol_name (s) #define md_optimize_expr(l,o,r) ia64_optimize_expr (l, o, r) #define md_cons_align(n) ia64_cons_align (n) diff -uprN binutils-2.11.90.0.4/gas/config/tc-mcore.c binutils-2.11.90.0.5/gas/config/tc-mcore.c --- binutils-2.11.90.0.4/gas/config/tc-mcore.c Thu Mar 29 17:36:10 2001 +++ binutils-2.11.90.0.5/gas/config/tc-mcore.c Fri Apr 6 15:33:02 2001 @@ -111,20 +111,24 @@ cpu_type; cpu_type cpu = M340; /* Initialize the relax table. */ -const relax_typeS md_relax_table[] = -{ -{ 1, 1, 0, 0 }, /* 0: unused */ -{ 1, 1, 0, 0 }, /* 1: unused */ -{ 1, 1, 0, 0 }, /* 2: unused */ -{ 1, 1, 0, 0 }, /* 3: unused */ -{ 1, 1, 0, 0 }, /* 4: unused */ -{ 2048, -2046, C12_LEN, C(COND_JUMP, DISP32) }, /* 5: C(COND_JUMP, DISP12) */ -{ 0, 0, C32_LEN, 0 }, /* 6: C(COND_JUMP, DISP32) */ -{ 1, 1, 0, 0 }, /* 7: unused */ -{ 1, 1, 0, 0 }, /* 8: unused */ -{ 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* 9: C(UNCD_JUMP, DISP12) */ -{ 0, 0, U32_LEN, 0 }, /*10: C(UNCD_JUMP, DISP32) */ -{ 1, 1, 0, 0 }, /*11: unused */ +const relax_typeS md_relax_table[] = { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + + /* COND_JUMP */ + { 0, 0, 0, 0 }, /* UNDEF_DISP */ + { 2048, -2046, C12_LEN, C(COND_JUMP, DISP32) }, /* DISP12 */ + { 0, 0, C32_LEN, 0 }, /* DISP32 */ + { 0, 0, C32_LEN, 0 }, /* UNDEF_WORD_DISP */ + + /* UNCD_JUMP */ + { 0, 0, 0, 0 }, /* UNDEF_DISP */ + { 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* DISP12 */ + { 0, 0, U32_LEN, 0 }, /* DISP32 */ + { 0, 0, U32_LEN, 0 } /* UNDEF_WORD_DISP */ + }; /* Literal pool data structures. */ @@ -2251,17 +2255,14 @@ md_estimate_size_before_relax (fragP, se if (!fragP->fr_symbol) { fragP->fr_subtype = C (UNCD_JUMP, DISP12); - fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP12)].rlx_length; } else if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) { fragP->fr_subtype = C (UNCD_JUMP, DISP12); - fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP12)].rlx_length; } else { fragP->fr_subtype = C (UNCD_JUMP, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP32)].rlx_length; } break; @@ -2273,31 +2274,31 @@ md_estimate_size_before_relax (fragP, se /* Got a symbol and it's defined in this segment, become byte sized - maybe it will fix up */ fragP->fr_subtype = C (COND_JUMP, DISP12); - fragP->fr_var = md_relax_table[C (COND_JUMP, DISP12)].rlx_length; } else if (fragP->fr_symbol) { /* Its got a segment, but its not ours, so it will always be long. */ fragP->fr_subtype = C (COND_JUMP, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (COND_JUMP, DISP32)].rlx_length; } else { /* We know the abs value. */ fragP->fr_subtype = C (COND_JUMP, DISP12); - fragP->fr_var = md_relax_table[C (COND_JUMP, DISP12)].rlx_length; } break; case C (UNCD_JUMP, DISP12): + case C (UNCD_JUMP, DISP32): case C (UNCD_JUMP, UNDEF_WORD_DISP): case C (COND_JUMP, DISP12): + case C (COND_JUMP, DISP32): case C (COND_JUMP, UNDEF_WORD_DISP): /* When relaxing a section for the second time, we don't need to - do anything. */ + do anything besides return the current size. */ break; } + fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; return fragP->fr_var; } diff -uprN binutils-2.11.90.0.4/gas/config/tc-mips.c binutils-2.11.90.0.5/gas/config/tc-mips.c --- binutils-2.11.90.0.4/gas/config/tc-mips.c Thu Mar 29 23:37:35 2001 +++ binutils-2.11.90.0.5/gas/config/tc-mips.c Tue Apr 10 14:48:30 2001 @@ -126,7 +126,8 @@ mips_target_format () #ifdef TE_TMIPS /* This is traditional mips */ return (target_big_endian - ? "elf32-tradbigmips" : "elf32-tradlittlemips"); + ? (mips_64 ? "elf64-tradbigmips" : "elf32-tradbigmips") + : (mips_64 ? "elf64-tradlittlemips" : "elf32-tradlittlemips")); #else return (target_big_endian ? (mips_64 ? "elf64-bigmips" : "elf32-bigmips") @@ -10066,7 +10067,7 @@ mips_enable_auto_align () static void s_ident (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { mips_emit_delays (true); obj_elf_ident(0); diff -uprN binutils-2.11.90.0.4/gas/config/tc-mn10300.c binutils-2.11.90.0.5/gas/config/tc-mn10300.c --- binutils-2.11.90.0.4/gas/config/tc-mn10300.c Thu Mar 29 17:36:13 2001 +++ binutils-2.11.90.0.5/gas/config/tc-mn10300.c Sat Apr 14 12:42:32 2001 @@ -212,6 +212,7 @@ static const struct reg_name xr_register { "mcrl", 3 }, { "mcvf", 4 }, { "mdrq", 1 }, + { "pc", 0 }, { "sp", 0 }, { "xr0", 0 }, { "xr1", 1 }, @@ -936,7 +937,7 @@ md_assemble (str) struct mn10300_opcode *next_opcode; const unsigned char *opindex_ptr; int next_opindex, relaxable; - unsigned long insn, extension, size = 0, real_size; + unsigned long insn, extension, size = 0; char *f; int i; int match; @@ -1512,8 +1513,6 @@ keep_going: if (opcode->format == FMT_D4) size = 6; - real_size = size; - if (relaxable && fc > 0) { int type; @@ -1728,25 +1727,14 @@ keep_going: /* Is the reloc pc-relative? */ pcrel = (operand->flags & MN10300_OPERAND_PCREL) != 0; - /* Gross. This disgusting hack is to make sure we - get the right offset for the 16/32 bit reloc in - "call" instructions. Basically they're a pain - because the reloc isn't at the end of the instruction. */ - if ((size == 5 || size == 7) - && (((insn >> 24) & 0xff) == 0xcd - || ((insn >> 24) & 0xff) == 0xdd)) - size -= 2; - - /* Similarly for certain bit instructions which don't - hav their 32bit reloc at the tail of the instruction. */ - if (size == 7 - && (((insn >> 16) & 0xffff) == 0xfe00 - || ((insn >> 16) & 0xffff) == 0xfe01 - || ((insn >> 16) & 0xffff) == 0xfe02)) - size -= 1; - offset = size - reloc_size / 8; + /* If the pcrel relocation isn't at the end of the insn, + we have to adjust the offset for the relocation to be + correct. */ + if (pcrel) + offset -= operand->shift / 8; + /* Choose a proper BFD relocation type. */ if (pcrel) { @@ -1790,7 +1778,7 @@ keep_going: } } - dwarf2_emit_insn (real_size); + dwarf2_emit_insn (size); } /* If while processing a fixup, a reloc really needs to be created diff -uprN binutils-2.11.90.0.4/gas/config/tc-ppc.h binutils-2.11.90.0.5/gas/config/tc-ppc.h --- binutils-2.11.90.0.4/gas/config/tc-ppc.h Fri Mar 9 11:17:07 2001 +++ binutils-2.11.90.0.5/gas/config/tc-ppc.h Fri Apr 13 11:19:47 2001 @@ -268,7 +268,7 @@ extern const char *ppc_comment_chars; #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); -#define md_parse_name(name, exp) ppc_parse_name (name, exp) +#define md_parse_name(name, exp, c) ppc_parse_name (name, exp) extern int ppc_parse_name PARAMS ((const char *, struct expressionS *)); #define md_operand(x) diff -uprN binutils-2.11.90.0.4/gas/config/tc-sh.c binutils-2.11.90.0.5/gas/config/tc-sh.c --- binutils-2.11.90.0.4/gas/config/tc-sh.c Thu Mar 29 17:36:14 2001 +++ binutils-2.11.90.0.5/gas/config/tc-sh.c Fri Apr 6 15:33:06 2001 @@ -140,8 +140,6 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; #define COND8 1 #define COND12 2 #define COND32 3 -#define UNCOND12 1 -#define UNCOND32 2 #define UNDEF_WORD_DISP 4 #define UNCOND12 1 @@ -190,7 +188,9 @@ const relax_typeS md_relax_table[C (END, { COND12_F, COND12_M, COND12_LENGTH, C (COND_JUMP, COND32), }, /* C (COND_JUMP, COND32) */ { COND32_F, COND32_M, COND32_LENGTH, 0, }, - EMPTY, EMPTY, EMPTY, EMPTY, + /* C (COND_JUMP, UNDEF_WORD_DISP) */ + { 0, 0, COND32_LENGTH, 0, }, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, @@ -200,7 +200,9 @@ const relax_typeS md_relax_table[C (END, { COND12_F, COND12_M, COND12_DELAY_LENGTH, C (COND_JUMP_DELAY, COND32), }, /* C (COND_JUMP_DELAY, COND32) */ { COND32_F, COND32_M, COND32_LENGTH, 0, }, - EMPTY, EMPTY, EMPTY, EMPTY, + /* C (COND_JUMP_DELAY, UNDEF_WORD_DISP) */ + { 0, 0, COND32_LENGTH, 0, }, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, @@ -208,7 +210,10 @@ const relax_typeS md_relax_table[C (END, { UNCOND12_F, UNCOND12_M, UNCOND12_LENGTH, C (UNCOND_JUMP, UNCOND32), }, /* C (UNCOND_JUMP, UNCOND32) */ { UNCOND32_F, UNCOND32_M, UNCOND32_LENGTH, 0, }, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + EMPTY, + /* C (UNCOND_JUMP, UNDEF_WORD_DISP) */ + { 0, 0, UNCOND32_LENGTH, 0, }, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, }; @@ -3028,6 +3033,8 @@ md_estimate_size_before_relax (fragP, se register fragS *fragP; register segT segment_type; { + int what; + switch (fragP->fr_subtype) { default: @@ -3038,58 +3045,57 @@ md_estimate_size_before_relax (fragP, se if (!fragP->fr_symbol) { fragP->fr_subtype = C (UNCOND_JUMP, UNCOND12); - fragP->fr_var = md_relax_table[C (UNCOND_JUMP, UNCOND12)].rlx_length; } else if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type) { fragP->fr_subtype = C (UNCOND_JUMP, UNCOND12); - fragP->fr_var = md_relax_table[C (UNCOND_JUMP, UNCOND12)].rlx_length; } else { fragP->fr_subtype = C (UNCOND_JUMP, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (UNCOND_JUMP, UNCOND32)].rlx_length; } 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) { - int what = GET_WHAT (fragP->fr_subtype); /* Got a symbol and it's defined in this segment, become byte sized - maybe it will fix up. */ fragP->fr_subtype = C (what, COND8); - fragP->fr_var = md_relax_table[C (what, COND8)].rlx_length; } else if (fragP->fr_symbol) { - int what = GET_WHAT (fragP->fr_subtype); /* Its got a segment, but its not ours, so it will always be long. */ fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (what, COND32)].rlx_length; } else { - int what = GET_WHAT (fragP->fr_subtype); /* We know the abs value. */ fragP->fr_subtype = C (what, COND8); - fragP->fr_var = md_relax_table[C (what, COND8)].rlx_length; } 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. */ + do anything besides return the current size. */ break; } + + fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; return fragP->fr_var; } diff -uprN binutils-2.11.90.0.4/gas/config/tc-tic54x.h binutils-2.11.90.0.5/gas/config/tc-tic54x.h --- binutils-2.11.90.0.4/gas/config/tc-tic54x.h Fri Mar 9 11:17:10 2001 +++ binutils-2.11.90.0.5/gas/config/tc-tic54x.h Fri Apr 13 11:19:49 2001 @@ -88,7 +88,7 @@ extern void tic54x_number_to_chars PARAM extern void tic54x_adjust_symtab PARAMS(()); #define tc_unrecognized_line(ch) tic54x_unrecognized_line(ch) extern int tic54x_unrecognized_line PARAMS((int ch)); -#define md_parse_name(s,e) tic54x_parse_name(s,e) +#define md_parse_name(s,e,c) tic54x_parse_name(s,e) extern int tic54x_parse_name PARAMS((char *name, expressionS *e)); #define md_undefined_symbol(s) tic54x_undefined_symbol(s) extern symbolS *tic54x_undefined_symbol PARAMS((char *name)); diff -uprN binutils-2.11.90.0.4/gas/config/tc-w65.c binutils-2.11.90.0.5/gas/config/tc-w65.c --- binutils-2.11.90.0.4/gas/config/tc-w65.c Thu Mar 29 17:36:16 2001 +++ binutils-2.11.90.0.5/gas/config/tc-w65.c Fri Apr 6 15:33:09 2001 @@ -101,7 +101,25 @@ int X; /* X flag */ #define WORD_F 32767 #define WORD_B 32768 -relax_typeS md_relax_table[C (END, 0)]; +relax_typeS md_relax_table[C (END, 0)] = { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + + /* COND_BRANCH */ + { 0, 0, 0, 0 }, /* UNDEF_BYTE_DISP */ + { BYTE_F, BYTE_B, 2, C (COND_BRANCH, WORD_DISP) }, /* BYTE_DISP */ + { WORD_F, WORD_B, 5, 0 }, /* WORD_DISP */ + { 0, 0, 5, 0 }, /* UNDEF_WORD_DISP */ + + /* UNCOND_BRANCH */ + { 0, 0, 0, 0 }, /* UNDEF_BYTE_DISP */ + { BYTE_F, BYTE_B, 2, C (UNCOND_BRANCH, WORD_DISP) }, /* BYTE_DISP */ + { WORD_F, WORD_B, 3, 0 }, /* WORD_DISP */ + { 0, 0, 3, 0 } /* UNDEF_WORD_DISP */ + +}; /* This function is called once, at assembler startup time. This should set up all the tables, etc that the MD part of the assembler @@ -131,7 +149,6 @@ s_longa (xmode) void md_begin () { - relax_typeS *table; struct opinfo *opcode; char *prev_name = ""; @@ -153,29 +170,6 @@ md_begin () } } - /* Initialize the relax table. We use a local variable to avoid - warnings about modifying a supposedly const data structure. */ - table = (relax_typeS *) md_relax_table; - table[C (COND_BRANCH, BYTE_DISP)].rlx_forward = BYTE_F; - table[C (COND_BRANCH, BYTE_DISP)].rlx_backward = BYTE_B; - table[C (COND_BRANCH, BYTE_DISP)].rlx_length = 2; - table[C (COND_BRANCH, BYTE_DISP)].rlx_more = C (COND_BRANCH, WORD_DISP); - - table[C (COND_BRANCH, WORD_DISP)].rlx_forward = WORD_F; - table[C (COND_BRANCH, WORD_DISP)].rlx_backward = WORD_B; - table[C (COND_BRANCH, WORD_DISP)].rlx_length = 5; - table[C (COND_BRANCH, WORD_DISP)].rlx_more = 0; - - table[C (UNCOND_BRANCH, BYTE_DISP)].rlx_forward = BYTE_F; - table[C (UNCOND_BRANCH, BYTE_DISP)].rlx_backward = BYTE_B; - table[C (UNCOND_BRANCH, BYTE_DISP)].rlx_length = 2; - table[C (UNCOND_BRANCH, BYTE_DISP)].rlx_more = C (UNCOND_BRANCH, WORD_DISP); - - table[C (UNCOND_BRANCH, WORD_DISP)].rlx_forward = WORD_F; - table[C (UNCOND_BRANCH, WORD_DISP)].rlx_backward = WORD_B; - table[C (UNCOND_BRANCH, WORD_DISP)].rlx_length = 3; - table[C (UNCOND_BRANCH, WORD_DISP)].rlx_more = 0; - flag_signed_overflow_ok = 1; } @@ -1148,7 +1142,7 @@ md_estimate_size_before_relax (fragP, se register fragS *fragP; register segT segment_type; { - int what = GET_WHAT (fragP->fr_subtype); + int what; switch (fragP->fr_subtype) { @@ -1157,31 +1151,34 @@ md_estimate_size_before_relax (fragP, se case C (COND_BRANCH, UNDEF_BYTE_DISP): case C (UNCOND_BRANCH, UNDEF_BYTE_DISP): + what = GET_WHAT (fragP->fr_subtype); /* Used to be a branch to somewhere which was unknown. */ if (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, BYTE_DISP); - fragP->fr_var = md_relax_table[C (what, BYTE_DISP)].rlx_length; } else { /* Its got a segment, but its not ours, so it will always be long. */ fragP->fr_subtype = C (what, UNDEF_WORD_DISP); - fragP->fr_var = md_relax_table[C (what, WORD_DISP)].rlx_length; } break; case C (COND_BRANCH, BYTE_DISP): case C (COND_BRANCH, WORD_DISP): + case C (COND_BRANCH, UNDEF_WORD_DISP): case C (UNCOND_BRANCH, BYTE_DISP): case C (UNCOND_BRANCH, WORD_DISP): + case C (UNCOND_BRANCH, UNDEF_WORD_DISP): /* When relaxing a section for the second time, we don't need to - do anything. */ + do anything besides return the current size. */ break; } + + fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; return fragP->fr_var; } diff -uprN binutils-2.11.90.0.4/gas/configure binutils-2.11.90.0.5/gas/configure --- binutils-2.11.90.0.4/gas/configure Tue Mar 27 08:55:08 2001 +++ binutils-2.11.90.0.5/gas/configure Sat Apr 7 23:03:03 2001 @@ -55,7 +55,6 @@ program_suffix=NONE program_transform_name=s,x,x, silent= site= -sitefile= srcdir= target=NONE verbose= @@ -170,7 +169,6 @@ Configuration: --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX @@ -341,11 +339,6 @@ EOF -site=* | --site=* | --sit=*) site="$ac_optarg" ;; - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$ac_optarg" ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) @@ -511,16 +504,12 @@ fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. -if test -z "$sitefile"; then - 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 +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 -else - CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then @@ -559,12 +548,12 @@ else fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:563: checking for Cygwin environment" >&5 +echo "configure:552: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -592,19 +581,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6 CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:596: checking for mingw32 environment" >&5 +echo "configure:585: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -669,7 +658,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:673: checking host system type" >&5 +echo "configure:662: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -690,7 +679,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:694: checking target system type" >&5 +echo "configure:683: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -708,7 +697,7 @@ target_os=`echo $target | sed 's/^\([^-] echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:712: checking build system type" >&5 +echo "configure:701: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -732,7 +721,7 @@ test "$host_alias" != "$target_alias" && echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:736: checking for strerror in -lcposix" >&5 +echo "configure:725: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -740,7 +729,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -787,7 +776,7 @@ BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOM # 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:791: checking for a BSD compatible install" >&5 +echo "configure:780: 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 @@ -840,7 +829,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:844: checking whether build environment is sane" >&5 +echo "configure:833: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -897,7 +886,7 @@ test "$program_suffix" != NONE && test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:901: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:890: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -943,7 +932,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:947: checking for working aclocal" >&5 +echo "configure:936: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -956,7 +945,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:960: checking for working autoconf" >&5 +echo "configure:949: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -969,7 +958,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:973: checking for working automake" >&5 +echo "configure:962: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -982,7 +971,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:986: checking for working autoheader" >&5 +echo "configure:975: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -995,7 +984,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:999: checking for working makeinfo" >&5 +echo "configure:988: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1081,7 +1070,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1085: checking for $ac_word" >&5 +echo "configure:1074: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1111,7 +1100,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1115: checking for $ac_word" >&5 +echo "configure:1104: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1162,7 +1151,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1166: checking for $ac_word" >&5 +echo "configure:1155: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1194,7 +1183,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1198: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1187: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1205,12 +1194,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1209 "configure" +#line 1198 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1236,12 +1225,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1240: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1229: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1245: checking whether we are using GNU C" >&5 +echo "configure:1234: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1250,7 +1239,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1269,7 +1258,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1273: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1262: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1312,7 +1301,7 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1316: checking for ld used by GCC" >&5 +echo "configure:1305: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -1342,10 +1331,10 @@ echo "configure:1316: checking for ld us esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1346: checking for GNU ld" >&5 +echo "configure:1335: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1349: checking for non-GNU ld" >&5 +echo "configure:1338: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1380,7 +1369,7 @@ else fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1384: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1373: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1397,7 +1386,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 -echo "configure:1401: checking for $LD option to reload object files" >&5 +echo "configure:1390: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1409,7 +1398,7 @@ reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1413: checking for BSD-compatible nm" >&5 +echo "configure:1402: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1447,7 +1436,7 @@ NM="$lt_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1451: checking whether ln -s works" >&5 +echo "configure:1440: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1468,7 +1457,7 @@ else fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1472: checking how to recognise dependant libraries" >&5 +echo "configure:1461: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1623,13 +1612,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:1627: checking for object suffix" >&5 +echo "configure:1616: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:1633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1649,7 +1638,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1653: checking for executable suffix" >&5 +echo "configure:1642: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1659,10 +1648,10 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -1692,7 +1681,7 @@ case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 -echo "configure:1696: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1685: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1754,7 +1743,7 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 -echo "configure:1758: checking for file" >&5 +echo "configure:1747: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1825,7 +1814,7 @@ esac # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1829: checking for $ac_word" >&5 +echo "configure:1818: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1857,7 +1846,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1861: checking for $ac_word" >&5 +echo "configure:1850: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1892,7 +1881,7 @@ fi # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1896: checking for $ac_word" >&5 +echo "configure:1885: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1924,7 +1913,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1928: checking for $ac_word" >&5 +echo "configure:1917: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1991,8 +1980,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1995 "configure"' > conftest.$ac_ext - if { (eval echo configure:1996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1984 "configure"' > conftest.$ac_ext + if { (eval echo configure:1985: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -2013,7 +2002,7 @@ case $host in SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2017: checking whether the C compiler needs -belf" >&5 +echo "configure:2006: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2026,14 +2015,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -2380,6 +2369,8 @@ for this_target in $target $canon_target h8300-*-rtems*) fmt=coff ;; h8300-*-coff) fmt=coff ;; + h8500-*-rtems*) fmt=coff ;; + h8500-*-coff) fmt=coff ;; i370-*-elf* | i370-*-linux*) fmt=elf ;; i386-ibm-aix*) fmt=coff em=i386aix ;; @@ -2496,9 +2487,10 @@ EOF mips-*-irix*) fmt=ecoff ;; mips-*-lnews*) fmt=ecoff em=lnews ;; mips-*-riscos*) fmt=ecoff ;; - mips-*-sysv4*MP*) fmt=elf em=tmips ;; + mips-*-sysv4*MP* | mips-*-linux-gnu* | mips-*-gnu*) + fmt=elf em=tmips ;; mips-*-sysv*) fmt=ecoff ;; - mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*) + mips-*-elf* | mips-*-rtems* | mips-*-openbsd*) fmt=elf ;; mips-*-vxworks*) fmt=elf cat >> confdefs.h <<\EOF @@ -3110,7 +3102,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3114: checking for $ac_word" >&5 +echo "configure:3106: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3140,7 +3132,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3144: checking for $ac_word" >&5 +echo "configure:3136: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3191,7 +3183,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3195: checking for $ac_word" >&5 +echo "configure:3187: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3223,7 +3215,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3227: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:3219: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -3234,12 +3226,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 3238 "configure" +#line 3230 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -3265,12 +3257,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:3269: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3261: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:3274: checking whether we are using GNU C" >&5 +echo "configure:3266: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3279,7 +3271,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -3298,7 +3290,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:3302: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3294: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3335,7 +3327,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3339: checking for $ac_word" >&5 +echo "configure:3331: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3366,7 +3358,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3370: checking how to run the C preprocessor" >&5 +echo "configure:3362: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3381,13 +3373,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3391: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3398,13 +3390,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3415,13 +3407,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3417: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3451,7 +3443,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3455: checking for $ac_word" >&5 +echo "configure:3447: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3484,7 +3476,7 @@ test -n "$LEX" || LEX=""$missing_dir/mis # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3488: checking for $ac_word" >&5 +echo "configure:3480: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3518,7 +3510,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:3522: checking for yywrap in -l$ac_lib" >&5 +echo "configure:3514: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3526,7 +3518,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3560,7 +3552,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:3564: checking lex output file root" >&5 +echo "configure:3556: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3581,7 +3573,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:3585: checking whether yytext is a pointer" >&5 +echo "configure:3577: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3593,14 +3585,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPU ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -3626,7 +3618,7 @@ ALL_LINGUAS= # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3630: checking for $ac_word" >&5 +echo "configure:3622: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3654,12 +3646,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3658: checking for ANSI C header files" >&5 +echo "configure:3650: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3667,7 +3659,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3671: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3684,7 +3676,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3702,7 +3694,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3723,7 +3715,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3734,7 +3726,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3758,12 +3750,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3762: checking for working const" >&5 +echo "configure:3754: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3833,21 +3825,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3837: checking for inline" >&5 +echo "configure:3829: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3873,12 +3865,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3877: checking for off_t" >&5 +echo "configure:3869: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3906,12 +3898,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3910: checking for size_t" >&5 +echo "configure:3902: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3941,19 +3933,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:3945: checking for working alloca.h" >&5 +echo "configure:3937: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:3957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -3974,12 +3966,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3978: checking for alloca" >&5 +echo "configure:3970: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -4039,12 +4031,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4043: checking whether alloca needs Cray hooks" >&5 +echo "configure:4035: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4073: checking for $ac_func" >&5 +echo "configure:4065: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4124,7 +4116,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4128: checking stack direction for C alloca" >&5 +echo "configure:4120: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4132,7 +4124,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -4176,17 +4168,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4180: checking for $ac_hdr" >&5 +echo "configure:4172: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4182: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4215,12 +4207,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4219: checking for $ac_func" >&5 +echo "configure:4211: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4268,7 +4260,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4272: checking for working mmap" >&5 +echo "configure:4264: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4276,7 +4268,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -4444,17 +4436,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4448: checking for $ac_hdr" >&5 +echo "configure:4440: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4484,12 +4476,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4488: checking for $ac_func" >&5 +echo "configure:4480: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4541,12 +4533,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4545: checking for $ac_func" >&5 +echo "configure:4537: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4603,19 +4595,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:4607: checking for LC_MESSAGES" >&5 +echo "configure:4599: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:4619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -4636,7 +4628,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:4640: checking whether NLS is requested" >&5 +echo "configure:4632: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -4656,7 +4648,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:4660: checking whether included gettext is requested" >&5 +echo "configure:4652: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -4675,17 +4667,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:4679: checking for libintl.h" >&5 +echo "configure:4671: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4702,19 +4694,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:4706: checking for gettext in libc" >&5 +echo "configure:4698: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -4730,7 +4722,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:4734: checking for bindtextdomain in -lintl" >&5 +echo "configure:4726: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4738,7 +4730,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4765,19 +4757,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:4769: checking for gettext in libintl" >&5 +echo "configure:4761: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -4805,7 +4797,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4809: checking for $ac_word" >&5 +echo "configure:4801: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4839,12 +4831,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4843: checking for $ac_func" >&5 +echo "configure:4835: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4894,7 +4886,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4898: checking for $ac_word" >&5 +echo "configure:4890: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4930,7 +4922,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4934: checking for $ac_word" >&5 +echo "configure:4926: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4962,7 +4954,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -5002,7 +4994,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5006: checking for $ac_word" >&5 +echo "configure:4998: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5036,7 +5028,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5040: checking for $ac_word" >&5 +echo "configure:5032: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5072,7 +5064,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5076: checking for $ac_word" >&5 +echo "configure:5068: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5162,7 +5154,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:5166: checking for catalogs to be installed" >&5 +echo "configure:5158: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -5190,17 +5182,17 @@ echo "configure:5166: checking for catal if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:5194: checking for linux/version.h" >&5 +echo "configure:5186: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5263,7 +5255,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:5267: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:5259: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -5288,7 +5280,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:5292: checking for executable suffix" >&5 +echo "configure:5284: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5298,10 +5290,10 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:5294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -5323,17 +5315,17 @@ for ac_hdr in string.h stdlib.h memory.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5327: checking for $ac_hdr" >&5 +echo "configure:5319: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5363,7 +5355,7 @@ done # Put this here so that autoconf's "cross-compiling" message doesn't confuse # people who are not cross-compiling but are compiling cross-assemblers. echo $ac_n "checking whether compiling a cross-assembler""... $ac_c" 1>&6 -echo "configure:5367: checking whether compiling a cross-assembler" >&5 +echo "configure:5359: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -5378,19 +5370,19 @@ echo "$ac_t""$cross_gas" 1>&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:5382: checking for working alloca.h" >&5 +echo "configure:5374: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:5394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -5411,12 +5403,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:5415: checking for alloca" >&5 +echo "configure:5407: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -5476,12 +5468,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:5480: checking whether alloca needs Cray hooks" >&5 +echo "configure:5472: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5510: checking for $ac_func" >&5 +echo "configure:5502: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5561,7 +5553,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:5565: checking stack direction for C alloca" >&5 +echo "configure:5557: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5569,7 +5561,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -5610,21 +5602,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5614: checking for inline" >&5 +echo "configure:5606: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5654,12 +5646,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5658: checking for $ac_func" >&5 +echo "configure:5650: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5711,12 +5703,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5715: checking for $ac_func" >&5 +echo "configure:5707: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5774,7 +5766,7 @@ case $host in ;; *-ncr-sysv4.3*) echo $ac_n "checking for _mwvalidcheckl in -lmw""... $ac_c" 1>&6 -echo "configure:5778: checking for _mwvalidcheckl in -lmw" >&5 +echo "configure:5770: checking for _mwvalidcheckl in -lmw" >&5 ac_lib_var=`echo mw'_'_mwvalidcheckl | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5782,7 +5774,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmw $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5814,7 +5806,7 @@ else fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5818: checking for main in -lm" >&5 +echo "configure:5810: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5822,14 +5814,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5852,7 +5844,7 @@ fi ;; *) echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5856: checking for main in -lm" >&5 +echo "configure:5848: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5860,14 +5852,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5898,12 +5890,12 @@ esac # enough, but on some of those systems, the assert macro relies on requoting # working properly! echo $ac_n "checking for working assert macro""... $ac_c" 1>&6 -echo "configure:5902: checking for working assert macro" >&5 +echo "configure:5894: checking for working assert macro" >&5 if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5919,7 +5911,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:5923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -5960,12 +5952,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:5964: checking whether declaration is required for strstr" >&5 +echo "configure:5956: checking whether declaration is required for strstr" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_strstr=no else @@ -5997,12 +5989,12 @@ fi echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:6001: checking whether declaration is required for malloc" >&5 +echo "configure:5993: checking whether declaration is required for malloc" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_malloc=no else @@ -6034,12 +6026,12 @@ fi echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:6038: checking whether declaration is required for free" >&5 +echo "configure:6030: checking whether declaration is required for free" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_free=no else @@ -6071,12 +6063,12 @@ fi echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:6075: checking whether declaration is required for sbrk" >&5 +echo "configure:6067: checking whether declaration is required for sbrk" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_sbrk'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_sbrk=no else @@ -6108,12 +6100,12 @@ fi echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6 -echo "configure:6112: checking whether declaration is required for environ" >&5 +echo "configure:6104: checking whether declaration is required for environ" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_environ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_environ=no else @@ -6148,12 +6140,12 @@ fi # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:6152: checking whether declaration is required for errno" >&5 +echo "configure:6144: checking whether declaration is required for errno" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_errno=no else diff -uprN binutils-2.11.90.0.4/gas/configure.in binutils-2.11.90.0.5/gas/configure.in --- binutils-2.11.90.0.4/gas/configure.in Tue Mar 27 08:55:09 2001 +++ binutils-2.11.90.0.5/gas/configure.in Sat Apr 7 23:03:04 2001 @@ -231,6 +231,8 @@ changequote([,])dnl h8300-*-rtems*) fmt=coff ;; h8300-*-coff) fmt=coff ;; + h8500-*-rtems*) fmt=coff ;; + h8500-*-coff) fmt=coff ;; i370-*-elf* | i370-*-linux*) fmt=elf ;; i386-ibm-aix*) fmt=coff em=i386aix ;; @@ -344,9 +346,10 @@ changequote([,])dnl mips-*-irix*) fmt=ecoff ;; mips-*-lnews*) fmt=ecoff em=lnews ;; mips-*-riscos*) fmt=ecoff ;; - mips-*-sysv4*MP*) fmt=elf em=tmips ;; + mips-*-sysv4*MP* | mips-*-linux-gnu* | mips-*-gnu*) + fmt=elf em=tmips ;; mips-*-sysv*) fmt=ecoff ;; - mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*) + mips-*-elf* | mips-*-rtems* | mips-*-openbsd*) fmt=elf ;; mips-*-vxworks*) fmt=elf AC_DEFINE(MIPS_STABS_ELF, 1, diff -uprN binutils-2.11.90.0.4/gas/doc/as.1 binutils-2.11.90.0.5/gas/doc/as.1 --- binutils-2.11.90.0.4/gas/doc/as.1 Sun Apr 1 19:30:11 2001 +++ binutils-2.11.90.0.5/gas/doc/as.1 Sat Apr 14 17:51:07 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:30:10 2001 +.\" Sat Apr 14 17:51:01 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "AS 1" -.TH AS 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH AS 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" \&\s-1AS\s0 \- the portable \s-1GNU\s0 assembler. diff -uprN binutils-2.11.90.0.4/gas/dwarf2dbg.c binutils-2.11.90.0.5/gas/dwarf2dbg.c --- binutils-2.11.90.0.4/gas/dwarf2dbg.c Thu Mar 29 23:37:26 2001 +++ binutils-2.11.90.0.5/gas/dwarf2dbg.c Fri Apr 13 11:47:27 2001 @@ -873,7 +873,11 @@ process_entries (seg, e) changed = 1; } - if (line != e->loc.line || changed) + /* Don't try to optimize away redundant entries; gdb wants two + entries for a function where the code starts on the same line as + the {, and there's no way to identify that case here. Trust gcc + to optimize appropriately. */ + if (1 /* line != e->loc.line || changed */) { int line_delta = e->loc.line - line; if (frag == NULL) diff -uprN binutils-2.11.90.0.4/gas/expr.c binutils-2.11.90.0.5/gas/expr.c --- binutils-2.11.90.0.4/gas/expr.c Thu Mar 29 23:28:40 2001 +++ binutils-2.11.90.0.5/gas/expr.c Fri Apr 13 11:19:27 2001 @@ -1231,7 +1231,7 @@ operand (expressionP) specially in certain contexts. If a name always has a specific value, it can often be handled by simply entering it in the symbol table. */ - if (md_parse_name (name, expressionP)) + if (md_parse_name (name, expressionP, &c)) { *input_line_pointer = c; break; diff -uprN binutils-2.11.90.0.4/gas/struc-symbol.h binutils-2.11.90.0.5/gas/struc-symbol.h --- binutils-2.11.90.0.4/gas/struc-symbol.h Fri Mar 9 11:38:13 2001 +++ binutils-2.11.90.0.5/gas/struc-symbol.h Sat Apr 14 12:52:22 2001 @@ -139,6 +139,10 @@ struct local_symbol /* The offset within the frag. */ valueT lsy_offset; + +#ifdef TC_LOCAL_SYMFIELD_TYPE + TC_LOCAL_SYMFIELD_TYPE lsy_tc; +#endif }; #define local_symbol_converted_p(l) ((l)->lsy_section == reg_section) diff -uprN binutils-2.11.90.0.4/gas/symbols.c binutils-2.11.90.0.5/gas/symbols.c --- binutils-2.11.90.0.4/gas/symbols.c Thu Mar 29 23:37:26 2001 +++ binutils-2.11.90.0.5/gas/symbols.c Sat Apr 14 12:52:22 2001 @@ -255,6 +255,10 @@ local_symbol_convert (locsym) /* Local symbols are always either defined or used. */ ret->sy_used = 1; +#ifdef TC_LOCAL_SYMFIELD_CONVERT + TC_LOCAL_SYMFIELD_CONVERT (locsym, ret); +#endif + symbol_table_insert (ret); local_symbol_mark_converted (locsym); diff -uprN binutils-2.11.90.0.4/gas/testsuite/ChangeLog binutils-2.11.90.0.5/gas/testsuite/ChangeLog --- binutils-2.11.90.0.4/gas/testsuite/ChangeLog Sat Mar 31 19:48:52 2001 +++ binutils-2.11.90.0.5/gas/testsuite/ChangeLog Fri Apr 6 15:33:18 2001 @@ -1,3 +1,27 @@ +2001-04-05 Hans-Peter Nilsson + + * gas/cris/rd-dw2-1.d, gas/cris/rd-dw2-2.d, gas/cris/rd-dw2-3.d, + gas/cris/rd-dw2-4.d, gas/cris/rd-dw2-5.d, gas/cris/rd-dw2-6.d, + gas/cris/rd-dw2-7.d, gas/cris/rd-dw2-8.d, gas/cris/rd-dw2-9.d, + gas/cris/rd-dw2-10.d, gas/cris/rd-dw2-11.d, gas/cris/rd-dw2-12.d, + gas/cris/rd-dw2-13.d, gas/cris/rd-dw2-14.d, gas/cris/rd-dw2-15.d: + New tests. + * gas/cris/brokw-2.s: Correct broken-word expansion visualization + in comment. + * gas/cris/fragtest.s, gas/cris/rd-pic-1.s, + gas/cris/binop-cmpmovx.d, gas/cris/binop-cmpmove.d, + gas/cris/binop.d, gas/cris/binop.s, gas/cris/brokw-2.d, + gas/cris/clear.d, gas/cris/fragtest.s, gas/cris/jump-type.d, + gas/cris/nosep.s, gas/cris/pushpop.d, gas/cris/quick.s, + gas/cris/range-err-2.s, gas/cris/sep-err-1.s, + gas/cris/sreg-to-x.d, gas/cris/test.d, gas/cris/x-to-byte-sreg.d, + gas/cris/x-to-word-sreg.d, gas/cris/x-to-dword-sreg.d: Remove + trailing empty lines. + * gas/cris/continue.s: Ditto, tweak comment. + + * lib/gas-defs.exp (run_dump_test): Support using readelf. + * config/default.exp: Default READELF and READELFFLAGS. + 2001-03-31 Alan Modra * gas/all/cond.s: Add .if .elseif tree. diff -uprN binutils-2.11.90.0.4/gas/testsuite/config/default.exp binutils-2.11.90.0.5/gas/testsuite/config/default.exp --- binutils-2.11.90.0.4/gas/testsuite/config/default.exp Thu Jun 3 11:02:02 1999 +++ binutils-2.11.90.0.5/gas/testsuite/config/default.exp Fri Apr 6 15:33:18 2001 @@ -43,4 +43,12 @@ if ![info exists OBJCOPYFLAGS] then { set OBJCOPYFLAGS {} } +if ![info exists READELF] then { + set READELF [findfile $base_dir/../../binutils/readelf] +} + +if ![info exists READELFFLAGS] then { + set READELFFLAGS {} +} + gas_init diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop-cmpmove.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop-cmpmove.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop-cmpmove.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop-cmpmove.d Fri Apr 6 15:33:22 2001 @@ -403,4 +403,3 @@ Disassembly of section \.text: [ ]+76a:[ ]+(R_CRIS_)?32[ ]+.text [ ]+770:[ ]+7f0d 0000 0000 @IM+677a@[ ]+@OC@.d \[(0x0|0 )\],r7 [ ]+772:[ ]+(R_CRIS_)?32[ ]+.text - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop-cmpmovx.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop-cmpmovx.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop-cmpmovx.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop-cmpmovx.d Fri Apr 6 15:33:22 2001 @@ -230,4 +230,3 @@ Disassembly of section \.text: [ ]+3c2:[ ]+(R_CRIS_)?32[ ]+\.text [ ]+3c8:[ ]+7f0d 0000 0000 @IM+5448@[ ]+@OC@\.w \[(0x0|0 )\],r4 [ ]+3ca:[ ]+(R_CRIS_)?32[ ]+\.text - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop.d Fri Apr 6 15:33:22 2001 @@ -567,5 +567,3 @@ Disassembly of section \.text: 00000a92 : \.\.\. - - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/binop.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/binop.s Fri Apr 6 15:33:22 2001 @@ -911,4 +911,3 @@ start: @OC@.d [notstart],r7,r9 end: - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/brokw-2.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/brokw-2.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/brokw-2.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/brokw-2.d Fri Apr 6 15:33:22 2001 @@ -23,4 +23,3 @@ Disassembly of section \.text: 0000801c : [ ]+801c:[ ]+4402[ ]+moveq[ ]+4,r0 ^[ ]+\.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/brokw-2.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/brokw-2.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/brokw-2.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/brokw-2.s Fri Apr 6 15:33:22 2001 @@ -11,6 +11,7 @@ sym2: moveq 0,r0 ; nop ; .skip 2,0 ; Secondary jump table inserted here : +; jump sym3 ; jump sym1 next_label: moveq 2,r0 diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/clear.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/clear.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/clear.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/clear.d Fri Apr 6 15:33:24 2001 @@ -321,5 +321,3 @@ Disassembly of section \.text: 000005ea : \.\.\. - - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/continue.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/continue.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/continue.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/continue.s Fri Apr 6 15:33:24 2001 @@ -1,7 +1,6 @@ ; Test line continuation, making sure a commented line is not -; broken up. +; broken up and that a continued line is. .text start: ; move.d r1,[r8]@ move.d r2,[r8] move.d r7,[r8]@ move.d r9,[r8] - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/fragtest.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/fragtest.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/fragtest.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/fragtest.s Fri Apr 6 15:33:24 2001 @@ -64,7 +64,3 @@ l11: nop .space 122,0 l12: - - - - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/jump-type.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/jump-type.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/jump-type.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/jump-type.d Fri Apr 6 15:33:24 2001 @@ -217,4 +217,3 @@ Disassembly of section \.text: 0000043e : \.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/nosep.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/nosep.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/nosep.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/nosep.s Fri Apr 6 15:33:24 2001 @@ -5,4 +5,3 @@ start: moveq 0,r2;nop di - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/pushpop.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/pushpop.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/pushpop.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/pushpop.d Fri Apr 6 15:33:24 2001 @@ -87,4 +87,3 @@ Disassembly of section \.text: [ ]+13c:[ ]+6e2e[ ]+pop[ ]+r2 [ ]+13e:[ ]+6e3e[ ]+pop[ ]+r3 [ ]+140:[ ]+fce1 eedf[ ]+push[ ]+r13 - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/quick.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/quick.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/quick.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/quick.s Fri Apr 6 15:33:24 2001 @@ -48,4 +48,3 @@ signed6: ; s6 @OC@ -1,r13 ; s6 @OC@ -twenty2+21,r12 ; s6 end: - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/range-err-2.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/range-err-2.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/range-err-2.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/range-err-2.s Fri Apr 6 15:33:25 2001 @@ -7,4 +7,3 @@ start: moveq external_symbol,r0 ; { dg-error "Semantics error" } addq external_symbol,r0 ; { dg-error "Semantics error" } break external_symbol ; { dg-error "Semantics error" } - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-1.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-1.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-1.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-1.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,50 @@ +#readelf: -wl +#source: addi.s +#as: --em=criself --gdwarf2 + +# A most simple instruction sequence. + +Dump of debug contents of section \.debug_line: + + Length: .* + DWARF Version: 2 + Prologue Length: .* + Minimum Instruction Length: 2 + Initial value of 'is_stmt': 1 + Line Base: -5 + Line Range: 14 + Opcode Base: 10 + + Opcodes: + Opcode 1 has 0 args + Opcode 2 has 1 args + Opcode 3 has 1 args + Opcode 4 has 1 args + Opcode 5 has 1 args + Opcode 6 has 0 args + Opcode 7 has 0 args + Opcode 8 has 0 args + Opcode 9 has 1 args + + The Directory Table is empty\. + + The File Name Table: + Entry Dir Time Size Name + 1 0 0 0 .*/addi\.s + + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4 + Special opcode 20: advance Address by 2 to 0x2 and Line by 1 to 5 + Special opcode 20: advance Address by 2 to 0x4 and Line by 1 to 6 + Special opcode 20: advance Address by 2 to 0x6 and Line by 1 to 7 + Special opcode 20: advance Address by 2 to 0x8 and Line by 1 to 8 + Special opcode 20: advance Address by 2 to 0xa and Line by 1 to 9 + Special opcode 20: advance Address by 2 to 0xc and Line by 1 to 10 + Special opcode 20: advance Address by 2 to 0xe and Line by 1 to 11 + Special opcode 20: advance Address by 2 to 0x10 and Line by 1 to 12 + Special opcode 20: advance Address by 2 to 0x12 and Line by 1 to 13 + Special opcode 20: advance Address by 2 to 0x14 and Line by 1 to 14 + Special opcode 20: advance Address by 2 to 0x16 and Line by 1 to 15 + Advance PC by 2 to 18 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-10.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-10.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-10.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-10.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,11 @@ +#readelf: -wl +#source: continue.s +#as: --em=criself --gdwarf2 + +# Continued line. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 10: advance Address by 0 to 0x0 and Line by 5 to 6 + Advance PC by 4 to 4 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-11.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-11.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-11.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-11.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,46 @@ +#readelf: -wl +#source: fragtest.s +#as: --em=criself --gdwarf2 + +# Highly "fragmented" code. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 9: advance Address by 0 to 0x0 and Line by 4 to 5 + Special opcode 20: advance Address by 2 to 0x2 and Line by 1 to 6 + Advance PC by 126 to 80 + Special opcode 7: advance Address by 0 to 0x80 and Line by 2 to 8 + Special opcode 20: advance Address by 2 to 0x82 and Line by 1 to 9 + Advance PC by 226 to 164 + Special opcode 11: advance Address by 0 to 0x164 and Line by 6 to 15 + Special opcode 34: advance Address by 4 to 0x168 and Line by 1 to 16 + Advance PC by 126 to 1e6 + Special opcode 7: advance Address by 0 to 0x1e6 and Line by 2 to 18 + Special opcode 34: advance Address by 4 to 0x1ea and Line by 1 to 19 + Advance PC by 1126 to 650 + Special opcode 11: advance Address by 0 to 0x650 and Line by 6 to 25 + Special opcode 34: advance Address by 4 to 0x654 and Line by 1 to 26 + Advance PC by 126 to 6d2 + Special opcode 7: advance Address by 0 to 0x6d2 and Line by 2 to 28 + Special opcode 90: advance Address by 12 to 0x6de and Line by 1 to 29 + Advance Line by 11 to 40 + Advance PC by 33250 to 88c0 + Copy + Special opcode 20: advance Address by 2 to 0x88c2 and Line by 1 to 41 + Advance PC by 128 to 8942 + Special opcode 7: advance Address by 0 to 0x8942 and Line by 2 to 43 + Special opcode 20: advance Address by 2 to 0x8944 and Line by 1 to 44 + Advance PC by 248 to 8a3c + Special opcode 11: advance Address by 0 to 0x8a3c and Line by 6 to 50 + Special opcode 34: advance Address by 4 to 0x8a40 and Line by 1 to 51 + Advance PC by 128 to 8ac0 + Special opcode 7: advance Address by 0 to 0x8ac0 and Line by 2 to 53 + Special opcode 34: advance Address by 4 to 0x8ac4 and Line by 1 to 54 + Advance PC by 252 to 8bc0 + Special opcode 11: advance Address by 0 to 0x8bc0 and Line by 6 to 60 + Special opcode 34: advance Address by 4 to 0x8bc4 and Line by 1 to 61 + Advance PC by 128 to 8c44 + Special opcode 7: advance Address by 0 to 0x8c44 and Line by 2 to 63 + Special opcode 34: advance Address by 4 to 0x8c48 and Line by 1 to 64 + Advance PC by 124 to 8cc4 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-12.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-12.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-12.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-12.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,93 @@ +#readelf: -wl +#source: pushpop.s +#as: --em=criself --gdwarf2 + +# Pushes and other prefixes. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4 + Special opcode 34: advance Address by 4 to 0x4 and Line by 1 to 5 + Special opcode 34: advance Address by 4 to 0x8 and Line by 1 to 6 + Special opcode 36: advance Address by 4 to 0xc and Line by 3 to 9 + Special opcode 34: advance Address by 4 to 0x10 and Line by 1 to 10 + Special opcode 34: advance Address by 4 to 0x14 and Line by 1 to 11 + Special opcode 35: advance Address by 4 to 0x18 and Line by 2 to 13 + Special opcode 34: advance Address by 4 to 0x1c and Line by 1 to 14 + Special opcode 34: advance Address by 4 to 0x20 and Line by 1 to 15 + Special opcode 35: advance Address by 4 to 0x24 and Line by 2 to 17 + Special opcode 34: advance Address by 4 to 0x28 and Line by 1 to 18 + Special opcode 35: advance Address by 4 to 0x2c and Line by 2 to 20 + Special opcode 34: advance Address by 4 to 0x30 and Line by 1 to 21 + Special opcode 34: advance Address by 4 to 0x34 and Line by 1 to 22 + Special opcode 35: advance Address by 4 to 0x38 and Line by 2 to 24 + Special opcode 34: advance Address by 4 to 0x3c and Line by 1 to 25 + Special opcode 35: advance Address by 4 to 0x40 and Line by 2 to 27 + Special opcode 34: advance Address by 4 to 0x44 and Line by 1 to 28 + Special opcode 35: advance Address by 4 to 0x48 and Line by 2 to 30 + Special opcode 34: advance Address by 4 to 0x4c and Line by 1 to 31 + Special opcode 34: advance Address by 4 to 0x50 and Line by 1 to 32 + Special opcode 35: advance Address by 4 to 0x54 and Line by 2 to 34 + Special opcode 34: advance Address by 4 to 0x58 and Line by 1 to 35 + Special opcode 34: advance Address by 4 to 0x5c and Line by 1 to 36 + Special opcode 35: advance Address by 4 to 0x60 and Line by 2 to 38 + Special opcode 34: advance Address by 4 to 0x64 and Line by 1 to 39 + Special opcode 34: advance Address by 4 to 0x68 and Line by 1 to 40 + Special opcode 35: advance Address by 4 to 0x6c and Line by 2 to 42 + Special opcode 34: advance Address by 4 to 0x70 and Line by 1 to 43 + Special opcode 34: advance Address by 4 to 0x74 and Line by 1 to 44 + Special opcode 35: advance Address by 4 to 0x78 and Line by 2 to 46 + Special opcode 34: advance Address by 4 to 0x7c and Line by 1 to 47 + Special opcode 34: advance Address by 4 to 0x80 and Line by 1 to 48 + Special opcode 35: advance Address by 4 to 0x84 and Line by 2 to 50 + Special opcode 34: advance Address by 4 to 0x88 and Line by 1 to 51 + Special opcode 34: advance Address by 4 to 0x8c and Line by 1 to 52 + Special opcode 35: advance Address by 4 to 0x90 and Line by 2 to 54 + Special opcode 34: advance Address by 4 to 0x94 and Line by 1 to 55 + Special opcode 34: advance Address by 4 to 0x98 and Line by 1 to 56 + Advance Line by 9 to 65 + Special opcode 33: advance Address by 4 to 0x9c and Line by 0 to 65 + Special opcode 34: advance Address by 4 to 0xa0 and Line by 1 to 66 + Special opcode 34: advance Address by 4 to 0xa4 and Line by 1 to 67 + Special opcode 35: advance Address by 4 to 0xa8 and Line by 2 to 69 + Special opcode 34: advance Address by 4 to 0xac and Line by 1 to 70 + Special opcode 34: advance Address by 4 to 0xb0 and Line by 1 to 71 + Special opcode 35: advance Address by 4 to 0xb4 and Line by 2 to 73 + Special opcode 34: advance Address by 4 to 0xb8 and Line by 1 to 74 + Special opcode 34: advance Address by 4 to 0xbc and Line by 1 to 75 + Special opcode 35: advance Address by 4 to 0xc0 and Line by 2 to 77 + Special opcode 34: advance Address by 4 to 0xc4 and Line by 1 to 78 + Special opcode 34: advance Address by 4 to 0xc8 and Line by 1 to 79 + Special opcode 35: advance Address by 4 to 0xcc and Line by 2 to 81 + Special opcode 34: advance Address by 4 to 0xd0 and Line by 1 to 82 + Special opcode 34: advance Address by 4 to 0xd4 and Line by 1 to 83 + Special opcode 35: advance Address by 4 to 0xd8 and Line by 2 to 85 + Special opcode 34: advance Address by 4 to 0xdc and Line by 1 to 86 + Special opcode 34: advance Address by 4 to 0xe0 and Line by 1 to 87 + Special opcode 35: advance Address by 4 to 0xe4 and Line by 2 to 89 + Special opcode 34: advance Address by 4 to 0xe8 and Line by 1 to 90 + Special opcode 34: advance Address by 4 to 0xec and Line by 1 to 91 + Special opcode 35: advance Address by 4 to 0xf0 and Line by 2 to 93 + Special opcode 34: advance Address by 4 to 0xf4 and Line by 1 to 94 + Special opcode 34: advance Address by 4 to 0xf8 and Line by 1 to 95 + Special opcode 35: advance Address by 4 to 0xfc and Line by 2 to 97 + Special opcode 34: advance Address by 4 to 0x100 and Line by 1 to 98 + Special opcode 34: advance Address by 4 to 0x104 and Line by 1 to 99 + Special opcode 35: advance Address by 4 to 0x108 and Line by 2 to 101 + Special opcode 34: advance Address by 4 to 0x10c and Line by 1 to 102 + Special opcode 34: advance Address by 4 to 0x110 and Line by 1 to 103 + Special opcode 35: advance Address by 4 to 0x114 and Line by 2 to 105 + Special opcode 34: advance Address by 4 to 0x118 and Line by 1 to 106 + Special opcode 34: advance Address by 4 to 0x11c and Line by 1 to 107 + Special opcode 35: advance Address by 4 to 0x120 and Line by 2 to 109 + Special opcode 34: advance Address by 4 to 0x124 and Line by 1 to 110 + Special opcode 34: advance Address by 4 to 0x128 and Line by 1 to 111 + Special opcode 35: advance Address by 4 to 0x12c and Line by 2 to 113 + Special opcode 34: advance Address by 4 to 0x130 and Line by 1 to 114 + Special opcode 34: advance Address by 4 to 0x134 and Line by 1 to 115 + Special opcode 35: advance Address by 4 to 0x138 and Line by 2 to 117 + Special opcode 34: advance Address by 4 to 0x13c and Line by 1 to 118 + Special opcode 20: advance Address by 2 to 0x13e and Line by 1 to 119 + Special opcode 20: advance Address by 2 to 0x140 and Line by 1 to 120 + Advance PC by 4 to 144 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-13.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-13.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-13.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-13.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,34 @@ +#readelf: -wl +#source: rd-pic-1.s +#as: --em=criself --pic --gdwarf2 + +# PIC prefix relocs. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 10: advance Address by 0 to 0x0 and Line by 5 to 6 + Special opcode 48: advance Address by 6 to 0x6 and Line by 1 to 7 + Special opcode 62: advance Address by 8 to 0xe and Line by 1 to 8 + Special opcode 48: advance Address by 6 to 0x14 and Line by 1 to 9 + Special opcode 48: advance Address by 6 to 0x1a and Line by 1 to 10 + Special opcode 48: advance Address by 6 to 0x20 and Line by 1 to 11 + Special opcode 62: advance Address by 8 to 0x28 and Line by 1 to 12 + Special opcode 48: advance Address by 6 to 0x2e and Line by 1 to 13 + Special opcode 36: advance Address by 4 to 0x32 and Line by 3 to 16 + Special opcode 62: advance Address by 8 to 0x3a and Line by 1 to 17 + Special opcode 48: advance Address by 6 to 0x40 and Line by 1 to 18 + Special opcode 48: advance Address by 6 to 0x46 and Line by 1 to 19 + Special opcode 62: advance Address by 8 to 0x4e and Line by 1 to 20 + Special opcode 62: advance Address by 8 to 0x56 and Line by 1 to 21 + Special opcode 62: advance Address by 8 to 0x5e and Line by 1 to 22 + Special opcode 62: advance Address by 8 to 0x66 and Line by 1 to 23 + Special opcode 62: advance Address by 8 to 0x6e and Line by 1 to 24 + Special opcode 62: advance Address by 8 to 0x76 and Line by 1 to 25 + Special opcode 48: advance Address by 6 to 0x7c and Line by 1 to 26 + Special opcode 48: advance Address by 6 to 0x82 and Line by 1 to 27 + Special opcode 48: advance Address by 6 to 0x88 and Line by 1 to 28 + Special opcode 48: advance Address by 6 to 0x8e and Line by 1 to 29 + Special opcode 48: advance Address by 6 to 0x94 and Line by 1 to 30 + Special opcode 48: advance Address by 6 to 0x9a and Line by 1 to 31 + Advance PC by 8 to a2 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-14.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-14.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-14.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-14.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,30 @@ +#readelf: -wl +#source: unimplemented.s +#as: --em=criself --gdwarf2 + +# Prefixes of various sizes. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 13: advance Address by 0 to 0x0 and Line by 8 to 9 + Special opcode 20: advance Address by 2 to 0x2 and Line by 1 to 10 + Special opcode 34: advance Address by 4 to 0x6 and Line by 1 to 11 + Special opcode 34: advance Address by 4 to 0xa and Line by 1 to 12 + Special opcode 62: advance Address by 8 to 0x12 and Line by 1 to 13 + Special opcode 62: advance Address by 8 to 0x1a and Line by 1 to 14 + Special opcode 20: advance Address by 2 to 0x1c and Line by 1 to 15 + Special opcode 34: advance Address by 4 to 0x20 and Line by 1 to 16 + Special opcode 34: advance Address by 4 to 0x24 and Line by 1 to 17 + Special opcode 62: advance Address by 8 to 0x2c and Line by 1 to 18 + Special opcode 62: advance Address by 8 to 0x34 and Line by 1 to 19 + Special opcode 20: advance Address by 2 to 0x36 and Line by 1 to 20 + Special opcode 20: advance Address by 2 to 0x38 and Line by 1 to 21 + Special opcode 20: advance Address by 2 to 0x3a and Line by 1 to 22 + Special opcode 20: advance Address by 2 to 0x3c and Line by 1 to 23 + Special opcode 20: advance Address by 2 to 0x3e and Line by 1 to 24 + Special opcode 20: advance Address by 2 to 0x40 and Line by 1 to 25 + Special opcode 20: advance Address by 2 to 0x42 and Line by 1 to 26 + Special opcode 20: advance Address by 2 to 0x44 and Line by 1 to 27 + Special opcode 20: advance Address by 2 to 0x46 and Line by 1 to 28 + Advance PC by 2 to 48 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-15.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-15.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-15.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-15.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,162 @@ +#readelf: -wl +#source: prefix.s +#as: --em=criself --gdwarf2 + +# Various prefixes, assembled standalone. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 13: advance Address by 0 to 0x0 and Line by 8 to 9 + Special opcode 20: advance Address by 2 to 0x2 and Line by 1 to 10 + Special opcode 21: advance Address by 2 to 0x4 and Line by 2 to 12 + Special opcode 20: advance Address by 2 to 0x6 and Line by 1 to 13 + Special opcode 21: advance Address by 2 to 0x8 and Line by 2 to 15 + Special opcode 20: advance Address by 2 to 0xa and Line by 1 to 16 + Special opcode 21: advance Address by 2 to 0xc and Line by 2 to 18 + Special opcode 20: advance Address by 2 to 0xe and Line by 1 to 19 + Special opcode 21: advance Address by 2 to 0x10 and Line by 2 to 21 + Special opcode 20: advance Address by 2 to 0x12 and Line by 1 to 22 + Special opcode 21: advance Address by 2 to 0x14 and Line by 2 to 24 + Special opcode 20: advance Address by 2 to 0x16 and Line by 1 to 25 + Special opcode 21: advance Address by 2 to 0x18 and Line by 2 to 27 + Special opcode 20: advance Address by 2 to 0x1a and Line by 1 to 28 + Special opcode 21: advance Address by 2 to 0x1c and Line by 2 to 30 + Special opcode 20: advance Address by 2 to 0x1e and Line by 1 to 31 + Special opcode 25: advance Address by 2 to 0x20 and Line by 6 to 37 + Special opcode 34: advance Address by 4 to 0x24 and Line by 1 to 38 + Special opcode 21: advance Address by 2 to 0x26 and Line by 2 to 40 + Special opcode 34: advance Address by 4 to 0x2a and Line by 1 to 41 + Special opcode 21: advance Address by 2 to 0x2c and Line by 2 to 43 + Special opcode 34: advance Address by 4 to 0x30 and Line by 1 to 44 + Special opcode 21: advance Address by 2 to 0x32 and Line by 2 to 46 + Special opcode 34: advance Address by 4 to 0x36 and Line by 1 to 47 + Special opcode 21: advance Address by 2 to 0x38 and Line by 2 to 49 + Special opcode 34: advance Address by 4 to 0x3c and Line by 1 to 50 + Special opcode 21: advance Address by 2 to 0x3e and Line by 2 to 52 + Special opcode 34: advance Address by 4 to 0x42 and Line by 1 to 53 + Special opcode 21: advance Address by 2 to 0x44 and Line by 2 to 55 + Special opcode 34: advance Address by 4 to 0x48 and Line by 1 to 56 + Special opcode 21: advance Address by 2 to 0x4a and Line by 2 to 58 + Special opcode 34: advance Address by 4 to 0x4e and Line by 1 to 59 + Special opcode 21: advance Address by 2 to 0x50 and Line by 2 to 61 + Special opcode 34: advance Address by 4 to 0x54 and Line by 1 to 62 + Special opcode 21: advance Address by 2 to 0x56 and Line by 2 to 64 + Special opcode 34: advance Address by 4 to 0x5a and Line by 1 to 65 + Special opcode 21: advance Address by 2 to 0x5c and Line by 2 to 67 + Special opcode 34: advance Address by 4 to 0x60 and Line by 1 to 68 + Special opcode 21: advance Address by 2 to 0x62 and Line by 2 to 70 + Special opcode 34: advance Address by 4 to 0x66 and Line by 1 to 71 + Special opcode 21: advance Address by 2 to 0x68 and Line by 2 to 73 + Special opcode 34: advance Address by 4 to 0x6c and Line by 1 to 74 + Special opcode 21: advance Address by 2 to 0x6e and Line by 2 to 76 + Special opcode 34: advance Address by 4 to 0x72 and Line by 1 to 77 + Special opcode 21: advance Address by 2 to 0x74 and Line by 2 to 79 + Special opcode 48: advance Address by 6 to 0x7a and Line by 1 to 80 + Special opcode 21: advance Address by 2 to 0x7c and Line by 2 to 82 + Special opcode 48: advance Address by 6 to 0x82 and Line by 1 to 83 + Special opcode 21: advance Address by 2 to 0x84 and Line by 2 to 85 + Special opcode 48: advance Address by 6 to 0x8a and Line by 1 to 86 + Special opcode 21: advance Address by 2 to 0x8c and Line by 2 to 88 + Special opcode 48: advance Address by 6 to 0x92 and Line by 1 to 89 + Special opcode 21: advance Address by 2 to 0x94 and Line by 2 to 91 + Special opcode 48: advance Address by 6 to 0x9a and Line by 1 to 92 + Special opcode 21: advance Address by 2 to 0x9c and Line by 2 to 94 + Special opcode 48: advance Address by 6 to 0xa2 and Line by 1 to 95 + Special opcode 21: advance Address by 2 to 0xa4 and Line by 2 to 97 + Special opcode 48: advance Address by 6 to 0xaa and Line by 1 to 98 + Special opcode 21: advance Address by 2 to 0xac and Line by 2 to 100 + Special opcode 48: advance Address by 6 to 0xb2 and Line by 1 to 101 + Special opcode 21: advance Address by 2 to 0xb4 and Line by 2 to 103 + Special opcode 48: advance Address by 6 to 0xba and Line by 1 to 104 + Special opcode 21: advance Address by 2 to 0xbc and Line by 2 to 106 + Special opcode 48: advance Address by 6 to 0xc2 and Line by 1 to 107 + Special opcode 21: advance Address by 2 to 0xc4 and Line by 2 to 109 + Special opcode 48: advance Address by 6 to 0xca and Line by 1 to 110 + Special opcode 21: advance Address by 2 to 0xcc and Line by 2 to 112 + Special opcode 48: advance Address by 6 to 0xd2 and Line by 1 to 113 + Special opcode 21: advance Address by 2 to 0xd4 and Line by 2 to 115 + Special opcode 48: advance Address by 6 to 0xda and Line by 1 to 116 + Special opcode 21: advance Address by 2 to 0xdc and Line by 2 to 118 + Special opcode 48: advance Address by 6 to 0xe2 and Line by 1 to 119 + Special opcode 21: advance Address by 2 to 0xe4 and Line by 2 to 121 + Special opcode 48: advance Address by 6 to 0xea and Line by 1 to 122 + Special opcode 21: advance Address by 2 to 0xec and Line by 2 to 124 + Special opcode 48: advance Address by 6 to 0xf2 and Line by 1 to 125 + Special opcode 21: advance Address by 2 to 0xf4 and Line by 2 to 127 + Special opcode 20: advance Address by 2 to 0xf6 and Line by 1 to 128 + Special opcode 21: advance Address by 2 to 0xf8 and Line by 2 to 130 + Special opcode 20: advance Address by 2 to 0xfa and Line by 1 to 131 + Special opcode 21: advance Address by 2 to 0xfc and Line by 2 to 133 + Special opcode 20: advance Address by 2 to 0xfe and Line by 1 to 134 + Special opcode 21: advance Address by 2 to 0x100 and Line by 2 to 136 + Special opcode 20: advance Address by 2 to 0x102 and Line by 1 to 137 + Special opcode 21: advance Address by 2 to 0x104 and Line by 2 to 139 + Special opcode 20: advance Address by 2 to 0x106 and Line by 1 to 140 + Special opcode 21: advance Address by 2 to 0x108 and Line by 2 to 142 + Special opcode 20: advance Address by 2 to 0x10a and Line by 1 to 143 + Special opcode 21: advance Address by 2 to 0x10c and Line by 2 to 145 + Special opcode 20: advance Address by 2 to 0x10e and Line by 1 to 146 + Special opcode 21: advance Address by 2 to 0x110 and Line by 2 to 148 + Special opcode 20: advance Address by 2 to 0x112 and Line by 1 to 149 + Special opcode 21: advance Address by 2 to 0x114 and Line by 2 to 151 + Special opcode 20: advance Address by 2 to 0x116 and Line by 1 to 152 + Special opcode 25: advance Address by 2 to 0x118 and Line by 6 to 158 + Special opcode 20: advance Address by 2 to 0x11a and Line by 1 to 159 + Special opcode 21: advance Address by 2 to 0x11c and Line by 2 to 161 + Special opcode 20: advance Address by 2 to 0x11e and Line by 1 to 162 + Special opcode 21: advance Address by 2 to 0x120 and Line by 2 to 164 + Special opcode 20: advance Address by 2 to 0x122 and Line by 1 to 165 + Special opcode 21: advance Address by 2 to 0x124 and Line by 2 to 167 + Special opcode 20: advance Address by 2 to 0x126 and Line by 1 to 168 + Special opcode 21: advance Address by 2 to 0x128 and Line by 2 to 170 + Special opcode 20: advance Address by 2 to 0x12a and Line by 1 to 171 + Special opcode 21: advance Address by 2 to 0x12c and Line by 2 to 173 + Special opcode 20: advance Address by 2 to 0x12e and Line by 1 to 174 + Special opcode 21: advance Address by 2 to 0x130 and Line by 2 to 176 + Special opcode 20: advance Address by 2 to 0x132 and Line by 1 to 177 + Special opcode 21: advance Address by 2 to 0x134 and Line by 2 to 179 + Special opcode 20: advance Address by 2 to 0x136 and Line by 1 to 180 + Special opcode 21: advance Address by 2 to 0x138 and Line by 2 to 182 + Special opcode 20: advance Address by 2 to 0x13a and Line by 1 to 183 + Special opcode 24: advance Address by 2 to 0x13c and Line by 5 to 188 + Special opcode 48: advance Address by 6 to 0x142 and Line by 1 to 189 + Special opcode 21: advance Address by 2 to 0x144 and Line by 2 to 191 + Special opcode 48: advance Address by 6 to 0x14a and Line by 1 to 192 + Special opcode 21: advance Address by 2 to 0x14c and Line by 2 to 194 + Special opcode 48: advance Address by 6 to 0x152 and Line by 1 to 195 + Special opcode 21: advance Address by 2 to 0x154 and Line by 2 to 197 + Special opcode 48: advance Address by 6 to 0x15a and Line by 1 to 198 + Special opcode 21: advance Address by 2 to 0x15c and Line by 2 to 200 + Special opcode 48: advance Address by 6 to 0x162 and Line by 1 to 201 + Special opcode 21: advance Address by 2 to 0x164 and Line by 2 to 203 + Special opcode 48: advance Address by 6 to 0x16a and Line by 1 to 204 + Special opcode 21: advance Address by 2 to 0x16c and Line by 2 to 206 + Special opcode 48: advance Address by 6 to 0x172 and Line by 1 to 207 + Special opcode 21: advance Address by 2 to 0x174 and Line by 2 to 209 + Special opcode 48: advance Address by 6 to 0x17a and Line by 1 to 210 + Special opcode 21: advance Address by 2 to 0x17c and Line by 2 to 212 + Special opcode 48: advance Address by 6 to 0x182 and Line by 1 to 213 + Special opcode 21: advance Address by 2 to 0x184 and Line by 2 to 215 + Special opcode 48: advance Address by 6 to 0x18a and Line by 1 to 216 + Special opcode 21: advance Address by 2 to 0x18c and Line by 2 to 218 + Special opcode 48: advance Address by 6 to 0x192 and Line by 1 to 219 + Special opcode 21: advance Address by 2 to 0x194 and Line by 2 to 221 + Special opcode 48: advance Address by 6 to 0x19a and Line by 1 to 222 + Special opcode 21: advance Address by 2 to 0x19c and Line by 2 to 224 + Special opcode 48: advance Address by 6 to 0x1a2 and Line by 1 to 225 + Special opcode 21: advance Address by 2 to 0x1a4 and Line by 2 to 227 + Special opcode 48: advance Address by 6 to 0x1aa and Line by 1 to 228 + Special opcode 21: advance Address by 2 to 0x1ac and Line by 2 to 230 + Special opcode 48: advance Address by 6 to 0x1b2 and Line by 1 to 231 + Special opcode 21: advance Address by 2 to 0x1b4 and Line by 2 to 233 + Special opcode 48: advance Address by 6 to 0x1ba and Line by 1 to 234 + Special opcode 21: advance Address by 2 to 0x1bc and Line by 2 to 236 + Special opcode 20: advance Address by 2 to 0x1be and Line by 1 to 237 + Special opcode 21: advance Address by 2 to 0x1c0 and Line by 2 to 239 + Special opcode 20: advance Address by 2 to 0x1c2 and Line by 1 to 240 + Special opcode 21: advance Address by 2 to 0x1c4 and Line by 2 to 242 + Special opcode 20: advance Address by 2 to 0x1c6 and Line by 1 to 243 + Special opcode 21: advance Address by 2 to 0x1c8 and Line by 2 to 245 + Special opcode 20: advance Address by 2 to 0x1ca and Line by 1 to 246 + Advance PC by 2 to 1cc + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-2.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-2.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-2.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-2.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,35 @@ +#readelf: -wl +#source: binop-segref.s +#as: --em=criself --gdwarf2 + +# Simple instruction sequence with content-emitting pseudo-ops. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x5005a + Advance Line by 36 to 37 + Copy + Special opcode 34: advance Address by 4 to 0x5005e and Line by 1 to 38 + Special opcode 34: advance Address by 4 to 0x50062 and Line by 1 to 39 + Special opcode 34: advance Address by 4 to 0x50066 and Line by 1 to 40 + Special opcode 35: advance Address by 4 to 0x5006a and Line by 2 to 42 + Special opcode 34: advance Address by 4 to 0x5006e and Line by 1 to 43 + Special opcode 34: advance Address by 4 to 0x50072 and Line by 1 to 44 + Special opcode 34: advance Address by 4 to 0x50076 and Line by 1 to 45 + Special opcode 35: advance Address by 4 to 0x5007a and Line by 2 to 47 + Special opcode 34: advance Address by 4 to 0x5007e and Line by 1 to 48 + Special opcode 34: advance Address by 4 to 0x50082 and Line by 1 to 49 + Special opcode 34: advance Address by 4 to 0x50086 and Line by 1 to 50 + Special opcode 35: advance Address by 4 to 0x5008a and Line by 2 to 52 + Special opcode 48: advance Address by 6 to 0x50090 and Line by 1 to 53 + Special opcode 48: advance Address by 6 to 0x50096 and Line by 1 to 54 + Special opcode 48: advance Address by 6 to 0x5009c and Line by 1 to 55 + Special opcode 49: advance Address by 6 to 0x500a2 and Line by 2 to 57 + Special opcode 48: advance Address by 6 to 0x500a8 and Line by 1 to 58 + Special opcode 48: advance Address by 6 to 0x500ae and Line by 1 to 59 + Special opcode 48: advance Address by 6 to 0x500b4 and Line by 1 to 60 + Special opcode 49: advance Address by 6 to 0x500ba and Line by 2 to 62 + Special opcode 48: advance Address by 6 to 0x500c0 and Line by 1 to 63 + Special opcode 48: advance Address by 6 to 0x500c6 and Line by 1 to 64 + Special opcode 48: advance Address by 6 to 0x500cc and Line by 1 to 65 + Advance PC by 327776 to a012c + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-3.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-3.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-3.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-3.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,12 @@ +#readelf: -wl +#source: branch-warn-1.s +#as: --em=criself --gdwarf2 + +# Simple branch-expansion, type 1. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 12: advance Address by 0 to 0x0 and Line by 7 to 8 + Special opcode 90: advance Address by 12 to 0xc and Line by 1 to 9 + Advance PC by 2 to e + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-4.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-4.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-4.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-4.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,13 @@ +#readelf: -wl +#source: branch-warn-2.s +#as: --em=criself --gdwarf2 + +# Simple branch-expansion, type 2. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 12: advance Address by 0 to 0x0 and Line by 7 to 8 + Advance PC by 32780 to 800c + Special opcode 8: advance Address by 0 to 0x800c and Line by 3 to 11 + Advance PC by 2 to 800e + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-5.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-5.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-5.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-5.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,14 @@ +#readelf: -wl +#source: branch-warn-3.s +#as: --em=criself --gdwarf2 + +# Simple branch-expansion, type 3. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 12: advance Address by 0 to 0x0 and Line by 7 to 8 + Advance PC by 32770 to 8002 + Special opcode 7: advance Address by 0 to 0x8002 and Line by 2 to 10 + Special opcode 90: advance Address by 12 to 0x800e and Line by 1 to 11 + Advance PC by 2 to 8010 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-6.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-6.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-6.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-6.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,230 @@ +#readelf: -wl +#source: branch.s +#as: --em=criself --gdwarf2 + +# Complicated branch expansion. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 12: advance Address by 0 to 0x0 and Line by 7 to 8 + Special opcode 21: advance Address by 2 to 0x2 and Line by 2 to 10 + Advance PC by 32360 to 7e6a + Special opcode 8: advance Address by 0 to 0x7e6a and Line by 3 to 13 + Advance PC by 196 to 7f2e + Special opcode 11: advance Address by 0 to 0x7f2e and Line by 6 to 19 + Special opcode 20: advance Address by 2 to 0x7f30 and Line by 1 to 20 + Special opcode 20: advance Address by 2 to 0x7f32 and Line by 1 to 21 + Special opcode 20: advance Address by 2 to 0x7f34 and Line by 1 to 22 + Special opcode 20: advance Address by 2 to 0x7f36 and Line by 1 to 23 + Special opcode 20: advance Address by 2 to 0x7f38 and Line by 1 to 24 + Special opcode 20: advance Address by 2 to 0x7f3a and Line by 1 to 25 + Special opcode 20: advance Address by 2 to 0x7f3c and Line by 1 to 26 + Special opcode 20: advance Address by 2 to 0x7f3e and Line by 1 to 27 + Special opcode 20: advance Address by 2 to 0x7f40 and Line by 1 to 28 + Special opcode 20: advance Address by 2 to 0x7f42 and Line by 1 to 29 + Special opcode 20: advance Address by 2 to 0x7f44 and Line by 1 to 30 + Special opcode 20: advance Address by 2 to 0x7f46 and Line by 1 to 31 + Special opcode 20: advance Address by 2 to 0x7f48 and Line by 1 to 32 + Special opcode 20: advance Address by 2 to 0x7f4a and Line by 1 to 33 + Special opcode 20: advance Address by 2 to 0x7f4c and Line by 1 to 34 + Special opcode 20: advance Address by 2 to 0x7f4e and Line by 1 to 35 + Special opcode 20: advance Address by 2 to 0x7f50 and Line by 1 to 36 + Special opcode 20: advance Address by 2 to 0x7f52 and Line by 1 to 37 + Special opcode 20: advance Address by 2 to 0x7f54 and Line by 1 to 38 + Special opcode 20: advance Address by 2 to 0x7f56 and Line by 1 to 39 + Special opcode 21: advance Address by 2 to 0x7f58 and Line by 2 to 41 + Special opcode 20: advance Address by 2 to 0x7f5a and Line by 1 to 42 + Special opcode 20: advance Address by 2 to 0x7f5c and Line by 1 to 43 + Special opcode 20: advance Address by 2 to 0x7f5e and Line by 1 to 44 + Special opcode 20: advance Address by 2 to 0x7f60 and Line by 1 to 45 + Special opcode 20: advance Address by 2 to 0x7f62 and Line by 1 to 46 + Special opcode 20: advance Address by 2 to 0x7f64 and Line by 1 to 47 + Special opcode 20: advance Address by 2 to 0x7f66 and Line by 1 to 48 + Special opcode 20: advance Address by 2 to 0x7f68 and Line by 1 to 49 + Special opcode 20: advance Address by 2 to 0x7f6a and Line by 1 to 50 + Special opcode 34: advance Address by 4 to 0x7f6e and Line by 1 to 51 + Special opcode 34: advance Address by 4 to 0x7f72 and Line by 1 to 52 + Special opcode 34: advance Address by 4 to 0x7f76 and Line by 1 to 53 + Special opcode 34: advance Address by 4 to 0x7f7a and Line by 1 to 54 + Special opcode 34: advance Address by 4 to 0x7f7e and Line by 1 to 55 + Special opcode 34: advance Address by 4 to 0x7f82 and Line by 1 to 56 + Special opcode 34: advance Address by 4 to 0x7f86 and Line by 1 to 57 + Special opcode 34: advance Address by 4 to 0x7f8a and Line by 1 to 58 + Special opcode 34: advance Address by 4 to 0x7f8e and Line by 1 to 59 + Special opcode 34: advance Address by 4 to 0x7f92 and Line by 1 to 60 + Special opcode 34: advance Address by 4 to 0x7f96 and Line by 1 to 61 + Special opcode 37: advance Address by 4 to 0x7f9a and Line by 4 to 65 + Special opcode 20: advance Address by 2 to 0x7f9c and Line by 1 to 66 + Special opcode 34: advance Address by 4 to 0x7fa0 and Line by 1 to 67 + Special opcode 34: advance Address by 4 to 0x7fa4 and Line by 1 to 68 + Special opcode 34: advance Address by 4 to 0x7fa8 and Line by 1 to 69 + Special opcode 34: advance Address by 4 to 0x7fac and Line by 1 to 70 + Special opcode 34: advance Address by 4 to 0x7fb0 and Line by 1 to 71 + Special opcode 34: advance Address by 4 to 0x7fb4 and Line by 1 to 72 + Special opcode 34: advance Address by 4 to 0x7fb8 and Line by 1 to 73 + Special opcode 34: advance Address by 4 to 0x7fbc and Line by 1 to 74 + Special opcode 34: advance Address by 4 to 0x7fc0 and Line by 1 to 75 + Special opcode 34: advance Address by 4 to 0x7fc4 and Line by 1 to 76 + Special opcode 34: advance Address by 4 to 0x7fc8 and Line by 1 to 77 + Special opcode 34: advance Address by 4 to 0x7fcc and Line by 1 to 78 + Special opcode 34: advance Address by 4 to 0x7fd0 and Line by 1 to 79 + Special opcode 34: advance Address by 4 to 0x7fd4 and Line by 1 to 80 + Special opcode 34: advance Address by 4 to 0x7fd8 and Line by 1 to 81 + Special opcode 34: advance Address by 4 to 0x7fdc and Line by 1 to 82 + Special opcode 34: advance Address by 4 to 0x7fe0 and Line by 1 to 83 + Special opcode 34: advance Address by 4 to 0x7fe4 and Line by 1 to 84 + Special opcode 34: advance Address by 4 to 0x7fe8 and Line by 1 to 85 + Special opcode 39: advance Address by 4 to 0x7fec and Line by 6 to 91 + Special opcode 20: advance Address by 2 to 0x7fee and Line by 1 to 92 + Special opcode 34: advance Address by 4 to 0x7ff2 and Line by 1 to 93 + Special opcode 34: advance Address by 4 to 0x7ff6 and Line by 1 to 94 + Special opcode 34: advance Address by 4 to 0x7ffa and Line by 1 to 95 + Special opcode 34: advance Address by 4 to 0x7ffe and Line by 1 to 96 + Special opcode 34: advance Address by 4 to 0x8002 and Line by 1 to 97 + Special opcode 90: advance Address by 12 to 0x800e and Line by 1 to 98 + Special opcode 90: advance Address by 12 to 0x801a and Line by 1 to 99 + Special opcode 90: advance Address by 12 to 0x8026 and Line by 1 to 100 + Special opcode 90: advance Address by 12 to 0x8032 and Line by 1 to 101 + Special opcode 90: advance Address by 12 to 0x803e and Line by 1 to 102 + Special opcode 90: advance Address by 12 to 0x804a and Line by 1 to 103 + Special opcode 90: advance Address by 12 to 0x8056 and Line by 1 to 104 + Special opcode 90: advance Address by 12 to 0x8062 and Line by 1 to 105 + Special opcode 90: advance Address by 12 to 0x806e and Line by 1 to 106 + Special opcode 90: advance Address by 12 to 0x807a and Line by 1 to 107 + Special opcode 90: advance Address by 12 to 0x8086 and Line by 1 to 108 + Special opcode 90: advance Address by 12 to 0x8092 and Line by 1 to 109 + Special opcode 90: advance Address by 12 to 0x809e and Line by 1 to 110 + Special opcode 90: advance Address by 12 to 0x80aa and Line by 1 to 111 + Special opcode 94: advance Address by 12 to 0x80b6 and Line by 5 to 116 + Special opcode 20: advance Address by 2 to 0x80b8 and Line by 1 to 117 + Special opcode 90: advance Address by 12 to 0x80c4 and Line by 1 to 118 + Special opcode 90: advance Address by 12 to 0x80d0 and Line by 1 to 119 + Special opcode 90: advance Address by 12 to 0x80dc and Line by 1 to 120 + Special opcode 90: advance Address by 12 to 0x80e8 and Line by 1 to 121 + Special opcode 90: advance Address by 12 to 0x80f4 and Line by 1 to 122 + Special opcode 90: advance Address by 12 to 0x8100 and Line by 1 to 123 + Special opcode 90: advance Address by 12 to 0x810c and Line by 1 to 124 + Special opcode 90: advance Address by 12 to 0x8118 and Line by 1 to 125 + Special opcode 90: advance Address by 12 to 0x8124 and Line by 1 to 126 + Special opcode 90: advance Address by 12 to 0x8130 and Line by 1 to 127 + Special opcode 90: advance Address by 12 to 0x813c and Line by 1 to 128 + Special opcode 90: advance Address by 12 to 0x8148 and Line by 1 to 129 + Special opcode 90: advance Address by 12 to 0x8154 and Line by 1 to 130 + Special opcode 90: advance Address by 12 to 0x8160 and Line by 1 to 131 + Special opcode 90: advance Address by 12 to 0x816c and Line by 1 to 132 + Special opcode 90: advance Address by 12 to 0x8178 and Line by 1 to 133 + Special opcode 90: advance Address by 12 to 0x8184 and Line by 1 to 134 + Special opcode 90: advance Address by 12 to 0x8190 and Line by 1 to 135 + Special opcode 90: advance Address by 12 to 0x819c and Line by 1 to 136 + Special opcode 95: advance Address by 12 to 0x81a8 and Line by 6 to 142 + Special opcode 20: advance Address by 2 to 0x81aa and Line by 1 to 143 + Special opcode 90: advance Address by 12 to 0x81b6 and Line by 1 to 144 + Special opcode 90: advance Address by 12 to 0x81c2 and Line by 1 to 145 + Special opcode 90: advance Address by 12 to 0x81ce and Line by 1 to 146 + Special opcode 90: advance Address by 12 to 0x81da and Line by 1 to 147 + Special opcode 90: advance Address by 12 to 0x81e6 and Line by 1 to 148 + Special opcode 90: advance Address by 12 to 0x81f2 and Line by 1 to 149 + Special opcode 90: advance Address by 12 to 0x81fe and Line by 1 to 150 + Special opcode 90: advance Address by 12 to 0x820a and Line by 1 to 151 + Special opcode 90: advance Address by 12 to 0x8216 and Line by 1 to 152 + Special opcode 90: advance Address by 12 to 0x8222 and Line by 1 to 153 + Special opcode 90: advance Address by 12 to 0x822e and Line by 1 to 154 + Special opcode 90: advance Address by 12 to 0x823a and Line by 1 to 155 + Special opcode 90: advance Address by 12 to 0x8246 and Line by 1 to 156 + Special opcode 90: advance Address by 12 to 0x8252 and Line by 1 to 157 + Special opcode 90: advance Address by 12 to 0x825e and Line by 1 to 158 + Special opcode 90: advance Address by 12 to 0x826a and Line by 1 to 159 + Special opcode 90: advance Address by 12 to 0x8276 and Line by 1 to 160 + Special opcode 90: advance Address by 12 to 0x8282 and Line by 1 to 161 + Special opcode 90: advance Address by 12 to 0x828e and Line by 1 to 162 + Special opcode 94: advance Address by 12 to 0x829a and Line by 5 to 167 + Special opcode 20: advance Address by 2 to 0x829c and Line by 1 to 168 + Special opcode 90: advance Address by 12 to 0x82a8 and Line by 1 to 169 + Special opcode 90: advance Address by 12 to 0x82b4 and Line by 1 to 170 + Special opcode 90: advance Address by 12 to 0x82c0 and Line by 1 to 171 + Special opcode 90: advance Address by 12 to 0x82cc and Line by 1 to 172 + Special opcode 90: advance Address by 12 to 0x82d8 and Line by 1 to 173 + Special opcode 90: advance Address by 12 to 0x82e4 and Line by 1 to 174 + Special opcode 90: advance Address by 12 to 0x82f0 and Line by 1 to 175 + Special opcode 90: advance Address by 12 to 0x82fc and Line by 1 to 176 + Special opcode 90: advance Address by 12 to 0x8308 and Line by 1 to 177 + Special opcode 90: advance Address by 12 to 0x8314 and Line by 1 to 178 + Special opcode 90: advance Address by 12 to 0x8320 and Line by 1 to 179 + Special opcode 90: advance Address by 12 to 0x832c and Line by 1 to 180 + Special opcode 90: advance Address by 12 to 0x8338 and Line by 1 to 181 + Special opcode 90: advance Address by 12 to 0x8344 and Line by 1 to 182 + Special opcode 34: advance Address by 4 to 0x8348 and Line by 1 to 183 + Special opcode 34: advance Address by 4 to 0x834c and Line by 1 to 184 + Special opcode 34: advance Address by 4 to 0x8350 and Line by 1 to 185 + Special opcode 34: advance Address by 4 to 0x8354 and Line by 1 to 186 + Special opcode 34: advance Address by 4 to 0x8358 and Line by 1 to 187 + Special opcode 38: advance Address by 4 to 0x835c and Line by 5 to 192 + Special opcode 20: advance Address by 2 to 0x835e and Line by 1 to 193 + Special opcode 34: advance Address by 4 to 0x8362 and Line by 1 to 194 + Special opcode 34: advance Address by 4 to 0x8366 and Line by 1 to 195 + Special opcode 34: advance Address by 4 to 0x836a and Line by 1 to 196 + Special opcode 34: advance Address by 4 to 0x836e and Line by 1 to 197 + Special opcode 34: advance Address by 4 to 0x8372 and Line by 1 to 198 + Special opcode 34: advance Address by 4 to 0x8376 and Line by 1 to 199 + Special opcode 34: advance Address by 4 to 0x837a and Line by 1 to 200 + Special opcode 34: advance Address by 4 to 0x837e and Line by 1 to 201 + Special opcode 34: advance Address by 4 to 0x8382 and Line by 1 to 202 + Special opcode 34: advance Address by 4 to 0x8386 and Line by 1 to 203 + Special opcode 34: advance Address by 4 to 0x838a and Line by 1 to 204 + Special opcode 34: advance Address by 4 to 0x838e and Line by 1 to 205 + Special opcode 34: advance Address by 4 to 0x8392 and Line by 1 to 206 + Special opcode 34: advance Address by 4 to 0x8396 and Line by 1 to 207 + Special opcode 34: advance Address by 4 to 0x839a and Line by 1 to 208 + Special opcode 34: advance Address by 4 to 0x839e and Line by 1 to 209 + Special opcode 34: advance Address by 4 to 0x83a2 and Line by 1 to 210 + Special opcode 34: advance Address by 4 to 0x83a6 and Line by 1 to 211 + Special opcode 34: advance Address by 4 to 0x83aa and Line by 1 to 212 + Special opcode 38: advance Address by 4 to 0x83ae and Line by 5 to 217 + Special opcode 20: advance Address by 2 to 0x83b0 and Line by 1 to 218 + Special opcode 34: advance Address by 4 to 0x83b4 and Line by 1 to 219 + Special opcode 34: advance Address by 4 to 0x83b8 and Line by 1 to 220 + Special opcode 34: advance Address by 4 to 0x83bc and Line by 1 to 221 + Special opcode 34: advance Address by 4 to 0x83c0 and Line by 1 to 222 + Special opcode 34: advance Address by 4 to 0x83c4 and Line by 1 to 223 + Special opcode 34: advance Address by 4 to 0x83c8 and Line by 1 to 224 + Special opcode 34: advance Address by 4 to 0x83cc and Line by 1 to 225 + Special opcode 34: advance Address by 4 to 0x83d0 and Line by 1 to 226 + Special opcode 34: advance Address by 4 to 0x83d4 and Line by 1 to 227 + Special opcode 34: advance Address by 4 to 0x83d8 and Line by 1 to 228 + Special opcode 34: advance Address by 4 to 0x83dc and Line by 1 to 229 + Special opcode 20: advance Address by 2 to 0x83de and Line by 1 to 230 + Special opcode 20: advance Address by 2 to 0x83e0 and Line by 1 to 231 + Special opcode 20: advance Address by 2 to 0x83e2 and Line by 1 to 232 + Special opcode 20: advance Address by 2 to 0x83e4 and Line by 1 to 233 + Special opcode 20: advance Address by 2 to 0x83e6 and Line by 1 to 234 + Special opcode 20: advance Address by 2 to 0x83e8 and Line by 1 to 235 + Special opcode 20: advance Address by 2 to 0x83ea and Line by 1 to 236 + Special opcode 20: advance Address by 2 to 0x83ec and Line by 1 to 237 + Special opcode 24: advance Address by 2 to 0x83ee and Line by 5 to 242 + Special opcode 20: advance Address by 2 to 0x83f0 and Line by 1 to 243 + Special opcode 20: advance Address by 2 to 0x83f2 and Line by 1 to 244 + Special opcode 20: advance Address by 2 to 0x83f4 and Line by 1 to 245 + Special opcode 20: advance Address by 2 to 0x83f6 and Line by 1 to 246 + Special opcode 20: advance Address by 2 to 0x83f8 and Line by 1 to 247 + Special opcode 20: advance Address by 2 to 0x83fa and Line by 1 to 248 + Special opcode 20: advance Address by 2 to 0x83fc and Line by 1 to 249 + Special opcode 20: advance Address by 2 to 0x83fe and Line by 1 to 250 + Special opcode 20: advance Address by 2 to 0x8400 and Line by 1 to 251 + Special opcode 20: advance Address by 2 to 0x8402 and Line by 1 to 252 + Special opcode 20: advance Address by 2 to 0x8404 and Line by 1 to 253 + Special opcode 20: advance Address by 2 to 0x8406 and Line by 1 to 254 + Special opcode 20: advance Address by 2 to 0x8408 and Line by 1 to 255 + Special opcode 20: advance Address by 2 to 0x840a and Line by 1 to 256 + Special opcode 20: advance Address by 2 to 0x840c and Line by 1 to 257 + Special opcode 20: advance Address by 2 to 0x840e and Line by 1 to 258 + Special opcode 20: advance Address by 2 to 0x8410 and Line by 1 to 259 + Special opcode 20: advance Address by 2 to 0x8412 and Line by 1 to 260 + Special opcode 20: advance Address by 2 to 0x8414 and Line by 1 to 261 + Special opcode 20: advance Address by 2 to 0x8416 and Line by 1 to 262 + Special opcode 21: advance Address by 2 to 0x8418 and Line by 2 to 264 + Advance PC by 196 to 84dc + Special opcode 8: advance Address by 0 to 0x84dc and Line by 3 to 267 + Advance PC by 32360 to 10344 + Special opcode 8: advance Address by 0 to 0x10344 and Line by 3 to 270 + Advance PC by 2 to 10346 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-7.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-7.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-7.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-7.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,15 @@ +#readelf: -wl +#source: brokw-1.s +#as: --em=criself --gdwarf2 + +# Most simple broken word. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 7: advance Address by 0 to 0x0 and Line by 2 to 3 + Special opcode 37: advance Address by 4 to 0x4 and Line by 4 to 7 + Special opcode 111: advance Address by 14 to 0x12 and Line by 8 to 15 + Advance PC by 32768 to 8012 + Special opcode 9: advance Address by 0 to 0x8012 and Line by 4 to 19 + Advance PC by 2 to 8014 + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-8.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-8.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-8.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-8.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,17 @@ +#readelf: -wl +#source: brokw-2.s +#as: --em=criself --gdwarf2 + +# Simple broken word, table with two labels. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 7: advance Address by 0 to 0x0 and Line by 2 to 3 + Special opcode 52: advance Address by 6 to 0x6 and Line by 5 to 8 + Advance Line by 9 to 17 + Special opcode 145: advance Address by 20 to 0x1a and Line by 0 to 17 + Advance PC by 32768 to 801a + Special opcode 9: advance Address by 0 to 0x801a and Line by 4 to 21 + Special opcode 20: advance Address by 2 to 0x801c and Line by 1 to 22 + Advance PC by 2 to 801e + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-9.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-9.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-dw2-9.d Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-dw2-9.d Fri Apr 6 15:33:25 2001 @@ -0,0 +1,63 @@ +#readelf: -wl +#source: brokw-3.s +#as: --em=criself --gdwarf2 + +# Long broken word table. +#... + Line Number Statements: + Extended opcode 2: set Address to 0x0 + Special opcode 8: advance Address by 0 to 0x0 and Line by 3 to 4 + Special opcode 23: advance Address by 2 to 0x2 and Line by 4 to 8 + Special opcode 34: advance Address by 4 to 0x6 and Line by 1 to 9 + Special opcode 34: advance Address by 4 to 0xa and Line by 1 to 10 + Advance Line by 47 to 57 + Advance PC by 104 to 72 + Copy + Advance Line by 10 to 67 + Advance PC by 260 to 176 + Copy + Advance PC by 32770 to 8178 + Special opcode 9: advance Address by 0 to 0x8178 and Line by 4 to 71 + Special opcode 20: advance Address by 2 to 0x817a and Line by 1 to 72 + Special opcode 20: advance Address by 2 to 0x817c and Line by 1 to 73 + Special opcode 20: advance Address by 2 to 0x817e and Line by 1 to 74 + Special opcode 20: advance Address by 2 to 0x8180 and Line by 1 to 75 + Special opcode 20: advance Address by 2 to 0x8182 and Line by 1 to 76 + Special opcode 20: advance Address by 2 to 0x8184 and Line by 1 to 77 + Special opcode 20: advance Address by 2 to 0x8186 and Line by 1 to 78 + Special opcode 20: advance Address by 2 to 0x8188 and Line by 1 to 79 + Special opcode 20: advance Address by 2 to 0x818a and Line by 1 to 80 + Special opcode 20: advance Address by 2 to 0x818c and Line by 1 to 81 + Special opcode 20: advance Address by 2 to 0x818e and Line by 1 to 82 + Special opcode 20: advance Address by 2 to 0x8190 and Line by 1 to 83 + Special opcode 20: advance Address by 2 to 0x8192 and Line by 1 to 84 + Special opcode 20: advance Address by 2 to 0x8194 and Line by 1 to 85 + Special opcode 20: advance Address by 2 to 0x8196 and Line by 1 to 86 + Special opcode 20: advance Address by 2 to 0x8198 and Line by 1 to 87 + Special opcode 20: advance Address by 2 to 0x819a and Line by 1 to 88 + Special opcode 20: advance Address by 2 to 0x819c and Line by 1 to 89 + Special opcode 20: advance Address by 2 to 0x819e and Line by 1 to 90 + Special opcode 20: advance Address by 2 to 0x81a0 and Line by 1 to 91 + Special opcode 20: advance Address by 2 to 0x81a2 and Line by 1 to 92 + Special opcode 20: advance Address by 2 to 0x81a4 and Line by 1 to 93 + Special opcode 20: advance Address by 2 to 0x81a6 and Line by 1 to 94 + Special opcode 20: advance Address by 2 to 0x81a8 and Line by 1 to 95 + Special opcode 20: advance Address by 2 to 0x81aa and Line by 1 to 96 + Special opcode 20: advance Address by 2 to 0x81ac and Line by 1 to 97 + Special opcode 20: advance Address by 2 to 0x81ae and Line by 1 to 98 + Special opcode 20: advance Address by 2 to 0x81b0 and Line by 1 to 99 + Special opcode 20: advance Address by 2 to 0x81b2 and Line by 1 to 100 + Special opcode 20: advance Address by 2 to 0x81b4 and Line by 1 to 101 + Special opcode 20: advance Address by 2 to 0x81b6 and Line by 1 to 102 + Special opcode 20: advance Address by 2 to 0x81b8 and Line by 1 to 103 + Special opcode 20: advance Address by 2 to 0x81ba and Line by 1 to 104 + Special opcode 20: advance Address by 2 to 0x81bc and Line by 1 to 105 + Special opcode 20: advance Address by 2 to 0x81be and Line by 1 to 106 + Special opcode 20: advance Address by 2 to 0x81c0 and Line by 1 to 107 + Special opcode 20: advance Address by 2 to 0x81c2 and Line by 1 to 108 + Special opcode 20: advance Address by 2 to 0x81c4 and Line by 1 to 109 + Special opcode 20: advance Address by 2 to 0x81c6 and Line by 1 to 110 + Special opcode 20: advance Address by 2 to 0x81c8 and Line by 1 to 111 + Special opcode 20: advance Address by 2 to 0x81ca and Line by 1 to 112 + Advance PC by 2 to 81cc + Extended opcode 1: End of Sequence diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-pic-1.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-pic-1.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/rd-pic-1.s Fri Mar 23 13:54:17 2001 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/rd-pic-1.s Fri Apr 6 15:33:25 2001 @@ -29,4 +29,3 @@ start: sub.d [r12+extsym3:GOT16-156],r9,r8 move.d [r11+extsym14:GOTPLT16-256],r9 add.d [r10+extsym3:GOTPLT+56],r7,r8 - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/sep-err-1.s binutils-2.11.90.0.5/gas/testsuite/gas/cris/sep-err-1.s --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/sep-err-1.s Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/sep-err-1.s Fri Apr 6 15:33:25 2001 @@ -3,4 +3,3 @@ .text start: nop|moveq 0,r10 ; { dg-error "Unknown opcode" } - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/sreg-to-x.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/sreg-to-x.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/sreg-to-x.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/sreg-to-x.d Fri Apr 6 15:33:25 2001 @@ -213,4 +213,3 @@ Disassembly of section \.text: [ ]+438:[ ]+(R_CRIS_)?32[ ]+.text 0000043e : ^[ ]+\.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/test.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/test.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/test.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/test.d Fri Apr 6 15:33:25 2001 @@ -321,4 +321,3 @@ Disassembly of section \.text: 000005ea : \.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-byte-sreg.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-byte-sreg.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-byte-sreg.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-byte-sreg.d Fri Apr 6 15:33:25 2001 @@ -91,4 +91,3 @@ Disassembly of section \.text: [ ]+140:[ ]+(R_CRIS_)?32[ ]+\.text 00000146 : ^[ ]+\.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-dword-sreg.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-dword-sreg.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-dword-sreg.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-dword-sreg.d Fri Apr 6 15:33:25 2001 @@ -179,4 +179,3 @@ Disassembly of section \.text: [ ]+39a:[ ]+(R_CRIS_)?32[ ]+externalsym [ ]+3a0:[ ]+7f0d 0000 0000 @IM+300a@[ ]+move[ ]+\[(0x0|0 )\],.* [ ]+3a2:[ ]+(R_CRIS_)?32[ ]+\.text - diff -uprN binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-word-sreg.d binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-word-sreg.d --- binutils-2.11.90.0.4/gas/testsuite/gas/cris/x-to-word-sreg.d Thu Jul 20 19:21:16 2000 +++ binutils-2.11.90.0.5/gas/testsuite/gas/cris/x-to-word-sreg.d Fri Apr 6 15:33:25 2001 @@ -150,4 +150,3 @@ Disassembly of section \.text: [ ]+28c:[ ]+(R_CRIS_)?32[ ]+\.text 00000292 : ^[ ]+\.\.\. - diff -uprN binutils-2.11.90.0.4/gas/testsuite/lib/gas-defs.exp binutils-2.11.90.0.5/gas/testsuite/lib/gas-defs.exp --- binutils-2.11.90.0.4/gas/testsuite/lib/gas-defs.exp Mon Apr 3 09:46:56 2000 +++ binutils-2.11.90.0.5/gas/testsuite/lib/gas-defs.exp Fri Apr 6 15:34:11 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000 Free Software +# Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -242,8 +242,8 @@ proc gas_init { args } { proc run_dump_test { name } { global subdir srcdir - global OBJDUMP NM AS OBJCOPY - global OBJDUMPFLAGS NMFLAGS ASFLAGS OBJCOPYFLAGS + global OBJDUMP NM AS OBJCOPY READELF + global OBJDUMPFLAGS NMFLAGS ASFLAGS OBJCOPYFLAGS READELFFLAGS global host_triplet if [string match "*/*" $name] { @@ -262,6 +262,7 @@ proc run_dump_test { name } { set opts(objdump) {} set opts(nm) {} set opts(objcopy) {} + set opts(readelf) {} set opts(name) {} set opts(PROG) {} set opts(source) {} @@ -290,6 +291,8 @@ proc run_dump_test { name } { { set program nm } objcopy { set program objcopy } + readelf + { set program readelf } default { perror "unrecognized program option $opts(PROG) in $file.d" unresolved $subdir/$name @@ -298,7 +301,7 @@ proc run_dump_test { name } { } else { # Guess which program to run, by seeing which option was specified. set program "" - foreach p {objdump objcopy nm} { + foreach p {objdump objcopy nm readelf} { if {$opts($p) != ""} { if {$program != ""} { perror "ambiguous dump program in $file.d" diff -uprN binutils-2.11.90.0.4/gas/write.c binutils-2.11.90.0.5/gas/write.c --- binutils-2.11.90.0.4/gas/write.c Thu Mar 29 23:37:26 2001 +++ binutils-2.11.90.0.5/gas/write.c Fri Apr 13 11:47:27 2001 @@ -872,6 +872,13 @@ adjust_reloc_syms (abfd, sec, xxx) symbol_mark_used_in_reloc (fixp->fx_addsy); goto done; } + + /* Never adjust a reloc against local symbol in a merge section. */ + if (symsec->flags & SEC_MERGE) + { + symbol_mark_used_in_reloc (fixp->fx_addsy); + goto done; + } #endif /* Is there some other reason we can't adjust this one? (E.g., @@ -1543,6 +1550,26 @@ write_object_file () while (1) { int changed; + +#ifndef WORKING_DOT_WORD + /* We need to reset the markers in the broken word list and + associated frags between calls to relax_segment (via + relax_seg). Since the broken word list is global, we do it + once per round, rather than locally in relax_segment for each + segment. */ + struct broken_word *brokp; + + for (brokp = broken_words; + brokp != (struct broken_word *) NULL; + brokp = brokp->next_broken_word) + { + brokp->added = 0; + + if (brokp->dispfrag != (fragS *) NULL + && brokp->dispfrag->fr_type == rs_broken_word) + brokp->dispfrag->fr_subtype = 0; + } +#endif changed = 0; bfd_map_over_sections (stdoutput, relax_seg, &changed); diff -uprN binutils-2.11.90.0.4/gprof/ChangeLog binutils-2.11.90.0.5/gprof/ChangeLog --- binutils-2.11.90.0.4/gprof/ChangeLog Thu Mar 15 14:56:23 2001 +++ binutils-2.11.90.0.5/gprof/ChangeLog Fri Apr 6 15:34:11 2001 @@ -1,3 +1,14 @@ +2001-04-06 Stephane Carrez + + * gprof.texi: Put @c man begin and @c man end indications + to generate man page using texi2pod and pod2man. Added SEEALSO, + SYNOPSIS, BUGS, FILES and DESCRIPTION from original gprof.1 + enclosed in @ifset man condition. + * Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. + Generate gprof.1 from gprof.texi. + * gprof.1: Generate from gprof.texi. + * Makefile.in: Regenerate. + 2001-03-13 David Mosberger * hist.c (hist_dimension): Declare as an array of 16 characters. diff -uprN binutils-2.11.90.0.4/gprof/Makefile.am binutils-2.11.90.0.5/gprof/Makefile.am --- binutils-2.11.90.0.4/gprof/Makefile.am Sat Jul 1 12:37:43 2000 +++ binutils-2.11.90.0.5/gprof/Makefile.am Fri Apr 6 15:50:33 2001 @@ -49,8 +49,26 @@ po/POTFILES.in: @MAINT@ Makefile for file in $(POTFILES); do echo $$file; done | sort > tmp \ && mv tmp $(srcdir)/po/POTFILES.in +MANCONF = -Dman + +TEXI2POD = perl $(srcdir)/../etc/texi2pod.pl + +POD2MAN = pod2man --center="GNU" --release="binutils-$(VERSION)" --section=1 + info_TEXINFOS = gprof.texi man_MANS = gprof.1 + +# Build the man page from the texinfo file +# The sed command removes the no-adjust Nroff command so that +# the man output looks standard. +$(srcdir)/gprof.1: $(srcdir)/gprof.texi + touch $(srcdir)/gprof.1 + -$(TEXI2POD) $(MANCONF) -Dgprof < $(srcdir)/gprof.texi > gprof.pod + -($(POD2MAN) gprof.pod | \ + sed -e '/^.if n .na/d' > $(srcdir)/gprof.1.T$$$$ && \ + mv -f $(srcdir)/gprof.1.T$$$$ $(srcdir)/gprof.1) || \ + (rm -f $(srcdir)/gprof.1.T$$$$ && exit 1) + rm -f gprof.pod # Targets to rebuild dependencies in this Makefile. # Have to get rid of DEP1 here so that "$?" later includes all sources. diff -uprN binutils-2.11.90.0.4/gprof/Makefile.in binutils-2.11.90.0.5/gprof/Makefile.in --- binutils-2.11.90.0.4/gprof/Makefile.in Sat Mar 17 12:48:05 2001 +++ binutils-2.11.90.0.5/gprof/Makefile.in Fri Apr 6 15:50:33 2001 @@ -141,6 +141,12 @@ BUILT_SOURCES = flat_bl.c bsd_callg_bl.c POTFILES = $(sources) $(noinst_HEADERS) +MANCONF = -Dman + +TEXI2POD = perl $(srcdir)/../etc/texi2pod.pl + +POD2MAN = pod2man --center="GNU" --release="binutils-$(VERSION)" --section=1 + info_TEXINFOS = gprof.texi man_MANS = gprof.1 @@ -715,6 +721,18 @@ diststuff: $(BUILT_SOURCES) info po/POTFILES.in: @MAINT@ Makefile for file in $(POTFILES); do echo $$file; done | sort > tmp \ && mv tmp $(srcdir)/po/POTFILES.in + +# Build the man page from the texinfo file +# The sed command removes the no-adjust Nroff command so that +# the man output looks standard. +$(srcdir)/gprof.1: $(srcdir)/gprof.texi + touch $(srcdir)/gprof.1 + -$(TEXI2POD) $(MANCONF) -Dgprof < $(srcdir)/gprof.texi > gprof.pod + -($(POD2MAN) gprof.pod | \ + sed -e '/^.if n .na/d' > $(srcdir)/gprof.1.T$$$$ && \ + mv -f $(srcdir)/gprof.1.T$$$$ $(srcdir)/gprof.1) || \ + (rm -f $(srcdir)/gprof.1.T$$$$ && exit 1) + rm -f gprof.pod # Targets to rebuild dependencies in this Makefile. # Have to get rid of DEP1 here so that "$?" later includes all sources. diff -uprN binutils-2.11.90.0.4/gprof/gprof.1 binutils-2.11.90.0.5/gprof/gprof.1 --- binutils-2.11.90.0.4/gprof/gprof.1 Thu Jun 3 11:02:08 1999 +++ binutils-2.11.90.0.5/gprof/gprof.1 Fri Apr 6 15:34:14 2001 @@ -1,232 +1,677 @@ -.\" Copyright (c) 1983, 1990 The Regents of the University of California. -.\" All rights reserved. +.\" Automatically generated by Pod::Man version 1.15 +.\" Fri Apr 6 20:13:00 2001 .\" -.\" Redistribution and use in source and binary forms are permitted provided -.\" that: (1) source distributions retain this entire copyright notice and -.\" comment, and (2) distributions including binaries display the following -.\" acknowledgement: ``This product includes software developed by the -.\" University of California, Berkeley and its contributors'' in the -.\" documentation or other materials provided with the distribution and in -.\" all advertising materials mentioning features or use of this software. -.\" Neither the name of the University nor the names of its contributors may -.\" be used to endorse or promote products derived from this software without -.\" specific prior written permission. -.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +.\" 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\} .\" -.\" @(#)gprof.1 6.6 (Berkeley) 7/24/90 +.\" 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 +.\} .\" -.TH GPROF 1 "January 29, 1993" -.SH NAME +.\" 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 "GPROF 1" +.TH GPROF 1 "binutils-2.11.90" "2001-04-06" "GNU" +.UC +.SH "NAME" gprof \- display call graph profile data -.SH SYNOPSIS -.B gprof [ \-abcsz ] [ \-e|\-E -.I name -.B ] [ \-f|\-F -.I name -.B ] -.B [ \-k -.I fromname toname -.B ] [ -.I objfile -.B [ -.I gmon.out -.B ] -.B ] -.SH DESCRIPTION -.B gprof -produces an execution profile of C, Pascal, or Fortran77 programs. -The effect of called routines is incorporated in the profile of each caller. -The profile data is taken from the call graph profile file -\&(`gmon.out' default) which is created by programs -that are compiled with the -.B \-pg -option of -.BR cc ( 1 ) , -.BR pc ( 1 ) , -and -.BR f77 ( 1 ) . -The -.B \-pg -option also links in versions of the library routines -that are compiled for profiling. -.B Gprof -reads the given object file (the default is `a.out') -and establishes the relation between its symbol table -and the call graph profile from `gmon.out'. -If more than one profile file is specified, -the -.B gprof +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +gprof [ \-[abcDhilLsTvwxyz] ] [ \-[ACeEfFJnNOpPqQZ][\fIname\fR] ] + [ \-I \fIdirs\fR ] [ \-d[\fInum\fR] ] [ \-k \fIfrom/to\fR ] + [ \-m \fImin-count\fR ] [ \-t \fItable-length\fR ] + [ \-\-[no-]annotated-source[=\fIname\fR] ] + [ \-\-[no-]exec-counts[=\fIname\fR] ] + [ \-\-[no-]flat-profile[=\fIname\fR] ] [ \-\-[no-]graph[=\fIname\fR] ] + [ \-\-[no-]time=\fIname\fR] [ \-\-all-lines ] [ \-\-brief ] + [ \-\-debug[=\fIlevel\fR] ] [ \-\-function-ordering ] + [ \-\-file-ordering ] [ \-\-directory-path=\fIdirs\fR ] + [ \-\-display-unused-functions ] [ \-\-file-format=\fIname\fR ] + [ \-\-file-info ] [ \-\-help ] [ \-\-line ] [ \-\-min-count=\fIn\fR ] + [ \-\-no-static ] [ \-\-print-path ] [ \-\-separate-files ] + [ \-\-static-call-graph ] [ \-\-sum ] [ \-\-table-length=\fIlen\fR ] + [ \-\-traditional ] [ \-\-version ] [ \-\-width=\fIn\fR ] + [ \-\-ignore-non-functions ] [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ] + [ \-\-no-demangle ] [ \fIimage-file\fR ] [ \fIprofile-file\fR ... ] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\f(CW\*(C`gprof\*(C'\fR produces an execution profile of C, Pascal, or Fortran77 +programs. The effect of called routines is incorporated in the profile +of each caller. The profile data is taken from the call graph profile file +(\fIgmon.out\fR default) which is created by programs +that are compiled with the \fB\-pg\fR option of +\&\f(CW\*(C`cc\*(C'\fR, \f(CW\*(C`pc\*(C'\fR, and \f(CW\*(C`f77\*(C'\fR. +The \fB\-pg\fR option also links in versions of the library routines +that are compiled for profiling. \f(CW\*(C`Gprof\*(C'\fR reads the given object +file (the default is \f(CW\*(C`a.out\*(C'\fR) and establishes the relation between +its symbol table and the call graph profile from \fIgmon.out\fR. +If more than one profile file is specified, the \f(CW\*(C`gprof\*(C'\fR output shows the sum of the profile information in the given profile files. .PP -.B Gprof -calculates the amount of time spent in each routine. +\&\f(CW\*(C`Gprof\*(C'\fR calculates the amount of time spent in each routine. Next, these times are propagated along the edges of the call graph. Cycles are discovered, and calls into a cycle are made to share the time of the cycle. -The first listing shows the functions -sorted according to the time they represent -including the time of their call graph descendants. -Below each function entry is shown its (direct) call graph children, -and how their times are propagated to this function. -A similar display above the function shows how this function's time and the -time of its descendants is propagated to its (direct) call graph parents. -.PP -Cycles are also shown, with an entry for the cycle as a whole and -a listing of the members of the cycle and their contributions to the -time and call counts of the cycle. -.PP -Second, a flat profile is given, -similar to that provided by -.BR prof ( 1 ) . -This listing gives the total execution times, the call counts, -the time in milliseconds the call spent in the routine itself, and -the time in milliseconds the call spent in the routine itself including -its descendants. -.PP -Finally, an index of the function names is provided. -.SH OPTIONS -The following options are available: -.TP -.B \-a -suppresses the printing of statically declared functions. -If this option is given, all relevant information about the static function -(e.g., time samples, calls to other functions, calls from other functions) -belongs to the function loaded just before the static function in the -\&`objfile' file. -.TP -.B \-b -suppresses the printing of a description of each field in the profile. -.TP -.B \-c -the static call graph of the program is discovered by a heuristic -that examines the text space of the object file. -Static-only parents or children are shown -with call counts of 0. -.TP -.BI "\-e " name -suppresses the printing of the graph profile entry for routine -.I name -and all its descendants -(unless they have other ancestors that aren't suppressed). -More than one -.B \-e -option may be given. -Only one -.I name -may be given with each -.B \-e -option. -.TP -.BI "\-E " name -suppresses the printing of the graph profile entry for routine -.I name -(and its descendants) as -.B \-e , -above, and also excludes the time spent in -.I name -(and its descendants) from the total and percentage time computations. -(For example, -.BI "\-E " mcount -.BI "\-E " mcleanup -is the default.) -.TP -.BI "\-f " name -prints the graph profile entry of only the specified routine -.I name -and its descendants. -More than one -.B \-f -option may be given. -Only one -.I name -may be given with each -.B \-f -option. -.TP -.BI "\-F " name -prints the graph profile entry of only the routine -.I name -and its descendants (as -.B \-f , -above) and also uses only the times of the printed routines -in total time and percentage computations. -More than one -.B \-F -option may be given. -Only one -.I name -may be given with each -.B \-F -option. -The -.B \-F -option -overrides -the -.B \-E -option. -.TP -.BI "\-k " "fromname toname" -will delete any arcs from routine -.I fromname -to routine -.IR toname . -This can be used to break undesired cycles. -More than one -.B \-k -option may be given. -Only one pair of routine names may be given with each -.B \-k -option. -.TP -.B \-s -a profile file `gmon.sum' is produced that represents -the sum of the profile information in all the specified profile files. -This summary profile file may be given to later -executions of gprof (probably also with a -.BR \-s ) -to accumulate profile data across several runs of an `objfile' file. -.TP -.B -v -prints the version number for gprof, and then exits. -.TP -.B -z -displays routines that have zero usage (as shown by call counts -and accumulated time). -This is useful with the -.B \-c -option for discovering which routines were never called. -.PP -.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 -.BR monitor ( 3 ) , -.BR profil ( 2 ) , -.BR cc ( 1 ) , -.BR prof ( 1 ) -.sp -``An Execution Profiler for Modular Programs'', -by S. Graham, P. Kessler, M. McKusick; -.I -Software \- Practice and Experience, -Vol. 13, pp. 671-685, 1983. -.sp -``gprof: A Call Graph Execution Profiler'', -by S. Graham, P. Kessler, M. McKusick; -.I -Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, -SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982. -.SH HISTORY -.B Gprof -appeared in 4.2 BSD. -.SH BUGS +.PP +Several forms of output are available from the analysis. +.PP +The \fIflat profile\fR shows how much time your program spent in each function, +and how many times that function was called. If you simply want to know +which functions burn most of the cycles, it is stated concisely here. +.PP +The \fIcall graph\fR shows, for each function, which functions called it, which +other functions it called, and how many times. There is also an estimate +of how much time was spent in the subroutines of each function. This can +suggest places where you might try to eliminate function calls that use a +lot of time. +.PP +The \fIannotated source\fR listing is a copy of the program's +source code, labeled with the number of times each line of the +program was executed. +.SH "OPTIONS" +.IX Header "OPTIONS" +These options specify which of several output formats +\&\f(CW\*(C`gprof\*(C'\fR should produce. +.PP +Many of these options take an optional \fIsymspec\fR to specify +functions to be included or excluded. These options can be +specified multiple times, with different symspecs, to include +or exclude sets of symbols. +.PP +Specifying any of these options overrides the default (\fB\-p \-q\fR), +which prints a flat profile and call graph analysis +for all functions. +.if n .Ip "\f(CW""""\-A[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-A[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-A[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-annotated\-source[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--annotated-source[=symspec]" +.PD +The \fB\-A\fR option causes \f(CW\*(C`gprof\*(C'\fR to print annotated source code. +If \fIsymspec\fR is specified, print output only for matching symbols. +.if n .Ip "\f(CW""""\-b""""\fR" 4 +.el .Ip "\f(CW\-b\fR" 4 +.IX Item "-b" +.PD 0 +.if n .Ip "\f(CW""""\-\-brief""""\fR" 4 +.el .Ip "\f(CW\-\-brief\fR" 4 +.IX Item "--brief" +.PD +If the \fB\-b\fR option is given, \f(CW\*(C`gprof\*(C'\fR doesn't print the +verbose blurbs that try to explain the meaning of all of the fields in +the tables. This is useful if you intend to print out the output, or +are tired of seeing the blurbs. +.if n .Ip "\f(CW""""\-C[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-C[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-C[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-exec\-counts[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--exec-counts[=symspec]" +.PD +The \fB\-C\fR option causes \f(CW\*(C`gprof\*(C'\fR to +print a tally of functions and the number of times each was called. +If \fIsymspec\fR is specified, print tally only for matching symbols. +.Sp +If the profile data file contains basic-block count records, specifying +the \fB\-l\fR option, along with \fB\-C\fR, will cause basic-block +execution counts to be tallied and displayed. +.if n .Ip "\f(CW""""\-i""""\fR" 4 +.el .Ip "\f(CW\-i\fR" 4 +.IX Item "-i" +.PD 0 +.if n .Ip "\f(CW""""\-\-file\-info""""\fR" 4 +.el .Ip "\f(CW\-\-file\-info\fR" 4 +.IX Item "--file-info" +.PD +The \fB\-i\fR option causes \f(CW\*(C`gprof\*(C'\fR to display summary information +about the profile data \fIfile\fR\|(s) and then exit. The number of histogram, +call graph, and basic-block count records is displayed. +.if n .Ip "\f(CW""""\-I \f(CIdirs\f(CW""""\fR" 4 +.el .Ip "\f(CW\-I \f(CIdirs\f(CW\fR" 4 +.IX Item "-I dirs" +.PD 0 +.if n .Ip "\f(CW""""\-\-directory\-path=\f(CIdirs\f(CW""""\fR" 4 +.el .Ip "\f(CW\-\-directory\-path=\f(CIdirs\f(CW\fR" 4 +.IX Item "--directory-path=dirs" +.PD +The \fB\-I\fR option specifies a list of search directories in +which to find source files. Environment variable \fI\s-1GPROF_PATH\s0\fR +can also be used to convey this information. +Used mostly for annotated source output. +.if n .Ip "\f(CW""""\-J[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-J[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-J[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-annotated-source[=symspec]" +.PD +The \fB\-J\fR option causes \f(CW\*(C`gprof\*(C'\fR not to +print annotated source code. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints annotated source, +but excludes matching symbols. +.if n .Ip "\f(CW""""\-L""""\fR" 4 +.el .Ip "\f(CW\-L\fR" 4 +.IX Item "-L" +.PD 0 +.if n .Ip "\f(CW""""\-\-print\-path""""\fR" 4 +.el .Ip "\f(CW\-\-print\-path\fR" 4 +.IX Item "--print-path" +.PD +Normally, source filenames are printed with the path +component suppressed. The \fB\-L\fR option causes \f(CW\*(C`gprof\*(C'\fR +to print the full pathname of +source filenames, which is determined +from symbolic debugging information in the image file +and is relative to the directory in which the compiler +was invoked. +.if n .Ip "\f(CW""""\-p[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-p[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-p[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-flat\-profile[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--flat-profile[=symspec]" +.PD +The \fB\-p\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a flat profile. +If \fIsymspec\fR is specified, print flat profile only for matching symbols. +.if n .Ip "\f(CW""""\-P[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-P[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-P[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-flat-profile[=symspec]" +.PD +The \fB\-P\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing a flat profile. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a flat profile, +but excludes matching symbols. +.if n .Ip "\f(CW""""\-q[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-q[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-q[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-graph[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-graph[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--graph[=symspec]" +.PD +The \fB\-q\fR option causes \f(CW\*(C`gprof\*(C'\fR to print the call graph analysis. +If \fIsymspec\fR is specified, print call graph only for matching symbols +and their children. +.if n .Ip "\f(CW""""\-Q[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-Q[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-Q[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-graph[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-no\-graph[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-graph[=symspec]" +.PD +The \fB\-Q\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing the +call graph. +If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a call graph, +but excludes matching symbols. +.if n .Ip "\f(CW""""\-y""""\fR" 4 +.el .Ip "\f(CW\-y\fR" 4 +.IX Item "-y" +.PD 0 +.if n .Ip "\f(CW""""\-\-separate\-files""""\fR" 4 +.el .Ip "\f(CW\-\-separate\-files\fR" 4 +.IX Item "--separate-files" +.PD +This option affects annotated source output only. +Normally, \f(CW\*(C`gprof\*(C'\fR prints annotated source files +to standard-output. If this option is specified, +annotated source for a file named \fIpath/\fIfilename\fI\fR +is generated in the file \fI\fIfilename\fI\-ann\fR. If the underlying +filesystem would truncate \fI\fIfilename\fI\-ann\fR so that it +overwrites the original \fI\fIfilename\fI\fR, \f(CW\*(C`gprof\*(C'\fR generates +annotated source in the file \fI\fIfilename\fI.ann\fR instead (if the +original file name has an extension, that extension is \fIreplaced\fR +with \fI.ann\fR). +.if n .Ip "\f(CW""""\-Z[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-Z[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-Z[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-exec-counts[=symspec]" +.PD +The \fB\-Z\fR option causes \f(CW\*(C`gprof\*(C'\fR not to +print a tally of functions and the number of times each was called. +If \fIsymspec\fR is specified, print tally, but exclude matching symbols. +.if n .Ip "\f(CW""""\-\-function\-ordering""""\fR" 4 +.el .Ip "\f(CW\-\-function\-ordering\fR" 4 +.IX Item "--function-ordering" +The \fB\*(--function-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a +suggested function ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which support arbitrary +ordering of functions in an executable. +.Sp +The exact details of how to force the linker to place functions +in a particular order is system dependent and out of the scope of this +manual. +.if n .Ip "\f(CW""""\-\-file\-ordering \f(CImap_file\f(CW""""\fR" 4 +.el .Ip "\f(CW\-\-file\-ordering \f(CImap_file\f(CW\fR" 4 +.IX Item "--file-ordering map_file" +The \fB\*(--file-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a +suggested .o link line ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which do not support arbitrary +ordering of functions in an executable. +.Sp +Use of the \fB\-a\fR argument is highly recommended with this option. +.Sp +The \fImap_file\fR argument is a pathname to a file which provides +function name to object file mappings. The format of the file is similar to +the output of the program \f(CW\*(C`nm\*(C'\fR. +.Sp +.Vb 8 +\& c-parse.o:00000000 T yyparse +\& c-parse.o:00000004 C yyerrflag +\& c-lang.o:00000000 T maybe_objc_method_name +\& c-lang.o:00000000 T print_lang_statistics +\& c-lang.o:00000000 T recognize_objc_keyword +\& c-decl.o:00000000 T print_lang_identifier +\& c-decl.o:00000000 T print_lang_type +\& ... +.Ve +To create a \fImap_file\fR with \s-1GNU\s0 \f(CW\*(C`nm\*(C'\fR, type a command like +\&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR. +.if n .Ip "\f(CW""""\-T""""\fR" 4 +.el .Ip "\f(CW\-T\fR" 4 +.IX Item "-T" +.PD 0 +.if n .Ip "\f(CW""""\-\-traditional""""\fR" 4 +.el .Ip "\f(CW\-\-traditional\fR" 4 +.IX Item "--traditional" +.PD +The \fB\-T\fR option causes \f(CW\*(C`gprof\*(C'\fR to print its output in +``traditional'' \s-1BSD\s0 style. +.if n .Ip "\f(CW""""\-w \f(CIwidth\f(CW""""\fR" 4 +.el .Ip "\f(CW\-w \f(CIwidth\f(CW\fR" 4 +.IX Item "-w width" +.PD 0 +.if n .Ip "\f(CW""""\-\-width=\f(CIwidth\f(CW""""\fR" 4 +.el .Ip "\f(CW\-\-width=\f(CIwidth\f(CW\fR" 4 +.IX Item "--width=width" +.PD +Sets width of output lines to \fIwidth\fR. +Currently only used when printing the function index at the bottom +of the call graph. +.if n .Ip "\f(CW""""\-x""""\fR" 4 +.el .Ip "\f(CW\-x\fR" 4 +.IX Item "-x" +.PD 0 +.if n .Ip "\f(CW""""\-\-all\-lines""""\fR" 4 +.el .Ip "\f(CW\-\-all\-lines\fR" 4 +.IX Item "--all-lines" +.PD +This option affects annotated source output only. +By default, only the lines at the beginning of a basic-block +are annotated. If this option is specified, every line in +a basic-block is annotated by repeating the annotation for the +first line. This behavior is similar to \f(CW\*(C`tcov\*(C'\fR's \fB\-a\fR. +.if n .Ip "\f(CW""""\-\-demangle[=\f(CIstyle\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-demangle[=\f(CIstyle\f(CW]\fR" 4 +.IX Item "--demangle[=style]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-demangle""""\fR" 4 +.el .Ip "\f(CW\-\-no\-demangle\fR" 4 +.IX Item "--no-demangle" +.PD +These options control whether \*(C+ symbol names should be demangled when +printing output. The default is to demangle symbols. The +\&\f(CW\*(C`\-\-no\-demangle\*(C'\fR option may be used to turn off demangling. Different +compilers have different mangling styles. The optional demangling style +argument can be used to choose an appropriate demangling style for your +compiler. +.Sh "Analysis Options" +.IX Subsection "Analysis Options" +.if n .Ip "\f(CW""""\-a""""\fR" 4 +.el .Ip "\f(CW\-a\fR" 4 +.IX Item "-a" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-static""""\fR" 4 +.el .Ip "\f(CW\-\-no\-static\fR" 4 +.IX Item "--no-static" +.PD +The \fB\-a\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress the printing of +statically declared (private) functions. (These are functions whose +names are not listed as global, and which are not visible outside the +file/function/block where they were defined.) Time spent in these +functions, calls to/from them, etc, will all be attributed to the +function that was loaded directly before it in the executable file. +This option affects both the flat profile and the call graph. +.if n .Ip "\f(CW""""\-c""""\fR" 4 +.el .Ip "\f(CW\-c\fR" 4 +.IX Item "-c" +.PD 0 +.if n .Ip "\f(CW""""\-\-static\-call\-graph""""\fR" 4 +.el .Ip "\f(CW\-\-static\-call\-graph\fR" 4 +.IX Item "--static-call-graph" +.PD +The \fB\-c\fR option causes the call graph of the program to be +augmented by a heuristic which examines the text space of the object +file and identifies function calls in the binary machine code. +Since normal call graph records are only generated when functions are +entered, this option identifies children that could have been called, +but never were. Calls to functions that were not compiled with +profiling enabled are also identified, but only if symbol table +entries are present for them. +Calls to dynamic library routines are typically \fInot\fR found +by this option. +Parents or children identified via this heuristic +are indicated in the call graph with call counts of \fB0\fR. +.if n .Ip "\f(CW""""\-D""""\fR" 4 +.el .Ip "\f(CW\-D\fR" 4 +.IX Item "-D" +.PD 0 +.if n .Ip "\f(CW""""\-\-ignore\-non\-functions""""\fR" 4 +.el .Ip "\f(CW\-\-ignore\-non\-functions\fR" 4 +.IX Item "--ignore-non-functions" +.PD +The \fB\-D\fR option causes \f(CW\*(C`gprof\*(C'\fR to ignore symbols which +are not known to be functions. This option will give more accurate +profile data on systems where it is supported (Solaris and \s-1HPUX\s0 for +example). +.if n .Ip "\f(CW""""\-k \f(CIfrom\f(CW/\f(CIto\f(CW""""\fR" 4 +.el .Ip "\f(CW\-k \f(CIfrom\f(CW/\f(CIto\f(CW\fR" 4 +.IX Item "-k from/to" +The \fB\-k\fR option allows you to delete from the call graph any arcs from +symbols matching symspec \fIfrom\fR to those matching symspec \fIto\fR. +.if n .Ip "\f(CW""""\-l""""\fR" 4 +.el .Ip "\f(CW\-l\fR" 4 +.IX Item "-l" +.PD 0 +.if n .Ip "\f(CW""""\-\-line""""\fR" 4 +.el .Ip "\f(CW\-\-line\fR" 4 +.IX Item "--line" +.PD +The \fB\-l\fR option enables line-by-line profiling, which causes +histogram hits to be charged to individual source code lines, +instead of functions. +If the program was compiled with basic-block counting enabled, +this option will also identify how many times each line of +code was executed. +While line-by-line profiling can help isolate where in a large function +a program is spending its time, it also significantly increases +the running time of \f(CW\*(C`gprof\*(C'\fR, and magnifies statistical +inaccuracies. +.if n .Ip "\f(CW""""\-m \f(CInum\f(CW""""\fR" 4 +.el .Ip "\f(CW\-m \f(CInum\f(CW\fR" 4 +.IX Item "-m num" +.PD 0 +.if n .Ip "\f(CW""""\-\-min\-count=\f(CInum\f(CW""""\fR" 4 +.el .Ip "\f(CW\-\-min\-count=\f(CInum\f(CW\fR" 4 +.IX Item "--min-count=num" +.PD +This option affects execution count output only. +Symbols that are executed less than \fInum\fR times are suppressed. +.if n .Ip "\f(CW""""\-n[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-n[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-n[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-time[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-time[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--time[=symspec]" +.PD +The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis, +to only propagate times for symbols matching \fIsymspec\fR. +.if n .Ip "\f(CW""""\-N[\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-N[\f(CIsymspec\f(CW]\fR" 4 +.IX Item "-N[symspec]" +.PD 0 +.if n .Ip "\f(CW""""\-\-no\-time[=\f(CIsymspec\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-no\-time[=\f(CIsymspec\f(CW]\fR" 4 +.IX Item "--no-time[=symspec]" +.PD +The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis, +not to propagate times for symbols matching \fIsymspec\fR. +.if n .Ip "\f(CW""""\-z""""\fR" 4 +.el .Ip "\f(CW\-z\fR" 4 +.IX Item "-z" +.PD 0 +.if n .Ip "\f(CW""""\-\-display\-unused\-functions""""\fR" 4 +.el .Ip "\f(CW\-\-display\-unused\-functions\fR" 4 +.IX Item "--display-unused-functions" +.PD +If you give the \fB\-z\fR option, \f(CW\*(C`gprof\*(C'\fR will mention all +functions in the flat profile, even those that were never called, and +that had no time spent in them. This is useful in conjunction with the +\&\fB\-c\fR option for discovering which routines were never called. +.Sh "Miscellaneous Options" +.IX Subsection "Miscellaneous Options" +.if n .Ip "\f(CW""""\-d[\f(CInum\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-d[\f(CInum\f(CW]\fR" 4 +.IX Item "-d[num]" +.PD 0 +.if n .Ip "\f(CW""""\-\-debug[=\f(CInum\f(CW]""""\fR" 4 +.el .Ip "\f(CW\-\-debug[=\f(CInum\f(CW]\fR" 4 +.IX Item "--debug[=num]" +.PD +The \fB\-d\fR \fInum\fR option specifies debugging options. +If \fInum\fR is not specified, enable all debugging. +.if n .Ip "\f(CW""""\-O\f(CIname\f(CW""""\fR" 4 +.el .Ip "\f(CW\-O\f(CIname\f(CW\fR" 4 +.IX Item "-Oname" +.PD 0 +.if n .Ip "\f(CW""""\-\-file\-format=\f(CIname\f(CW""""\fR" 4 +.el .Ip "\f(CW\-\-file\-format=\f(CIname\f(CW\fR" 4 +.IX Item "--file-format=name" +.PD +Selects the format of the profile data files. Recognized formats are +\&\fBauto\fR (the default), \fBbsd\fR, \fB4.4bsd\fR, \fBmagic\fR, and +\&\fBprof\fR (not yet supported). +.if n .Ip "\f(CW""""\-s""""\fR" 4 +.el .Ip "\f(CW\-s\fR" 4 +.IX Item "-s" +.PD 0 +.if n .Ip "\f(CW""""\-\-sum""""\fR" 4 +.el .Ip "\f(CW\-\-sum\fR" 4 +.IX Item "--sum" +.PD +The \fB\-s\fR option causes \f(CW\*(C`gprof\*(C'\fR to summarize the information +in the profile data files it read in, and write out a profile data +file called \fIgmon.sum\fR, which contains all the information from +the profile data files that \f(CW\*(C`gprof\*(C'\fR read in. The file \fIgmon.sum\fR +may be one of the specified input files; the effect of this is to +merge the data in the other input files into \fIgmon.sum\fR. +.Sp +Eventually you can run \f(CW\*(C`gprof\*(C'\fR again without \fB\-s\fR to analyze the +cumulative data in the file \fIgmon.sum\fR. +.if n .Ip "\f(CW""""\-v""""\fR" 4 +.el .Ip "\f(CW\-v\fR" 4 +.IX Item "-v" +.PD 0 +.if n .Ip "\f(CW""""\-\-version""""\fR" 4 +.el .Ip "\f(CW\-\-version\fR" 4 +.IX Item "--version" +.PD +The \fB\-v\fR flag causes \f(CW\*(C`gprof\*(C'\fR to print the current version +number, and then exit. +.Sh "Deprecated Options" +.IX Subsection "Deprecated Options" +These options have been replaced with newer versions that use symspecs. +.if n .Ip "\f(CW""""\-e \f(CIfunction_name\f(CW""""\fR" 4 +.el .Ip "\f(CW\-e \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-e function_name" +The \fB\-e\fR \fIfunction\fR option tells \f(CW\*(C`gprof\*(C'\fR to not print +information about the function \fIfunction_name\fR (and its +children...) in the call graph. The function will still be listed +as a child of any functions that call it, but its index number will be +shown as \fB[not printed]\fR. More than one \fB\-e\fR option may be +given; only one \fIfunction_name\fR may be indicated with each \fB\-e\fR +option. +.if n .Ip "\f(CW""""\-E \f(CIfunction_name\f(CW""""\fR" 4 +.el .Ip "\f(CW\-E \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-E function_name" +The \f(CW\*(C`\-E \f(CIfunction\f(CW\*(C'\fR option works like the \f(CW\*(C`\-e\*(C'\fR option, but +time spent in the function (and children who were not called from +anywhere else), will not be used to compute the percentages-of-time for +the call graph. More than one \fB\-E\fR option may be given; only one +\&\fIfunction_name\fR may be indicated with each \fB\-E\fR option. +.if n .Ip "\f(CW""""\-f \f(CIfunction_name\f(CW""""\fR" 4 +.el .Ip "\f(CW\-f \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-f function_name" +The \fB\-f\fR \fIfunction\fR option causes \f(CW\*(C`gprof\*(C'\fR to limit the +call graph to the function \fIfunction_name\fR and its children (and +their children...). More than one \fB\-f\fR option may be given; +only one \fIfunction_name\fR may be indicated with each \fB\-f\fR +option. +.if n .Ip "\f(CW""""\-F \f(CIfunction_name\f(CW""""\fR" 4 +.el .Ip "\f(CW\-F \f(CIfunction_name\f(CW\fR" 4 +.IX Item "-F function_name" +The \fB\-F\fR \fIfunction\fR option works like the \f(CW\*(C`\-f\*(C'\fR option, but +only time spent in the function and its children (and their +children...) will be used to determine total-time and +percentages-of-time for the call graph. More than one \fB\-F\fR option +may be given; only one \fIfunction_name\fR may be indicated with each +\&\fB\-F\fR option. The \fB\-F\fR option overrides the \fB\-E\fR option. +.SH "FILES" +.IX Header "FILES" +.if n .Ip "\f(CW""""\f(CIa.out\f(CW""""\fR" 4 +.el .Ip "\f(CW\f(CIa.out\f(CW\fR" 4 +.IX Item "a.out" +the namelist and text space. +.if n .Ip "\f(CW""""\f(CIgmon.out\f(CW""""\fR" 4 +.el .Ip "\f(CW\f(CIgmon.out\f(CW\fR" 4 +.IX Item "gmon.out" +dynamic call graph and profile. +.if n .Ip "\f(CW""""\f(CIgmon.sum\f(CW""""\fR" 4 +.el .Ip "\f(CW\f(CIgmon.sum\f(CW\fR" 4 +.IX Item "gmon.sum" +summarized dynamic call graph and profile. +.SH "BUGS" +.IX Header "BUGS" The granularity of the sampling is shown, but remains statistical at best. We assume that the time for each execution of a function @@ -246,7 +691,29 @@ Any profiled children of signal catchers propagated properly, unless the signal catcher was invoked during the execution of the profiling routine, in which case all is lost. .PP -The profiled program must call -.BR exit ( 2 ) +The profiled program must call \f(CW\*(C`exit\*(C'\fR(2) or return normally for the profiling information to be saved -in the `gmon.out' file. +in the \fIgmon.out\fR file. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fImonitor\fR\|(3), \fIprofil\fR\|(2), \fIcc\fR\|(1), \fIprof\fR\|(1), and the Info entry for \fIgprof\fR. +.PP +``An Execution Profiler for Modular Programs'', +by S. Graham, P. Kessler, M. McKusick; +Software \- Practice and Experience, +Vol. 13, pp. 671\-685, 1983. +.PP +``gprof: A Call Graph Execution Profiler'', +by S. Graham, P. Kessler, M. McKusick; +Proceedings of the \s-1SIGPLAN\s0 '82 Symposium on Compiler Construction, +\&\s-1SIGPLAN\s0 Notices, Vol. 17, No 6, pp. 120\-126, June 1982. +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (C) 1988, 92, 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 -uprN binutils-2.11.90.0.4/gprof/gprof.texi binutils-2.11.90.0.5/gprof/gprof.texi --- binutils-2.11.90.0.4/gprof/gprof.texi Thu Mar 15 14:56:31 2001 +++ binutils-2.11.90.0.5/gprof/gprof.texi Fri Apr 6 15:34:14 2001 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @setfilename gprof.info -@c Copyright 1988, 1992, 1993, 1998, 1999, 2000 +@c Copyright 1988, 1992, 1993, 1998, 1999, 2000, 2001 @c Free Software Foundation, Inc. @settitle GNU gprof @setchapternewpage odd @@ -18,14 +18,17 @@ END-INFO-DIR-ENTRY @ifinfo This file documents the gprof profiler of the GNU system. -Copyright (C) 1988, 92, 97, 98, 99, 2000 Free Software Foundation, Inc. +@c man begin COPYRIGHT +Copyright (C) 1988, 92, 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". +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". + +@c man end @ignore Permission is granted to process this file through Tex and print the @@ -96,6 +99,102 @@ section entitled "GNU Free Documentation @node Introduction @chapter Introduction to Profiling +@ifset man +@c man title gprof display call graph profile data + +@smallexample +@c man begin SYNOPSIS +gprof [ -[abcDhilLsTvwxyz] ] [ -[ACeEfFJnNOpPqQZ][@var{name}] ] + [ -I @var{dirs} ] [ -d[@var{num}] ] [ -k @var{from/to} ] + [ -m @var{min-count} ] [ -t @var{table-length} ] + [ --[no-]annotated-source[=@var{name}] ] + [ --[no-]exec-counts[=@var{name}] ] + [ --[no-]flat-profile[=@var{name}] ] [ --[no-]graph[=@var{name}] ] + [ --[no-]time=@var{name}] [ --all-lines ] [ --brief ] + [ --debug[=@var{level}] ] [ --function-ordering ] + [ --file-ordering ] [ --directory-path=@var{dirs} ] + [ --display-unused-functions ] [ --file-format=@var{name} ] + [ --file-info ] [ --help ] [ --line ] [ --min-count=@var{n} ] + [ --no-static ] [ --print-path ] [ --separate-files ] + [ --static-call-graph ] [ --sum ] [ --table-length=@var{len} ] + [ --traditional ] [ --version ] [ --width=@var{n} ] + [ --ignore-non-functions ] [ --demangle[=@var{STYLE}] ] + [ --no-demangle ] [ @var{image-file} ] [ @var{profile-file} @dots{} ] +@c man end +@end smallexample + +@c man begin DESCRIPTION +@code{gprof} produces an execution profile of C, Pascal, or Fortran77 +programs. The effect of called routines is incorporated in the profile +of each caller. The profile data is taken from the call graph profile file +(@file{gmon.out} default) which is created by programs +that are compiled with the @samp{-pg} option of +@code{cc}, @code{pc}, and @code{f77}. +The @samp{-pg} option also links in versions of the library routines +that are compiled for profiling. @code{Gprof} reads the given object +file (the default is @code{a.out}) and establishes the relation between +its symbol table and the call graph profile from @file{gmon.out}. +If more than one profile file is specified, the @code{gprof} +output shows the sum of the profile information in the given profile files. + +@code{Gprof} calculates the amount of time spent in each routine. +Next, these times are propagated along the edges of the call graph. +Cycles are discovered, and calls into a cycle are made to share the time +of the cycle. + +@c man end + +@c man begin BUGS +The granularity of the sampling is shown, but remains +statistical at best. +We assume that the time for each execution of a function +can be expressed by the total time for the function divided +by the number of times the function is called. +Thus the time propagated along the call graph arcs to the function's +parents is directly proportional to the number of times that +arc is traversed. + +Parents that are not themselves profiled will have the time of +their profiled children propagated to them, but they will appear +to be spontaneously invoked in the call graph listing, and will +not have their time propagated further. +Similarly, signal catchers, even though profiled, will appear +to be spontaneous (although for more obscure reasons). +Any profiled children of signal catchers should have their times +propagated properly, unless the signal catcher was invoked during +the execution of the profiling routine, in which case all is lost. + +The profiled program must call @code{exit}(2) +or return normally for the profiling information to be saved +in the @file{gmon.out} file. +@c man end + +@c man begin FILES +@table @code +@item @file{a.out} +the namelist and text space. +@item @file{gmon.out} +dynamic call graph and profile. +@item @file{gmon.sum} +summarized dynamic call graph and profile. +@end table +@c man end + +@c man begin SEEALSO +monitor(3), profil(2), cc(1), prof(1), and the Info entry for @file{gprof}. + +``An Execution Profiler for Modular Programs'', +by S. Graham, P. Kessler, M. McKusick; +Software - Practice and Experience, +Vol. 13, pp. 671-685, 1983. + +``gprof: A Call Graph Execution Profiler'', +by S. Graham, P. Kessler, M. McKusick; +Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, +SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982. +@c man end +@end ifset + Profiling allows you to learn where your program spent its time and which functions called which other functions while it was executing. This information can show you which pieces of your program are slower than you @@ -129,6 +228,8 @@ You must run @code{gprof} to analyze the The next three chapters explain these steps in greater detail. +@c man begin DESCRIPTION + Several forms of output are available from the analysis. The @dfn{flat profile} shows how much time your program spent in each function, @@ -145,6 +246,7 @@ lot of time. @xref{Call Graph}. The @dfn{annotated source} listing is a copy of the program's source code, labeled with the number of times each line of the program was executed. @xref{Annotated Source}. +@c man end To better understand how profiling works, you may wish to read a description of its implementation. @@ -297,6 +399,7 @@ The order of these options does not matt @node Output Options,Analysis Options,,Invoking @section Output Options +@c man begin OPTIONS These options specify which of several output formats @code{gprof} should produce. @@ -634,6 +737,8 @@ may be given; only one @var{function_nam @samp{-F} option. The @samp{-F} option overrides the @samp{-E} option. @end table + +@c man end Note that only one function can be specified with each @code{-e}, @code{-E}, @code{-f} or @code{-F} option. To specify more than one diff -uprN binutils-2.11.90.0.4/include/ChangeLog binutils-2.11.90.0.5/include/ChangeLog --- binutils-2.11.90.0.4/include/ChangeLog Sat Mar 31 19:47:58 2001 +++ binutils-2.11.90.0.5/include/ChangeLog Fri Apr 13 11:19:01 2001 @@ -1,3 +1,11 @@ +2001-04-13 Jakub Jelinek + + * bfdlink.h (bfd_link_discard): Add discard_sec_merge. + +2001-04-03 Zack Weinberg + + * ansidecl.h: All logic from gcc/gansidecl.h moved here. + 2001-03-31 Kaveh R. Ghazi * libiberty.h (alloca): Handle setting C_ALLOCA. diff -uprN binutils-2.11.90.0.4/include/ansidecl.h binutils-2.11.90.0.5/include/ansidecl.h --- binutils-2.11.90.0.4/include/ansidecl.h Thu Mar 15 14:53:00 2001 +++ binutils-2.11.90.0.5/include/ansidecl.h Fri Apr 6 15:32:19 2001 @@ -161,6 +161,15 @@ Foundation, Inc., 59 Temple Place - Suit #endif /* ANSI C. */ +/* This is for GCC, which has historically used typed null pointer + constants. It needs to be here so it is seen by headers included + by gcc's config.h. + + FIXME: GCC probably doesn't need to use typed nulls anymore. + Clean it up, then remove this. Ware variable-argument functions. */ +#ifdef IN_GCC +# define NULL_PTR ((PTR) 0) +#endif /* Using MACRO(x,y) in cpp #if conditionals does not work with some older preprocessors. Thus we can't define something like this: @@ -229,5 +238,24 @@ So instead we use the macro below and te #if GCC_VERSION < 2008 #define __extension__ #endif + +/* Bootstrap support: Autoconf will possibly define the `inline' or + `const' keywords as macros, however this is only valid for the + stage1 compiler. If we detect a modern version of gcc, + unconditionally reset the values. This makes sure the right thing + happens in stage2 and later. We need to do this very early; + i.e. before any header files that might use these keywords. + Otherwise conflicts might occur. */ + +#if (GCC_VERSION >= 2007) +# ifdef __STDC__ +# undef const +# endif +# undef inline +# define inline __inline__ /* __inline__ prevents -pedantic warnings */ +# ifndef HAVE_LONG_DOUBLE +# define HAVE_LONG_DOUBLE 1 +# endif +#endif /* GCC >= 2.7 */ #endif /* ansidecl.h */ diff -uprN binutils-2.11.90.0.4/include/bfdlink.h binutils-2.11.90.0.5/include/bfdlink.h --- binutils-2.11.90.0.4/include/bfdlink.h Sat Mar 17 12:48:07 2001 +++ binutils-2.11.90.0.5/include/bfdlink.h Fri Apr 13 11:47:32 2001 @@ -35,6 +35,8 @@ enum bfd_link_strip if strip_all is used. */ enum bfd_link_discard { + discard_sec_merge, /* Discard local temporary symbols in SEC_MERGE + sections. */ discard_none, /* Don't discard any locals. */ discard_l, /* Discard local temporary symbols. */ discard_all /* Discard all locals. */ diff -uprN binutils-2.11.90.0.4/include/opcode/ChangeLog binutils-2.11.90.0.5/include/opcode/ChangeLog --- binutils-2.11.90.0.4/include/opcode/ChangeLog Tue Mar 27 08:47:46 2001 +++ binutils-2.11.90.0.5/include/opcode/ChangeLog Fri Apr 6 15:32:26 2001 @@ -1,3 +1,8 @@ +2001-04-05 Hans-Peter Nilsson + + * cris.h (enum cris_insn_version_usage): Correct comment for + cris_ver_v3p. + 2001-03-24 Alan Modra * i386.h (i386_optab): Correct entry for "movntdq". Add "punpcklqdq". diff -uprN binutils-2.11.90.0.4/include/opcode/cris.h binutils-2.11.90.0.5/include/opcode/cris.h --- binutils-2.11.90.0.4/include/opcode/cris.h Fri Mar 23 13:53:29 2001 +++ binutils-2.11.90.0.5/include/opcode/cris.h Fri Apr 6 15:32:27 2001 @@ -1,5 +1,5 @@ /* cris.h -- Header file for CRIS opcode and register tables. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Axis Communications AB, Lund, Sweden. Originally written for GAS 1.38.1 by Mikael Asker. Updated, BFDized and GNUified by Hans-Peter Nilsson. @@ -50,7 +50,7 @@ enum cris_insn_version_usage /* Only for v0..3 (Etrax 1..4). */ cris_ver_v0_3, - /* Only for v3 or higher (ETRAX 1..4 and beyond). */ + /* Only for v3 or higher (ETRAX 4 and beyond). */ cris_ver_v3p, /* Only for v8 (Etrax 100). */ diff -uprN binutils-2.11.90.0.4/ld/ChangeLog binutils-2.11.90.0.5/ld/ChangeLog --- binutils-2.11.90.0.4/ld/ChangeLog Sun Apr 1 18:54:05 2001 +++ binutils-2.11.90.0.5/ld/ChangeLog Fri Apr 13 11:21:02 2001 @@ -1,3 +1,54 @@ +2001-04-13 J.T. Conklin + + * ld.texinfo: Document --fatal-warnings. + * ld.1: Regenerate. + + * ldmisc.c (vfinfo): Set flag to inhibit making executable if + warnings have been turned into errors. + * lexsup.c (OPTION_WARN_FATAL): Define. + (ld_options): Entry for --fatal-warnings. + (parse_args): Handle OPTION_WARN_FATAL. + * ld.h (ld_config_type): Add fatal_warnings field. + +2001-04-13 Jakub Jelinek + + * ldmain.c (main): Default to discard_sec_merge. + * lexsup.c (OPTION_DISCARD_NONE): Define. + (ld_options): Add --discard-none. + (parse_args): Handle OPTION_DISCARD_NONE. + * ldlang.c (wild_doit): SEC_MERGE should be set in the output + section only if SEC_MERGE and SEC_STRINGS flags and entsize of + all its input sections match. + +2001-04-05 Steven J. Hill + + * Makefile.am (ALL_EMULATIONS): Add eelf32ltsmip.o. + (ALL_64_EMULATIONS): Add eelf64btsmip.o and eelf64ltsmip.o. + (eelf32ltsmip.c): New target. + (eelf64btsmip.c): Likewise. + (eelf64ltsmip.c): Likewise. + * Makefile.in: Regenerated. + + * configure.tgt (mips*el-*-linux-gnu): Uses traditional MIPS + target. + (mips*-*-linux-gnu*): Likewise. + + * emulparams/elf32ltsmip.sh: New. Traditional little endian + MIPS taget. + * emulparams/elf64btsmip.sh: New. Traditional 64bit big endian + target. + * emulparams/elf64ltsmip.sh: New. Traditional 64bit little + endian target. + +2001-04-05 Hans-Peter Nilsson + + * emulparams/criself.sh (EXECUTABLE_SYMBOLS): Cannot provide + correct value of __Stext here. + (TEXT_START_SYMBOLS): Define; always define __Stext, to start of + .startup section. + + * emulparams/crislinux.sh: Remove FIXME. + 2001-04-02 Alan Modra * emulparams/hppalinux.sh (MAXPAGESIZE): Set to 64k. diff -uprN binutils-2.11.90.0.4/ld/Makefile.am binutils-2.11.90.0.5/ld/Makefile.am --- binutils-2.11.90.0.4/ld/Makefile.am Tue Mar 27 08:55:17 2001 +++ binutils-2.11.90.0.5/ld/Makefile.am Sat Apr 7 23:03:10 2001 @@ -145,6 +145,7 @@ ALL_EMULATIONS = \ eelf32bmip.o \ eelf32bmipn32.o \ eelf32btsmip.o \ + eelf32ltsmip.o \ eelf32ebmip.o \ eelf32elmip.o \ eelf32fr30.o \ @@ -256,6 +257,8 @@ ALL_64_EMULATIONS = \ eelf64_sparc.o \ eelf64alpha.o \ eelf64bmip.o \ + eelf64btsmip.o \ + eelf64ltsmip.o \ eelf64hppa.o ALL_EMUL_EXTRA_OFILES = \ @@ -452,6 +455,9 @@ eelf32bsmip.c: $(srcdir)/emulparams/elf3 eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)" +eelf32ltsmip.c: $(srcdir)/emulparams/elf32ltsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ltsmip "$(tdir_elf32ltsmip)" eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)" @@ -509,6 +515,12 @@ eelf64_sparc.c: $(srcdir)/emulparams/elf eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64bmip "$(tdir_elf64bmip)" +eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)" +eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)" eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)" diff -uprN binutils-2.11.90.0.4/ld/Makefile.in binutils-2.11.90.0.5/ld/Makefile.in --- binutils-2.11.90.0.4/ld/Makefile.in Tue Mar 27 08:55:17 2001 +++ binutils-2.11.90.0.5/ld/Makefile.in Sat Apr 7 23:03:10 2001 @@ -183,10 +183,10 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) BFDLIB = ../bfd/libbfd.la LIBIBERTY = ../libiberty/libiberty.a -ALL_EMULATIONS = ea29k.o eaixppc.o eaixrs6.o ealpha.o earcelf.o earm_epoc_pe.o earmaoutb.o earmaoutl.o earmcoff.o earmelf.o earmelf_linux.o earmelf_oabi.o earmnbsd.o earmpe.o eavr1200.o eavr23xx.o eavr4433.o eavr44x4.o eavr85xx.o eavrmega103.o eavrmega161.o eavrmega603.o ecoff_sparc.o ecrisaout.o ecriself.o ecrislinux.o ed10velf.o ed30v_e.o ed30v_o.o ed30velf.o edelta68.o eebmon29k.o eelf32_i960.o eelf32_i860.o eelf32_sparc.o eelf32b4300.o eelf32bmip.o eelf32bmipn32.o eelf32btsmip.o eelf32ebmip.o eelf32elmip.o eelf32fr30.o eelf32i370.o eelf32l4300.o eelf32lmip.o eelf32lppc.o eelf32lppcsim.o eelf32mcore.o eelf32ppc.o eelf32ppclinux.o eelf32ppcsim.o eelf_i386.o eelf_i386_be.o eelf_i386_chaos.o eelf_s390.o egld960.o egld960coff.o eh8300.o eh8300h.o eh8300s.o eh8500.o eh8500b.o eh8500c.o eh8500m.o eh8500s.o ehp300bsd.o ehp3hpux.o ehppaelf.o ehppalinux.o ei386aout.o ei386beos.o ei386bsd.o ei386coff.o ei386go32.o ei386linux.o ei386lynx.o ei386mach.o ei386moss.o ei386msdos.o ei386nbsd.o ei386nw.o ei386pe.o ei386pe_posix.o elnk960.o em68hc11elf.o em68hc11elfb.o em68hc12elf.o em68hc12elfb.o em68k4knbsd.o em68kaout.o em68kaux.o em68kcoff.o em68kelf.o em68klinux.o em68klynx.o em68knbsd.o em68kpsos.o em88kbcs.o emcorepe.o emipsbig.o emipsbsd.o emipsidt.o emipsidtl.o emipslit.o emipslnews.o emipspe.o enews.o ens32knbsd.o epc532macha.o epdp11.o epjelf.o epjlelf.o eppcmacos.o eppcnw.o eppcpe.o eriscix.o esa29200.o esh.o eshelf.o eshelf_linux.o eshlelf_linux.o eshl.o eshlelf.o eshpe.o esparcaout.o esparclinux.o esparclynx.o esparcnbsd.o est2000.o esun3.o esun4.o etic30aout.o etic30coff.o etic54xcoff.o etic80coff.o evanilla.o evax.o evsta.o ew65.o ez8001.o ez8002.o +ALL_EMULATIONS = ea29k.o eaixppc.o eaixrs6.o ealpha.o earcelf.o earm_epoc_pe.o earmaoutb.o earmaoutl.o earmcoff.o earmelf.o earmelf_linux.o earmelf_oabi.o earmnbsd.o earmpe.o eavr1200.o eavr23xx.o eavr4433.o eavr44x4.o eavr85xx.o eavrmega103.o eavrmega161.o eavrmega603.o ecoff_sparc.o ecrisaout.o ecriself.o ecrislinux.o ed10velf.o ed30v_e.o ed30v_o.o ed30velf.o edelta68.o eebmon29k.o eelf32_i960.o eelf32_i860.o eelf32_sparc.o eelf32b4300.o eelf32bmip.o eelf32bmipn32.o eelf32btsmip.o eelf32ltsmip.o eelf32ebmip.o eelf32elmip.o eelf32fr30.o eelf32i370.o eelf32l4300.o eelf32lmip.o eelf32lppc.o eelf32lppcsim.o eelf32mcore.o eelf32ppc.o eelf32ppclinux.o eelf32ppcsim.o eelf_i386.o eelf_i386_be.o eelf_i386_chaos.o eelf_s390.o egld960.o egld960coff.o eh8300.o eh8300h.o eh8300s.o eh8500.o eh8500b.o eh8500c.o eh8500m.o eh8500s.o ehp300bsd.o ehp3hpux.o ehppaelf.o ehppalinux.o ei386aout.o ei386beos.o ei386bsd.o ei386coff.o ei386go32.o ei386linux.o ei386lynx.o ei386mach.o ei386moss.o ei386msdos.o ei386nbsd.o ei386nw.o ei386pe.o ei386pe_posix.o elnk960.o em68hc11elf.o em68hc11elfb.o em68hc12elf.o em68hc12elfb.o em68k4knbsd.o em68kaout.o em68kaux.o em68kcoff.o em68kelf.o em68klinux.o em68klynx.o em68knbsd.o em68kpsos.o em88kbcs.o emcorepe.o emipsbig.o emipsbsd.o emipsidt.o emipsidtl.o emipslit.o emipslnews.o emipspe.o enews.o ens32knbsd.o epc532macha.o epdp11.o epjelf.o epjlelf.o eppcmacos.o eppcnw.o eppcpe.o eriscix.o esa29200.o esh.o eshelf.o eshelf_linux.o eshlelf_linux.o eshl.o eshlelf.o eshpe.o esparcaout.o esparclinux.o esparclynx.o esparcnbsd.o est2000.o esun3.o esun4.o etic30aout.o etic30coff.o etic54xcoff.o etic80coff.o evanilla.o evax.o evsta.o ew65.o ez8001.o ez8002.o -ALL_64_EMULATIONS = eelf64_aix.o eelf64_ia64.o eelf_x86_64.o eelf64_s390.o eelf64_sparc.o eelf64alpha.o eelf64bmip.o eelf64hppa.o +ALL_64_EMULATIONS = eelf64_aix.o eelf64_ia64.o eelf_x86_64.o eelf64_s390.o eelf64_sparc.o eelf64alpha.o eelf64bmip.o eelf64btsmip.o eelf64ltsmip.o eelf64hppa.o ALL_EMUL_EXTRA_OFILES = deffilep.o pe-dll.o @@ -672,7 +672,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ @@ -977,6 +977,9 @@ eelf32bsmip.c: $(srcdir)/emulparams/elf3 eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)" +eelf32ltsmip.c: $(srcdir)/emulparams/elf32ltsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ltsmip "$(tdir_elf32ltsmip)" eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)" @@ -1034,6 +1037,12 @@ eelf64_sparc.c: $(srcdir)/emulparams/elf eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64bmip "$(tdir_elf64bmip)" +eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)" +eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)" eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)" diff -uprN binutils-2.11.90.0.4/ld/configure.tgt binutils-2.11.90.0.5/ld/configure.tgt --- binutils-2.11.90.0.4/ld/configure.tgt Tue Mar 27 08:55:18 2001 +++ binutils-2.11.90.0.5/ld/configure.tgt Sat Apr 7 23:03:10 2001 @@ -276,11 +276,11 @@ mips*el-*-rtems*) targ_emul=elf32elmip ; mips*-*-rtems*) targ_emul=elf32ebmip ;; mips*el-*-vxworks*) targ_emul=elf32elmip ;; mips*-*-vxworks*) targ_emul=elf32ebmip ;; -mips*el-*-linux-gnu*) targ_emul=elf32lsmip - targ_extra_emuls="elf32bsmip mipslit mipsbig" +mips*el-*-linux-gnu*) targ_emul=elf32ltsmip + targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip" ;; -mips*-*-linux-gnu*) targ_emul=elf32bsmip - targ_extra_emuls="elf32lsmip mipsbig mipslit" +mips*-*-linux-gnu*) targ_emul=elf32btsmip + targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip" ;; mips*-*-lnews*) targ_emul=mipslnews ;; mips*-*-sysv4*) targ_emul=elf32btsmip ;; diff -uprN binutils-2.11.90.0.4/ld/emulparams/criself.sh binutils-2.11.90.0.5/ld/emulparams/criself.sh --- binutils-2.11.90.0.4/ld/emulparams/criself.sh Sat Sep 30 08:54:43 2000 +++ binutils-2.11.90.0.5/ld/emulparams/criself.sh Fri Apr 6 15:34:25 2001 @@ -15,14 +15,16 @@ TEXT_START_ADDR=0 # Put crt0 for flash/eprom etc. in this section. INITIAL_READONLY_SECTIONS='.startup : { KEEP(*(.startup)) }' -# TEXT_START_SYMBOLS doesn't get what we want which is the start of -# all read-only sections; there's at least .init and .fini before it. -# We have to resort to trickery. -# +# Setting __Stext to . in TEXT_START_SYMBOLS doesn't get what we want +# most of the time, which is the start of all read-only sections; +# there's at least .startup and .init before it. We have to resort to +# trickery. Note that __Stext is always defined, not PROVIDE:d, since +# external tools look for it. +TEXT_START_SYMBOLS='__Stext = ADDR (.startup);' + # The __start dance is to get us through assumptions about entry # symbols, and to clear _start for normal use with sane programs. EXECUTABLE_SYMBOLS=' -PROVIDE (__Stext = .); __start = DEFINED(__start) ? __start : DEFINED(_start) ? _start : DEFINED(start) ? start : diff -uprN binutils-2.11.90.0.4/ld/emulparams/crislinux.sh binutils-2.11.90.0.5/ld/emulparams/crislinux.sh --- binutils-2.11.90.0.4/ld/emulparams/crislinux.sh Mon Dec 4 16:34:09 2000 +++ binutils-2.11.90.0.5/ld/emulparams/crislinux.sh Fri Apr 6 15:34:25 2001 @@ -16,8 +16,6 @@ TEXT_START_ADDR=0x80000 MAXPAGESIZE=8192 -# FIXME: GOT, PLT... - # We don't do the hoops through DEFINED to provide [_]*start, as it # doesn't work with --gc-sections, and the start-name is pretty fixed # anyway. diff -uprN binutils-2.11.90.0.4/ld/emulparams/elf32ltsmip.sh binutils-2.11.90.0.5/ld/emulparams/elf32ltsmip.sh --- binutils-2.11.90.0.4/ld/emulparams/elf32ltsmip.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/ld/emulparams/elf32ltsmip.sh Sat Apr 7 22:49:40 2001 @@ -0,0 +1,31 @@ +SCRIPT_NAME=elf +OUTPUT_FORMAT="elf32-tradlittlemips" +BIG_OUTPUT_FORMAT="elf32-tradbigmips" +LITTLE_OUTPUT_FORMAT="elf32-tradlittlemips" +TEXT_START_ADDR=0x0400000 +DATA_ADDR=0x10000000 +MAXPAGESIZE=0x40000 +NONPAGED_TEXT_START_ADDR=0x0400000 +SHLIB_TEXT_START_ADDR=0x0 +TEXT_DYNAMIC= +INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }' +OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' +OTHER_GOT_SYMBOLS=' + _gp = ALIGN(16) + 0x7ff0; +' +OTHER_GOT_SECTIONS=' + .lit8 : { *(.lit8) } + .lit4 : { *(.lit4) } +' +TEXT_START_SYMBOLS='_ftext = . ;' +DATA_START_SYMBOLS='_fdata = . ;' +OTHER_BSS_SYMBOLS='_fbss = .;' +OTHER_SECTIONS=' + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } +' +ARCH=mips +MACHINE= +TEMPLATE_NAME=elf32 +GENERATE_SHLIB_SCRIPT=yes +ENTRY=__start diff -uprN binutils-2.11.90.0.4/ld/emulparams/elf64btsmip.sh binutils-2.11.90.0.5/ld/emulparams/elf64btsmip.sh --- binutils-2.11.90.0.4/ld/emulparams/elf64btsmip.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/ld/emulparams/elf64btsmip.sh Sat Apr 7 22:49:40 2001 @@ -0,0 +1,44 @@ +# This is an ELF platform. +SCRIPT_NAME=elf + +# Handle both big- and little-ended 64-bit MIPS objects. +ARCH=mips +OUTPUT_FORMAT="elf64-tradbigmips" +BIG_OUTPUT_FORMAT="elf64-tradbigmips" +LITTLE_OUTPUT_FORMAT="elf64-tradlittlemips" + +# Note that the elf32 template is used for 64-bit emulations as well +# as 32-bit emulations. +ELFSIZE=64 +TEMPLATE_NAME=elf32 +GENERATE_SHLIB_SCRIPT=yes + +TEXT_START_ADDR=0x10000000 +DATA_ADDR=0x0400000000 +MAXPAGESIZE=0x100000 +NONPAGED_TEXT_START_ADDR=0x10000000 +SHLIB_TEXT_START_ADDR=0x0 +TEXT_DYNAMIC= +ENTRY=__start + +# GOT-related settings. +OTHER_GOT_SYMBOLS=' + _gp = ALIGN(16) + 0x7ff0; +' +OTHER_GOT_SECTIONS=' + .lit8 : { *(.lit8) } + .lit4 : { *(.lit4) } +' + +# Magic symbols. +TEXT_START_SYMBOLS='_ftext = . ;' +DATA_START_SYMBOLS='_fdata = . ;' +OTHER_BSS_SYMBOLS='_fbss = .;' + +# Magic sections. +INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }' +OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' +OTHER_SECTIONS=' + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } +' diff -uprN binutils-2.11.90.0.4/ld/emulparams/elf64ltsmip.sh binutils-2.11.90.0.5/ld/emulparams/elf64ltsmip.sh --- binutils-2.11.90.0.4/ld/emulparams/elf64ltsmip.sh Wed Dec 31 16:00:00 1969 +++ binutils-2.11.90.0.5/ld/emulparams/elf64ltsmip.sh Sat Apr 7 22:49:40 2001 @@ -0,0 +1,44 @@ +# This is an ELF platform. +SCRIPT_NAME=elf + +# Handle both big- and little-ended 64-bit MIPS objects. +ARCH=mips +OUTPUT_FORMAT="elf64-tradlittlemips" +BIG_OUTPUT_FORMAT="elf64-tradbigmips" +LITTLE_OUTPUT_FORMAT="elf64-tradlittlemips" + +# Note that the elf32 template is used for 64-bit emulations as well +# as 32-bit emulations. +ELFSIZE=64 +TEMPLATE_NAME=elf32 +GENERATE_SHLIB_SCRIPT=yes + +TEXT_START_ADDR=0x10000000 +DATA_ADDR=0x0400000000 +MAXPAGESIZE=0x100000 +NONPAGED_TEXT_START_ADDR=0x10000000 +SHLIB_TEXT_START_ADDR=0x0 +TEXT_DYNAMIC= +ENTRY=__start + +# GOT-related settings. +OTHER_GOT_SYMBOLS=' + _gp = ALIGN(16) + 0x7ff0; +' +OTHER_GOT_SECTIONS=' + .lit8 : { *(.lit8) } + .lit4 : { *(.lit4) } +' + +# Magic symbols. +TEXT_START_SYMBOLS='_ftext = . ;' +DATA_START_SYMBOLS='_fdata = . ;' +OTHER_BSS_SYMBOLS='_fbss = .;' + +# Magic sections. +INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }' +OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' +OTHER_SECTIONS=' + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } +' diff -uprN binutils-2.11.90.0.4/ld/ld.1 binutils-2.11.90.0.5/ld/ld.1 --- binutils-2.11.90.0.4/ld/ld.1 Sun Apr 1 19:31:13 2001 +++ binutils-2.11.90.0.5/ld/ld.1 Sat Apr 14 17:52:05 2001 @@ -1,5 +1,5 @@ .\" Automatically generated by Pod::Man version 1.02 -.\" Sun Apr 1 19:31:09 2001 +.\" Sat Apr 14 17:51:57 2001 .\" .\" Standard preamble: .\" ====================================================================== @@ -137,7 +137,7 @@ .\" ====================================================================== .\" .IX Title "LD 1" -.TH LD 1 "binutils-2.11.90.0.4" "2001-04-01" "GNU" +.TH LD 1 "binutils-2.11.90.0.5" "2001-04-14" "GNU" .UC .SH "NAME" ld \- Using \s-1LD\s0, the \s-1GNU\s0 linker @@ -799,6 +799,9 @@ generated by the \-membedded-pic option assembler. It causes the linker to create a table which may be used at runtime to relocate any data which was statically initialized to pointer values. See the code in testsuite/ld-empic for details. +.Ip "\f(CW\*(C`\-\-fatal\-warnings\*(C'\fR" 4 +.IX Item "--fatal-warnings" +Treat all warnings as errors. .Ip "\f(CW\*(C`\-\-force\-exe\-suffix\*(C'\fR" 4 .IX Item "--force-exe-suffix" Make sure that an output file has a .exe suffix. diff -uprN binutils-2.11.90.0.4/ld/ld.h binutils-2.11.90.0.5/ld/ld.h --- binutils-2.11.90.0.4/ld/ld.h Sat Mar 17 12:48:12 2001 +++ binutils-2.11.90.0.5/ld/ld.h Fri Apr 13 11:47:34 2001 @@ -194,6 +194,9 @@ typedef struct { changes due to the alignment of an input section. */ boolean warn_section_align; + /* If true, warning messages are fatal */ + boolean fatal_warnings; + boolean sort_common; boolean text_read_only; diff -uprN binutils-2.11.90.0.4/ld/ld.texinfo binutils-2.11.90.0.5/ld/ld.texinfo --- binutils-2.11.90.0.4/ld/ld.texinfo Tue Mar 27 08:55:18 2001 +++ binutils-2.11.90.0.5/ld/ld.texinfo Fri Apr 13 11:47:35 2001 @@ -982,6 +982,11 @@ assembler. It causes the linker to crea runtime to relocate any data which was statically initialized to pointer values. See the code in testsuite/ld-empic for details. + +@kindex --fatal-warnings +@item --fatal-warnings +Treat all warnings as errors. + @kindex --force-exe-suffix @item --force-exe-suffix Make sure that an output file has a .exe suffix. @@ -1333,7 +1338,7 @@ about the version heirarchy for the libr is only meaningful on ELF platforms which support shared libraries. @xref{VERSION}. -@kindex --warn-comon +@kindex --warn-common @cindex warnings, on combining symbols @cindex combining symbols, warnings on @item --warn-common diff -uprN binutils-2.11.90.0.4/ld/ldlang.c binutils-2.11.90.0.5/ld/ldlang.c --- binutils-2.11.90.0.4/ld/ldlang.c Sat Mar 17 12:48:12 2001 +++ binutils-2.11.90.0.5/ld/ldlang.c Fri Apr 13 11:47:35 2001 @@ -1176,7 +1176,21 @@ wild_doit (ptr, section, output, file) if (! first && (section->output_section->flags & SEC_READONLY) == 0) flags &= ~ SEC_READONLY; + /* Keep SEC_MERGE and SEC_STRINGS only if they are the same. */ + if (! first + && ((section->output_section->flags & (SEC_MERGE | SEC_STRINGS)) + != (flags & (SEC_MERGE | SEC_STRINGS)) + || ((flags & SEC_MERGE) + && section->output_section->entsize != section->entsize))) + { + section->output_section->flags &= ~ (SEC_MERGE | SEC_STRINGS); + flags &= ~ (SEC_MERGE | SEC_STRINGS); + } + section->output_section->flags |= flags; + + if (flags & SEC_MERGE) + section->output_section->entsize = section->entsize; /* If SEC_READONLY is not set in the input section, then clear it from the output section. */ diff -uprN binutils-2.11.90.0.4/ld/ldmain.c binutils-2.11.90.0.5/ld/ldmain.c --- binutils-2.11.90.0.4/ld/ldmain.c Sat Mar 17 12:48:13 2001 +++ binutils-2.11.90.0.5/ld/ldmain.c Fri Apr 13 11:47:36 2001 @@ -226,7 +226,7 @@ main (argc, argv) link_info.no_undefined = false; link_info.allow_shlib_undefined = false; link_info.strip = strip_none; - link_info.discard = discard_none; + link_info.discard = discard_sec_merge; link_info.keep_memory = true; link_info.input_bfds = NULL; link_info.create_object_symbols_section = NULL; @@ -279,7 +279,7 @@ main (argc, argv) if (link_info.relocateable && link_info.strip == strip_all) { link_info.strip = strip_debugger; - if (link_info.discard == discard_none) + if (link_info.discard == discard_sec_merge) link_info.discard = discard_all; } diff -uprN binutils-2.11.90.0.4/ld/ldmisc.c binutils-2.11.90.0.5/ld/ldmisc.c --- binutils-2.11.90.0.4/ld/ldmisc.c Sat Mar 17 12:48:13 2001 +++ binutils-2.11.90.0.5/ld/ldmisc.c Fri Apr 13 11:47:36 2001 @@ -399,6 +399,9 @@ vfinfo (fp, fmt, arg) } } + if (config.fatal_warnings) + config.make_executable = false; + if (fatal == true) xexit (1); } diff -uprN binutils-2.11.90.0.4/ld/lexsup.c binutils-2.11.90.0.5/ld/lexsup.c --- binutils-2.11.90.0.4/ld/lexsup.c Sat Mar 17 12:48:13 2001 +++ binutils-2.11.90.0.5/ld/lexsup.c Fri Apr 13 11:47:36 2001 @@ -110,7 +110,8 @@ int parsing_defsym = 0; #define OPTION_VERSION_EXPORTS_SECTION (OPTION_VERSION_SCRIPT + 1) #define OPTION_WARN_COMMON (OPTION_VERSION_EXPORTS_SECTION + 1) #define OPTION_WARN_CONSTRUCTORS (OPTION_WARN_COMMON + 1) -#define OPTION_WARN_MULTIPLE_GP (OPTION_WARN_CONSTRUCTORS + 1) +#define OPTION_WARN_FATAL (OPTION_WARN_CONSTRUCTORS + 1) +#define OPTION_WARN_MULTIPLE_GP (OPTION_WARN_FATAL + 1) #define OPTION_WARN_ONCE (OPTION_WARN_MULTIPLE_GP + 1) #define OPTION_WARN_SECTION_ALIGN (OPTION_WARN_ONCE + 1) #define OPTION_SPLIT_BY_RELOC (OPTION_WARN_SECTION_ALIGN + 1) @@ -130,7 +131,8 @@ int parsing_defsym = 0; #define OPTION_UNIQUE (OPTION_SECTION_START + 1) #define OPTION_TARGET_HELP (OPTION_UNIQUE + 1) #define OPTION_ALLOW_SHLIB_UNDEFINED (OPTION_TARGET_HELP + 1) -#define OPTION_MULTILIB_DIR (OPTION_ALLOW_SHLIB_UNDEFINED + 1) +#define OPTION_DISCARD_NONE (OPTION_ALLOW_SHLIB_UNDEFINED + 1) +#define OPTION_MULTILIB_DIR (OPTION_DISCARD_NONE + 1) /* The long options. This structure is used for both the option parsing and the help text. */ @@ -250,7 +252,9 @@ static const struct ld_option ld_options { {"discard-all", no_argument, NULL, 'x'}, 'x', NULL, N_("Discard all local symbols"), TWO_DASHES }, { {"discard-locals", no_argument, NULL, 'X'}, - 'X', NULL, N_("Discard temporary local symbols"), TWO_DASHES }, + 'X', NULL, N_("Discard temporary local symbols (default)"), TWO_DASHES }, + { {"discard-none", no_argument, NULL, OPTION_DISCARD_NONE}, + '\0', NULL, N_("Don't discard any local symbols"), TWO_DASHES }, { {"trace-symbol", required_argument, NULL, 'y'}, 'y', N_("SYMBOL"), N_("Trace mentions of SYMBOL"), TWO_DASHES }, { {NULL, required_argument, NULL, '\0'}, @@ -391,6 +395,9 @@ static const struct ld_option ld_options { {"warn-section-align", no_argument, NULL, OPTION_WARN_SECTION_ALIGN}, '\0', NULL, N_("Warn if start of section changes due to alignment"), TWO_DASHES }, + { {"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL}, + '\0', NULL, N_("Treat warnings as errors"), + TWO_DASHES }, { {"whole-archive", no_argument, NULL, OPTION_WHOLE_ARCHIVE}, '\0', NULL, N_("Include all objects from following archives"), TWO_DASHES }, { {"wrap", required_argument, NULL, OPTION_WRAP}, @@ -1034,6 +1041,9 @@ the GNU General Public License. This pr case OPTION_WARN_CONSTRUCTORS: config.warn_constructors = true; break; + case OPTION_WARN_FATAL: + config.fatal_warnings = true; + break; case OPTION_WARN_MULTIPLE_GP: config.warn_multiple_gp = true; break; @@ -1048,6 +1058,9 @@ the GNU General Public License. This pr break; case OPTION_WRAP: add_wrap (optarg); + break; + case OPTION_DISCARD_NONE: + link_info.discard = discard_none; break; case 'X': link_info.discard = discard_l; diff -uprN binutils-2.11.90.0.4/ld/testsuite/ChangeLog binutils-2.11.90.0.5/ld/testsuite/ChangeLog --- binutils-2.11.90.0.4/ld/testsuite/ChangeLog Thu Mar 15 14:57:19 2001 +++ binutils-2.11.90.0.5/ld/testsuite/ChangeLog Fri Apr 6 15:34:33 2001 @@ -1,3 +1,13 @@ +2001-04-01 David O'Brien + * ld-undefined/undefined.exp: XFAIL on FreeBSD/i386 for the usual (even + though it doesn't use DWARF2 yet (but its output is identical). + +2001-04-01 David O'Brien + + * ld-selective/selective.exp: Use -O with gcc rather than -O2. + This optimization level is buggy on some platforms, and this test + is not intended to test compiler optimizations. + 2001-03-06 DJ Delorie * ld-scripts/cross2.t: Support any type of text/data sections, not diff -uprN binutils-2.11.90.0.4/ld/testsuite/ld-selective/selective.exp binutils-2.11.90.0.5/ld/testsuite/ld-selective/selective.exp --- binutils-2.11.90.0.4/ld/testsuite/ld-selective/selective.exp Thu Mar 15 14:57:30 2001 +++ binutils-2.11.90.0.5/ld/testsuite/ld-selective/selective.exp Fri Apr 6 15:34:37 2001 @@ -46,7 +46,7 @@ set seltests { {selective6 C++ 5.cc {} {} {foo__1B foo__1A dropme1__Fv dropme2__Fv} {*-*-*}} } -set cflags "-w -O2 -ffunction-sections -fdata-sections" +set cflags "-w -O -ffunction-sections -fdata-sections" set cxxflags "-fvtable-gc -fno-exceptions -fno-rtti" set ldflags "--gc-sections -Bstatic" diff -uprN binutils-2.11.90.0.4/ld/testsuite/ld-undefined/undefined.exp binutils-2.11.90.0.5/ld/testsuite/ld-undefined/undefined.exp --- binutils-2.11.90.0.4/ld/testsuite/ld-undefined/undefined.exp Thu Mar 15 14:57:32 2001 +++ binutils-2.11.90.0.5/ld/testsuite/ld-undefined/undefined.exp Fri Apr 6 15:34:39 2001 @@ -129,6 +129,7 @@ set ml "undefined.c:9: undefined referen # hence the xfails below. #setup_xfail arm-*-elf +setup_xfail i?86-*-freebsd* #setup_xfail strongarm-*-elf #setup_xfail thumb-*-elf setup_xfail mcore-*-elf diff -uprN binutils-2.11.90.0.4/libiberty/ChangeLog binutils-2.11.90.0.5/libiberty/ChangeLog --- binutils-2.11.90.0.4/libiberty/ChangeLog Wed Mar 28 11:07:27 2001 +++ binutils-2.11.90.0.5/libiberty/ChangeLog Fri Apr 6 15:32:12 2001 @@ -1,3 +1,7 @@ +2001-04-03 Zack Weinberg + + * make-temp-file.c (try): Inline. + 2001-02-28 Richard Henderson * Makefile.in (make-temp-file.o): Depend on config.h. diff -uprN binutils-2.11.90.0.4/libiberty/make-temp-file.c binutils-2.11.90.0.5/libiberty/make-temp-file.c --- binutils-2.11.90.0.4/libiberty/make-temp-file.c Fri Mar 23 13:53:20 2001 +++ binutils-2.11.90.0.5/libiberty/make-temp-file.c Fri Apr 6 15:32:19 2001 @@ -61,9 +61,9 @@ extern int mkstemps PARAMS ((char *, int If success, DIR is returned. Otherwise NULL is returned. */ -static const char *try PARAMS ((const char *, const char *)); +static inline const char *try PARAMS ((const char *, const char *)); -static const char * +static inline const char * try (dir, base) const char *dir, *base; { diff -uprN binutils-2.11.90.0.4/libtool.m4 binutils-2.11.90.0.5/libtool.m4 --- binutils-2.11.90.0.4/libtool.m4 Fri Mar 23 13:52:01 2001 +++ binutils-2.11.90.0.5/libtool.m4 Fri Apr 13 11:17:40 2001 @@ -536,8 +536,15 @@ cygwin* | mingw* |pw32*) darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac ;; freebsd* ) @@ -601,12 +608,10 @@ linux-gnu*) netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='file_magic NetBSD/[a-z0-9]* demand paged shared library'] + [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] else - [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'] + [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'] fi - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; newsos6) diff -uprN binutils-2.11.90.0.4/ltcf-c.sh binutils-2.11.90.0.5/ltcf-c.sh --- binutils-2.11.90.0.4/ltcf-c.sh Fri Mar 23 13:52:01 2001 +++ binutils-2.11.90.0.5/ltcf-c.sh Fri Apr 13 11:17:40 2001 @@ -108,7 +108,7 @@ EOF test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ - $output_objdir/impgen $dir/$soname > $output_objdir/$soname-def' + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' @@ -166,23 +166,21 @@ EOF done; fi~ '"$ltdll_cmds"' - $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ - $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ - $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags' + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; - darwin*|rhapsody*) - allow_undefined_flag='-undefined warning' - archive_cmds='$CC $(if test "$module" = "yes"; then echo -bundle; else - echo -dynamiclib; fi) -o $lib $libobjs $deplibs $linkopts' - archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' - ## What we need is to hardcode the path to the library, not the search path - #hardcode_direct=yes - #hardcode_libdir_flag_spec='-install_name $libdir/$lib' + darwin* | rhapsody*) + allow_undefined_flag='-undefined suppress' + archive_cmds='$CC `test .$module = .yes && echo -bundle || echo -dynamiclib` $allow_undefined_flag -o $lib $libobjs $deplibs $linkopts -install_name $rpath/$soname `test -n "$verstring" -a x$verstring != x0.0 && echo $verstring`' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes hardcode_shlibpath_var=no - whole_archive_flag_spec='-all_load' + whole_archive_flag_spec='-all_load $convenience' ;; netbsd*) @@ -486,13 +484,16 @@ else if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # cc supports -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' fi - hardcode_libdir_flag_spec='-rpath $libdir' hardcode_libdir_separator=: ;; @@ -504,7 +505,7 @@ else ;; solaris*) - no_undefined_flag=' -z text' + no_undefined_flag=' -z defs' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' @@ -612,9 +613,6 @@ else ac_cv_prog_cc_static='-static' case $host_os in - beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then @@ -624,20 +622,28 @@ else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; - *djgpp*) - # DJGPP does not support shared libraries at all - ac_cv_prog_cc_pic= + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. ;; cygwin* | mingw* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ac_cv_prog_cc_pic='-DDLL_EXPORT' ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + ac_cv_prog_cc_pic= ;; sysv4*MP*) if test -d /usr/nec; then diff -uprN binutils-2.11.90.0.4/ltcf-cxx.sh binutils-2.11.90.0.5/ltcf-cxx.sh --- binutils-2.11.90.0.4/ltcf-cxx.sh Fri Mar 23 13:52:01 2001 +++ binutils-2.11.90.0.5/ltcf-cxx.sh Fri Apr 13 11:17:40 2001 @@ -233,11 +233,15 @@ case $host_os in ;; esac ;; - freebsd*) - # FreeBSD uses GNU C++ and GNU ld - # FIXME: insert proper C++ library support + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs=no ;; + freebsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs=yes + ;; hpux*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: @@ -474,6 +478,10 @@ case $host_os in cxx) allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' hardcode_libdir_flag_spec='-rpath $libdir' hardcode_libdir_separator=: @@ -532,7 +540,7 @@ case $host_os in case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ - no_undefined_flag=' -ztext' + no_undefined_flag=' -zdefs' archive_cmds='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' @@ -577,6 +585,7 @@ case $host_os in *) # GNU C++ compiler with Solaris linker if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag=' ${wl}-z ${wl}defs' if $CC --version | egrep -v '^2\.7' > /dev/null; then archive_cmds='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $linker_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ @@ -651,9 +660,6 @@ if test "$with_gcc" = yes; then ac_cv_prog_cc_static='-static' case $host_os in - beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then @@ -663,20 +669,28 @@ if test "$with_gcc" = yes; then lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; - *djgpp*) - # DJGPP does not support shared libraries at all - ac_cv_prog_cc_pic= + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. ;; cygwin* | mingw* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ac_cv_prog_cc_pic='-DDLL_EXPORT' ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + ac_cv_prog_cc_pic= ;; sysv4*MP*) if test -d /usr/nec; then diff -uprN binutils-2.11.90.0.4/ltcf-gcj.sh binutils-2.11.90.0.5/ltcf-gcj.sh --- binutils-2.11.90.0.4/ltcf-gcj.sh Fri Mar 23 13:52:01 2001 +++ binutils-2.11.90.0.5/ltcf-gcj.sh Fri Apr 13 11:17:41 2001 @@ -111,7 +111,7 @@ EOF test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ - $output_objdir/impgen $dir/$soname > $output_objdir/$soname-def' + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' @@ -169,11 +169,11 @@ EOF done; fi~ '"$ltdll_cmds"' - $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_gcj_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ - $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_gcj_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ - $CC $output_objdir/$soname-exp '$lt_cv_gcj_dll_switch' -Wl,-e,'$dll_entry' -o $lib '$ltdll_obj'$libobjs $deplibs $compiler_flags' + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) @@ -485,18 +485,22 @@ else ;; solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + no_undefined_flag=' ${wl}-z ${wl}defs' + archive_cmds='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $linker_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmds="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | egrep \"\-L\"" + + hardcode_libdir_flag_spec='${wl}-R $wl$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs=yes ;; diff -uprN binutils-2.11.90.0.4/ltconfig binutils-2.11.90.0.5/ltconfig --- binutils-2.11.90.0.4/ltconfig Fri Mar 23 14:37:24 2001 +++ binutils-2.11.90.0.5/ltconfig Fri Apr 13 11:47:11 2001 @@ -182,7 +182,7 @@ progname=`$echo "X$0" | $Xsed -e 's%^.*/ PROGRAM=ltconfig PACKAGE=libtool VERSION=1.4a -TIMESTAMP=" (1.641.2.198 2001/03/20 05:47:28)" +TIMESTAMP=" (1.641.2.226 2001/04/12 02:39:36)" 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' rm="rm -f" @@ -1068,7 +1068,14 @@ cygwin* | mingw* | pw32*) need_lib_prefix=no case $with_gcc,$host_os in yes,cygwin*) - library_names_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll; $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' @@ -1089,10 +1096,12 @@ cygwin* | mingw* | pw32*) ;; darwin* | rhapsody*) - library_names_spec='${libname}.`if test "$module" = "yes"; then echo so; else echo dylib; fi`' + dynamic_linker="$host_os dyld" + version_type=darwin need_lib_prefix=no need_version=no - postinstall_cmds='chmod +x $lib' + library_names_spec='${libname}${release}${versuffix}.`test .$module = .yes && echo so || echo dylib` ${libname}${release}${major}.$`test .$module = .yes && echo so || echo dylib` ${libname}.`test .$module = .yes && echo so || echo dylib`' + soname_spec='${libname}${release}${major}.`test .$module = .yes && echo so || echo dylib`' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; @@ -1108,6 +1117,7 @@ freebsd*) freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no + need_lc=no need_lib_prefix=no ;; freebsd-*) @@ -1377,7 +1387,7 @@ sysv4) ;; esac -# Handle CRLF in mingw too chain +# Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) @@ -1411,11 +1421,11 @@ void nm_test_func(){} int main(){nm_test_var='a';nm_test_func();return(0);} EOF - echo "$progname:1414: checking if global_symbol_pipe works" >&5 - if { (eval echo $progname:1415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + echo "$progname:1424: checking if global_symbol_pipe works" >&5 + if { (eval echo $progname:1425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then # Now try to grab the symbols. nlist=conftest.nm - if { echo "$progname:1418: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + if { echo "$progname:1428: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -1467,7 +1477,7 @@ EOF save_CFLAGS="$CFLAGS" LIBS="conftstm.$objext" CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + if { (eval echo $progname:1480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes else echo "$progname: failed program was:" >&5 @@ -1571,14 +1581,14 @@ else if test "X${lt_cv_dlopen+set}" != Xset; then lt_cv_dlopen=no lt_cv_dlopen_libs= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "$progname:1574: checking for dlopen in -ldl" >&5 +echo "$progname:1584: checking for dlopen in -ldl" >&5 if test "X${ac_cv_lib_dl_dlopen+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_lib_dl_dlopen=yes else @@ -1610,12 +1620,12 @@ if test "X$ac_cv_lib_dl_dlopen" = Xyes; else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "$progname:1613: checking for dlopen" >&5 +echo "$progname:1623: checking for dlopen" >&5 if test "X${ac_cv_func_dlopen+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -1640,7 +1650,7 @@ dlopen(); ; return 0; } EOF -if { (eval echo $progname:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_dlopen=yes else @@ -1657,14 +1667,14 @@ if test "X$ac_cv_func_dlopen" = Xyes; th else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 -echo "$progname:1660: checking for dlopen in -lsvld" >&5 +echo "$progname:1670: checking for dlopen in -lsvld" >&5 if test "X${ac_cv_lib_svld_dlopen+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_lib_svld_dlopen=yes else @@ -1696,14 +1706,14 @@ if test "X$ac_cv_lib_svld_dlopen" = Xyes else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "$progname:1699: checking for dld_link in -ldld" >&5 +echo "$progname:1709: checking for dld_link in -ldld" >&5 if test "X${ac_cv_lib_dld_dld_link+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_lib_dld_dld_link=yes else @@ -1735,12 +1745,12 @@ if test "X$ac_cv_lib_dld_dld_link" = Xye else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "$progname:1738: checking for shl_load" >&5 +echo "$progname:1748: checking for shl_load" >&5 if test "X${ac_cv_func_shl_load+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -1765,7 +1775,7 @@ shl_load(); ; return 0; } EOF -if { (eval echo $progname:1768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_shl_load=yes else @@ -1783,14 +1793,14 @@ if test "X$ac_cv_func_shl_load" = Xyes; else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "$progname:1786: checking for shl_load in -ldld" >&5 +echo "$progname:1796: checking for shl_load in -ldld" >&5 if test "X${ac_cv_lib_dld_shl_load+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo $progname:1817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_lib_dld_shl_load=yes else @@ -1851,18 +1861,18 @@ fi for ac_hdr in dlfcn.h; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "$progname:1854: checking for $ac_hdr" >&5 +echo "$progname:1864: checking for $ac_hdr" >&5 if eval "test \"`echo 'X$''{'ac_cv_header_$ac_safe'+set}'`\" = Xset"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int fnord = 0; int main () { return(0); } EOF ac_try="$ac_compile >/dev/null 2>conftest.out" -{ (eval echo $progname:1865: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo $progname:1875: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1890,7 +1900,7 @@ done LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:1893: checking whether a program can dlopen itself" >&5 +echo "$progname:1903: checking whether a program can dlopen itself" >&5 if test "X${lt_cv_dlopen_self+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1898,7 +1908,7 @@ else lt_cv_dlopen_self=cross else cat > conftest.$ac_ext < @@ -1945,7 +1955,7 @@ int main() { if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF -if { (eval echo $progname:1948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo $progname:1958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self=yes else @@ -1964,7 +1974,7 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "$lt_cv_dlopen_self" = yes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:1967: checking whether a statically linked program can dlopen itself" >&5 +echo "$progname:1977: checking whether a statically linked program can dlopen itself" >&5 if test "X${lt_cv_dlopen_self_static+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1972,7 +1982,7 @@ else lt_cv_dlopen_self_static=cross else cat > conftest.$ac_ext < @@ -2019,7 +2029,7 @@ int main() { if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF -if { (eval echo $progname:2022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo $progname:2032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self_static=yes else @@ -2615,7 +2625,7 @@ EOF # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); -# if (!dll) +# if (dll < 1) # return 1; # # dll_name = filename; diff -uprN binutils-2.11.90.0.4/ltmain.sh binutils-2.11.90.0.5/ltmain.sh --- binutils-2.11.90.0.4/ltmain.sh Fri Mar 23 14:37:24 2001 +++ binutils-2.11.90.0.5/ltmain.sh Fri Apr 13 11:47:12 2001 @@ -56,7 +56,7 @@ modename="$progname" PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.4a -TIMESTAMP=" (1.641.2.198 2001/03/20 05:47:28)" +TIMESTAMP=" (1.641.2.226 2001/04/12 02:39:36)" default_mode= help="Try \`$progname --help' for more information." @@ -136,13 +136,21 @@ do ;; esac - if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" - else - echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" + else + echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac ;; *) eval "$prev=\$arg" @@ -1205,9 +1213,10 @@ EOF # These systems don't actually have c library (as such) continue ;; - *-*-rhapsody* | *-*-darwin*) - # Darwin C library is in the System framework + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" + continue ;; esac elif test "$arg" = "-lm"; then @@ -1216,9 +1225,10 @@ EOF # These systems don't actually have math library (as such) continue ;; - *-*-rhapsody* | *-*-darwin*) - # Darwin math library is in the System framework + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody math library is in the System framework deplibs="$deplibs -framework System" + continue ;; esac fi @@ -1245,10 +1255,6 @@ EOF $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; - *-*-rhapsody* | *-*-darwin*) - # Darwin C library is in the System framework - deplibs="$deplibs -framework System" - ;; *) no_install=yes ;; @@ -1632,6 +1638,18 @@ EOF if test $linkmode = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + pre_post_deps= fi deplibs= @@ -2081,13 +2099,25 @@ EOF realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` - if test -n "$soname_spec"; then + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`echo $soroot | sed -e 's/^.*\///'` newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now @@ -2350,25 +2380,44 @@ EOF vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do - # Make sure that $var contains only unique libraries - # and add them in reverse order + # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - *) - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac + -L*) new_libs="$deplib $new_libs" ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac done tmp_libs= for deplib in $new_libs; do @@ -2510,7 +2559,7 @@ EOF # Check that each of the things are valid numbers. case $current in - 0 | [1-9] | [1-9][0-9]*) ;; + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -2519,7 +2568,7 @@ EOF esac case $revision in - 0 | [1-9] | [1-9][0-9]*) ;; + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -2528,7 +2577,7 @@ EOF esac case $age in - 0 | [1-9] | [1-9][0-9]*) ;; + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 @@ -2549,6 +2598,26 @@ EOF case $version_type in none) ;; + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + irix) major=`expr $current - $age + 1` verstring="sgi$major.$revision" @@ -2593,16 +2662,6 @@ EOF versuffix=".$current.$revision" ;; - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. @@ -2725,6 +2784,10 @@ EOF *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; *) # Add libc to deplibs on all other systems if necessary. if test $build_libtool_need_lc = "yes"; then @@ -2884,6 +2947,40 @@ EOF fi done # Gone through all deplibs. ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" -a "$name" != "0"; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + if eval echo \"$potent_lib\" 2>/dev/null \ + | sed 10q \ + | egrep "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: This library needs some functionality provided by $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ @@ -3025,6 +3122,9 @@ EOF else soname="$realname" fi + if test x$dlname = x; then + dlname=$soname + fi lib="$output_objdir/$realname" for link @@ -3434,6 +3534,9 @@ EOF ;; prog) + case $host in + *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; + esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi @@ -3877,6 +3980,11 @@ static const void *lt_preloaded_setup() case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) exeext=.exe ;; + *) exeext= ;; + esac $rm $output trap "$rm $output; exit 1" 1 2 15 @@ -3955,7 +4063,7 @@ else if test "$fast_install" = yes; then echo >> $output "\ - program=lt-'$outputname' + program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ @@ -4263,6 +4371,11 @@ fi\ dlprefiles="$newdlprefiles" fi $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP @@ -4271,7 +4384,7 @@ fi\ # It is necessary for linking the library. # The name that we can dlopen(3). -dlname='$dlname' +dlname='$tdlname' # Names of this library. library_names='$library_names' @@ -4695,6 +4808,25 @@ relink_command=\"$relink_command\"" fi fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`echo $destfile | sed -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" @@ -4786,7 +4918,7 @@ relink_command=\"$relink_command\"" echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use \`-LLIBDIR'" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" @@ -4962,6 +5094,8 @@ relink_command=\"$relink_command\"" modename="$modename: $mode" rm="$nonopt" files= + rmforce= + exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. @@ -4970,6 +5104,7 @@ relink_command=\"$relink_command\"" for arg do case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac @@ -5001,6 +5136,16 @@ relink_command=\"$relink_command\"" *) rmdirs="$rmdirs $objdir" ;; esac fi + + # Don't error if the file doesn't exist and rm -f was used. + if test -L "$file" >/dev/null 2>&1 || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi rmfiles="$file" @@ -5026,6 +5171,9 @@ relink_command=\"$relink_command\"" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi done IFS="$save_ifs" fi @@ -5038,6 +5186,9 @@ relink_command=\"$relink_command\"" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi done IFS="$save_ifs" fi @@ -5082,7 +5233,7 @@ relink_command=\"$relink_command\"" ;; esac $show "$rm $rmfiles" - $run $rm $rmfiles + $run $rm $rmfiles || exit_status=1 done # Try to remove the ${objdir}s in the directories where we deleted files @@ -5093,7 +5244,7 @@ relink_command=\"$relink_command\"" fi done - exit 0 + exit $exit_status ;; "") diff -uprN binutils-2.11.90.0.4/opcodes/ChangeLog binutils-2.11.90.0.5/opcodes/ChangeLog --- binutils-2.11.90.0.4/opcodes/ChangeLog Fri Mar 30 22:40:34 2001 +++ binutils-2.11.90.0.5/opcodes/ChangeLog Fri Apr 6 15:31:19 2001 @@ -1,3 +1,7 @@ +2001-04-06 Andreas Jaeger + + * i386-dis.c: Add ffreep instruction. + 2001-03-30 Alexandre Oliva * ppc-opc.c (insert_mbe): Shift mask initializer as long. @@ -66,7 +70,7 @@ * s390-opc.c: Add new opcodes. Smooth out formatting. * s390-opc.txt: Add new opcodes. - + 2001-03-06 Nick Clifton * arm-dis.c (print_insn_thumb): Compute destination address @@ -118,7 +122,7 @@ * ia64-opc-d.c (ia64_opcodes_d): Break the "add" pattern into two separate variants: one for IMM22 and the other for IMM14. * ia64-asmtab.c: Regenerate. - + 2001-02-21 Greg McGary * cgen-opc.c (cgen_get_insn_value): Add missing `return'. @@ -181,7 +185,7 @@ Mon Feb 12 17:41:26 CET 2001 Jan Hubick 2001-02-02 Patrick Macdonald - * fr30-desc.h: Regenerate with CGEN_MAX_SYNTAX_ELEMENTS. + * fr30-desc.h: Regenerate with CGEN_MAX_SYNTAX_ELEMENTS. * m32r-desc.h: Regenerate. Thu Feb 1 16:29:06 MET 2001 Jan Hubicka @@ -372,7 +376,7 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick Delete "sel" code operands from mfc1 and mtc1. Add MIPS64 opcode changes (dclo, dclz), and "sel" code variants for dm[ft]c[023]. - + 2000-12-03 Ed Satterthwaite ehs@sibyte.com and Chris Demetriou cgd@sibyte.com @@ -399,7 +403,7 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick "mfc2," "mfc3," "mtc1," "mtc2," and "mtc3" for MIPS32. Update MIPS32 "sdbbp" to use 'B' operand specifier. Add MIPS32 "wait" variant which uses 'J' operand specifier. - + * mips-dis.c (set_mips_isa_type): Update to use CPU_UNKNOWN and ISA_* constants. Add bfd_mach_mips32 case. Replace bfd_mach_mips4K with bfd_mach_mips32_4k case. @@ -472,7 +476,7 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick * ia64-ic.tbl: Update from Intel. * ia64-asmtab.c: Regenerate. - + 2000-10-04 Kazu Hirata * ia64-gen.c: Convert C++-style comments to C-style comments. @@ -505,28 +509,28 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick * ia64-asmtab.c: Regnerate. 2000-09-13 Anders Norlander - - * mips-opc.c (mips_builtin_opcodes): Support cache instruction on 4K cores. - Add mfc0 and mtc0 with sub-selection values. + + * mips-opc.c (mips_builtin_opcodes): Support cache instruction on 4K cores. + Add mfc0 and mtc0 with sub-selection values. Add clo and clz opcodes. - Add msub and msubu instructions for MIPS32. - Add madd/maddu aliases for mad/madu for MIPS32. - Support wait, deret, eret, movn, pref for MIPS32. + Add msub and msubu instructions for MIPS32. + Add madd/maddu aliases for mad/madu for MIPS32. + Support wait, deret, eret, movn, pref for MIPS32. Support tlbp, tlbr, tlbwi, tlbwr. - (P4): New define. - - * mips-dis.c (print_insn_arg): Print sdbbp 'm' args. - (print_insn_arg): Handle 'H' args. - (set_mips_isa_type): Recognize 4K. + (P4): New define. + + * mips-dis.c (print_insn_arg): Print sdbbp 'm' args. + (print_insn_arg): Handle 'H' args. + (set_mips_isa_type): Recognize 4K. Use CPU_* defines instead of hardcoded numbers. 2000-09-11 Catherine Moore * d30v-opc.c (d30v_operand_t): New operand type Rb2. (d30v_format_tab): Use Rb2 for modinc and moddec. - + 2000-09-07 Catherine Moore - + * d30v-opc.c (d30v_format_tab): Use format Ra for modinc and moddec. @@ -538,7 +542,7 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick * configure: Regenerate. * po/opcodes.pot: Regenerate. - + 2000-08-31 Alexandre Oliva * acinclude.m4: Include libtool and gettext macros from the @@ -637,7 +641,7 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick * cgen.sh: Likewise. 2000-08-02 Jim Wilson - + * ia64-dis.c (print_insn_ia64): Call ia64_free_opcode at end. 2000-07-29 Marek Michalkiewicz @@ -773,13 +777,13 @@ Sat Jan 13 01:48:24 MET 2001 Jan Hubick 2000-06-18 Stephane Carrez * Makefile.in, configure: regenerate - * disassemble.c (disassembler): Recognize ARCH_m68hc12, + * disassemble.c (disassembler): Recognize ARCH_m68hc12, ARCH_m68hc11. - * m68hc11-dis.c (read_memory, print_insn, print_insn_m68hc12): + * m68hc11-dis.c (read_memory, print_insn, print_insn_m68hc12): New functions. * configure.in: Recognize m68hc12 and m68hc11. * m68hc11-dis.c, m68hc11-opc.c: New files for support of m68hc1x - * Makefile.am (CFILES, ALL_MACHINES): New files for disassembly + * Makefile.am (CFILES, ALL_MACHINES): New files for disassembly and opcode generation for m68hc11 and m68hc12. 2000-06-16 Nick Duffek diff -uprN binutils-2.11.90.0.4/opcodes/i386-dis.c binutils-2.11.90.0.5/opcodes/i386-dis.c --- binutils-2.11.90.0.4/opcodes/i386-dis.c Tue Mar 27 08:55:19 2001 +++ binutils-2.11.90.0.5/opcodes/i386-dis.c Fri Apr 6 15:50:35 2001 @@ -1927,8 +1927,8 @@ static const struct dis386 dis386_twobyt { "femms" , XX, XX, XX}, { "", MX, EM, OPSUF }, /* See OP_3DNowSuffix */ /* 10 */ - { PREGRP8 }, - { PREGRP9 }, + { PREGRP8 }, + { PREGRP9 }, { "movlpX", XM, EX, SIMD_Fixup, 'h' }, /* really only 2 operands */ { "movlpX", EX, XM, SIMD_Fixup, 'h' }, { "unpcklpX", XM, EX, XX }, @@ -2296,7 +2296,7 @@ static const char *names8[] = { "%al","%cl","%dl","%bl","%ah","%ch","%dh","%bh", }; static const char *names8rex[] = { - "%al","%cl","%dl","%bl","%spl", "%bpl", "%sil", "%dil", + "%al","%cl","%dl","%bl","%spl", "%bpl", "%sil", "%dil", "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" }; static const char *names_seg[] = { @@ -3170,7 +3170,7 @@ print_insn_i386 (pc, info) used_prefixes |= (prefixes & PREFIX_REPNZ); if (prefixes & PREFIX_REPNZ) index = 3; - + } } dp = &prefix_user_table[dp->bytemode1][index]; @@ -3540,7 +3540,7 @@ static const struct dis386 float_reg[][8 }, /* df */ { - { "(bad)", XX, XX, XX }, + { "ffreep", STi, XX, XX }, { "(bad)", XX, XX, XX }, { "(bad)", XX, XX, XX }, { "(bad)", XX, XX, XX }, @@ -3760,7 +3760,7 @@ putop (template, sizeflag) USED_REX (REX_MODE64); if (rex & REX_MODE64) *obufp++ = 'q'; - else + else { if (sizeflag & DFLAG) *obufp++ = 'l';