1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-20 15:43:16 +00:00

This commit was generated by cvs2svn to compensate for changes in r61843,

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
David E. O'Brien 2000-06-20 06:20:42 +00:00
commit 6e440a7238
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=61844
61 changed files with 4143 additions and 2824 deletions

View File

@ -711,7 +711,6 @@ INSTALL_MODULES = \
install-shellutils \
install-sim \
install-tar \
install-texinfo \
install-textutils \
install-tgas \
install-time \

View File

@ -1,3 +1,54 @@
2000-05-31 Mark Kettenis <kettenis@gnu.org>
Add support for FreeBSD/Alpha.
* configure.in: Add alpha*-*-freebsd* entry to prevent including
OSF core file support.
* configure: Regenerate.
2000-05-29 Philip Blundell <philb@gnu.org>
* ppcboot.c: Add packed attribute if compiling with GCC.
2000-05-29 Anatoly Vorobey <mellon@pobox.com>
* elf.c (_bfd_elf_link_hash_table_init): Initialize dynlocal.
2000-05-26 Alan Modra <alan@linuxcare.com.au>
* sysdep.h (gettext, dgettext, dcgettext, textdomain,
bindtextdomain): Replace defines with those from intl/libgettext.h
to quieten gcc warnings.
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
* aoutx.h (find_nearest_line): Use IS_ABSOLUTE_PATH.
* archive.c (normalize, bfd_bsd_truncate_arname,
bfd_gnu_truncate_arname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support
file names with backslashes.
* cache.c (bfd_open_file) [__MSDOS__]: Don't unlink the file
before opening it.
* sysdep.h: Include filenames.h.
2000-05-26 Alan Modra <alan@linuxcare.com.au>
* opncls.c (bfd_close_all_done): Mask file perms with 0777 not 0x777.
2000-05-23 Philip Blundell <pb@futuretv.com>
* configure.in: Set version to 2.10.
* configure: Regenerate.
Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
* config.bfd (sparc-rtemself): Added.
(sparc-rtemsaout): Added as alternate name for current sparc-rtems.
(sparc-rtems): Switched to ELF from a.out
(i386-rtemscoff): Added as alternate name for current i386-rtems.
(i386-rtems): Switched to ELF.
2000-05-09 Alan Modra <alan@linuxcare.com.au>
* elf.c (bfd_section_from_shdr): Don't set use_rela_p if rela
@ -33,6 +84,11 @@
the .bss section.
* bfd/coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise.
2000-05-02 H.J. Lu <hjl@gnu.org>
* elf.c (prep_headers): Use ELFOSABI_NONE instead of
ELFOSABI_SYSV.
2000-04-29 Andreas Jaeger <aj@suse.de>
* libbfd-in.h: Correctly check GCC version.
@ -137,9 +193,9 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
"boolean overflow" with "bfd_reloc_status_type flag".
2000-03-14 Doug Evans <dje@casey.transmeta.com>
* elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite.
* elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite.
2000-03-14 Kazu Hirata <kazu@hxi.com>
* reloc16.c (bfd_coff_reloc16_relax_section): Count the total number
@ -160,7 +216,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* elf32-mips.c (_bfd_mips_elf_relocate_section): Do proper
sign-extension and big-endian compensation for
R_MIPS_64 even in ld -r.
R_MIPS_64 even in ld -r.
2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
@ -251,7 +307,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* coffcode.h (styp_to_sec_flags): Initialise 'target_name'.
* elf-m10300.c (mn10300_elf_relax_section): Initialise
'sym_sec'.
'sym_sec'.
* elf32-i370.c: Add ATTRIBUTE_UNUSED to unused function
parameters.
@ -461,10 +517,10 @@ Fri Feb 25 18:39:26 2000 Rodney Brown (RodneyBrown@pmsc.com)
* elflink.h (elf_link_add_object_symbols): If a version symbol is
not defined, don't add a second ELF_VER_CHR.
* elflink.h (elf_bfd_final_link): Call output_extsym for global
* elflink.h (elf_bfd_final_link): Call output_extsym for global
symbols converted to local symbols even when stripping all
symbols.
(elf_link_output_extsym): Process global symbols converted to
(elf_link_output_extsym): Process global symbols converted to
local symbols even if they are being stripped.
2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
@ -659,28 +715,28 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
2000-02-08 Mark Elbrecht <snowball3@bigfoot.com>
* coff-go32.c: Update comment. Update copyright.
2000-01-27 Thomas de Lellis <tdel@windriver.com>
* syms.c (bfd_decode_symclass)
Two new class characters were added - 'V' and 'v'. The
meaning of 'W' is now restricted to just weak non-object
symbols. This allows differentiation between, for example,
weak functions vs weak objects. nm for example now dumps:
'W' = weak global
'w' = weak unresolved
'V' = weak global object
'v' = weak unresolved object
* syms.c (bfd_decode_symclass)
Two new class characters were added - 'V' and 'v'. The
meaning of 'W' is now restricted to just weak non-object
symbols. This allows differentiation between, for example,
weak functions vs weak objects. nm for example now dumps:
'W' = weak global
'w' = weak unresolved
'V' = weak global object
'v' = weak unresolved object
(bfd_is_undefined_symclass): New function. Return true if the
given symbol class represents and undefined/unresolved symbol.
(bfd_symbol_info): Use bfd_is_undefined_symclass to check for
(bfd_symbol_info): Use bfd_is_undefined_symclass to check for
unresolved symbols.
* bfd-in2.h: Add prototype for bfd_is_undefined_symbol().
* elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the
* elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the
STT_ARM_16BIT flag set, but it is not attached to a data object
return STT_ARM_16BIT so that it will be treated as code by the
disassembler.
@ -698,7 +754,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
2000-01-24 Robert Lipe (robertl@sco.com)
* coffcode.h (coff_write_object_contents): Get buff via bfd_malloc
* coffcode.h (coff_write_object_contents): Get buff via bfd_malloc
instead of using GNU C extension.
2000-01-21 Nick Clifton <nickc@cygnus.com>
@ -875,8 +931,8 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
1999-12-09 Nick Clifton <nickc@cygnus.com>
* elflink.h (elf_link_add_archive_symbols): Add an archive
element even if contains a symbol which is currently only
considered to be a common.
element even if contains a symbol which is currently only
considered to be a common.
* targets.c (struct bfd_target): Add new field
_bfd_allow_commons_in_armap.
@ -1037,7 +1093,7 @@ Tue Nov 2 01:44:41 1999 Jeffrey A Law (law@cygnus.com)
Sat Oct 23 17:36:12 1999 Andrew Cagney <cagney@b1.cygnus.com>
* archures.c: Add definitions bfd_mach_d10v, bfd_mach_d10v_ts2 and
bfd_mach_d10v_ts3.
bfd_mach_d10v_ts3.
* cpu-d10v.c (d10v_ts3_info, d10v_ts2_info): Add.
* bfd-in2.h: Regenerate.
@ -1060,8 +1116,8 @@ Fri Oct 8 13:03:45 1999 Geoffrey Keating <geoffk@cygnus.com>
* elf32-mips.c (mips_elf_calculate_relocation): R_MIPS_LITERAL
relocs also need the GP value.
(_bfd_mips_elf_relocate_section): Handle unpaired LO16 relocs
properly. Handle sign-extension for R_MIPS_64 correctly. Correct
the GP value for R_MIPS_LITERAL relocs too. Handle
properly. Handle sign-extension for R_MIPS_64 correctly. Correct
the GP value for R_MIPS_LITERAL relocs too. Handle
R_MIPS_64 relocs properly on big-endian MIPS.
(mips_elf_sign_extend): Behave properly with 'long long'.
(mips_elf_highest): Correct typo.
@ -1519,7 +1575,7 @@ Tue Sep 7 17:25:12 1999 Jeffrey A Law (law@cygnus.com)
(pj-*-*, pjl-*-*): New targets.
* configure.in (bfd_elf32_pj_vec): New target vector.
(bfd_elf32_pjl_vec): New target vector.
* archures.c (bfd_arch_pj): Define.
* archures.c (bfd_arch_pj): Define.
* elf.c (prep_headers): Handle bfd_arch_pj.
* reloc.c: Define BFD_RELOC_PJ_* relocations.
* targets.c (bfd_elf32_pj_vec, bfd_elf32_pjl_vec): Declare and add
@ -1986,9 +2042,9 @@ Wed Aug 4 18:08:07 1999 Jeffrey A Law (law@cygnus.com)
Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
* elf32-mips.c (_bfd_mips_elf_final_link): Restore setting of GP
removed in previous change.
removed in previous change.
(_bfd_mips_elf_relocate_section): Adjust GP relative relocations
in relocateable output.
in relocateable output.
1999-07-19 Ian Lance Taylor <ian@zembu.com>
@ -2016,8 +2072,8 @@ Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
* coffcode.h (CREATE_BIG_COFF_TARGET_VEC): New macro.
(CREATE_LITTLE_COFF_TARGET_VEC): New macro.
* aix386-core.c: Initialise new field of bfd_target structure.
* aout-adobe.c: Initialise new field of bfd_target structure.
* aix386-core.c: Initialise new field of bfd_target structure.
* aout-adobe.c: Initialise new field of bfd_target structure.
* aout-arm.c: Initialise new field of bfd_target structure.
* aout-target.h: Initialise new field of bfd_target structure.
* aout-tic30.c: Initialise new field of bfd_target structure.
@ -3177,7 +3233,7 @@ Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
section.
(elf32_arm_final_link_relocate): New parameter h.
(elf32_arm_relocate_section): Pass symbol hash entry to above
routine.
routine.
(elf32_arm_gc_sweep_hook, elf32_arm_check relocs): Correct
comments.
@ -3196,7 +3252,7 @@ Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1999-05-24 Philip Blundell <pb@nexus.co.uk>
* elf32-arm.h (elf32_arm_relocate_section): Undo change of
1999-03-25.
1999-03-25.
Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
@ -3229,7 +3285,7 @@ Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
Fri May 14 10:59:55 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf32-arm.h (elf32_arm_relocate_section): Fix operator
precedence between bit-and and comparison.
precedence between bit-and and comparison.
Thu May 13 09:45:23 1999 Joel Sherrill (joel@OARcorp.com)
@ -3818,8 +3874,8 @@ Fri Jan 29 00:47:21 1999 H.J. Lu <hjl@gnu.org>
Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
* binary.c (binary_set_section_contents): Don't return early for a
non-loadable section, in case the first section is non-loadable.
Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
non-loadable section, in case the first section is non-loadable.
Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
W. Rozycki <macro@ds2.pg.gda.pl>.
1999-01-28 Nick Clifton <nickc@cygnus.com>
@ -3829,8 +3885,8 @@ Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
Thu Jan 28 11:08:16 1999 Catherine Moore <clm@cygnus.com>
* elflink.h (elf_link_output_sym): Zero syms which are
part of sections which have been excluded.
* elflink.h (elf_link_output_sym): Zero syms which are
part of sections which have been excluded.
Wed Jan 27 13:35:35 1999 Stan Cox <scox@cygnus.com>
@ -3969,32 +4025,32 @@ Tue Dec 8 16:21:35 1998 Ian Lance Taylor <ian@cygnus.com>
Wed Dec 2 15:03:59 1998 David Taylor <taylor@texas.cygnus.com>
The following changes were made by David Taylor
<taylor@texas.cygnus.com>, Edith Epstein
<eepstein@sophia.cygnus.com>, Jim Blandy
<jimb@zwingli.cygnus.com>, and Elena Zannoni
<ezannoni@kwikemart.cygnus.com> as part of the project to merge in
changes originally made by HP; HP did not create ChangeLog
entries.
<taylor@texas.cygnus.com>, Edith Epstein
<eepstein@sophia.cygnus.com>, Jim Blandy
<jimb@zwingli.cygnus.com>, and Elena Zannoni
<ezannoni@kwikemart.cygnus.com> as part of the project to merge in
changes originally made by HP; HP did not create ChangeLog
entries.
* aclocal.m4, configure, Makefile.in: Rebuilt using latest
automake macro library.
automake macro library.
* hpux-core.c (hpux_core_core_file_p): this function now
understands HPUX 10.30 thread info. Yes, the thread stacks can be
found in the corefile! Also, in hpux_core_core_file_p, if we
encounter a section with an unknown type, don't punt. Instead,
just skip it. Also, count the number of sections of known type
that we encounter. If we encounter at least one good one, then
we'll declare that the file is a core file. If we encounter any
unknown ones but some known ones, then we'll issue a warning (but
still declare it to be a core file). Also, correctly decide when a
file is not a core.
understands HPUX 10.30 thread info. Yes, the thread stacks can be
found in the corefile! Also, in hpux_core_core_file_p, if we
encounter a section with an unknown type, don't punt. Instead,
just skip it. Also, count the number of sections of known type
that we encounter. If we encounter at least one good one, then
we'll declare that the file is a core file. If we encounter any
unknown ones but some known ones, then we'll issue a warning (but
still declare it to be a core file). Also, correctly decide when a
file is not a core.
(PROC_INFO_HAS_THREAD_ID): define if CORE_ANON_SHMEM defined.
(CORE_ANON_SHMEM): define if not defined.
(hpux_core_struct): add members lwpid and user_tid.
(core_kernel_thread_id, core_user_thread_id): new macros.
(make_bfd_asection): use bfd_alloc to allocate room for a copy of
the name before storing it in the bfd.
the name before storing it in the bfd.
(hpux_core_core_file_p): handle threads.
* libhppa.h (GET_FIELD): protect against redefinition.
@ -4175,15 +4231,15 @@ Tue Nov 17 15:28:31 1998 Nick Clifton <nickc@cygnus.com>
Mon Nov 16 22:19:21 1998 DJ Delorie <dj@cygnus.com>
* archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
bfds; they have no "file" so we fake it.
bfds; they have no "file" so we fake it.
* bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
* libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
resizing the memory buffer.
resizing the memory buffer.
* opncls.c (bfd_make_writable): New function; lets you write a
bfd_create'd bfd to an in-memory buffer.
bfd_create'd bfd to an in-memory buffer.
(bfd_make_readable): New function; lets you read back that buffer
as if it were from bfd_openr. Used to build generated archive
members (winsup's ld's dlltool)
as if it were from bfd_openr. Used to build generated archive
members (winsup's ld's dlltool)
Mon Nov 16 19:15:19 1998 Dave Brolley <brolley@cygnus.com>
@ -4224,8 +4280,8 @@ Tue Nov 10 15:13:59 1998 Nick Clifton <nickc@cygnus.com>
Tue Nov 10 13:37:36 1998 Felix Lee <flee@cygnus.com>
* acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
was cached.
BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
was cached.
* aclocal.m4, configure: regenerated.
Tue Nov 10 14:31:01 1998 Catherine Moore <clm@cygnus.com>
@ -4336,13 +4392,13 @@ Mon Oct 19 16:57:05 1998 Felix Lee <flee@cygnus.com>
Mon Oct 19 01:47:21 1998 Felix Lee <flee@cygnus.com>
* acinclude.m4, aclocal.m4: move gettext-related fragments from
aclocal.m4 to acinclude.m4, so they don't get lost.
aclocal.m4 to acinclude.m4, so they don't get lost.
* elfcore.h: rewrite for better corefile support.
* elf.c (elfcore_*): new functions.
* elf-bfd.h (elf_obj_tdata): new structure members.
* acconfig.h, acinclude.m4, configure.in: add feature-tests for
flavor of procfs.
flavor of procfs.
* aclocal.m4, config.in, configure, Makefile.in: regenerated.
Fri Oct 16 14:07:45 1998 Catherine Moore <clm@cygnus.com>
@ -4523,20 +4579,20 @@ Wed Sep 16 11:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
Tue Sep 15 12:40:05 1998 Catherine Moore <clm@cygnus.com>
* elf-bfd.h: Add argument to elf_backend_get_symbol_type.
* elf-bfd.h: Add argument to elf_backend_get_symbol_type.
Tue Sep 15 08:34:40 1998 Catherine Moore <clm@cygnus.com>
* elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
* elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
R_ARM_GNU_VTENTRY.
(elf32_arm_gc_mark_hook): New.
(elf32_arm_gc_sweep_hook): New.
(elf32_arm_check_relocs): New.
(elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
relocations.
(elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
relocations.
* elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
* elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
R_ARM_GNU_VTENTRY.
(elf32_arm_gc_mark_hook): New.
(elf32_arm_gc_sweep_hook): New.
(elf32_arm_check_relocs): New.
(elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
relocations.
(elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
relocations.
1998-09-10 Geoff Keating <geoffk@ozemail.com.au>
@ -4677,28 +4733,28 @@ Fri Aug 14 09:12:28 1998 Stan Cox <scox@cygnus.com>
Thu Aug 13 14:02:02 1998 Catherine Moore <clm@cygnus.com>
* bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
elf32_arm_allocate_interworking_sections and
elf32_arm_process_before_allocation.
* bfd-in2.h: Regenerated.
* elf32-arm.c Define elf32_arm_link_hash_table.
(insert_thumb_branch): New routine.
(find_thumb_glue): New routine.
(find_arm_glue): New routine.
(record_arm_to_thumb_glue): New routine.
(record_thumb_to_arm_glue): New routine.
(elf32_arm_link_hash_table_create): New routine.
(elf32_arm_get_bfd_for_interworking): New routine.
(elf32_arm_allocate_interworking_sections) New routine.
(elf32_arm_process_before_allocation) New routine.
(elf32_thumb_to_arm_stub): New routine.
(elf32_arm_to_thumb_stub): New routine.
(elf32_print_private_bfd_data): Fix typo.
(elf32_arm_final_link_relocate): Add argument sym_sec.
Check for branches to thumb symbols in case R_ARM_PC24.
Check for branches to arm symbols in case R_ARM_THM_PC22.
(elf32_arm_relocate_section): Pass symbol section to
elf32_arm_final_link_relocate.
* bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
elf32_arm_allocate_interworking_sections and
elf32_arm_process_before_allocation.
* bfd-in2.h: Regenerated.
* elf32-arm.c Define elf32_arm_link_hash_table.
(insert_thumb_branch): New routine.
(find_thumb_glue): New routine.
(find_arm_glue): New routine.
(record_arm_to_thumb_glue): New routine.
(record_thumb_to_arm_glue): New routine.
(elf32_arm_link_hash_table_create): New routine.
(elf32_arm_get_bfd_for_interworking): New routine.
(elf32_arm_allocate_interworking_sections) New routine.
(elf32_arm_process_before_allocation) New routine.
(elf32_thumb_to_arm_stub): New routine.
(elf32_arm_to_thumb_stub): New routine.
(elf32_print_private_bfd_data): Fix typo.
(elf32_arm_final_link_relocate): Add argument sym_sec.
Check for branches to thumb symbols in case R_ARM_PC24.
Check for branches to arm symbols in case R_ARM_THM_PC22.
(elf32_arm_relocate_section): Pass symbol section to
elf32_arm_final_link_relocate.
Wed Aug 12 19:00:39 1998 Geoff Keating <geoffk@ozemail.com.au>
@ -4712,16 +4768,16 @@ Wed Aug 12 14:48:33 1998 Ian Lance Taylor <ian@cygnus.com>
Wed Aug 12 08:10:11 1998 Catherine Moore <clm@cygnus.com>
* elf32-arm.c (elf32_arm_final_link_relocate): Rework
R_ARM_PC24 relocation.
* elf32-arm.c (elf32_arm_final_link_relocate): Rework
R_ARM_PC24 relocation.
Tue Aug 11 14:42:26 1998 Catherine Moore <clm@cygnus.com>
* elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
argument is_local. Add argument sym_flags. Check sym_flags
in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
(elf32_arm_relocate_section): Don't pass local sym and pass
sym_flags to elf32_arm_final_link_relocate.
* elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
argument is_local. Add argument sym_flags. Check sym_flags
in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
(elf32_arm_relocate_section): Don't pass local sym and pass
sym_flags to elf32_arm_final_link_relocate.
Mon Aug 10 20:38:39 1998 Richard Henderson <rth@cygnus.com>
@ -5106,7 +5162,7 @@ Wed Jul 1 17:05:53 1998 Nick Clifton <nickc@cygnus.com>
Wed Jul 1 16:58:50 1998 Ian Lance Taylor <ian@cygnus.com>
* coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
when handling 32 bit immediate relocs.
when handling 32 bit immediate relocs.
* elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
Tue Jun 30 09:55:03 1998 Jeffrey A Law (law@cygnus.com)
@ -5177,7 +5233,7 @@ Thu Jun 25 18:31:41 1998 Richard Henderson <rth@cygnus.com>
(ppc_elf_howto_raw): Handle them.
(ppc_elf_reloc_type_lookup): Likewise.
(ppc_elf_relocate_section): Likewise.
(ppc_elf_check_relocs): Reference count .got and .plt entires.
(ppc_elf_check_relocs): Reference count .got and .plt entries.
Handle new vtable relocs.
(ppc_elf_adjust_dynamic_symbol): Recognize unused .plt entries.
(ppc_elf_gc_mark_hook, ppc_elf_gc_sweep_hook): New.
@ -5224,8 +5280,8 @@ Fri Jun 19 17:08:18 1998 Ian Lance Taylor <ian@cygnus.com>
Tue Jun 16 11:55:55 1998 Ian Lance Taylor <ian@cygnus.com>
* elf.c (copy_private_bfd_data): Improve handling of Solaris
native linker output. Avoid putting an empty section in more than
one segment.
native linker output. Avoid putting an empty section in more than
one segment.
Fri Jun 12 13:30:17 1998 Tom Tromey <tromey@cygnus.com>
@ -5287,7 +5343,7 @@ Tue Jun 2 15:29:35 1998 Ian Lance Taylor <ian@cygnus.com>
* elflink.h (elf_merge_symbol): Don't always set type_change_ok
and size_change_ok.
(elf_link_add_object_symbols): Set type_change_ok and
(elf_link_add_object_symbols): Set type_change_ok and
size_change_ok before calling elf_merge_symbol.
* elf32-mips.c (mips_elf_relocate_section): If we issue an
@ -5351,7 +5407,7 @@ Tue May 19 18:41:19 1998 Ian Lance Taylor <ian@cygnus.com>
* bfd-in.h: Move over patch to bfd-in2.h.
* reloc.c (bfd_check_overflow): Add casts before shifts which may
not fit in 32 bits.
not fit in 32 bits.
(_bfd_relocate_contents): Likewise.
Mon May 18 14:44:15 1998 Nick Clifton <nickc@cygnus.com>
@ -5631,8 +5687,8 @@ Thu Apr 16 13:49:00 1998 Richard Henderson <rth@cygnus.com>
Thu Apr 16 11:43:33 1998 Ian Lance Taylor <ian@cygnus.com>
* archive.c (bfd_generic_archive_p): If a slurp subroutine returns
an error other than bfd_error_system_call, set the error to
bfd_error_wrong_format.
an error other than bfd_error_system_call, set the error to
bfd_error_wrong_format.
* targets.c (bfd_target_vector) [SELECT_VECS not defined]: Add
bfd_elf32_powerpcle_vec.
@ -5976,10 +6032,10 @@ Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
From Yan Meroth <YAN.MEROTH@st.com>:
* ihex.c (ihex_scan): Add extbase variable so that getting an
extended linear address record does not ignore any previous
extended address.
extended linear address record does not ignore any previous
extended address.
(ihex_write_object_contents): When writing out an extended linear
address record, zero out any previous extended address.
address record, zero out any previous extended address.
Tue Mar 24 16:09:43 1998 Manfred Hollstein <manfred@s-direktnet.de>
@ -6038,7 +6094,7 @@ Mon Feb 23 19:31:19 1998 Ian Lance Taylor <ian@cygnus.com>
1998-02-23 15:53 Richard Henderson <rth@cygnus.com>
* elf32-i386.c (elf_i386_relocate_section): A pc-relative
relocation against a now-local symbol should not have a dynamic
relocation against a non-local symbol should not have a dynamic
relocation.
Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
@ -6051,8 +6107,8 @@ Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
Sun Feb 22 20:39:00 1998 Richard Henderson <rth@cygnus.com>
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
a plt entry when we can determine that we authoritatively define
the symbol.
a plt entry when we can determine that we authoritatively define
the symbol.
Sun Feb 22 20:33:05 1998 Richard Henderson <rth@cygnus.com>
@ -6116,7 +6172,7 @@ Thu Feb 12 17:31:11 1998 Ian Lance Taylor <ian@cygnus.com>
netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
* config.bfd (alpha*-*-netbsd*): New target.
* Makefile.am: Rebuild dependencies.
(BFD32_BACKENDS): Add vaxnetbsd.lo.
(BFD32_BACKENDS): Add vaxnetbsd.lo.
(BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
* configure, Makefile.in: Rebuild.
@ -6181,8 +6237,8 @@ Thu Feb 5 11:51:05 1998 Ian Lance Taylor <ian@cygnus.com>
skip empty sections, to match coff_write_object_contents.
* elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
rather than swapping out r_offset twice. From Luke Deller
<luked@cse.unsw.edu.au>.
rather than swapping out r_offset twice. From Luke Deller
<luked@cse.unsw.edu.au>.
Wed Feb 4 19:11:28 1998 Ian Lance Taylor <ian@cygnus.com>
@ -6265,7 +6321,7 @@ Fri Jan 30 19:07:07 1998 Geoff Keating <geoffk@ozemail.com.au>
* elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
against _GLOBAL_OFFSET_TABLE_.
(ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
(ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
shared libraries which refer to local symbols. Make sure that the
test for allocating space for a reloc in a shared object is the
same as the test for emitting a reloc.
@ -6343,10 +6399,10 @@ Thu Jan 22 21:13:39 1998 Richard Henderson <rth@cygnus.com>
Wed Jan 21 21:19:03 1998 Ian Lance Taylor <ian@cygnus.com>
* coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
adjust addend for an output common symbol (from Jimmy Blair
<jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
defined symbol to counteract adjustment made in generic relocation
code.
adjust addend for an output common symbol (from Jimmy Blair
<jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
defined symbol to counteract adjustment made in generic relocation
code.
* dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.

View File

@ -1,5 +1,5 @@
/* BFD semi-generic back-end for a.out binaries.
Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@ -2822,7 +2822,7 @@ NAME(aout,find_nearest_line)
}
if (main_file_name == NULL
|| main_file_name[0] == '/'
|| IS_ABSOLUTE_PATH (main_file_name)
|| directory_name == NULL)
filelen = 0;
else
@ -2846,7 +2846,7 @@ NAME(aout,find_nearest_line)
if (main_file_name != NULL)
{
if (main_file_name[0] == '/' || directory_name == NULL)
if (IS_ABSOLUTE_PATH (main_file_name) || directory_name == NULL)
*filename_ptr = main_file_name;
else
{

View File

@ -1,5 +1,5 @@
/* BFD back-end for archive files (libraries).
Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support. Mostly Gumby Henkel-Wallace's fault.
@ -1183,6 +1183,17 @@ normalize (abfd, file)
{
const char *filename = strrchr (file, '/');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (file, '\\');
if (bslash > filename)
filename = bslash;
if (filename == NULL && file[0] != '\0' && file[1] == ':')
filename = file + 1;
}
#endif
if (filename != (char *) NULL)
filename++;
else
@ -1515,6 +1526,17 @@ bfd_bsd_truncate_arname (abfd, pathname, arhdr)
CONST char *filename = strrchr (pathname, '/');
int maxlen = ar_maxnamelen (abfd);
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (pathname, '\\');
if (bslash > filename)
filename = bslash;
if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
filename = pathname + 1;
}
#endif
if (filename == NULL)
filename = pathname;
else
@ -1555,6 +1577,17 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr)
CONST char *filename = strrchr (pathname, '/');
int maxlen = ar_maxnamelen (abfd);
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (pathname, '\\');
if (bslash > filename)
filename = bslash;
if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
filename = pathname + 1;
}
#endif
if (filename == NULL)
filename = pathname;
else

View File

@ -1,5 +1,6 @@
/* BFD library -- caching of file descriptors.
Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Copyright 1990, 91, 92, 93, 94, 95, 1996, 2000
Free Software Foundation, Inc.
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
This file is part of BFD, the Binary File Descriptor library.
@ -300,10 +301,17 @@ bfd_open_file (abfd)
So we unlink the output file if and only if it has
non-zero size. */
#ifndef __MSDOS__
/* Don't do this for MSDOS: it doesn't care about overwriting
a running binary, but if this file is already open by
another BFD, we will be in deep trouble if we delete an
open file. In fact, objdump does just that if invoked with
the --info option. */
struct stat s;
if (stat (abfd->filename, &s) == 0 && s.st_size != 0)
unlink (abfd->filename);
#endif
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WB);
abfd->opened_once = true;
}

View File

@ -246,10 +246,6 @@ case "${targ}" in
targ_defvec=bfd_elf32_i386_vec
targ_selvecs=i386coff_vec
;;
i[3456]86-*-rtemself*)
targ_defvec=bfd_elf32_i386_vec
targ_selvecs="i386coff_vec i386aout_vec"
;;
i[3456]86-*-msdosdjgpp* | i[3456]*-*-go32* | i[3456]86-go32-rtems* )
targ_defvec=go32coff_vec
targ_selvecs="go32stubbedcoff_vec i386aout_vec"
@ -258,10 +254,14 @@ case "${targ}" in
i[3456]86-*-aix*)
targ_defvec=i386coff_vec
;;
i[3456]86*-*-rtems*)
i[3456]86-*-rtemscoff*)
targ_defvec=i386coff_vec
targ_selvecs="bfd_elf32_i386_vec i386aout_vec"
;;
i[3456]86-*-rtemself* | i[3456]86*-*-rtems*)
targ_defvec=bfd_elf32_i386_vec
targ_selvecs="i386coff_vec i386aout_vec"
;;
i[3456]86-sequent-bsd*)
targ_defvec=i386dynix_vec
targ_underscore=yes
@ -362,7 +362,12 @@ case "${targ}" in
targ_selvecs="b_out_vec_big_host icoff_little_vec icoff_big_vec ieee_vec"
targ_underscore=yes
;;
i960-*-vxworks5.* | i960-*-coff* | i960-*-sysv* | i960-*-rtems*)
i960-*-rtemself*)
targ_defvec=bfd_elf32_i960_vec
targ_selvecs="icoff_big_vec b_out_vec_little_host b_out_vec_big_host ieee_vec"
targ_underscore=yes
;;
i960-*-vxworks5.* | i960-*-coff* | i960-*-sysv* | i960-*-rtemscoff* | i960-*-rtems*)
targ_defvec=icoff_little_vec
targ_selvecs="icoff_big_vec b_out_vec_little_host b_out_vec_big_host ieee_vec"
targ_underscore=yes
@ -407,10 +412,16 @@ case "${targ}" in
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68kcoff_vec ieee_vec"
;;
m68*-*-rtems*)
m68*-*-rtemscoff*)
# same as m68k-coff with some extra targets
targ_defvec=m68kcoff_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
;;
m68*-*-rtems* | m68*-*-rtemself*)
# same as m68k-elf with some extra targets
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
;;
m68*-*-coff* | m68*-*-sysv*)
targ_defvec=m68kcoff_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec"
@ -643,7 +654,7 @@ case "${targ}" in
targ_selvecs="shlpe_vec shlpei_vec"
targ_underscore=yes
;;
sh-*-* | sh-*-rtems*)
sh-*-* | sh-*-rtemscoff* | sh-*-rtems*)
targ_defvec=shcoff_vec
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
targ_underscore=yes
@ -721,7 +732,16 @@ case "${targ}" in
sparc*-*-coff*)
targ_defvec=sparccoff_vec
;;
sparc*-*-* | sparc*-*-rtems*)
sparc*-*-rtemsaout*)
targ_defvec=sunos_big_vec
targ_selvecs="bfd_elf32_sparc_vec sparccoff_vec"
targ_underscore=yes
;;
sparc*-*-rtems* | sparc*-*-rtemself*)
targ_defvec=bfd_elf32_sparc_vec
targ_selvecs="sunos_big_vec sparccoff_vec"
;;
sparc*-*-*)
targ_defvec=sunos_big_vec
targ_underscore=yes
;;

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ AC_INIT(libbfd.c)
AC_CANONICAL_SYSTEM
AC_ISC_POSIX
AM_INIT_AUTOMAKE(bfd, 2.9.5)
AM_INIT_AUTOMAKE(bfd, 2.10)
dnl These must be called before AM_PROG_LIBTOOL, because it may want
dnl to call AC_CHECK_PROG.
@ -119,6 +119,7 @@ if test "${target}" = "${host}"; then
TRAD_HEADER='"hosts/alphalinux.h"'
;;
alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;;
alpha*-*-freebsd*) ;;
alpha*-*-*) COREFILE=osf-core.lo ;;
arm-*-riscix) COREFILE=trad-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;

