Better indirect and warning symbol handling inspired by Stuart
Quick <[email protected]>.
* linker.c (enum link_action): Add REF, MIND, CWARN, REFC.
(link_action): Change UNDEF_ROW/def and UNDEFW_ROW/def from NOACT
to REF. Change UNDEF_ROW/indr and UNDEFW_ROW/indr from CYCLE to
REFC. Change DEF_ROW/indr and COMMON_ROW/indr from CYCLE to MDEF.
Change DEFW_ROW/indr from CYCLE to NOACT. Change INDR_ROW/indr
from MDEF to MIND. Change INDR_ROW/warn from WARNC to CYCLE.
Change WARN_ROW/def and WARN_ROW/indr from MWARN to CWARN. Change
WARN_ROW/com from MWARN to WARN. Change WARN_ROW/warn from NOACT
to CYCLE. Change SET_ROW/warn from WARNC to CYCLE>
(_bfd_generic_link_add_one_symbol): Handle REF, MIND, CWARN and
REFC. If a new indirect symbol has been referenced, push the
reference down to the symbol it points to. FIx handling of WARN.
* aoutx.h (translate_from_native_sym_flags): If N_WARNING, don't
clobber e_type of next symbol.
(translate_to_native_sym_flags): Likewise.
(aout_link_write_symbols): Loop on bfd_link_hash_warning as well
as bfd_link_hash_indirect.
* libecoff.h (ecoff_data_type): Add linker field.
* ecoff.c (ecoff_write_object_contents): Check new tdata linker
field, rather than outsymbols being non-NULL, to decide whether to
output the symbols and relocs.
(ecoff_bfd_final_link): Set new tdata linker field to true.
* config/tc-mips.c (RDATA_SECTION_NAME): Define.
(macro): Correct M_LI_SS SVR4_PIC/EMBEDDED_PIC case. After M_LI_D
or M_L_DOB or label dob, force a new frag to avoid getting
confused in tc_gen_reloc.
(mips_ip): Use RDATA_SECTION_NAME, not .rdata.
(s_change_sec): Likewise.
Changes to support ELF strip and objcopy on dynamically linked
files.
* elfcode.h (elf_fake_sections): Add prototype.
(bfd_section_from_shdr): Make a BFD section from an SHT_HASH
section, and from an SHT_DYNSYM section, and from the dynamic
string table section.
(elf_object_p): Set D_PAGED if there is a program header.
(elf_make_sections): Remove.
(fix_up_strtabs): Remove.
(elf_fake_sections): Rewrite. Now sets sh_entsize.
(assign_section_numbers): Rewrite. Now sets sh_link and sh_info
for all sections.
(elf_compute_section_file_positions): Don't call obsolete
functions elf_make_sections or fix_up_strtabs.
(swap_out_syms): Set sh_addralign to FILE_ALIGN rather than 4.
(NAME(bfd_elf,write_object_contents)): Permit writing DYNAMIC
objects.
(elf_section_from_bfd_section): Treat SHT_DYNSYM like other normal
sections. If an SHT_REL or SHT_RELA section is allocated or uses
an unusual symbol table, permit a BFD section to map to it.
Permit most SHT_STRTAB sections to have a BFD section mapped to
them.
(elf_bfd_final_link): Don't set sh_link, sh_info or sh_entsize
fields of dynamic sections here; do it in assign_section_numbers.
* elf32-target.h, elf64-target.h: Add D_PAGED to permitted object
flags.
Per Bothner [Sun, 5 Jun 1994 01:43:40 +0000 (01:43 +0000)]
Fix value_print, which used to be ostensibly langauge-indepentdent,
but would print pointers and arrays in C syntax. Instead, call
a language-specific function. See ChangeLog for details.
* read.c (emit_expr): Use memset to zero out memory, rather than
going through md_number_to_chars. This permits handling symbolic
arguments when the size is larger than sizeof (valueT), if
TC_CONS_FIX_NEW is prepared to handle the case (as it is on MIPS).
Per Bothner [Sat, 4 Jun 1994 00:48:21 +0000 (00:48 +0000)]
* config.guess (i386-unknown-bsdi): New system to guess.
* config.guess (i386-unknown-bsdi): No longer need to
check #if defined(__bsdi__) && defined(__i386__).
David MacKenzie [Fri, 3 Jun 1994 20:59:20 +0000 (20:59 +0000)]
* as.h: Replace flagseen with separate variables.
* as.c (parse_args): Set them. Don't accept -1 option, or -v
explicitly (it's a synonym for --version).
* as.c, input-scrub.c, messages.c, read.c, symbols.c, write.c,
config/obj-aout.c, config/obj-aout.h, config/obj-bout.c,
config/obj-bout.h, config/obj-coff.c, config/obj-coff.h,
config/obj-vms.c, config/tc-hppa.c, config/tc-i386.c,
config/tc-i960.c, config/tc-m68k.c, config/tc-mips.c,
config/tc-vax.c: Use the new flag variables instead of flagseen.
* config/tc-vax.c [OBJ_VMS]: Recognize -+, -1, -v, and document in
usage.
Jim Kingdon [Fri, 3 Jun 1994 17:25:08 +0000 (17:25 +0000)]
* main.c: Move entire file except for #ifndef MAIN_OVERRIDE code
to new file top.c. Make things extern instead of static and
similar rearrangements to deal with this.
* top.h: New file.
* utils.c: Move fputs_unfiltered to main.c. Remove
FPUTS_UNFILTERED_OVERRIDE ifndef.
* Makefile.in: Change so that gdb uses main.c, utils.c, and top.c,
and libgdb uses utils.c and top.c.
Per Bothner [Fri, 3 Jun 1994 01:19:21 +0000 (01:19 +0000)]
* ch-valprint.c (chill_val_print_array_elements): New function.
A Chill version of val_print_array_elements, it prints the
array index labels, in additions ot the array element values.
(chill_val_print): Use the new function.
Add linker support for SunOS shared libraries.
* sunos.c: Include bfdlink.h. Add many new functions and
definitions for SunOS shared library support.
* bfd-in.h (bfd_sunos_record_link_assignment): Declare.
(bfd_sunos_size_dynamic_sections): Declare.
* bfd-in2.h: Rebuilt.
* aoutx.h (struct aout_link_hash_entry): Move to libaout.h.
(struct aout_link_hash_table): Likewise.
(aout_link_hash_lookup, aout_link_hash_traverse): Likewise.
(aout_hash_table): Likewise.
(NAME(aout,link_hash_newfunc)): Rename from aout_link_hash_newfunc
and make externally visible.
(NAME(aout,link_hash_table_init)): New function.
(NAME(aout,link_hash_table_create)): Call
NAME(aout,link_hash_table_init), not _bfd_link_hash_table_init.
(aout_link_add_symbols): Don't fail if no symbols. If it exists,
call add_dynamic_symbols backend entry point for dynamic objects.
Use add_one_symbol backend entry point if it exists.
(NAME(aout,final_link)): Call finish_dynamic_link backend entry
point, if it exists.
(aout_link_input_bfd): For a dynamic object, call
link_dynamic_object backend entry point, if it exists.
(aout_link_write_other_symbol): Call write_dynamic_symbol backend
entry point, if it exists.
(aout_link_input_section): Don't read the relocs if they have
already been read.
(aout_link_input_section_std): When doing a final link, for a
reloc against an external symbol, call check_dynamic_reloc backend
entry point, if it exists.
(aout_link_input_section_ext): Likewise.
* libaout.h: Protect against multiple inclusion. Include
bfdlink.h.
(struct aout_link_hash_entry): Move in from aoutx.h.
(struct aout_link_hash_table): Likewise.
(aout_link_hash_lookup, aout_link_hash_traverse): Likewise.
(aout_hash_table): Likewise.
(struct aout_backend_data): Add fields add_dynamic_symbols,
add_one_symbol, link_dynamic_object, write_dynamic_symbol,
check_dynamic_reloc, and finish_dynamic_link.
(struct aout_section_data_struct): Define new structure.
(aout_section_data): Define new accessor macro.
(NAME(aout,link_hash_newfunc)): Declare.
(NAME(aout,link_hash_table_init)): Declare.
* aoutf1.h (sunos4_aout_backend): Initialize new aout_backend_data
fields.
* aout-target.h (MY(backend_data)): Likewise.
* i386aout.c (MY(backend_data)): Likewise.
* i386mach3.c (MY(backend_data)): Likewise.
* mipsbsd.c (MY(backend_data)): Likewise.
* sparclynx.c (sparclynx_aout_backend): Likewise.
Add support for SunOS shared libraries.
* aout.sc: Don't define __DYNAMIC here. Add new sections used by
shared library support code.
* emultempl/sunos.em: New file.
* emulparams/sun4.sh (TEMPLATE_NAME): Define as sunos.
* Makefile.in (esun4.c): Depend upon sunos.em, not generic.em.
* ldfile.h (search_dirs_type): Move from ldfile.c, and add cmdline
field.
(search_head): Declare.
(ldfile_add_library_path): Add new cmdline argument in prototype.
* ldfile.c (search_head): Make non-static.
(search_dirs_type): Move to ldfile.h.
(ldfile_add_library_path): Accept cmdline argument, and save it.
* lexsup.c (parse_args): Pass true for new cmdline argument of
ldfile_add_library_path.
(set_default_dirlist): Likewise.
* ldmain.c (check_for_scripts_dir): Pass false for new cmdline
argument of ldfile_add_library_path.
* ldgram.y (ifile_p1): Likewise.
David MacKenzie [Thu, 2 Jun 1994 21:00:19 +0000 (21:00 +0000)]
* as.c (show_usage): New function.
(parse_args): Code moved from main.
Recognize --help and --version.
* config/tc-ns32k.h: Define TC_NS32K.
* doc/as.texinfo: Document all of the target-independent command
line options.
Stu Grossman [Thu, 2 Jun 1994 16:58:48 +0000 (16:58 +0000)]
* configure.in: Add nlm subdir to configdirs for alpha-*-netware
target.
* defs.h (enum language): Add language_asm.
* findvar.c (read_register_bytes read_register_gen
write_register_bytes read_register read_register_pid
write_register write_register_pid supply_register): Move multi-
thread handling down into these routines. Create XXX_pid routines
that allow register references to specify the pid.
* findvar.c infcmd.c (read_pc read_pc_pid write_pc write_pc_pid
read_sp write_sp read_fp write_fp): Move these routines from
infcmd to findvar to centralize the whole mess.
* i386-nlmstub.c: Portability fixes.
* infptrace.c (child_resume): Conditionalize to allow other natives
to override it. Remove PIDGET gubbish, it's no longer necessary.
* infrun.c (wait_for_inferior): Put registers_changed() before
target_wait() to speed up remote debugging.
* Replace code that reads registers from other threads with much
nicer looking new function calls (see changes to findvar.c).
* Don't skip prologues if debugging assembly source.
* lynx-nat.c (child_resume): Lynx now needs it's own version of
child_resume to handle multi-thread debugging properly.
* remote.c: Add O response to get console output from target.
* (readchar): Add timeout parameter. Handle SERIAL_EOF and
SERIAL_ERROR here to simplify callers.
* Change static var timeout to remote_timeout.
* (fromhex): Remove unnecessary return -1 at end of routine.
* (remote_wait): Turn this into a big switch statement. Add
support for O response.
* (putpkt): Remove unnecessary handling of SERIAL_EOF/ERROR.
* (getpkt): Split getpkt into two parts. read_frame deals with
all formatting issues, run-length encoding, and framing. getpkt
now handles error recovery, and frame detection.
* ser-tcp.c (tcp_readchar): Handle EINTR from read().
* ser-unix.c (hardwire_raw): Set CLOCAL so that we ignore modem
control. (hardwire_readchar): Handle EINTR from read().
* symfile.c (deduce_language_from_filename): Add support for .s
files.
* config/nm-lynx.h: Define CHILD_WAIT so that lynx-nat.c can
override infptrace's child_wait.
* config/rs6000/rs6000lynx.mh: Use xm-rs6000ly.h & nm-rs6000ly.h
instead of XXXlynx.h.
* config/rs6000/rs6000lynx.mt: Use tm-rs6000ly.h instead of
tm-rs6000lynx.h.
* nlm/gdbserve.c: Portability fixes.
Ken Raeburn [Thu, 2 Jun 1994 16:06:43 +0000 (16:06 +0000)]
Handle EV5 (21164/66/68) PALcode support.
* config/tc-alpha.c (machine): New variable.
(load_insn): New macro.
(load_insn_table): New function.
(md_begin): Call load_insn_table, once for basic instructions and
once for appropriate PAL instruction table.
(md_parse_option): Set `machine' based on -m##### arguments.
* config/alpha-opcode.h (alpha_pal21064_opcodes): Split out from alpha_opcodes.
(alpha_pal21164_opcodes): New table.
(NUM21064OPCODES, NUM21164OPCODES): New macros.
* configure: If config.guess result is a prefix of the user
specified target, assume a native build and use the user specified
target as the host alias. Remove SunOS patch suffix removal hack.
* configure.in: Remove SunOS patch suffix removal hack.
Bill Cox [Wed, 1 Jun 1994 21:38:29 +0000 (21:38 +0000)]
* Makefile.in: Rename HOST_ONLY to NATIVE.
* configure: Delete SunOs patch suffix from host_canonical
and build_canonical variables that are prepended to Makefiles.
* configure.in: Add comments to patch suffix removal for easier
maintenance.
Jim Kingdon [Wed, 1 Jun 1994 19:28:24 +0000 (19:28 +0000)]
* inftarg.c (child_wait): Call proc_wait, not wait.
(child_mourn_inferior): Call proc_remove_foreign.
* main.c (gdb_init): Call init_proc.
* main.c: Provide dummy versions of init_proc, proc_wait, and
proc_remove_foreign for the gdb case (the libgdb case provides its
own versions of these functions).
* Makefile.in (libgdb-files): Add libproc.a.
* ldlang.h (lang_input_statement_type): Remove fields subfiles,
total_size, superfile and chain.
* ldfile.c (open_a): Don't clear search_dirs_flag.
(ldfile_open_file): Don't try to open superfile. Assert that file
has not already been opened.
* ldlang.c (new_afile): Don't initialize superfile.
* ldmain.c (add_archive_element): Don't initialize subfiles or
chain or superfile. Initialize search_dirs_flag to false.
Hardware watchpoints for Linux, from Rick Sladkey
([email protected]).
* infrun.c (wait_for_inferior) [HAVE_CONTINUABLE_WATCHPOINT]: Add
new hardware breakpoint recovery method.
* i386v-nat.c (i386_insert_watchpoint,
i386_insert_nonaligned_watchpoint, i386_remove_watchpoint,
i386_stopped_by_watchpoint) [TARGET_CAN_USE_HARWARE_WATCHPOINT]:
New functions to support the 386 hardware debugging registers.
* config/i386/nm-linux.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT,
HAVE_CONTINUABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT,
target_insert_watchpoint, target_remove_watchpoint): Define these
macros to use the hardware debugging functions in i386v-nat.c.
Bill Cox [Thu, 26 May 1994 15:59:22 +0000 (15:59 +0000)]
* config.sub: Move deletion of patch suffix from here...
* configure.in: To here, at Ian's suggestion. The top-
level scripts might need to know of a patch level.
Thomas Lord [Wed, 25 May 1994 15:39:12 +0000 (15:39 +0000)]
Make all the libgdb objects even when building gdb. This is because
cyscm links against ../../gdb/{...}.o
Added a new target: libgdb-files. It creates a file of that name
containing a list of files for libgdb. If the variable LIBGDBPREFIX
is set, each file name has that prepended.
Ian Lance Taylor [Tue, 24 May 1994 20:44:50 +0000 (20:44 +0000)]
Make MIPS ELF use new ELF backend linker. No shared library
support yet.
* elf32-mips.c (bfd_mips_elf32_swap_gptab_in): New function.
(bfd_mips_elf32_swap_gptab_out): New function.
(mips_elf_object_p): If last symbol is LOCAL, set elf_bad_symtab.
(mips_elf_final_write_processing): Set sh_info field for .gptab.*
sections.
(mips_elf_fake_sections): Set sh_entsize for .gptab.* sections.
(mips_elf_read_ecoff_info): Read and free external symbols last,
not first, for clarity.
(struct mips_elf_link_hash_entry): Define new structure.
(struct mips_elf_link_hash_table): Define new structure.
(mips_elf_link_hash_lookup): Define new macro.
(mips_elf_link_hash_traverse): Define new macro.
(mips_elf_hash_table): Define new macro.
(mips_elf_link_hash_newfunc): New static function.
(mips_elf_link_hash_table_create): New static function.
(mips_elf_add_symbol_hook): New static function.
(struct extsym_info): Define new structure.
(mips_elf_get_extr, mips_elf_set_index): Remove.
(mips_elf_output_extsym): New static function.
(gptab_compare): New static function.
(mips_elf_final_link): Rewrite to use ELF backend linker, and to
merge gptab information in input files.
(mips_elf_relocate_hi16): New static function.
(mips_elf_relocate_section): New static function.
(bfd_elf32_bfd_link_hash_table_create): Define as macro before
including elf32-target.h.
(elf_backend_relocate_section): Likewise.
(elf_backend_add_symbol_hook): Likewise.
* elf.c (_bfd_elf_link_hash_newfunc): Rename from
elf_link_hash_newfunc and make globally visible. Change caller.
(_bfd_elf_link_hash_table_init): New function, broken out of
_bfd_elf_link_hash_table_create.
(_bfd_elf_link_hash_table_create): Use
_bfd_elf_link_hash_table_init.
* libelf.h (struct elf_obj_tdata): Add new field bad_symtab.
(elf_bad_symtab): Define new accessor macro.
(_bfd_elf_link_hash_newfunc): Declare.
(_bew_elf_link_hash_table_init): Declare.
* elfcode.h (elf_object_p): Call backend object_p hook after
swapping in all the section headers.
(map_program_segments): Correct typo: Internal for External.
(elf_link_add_object_symbols): If elf_bad_symtab is set, read all
the symbols. Skip STB_LOCAL symbols rather than giving an error.
(elf_bfd_final_link): If elf_bad_symtab is set, allocate space for
all symbols, not just locals.
(elf_link_output_extsym): Only skip a symbol not mentioned by a
regular file if it is mentioned by a dynamic object.
(elf_link_input_bfd): If elf_bad_symtab is set, read all the
symbols.
Ian Lance Taylor [Tue, 24 May 1994 20:21:27 +0000 (20:21 +0000)]
* emulparams/elf32mipb.sh (OTHER_READONLY_SECTIONS): Don't give
.reginfo an address.
(OTHER_READWRITE_SECTIONS): Don't give .lit4 or .lit8 an address.
(OTHER_SECTIONS): Define for .gptab.sdata and .gptab.sbss.
* scripttempl/elf.sc: Use OTHER_SECTIONS at end of script.