From 06c15ad74f391b3c7197cce61f70f0ae7dd3fb8e Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Thu, 20 Jul 2000 16:21:07 +0000 Subject: [PATCH] * Makefile.am (ALL_MACHINES): Add cpu-cris.lo. (ALL_MACHINES_CFILES): Add cpu-cris.c. (BFD32_BACKENDS): Add aout-cris.lo and elf32-cris.lo. (BFD32_BACKENDS_CFILES): Add aout-cris.c and elf32-cris.c. (cpu-cris.lo, aout-cris.lo, elf32-cris.lo): New rules. * Makefile.in: Rebuild. * aclocal.m4: Rebuild. * aoutx.h (NAME(aout,machine_type)): Add case for bfd_arch_cris. * archures.c (enum bfd_architecture): Add bfd_arch_cris. (bfd_cris_arch): Declare. (bfd_archures_list): Add bfd_cris_arch. * bfd-in2.h: Rebuild. * config.bfd: (cris-*-*): New target. * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vectors. * configure: Rebuild. * elf.c (prep_headers): Add bfd_arch_cris. * libbfd.h: Rebuild. * libaout.h (enum machine_type): Add M_CRIS. * reloc.c: Add CRIS relocations. * targets.c (bfd_target bfd_elf32_cris_vec, cris_aout_vec): Declare. (bfd_target_vect): Add bfd_elf32_cris_vec and cris_aout_vec. * cpu-cris.c, aout-cris.c, elf32-cris.c: New files. * po/POTFILES.in, po/bfd.pot: Regenerate. --- bfd/ChangeLog | 27 ++ bfd/Makefile.am | 15 ++ bfd/Makefile.in | 15 ++ bfd/aclocal.m4 | 11 +- bfd/aout-cris.c | 298 ++++++++++++++++++++++ bfd/aoutx.h | 4 + bfd/archures.c | 3 + bfd/bfd-in2.h | 9 + bfd/config.bfd | 6 + bfd/configure | 395 ++++++++++++++--------------- bfd/configure.in | 2 + bfd/cpu-cris.c | 57 +++++ bfd/elf.c | 3 + bfd/elf32-cris.c | 601 +++++++++++++++++++++++++++++++++++++++++++++ bfd/libaout.h | 3 +- bfd/libbfd.h | 5 + bfd/po/POTFILES.in | 63 ++--- bfd/po/bfd.pot | 414 ++++++++++++++++--------------- bfd/reloc.c | 14 ++ bfd/targets.c | 5 + 20 files changed, 1524 insertions(+), 426 deletions(-) create mode 100644 bfd/aout-cris.c create mode 100644 bfd/cpu-cris.c create mode 100644 bfd/elf32-cris.c diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0e2a4c7e36..e7e2a4ccac 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,30 @@ +2000-07-20 Hans-Peter Nilsson + + * Makefile.am (ALL_MACHINES): Add cpu-cris.lo. + (ALL_MACHINES_CFILES): Add cpu-cris.c. + (BFD32_BACKENDS): Add aout-cris.lo and elf32-cris.lo. + (BFD32_BACKENDS_CFILES): Add aout-cris.c and elf32-cris.c. + (cpu-cris.lo, aout-cris.lo, elf32-cris.lo): New rules. + * Makefile.in: Rebuild. + * aclocal.m4: Rebuild. + * aoutx.h (NAME(aout,machine_type)): Add case for bfd_arch_cris. + * archures.c (enum bfd_architecture): Add bfd_arch_cris. + (bfd_cris_arch): Declare. + (bfd_archures_list): Add bfd_cris_arch. + * bfd-in2.h: Rebuild. + * config.bfd: (cris-*-*): New target. + * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vectors. + * configure: Rebuild. + * elf.c (prep_headers): Add bfd_arch_cris. + * libbfd.h: Rebuild. + * libaout.h (enum machine_type): Add M_CRIS. + * reloc.c: Add CRIS relocations. + * targets.c (bfd_target bfd_elf32_cris_vec, cris_aout_vec): + Declare. + (bfd_target_vect): Add bfd_elf32_cris_vec and cris_aout_vec. + * cpu-cris.c, aout-cris.c, elf32-cris.c: New files. + * po/POTFILES.in, po/bfd.pot: Regenerate. + 2000-07-19 H.J. Lu * elf32-arm.h (elf32_arm_size_dynamic_sections): Also set diff --git a/bfd/Makefile.am b/bfd/Makefile.am index aa3059398d..ed94f29a32 100644 --- a/bfd/Makefile.am +++ b/bfd/Makefile.am @@ -45,6 +45,7 @@ ALL_MACHINES = \ cpu-arc.lo \ cpu-arm.lo \ cpu-avr.lo \ + cpu-cris.lo \ cpu-d10v.lo \ cpu-d30v.lo \ cpu-fr30.lo \ @@ -86,6 +87,7 @@ ALL_MACHINES_CFILES = \ cpu-arc.c \ cpu-arm.c \ cpu-avr.c \ + cpu-cris.c \ cpu-d10v.c \ cpu-d30v.c \ cpu-fr30.c \ @@ -126,6 +128,7 @@ ALL_MACHINES_CFILES = \ BFD32_BACKENDS = \ aout-adobe.lo \ aout-arm.lo \ + aout-cris.lo \ aout-ns32k.lo \ aout-sparcle.lo \ aout-tic30.lo \ @@ -173,6 +176,7 @@ BFD32_BACKENDS = \ elfarm-oabi.lo \ elfarm-nabi.lo \ elf32-avr.lo \ + elf32-cris.lo \ elf32-d10v.lo \ elf32-d30v.lo \ elf32-fr30.lo \ @@ -261,6 +265,7 @@ BFD32_BACKENDS = \ BFD32_BACKENDS_CFILES = \ aout-adobe.c \ aout-arm.c \ + aout-cris.c \ aout-ns32k.c \ aout-sparcle.c \ aout-tic30.c \ @@ -308,6 +313,7 @@ BFD32_BACKENDS_CFILES = \ elfarm-oabi.c \ elfarm-nabi.c \ elf32-avr.c \ + elf32-cris.c \ elf32-d10v.c \ elf32-d30v.c \ elf32-fr30.c \ @@ -720,6 +726,7 @@ cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h +cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h @@ -762,6 +769,10 @@ aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \ aout-target.h +aout-cris.lo: aout-cris.c aout32.c aoutx.h $(INCDIR)/filenames.h \ + $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \ + $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \ + aout-target.h aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \ ns32k.h libaout.h $(INCDIR)/bfdlink.h aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \ @@ -913,6 +924,10 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \ elf32-target.h +elf32-cris.lo: elf32-cris.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/reloc-macros.h \ + elf32-target.h elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \ diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 9f809e35fe..2bb055104b 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -160,6 +160,7 @@ ALL_MACHINES = \ cpu-arc.lo \ cpu-arm.lo \ cpu-avr.lo \ + cpu-cris.lo \ cpu-d10v.lo \ cpu-d30v.lo \ cpu-fr30.lo \ @@ -202,6 +203,7 @@ ALL_MACHINES_CFILES = \ cpu-arc.c \ cpu-arm.c \ cpu-avr.c \ + cpu-cris.c \ cpu-d10v.c \ cpu-d30v.c \ cpu-fr30.c \ @@ -243,6 +245,7 @@ ALL_MACHINES_CFILES = \ BFD32_BACKENDS = \ aout-adobe.lo \ aout-arm.lo \ + aout-cris.lo \ aout-ns32k.lo \ aout-sparcle.lo \ aout-tic30.lo \ @@ -290,6 +293,7 @@ BFD32_BACKENDS = \ elfarm-oabi.lo \ elfarm-nabi.lo \ elf32-avr.lo \ + elf32-cris.lo \ elf32-d10v.lo \ elf32-d30v.lo \ elf32-fr30.lo \ @@ -379,6 +383,7 @@ BFD32_BACKENDS = \ BFD32_BACKENDS_CFILES = \ aout-adobe.c \ aout-arm.c \ + aout-cris.c \ aout-ns32k.c \ aout-sparcle.c \ aout-tic30.c \ @@ -426,6 +431,7 @@ BFD32_BACKENDS_CFILES = \ elfarm-oabi.c \ elfarm-nabi.c \ elf32-avr.c \ + elf32-cris.c \ elf32-d10v.c \ elf32-d30v.c \ elf32-fr30.c \ @@ -1248,6 +1254,7 @@ cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h +cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h @@ -1290,6 +1297,10 @@ aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \ aout-target.h +aout-cris.lo: aout-cris.c aout32.c aoutx.h $(INCDIR)/filenames.h \ + $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \ + $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \ + aout-target.h aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \ ns32k.h libaout.h $(INCDIR)/bfdlink.h aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \ @@ -1441,6 +1452,10 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \ elf32-target.h +elf32-cris.lo: elf32-cris.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/reloc-macros.h \ + elf32-target.h elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \ diff --git a/bfd/aclocal.m4 b/bfd/aclocal.m4 index a53eda7691..ca9d432d71 100644 --- a/bfd/aclocal.m4 +++ b/bfd/aclocal.m4 @@ -224,7 +224,7 @@ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || AC_MSG_ERROR([libtool configure failed]) # Reload cache, that may have been modified by ltconfig @@ -256,6 +256,11 @@ AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl dnl +case "$target" in +NONE) lt_target="$host" ;; +*) lt_target="$target" ;; +esac + # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" @@ -274,7 +279,7 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. -case "$host" in +case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext @@ -541,7 +546,7 @@ AC_MSG_RESULT([$NM]) AC_DEFUN(AC_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= -case "$host" in +case "$lt_target" in *-*-beos* | *-*-cygwin*) # These system don't have libm ;; diff --git a/bfd/aout-cris.c b/bfd/aout-cris.c new file mode 100644 index 0000000000..36f8553369 --- /dev/null +++ b/bfd/aout-cris.c @@ -0,0 +1,298 @@ +/* BFD backend for CRIS a.out binaries. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Axis Communications AB. + Written by Hans-Peter Nilsson. + +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. */ + +/* See info in the file PORTING for documentation of these macros and + functions. Beware; some of the information there is outdated. */ + +#define N_HEADER_IN_TEXT(x) 0 +#define BYTES_IN_WORD 4 +#define N_TXTOFF(x) 32 +#define ENTRY_CAN_BE_ZERO +#define TEXT_START_ADDR 0 + +/* If you change this to 4, you can not link to an address N*4+2. */ +#define SEGMENT_SIZE 2 + +/* For some reason, if the a.out file has Z_MAGIC, then + adata(abfd).exec_bytes_size is not used, but rather + adata(abfd).zmagic_disk_block_size, even though the exec_header is + *not* included in the text segment. A simple workaround is to + #define ZMAGIC_DISK_BLOCK_SIZE, which is used if defined; otherwise + TARGET_PAGE_SIZE is used. */ +#define ZMAGIC_DISK_BLOCK_SIZE N_TXTOFF (0) + +/* It seems odd at first to set a page-size this low, but gives greater + freedom in where things can be linked. The drawback is that you have + to set alignment and padding in linker scripts. */ +#define TARGET_PAGE_SIZE SEGMENT_SIZE +#define TARGETNAME "a.out-cris" + +/* N_SHARED_LIB gets this reasonable default as of 1999-07-12, but we + have to work with 2.9.1. Note that N_SHARED_LIB is used in a + SUN-specific context, not applicable to CRIS. */ +#define N_SHARED_LIB(x) 0 + +/* The definition here seems not used; just provided as a convention. */ +#define DEFAULT_ARCH bfd_arch_cris + +/* ??? Spacing might be essential for the parameters in this macro. + Do Not Change. */ +#define MY(OP) CAT (cris_aout_,OP) +#define NAME(x,y) CAT3(cris_aout,_32_,y) + +#include "bfd.h" + +/* Version 1 of the header. */ +#define MY_exec_hdr_flags 1 + +#define MY_write_object_contents MY(write_object_contents) +static boolean MY(write_object_contents) PARAMS ((bfd *)); + +/* Forward this, so we can use a pointer to it in PARAMS. */ +struct reloc_ext_external; + +#define MY_swap_ext_reloc_out MY(swap_ext_reloc_out) +static void MY(swap_ext_reloc_out) PARAMS ((bfd *, arelent *, + struct reloc_ext_external *)); + +#define MY_swap_ext_reloc_in MY(swap_ext_reloc_in) +static void MY(swap_ext_reloc_in) PARAMS ((bfd *, struct + reloc_ext_external *, + arelent *, asymbol **, + bfd_size_type)); + +#define MY_set_sizes MY(set_sizes) +static boolean MY(set_sizes) PARAMS ((bfd *)); + +/* To set back reloc_size to ext, we make MY(set_sizes) be called + through this construct. Note that MY_set_arch_mach is only called + through SET_ARCH_MACH. The default bfd_default_set_arch_mach will + not call set_sizes. */ + +#define MY_set_arch_mach NAME (aout, set_arch_mach) +#define SET_ARCH_MACH(BFD, EXEC) \ + MY_set_arch_mach (BFD, DEFAULT_ARCH, N_MACHTYPE (EXEC)) + +/* These macros describe the binary layout of the reloc information we + use in a file. */ +#define RELOC_EXT_BITS_EXTERN_LITTLE 0x80 +#define RELOC_EXT_BITS_TYPE_LITTLE 3 +#define RELOC_EXT_BITS_TYPE_SH_LITTLE 0 + +#ifndef MY_get_section_contents +#define MY_get_section_contents aout_32_get_section_contents +#endif + +/* Include generic functions (some are overridden above). */ +#include "aout32.c" +#include "aout-target.h" + + +/* We need our own version to set header flags. */ + +static boolean +MY(write_object_contents) (abfd) + bfd *abfd; +{ + struct external_exec exec_bytes; + struct internal_exec *execp = exec_hdr (abfd); + + /* We set the reloc type to RELOC_EXT_SIZE, although setting it at all + seems unnecessary when inspecting as and ld behavior (not an + exhaustive inspection). The default write_object_contents + definition sets RELOC_EXT_SIZE, so we follow suite and set it too. */ + obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; + + /* Setting N_SET_MACHTYPE and using N_SET_FLAGS is not performed by + the default definition. */ + if (bfd_get_arch(abfd) == bfd_arch_cris) + N_SET_MACHTYPE(*execp, M_CRIS); + + N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags); + + WRITE_HEADERS (abfd, execp); + + return true; +} + + +/* We need our own for these reasons: + - Assert that a normal 8, 16 or 32 reloc is output. + - Fix what seems to be a weak-bug (perhaps there for valid reasons). */ + +static void +MY(swap_ext_reloc_out) (abfd, g, natptr) + bfd *abfd; + arelent *g; + struct reloc_ext_external *natptr; +{ + int r_index; + int r_extern; + unsigned int r_type; + unsigned int r_addend; + asymbol *sym = *(g->sym_ptr_ptr); + asection *output_section = sym->section->output_section; + + PUT_WORD (abfd, g->address, natptr->r_address); + + r_type = (unsigned int) g->howto->type; + + r_addend = g->addend; + if ((sym->flags & BSF_SECTION_SYM) != 0) + r_addend += (*(g->sym_ptr_ptr))->section->output_section->vma; + + /* If this relocation is relative to a symbol then set the + r_index to the symbols index, and the r_extern bit. + + Absolute symbols can come in in two ways, either as an offset + from the abs section, or as a symbol which has an abs value. + check for that here. */ + + if (bfd_is_abs_section (bfd_get_section (sym))) + { + r_extern = 0; + r_index = N_ABS; + } + else if ((sym->flags & BSF_SECTION_SYM) == 0) + { + if (bfd_is_und_section (bfd_get_section (sym)) + /* Remember to check for weak symbols; they count as global. */ + || (sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0) + r_extern = 1; + else + r_extern = 0; + r_index = (*(g->sym_ptr_ptr))->KEEPIT; + } + else + { + /* Just an ordinary section. */ + r_extern = 0; + r_index = output_section->target_index; + } + + /* The relocation type is the same as the canonical ones, but only + the first 3 are used: RELOC_8, RELOC_16, RELOC_32. + We may change this later, but assert this for the moment. */ + if (r_type > 2) + { + (*_bfd_error_handler) (_("%s: Invalid relocation type exported: %d"), + bfd_get_filename (abfd), r_type); + + bfd_set_error (bfd_error_wrong_format); + } + + /* Now the fun stuff. */ + natptr->r_index[2] = r_index >> 16; + natptr->r_index[1] = r_index >> 8; + natptr->r_index[0] = r_index; + natptr->r_type[0] = + (r_extern ? RELOC_EXT_BITS_EXTERN_LITTLE : 0) + | (r_type << RELOC_EXT_BITS_TYPE_SH_LITTLE); + + PUT_WORD (abfd, r_addend, natptr->r_addend); +} + + +/* We need our own to assert that a normal 8, 16 or 32 reloc is input. */ + +static void +MY(swap_ext_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount) + bfd *abfd; + struct reloc_ext_external *bytes; + arelent *cache_ptr; + asymbol **symbols; + bfd_size_type symcount; +{ + unsigned int r_index; + int r_extern; + unsigned int r_type; + struct aoutdata *su = &(abfd->tdata.aout_data->a); + + cache_ptr->address = (GET_SWORD (abfd, bytes->r_address)); + + /* Now the fun stuff. */ + r_index = (bytes->r_index[2] << 16) + | (bytes->r_index[1] << 8) + | bytes->r_index[0]; + r_extern = (0 != (bytes->r_type[0] & RELOC_EXT_BITS_EXTERN_LITTLE)); + r_type = ((bytes->r_type[0]) >> RELOC_EXT_BITS_TYPE_SH_LITTLE) + & RELOC_EXT_BITS_TYPE_LITTLE; + + if (r_type > 2) + { + (*_bfd_error_handler) (_("%s: Invalid relocation type imported: %d"), + bfd_get_filename (abfd), r_type); + + bfd_set_error(bfd_error_wrong_format); + } + + cache_ptr->howto = howto_table_ext + r_type; + + if (r_extern && r_index > symcount) + { + (*_bfd_error_handler) + (_("%s: Bad relocation record imported: %d"), + bfd_get_filename (abfd), r_index); + + bfd_set_error (bfd_error_wrong_format); + + /* We continue, so we can catch further errors. */ + r_extern = 0; + r_index = N_ABS; + } + + /* Magically uses r_extern, symbols etc. Ugly, but it's what's in the + default. */ + MOVE_ADDRESS (GET_SWORD (abfd, bytes->r_addend)); +} + + +/* We use the same as the default, except that we also set + "obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;", to avoid changing + NAME (aout, set_arch_mach) in aoutx. */ + +static boolean +MY(set_sizes) (abfd) + bfd *abfd; +{ + /* Just as the default in aout-target.h (with some #ifdefs folded)... */ + + adata(abfd).page_size = TARGET_PAGE_SIZE; + adata(abfd).segment_size = SEGMENT_SIZE; + adata(abfd).zmagic_disk_block_size = ZMAGIC_DISK_BLOCK_SIZE; + adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE; + + /* ... except for that we have the extended reloc. The alternative + would be to add a check on bfd_arch_cris in NAME (aout, + set_arch_mach) in aoutx.h, but I don't want to do that since + target-specific things should not be added there. */ + + obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; + + return true; +} + +/* + * Local variables: + * eval: (c-set-style "gnu") + * indent-tabs-mode: t + * End: + */ diff --git a/bfd/aoutx.h b/bfd/aoutx.h index a7e46b7d21..2490303454 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -800,6 +800,10 @@ NAME(aout,machine_type) (arch, machine, unknown) *unknown = false; break; + case bfd_arch_cris: + if (machine == 0 || machine == 255) arch_flags = M_CRIS; + break; + default: arch_flags = M_UNKNOWN; } diff --git a/bfd/archures.c b/bfd/archures.c index 15077bc4b7..3b68c320f4 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -230,6 +230,7 @@ DESCRIPTION .#define bfd_mach_avr3 3 .#define bfd_mach_avr4 4 .#define bfd_mach_avr5 5 +. bfd_arch_cris, {* Axis CRIS *} . bfd_arch_last . }; @@ -272,6 +273,7 @@ extern const bfd_arch_info_type bfd_a29k_arch; extern const bfd_arch_info_type bfd_alpha_arch; extern const bfd_arch_info_type bfd_arc_arch; extern const bfd_arch_info_type bfd_arm_arch; +extern const bfd_arch_info_type bfd_cris_arch; extern const bfd_arch_info_type bfd_d10v_arch; extern const bfd_arch_info_type bfd_d30v_arch; extern const bfd_arch_info_type bfd_h8300_arch; @@ -317,6 +319,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_alpha_arch, &bfd_arc_arch, &bfd_arm_arch, + &bfd_cris_arch, &bfd_d10v_arch, &bfd_d30v_arch, &bfd_h8300_arch, diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 1137076f2b..0935250683 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1474,6 +1474,7 @@ enum bfd_architecture #define bfd_mach_avr3 3 #define bfd_mach_avr4 4 #define bfd_mach_avr5 5 + bfd_arch_cris, /* Axis CRIS */ bfd_arch_last }; @@ -2565,6 +2566,14 @@ This is the 8 bits low part of an absolute address. */ /* Motorola 68HC11 reloc. This is the 3 bits of a value. */ BFD_RELOC_M68HC11_3B, + +/* These relocs are only used within the CRIS assembler. They are not +(at present) written to any object files. */ + BFD_RELOC_CRIS_BDISP8, + BFD_RELOC_CRIS_UNSIGNED_5, + BFD_RELOC_CRIS_SIGNED_6, + BFD_RELOC_CRIS_UNSIGNED_6, + BFD_RELOC_CRIS_UNSIGNED_4, BFD_RELOC_UNUSED }; typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; reloc_howto_type * diff --git a/bfd/config.bfd b/bfd/config.bfd index 9b0d81cb0b..122ea0a9bc 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -207,6 +207,12 @@ case "${targ}" in targ_underscore=yes ;; + cris-*-*) + targ_defvec=cris_aout_vec + targ_selvecs="bfd_elf32_cris_vec ieee_vec" + targ_underscore=yes + ;; + d10v-*-*) targ_defvec=bfd_elf32_d10v_vec ;; diff --git a/bfd/configure b/bfd/configure index edaa45b82c..ce21973902 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1499,6 +1499,11 @@ else fi +case "$target" in +NONE) lt_target="$host" ;; +*) lt_target="$target" ;; +esac + # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" @@ -1519,11 +1524,11 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. -case "$host" in +case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1526 "configure"' > conftest.$ac_ext - if { (eval echo configure:1527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1531 "configure"' > conftest.$ac_ext + if { (eval echo configure:1532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -1544,19 +1549,19 @@ 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:1548: checking whether the C compiler needs -belf" >&5 +echo "configure:1553: 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 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1565: \"$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 @@ -1634,7 +1639,7 @@ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || { echo "configure: error: libtool configure failed" 1>&2; exit 1; } # Reload cache, that may have been modified by ltconfig @@ -1751,7 +1756,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:1755: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:1760: 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" @@ -1774,12 +1779,12 @@ fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:1778: checking for Cygwin environment" >&5 +echo "configure:1783: 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:1799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -1807,19 +1812,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:1811: checking for mingw32 environment" >&5 +echo "configure:1816: 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:1828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -1838,7 +1843,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1842: checking for executable suffix" >&5 +echo "configure:1847: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1848,7 +1853,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; @@ -1877,7 +1882,7 @@ target64=false # 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:1881: checking for $ac_word" >&5 +echo "configure:1886: 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 @@ -1907,7 +1912,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:1911: checking for $ac_word" >&5 +echo "configure:1916: 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 @@ -1958,7 +1963,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:1962: checking for $ac_word" >&5 +echo "configure:1967: 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 @@ -1990,7 +1995,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1994: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1999: 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. @@ -2001,12 +2006,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2005 "configure" +#line 2010 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2015: \"$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 @@ -2032,12 +2037,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:2036: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2041: 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:2041: checking whether we are using GNU C" >&5 +echo "configure:2046: 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 @@ -2046,7 +2051,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2050: \"$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:2055: \"$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 @@ -2065,7 +2070,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:2069: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2074: 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 @@ -2099,7 +2104,7 @@ fi ALL_LINGUAS= echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2103: checking how to run the C preprocessor" >&5 +echo "configure:2108: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2114,13 +2119,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:2124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2129: \"$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 : @@ -2131,13 +2136,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:2141: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2146: \"$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 : @@ -2148,13 +2153,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:2158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2163: \"$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 : @@ -2179,12 +2184,12 @@ fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2183: checking for ANSI C header files" >&5 +echo "configure:2188: 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 @@ -2192,7 +2197,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2201: \"$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* @@ -2209,7 +2214,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 @@ -2227,7 +2232,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 @@ -2248,7 +2253,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2259,7 +2264,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2283,12 +2288,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2287: checking for working const" >&5 +echo "configure:2292: 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:2346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2358,21 +2363,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2362: checking for inline" >&5 +echo "configure:2367: 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:2381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2398,12 +2403,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2402: checking for off_t" >&5 +echo "configure:2407: 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 @@ -2431,12 +2436,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2435: checking for size_t" >&5 +echo "configure:2440: 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 @@ -2466,19 +2471,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:2470: checking for working alloca.h" >&5 +echo "configure:2475: 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:2482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2487: \"$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 @@ -2499,12 +2504,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:2503: checking for alloca" >&5 +echo "configure:2508: 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:2541: \"$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 @@ -2564,12 +2569,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2568: checking whether alloca needs Cray hooks" >&5 +echo "configure:2573: 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:2598: checking for $ac_func" >&5 +echo "configure:2603: 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:2631: \"$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 @@ -2649,7 +2654,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2653: checking stack direction for C alloca" >&5 +echo "configure:2658: 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 @@ -2657,7 +2662,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:2685: \"$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 @@ -2701,17 +2706,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:2705: checking for $ac_hdr" >&5 +echo "configure:2710: 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:2715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2720: \"$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* @@ -2740,12 +2745,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2744: checking for $ac_func" >&5 +echo "configure:2749: 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:2777: \"$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 @@ -2793,7 +2798,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:2797: checking for working mmap" >&5 +echo "configure:2802: 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 @@ -2801,7 +2806,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:2950: \"$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 @@ -2969,17 +2974,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:2973: checking for $ac_hdr" >&5 +echo "configure:2978: 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:2983: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2988: \"$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* @@ -3009,12 +3014,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3013: checking for $ac_func" >&5 +echo "configure:3018: 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:3046: \"$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 @@ -3066,12 +3071,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3070: checking for $ac_func" >&5 +echo "configure:3075: 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:3103: \"$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 @@ -3128,19 +3133,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3132: checking for LC_MESSAGES" >&5 +echo "configure:3137: 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:3144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3149: \"$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 @@ -3161,7 +3166,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3165: checking whether NLS is requested" >&5 +echo "configure:3170: 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" @@ -3181,7 +3186,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3185: checking whether included gettext is requested" >&5 +echo "configure:3190: 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" @@ -3200,17 +3205,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3204: checking for libintl.h" >&5 +echo "configure:3209: 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:3214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3219: \"$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* @@ -3227,19 +3232,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:3231: checking for gettext in libc" >&5 +echo "configure:3236: 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:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3248: \"$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 @@ -3255,7 +3260,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:3259: checking for bindtextdomain in -lintl" >&5 +echo "configure:3264: 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 @@ -3263,7 +3268,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:3283: \"$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 @@ -3290,19 +3295,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:3294: checking for gettext in libintl" >&5 +echo "configure:3299: 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:3311: \"$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 @@ -3330,7 +3335,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:3334: checking for $ac_word" >&5 +echo "configure:3339: 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 @@ -3364,12 +3369,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3368: checking for $ac_func" >&5 +echo "configure:3373: 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:3401: \"$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 @@ -3419,7 +3424,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:3423: checking for $ac_word" >&5 +echo "configure:3428: 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 @@ -3455,7 +3460,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:3459: checking for $ac_word" >&5 +echo "configure:3464: 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 @@ -3487,7 +3492,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -3527,7 +3532,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:3531: checking for $ac_word" >&5 +echo "configure:3536: 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 @@ -3561,7 +3566,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:3565: checking for $ac_word" >&5 +echo "configure:3570: 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 @@ -3597,7 +3602,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:3601: checking for $ac_word" >&5 +echo "configure:3606: 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 @@ -3687,7 +3692,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:3691: checking for catalogs to be installed" >&5 +echo "configure:3696: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -3715,17 +3720,17 @@ echo "configure:3691: checking for catalogs to be installed" >&5 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:3719: checking for linux/version.h" >&5 +echo "configure:3724: 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:3729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3734: \"$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* @@ -3803,7 +3808,7 @@ fi # 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:3807: checking for a BSD compatible install" >&5 +echo "configure:3812: 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 @@ -3886,7 +3891,7 @@ if test "x$cross_compiling" = "xno"; then EXEEXT_FOR_BUILD='$(EXEEXT)' else echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6 -echo "configure:3890: checking for build system executable suffix" >&5 +echo "configure:3895: checking for build system executable suffix" >&5 if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3914,17 +3919,17 @@ for ac_hdr in stddef.h string.h strings.h stdlib.h time.h unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3918: checking for $ac_hdr" >&5 +echo "configure:3923: 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:3928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3933: \"$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* @@ -3954,17 +3959,17 @@ for ac_hdr in fcntl.h sys/file.h sys/time.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3958: checking for $ac_hdr" >&5 +echo "configure:3963: 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:3968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3973: \"$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* @@ -3991,12 +3996,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3995: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:4000: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4005,7 +4010,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:4009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -4030,12 +4035,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:4034: checking for $ac_hdr that defines DIR" >&5 +echo "configure:4039: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -4043,7 +4048,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:4047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -4068,7 +4073,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:4072: checking for opendir in -ldir" >&5 +echo "configure:4077: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4076,7 +4081,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4096: \"$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 @@ -4109,7 +4114,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:4113: checking for opendir in -lx" >&5 +echo "configure:4118: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4117,7 +4122,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4137: \"$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 @@ -4153,12 +4158,12 @@ fi for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4157: checking for $ac_func" >&5 +echo "configure:4162: 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:4190: \"$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 @@ -4216,12 +4221,12 @@ EOF esac echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:4220: checking whether strstr must be declared" >&5 +echo "configure:4225: checking whether strstr must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4242,7 +4247,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:4246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -4263,12 +4268,12 @@ EOF fi echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6 -echo "configure:4267: checking whether malloc must be declared" >&5 +echo "configure:4272: checking whether malloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4289,7 +4294,7 @@ int main() { char *(*pfn) = (char *(*)) malloc ; return 0; } EOF -if { (eval echo configure:4293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_malloc=no else @@ -4310,12 +4315,12 @@ EOF fi echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6 -echo "configure:4314: checking whether realloc must be declared" >&5 +echo "configure:4319: checking whether realloc must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4336,7 +4341,7 @@ int main() { char *(*pfn) = (char *(*)) realloc ; return 0; } EOF -if { (eval echo configure:4340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_realloc=no else @@ -4357,12 +4362,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:4361: checking whether free must be declared" >&5 +echo "configure:4366: checking whether free must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4383,7 +4388,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:4387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -4404,12 +4409,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:4408: checking whether getenv must be declared" >&5 +echo "configure:4413: checking whether getenv must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -4430,7 +4435,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:4434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -4640,17 +4645,17 @@ if test "${target}" = "${host}"; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4644: checking for $ac_hdr" >&5 +echo "configure:4649: 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:4654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4659: \"$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* @@ -4678,19 +4683,19 @@ done if test "$ac_cv_header_sys_procfs_h" = yes; then echo $ac_n "checking for prstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4682: checking for prstatus_t in sys/procfs.h" >&5 +echo "configure:4687: checking for prstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { prstatus_t avar ; return 0; } EOF -if { (eval echo configure:4694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus_t=yes else @@ -4712,19 +4717,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prstatus_t" 1>&6 echo $ac_n "checking for prstatus_t.pr_who in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4716: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +echo "configure:4721: checking for prstatus_t.pr_who in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { prstatus_t avar; void* aref = (void*) &avar.pr_who ; return 0; } EOF -if { (eval echo configure:4728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes else @@ -4746,19 +4751,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" 1>&6 echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4750: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:4755: checking for pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { pstatus_t avar ; return 0; } EOF -if { (eval echo configure:4762: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -4780,19 +4785,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6 echo $ac_n "checking for prpsinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4784: checking for prpsinfo_t in sys/procfs.h" >&5 +echo "configure:4789: checking for prpsinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prpsinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { prpsinfo_t avar ; return 0; } EOF -if { (eval echo configure:4796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo_t=yes else @@ -4814,19 +4819,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_prpsinfo_t" 1>&6 echo $ac_n "checking for psinfo_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4818: checking for psinfo_t in sys/procfs.h" >&5 +echo "configure:4823: checking for psinfo_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psinfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { psinfo_t avar ; return 0; } EOF -if { (eval echo configure:4830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo_t=yes else @@ -4848,19 +4853,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_psinfo_t" 1>&6 echo $ac_n "checking for lwpstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4852: checking for lwpstatus_t in sys/procfs.h" >&5 +echo "configure:4857: checking for lwpstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { lwpstatus_t avar ; return 0; } EOF -if { (eval echo configure:4864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpstatus_t=yes else @@ -4882,19 +4887,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpstatus_t" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_context in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4886: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +echo "configure:4891: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { lwpstatus_t avar; void* aref = (void*) &avar.pr_context ; return 0; } EOF -if { (eval echo configure:4898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes else @@ -4916,19 +4921,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" 1>&6 echo $ac_n "checking for lwpstatus_t.pr_reg in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4920: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +echo "configure:4925: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { lwpstatus_t avar; void* aref = (void*) &avar.pr_reg ; return 0; } EOF -if { (eval echo configure:4932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes else @@ -4950,19 +4955,19 @@ EOF echo "$ac_t""$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" 1>&6 echo $ac_n "checking for win32_pstatus_t in sys/procfs.h""... $ac_c" 1>&6 -echo "configure:4954: checking for win32_pstatus_t in sys/procfs.h" >&5 +echo "configure:4959: checking for win32_pstatus_t in sys/procfs.h" >&5 if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_win32_pstatus_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { win32_pstatus_t avar ; return 0; } EOF -if { (eval echo configure:4966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes else @@ -5126,6 +5131,7 @@ do bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo" target64=true ;; + bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;; bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;; bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;; @@ -5165,6 +5171,7 @@ do 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" ;; demo_64_vec) tb="$tb demo64.lo aout64.lo" target64=true ;; ecoff_big_vec) tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;; @@ -5345,17 +5352,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:5349: checking for $ac_hdr" >&5 +echo "configure:5356: 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:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5366: \"$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* @@ -5384,12 +5391,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5388: checking for $ac_func" >&5 +echo "configure:5395: 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:5423: \"$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 @@ -5437,7 +5444,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:5441: checking for working mmap" >&5 +echo "configure:5448: 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 @@ -5445,7 +5452,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:5596: \"$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 @@ -5610,12 +5617,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5614: checking for $ac_func" >&5 +echo "configure:5621: 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:5649: \"$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 --git a/bfd/configure.in b/bfd/configure.in index c012250e6d..db6afac717 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -488,6 +488,7 @@ do bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo" target64=true ;; + bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;; bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;; bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;; @@ -527,6 +528,7 @@ do 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" ;; demo_64_vec) tb="$tb demo64.lo aout64.lo" target64=true ;; ecoff_big_vec) tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;; diff --git a/bfd/cpu-cris.c b/bfd/cpu-cris.c new file mode 100644 index 0000000000..423da6ec57 --- /dev/null +++ b/bfd/cpu-cris.c @@ -0,0 +1,57 @@ +/* BFD support for the Axis CRIS architecture. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Axis Communications AB. + Written by Hans-Peter Nilsson. + +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. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" + +const bfd_arch_info_type +bfd_cris_arch = +{ + 32, /* There's 32 bits_per_word. */ + 32, /* There's 32 bits_per_address. */ + 8, /* There's 8 bits_per_byte. */ + bfd_arch_cris, /* One of enum bfd_architecture, defined + in archures.c and provided in + generated header files. */ + 0xff, /* Only 1 machine, but #255 for + historical reasons. */ + "cris", /* The arch_name. */ + "cris", /* The printable name is the same. */ + 1, /* Section alignment power; each section + is aligned to (only) 2^1 bytes. */ + true, /* This is the default "machine", since + there's only one. */ + bfd_default_compatible, /* A default function for testing + "machine" compatibility of two + bfd_arch_info_type. */ + bfd_default_scan, /* Check if an bfd_arch_info_type is a + match. */ + NULL /* Pointer to next bfd_arch_info_type in + the same family. */ +}; + +/* + * Local variables: + * eval: (c-set-style "gnu") + * indent-tabs-mode: t + * End: + */ diff --git a/bfd/elf.c b/bfd/elf.c index d394f348cb..0da1c95d91 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -3361,6 +3361,9 @@ prep_headers (abfd) case bfd_arch_pj: i_ehdrp->e_machine = EM_PJ; break; + case bfd_arch_cris: + i_ehdrp->e_machine = EM_CRIS; + break; /* also note that EM_M32, AT&T WE32100 is unknown to bfd */ default: i_ehdrp->e_machine = EM_NONE; diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c new file mode 100644 index 0000000000..54bc991e95 --- /dev/null +++ b/bfd/elf32-cris.c @@ -0,0 +1,601 @@ +/* CRIS-specific support for 32-bit ELF. + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Axis Communications AB. + Written by Hans-Peter Nilsson, based on elf32-fr30.c + +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. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/cris.h" + +/* Forward declarations. */ +static reloc_howto_type * cris_reloc_type_lookup + PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); + +static void cris_info_to_howto_rela + PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *)); + +static boolean cris_elf_relocate_section + PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); + +static bfd_reloc_status_type cris_final_link_relocate + PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *, bfd_vma)); + +static boolean cris_elf_gc_sweep_hook + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); + +static asection * cris_elf_gc_mark_hook + PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *)); + +static reloc_howto_type cris_elf_howto_table [] = +{ + /* This reloc does nothing. */ + HOWTO (R_CRIS_NONE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_NONE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* An 8 bit absolute relocation. */ + HOWTO (R_CRIS_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_8", /* name */ + false, /* partial_inplace */ + 0x0000, /* src_mask */ + 0x00ff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 16 bit absolute relocation. */ + HOWTO (R_CRIS_16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_16", /* name */ + false, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 32 bit absolute relocation. */ + HOWTO (R_CRIS_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_32", /* name */ + false, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* An 8 bit absolute relocation. */ + HOWTO (R_CRIS_8_PCREL, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_8_PCREL", /* name */ + false, /* partial_inplace */ + 0x0000, /* src_mask */ + 0x00ff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 16 bit absolute relocation. */ + HOWTO (R_CRIS_16_PCREL, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_16", /* name */ + false, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 32 bit absolute relocation. */ + HOWTO (R_CRIS_32_PCREL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_CRIS_32", /* name */ + false, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* GNU extension to record C++ vtable hierarchy */ + HOWTO (R_CRIS_GNU_VTINHERIT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_CRIS_GNU_VTINHERIT", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* GNU extension to record C++ vtable member usage */ + HOWTO (R_CRIS_GNU_VTENTRY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_CRIS_GNU_VTENTRY", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false) /* pcrel_offset */ +}; + +/* Map BFD reloc types to CRIS ELF reloc types. */ + +struct cris_reloc_map +{ + bfd_reloc_code_real_type bfd_reloc_val; + unsigned int cris_reloc_val; +}; + +static const struct cris_reloc_map cris_reloc_map [] = +{ + { BFD_RELOC_NONE, R_CRIS_NONE }, + { BFD_RELOC_8, R_CRIS_8 }, + { BFD_RELOC_16, R_CRIS_16 }, + { BFD_RELOC_32, R_CRIS_32 }, + { BFD_RELOC_8_PCREL, R_CRIS_8_PCREL }, + { BFD_RELOC_16_PCREL, R_CRIS_16_PCREL }, + { BFD_RELOC_32_PCREL, R_CRIS_32_PCREL }, + { BFD_RELOC_VTABLE_INHERIT, R_CRIS_GNU_VTINHERIT }, + { BFD_RELOC_VTABLE_ENTRY, R_CRIS_GNU_VTENTRY } +}; + +static reloc_howto_type * +cris_reloc_type_lookup (abfd, code) + bfd * abfd ATTRIBUTE_UNUSED; + bfd_reloc_code_real_type code; +{ + unsigned int i; + + for (i = sizeof (cris_reloc_map) / sizeof (cris_reloc_map[0]); + --i;) + if (cris_reloc_map [i].bfd_reloc_val == code) + return & cris_elf_howto_table [cris_reloc_map[i].cris_reloc_val]; + + return NULL; +} + +/* Set the howto pointer for an CRIS ELF reloc. */ + +static void +cris_info_to_howto_rela (abfd, cache_ptr, dst) + bfd * abfd ATTRIBUTE_UNUSED; + arelent * cache_ptr; + Elf32_Internal_Rela * dst; +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + BFD_ASSERT (r_type < (unsigned int) R_CRIS_max); + cache_ptr->howto = & cris_elf_howto_table [r_type]; +} + +/* Perform a single relocation. By default we use the standard BFD + routines, but we might have to do a few relocs ourselves in the future. */ + +static bfd_reloc_status_type +cris_final_link_relocate (howto, input_bfd, input_section, contents, rel, + relocation) + reloc_howto_type * howto; + bfd * input_bfd; + asection * input_section; + bfd_byte * contents; + Elf_Internal_Rela * rel; + bfd_vma relocation; +{ + bfd_reloc_status_type r + = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + return r; +} + +/* Relocate an CRIS ELF section. See elf32-fr30.c, from where this was + copied, for further comments. */ + +static boolean +cris_elf_relocate_section (output_bfd, info, input_bfd, input_section, + contents, relocs, local_syms, local_sections) + bfd * output_bfd ATTRIBUTE_UNUSED; + struct bfd_link_info * info; + bfd * input_bfd; + asection * input_section; + bfd_byte * contents; + Elf_Internal_Rela * relocs; + Elf_Internal_Sym * local_syms; + asection ** local_sections; +{ + Elf_Internal_Shdr * symtab_hdr; + struct elf_link_hash_entry ** sym_hashes; + Elf_Internal_Rela * rel; + Elf_Internal_Rela * relend; + + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (input_bfd); + relend = relocs + input_section->reloc_count; + + /* It seems this can happen with erroneous or unsupported input (mixing + a.out and elf in an archive, for example.) */ + if (sym_hashes == NULL) + return false; + + for (rel = relocs; rel < relend; rel ++) + { + reloc_howto_type * howto; + unsigned long r_symndx; + Elf_Internal_Sym * sym; + asection * sec; + struct elf_link_hash_entry * h; + bfd_vma relocation; + bfd_reloc_status_type r; + const char * name = NULL; + int r_type; + + r_type = ELF32_R_TYPE (rel->r_info); + + if ( r_type == R_CRIS_GNU_VTINHERIT + || r_type == R_CRIS_GNU_VTENTRY) + continue; + + r_symndx = ELF32_R_SYM (rel->r_info); + + if (info->relocateable) + { + /* This is a relocateable link. We don't have to change + anything, unless the reloc is against a section symbol, + in which case we have to adjust according to where the + section symbol winds up in the output section. */ + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + + if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + sec = local_sections [r_symndx]; + rel->r_addend += sec->output_offset + sym->st_value; + } + } + + continue; + } + + /* This is a final link. */ + howto = cris_elf_howto_table + ELF32_R_TYPE (rel->r_info); + h = NULL; + sym = NULL; + sec = NULL; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + sec = local_sections [r_symndx]; + relocation = (sec->output_section->vma + + sec->output_offset + + sym->st_value); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; +#if 0 + fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n", + sec->name, name, sym->st_name, + sec->output_section->vma, sec->output_offset, + sym->st_value, rel->r_addend); +#endif + } + else + { + h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + name = h->root.root.string; + + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + relocation = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); +#if 0 + fprintf (stderr, + "defined: sec: %s, name: %s, value: %x + %x + %x gives: %x\n", + sec->name, name, h->root.u.def.value, + sec->output_section->vma, sec->output_offset, relocation); +#endif + } + else if (h->root.type == bfd_link_hash_undefweak) + { +#if 0 + fprintf (stderr, "undefined: sec: %s, name: %s\n", + sec->name, name); +#endif + relocation = 0; + } + else if (info->shared + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) + relocation = 0; + else + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, + input_section, rel->r_offset, true))) + return false; +#if 0 + fprintf (stderr, "unknown: name: %s\n", name); +#endif + relocation = 0; + } + } + + r = cris_final_link_relocate (howto, input_bfd, input_section, + contents, rel, relocation); + + if (r != bfd_reloc_ok) + { + const char * msg = (const char *) NULL; + + switch (r) + { + case bfd_reloc_overflow: + r = info->callbacks->reloc_overflow + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset); + break; + + case bfd_reloc_undefined: + r = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, rel->r_offset, + true); + break; + + case bfd_reloc_outofrange: + msg = _("internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("internal error: dangerous relocation"); + break; + + default: + msg = _("internal error: unknown error"); + break; + } + + if (msg) + r = info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + + if (! r) + return false; + } + } + + return true; +} + +/* Return the section that should be marked against GC for a given + relocation. */ + +static asection * +cris_elf_gc_mark_hook (abfd, info, rel, h, sym) + bfd * abfd; + struct bfd_link_info * info ATTRIBUTE_UNUSED; + Elf_Internal_Rela * rel; + struct elf_link_hash_entry * h; + Elf_Internal_Sym * sym; +{ + if (h != NULL) + { + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_CRIS_GNU_VTINHERIT: + case R_CRIS_GNU_VTENTRY: + break; + + default: + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + default: + break; + } + } + } + else + { + if (!(elf_bad_symtab (abfd) + && ELF_ST_BIND (sym->st_info) != STB_LOCAL) + && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) + && sym->st_shndx != SHN_COMMON)) + { + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } + } + + return NULL; +} + +/* Update the got entry reference counts for the section being removed. */ + +static boolean +cris_elf_gc_sweep_hook (abfd, info, sec, relocs) + bfd * abfd ATTRIBUTE_UNUSED; + struct bfd_link_info * info ATTRIBUTE_UNUSED; + asection * sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED; +{ + return true; +} + +/* Look through the relocs for a section during the first phase. + Since we don't do .gots or .plts, we just need to consider the + virtual table relocs for gc. */ + +static boolean +cris_elf_check_relocs (abfd, info, sec, relocs) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; + const Elf_Internal_Rela *relocs; +{ + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; + const Elf_Internal_Rela *rel; + const Elf_Internal_Rela *rel_end; + + if (info->relocateable) + return true; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym); + if (!elf_bad_symtab (abfd)) + sym_hashes_end -= symtab_hdr->sh_info; + + rel_end = relocs + sec->reloc_count; + for (rel = relocs; rel < rel_end; rel++) + { + struct elf_link_hash_entry *h; + unsigned long r_symndx; + + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx < symtab_hdr->sh_info) + h = NULL; + else + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + + switch (ELF32_R_TYPE (rel->r_info)) + { + /* This relocation describes the C++ object vtable hierarchy. + Reconstruct it for later use during GC. */ + case R_CRIS_GNU_VTINHERIT: + if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset)) + return false; + break; + + /* This relocation describes which C++ vtable entries are actually + used. Record for later use during GC. */ + case R_CRIS_GNU_VTENTRY: + if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend)) + return false; + break; + } + } + + return true; +} + +#define ELF_ARCH bfd_arch_cris +#define ELF_MACHINE_CODE EM_CRIS +#define ELF_MAXPAGESIZE 0x2000 + +#define TARGET_LITTLE_SYM bfd_elf32_cris_vec +#define TARGET_LITTLE_NAME "elf32-cris" + +/* For the time being, we have a leading underscore. Perhaps change to 0 + later, when + 1) a.out isn't as dominating, and we can forget about multiformat links + and old assembly code. + 2) there's an official solution to the symbol vs. register duality + problem; perhaps a % register prefix, optionally enforced. */ +#define elf_symbol_leading_char '_' + +#define elf_info_to_howto_rel NULL +#define elf_info_to_howto cris_info_to_howto_rela +#define elf_backend_relocate_section cris_elf_relocate_section +#define elf_backend_gc_mark_hook cris_elf_gc_mark_hook +#define elf_backend_gc_sweep_hook cris_elf_gc_sweep_hook +#define elf_backend_check_relocs cris_elf_check_relocs + +#define elf_backend_can_gc_sections 1 + +#define bfd_elf32_bfd_reloc_type_lookup cris_reloc_type_lookup + +/* Later, we my want to optimize RELA entries into REL entries for dynamic + linking and libraries (if it's a win of any significance). Until then, + take the easy route. */ +#define elf_backend_may_use_rel_p 0 +#define elf_backend_may_use_rela_p 1 + +#include "elf32-target.h" diff --git a/bfd/libaout.h b/bfd/libaout.h index 7001d3dc6d..1682428cb1 100644 --- a/bfd/libaout.h +++ b/bfd/libaout.h @@ -245,7 +245,8 @@ enum machine_type { M_SPARCLET_5 = 211, /* 0xd3, reserved */ M_SPARCLET_6 = 227, /* 0xe3, reserved */ /* M_SPARCLET_7 = 243 / * 0xf3, reserved */ - M_SPARCLITE_LE = 243 + M_SPARCLITE_LE = 243, + M_CRIS = 255 /* Axis CRIS binary. */ }; #define N_DYNAMIC(exec) ((exec).a_info & 0x80000000) diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 1ad4137971..14d2c921c9 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -968,6 +968,11 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_M68HC11_HI8", "BFD_RELOC_M68HC11_LO8", "BFD_RELOC_M68HC11_3B", + "BFD_RELOC_CRIS_BDISP8", + "BFD_RELOC_CRIS_UNSIGNED_5", + "BFD_RELOC_CRIS_SIGNED_6", + "BFD_RELOC_CRIS_UNSIGNED_6", + "BFD_RELOC_CRIS_UNSIGNED_4", "@@overflow: BFD_RELOC_UNUSED@@", }; #endif diff --git a/bfd/po/POTFILES.in b/bfd/po/POTFILES.in index 77dbd9bf2b..7582c9e6e9 100644 --- a/bfd/po/POTFILES.in +++ b/bfd/po/POTFILES.in @@ -1,14 +1,15 @@ aix386-core.c -aout0.c -aout32.c -aout64.c aout-adobe.c aout-arm.c -aoutf1.h +aout-cris.c aout-ns32k.c aout-sparcle.c aout-target.h aout-tic30.c +aout0.c +aout32.c +aout64.c +aoutf1.h aoutx.h archive.c archures.c @@ -21,21 +22,17 @@ cf-i386lynx.c cf-m68klynx.c cf-sparclynx.c cisco-core.c -coff64-rs6000.c coff-a29k.c coff-alpha.c coff-apollo.c coff-arm.c coff-aux.c -coffcode.h -coffgen.c coff-go32.c coff-h8300.c coff-h8500.c coff-i386.c coff-i860.c coff-i960.c -cofflink.c coff-m68k.c coff-m88k.c coff-mips.c @@ -45,7 +42,6 @@ coff-sh.c coff-sparc.c coff-stgo32.c coff-svm68k.c -coffswap.h coff-tic30.c coff-tic54x.c coff-tic80.c @@ -53,12 +49,18 @@ coff-u68k.c coff-w65.c coff-we32k.c coff-z8k.c +coff64-rs6000.c +coffcode.h +coffgen.c +cofflink.c +coffswap.h corefile.c cpu-a29k.c cpu-alpha.c cpu-arc.c cpu-arm.c cpu-avr.c +cpu-cris.c cpu-d10v.c cpu-d30v.c cpu-fr30.c @@ -101,10 +103,15 @@ ecofflink.c ecoffswap.h efi-app-ia32.c efi-app-ia64.c +elf-bfd.h +elf-hppa.h +elf-m10200.c +elf-m10300.c +elf.c elf32-arc.c elf32-arm.h elf32-avr.c -elf32.c +elf32-cris.c elf32-d10v.c elf32-d30v.c elf32-fr30.c @@ -127,25 +134,21 @@ elf32-ppc.c elf32-sh.c elf32-sparc.c elf32-v850.c +elf32.c elf64-alpha.c -elf64.c elf64-gen.c elf64-hppa.c elf64-hppa.h elf64-ia64.c elf64-mips.c elf64-sparc.c +elf64.c elfarm-nabi.c elfarm-oabi.c -elf-bfd.h -elf.c elfcode.h elfcore.h -elf-hppa.h elflink.c elflink.h -elf-m10200.c -elf-m10300.c epoc-pe-arm.c epoc-pei-arm.c format.c @@ -190,16 +193,16 @@ m88kmach3.c mipsbsd.c netbsd.h newsos3.c +nlm-target.h +nlm.c nlm32-alpha.c -nlm32.c nlm32-i386.c nlm32-ppc.c nlm32-sparc.c +nlm32.c nlm64.c -nlm.c nlmcode.h nlmswap.h -nlm-target.h ns32k.h ns32knetbsd.c oasys.c @@ -208,21 +211,21 @@ osf-core.c pc532-mach.c pe-arm.c pe-i386.c +pe-mcore.c +pe-mips.c +pe-ppc.c +pe-sh.c pei-arm.c -peicode.h -peigen.c pei-i386.c pei-mcore.c pei-mips.c pei-ppc.c pei-sh.c -pe-mcore.c -pe-mips.c -pe-ppc.c -pe-sh.c +peicode.h +peigen.c ppcboot.c -reloc16.c reloc.c +reloc16.c riscix.c sco5-core.c section.c @@ -232,8 +235,8 @@ sparclinux.c sparclynx.c sparcnetbsd.c srec.c -stabs.c stab-syms.c +stabs.c sunos.c syms.c targets.c @@ -241,11 +244,11 @@ tekhex.c trad-core.c vaxnetbsd.c versados.c -vms.c vms-gsd.c -vms.h vms-hdr.c vms-misc.c vms-tir.c -xcofflink.c +vms.c +vms.h xcoff-target.h +xcofflink.c diff --git a/bfd/po/bfd.pot b/bfd/po/bfd.pot index 178fcee6eb..4ecdd1693f 100644 --- a/bfd/po/bfd.pot +++ b/bfd/po/bfd.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2000-07-18 11:57-0700\n" +"POT-Creation-Date: 2000-07-20 16:45+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,22 +19,37 @@ msgstr "" msgid "%s: Unknown section type in a.out.adobe file: %x\n" msgstr "" -#: aoutx.h:1254 aoutx.h:1668 +#: aout-cris.c:196 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "" + +#: aout-cris.c:241 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "" + +#: aout-cris.c:252 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "" + +#: aoutx.h:1258 aoutx.h:1672 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "" -#: aoutx.h:1638 +#: aoutx.h:1642 #, c-format msgid "" "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "" -#: aoutx.h:1640 +#: aoutx.h:1644 msgid "*unknown*" msgstr "" -#: aoutx.h:3687 +#: aoutx.h:3691 #, c-format msgid "%s: relocateable link from %s to %s not supported" msgstr "" @@ -176,7 +191,7 @@ msgstr "" msgid "GP relative relocation used when GP not defined" msgstr "" -#: coff-alpha.c:1486 elf64-alpha.c:3993 +#: coff-alpha.c:1486 elf64-alpha.c:3994 msgid "using multiple gp values" msgstr "" @@ -311,6 +326,43 @@ msgstr "" msgid "Warning: Clearing the interworking flag of %s due to outside request" msgstr "" +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "" + +#: coff-mips.c:875 elf32-mips.c:1416 +msgid "GP relative relocation when _gp not defined" +msgstr "" + +#: coff-mips.c:2433 +msgid "unsupported reloc type" +msgstr "" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2470 +msgid "reloc against unsupported section" +msgstr "" + +#: coff-mips.c:2478 +msgid "reloc not properly aligned" +msgstr "" + +#: coff-tic54x.c:264 coff-tic80.c:445 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "" + +#: coff-tic54x.c:377 coffcode.h:4739 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "" + +#: coff-w65.c:383 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "" + #: coffcode.h:2101 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" @@ -336,11 +388,6 @@ msgstr "" msgid "warning: %s: local symbol `%s' has no section" msgstr "" -#: coff-tic54x.c:377 coffcode.h:4739 -#, c-format -msgid "%s: warning: illegal symbol index %ld in relocs" -msgstr "" - #: coffcode.h:4777 #, c-format msgid "%s: illegal relocation type %d at address 0x%lx" @@ -356,11 +403,7 @@ msgstr "" msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" msgstr "" -#: coff-i960.c:136 coff-i960.c:485 -msgid "uncertain calling convention for non-COFF symbol" -msgstr "" - -#: cofflink.c:526 elflink.h:1567 +#: cofflink.c:526 elflink.h:1575 #, c-format msgid "Warning: type of symbol `%s' changed from %d to %d in %s" msgstr "" @@ -380,34 +423,6 @@ msgstr "" msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "" -#: coff-mips.c:875 elf32-mips.c:1416 -msgid "GP relative relocation when _gp not defined" -msgstr "" - -#: coff-mips.c:2433 -msgid "unsupported reloc type" -msgstr "" - -#. No other sections should appear in -membedded-pic -#. code. -#: coff-mips.c:2470 -msgid "reloc against unsupported section" -msgstr "" - -#: coff-mips.c:2478 -msgid "reloc not properly aligned" -msgstr "" - -#: coff-tic54x.c:264 coff-tic80.c:445 -#, c-format -msgid "Unrecognized reloc type 0x%x" -msgstr "" - -#: coff-w65.c:383 -#, c-format -msgid "ignoring reloc %s\n" -msgstr "" - #: dwarf2.c:432 msgid "Dwarf Error: Can't find .debug_abbrev section." msgstr "" @@ -524,30 +539,22 @@ msgid "" " Type: %s" msgstr "" -#: elf32-arm.h:1188 -#, c-format -msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." -msgstr "" - -#: elf32-arm.h:1377 -#, c-format -msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." -msgstr "" - -#: elf-hppa.h:1336 elf-hppa.h:1369 elf32-arm.h:1825 elf32-i386.c:1418 -#: elf32-ppc.c:3082 +#: elf-hppa.h:1336 elf-hppa.h:1369 elf32-arm.h:1825 elf32-i386.c:1419 +#: elf32-ppc.c:3083 #, c-format msgid "" "%s: warning: unresolvable relocation against symbol `%s' from %s section" msgstr "" #: elf-m10200.c:455 elf-m10300.c:670 elf32-arm.h:1894 elf32-avr.c:844 -#: elf32-d10v.c:479 elf32-fr30.c:651 elf32-m32r.c:1265 elf32-v850.c:1677 +#: elf32-cris.c:423 elf32-d10v.c:479 elf32-fr30.c:651 elf32-m32r.c:1265 +#: elf32-v850.c:1677 msgid "internal error: out of range error" msgstr "" #: elf-m10200.c:459 elf-m10300.c:674 elf32-arm.h:1898 elf32-avr.c:848 -#: elf32-d10v.c:483 elf32-fr30.c:655 elf32-m32r.c:1269 elf32-v850.c:1681 +#: elf32-cris.c:427 elf32-d10v.c:483 elf32-fr30.c:655 elf32-m32r.c:1269 +#: elf32-v850.c:1681 msgid "internal error: unsupported relocation error" msgstr "" @@ -557,10 +564,114 @@ msgid "internal error: dangerous error" msgstr "" #: elf-m10200.c:467 elf-m10300.c:682 elf32-arm.h:1906 elf32-avr.c:856 -#: elf32-d10v.c:491 elf32-fr30.c:663 elf32-m32r.c:1277 elf32-v850.c:1701 +#: elf32-cris.c:435 elf32-d10v.c:491 elf32-fr30.c:663 elf32-m32r.c:1277 +#: elf32-v850.c:1701 msgid "internal error: unknown error" msgstr "" +#: elf.c:327 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "" + +#: elf.c:550 +msgid "" +"\n" +"Program Header:\n" +msgstr "" + +#: elf.c:598 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" + +#: elf.c:727 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" + +#: elf.c:750 +msgid "" +"\n" +"Version References:\n" +msgstr "" + +#: elf.c:755 +#, c-format +msgid " required from %s:\n" +msgstr "" + +#: elf.c:1329 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "" + +#: elf.c:2090 +#, c-format +msgid "" +"creating section symbol, name = %s, value = 0x%.8lx, index = %d, section = " +"0x%.8lx\n" +msgstr "" + +#: elf.c:2693 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "" + +#: elf.c:2792 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "" + +#: elf.c:2918 +#, c-format +msgid "Error: First section in segment (%s) starts at 0x%x" +msgstr "" + +#: elf.c:2921 +#, c-format +msgid " whereas segment starts at 0x%x" +msgstr "" + +#: elf.c:3194 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "" + +#: elf.c:3588 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "" + +#: elf.c:3597 +#, c-format +msgid "" +"elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = " +"0x%.8lx%s\n" +msgstr "" + +#: elf.c:3739 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "" + +#: elf.c:5054 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "" + +#: elf32-arm.h:1188 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "" + +#: elf32-arm.h:1377 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "" + #: elf32-arm.h:1934 #, c-format msgid "" @@ -698,7 +809,7 @@ msgstr "" msgid "" msgstr "" -#: elf32-avr.c:852 elf32-fr30.c:659 elf32-v850.c:1685 +#: elf32-avr.c:852 elf32-cris.c:431 elf32-fr30.c:659 elf32-v850.c:1685 msgid "internal error: dangerous relocation" msgstr "" @@ -726,7 +837,7 @@ msgstr "" msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "" -#: elf32-m32r.c:1000 elf32-ppc.c:2950 elf64-ia64.c:3185 +#: elf32-m32r.c:1000 elf32-ppc.c:2951 elf64-ia64.c:3186 #, c-format msgid "%s: unknown relocation type %d" msgstr "" @@ -802,7 +913,7 @@ msgstr "" msgid "%s: ABI mismatch: linking %s module with previous %s modules" msgstr "" -#: elf32-mips.c:2603 elf32-ppc.c:1464 elf64-sparc.c:2957 +#: elf32-mips.c:2603 elf32-ppc.c:1464 elf64-sparc.c:2958 #, c-format msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "" @@ -871,7 +982,7 @@ msgstr "" msgid "static procedure (no name)" msgstr "" -#: elf32-mips.c:4930 elf64-alpha.c:4367 +#: elf32-mips.c:4930 elf64-alpha.c:4368 #, c-format msgid "%s: illegal section name `%s'" msgstr "" @@ -907,23 +1018,23 @@ msgstr "" msgid "%s: Unknown special linker type %d" msgstr "" -#: elf32-ppc.c:2238 elf32-ppc.c:2272 elf32-ppc.c:2307 +#: elf32-ppc.c:2239 elf32-ppc.c:2273 elf32-ppc.c:2308 #, c-format msgid "%s: relocation %s cannot be used when making a shared object" msgstr "" -#: elf32-ppc.c:3116 +#: elf32-ppc.c:3117 #, c-format msgid "%s: unknown relocation type %d for symbol %s" msgstr "" -#: elf32-ppc.c:3484 elf32-ppc.c:3506 elf32-ppc.c:3555 +#: elf32-ppc.c:3485 elf32-ppc.c:3507 elf32-ppc.c:3556 #, c-format msgid "" "%s: The target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "" -#: elf32-ppc.c:3621 +#: elf32-ppc.c:3622 #, c-format msgid "%s: Relocation %s is not yet supported for symbol %s." msgstr "" @@ -968,27 +1079,27 @@ msgstr "" msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" msgstr "" -#: elf32-sparc.c:1509 elf64-sparc.c:2262 +#: elf32-sparc.c:1510 elf64-sparc.c:2263 #, c-format msgid "%s: probably compiled without -fPIC?" msgstr "" -#: elf32-sparc.c:1970 +#: elf32-sparc.c:1971 #, c-format msgid "%s: compiled for a v8plus system and target is v8" msgstr "" -#: elf32-sparc.c:1979 +#: elf32-sparc.c:1980 #, c-format msgid "%s: compiled for a v8plusa system and target is v8plus" msgstr "" -#: elf32-sparc.c:1987 +#: elf32-sparc.c:1988 #, c-format msgid "%s: compiled for a 64 bit system and target is 32 bit" msgstr "" -#: elf32-sparc.c:2002 +#: elf32-sparc.c:2003 #, c-format msgid "%s: linking little endian files with big endian files" msgstr "" @@ -1077,51 +1188,51 @@ msgstr "" msgid "non-zero addend in @fptr reloc" msgstr "" -#: elf64-ia64.c:3060 +#: elf64-ia64.c:3061 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "" -#: elf64-ia64.c:3071 +#: elf64-ia64.c:3072 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "" -#: elf64-ia64.c:3335 +#: elf64-ia64.c:3336 #, c-format msgid "%s: linking non-pic code in a shared library" msgstr "" -#: elf64-ia64.c:3365 +#: elf64-ia64.c:3366 #, c-format msgid "%s: @gprel relocation against dynamic symbol %s" msgstr "" -#: elf64-ia64.c:3500 +#: elf64-ia64.c:3501 #, c-format msgid "%s: dynamic relocation against speculation fixup" msgstr "" -#: elf64-ia64.c:3508 +#: elf64-ia64.c:3509 #, c-format msgid "%s: speculation fixup against undefined weak symbol" msgstr "" -#: elf64-ia64.c:3665 +#: elf64-ia64.c:3666 msgid "unsupported reloc" msgstr "" -#: elf64-ia64.c:3979 +#: elf64-ia64.c:3980 #, c-format msgid "%s: linking trap-on-NULL-dereference with non-trapping files" msgstr "" -#: elf64-ia64.c:3988 +#: elf64-ia64.c:3989 #, c-format msgid "%s: linking big-endian files with little-endian files" msgstr "" -#: elf64-ia64.c:3997 +#: elf64-ia64.c:3998 #, c-format msgid "%s: linking 64-bit files with 32-bit files" msgstr "" @@ -1151,104 +1262,11 @@ msgstr "" msgid "Symbol `%s' has differing types: REGISTER in %s, %s in %s" msgstr "" -#: elf64-sparc.c:2938 +#: elf64-sparc.c:2939 #, c-format msgid "%s: linking UltraSPARC specific with HAL specific code" msgstr "" -#: elf.c:327 -#, c-format -msgid "%s: invalid string offset %u >= %lu for section `%s'" -msgstr "" - -#: elf.c:550 -msgid "" -"\n" -"Program Header:\n" -msgstr "" - -#: elf.c:598 -msgid "" -"\n" -"Dynamic Section:\n" -msgstr "" - -#: elf.c:700 -msgid "" -"\n" -"Version definitions:\n" -msgstr "" - -#: elf.c:723 -msgid "" -"\n" -"Version References:\n" -msgstr "" - -#: elf.c:728 -#, c-format -msgid " required from %s:\n" -msgstr "" - -#: elf.c:1292 -#, c-format -msgid "%s: invalid link %lu for reloc section %s (index %u)" -msgstr "" - -#: elf.c:2053 -#, c-format -msgid "" -"creating section symbol, name = %s, value = 0x%.8lx, index = %d, section = " -"0x%.8lx\n" -msgstr "" - -#: elf.c:2656 -#, c-format -msgid "%s: Not enough room for program headers (allocated %u, need %u)" -msgstr "" - -#: elf.c:2755 -#, c-format -msgid "%s: Not enough room for program headers, try linking with -N" -msgstr "" - -#: elf.c:2881 -#, c-format -msgid "Error: First section in segment (%s) starts at 0x%x" -msgstr "" - -#: elf.c:2884 -#, c-format -msgid " whereas segment starts at 0x%x" -msgstr "" - -#: elf.c:3157 -#, c-format -msgid "%s: warning: allocated section `%s' not in segment" -msgstr "" - -#: elf.c:3548 -#, c-format -msgid "%s: symbol `%s' required but not present" -msgstr "" - -#: elf.c:3557 -#, c-format -msgid "" -"elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = " -"0x%.8lx%s\n" -msgstr "" - -#: elf.c:3699 -#, c-format -msgid "%s: warning: Empty loadable segment detected\n" -msgstr "" - -#: elf.c:5014 -#, c-format -msgid "%s: unsupported relocation type %s" -msgstr "" - #: elfcode.h:1067 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" @@ -1259,37 +1277,37 @@ msgstr "" msgid "%s: Section %s is already to large to put hole of %ld bytes in" msgstr "" -#: elflink.h:1387 +#: elflink.h:1395 #, c-format msgid "%s: %s: invalid version %u (max %d)" msgstr "" -#: elflink.h:1428 +#: elflink.h:1436 #, c-format msgid "%s: %s: invalid needed version %d" msgstr "" -#: elflink.h:1545 +#: elflink.h:1553 #, c-format msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" msgstr "" -#: elflink.h:1789 +#: elflink.h:1797 #, c-format msgid "%s: warning: unexpected redefinition of `%s'" msgstr "" -#: elflink.h:3496 +#: elflink.h:3569 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "" -#: elflink.h:3768 +#: elflink.h:3841 #, c-format msgid "%s: undefined versioned symbol name %s" msgstr "" -#: elflink.h:5012 +#: elflink.h:5085 #, c-format msgid "%s: could not find output section %s for input section %s" msgstr "" @@ -1423,6 +1441,21 @@ msgstr "" msgid "Unhandled OSF/1 core file section type %d\n" msgstr "" +#: pe-mips.c:657 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "" + #. XXX code yet to be written. #: peicode.h:809 #, c-format @@ -1760,21 +1793,6 @@ msgid "" "Characteristics 0x%x\n" msgstr "" -#: pe-mips.c:657 -#, c-format -msgid "%s: `ld -r' not supported with PE MIPS objects\n" -msgstr "" - -#: pe-mips.c:820 -#, c-format -msgid "%s: jump too far away\n" -msgstr "" - -#: pe-mips.c:847 -#, c-format -msgid "%s: bad pair/reflo after refhi\n" -msgstr "" - #: ppcboot.c:422 msgid "" "\n" diff --git a/bfd/reloc.c b/bfd/reloc.c index 119aea9bdf..3578a77896 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -2898,6 +2898,20 @@ ENUMDOC Motorola 68HC11 reloc. This is the 3 bits of a value. +ENUM + BFD_RELOC_CRIS_BDISP8 +ENUMX + BFD_RELOC_CRIS_UNSIGNED_5 +ENUMX + BFD_RELOC_CRIS_SIGNED_6 +ENUMX + BFD_RELOC_CRIS_UNSIGNED_6 +ENUMX + BFD_RELOC_CRIS_UNSIGNED_4 +ENUMDOC + These relocs are only used within the CRIS assembler. They are not + (at present) written to any object files. + ENDSENUM BFD_RELOC_UNUSED CODE_FRAGMENT diff --git a/bfd/targets.c b/bfd/targets.c index 5e7d5d4b26..245b61ae8c 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -522,6 +522,7 @@ extern const bfd_target bfd_elf32_littlearm_oabi_vec; extern const bfd_target bfd_elf32_big_generic_vec; extern const bfd_target bfd_elf32_bigmips_vec; extern const bfd_target bfd_elf64_bigmips_vec; +extern const bfd_target bfd_elf32_cris_vec; extern const bfd_target bfd_elf32_d10v_vec; extern const bfd_target bfd_elf32_d30v_vec; extern const bfd_target bfd_elf32_hppa_vec; @@ -555,6 +556,7 @@ extern const bfd_target bfd_elf32_mcore_little_vec; extern const bfd_target bfd_elf64_big_generic_vec; extern const bfd_target bfd_elf64_little_generic_vec; extern const bfd_target bfd_elf64_sparc_vec; +extern const bfd_target cris_aout_vec; extern const bfd_target demo_64_vec; extern const bfd_target ecoff_big_vec; extern const bfd_target ecoff_little_vec; @@ -724,6 +726,7 @@ const bfd_target * const bfd_target_vector[] = { #ifdef BFD64 &bfd_elf64_bigmips_vec, #endif + &bfd_elf32_cris_vec, &bfd_elf32_d10v_vec, &bfd_elf32_d30v_vec, &bfd_elf32_hppa_vec, @@ -767,6 +770,8 @@ const bfd_target * const bfd_target_vector[] = { /* We don't include cisco_core_*_vec. Although it has a magic number, the magic number isn't at the beginning of the file, and thus might spuriously match other kinds of files. */ + + &cris_aout_vec, #ifdef BFD64 &demo_64_vec, /* Only compiled if host has long-long support */ #endif -- 2.34.1