2013-07-09 Tristan Gingold <gingold@adacore.com>
* vms-alpha.c (struct vms_private_data_struct): Remove flag_hash_long_names and flag_show_after_trunc. (hash_string): Remove. (_bfd_vms_length_hash_symbol): Remove. (alpha_vms_write_exec): Remove call to _bfd_vms_length_hash_symbol. (_bfd_vms_write_egsd): Likewise. Rewrite condition. (_bfd_vms_write_ehdr): Remove code that set removed flags. (_bfd_vms_write_etir): Remove call to _bfd_vms_length_hash_symbol. (vms_bfd_is_local_label_name): Remove trace call.
This commit is contained in:
parent
bc771b3b8d
commit
534523715a
2 changed files with 26 additions and 141 deletions
|
@ -1,3 +1,15 @@
|
|||
2013-07-09 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* vms-alpha.c (struct vms_private_data_struct): Remove
|
||||
flag_hash_long_names and flag_show_after_trunc.
|
||||
(hash_string): Remove.
|
||||
(_bfd_vms_length_hash_symbol): Remove.
|
||||
(alpha_vms_write_exec): Remove call to _bfd_vms_length_hash_symbol.
|
||||
(_bfd_vms_write_egsd): Likewise. Rewrite condition.
|
||||
(_bfd_vms_write_ehdr): Remove code that set removed flags.
|
||||
(_bfd_vms_write_etir): Remove call to _bfd_vms_length_hash_symbol.
|
||||
(vms_bfd_is_local_label_name): Remove trace call.
|
||||
|
||||
2013-07-09 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* hosts/alphavms.h: Include config.h and ansidecl.h, remove useless
|
||||
|
|
155
bfd/vms-alpha.c
155
bfd/vms-alpha.c
|
@ -330,10 +330,6 @@ struct vms_private_data_struct
|
|||
|
||||
/* linkage index counter used by conditional store commands */
|
||||
unsigned int vms_linkage_index;
|
||||
|
||||
/* see tc-alpha.c of gas for a description. */
|
||||
int flag_hash_long_names; /* -+, hash instead of truncate */
|
||||
int flag_show_after_trunc; /* -H, show hashing/truncation */
|
||||
};
|
||||
|
||||
#define PRIV2(abfd, name) \
|
||||
|
@ -2685,88 +2681,6 @@ _bfd_vms_write_eeom (bfd *abfd)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* This hash routine borrowed from GNU-EMACS, and strengthened
|
||||
slightly. ERY. */
|
||||
|
||||
static int
|
||||
hash_string (const char *ptr)
|
||||
{
|
||||
const unsigned char *p = (unsigned char *) ptr;
|
||||
const unsigned char *end = p + strlen (ptr);
|
||||
unsigned char c;
|
||||
int hash = 0;
|
||||
|
||||
while (p != end)
|
||||
{
|
||||
c = *p++;
|
||||
hash = ((hash << 3) + (hash << 15) + (hash >> 28) + c);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
/* Generate a length-hashed VMS symbol name (limited to maxlen chars). */
|
||||
|
||||
static char *
|
||||
_bfd_vms_length_hash_symbol (bfd *abfd, const char *in, int maxlen)
|
||||
{
|
||||
unsigned long result;
|
||||
int in_len;
|
||||
char *new_name;
|
||||
const char *old_name;
|
||||
int i;
|
||||
static char outbuf[EOBJ__C_SYMSIZ + 1];
|
||||
char *out = outbuf;
|
||||
|
||||
#if VMS_DEBUG
|
||||
vms_debug (4, "_bfd_vms_length_hash_symbol \"%s\"\n", in);
|
||||
#endif
|
||||
|
||||
if (maxlen > EOBJ__C_SYMSIZ)
|
||||
maxlen = EOBJ__C_SYMSIZ;
|
||||
|
||||
/* Save this for later. */
|
||||
new_name = out;
|
||||
|
||||
/* We may need to truncate the symbol, save the hash for later. */
|
||||
in_len = strlen (in);
|
||||
|
||||
result = (in_len > maxlen) ? hash_string (in) : 0;
|
||||
|
||||
old_name = in;
|
||||
|
||||
/* Do the length checking. */
|
||||
if (in_len <= maxlen)
|
||||
i = in_len;
|
||||
else
|
||||
{
|
||||
if (PRIV (flag_hash_long_names))
|
||||
i = maxlen - 9;
|
||||
else
|
||||
i = maxlen;
|
||||
}
|
||||
|
||||
strncpy (out, in, (size_t) i);
|
||||
in += i;
|
||||
out += i;
|
||||
|
||||
if ((in_len > maxlen)
|
||||
&& PRIV (flag_hash_long_names))
|
||||
sprintf (out, "_%08lx", result);
|
||||
else
|
||||
*out = 0;
|
||||
|
||||
#if VMS_DEBUG
|
||||
vms_debug (4, "--> [%d]\"%s\"\n", (int)strlen (outbuf), outbuf);
|
||||
#endif
|
||||
|
||||
if (in_len > maxlen
|
||||
&& PRIV (flag_hash_long_names)
|
||||
&& PRIV (flag_show_after_trunc))
|
||||
printf (_("Symbol %s replaced by %s\n"), old_name, new_name);
|
||||
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
static void
|
||||
vector_grow1 (struct vector_type *vec, size_t elsz)
|
||||
{
|
||||
|
@ -3240,7 +3154,6 @@ alpha_vms_write_exec (bfd *abfd)
|
|||
for (i = 0; i < PRIV (gsd_sym_count); i++)
|
||||
{
|
||||
struct vms_symbol_entry *sym = PRIV (syms)[i];
|
||||
char *hash;
|
||||
bfd_vma val;
|
||||
bfd_vma ep;
|
||||
|
||||
|
@ -3267,8 +3180,7 @@ alpha_vms_write_exec (bfd *abfd)
|
|||
_bfd_vms_output_quad (recwr, ep);
|
||||
_bfd_vms_output_quad (recwr, val);
|
||||
_bfd_vms_output_long (recwr, 0);
|
||||
hash = _bfd_vms_length_hash_symbol (abfd, sym->name, EOBJ__C_SYMSIZ);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
if ((i % 5) == 4)
|
||||
_bfd_vms_output_end (abfd, recwr);
|
||||
|
@ -3363,8 +3275,6 @@ _bfd_vms_write_egsd (bfd *abfd)
|
|||
else if ((*sname == 'l') && (strcmp (sname, "lcomm") == 0))
|
||||
sname = EVAX_LOCAL_NAME;
|
||||
}
|
||||
else
|
||||
sname = _bfd_vms_length_hash_symbol (abfd, sname, EOBJ__C_SECSIZ);
|
||||
|
||||
if (bfd_is_com_section (section))
|
||||
new_flags = (EGPS__V_OVR | EGPS__V_REL | EGPS__V_GBL | EGPS__V_RD
|
||||
|
@ -3404,18 +3314,13 @@ _bfd_vms_write_egsd (bfd *abfd)
|
|||
|
||||
for (symnum = 0; symnum < abfd->symcount; symnum++)
|
||||
{
|
||||
char *hash;
|
||||
|
||||
symbol = abfd->outsymbols[symnum];
|
||||
old_flags = symbol->flags;
|
||||
|
||||
/* Work-around a missing feature: consider __main as the main entry
|
||||
point. */
|
||||
if (*(symbol->name) == '_')
|
||||
{
|
||||
if (strcmp (symbol->name, "__main") == 0)
|
||||
bfd_set_start_address (abfd, (bfd_vma)symbol->value);
|
||||
}
|
||||
if (symbol->name[0] == '_' && strcmp (symbol->name, "__main") == 0)
|
||||
bfd_set_start_address (abfd, (bfd_vma)symbol->value);
|
||||
|
||||
/* Only put in the GSD the global and the undefined symbols. */
|
||||
if (old_flags & BSF_FILE)
|
||||
|
@ -3508,8 +3413,7 @@ _bfd_vms_write_egsd (bfd *abfd)
|
|||
_bfd_vms_output_long (recwr, ca_psindx);
|
||||
_bfd_vms_output_long (recwr, psindx);
|
||||
}
|
||||
hash = _bfd_vms_length_hash_symbol (abfd, symbol->name, EOBJ__C_SYMSIZ);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, symbol->name);
|
||||
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
}
|
||||
|
@ -3527,8 +3431,6 @@ _bfd_vms_write_ehdr (bfd *abfd)
|
|||
{
|
||||
asymbol *symbol;
|
||||
unsigned int symnum;
|
||||
int had_case = 0;
|
||||
int had_file = 0;
|
||||
struct vms_rec_wr *recwr = &PRIV (recwr);
|
||||
|
||||
vms_debug2 ((2, "vms_write_ehdr (%p)\n", abfd));
|
||||
|
@ -3548,22 +3450,9 @@ _bfd_vms_write_ehdr (bfd *abfd)
|
|||
|
||||
if (symbol->flags & BSF_FILE)
|
||||
{
|
||||
if (CONST_STRNEQ ((char *)symbol->name, "<CASE:"))
|
||||
{
|
||||
PRIV (flag_hash_long_names) = symbol->name[6] - '0';
|
||||
PRIV (flag_show_after_trunc) = symbol->name[7] - '0';
|
||||
|
||||
if (had_file)
|
||||
break;
|
||||
had_case = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
_bfd_vms_output_dump (recwr, (unsigned char *) symbol->name,
|
||||
(int) strlen (symbol->name));
|
||||
if (had_case)
|
||||
break;
|
||||
had_file = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3799,7 +3688,6 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
asection *sec = sym->section;
|
||||
bfd_boolean defer = defer_reloc_p (rptr);
|
||||
unsigned int slen;
|
||||
char *hash;
|
||||
|
||||
if (pass2_in_progress)
|
||||
{
|
||||
|
@ -3838,13 +3726,11 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
{
|
||||
bfd_vma addend = rptr->addend;
|
||||
slen = strlen ((char *) sym->name);
|
||||
hash = _bfd_vms_length_hash_symbol
|
||||
(abfd, sym->name, EOBJ__C_SYMSIZ);
|
||||
etir_output_check (abfd, section, curr_addr, slen);
|
||||
if (addend)
|
||||
{
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_LW);
|
||||
_bfd_vms_output_long (recwr, (unsigned long) addend);
|
||||
|
@ -3858,7 +3744,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
{
|
||||
_bfd_vms_output_begin_subrec
|
||||
(recwr, ETIR__C_STO_GBL_LW);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
}
|
||||
}
|
||||
|
@ -3893,13 +3779,11 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
{
|
||||
bfd_vma addend = rptr->addend;
|
||||
slen = strlen ((char *) sym->name);
|
||||
hash = _bfd_vms_length_hash_symbol
|
||||
(abfd, sym->name, EOBJ__C_SYMSIZ);
|
||||
etir_output_check (abfd, section, curr_addr, slen);
|
||||
if (addend)
|
||||
{
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_QW);
|
||||
_bfd_vms_output_quad (recwr, addend);
|
||||
|
@ -3912,7 +3796,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
else
|
||||
{
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_GBL);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
}
|
||||
}
|
||||
|
@ -3949,20 +3833,16 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
(recwr, (unsigned long) rptr->addend);
|
||||
if (rptr->addend > PRIV (vms_linkage_index))
|
||||
PRIV (vms_linkage_index) = rptr->addend;
|
||||
hash = _bfd_vms_length_hash_symbol
|
||||
(abfd, sym->name, EOBJ__C_SYMSIZ);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_byte (recwr, 0);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
break;
|
||||
|
||||
case ALPHA_R_CODEADDR:
|
||||
slen = strlen ((char *) sym->name);
|
||||
hash = _bfd_vms_length_hash_symbol
|
||||
(abfd, sym->name, EOBJ__C_SYMSIZ);
|
||||
etir_output_check (abfd, section, curr_addr, slen);
|
||||
_bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_CA);
|
||||
_bfd_vms_output_counted (recwr, hash);
|
||||
_bfd_vms_output_counted (recwr, sym->name);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
break;
|
||||
|
||||
|
@ -3980,9 +3860,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
_bfd_vms_output_long
|
||||
(recwr, (unsigned long) section->target_index);
|
||||
_bfd_vms_output_quad (recwr, rptr->addend);
|
||||
_bfd_vms_output_counted
|
||||
(recwr, _bfd_vms_length_hash_symbol
|
||||
(abfd, udata->origname, EOBJ__C_SYMSIZ));
|
||||
_bfd_vms_output_counted (recwr, udata->origname);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
break;
|
||||
|
||||
|
@ -4005,9 +3883,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
_bfd_vms_output_long
|
||||
(recwr, (unsigned long) udata->bsym->section->target_index);
|
||||
_bfd_vms_output_quad (recwr, rptr->addend);
|
||||
_bfd_vms_output_counted
|
||||
(recwr, _bfd_vms_length_hash_symbol
|
||||
(abfd, udata->origname, EOBJ__C_SYMSIZ));
|
||||
_bfd_vms_output_counted (recwr, udata->origname);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
break;
|
||||
|
||||
|
@ -4025,9 +3901,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
|
|||
_bfd_vms_output_long
|
||||
(recwr, (unsigned long) section->target_index);
|
||||
_bfd_vms_output_quad (recwr, rptr->addend);
|
||||
_bfd_vms_output_counted
|
||||
(recwr, _bfd_vms_length_hash_symbol
|
||||
(abfd, udata->origname, EOBJ__C_SYMSIZ));
|
||||
_bfd_vms_output_counted (recwr, udata->origname);
|
||||
_bfd_vms_output_end_subrec (recwr);
|
||||
break;
|
||||
|
||||
|
@ -9248,7 +9122,6 @@ static bfd_boolean
|
|||
vms_bfd_is_local_label_name (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
const char *name)
|
||||
{
|
||||
vms_debug2 ((1, "vms_bfd_is_local_label_name (%p, %s)\n", abfd, name));
|
||||
return name[0] == '$';
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue