diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-10-02 19:49:01 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-10-02 19:49:01 +0000 |
commit | bf53bd9faab2babf447b569a03f04663abece21c (patch) | |
tree | 9f2442843f6d4b91603aad85a57cd57ff45aab36 /bfd/evax-egsd.c | |
parent | 1259da3e77b03cb56b4d2a0144587b4f95cce5c9 (diff) | |
download | gdb-bf53bd9faab2babf447b569a03f04663abece21c.zip gdb-bf53bd9faab2babf447b569a03f04663abece21c.tar.gz gdb-bf53bd9faab2babf447b569a03f04663abece21c.tar.bz2 |
Wed Oct 2 15:46:45 1996 Klaus Kaempf <kkaempf@progis.de>
openVMS/Alpha: Provide filename and case_hack flags via
symbol table from gas.
Add case_hack code for symbol output from vax/vms.
* evax-alpha.c (evax_initialize): Remove filename handling,
filename is provided via symbol table.
(evax_get_symtab): Use local symbol count when setting up table.
* evax-egsd.c (_bfd_evax_slurp_egsd): Print correct name when
debugging.
(_bfd_evax_write_egsd): Skip file name symbol.
* evax-emh.c (get_vms_time_string): Local function now.
(_bfd_evax_write_emh): Extract source filename and case_hack flags
from symbol table.
* evax_write_etir (_bfd_evax_write_etir): Pass all symbol names
through _bfd_evax_case_hack_symbol.
* evax-misc.c (hash_string, _bfd_evax_case_hack_symbol): New
functions.
(_bfd_evax_basename): Removed.
(_bfd_get_vms_time_string): Moved to evax-emh.c.
* evax.h (evax_private_data_struct): Remove filename.
(flag_hash_long_names, flag_show_after_trunc,
flag_no_hash_mixed_case, vms_name_mapping): New flags for
vms_case_hack.
Diffstat (limited to 'bfd/evax-egsd.c')
-rw-r--r-- | bfd/evax-egsd.c | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/bfd/evax-egsd.c b/bfd/evax-egsd.c index f5275a9..f766ecb 100644 --- a/bfd/evax-egsd.c +++ b/bfd/evax-egsd.c @@ -318,11 +318,12 @@ _bfd_evax_slurp_egsd (abfd) } else /* symbol reference */ { -#if EVAX_DEBUG - evax_debug(3, "egsd sym ref #%d (%s, %04x=%s)\n", abfd->symcount, evax_rec+9, old_flags, flag2str(gsyflagdesc, old_flags)); -#endif symbol->name = _bfd_evax_save_counted_string ((char *)evax_rec+8); +#if EVAX_DEBUG + evax_debug(3, "egsd sym ref #%d (%s, %04x=%s)\n", abfd->symcount, + symbol->name, old_flags, flag2str(gsyflagdesc, old_flags)); +#endif symbol->section = bfd_make_section (abfd, BFD_UND_SECTION_NAME); } @@ -496,6 +497,9 @@ _bfd_evax_write_egsd (abfd) } old_flags = symbol->flags; + if (old_flags & BSF_FILE) + continue; + if (((old_flags & BSF_GLOBAL) == 0) /* not xdef */ && (!bfd_is_und_section (symbol->section))) /* and not xref */ continue; /* dont output */ @@ -551,24 +555,7 @@ _bfd_evax_write_egsd (abfd) _bfd_evax_output_long (abfd, symbol->section->index);/* L_PSINDX, FIXME */ } } - if (strlen ((char *)symbol->name) > 198) - { - (*_bfd_error_handler) ("Name '%s' too long\n", symbol->name); - abort (); - } - nptr = (char *)symbol->name; - uptr = uname; - while (*nptr) - { - if (islower (*nptr)) - *uptr = toupper (*nptr); - else - *uptr = *nptr; - uptr++; - nptr++; - } - *uptr = 0; - _bfd_evax_output_counted (abfd, uname); + _bfd_evax_output_counted (abfd, _bfd_evax_case_hack_symbol (abfd, symbol->name)); _bfd_evax_output_flush (abfd); |