|
@@ -63,10 +63,24 @@ public:
|
|
|
unsigned value() const { return m_sym.st_value; }
|
|
|
unsigned size() const { return m_sym.st_size; }
|
|
|
unsigned index() const { return m_index; }
|
|
|
- unsigned type() const { return ELF32_ST_TYPE(m_sym.st_info); }
|
|
|
+#if ARCH(I386)
|
|
|
+ unsigned type() const
|
|
|
+ {
|
|
|
+ return ELF32_ST_TYPE(m_sym.st_info);
|
|
|
+ }
|
|
|
unsigned bind() const { return ELF32_ST_BIND(m_sym.st_info); }
|
|
|
+#else
|
|
|
+ unsigned type() const
|
|
|
+ {
|
|
|
+ return ELF64_ST_TYPE(m_sym.st_info);
|
|
|
+ }
|
|
|
+ unsigned bind() const { return ELF64_ST_BIND(m_sym.st_info); }
|
|
|
+#endif
|
|
|
|
|
|
- bool is_undefined() const { return section_index() == 0; }
|
|
|
+ bool is_undefined() const
|
|
|
+ {
|
|
|
+ return section_index() == 0;
|
|
|
+ }
|
|
|
|
|
|
VirtualAddress address() const
|
|
|
{
|
|
@@ -146,9 +160,23 @@ public:
|
|
|
|
|
|
unsigned offset_in_section() const { return m_offset_in_section; }
|
|
|
unsigned offset() const { return m_rel.r_offset; }
|
|
|
- unsigned type() const { return ELF32_R_TYPE(m_rel.r_info); }
|
|
|
+#if ARCH(I386)
|
|
|
+ unsigned type() const
|
|
|
+ {
|
|
|
+ return ELF32_R_TYPE(m_rel.r_info);
|
|
|
+ }
|
|
|
unsigned symbol_index() const { return ELF32_R_SYM(m_rel.r_info); }
|
|
|
- Symbol symbol() const { return m_dynamic.symbol(symbol_index()); }
|
|
|
+#else
|
|
|
+ unsigned type() const
|
|
|
+ {
|
|
|
+ return ELF64_R_TYPE(m_rel.r_info);
|
|
|
+ }
|
|
|
+ unsigned symbol_index() const { return ELF64_R_SYM(m_rel.r_info); }
|
|
|
+#endif
|
|
|
+ Symbol symbol() const
|
|
|
+ {
|
|
|
+ return m_dynamic.symbol(symbol_index());
|
|
|
+ }
|
|
|
VirtualAddress address() const
|
|
|
{
|
|
|
if (m_dynamic.elf_is_dynamic())
|