cris: Check UNDEFWEAK_NO_DYNAMIC_RELOC
[deliverable/binutils-gdb.git] / gold / object.cc
index 5381addde717f98c9eb4d1fc8ccdd00b1e89afe2..4110686ff3146b6b655faee144cc486a159388e6 100644 (file)
@@ -1,6 +1,6 @@
 // object.cc -- support for an object file for linking in gold
 
-// Copyright (C) 2006-2015 Free Software Foundation, Inc.
+// Copyright (C) 2006-2017 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -427,7 +427,8 @@ Sized_relobj<size, big_endian>::do_for_all_local_got_entries(
   unsigned int nsyms = this->local_symbol_count();
   for (unsigned int i = 0; i < nsyms; i++)
     {
-      Local_got_offsets::const_iterator p = this->local_got_offsets_.find(i);
+      Local_got_entry_key key(i, 0);
+      Local_got_offsets::const_iterator p = this->local_got_offsets_.find(key);
       if (p != this->local_got_offsets_.end())
        {
          const Got_offset_list* got_offsets = p->second;
@@ -478,7 +479,8 @@ Sized_relobj_file<size, big_endian>::Sized_relobj_file(
     discarded_eh_frame_shndx_(-1U),
     is_deferred_layout_(false),
     deferred_layout_(),
-    deferred_layout_relocs_()
+    deferred_layout_relocs_(),
+    output_views_(NULL)
 {
   this->e_type_ = ehdr.get_e_type();
 }
@@ -814,9 +816,9 @@ Sized_relobj_file<size, big_endian>::do_find_special_sections(
   return (this->has_eh_frame_
          || (!parameters->options().relocatable()
              && parameters->options().gdb_index()
-             && (memmem(names, sd->section_names_size, "debug_info", 12) == 0
-                 || memmem(names, sd->section_names_size, "debug_types",
-                           13) == 0)));
+             && (memmem(names, sd->section_names_size, "debug_info", 11) == 0
+                 || memmem(names, sd->section_names_size,
+                           "debug_types", 12) == 0)));
 }
 
 // Read the sections and symbols from an object file.
@@ -2223,8 +2225,9 @@ Sized_relobj_file<size, big_endian>::do_count_local_symbols(Stringpool* pool,
 
       // Decide whether this symbol should go into the output file.
 
-      if ((shndx < shnum && out_sections[shndx] == NULL)
-         || shndx == this->discarded_eh_frame_shndx_)
+      if (is_ordinary
+         && ((shndx < shnum && out_sections[shndx] == NULL)
+             || shndx == this->discarded_eh_frame_shndx_))
        {
          lv.set_no_output_symtab_entry();
          gold_assert(!lv.needs_output_dynsym_entry());
@@ -3454,4 +3457,36 @@ Xindex::read_symtab_xindex<64, true>(Object*, unsigned int,
                                     const unsigned char*);
 #endif
 
+#ifdef HAVE_TARGET_32_LITTLE
+template
+Compressed_section_map*
+build_compressed_section_map<32, false>(const unsigned char*, unsigned int,
+                                       const char*, section_size_type, 
+                                       Object*, bool);
+#endif
+
+#ifdef HAVE_TARGET_32_BIG
+template
+Compressed_section_map*
+build_compressed_section_map<32, true>(const unsigned char*, unsigned int,
+                                       const char*, section_size_type, 
+                                       Object*, bool);
+#endif
+
+#ifdef HAVE_TARGET_64_LITTLE
+template
+Compressed_section_map*
+build_compressed_section_map<64, false>(const unsigned char*, unsigned int,
+                                       const char*, section_size_type, 
+                                       Object*, bool);
+#endif
+
+#ifdef HAVE_TARGET_64_BIG
+template
+Compressed_section_map*
+build_compressed_section_map<64, true>(const unsigned char*, unsigned int,
+                                       const char*, section_size_type, 
+                                       Object*, bool);
+#endif
+
 } // End namespace gold.
This page took 0.024271 seconds and 4 git commands to generate.