View File

@ -45,6 +45,7 @@ enum bfd_architecture
#define bfd_mach_m68030 5
#define bfd_mach_m68040 6
#define bfd_mach_m68060 7
#define bfd_mach_cpu32 8
bfd_arch_vax, /* DEC Vax */
bfd_arch_i960, /* Intel 960 */
/* The order of the following is important.
@ -72,8 +73,9 @@ enum bfd_architecture
#define bfd_mach_sparc_sparclite 3
#define bfd_mach_sparc_v8plus 4
#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */
#define bfd_mach_sparc_v9 6
#define bfd_mach_sparc_v9a 7 /* with ultrasparc add'ns */
#define bfd_mach_sparc_sparclite_le 6
#define bfd_mach_sparc_v9 7
#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
/* Nonzero if MACH has the v9 instruction set. */
#define bfd_mach_sparc_v9_p(mach) \
((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a)
@ -83,6 +85,7 @@ enum bfd_architecture
#define bfd_mach_mips4000 4000
#define bfd_mach_mips4010 4010
#define bfd_mach_mips4100 4100
#define bfd_mach_mips4111 4111
#define bfd_mach_mips4300 4300
#define bfd_mach_mips4400 4400
#define bfd_mach_mips4600 4600
@ -95,9 +98,11 @@ enum bfd_architecture
bfd_arch_i386, /* Intel 386 */
#define bfd_mach_i386_i386 0
#define bfd_mach_i386_i8086 1
#define bfd_mach_i386_i386_intel_syntax 2
bfd_arch_we32k, /* AT&T WE32xxx */
bfd_arch_tahoe, /* CCI/Harris Tahoe */
bfd_arch_i860, /* Intel 860 */
bfd_arch_i370, /* IBM 360/370 Mainframes */
bfd_arch_romp, /* IBM ROMP PC/RT */
bfd_arch_alliant, /* Alliant */
bfd_arch_convex, /* Convex */
@ -111,34 +116,61 @@ enum bfd_architecture
bfd_arch_rs6000, /* IBM RS/6000 */
bfd_arch_hppa, /* HP PA RISC */
bfd_arch_d10v, /* Mitsubishi D10V */
#define bfd_mach_d10v 0
#define bfd_mach_d10v_ts2 2
#define bfd_mach_d10v_ts3 3
bfd_arch_d30v, /* Mitsubishi D30V */
bfd_arch_z8k, /* Zilog Z8000 */
#define bfd_mach_z8001 1
#define bfd_mach_z8002 2
bfd_arch_h8500, /* Hitachi H8/500 */
bfd_arch_sh, /* Hitachi SH */
#define bfd_mach_sh 0
#define bfd_mach_sh2 0x20
#define bfd_mach_sh_dsp 0x2d
#define bfd_mach_sh3 0x30
#define bfd_mach_sh3_dsp 0x3d
#define bfd_mach_sh3e 0x3e
#define bfd_mach_sh4 0x40
bfd_arch_alpha, /* Dec Alpha */
#define bfd_mach_alpha_ev4 0x10
#define bfd_mach_alpha_ev5 0x20
#define bfd_mach_alpha_ev6 0x30
bfd_arch_arm, /* Advanced Risc Machines ARM */
#define bfd_mach_arm_2 1
#define bfd_mach_arm_2a 2
#define bfd_mach_arm_2a 2
#define bfd_mach_arm_3 3
#define bfd_mach_arm_3M 4
#define bfd_mach_arm_4 5
#define bfd_mach_arm_4 5
#define bfd_mach_arm_4T 6
#define bfd_mach_arm_5 7
#define bfd_mach_arm_5T 8
bfd_arch_ns32k, /* National Semiconductors ns32000 */
bfd_arch_w65, /* WDC 65816 */
bfd_arch_tic30, /* Texas Instruments TMS320C30 */
bfd_arch_tic80, /* TI TMS320c80 (MVP) */
bfd_arch_v850, /* NEC V850 */
#define bfd_mach_v850 0
#define bfd_mach_v850e 'E'
#define bfd_mach_v850ea 'A'
bfd_arch_arc, /* Argonaut RISC Core */
#define bfd_mach_arc_base 0
bfd_arch_m32r, /* Mitsubishi M32R/D */
#define bfd_mach_m32r 0 /* backwards compatibility */
#define bfd_mach_m32rx 'x'
bfd_arch_mn10200, /* Matsushita MN10200 */
bfd_arch_mn10300, /* Matsushita MN10300 */
#define bfd_mach_mn10300 300
#define bfd_mach_am33 330
bfd_arch_fr30,
#define bfd_mach_fr30 0x46523330
bfd_arch_mcore,
bfd_arch_pj,
bfd_arch_avr, /* Atmel AVR microcontrollers */
#define bfd_mach_avr1 1
#define bfd_mach_avr2 2
#define bfd_mach_avr3 3
#define bfd_mach_avr4 4
bfd_arch_last
@};
@end example
@ -352,3 +384,26 @@ machine type.
This routine is depreciated.
@findex bfd_octets_per_byte
@subsubsection @code{bfd_octets_per_byte}
@strong{Synopsis}
@example
unsigned int bfd_octets_per_byte(bfd *abfd);
@end example
@strong{Description}@*
Return the number of octets (8-bit quantities) per target byte
(minimum addressable unit). In most cases, this will be one, but some
DSP targets have 16, 32, or even 48 bits per byte.
@findex bfd_arch_mach_octets_per_byte
@subsubsection @code{bfd_arch_mach_octets_per_byte}
@strong{Synopsis}
@example
unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
unsigned long machine);
@end example
@strong{Description}@*
See bfd_octets_per_byte.
This routine is provided for those cases where a bfd * is not
available

View File

@ -144,6 +144,7 @@ struct _bfd
struct nlm_obj_tdata *nlm_obj_data;
struct bout_data_struct *bout_data;
struct sun_core_struct *sun_core_data;
struct sco5_core_struct *sco5_core_data;
struct trad_core_struct *trad_core_data;
struct som_data_struct *som_data;
struct hpux_core_struct *hpux_core_data;
@ -561,6 +562,9 @@ Stuff which should be documented:
#define bfd_relax_section(abfd, section, link_info, again) \
BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
#define bfd_gc_sections(abfd, link_info) \
BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
#define bfd_link_hash_table_create(abfd) \
BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))

View File

