mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 15:18:37 +08:00
include:
* elf/common.h (VER_FLG_*): Document. (VER_FLG_INFO): Define. gold: * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member function, is_info_ member. * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_. (Versions::Versions): Update caller. (Versions::define_base_version): Likewise. (Versions::add_def): Likewise. elfcpp: * elfcpp.h (VER_FLG_INFO): Define. binutils: * readelf.c (get_ver_flags): Handle VER_FLG_INFO.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
* readelf.c (get_ver_flags): Handle VER_FLG_INFO.
|
||||||
|
|
||||||
2010-03-02 Daniel Jacobowitz <dan@codesourcery.com>
|
2010-03-02 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
* NEWS: Document .ARM.exidx / .ARM.extab support.
|
* NEWS: Document .ARM.exidx / .ARM.extab support.
|
||||||
|
@ -7267,7 +7267,15 @@ get_ver_flags (unsigned int flags)
|
|||||||
strcat (buff, "WEAK ");
|
strcat (buff, "WEAK ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK))
|
if (flags & VER_FLG_INFO)
|
||||||
|
{
|
||||||
|
if (flags & (VER_FLG_BASE|VER_FLG_WEAK))
|
||||||
|
strcat (buff, "| ");
|
||||||
|
|
||||||
|
strcat (buff, "INFO ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK | VER_FLG_INFO))
|
||||||
strcat (buff, "| <unknown>");
|
strcat (buff, "| <unknown>");
|
||||||
|
|
||||||
return buff;
|
return buff;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
* elfcpp.h (VER_FLG_INFO): Define.
|
||||||
|
|
||||||
2010-01-21 Doug Kwan <dougkwan@google.com>
|
2010-01-21 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
* arm.h (EXIDX_CANTUNWIND): New enum.
|
* arm.h (EXIDX_CANTUNWIND): New enum.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// elfcpp.h -- main header file for elfcpp -*- C++ -*-
|
// elfcpp.h -- main header file for elfcpp -*- C++ -*-
|
||||||
|
|
||||||
// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||||
// Written by Ian Lance Taylor <iant@google.com>.
|
// Written by Ian Lance Taylor <iant@google.com>.
|
||||||
|
|
||||||
// This file is part of elfcpp.
|
// This file is part of elfcpp.
|
||||||
@ -784,6 +784,7 @@ const int VER_NEED_CURRENT = 1;
|
|||||||
|
|
||||||
const int VER_FLG_BASE = 0x1;
|
const int VER_FLG_BASE = 0x1;
|
||||||
const int VER_FLG_WEAK = 0x2;
|
const int VER_FLG_WEAK = 0x2;
|
||||||
|
const int VER_FLG_INFO = 0x4;
|
||||||
|
|
||||||
// Special constants found in the SHT_GNU_versym entries.
|
// Special constants found in the SHT_GNU_versym entries.
|
||||||
|
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
* dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
|
||||||
|
function, is_info_ member.
|
||||||
|
* dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
|
||||||
|
(Versions::Versions): Update caller.
|
||||||
|
(Versions::define_base_version): Likewise.
|
||||||
|
(Versions::add_def): Likewise.
|
||||||
|
|
||||||
2010-03-03 Sriraman Tallam <tmsriram@google.com>
|
2010-03-03 Sriraman Tallam <tmsriram@google.com>
|
||||||
|
|
||||||
* i386.cc (Target_i386::can_check_for_function_pointers): New function.
|
* i386.cc (Target_i386::can_check_for_function_pointers): New function.
|
||||||
|
@ -1221,7 +1221,8 @@ Verdef::write(const Stringpool* dynpool, bool is_last, unsigned char* pb) const
|
|||||||
elfcpp::Verdef_write<size, big_endian> vd(pb);
|
elfcpp::Verdef_write<size, big_endian> vd(pb);
|
||||||
vd.set_vd_version(elfcpp::VER_DEF_CURRENT);
|
vd.set_vd_version(elfcpp::VER_DEF_CURRENT);
|
||||||
vd.set_vd_flags((this->is_base_ ? elfcpp::VER_FLG_BASE : 0)
|
vd.set_vd_flags((this->is_base_ ? elfcpp::VER_FLG_BASE : 0)
|
||||||
| (this->is_weak_ ? elfcpp::VER_FLG_WEAK : 0));
|
| (this->is_weak_ ? elfcpp::VER_FLG_WEAK : 0)
|
||||||
|
| (this->is_info_ ? elfcpp::VER_FLG_INFO : 0));
|
||||||
vd.set_vd_ndx(this->index());
|
vd.set_vd_ndx(this->index());
|
||||||
vd.set_vd_cnt(1 + this->deps_.size());
|
vd.set_vd_cnt(1 + this->deps_.size());
|
||||||
vd.set_vd_hash(Dynobj::elf_hash(this->name()));
|
vd.set_vd_hash(Dynobj::elf_hash(this->name()));
|
||||||
@ -1353,7 +1354,7 @@ Versions::Versions(const Version_script_info& version_script,
|
|||||||
Verdef* const vd = new Verdef(
|
Verdef* const vd = new Verdef(
|
||||||
version,
|
version,
|
||||||
this->version_script_.get_dependencies(version),
|
this->version_script_.get_dependencies(version),
|
||||||
false, false, false);
|
false, false, false, false);
|
||||||
this->defs_.push_back(vd);
|
this->defs_.push_back(vd);
|
||||||
Key key(version_key, 0);
|
Key key(version_key, 0);
|
||||||
this->version_table_.insert(std::make_pair(key, vd));
|
this->version_table_.insert(std::make_pair(key, vd));
|
||||||
@ -1391,7 +1392,7 @@ Versions::define_base_version(Stringpool* dynpool)
|
|||||||
name = parameters->options().output_file_name();
|
name = parameters->options().output_file_name();
|
||||||
name = dynpool->add(name, false, NULL);
|
name = dynpool->add(name, false, NULL);
|
||||||
Verdef* vdbase = new Verdef(name, std::vector<std::string>(),
|
Verdef* vdbase = new Verdef(name, std::vector<std::string>(),
|
||||||
true, false, true);
|
true, false, false, true);
|
||||||
this->defs_.push_back(vdbase);
|
this->defs_.push_back(vdbase);
|
||||||
this->needs_base_version_ = false;
|
this->needs_base_version_ = false;
|
||||||
}
|
}
|
||||||
@ -1474,7 +1475,7 @@ Versions::add_def(const Symbol* sym, const char* version,
|
|||||||
// When creating a regular executable, automatically define
|
// When creating a regular executable, automatically define
|
||||||
// a new version.
|
// a new version.
|
||||||
Verdef* vd = new Verdef(version, std::vector<std::string>(),
|
Verdef* vd = new Verdef(version, std::vector<std::string>(),
|
||||||
false, false, false);
|
false, false, false, false);
|
||||||
this->defs_.push_back(vd);
|
this->defs_.push_back(vd);
|
||||||
ins.first->second = vd;
|
ins.first->second = vd;
|
||||||
}
|
}
|
||||||
|
@ -360,9 +360,9 @@ class Verdef : public Version_base
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Verdef(const char* name, const std::vector<std::string>& deps,
|
Verdef(const char* name, const std::vector<std::string>& deps,
|
||||||
bool is_base, bool is_weak, bool is_symbol_created)
|
bool is_base, bool is_weak, bool is_info, bool is_symbol_created)
|
||||||
: name_(name), deps_(deps), is_base_(is_base), is_weak_(is_weak),
|
: name_(name), deps_(deps), is_base_(is_base), is_weak_(is_weak),
|
||||||
is_symbol_created_(is_symbol_created)
|
is_info_(is_info), is_symbol_created_(is_symbol_created)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
// Return the version name.
|
// Return the version name.
|
||||||
@ -391,6 +391,11 @@ class Verdef : public Version_base
|
|||||||
clear_weak()
|
clear_weak()
|
||||||
{ this->is_weak_ = false; }
|
{ this->is_weak_ = false; }
|
||||||
|
|
||||||
|
// Return whether this definition is informational.
|
||||||
|
bool
|
||||||
|
is_info() const
|
||||||
|
{ return this->is_info_; }
|
||||||
|
|
||||||
// Return whether a version symbol has been created for this
|
// Return whether a version symbol has been created for this
|
||||||
// definition.
|
// definition.
|
||||||
bool
|
bool
|
||||||
@ -419,6 +424,8 @@ class Verdef : public Version_base
|
|||||||
bool is_base_;
|
bool is_base_;
|
||||||
// Whether this version is weak.
|
// Whether this version is weak.
|
||||||
bool is_weak_;
|
bool is_weak_;
|
||||||
|
// Whether this version is informational.
|
||||||
|
bool is_info_;
|
||||||
// Whether a version symbol has been created.
|
// Whether a version symbol has been created.
|
||||||
bool is_symbol_created_;
|
bool is_symbol_created_;
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
* elf/common.h (VER_FLG_*): Document.
|
||||||
|
(VER_FLG_INFO): Define.
|
||||||
|
|
||||||
2010-02-08 David S. Miller <davem@davemloft.net>
|
2010-02-08 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* elf/sparc.h (R_SPARC_JMP_IREL, R_SPARC_IRELATIVE): Define.
|
* elf/sparc.h (R_SPARC_JMP_IREL, R_SPARC_IRELATIVE): Define.
|
||||||
|
@ -812,10 +812,16 @@
|
|||||||
#define VER_DEF_CURRENT 1
|
#define VER_DEF_CURRENT 1
|
||||||
|
|
||||||
/* These constants appear in the vd_flags field of a Elf32_Verdef
|
/* These constants appear in the vd_flags field of a Elf32_Verdef
|
||||||
structure. */
|
structure.
|
||||||
|
|
||||||
|
Cf. the Solaris Linker and Libraries Guide, Ch. 7, Object File Format,
|
||||||
|
Versioning Sections, for a description:
|
||||||
|
|
||||||
|
http://docs.sun.com/app/docs/doc/819-0690/chapter6-93046?l=en&a=view */
|
||||||
|
|
||||||
#define VER_FLG_BASE 0x1
|
#define VER_FLG_BASE 0x1
|
||||||
#define VER_FLG_WEAK 0x2
|
#define VER_FLG_WEAK 0x2
|
||||||
|
#define VER_FLG_INFO 0x4
|
||||||
|
|
||||||
/* These special constants can be found in an Elf32_Versym field. */
|
/* These special constants can be found in an Elf32_Versym field. */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user