aboutsummaryrefslogtreecommitdiff
path: root/bfd/evax-etir.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1997-02-14 02:13:19 +0000
committerIan Lance Taylor <ian@airs.com>1997-02-14 02:13:19 +0000
commit8696b2db7095e8387ef7ca145cd8541a6e9ee547 (patch)
tree92372b7be56ee759ec72473801c57c7482fbdf94 /bfd/evax-etir.c
parent236969ac80acb286a7fff50a58e3c89d5b755c84 (diff)
downloadgdb-8696b2db7095e8387ef7ca145cd8541a6e9ee547.zip
gdb-8696b2db7095e8387ef7ca145cd8541a6e9ee547.tar.gz
gdb-8696b2db7095e8387ef7ca145cd8541a6e9ee547.tar.bz2
Thu Feb 13 20:53:22 1997 Klaus Kaempf (kkaempf@progis.de)
* reloc.c (BFD_RELOC_ALPHA_CODEADDR): New relocation for openVMS/Alpha. * evax.h (ALPHA_R_CODEADDR): New relocation. * evax-alpha.c (ALPHA_R_CODEADDR): 64 bit procedure relocation for openVMS/Alpha. * evax-etir.c (ALPHA_R_CODEADDR): Output object code for this relocation. * bfd-in2.h, libbfd.h: Rebuild. Restrict symbol length to 64 bytes, case preserving: * evax-emh.c (_bfd_evax_write_emh): Remove case hacking. * evax-misc.c (_bfd_evax_case_hack_symbol): Remove. (_bfd_evax_length_hash_symbol): Added. * evax-etir.c (_bfd_evax_write_etir): Call _bfd_evax_length_hash_symbol before output of symbol. * evax-egsd.c (_bfd_evax_write_egsd): Likewise. * evax.h (flag_hash_long_names, flag_show_after_trunc): Remove. * evax-emh.c: Output filename to object file without path. * evax-egsd.c: New sections for local and global commons. * evax-alpha.c, evax-emh.c, evax-egsd.c, evax-etir.c, evax-misc.c, evax.h: Remove 8 bit characters from copyright notices. Replace AXP with Alpha.
Diffstat (limited to 'bfd/evax-etir.c')
-rw-r--r--bfd/evax-etir.c52
1 files changed, 27 insertions, 25 deletions
diff --git a/bfd/evax-etir.c b/bfd/evax-etir.c
index 067af82..2e64c28 100644
--- a/bfd/evax-etir.c
+++ b/bfd/evax-etir.c
@@ -1,11 +1,11 @@
-/* evax-etir.c -- BFD back-end for ALPHA EVAX (openVMS/AXP) files.
- Copyright 1996 Free Software Foundation, Inc.
+/* evax-etir.c -- BFD back-end for ALPHA EVAX (openVMS/Alpha) files.
+ Copyright 1996, 1997 Free Software Foundation, Inc.
ETIR record handling functions
go and read the openVMS linker manual (esp. appendix B)
if you don't know what's going on here :-)
- Written by Klaus Kämpf (kkaempf@progis.de)
+ Written by Klaus K"ampf (kkaempf@progis.de)
of proGIS Softwareentwicklung, Aachen, Germany
This program is free software; you can redistribute it and/or modify
@@ -1246,7 +1246,7 @@ _bfd_evax_write_etir (abfd)
ETIR_S_C_STO_GBL_LW,
-1);
_bfd_evax_output_counted (abfd,
- _bfd_evax_case_hack_symbol (abfd, sym->name));
+ _bfd_evax_length_hash_symbol (abfd, sym->name));
_bfd_evax_output_flush (abfd);
}
else if (bfd_is_abs_section (sym->section))
@@ -1312,7 +1312,7 @@ _bfd_evax_write_etir (abfd)
ETIR_S_C_STO_GBL,
-1);
_bfd_evax_output_counted (abfd,
- _bfd_evax_case_hack_symbol (abfd, sym->name));
+ _bfd_evax_length_hash_symbol (abfd, sym->name));
_bfd_evax_output_flush (abfd);
}
else if (bfd_is_abs_section (sym->section))
@@ -1374,29 +1374,11 @@ _bfd_evax_write_etir (abfd)
evax_output_long(abfd, (unsigned long)(sec->index));
evax_output_quad(abfd, (uquad)addr);
- evax_output_counted(abfd, _bfd_evax_case_hack_symbol (abfd, sym->name));
+ evax_output_counted(abfd, _bfd_evax_length_hash_symbol (abfd, sym->name));
evax_output_flush(abfd);
#endif
}
break;
-#if 0
- case ALPHA_R_BRADDR:
- break;
- case ALPHA_R_SREL16:
- break;
- case ALPHA_R_SREL32:
- break;
- case ALPHA_R_SREL64:
- break;
- case ALPHA_R_OP_PUSH:
- break;
- case ALPHA_R_OP_STORE:
- break;
- case ALPHA_R_OP_PSUB:
- break;
- case ALPHA_R_OP_PRSHIFT:
- break;
-#endif
case ALPHA_R_LINKAGE:
{
if (_bfd_evax_output_check (abfd, 64) < 0)
@@ -1412,12 +1394,32 @@ _bfd_evax_write_etir (abfd)
(unsigned long)PRIV(evax_linkage_index));
PRIV(evax_linkage_index) += 2;
_bfd_evax_output_counted (abfd,
- _bfd_evax_case_hack_symbol (abfd, sym->name));
+ _bfd_evax_length_hash_symbol (abfd, sym->name));
_bfd_evax_output_byte (abfd, 0);
_bfd_evax_output_flush (abfd);
}
break;
+ case ALPHA_R_CODEADDR:
+ {
+ if (_bfd_evax_output_check (abfd,
+ strlen((char *)sym->name))
+ < 0)
+ {
+ end_etir_record (abfd);
+ start_etir_record (abfd,
+ section->index,
+ vaddr, false);
+ }
+ _bfd_evax_output_begin (abfd,
+ ETIR_S_C_STO_CA,
+ -1);
+ _bfd_evax_output_counted (abfd,
+ _bfd_evax_length_hash_symbol (abfd, sym->name));
+ _bfd_evax_output_flush (abfd);
+ }
+ break;
+
default:
(*_bfd_error_handler) ("Unhandled relocation %s",
(*rptr)->howto->name);