@ -96,7 +96,7 @@ coff which has a varying field size not catered to at the
moment. To port BFD, that person will have to add more @code{#defines}.
Three of the bit twiddling routines are exported to
@code{gdb}; @code{coff_swap_aux_in}, @code{coff_swap_sym_in}
and @code{coff_swap_linno_in}. @code{GDB} reads the symbol
and @code{coff_swap_lineno_in}. @code{GDB} reads the symbol
table on its own, but uses BFD to fix things up. More of the
bit twiddlers are exported for @code{gas};
@code{coff_swap_aux_out}, @code{coff_swap_sym_out},
@ -266,6 +266,25 @@ boolean done_lineno;
@end example
@findex bfd_coff_backend_data
@subsubsection @code{bfd_coff_backend_data}
@example
/* COFF symbol classifications. */
enum coff_symbol_classification
@{
/* Global symbol. */
COFF_SYMBOL_GLOBAL,
/* Common symbol. */
COFF_SYMBOL_COMMON,
/* Undefined symbol. */
COFF_SYMBOL_UNDEFINED,
/* Local symbol. */
COFF_SYMBOL_LOCAL,
/* PE section symbol. */
COFF_SYMBOL_PE_SECTION
@};
@end example
Special entry points for gdb to swap in coff symbol table parts:
@example
typedef struct
@ -342,6 +361,7 @@ dependent COFF routines:
unsigned int _bfd_auxesz;
unsigned int _bfd_relsz;
unsigned int _bfd_linesz;
unsigned int _bfd_filnmlen;
boolean _bfd_coff_long_filenames;
boolean _bfd_coff_long_section_names;
unsigned int _bfd_coff_default_section_alignment_power;
@ -374,7 +394,8 @@ dependent COFF routines:
flagword (*_bfd_styp_to_sec_flags_hook) PARAMS ((
bfd *abfd,
PTR internal_scnhdr,
const char *name));
const char *name,
asection *section));
void (*_bfd_set_alignment_hook) PARAMS ((
bfd *abfd,
asection *sec,
@ -411,7 +432,7 @@ dependent COFF routines:
arelent *r,
unsigned int shrink,
struct bfd_link_info *link_info));
boolean (*_bfd_coff_sym_is_global) PARAMS ((
enum coff_symbol_classification (*_bfd_coff_classify_symbol) PARAMS ((
bfd *abfd,
struct internal_syment *));
boolean (*_bfd_coff_compute_section_file_positions) PARAMS ((
@ -455,7 +476,8 @@ dependent COFF routines:
struct bfd_link_hash_entry **hashp));
boolean (*_bfd_coff_link_output_has_begun) PARAMS ((
bfd * abfd ));
bfd * abfd,
struct coff_final_link_info * pfinfo));
boolean (*_bfd_coff_final_link_postscript) PARAMS ((
bfd * abfd,
struct coff_final_link_info * pfinfo));
@ -501,6 +523,7 @@ dependent COFF routines:
#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
#define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames)
#define bfd_coff_long_section_names(abfd) \
(coff_backend_info (abfd)->_bfd_coff_long_section_names)
@ -526,8 +549,9 @@ dependent COFF routines:
#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr))
#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name)\
((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name))
#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section)\
((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
(abfd, scnhdr, name, section))
#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
@ -550,8 +574,8 @@ dependent COFF routines:
((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
(abfd, section, reloc, shrink, link_info))
#define bfd_coff_sym_is_global(abfd, sym)\
((coff_backend_info (abfd)->_bfd_coff_sym_is_global)\
#define bfd_coff_classify_symbol(abfd, sym)\
((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
(abfd, sym))
#define bfd_coff_compute_section_file_positions(abfd)\
@ -574,8 +598,8 @@ dependent COFF routines:
((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
(info, abfd, name, flags, section, value, string, cp, coll, hashp))
#define bfd_coff_link_output_has_begun(a) \
((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a))
#define bfd_coff_link_output_has_begun(a,p) \
((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a,p))
#define bfd_coff_final_link_postscript(a,p) \
((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a,p))
@ -601,6 +625,9 @@ function is an offset from the first line in the function. The
base of the line number information for the table is stored in
the symbol associated with the function.
Note: The PE format uses line number 0 for a flag indicating a
new source file.
The information is copied from the external to the internal
table, and each symbol which marks a function is marked by
pointing its...

View File

@ -42,7 +42,7 @@ error occurs.
The function @code{bfd_hash_table_init} take as an argument a
function to use to create new entries. For a basic hash
table, use the function @code{bfd_hash_newfunc}. @xref{Deriving
a New Hash Table Type} for why you would want to use a
a New Hash Table Type}, for why you would want to use a
different value for this argument.
@findex bfd_hash_allocate

View File

@ -43,7 +43,7 @@ To detect calling these with less than a @code{bfd_vma}, use
/* Byte swapping macros for user section data. */
#define bfd_put_8(abfd, val, ptr) \
(*((unsigned char *)(ptr)) = (unsigned char)(val))
((void) (*((unsigned char *)(ptr)) = (unsigned char)(val)))
#define bfd_put_signed_8 \
bfd_put_8
#define bfd_get_8(abfd, ptr) \
@ -78,6 +78,20 @@ To detect calling these with less than a @code{bfd_vma}, use
#define bfd_get_signed_64(abfd, ptr) \
BFD_SEND(abfd, bfd_getx_signed_64, (ptr))
#define bfd_get(bits, abfd, ptr) \
((bits) == 8 ? bfd_get_8 (abfd, ptr) \
: (bits) == 16 ? bfd_get_16 (abfd, ptr) \
: (bits) == 32 ? bfd_get_32 (abfd, ptr) \
: (bits) == 64 ? bfd_get_64 (abfd, ptr) \
: (abort (), (bfd_vma) - 1))
#define bfd_put(bits, abfd, val, ptr) \
((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
: (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
: (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
: (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
: (abort (), (void) 0))
@end example
@findex bfd_h_put_size

View File

@ -42,7 +42,7 @@ routines are used as examples throughout this section.
@cindex target vector (_bfd_link_hash_table_create)
The linker routines must create a hash table, which must be
derived from @code{struct bfd_link_hash_table} described in
@code{bfdlink.c}. @xref{Hash Tables} for information on how to
@code{bfdlink.c}. @xref{Hash Tables}, for information on how to
create a derived hash table. This entry point is called using
the target vector of the linker output file.

View File

@ -116,6 +116,37 @@ Create a new BFD in the manner of
takes the target from the target used by @var{template}. The
format is always set to @code{bfd_object}.
@findex bfd_make_writable
@subsubsection @code{bfd_make_writable}
@strong{Synopsis}
@example
boolean bfd_make_writable(bfd *abfd);
@end example
@strong{Description}@*
Takes a BFD as created by @code{bfd_create} and converts it
into one like as returned by @code{bfd_openw}. It does this
by converting the BFD to BFD_IN_MEMORY. It's assumed that
you will call @code{bfd_make_readable} on this bfd later.
@strong{Returns}@*
@code{true} is returned if all is ok, otherwise @code{false}.
@findex bfd_make_readable
@subsubsection @code{bfd_make_readable}
@strong{Synopsis}
@example
boolean bfd_make_readable(bfd *abfd);
@end example
@strong{Description}@*
Takes a BFD as created by @code{bfd_create} and
@code{bfd_make_writable} and converts it into one like as
returned by @code{bfd_openr}. It does this by writing the
contents out to the memory buffer, then reversing the
direction.
@strong{Returns}@*
@code{true} is returned if all is ok, otherwise @code{false}.
@findex bfd_alloc
@subsubsection @code{bfd_alloc}
@strong{Synopsis}

View File

@ -1,7 +1,7 @@
@section Relocations
BFD maintains relocations in much the same way it maintains
symbols: they are left alone until required, then read in
en-mass and translated into an internal form. A common
en-masse and translated into an internal form. A common
routine @code{bfd_perform_relocation} acts upon the
canonical form to do the fixup.
@ -307,13 +307,26 @@ struct reloc_howto_struct
/* The textual name of the relocation type. */
char *name;
/* When performing a partial link, some formats must modify the
relocations rather than the data - this flag signals this.*/
/* Some formats record a relocation addend in the section contents
rather than with the relocation. For ELF formats this is the
distinction between USE_REL and USE_RELA (though the code checks
for USE_REL == 1/0). The value of this field is TRUE if the
addend is recorded with the section contents; when performing a
partial link (ld -r) the section contents (the data) will be
modified. The value of this field is FALSE if addends are
recorded with the relocation (in arelent.addend); when performing
a partial link the relocation will be modified.
All relocations for all ELF USE_RELA targets should set this field
to FALSE (values of TRUE should be looked on with suspicion).
However, the converse is not true: not all relocations of all ELF
USE_REL targets set this field to TRUE. Why this is so is peculiar
to each particular target. For relocs that aren't used in partial
links (e.g. GOT stuff) it doesn't matter what this is set to. */
boolean partial_inplace;
/* The src_mask selects which parts of the read in data
are to be used in the relocation sum. E.g., if this was an 8 bit
bit of data which we read and relocated, this would be
byte of data which we read and relocated, this would be
0x000000ff. When we have relocs which have an addend, such as
sun4 extended relocs, the value in the offset part of a
relocating field is garbage so we never use it. In this case
@ -353,6 +366,14 @@ moment, we are compatible, so do it this way.
@end example
@strong{Description}@*
This is used to fill in an empty howto entry in an array.
@example
#define EMPTY_HOWTO(C) \
HOWTO((C),0,0,0,false,0,complain_overflow_dont,NULL,NULL,false,0,0,false)
@end example
@strong{Description}@*
Helper routine to turn a symbol into a relocation value.
@example
@ -399,13 +420,15 @@ bfd_check_overflow
(enum complain_overflow how,
unsigned int bitsize,
unsigned int rightshift,
unsigned int addrsize,
bfd_vma relocation);
@end example
@strong{Description}@*
Perform overflow checking on @var{relocation} which has @var{bitsize}
significant bits and will be shifted right by @var{rightshift} bits.
The result is either of @code{bfd_reloc_ok} or
@code{bfd_reloc_overflow}.
Perform overflow checking on @var{relocation} which has
@var{bitsize} significant bits and will be shifted right by
@var{rightshift} bits, on a machine with addresses containing
@var{addrsize} significant bits. The result is either of
@code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
@findex bfd_perform_relocation
@subsubsection @code{bfd_perform_relocation}
@ -609,6 +632,9 @@ I think these are specific to SPARC a.out (e.g., Sun 4).
@deffnx {} BFD_RELOC_SPARC_REGISTER
SPARC64 relocations
@end deffn
@deffn {} BFD_RELOC_SPARC_REV32
SPARC little endian relocation
@end deffn
@deffn {} BFD_RELOC_ALPHA_GPDISP_HI16
Alpha ECOFF and ELF relocations. Some of these treat the symbol or
"addend" in some special way.
@ -657,6 +683,17 @@ of instruction using the register:
The GNU linker currently doesn't do any of this optimizing.
@end deffn
@deffn {} BFD_RELOC_ALPHA_USER_LITERAL
@deffnx {} BFD_RELOC_ALPHA_USER_LITUSE_BASE
@deffnx {} BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF
@deffnx {} BFD_RELOC_ALPHA_USER_LITUSE_JSR
@deffnx {} BFD_RELOC_ALPHA_USER_GPDISP
@deffnx {} BFD_RELOC_ALPHA_USER_GPRELHIGH
@deffnx {} BFD_RELOC_ALPHA_USER_GPRELLOW
The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
process the explicit !<reloc>!sequence relocations, and are mapped
into the normal relocations at the end of processing.
@end deffn
@deffn {} BFD_RELOC_ALPHA_HINT
The HINT relocation indicates a value that should be filled into the
"hint" field of a jmp/jsr/ret instruction, for possible branch-
@ -711,6 +748,10 @@ Relocation against a MIPS literal section.
@deffnx {} BFD_RELOC_MIPS_GOT_LO16
@deffnx {} BFD_RELOC_MIPS_CALL_HI16
@deffnx {} BFD_RELOC_MIPS_CALL_LO16
@deffnx {} BFD_RELOC_MIPS_SUB
@deffnx {} BFD_RELOC_MIPS_GOT_PAGE
@deffnx {} BFD_RELOC_MIPS_GOT_OFST
@deffnx {} BFD_RELOC_MIPS_GOT_DISP
MIPS ELF relocations.
@end deffn
@deffn {} BFD_RELOC_386_GOT32
@ -737,6 +778,14 @@ i386/elf relocations
@deffnx {} BFD_RELOC_NS32K_DISP_32_PCREL
ns32k relocations
@end deffn
@deffn {} BFD_RELOC_PJ_CODE_HI16
@deffnx {} BFD_RELOC_PJ_CODE_LO16
@deffnx {} BFD_RELOC_PJ_CODE_DIR16
@deffnx {} BFD_RELOC_PJ_CODE_DIR32
@deffnx {} BFD_RELOC_PJ_CODE_REL16
@deffnx {} BFD_RELOC_PJ_CODE_REL32
Picojava relocs. Not all of these appear in object files.
@end deffn
@deffn {} BFD_RELOC_PPC_B26
@deffnx {} BFD_RELOC_PPC_BA26
@deffnx {} BFD_RELOC_PPC_TOC16
@ -769,6 +818,9 @@ ns32k relocations
@deffnx {} BFD_RELOC_PPC_EMB_RELSDA
Power(rs6000) and PowerPC relocations.
@end deffn
@deffn {} BFD_RELOC_I370_D12
IBM 370/390 relocations
@end deffn
@deffn {} BFD_RELOC_CTOR
The type of reloc used to build a contructor table - at the moment
probably a 32 bit wide absolute relocation, but the target can choose.
@ -779,6 +831,7 @@ ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction.
@end deffn
@deffn {} BFD_RELOC_ARM_IMMEDIATE
@deffnx {} BFD_RELOC_ARM_ADRL_IMMEDIATE
@deffnx {} BFD_RELOC_ARM_OFFSET_IMM
@deffnx {} BFD_RELOC_ARM_SHIFT_IMM
@deffnx {} BFD_RELOC_ARM_SWI
@ -794,6 +847,15 @@ not stored in the instruction.
@deffnx {} BFD_RELOC_ARM_THUMB_IMM
@deffnx {} BFD_RELOC_ARM_THUMB_SHIFT
@deffnx {} BFD_RELOC_ARM_THUMB_OFFSET
@deffnx {} BFD_RELOC_ARM_GOT12
@deffnx {} BFD_RELOC_ARM_GOT32
@deffnx {} BFD_RELOC_ARM_JUMP_SLOT
@deffnx {} BFD_RELOC_ARM_COPY
@deffnx {} BFD_RELOC_ARM_GLOB_DAT
@deffnx {} BFD_RELOC_ARM_PLT32
@deffnx {} BFD_RELOC_ARM_RELATIVE
@deffnx {} BFD_RELOC_ARM_GOTOFF
@deffnx {} BFD_RELOC_ARM_GOTPC
These relocs are only used within the ARM assembler. They are not
(at present) written to any object files.
@end deffn
@ -854,6 +916,54 @@ assumed to be 0.
This is an 18-bit reloc with the right 2 bits
assumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_6
Mitsubishi D30V relocs.
This is a 6-bit absolute reloc.
@end deffn
@deffn {} BFD_RELOC_D30V_9_PCREL
This is a 6-bit pc-relative reloc with
the right 3 bits assumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_9_PCREL_R
This is a 6-bit pc-relative reloc with
the right 3 bits assumed to be 0. Same
as the previous reloc but on the right side
of the container.
@end deffn
@deffn {} BFD_RELOC_D30V_15
This is a 12-bit absolute reloc with the
right 3 bitsassumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_15_PCREL
This is a 12-bit pc-relative reloc with
the right 3 bits assumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_15_PCREL_R
This is a 12-bit pc-relative reloc with
the right 3 bits assumed to be 0. Same
as the previous reloc but on the right side
of the container.
@end deffn
@deffn {} BFD_RELOC_D30V_21
This is an 18-bit absolute reloc with
the right 3 bits assumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_21_PCREL
This is an 18-bit pc-relative reloc with
the right 3 bits assumed to be 0.
@end deffn
@deffn {} BFD_RELOC_D30V_21_PCREL_R
This is an 18-bit pc-relative reloc with
the right 3 bits assumed to be 0. Same
as the previous reloc but on the right side
of the container.
@end deffn
@deffn {} BFD_RELOC_D30V_32
This is a 32-bit absolute reloc.
@end deffn
@deffn {} BFD_RELOC_D30V_32_PCREL
This is a 32-bit pc-relative reloc.
@end deffn
@deffn {} BFD_RELOC_M32R_24
Mitsubishi M32R relocs.
This is a 24 bit absolute address.
@ -916,6 +1026,27 @@ This is a 7 bit offset from the tiny data area pointer.
@deffn {} BFD_RELOC_V850_TDA_16_16_OFFSET
This is a 16 bit offset from the tiny data area pointer.
@end deffn
@deffn {} BFD_RELOC_V850_TDA_4_5_OFFSET
This is a 5 bit offset (of which only 4 bits are used) from the tiny
data area pointer.
@end deffn
@deffn {} BFD_RELOC_V850_TDA_4_4_OFFSET
This is a 4 bit offset from the tiny data area pointer.
@end deffn
@deffn {} BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
This is a 16 bit offset from the short data area pointer, with the
bits placed non-contigously in the instruction.
@end deffn
@deffn {} BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
This is a 16 bit offset from the zero data area pointer, with the
bits placed non-contigously in the instruction.
@end deffn
@deffn {} BFD_RELOC_V850_CALLT_6_7_OFFSET
This is a 6 bit offset from the call table base pointer.
@end deffn
@deffn {} BFD_RELOC_V850_CALLT_16_16_OFFSET
This is a 16 bit offset from the call table base pointer.
@end deffn
@deffn {} BFD_RELOC_MN10300_32_PCREL
This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
instruction.
@ -929,6 +1060,133 @@ This is a 8bit DP reloc for the tms320c30, where the most
significant 8 bits of a 24 bit word are placed into the least
significant 8 bits of the opcode.
@end deffn
@deffn {} BFD_RELOC_FR30_48
This is a 48 bit reloc for the FR30 that stores 32 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_20
This is a 32 bit reloc for the FR30 that stores 20 bits split up into
two sections.
@end deffn
@deffn {} BFD_RELOC_FR30_6_IN_4
This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
4 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_8_IN_8
This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
into 8 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_9_IN_8
This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
into 8 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_10_IN_8
This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
into 8 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_9_PCREL
This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
short offset into 8 bits.
@end deffn
@deffn {} BFD_RELOC_FR30_12_PCREL
This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
short offset into 11 bits.
@end deffn
@deffn {} BFD_RELOC_MCORE_PCREL_IMM8BY4
@deffnx {} BFD_RELOC_MCORE_PCREL_IMM11BY2
@deffnx {} BFD_RELOC_MCORE_PCREL_IMM4BY2
@deffnx {} BFD_RELOC_MCORE_PCREL_32
@deffnx {} BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
@deffnx {} BFD_RELOC_MCORE_RVA
Motorola Mcore relocations.
@end deffn
@deffn {} BFD_RELOC_AVR_7_PCREL
This is a 16 bit reloc for the AVR that stores 8 bit pc relative
short offset into 7 bits.
@end deffn
@deffn {} BFD_RELOC_AVR_13_PCREL
This is a 16 bit reloc for the AVR that stores 13 bit pc relative
short offset into 12 bits.
@end deffn
@deffn {} BFD_RELOC_AVR_16_PM
This is a 16 bit reloc for the AVR that stores 17 bit value (usually
program memory address) into 16 bits.
@end deffn
@deffn {} BFD_RELOC_AVR_LO8_LDI
This is a 16 bit reloc for the AVR that stores 8 bit value (usually
data memory address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HI8_LDI
This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
of data memory address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HH8_LDI
This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
of program memory address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_LO8_LDI_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(usually data memory address) into 8 bit immediate value of SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HI8_LDI_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(high 8 bit of data memory address) into 8 bit immediate value of
SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HH8_LDI_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(most high 8 bit of program memory address) into 8 bit immediate value
of LDI or SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_LO8_LDI_PM
This is a 16 bit reloc for the AVR that stores 8 bit value (usually
command address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HI8_LDI_PM
This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
of command address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HH8_LDI_PM
This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
of command address) into 8 bit immediate value of LDI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_LO8_LDI_PM_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(usually command address) into 8 bit immediate value of SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HI8_LDI_PM_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(high 8 bit of 16 bit command address) into 8 bit immediate value
of SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_HH8_LDI_PM_NEG
This is a 16 bit reloc for the AVR that stores negated 8 bit value
(high 6 bit of 22 bit command address) into 8 bit immediate
value of SUBI insn.
@end deffn
@deffn {} BFD_RELOC_AVR_CALL
This is a 32 bit reloc for the AVR that stores 23 bit value
into 22 bits.
@end deffn
@deffn {} BFD_RELOC_VTABLE_INHERIT
@deffnx {} BFD_RELOC_VTABLE_ENTRY
These two relocations are used by the linker to determine which of
the entries in a C++ virtual function table are actually used. When
the --gc-sections option is given, the linker will zero out the entries
that are not used, so that the code for those functions need not be
included in the output.
VTABLE_INHERIT is a zero-space relocation used to describe to the
linker the inheritence tree of a C++ virtual function table. The
relocation's symbol should be the parent class' vtable, and the
relocation should be located at the child vtable.
VTABLE_ENTRY is a zero-space relocation that describes the use of a
virtual function table entry. The reloc's symbol should refer to the
table of the class mentioned in the code. Off of that base, an offset
describes the entry that is being used. For Rela hosts, this offset
is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset.
@end deffn
@example
@ -980,6 +1238,17 @@ boolean bfd_generic_relax_section
Provides default handling for relaxing for back ends which
don't do relaxing -- i.e., does nothing.
@findex bfd_generic_gc_sections
@subsubsection @code{bfd_generic_gc_sections}
@strong{Synopsis}
@example
boolean bfd_generic_gc_sections
(bfd *, struct bfd_link_info *);
@end example
@strong{Description}@*
Provides default handling for relaxing for back ends which
don't do section gc -- i.e., does nothing.
@findex bfd_generic_get_relocated_section_contents
@subsubsection @code{bfd_generic_get_relocated_section_contents}
@strong{Synopsis}

View File

@ -107,6 +107,27 @@ Here is the section structure:
@example
/* This structure is used for a comdat section, as in PE. A comdat
section is associated with a particular symbol. When the linker
sees a comdat section, it keeps only one of the sections with a
given name and associated with a given symbol. */
struct bfd_comdat_info
@{
/* The name of the symbol associated with a comdat section. */
const char *name;
/* The local symbol table index of the symbol associated with a
comdat section. This is only meaningful to the object file format
specific code; it is not an index into the list returned by
bfd_canonicalize_symtab. */
long symbol;
/* If this section is being discarded, the linker uses this field
to point to the input section which is being kept. */
struct sec *sec;
@};
typedef struct sec
@{
/* The name of the section; the name isn't a copy, the pointer is
@ -172,7 +193,7 @@ typedef struct sec
standard data. */
#define SEC_CONSTRUCTOR 0x100
/* The section is a constuctor, and should be placed at the
/* The section is a constructor, and should be placed at the
end of the text, data, or bss section(?). */
#define SEC_CONSTRUCTOR_TEXT 0x1100
#define SEC_CONSTRUCTOR_DATA 0x2100
@ -261,6 +282,17 @@ typedef struct sec
else up the line will take care of it later. */
#define SEC_LINKER_CREATED 0x800000
/* This section should not be subject to garbage collection. */
#define SEC_KEEP 0x1000000
/* This section contains "short" data, and should be placed
"near" the GP. */
#define SEC_SMALL_DATA 0x2000000
/* This section contains data which may be shared with other
executables or shared objects. */
#define SEC_SHARED 0x4000000
/* End of section flags. */
/* Some internal packed boolean fields. */
@ -274,6 +306,9 @@ typedef struct sec
/* A mark flag used by some of the linker backends. */
unsigned int linker_mark : 1;
/* A mark flag used by some linker backends for garbage collection. */
unsigned int gc_mark : 1;
/* End of internal packed boolean fields. */
/* The virtual memory address of the section - where it will be
@ -291,22 +326,25 @@ typedef struct sec
bfd_vma lma;
/* The size of the section in bytes, as it will be output.
contains a value even if the section has no contents (e.g., the
size of @code{.bss}). This will be filled in after relocation */
/* The size of the section in octets, as it will be output.
Contains a value even if the section has no contents (e.g., the
size of @code{.bss}). This will be filled in after relocation. */
bfd_size_type _cooked_size;
/* The original size on disk of the section, in bytes. Normally this
/* The original size on disk of the section, in octets. Normally this
value is the same as the size, but if some relaxing has
been done, then this value will be bigger. */
bfd_size_type _raw_size;
/* If this section is going to be output, then this value is the
offset into the output section of the first byte in the input
section. E.g., if this was going to start at the 100th byte in
the output section, this value would be 100. */
offset in *bytes* into the output section of the first byte in the
input section (byte ==> smallest addressable unit on the
target). In most cases, if this was going to start at the
100th octet (8-bit quantity) in the output section, this value
would be 100. However, if the target byte size is 16 bits
(bfd_octets_per_byte is "2"), this value would be 50. */
bfd_vma output_offset;
@ -364,6 +402,10 @@ typedef struct sec
unsigned int lineno_count;
/* Optional information about a COMDAT entry; NULL if not COMDAT */
struct bfd_comdat_info *comdat;
/* When a section is being output, this value changes as more
linenumbers are written out */
@ -423,9 +465,11 @@ extern const struct symbol_cache_entry * const bfd_com_symbol;
extern const struct symbol_cache_entry * const bfd_und_symbol;
extern const struct symbol_cache_entry * const bfd_ind_symbol;
#define bfd_get_section_size_before_reloc(section) \
(section->reloc_done ? (abort(),1): (section)->_raw_size)
((section)->reloc_done ? (abort (), (bfd_size_type) 1) \
: (section)->_raw_size)
#define bfd_get_section_size_after_reloc(section) \
((section->reloc_done) ? (section)->_cooked_size: (abort(),1))
((section)->reloc_done ? (section)->_cooked_size \
: (abort (), (bfd_size_type) 1))
@end example
@node section prototypes, , typedef asection, Sections
@ -588,7 +632,7 @@ boolean bfd_set_section_contents
Sets the contents of the section @var{section} in BFD
@var{abfd} to the data starting in memory at @var{data}. The
data is written to the output section starting at offset
@var{offset} for @var{count} bytes.
@var{offset} for @var{count} octets.
Normally @code{true} is returned, else @code{false}. Possible error
returns are:
@ -648,3 +692,16 @@ Not enough memory exists to create private data for @var{osec}.
(ibfd, isection, obfd, osection))
@end example
@findex _bfd_strip_section_from_output
@subsubsection @code{_bfd_strip_section_from_output}
@strong{Synopsis}
@example
void _bfd_strip_section_from_output
(struct bfd_link_info *info, asection *section);
@end example
@strong{Description}@*
Remove @var{section} from the output. If the output section
becomes empty, remove it from the output bfd. @var{info} may
be NULL; if it is not, it is used to decide whether the output
section is empty.

View File

@ -183,7 +183,7 @@ typedef struct symbol_cache_entry
@code{BSF_GLOBAL} */
/* The symbol is a debugging record. The value has an arbitary
meaning. */
meaning, unless BSF_DEBUGGING_RELOC is also set. */
#define BSF_DEBUGGING 0x08
/* The symbol denotes a function entry point. Used in ELF,
@ -241,6 +241,11 @@ typedef struct symbol_cache_entry
others someday. */
#define BSF_OBJECT 0x10000
/* This symbol is a debugging symbol. The value is the offset
into the section of the data. BSF_DEBUGGING should be set
as well. */
#define BSF_DEBUGGING_RELOC 0x20000
flagword flags;
/* A pointer to the section to which this symbol is
@ -371,6 +376,17 @@ class of @var{symbol}, or '?' for an unknown class.
@example
int bfd_decode_symclass(asymbol *symbol);
@end example
@findex bfd_is_undefined_symclass
@subsubsection @code{bfd_is_undefined_symclass }
@strong{Description}@*
Returns non-zero if the class symbol returned by
bfd_decode_symclass represents an undefined symbol.
Returns zero otherwise.
@strong{Synopsis}
@example
boolean bfd_is_undefined_symclass (int symclass);
@end example
@findex bfd_symbol_info
@subsubsection @code{bfd_symbol_info}
@strong{Description}@*

View File

@ -127,6 +127,7 @@ enum bfd_flavour @{
bfd_target_os9k_flavour,
bfd_target_versados_flavour,
bfd_target_msdos_flavour,
bfd_target_ovax_flavour,
bfd_target_evax_flavour
@};
@ -219,7 +220,8 @@ Write cached information into a file being written, at @code{bfd_close}.
@example
boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
@end example
The general target vector.
The general target vector. These vectors are initialized using the
BFD_JUMP_TABLE macros.
@example
/* Generic entry points. */
@ -388,7 +390,8 @@ CAT(NAME,_bfd_relax_section),\
CAT(NAME,_bfd_link_hash_table_create),\
CAT(NAME,_bfd_link_add_symbols),\
CAT(NAME,_bfd_final_link),\
CAT(NAME,_bfd_link_split_section)
CAT(NAME,_bfd_link_split_section),\
CAT(NAME,_bfd_gc_sections)
int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean));
bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *,
struct bfd_link_info *, struct bfd_link_order *,
@ -412,7 +415,10 @@ CAT(NAME,_bfd_link_split_section)
/* Should this section be split up into smaller pieces during linking. */
boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));
/* Routines to handle dynamic symbols and relocs. */
/* Remove sections that are not referenced from the output. */
boolean (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));
/* Routines to handle dynamic symbols and relocs. */
#define BFD_JUMP_TABLE_DYNAMIC(NAME)\
CAT(NAME,_get_dynamic_symtab_upper_bound),\
CAT(NAME,_canonicalize_dynamic_symtab),\
@ -429,11 +435,22 @@ CAT(NAME,_canonicalize_dynamic_reloc)
long (*_bfd_canonicalize_dynamic_reloc)
PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));
@end example
A pointer to an alternative bfd_target in case the current one is not
satisfactory. This can happen when the target cpu supports both big
and little endian code, and target chosen by the linker has the wrong
endianness. The function open_output() in ld/ldlang.c uses this field
to find an alternative output format that is suitable.
@example
/* Opposite endian version of this target. */
const struct bfd_target * alternative_target;
@end example
Data for use by back-end routines, which isn't generic enough to belong
in this structure.
@example
PTR backend_data;
@} bfd_target;
@end example
@ -476,3 +493,16 @@ Return a freshly malloced NULL-terminated
vector of the names of all the valid BFD targets. Do not
modify the names.
@findex bfd_seach_for_target
@subsubsection @code{bfd_seach_for_target}
@strong{Synopsis}
@example
const bfd_target * bfd_search_for_target (int (* search_func)(const bfd_target *, void *), void *);
@end example
@strong{Description}@*
Return a pointer to the first transfer vector in the list of
transfer vectors maintained by BFD that produces a non-zero
result when passed to the function @var{search_func}. The
parameter @var{data} is passed, unexamined, to the search
function.

View File

@ -486,7 +486,7 @@ bfd_close_all_done (abfd)
int mask = umask (0);
umask (mask);
chmod (abfd->filename,
(0x777
(0777
& (buf.st_mode | ((S_IXUSR | S_IXGRP | S_IXOTH) &~ mask))));
}
}

View File

@ -64,7 +64,11 @@ typedef struct ppcboot_hdr {
bfd_byte os_id; /* OS_ID */
char partition_name[32]; /* partition name */
bfd_byte reserved1[470]; /* reserved */
} ppcboot_hdr_t;
}
#ifdef __GNUC__
__attribute__ ((packed))
#endif
ppcboot_hdr_t;
/* Signature bytes for last 2 bytes of the 512 byte record */
#define SIGNATURE0 0x55

View File

@ -1,5 +1,5 @@
/* sysdep.h -- handle host dependencies for the BFD library
Copyright 1995, 96, 97, 98, 1999 Free Software Foundation, Inc.
Copyright 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@ -102,6 +102,8 @@ extern char *strrchr ();
#define SEEK_CUR 1
#endif
#include "filenames.h"
#ifdef NEED_DECLARATION_STRSTR
extern char *strstr ();
#endif
@ -131,14 +133,13 @@ extern char *getenv ();
#define N_(String) (String)
#endif
#else
/* Stubs that do something close enough. */
#define textdomain(String) (String)
#define gettext(String) (String)
#define dgettext(Domain,Message) (Message)
#define dcgettext(Domain,Message,Type) (Message)
#define bindtextdomain(Domain,Directory) (Domain)
#define _(String) (String)
#define N_(String) (String)
# define gettext(Msgid) (Msgid)
# define dgettext(Domainname, Msgid) (Msgid)
# define dcgettext(Domainname, Msgid, Category) (Msgid)
# define textdomain(Domainname) while (0) /* nothing */
# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
# define _(String) (String)
# define N_(String) (String)
#endif
#endif /* ! defined (BFD_SYSDEP_H) */

View File

