From: Michael Tiemann Date: Sun, 2 Feb 1992 21:12:25 +0000 (+0000) Subject: Work around for problems in linking C++ programs that need file-level X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=58216160ef6573acb817676795cadab967afea2d;p=deliverable%2Fbinutils-gdb.git Work around for problems in linking C++ programs that need file-level initialization. Now C++ programs can be linked. --- diff --git a/ld/ldsym.c b/ld/ldsym.c index 007d191b2a..3ab87994fb 100644 --- a/ld/ldsym.c +++ b/ld/ldsym.c @@ -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 diff --git a/ld/relax.c b/ld/relax.c index 5500f5e0f4..a0a8ab6253 100644 --- a/ld/relax.c +++ b/ld/relax.c @@ -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: