X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gas%2Fwrite.c;h=0dfca0c01c3b88d4b1201fd1be3b9bf0b4985a92;hb=eb408eaac923140f561d8307cb63da9c9550096a;hp=46d8d96ab6946f01ed741fa881373598132842e3;hpb=9136aa49abcb3f23171e01ebd16ee03cc1032943;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/write.c b/gas/write.c index 46d8d96ab6..0dfca0c01c 100644 --- a/gas/write.c +++ b/gas/write.c @@ -192,7 +192,7 @@ fix_new_internal (fragS *frag, /* Which frag? */ TC_INIT_FIX_DATA (fixP); #endif - as_where (&fixP->fx_file, &fixP->fx_line); + fixP->fx_file = as_where (&fixP->fx_line); { @@ -360,9 +360,6 @@ record_alignment (/* Segment to which alignment pertains. */ if (seg == absolute_section) return; - if (align <= OCTETS_PER_BYTE_POWER) - return; - if (align > bfd_get_section_alignment (stdoutput, seg)) bfd_set_section_alignment (stdoutput, seg, align); } @@ -1137,7 +1134,7 @@ fix_segment (bfd *abfd ATTRIBUTE_UNUSED, static void install_reloc (asection *sec, arelent *reloc, fragS *fragp, - char *file, unsigned int line) + const char *file, unsigned int line) { char *err; bfd_reloc_status_type s; @@ -1237,7 +1234,7 @@ write_relocs (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) rp = &r->next; } - relocs = (arelent **) xcalloc (n, sizeof (arelent *)); + relocs = XCNEWVEC (arelent *, n); n = 0; r = my_reloc_list; @@ -1433,14 +1430,12 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) if (flag_compress_debug == COMPRESS_DEBUG_GABI_ZLIB) { - stdoutput->flags |= BFD_COMPRESS | BFD_COMPRESS_GABI; compression_header_size = bfd_get_compression_header_size (stdoutput, NULL); header_size = compression_header_size; } else { - stdoutput->flags |= BFD_COMPRESS; compression_header_size = 0; header_size = 12; } @@ -1550,10 +1545,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) gas_assert (x); if (!compression_header_size) { - compressed_name = (char *) xmalloc (strlen (section_name) + 2); - compressed_name[0] = '.'; - compressed_name[1] = 'z'; - strcpy (compressed_name + 2, section_name + 1); + compressed_name = concat (".z", section_name + 1, (char *) NULL); bfd_section_name (stdoutput, sec) = compressed_name; } } @@ -2211,12 +2203,23 @@ write_object_file (void) obj_frob_file_after_relocs (); #endif +#if defined OBJ_ELF || defined OBJ_MAYBE_ELF + if (IS_ELF && flag_use_elf_stt_common) + stdoutput->flags |= BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON; +#endif + /* Once all relocations have been written, we can compress the contents of the debug sections. This needs to be done before we start writing any sections, because it will affect the file layout, which is fixed once we start writing contents. */ if (flag_compress_debug) - bfd_map_over_sections (stdoutput, compress_debug, (char *) 0); + { + if (flag_compress_debug == COMPRESS_DEBUG_GABI_ZLIB) + stdoutput->flags |= BFD_COMPRESS | BFD_COMPRESS_GABI; + else + stdoutput->flags |= BFD_COMPRESS; + bfd_map_over_sections (stdoutput, compress_debug, (char *) 0); + } bfd_map_over_sections (stdoutput, write_contents, (char *) 0); }