@ -1,3 +1,72 @@
2000-05-30 Alan Modra <alan@linuxcare.com.au>
* objdump.c (display_target_list): Use bfd_close_all_done, not
bfd_close to fix crash caused by 2000-05-24 change.
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
* ar.c: Include filenames.h.
(normalize) [HAVE_DOS_BASED_FILE_SYSTEM]: Support backslashes
and drive letters in file names.
(main): Support backslashes and drive letters in argv[0]. Drop
the .exe suffix, if any, in argv[0] if is_ranlib is negative. Use
FILENAME_CMP instead of strcmp to compare file names.
(open_inarch) [__GO32__]: Don't ifdef errno != ENOENT test for
DJGPP v2.
(do_quick_append) [__GO32__]: Ditto.
(get_pos_bfd, delete_members, move_members, replace_members):
Compare file names with FILENAME_CMP.
* bucomm.c: Include filenames.h.
(make_tempname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support mixed
forward/backward slashes and drive letters in file names.
* ieee.c (ieee_start_compilation_unit, ieee_add_bb11): Support
mixed forward/backward slashes and drive letters in file names.
* strings.c (O_BINARY, setmode, SET_BINARY): Define.
(main) [SET_BINARY]: Use SET_BINARY to switch stdin into binary
mode.
* objcopy.c: Include filenames.h.
(main) [HAVE_DOS_BASED_FILE_SYSTEM]: Drop the .exe suffix
before comparing to "strip".
Use FILENAME_CMP to compare file names.
* arsup.c: Include filenames.h.
(map_over_list, ar_delete, ar_replace, ar_extract): Use
FILENAME_CMP to compare file names.
(ar_open): Prepend "tmp-" instead of appending "-tmp", to create
the temporary file name.
* configure.in: Check for setmode.
* configure: Regenerate.
2000-05-24 Alan Modra <alan@linuxcare.com.au>
* objdump.c (display_target_list): Close the bfd.
(display_info_table): Likewise.
2000-05-23 Philip Blundell <pb@futuretv.com>
* configure.in: Set version to 2.10.
* configure: Regenerate.
2000-05-02 H.J. Lu <hjl@gnu.org>
* readelf.c (get_osabi_name): Handle ELFOSABI_NONE instead of
ELFOSABI_SYSV. Also handle ELFOSABI_NETBSD, ELFOSABI_HURD,
ELFOSABI_SOLARIS, ELFOSABI_MONTEREY, ELFOSABI_IRIX,
ELFOSABI_FREEBSD, ELFOSABI_TRU64, ELFOSABI_MODESTO
and ELFOSABI_OPENBSD.
2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
* arlex.l: Add directives to increase lex buffer size.
* objdump.c, readelf.c: Don't include strarg.h or varargs.h. They are
already included by bucomm.h.
2000-04-10 Philippe De Muyter <phdm@macqel.be>
* readelf (dynamic_segment_mips_val): Call `sprintf', not

View File

@ -32,6 +32,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "aout/ar.h"
#include "libbfd.h"
#include "arsup.h"
#include "filenames.h"
#include <sys/stat.h>
#ifdef __GO32___
@ -215,7 +216,7 @@ map_over_members (arch, function, files, count)
bfd_stat_arch_elt (head, &buf);
}
if ((head->filename != NULL) &&
(!strcmp (normalize (*files, arch), head->filename)))
(!FILENAME_CMP (normalize (*files, arch), head->filename)))
{
++match_count;
if (counted_name_mode
@ -302,6 +303,16 @@ normalize (file, abfd)
return file;
filename = strrchr (file, '/');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (file, '\\');
if (bslash > filename)
filename = bslash;
if (filename == NULL && file[0] != '\0' && file[1] == ':')
filename = file + 1;
}
#endif
if (filename != (char *) NULL)
filename++;
else
@ -377,12 +388,22 @@ main (argc, argv)
char *temp;
temp = strrchr (program_name, '/');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (program_name, '\\');
if (bslash > temp)
temp = bslash;
if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':')
temp = program_name + 1;
}
#endif
if (temp == NULL)
temp = program_name;
else
++temp;
if (strlen (temp) >= 6
&& strcmp (temp + strlen (temp) - 6, "ranlib") == 0)
&& FILENAME_CMP (temp + strlen (temp) - 6, "ranlib") == 0)
is_ranlib = 1;
else
is_ranlib = 0;
@ -697,12 +718,15 @@ open_inarch (archive_filename, file)
if (stat (archive_filename, &sbuf) != 0)
{
#ifndef __GO32__
#if !defined(__GO32__) || defined(__DJGPP__)
/* FIXME: I don't understand why this fragment was ifndef'ed
away for __GO32__; perhaps it was in the days of DJGPP v1.x.
stat() works just fine in v2.x, so I think this should be
removed. For now, I enable it for DJGPP v2. -- EZ. */
/* KLUDGE ALERT! Temporary fix until I figger why
* stat() is wrong ... think it's buried in GO32's IDT
* - Jax
*/
stat() is wrong ... think it's buried in GO32's IDT - Jax */
if (errno != ENOENT)
bfd_fatal (archive_filename);
#endif
@ -932,12 +956,18 @@ do_quick_append (archive_filename, files_to_append)
if (stat (archive_filename, &sbuf) != 0)
{
#ifndef __GO32__
#if !defined(__GO32__) || defined(__DJGPP__)
/* FIXME: I don't understand why this fragment was ifndef'ed
away for __GO32__; perhaps it was in the days of DJGPP v1.x.
stat() works just fine in v2.x, so I think this should be
removed. For now, I enable it for DJGPP v2.
(And yes, I know this is all unused, but somebody, someday,
might wish to resurrect this again... -- EZ. */
/* KLUDGE ALERT! Temporary fix until I figger why
* stat() is wrong ... think it's buried in GO32's IDT
* - Jax
*/
stat() is wrong ... think it's buried in GO32's IDT - Jax */
if (errno != ENOENT)
bfd_fatal (archive_filename);
@ -1107,7 +1137,7 @@ get_pos_bfd (contents, default_pos, default_posname)
else
{
for (; *after_bfd; after_bfd = &(*after_bfd)->next)
if (strcmp ((*after_bfd)->filename, realposname) == 0)
if (FILENAME_CMP ((*after_bfd)->filename, realposname) == 0)
{
if (realpos == pos_after)
after_bfd = &(*after_bfd)->next;
@ -1147,7 +1177,7 @@ delete_members (arch, files_to_delete)
current_ptr_ptr = &(arch->next);
while (*current_ptr_ptr)
{
if (strcmp (normalize (*files_to_delete, arch),
if (FILENAME_CMP (normalize (*files_to_delete, arch),
(*current_ptr_ptr)->filename) == 0)
{
++match_count;
@ -1204,8 +1234,8 @@ move_members (arch, files_to_move)
while (*current_ptr_ptr)
{
bfd *current_ptr = *current_ptr_ptr;
if (strcmp (normalize (*files_to_move, arch),
current_ptr->filename) == 0)
if (FILENAME_CMP (normalize (*files_to_move, arch),
current_ptr->filename) == 0)
{
/* Move this file to the end of the list - first cut from
where it is. */
@ -1260,8 +1290,8 @@ replace_members (arch, files_to_move, quick)
/* For compatibility with existing ar programs, we
permit the same file to be added multiple times. */
if (strcmp (normalize (*files_to_move, arch),
normalize (current->filename, arch)) == 0
if (FILENAME_CMP (normalize (*files_to_move, arch),
normalize (current->filename, arch)) == 0
&& current->arelt_data != NULL)
{
if (newer_only)

View File

@ -31,6 +31,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
int linenumber;
%}
%a 10000
%o 25000
%%
"ADDLIB" { return ADDLIB; }

View File

@ -1,5 +1,5 @@
/* arsup.c - Archive support for MRI compatibility
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 1999
Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@ -31,6 +31,7 @@ style librarian command syntax + 1 word LIST
#include "arsup.h"
#include "libiberty.h"
#include "bucomm.h"
#include "filenames.h"
static void map_over_list
PARAMS ((bfd *, void (*function) (bfd *, bfd *), struct list *));
@ -76,7 +77,7 @@ map_over_list (arch, function, list)
for (head = arch->next; head; head = head->next)
{
if (head->filename != NULL
&& strcmp (ptr->name, head->filename) == 0)
&& FILENAME_CMP (ptr->name, head->filename) == 0)
{
found = true;
function (head, prev);
@ -160,7 +161,9 @@ DEFUN(ar_open,(name, t),
{
char *tname = (char *) xmalloc (strlen (name) + 10);
real_name = name;
sprintf(tname, "%s-tmp", name);
/* Prepend tmp- to the beginning, to avoid file-name clashes after
truncation on filesystems with limited namespaces (DOS). */
sprintf(tname, "tmp-%s", name);
obfd = bfd_openw(tname, NULL);
if (!obfd) {
@ -289,7 +292,7 @@ DEFUN(ar_delete, (list),
bfd **prev = &(obfd->archive_head);
int found = 0;
while (member) {
if (strcmp(member->filename, list->name) == 0) {
if (FILENAME_CMP(member->filename, list->name) == 0) {
*prev = member->next;
found = 1;
}
@ -346,7 +349,7 @@ DEFUN(ar_replace, (list),
int found = 0;
while (member)
{
if (strcmp(member->filename, list->name) == 0)
if (FILENAME_CMP(member->filename, list->name) == 0)
{
/* Found the one to replace */
bfd *abfd = bfd_openr(list->name, 0);
@ -437,7 +440,7 @@ DEFUN(ar_extract,(list),
int found = 0;
while (member && !found)
{
if (strcmp(member->filename, list->name) == 0)
if (FILENAME_CMP(member->filename, list->name) == 0)
{
extract_file(member);
found = 1;

View File

@ -25,6 +25,7 @@
#include "bfd.h"
#include "libiberty.h"
#include "bucomm.h"
#include "filenames.h"
#include <sys/stat.h>
#include <time.h> /* ctime, maybe time_t */
@ -214,9 +215,15 @@ make_tempname (filename)
char *tmpname;
char *slash = strrchr (filename, '/');
#if defined (__DJGPP__) || defined (__GO32__) || defined (_WIN32)
if (slash == NULL)
slash = strrchr (filename, '\\');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (filename, '\\');
if (bslash > slash)
slash = bslash;
if (slash == NULL && filename[0] != '\0' && filename[1] == ':')
slash = filename + 1;
}
#endif
if (slash != (char *) NULL)
@ -225,8 +232,15 @@ make_tempname (filename)
c = *slash;
*slash = 0;
tmpname = xmalloc (strlen (filename) + sizeof (template) + 1);
tmpname = xmalloc (strlen (filename) + sizeof (template) + 2);
strcpy (tmpname, filename);
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* If tmpname is "X:", appending a slash will make it a root
directory on drive X, which is NOT the same as the current
directory on drive X. */
if (tmpname[1] == ':' && tmpname[2] == '\0')
strcat (tmpname, ".");
#endif
strcat (tmpname, "/");
strcat (tmpname, template);
mktemp (tmpname);

View File

@ -82,6 +82,9 @@
/* Define if you have the setlocale function. */
#undef HAVE_SETLOCALE
/* Define if you have the setmode function. */
#undef HAVE_SETMODE
/* Define if you have the stpcpy function. */
#undef HAVE_STPCPY

View File

@ -1 +1 @@
@set VERSION 2.9.1
@set VERSION 2.10

View File

@ -814,7 +814,7 @@ fi
PACKAGE=binutils
VERSION=2.9.5
VERSION=2.10
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; }
@ -4300,7 +4300,7 @@ EOF
fi
for ac_func in sbrk utimes
for ac_func in sbrk utimes setmode
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:4307: checking for $ac_func" >&5

View File

@ -5,7 +5,7 @@ AC_INIT(ar.c)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(binutils, 2.9.5)
AM_INIT_AUTOMAKE(binutils, 2.10)
AM_PROG_LIBTOOL
@ -75,7 +75,7 @@ AC_SUBST(DEMANGLER_NAME)
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h)
AC_HEADER_SYS_WAIT
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(sbrk utimes)
AC_CHECK_FUNCS(sbrk utimes setmode)
# Some systems have frexp only in -lm, not in -lc.
AC_SEARCH_LIBS(frexp, m)

View File

@ -1,35 +1,41 @@
/* A Bison parser, made from /5g/ian/binutils/release/copy/binutils/defparse.y
by GNU Bison version 1.25
*/
/* A Bison parser, made from defparse.y
by GNU Bison version 1.28 */
#define YYBISON 1 /* Identify Bison output. */
#define NAME 258
#define LIBRARY 259
#define DESCRIPTION 260
#define STACKSIZE 261
#define HEAPSIZE 262
#define CODE 263
#define DATA 264
#define SECTIONS 265
#define EXPORTS 266
#define IMPORTS 267
#define VERSIONK 268
#define BASE 269
#define CONSTANT 270
#define READ 271
#define WRITE 272
#define EXECUTE 273
#define SHARED 274
#define NAME 257
#define LIBRARY 258
#define DESCRIPTION 259
#define STACKSIZE 260
#define HEAPSIZE 261
#define CODE 262
#define DATA 263
#define SECTIONS 264
#define EXPORTS 265
#define IMPORTS 266
#define VERSIONK 267
#define BASE 268
#define CONSTANT 269
#define READ 270
#define WRITE 271
#define EXECUTE 272
#define SHARED 273
#define NONSHARED 274
#define NONAME 275
#define ID 276
#define NUMBER 277
#define SINGLE 276
#define MULTIPLE 277
#define INITINSTANCE 278
#define INITGLOBAL 279
#define TERMINSTANCE 280
#define TERMGLOBAL 281
#define ID 282
#define NUMBER 283
#line 1 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 1 "defparse.y"
/* defparse.y - parser for .def files */
/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of GNU Binutils.
@ -51,7 +57,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bucomm.h"
#include "dlltool.h"
#line 26 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 26 "defparse.y"
typedef union {
char *id;
int number;
@ -66,20 +72,20 @@ typedef union {
#define YYFINAL 75
#define YYFINAL 94
#define YYFLAG -32768
#define YYNTBASE 27
#define YYNTBASE 34
#define YYTRANSLATE(x) ((unsigned)(x) <= 277 ? yytranslate[x] : 46)
#define YYTRANSLATE(x) ((unsigned)(x) <= 283 ? yytranslate[x] : 55)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 25, 2, 23, 2, 2, 2, 2,
2, 2, 2, 32, 2, 30, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
24, 2, 2, 26, 2, 2, 2, 2, 2, 2,
31, 2, 2, 33, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@ -98,45 +104,56 @@ static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22
2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29
};
#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 3, 5, 9, 13, 16, 19, 23, 27, 30,
33, 36, 39, 42, 47, 48, 50, 53, 60, 63,
65, 71, 75, 78, 80, 83, 87, 89, 91, 92,
95, 96, 98, 100, 102, 104, 106, 107, 109, 110,
112, 113, 115, 116, 119, 120, 123, 124, 128
0, 3, 5, 9, 14, 17, 20, 24, 28, 31,
34, 37, 40, 43, 48, 49, 52, 59, 62, 64,
72, 80, 86, 92, 98, 104, 108, 112, 115, 117,
120, 124, 126, 128, 129, 132, 133, 135, 137, 139,
141, 143, 145, 147, 149, 150, 152, 153, 155, 156,
158, 162, 163, 166, 167, 170, 171, 175, 176, 177,
181, 183, 185, 187
};
static const short yyrhs[] = { 27,
28, 0, 28, 0, 3, 42, 45, 0, 4, 42,
45, 0, 11, 29, 0, 5, 21, 0, 6, 22,
37, 0, 7, 22, 37, 0, 8, 35, 0, 9,
35, 0, 10, 33, 0, 12, 31, 0, 13, 22,
0, 13, 22, 23, 22, 0, 0, 30, 0, 29,
30, 0, 21, 44, 43, 40, 39, 41, 0, 31,
32, 0, 32, 0, 21, 24, 21, 23, 21, 0,
21, 23, 21, 0, 33, 34, 0, 34, 0, 21,
35, 0, 35, 36, 38, 0, 38, 0, 25, 0,
0, 25, 22, 0, 0, 16, 0, 17, 0, 18,
0, 19, 0, 15, 0, 0, 20, 0, 0, 9,
0, 0, 21, 0, 0, 26, 22, 0, 0, 24,
21, 0, 0, 14, 24, 22, 0, 0
static const short yyrhs[] = { 34,
35, 0, 35, 0, 3, 49, 52, 0, 4, 49,
52, 53, 0, 11, 36, 0, 5, 28, 0, 6,
29, 44, 0, 7, 29, 44, 0, 8, 42, 0,
9, 42, 0, 10, 40, 0, 12, 38, 0, 13,
29, 0, 13, 29, 30, 29, 0, 0, 36, 37,
0, 28, 51, 50, 47, 46, 48, 0, 38, 39,
0, 39, 0, 28, 31, 28, 30, 28, 30, 28,
0, 28, 31, 28, 30, 28, 30, 29, 0, 28,
31, 28, 30, 28, 0, 28, 31, 28, 30, 29,
0, 28, 30, 28, 30, 28, 0, 28, 30, 28,
30, 29, 0, 28, 30, 28, 0, 28, 30, 29,
0, 40, 41, 0, 41, 0, 28, 42, 0, 42,
43, 45, 0, 45, 0, 32, 0, 0, 32, 29,
0, 0, 16, 0, 17, 0, 18, 0, 19, 0,
20, 0, 22, 0, 23, 0, 15, 0, 0, 21,
0, 0, 9, 0, 0, 28, 0, 28, 30, 28,
0, 0, 33, 29, 0, 0, 31, 28, 0, 0,
14, 31, 29, 0, 0, 0, 53, 43, 54, 0,
24, 0, 25, 0, 26, 0, 27, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
42, 43, 46, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 62, 64, 65, 68, 72, 74,
77, 79, 81, 83, 86, 90, 92, 95, 97, 99,
100, 103, 105, 106, 107, 110, 112, 115, 117, 120,
122, 125, 126, 129, 131, 134, 136, 139, 140
43, 44, 47, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 63, 65, 68, 72, 74, 77,
79, 80, 81, 82, 83, 84, 85, 88, 90, 93,
97, 99, 102, 104, 106, 107, 110, 112, 113, 114,
115, 116, 117, 120, 122, 125, 127, 130, 132, 135,
136, 142, 145, 147, 150, 152, 155, 156, 159, 161,
164, 166, 167, 168
};
#endif
@ -145,88 +162,105 @@ static const short yyrline[] = { 0,
static const char * const yytname[] = { "$","error","$undefined.","NAME","LIBRARY",
"DESCRIPTION","STACKSIZE","HEAPSIZE","CODE","DATA","SECTIONS","EXPORTS","IMPORTS",
"VERSIONK","BASE","CONSTANT","READ","WRITE","EXECUTE","SHARED","NONAME","ID",
"NUMBER","'.'","'='","','","'@'","start","command","explist","expline","implist",
"impline","seclist","secline","attr_list","opt_comma","opt_number","attr","opt_CONSTANT",
"opt_NONAME","opt_DATA","opt_name","opt_ordinal","opt_equal_name","opt_base", NULL
"VERSIONK","BASE","CONSTANT","READ","WRITE","EXECUTE","SHARED","NONSHARED","NONAME",
"SINGLE","MULTIPLE","INITINSTANCE","INITGLOBAL","TERMINSTANCE","TERMGLOBAL",
"ID","NUMBER","'.'","'='","','","'@'","start","command","explist","expline",
"implist","impline","seclist","secline","attr_list","opt_comma","opt_number",
"attr","opt_CONSTANT","opt_NONAME","opt_DATA","opt_name","opt_ordinal","opt_equal_name",
"opt_base","option_list","option", NULL
};
#endif
static const short yyr1[] = { 0,
27, 27, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 29, 29, 29, 30, 31, 31,
32, 32, 33, 33, 34, 35, 35, 36, 36, 37,
37, 38, 38, 38, 38, 39, 39, 40, 40, 41,
41, 42, 42, 43, 43, 44, 44, 45, 45
34, 34, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 36, 36, 37, 38, 38, 39,
39, 39, 39, 39, 39, 39, 39, 40, 40, 41,
42, 42, 43, 43, 44, 44, 45, 45, 45, 45,
45, 45, 45, 46, 46, 47, 47, 48, 48, 49,
49, 49, 50, 50, 51, 51, 52, 52, 53, 53,
54, 54, 54, 54
};
static const short yyr2[] = { 0,
2, 1, 3, 3, 2, 2, 3, 3, 2, 2,
2, 2, 2, 4, 0, 1, 2, 6, 2, 1,
5, 3, 2, 1, 2, 3, 1, 1, 0, 2,
0, 1, 1, 1, 1, 1, 0, 1, 0, 1,
0, 1, 0, 2, 0, 2, 0, 3, 0
2, 1, 3, 4, 2, 2, 3, 3, 2, 2,
2, 2, 2, 4, 0, 2, 6, 2, 1, 7,
7, 5, 5, 5, 5, 3, 3, 2, 1, 2,
3, 1, 1, 0, 2, 0, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 0, 1, 0, 1,
3, 0, 2, 0, 2, 0, 3, 0, 0, 3,
1, 1, 1, 1
};
static const short yydefact[] = { 0,
43, 43, 0, 0, 0, 0, 0, 0, 15, 0,
0, 0, 2, 42, 49, 49, 6, 31, 31, 32,
33, 34, 35, 9, 27, 10, 0, 11, 24, 47,
5, 16, 0, 12, 20, 13, 1, 0, 3, 4,
0, 7, 8, 28, 0, 25, 23, 0, 45, 17,
0, 0, 19, 0, 0, 30, 26, 46, 0, 39,
22, 0, 14, 48, 44, 38, 37, 0, 36, 41,
21, 40, 18, 0, 0
52, 52, 0, 0, 0, 0, 0, 0, 15, 0,
0, 0, 2, 50, 58, 58, 6, 36, 36, 37,
38, 39, 40, 41, 42, 43, 9, 32, 10, 0,
11, 29, 5, 0, 12, 19, 13, 1, 0, 0,
3, 59, 0, 7, 8, 33, 0, 30, 28, 56,
16, 0, 0, 18, 0, 51, 0, 4, 35, 31,
0, 54, 26, 27, 0, 14, 57, 0, 55, 0,
47, 0, 0, 61, 62, 63, 64, 60, 53, 46,
45, 24, 25, 22, 23, 44, 49, 0, 48, 17,
20, 21, 0, 0
};
static const short yydefgoto[] = { 12,
13, 31, 32, 34, 35, 28, 29, 24, 45, 42,
25, 70, 67, 73, 15, 60, 49, 39
13, 33, 51, 35, 36, 31, 32, 27, 47, 44,
28, 87, 81, 90, 15, 71, 62, 41, 58, 78
};
static const short yypact[] = { 18,
-2, -2, 15, 17, 20, -1, -1, 19, 22, 23,
24, 1,-32768,-32768, 31, 31,-32768, 12, 12,-32768,
-32768,-32768,-32768, 16,-32768, 16, -1, 19,-32768, 14,
22,-32768, -21, 23,-32768, 25,-32768, 26,-32768,-32768,
27,-32768,-32768,-32768, -1, 16,-32768, 30, 21,-32768,
32, 33,-32768, 34, 35,-32768,-32768,-32768, 36, 39,
-32768, 29,-32768,-32768,-32768,-32768, 40, 41,-32768, 51,
-32768,-32768,-32768, 61,-32768
static const short yypact[] = { 32,
-22, -22, -19, -13, 22, 30, 30, -6,-32768, 26,
38, 21,-32768, 29, 46, 46,-32768, 36, 36,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, -15,-32768, -15, 30,
-6,-32768, 41, -16, 26,-32768, 40,-32768, 43, 42,
-32768,-32768, 45,-32768,-32768,-32768, 30, -15,-32768, 44,
-32768, -9, 48,-32768, 49,-32768, 50, -14,-32768,-32768,
52, 39, 47,-32768, 51,-32768,-32768, 31,-32768, 53,
62, 33, 35,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
69,-32768,-32768, 55,-32768,-32768, 77, 37,-32768,-32768,
-32768,-32768, 87,-32768
};
static const short yypgoto[] = {-32768,
52,-32768, 37,-32768, 38,-32768, 42, -7,-32768, 44,
28,-32768,-32768,-32768, 63,-32768,-32768, 50
76,-32768,-32768,-32768, 54,-32768, 59, -7, 34, 72,
56,-32768,-32768,-32768, 91,-32768,-32768, 78,-32768,-32768
};
#define YYLAST 73
#define YYLAST 103
static const short yytable[] = { 26,
74, 51, 52, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 20, 21, 22, 23, 14, 46,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, -29, -29, -29, -29, 17, 41, 48, 18, 27,
44, 19, 30, 33, 38, 36, 59, 54, 56, 55,
58, 68, 61, 62, 69, 63, 64, 65, 66, 72,
75, 71, 43, 37, 16, 40, 0, 50, 0, 47,
0, 53, 57
static const short yytable[] = { 29,
-34, -34, -34, -34, -34, 14, -34, -34, 17, -34,
-34, -34, -34, 52, 53, 18, 46, 46, 63, 64,
93, 30, 48, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 20, 21, 22, 23, 24,
19, 25, 26, 34, 74, 75, 76, 77, 39, 40,
82, 83, 84, 85, 91, 92, 37, 43, 50, 55,
56, 70, 57, 59, 61, 65, 72, 66, 67, 69,
73, 79, 80, 86, 88, 89, 94, 38, 54, 49,
45, 68, 16, 42, 0, 0, 0, 0, 0, 0,
0, 0, 60
};
static const short yycheck[] = { 7,
0, 23, 24, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 16, 17, 18, 19, 21, 27,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 16, 17, 18, 19, 21, 25, 24, 22, 21,
25, 22, 21, 21, 14, 22, 26, 23, 22, 24,
21, 23, 21, 21, 15, 22, 22, 22, 20, 9,
0, 21, 19, 12, 2, 16, -1, 31, -1, 28,
-1, 34, 45
16, 17, 18, 19, 20, 28, 22, 23, 28, 24,
25, 26, 27, 30, 31, 29, 32, 32, 28, 29,
0, 28, 30, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 16, 17, 18, 19, 20,
29, 22, 23, 28, 24, 25, 26, 27, 30, 14,
28, 29, 28, 29, 28, 29, 29, 32, 28, 30,
28, 33, 31, 29, 31, 28, 30, 29, 29, 28,
30, 29, 21, 15, 30, 9, 0, 12, 35, 31,
19, 58, 2, 16, -1, -1, -1, -1, -1, -1,
-1, -1, 47
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/cygnus/progressive-97r2/share/bison.simple"
#line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.28. */
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@ -243,47 +277,67 @@ static const short yycheck[] = { 7,
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., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C. */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
#pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
void *alloca (unsigned int);
};
#else /* not __cplusplus */
void *alloca ();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc. */
#endif /* not GNU C. */
#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser
when the %semantic_parser declaration is not specified in the grammar.
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */
#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
#else /* alloca not defined */
#ifdef __GNUC__
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C. */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else /* not sparc */
/* We think this test detects Watcom and Microsoft C. */
/* This used to test MSDOS, but that is a bad idea
since that symbol is in the user namespace. */
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
#if 0 /* No need for malloc.h, which pollutes the namespace;
instead, just don't use alloca. */
#include <malloc.h>
#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
/* I don't know what this was needed for, but it pollutes the namespace.
So I turned it off. rms, 2 May 1997. */
/* #include <malloc.h> */
#pragma alloca
#define YYSTACK_USE_ALLOCA
#else /* not MSDOS, or __TURBOC__, or _AIX */
#if 0
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
and on HPUX 10. Eventually we can turn this on. */
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#endif /* __hpux */
#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc */
#endif /* not GNU C */
#endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */
#ifdef YYSTACK_USE_ALLOCA
#define YYSTACK_ALLOC alloca
#else
#define YYSTACK_ALLOC malloc
#endif
/* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
as one case of the switch. */
@ -292,8 +346,8 @@ void *alloca ();
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
#define YYACCEPT return(0)
#define YYABORT return(1)
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror.
This remains here temporarily to ease the
@ -374,12 +428,12 @@ int yydebug; /* nonzero means print parse trace */
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
int yyparse (void);
#endif
/* Define __yy_memcpy. Note that the size argument
should be passed with type unsigned int, because that is what the non-GCC
definitions require. With GCC, __builtin_memcpy takes an arg
of type size_t, but it can handle unsigned int. */
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else /* not GNU C or C++ */
@ -391,7 +445,7 @@ static void
__yy_memcpy (to, from, count)
char *to;
char *from;
int count;
unsigned int count;
{
register char *f = from;
register char *t = to;
@ -406,10 +460,10 @@ __yy_memcpy (to, from, count)
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
__yy_memcpy (char *to, char *from, int count)
__yy_memcpy (char *to, char *from, unsigned int count)
{
register char *f = from;
register char *t = to;
register char *f = from;
register int i = count;
while (i-- > 0)
@ -419,7 +473,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
#line 196 "/usr/cygnus/progressive-97r2/share/bison.simple"
#line 217 "/usr/share/misc/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@ -440,6 +494,15 @@ __yy_memcpy (char *to, char *from, int count)
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
int yyparse (void *);
#else
int yyparse (void);
#endif
#endif
int
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
@ -468,6 +531,7 @@ yyparse(YYPARSE_PARAM_ARG)
#endif
int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
#ifdef YYPURE
int yychar;
@ -552,18 +616,32 @@ yyparse(YYPARSE_PARAM_ARG)
if (yystacksize >= YYMAXDEPTH)
{
yyerror("parser stack overflow");
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 2;
}
yystacksize *= 2;
if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
__yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
__yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
#ifndef YYSTACK_USE_ALLOCA
yyfree_stacks = 1;
#endif
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
__yy_memcpy ((char *)yyss, (char *)yyss1,
size * (unsigned int) sizeof (*yyssp));
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
size * (unsigned int) sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
__yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
__yy_memcpy ((char *)yyls, (char *)yyls1,
size * (unsigned int) sizeof (*yylsp));
#endif
#endif /* no yyoverflow */
@ -724,140 +802,184 @@ yyparse(YYPARSE_PARAM_ARG)
switch (yyn) {
case 3:
#line 47 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 48 "defparse.y"
{ def_name (yyvsp[-1].id, yyvsp[0].number); ;
break;}
case 4:
#line 48 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ def_library (yyvsp[-1].id, yyvsp[0].number); ;
#line 49 "defparse.y"
{ def_library (yyvsp[-2].id, yyvsp[-1].number); ;
break;}
case 6:
#line 50 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 51 "defparse.y"
{ def_description (yyvsp[0].id);;
break;}
case 7:
#line 51 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 52 "defparse.y"
{ def_stacksize (yyvsp[-1].number, yyvsp[0].number);;
break;}
case 8:
#line 52 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 53 "defparse.y"
{ def_heapsize (yyvsp[-1].number, yyvsp[0].number);;
break;}
case 9:
#line 53 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 54 "defparse.y"
{ def_code (yyvsp[0].number);;
break;}
case 10:
#line 54 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 55 "defparse.y"
{ def_data (yyvsp[0].number);;
break;}
case 13:
#line 57 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 58 "defparse.y"
{ def_version (yyvsp[0].number,0);;
break;}
case 14:
#line 58 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 59 "defparse.y"
{ def_version (yyvsp[-2].number,yyvsp[0].number);;
break;}
case 18:
#line 70 "/5g/ian/binutils/release/copy/binutils/defparse.y"
case 17:
#line 70 "defparse.y"
{ def_exports (yyvsp[-5].id, yyvsp[-4].id, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number, yyvsp[0].number);;
break;}
case 20:
#line 78 "defparse.y"
{ def_import (yyvsp[-6].id,yyvsp[-4].id,yyvsp[-2].id,yyvsp[0].id, 0); ;
break;}
case 21:
#line 78 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ def_import (yyvsp[-4].id,yyvsp[-2].id,yyvsp[0].id);;
#line 79 "defparse.y"
{ def_import (yyvsp[-6].id,yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].number); ;
break;}
case 22:
#line 79 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ def_import (0, yyvsp[-2].id,yyvsp[0].id);;
#line 80 "defparse.y"
{ def_import (yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].id, 0); ;
break;}
case 23:
#line 81 "defparse.y"
{ def_import (yyvsp[-4].id,yyvsp[-2].id, 0, 0,yyvsp[0].number); ;
break;}
case 24:
#line 82 "defparse.y"
{ def_import ( 0,yyvsp[-4].id,yyvsp[-2].id,yyvsp[0].id, 0); ;
break;}
case 25:
#line 87 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ def_section (yyvsp[-1].id,yyvsp[0].number);;
#line 83 "defparse.y"
{ def_import ( 0,yyvsp[-4].id,yyvsp[-2].id, 0,yyvsp[0].number); ;
break;}
case 26:
#line 84 "defparse.y"
{ def_import ( 0,yyvsp[-2].id, 0,yyvsp[0].id, 0); ;
break;}
case 27:
#line 85 "defparse.y"
{ def_import ( 0,yyvsp[-2].id, 0, 0,yyvsp[0].number); ;
break;}
case 30:
#line 99 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=yyvsp[0].number;;
break;}
case 31:
#line 100 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=-1;;
break;}
case 32:
#line 104 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number = 1;;
break;}
case 33:
#line 105 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number = 2;;
break;}
case 34:
#line 106 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=4;;
#line 94 "defparse.y"
{ def_section (yyvsp[-1].id,yyvsp[0].number);;
break;}
case 35:
#line 107 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=8;;
#line 106 "defparse.y"
{ yyval.number=yyvsp[0].number;;
break;}
case 36:
#line 111 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{yyval.number=1;;
#line 107 "defparse.y"
{ yyval.number=-1;;
break;}
case 37:
#line 112 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{yyval.number=0;;
break;}
case 38:
#line 116 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{yyval.number=1;;
break;}
case 39:
#line 117 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{yyval.number=0;;
break;}
case 40:
#line 121 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 111 "defparse.y"
{ yyval.number = 1; ;
break;}
case 38:
#line 112 "defparse.y"
{ yyval.number = 2; ;
break;}
case 39:
#line 113 "defparse.y"
{ yyval.number = 4; ;
break;}
case 40:
#line 114 "defparse.y"
{ yyval.number = 8; ;
break;}
case 41:
#line 122 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 115 "defparse.y"
{ yyval.number = 0; ;
break;}
case 42:
#line 125 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.id =yyvsp[0].id; ;
#line 116 "defparse.y"
{ yyval.number = 0; ;
break;}
case 43:
#line 126 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.id=""; ;
#line 117 "defparse.y"
{ yyval.number = 0; ;
break;}
case 44:
#line 130 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=yyvsp[0].number;;
#line 121 "defparse.y"
{yyval.number=1;;
break;}
case 45:
#line 131 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number=-1;;
#line 122 "defparse.y"
{yyval.number=0;;
break;}
case 46:
#line 135 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.id = yyvsp[0].id; ;
#line 126 "defparse.y"
{yyval.number=1;;
break;}
case 47:
#line 136 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.id = 0; ;
#line 127 "defparse.y"
{yyval.number=0;;
break;}
case 48:
#line 139 "/5g/ian/binutils/release/copy/binutils/defparse.y"
{ yyval.number= yyvsp[0].number;;
#line 131 "defparse.y"
{ yyval.number = 1; ;
break;}
case 49:
#line 140 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 132 "defparse.y"
{ yyval.number = 0; ;
break;}
case 50:
#line 135 "defparse.y"
{ yyval.id =yyvsp[0].id; ;
break;}
case 51:
#line 137 "defparse.y"
{
char *name = xmalloc (strlen (yyvsp[-2].id) + 1 + strlen (yyvsp[0].id) + 1);
sprintf (name, "%s.%s", yyvsp[-2].id, yyvsp[0].id);
yyval.id = name;
;
break;}
case 52:
#line 142 "defparse.y"
{ yyval.id=""; ;
break;}
case 53:
#line 146 "defparse.y"
{ yyval.number=yyvsp[0].number;;
break;}
case 54:
#line 147 "defparse.y"
{ yyval.number=-1;;
break;}
case 55:
#line 151 "defparse.y"
{ yyval.id = yyvsp[0].id; ;
break;}
case 56:
#line 152 "defparse.y"
{ yyval.id = 0; ;
break;}
case 57:
#line 155 "defparse.y"
{ yyval.number= yyvsp[0].number;;
break;}
case 58:
#line 156 "defparse.y"
{ yyval.number=-1;;
break;}
}
/* the action file gets copied in in place of this dollarsign */
#line 498 "/usr/cygnus/progressive-97r2/share/bison.simple"
#line 543 "/usr/share/misc/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@ -1052,5 +1174,29 @@ case 49:
yystate = yyn;
goto yynewstate;
yyacceptlab:
/* YYACCEPT comes here. */
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 0;
yyabortlab:
/* YYABORT comes here. */
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 1;
}
#line 145 "/5g/ian/binutils/release/copy/binutils/defparse.y"
#line 170 "defparse.y"

View File

@ -2,26 +2,33 @@ typedef union {
char *id;
int number;
} YYSTYPE;
#define NAME 258
#define LIBRARY 259
#define DESCRIPTION 260
#define STACKSIZE 261
#define HEAPSIZE 262
#define CODE 263
#define DATA 264
#define SECTIONS 265
#define EXPORTS 266
#define IMPORTS 267
#define VERSIONK 268
#define BASE 269
#define CONSTANT 270
#define READ 271
#define WRITE 272
#define EXECUTE 273
#define SHARED 274
#define NAME 257
#define LIBRARY 258
#define DESCRIPTION 259
#define STACKSIZE 260
#define HEAPSIZE 261
#define CODE 262
#define DATA 263
#define SECTIONS 264
#define EXPORTS 265
#define IMPORTS 266
#define VERSIONK 267
#define BASE 268
#define CONSTANT 269
#define READ 270
#define WRITE 271
#define EXECUTE 272
#define SHARED 273
#define NONSHARED 274
#define NONAME 275
#define ID 276
#define NUMBER 277
#define SINGLE 276
#define MULTIPLE 277
#define INITINSTANCE 278
#define INITGLOBAL 279
#define TERMINSTANCE 280
#define TERMGLOBAL 281
#define ID 282
#define NUMBER 283
extern YYSTYPE yylval;

View File

@ -1,5 +1,5 @@
/* ieee.c -- Read and write IEEE-695 debugging information.
Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
@ -30,6 +30,7 @@
#include "libiberty.h"
#include "debug.h"
#include "budbg.h"
#include "filenames.h"
/* This structure holds an entry on the block stack. */
@ -4926,6 +4927,7 @@ ieee_start_compilation_unit (p, filename)
{
struct ieee_handle *info = (struct ieee_handle *) p;
const char *modname;
const char *backslash;
char *c, *s;
unsigned int nindx;
@ -4937,16 +4939,20 @@ ieee_start_compilation_unit (p, filename)
info->filename = filename;
modname = strrchr (filename, '/');
/* We could have a mixed forward/back slash case. */
backslash = strrchr (modname, '\\');
if (backslash > modname)
modname = backslash;
if (modname != NULL)
++modname;
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
else if (filename[0] && filename[1] == ':')
modname = filename + 2;
#endif
else
{
modname = strrchr (filename, '\\');
if (modname != NULL)
++modname;
else
modname = filename;
}
modname = filename;
c = xstrdup (modname);
s = strrchr (c, '.');
if (s != NULL)
@ -5194,22 +5200,25 @@ ieee_add_bb11 (info, sec, low, high)
}
else
{
const char *filename, *modname;
const char *filename, *modname, *backslash;
char *c, *s;
/* Start the enclosing BB10 block. */
filename = bfd_get_filename (info->abfd);
modname = strrchr (filename, '/');
backslash = strrchr (modname, '\\');
if (backslash > modname)
modname = backslash;
if (modname != NULL)
++modname;
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
else if (filename[0] && filename[1] == ':')
modname = filename + 2;
#endif
else
{
modname = strrchr (filename, '\\');
if (modname != NULL)
++modname;
else
modname = filename;
}
modname = filename;
c = xstrdup (modname);
s = strrchr (c, '.');
if (s != NULL)

View File

@ -1,5 +1,5 @@
/* objcopy.c -- copy object file from input to output, optionally massaging it.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@ -25,6 +25,7 @@
#include "getopt.h"
#include "libiberty.h"
#include "budbg.h"
#include "filenames.h"
#include <sys/stat.h>
/* A list of symbols to explicitly strip out, or to keep. A linked
@ -2248,7 +2249,15 @@ main (argc, argv)
if (is_strip < 0)
{
int i = strlen (program_name);
is_strip = (i >= 5 && strcmp (program_name + i - 5, "strip") == 0);
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* Drop the .exe suffix, if any. */
if (i > 4 && FILENAME_CMP (program_name + i - 4, ".exe") == 0)
{
i -= 4;
program_name[i] = '\0';
}
#endif
is_strip = (i >= 5 && FILENAME_CMP (program_name + i - 5, "strip") == 0);
}
if (is_strip)

View File

@ -29,12 +29,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "debug.h"
#include "budbg.h"
#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
#else
#include <varargs.h>
#endif
/* Internal headers for the ELF .stab-dump code - sorry. */
#define BYTES_IN_WORD 32
#include "aout/aout64.h"
@ -2657,6 +2651,7 @@ display_target_list ()
{
if (bfd_get_error () != bfd_error_invalid_operation)
nonfatal (p->name);
bfd_close_all_done (abfd);
continue;
}
@ -2664,6 +2659,7 @@ display_target_list ()
if (bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
printf (" %s\n",
bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
bfd_close_all_done (abfd);
}
unlink (dummy_name);
free (dummy_name);
@ -2731,6 +2727,8 @@ display_info_table (first, last)
putchar ('-');
putchar (' ');
}
if (abfd != NULL)
bfd_close_all_done (abfd);
}
putchar ('\n');
}

View File

@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
* $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $
* $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.2.1 2000/05/29 14:08:52 pb Exp $
*/
#define FLEX_SCANNER
@ -126,6 +126,7 @@ extern FILE *yyin, *yyout;
{ \
/* Undo effects of setting up yytext. */ \
*yy_cp = yy_hold_char; \
YY_RESTORE_YY_MORE_OFFSET \
yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \
@ -235,7 +236,7 @@ void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
@ -629,10 +630,11 @@ static char *yy_last_accepting_cpos;
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 1 "rclex.l"
#define INITIAL 0
#line 2 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 2 "rclex.l"
/* Copyright 1997, 1998 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
@ -671,6 +673,23 @@ char *yytext;
static int rcdata_mode;
/* Whether we are supressing lines from cpp (including windows.h or
headers from your C sources may bring in externs and typedefs).
When active, we return IGNORED_TOKEN, which lets us ignore these
outside of resource constructs. Thus, it isn't required to protect
all the non-preprocessor lines in your header files with #ifdef
RC_INVOKED. It also means your RC file can't include other RC
files if they're named "*.h". Sorry. Name them *.rch or whatever. */
static int suppress_cpp_data;
#define MAYBE_RETURN(x) return suppress_cpp_data ? IGNORED_TOKEN : (x)
/* The first filename we detect in the cpp output. We use this to
tell included files from the original file. */
static char *initial_fn;
/* List of allocated strings. */
struct alloc_string
@ -687,7 +706,7 @@ static void cpp_line PARAMS ((const char *));
static char *handle_quotes PARAMS ((const char *, unsigned long *));
static char *get_string PARAMS ((int));
#line 691 "lex.yy.c"
#line 710 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
@ -709,6 +728,10 @@ static void yyunput YY_PROTO(( int c, char *buf_ptr ));
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif
#ifdef YY_NEED_STRLEN
static int yy_flex_strlen YY_PROTO(( yyconst char * ));
#endif
#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput YY_PROTO(( void ));
@ -834,10 +857,10 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
#line 58 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 75 "rclex.l"
#line 841 "lex.yy.c"
#line 864 "lex.yy.c"
if ( yy_init )
{
@ -922,387 +945,387 @@ YY_DECL
case 1:
YY_RULE_SETUP
#line 60 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return BEG; }
#line 77 "rclex.l"
{ MAYBE_RETURN (BEG); }
YY_BREAK
case 2:
YY_RULE_SETUP
#line 61 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return BEG; }
#line 78 "rclex.l"
{ MAYBE_RETURN (BEG); }
YY_BREAK
case 3:
YY_RULE_SETUP
#line 62 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return END; }
#line 79 "rclex.l"
{ MAYBE_RETURN (END); }
YY_BREAK
case 4:
YY_RULE_SETUP
#line 63 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return END; }
#line 80 "rclex.l"
{ MAYBE_RETURN (END); }
YY_BREAK
case 5:
YY_RULE_SETUP
#line 64 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return ACCELERATORS; }
#line 81 "rclex.l"
{ MAYBE_RETURN (ACCELERATORS); }
YY_BREAK
case 6:
YY_RULE_SETUP
#line 65 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return VIRTKEY; }
#line 82 "rclex.l"
{ MAYBE_RETURN (VIRTKEY); }
YY_BREAK
case 7:
YY_RULE_SETUP
#line 66 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return ASCII; }
#line 83 "rclex.l"
{ MAYBE_RETURN (ASCII); }
YY_BREAK
case 8:
YY_RULE_SETUP
#line 67 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return NOINVERT; }
#line 84 "rclex.l"
{ MAYBE_RETURN (NOINVERT); }
YY_BREAK
case 9:
YY_RULE_SETUP
#line 68 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return SHIFT; }
#line 85 "rclex.l"
{ MAYBE_RETURN (SHIFT); }
YY_BREAK
case 10:
YY_RULE_SETUP
#line 69 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CONTROL; }
#line 86 "rclex.l"
{ MAYBE_RETURN (CONTROL); }
YY_BREAK
case 11:
YY_RULE_SETUP
#line 70 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return ALT; }
#line 87 "rclex.l"
{ MAYBE_RETURN (ALT); }
YY_BREAK
case 12:
YY_RULE_SETUP
#line 71 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return BITMAP; }
#line 88 "rclex.l"
{ MAYBE_RETURN (BITMAP); }
YY_BREAK
case 13:
YY_RULE_SETUP
#line 72 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CURSOR; }
#line 89 "rclex.l"
{ MAYBE_RETURN (CURSOR); }
YY_BREAK
case 14:
YY_RULE_SETUP
#line 73 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return DIALOG; }
#line 90 "rclex.l"
{ MAYBE_RETURN (DIALOG); }
YY_BREAK
case 15:
YY_RULE_SETUP
#line 74 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return DIALOGEX; }
#line 91 "rclex.l"
{ MAYBE_RETURN (DIALOGEX); }
YY_BREAK
case 16:
YY_RULE_SETUP
#line 75 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return EXSTYLE; }
#line 92 "rclex.l"
{ MAYBE_RETURN (EXSTYLE); }
YY_BREAK
case 17:
YY_RULE_SETUP
#line 76 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CAPTION; }
#line 93 "rclex.l"
{ MAYBE_RETURN (CAPTION); }
YY_BREAK
case 18:
YY_RULE_SETUP
#line 77 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CLASS; }
#line 94 "rclex.l"
{ MAYBE_RETURN (CLASS); }
YY_BREAK
case 19:
YY_RULE_SETUP
#line 78 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return STYLE; }
#line 95 "rclex.l"
{ MAYBE_RETURN (STYLE); }
YY_BREAK
case 20:
YY_RULE_SETUP
#line 79 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return AUTO3STATE; }
#line 96 "rclex.l"
{ MAYBE_RETURN (AUTO3STATE); }
YY_BREAK
case 21:
YY_RULE_SETUP
#line 80 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return AUTOCHECKBOX; }
#line 97 "rclex.l"
{ MAYBE_RETURN (AUTOCHECKBOX); }
YY_BREAK
case 22:
YY_RULE_SETUP
#line 81 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return AUTORADIOBUTTON; }
#line 98 "rclex.l"
{ MAYBE_RETURN (AUTORADIOBUTTON); }
YY_BREAK
case 23:
YY_RULE_SETUP
#line 82 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CHECKBOX; }
#line 99 "rclex.l"
{ MAYBE_RETURN (CHECKBOX); }
YY_BREAK
case 24:
YY_RULE_SETUP
#line 83 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return COMBOBOX; }
#line 100 "rclex.l"
{ MAYBE_RETURN (COMBOBOX); }
YY_BREAK
case 25:
YY_RULE_SETUP
#line 84 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CTEXT; }
#line 101 "rclex.l"
{ MAYBE_RETURN (CTEXT); }
YY_BREAK
case 26:
YY_RULE_SETUP
#line 85 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return DEFPUSHBUTTON; }
#line 102 "rclex.l"
{ MAYBE_RETURN (DEFPUSHBUTTON); }
YY_BREAK
case 27:
YY_RULE_SETUP
#line 86 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return EDITTEXT; }
#line 103 "rclex.l"
{ MAYBE_RETURN (EDITTEXT); }
YY_BREAK
case 28:
YY_RULE_SETUP
#line 87 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return GROUPBOX; }
#line 104 "rclex.l"
{ MAYBE_RETURN (GROUPBOX); }
YY_BREAK
case 29:
YY_RULE_SETUP
#line 88 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return LISTBOX; }
#line 105 "rclex.l"
{ MAYBE_RETURN (LISTBOX); }
YY_BREAK
case 30:
YY_RULE_SETUP
#line 89 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return LTEXT; }
#line 106 "rclex.l"
{ MAYBE_RETURN (LTEXT); }
YY_BREAK
case 31:
YY_RULE_SETUP
#line 90 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return PUSHBOX; }
#line 107 "rclex.l"
{ MAYBE_RETURN (PUSHBOX); }
YY_BREAK
case 32:
YY_RULE_SETUP
#line 91 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return PUSHBUTTON; }
#line 108 "rclex.l"
{ MAYBE_RETURN (PUSHBUTTON); }
YY_BREAK
case 33:
YY_RULE_SETUP
#line 92 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return RADIOBUTTON; }
#line 109 "rclex.l"
{ MAYBE_RETURN (RADIOBUTTON); }
YY_BREAK
case 34:
YY_RULE_SETUP
#line 93 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return RTEXT; }
#line 110 "rclex.l"
{ MAYBE_RETURN (RTEXT); }
YY_BREAK
case 35:
YY_RULE_SETUP
#line 94 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return SCROLLBAR; }
#line 111 "rclex.l"
{ MAYBE_RETURN (SCROLLBAR); }
YY_BREAK
case 36:
YY_RULE_SETUP
#line 95 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return STATE3; }
#line 112 "rclex.l"
{ MAYBE_RETURN (STATE3); }
YY_BREAK
case 37:
YY_RULE_SETUP
#line 96 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return USERBUTTON; }
#line 113 "rclex.l"
{ MAYBE_RETURN (USERBUTTON); }
YY_BREAK
case 38:
YY_RULE_SETUP
#line 97 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return BEDIT; }
#line 114 "rclex.l"
{ MAYBE_RETURN (BEDIT); }
YY_BREAK
case 39:
YY_RULE_SETUP
#line 98 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return HEDIT; }
#line 115 "rclex.l"
{ MAYBE_RETURN (HEDIT); }
YY_BREAK
case 40:
YY_RULE_SETUP
#line 99 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return IEDIT; }
#line 116 "rclex.l"
{ MAYBE_RETURN (IEDIT); }
YY_BREAK
case 41:
YY_RULE_SETUP
#line 100 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FONT; }
#line 117 "rclex.l"
{ MAYBE_RETURN (FONT); }
YY_BREAK
case 42:
YY_RULE_SETUP
#line 101 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return ICON; }
#line 118 "rclex.l"
{ MAYBE_RETURN (ICON); }
YY_BREAK
case 43:
YY_RULE_SETUP
#line 102 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return LANGUAGE; }
#line 119 "rclex.l"
{ MAYBE_RETURN (LANGUAGE); }
YY_BREAK
case 44:
YY_RULE_SETUP
#line 103 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CHARACTERISTICS; }
#line 120 "rclex.l"
{ MAYBE_RETURN (CHARACTERISTICS); }
YY_BREAK
case 45:
YY_RULE_SETUP
#line 104 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return VERSIONK; }
#line 121 "rclex.l"
{ MAYBE_RETURN (VERSIONK); }
YY_BREAK
case 46:
YY_RULE_SETUP
#line 105 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MENU; }
#line 122 "rclex.l"
{ MAYBE_RETURN (MENU); }
YY_BREAK
case 47:
YY_RULE_SETUP
#line 106 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MENUEX; }
#line 123 "rclex.l"
{ MAYBE_RETURN (MENUEX); }
YY_BREAK
case 48:
YY_RULE_SETUP
#line 107 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MENUITEM; }
#line 124 "rclex.l"
{ MAYBE_RETURN (MENUITEM); }
YY_BREAK
case 49:
YY_RULE_SETUP
#line 108 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return SEPARATOR; }
#line 125 "rclex.l"
{ MAYBE_RETURN (SEPARATOR); }
YY_BREAK
case 50:
YY_RULE_SETUP
#line 109 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return POPUP; }
#line 126 "rclex.l"
{ MAYBE_RETURN (POPUP); }
YY_BREAK
case 51:
YY_RULE_SETUP
#line 110 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return CHECKED; }
#line 127 "rclex.l"
{ MAYBE_RETURN (CHECKED); }
YY_BREAK
case 52:
YY_RULE_SETUP
#line 111 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return GRAYED; }
#line 128 "rclex.l"
{ MAYBE_RETURN (GRAYED); }
YY_BREAK
case 53:
YY_RULE_SETUP
#line 112 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return HELP; }
#line 129 "rclex.l"
{ MAYBE_RETURN (HELP); }
YY_BREAK
case 54:
YY_RULE_SETUP
#line 113 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return INACTIVE; }
#line 130 "rclex.l"
{ MAYBE_RETURN (INACTIVE); }
YY_BREAK
case 55:
YY_RULE_SETUP
#line 114 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MENUBARBREAK; }
#line 131 "rclex.l"
{ MAYBE_RETURN (MENUBARBREAK); }
YY_BREAK
case 56:
YY_RULE_SETUP
#line 115 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MENUBREAK; }
#line 132 "rclex.l"
{ MAYBE_RETURN (MENUBREAK); }
YY_BREAK
case 57:
YY_RULE_SETUP
#line 116 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MESSAGETABLE; }
#line 133 "rclex.l"
{ MAYBE_RETURN (MESSAGETABLE); }
YY_BREAK
case 58:
YY_RULE_SETUP
#line 117 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return RCDATA; }
#line 134 "rclex.l"
{ MAYBE_RETURN (RCDATA); }
YY_BREAK
case 59:
YY_RULE_SETUP
#line 118 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return STRINGTABLE; }
#line 135 "rclex.l"
{ MAYBE_RETURN (STRINGTABLE); }
YY_BREAK
case 60:
YY_RULE_SETUP
#line 119 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return VERSIONINFO; }
#line 136 "rclex.l"
{ MAYBE_RETURN (VERSIONINFO); }
YY_BREAK
case 61:
YY_RULE_SETUP
#line 120 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILEVERSION; }
#line 137 "rclex.l"
{ MAYBE_RETURN (FILEVERSION); }
YY_BREAK
case 62:
YY_RULE_SETUP
#line 121 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return PRODUCTVERSION; }
#line 138 "rclex.l"
{ MAYBE_RETURN (PRODUCTVERSION); }
YY_BREAK
case 63:
YY_RULE_SETUP
#line 122 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILEFLAGSMASK; }
#line 139 "rclex.l"
{ MAYBE_RETURN (FILEFLAGSMASK); }
YY_BREAK
case 64:
YY_RULE_SETUP
#line 123 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILEFLAGS; }
#line 140 "rclex.l"
{ MAYBE_RETURN (FILEFLAGS); }
YY_BREAK
case 65:
YY_RULE_SETUP
#line 124 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILEOS; }
#line 141 "rclex.l"
{ MAYBE_RETURN (FILEOS); }
YY_BREAK
case 66:
YY_RULE_SETUP
#line 125 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILETYPE; }
#line 142 "rclex.l"
{ MAYBE_RETURN (FILETYPE); }
YY_BREAK
case 67:
YY_RULE_SETUP
#line 126 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FILESUBTYPE; }
#line 143 "rclex.l"
{ MAYBE_RETURN (FILESUBTYPE); }
YY_BREAK
case 68:
YY_RULE_SETUP
#line 127 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return VALUE; }
#line 144 "rclex.l"
{ MAYBE_RETURN (VALUE); }
YY_BREAK
case 69:
YY_RULE_SETUP
#line 128 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return MOVEABLE; }
#line 145 "rclex.l"
{ MAYBE_RETURN (MOVEABLE); }
YY_BREAK
case 70:
YY_RULE_SETUP
#line 129 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return FIXED; }
#line 146 "rclex.l"
{ MAYBE_RETURN (FIXED); }
YY_BREAK
case 71:
YY_RULE_SETUP
#line 130 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return PURE; }
#line 147 "rclex.l"
{ MAYBE_RETURN (PURE); }
YY_BREAK
case 72:
YY_RULE_SETUP
#line 131 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return IMPURE; }
#line 148 "rclex.l"
{ MAYBE_RETURN (IMPURE); }
YY_BREAK
case 73:
YY_RULE_SETUP
#line 132 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return PRELOAD; }
#line 149 "rclex.l"
{ MAYBE_RETURN (PRELOAD); }
YY_BREAK
case 74:
YY_RULE_SETUP
#line 133 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return LOADONCALL; }
#line 150 "rclex.l"
{ MAYBE_RETURN (LOADONCALL); }
YY_BREAK
case 75:
YY_RULE_SETUP
#line 134 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return DISCARDABLE; }
#line 151 "rclex.l"
{ MAYBE_RETURN (DISCARDABLE); }
YY_BREAK
case 76:
YY_RULE_SETUP
#line 135 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return NOT; }
#line 152 "rclex.l"
{ MAYBE_RETURN (NOT); }
YY_BREAK
case 77:
YY_RULE_SETUP
#line 137 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 154 "rclex.l"
{
char *s, *send;
@ -1315,11 +1338,11 @@ YY_RULE_SETUP
if (strncmp (s, "StringFileInfo",
sizeof "StringFileInfo" - 1) == 0
&& s + sizeof "StringFileInfo" - 1 == send)
return BLOCKSTRINGFILEINFO;
MAYBE_RETURN (BLOCKSTRINGFILEINFO);
else if (strncmp (s, "VarFileInfo",
sizeof "VarFileInfo" - 1) == 0
&& s + sizeof "VarFileInfo" - 1 == send)
return BLOCKVARFILEINFO;
MAYBE_RETURN (BLOCKVARFILEINFO);
else
{
char *r;
@ -1328,38 +1351,38 @@ YY_RULE_SETUP
strncpy (r, s, send - s);
r[send - s] = '\0';
yylval.s = r;
return BLOCK;
MAYBE_RETURN (BLOCK);
}
}
YY_BREAK
case 78:
YY_RULE_SETUP
#line 166 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 183 "rclex.l"
{
cpp_line (yytext);
}
YY_BREAK
case 79:
YY_RULE_SETUP
#line 170 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 187 "rclex.l"
{
yylval.i.val = strtoul (yytext, 0, 0);
yylval.i.dword = 1;
return NUMBER;
MAYBE_RETURN (NUMBER);
}
YY_BREAK
case 80:
YY_RULE_SETUP
#line 176 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 193 "rclex.l"
{
yylval.i.val = strtoul (yytext, 0, 0);
yylval.i.dword = 0;
return NUMBER;
MAYBE_RETURN (NUMBER);
}
YY_BREAK
case 81:
YY_RULE_SETUP
#line 182 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 199 "rclex.l"
{
char *s;
unsigned long length;
@ -1368,19 +1391,19 @@ YY_RULE_SETUP
if (! rcdata_mode)
{
yylval.s = s;
return QUOTEDSTRING;
MAYBE_RETURN (QUOTEDSTRING);
}
else
{
yylval.ss.length = length;
yylval.ss.s = s;
return SIZEDSTRING;
MAYBE_RETURN (SIZEDSTRING);
}
}
YY_BREAK
case 82:
YY_RULE_SETUP
#line 200 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 217 "rclex.l"
{
char *s;
@ -1393,30 +1416,30 @@ YY_RULE_SETUP
s = get_string (strlen (yytext) + 1);
strcpy (s, yytext);
yylval.s = s;
return STRING;
MAYBE_RETURN (STRING);
}
YY_BREAK
case 83:
YY_RULE_SETUP
#line 215 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 232 "rclex.l"
{ ++rc_lineno; }
YY_BREAK
case 84:
YY_RULE_SETUP
#line 216 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 233 "rclex.l"
{ /* ignore whitespace */ }
YY_BREAK
case 85:
YY_RULE_SETUP
#line 217 "/5g/ian/binutils/release/copy/binutils/rclex.l"
{ return *yytext; }
#line 234 "rclex.l"
{ MAYBE_RETURN (*yytext); }
YY_BREAK
case 86:
YY_RULE_SETUP
#line 219 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 236 "rclex.l"
ECHO;
YY_BREAK
#line 1420 "lex.yy.c"
#line 1443 "lex.yy.c"
case YY_STATE_EOF(INITIAL):
yyterminate();
@ -1427,6 +1450,7 @@ case YY_STATE_EOF(INITIAL):
/* Undo the effects of YY_DO_BEFORE_ACTION. */
*yy_cp = yy_hold_char;
YY_RESTORE_YY_MORE_OFFSET
if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
{
@ -1572,7 +1596,7 @@ static int yy_get_next_buffer()
{ /* Don't try to fill the buffer, so this is an EOF. */
if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
{
/* We matched a singled characater, the EOB, so
/* We matched a single character, the EOB, so
* treat this as a final EOF.
*/
return EOB_ACT_END_OF_FILE;
@ -1599,7 +1623,7 @@ static int yy_get_next_buffer()
/* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF
*/
yy_n_chars = 0;
yy_current_buffer->yy_n_chars = yy_n_chars = 0;
else
{
@ -1654,6 +1678,8 @@ static int yy_get_next_buffer()
/* Read in more data. */
YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
yy_n_chars, num_to_read );
yy_current_buffer->yy_n_chars = yy_n_chars;
}
if ( yy_n_chars == 0 )
@ -1778,7 +1804,8 @@ register char *yy_bp;
yy_cp += (int) (dest - source);
yy_bp += (int) (dest - source);
yy_n_chars = yy_current_buffer->yy_buf_size;
yy_current_buffer->yy_n_chars =
yy_n_chars = yy_current_buffer->yy_buf_size;
if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
YY_FATAL_ERROR( "flex scanner push-back overflow" );
@ -1816,19 +1843,31 @@ static int input()
else
{ /* need more input */
yytext_ptr = yy_c_buf_p;
int offset = yy_c_buf_p - yytext_ptr;
++yy_c_buf_p;
switch ( yy_get_next_buffer() )
{
case EOB_ACT_LAST_MATCH:
/* This happens because yy_g_n_b()
* sees that we've accumulated a
* token and flags that we need to
* try matching the token before
* proceeding. But for input(),
* there's no matching to consider.
* So convert the EOB_ACT_LAST_MATCH
* to EOB_ACT_END_OF_FILE.
*/
/* Reset buffer status. */
yyrestart( yyin );
/* fall through */
case EOB_ACT_END_OF_FILE:
{
if ( yywrap() )
{
yy_c_buf_p =
yytext_ptr + YY_MORE_ADJ;
return EOF;
}
if ( ! yy_did_buffer_switch_on_eof )
YY_NEW_FILE;
@ -1840,17 +1879,8 @@ static int input()
}
case EOB_ACT_CONTINUE_SCAN:
yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
yy_c_buf_p = yytext_ptr + offset;
break;
case EOB_ACT_LAST_MATCH:
#ifdef __cplusplus
YY_FATAL_ERROR(
"unexpected last match in yyinput()" );
#else
YY_FATAL_ERROR(
"unexpected last match in input()" );
#endif
}
}
}
@ -2014,6 +2044,9 @@ YY_BUFFER_STATE b;
#endif
{
if ( ! b )
return;
b->yy_n_chars = 0;
/* We always need two end-of-buffer characters. The first causes
@ -2073,17 +2106,17 @@ yy_size_t size;
#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *str )
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else
YY_BUFFER_STATE yy_scan_string( str )
yyconst char *str;
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
{
int len;
for ( len = 0; str[len]; ++len )
for ( len = 0; yy_str[len]; ++len )
;
return yy_scan_bytes( str, len );
return yy_scan_bytes( yy_str, len );
}
#endif
@ -2204,7 +2237,7 @@ char msg[];
{ \
/* Undo effects of setting up yytext. */ \
yytext[yyleng] = yy_hold_char; \
yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
yy_c_buf_p = yytext + n; \
yy_hold_char = *yy_c_buf_p; \
*yy_c_buf_p = '\0'; \
yyleng = n; \
@ -2230,6 +2263,22 @@ int n;
}
#endif
#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
{
register int n;
for ( n = 0; s[n]; ++n )
;
return n;
}
#endif
#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
@ -2276,7 +2325,7 @@ int main()
return 0;
}
#endif
#line 219 "/5g/ian/binutils/release/copy/binutils/rclex.l"
#line 236 "rclex.l"
#ifndef yywrap
/* This is needed for some versions of lex. */
@ -2296,18 +2345,18 @@ cpp_line (s)
char *send, *fn;
++s;
while (isspace (*s))
while (isspace ((unsigned char) *s))
++s;
line = strtol (s, &send, 0);
if (*send != '\0' && ! isspace (*send))
if (*send != '\0' && ! isspace ((unsigned char) *send))
return;
/* Subtract 1 because we are about to count the newline. */
rc_lineno = line - 1;
s = send;
while (isspace (*s))
while (isspace ((unsigned char) *s))
++s;
if (*s != '"')
@ -2324,6 +2373,20 @@ cpp_line (s)
free (rc_filename);
rc_filename = fn;
if (!initial_fn)
{
initial_fn = xmalloc (strlen (fn) + 1);
strcpy(initial_fn, fn);
}
/* Allow the initial file, regardless of name. Suppress all other
files if they end in ".h" (this allows included "*.rc") */
if (strcmp (initial_fn, fn) == 0
|| strcmp (fn + strlen (fn) - 2, ".h") != 0)
suppress_cpp_data = 0;
else
suppress_cpp_data = 1;
}
/* Handle a quoted string. The quotes are stripped. A pair of quotes
@ -2453,8 +2516,8 @@ handle_quotes (input, len)
else
{
++t;
assert (isspace (*t));
while (isspace (*t))
assert (isspace ((unsigned char) *t));
while (isspace ((unsigned char) *t))
++t;
if (*t == '\0')
break;

File diff suppressed because it is too large Load Diff

View File

@ -37,87 +37,88 @@ typedef union
const char *s;
} ss;
} YYSTYPE;
#define BEG 258
#define END 259
#define ACCELERATORS 260
#define VIRTKEY 261
#define ASCII 262
#define NOINVERT 263
#define SHIFT 264
#define CONTROL 265
#define ALT 266
#define BITMAP 267
#define CURSOR 268
#define DIALOG 269
#define DIALOGEX 270
#define EXSTYLE 271
#define CAPTION 272
#define CLASS 273
#define STYLE 274
#define AUTO3STATE 275
#define AUTOCHECKBOX 276
#define AUTORADIOBUTTON 277
#define CHECKBOX 278
#define COMBOBOX 279
#define CTEXT 280
#define DEFPUSHBUTTON 281
#define EDITTEXT 282
#define GROUPBOX 283
#define LISTBOX 284
#define LTEXT 285
#define PUSHBOX 286
#define PUSHBUTTON 287
#define RADIOBUTTON 288
#define RTEXT 289
#define SCROLLBAR 290
#define STATE3 291
#define USERBUTTON 292
#define BEDIT 293
#define HEDIT 294
#define IEDIT 295
#define FONT 296
#define ICON 297
#define LANGUAGE 298
#define CHARACTERISTICS 299
#define VERSIONK 300
#define MENU 301
#define MENUEX 302
#define MENUITEM 303
#define SEPARATOR 304
#define POPUP 305
#define CHECKED 306
#define GRAYED 307
#define HELP 308
#define INACTIVE 309
#define MENUBARBREAK 310
#define MENUBREAK 311
#define MESSAGETABLE 312
#define RCDATA 313
#define STRINGTABLE 314
#define VERSIONINFO 315
#define FILEVERSION 316
#define PRODUCTVERSION 317
#define FILEFLAGSMASK 318
#define FILEFLAGS 319
#define FILEOS 320
#define FILETYPE 321
#define FILESUBTYPE 322
#define BLOCKSTRINGFILEINFO 323
#define BLOCKVARFILEINFO 324
#define VALUE 325
#define BLOCK 326
#define MOVEABLE 327
#define FIXED 328
#define PURE 329
#define IMPURE 330
#define PRELOAD 331
#define LOADONCALL 332
#define DISCARDABLE 333
#define NOT 334
#define QUOTEDSTRING 335
#define STRING 336
#define NUMBER 337
#define SIZEDSTRING 338
#define BEG 257
#define END 258
#define ACCELERATORS 259
#define VIRTKEY 260
#define ASCII 261
#define NOINVERT 262
#define SHIFT 263
#define CONTROL 264
#define ALT 265
#define BITMAP 266
#define CURSOR 267
#define DIALOG 268
#define DIALOGEX 269
#define EXSTYLE 270
#define CAPTION 271
#define CLASS 272
#define STYLE 273
#define AUTO3STATE 274
#define AUTOCHECKBOX 275
#define AUTORADIOBUTTON 276
#define CHECKBOX 277
#define COMBOBOX 278
#define CTEXT 279
#define DEFPUSHBUTTON 280
#define EDITTEXT 281
#define GROUPBOX 282
#define LISTBOX 283
#define LTEXT 284
#define PUSHBOX 285
#define PUSHBUTTON 286
#define RADIOBUTTON 287
#define RTEXT 288
#define SCROLLBAR 289
#define STATE3 290
#define USERBUTTON 291
#define BEDIT 292
#define HEDIT 293
#define IEDIT 294
#define FONT 295
#define ICON 296
#define LANGUAGE 297
#define CHARACTERISTICS 298
#define VERSIONK 299
#define MENU 300
#define MENUEX 301
#define MENUITEM 302
#define SEPARATOR 303
#define POPUP 304
#define CHECKED 305
#define GRAYED 306
#define HELP 307
#define INACTIVE 308
#define MENUBARBREAK 309
#define MENUBREAK 310
#define MESSAGETABLE 311
#define RCDATA 312
#define STRINGTABLE 313
#define VERSIONINFO 314
#define FILEVERSION 315
#define PRODUCTVERSION 316
#define FILEFLAGSMASK 317
#define FILEFLAGS 318
#define FILEOS 319
#define FILETYPE 320
#define FILESUBTYPE 321
#define BLOCKSTRINGFILEINFO 322
#define BLOCKVARFILEINFO 323
#define VALUE 324
#define BLOCK 325
#define MOVEABLE 326
#define FIXED 327
#define PURE 328
#define IMPURE 329
#define PRELOAD 330
#define LOADONCALL 331
#define DISCARDABLE 332
#define NOT 333
#define QUOTEDSTRING 334
#define STRING 335
#define NUMBER 336
#define SIZEDSTRING 337
#define IGNORED_TOKEN 338
#define NEG 339

View File

@ -74,12 +74,6 @@
#include "bucomm.h"
#include "getopt.h"
#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
#else
#include <varargs.h>
#endif
char * program_name = "readelf";
unsigned int dynamic_addr;
bfd_size_type dynamic_size;
@ -1937,9 +1931,18 @@ get_osabi_name (osabi)
switch (osabi)
{
case ELFOSABI_SYSV: return _("UNIX - System V");
case ELFOSABI_NONE: return _("UNIX - System V");
case ELFOSABI_HPUX: return _("UNIX - HP-UX");
case ELFOSABI_NETBSD: return _("UNIX - NetBSD");
case ELFOSABI_LINUX: return _("UNIX - Linux");
case ELFOSABI_HURD: return _("GNU/Hurd");
case ELFOSABI_SOLARIS: return _("UNIX - Solaris");
case ELFOSABI_MONTEREY: return _("UNIX - Monterey");
case ELFOSABI_IRIX: return _("UNIX - IRIX");
case ELFOSABI_FREEBSD: return _("UNIX - FreeBSD");
case ELFOSABI_TRU64: return _("UNIX - TRU64");
case ELFOSABI_MODESTO: return _("Novell - Modesto");
case ELFOSABI_OPENBSD: return _("UNIX - OpenBSD");
case ELFOSABI_STANDALONE: return _("Standalone App");
case ELFOSABI_ARM: return _("ARM");
default:

View File

@ -1,3 +1,92 @@
2000-06-09 Nick Clifton <nickc@cygnus.com>
* config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value
for size 1 fixes.
2000-06-01 Scott Bambrough <scottb@netwinder.org>
* config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.
2000-05-22 David O'Brien <obrien@FreeBSD.org>
* configure.in: Recognize alpha-*-freebsd*.
* configure: Regenerate.
2000-05-26 Scott Bambrough <scottb@netwinder.org>
Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
* config/tc-arm.c (struct asm_psr): Add boolean field
distinguishing between CSPR and SPSR. Rename 'number' field
to 'field'.
(psrs): Rearrange contents to match new asm_psr structure.
(arm_psr_parse): Move next to psr_required_here. Make it
return an asm_psr structure.
(psr_required_here): Use asm_psr structure returned by
arm_psr_parse.
(do_msr): Reorganise to allow psr_required_here to be called
only once.
(md_undefined_name): Mark 'name' parameter as unused, since
the COFF target does not use it.
Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
* testsuite/gas/arm/arch4t.s: Add tests of new fields
to msr instruction.
* NEWS: Mention change in behaviour when assembling msr
instruction.
2000-04-24 Nick Clifton <nickc@cygnus.com>
* doc/c-arm.texi (ARM Directives): Document behaviour of .align 0.
* doc/as.texinfo (Align): Include arm and strongarm in list of
targets that have the second form of the behaviour of the .align
directive.
2000-05-29 Philip Blundell <philb@gnu.org>
* doc/as.texinfo: Update copyright dates.
(Local Labels): Delete misplaced mention of ARM.
* NEWS: Mention ARM ELF support.
Tue May 23 00:57:05 2000 Hans-Peter Nilsson <hp@axis.com>
* configure.in (i386-*-freebsd a.out entry): Quote properly.
* configure: Regenerate.
2000-05-23 Philip Blundell <pb@futuretv.com>
* configure.in: Set version to 2.10.
* configure: Regenerate.
2000-05-23 Alan Modra <alan@linuxcare.com.au>
* config/tc-i386.c (md_assemble): Pass jump reloc in fr_var...
(md_estimate_size_before_relax): so we can use it here instead of
old kludges. Localise vars to blocks. Comment.
* frags.c (frag_new): Update fr_var comments.
* frags.h (struct frag): Ditto.
* config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment
for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN.
(md_estimate_size_before_relax): Ensure jumps to weak and
externally visible symbols are relocatable.
2000-05-14 David O'Brien <obrien@FreeBSD.org>
* config/te-freebsd.h: New file.
* doc/as.1: Fix unbalanced brackets.
* config/tc-i386.c (comment_chars): Don't use '/' as comment start if
TE_FreeBSD.
(line_comment_chars): Set to '/' if TE_FreeBSD.
1999-07-03 Joel Sherrill <joel@OARcorp.com>
* configure.in (*rtems except sh): Move RTEMS targets to elf.
* configure: Regenerate.
2000-05-08 Alan Modra <alan@linuxcare.com.au>
* as.h: #include "file", not <file> on files from ../include.

View File

@ -2,6 +2,9 @@
Changes in 2.10:
Support for the ARM msr instruction was changed to only allow an immediate
operand when altering the flags field.
Support for ATMEL AVR.
Support for IBM 370 ELF. Somewhat experimental.
@ -42,6 +45,8 @@ Texas Instruments c80 (tms320c80) support added.
i960 ELF support added.
ARM ELF support added.
Changes in 2.9:
Texas Instruments c30 (tms320c30) support added.

View File

@ -382,39 +382,50 @@ static CONST struct asm_flg cplong_flag[] =
struct asm_psr
{
CONST char * template;
unsigned long number;
boolean cpsr;
unsigned long field;
};
#define PSR_FIELD_MASK 0x000f0000
#define SPSR_BIT (1 << 22) /* The bit that distnguishes CPSR and SPSR. */
#define PSR_SHIFT 16 /* How many bits to shift the PSR_xxx bits up by. */
#define PSR_FLAGS 0x00080000
#define PSR_CONTROL 0x00010000 /* Undocumented instruction, its use is discouraged by ARM */
#define PSR_ALL 0x00090000
#define CPSR_ALL 0
#define SPSR_ALL 1
#define CPSR_FLG 2
#define SPSR_FLG 3
#define CPSR_CTL 4
#define SPSR_CTL 5
#define PSR_c (1 << 0)
#define PSR_x (1 << 1)
#define PSR_s (1 << 2)
#define PSR_f (1 << 3)
static CONST struct asm_psr psrs[] =
{
/* Valid <psr>'s */
{"cpsr", CPSR_ALL},
{"cpsr_all", CPSR_ALL},
{"spsr", SPSR_ALL},
{"spsr_all", SPSR_ALL},
/* Valid <psrf>'s */
{"cpsr_flg", CPSR_FLG},
{"spsr_flg", SPSR_FLG},
/* Valid <psrc>'s */
{"cpsr_c", CPSR_CTL},
{"cpsr_ctl", CPSR_CTL},
{"spsr_c", SPSR_CTL},
{"spsr_ctl", SPSR_CTL}
{"CPSR", true, PSR_c | PSR_f},
{"CPSR_all", true, PSR_c | PSR_f},
{"SPSR", false, PSR_c | PSR_f},
{"SPSR_all", false, PSR_c | PSR_f},
{"CPSR_flg", true, PSR_f},
{"CPSR_f", true, PSR_f},
{"SPSR_flg", false, PSR_f},
{"SPSR_f", false, PSR_f},
{"CPSR_c", true, PSR_c},
{"CPSR_ctl", true, PSR_c},
{"SPSR_c", false, PSR_c},
{"SPSR_ctl", false, PSR_c},
{"CPSR_x", true, PSR_x},
{"CPSR_s", true, PSR_s},
{"SPSR_x", false, PSR_x},
{"SPSR_s", false, PSR_s},
/* For backwards compatability with older toolchain we also
support lower case versions of some of these flags. */
{"cpsr", true, PSR_c | PSR_f},
{"cpsr_all", true, PSR_c | PSR_f},
{"spsr", false, PSR_c | PSR_f},
{"spsr_all", false, PSR_c | PSR_f},
{"cpsr_flg", true, PSR_f},
{"cpsr_f", true, PSR_f},
{"spsr_flg", false, PSR_f},
{"spsr_f", false, PSR_f},
{"cpsr_c", true, PSR_c},
{"cpsr_ctl", true, PSR_c},
{"spsr_c", false, PSR_c},
{"spsr_ctl", false, PSR_c}
};
/* Functions called by parser. */
@ -459,7 +470,7 @@ static void do_fp_to_reg PARAMS ((char *, unsigned long));
static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, int, int));
static int arm_reg_parse PARAMS ((char **));
static int arm_psr_parse PARAMS ((char **));
static CONST struct asm_psr * arm_psr_parse PARAMS ((char **));
static void symbol_locate PARAMS ((symbolS *, CONST char *, segT, valueT, fragS *));
static int add_to_lit_pool PARAMS ((void));
static unsigned validate_immediate PARAMS ((unsigned));
@ -468,7 +479,7 @@ static int validate_offset_imm PARAMS ((unsigned int, int));
static void opcode_select PARAMS ((int));
static void end_of_line PARAMS ((char *));
static int reg_required_here PARAMS ((char **, int));
static int psr_required_here PARAMS ((char **, int, int));
static int psr_required_here PARAMS ((char **));
static int co_proc_number PARAMS ((char **));
static int cp_opc_expr PARAMS ((char **, int, int));
static int cp_reg_required_here PARAMS ((char **, int));
@ -570,8 +581,8 @@ static CONST struct asm_opcode insns[] =
{"mrs", 0x010f0000, NULL, NULL, ARM_6UP, do_mrs},
{"msr", 0x0120f000, NULL, NULL, ARM_6UP, do_msr},
/* ScottB: our code uses 0x0128f000 for msr.
NickC: but this is wrong because the bits 16 and 19 are handled
by the PSR_xxx defines above. */
NickC: but this is wrong because the bits 16 through 19 are
handled by the PSR_xxx defines above. */
/* ARM 7M long multiplies - need signed/unsigned flags! */
{"smull", 0x00c00090, NULL, s_flag, ARM_LONGMUL, do_mull},
@ -1563,27 +1574,65 @@ reg_required_here (str, shift)
return FAIL;
}
static int
psr_required_here (str, cpsr, spsr)
char ** str;
int cpsr;
int spsr;
static CONST struct asm_psr *
arm_psr_parse (ccp)
register char ** ccp;
{
int psr;
char * start = *str;
psr = arm_psr_parse (str);
if (psr == cpsr || psr == spsr)
char * start = * ccp;
char c;
char * p;
CONST struct asm_psr * psr;
p = start;
/* Skip to the end of the next word in the input stream. */
do
{
if (psr == spsr)
inst.instruction |= 1 << 22;
c = *p++;
}
while (isalpha (c) || c == '_');
/* Terminate the word. */
*--p = 0;
/* Now locate the word in the psr hash table. */
psr = (CONST struct asm_psr *) hash_find (arm_psr_hsh, start);
/* Restore the input stream. */
*p = c;
/* If we found a valid match, advance the
stream pointer past the end of the word. */
*ccp = p;
return psr;
}
/* Parse the input looking for a PSR flag. */
static int
psr_required_here (str)
char ** str;
{
char * start = *str;
CONST struct asm_psr * psr;
psr = arm_psr_parse (str);
if (psr)
{
/* If this is the SPSR that is being modified, set the R bit. */
if (! psr->cpsr)
inst.instruction |= SPSR_BIT;
/* Set the psr flags in the MSR instruction. */
inst.instruction |= psr->field << PSR_SHIFT;
return SUCCESS;
}
/* In the few cases where we might be able to accept something else
this error can be overridden. */
inst.error = _("<psr(f)> expected");
/* In the few cases where we might be able to accept
something else this error can be overridden. */
inst.error = _("flag for {c}psr instruction expected");
/* Restore the start point. */
*str = start;
@ -1866,6 +1915,8 @@ do_mrs (str, flags)
char *str;
unsigned long flags;
{
int skip = 0;
/* Only one syntax. */
skip_whitespace (str);
@ -1875,104 +1926,111 @@ do_mrs (str, flags)
return;
}
if (skip_past_comma (&str) == FAIL
|| psr_required_here (& str, CPSR_ALL, SPSR_ALL) == FAIL)
if (skip_past_comma (&str) == FAIL)
{
inst.error = _("<psr> expected");
inst.error = _("comma expected after register name");
return;
}
skip_whitespace (str);
if ( strcmp (str, "CPSR") == 0
|| strcmp (str, "SPSR") == 0
/* Lower case versions for backwards compatability. */
|| strcmp (str, "cpsr") == 0
|| strcmp (str, "spsr") == 0)
skip = 4;
/* This is for backwards compatability with older toolchains. */
else if (strcmp (str, "cpsr_all") == 0
|| strcmp (str, "spsr_all") == 0)
skip = 7;
else
{
inst.error = _("{C|S}PSR expected");
return;
}
if (* str == 's' || * str == 'S')
inst.instruction |= SPSR_BIT;
str += skip;
inst.instruction |= flags;
end_of_line (str);
return;
}
/* Three possible forms: "<psr>, Rm", "<psrf>, Rm", "<psrf>, #expression". */
/* Two possible forms:
"{C|S}PSR_<field>, Rm",
"{C|S}PSR_f, #expression". */
static void
do_msr (str, flags)
char * str;
unsigned long flags;
{
int reg;
skip_whitespace (str);
if (psr_required_here (& str) == FAIL)
return;
if (skip_past_comma (& str) == FAIL)
{
inst.error = _("comma missing after psr flags");
return;
}
skip_whitespace (str);
if (psr_required_here (&str, CPSR_ALL, SPSR_ALL) == SUCCESS)
if (reg_required_here (& str, 0) != FAIL)
{
inst.instruction |= PSR_ALL;
inst.error = NULL;
inst.instruction |= flags;
end_of_line (str);
return;
}
/* Sytax should be "<psr>, Rm" */
if (skip_past_comma (&str) == FAIL
|| (reg = reg_required_here (&str, 0)) == FAIL)
{
inst.error = BAD_ARGS;
return;
}
if (! is_immediate_prefix (* str))
{
inst.error = _("only a register or immediate value can follow a psr flag");
return;
}
str ++;
inst.error = NULL;
if (my_get_expression (& inst.reloc.exp, & str))
{
inst.error = _("only a register or immediate value can follow a psr flag");
return;
}
if (inst.instruction & ((PSR_c | PSR_x | PSR_s) << PSR_SHIFT))
{
inst.error = _("can only set flag field with immediate value");
return;
}
flags |= INST_IMMEDIATE;
if (inst.reloc.exp.X_add_symbol)
{
inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
inst.reloc.pc_rel = 0;
}
else
{
if (psr_required_here (& str, CPSR_FLG, SPSR_FLG) == SUCCESS)
inst.instruction |= PSR_FLAGS;
else if (psr_required_here (& str, CPSR_CTL, SPSR_CTL) == SUCCESS)
inst.instruction |= PSR_CONTROL;
else
unsigned value = validate_immediate (inst.reloc.exp.X_add_number);
if (value == (unsigned) FAIL)
{
inst.error = BAD_ARGS;
inst.error = _("Invalid constant");
return;
}
if (skip_past_comma (&str) == FAIL)
{
inst.error = BAD_ARGS;
return;
}
/* Syntax could be "<psrf>, rm", "<psrf>, #expression" */
if ((reg = reg_required_here (& str, 0)) != FAIL)
;
/* Immediate expression. */
else if (is_immediate_prefix (* str))
{
str ++;
inst.error = NULL;
if (my_get_expression (& inst.reloc.exp, & str))
{
inst.error = _("Register or shift expression expected");
return;
}
if (inst.reloc.exp.X_add_symbol)
{
inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
inst.reloc.pc_rel = 0;
}
else
{
unsigned value = validate_immediate (inst.reloc.exp.X_add_number);
if (value == (unsigned) FAIL)
{
inst.error = _("Invalid constant");
return;
}
inst.instruction |= value;
}
flags |= INST_IMMEDIATE;
}
else
{
inst.error = _("Error: unrecognised syntax for second argument to msr instruction");
return;
}
inst.instruction |= value;
}
inst.error = NULL;
inst.instruction |= flags;
end_of_line (str);
return;
}
/* Long Multiply Parser
@ -5242,7 +5300,7 @@ md_section_align (segment, size)
/* ARGSUSED */
symbolS *
md_undefined_symbol (name)
char * name;
char * name ATTRIBUTE_UNUSED;
{
#ifdef OBJ_ELF
if (name[0] == '_' && name[1] == 'G'
@ -5307,33 +5365,6 @@ arm_reg_parse (ccp)
return FAIL;
}
static int
arm_psr_parse (ccp)
register char ** ccp;
{
char * start = * ccp;
char c;
char * p;
CONST struct asm_psr * psr;
p = start;
c = *p++;
while (isalpha (c) || c == '_')
c = *p++;
*--p = 0;
psr = (CONST struct asm_psr *) hash_find (arm_psr_hsh, start);
*p = c;
if (psr)
{
*ccp = p;
return psr->number;
}
return FAIL;
}
int
md_apply_fix3 (fixP, val, seg)
fixS * fixP;
@ -6390,7 +6421,7 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
* -m[arm]8[10] Arm 8 processors
* -m[arm]9[20][tdmi] Arm 9 processors
* -mstrongarm[110[0]] StrongARM processors
* -m[arm]v[2345] Arm architectures
* -m[arm]v[2345[t]] Arm architectures
* -mall All (except the ARM1)
* FP variants:
* -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions
@ -6847,12 +6878,13 @@ cons_fix_new_arm (frag, where, size, exp)
bfd_reloc_code_real_type type;
int pcrel = 0;
/* Pick a reloc ...
*
* @@ Should look at CPU word size.
*/
/* Pick a reloc.
FIXME: @@ Should look at CPU word size. */
switch (size)
{
case 1:
type = BFD_RELOC_8;
break;
case 2:
type = BFD_RELOC_16;
break;

View File

@ -87,7 +87,7 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the GNU Assembler "@value{AS}".
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -142,7 +142,7 @@ done.
@end tex
@vskip 0pt plus 1filll
Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -1162,9 +1162,6 @@ target is allowed to redefine the local label prefix.
@ifset HPPA
On the HPPA local labels begin with @samp{L$}.
@end ifset
@ifset ARM
@samp{;} for the ARM family;
@end ifset
@node M
@section Assemble in MRI Compatibility Mode: @code{-M}
@ -3264,7 +3261,8 @@ alignment request in bytes. For example @samp{.align 8} advances
the location counter until it is a multiple of 8. If the location counter
is already a multiple of 8, no change is needed.
For other systems, including the i386 using a.out format, it is the
For other systems, including the i386 using a.out format, and the arm and
strongarm, it is the
number of low-order zero bits the location counter must have after
advancement. For example @samp{.align 3} advances the location
counter until it a multiple of 8. If the location counter is already a

View File

@ -1,4 +1,4 @@
@c Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc.
@c Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@ -27,66 +27,86 @@
@section Options
@cindex ARM options (none)
@cindex options for ARM (none)
@table @code
@cindex @code{-marm} command line option, ARM
@item -marm [@var{2}|@var{250}|@var{3}|@var{6}|@var{60}|@var{600}|@var{610}|@var{620}|@var{7}|@var{7m}|@var{7d}|@var{7dm}|@var{7di}|@var{7dmi}|@var{70}|@var{700}|@var{700i}|@var{710}|@var{710c}|@var{7100}|@var{7500}|@var{7500fe}|@var{7tdmi}|@var{8}|@var{810}|@var{9}|@var{9tdmi}|@var{920}|@var{strongarm}|@var{strongarm110}|@var{strongarm1100}]
@item -marm@code{[2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|810|9|9tdmi|920|strongarm|strongarm110|strongarm1100]}
This option specifies the target processor. The assembler will issue an
error message if an attempt is made to assemble an instruction which
will not execute on the target processor.
@cindex @code{-marmv} command line option, ARM
@item -marmv [@var{2}|@var{2a}|@var{3}|@var{3m}|@var{4}|@var{4t}|@var{5}|@var{5t}]
@item -marmv@code{[2|2a|3|3m|4|4t|5|5t]}
This option specifies the target architecture. The assembler will issue
an error message if an attempt is made to assemble an instruction which
will not execute on the target architecture.
@cindex @code{-mthumb} command line option, ARM
@item -mthumb
This option specifies that only Thumb instructions should be assembled.
@cindex @code{-mall} command line option, ARM
@item -mall
This option specifies that any Arm or Thumb instruction should be assembled.
@cindex @code{-mfpa} command line option, ARM
@item -mfpa [@var{10}|@var{11}]
@item -mfpa @var{[10|11]}
This option specifies the floating point architecture in use on the
target processor.
@cindex @code{-mfpe-old} command line option, ARM
@item -mfpe-old
Do not allow the assemble of floating point multiple instructions.
@cindex @code{-mno-fpu} command line option, ARM
@item -mno-fpu
Do not allow the assembly of any floating point instructions.
@cindex @code{-mthumb-interwork} command line option, ARM
@item -mthumb-interwork
This option specifies that the output generated by the assembler should
be marked as supporting interworking.
@cindex @code{-mapcs} command line option, ARM
@item -mapcs [@var{26}|@var{32}]
@item -mapcs @var{[26|32]}
This option specifies that the output generated by the assembler should
be marked as supporting the indicated version of the Arm Procedure.
Calling Standard.
@cindex @code{-mapcs-float} command line option, ARM
@item -mapcs-float
This indicates the the floating point variant of the APCS should be
used. In this variant floating point arguments are passed in FP
registers rather than integer registers.
@cindex @code{-mapcs-reentrant} command line option, ARM
@item -mapcs-reentrant
This indicates that the reentrant variant of the APCS should be used.
This variant supports position independent code.
@cindex @code{-EB} command line option, ARM
@item -EB
This option specifies that the output generated by the assembler should
be marked as being encoded for a big-endian processor.
@cindex @code{-EL} command line option, ARM
@item -EL
This option specifies that the output generated by the assembler should
be marked as being encoded for a little-endian processor.
@cindex @code{-k} command line option, ARM
@cindex PIC code generation for ARM
@item -k
This option enables the generation of PIC (position independent code).
@cindex @code{-moabi} command line option, ARM
@item -moabi
This indicates that the code should be assembled using the old ARM ELF
conventions, based on a beta release release of the ARM-ELF
specifications, rather than the default conventions which are based on
the final release of the ARM-ELF specifications.
@end table
@ -143,6 +163,13 @@ The ARM family uses @sc{ieee} floating-point numbers.
@cindex ARM machine directives
@table @code
@cindex @code{align} directive, ARM
@item .align @var{expression} [, @var{expression}]
This is the generic @var{.align} directive. For the ARM however if the
first argument is zero (ie no alignment is needed) the assembler will
behave as if the argument had been 2 (ie pad to the next four byte
boundary). This is for compatability with ARM's own assembler.
@cindex @code{req} directive, ARM
@item @var{name} .req @var{register name}
This creates an alias for @var{register name} called @var{name}. For
@ -153,7 +180,7 @@ example:
@end smallexample
@cindex @code{code} directive, ARM
@item .code [@var{16}|@var{32}]
@item .code @var{[16|32]}
This directive selects the instruction set being generated. The value 16
selects Thumb, with the value 32 selecting ARM.

View File

@ -1,5 +1,5 @@
/* frags.c - manage frags -
Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 1998
Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -93,11 +93,14 @@ frag_grow (nchars)
* [frchain_now remains the same but frag_now is updated.]
* Because this calculates the correct value of fr_fix by
* looking at the obstack 'frags', it needs to know how many
* characters at the end of the old frag belong to (the maximal)
* fr_var: the rest must belong to fr_fix.
* It doesn't actually set up the old frag's fr_var: you may have
* set fr_var == 1, but allocated 10 chars to the end of the frag:
* in this case you pass old_frags_var_max_size == 10.
* characters at the end of the old frag belong to the maximal
* variable part; The rest must belong to fr_fix.
* It doesn't actually set up the old frag's fr_var. You may have
* set fr_var == 1, but allocated 10 chars to the end of the frag;
* In this case you pass old_frags_var_max_size == 10.
* In fact, you may use fr_var for something totally unrelated to the
* size of the variable part of the frag; None of the generic frag
* handling code makes use of fr_var.
*
* Make a new frag, initialising some components. Link new frag at end
* of frchain_now.

View File

@ -1,5 +1,5 @@
/* frags.h - Header file for the frag concept.
Copyright (C) 1987, 92, 93, 94, 95, 97, 98, 1999
Copyright (C) 1987, 92, 93, 94, 95, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -51,7 +51,8 @@ struct frag
/* (Fixed) number of octets we know we have. May be 0. */
offsetT fr_fix;
/* (Variable) number of octets after above. May be 0. */
/* May be used for (Variable) number of octets after above.
The generic frag handling code no longer makes any use of fr_var. */
offsetT fr_var;
/* For variable-length tail. */
symbolS *fr_symbol;

View File

@ -1,3 +1,9 @@
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
* filenames.h: New file.
(HAVE_DOS_BASED_FILE_SYSTEM, IS_DIR_SEPARATOR)
(IS_ABSOLUTE_PATH, FILENAME_CMP): New macros.
2000-04-04 Alan Modra <alan@linuxcare.com.au>
* bin-bugs.h (REPORT_BUGS_TO): Remove translated part.

View File

@ -1,3 +1,23 @@
2000-05-02 H.J. Lu <hjl@gnu.org>
* common.h (ELFOSABI_NONE): Renamed from ELFOSABI_SYSV.
(ELFOSABI_MODESTO): Defined.
(ELFOSABI_OPENBSD): Likewise.
2000-04-14 H.J. Lu <hjl@gnu.org>
* common.h (ELFOSABI_TRUE64): Renamed to ELFOSABI_TRU64.
2000-04-14 H.J. Lu <hjl@gnu.org>
* common.h (ELFOSABI_NETBSD): Defined.
(ELFOSABI_HURD): Likewise.
(ELFOSABI_SOLARIS): Likewise.
(ELFOSABI_MONTEREY): Likewise.
(ELFOSABI_IRIX): Likewise.
(ELFOSABI_FREEBSD): Likewise.
(ELFOSABI_TRUE64): Likewise.
2000-03-27 Denis Chertykov <denisc@overta.ru>
* avr.h: New file. AVR ELF support for BFD.

View File

@ -58,7 +58,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EI_VERSION 6 /* File version */
#define EI_OSABI 7 /* Operating System/ABI indication */
#define ELFOSABI_SYSV 0 /* UNIX System V ABI */
#define ELFOSABI_NONE 0 /* UNIX System V ABI */
#define ELFOSABI_HPUX 1 /* HP-UX operating system */
#define ELFOSABI_NETBSD 2 /* NetBSD */
#define ELFOSABI_LINUX 3 /* GNU/Linux */

View File

@ -0,0 +1,51 @@
/* Macros for taking apart, interpreting and processing file names.
These are here because some non-Posix (a.k.a. DOSish) systems have
drive letter brain-damage at the beginning of an absolute file name,
use forward- and back-slash in path names interchangeably, and
some of them have case-insensitive file names.
Copyright 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef FILENAMES_H
#define FILENAMES_H
#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__)
#ifndef HAVE_DOS_BASED_FILE_SYSTEM
#define HAVE_DOS_BASED_FILE_SYSTEM 1
#endif
#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\')
/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
only semi-absolute. This is because the users of IS_ABSOLUTE_PATH
want to know whether to prepend the current working directory to
a file name, which should not be done with a name like d:foo. */
#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
#define FILENAME_CMP(s1, s2) strcasecmp(s1, s2)
#else /* not DOSish */
#define IS_DIR_SEPARATOR(c) ((c) == '/')
#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]))
#define FILENAME_CMP(s1, s2) strcmp(s1, s2)
#endif /* not DOSish */
#endif /* FILENAMES_H */

View File

@ -1,3 +1,18 @@
2000-05-23 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* i386.h: Allow d suffix on iret, and add DefaultSize modifier.
2000-05-23 Alan Modra <alan@linuxcare.com.au>
* i386.h: Delete redundant fp instruction comments.
From Gavin Romig-Koch <gavin@cygnus.com>
* i386.h (wld_Suf): Define. Use on pushf, popf, pusha, popa.
2000-05-17 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* i386.h: Use sl_FP, not sl_Suf for fild.
2000-03-27 Nick Clifton <nickc@cygnus.com>
* d30v.h (SHORT_A1): Fix value.

View File

@ -1,5 +1,6 @@
/* opcode/i386.h -- Intel 80386 opcode table
Copyright 1989, 91, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation.
Copyright 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation.
This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger.
@ -58,6 +59,7 @@ static const template i386_optab[] = {
#define bw_Suf (No_lSuf|No_sSuf|No_dSuf|No_xSuf)
#define bl_Suf (No_wSuf|No_sSuf|No_dSuf|No_xSuf)
#define wl_Suf (No_bSuf|No_sSuf|No_dSuf|No_xSuf)
#define wld_Suf (No_bSuf|No_sSuf|No_xSuf)
#define sl_Suf (No_bSuf|No_wSuf|No_dSuf|No_xSuf)
#define sld_Suf (No_bSuf|No_wSuf|No_xSuf)
#define sldx_Suf (No_bSuf|No_wSuf)
@ -103,14 +105,14 @@ static const template i386_optab[] = {
{"movsbl", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg32, 0} },
{"movsbw", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
{"movswl", 2, 0x0fbf, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
/* Intel Syntax */
/* Intel Syntax next 2 insns */
{"movsx", 2, 0x0fbf, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
{"movsx", 2, 0x0fbe, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
/* Move with zero extend. */
{"movzb", 2, 0x0fb6, X, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
{"movzwl", 2, 0x0fb7, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
/* Intel Syntax */
/* Intel Syntax next 2 insns */
{"movzx", 2, 0x0fb7, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
{"movzx", 2, 0x0fb6, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
@ -121,7 +123,7 @@ static const template i386_optab[] = {
{"push", 1, 0x68, X, wl_Suf|DefaultSize, { Imm16|Imm32, 0, 0} },
{"push", 1, 0x06, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
{"push", 1, 0x0fa0, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
{"pusha", 0, 0x60, X, wl_Suf|DefaultSize, { 0, 0, 0 } },
{"pusha", 0, 0x60, X, wld_Suf|DefaultSize, { 0, 0, 0 } },
/* Pop instructions. */
{"pop", 1, 0x58, X, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
@ -129,7 +131,7 @@ static const template i386_optab[] = {
#define POP_SEG_SHORT 0x07
{"pop", 1, 0x07, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
{"pop", 1, 0x0fa1, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
{"popa", 0, 0x61, X, wl_Suf|DefaultSize, { 0, 0, 0 } },
{"popa", 0, 0x61, X, wld_Suf|DefaultSize, { 0, 0, 0 } },
/* Exchange instructions.
xchg commutes: we allow both operand orders. */
@ -166,8 +168,8 @@ static const template i386_optab[] = {
{"cmc", 0, 0xf5, X, NoSuf, { 0, 0, 0} },
{"lahf", 0, 0x9f, X, NoSuf, { 0, 0, 0} },
{"sahf", 0, 0x9e, X, NoSuf, { 0, 0, 0} },
{"pushf", 0, 0x9c, X, wl_Suf|DefaultSize, { 0, 0, 0} },
{"popf", 0, 0x9d, X, wl_Suf|DefaultSize, { 0, 0, 0} },
{"pushf", 0, 0x9c, X, wld_Suf|DefaultSize, { 0, 0, 0} },
{"popf", 0, 0x9d, X, wld_Suf|DefaultSize, { 0, 0, 0} },
{"stc", 0, 0xf9, X, NoSuf, { 0, 0, 0} },
{"std", 0, 0xfd, X, NoSuf, { 0, 0, 0} },
{"sti", 0, 0xfb, X, NoSuf, { 0, 0, 0} },
@ -219,7 +221,7 @@ static const template i386_optab[] = {
{"xor", 2, 0x34, X, bwl_Suf|W, { Imm, Acc, 0} },
{"xor", 2, 0x80, 6, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
/* iclr with 1 operand is really xor with 2 operands. */
/* clr with 1 operand is really xor with 2 operands. */
{"clr", 1, 0x30, X, bwl_Suf|W|Modrm|regKludge, { Reg, 0, 0 } },
{"adc", 2, 0x10, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
@ -300,24 +302,24 @@ static const template i386_optab[] = {
{"shl", 2, 0xd2, 4, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
{"shl", 1, 0xd0, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
{"shld", 3, 0x0fa4, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
{"shld", 3, 0x0fa5, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
{"shld", 2, 0x0fa5, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
{"shr", 2, 0xd0, 5, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
{"shr", 2, 0xc0, 5, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
{"shr", 2, 0xd2, 5, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
{"shr", 1, 0xd0, 5, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
{"shrd", 3, 0x0fac, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
{"shrd", 3, 0x0fad, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
{"shrd", 2, 0x0fad, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
{"sar", 2, 0xd0, 7, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
{"sar", 2, 0xc0, 7, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
{"sar", 2, 0xd2, 7, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
{"sar", 1, 0xd0, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
{"shld", 3, 0x0fa4, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
{"shld", 3, 0x0fa5, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
{"shld", 2, 0x0fa5, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
{"shrd", 3, 0x0fac, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
{"shrd", 3, 0x0fad, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
{"shrd", 2, 0x0fad, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
/* Control transfer instructions. */
{"call", 1, 0xe8, X, wl_Suf|JumpDword|DefaultSize, { Disp16|Disp32, 0, 0} },
{"call", 1, 0xff, 2, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem|JumpAbsolute, 0, 0} },
@ -477,7 +479,7 @@ static const template i386_optab[] = {
{"int", 1, 0xcd, X, NoSuf, { Imm8, 0, 0} },
{"int3", 0, 0xcc, X, NoSuf, { 0, 0, 0} },
{"into", 0, 0xce, X, NoSuf, { 0, 0, 0} },
{"iret", 0, 0xcf, X, wl_Suf, { 0, 0, 0} },
{"iret", 0, 0xcf, X, wld_Suf|DefaultSize, { 0, 0, 0} },
/* i386sl, i486sl, later 486, and Pentium. */
{"rsm", 0, 0x0faa, X, NoSuf, { 0, 0, 0} },
@ -509,98 +511,107 @@ static const template i386_optab[] = {
/* Floating point instructions. */
/* load */
{"fld", 1, 0xd9c0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
{"fld", 1, 0xd9, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 <-- mem float/double */
{"fld", 1, 0xd9c0, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fld", 1, 0xd9, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fld", 1, 0xd9c0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
{"fld", 1, 0xdb, 5, x_FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem efloat */
{"fild", 1, 0xdf, 0, sl_Suf|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 <-- mem word(16)/dword(32) */
{"fld", 1, 0xdb, 5, x_FP|Modrm, { LLongMem, 0, 0} },
{"fild", 1, 0xdf, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
{"fildd", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
{"fildq", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
{"fildll", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
{"fldt", 1, 0xdb, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem efloat */
{"fbld", 1, 0xdf, 4, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem bcd */
{"fildd", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
{"fildq", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
{"fildll", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
{"fldt", 1, 0xdb, 5, FP|Modrm, { LLongMem, 0, 0} },
{"fbld", 1, 0xdf, 4, FP|Modrm, { LLongMem, 0, 0} },
/* store (no pop) */
{"fst", 1, 0xddd0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
{"fst", 1, 0xd9, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 --> mem float/double */
{"fst", 1, 0xddd0, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fst", 1, 0xd9, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fst", 1, 0xddd0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
{"fist", 1, 0xdf, 2, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 --> mem word(16)/dword(32) */
{"fist", 1, 0xdf, 2, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* store (with pop) */
{"fstp", 1, 0xddd8, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
{"fstp", 1, 0xd9, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 --> mem float/double */
{"fstp", 1, 0xddd8, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fstp", 1, 0xd9, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fstp", 1, 0xddd8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
{"fstp", 1, 0xdb, 7, x_FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem efloat */
{"fistp", 1, 0xdf, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 --> mem word(16)/dword(32) */
{"fstp", 1, 0xdb, 7, x_FP|Modrm, { LLongMem, 0, 0} },
{"fistp", 1, 0xdf, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
{"fistpd", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
{"fistpq", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
{"fistpll",1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
{"fstpt", 1, 0xdb, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem efloat */
{"fbstp", 1, 0xdf, 6, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem bcd */
{"fistpd", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
{"fistpq", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
{"fistpll",1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
{"fstpt", 1, 0xdb, 7, FP|Modrm, { LLongMem, 0, 0} },
{"fbstp", 1, 0xdf, 6, FP|Modrm, { LLongMem, 0, 0} },
/* exchange %st<n> with %st0 */
{"fxch", 1, 0xd9c8, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fxch", 0, 0xd9c9, X, FP, { 0, 0, 0} }, /* alias for fxch %st(1) */
/* alias for fxch %st(1) */
{"fxch", 0, 0xd9c9, X, FP, { 0, 0, 0} },
/* comparison (without pop) */
{"fcom", 1, 0xd8d0, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fcom", 0, 0xd8d1, X, FP, { 0, 0, 0} }, /* alias for fcom %st(1) */
{"fcom", 1, 0xd8, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* compare %st0, mem float/double */
/* alias for fcom %st(1) */
{"fcom", 0, 0xd8d1, X, FP, { 0, 0, 0} },
{"fcom", 1, 0xd8, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fcom", 1, 0xd8d0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
{"ficom", 1, 0xde, 2, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* compare %st0, mem word/dword */
{"ficom", 1, 0xde, 2, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* comparison (with pop) */
{"fcomp", 1, 0xd8d8, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fcomp", 0, 0xd8d9, X, FP, { 0, 0, 0} }, /* alias for fcomp %st(1) */
{"fcomp", 1, 0xd8, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* compare %st0, mem float/double */
/* alias for fcomp %st(1) */
{"fcomp", 0, 0xd8d9, X, FP, { 0, 0, 0} },
{"fcomp", 1, 0xd8, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fcomp", 1, 0xd8d8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
{"ficomp", 1, 0xde, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* compare %st0, mem word/dword */
{"fcompp", 0, 0xded9, X, FP, { 0, 0, 0} }, /* compare %st0, %st1 & pop 2 */
{"ficomp", 1, 0xde, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
{"fcompp", 0, 0xded9, X, FP, { 0, 0, 0} },
/* unordered comparison (with pop) */
{"fucom", 1, 0xdde0, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fucom", 0, 0xdde1, X, FP, { 0, 0, 0} }, /* alias for fucom %st(1) */
/* alias for fucom %st(1) */
{"fucom", 0, 0xdde1, X, FP, { 0, 0, 0} },
{"fucomp", 1, 0xdde8, X, FP|ShortForm, { FloatReg, 0, 0} },
{"fucomp", 0, 0xdde9, X, FP, { 0, 0, 0} }, /* alias for fucomp %st(1) */
{"fucompp",0, 0xdae9, X, FP, { 0, 0, 0} }, /* ucompare %st0, %st1 & pop twice */
/* alias for fucomp %st(1) */
{"fucomp", 0, 0xdde9, X, FP, { 0, 0, 0} },
{"fucompp",0, 0xdae9, X, FP, { 0, 0, 0} },
{"ftst", 0, 0xd9e4, X, FP, { 0, 0, 0} }, /* test %st0 */
{"fxam", 0, 0xd9e5, X, FP, { 0, 0, 0} }, /* examine %st0 */
{"ftst", 0, 0xd9e4, X, FP, { 0, 0, 0} },
{"fxam", 0, 0xd9e5, X, FP, { 0, 0, 0} },
/* load constants into %st0 */
{"fld1", 0, 0xd9e8, X, FP, { 0, 0, 0} }, /* %st0 <-- 1.0 */
{"fldl2t", 0, 0xd9e9, X, FP, { 0, 0, 0} }, /* %st0 <-- log2(10) */
{"fldl2e", 0, 0xd9ea, X, FP, { 0, 0, 0} }, /* %st0 <-- log2(e) */
{"fldpi", 0, 0xd9eb, X, FP, { 0, 0, 0} }, /* %st0 <-- pi */
{"fldlg2", 0, 0xd9ec, X, FP, { 0, 0, 0} }, /* %st0 <-- log10(2) */
{"fldln2", 0, 0xd9ed, X, FP, { 0, 0, 0} }, /* %st0 <-- ln(2) */
{"fldz", 0, 0xd9ee, X, FP, { 0, 0, 0} }, /* %st0 <-- 0.0 */
{"fld1", 0, 0xd9e8, X, FP, { 0, 0, 0} },
{"fldl2t", 0, 0xd9e9, X, FP, { 0, 0, 0} },
{"fldl2e", 0, 0xd9ea, X, FP, { 0, 0, 0} },
{"fldpi", 0, 0xd9eb, X, FP, { 0, 0, 0} },
{"fldlg2", 0, 0xd9ec, X, FP, { 0, 0, 0} },
{"fldln2", 0, 0xd9ed, X, FP, { 0, 0, 0} },
{"fldz", 0, 0xd9ee, X, FP, { 0, 0, 0} },
/* arithmetic */
/* add */
{"fadd", 2, 0xd8c0, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
{"fadd", 1, 0xd8c0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* alias for fadd %st(i), %st */
/* alias for fadd %st(i), %st */
{"fadd", 1, 0xd8c0, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fadd", 0, 0xdec1, X, FP|Ugh, { 0, 0, 0} }, /* alias for faddp */
/* alias for faddp */
{"fadd", 0, 0xdec1, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fadd", 1, 0xd8, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fiadd", 1, 0xde, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
{"faddp", 2, 0xdec0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
{"faddp", 1, 0xdec0, X, FP|ShortForm, { FloatReg, 0, 0} },
{"faddp", 0, 0xdec1, X, FP, { 0, 0, 0} }, /* alias for faddp %st, %st(1) */
/* alias for faddp %st, %st(1) */
{"faddp", 0, 0xdec1, X, FP, { 0, 0, 0} },
{"faddp", 2, 0xdec0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
/* subtract */
{"fsub", 2, 0xd8e0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
{"fsub", 1, 0xd8e0, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fsub", 0, 0xdee1, X, FP|Ugh, { 0, 0, 0} }, /* alias for fsubp */
/* alias for fsubp */
{"fsub", 0, 0xdee1, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fsub", 1, 0xd8, 4, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fisub", 1, 0xde, 4, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
@ -622,7 +633,8 @@ static const template i386_optab[] = {
{"fsubr", 2, 0xd8e8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
{"fsubr", 1, 0xd8e8, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fsubr", 0, 0xdee9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fsubrp */
/* alias for fsubrp */
{"fsubr", 0, 0xdee9, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fsubr", 1, 0xd8, 5, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fisubr", 1, 0xde, 5, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
@ -644,7 +656,8 @@ static const template i386_optab[] = {
{"fmul", 2, 0xd8c8, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
{"fmul", 1, 0xd8c8, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fmul", 0, 0xdec9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fmulp */
/* alias for fmulp */
{"fmul", 0, 0xdec9, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fmul", 1, 0xd8, 1, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fimul", 1, 0xde, 1, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
@ -658,7 +671,8 @@ static const template i386_optab[] = {
{"fdiv", 2, 0xd8f0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
{"fdiv", 1, 0xd8f0, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fdiv", 0, 0xdef1, X, FP|Ugh, { 0, 0, 0} }, /* alias for fdivp */
/* alias for fdivp */
{"fdiv", 0, 0xdef1, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fdiv", 1, 0xd8, 6, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fidiv", 1, 0xde, 6, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
@ -680,7 +694,8 @@ static const template i386_optab[] = {
{"fdivr", 2, 0xd8f8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
{"fdivr", 1, 0xd8f8, X, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
{"fdivr", 0, 0xdef9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fdivrp */
/* alias for fdivrp */
{"fdivr", 0, 0xdef9, X, FP|Ugh, { 0, 0, 0} },
#endif
{"fdivr", 1, 0xd8, 7, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
{"fidivr", 1, 0xde, 7, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
@ -798,17 +813,19 @@ static const template i386_optab[] = {
{"rdtsc", 0, 0x0f31, X, NoSuf, { 0, 0, 0} },
{"rdmsr", 0, 0x0f32, X, NoSuf, { 0, 0, 0} },
{"cmpxchg8b",1,0x0fc7, 1, NoSuf|Modrm, { LLongMem, 0, 0} },
/* Pentium II/Pentium Pro extensions. */
{"sysenter",0, 0x0f34, X, NoSuf, { 0, 0, 0} },
{"sysexit", 0, 0x0f35, X, NoSuf, { 0, 0, 0} },
{"fxsave", 1, 0x0fae, 0, FP|Modrm, { LLongMem, 0, 0} },
{"fxrstor", 1, 0x0fae, 1, FP|Modrm, { LLongMem, 0, 0} },
/* Pentium Pro extensions. */
{"rdpmc", 0, 0x0f33, X, NoSuf, { 0, 0, 0} },
{"ud2", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} }, /* official undefined instr. */
{"ud2a", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} }, /* alias for ud2 */
{"ud2b", 0, 0x0fb9, X, NoSuf, { 0, 0, 0} }, /* 2nd. official undefined instr. */
/* official undefined instr. */
{"ud2", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} },
/* alias for ud2 */
{"ud2a", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} },
/* 2nd. official undefined instr. */
{"ud2b", 0, 0x0fb9, X, NoSuf, { 0, 0, 0} },
{"cmovo", 2, 0x0f40, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
{"cmovno", 2, 0x0f41, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
@ -1047,7 +1064,8 @@ static const template i386_optab[] = {
{"pmulhrw", 2, 0x0f0f, 0xb7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
{"pswapd", 2, 0x0f0f, 0xbb, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
{NULL, 0, 0, 0, 0, { 0, 0, 0} } /* sentinel */
/* sentinel */
{NULL, 0, 0, 0, 0, { 0, 0, 0} }
};
#undef X
#undef NoSuf
@ -1059,6 +1077,7 @@ static const template i386_optab[] = {
#undef bw_Suf
#undef bl_Suf
#undef wl_Suf
#undef wld_Suf
#undef sl_Suf
#undef sld_Suf
#undef sldx_Suf

View File

@ -1,3 +1,33 @@
2000-05-22 David O'Brien <obrien@FreeBSD.org>
* configure.tgt: Recognize alpha-*-freebsd*.
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
* ldmain.c: Include filenames.h.
(set_scripts_dir): Support backslashes in program name.
2000-05-23 Philip Blundell <pb@futuretv.com>
* configure.in: Set version to 2.10.
* configure: Regenerate.
2000-05-15 David O'Brien <obrien@FreeBSD.org>
* lexsup.c (parse_args): Update the year in the copyright notice.
2000-05-13 Philip Blundell <pb@futuretv.com>
From Joel Sherrill <joel@OARcorp.com>:
* configure.tgt (sparc-*-rtemsaout*, sparc-*-rtemself*): New.
(sparc-*-rtems*): Use ELF.
(i960-*-rtemself*, i960-*-rtemscoff*): New.
(i[3456]86-*-rtemscoff*): New.
(i[3456]86-*-rtems*): Use ELF.
(sh-*-rtemscoff*): New.
(m68*-*-rtemscoff*, m68*-*-rtemself): New.
(m68*-*-rtems*): Use ELF.
2000-05-03 Alan Modra <alan@linuxcare.com.au>
From Ulf Carlsson <ulfc@engr.sgi.com> and Andreas Jaeger <aj@suse.de>

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ AC_INIT(ldmain.c)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(ld, 2.9.5)
AM_INIT_AUTOMAKE(ld, 2.10)
AM_PROG_LIBTOOL

View File

@ -1,5 +1,5 @@
/* Main program of GNU linker.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
@ -27,6 +27,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "libiberty.h"
#include "progress.h"
#include "bfdlink.h"
#include "filenames.h"
#include "ld.h"
#include "ldmain.h"
@ -567,6 +568,14 @@ set_scripts_dir ()
/* Look for "ldscripts" in the dir where our binary is. */
end = strrchr (program_name, '/');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have \foo\bar, or /foo\bar. */
char *bslash = strrchr (program_name, '\\');
if (bslash > end)
end = bslash;
}
#endif
if (end == NULL)
{

View File

@ -877,7 +877,7 @@ parse_args (argc, argv)
case OPTION_VERSION:
/* This output is intended to follow the GNU standards document. */
printf ("GNU ld %s\n", ld_program_version);
printf (_("Copyright 1997 Free Software Foundation, Inc.\n"));
printf (_("Copyright 2000 Free Software Foundation, Inc.\n"));
printf (_("\
This program is free software; you may redistribute it under the terms of\n\
the GNU General Public License. This program has absolutely no warranty.\n"));

View File

@ -1,3 +1,20 @@
2000-05-26 Scott Bambrough <scottb@netwinder.org>
Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
* arm-opc.h: Use upper case for flags in MSR and MRS
instructions. Allow any bit to be set in the field_mask of
the MSR instruction.
Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
* arm-dis.c (print_insn_arm): Decode _x and _s bits of
the field_mask of an MSR instruction.
2000-05-26 Scott Bambrough <scottb@netwinder.org>
Port of patch to mainline by Thomas de Lellis <tdel@windriver.com>:
* arm-opc.h: Disassembly of thumb ldsb/ldsh
instructions changed to ldrsb/ldrsh.
2000-04-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
* a29k-dis.c, alpha-dis.c, alpha-opc.c, arc-dis.c, arc-opc.c,

View File

@ -420,7 +420,7 @@ print_insn_arm (pc, info, given)
break;
case 'C':
switch (given & 0x00090000)
switch (given & 0x000f0000)
{
default:
func (stream, "_???");
@ -429,10 +429,16 @@ print_insn_arm (pc, info, given)
func (stream, "_all");
break;
case 0x10000:
func (stream, "_ctl");
func (stream, "_c");
break;
case 0x20000:
func (stream, "_x");
break;
case 0x40000:
func (stream, "_s");
break;
case 0x80000:
func (stream, "_flg");
func (stream, "_f");
break;
}
break;

View File

@ -1,6 +1,6 @@
/* Opcode table for the ARM.
Copyright 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
Copyright 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -93,8 +93,8 @@ static struct arm_opcode arm_opcodes[] =
{0x00a00000, 0x0de00000, "adc%c%20's\t%12-15r, %16-19r, %o"},
{0x00c00000, 0x0de00000, "sbc%c%20's\t%12-15r, %16-19r, %o"},
{0x00e00000, 0x0de00000, "rsc%c%20's\t%12-15r, %16-19r, %o"},
{0x0120f000, 0x0db6f000, "msr%c\t%22?scpsr%C, %o"},
{0x010f0000, 0x0fbf0fff, "mrs%c\t%12-15r, %22?scpsr"},
{0x0120f000, 0x0db0f000, "msr%c\t%22?SCPSR%C, %o"},
{0x010f0000, 0x0fbf0fff, "mrs%c\t%12-15r, %22?SCPSR"},
{0x01000000, 0x0de00000, "tst%c%p\t%16-19r, %o"},
{0x01200000, 0x0de00000, "teq%c%p\t%16-19r, %o"},
{0x01400000, 0x0de00000, "cmp%c%p\t%16-19r, %o"},
@ -164,7 +164,7 @@ static struct arm_opcode arm_opcodes[] =
{0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
{0x0c000000, 0x0e100000, "stc%c%22'l\t%8-11d, cr%12-15d, %A"},
{0x0c100000, 0x0e100000, "ldc%c%22'l\t%8-11d, cr%12-15d, %A"},
/* The rest. */
{0x00000000, 0x00000000, "undefined instruction %0-31x"},
{0x00000000, 0x00000000, 0}
@ -213,7 +213,7 @@ static struct thumb_opcode thumb_opcodes[] =
/* format 8 */
{0x5200, 0xFE00, "strh\t%0-2r, [%3-5r, %6-8r]"},
{0x5A00, 0xFE00, "ldrh\t%0-2r, [%3-5r, %6-8r]"},
{0x5600, 0xF600, "lds%11?hb\t%0-2r, [%3-5r, %6-8r]"},
{0x5600, 0xF600, "ldrs%11?hb\t%0-2r, [%3-5r, %6-8r]"},
/* format 7 */
{0x5000, 0xFA00, "str%10'b\t%0-2r, [%3-5r, %6-8r]"},
{0x5800, 0xFA00, "ldr%10'b\t%0-2r, [%3-5r, %6-8r]"},