id_list and compare_list fields.
(struct debug_class_id): Define.
(struct debug_type_compare_list): Define.
(debug_write): Initialize info->id_list
(debug_write_name): Remove reference to info->class_mark.
(debug_write_type): Get id for all structs and classes. Simplify
test for whether struct has already been written.
(debug_write_class_type): Get id for all classes. Simplify test
for whether class has already been written.
(debug_write_block): Don't write out blocks other than the top
level block if they have no local variables.
(debug_set_class_id): New static function.
(debug_type_samep): New static function.
(debug_class_type_samep): New static function.
* prdbg.c (pr_start_struct_type): Always print id.
(pr_start_class_type): Likewise.
(pr_tag_type): Likewise.
* objcopy.c (remove_leading_char): New static variable.
(OPTION_REMOVE_LEADING_CHAR): Define.
(copy_usage): Mention --remove-leading-char.
(filter_symbols): If remove_leading_char, and the first character
of a global symbol matches the symbol leading char of the BFD,
remove the first character.
(copy_object): Filter the symbols if remove_leading_char is set.
(copy_main): Handle --remove-leading-char.
* binutils.texi, objcopy.1: Document --remove-leading-char.
(struct ieee_write_type): Add name field.
(struct ieee_type_class): Remove name field. Change all uses to
use new name field in type instead.
(struct ieee_name_type): Likewise.
(ieee_start_struct_type): Initialize name field of type.
(ieee_start_class_type): Don't initialize classdef entry of tag.
(ieee_class_method_var): Don't adjust voffset.
(ieee_end_class_type): Likewise.
(ieee_tag_type): Initialize new name field of type.
(ieee_typdef): Set name after copying in type information.
anonymous struct, copy the name into memory.
(ieee_tag_type): Likewise.
* debug.c (debug_write_type): Only check and set id field for an
unnamed object.
(debug_write_class_type): Likewise.
field, and define some enum constants for it.
(parse_ieee_ty): Set kind field of variable for 'x' and 'X' types.
(parse_ieee_atn): Make an indirect slot for an external variable,
although we otherwise don't record it. Set kind field rather than
variable field of pvar.
(ieee_read_cxx_class): Try to get the type of a static member.
(ieee_read_reference): Check kind field rather than variable
field.
so_string and so_value fields.
(finish_stab): Call stab_emit_pending_vars before calling
debug_end_function. Don't warn about pending variables.
(parse_stab): Accumulate N_SO strings until a non N_SO symbol is
seen, rather than calling debug_append_filename. Call
stab_emit_pending_vars before calling debug_end_function. Don't
set info->last_type.
* objdump.c (show_raw_insn): New global.
(usage): Update.
(long_options): Update.
(disassemble_data): Set disasm_info.flags if --show-raw-insn.
* objdump.c (disassemble_data): Set new arch,mach,endian fields in
disasm_info.
(debug_get_field_name): Declare.
(debug_get_field_bitpos): Declare.
(debug_get_field_bitsize): Declare.
(debug_get_field_visibility): Declare.
(debug_get_field_physname): Declare.
* debug.c (debug_get_real_type): Handle DEBUG_KIND_TAGGED.
(debug_get_type_size): New function.
(debug_get_field_name): New function.
(debug_get_field_bitpos): New function.
(debug_get_field_bitsize): New function.
(debug_get_field_visibility): New function.
(debug_get_field_physname): New function.
(debug_write_type): Make sure we pass the real kind, not INDIRECT,
to tag_type. Pass the name recursively for INDIRECT.
and boolean parameters to function_type. Add boolean parameter to
method_type.
(debug_make_ellipsis_type): Don't declare.
(debug_make_function_type): Add debug_type * and boolean
parameters. Change all callers.
(debug_make_method_type): Add boolean parameter. Change all
callers.
(debug_get_parameter_types): Add boolean * parameter. Change all
callers.
(debug_get_target_type): Declare.
* debug.c (struct debug_function_type): Add fields arg_types and
varargs.
(struct debug_method_type): Add field varargs.
(debug_ellipsis_type, ELLIPSIS_P): Remove.
(debug_make_ellipsis_type): Remove.
(debug_make_function_type): Add arg_types and varargs parameters.
(debug_make_method_type): Add varargs parameter.
(debug_get_parameter_types): Add pvarargs parameter.
(debug_get_target_type): New function.
(debug_write_type): In case DEBUG_KIND_FUNCTION, push argument
types and pass count to function_type. In DEBUG_KIND_METHOD, use
a signed int for the count, don't call ellipsis_type, and pass
varargs to method_type.
* stabs.c (struct stab_demangle_info): Add varargs field.
(stab_demangle_argtypes): Add pvarargs parameter. Change all
callers.
(stab_demangle_args): Likewise.
(stab_demangle_type): In case 'F', pick up argument types.
* prdbg.c (pr_ellipsis_type): Remove.
(pr_function_type): Add argcount and varargs parameters.
(pr_method_type): Add varargs parameter.
* ieee.c (ieee_ellipsis_type): Remove.
(ieee_function_type): Add argcount and varargs parameters.
(ieee_method_type): Add varargs parameter. Remove most of
function body, and just call ieee_function_type.
functions not listed below to demangle argument types; they are
all called via stab_demangle_argtypes.
(finish_stab): If the kind of an undefined tag is
DEBUG_KIND_ILLEGAL, use DEBUG_KIND_STRUCT instead. Warn if there
are any pending variable.
(parse_stab): Don't close the function when the block depth goes
to zero. Pass value to debug_end_function.
(parse_stab_string): In case 'T', pass the name to
parse_stab_type.
(parse_stab_type): In case 'x', use stab_find_tagged_type. In
case '#', handle functions with variable numbers of arguments.
(parse_stab_struct_type): Add tagname parameter. Change all
callers.
(parse_stab_members): Add tagname and typenums parameters. Change
all callers. If the type of a method is a stub, call
parse_stab_argtypes to demangle the argument types and get the
physical name of the function.
(parse_stab_argtypes): New static function.
(stab_record_variable): For a DEBUG_GLOBAL or DEBUG_STATIC
variable, call debug_record_variable immediately.
(stab_find_tagged_type): New static function.
(struct debug_write_fns): Add field ellipsis_type. Add id
parameter to start_struct_type, start_class_type, and tag_type.
(debug_make_ellipsis_type): Declare.
(debug_find_named_type): Declare.
(debug_get_type_kind): Declare.
(debug_get_return_type): Declare.
(debug_get_parameter_types): Declare.
(debug_get_fields): Declare.
(debug_get_field_type): Declare.
* debug.c (struct debug_handle): Add fields class_id and base_id.
(struct debug_class_type): Add field id.
(struct debug_method_variant): Rename argtypes to physname.
Change all uses.
(debug_ellipsis_type): New static variable.
(ELLIPSIS_P): New macro.
(debug_make_ellipsis_type): New function.
(debug_make_method_variant): Rename argtypes to physname.
(debug_make_static_method_variant): Likewise.
(debug_name_type): Always put types in the global namespace.
(debug_find_named_type): New function.
(debug_find_tagged_type): Treat DEBUG_KIND_ILLEGAL specially,
rather than DEBUG_KIND_VOID.
(debug_get_real_type): New static function.
(debug_get_type_kind): New function.
(debug_get_return_type): New function.
(debug_get_parameter_types): New function.
(debug_get_fields): New function.
(debug_get_field_type): New function.
(debug_write): Initialize base_id.
(debug_write_type): Pass new id argument to tag_type. Handle
DEBUG_KIND_ILLEGAL. Use id for DEBUG_KIND_STRUCT and
DEBUG_KIND_UNION. Handle ellipsis for method arguments.
(debug_write_class_type): Don't dereference kclass if it is NULL.
Use id.
* prdbg.c (pr_fns): Add pr_ellipsis_type.
(pr_ellipsis_type): New static function.
(pr_pointer_type): If this is a pointer to an array, parenthesize
it correctly.
(pr_start_struct_type): Add id parameter.
(pr_start_class_type): Likewise.
(pr_tag_type): Likewise.
(pr_fix_visibility): Add the visibility to the top of the stack,
not the second element on the stack.
(pr_struct_field): Pop the stack before calling pr_fix_visibility.
(pr_class_static_member): Likewise.
(pr_class_start_method): Don't push a type, just set the method
name in the type on the top of the stack.
(pr_class_end_method): Don't pop the stack.
(pr_class_method_variant): Rename argtypes parameter to physname.
Append const and volatile rather than prepending them. Add a
space after the physname.
(pr_class_static_method_variant): Likewise.
* ieee.c (ieee_fns): Add ieee_ellipsis_type.
(ieee_define_named_type): Use DEBUG_KIND_ILLEGAL rather than
DEBUG_KIND_VOID.
(write_ieee_debugging_info): Likewise.
(ieee_typdef): Likewise.
(ieee_ellipsis_type): New static function.
(ieee_start_struct_type): Add id parameter.
(ieee_start_class_type): Likewise.
(ieee_tag_type): Likewise.
(ieee_class_method_variant): Rename name to physname.
(ieee_class_static_method_variant): Likewise.
BUILD_DLLTOOL): Put definitions for these into makefile when
configuring, instead of always clearing in mpw-make.sed.
* mpw-make.sed: Edit out any host_alias or target_alias settings,
fix pathname to BFD internal include files, remove dependency
calculation rules.
given a kind of type we can handle.
(debug_write_type): Handle undefined enums and structs.
(debug_write_class_type): Handle undefined classes.
* prdbg.c (pr_enum_type): Handle an undefined enum.
Also comment changes to debug.h.
bunch of static functions and structs used to write out IEEE
debugging information.
* budbg.h (write_ieee_debugging_info): Declare.
* ieee.c (struct ieee_type): Add pslot field.
(enum builtin_types): Define.
(ieee_builtin_type): For a pointer, return a pointer to the named
type. Use enum values rather than numbers.
(ieee_alloc_type): New static function.
(ieee_read_type_index): Use ieee_alloc_type.
(parse_ieee_bb): Likewise.
(parse_ieee_ty): Likewise. Use ieee_builtin_type for array range,
rather than making a new integer type. Store the new type in the
slot, if there is one.
(parse_ieee_atn): Treat ATN10 as defining a register variable.
(ieee_regno_to_genreg): Rename from ieee_regno_to_gen. Change all
callers.
(ieee_genreg_to_regno): New static function.
enum_type, start_struct_type, and start_class_type.
* debug.c (debug_write_type): Pass any tag name to
start_struct_type, debug_write_class_type, and enum_type. If
DEBUG_KIND_TAGGED, pass the name in the recursive call.
(debug_write_class_type): Accept a new tag parameter, and pass it
to start_class_type.
* prdbg.c (pop_type): Don't remove '+' character.
(pr_enum_type): Accept and use tag parameter.
(pr_start_struct_type): Likewise.
(pr_start_class_type): Likewise.
(pr_class_baseclass): Adjust algorithm used to find where to put
the baseclass name.
(pr_tag): Don't bother to insert the tag name.
Remove targets which just listed dependencies of .o files.
(DEP): New variable.
(HFILES, GENERATED_HFILES): New variables.
(CFILES, GENERATED_CFILES): New variables.
(underscore.c): Don't do anything, just depend upon stamp-under.
(stamp-under): New target; do what underscore.c used to do.
(nlmconv.o): Depend upon sym.h and ecoff.h.
(.dep, .dep1, dep.sed, dep, dep-in): New targets.
(stage1, stage2, stage3, against, comparison): Remove.
(de-stage1, de-stage2, de-stage3): Remove.
(clean, distclean): Remove stamp-under and dep.sed.
* dep-in.sed: New file.
* Makefile.in (OBJDUMP_OBJS): New variable.
($(OBJDUMP_PROG)): Use $(OBJDUMP_OBJS).
Test running objcopy and strip on a final executable.
* binutils-all/testprog.c: New file.
* config/default.exp (STRIP, STRIPFLAGS): Define.
(binutils_compile): New procedure.
* lib/utils-lib.exp (default_binutils_compile): New procedure.
Manfred Hollstein <manfred@lts.sel.alcatel.de>.
* Makefile.in ($(DEMANGLER_PROG)): Depend upon
$(DEMANGLER_PROG).1.
(install): Don't depend upon $(DEMANGLER_PROG).1. Only install
$(DEMANGLER_PROG).1 if $(DEMANGLER_PROG) is not empty.
(objdump_print_address): Use it. If we need the right section for
the symbol, and we can't find it, print an offset from the section
rather than using a symbol from some other section.
PR 8251.
* nm.c (print_symname): Don't try to demangle an empty name.
* objdump.c (slurp_symtab): Reset symcount if there are no symbols.
(slurp_dynamic_symtab): Likewise, for dynsymcount.
(disassemble_data): Fix memory leak: free sorted_syms when done.
(display_bfd): Likewise, for syms and dynsyms.
(dump_relocs): Don't print header before possibly generating an error message.
(dump_dynamic_relocs): Likewise.
* ar.1, nm.1, objdump.1, size.1, strings.1, strip.1: Fix typos and formatting
bugs.
symbols after other symbols with the same value. Likewise for
symbols which look like file names.
(objdump_print_address): Always chose the first reasonable symbol
with a given value.
PR 8148.
* binutils-all/bintest.s: Make text_symbol and data_symbol global.
Add new static symbols static_text_symbol and static_data_symbol.
* binutils-all/nm.exp: Adjust accordingly.
* config/default.exp (AR): Set if not set.
(binutils_remove): New procedure.
* lib/utils-lib.exp (default_binutils_run): Call
prune_system_crud on program output. Use verbose -log instead of
both verbose and send_log.
(default_binutils_remove): New procedure.
fragment, generate config.h.
* mpw-make.sed: New file, sed commands to edit Unix makefile
into MPW syntax.
* mpw-make.in: Remove.
* mac-binutils.r: New file, Mac resources.
* configure: Rebuild.
* config.in: Rebuild.
* dlltool.c: Include "libiberty.h" and "bucomm.h". Don't include
<stdio.h>, <stdlib.h>, or <string.h>. Don't include <wait.h>.
Include <sys/types.h>. Use HAVE_SYS_WAIT_H to control whether to
include <sys/wait.h> or define the wait macros by hand. Don't
declare xmalloc.
(gen_lib_file): Don't assume that sprintf returns the number of
characters; use strlen instead.
(stop_address): New variable.
(usage): Mention --start-address and --stop-address.
(OPTION_START_ADDRESS, OPTION_STOP_ADDRESS): Define.
(long_options): Add "start-address" and "stop-address".
(disassemble_data): Handle start_address and stop_address.
(dump_data, dump_reloc_set): Likewise.
(main): Don't set seenflag for -l. Handle OPTION_START_ADDRESS
and OPTION_STOP_ADDRESS.
* objcopy.c (parse_vma): Move to bucomm.c.
* bucomm.c (parse_vma): New function, moved in from objcopy.c.
* bucomm.h (parse_vma): Declare.
* binutils.texi, objdump.1: Document new objdump options.
PR 7983.
* configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
Check for config.h:config.in when creating stamp-h.
* configure: Rebuild.
* Makefile.in (stamp-h): Depend upon config.in rather than
config.h.in. Set CONFIG_HEADERS to config.h:config.in when
calling config.status.
BFD_HOST_64BIT_LONG.
(print_radix): New static variable.
(set_print_radix): Set print_radix. Adjust changes to
value_format.
(print_value): New static function, to print 64 bit octal and
decimal values correctly.
(print_symbol_info_bsd): Check BFD64, not BFD_HOST_64_BIT. Use
print_value.
(print_symbol_info_sysv): Use print_value.
(print_symbol_info_posix): Likewise.
* aclocal.m4: New file.
* configure: New file, built by autoconf.
* acconfig.h: New file.
* config.h.in: New file, built by autoheader.
* Makefile.in: Various changes for new configure script. Also:
(PROGS): Remove $(SYSINFO_PROG).
(ALL_CFLAGS): Remove $(TDEFINES).
(version.o): Use $(ALL_CFLAGS).
(cplus-dem.o, dlltool.o, nlmconv.o): Likewise.
(sysdump.o): Depend upon bucomm.h and config.h.
(srconv.o, arsup.o, strings.o): Depend upon config.h.
(filemode.o): Don't depend upon ../bfd/sysdep.h.
(bucomm.o): Depend upon config.h, not ../bfd/sysdep.h.
(size.o, objdump.o, nm.o, ar.o, objcopy.o): Likewise.
(nlmheader.o, nlmconv.o): Likewise.
(distclean): Don't remove sysdep.h.
* bucomm.h: Include "ansidecl.h", <stdio.h>, and "config.h".
Include "fopen-same.h" or "fopen-bin.h", based on
USE_BINARY_FOPEN. Include <errno.h>, and declare errno if it is
not a macro. Include <unistd.h>, <string.h>, <strings.h>,
<stdlib.h>, and <fcntl.h> if they are present. Declare strchr,
strrchr, and strstr if no string header file exists. Include
<sys/file.h> if it exists and <fcntl.h> does not. Define
O_RDONLY and O_RDWR if necessary.
* ar.c: Don't include "sysdep.h". Do include <sys/types.h> and
<sys/stat.h>. Use HAVE_GOOD_UTIME_H rather than POSIX_UTIME. Use
HAVE_UTIMES rather than !USE_UTIME. Don't include <errno.h>, and
don't declare errno.
* arsup.c: Don't include <sysdep.h>.
* bucomm.c: Don't include "sysdep.h". Include <stdio.h>,
<sys/types.h>, and <sys/stat.h>. Include <time.h> if it defines
time_t. Define time_t if necessary.
* coffdump.c: Don't include "sysdep.h".
* coffgrok.c, filemode.c, nlmconv.c, size.c: Likewise.
* srconv.c, strings.c: Likewise.
* nm.c: Don't include "sysdep.h". Don't try to define HAVE_SBRK.
* objcopy.c: Don't include "sysdep.h". Include <sys/types.h> and
<sys/stat.h>.
(simple_copy): Use creat rather than assuming that O_CREAT is
defined.
* objdump.c: Don't include "sysdep.h". Use
NEED_DECLARATION_PRINTF rather than !FPRINTF_ALREADY_DECLARED.
* sysdump.c: Include "bfd.h" and "bucomm.h". Don't include
"sysdep.h" or <stdlib.h>.
(dump_symbol_info): Rename from symbol_info. Change all callers.
@CC@, @CFLAGS@, @HDEFINES@ and @LDFLAGS@ in Makefile.
* Makefile.in (AR_FLAGS): Set to rc rather than qv.
(CC): Define as @CC@.
(CFLAGS): Set to @CFLAGS@.
(LDFLAGS): Define as @LDFLAGS@.
(ALL_CFLAGS): Use @HDEFINES@ rather than $(HDEFINES).
* dlltool.c (add_indirect): New.
(asm_prefix): New
(gen_exp_file): Timestamp should be 0. Insert prefix when
needed. New code for indirection.
(gen_lib_file): Timestamp should be 0. Insert prefix
when needed.
(usage): Document --add-indirect.
(main): Cope with new option.
* objdump.c (dump_private_headers): New.
(usage): Document new option.
(long_option): Add private-headers.
(dump_bfd_private_header): New.
(main): Cope with new option.
* dlltool.c (rva): Deleted.
(rvaafter, rva_before): Use new assembler pseudo.
(flush_page, gen_exp_file, gen_lib_file): Use new way of RVAing.
(gen_exp_file): Don't generate .edata if no need.
(gen_lib_file): Don't make timestamp.
(workout_prefix): Fix memory initialization bug.
(usage): Tidy up, delete many single char options.
(main): rva option is gone.
Modified to generate archives and objects rather than .s files.
* dlltool.c (run) New function.
(gen_exp_file, gen_lib_file): Use run.
(workout_prefix): New.
(usage): Document new options.
(main): Parse new options.
* sysdump.c (fillup): Return size - 1, the last byte is a checksum
and shouldn't be counted.
* sysroff.info (hd): Changed segment identifier from a byte to a 1
bit field. The sysroff 2.0-01 specification seems to be in error
here. Reduce width of following "spare" field from 4 to 3 bits.
(rl): Changed order and width of first 4 bitfields to correspond
to sysroff specification.
(dln_head, dln_inside, dln_tail): Removed.
(walk_tree_symbol): Use evallen and evalue instead of
vallen & value because of corresponding changes in
sysroff.info.
* sysdump.c (sysroff_swap_tr_in, sysroff_print_tr_out): New
functions.
* sysroff.info (tr): the tr block is a special case --- a block
without contents --- which can't be handled by generated code.
(den, dpp): only first byte is present for DENend, DPPend.
(dsy): describe a conditional portion of block, rename some fields.
(dps): describe a conditional portion of block.
(dfl): removed.
* sysinfo.y (yyerror): write error message to standard error.
(struct size_sym): Define.
(show_stats): New static variable.
(long_options): Add undocumented option "stats".
(main): Print memory stats if requested.
(sort_bfd, sort_dynamic, sort_x, sort_y): New static variables.
(numeric_forward): Use minisymbols rather than asymbols.
(non_numeric_forward): Likewise.
(size_forward1): Rename from size_forward. Use minisymbols.
(size_forward2): New static function.
(sort_symbols_by_size): Take new arguments dynamic, size, and
symsizep. Use minisymbols. Don't store the size back in the
symbol; store in a newly allocate struct size_sym array.
(display_rel_file): Read minisymbols rather than asymbols. Set
sort_* variables. Call print_size_symbols if sorting by size.
(filter_symbols): Take new arguments dynamic and size. Use
minisymbols.
(print_symbols): Likewise. Call print_symbol for actual printing.
(print_size_symbols): New static function.
(print_symbol): New static function.
PR 5332.
replacing a member, and 'a' when adding one.
* ar.c (truncate): New static variable.
(normalize): Change return type to const char *. Add abfd
argument. Change all callers. If truncate, chop the filename to
abfd->ar_max_namelen.
(main): For the 'f' modifier, set truncate to true. Don't change
quick_append to replace to truncate is true.
(do_quick_append): If truncate, set BFD_TRADITIONAL_FORMAT.
(write_archive): Likewise.
* binutils.texi, ar.1: Document 'f' modifier.
PR 6888.
Malloc buffers rather than allocate on stack (so it works
on NT).
* deflex.l: Names can have an @ in them.
* dlltool.c: Loads of stuff. Can now generate .imp files which
work with NT .dlls.
* deflex.l, defparse.y, dlltool.c: New files.
* Makefile.in, configure.in: Support for them.
Mon Jun 12 11:27:54 1995 Steve Chamberlain <sac@slash.cygnus.com>
* sysdump.c: Include sysdep.h
(main): Open input with FOPEN_RB. binutils/7137
PA assembly code.
* binutils-all/nm.exp: Enable these tests on the PA.
* binutils-all/objcopy.exp: Enable these tests on the PA. Expect
simple copy to fail.
* binutils-all/objdump.exp: Enable these tests on the PA. Handle
"CODE" as a section name.
* binutils-all/size.exp: Enable these tests on the PA.
* lib/utils-lib.exp (default_binutils_assemble): For "hppa*-*-*",
run the assembly through a sed script before passing it to the
assembler.
(copy_options): Likewise.
(copy_usage): Mention --keep-symbol and -K.
(strip_usage): Likewise.
(keep_symbols): New static variable.
(is_strip_symbol): Adjust the return value according to
keep_symbols.
(strip_main): Handle -K. For -N, check that -K was not given.
(copy_main): Likewise.
* binutils.texi, objcopy.1, strip.1: Document -K.
and flags. Change adjust from boolean to enum.
(remove_sections): Remove static variable.
(sections_removed): New static variable.
(copy_options): Add --set-section-flags.
(copy_usage): Mention --set-section-flags.
(parse_flags): New static function.
(find_section_list): New static function.
(is_strip_symbol): Change return type from int to boolean.
(is_strip_section): New static function.
(filter_symbols): Call is_strip_section.
(copy_object): When adding sections, check for specified flags or
VMA. Call filter_symbols if any sections are being removed.
(setup_section): Use find_section_list function rather than
looking through remove_sections and adjust_sections. Handle
--set-section-flags.
(copy_section): Use find_section_list rather than looking through
remove_sections.
(strip_main): Use find_section_list instead of adding items to
sections_removed.
(copy_main): Use find_section_list instead of adding items to
sections_removed and adjust_sections. Handle --set-section-flags.
* binutils.texi, objcopy.1: Document --set-section-flags.