gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / binary.cc
index 4dab52cd6bfd108b849bf4b21cf3221c2618b5b7..c68524669a4c5fbb2af3a605500557c7f2368bf2 100644 (file)
@@ -1,6 +1,6 @@
 // binary.cc -- binary input files for gold
 
-// Copyright (C) 2008-2014 Free Software Foundation, Inc.
+// Copyright (C) 2008-2020 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -24,7 +24,6 @@
 
 #include <cerrno>
 #include <cstring>
-#include "safe-ctype.h"
 
 #include "elfcpp.h"
 #include "stringpool.h"
 #include "output.h"
 #include "binary.h"
 
+// safe-ctype.h interferes with macros defined by the system <ctype.h>.
+// Some C++ system headers might include <ctype.h> and rely on its macro
+// definitions being intact.  So make sure that safe-ctype.h is included
+// only after any C++ system headers, whether directly here (above) or via
+// other local header files (e.g. #include <string> in "binary.h").
+#include "safe-ctype.h"
+
 // Support for reading binary files as input.  These become blobs in
 // the final output.  These files are treated as though they have a
 // single .data section and define three symbols:
@@ -235,12 +241,12 @@ Binary_to_elf::sized_convert(const Task* task)
       pout += aligned_filesize - filesize;
     }
 
-  this->write_symbol<size, big_endian>("", &strtab, 0, 0, &pout);
-  this->write_symbol<size, big_endian>(start_symbol_name, &strtab, 0, 1,
-                                      &pout);
-  this->write_symbol<size, big_endian>(end_symbol_name, &strtab, filesize, 1,
-                                      &pout);
-  this->write_symbol<size, big_endian>(size_symbol_name, &strtab, filesize,
+  this->write_symbol<size, big_endian>("", &strtab, 0, 0, 0, &pout);
+  this->write_symbol<size, big_endian>(start_symbol_name, &strtab, 0, filesize,
+                                      1, &pout);
+  this->write_symbol<size, big_endian>(end_symbol_name, &strtab, filesize, 0,
+                                      1, &pout);
+  this->write_symbol<size, big_endian>(size_symbol_name, &strtab, filesize, 0,
                                       elfcpp::SHN_ABS, &pout);
 
   strtab.write_to_buffer(pout, strtab.get_strtab_size());
@@ -343,6 +349,7 @@ Binary_to_elf::write_symbol(
     const std::string& name,
     const Stringpool* strtab,
     section_size_type value,
+    typename elfcpp::Elf_types<32>::Elf_WXword st_size,
     unsigned int shndx,
     unsigned char** ppout)
 {
@@ -351,7 +358,7 @@ Binary_to_elf::write_symbol(
   elfcpp::Sym_write<size, big_endian> osym(pout);
   osym.put_st_name(name.empty() ? 0 : strtab->get_offset(name.c_str()));
   osym.put_st_value(value);
-  osym.put_st_size(0);
+  osym.put_st_size(st_size);
   osym.put_st_info(name.empty() ? elfcpp::STB_LOCAL : elfcpp::STB_GLOBAL,
                   elfcpp::STT_NOTYPE);
   osym.put_st_other(elfcpp::STV_DEFAULT, 0);
This page took 0.024759 seconds and 4 git commands to generate.