Home | History | Annotate | Download | only in LD

Lines Matching defs:ResolveInfo

1 //===- ResolveInfo.cpp ----------------------------------------------------===//
9 #include "mcld/LD/ResolveInfo.h"
22 /// g_NullResolveInfo - a pointer to Null ResolveInfo.
23 static ResolveInfo* g_NullResolveInfo = NULL;
26 // ResolveInfo
28 ResolveInfo::ResolveInfo() : m_Size(0), m_BitField(0) {
32 ResolveInfo::~ResolveInfo() {
35 void ResolveInfo::override(const ResolveInfo& pFrom) {
41 void ResolveInfo::overrideAttributes(const ResolveInfo& pFrom) {
48 void ResolveInfo::overrideVisibility(const ResolveInfo& pFrom) {
72 void ResolveInfo::setRegular() {
76 void ResolveInfo::setDynamic() {
80 void ResolveInfo::setSource(bool pIsDyn) {
87 void ResolveInfo::setInDyn() {
91 void ResolveInfo::setType(uint32_t pType) {
96 void ResolveInfo::setDesc(uint32_t pDesc) {
101 void ResolveInfo::setBinding(uint32_t pBinding) {
109 void ResolveInfo::setReserved(uint32_t pReserved) {
114 void ResolveInfo::setOther(uint32_t pOther) {
115 setVisibility(static_cast<ResolveInfo::Visibility>(pOther & 0x3));
118 void ResolveInfo::setVisibility(ResolveInfo::Visibility pVisibility) {
123 void ResolveInfo::setIsSymbol(bool pIsSymbol) {
130 bool ResolveInfo::isNull() const {
134 bool ResolveInfo::isDyn() const {
138 bool ResolveInfo::isUndef() const {
142 bool ResolveInfo::isDefine() const {
146 bool ResolveInfo::isCommon() const {
150 bool ResolveInfo::isIndirect() const {
155 bool ResolveInfo::isGlobal() const {
160 bool ResolveInfo::isWeak() const {
165 bool ResolveInfo::isLocal() const {
170 bool ResolveInfo::isAbsolute() const {
174 bool ResolveInfo::isSymbol() const {
178 bool ResolveInfo::isString() const {
182 bool ResolveInfo::isInDyn() const {
186 uint32_t ResolveInfo::type() const {
190 uint32_t ResolveInfo::desc() const {
194 uint32_t ResolveInfo::binding() const {
197 return ResolveInfo::Absolute;
199 return ResolveInfo::Local;
204 uint32_t ResolveInfo::reserved() const {
208 ResolveInfo::Visibility ResolveInfo::visibility() const {
209 return static_cast<ResolveInfo::Visibility>((m_BitField & VISIBILITY_MASK) >>
213 bool ResolveInfo::compare(const ResolveInfo::key_type& pKey) {
220 bool ResolveInfo::shouldForceLocal(const LinkerConfig& pConfig) {
227 (visibility() == ResolveInfo::Hidden ||
228 visibility() == ResolveInfo::Internal) &&
234 // ResolveInfo Factory Methods
236 ResolveInfo* ResolveInfo::Create(const ResolveInfo::key_type& pKey) {
237 ResolveInfo* info =
238 static_cast<ResolveInfo*>(malloc(sizeof(ResolveInfo) + pKey.size() + 1));
242 new (info) ResolveInfo(); // call constructor at the `result` address.
245 info->m_BitField &= ~ResolveInfo::RESOLVE_MASK;
246 info->m_BitField |= (pKey.size() << ResolveInfo::NAME_LENGTH_OFFSET);
250 void ResolveInfo::Destroy(ResolveInfo*& pInfo) {
255 pInfo->~ResolveInfo();
262 ResolveInfo* ResolveInfo::Null() {
265 static_cast<ResolveInfo*>(malloc(sizeof(ResolveInfo) + 1));
266 new (g_NullResolveInfo) ResolveInfo();