From 0a225ac59d3703ce932cde97ad5ecdd85fcb9cf1 Mon Sep 17 00:00:00 2001 From: John Polstra Date: Sun, 6 Sep 1998 23:00:35 +0000 Subject: [PATCH] Resolve conflicts from import of binutils-2.9.1. Submitted by: Doug Rabson --- contrib/binutils/bfd/elf.c | 230 +++- contrib/binutils/bfd/elf32-i386.c | 46 +- contrib/binutils/binutils/nm.c | 48 +- contrib/binutils/gas/config/tc-i386.c | 321 +++-- contrib/binutils/gas/config/tc-i386.h | 15 +- contrib/binutils/gas/configure | 1621 ++++++++++++++++++------- contrib/binutils/gas/configure.in | 389 ++---- contrib/binutils/ld/Makefile.in | 1038 +++++++++------- contrib/binutils/ld/configure.tgt | 55 +- 9 files changed, 2459 insertions(+), 1304 deletions(-) diff --git a/contrib/binutils/bfd/elf.c b/contrib/binutils/bfd/elf.c index ee6048346c29..6f43e9e89f42 100644 --- a/contrib/binutils/bfd/elf.c +++ b/contrib/binutils/bfd/elf.c @@ -1,5 +1,5 @@ /* ELF executable support for BFD. - Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright 1993, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -305,6 +305,18 @@ bfd_elf_string_from_elf_section (abfd, shindex, strindex) && bfd_elf_get_str_section (abfd, shindex) == NULL) return NULL; + if (strindex >= hdr->sh_size) + { + (*_bfd_error_handler) + ("%s: invalid string offset %u >= %lu for section `%s'", + bfd_get_filename (abfd), strindex, (unsigned long) hdr->sh_size, + ((shindex == elf_elfheader(abfd)->e_shstrndx + && strindex == hdr->sh_name) + ? ".shstrtab" + : elf_string_from_elf_strtab (abfd, hdr->sh_name))); + return ""; + } + return ((char *) hdr->contents) + strindex; } @@ -389,7 +401,7 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name) && phdr->p_vaddr <= hdr->sh_addr && phdr->p_vaddr + phdr->p_memsz >= hdr->sh_addr + hdr->sh_size && ((flags & SEC_LOAD) == 0 - || (phdr->p_offset <= hdr->sh_offset + || (phdr->p_offset <= (bfd_vma) hdr->sh_offset && (phdr->p_offset + phdr->p_filesz >= hdr->sh_offset + hdr->sh_size)))) { @@ -929,6 +941,91 @@ bfd_elf_get_dt_soname (abfd) return elf_dt_name (abfd); return NULL; } + +/* Get the list of DT_NEEDED entries from a BFD. This is a hook for + the ELF linker emulation code. */ + +boolean +bfd_elf_get_bfd_needed_list (abfd, pneeded) + bfd *abfd; + struct bfd_link_needed_list **pneeded; +{ + asection *s; + bfd_byte *dynbuf = NULL; + int elfsec; + unsigned long link; + bfd_byte *extdyn, *extdynend; + size_t extdynsize; + void (*swap_dyn_in) PARAMS ((bfd *, const PTR, Elf_Internal_Dyn *)); + + *pneeded = NULL; + + if (bfd_get_flavour (abfd) != bfd_target_elf_flavour + || bfd_get_format (abfd) != bfd_object) + return true; + + s = bfd_get_section_by_name (abfd, ".dynamic"); + if (s == NULL || s->_raw_size == 0) + return true; + + dynbuf = (bfd_byte *) bfd_malloc (s->_raw_size); + if (dynbuf == NULL) + goto error_return; + + if (! bfd_get_section_contents (abfd, s, (PTR) dynbuf, (file_ptr) 0, + s->_raw_size)) + goto error_return; + + elfsec = _bfd_elf_section_from_bfd_section (abfd, s); + if (elfsec == -1) + goto error_return; + + link = elf_elfsections (abfd)[elfsec]->sh_link; + + extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn; + swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in; + + extdyn = dynbuf; + extdynend = extdyn + s->_raw_size; + for (; extdyn < extdynend; extdyn += extdynsize) + { + Elf_Internal_Dyn dyn; + + (*swap_dyn_in) (abfd, (PTR) extdyn, &dyn); + + if (dyn.d_tag == DT_NULL) + break; + + if (dyn.d_tag == DT_NEEDED) + { + const char *string; + struct bfd_link_needed_list *l; + + string = bfd_elf_string_from_elf_section (abfd, link, + dyn.d_un.d_val); + if (string == NULL) + goto error_return; + + l = (struct bfd_link_needed_list *) bfd_alloc (abfd, sizeof *l); + if (l == NULL) + goto error_return; + + l->by = abfd; + l->name = string; + l->next = *pneeded; + *pneeded = l; + } + } + + free (dynbuf); + + return true; + + error_return: + if (dynbuf != NULL) + free (dynbuf); + return false; +} /* Allocate an ELF string table--force the first byte to be zero. */ @@ -2106,12 +2203,19 @@ map_sections_to_segments (abfd) new_segment = true; } else if (BFD_ALIGN (last_hdr->lma + last_hdr->_raw_size, maxpagesize) - < hdr->lma) + < BFD_ALIGN (hdr->lma, maxpagesize)) { /* If putting this section in this segment would force us to skip a page in the segment, then we need a new segment. */ new_segment = true; } + else if ((last_hdr->flags & SEC_LOAD) == 0 + && (hdr->flags & SEC_LOAD) != 0) + { + /* We don't want to put a loadable section after a + nonloadable section in the same segment. */ + new_segment = true; + } else if ((abfd->flags & D_PAGED) == 0) { /* If the file is not demand paged, which means that we @@ -2119,13 +2223,6 @@ map_sections_to_segments (abfd) file, then there is no other reason for a new segment. */ new_segment = false; } - else if ((last_hdr->flags & SEC_LOAD) == 0 - && (hdr->flags & SEC_LOAD) != 0) - { - /* We don't want to put a loadable section after a - nonloadable section in the same segment. */ - new_segment = true; - } else if (! writable && (hdr->flags & SEC_READONLY) == 0 && (BFD_ALIGN (last_hdr->lma + last_hdr->_raw_size, maxpagesize) @@ -2264,10 +2361,12 @@ elf_sort_sections (arg1, arg2) #define TOEND(x) (((x)->flags & SEC_LOAD) == 0) if (TOEND (sec1)) - if (TOEND (sec2)) - return sec1->target_index - sec2->target_index; - else - return 1; + { + if (TOEND (sec2)) + return sec1->target_index - sec2->target_index; + else + return 1; + } if (TOEND (sec2)) return -1; @@ -2419,6 +2518,15 @@ assign_file_positions_for_segments (abfd) if (m->count > 0) { BFD_ASSERT (p->p_type == PT_LOAD); + + if (p->p_vaddr < (bfd_vma) off) + { + _bfd_error_handler ("%s: Not enough room for program headers, try linking with -N", + bfd_get_filename (abfd)); + bfd_set_error (bfd_error_bad_value); + return false; + } + p->p_vaddr -= off; if (! m->p_paddr_valid) p->p_paddr -= off; @@ -2491,29 +2599,42 @@ assign_file_positions_for_segments (abfd) { bfd_vma adjust; - /* The section VMA must equal the file position modulo - the page size. */ - if ((flags & SEC_ALLOC) != 0) + if ((flags & SEC_LOAD) != 0) + adjust = sec->lma - (p->p_paddr + p->p_memsz); + else if ((flags & SEC_ALLOC) != 0) { + /* The section VMA must equal the file position + modulo the page size. FIXME: I'm not sure if + this adjustment is really necessary. We used to + not have the SEC_LOAD case just above, and then + this was necessary, but now I'm not sure. */ if ((abfd->flags & D_PAGED) != 0) adjust = (sec->vma - voff) % bed->maxpagesize; else adjust = (sec->vma - voff) % align; - if (adjust != 0) - { - if (i == 0) - abort (); - p->p_memsz += adjust; - off += adjust; - voff += adjust; - if ((flags & SEC_LOAD) != 0) - p->p_filesz += adjust; - } + } + else + adjust = 0; + + if (adjust != 0) + { + if (i == 0) + abort (); + p->p_memsz += adjust; + off += adjust; + voff += adjust; + if ((flags & SEC_LOAD) != 0) + p->p_filesz += adjust; } sec->filepos = off; - if ((flags & SEC_LOAD) != 0) + /* We check SEC_HAS_CONTENTS here because if NOLOAD is + used in a linker script we may have a section with + SEC_LOAD clear but which is supposed to have + contents. */ + if ((flags & SEC_LOAD) != 0 + || (flags & SEC_HAS_CONTENTS) != 0) off += sec->_raw_size; if ((flags & SEC_ALLOC) != 0) voff += sec->_raw_size; @@ -2853,6 +2974,16 @@ prep_headers (abfd) case bfd_arch_d10v: i_ehdrp->e_machine = EM_CYGNUS_D10V; break; + case bfd_arch_v850: + switch (bfd_get_mach (abfd)) + { + default: + case 0: i_ehdrp->e_machine = EM_CYGNUS_V850; break; + } + break; + case bfd_arch_arc: + i_ehdrp->e_machine = EM_CYGNUS_ARC; + break; case bfd_arch_m32r: i_ehdrp->e_machine = EM_CYGNUS_M32R; break; @@ -3107,6 +3238,7 @@ copy_private_bfd_data (ibfd, obfd) Elf_Internal_Ehdr *iehdr; struct elf_segment_map *mfirst; struct elf_segment_map **pm; + struct elf_segment_map *m; Elf_Internal_Phdr *p; unsigned int i, c; @@ -3127,7 +3259,6 @@ copy_private_bfd_data (ibfd, obfd) { unsigned int csecs; asection *s; - struct elf_segment_map *m; unsigned int isec; csecs = 0; @@ -3197,6 +3328,19 @@ copy_private_bfd_data (ibfd, obfd) pm = &m->next; } + /* The Solaris linker creates program headers in which all the + p_paddr fields are zero. When we try to objcopy or strip such a + file, we get confused. Check for this case, and if we find it + reset the p_paddr_valid fields. */ + for (m = mfirst; m != NULL; m = m->next) + if (m->p_paddr != 0) + break; + if (m == NULL) + { + for (m = mfirst; m != NULL; m = m->next) + m->p_paddr_valid = 0; + } + elf_tdata (obfd)->segment_map = mfirst; return true; @@ -3228,10 +3372,12 @@ _bfd_elf_copy_private_section_data (ibfd, isec, obfd, osec) { asection *s; - /* Only set up the segments when all the sections have been set - up. */ - for (s = ibfd->sections; s != NULL; s = s->next) - if (s->output_section == NULL) + /* Only set up the segments if there are no more SEC_ALLOC + sections. FIXME: This won't do the right thing if objcopy is + used to remove the last SEC_ALLOC section, since objcopy + won't call this routine in that case. */ + for (s = isec->next; s != NULL; s = s->next) + if ((s->flags & SEC_ALLOC) != 0) break; if (s == NULL) { @@ -3972,6 +4118,11 @@ _bfd_elf_find_nearest_line (abfd, bfd_vma low_func; asymbol **p; + if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset, + filename_ptr, functionname_ptr, + line_ptr)) + return true; + if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, &found, filename_ptr, functionname_ptr, line_ptr, @@ -4179,3 +4330,16 @@ _bfd_elf_validate_reloc (abfd, areloc) bfd_set_error (bfd_error_bad_value); return false; } + +boolean +_bfd_elf_close_and_cleanup (abfd) + bfd *abfd; +{ + if (bfd_get_format (abfd) == bfd_object) + { + if (elf_shstrtab (abfd) != NULL) + _bfd_stringtab_free (elf_shstrtab (abfd)); + } + + return _bfd_generic_close_and_cleanup (abfd); +} diff --git a/contrib/binutils/bfd/elf32-i386.c b/contrib/binutils/bfd/elf32-i386.c index 77fbba3d5eeb..4500c63cb169 100644 --- a/contrib/binutils/bfd/elf32-i386.c +++ b/contrib/binutils/bfd/elf32-i386.c @@ -1,5 +1,5 @@ /* Intel 80386/80486-specific support for 32-bit ELF - Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright 1993-1997, 1998 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -969,8 +969,8 @@ elf_i386_size_dynamic_sections (output_bfd, info) s->output_section); target = bfd_get_section_by_name (output_bfd, outname + 4); if (target != NULL - && (target->flags & SEC_ALLOC) != 0 - && (target->flags & SEC_READONLY) != 0) + && (target->flags & SEC_READONLY) != 0 + && (target->flags & SEC_ALLOC) != 0) reltext = true; } @@ -1181,15 +1181,16 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, || (r_type == R_386_GOT32 && elf_hash_table (info)->dynamic_sections_created && (! info->shared - || ! info->symbolic + || (! info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)) || (info->shared - && (! info->symbolic + && ((! info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) && (r_type == R_386_32 - || r_type == R_386_PC32))) + || r_type == R_386_PC32) + && (input_section->flags & SEC_ALLOC) != 0)) { /* In these cases, we don't need the relocation value. We check specially because in some @@ -1243,15 +1244,16 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, if (! elf_hash_table (info)->dynamic_sections_created || (info->shared - && info->symbolic + && (info->symbolic || h->dynindx == -1) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))) { /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined - locally. We must initialize this entry in the - global offset table. Since the offset must - always be a multiple of 4, we use the least - significant bit to record whether we have + locally, or the symbol was forced to be local + because of a version file. We must initialize + this entry in the global offset table. Since the + offset must always be a multiple of 4, we use the + least significant bit to record whether we have initialized it already. When doing a dynamic link, we create a .rel.got @@ -1380,6 +1382,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, if (info->shared && (r_type != R_386_PC32 || (h != NULL + && h->dynindx != -1 && (! info->symbolic || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)))) @@ -1440,7 +1443,10 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, else if (r_type == R_386_PC32) { BFD_ASSERT (h != NULL && h->dynindx != -1); - relocate = false; + if ((input_section->flags & SEC_ALLOC) != 0) + relocate = false; + else + relocate = true; outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_PC32); } else @@ -1458,7 +1464,10 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, else { BFD_ASSERT (h->dynindx != -1); - relocate = false; + if ((input_section->flags & SEC_ALLOC) != 0) + relocate = false; + else + relocate = true; outrel.r_info = ELF32_R_INFO (h->dynindx, R_386_32); } } @@ -1625,8 +1634,6 @@ elf_i386_finish_dynamic_symbol (output_bfd, info, h, sym) /* This symbol has an entry in the global offset table. Set it up. */ - BFD_ASSERT (h->dynindx != -1); - sgot = bfd_get_section_by_name (dynobj, ".got"); srel = bfd_get_section_by_name (dynobj, ".rel.got"); BFD_ASSERT (sgot != NULL && srel != NULL); @@ -1636,11 +1643,12 @@ elf_i386_finish_dynamic_symbol (output_bfd, info, h, sym) + (h->got_offset &~ 1)); /* If this is a -Bsymbolic link, and the symbol is defined - locally, we just want to emit a RELATIVE reloc. The entry in - the global offset table will already have been initialized in - the relocate_section function. */ + locally, we just want to emit a RELATIVE reloc. Likewise if + the symbol was forced to be local because of a version file. + The entry in the global offset table will already have been + initialized in the relocate_section function. */ if (info->shared - && info->symbolic + && (info->symbolic || h->dynindx == -1) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)) rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE); else diff --git a/contrib/binutils/binutils/nm.c b/contrib/binutils/binutils/nm.c index 21ce368b72fc..d5f7f5c8cf5a 100644 --- a/contrib/binutils/binutils/nm.c +++ b/contrib/binutils/binutils/nm.c @@ -1,5 +1,5 @@ /* nm.c -- Describe symbol table of a rel file. - Copyright 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. + Copyright 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -247,9 +247,11 @@ static int print_radix = 16; static char other_format[] = "%02x"; static char desc_format[] = "%04x"; -/* IMPORT */ -extern char *program_name; -extern char *target; +static char *target = NULL; + +/* Used to cache the line numbers for a BFD. */ +static bfd *lineno_cache_bfd; +static bfd *lineno_cache_rel_bfd; static struct option long_options[] = { @@ -297,7 +299,7 @@ Usage: %s [-aABCDglnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n\ program_name); list_supported_targets (program_name, stream); if (status == 0) - fprintf (stream, "Report bugs to bug-gnu-utils@prep.ai.mit.edu\n"); + fprintf (stream, "Report bugs to bug-gnu-utils@gnu.org\n"); exit (status); } @@ -530,12 +532,20 @@ display_archive (file) } if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + } last_arfile = arfile; } if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + } } static boolean @@ -576,6 +586,9 @@ display_file (filename) if (bfd_close (file) == false) bfd_fatal (filename); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + return retval; } @@ -779,7 +792,7 @@ sort_symbols_by_size (abfd, dynamic, minisyms, symcount, size, symsizesp) { struct size_sym *symsizes; bfd_byte *from, *fromend; - asymbol *sym; + asymbol *sym = NULL; asymbol *store_sym, *store_next; qsort (minisyms, symcount, size, size_forward1); @@ -1124,7 +1137,6 @@ print_symbol (abfd, sym, archive_bfd) if (line_numbers) { - static bfd *cache_bfd; static asymbol **syms; static long symcount; const char *filename, *functionname; @@ -1133,7 +1145,7 @@ print_symbol (abfd, sym, archive_bfd) /* We need to get the canonical symbols in order to call bfd_find_nearest_line. This is inefficient, but, then, you don't have to use --line-numbers. */ - if (abfd != cache_bfd && syms != NULL) + if (abfd != lineno_cache_bfd && syms != NULL) { free (syms); syms = NULL; @@ -1149,24 +1161,22 @@ print_symbol (abfd, sym, archive_bfd) symcount = bfd_canonicalize_symtab (abfd, syms); if (symcount < 0) bfd_fatal (bfd_get_filename (abfd)); - cache_bfd = abfd; + lineno_cache_bfd = abfd; } if (bfd_is_und_section (bfd_get_section (sym))) { - static bfd *cache_rel_bfd; static asection **secs; static arelent ***relocs; static long *relcount; - unsigned int seccount, i; + static unsigned int seccount; + unsigned int i; const char *symname; /* For an undefined symbol, we try to find a reloc for the symbol, and print the line number of the reloc. */ - seccount = bfd_count_sections (abfd); - - if (abfd != cache_rel_bfd && relocs != NULL) + if (abfd != lineno_cache_rel_bfd && relocs != NULL) { for (i = 0; i < seccount; i++) if (relocs[i] != NULL) @@ -1183,6 +1193,8 @@ print_symbol (abfd, sym, archive_bfd) { struct get_relocs_info info; + seccount = bfd_count_sections (abfd); + secs = (asection **) xmalloc (seccount * sizeof *secs); relocs = (arelent ***) xmalloc (seccount * sizeof *relocs); relcount = (long *) xmalloc (seccount * sizeof *relcount); @@ -1192,13 +1204,13 @@ print_symbol (abfd, sym, archive_bfd) info.relcount = relcount; info.syms = syms; bfd_map_over_sections (abfd, get_relocs, (PTR) &info); - cache_rel_bfd = abfd; + lineno_cache_rel_bfd = abfd; } symname = bfd_asymbol_name (sym); for (i = 0; i < seccount; i++) { - unsigned int j; + long j; for (j = 0; j < relcount[i]; j++) { diff --git a/contrib/binutils/gas/config/tc-i386.c b/contrib/binutils/gas/config/tc-i386.c index 5189c9d3ad20..53df543e820d 100644 --- a/contrib/binutils/gas/config/tc-i386.c +++ b/contrib/binutils/gas/config/tc-i386.c @@ -1,5 +1,6 @@ /* i386.c -- Assemble code for the Intel 80386 - Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation. + Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 1998 + Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -105,7 +106,7 @@ struct _i386_insn unsigned char prefix[MAX_PREFIXES]; unsigned int prefixes; - /* RM and IB are the modrm byte and the base index byte where the + /* RM and BI are the modrm byte and the base index byte where the addressing modes of this insn are encoded. */ modrm_byte rm; @@ -302,18 +303,18 @@ i386_align_code (fragP, count) {0xeb,0x0d,0x90,0x90,0x90,0x90,0x90, /* jmp .+15; lotsa nops */ 0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90}; static const char f16_4[] = - {0x8d,0xb6,0x00,0x00}; /* lea 0w(%si),%si */ + {0x8d,0xb4,0x00,0x00}; /* lea 0w(%si),%si */ static const char f16_5[] = {0x90, /* nop */ - 0x8d,0xb6,0x00,0x00}; /* lea 0w(%si),%si */ + 0x8d,0xb4,0x00,0x00}; /* lea 0w(%si),%si */ static const char f16_6[] = {0x89,0xf6, /* mov %si,%si */ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */ static const char f16_7[] = - {0x8d,0x76,0x00, /* lea 0(%si),%si */ + {0x8d,0x74,0x00, /* lea 0(%si),%si */ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */ static const char f16_8[] = - {0x8d,0xb6,0x00,0x00, /* lea 0w(%si),%si */ + {0x8d,0xb4,0x00,0x00, /* lea 0w(%si),%si */ 0x8d,0xbd,0x00,0x00}; /* lea 0w(%di),%di */ static const char *const f32_patt[] = { f32_1, f32_2, f32_3, f32_4, f32_5, f32_6, f32_7, f32_8, @@ -433,7 +434,7 @@ const pseudo_typeS md_pseudo_table[] = #ifndef I386COFF {"bss", s_bss, 0}, #endif -#ifndef OBJ_AOUT +#if !defined(OBJ_AOUT) && !defined(USE_ALIGN_PTWO) {"align", s_align_bytes, 0}, #else {"align", s_align_ptwo, 0}, @@ -802,7 +803,7 @@ int tc_i386_fix_adjustable(fixP) fixS * fixP; { -#ifndef OBJ_AOUT +#ifdef OBJ_ELF /* Prevent all adjustments to global symbols. */ if (S_IS_EXTERN (fixP->fx_addsy)) return 0; @@ -833,8 +834,8 @@ void md_assemble (line) char *line; { - /* Holds template once we've found it. */ - template *t; + /* Points to template once we've found it. */ + const template *t; /* Count the size of the instruction generated. */ int insn_size = 0; @@ -844,6 +845,11 @@ md_assemble (line) int j; + /* Wait prefix needs to come before any other prefixes, so handle it + specially. wait_prefix will hold the opcode modifier flag FWait + if a wait prefix is given. */ + int wait_prefix = 0; + /* Initialize globals. */ memset (&i, '\0', sizeof (i)); for (j = 0; j < MAX_OPERANDS; j++) @@ -852,7 +858,7 @@ md_assemble (line) memset (im_expressions, '\0', sizeof (im_expressions)); save_stack_p = save_stack; /* reset stack pointer */ - /* Fist parse an opcode & call i386_operand for the operands. + /* First parse an opcode & call i386_operand for the operands. We assume that the scrubber has arranged it so that line[0] is the valid start of a (possibly prefixed) opcode. */ { @@ -904,14 +910,27 @@ md_assemble (line) as_bad ("same prefix used twice; you don't really want this!"); return; } - if (i.prefixes == MAX_PREFIXES) + if (prefix->prefix_code == FWAIT_OPCODE) { - as_bad ("too many opcode prefixes"); - return; + if (wait_prefix != 0) + { + as_bad ("same prefix used twice; you don't really want this!"); + return; + } + wait_prefix = FWait; + } + else + { + if (i.prefixes == MAX_PREFIXES) + { + as_bad ("too many opcode prefixes"); + return; + } + i.prefix[i.prefixes++] = prefix->prefix_code; + if (prefix->prefix_code == REPE + || prefix->prefix_code == REPNE) + expecting_string_instruction = 1; } - i.prefix[i.prefixes++] = prefix->prefix_code; - if (prefix->prefix_code == REPE || prefix->prefix_code == REPNE) - expecting_string_instruction = 1; /* skip past PREFIX_SEPERATOR and reset token_start */ token_start = ++l; } @@ -1131,8 +1150,8 @@ md_assemble (line) if (!MATCH (overlap0, i.types[0]) || !MATCH (overlap1, i.types[1]) || !CONSISTENT_REGISTER_MATCH (overlap0, overlap1, - t->operand_types[0], - t->operand_types[1])) + t->operand_types[1], + t->operand_types[0])) { /* does not match either direction */ continue; @@ -1165,20 +1184,26 @@ md_assemble (line) return; } - /* Copy the template we found (we may change it!). */ + /* Copy the template we found. */ i.tm = *t; - t = &i.tm; /* alter new copy of template */ + i.tm.opcode_modifier |= wait_prefix; + + if (found_reverse_match) + { + i.tm.operand_types[0] = t->operand_types[1]; + i.tm.operand_types[1] = t->operand_types[0]; + } /* If the matched instruction specifies an explicit opcode suffix, use it - and make sure none has already been specified. */ - if (t->opcode_modifier & (Data16|Data32)) + if (i.tm.opcode_modifier & (Data16|Data32)) { if (i.suffix) { as_bad ("extraneous opcode suffix given"); return; } - if (t->opcode_modifier & Data16) + if (i.tm.opcode_modifier & Data16) i.suffix = WORD_OPCODE_SUFFIX; else i.suffix = DWORD_OPCODE_SUFFIX; @@ -1275,19 +1300,11 @@ md_assemble (line) if (overlap0 & Imm1) i.imm_operands = 0; /* kludge for shift insns */ - if (found_reverse_match) - { - unsigned int save; - save = t->operand_types[0]; - t->operand_types[0] = t->operand_types[1]; - t->operand_types[1] = save; - } - /* Finalize opcode. First, we change the opcode based on the operand size given by i.suffix: we never have to change things for byte insns, or when no opcode suffix is need to size the operands. */ - if (!i.suffix && (t->opcode_modifier & W)) + if (!i.suffix && (i.tm.opcode_modifier & W)) { as_bad ("no opcode suffix given and no register operands; can't size instruction"); return; @@ -1296,15 +1313,15 @@ md_assemble (line) if (i.suffix && i.suffix != BYTE_OPCODE_SUFFIX) { /* Select between byte and word/dword operations. */ - if (t->opcode_modifier & W) - t->base_opcode |= W; + if (i.tm.opcode_modifier & W) + i.tm.base_opcode |= W; /* Now select between word & dword operations via the operand size prefix. */ if ((i.suffix == WORD_OPCODE_SUFFIX) ^ flag_16bit_code) { if (i.prefixes == MAX_PREFIXES) { - as_bad ("%d prefixes given and 'w' opcode suffix gives too many prefixes", + as_bad ("%d prefixes given and data size prefix gives too many prefixes", MAX_PREFIXES); return; } @@ -1331,12 +1348,12 @@ md_assemble (line) if (found_reverse_match) { - t->base_opcode |= found_reverse_match; + i.tm.base_opcode |= found_reverse_match; } /* The imul $imm, %reg instruction is converted into imul $imm, %reg, %reg. */ - if (t->opcode_modifier & imulKludge) + if (i.tm.opcode_modifier & imulKludge) { /* Pretend we saw the 3 operand case. */ i.regs[2] = i.regs[1]; @@ -1344,7 +1361,7 @@ md_assemble (line) } /* The clr %reg instruction is converted into xor %reg, %reg. */ - if (t->opcode_modifier & iclrKludge) + if (i.tm.opcode_modifier & iclrKludge) { i.regs[1] = i.regs[0]; i.reg_operands = 2; @@ -1355,7 +1372,7 @@ md_assemble (line) instructions, if the source operand is a register, we must reverse the i.rm.reg and i.rm.regmem fields. We accomplish this by faking that the two register operands were given in the reverse order. */ - if ((t->opcode_modifier & ReverseRegRegmem) && i.reg_operands == 2) + if ((i.tm.opcode_modifier & ReverseRegRegmem) && i.reg_operands == 2) { unsigned int first_reg_operand = (i.types[0] & Reg) ? 0 : 1; unsigned int second_reg_operand = first_reg_operand + 1; @@ -1364,40 +1381,40 @@ md_assemble (line) i.regs[second_reg_operand] = tmp; } - if (t->opcode_modifier & ShortForm) + if (i.tm.opcode_modifier & ShortForm) { /* The register or float register operand is in operand 0 or 1. */ unsigned int op = (i.types[0] & (Reg | FloatReg)) ? 0 : 1; /* Register goes in low 3 bits of opcode. */ - t->base_opcode |= i.regs[op]->reg_num; + i.tm.base_opcode |= i.regs[op]->reg_num; } - else if (t->opcode_modifier & ShortFormW) + else if (i.tm.opcode_modifier & ShortFormW) { /* Short form with 0x8 width bit. Register is always dest. operand */ - t->base_opcode |= i.regs[1]->reg_num; + i.tm.base_opcode |= i.regs[1]->reg_num; if (i.suffix == WORD_OPCODE_SUFFIX || i.suffix == DWORD_OPCODE_SUFFIX) - t->base_opcode |= 0x8; + i.tm.base_opcode |= 0x8; } - else if (t->opcode_modifier & Seg2ShortForm) + else if (i.tm.opcode_modifier & Seg2ShortForm) { - if (t->base_opcode == POP_SEG_SHORT && i.regs[0]->reg_num == 1) + if (i.tm.base_opcode == POP_SEG_SHORT && i.regs[0]->reg_num == 1) { as_bad ("you can't 'pop cs' on the 386."); return; } - t->base_opcode |= (i.regs[0]->reg_num << 3); + i.tm.base_opcode |= (i.regs[0]->reg_num << 3); } - else if (t->opcode_modifier & Seg3ShortForm) + else if (i.tm.opcode_modifier & Seg3ShortForm) { /* 'push %fs' is 0x0fa0; 'pop %fs' is 0x0fa1. 'push %gs' is 0x0fa8; 'pop %fs' is 0x0fa9. So, only if i.regs[0]->reg_num == 5 (%gs) do we need to change the opcode. */ if (i.regs[0]->reg_num == 5) - t->base_opcode |= 0x08; + i.tm.base_opcode |= 0x08; } - else if ((t->base_opcode & ~DW) == MOV_AX_DISP32) + else if ((i.tm.base_opcode & ~DW) == MOV_AX_DISP32) { /* This is a special non-modrm instruction that addresses memory with a 32-bit displacement mode anyway, @@ -1405,12 +1422,12 @@ md_assemble (line) uses_mem_addrmode = 1; default_seg = &ds; } - else if (t->opcode_modifier & Modrm) + else if (i.tm.opcode_modifier & Modrm) { - /* The opcode is completed (modulo t->extension_opcode which must - be put into the modrm byte. - Now, we make the modrm & index base bytes based on all the info - we've collected. */ + /* The opcode is completed (modulo i.tm.extension_opcode which + must be put into the modrm byte). + Now, we make the modrm & index base bytes based on all the + info we've collected. */ /* i.reg_operands MUST be the number of real register operands; implicit registers do not count. */ @@ -1562,10 +1579,10 @@ md_assemble (line) } /* Fill in i.rm.reg or i.rm.regmem field with register - operand (if any) based on - t->extension_opcode. Again, we must be careful to - make sure that segment/control/debug/test/MMX - registers are coded into the i.rm.reg field. */ + operand (if any) based on i.tm.extension_opcode. + Again, we must be careful to make sure that + segment/control/debug/test/MMX registers are coded + into the i.rm.reg field. */ if (i.reg_operands) { unsigned int op = @@ -1580,7 +1597,7 @@ md_assemble (line) : 2)); /* If there is an extension opcode to put here, the register number must be put into the regmem field. */ - if (t->extension_opcode != None) + if (i.tm.extension_opcode != None) i.rm.regmem = i.regs[op]->reg_num; else i.rm.reg = i.regs[op]->reg_num; @@ -1593,8 +1610,8 @@ md_assemble (line) } /* Fill in i.rm.reg field with extension opcode (if any). */ - if (t->extension_opcode != None) - i.rm.reg = t->extension_opcode; + if (i.tm.extension_opcode != None) + i.rm.reg = i.tm.extension_opcode; } if (i.rm.mode != 3) @@ -1635,9 +1652,9 @@ md_assemble (line) } /* Handle conversion of 'int $3' --> special int3 insn. */ - if (t->base_opcode == INT_OPCODE && i.imms[0]->X_add_number == 3) + if (i.tm.base_opcode == INT_OPCODE && i.imms[0]->X_add_number == 3) { - t->base_opcode = INT3_OPCODE; + i.tm.base_opcode = INT3_OPCODE; i.imm_operands = 0; } @@ -1646,7 +1663,7 @@ md_assemble (line) register char *p; /* Output jumps. */ - if (t->opcode_modifier & Jump) + if (i.tm.opcode_modifier & Jump) { unsigned long n = i.disps[0]->X_add_number; @@ -1656,7 +1673,7 @@ md_assemble (line) { p = frag_more (2); insn_size += 2; - p[0] = t->base_opcode; + p[0] = i.tm.base_opcode; p[1] = n; } else @@ -1673,7 +1690,7 @@ md_assemble (line) return; } - if (t->base_opcode == JUMP_PC_RELATIVE) + if (i.tm.base_opcode == JUMP_PC_RELATIVE) { /* pace */ /* unconditional jump */ p = frag_more (1 + jmp_size); @@ -1687,7 +1704,7 @@ md_assemble (line) p = frag_more (2 + jmp_size); insn_size += 2 + jmp_size; p[0] = TWO_BYTE_OPCODE_ESCAPE; - p[1] = t->base_opcode + 0x10; + p[1] = i.tm.base_opcode + 0x10; md_number_to_chars (&p[2], (valueT) n, jmp_size); } } @@ -1706,7 +1723,7 @@ md_assemble (line) frag_grow (7); p = frag_more (1); insn_size += 1; - p[0] = t->base_opcode; + p[0] = i.tm.base_opcode; frag_var (rs_machine_dependent, 6, /* 2 opcode/prefix + 4 displacement */ 1, @@ -1717,9 +1734,9 @@ md_assemble (line) (offsetT) n, p); } } - else if (t->opcode_modifier & (JumpByte | JumpDword)) + else if (i.tm.opcode_modifier & (JumpByte | JumpDword)) { - int size = (t->opcode_modifier & JumpByte) ? 1 : 4; + int size = (i.tm.opcode_modifier & JumpByte) ? 1 : 4; unsigned long n = i.disps[0]->X_add_number; unsigned char *q; @@ -1728,7 +1745,29 @@ md_assemble (line) { if (*q == WORD_PREFIX_OPCODE) { - FRAG_APPEND_1_CHAR (WORD_PREFIX_OPCODE); + /* The jcxz/jecxz instructions are marked with Data16 + and Data32, which means that they may get + WORD_PREFIX_OPCODE added to the list of prefixes. + However, the are correctly distinguished using + ADDR_PREFIX_OPCODE. Here we look for + WORD_PREFIX_OPCODE, and actually emit + ADDR_PREFIX_OPCODE. This is a hack, but, then, so + is the instruction itself. + + If an explicit suffix is used for the loop + instruction, that actually controls whether we use + cx vs. ecx. This is also controlled by + ADDR_PREFIX_OPCODE. + + I don't know if there is any valid case in which we + want to emit WORD_PREFIX_OPCODE, but I am keeping + the old behaviour for safety. */ + + if (IS_JUMP_ON_CX_ZERO (i.tm.base_opcode) + || IS_LOOP_ECX_TIMES (i.tm.base_opcode)) + FRAG_APPEND_1_CHAR (ADDR_PREFIX_OPCODE); + else + FRAG_APPEND_1_CHAR (WORD_PREFIX_OPCODE); insn_size += 1; break; } @@ -1740,9 +1779,9 @@ md_assemble (line) insn_size += 1; } - if (fits_in_unsigned_byte (t->base_opcode)) + if (fits_in_unsigned_byte (i.tm.base_opcode)) { - FRAG_APPEND_1_CHAR (t->base_opcode); + FRAG_APPEND_1_CHAR (i.tm.base_opcode); insn_size += 1; } else @@ -1750,8 +1789,8 @@ md_assemble (line) p = frag_more (2); /* opcode can be at most two bytes */ insn_size += 2; /* put out high byte first: can't use md_number_to_chars! */ - *p++ = (t->base_opcode >> 8) & 0xff; - *p = t->base_opcode & 0xff; + *p++ = (i.tm.base_opcode >> 8) & 0xff; + *p = i.tm.base_opcode & 0xff; } p = frag_more (size); @@ -1772,7 +1811,7 @@ md_assemble (line) } } - else if (t->opcode_modifier & JumpInterSegment) + else if (i.tm.opcode_modifier & JumpInterSegment) { if (flag_16bit_code) { @@ -1782,7 +1821,7 @@ md_assemble (line) p = frag_more (1 + 2 + 4); /* 1 opcode; 2 segment; 4 offset */ insn_size += 1 + 2 + 4; - p[0] = t->base_opcode; + p[0] = i.tm.base_opcode; if (i.imms[1]->X_op == O_constant) md_number_to_chars (p + 1, (valueT) i.imms[1]->X_add_number, 4); else @@ -1797,7 +1836,16 @@ md_assemble (line) /* Output normal instructions here. */ unsigned char *q; - /* First the prefix bytes. */ + /* Hack for fwait. It must come before any prefixes, as it + really is an instruction rather than a prefix. */ + if ((i.tm.opcode_modifier & FWait) != 0) + { + p = frag_more (1); + insn_size += 1; + md_number_to_chars (p, (valueT) FWAIT_OPCODE, 1); + } + + /* The prefix bytes. */ for (q = i.prefix; q < i.prefix + i.prefixes; q++) { p = frag_more (1); @@ -1806,39 +1854,39 @@ md_assemble (line) } /* Now the opcode; be careful about word order here! */ - if (fits_in_unsigned_byte (t->base_opcode)) + if (fits_in_unsigned_byte (i.tm.base_opcode)) { - FRAG_APPEND_1_CHAR (t->base_opcode); + FRAG_APPEND_1_CHAR (i.tm.base_opcode); insn_size += 1; } - else if (fits_in_unsigned_word (t->base_opcode)) + else if (fits_in_unsigned_word (i.tm.base_opcode)) { p = frag_more (2); insn_size += 2; /* put out high byte first: can't use md_number_to_chars! */ - *p++ = (t->base_opcode >> 8) & 0xff; - *p = t->base_opcode & 0xff; + *p++ = (i.tm.base_opcode >> 8) & 0xff; + *p = i.tm.base_opcode & 0xff; } else { /* opcode is either 3 or 4 bytes */ - if (t->base_opcode & 0xff000000) + if (i.tm.base_opcode & 0xff000000) { p = frag_more (4); insn_size += 4; - *p++ = (t->base_opcode >> 24) & 0xff; + *p++ = (i.tm.base_opcode >> 24) & 0xff; } else { p = frag_more (3); insn_size += 3; } - *p++ = (t->base_opcode >> 16) & 0xff; - *p++ = (t->base_opcode >> 8) & 0xff; - *p = (t->base_opcode) & 0xff; + *p++ = (i.tm.base_opcode >> 16) & 0xff; + *p++ = (i.tm.base_opcode >> 8) & 0xff; + *p = (i.tm.base_opcode) & 0xff; } /* Now the modrm byte and base index byte (if present). */ - if (t->opcode_modifier & Modrm) + if (i.tm.opcode_modifier & Modrm) { p = frag_more (1); insn_size += 1; @@ -2090,6 +2138,16 @@ i386_operand (operand_string) input_line_pointer = ++op_string; /* must advance op_string! */ SKIP_WHITESPACE (); exp_seg = expression (exp); + if (*input_line_pointer != '\0') + { + /* This should be as_bad, but some versions of gcc, up to + about 2.8 and egcs 1.01, generate a bogus @GOTOFF(%ebx) + in certain cases. Oddly, the code in question turns out + to work correctly anyhow, so we make this just a warning + until those versions of gcc are obsolete. */ + as_warn ("warning: unrecognized characters `%s' in expression", + input_line_pointer); + } input_line_pointer = save_input_line_pointer; if (exp->X_op == O_absent) @@ -2159,7 +2217,7 @@ i386_operand (operand_string) i.mem_operands++; /* Determine type of memory operand from opcode_suffix; - no opcode suffix implies general memory references. */ + no opcode suffix implies general memory references. */ switch (i.suffix) { case BYTE_OPCODE_SUFFIX: @@ -2330,6 +2388,7 @@ i386_operand (operand_string) save_input_line_pointer = input_line_pointer; input_line_pointer = displacement_string_start; END_STRING_AND_SAVE (displacement_string_end); + #ifndef LEX_AT { /* @@ -2339,36 +2398,49 @@ i386_operand (operand_string) * into a temporary buffer... */ register char *cp; - if ((cp = strchr (input_line_pointer,'@')) != NULL) { - char tmpbuf[BUFSIZ]; - - if(!GOT_symbol) - GOT_symbol = symbol_find_or_make(GLOBAL_OFFSET_TABLE_NAME); - if (strncmp(cp+1, "PLT", 3) == 0) { - i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32; - *cp = '\0'; - strcpy(tmpbuf, input_line_pointer); - strcat(tmpbuf, cp+1+3); - *cp = '@'; - } else if (strncmp(cp+1, "GOTOFF", 6) == 0) { - i.disp_reloc[this_operand] = BFD_RELOC_386_GOTOFF; - *cp = '\0'; - strcpy(tmpbuf, input_line_pointer); - strcat(tmpbuf, cp+1+6); - *cp = '@'; - } else if (strncmp(cp+1, "GOT", 3) == 0) { - i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32; - *cp = '\0'; - strcpy(tmpbuf, input_line_pointer); - strcat(tmpbuf, cp+1+3); - *cp = '@'; - } else - as_bad("Bad reloc specifier '%s' in expression", cp+1); - input_line_pointer = tmpbuf; - } + cp = strchr (input_line_pointer, '@'); + if (cp != NULL) + { + char *tmpbuf; + + if (GOT_symbol == NULL) + GOT_symbol = symbol_find_or_make (GLOBAL_OFFSET_TABLE_NAME); + + tmpbuf = (char *) alloca ((cp - input_line_pointer) + 20); + + if (strncmp (cp + 1, "PLT", 3) == 0) + { + i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32; + *cp = '\0'; + strcpy (tmpbuf, input_line_pointer); + strcat (tmpbuf, cp + 1 + 3); + *cp = '@'; + } + else if (strncmp (cp + 1, "GOTOFF", 6) == 0) + { + i.disp_reloc[this_operand] = BFD_RELOC_386_GOTOFF; + *cp = '\0'; + strcpy (tmpbuf, input_line_pointer); + strcat (tmpbuf, cp + 1 + 6); + *cp = '@'; + } + else if (strncmp (cp + 1, "GOT", 3) == 0) + { + i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32; + *cp = '\0'; + strcpy (tmpbuf, input_line_pointer); + strcat (tmpbuf, cp + 1 + 3); + *cp = '@'; + } + else + as_bad ("Bad reloc specifier '%s' in expression", cp + 1); + + input_line_pointer = tmpbuf; + } } #endif + exp_seg = expression (exp); #ifdef BFD_ASSEMBLER @@ -2683,6 +2755,9 @@ md_apply_fix3 (fixP, valp, seg) register char *p = fixP->fx_where + fixP->fx_frag->fr_literal; valueT value = *valp; + if (fixP->fx_r_type == BFD_RELOC_32 && fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_32_PCREL; + #if defined (BFD_ASSEMBLER) && !defined (TE_Mach) /* * This is a hack. There should be a better way to @@ -2691,7 +2766,8 @@ md_apply_fix3 (fixP, valp, seg) if (fixP->fx_r_type == BFD_RELOC_32_PCREL && fixP->fx_addsy) { #ifndef OBJ_AOUT - if (OUTPUT_FLAVOR == bfd_target_elf_flavour) + if (OUTPUT_FLAVOR == bfd_target_elf_flavour + || OUTPUT_FLAVOR == bfd_target_coff_flavour) value += fixP->fx_where + fixP->fx_frag->fr_address; #endif #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) @@ -2705,6 +2781,12 @@ md_apply_fix3 (fixP, valp, seg) it. FIXME. */ value += fixP->fx_where + fixP->fx_frag->fr_address; } +#endif +#if defined (OBJ_COFF) && defined (TE_PE) + /* For some reason, the PE format does not store a section + address offset for a PC relative symbol. */ + if (S_GET_SEGMENT (fixP->fx_addsy) != seg) + value += md_pcrel_from (fixP); #endif } @@ -3055,6 +3137,7 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_386_GOT32: case BFD_RELOC_386_GOTOFF: case BFD_RELOC_386_GOTPC: + case BFD_RELOC_RVA: code = fixp->fx_r_type; break; default: diff --git a/contrib/binutils/gas/config/tc-i386.h b/contrib/binutils/gas/config/tc-i386.h index 139ccc744943..d095d3eaeef2 100644 --- a/contrib/binutils/gas/config/tc-i386.h +++ b/contrib/binutils/gas/config/tc-i386.h @@ -1,5 +1,5 @@ /* tc-i386.h -- Header file for tc-i386.c - Copyright (C) 1989, 92, 93, 94, 95, 96, 1997 Free Software Foundation. + Copyright (C) 1989, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -300,6 +300,7 @@ typedef struct #define Data16 0x20000 /* needs data prefix if in 32-bit mode */ #define Data32 0x40000 /* needs data prefix if in 16-bit mode */ #define iclrKludge 0x80000 /* used to convert clr to xor */ +#define FWait 0x100000 /* instruction needs FWAIT */ /* (opcode_modifier & COMES_IN_ALL_SIZES) is true if the instuction comes in byte, word, and dword sizes and is encoded into @@ -401,10 +402,18 @@ extern const struct relax_type md_relax_table[]; extern int flag_16bit_code; +#ifdef BFD_ASSEMBLER +#define md_maybe_text() \ + ((bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) +#else +#define md_maybe_text() \ + (now_seg != data_section && now_seg != bss_section) +#endif + #define md_do_align(n, fill, len, max, around) \ if ((n) && !need_pass_2 \ && (!(fill) || ((char)*(fill) == (char)0x90 && (len) == 1)) \ - && now_seg != data_section && now_seg != bss_section) \ + && md_maybe_text ()) \ { \ char *p; \ p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \ @@ -434,4 +443,6 @@ void i386_print_statistics PARAMS ((FILE *)); extern void sco_id PARAMS ((void)); #endif +#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ + /* end of tc-i386.h */ diff --git a/contrib/binutils/gas/configure b/contrib/binutils/gas/configure index 9498428740ef..93abf8ef60ef 100755 --- a/contrib/binutils/gas/configure +++ b/contrib/binutils/gas/configure @@ -1,7 +1,7 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.12 +# Generated automatically using autoconf version 2.12.1 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation @@ -11,14 +11,25 @@ ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: +ac_help="$ac_help + --enable-shared build shared libraries [default=yes] + --enable-shared=PKGS only build shared libraries if the current package + appears as an element in the PKGS list" +ac_help="$ac_help + --enable-static build static libraries [default=yes] + --enable-static=PKGS only build shared libraries if the current package + appears as an element in the PKGS list" +ac_help="$ac_help + --with-gnu-ld assume the C compiler uses GNU ld [default=no]" ac_help="$ac_help --enable-bfd-assembler use BFD back end for writing object files" ac_help="$ac_help targets alternative target configurations besides the primary" -ac_help="$ac_help - --enable-shared build shared BFD library" ac_help="$ac_help --enable-commonbfdlib build shared BFD/opcodes/libiberty library" +ac_help="$ac_help + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -57,6 +68,7 @@ mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 @@ -340,7 +352,7 @@ EOF verbose=yes ;; -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.12" + echo "configure generated by autoconf version 2.12.1" exit 0 ;; -with-* | --with-*) @@ -525,54 +537,10 @@ else ac_n= ac_c='\c' ac_t= fi -user_bfd_gas= -# Check whether --enable-bfd-assembler or --disable-bfd-assembler was given. -if test "${enable_bfd_assembler+set}" = set; then - enableval="$enable_bfd_assembler" - case "${enableval}" in - yes) need_bfd=yes user_bfd_gas=yes ;; - no) user_bfd_gas=no ;; - *) { echo "configure: error: bad value ${enableval} given for bfd-assembler option" 1>&2; exit 1; } ;; -esac -fi -# Check whether --enable-targets or --disable-targets was given. -if test "${enable_targets+set}" = set; then - enableval="$enable_targets" - case "${enableval}" in - yes | "") { echo "configure: error: enable-targets option must specify target names or 'all'" 1>&2; exit 1; } - ;; - no) enable_targets= ;; - *) enable_targets=$enableval ;; -esac -fi -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - case "${enableval}" in - yes) shared=true shared_bfd=true shared_opcodes=true ;; - no) shared=false ;; - *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;; - *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;; - *bfd*) shared=true shared_bfd=true ;; - *opcodes*) shared=true shared_opcodes=true ;; - *) shared=false ;; -esac -fi -# Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. -if test "${enable_commonbfdlib+set}" = set; then - enableval="$enable_commonbfdlib" - case "${enableval}" in - yes) commonbfdlib=true ;; - no) commonbfdlib=false ;; - *) { echo "configure: error: bad value ${enableval} for BFD commonbfdlib option" 1>&2; exit 1; } ;; -esac -fi - -# Generate a header file -- gets more post-processing by Makefile later. ac_aux_dir= -for ac_dir in `cd $srcdir;pwd`/.. $srcdir/`cd $srcdir;pwd`/..; do +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" @@ -584,7 +552,7 @@ for ac_dir in `cd $srcdir;pwd`/.. $srcdir/`cd $srcdir;pwd`/..; do fi done if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in `cd $srcdir;pwd`/.. $srcdir/`cd $srcdir;pwd`/.." 1>&2; exit 1; } + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub @@ -613,33 +581,33 @@ esac # Make sure we can run config.sub. -if $ac_config_sub sun4 >/dev/null 2>&1; then : +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:622: checking host system type" >&5 +echo "configure:590: checking host system type" >&5 host_alias=$host case "$host_alias" in NONE) case $nonopt in NONE) - if host_alias=`$ac_config_guess`; then : + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } fi ;; *) host_alias=$nonopt ;; esac ;; esac -host=`$ac_config_sub $host_alias` +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:643: checking target system type" >&5 +echo "configure:611: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -650,14 +618,14 @@ NONE) esac ;; esac -target=`$ac_config_sub $target_alias` +target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:661: checking build system type" >&5 +echo "configure:629: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -668,7 +636,7 @@ NONE) esac ;; esac -build=`$ac_config_sub $build_alias` +build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` @@ -679,6 +647,110 @@ test "$host_alias" != "$target_alias" && NONENONEs,x,x, && program_prefix=${target_alias}- + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:664: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:718: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 if test "$program_transform_name" = s,x,x,; then program_transform_name= else @@ -698,6 +770,588 @@ test "$program_suffix" != NONE && # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:775: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=gas + +VERSION=2.9.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:821: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:834: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:847: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:860: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:873: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:936: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:965: 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 + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +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:994: 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 + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1042: 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. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +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:1076: 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:1081: 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 + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + 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:1105: 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 + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + + +ac_prog=ld +if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +echo "configure:1145: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + /* | [A-Za-z]:\\*) + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +echo "configure:1163: checking for GNU ld" >&5 +else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +echo "configure:1166: checking for non-GNU ld" >&5 +fi +if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog"; then + ac_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + ac_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$ac_cv_path_LD" +if test -n "$LD"; then + echo "$ac_t""$LD" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + +echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +echo "configure:1202: checking if the linker ($LD) is GNU ld" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 + + +echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +echo "configure:1218: checking for BSD-compatible nm" >&5 +if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$NM" in +/* | [A-Za-z]:\\*) + ac_cv_path_NM="$NM" # Let the user override the test with a path. + ;; +*) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -B" + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + ac_cv_path_NM="$ac_dir/nm -p" + else + ac_cv_path_NM="$ac_dir/nm" + fi + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm + ;; +esac +fi + +NM="$ac_cv_path_NM" +echo "$ac_t""$NM" 1>&6 + + +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +echo "configure:1255: checking whether ln -s works" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Check for any special flags to pass to ltconfig. +libtool_flags= +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +test "$silent" = yes && libtool_flags="$libtool_flags --silent" +test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case "$host" in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 1291 "configure"' > conftest.$ac_ext + if { (eval echo configure:1292: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + CFLAGS="$CFLAGS -belf" + ;; +esac + +# Actually configure libtool. ac_aux_dir is where install-sh is found. +CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \ +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \ +$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ +|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; } + + +user_bfd_gas= +# Check whether --enable-bfd-assembler or --disable-bfd-assembler was given. +if test "${enable_bfd_assembler+set}" = set; then + enableval="$enable_bfd_assembler" + case "${enableval}" in + yes) need_bfd=yes user_bfd_gas=yes ;; + no) user_bfd_gas=no ;; + *) { echo "configure: error: bad value ${enableval} given for bfd-assembler option" 1>&2; exit 1; } ;; +esac +fi +# Check whether --enable-targets or --disable-targets was given. +if test "${enable_targets+set}" = set; then + enableval="$enable_targets" + case "${enableval}" in + yes | "") { echo "configure: error: enable-targets option must specify target names or 'all'" 1>&2; exit 1; } + ;; + no) enable_targets= ;; + *) enable_targets=$enableval ;; +esac +fi +# Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. +if test "${enable_commonbfdlib+set}" = set; then + enableval="$enable_commonbfdlib" + case "${enableval}" in + yes) commonbfdlib=true ;; + no) commonbfdlib=false ;; + *) { echo "configure: error: bad value ${enableval} for BFD commonbfdlib option" 1>&2; exit 1; } ;; +esac +fi + +# Generate a header file + + + te_file=generic @@ -734,9 +1388,13 @@ for this_target in $target $canon_targets ; do eval `echo $this_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'` # check for architecture variants + arch= + endian= case ${cpu} in + alpha*) cpu_type=alpha ;; armeb) cpu_type=arm endian=big ;; arm*) cpu_type=arm endian=little ;; + thumb*) cpu_type=arm endian=little ;; hppa*) cpu_type=hppa ;; i[456]86) cpu_type=i386 ;; m680[012346]0) cpu_type=m68k ;; @@ -748,18 +1406,31 @@ for this_target in $target $canon_targets ; do powerpcle*) cpu_type=ppc endian=little ;; powerpc*) cpu_type=ppc endian=big ;; rs6000*) cpu_type=ppc ;; - sparc64) cpu_type=sparc want_sparc_v9=true ;; - sparc*) cpu_type=sparc ;; + sparclite*) cpu_type=sparc arch=sparclite ;; + sparclet*) cpu_type=sparc arch=sparclet ;; + sparc64*) cpu_type=sparc arch=v9-64 ;; + sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c. + v850*) cpu_type=v850 ;; *) cpu_type=${cpu} ;; esac if test ${this_target} = $target ; then target_cpu_type=${cpu_type} + if test x${endian} = xbig; then + cat >> confdefs.h <<\EOF +#define TARGET_BYTES_BIG_ENDIAN 1 +EOF + + elif test x${endian} = xlittle; then + cat >> confdefs.h <<\EOF +#define TARGET_BYTES_BIG_ENDIAN 0 +EOF + + fi elif test ${target_cpu_type} != ${cpu_type} ; then continue fi - targ=${cpu_type} generic_target=${cpu_type}-$vendor-$os dev=no bfd_gas=no @@ -767,31 +1438,28 @@ for this_target in $target $canon_targets ; do # assign object format case ${generic_target} in - a29k-*-coff) fmt=coff targ=ebmon29k ;; - a29k-amd-udi) fmt=coff targ=ebmon29k ;; - a29k-amd-ebmon) fmt=coff targ=ebmon29k ;; - a29k-nyu-sym1) fmt=coff targ=ebmon29k ;; + a29k-*-coff) fmt=coff ;; + a29k-amd-udi) fmt=coff ;; + a29k-amd-ebmon) fmt=coff ;; + a29k-nyu-sym1) fmt=coff ;; a29k-*-vxworks*) fmt=coff ;; - alpha-*-*vms*) fmt=evax ;; + alpha*-*-*vms*) fmt=evax ;; alpha-*-freebsd*) fmt=elf em=freebsd ;; - alpha-*-netware*) fmt=ecoff ;; - alpha-*-openbsd*) fmt=ecoff ;; - alpha-*-osf*) fmt=ecoff ;; - alpha-*-linuxecoff*) fmt=ecoff ;; - alpha-*-linux*) fmt=elf em=linux ;; + alpha*-*-netware*) fmt=ecoff ;; + alpha*-*-openbsd*) fmt=ecoff ;; + alpha*-*-osf*) fmt=ecoff ;; + alpha*-*-linuxecoff*) fmt=ecoff ;; + alpha*-*-linux-gnu*) fmt=elf em=linux ;; + alpha*-*-netbsd*) fmt=elf em=nbsd ;; + arc-*-elf*) fmt=elf bfd_gas=yes ;; - arm-*-riscix*) fmt=aout targ=arm-lit em=riscix ;; - arm-*-aout) fmt=aout - case "$endian" in - big) targ=arm-big ;; - *) targ=arm-lit ;; - esac - ;; - arm-*-coff) fmt=coff ;; + arm-*-riscix*) fmt=aout em=riscix ;; + arm-*-aout) fmt=aout ;; + arm-*-coff | thumb-*-coff) fmt=coff ;; arm-*-riscix*) fmt=aout ;; - arm-*-pe) fmt=coff targ=armcoff em=pe ;; + arm-*-pe | thumb-*-pe) fmt=coff em=pe ;; d10v-*-*) fmt=elf bfd_gas=yes ;; @@ -805,142 +1473,128 @@ for this_target in $target $canon_targets ; do h8300-*-coff) fmt=coff ;; - i386-ibm-aix*) fmt=coff targ=i386coff - em=i386aix ;; + i386-ibm-aix*) fmt=coff em=i386aix ;; i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;; - i386-*-linux*coff*) fmt=coff em=linux - targ=i386coff ;; - i386-*-linux*) fmt=elf em=linux ;; - i386-*-lynxos*) fmt=coff targ=i386coff - em=lynx ;; + i386-*-linux*coff*) fmt=coff em=linux ;; + i386-*-linux-gnu*) fmt=elf em=linux ;; + i386-*-lynxos*) fmt=coff em=lynx ;; i386-*-sysv4* | i386-*-solaris* | i386-*-elf) fmt=elf ;; - i386-*-freebsdelf*) fmt=elf em=freebsd ;; + i386-*-freebsdelf*) fmt=elf em=freebsd;; i386-*-freebsd*) fmt=aout em=freebsd bfd_gas=yes ;; - i386-*-sco*elf*) fmt=elf targ=sco5 ;; - i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*) - fmt=coff targ=i386coff ;; + i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*) + fmt=coff ;; + i386-*-sco3.2v5*) fmt=elf + if test ${this_target} = $target; then + cat >> confdefs.h <<\EOF +#define SCO_ELF 1 +EOF + + fi + ;; + i386-*-sco3.2*) fmt=coff ;; i386-*-vsta) fmt=aout ;; - i386-*-go32) fmt=coff targ=i386coff ;; - i386-*-rtems*) fmt=coff targ=i386coff ;; + i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*) + fmt=coff em=go32;; + i386-*-rtems*) fmt=coff ;; i386-*-gnu*) fmt=elf ;; i386-*-mach*) fmt=aout em=mach bfd_gas=yes ;; i386-*-msdos*) fmt=aout ;; i386-*-moss*) fmt=elf ;; - i386-*-pe) fmt=coff targ=i386coff em=pe ;; - i386-*-cygwin32) fmt=coff targ=i386coff em=pe ;; - i386-*-*nt) fmt=coff targ=i386coff em=pe ;; + i386-*-pe) fmt=coff em=pe ;; + i386-*-cygwin32*) fmt=coff em=pe bfd_gas=yes ;; + i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;; + i386-*-*nt*) fmt=coff em=pe ;; i960-*-bout) fmt=bout ;; - i960-*-coff) fmt=coff em=ic960 targ=ic960coff ;; - i960-*-rtems*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-coff) fmt=coff em=ic960 ;; + i960-*-rtems*) fmt=coff em=ic960 ;; i960-*-nindy*) fmt=bout ;; i960-*-vxworks4*) fmt=bout ;; i960-*-vxworks5.0) fmt=bout ;; - i960-*-vxworks5.*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-vxworks5.*) fmt=coff em=ic960 ;; i960-*-vxworks*) fmt=bout ;; m32r-*-*) fmt=elf bfd_gas=yes ;; m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*) fmt=aout em=sun3 ;; - m68k-motorola-sysv*) fmt=coff targ=m68kcoff em=delta ;; - m68k-bull-sysv3*) fmt=coff targ=m68kcoff em=dpx2 ;; - m68k-apollo-*) fmt=coff targ=apollo em=apollo ;; + m68k-motorola-sysv*) fmt=coff em=delta ;; + m68k-bull-sysv3*) fmt=coff em=dpx2 ;; + m68k-apollo-*) fmt=coff em=apollo ;; m68k-*-sysv4*) # must be before -sysv* fmt=elf em=svr4 ;; m68k-*-elf*) fmt=elf ;; m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*) - fmt=coff targ=m68kcoff ;; + fmt=coff ;; m68k-*-hpux*) fmt=hp300 em=hp300 ;; m68k-*-linux*aout*) fmt=aout em=linux ;; - m68k-*-linux*) fmt=elf em=linux ;; - m68k-*-lynxos*) fmt=coff targ=m68kcoff - em=lynx ;; + m68k-*-linux-gnu*) fmt=elf em=linux ;; + m68k-*-lynxos*) fmt=coff em=lynx ;; m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; - m68k-apple-aux*) fmt=coff targ=m68kcoff em=aux ;; + m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; - m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;; - m88k-*-coff*) fmt=coff targ=m88kcoff ;; + m88k-motorola-sysv3*) fmt=coff em=delt88 ;; + m88k-*-coff*) fmt=coff ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf targ=mips-lit endian=little ;; - mips-dec-openbsd*) fmt=elf targ=mips-lit endian=little ;; - mips-dec-bsd*) fmt=aout targ=mips-lit ;; - mips-sony-bsd*) fmt=ecoff targ=mips-big ;; + mips-dec-netbsd*) fmt=elf endian=little ;; + mips-dec-openbsd*) fmt=elf endian=little ;; + mips-dec-bsd*) fmt=aout ;; + mips-sony-bsd*) fmt=ecoff ;; mips-*-bsd*) { echo "configure: error: Unknown vendor for mips-bsd configuration." 1>&2; exit 1; } ;; - mips-*-ultrix*) fmt=ecoff targ=mips-lit endian=little ;; - mips-*-osf*) fmt=ecoff targ=mips-lit endian=little ;; - mips-*-ecoff*) fmt=ecoff - case "$endian" in - big) targ=mips-big ;; - *) targ=mips-lit ;; - esac - ;; - mips-*-ecoff*) fmt=ecoff targ=mips-big ;; - mips-*-irix6*) fmt=elf targ=mips-big ;; - mips-*-irix5*) fmt=elf targ=mips-big ;; - mips-*-irix*) fmt=ecoff targ=mips-big ;; - mips-*-lnews*) fmt=ecoff targ=mips-lit em=lnews ;; - mips-*-riscos*) fmt=ecoff targ=mips-big ;; - mips-*-sysv*) fmt=ecoff targ=mips-big ;; - mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*) - fmt=elf - case "$endian" in - big) targ=mips-big ;; - *) targ=mips-lit ;; - esac - ;; + mips-*-ultrix*) fmt=ecoff endian=little ;; + mips-*-osf*) fmt=ecoff endian=little ;; + mips-*-ecoff*) fmt=ecoff ;; + mips-*-ecoff*) fmt=ecoff ;; + mips-*-irix6*) fmt=elf ;; + mips-*-irix5*) fmt=elf ;; + mips-*-irix*) fmt=ecoff ;; + mips-*-lnews*) fmt=ecoff em=lnews ;; + mips-*-riscos*) fmt=ecoff ;; + mips-*-sysv*) fmt=ecoff ;; + mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*) + fmt=elf ;; mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*) - fmt=coff em=pe - case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac - ;; + fmt=coff em=pe ;; ppc-*-aix*) fmt=coff ;; ppc-*-beos*) fmt=coff ;; ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*) - fmt=elf + fmt=elf ;; + ppc-*-linux-gnu*) fmt=elf case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac - ;; - ppc-*-linux*) fmt=elf - case "$endian" in - big) targ=ppc-big ;; - *) { echo "configure: error: Linux must be configured big endian" 1>&2; exit 1; } ;; + big) ;; + *) { echo "configure: error: GNU/Linux must be configured big endian" 1>&2; exit 1; } ;; esac ;; ppc-*-solaris*) fmt=elf - case "$endian" in - big) { echo "configure: error: Solaris must be configured little endian" 1>&2; exit 1; } ;; - *) targ=ppc-sol ;; - esac - ;; - ppc-*-rtems*) - fmt=elf - case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac + if test ${this_target} = $target; then + cat >> confdefs.h <<\EOF +#define TARGET_SOLARIS_COMMENT 1 +EOF + + fi + if test x${endian} = xbig; then + { echo "configure: error: Solaris must be configured little endian" 1>&2; exit 1; } + fi ;; + ppc-*-rtems*) fmt=elf ;; ppc-*-macos* | ppc-*-mpw*) fmt=coff em=macos ;; ppc-*-netware*) fmt=elf em=ppcnw ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff ;; + sh-*-rtems*) fmt=coff ;; ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;; ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;; @@ -952,7 +1606,7 @@ for this_target in $target $canon_targets ; do fmt=aout em=sparcaout ;; sparc-*-coff) fmt=coff ;; sparc-*-linux*aout*) fmt=aout em=linux ;; - sparc-*-linux*) fmt=elf em=linux ;; + sparc-*-linux-gnu*) fmt=elf em=linux ;; sparc-*-lynxos*) fmt=coff em=lynx ;; sparc-fujitsu-none) fmt=aout ;; sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*) @@ -960,6 +1614,12 @@ for this_target in $target $canon_targets ; do sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + tic30-*-*aout*) fmt=aout bfd_gas=yes ;; + tic30-*-*coff*) fmt=coff bfd_gas=yes ;; + + + v850-*-*) fmt=elf bfd_gas=yes ;; + vax-*-bsd* | vax-*-ultrix*) fmt=aout ;; vax-*-vms) fmt=vms ;; @@ -986,7 +1646,7 @@ for this_target in $target $canon_targets ; do esac case ${cpu_type}-${fmt} in - alpha-*) bfd_gas=yes ;; + alpha*-*) bfd_gas=yes ;; arm-*) bfd_gas=yes ;; # not yet # i386-aout) bfd_gas=preferred ;; @@ -1004,10 +1664,16 @@ for this_target in $target $canon_targets ; do # do we need the opcodes library? case ${cpu_type} in - vax | i386) + vax | i386 | tic30) ;; *) need_opcodes=yes + + case "${enable_shared}" in + yes) shared_opcodes=true ;; + *opcodes*) shared_opcodes=true ;; + *) shared_opcodes=false ;; + esac if test "${shared_opcodes}" = "true"; then # A shared libopcodes must be linked against libbfd. need_bfd=yes @@ -1015,18 +1681,6 @@ for this_target in $target $canon_targets ; do ;; esac - test -n "$want_sparc_v9" && cat >> confdefs.h <<\EOF -#define SPARC_V9 1 -EOF - - - case ${cpu}-${vendor}-${os} in - sparc64-*-elf*) cat >> confdefs.h <<\EOF -#define SPARC_ARCH64 1 -EOF - ;; - esac - case ${cpu_type} in m32r) case ${extra_objects} in @@ -1064,6 +1718,15 @@ EOF fi ;; + sparc) + if test $this_target = $target ; then + cat >> confdefs.h <&2; exit 1; } fi -# and target makefile frag - -target_frag=${srcdir}/config/${gas_target}.mt -if test ! -r ${target_frag}; then - target_frag=/dev/null # ick! but subst_file can't be conditionalized -fi - - case ${user_bfd_gas}-${primary_bfd_gas} in yes-yes | no-no) # We didn't override user's choice. @@ -1352,68 +2006,14 @@ esac # do we need the opcodes library? case "${need_opcodes}" in yes) - OPCODES_DEP=../opcodes/libopcodes.a - OPCODES_LIB='-L../opcodes -lopcodes' - - # We need to handle some special cases for shared libraries. - case "${host}" in - *-*-sunos*) - # On SunOS, we must link against the name we are going to install, - # not -lbfd, since SunOS does not support SONAME. - if test "${shared_opcodes}" = "true"; then - OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`' - fi - ;; - alpha*-*-osf*) - # On Alpha OSF/1, the native linker searches all the -L - # directories for any LIB.so files, and only then searches for any - # LIB.a files. That means that if there is an installed - # libbfd.so, but this build is not done with --enable-shared, the - # link will wind up being against the install libbfd.so rather - # than the newly built libbfd. To avoid this, we must explicitly - # link against libbfd.a when --enable-shared is not used. - if test "${shared_opcodes}" != "true"; then - OPCODES_LIB='../opcodes/libopcodes.a' - fi - ;; - esac + OPCODES_LIB=../opcodes/libopcodes.la ;; esac case "${need_bfd}" in yes) - BFDDEP=../bfd/libbfd.a - BFDLIB='-L../bfd -lbfd' + BFDLIB=../bfd/libbfd.la ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" - - # We need to handle some special cases for shared libraries - case "${host}" in - *-*-sunos*) - # On SunOS, we must link against the name we are going to install, - # not -lbfd, since SunOS does not support SONAME. - if test "${shared_bfd}" = "true"; then - BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`' - fi - ;; - alpha*-*-osf*) - # On Alpha OSF/1, the native linker searches all the -L - # directories for any LIB.so files, and only then searches for any - # LIB.a files. That means that if there is an installed - # libbfd.so, but this build is not done with --enable-shared, the - # link will wind up being against the install libbfd.so rather - # than the newly built libbfd. To avoid this, we must explicitly - # link against libbfd.a when --enable-shared is not used. - if test "${shared_bfd}" != "true"; then - BFDLIB='../bfd/libbfd.a' - fi - ;; - esac - - if test "${commonbfdlib}" = "true"; then - # when a shared libbfd is built with --enable-commonbfdlib, - # all of libopcodes is available in libbfd.so - OPCODES_LIB= - fi ;; esac @@ -1422,8 +2022,6 @@ esac - - cat >> confdefs.h <&6 -echo "configure:1449: checking for $ac_word" >&5 +echo "configure:2049: 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 @@ -1477,7 +2075,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:1478: checking for $ac_word" >&5 +echo "configure:2078: 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 @@ -1525,7 +2123,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1526: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2126: 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. @@ -1535,11 +2133,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 @@ -1559,12 +2157,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:1560: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2160: 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:1565: checking whether we are using GNU C" >&5 +echo "configure:2165: 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 @@ -1573,7 +2171,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1574: \"$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:2174: \"$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 @@ -1588,7 +2186,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1589: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2189: 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 @@ -1615,69 +2213,120 @@ else test "${CFLAGS+set}" = set || CFLAGS="-g" fi -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1627: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + +for ac_prog in 'bison -y' byacc +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2222: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - for ac_prog in ginstall installbsd scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - # OSF/1 installbsd also uses dspmsg, but is usable. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_YACC="$ac_prog" + break + fi done - IFS="$ac_save_IFS" + IFS="$ac_save_ifs" +fi +fi +YACC="$ac_cv_prog_YACC" +if test -n "$YACC"; then + echo "$ac_t""$YACC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +# Extract the first word of "flex", so it can be a program name with args. +set dummy flex; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2254: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LEX="flex" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex" +fi +fi +LEX="$ac_cv_prog_LEX" +if test -n "$LEX"; then + echo "$ac_t""$LEX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$LEXLIB" +then + case "$LEX" in + flex*) ac_lib=fl ;; + *) ac_lib=l ;; + esac + echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 +echo "configure:2287: checking for yywrap in -l$ac_lib" >&5 +ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-l$ac_lib $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LEXLIB="-l$ac_lib" +else + echo "$ac_t""no" 1>&6 fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1678: checking how to run the C preprocessor" >&5 +echo "configure:2329: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1692,13 +2341,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:1699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1709,13 +2358,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:1716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1737,21 +2386,187 @@ else fi echo "$ac_t""$CPP" 1>&6 +echo $ac_n "checking lex output file root""... $ac_c" 1>&6 +echo "configure:2390: checking lex output file root" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +echo '%% +%%' | $LEX +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } +fi +fi + +echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 +echo "configure:2411: checking whether yytext is a pointer" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS="$LIBS" +LIBS="$LIBS $LEXLIB" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_prog_lex_yytext_pointer=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +LIBS="$ac_save_LIBS" +rm -f "${LEX_OUTPUT_ROOT}.c" + +fi + +echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 +if test $ac_cv_prog_lex_yytext_pointer = yes; then + cat >> confdefs.h <<\EOF +#define YYTEXT_POINTER 1 +EOF + +fi + + +echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 +echo "configure:2453: 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" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6 + if test $USE_MAINTAINER_MODE = yes; then + MAINT= + else + MAINT='#M#' + fi + + +echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6 +echo "configure:2471: checking for Cygwin32 environment" >&5 +if eval "test \"`echo '$''{'am_cv_cygwin32'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_cygwin32=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_cygwin32=no +fi +rm -f conftest* +rm -f conftest* +fi + +echo "$ac_t""$am_cv_cygwin32" 1>&6 +CYGWIN32= +test "$am_cv_cygwin32" = yes && CYGWIN32=yes +echo $ac_n "checking for Mingw32 environment""... $ac_c" 1>&6 +echo "configure:2500: checking for Mingw32 environment" >&5 +if eval "test \"`echo '$''{'am_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 + rm -rf conftest* + am_cv_mingw32=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_mingw32=no +fi +rm -f conftest* +rm -f conftest* +fi + +echo "$ac_t""$am_cv_mingw32" 1>&6 +MINGW32= +test "$am_cv_mingw32" = yes && MINGW32=yes + + +echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +echo "configure:2531: checking for executable suffix" >&5 +if eval "test \"`echo '$''{'am_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$CYGWIN32" = yes || test "$MINGW32" = yes; then +am_cv_exeext=.exe +else +cat > am_c_test.c << 'EOF' +int main() { +/* Nothing needed here */ +} +EOF +${CC-cc} -o am_c_test $CFLAGS $CPPFLAGS $LDFLAGS am_c_test.c $LIBS 1>&5 +am_cv_exeext=`echo am_c_test.* | grep -v am_c_test.c | sed -e s/am_c_test//` +rm -f am_c_test* +fi + +test x"${am_cv_exeext}" = x && am_cv_exeext=no +fi +EXEEXT="" +test x"${am_cv_exeext}" != xno && EXEEXT=${am_cv_exeext} +echo "$ac_t""${am_cv_exeext}" 1>&6 + + for ac_hdr in string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1742: checking for $ac_hdr" >&5 +echo "configure:2559: 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:1752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1781,7 +2596,7 @@ done # Put this here so that autoconf's "cross-compiling" message doesn't confuse # people who are not cross-compiling but are compiling cross-assemblers. echo $ac_n "checking whether compiling a cross-assembler""... $ac_c" 1>&6 -echo "configure:1782: checking whether compiling a cross-assembler" >&5 +echo "configure:2599: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -1796,19 +2611,19 @@ echo "$ac_t""$cross_gas" 1>&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:1797: checking for working alloca.h" >&5 +echo "configure:2614: 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:1809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -1829,12 +2644,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:1830: checking for alloca" >&5 +echo "configure:2647: 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; then +if { (eval echo configure:2675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -1889,12 +2704,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:1890: checking whether alloca needs Cray hooks" >&5 +echo "configure:2707: 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:1920: checking for $ac_func" >&5 +echo "configure:2737: 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; then +if { (eval echo configure:2765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1974,7 +2789,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:1975: checking stack direction for C alloca" >&5 +echo "configure:2792: 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 @@ -1982,7 +2797,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2023,21 +2838,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2024: checking for inline" >&5 +echo "configure:2841: 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:2855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2067,12 +2882,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2068: checking for $ac_func" >&5 +echo "configure:2885: 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; then +if { (eval echo configure:2913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2124,12 +2939,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2125: checking for $ac_func" >&5 +echo "configure:2942: 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; then +if { (eval echo configure:2970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2181,12 +2996,12 @@ done # enough, but on some of those systems, the assert macro relies on requoting # working properly! echo $ac_n "checking for working assert macro""... $ac_c" 1>&6 -echo "configure:2182: checking for working assert macro" >&5 +echo "configure:2999: checking for working assert macro" >&5 if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2202,7 +3017,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:2203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -2243,12 +3058,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:2244: checking whether declaration is required for strstr" >&5 +echo "configure:3061: checking whether declaration is required for strstr" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_decl_needed_strstr=no else @@ -2280,12 +3095,12 @@ EOF echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:2281: checking whether declaration is required for malloc" >&5 +echo "configure:3098: checking whether declaration is required for malloc" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_decl_needed_malloc=no else @@ -2317,12 +3132,12 @@ EOF echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:2318: checking whether declaration is required for free" >&5 +echo "configure:3135: checking whether declaration is required for free" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_decl_needed_free=no else @@ -2354,12 +3169,12 @@ EOF echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:2355: checking whether declaration is required for sbrk" >&5 +echo "configure:3172: checking whether declaration is required for sbrk" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_sbrk'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_decl_needed_sbrk=no else @@ -2394,12 +3209,12 @@ EOF # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:2395: checking whether declaration is required for errno" >&5 +echo "configure:3212: checking whether declaration is required for errno" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* gas_cv_decl_needed_errno=no else @@ -2434,58 +3249,6 @@ EOF } -HLDFLAGS= -HLDENV= -RPATH_ENVVAR=LD_LIBRARY_PATH -# If we have shared libraries, try to set rpath reasonably. -if test "${shared}" = "true"; then - case "${host}" in - *-*-hpux*) - HLDFLAGS='-Wl,+s,+b,$(libdir)' - RPATH_ENVVAR=SHLIB_PATH - ;; - *-*-irix5* | *-*-irix6*) - HLDFLAGS='-Wl,-rpath,$(libdir)' - ;; - *-*-linux*aout*) - ;; - *-*-linux*) - HLDFLAGS='-Wl,-rpath,$(libdir)' - ;; - *-*-solaris*) - HLDFLAGS='-R $(libdir)' - ;; - *-*-sysv4*) - HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;' - ;; - esac -fi - -# On SunOS, if the linker supports the -rpath option, use it to -# prevent ../bfd and ../opcodes from being included in the run time -# search path. -case "${host}" in - *-*-sunos*) - echo 'main () { }' > conftest.c - ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t - if grep 'unrecognized' conftest.t >/dev/null 2>&1; then - : - elif grep 'No such file' conftest.t >/dev/null 2>&1; then - : - elif grep 'do not mix' conftest.t >/dev/null 2>&1; then - : - elif test "${shared}" = "true"; then - HLDFLAGS='-Wl,-rpath=$(libdir)' - else - HLDFLAGS='-Wl,-rpath=' - fi - rm -f conftest.t conftest.c conftest - ;; -esac - - - - trap '' 1 2 15 @@ -2511,7 +3274,7 @@ EOF # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | - case `(ac_space=' '; set) 2>&1` in + case `(ac_space=' '; set) 2>&1 | grep ac_space` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). @@ -2578,7 +3341,7 @@ do echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.12" + echo "$CONFIG_STATUS generated by autoconf version 2.12.1" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; @@ -2589,7 +3352,7 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "Makefile doc/Makefile .gdbinit:gdbinit.in conf" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "Makefile doc/Makefile .gdbinit:gdbinit.in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub +s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g @@ -2634,26 +3398,39 @@ s%@build_alias@%$build_alias%g s%@build_cpu@%$build_cpu%g s%@build_vendor@%$build_vendor%g s%@build_os@%$build_os%g -/@target_frag@/r $target_frag -s%@target_frag@%%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@RANLIB@%$RANLIB%g +s%@CC@%$CC%g +s%@LD@%$LD%g +s%@NM@%$NM%g +s%@LN_S@%$LN_S%g +s%@LIBTOOL@%$LIBTOOL%g s%@extra_objects@%$extra_objects%g s%@target_cpu_type@%$target_cpu_type%g s%@obj_format@%$obj_format%g s%@te_file@%$te_file%g s%@atof@%$atof%g -s%@BFDDEP@%$BFDDEP%g s%@BFDLIB@%$BFDLIB%g -s%@OPCODES_DEP@%$OPCODES_DEP%g s%@OPCODES_LIB@%$OPCODES_LIB%g s%@ALL_OBJ_DEPS@%$ALL_OBJ_DEPS%g -s%@CC@%$CC%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@YACC@%$YACC%g +s%@LEX@%$LEX%g +s%@LEXLIB@%$LEXLIB%g s%@CPP@%$CPP%g +s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g +s%@MAINT@%$MAINT%g +s%@EXEEXT@%$EXEEXT%g s%@ALLOCA@%$ALLOCA%g -s%@HLDFLAGS@%$HLDFLAGS%g -s%@HLDENV@%$HLDENV%g -s%@RPATH_ENVVAR@%$RPATH_ENVVAR%g CEOF EOF @@ -2776,7 +3553,7 @@ ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi @@ -2863,11 +3640,13 @@ fi; done EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h diff --git a/contrib/binutils/gas/configure.in b/contrib/binutils/gas/configure.in index 9431028aa536..47589db3b18c 100644 --- a/contrib/binutils/gas/configure.in +++ b/contrib/binutils/gas/configure.in @@ -4,9 +4,16 @@ dnl And be careful when changing it! If you must add tests with square dnl brackets, be sure changequote invocations surround it. dnl dnl -AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al -AC_INIT(as.h)dnl -dnl +dnl v2.5 needed for --bindir et al +AC_PREREQ(2.5) +AC_INIT(as.h) + +AC_CANONICAL_SYSTEM + +AM_INIT_AUTOMAKE(gas, 2.9.1) + +AM_PROG_LIBTOOL + user_bfd_gas= AC_ARG_ENABLE(bfd-assembler, [ --enable-bfd-assembler use BFD back end for writing object files], @@ -23,17 +30,6 @@ AC_ARG_ENABLE(targets, no) enable_targets= ;; *) enable_targets=$enableval ;; esac])dnl -AC_ARG_ENABLE(shared, -[ --enable-shared build shared BFD library], -[case "${enableval}" in - yes) shared=true shared_bfd=true shared_opcodes=true ;; - no) shared=false ;; - *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;; - *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;; - *bfd*) shared=true shared_bfd=true ;; - *opcodes*) shared=true shared_opcodes=true ;; - *) shared=false ;; -esac])dnl AC_ARG_ENABLE(commonbfdlib, [ --enable-commonbfdlib build shared BFD/opcodes/libiberty library], [case "${enableval}" in @@ -42,13 +38,8 @@ AC_ARG_ENABLE(commonbfdlib, *) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;; esac])dnl -# Generate a header file -- gets more post-processing by Makefile later. -AC_CONFIG_HEADER(conf) - -dnl For recursion to work right, this must be an absolute pathname. -AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..) -AC_CANONICAL_SYSTEM -AC_ARG_PROGRAM +# Generate a header file +AM_CONFIG_HEADER(config.h:config.in) te_file=generic @@ -75,9 +66,13 @@ changequote(,)dnl changequote([,])dnl # check for architecture variants + arch= + endian= case ${cpu} in + alpha*) cpu_type=alpha ;; armeb) cpu_type=arm endian=big ;; arm*) cpu_type=arm endian=little ;; + thumb*) cpu_type=arm endian=little ;; hppa*) cpu_type=hppa ;; changequote(,)dnl i[456]86) cpu_type=i386 ;; @@ -91,18 +86,25 @@ changequote([,])dnl powerpcle*) cpu_type=ppc endian=little ;; powerpc*) cpu_type=ppc endian=big ;; rs6000*) cpu_type=ppc ;; - sparc64) cpu_type=sparc want_sparc_v9=true ;; - sparc*) cpu_type=sparc ;; + sparclite*) cpu_type=sparc arch=sparclite ;; + sparclet*) cpu_type=sparc arch=sparclet ;; + sparc64*) cpu_type=sparc arch=v9-64 ;; + sparc*) cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c. + v850*) cpu_type=v850 ;; *) cpu_type=${cpu} ;; esac if test ${this_target} = $target ; then target_cpu_type=${cpu_type} + if test x${endian} = xbig; then + AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 1) + elif test x${endian} = xlittle; then + AC_DEFINE(TARGET_BYTES_BIG_ENDIAN, 0) + fi elif test ${target_cpu_type} != ${cpu_type} ; then continue fi - targ=${cpu_type} generic_target=${cpu_type}-$vendor-$os dev=no bfd_gas=no @@ -110,30 +112,27 @@ changequote([,])dnl # assign object format case ${generic_target} in - a29k-*-coff) fmt=coff targ=ebmon29k ;; - a29k-amd-udi) fmt=coff targ=ebmon29k ;; - a29k-amd-ebmon) fmt=coff targ=ebmon29k ;; - a29k-nyu-sym1) fmt=coff targ=ebmon29k ;; + a29k-*-coff) fmt=coff ;; + a29k-amd-udi) fmt=coff ;; + a29k-amd-ebmon) fmt=coff ;; + a29k-nyu-sym1) fmt=coff ;; a29k-*-vxworks*) fmt=coff ;; - alpha-*-*vms*) fmt=evax ;; - alpha-*-netware*) fmt=ecoff ;; - alpha-*-openbsd*) fmt=ecoff ;; - alpha-*-osf*) fmt=ecoff ;; - alpha-*-linuxecoff*) fmt=ecoff ;; - alpha-*-linux*) fmt=elf em=linux ;; + alpha*-*-*vms*) fmt=evax ;; + alpha*-*-netware*) fmt=ecoff ;; + alpha*-*-openbsd*) fmt=ecoff ;; + alpha*-*-osf*) fmt=ecoff ;; + alpha*-*-linuxecoff*) fmt=ecoff ;; + alpha*-*-linux-gnu*) fmt=elf em=linux ;; + alpha*-*-netbsd*) fmt=elf em=nbsd ;; + arc-*-elf*) fmt=elf bfd_gas=yes ;; - arm-*-riscix*) fmt=aout targ=arm-lit em=riscix ;; - arm-*-aout) fmt=aout - case "$endian" in - big) targ=arm-big ;; - *) targ=arm-lit ;; - esac - ;; - arm-*-coff) fmt=coff ;; + arm-*-riscix*) fmt=aout em=riscix ;; + arm-*-aout) fmt=aout ;; + arm-*-coff | thumb-*-coff) fmt=coff ;; arm-*-riscix*) fmt=aout ;; - arm-*-pe) fmt=coff targ=armcoff em=pe ;; + arm-*-pe | thumb-*-pe) fmt=coff em=pe ;; d10v-*-*) fmt=elf bfd_gas=yes ;; @@ -147,142 +146,122 @@ changequote([,])dnl h8300-*-coff) fmt=coff ;; - i386-ibm-aix*) fmt=coff targ=i386coff - em=i386aix ;; + i386-ibm-aix*) fmt=coff em=i386aix ;; i386-sequent-bsd*) fmt=aout em=dynix bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;; - i386-*-linux*coff*) fmt=coff em=linux - targ=i386coff ;; - i386-*-linux*) fmt=elf em=linux ;; - i386-*-lynxos*) fmt=coff targ=i386coff - em=lynx ;; + i386-*-linux*coff*) fmt=coff em=linux ;; + i386-*-linux-gnu*) fmt=elf em=linux ;; + i386-*-lynxos*) fmt=coff em=lynx ;; i386-*-sysv4* | i386-*-solaris* | i386-*-elf) fmt=elf ;; - i386-*-freebsdelf*) fmt=elf em=freebsd ;; + i386-*-freebsdelf*) fmt=elf em=freebsd;; i386-*-freebsd*) fmt=aout em=freebsd bfd_gas=yes ;; - i386-*-sco*elf*) fmt=elf targ=sco5 ;; - i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*) - fmt=coff targ=i386coff ;; + i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*) + fmt=coff ;; + i386-*-sco3.2v5*) fmt=elf + if test ${this_target} = $target; then + AC_DEFINE(SCO_ELF) + fi + ;; + i386-*-sco3.2*) fmt=coff ;; i386-*-vsta) fmt=aout ;; - i386-*-go32) fmt=coff targ=i386coff ;; - i386-*-rtems*) fmt=coff targ=i386coff ;; + i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*) + fmt=coff em=go32;; + i386-*-rtems*) fmt=coff ;; i386-*-gnu*) fmt=elf ;; i386-*-mach*) fmt=aout em=mach bfd_gas=yes ;; i386-*-msdos*) fmt=aout ;; i386-*-moss*) fmt=elf ;; - i386-*-pe) fmt=coff targ=i386coff em=pe ;; - i386-*-cygwin32) fmt=coff targ=i386coff em=pe ;; - i386-*-*nt) fmt=coff targ=i386coff em=pe ;; + i386-*-pe) fmt=coff em=pe ;; + i386-*-cygwin32*) fmt=coff em=pe bfd_gas=yes ;; + i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;; + i386-*-*nt*) fmt=coff em=pe ;; i960-*-bout) fmt=bout ;; - i960-*-coff) fmt=coff em=ic960 targ=ic960coff ;; - i960-*-rtems*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-coff) fmt=coff em=ic960 ;; + i960-*-rtems*) fmt=coff em=ic960 ;; i960-*-nindy*) fmt=bout ;; i960-*-vxworks4*) fmt=bout ;; i960-*-vxworks5.0) fmt=bout ;; - i960-*-vxworks5.*) fmt=coff em=ic960 targ=ic960coff ;; + i960-*-vxworks5.*) fmt=coff em=ic960 ;; i960-*-vxworks*) fmt=bout ;; m32r-*-*) fmt=elf bfd_gas=yes ;; m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*) fmt=aout em=sun3 ;; - m68k-motorola-sysv*) fmt=coff targ=m68kcoff em=delta ;; - m68k-bull-sysv3*) fmt=coff targ=m68kcoff em=dpx2 ;; - m68k-apollo-*) fmt=coff targ=apollo em=apollo ;; + m68k-motorola-sysv*) fmt=coff em=delta ;; + m68k-bull-sysv3*) fmt=coff em=dpx2 ;; + m68k-apollo-*) fmt=coff em=apollo ;; m68k-*-sysv4*) # must be before -sysv* fmt=elf em=svr4 ;; m68k-*-elf*) fmt=elf ;; m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*) - fmt=coff targ=m68kcoff ;; + fmt=coff ;; m68k-*-hpux*) fmt=hp300 em=hp300 ;; m68k-*-linux*aout*) fmt=aout em=linux ;; - m68k-*-linux*) fmt=elf em=linux ;; - m68k-*-lynxos*) fmt=coff targ=m68kcoff - em=lynx ;; + m68k-*-linux-gnu*) fmt=elf em=linux ;; + m68k-*-lynxos*) fmt=coff em=lynx ;; m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; - m68k-apple-aux*) fmt=coff targ=m68kcoff em=aux ;; + m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; - m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;; - m88k-*-coff*) fmt=coff targ=m88kcoff ;; + m88k-motorola-sysv3*) fmt=coff em=delt88 ;; + m88k-*-coff*) fmt=coff ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf targ=mips-lit endian=little ;; - mips-dec-openbsd*) fmt=elf targ=mips-lit endian=little ;; - mips-dec-bsd*) fmt=aout targ=mips-lit ;; - mips-sony-bsd*) fmt=ecoff targ=mips-big ;; + mips-dec-netbsd*) fmt=elf endian=little ;; + mips-dec-openbsd*) fmt=elf endian=little ;; + mips-dec-bsd*) fmt=aout ;; + mips-sony-bsd*) fmt=ecoff ;; mips-*-bsd*) AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;; - mips-*-ultrix*) fmt=ecoff targ=mips-lit endian=little ;; - mips-*-osf*) fmt=ecoff targ=mips-lit endian=little ;; - mips-*-ecoff*) fmt=ecoff - case "$endian" in - big) targ=mips-big ;; - *) targ=mips-lit ;; - esac - ;; - mips-*-ecoff*) fmt=ecoff targ=mips-big ;; - mips-*-irix6*) fmt=elf targ=mips-big ;; - mips-*-irix5*) fmt=elf targ=mips-big ;; - mips-*-irix*) fmt=ecoff targ=mips-big ;; - mips-*-lnews*) fmt=ecoff targ=mips-lit em=lnews ;; - mips-*-riscos*) fmt=ecoff targ=mips-big ;; - mips-*-sysv*) fmt=ecoff targ=mips-big ;; - mips-*-elf* | mips-*-rtems* | mips-*-linux* | mips-*-gnu* | mips-*-openbsd*) - fmt=elf - case "$endian" in - big) targ=mips-big ;; - *) targ=mips-lit ;; - esac - ;; + mips-*-ultrix*) fmt=ecoff endian=little ;; + mips-*-osf*) fmt=ecoff endian=little ;; + mips-*-ecoff*) fmt=ecoff ;; + mips-*-ecoff*) fmt=ecoff ;; + mips-*-irix6*) fmt=elf ;; + mips-*-irix5*) fmt=elf ;; + mips-*-irix*) fmt=ecoff ;; + mips-*-lnews*) fmt=ecoff em=lnews ;; + mips-*-riscos*) fmt=ecoff ;; + mips-*-sysv*) fmt=ecoff ;; + mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*) + fmt=elf ;; mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*) - fmt=coff em=pe - case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac - ;; + fmt=coff em=pe ;; ppc-*-aix*) fmt=coff ;; ppc-*-beos*) fmt=coff ;; ppc-*-*bsd* | ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*) - fmt=elf + fmt=elf ;; + ppc-*-linux-gnu*) fmt=elf case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac - ;; - ppc-*-linux*) fmt=elf - case "$endian" in - big) targ=ppc-big ;; - *) AC_MSG_ERROR(Linux must be configured big endian) ;; + big) ;; + *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;; esac ;; ppc-*-solaris*) fmt=elf - case "$endian" in - big) AC_MSG_ERROR(Solaris must be configured little endian) ;; - *) targ=ppc-sol ;; - esac - ;; - ppc-*-rtems*) - fmt=elf - case "$endian" in - big) targ=ppc-big ;; - *) targ=ppc-lit ;; - esac + if test ${this_target} = $target; then + AC_DEFINE(TARGET_SOLARIS_COMMENT) + fi + if test x${endian} = xbig; then + AC_MSG_ERROR(Solaris must be configured little endian) + fi ;; + ppc-*-rtems*) fmt=elf ;; ppc-*-macos* | ppc-*-mpw*) fmt=coff em=macos ;; ppc-*-netware*) fmt=elf em=ppcnw ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff ;; + sh-*-rtems*) fmt=coff ;; ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;; ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;; @@ -294,7 +273,7 @@ changequote([,])dnl fmt=aout em=sparcaout ;; sparc-*-coff) fmt=coff ;; sparc-*-linux*aout*) fmt=aout em=linux ;; - sparc-*-linux*) fmt=elf em=linux ;; + sparc-*-linux-gnu*) fmt=elf em=linux ;; sparc-*-lynxos*) fmt=coff em=lynx ;; sparc-fujitsu-none) fmt=aout ;; sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*) @@ -302,6 +281,12 @@ changequote([,])dnl sparc-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; sparc-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + tic30-*-*aout*) fmt=aout bfd_gas=yes ;; + tic30-*-*coff*) fmt=coff bfd_gas=yes ;; + + + v850-*-*) fmt=elf bfd_gas=yes ;; + vax-*-bsd* | vax-*-ultrix*) fmt=aout ;; vax-*-vms) fmt=vms ;; @@ -328,7 +313,7 @@ changequote([,])dnl esac case ${cpu_type}-${fmt} in - alpha-*) bfd_gas=yes ;; + alpha*-*) bfd_gas=yes ;; arm-*) bfd_gas=yes ;; # not yet # i386-aout) bfd_gas=preferred ;; @@ -346,10 +331,16 @@ changequote([,])dnl # do we need the opcodes library? case ${cpu_type} in - vax | i386) + vax | i386 | tic30) ;; *) need_opcodes=yes + + case "${enable_shared}" in + yes) shared_opcodes=true ;; + *opcodes*) shared_opcodes=true ;; + *) shared_opcodes=false ;; + esac if test "${shared_opcodes}" = "true"; then # A shared libopcodes must be linked against libbfd. need_bfd=yes @@ -357,12 +348,6 @@ changequote([,])dnl ;; esac - test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9) - - case ${cpu}-${vendor}-${os} in - sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;; - esac - case ${cpu_type} in m32r) case ${extra_objects} in @@ -397,6 +382,12 @@ changequote([,])dnl fi ;; + sparc) + if test $this_target = $target ; then + AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}") + fi + ;; + *) ;; esac @@ -406,7 +397,6 @@ changequote([,])dnl if test $this_target = $target ; then primary_bfd_gas=$bfd_gas obj_format=$fmt - gas_target=$targ te_file=$em if test $bfd_gas = no ; then @@ -422,7 +412,7 @@ changequote([,])dnl case ${generic_target}-${fmt} in mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; - mips-*-linux*-*) case "$endian" in + mips-*-linux-gnu*-*) case "$endian" in big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;; esac ;; @@ -469,14 +459,6 @@ if test ! -r ${srcdir}/config/obj-${obj_format}.c; then AC_MSG_ERROR(GAS does not have support for object file format ${obj_format}) fi -# and target makefile frag - -target_frag=${srcdir}/config/${gas_target}.mt -if test ! -r ${target_frag}; then - target_frag=/dev/null # ick! but subst_file can't be conditionalized -fi -AC_SUBST_FILE(target_frag) - case ${user_bfd_gas}-${primary_bfd_gas} in yes-yes | no-no) # We didn't override user's choice. @@ -599,74 +581,18 @@ esac # do we need the opcodes library? case "${need_opcodes}" in yes) - OPCODES_DEP=../opcodes/libopcodes.a - OPCODES_LIB='-L../opcodes -lopcodes' - - # We need to handle some special cases for shared libraries. - case "${host}" in - *-*-sunos*) - # On SunOS, we must link against the name we are going to install, - # not -lbfd, since SunOS does not support SONAME. - if test "${shared_opcodes}" = "true"; then - OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`' - fi - ;; - alpha*-*-osf*) - # On Alpha OSF/1, the native linker searches all the -L - # directories for any LIB.so files, and only then searches for any - # LIB.a files. That means that if there is an installed - # libbfd.so, but this build is not done with --enable-shared, the - # link will wind up being against the install libbfd.so rather - # than the newly built libbfd. To avoid this, we must explicitly - # link against libbfd.a when --enable-shared is not used. - if test "${shared_opcodes}" != "true"; then - OPCODES_LIB='../opcodes/libopcodes.a' - fi - ;; - esac + OPCODES_LIB=../opcodes/libopcodes.la ;; esac case "${need_bfd}" in yes) - BFDDEP=../bfd/libbfd.a - BFDLIB='-L../bfd -lbfd' + BFDLIB=../bfd/libbfd.la ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h" - - # We need to handle some special cases for shared libraries - case "${host}" in - *-*-sunos*) - # On SunOS, we must link against the name we are going to install, - # not -lbfd, since SunOS does not support SONAME. - if test "${shared_bfd}" = "true"; then - BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`' - fi - ;; - alpha*-*-osf*) - # On Alpha OSF/1, the native linker searches all the -L - # directories for any LIB.so files, and only then searches for any - # LIB.a files. That means that if there is an installed - # libbfd.so, but this build is not done with --enable-shared, the - # link will wind up being against the install libbfd.so rather - # than the newly built libbfd. To avoid this, we must explicitly - # link against libbfd.a when --enable-shared is not used. - if test "${shared_bfd}" != "true"; then - BFDLIB='../bfd/libbfd.a' - fi - ;; - esac - - if test "${commonbfdlib}" = "true"; then - # when a shared libbfd is built with --enable-commonbfdlib, - # all of libopcodes is available in libbfd.so - OPCODES_LIB= - fi ;; esac -AC_SUBST(BFDDEP) AC_SUBST(BFDLIB) -AC_SUBST(OPCODES_DEP) AC_SUBST(OPCODES_LIB) AC_SUBST(ALL_OBJ_DEPS) @@ -678,7 +604,14 @@ AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}") AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}") AC_PROG_CC -AC_PROG_INSTALL + +AC_PROG_YACC +AC_PROG_LEX +AC_DECL_YYTEXT + +AM_MAINTAINER_MODE +AM_CYGWIN32 +AM_EXEEXT AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h) @@ -743,58 +676,6 @@ GAS_CHECK_DECL_NEEDED(errno, f, int f, [ #endif ]) -HLDFLAGS= -HLDENV= -RPATH_ENVVAR=LD_LIBRARY_PATH -# If we have shared libraries, try to set rpath reasonably. -if test "${shared}" = "true"; then - case "${host}" in - *-*-hpux*) - HLDFLAGS='-Wl,+s,+b,$(libdir)' - RPATH_ENVVAR=SHLIB_PATH - ;; - *-*-irix5* | *-*-irix6*) - HLDFLAGS='-Wl,-rpath,$(libdir)' - ;; - *-*-linux*aout*) - ;; - *-*-linux*) - HLDFLAGS='-Wl,-rpath,$(libdir)' - ;; - *-*-solaris*) - HLDFLAGS='-R $(libdir)' - ;; - *-*-sysv4*) - HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;' - ;; - esac -fi - -# On SunOS, if the linker supports the -rpath option, use it to -# prevent ../bfd and ../opcodes from being included in the run time -# search path. -case "${host}" in - *-*-sunos*) - echo 'main () { }' > conftest.c - ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t - if grep 'unrecognized' conftest.t >/dev/null 2>&1; then - : - elif grep 'No such file' conftest.t >/dev/null 2>&1; then - : - elif grep 'do not mix' conftest.t >/dev/null 2>&1; then - : - elif test "${shared}" = "true"; then - HLDFLAGS='-Wl,-rpath=$(libdir)' - else - HLDFLAGS='-Wl,-rpath=' - fi - rm -f conftest.t conftest.c conftest - ;; -esac -AC_SUBST(HLDFLAGS) -AC_SUBST(HLDENV) -AC_SUBST(RPATH_ENVVAR) - dnl This must come last. dnl We used to make symlinks to files in the source directory, but now diff --git a/contrib/binutils/ld/Makefile.in b/contrib/binutils/ld/Makefile.in index f6f2b2c5d595..762fa34f7f42 100644 --- a/contrib/binutils/ld/Makefile.in +++ b/contrib/binutils/ld/Makefile.in @@ -1,77 +1,94 @@ -# Makefile for the GNU linker ld (version 2) -# Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 1997 -# Free Software Foundation, Inc. +# Makefile.in generated automatically by automake 1.2e from Makefile.am -# This file is part of GNU ld. +# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# 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. +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. -VPATH = @srcdir@ +SHELL = @SHELL@ + srcdir = @srcdir@ -objdir = . - -target_alias = @target_alias@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ prefix = @prefix@ - -program_transform_name = @program_transform_name@ exec_prefix = @exec_prefix@ + bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) +sbindir = @sbindir@ +libexecdir = @libexecdir@ datadir = @datadir@ -mandir = @mandir@ -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ infodir = @infodir@ +mandir = @mandir@ includedir = @includedir@ +oldincludedir = /usr/include + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +CC = @CC@ +EXEEXT = @EXEEXT@ +HDEFINES = @HDEFINES@ +LD = @LD@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +NATIVE_LIB_DIRS = @NATIVE_LIB_DIRS@ +NM = @NM@ +PACKAGE = @PACKAGE@ +RANLIB = @RANLIB@ +TDIRS = @TDIRS@ +VERSION = @VERSION@ + +AUTOMAKE_OPTIONS = cygnus dejagnu + +tooldir = $(exec_prefix)/$(target_alias) + +YACC = `if [ -f ../bison/bison ] ; then echo ../bison/bison -y -L../bison/bison ; else echo bison -y ; fi` +YFLAGS = -d +LEX = `if [ -f ../flex/flex ] ; then echo ../flex/flex ; else echo flex ; fi` # We put the scripts in the directory $(scriptdir)/ldscripts. # We can't put the scripts in $(datadir) because the SEARCH_DIR # directives need to be different for native and cross linkers. scriptdir = $(tooldir)/lib -SHELL = /bin/sh - -INSTALL = `cd $(srcdir); pwd`/../install.sh -c -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_XFORM = $(INSTALL) -t='$(program_transform_name)' -INSTALL_XFORM1 = $(INSTALL_XFORM) -b=.1 - -AR = ar -AR_FLAGS = qv -CC = @CC@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ -HLDFLAGS = @HLDFLAGS@ -HLDENV = @HLDENV@ -RPATH_ENVVAR = @RPATH_ENVVAR@ -MAKEINFO = makeinfo -TEXI2DVI = texi2dvi -RANLIB = ranlib -BISON = bison -y -LEX = `if [ -f ../flex/flex ] ; then echo ../flex/flex ; else echo flex ; fi` - EMUL = @EMUL@ EMULATION_OFILES = @EMULATION_OFILES@ @@ -86,44 +103,16 @@ LIB_PATH = BASEDIR = $(srcdir)/.. BFDDIR = $(BASEDIR)/bfd INCDIR = $(BASEDIR)/include -INCLUDES = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) DEP = mkdep # What version of the manual to build DOCVER = gen -# Where to find texinfo.tex to format docn with TeX -TEXIDIR = $(srcdir)/../texinfo - -# Where to find other docs needed to format with TeX -TEXINPUTS = $(TEXIDIR):$(BFDDIR)/doc:$(srcdir) - -# Whether to get roff to put indexing entries on stderr -TEXI2OPT = -# You neeed this to generate ld-index.ms (or .mm or .me) -# TEXI2OPT = -i - -TEXI2ROFF=texi2roff - -# Which roff program to use to generate index for texi2roff'd doc -ROFF = groff - #stuff for self hosting (can be overridden in config file). HOSTING_CRT0 = @HOSTING_CRT0@ HOSTING_LIBS = @HOSTING_LIBS@ HOSTING_EMU = -m $(EMUL) -# These were used by `make check-cdtest' -# -#CXX = `if [ -f ../gcc/xgcc ] ; then \ -# echo ../gcc/xgcc -B../gcc/; \ -# else echo gcc; \ -# fi` -#CXXFLAGS = -fgnu-linker -# -# FIX_ME: using ../gcc/xgcc breaks the cdtest. -#CXX = g++ - # Setup the testing framework, if you have one EXPECT = `if [ -f $$r/../expect/expect ] ; \ then echo $$r/../expect/expect ; \ @@ -146,7 +135,7 @@ CC_FOR_TARGET = ` \ if [ "@host@" = "@target@" ] ; then \ echo $(CC); \ else \ - echo gcc | sed '$(program_transform_name)'; \ + echo gcc | sed '$(transform)'; \ fi; \ fi` @@ -162,37 +151,18 @@ CXX_FOR_TARGET = ` \ if [ "@host@" = "@target@" ] ; then \ echo $(CXX); \ else \ - echo gcc | sed '$(program_transform_name)'; \ + echo gcc | sed '$(transform)'; \ fi; \ fi` -# go directly to ld.new in case this ld isn't capable of -# linking native object on this host. It can be renamed on -# install. -LD_PROG = ld.new +noinst_PROGRAMS = ld-new +info_TEXINFOS = ld.texinfo +noinst_TEXINFOS = ldint.texinfo +man_MANS = ld.1 -all: $(LD_PROG) -.PHONY: all +INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) $(HDEFINES) $(CFLAGS) -LINTFLAGS = $(INCLUDES) $(EXTRA_DEF) - -# The .cc suffix was used by `make check-cdtest'. - -.SUFFIXES: .y $(SUFFIXES) .cc - -# Suppress smart makes who think they know how to automake Yacc files -.y.c: - -# This rule was used for the check-cdtest target. -#.cc.o: -# $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(CFLAGS) $< - -ALL_CFLAGS = -D_GNU_SOURCE $(INCLUDES) @HDEFINES@ $(CFLAGS) -.c.o: - $(CC) -c $(ALL_CFLAGS) $< - -BFDDEP = ../bfd/libbfd.a -BFDLIB = @BFDLIB@ +BFDLIB = ../bfd/libbfd.la LIBIBERTY = ../libiberty/libiberty.a ALL_EMULATIONS = \ @@ -200,11 +170,13 @@ ALL_EMULATIONS = \ eaixppc.o \ eaixrs6.o \ ealpha.o \ + earcelf.o \ earmaoutb.o \ earmaoutl.o \ earmcoff.o \ earmpe.o \ ecoff_sparc.o \ + ed10velf.o \ edelta68.o \ eebmon29k.o \ eelf32_sparc.o \ @@ -216,7 +188,6 @@ ALL_EMULATIONS = \ eelf32lmip.o \ eelf32lppc.o \ eelf32ppc.o \ - eelf64_sparc.o \ eelf_i386.o \ egld960.o \ egld960coff.o \ @@ -281,6 +252,8 @@ ALL_EMULATIONS = \ est2000.o \ esun3.o \ esun4.o \ + etic30aout.o \ + etic30coff.o \ evanilla.o \ evax.o \ evsta.o \ @@ -289,6 +262,7 @@ ALL_EMULATIONS = \ ez8002.o ALL_64_EMULATIONS = \ + eelf64_sparc.o \ eelf64alpha.o CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \ @@ -306,24 +280,449 @@ OFILES = ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o \ ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o \ ldfile.o ldcref.o ${EMULATION_OFILES} -LINTSOURCES = $(CFILES) $(GENERATED_CFILES) e*.c - STAGESTUFF = *.o ldscripts/* e*.c -info: ld.info -.PHONY: info +# These all start with e so 'make clean' can find them. -ldgram.c: ldgram.y - $(BISON) $(BISONFLAGS) -d $(srcdir)/ldgram.y - mv -f y.tab.c ldgram.c - mv -f y.tab.h ldgram.h +GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ ${EMUL} "@NATIVE_LIB_DIRS@" +GEN_DEPENDS = $(srcdir)/genscripts.sh $(srcdir)/emultempl/stringify.sed -# Separate from ldgram.c so that a parallel make doesn't try to build -# both ldgram.c and ldgram.h simultaneously. +ld_new_SOURCES = ldgram.y ldlex.l lexsup.c ldlang.c mri.c ldctor.c ldmain.c \ + ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c +ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(BFDLIB) $(LIBIBERTY) +ld_new_LDADD = $(EMULATION_OFILES) $(BFDLIB) $(LIBIBERTY) + +# This is the real libbfd.a created by libtool. +TESTBFDLIB = @TESTBFDLIB@ + +MOSTLYCLEANFILES = $(STAGESTUFF) ld1$(EXEEXT) ld2$(EXEEXT) ld3$(EXEEXT) \ + ldemul-list.h crtbegin.o crtend.o ld.log ld.sum +CLEANFILES = dep.sed .dep .dep1 + +# Stuff that should be included in a distribution. The diststuff +# target is run by the taz target in ../Makefile.in. +LDDISTSTUFF = ldgram.c ldgram.h ldlex.c + +DISTCLEANFILES = site.exp site.bak +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +noinst_PROGRAMS = ld-new$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I. +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +ld_new_OBJECTS = ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o \ +ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o +ld_new_LDFLAGS = +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LEXLIB = @LEXLIB@ +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then echo $(top_srcdir)/../texinfo/util/texi2dvi; else echo texi2dvi; fi` +TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex +INFO_DEPS = ld.info +DVIS = ld.dvi +TEXINFOS = ld.texinfo +MANS = ld.1 + +NROFF = nroff +DIST_COMMON = README ChangeLog Makefile.am Makefile.in NEWS TODO \ +acconfig.h acinclude.m4 aclocal.m4 config.in configure configure.in \ +ldgram.c ldlex.c stamp-h.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP = --best +SOURCES = $(ld_new_SOURCES) +OBJECTS = $(ld_new_OBJECTS) + +default: all + +.SUFFIXES: +.SUFFIXES: .S .c .dvi .info .l .lo .o .ps .s .texi .texinfo .y +$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): @MAINT@ configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck +$(srcdir)/configure: @MAINT@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h + @: +stamp-h: $(srcdir)/config.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h:config.in \ + $(SHELL) ./config.status + @echo timestamp > stamp-h +$(srcdir)/config.in: @MAINT@$(srcdir)/stamp-h.in +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h + +maintainer-clean-hdr: + +mostlyclean-noinstPROGRAMS: + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +distclean-noinstPROGRAMS: + +maintainer-clean-noinstPROGRAMS: + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.s.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +.S.lo: + $(LIBTOOL) --mode=compile $(COMPILE) -c $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + +maintainer-clean-libtool: + +ld-new$(EXEEXT): $(ld_new_OBJECTS) $(ld_new_DEPENDENCIES) + @rm -f ld-new$(EXEEXT) + $(LINK) $(ld_new_LDFLAGS) $(ld_new_OBJECTS) $(ld_new_LDADD) $(LIBS) +.y.c: + $(YACC) $(YFLAGS) $< && mv y.tab.c $*.c + if test -f y.tab.h; then \ + if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \ + else :; fi ldgram.h: ldgram.c +.l.c: + $(LEX) $(LFLAGS) $< && mv $(LEX_OUTPUT_ROOT).c $@ + +ld.info: ld.texinfo +ld.dvi: ld.texinfo + + +DVIPS = dvips + +.texi.info: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< + +.texi.dvi: + TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.texi: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< + +.texinfo.info: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< + +.texinfo: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< + +.texinfo.dvi: + TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< +.dvi.ps: + $(DVIPS) $< -o $@ + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(infodir) + @for file in $(INFO_DEPS); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$d/$$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + for file in $(INFO_DEPS); do \ + echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ + install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ + done; \ + else : ; fi + +uninstall-info: + $(PRE_UNINSTALL) + @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + ii=yes; \ + else ii=; fi; \ + for file in $(INFO_DEPS); do \ + test -z "$ii" \ + || install-info --info-dir=$(infodir) --remove $$file; \ + done + $(NORMAL_UNINSTALL) + for file in $(INFO_DEPS); do \ + (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + done + +dist-info: $(INFO_DEPS) + for base in $(INFO_DEPS); do \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + for file in `cd $$d && eval echo $$base*`; do \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done; \ + done + +mostlyclean-aminfo: + -rm -f ld.aux ld.cp ld.cps ld.dvi ld.fn ld.fns ld.ky ld.kys ld.ps \ + ld.log ld.pg ld.toc ld.tp ld.tps ld.vr ld.vrs ld.op ld.tr \ + ld.cv ld.cn + +clean-aminfo: + +distclean-aminfo: + +maintainer-clean-aminfo: + for i in $(INFO_DEPS); do \ + rm -f $$i; \ + if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ + rm -f $$i-[0-9]*; \ + fi; \ + done +clean-info: mostlyclean-aminfo +install-man: $(MANS) + $(NORMAL_INSTALL) + $(mkinstalldirs) $(mandir)/man1 + @sect=1; \ + inst=`echo "ld" | sed '$(transform)'`.1; \ + if test -f $(srcdir)/ld.1; then file=$(srcdir)/ld.1; \ + else file=ld.1; fi; \ + echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ + $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst + +uninstall-man: + $(NORMAL_UNINSTALL) + -inst=`echo "ld" | sed '$(transform)'`.1; \ + rm -f $(mandir)/man1/$$inst + + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP) + +TAGS: $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.in $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) \ + && $(MAKE) dvi \ + && $(MAKE) check \ + && $(MAKE) install \ + && $(MAKE) installcheck \ + && $(MAKE) dist + -rm -rf $(distdir) + @echo "========================"; \ + echo "$(distdir).tar.gz is ready for distribution"; \ + echo "========================" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file; \ + done + $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info + +DEJATOOL = $(PACKAGE) + +RUNTESTDEFAULTFLAGS = --tool $(DEJATOOL) --srcdir $$srcdir +site.exp: Makefile + @echo 'Making a new site.exp file...' + -@rm -f site.bak + @echo '## these variables are automatically generated by make ##' > $@-t + @echo '# Do not edit here. If you wish to override these values' >> $@-t + @echo '# edit the last section' >> $@-t + @echo 'set tool $(DEJATOOL)' >> $@-t + @echo 'set srcdir $(srcdir)' >> $@-t + @echo 'set objdir' `pwd` >> $@-t + @echo 'set host_alias $(host_alias)' >> $@-t + @echo 'set host_triplet $(host_triplet)' >> $@-t + @echo 'set target_alias $(target_alias)' >> $@-t + @echo 'set target_triplet $(target_triplet)' >> $@-t + @echo 'set build_alias $(build_alias)' >> $@-t + @echo 'set build_triplet $(build_triplet)' >> $@-t + @echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t + -@sed '1,/^## All variables above are.*##/ d' site.bak >> $@-t + -@mv site.exp site.bak + @mv $@-t site.exp +info: $(INFO_DEPS) +dvi: $(DVIS) +check: + $(MAKE) check-DEJAGNU +installcheck: +install-info: install-info-am +install-exec: install-exec-local + @$(NORMAL_INSTALL) + +install-data: install-man install-data-local + @$(NORMAL_INSTALL) + +install: install-exec install-data all + @: + +uninstall: uninstall-man + +all: Makefile $(PROGRAMS) $(MANS) config.h + +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install +installdirs: + $(mkinstalldirs) $(mandir)/man1 + + +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -rm -f Makefile $(DISTCLEANFILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +mostlyclean: mostlyclean-hdr mostlyclean-noinstPROGRAMS \ + mostlyclean-compile mostlyclean-libtool \ + mostlyclean-aminfo mostlyclean-tags mostlyclean-generic \ + mostlyclean-local + +clean: clean-hdr clean-noinstPROGRAMS clean-compile clean-libtool \ + clean-aminfo clean-tags clean-generic mostlyclean + +distclean: distclean-hdr distclean-noinstPROGRAMS distclean-compile \ + distclean-libtool distclean-aminfo distclean-tags \ + distclean-generic clean distclean-local + -rm -f config.status + -rm -f libtool + +maintainer-clean: maintainer-clean-hdr maintainer-clean-noinstPROGRAMS \ + maintainer-clean-compile maintainer-clean-libtool \ + maintainer-clean-aminfo maintainer-clean-tags \ + maintainer-clean-generic distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + -rm -f config.status + +.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \ +maintainer-clean-hdr mostlyclean-noinstPROGRAMS \ +distclean-noinstPROGRAMS clean-noinstPROGRAMS \ +maintainer-clean-noinstPROGRAMS mostlyclean-compile distclean-compile \ +clean-compile maintainer-clean-compile mostlyclean-libtool \ +distclean-libtool clean-libtool maintainer-clean-libtool \ +install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \ +clean-aminfo maintainer-clean-aminfo install-man uninstall-man tags \ +mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \ +distdir check-DEJAGNU info dvi installcheck install-info install-exec \ +install-data install uninstall all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + ldmain.o: ldmain.c config.status - $(CC) -c -DDEFAULT_EMULATION='"$(EMUL)"' -DSCRIPTDIR='"$(scriptdir)"' -DTARGET='"@target@"' $(ALL_CFLAGS) $< + $(COMPILE) -c -DDEFAULT_EMULATION='"$(EMUL)"' -DSCRIPTDIR='"$(scriptdir)"' -DTARGET='"@target@"' $(srcdir)/ldmain.c ldemul-list.h: Makefile (echo "/* This file is automatically generated. DO NOT EDIT! */";\ @@ -339,20 +738,6 @@ ldemul-list.h: Makefile done;\ echo " 0") >ldemul-tmp.h mv ldemul-tmp.h ldemul-list.h - -ldlex.c: ldlex.l - $(LEX) $(srcdir)/ldlex.l - -sed -e '/^int.*free();/d' \ - -e '/^char.*malloc();/d' \ - -e 's/malloc/xmalloc/g' \ - < lex.yy.c > ldlex.c.new - -rm lex.yy.c - mv ldlex.c.new ./ldlex.c - -# These all start with e so 'make clean' can find them. - -GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ ${EMUL} "@NATIVE_LIB_DIRS@" -GEN_DEPENDS = $(srcdir)/genscripts.sh $(srcdir)/emultempl/stringify.sed @TDIRS@ ea29k.c: $(srcdir)/emulparams/a29k.sh \ @@ -367,6 +752,9 @@ eaixrs6.c: $(srcdir)/emulparams/aixrs6.sh \ ealpha.c: $(srcdir)/emulparams/alpha.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/alpha.sc ${GEN_DEPENDS} ${GENSCRIPTS} alpha "$(tdir_alpha)" +earcelf.c: $(srcdir)/emulparams/arcelf.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} arcelf "$(tdir_arcelf)" earmaoutb.c: $(srcdir)/emulparams/armaoutb.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/armaout.sc ${GEN_DEPENDS} ${GENSCRIPTS} armaoutb "$(tdir_armaoutb)" @@ -401,23 +789,29 @@ eelf32b4300.c: $(srcdir)/emulparams/elf32b4300.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32b4300 "$(tdir_elf32b4300)" eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmips.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bmip "$(tdir_elf32bmip)" +eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)" eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmips.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)" eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmips.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)" eelf32l4300.c: $(srcdir)/emulparams/elf32l4300.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32l4300 "$(tdir_elf32l4300)" eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfmips.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)" eelf32lppc.c: $(srcdir)/emulparams/elf32lppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lppc "$(tdir_elf32lppc)" +eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)" eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ppc "$(tdir_elf32ppc)" @@ -425,7 +819,7 @@ eelf64alpha.c: $(srcdir)/emulparams/elf64alpha.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64alpha "$(tdir_elf64alpha)" eelf64_sparc.c: $(srcdir)/emulparams/elf64_sparc.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_sparc "$(tdir_elf64_sparc)" eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -625,6 +1019,12 @@ esun3.c: $(srcdir)/emulparams/sun3.sh \ esun4.c: $(srcdir)/emulparams/sun4.sh \ $(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ${GENSCRIPTS} sun4 "$(tdir_sun4)" +etic30aout.c: $(srcdir)/emulparams/tic30aout.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic30aout.sc ${GEN_DEPENDS} + ${GENSCRIPTS} tic30aout "$(tdir_tic30aout)" +etic30coff.c: $(srcdir)/emulparams/tic30coff.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic30coff.sc ${GEN_DEPENDS} + ${GENSCRIPTS} tic30coff "$(tdir_tic30coff)" evanilla.c: $(srcdir)/emulparams/vanilla.sh \ $(srcdir)/emultempl/vanilla.em $(srcdir)/scripttempl/vanilla.sc ${GEN_DEPENDS} ${GENSCRIPTS} vanilla "$(tdir_vanilla)" @@ -634,6 +1034,9 @@ evax.c: $(srcdir)/emulparams/vax.sh \ evsta.c: $(srcdir)/emulparams/vsta.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ${GENSCRIPTS} vsta "$(tdir_vsta)" +ev850.c: $(srcdir)/emulparams/v850.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/v850.sc ${GEN_DEPENDS} + ${GENSCRIPTS} v850 "$(tdir_v850)" ew65.c: $(srcdir)/emulparams/w65.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/w65.sc ${GEN_DEPENDS} ${GENSCRIPTS} w65 "$(tdir_w65)" @@ -644,91 +1047,52 @@ ez8002.c: $(srcdir)/emulparams/z8002.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/z8000.sc ${GEN_DEPENDS} ${GENSCRIPTS} z8002 "$(tdir_z8002)" -$(LD_PROG): $(OFILES) $(BFDDEP) $(LIBIBERTY) - $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(EXTRALIBS) - # The generated emulation files mostly have the same dependencies. $(EMULATION_OFILES): ../bfd/bfd.h sysdep.h config.h $(INCDIR)/bfdlink.h \ ld.h ldmain.h ldemul.h ldfile.h ldmisc.h ldexp.h ldlang.h \ ldctor.h ldexp.h ldlang.h ldgram.h -# These targets are for the dejagnu testsuites. The file site.exp -# contains global variables that all the testsuites will use. - -site.exp: ./config.status Makefile - @echo "Making a new config file..." - @rm -f ./tmp? - @touch site.exp - @mv site.exp site.bak - @echo "## variables are automatically generated by make ##" > ./tmp0 - @echo "# Do not edit here. If you wish to override these" >> ./tmp0 - @echo "# values, add them to the last section" >> ./tmp0 - @echo "# HOST AND TARGET INFO" >> ./tmp0 - @echo "set host_os @host_os@" >> ./tmp0 - @echo "set host_alias @host_alias@" >> ./tmp0 - @echo "set host_cpu @host_cpu@" >> ./tmp0 - @echo "set host_vendor @host_vendor@" >> ./tmp0 - @echo "set target_os @target_os@" >> ./tmp0 - @echo "set target_alias @target_alias@" >> ./tmp0 - @echo "set target_cpu @target_cpu@" >> ./tmp0 - @echo "set target_vendor @target_vendor@" >> ./tmp0 - @echo "set host_triplet @host@" >> ./tmp0 - @echo "set target_triplet @target@" >> ./tmp0 - @echo "# DIRECTORY INFO" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 - @echo "" >> ./tmp0 - @echo "# LD DEPENDENCIES" >> ./tmp0 - @echo "set OFILES \"$(OFILES)\"" >> ./tmp0 - @echo "set BFDLIB \"$(BFDLIB)\"" >> ./tmp0 - @echo "set LIBIBERTY \"$(LIBIBERTY)\"" >> ./tmp0 - @echo "set HOSTING_EMU \"$(HOSTING_EMU)\"" >> ./tmp0 - @echo "set HOSTING_CRT0 \"$(HOSTING_CRT0)\"" >> ./tmp0 - @echo "set HOSTING_LIBS \"$(HOSTING_LIBS)\"" >> ./tmp0 - @echo "" >> ./tmp0 - @echo "## Variables generated by configure. Do Not Edit ##" >> ./tmp0 - @cat ./tmp0 > site.exp - @cat site.bak | sed \ - -e '1,/^## Variables generated by.*##/ d' >> site.exp - -@rm -f ./tmp? - -check: site.exp +check-DEJAGNU: site.exp + srcroot=`cd $(srcdir) && pwd`; export srcroot; \ r=`pwd`; export r; \ - srcroot=`cd ${srcdir}; pwd` ; export srcroot ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - $(RPATH_ENVVAR)=$$r/../bfd:$$r/../opcodes:$$$(RPATH_ENVVAR); \ - export $(RPATH_ENVVAR); \ - if [ -f $$r/../expect/expect ] ; then \ - TCL_LIBRARY=$${srcroot}/../tcl/library ; \ - export TCL_LIBRARY ; \ - else true ; fi ; \ - $(RUNTEST) --tool ld --srcdir $(srcdir)/testsuite $(RUNTESTFLAGS) \ - CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \ - CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \ - CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" - -installcheck: -.PHONY: check installcheck + EXPECT=$(EXPECT); export EXPECT; \ + if [ -f $(top_builddir)/../expect/expect ]; then \ + TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \ + export TCL_LIBRARY; \ + fi; \ + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \ + CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \ + CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \ + CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \ + OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \ + LIBIBERTY="$(LIBIBERTY)" HOSTING_EMU="$(HOSTING_EMU)" \ + HOSTING_CRT0="$(HOSTING_CRT0)" HOSTING_LIBS="$(HOSTING_LIBS)" \ + $(RUNTESTFLAGS); \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi # Rules for testing by relinking ld itself. # A similar test is in the testsuite. This target is for ease of use # when porting ld. -ld-partial.o: ld.new - ./ld.new $(HOSTING_EMU) -o ld-partial.o -r $(OFILES) -ld1: ld-partial.o - ./ld.new $(HOSTING_EMU) -o ld1 $(HOSTING_CRT0) ld-partial.o $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) +ld-partial.o: ld-new$(EXEEXT) + ./ld-new$(EXEEXT) $(HOSTING_EMU) -o ld-partial.o -r $(OFILES) +ld1$(EXEEXT): ld-partial.o + ./ld-new$(EXEEXT) $(HOSTING_EMU) -o ld1$(EXEEXT) $(HOSTING_CRT0) ld-partial.o $(TESTBFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) -ld1-full: ld.new - ./ld.new $(HOSTING_EMU) -o ld1-full $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) +ld1-full$(EXEEXT): ld-new + ./ld-new$(EXEEXT) $(HOSTING_EMU) -o ld1-full$(EXEEXT) $(HOSTING_CRT0) $(OFILES) $(TESTBFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) -ld2: ld1 - ./ld1 $(HOSTING_EMU) -o ld2 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) +ld2$(EXEEXT): ld1$(EXEEXT) + ./ld1$(EXEEXT) $(HOSTING_EMU) -o ld2$(EXEEXT) $(HOSTING_CRT0) $(OFILES) $(TESTBFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) -ld3: ld2 - ./ld2 $(HOSTING_EMU) -o ld3 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) +ld3$(EXEEXT): ld2$(EXEEXT) + ./ld2$(EXEEXT) $(HOSTING_EMU) -o ld3$(EXEEXT) $(HOSTING_CRT0) $(OFILES) $(TESTBFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) -bootstrap: ld3 - cmp ld2 ld3 +bootstrap: ld3$(EXEEXT) + cmp ld2$(EXEEXT) ld3$(EXEEXT) .PHONY: bootstrap @@ -768,206 +1132,49 @@ bootstrap: ld3 # because almost all configs use "gen" version of manual. # Set DOCVER above to change. configdoc.texi: ${DOCVER}-doc.texi - ln -s ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi || \ - ln ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi || \ - cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi + ln -s ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi >/dev/null 2>&1 \ + || ln ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi >/dev/null 2>&1 \ + || cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi -# TeX output -dvi: ld.dvi -ld.dvi: $(srcdir)/ld.texinfo configdoc.texi $(BFDDIR)/doc/bfdsumm.texi - TEXINPUTS=$(BFDDIR)/doc:$$TEXINPUTS MAKEINFO='$(MAKEINFO) -I$(BFDDIR)/doc -I$(srcdir)' \ - $(TEXI2DVI) $(srcdir)/ld.texinfo +ld.info: $(srcdir)/ld.texinfo configdoc.texi + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) -I $(BFDDIR)/doc $(srcdir)/ld.texinfo -ldint.dvi: $(srcdir)/ldint.texinfo - $(TEXI2DVI) $(srcdir)/ldint.texinfo +ld.dvi: $(srcdir)/ld.texinfo configdoc.texi + TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir) -I $(BFDDIR)/doc' $(TEXI2DVI) $(srcdir)/ld.texinfo -# info file for online browsing -ld.info: $(srcdir)/ld.texinfo configdoc.texi $(BFDDIR)/doc/bfdsumm.texi - $(MAKEINFO) -I$(BFDDIR)/doc -I$(srcdir) -o ld.info $(srcdir)/ld.texinfo +# We want to reconfigure if configure.host or configure.tgt changes. +Makefile: configure.host configure.tgt +mostlyclean-local: + -rm -rf tmpdir -ldint.info: $(srcdir)/ldint.texinfo - $(MAKEINFO) -o ldint.info $(srcdir)/ldint.texinfo +.PHONY: install-exec-local install-data-local -.PHONY: dvi +install-exec-local: ld-new$(EXEEXT) + $(mkinstalldirs) $(bindir) $(tooldir)/bin + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/-new//'|sed '$(transform)'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/-new//'|sed '$(transform)'`; \ + else :; fi; \ + done + rm -f $(tooldir)/bin/ld$(EXEEXT) + n=`echo ld | sed '$(transform)'`; \ + if [ "$(bindir)/$$n$(EXEEXT)" != "$(tooldir)/bin/ld$(EXEEXT)" ]; then \ + ln $(bindir)/$$n$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \ + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(tooldir)/bin/ld$(EXEEXT); \ + fi -#separate targets for "ms", "me", and "mm" forms of roff doc -# Try to use a recent texi2roff. v2 was put on prep in jan91. -# If you want an index, see texi2roff doc for postprocessing -# and add -i to texi2roff invocations below. -# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete -# correspondint -e lines when later texi2roff's are current) -# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs. -# + @c's deleted explicitly because texi2roff sees texinfo commands in them -# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank -# + @alphaenumerate is ridiculously new, turned into @enumerate - -ld.ms: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -ms | \ - sed -e 's/---/\\(em/g' \ - >>ld.ms - -# index for roff output -ld-index.ms: ld.ms - $(ROFF) -ms ld.ms 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.ms - -# roff output (-mm) -ld.mm: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e '/@noindent/d' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -mm | \ - sed -e 's/---/\\(em/g' \ - >ld.mm - -# index for roff output -ld-index.mm: ld.mm - $(ROFF) -mm ld.mm 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.mm - -# roff output (-me) -ld.me: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -me | \ - sed -e 's/---/\\(em/g' \ - >>ld.me - -# index for roff output -ld-index.me: ld.me - $(ROFF) -me ld.me 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.me - -stage1: force - -mkdir stage1 - -mv -f $(STAGESTUFF) $(LD_PROG) stage1 - -(cd stage1 ; ln -s $(LD_PROG) ld) - -stage2: force - -mkdir stage2 - -mv -f $(STAGESTUFF) $(LD_PROG) stage2 - -(cd stage2 ; ln -s $(LD_PROG) ld) - -stage3: force - -mkdir stage3 - -mv -f $(STAGESTUFF) $(LD_PROG) stage3 - -(cd stage3 ; ln -s $(LD_PROG) ld) - -against = stage2 - -comparison: force - for i in $(STAGESTUFF) $(LD_PROG) ; do cmp $$i $(against)/$$i ; done - -de-stage1: force - -(cd stage1 ; mv -f * ..) - -rm ld - -rmdir stage1 - -de-stage2: force - -(cd stage2 ; mv -f * ..) - -rm ld - -rmdir stage2 - -de-stage3: force - -(cd stage3 ; mv -f * ..) - -rm ld - -rmdir stage3 - -.PHONY: stage1 stage2 stage3 comparison de-stage1 de-stage2 de-stage3 - -# Stuff that should be included in a distribution: -LDDISTSTUFF = ldgram.c ldgram.h ldlex.c -diststuff: $(LDDISTSTUFF) info - -mostlyclean: - -rm -f $(STAGESTUFF) ld.?? ld.??? ldlex.[qp] - -rm -f ld ld1 ld2 ld3 *.o y.output cdtest cdtest.out cdtest.tmp - -rm -f cdtest-ur cdtest-ur.out cdtest-ur.tmp crtbegin.o crtend.o - -rm -f ldemul-list.h - -rm -fr tmpdir -clean: mostlyclean - -rm -f $(LD_PROG) -distclean: clean - -rm -f Makefile config.status TAGS site.exp site.bak config.cache - -rm -f config.h stamp-h config.log - -rm -rf ldscripts -maintainer-clean realclean: clean distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -rm -f $(GENERATED_CFILES) $(GENERATED_HFILES) - -rm -f $(LDDISTSTUFF) *.info* configdoc.texi - -.PHONY: diststuff mostlyclean clean distclean realclean - -lintlog:$(LINTSOURCES) Makefile - $(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \ -| grep -v "pointer casts may be troublesome" \ -| grep -v "possible pointer alignment problem" \ -| grep -v "ignore" \ -| grep -v "conversion from long may lose accuracy" \ -| grep -v "warning: constant argument to NOT" \ -| grep -v "enumeration type clash, operator CAST" \ -| grep -v "warning: constant in conditional context"\ -| grep -v "archive\.c" - - -TAGS: - etags -t $(srcdir)/*.[chly] *.[chly] - - -install: - $(INSTALL_XFORM) ld.new $(bindir)/ld - $(INSTALL_XFORM1) $(srcdir)/ld.1 $(man1dir)/ld.1 +install-data-local: + $(mkinstalldirs) $(scriptdir) for f in ldscripts/*; do \ $(INSTALL_DATA) $$f $(scriptdir)/$$f ; \ done - test -d $(tooldir) || mkdir $(tooldir) - test -d $(tooldir)/bin || mkdir $(tooldir)/bin - -n=`echo ld | sed '$(program_transform_name)'`; \ - rm -f $(tooldir)/bin/ld; \ - ln $(bindir)/$$n $(tooldir)/bin/ld >/dev/null 2>/dev/null \ - || $(INSTALL_PROGRAM) ld.new $(tooldir)/bin/ld +diststuff: $(LDDISTSTUFF) info -install-info: ld.info - if [ -r ld.info ]; then \ - dir=. ; \ - else \ - dir=$(srcdir) ; \ - fi ; \ - for i in `cd $$dir ; echo ld.info*` ; do \ - $(INSTALL_DATA) $$dir/$$i $(infodir)/$$i ; \ - done - -clean-info: - -rm -rf *.info* - -.PHONY: install install-info clean-info +distclean-local: + rm -rf ldscripts # Targets to rebuild dependencies in this Makefile. # Have to get rid of .dep1 here so that "$?" later includes all of $(CFILES). @@ -980,7 +1187,7 @@ clean-info: .dep1: $(CFILES) $(GENERATED_CFILES) rm -f .dep2 echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > .dep2 - $(DEP) -f .dep2 $(ALL_CFLAGS) $? + $(DEP) -f .dep2 $(INCLUDES) $? $(srcdir)/../move-if-change .dep2 .dep1 dep.sed: dep-in.sed config.status @@ -998,23 +1205,12 @@ dep-in: .dep cat .dep >> tmp-Makefile.in $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in -.PHONY: dep dep-in +dep-am: .dep + sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am + cat .dep >> tmp-Makefile.am + $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am -# Dummy target to force execution of dependent targets. -# -force: - -.PHONY: force - -Makefile: Makefile.in config.status - CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status - -config.h: stamp-h ; @true -stamp-h: config.in config.status - CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status - -config.status: configure configure.host configure.tgt - $(SHELL) ./config.status --recheck +.PHONY: dep dep-in dep-am # What appears below is generated by a hacked mkdep using gcc -MM. @@ -1076,3 +1272,7 @@ ldlex.o: ldlex.c ../bfd/bfd.h sysdep.h config.h $(INCDIR)/fopen-same.h \ ldmain.h # IF YOU PUT ANYTHING HERE IT WILL GO AWAY + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/contrib/binutils/ld/configure.tgt b/contrib/binutils/ld/configure.tgt index 677dcdf362ed..cb3d437375e2 100644 --- a/contrib/binutils/ld/configure.tgt +++ b/contrib/binutils/ld/configure.tgt @@ -12,10 +12,12 @@ targ_extra_emuls= case "${targ}" in arm-*-pe) targ_emul=armpe ;; +arc-*-elf*) targ_emul=arcelf ;; d10v-*-*) targ_emul=d10velf ;; sparc64-*-aout*) targ_emul=sparcaout ;; sparc64-*-elf*) targ_emul=elf64_sparc ;; sparc-sun-sunos4*) targ_emul=sun4 ;; +sparclite*-*-elf) targ_emul=elf32_sparc ;; sparclite*-*-coff) targ_emul=coff_sparc ;; sparclite*-fujitsu-*) targ_emul=sparcaout ;; sparc*-*-aout) targ_emul=sparcaout ;; @@ -27,7 +29,13 @@ sparc*-*-linux*aout*) targ_emul=sparclinux tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'` tdir_sun4=sparc-sun-sunos4 ;; -sparc*-*-linux*) targ_emul=elf32_sparc +sparc64-*-linux-gnu*) targ_emul=elf64_sparc + targ_extra_emuls="elf32_sparc sparclinux sun4" + tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'` + tdir_sparclinux=${tdir_elf32_sparc}aout + tdir_sun4=sparc-sun-sunos4 + ;; +sparc*-*-linux-gnu*) targ_emul=elf32_sparc targ_extra_emuls="sparclinux sun4" tdir_sparclinux=${targ_alias}aout tdir_sun4=sparc-sun-sunos4 @@ -52,6 +60,7 @@ m68*-apple-aux*) targ_emul=m68kaux ;; i[3456]86-*-vsta) targ_emul=vsta ;; i[3456]86-go32-rtems*) targ_emul=i386go32 ;; i[3456]86-*-go32) targ_emul=i386go32 ;; +i[3456]86-*-msdosdjgpp*) targ_emul=i386go32 ;; i[3456]86-*-aix*) targ_emul=i386coff ;; i[3456]86-*-sco*) targ_emul=i386coff ;; i[3456]86-*-isc*) targ_emul=i386coff ;; @@ -67,7 +76,7 @@ i[3456]86-*-linux*aout*) targ_emul=i386linux tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` ;; i[3456]86-*-linuxoldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;; -i[3456]86-*-linux*) targ_emul=elf_i386 +i[3456]86-*-linux-gnu*) targ_emul=elf_i386 targ_extra_emuls=i386linux tdir_i386linux=${targ_alias}aout ;; @@ -81,12 +90,13 @@ i[3456]86-*-freebsd*) targ_emul=i386freebsd ;; i[3456]86-*-sysv*) targ_emul=i386coff ;; i[3456]86-*-ptx*) targ_emul=i386coff ;; i[3456]86-*-mach*) targ_emul=i386mach ;; -i[3456]86-*-gnu*) targ_emul=elf_i386; targ_extra_emuls=i386mach ;; +i[3456]86-*-gnu*) targ_emul=elf_i386 ;; i[3456]86-*-msdos*) targ_emul=i386msdos; targ_extra_emuls=i386aout ;; i[3456]86-*-moss*) targ_emul=i386moss; targ_extra_emuls=i386msdos ;; -i[3456]86-*-winnt) targ_emul=i386pe ;; +i[3456]86-*-winnt*) targ_emul=i386pe ;; i[3456]86-*-pe) targ_emul=i386pe ;; -i[3456]86-*-cygwin32) targ_emul=i386pe ;; +i[3456]86-*-cygwin32*) targ_emul=i386pe ;; +i[3456]86-*-mingw32*) targ_emul=i386pe ;; m8*-*-*) targ_emul=m88kbcs ;; a29k-*-udi) targ_emul=sa29200 ;; a29k-*-ebmon) targ_emul=ebmon29k ;; @@ -95,6 +105,8 @@ a29k-*-*) targ_emul=a29k ;; arm-*-aout | armel-*-aout) targ_emul=armaoutl ;; armeb-*-aout) targ_emul=armaoutb ;; arm-*-coff) targ_emul=armcoff ;; +thumb-*-coff) targ_emul=armcoff ;; +thumb-*-pe) targ_emul=armpe ;; h8300-*-hms) targ_emul=h8300; targ_extra_emuls="h8300h h8300s" ;; h8500-*-hms) targ_emul=h8500 @@ -103,7 +115,7 @@ h8500-*-hms) targ_emul=h8500 sh-*-elf*) targ_emul=shelf targ_extra_emuls="shlelf sh shl" ;; -sh-*-*) targ_emul=sh; targ_extra_emuls=shl ;; +sh-*-*|sh-*-rtems*) targ_emul=sh; targ_extra_emuls=shl ;; m68k-sony-*) targ_emul=news ;; m68k-hp-bsd*) targ_emul=hp300bsd ;; m68*-motorola-sysv*) targ_emul=delta68 ;; @@ -115,7 +127,7 @@ m68k-*-linux*aout*) targ_emul=m68klinux targ_extra_emuls=m68kelf tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` ;; -m68k-*-linux*) targ_emul=m68kelf +m68k-*-linux-gnu*) targ_emul=m68kelf targ_extra_emuls=m68klinux tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` ;; @@ -130,7 +142,7 @@ hppa*-*-rtems*) targ_emul=hppaelf ;; vax-dec-ultrix* | vax-dec-bsd*) targ_emul=vax ;; mips*-dec-ultrix*) targ_emul=mipslit ;; mips*-dec-osf*) targ_emul=mipslit ;; -mips*-sgi-irix[56]*) targ_emul=elf32bmip ;; +mips*-sgi-irix[56]*) targ_emul=elf32bsmip ;; mips*-sgi-irix*) targ_emul=mipsbig ;; mips*el-*-ecoff*) targ_emul=mipsidtl ;; mips*-*-ecoff*) targ_emul=mipsidt ;; @@ -146,29 +158,31 @@ mips*vr5000-*-elf*) targ_emul=elf32b4300 ;; mips*el-*-elf*) targ_emul=elf32elmip ;; mips*-*-elf*) targ_emul=elf32ebmip ;; mips*-*-rtems*) targ_emul=elf32ebmip ;; -mips*el-*-linux*) targ_emul=elf32lmip - targ_extra_emuls="elf32bmip mipslit mipsbig" +mips*el-*-linux-gnu*) targ_emul=elf32lsmip + targ_extra_emuls="elf32bsmip mipslit mipsbig" ;; -mips*-*-linux*) targ_emul=elf32bmip - targ_extra_emuls="elf32lmip mipsbig mipslit" +mips*-*-linux-gnu*) targ_emul=elf32bsmip + targ_extra_emuls="elf32lsmip mipsbig mipslit" ;; mips*-*-lnews*) targ_emul=mipslnews ;; mn10200-*-*) targ_emul=mn10200 ;; mn10300-*-*) targ_emul=mn10300 ;; -alpha-*-freebsd*) targ_emul=elf64alpha ;; -alpha-*-linuxecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha +alpha*-*-freebsd*) targ_emul=elf64alpha ;; +alpha*-*-linuxecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha tdir_elf64alpha=`echo ${targ_alias} | sed -e 's/ecoff//'` ;; -alpha-*-linux*) targ_emul=elf64alpha targ_extra_emuls=alpha +alpha*-*-linux-gnu*) targ_emul=elf64alpha targ_extra_emuls=alpha tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'` ;; -alpha-*-osf*) targ_emul=alpha ;; -alpha-*-gnu*) targ_emul=elf64alpha ;; -alpha-*-netware*) targ_emul=alpha ;; +alpha*-*-osf*) targ_emul=alpha ;; +alpha*-*-gnu*) targ_emul=elf64alpha ;; +alpha*-*-netware*) targ_emul=alpha ;; +alpha*-*-netbsd*) targ_emul=elf64alpha ;; z8k-*-coff) targ_emul=z8002; targ_extra_emuls=z8001 ;; ns32k-pc532-mach* | ns32k-pc532-ux*) targ_emul=pc532macha ;; ns32k-pc532-netbsd* | ns32k-pc532-lites*) targ_emul=ns32knbsd ;; -powerpc-*-elf* | powerpc-*-eabi* | powerpc-*-linux* | powerpc-*-sysv*) +powerpc-*-elf* | powerpc-*-eabi* | powerpc-*-linux-gnu* | powerpc-*-sysv* \ + | powerpc-*-netbsd*) targ_emul=elf32ppc ;; powerpcle-*-elf* | powerpcle-*-eabi* | powerpcle-*-solaris* | powerpcle-*-sysv*) targ_emul=elf32lppc ;; powerpc-*-rtems*) targ_emul=elf32ppc ;; @@ -180,6 +194,9 @@ powerpcle-*-cygwin32) targ_emul=ppcpe ;; powerpc-*-aix*) targ_emul=aixppc ;; powerpc-*-beos*) targ_emul=aixppc ;; rs6000-*-aix*) targ_emul=aixrs6 ;; +tic30-*-*aout*) targ_emul=tic30aout ;; +tic30-*-*coff*) targ_emul=tic30coff ;; +v850-*-*) targ_emul=v850 ;; w65-*-*) targ_emul=w65 ;; *-*-aout) targ_emul=${target_cpu}-${target_vendor} ;; *-*-coff) targ_emul=${target_cpu}-${target_vendor} ;;