[llvm] r220249 - [MCJIT] Temporarily revert r220245 - it broke several bots.
Lang Hames
lhames at gmail.com
Mon Oct 20 17:24:03 PDT 2014
Author: lhames
Date: Mon Oct 20 19:24:02 2014
New Revision: 220249
URL: http://llvm.org/viewvc/llvm-project?rev=220249&view=rev
Log:
[MCJIT] Temporarily revert r220245 - it broke several bots.
(See e.g. http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/17653)
Modified:
llvm/trunk/include/llvm/Object/ELFObjectFile.h
llvm/trunk/include/llvm/Object/ELFTypes.h
llvm/trunk/include/llvm/Object/SymbolicFile.h
llvm/trunk/include/llvm/Support/ELF.h
llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
llvm/trunk/lib/Object/MachOObjectFile.cpp
llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s
llvm/trunk/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s
llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s
Modified: llvm/trunk/include/llvm/Object/ELFObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFObjectFile.h?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ELFObjectFile.h Mon Oct 20 19:24:02 2014
@@ -177,19 +177,6 @@ protected:
return DRI;
}
- bool isExportedToOtherDSO(const Elf_Sym *ESym) const {
- unsigned char Binding = ESym->getBinding();
- unsigned char Visibility = ESym->getVisibility();
-
- if (Binding != ELF::STB_GLOBAL && Binding != ELF::STB_WEAK)
- return false;
-
- if (Visibility != ELF::STV_DEFAULT && Visibility != ELF::STV_PROTECTED)
- return false;
-
- return true;
- }
-
// This flag is used for classof, to distinguish ELFObjectFile from
// its subclass. If more subclasses will be created, this flag will
// have to become an enum.
@@ -386,9 +373,6 @@ uint32_t ELFObjectFile<ELFT>::getSymbolF
EF.getSymbolTableIndex(ESym) == ELF::SHN_COMMON)
Result |= SymbolRef::SF_Common;
- if (isExportedToOtherDSO(ESym))
- Result |= SymbolRef::SF_Exported;
-
return Result;
}
Modified: llvm/trunk/include/llvm/Object/ELFTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFTypes.h?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFTypes.h (original)
+++ llvm/trunk/include/llvm/Object/ELFTypes.h Mon Oct 20 19:24:02 2014
@@ -158,7 +158,7 @@ struct Elf_Sym_Base<ELFType<TargetEndian
Elf_Addr st_value; // Value or address associated with the symbol
Elf_Word st_size; // Size of the symbol
unsigned char st_info; // Symbol's type and binding attributes
- unsigned char st_other; // Visibility in the lower 2 bits, the rest is zero
+ unsigned char st_other; // Must be zero; reserved
Elf_Half st_shndx; // Which section (header table index) it's defined in
};
@@ -167,7 +167,7 @@ struct Elf_Sym_Base<ELFType<TargetEndian
LLVM_ELF_IMPORT_TYPES(TargetEndianness, MaxAlign, true)
Elf_Word st_name; // Symbol name (index into string table)
unsigned char st_info; // Symbol's type and binding attributes
- unsigned char st_other; // Visibility in the lower 2 bits, the rest is zero
+ unsigned char st_other; // Must be zero; reserved
Elf_Half st_shndx; // Which section (header table index) it's defined in
Elf_Addr st_value; // Value or address associated with the symbol
Elf_Xword st_size; // Size of the symbol
@@ -176,21 +176,16 @@ struct Elf_Sym_Base<ELFType<TargetEndian
template <class ELFT>
struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
using Elf_Sym_Base<ELFT>::st_info;
- using Elf_Sym_Base<ELFT>::st_other;
// These accessors and mutators correspond to the ELF32_ST_BIND,
// ELF32_ST_TYPE, and ELF32_ST_INFO macros defined in the ELF specification:
unsigned char getBinding() const { return st_info >> 4; }
unsigned char getType() const { return st_info & 0x0f; }
- unsigned char getVisibility() const { return st_other & 0x3; }
void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
void setBindingAndType(unsigned char b, unsigned char t) {
st_info = (b << 4) + (t & 0x0f);
}
- void setVisibility(unsigned char v) {
- st_other = (st_other & ~0x3) | (v & 0x3);
- }
};
/// Elf_Versym: This is the structure of entries in the SHT_GNU_versym section
Modified: llvm/trunk/include/llvm/Object/SymbolicFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/SymbolicFile.h?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/SymbolicFile.h (original)
+++ llvm/trunk/include/llvm/Object/SymbolicFile.h Mon Oct 20 19:24:02 2014
@@ -87,10 +87,9 @@ public:
SF_Absolute = 1U << 3, // Absolute symbol
SF_Common = 1U << 4, // Symbol has common linkage
SF_Indirect = 1U << 5, // Symbol is an alias to another symbol
- SF_Exported = 1U << 6, // Symbol is visible to other DSOs
- SF_FormatSpecific = 1U << 7, // Specific to the object file format
+ SF_FormatSpecific = 1U << 6, // Specific to the object file format
// (e.g. section symbols)
- SF_Thumb = 1U << 8, // Thumb symbol in a 32-bit ARM binary
+ SF_Thumb = 1U << 7 // Thumb symbol in a 32-bit ARM binary
};
BasicSymbolRef() : OwningObject(nullptr) { }
Modified: llvm/trunk/include/llvm/Support/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ELF.h?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/ELF.h (original)
+++ llvm/trunk/include/llvm/Support/ELF.h Mon Oct 20 19:24:02 2014
@@ -1458,29 +1458,25 @@ struct Elf32_Sym {
Elf32_Addr st_value; // Value or address associated with the symbol
Elf32_Word st_size; // Size of the symbol
unsigned char st_info; // Symbol's type and binding attributes
- unsigned char st_other; // Visibility in the lower 2 bits, the rest is zero
+ unsigned char st_other; // Must be zero; reserved
Elf32_Half st_shndx; // Which section (header table index) it's defined in
// These accessors and mutators correspond to the ELF32_ST_BIND,
// ELF32_ST_TYPE, and ELF32_ST_INFO macros defined in the ELF specification:
unsigned char getBinding() const { return st_info >> 4; }
unsigned char getType() const { return st_info & 0x0f; }
- unsigned char getVisibility() const { return st_other & 0x3; }
void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
void setBindingAndType(unsigned char b, unsigned char t) {
st_info = (b << 4) + (t & 0x0f);
}
- void setVisibility(unsigned char v) {
- st_other = (st_other & ~0x3) | (v & 0x3);
- }
};
// Symbol table entries for ELF64.
struct Elf64_Sym {
Elf64_Word st_name; // Symbol name (index into string table)
unsigned char st_info; // Symbol's type and binding attributes
- unsigned char st_other; // Visibility in the lower 2 bits, the rest is zero
+ unsigned char st_other; // Must be zero; reserved
Elf64_Half st_shndx; // Which section (header tbl index) it's defined in
Elf64_Addr st_value; // Value or address associated with the symbol
Elf64_Xword st_size; // Size of the symbol
@@ -1489,15 +1485,11 @@ struct Elf64_Sym {
// symbol table entries.
unsigned char getBinding() const { return st_info >> 4; }
unsigned char getType() const { return st_info & 0x0f; }
- unsigned char getVisibility() const { return st_other & 0x3; }
void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
void setBindingAndType(unsigned char b, unsigned char t) {
st_info = (b << 4) + (t & 0x0f);
}
- void setVisibility(unsigned char v) {
- st_other = (st_other & ~0x3) | (v & 0x3);
- }
};
// The size (in bytes) of symbol table entries.
Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Mon Oct 20 19:24:02 2014
@@ -205,14 +205,10 @@ RuntimeDyldImpl::loadObject(std::unique_
bool IsCode = SI->isText();
unsigned SectionID =
findOrEmitSection(*Obj, *SI, IsCode, LocalSections);
- // Add the symbol to the local symbol table for this module.
LocalSymbols[Name.data()] = SymbolLoc(SectionID, SectOffset);
DEBUG(dbgs() << "\tOffset: " << format("%p", (uintptr_t)SectOffset)
<< " flags: " << Flags << " SID: " << SectionID);
- // If exported, add to the global symbol table for other modules to also link in.
- if (Flags & SymbolRef::SF_Exported) {
- GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
- }
+ GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
}
}
DEBUG(dbgs() << "\tType: " << SymType << " Name: " << Name << "\n");
Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/MachOObjectFile.cpp Mon Oct 20 19:24:02 2014
@@ -454,9 +454,6 @@ uint32_t MachOObjectFile::getSymbolFlags
if (Value && Value != UnknownAddressOrSize)
Result |= SymbolRef::SF_Common;
}
-
- if (!(MachOType & MachO::N_PEXT))
- Result |= SymbolRef::SF_Exported;
}
if (MachOFlags & (MachO::N_WEAK_REF | MachO::N_WEAK_DEF))
Modified: llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s (original)
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s Mon Oct 20 19:24:02 2014
@@ -18,7 +18,6 @@ _foo:
# and therefore ignored.
# rtdyld-check: decode_operand(br1, 0)[25:0] = (_foo - br1)[27:2]
_test_branch_reloc:
- .globl br1
br1:
b _foo
ret
@@ -33,10 +32,8 @@ br1:
.globl _test_adrp_ldr
.align 2
_test_adrp_ldr:
- .globl adrp1
adrp1:
adrp x0, _ptr at PAGE
- .globl ldr1
ldr1:
ldr x0, [x0, _ptr at PAGEOFF]
ret
@@ -52,10 +49,8 @@ ldr1:
.globl _test_adrp_ldr
.align 2
_test_got_adrp_ldr:
- .globl adrp2
adrp2:
adrp x0, _ptr at GOTPAGE
- .globl ldr2
ldr2:
ldr x0, [x0, _ptr at GOTPAGEOFF]
ret
Modified: llvm/trunk/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s (original)
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/ARM/MachO_ARM_PIC_relocations.s Mon Oct 20 19:24:02 2014
@@ -8,15 +8,12 @@
bar:
# Check lower 16-bits of section difference relocation
# rtdyld-check: decode_operand(insn1, 1) = (foo$non_lazy_ptr-(nextPC+8))[15:0]
- .globl insn1
insn1:
movw r0, :lower16:(foo$non_lazy_ptr-(nextPC+8))
# Check upper 16-bits of section difference relocation
# rtdyld-check: decode_operand(insn2, 2) = (foo$non_lazy_ptr-(nextPC+8))[31:16]
- .globl insn2
insn2:
movt r0, :upper16:(foo$non_lazy_ptr-(nextPC+8))
- .globl nextPC
nextPC:
add r1, r0, r0
@@ -28,7 +25,6 @@ nextPC:
# rtdyld-check: *{4}(stub_addr(foo.o, __text, baz) + 4) = baz
#
# rtdyld-check: decode_operand(insn3, 0) = stub_addr(foo.o, __text, baz) - (insn3 + 8)
- .globl insn3
insn3:
bl baz
@@ -48,7 +44,6 @@ insn4:
# rtdyld-check: *{4}foo$non_lazy_ptr = foo
.section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers
.align 2
- .globl foo$non_lazy_ptr
foo$non_lazy_ptr:
.indirect_symbol foo
.long 0
Modified: llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s (original)
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s Mon Oct 20 19:24:02 2014
@@ -6,19 +6,16 @@
.align 4, 0x90
bar:
calll tmp0$pb
- .globl tmp0$pb
tmp0$pb:
popl %eax
# Test section difference relocation to non-lazy ptr section.
# rtdyld-check: decode_operand(inst1, 4) = x$non_lazy_ptr - tmp0$pb
- .globl inst1
inst1:
movl x$non_lazy_ptr-tmp0$pb(%eax), %eax
movl (%eax), %ebx
# Test VANILLA relocation to jump table.
# rtdyld-check: decode_operand(inst2, 0) = bling$stub - next_pc(inst2)
- .globl inst2
inst2:
calll bling$stub
addl %ebx, %eax
@@ -30,13 +27,11 @@ inst3:
retl
.section __IMPORT,__jump_table,symbol_stubs,pure_instructions+self_modifying_code,5
- .globl bling$stub
bling$stub:
.indirect_symbol bling
.ascii "\364\364\364\364\364"
.section __IMPORT,__pointers,non_lazy_symbol_pointers
- .globl x$non_lazy_ptr
x$non_lazy_ptr:
.indirect_symbol x
.long 0
Modified: llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s?rev=220249&r1=220248&r2=220249&view=diff
==============================================================================
--- llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s (original)
+++ llvm/trunk/test/ExecutionEngine/RuntimeDyld/X86/MachO_x86-64_PIC_relocations.s Mon Oct 20 19:24:02 2014
@@ -12,13 +12,11 @@ foo:
main:
# Test PC-rel branch.
# rtdyld-check: decode_operand(insn1, 0) = foo - next_pc(insn1)
- .globl insn1
insn1:
callq foo
# Test PC-rel signed.
# rtdyld-check: decode_operand(insn2, 4) = x - next_pc(insn2)
- .globl insn2
insn2:
movl x(%rip), %eax
@@ -27,7 +25,6 @@ insn2:
# references the correct GOT entry address:
# rtdyld-check: *{8}(stub_addr(test_x86-64.o, __text, y)) = y
# rtdyld-check: decode_operand(insn3, 4) = stub_addr(test_x86-64.o, __text, y) - next_pc(insn3)
- .globl insn3
insn3:
movq y at GOTPCREL(%rip), %rax
More information about the llvm-commits
mailing list