Work around for problems in linking C++ programs that need file-level

initialization.  Now C++ programs can be linked.
This commit is contained in:
Michael Tiemann 1992-02-02 21:12:25 +00:00
parent 05cd8d982d
commit 58216160ef
2 changed files with 21 additions and 18 deletions

View File

@ -360,7 +360,10 @@ LANG_FOR_EACH_INPUT_STATEMENT(entry)
for (i = 0; i < entry->symbol_count; i++)
{
asymbol *p = entry->asymbols[i];
/* FIXME, temporary hack, since not all of ld knows about the new abs section convention */
if (p->section == 0)
p->section = &bfd_abs_section;
if (flag_is_global(p->flags) )
{
/* We are only interested in outputting

View File

@ -28,7 +28,7 @@ DEFUN(build_it,(statement),
{
switch (statement->header.type) {
case lang_fill_statement_enum:
{
{
#if 0
bfd_byte play_area[SHORT_SIZE];
unsigned int i;
@ -57,13 +57,13 @@ DEFUN(build_it,(statement),
}
#endif
abort();
}
break;
case lang_data_statement_enum:
{
abort();
#if 0
{
bfd_vma value = statement->data_statement.value;
bfd_byte play_area[LONG_SIZE];
unsigned int size = 0;
@ -89,29 +89,29 @@ abort();
size);
#endif
}
#endif
break;
case lang_input_section_enum:
{
/* Create a new seclet in the output section with this
attached */
{
/* Create a new seclet in the output section with this
attached */
asection *i = statement->input_section.section;
asection *i = statement->input_section.section;
asection *output_section = i->output_section;
asection *output_section = i->output_section;
bfd_seclet_type *seclet = bfd_new_seclet(output_section->owner,output_section);
bfd_seclet_type *seclet = bfd_new_seclet(output_section->owner,output_section);
seclet->type = bfd_indirect_seclet;
seclet->u.indirect.section = i;
seclet->u.indirect.symbols = statement->input_section.ifile->asymbols;
seclet->size = bfd_get_section_size_before_reloc(i);
seclet->offset = i->output_offset;
seclet->next = 0;
seclet->type = bfd_indirect_seclet;
seclet->u.indirect.section = i;
seclet->u.indirect.symbols = statement->input_section.ifile->asymbols;
seclet->size = bfd_get_section_size_before_reloc(i);
seclet->offset = i->output_offset;
seclet->next = 0;
}
}
break;
default: