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:
commit
6e440a7238
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=61844
@ -711,7 +711,6 @@ INSTALL_MODULES = \
|
||||
install-shellutils \
|
||||
install-sim \
|
||||
install-tar \
|
||||
install-texinfo \
|
||||
install-textutils \
|
||||
install-tgas \
|
||||
install-time \
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
;;
|
||||
|
510
contrib/binutils/bfd/configure
vendored
510
contrib/binutils/bfd/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -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 ;;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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...
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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}
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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}@*
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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))));
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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) */
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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; }
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -1 +1 @@
|
||||
@set VERSION 2.9.1
|
||||
@set VERSION 2.10
|
||||
|
4
contrib/binutils/binutils/configure
vendored
4
contrib/binutils/binutils/configure
vendored
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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');
|
||||
}
|
||||
|
@ -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
@ -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
|
||||
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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 */
|
||||
|
51
contrib/binutils/include/filenames.h
Normal file
51
contrib/binutils/include/filenames.h
Normal 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 */
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
823
contrib/binutils/ld/configure
vendored
823
contrib/binutils/ld/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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"));
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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]"},
|
||||
|
Loading…
Reference in New Issue
Block a user