Author: aadsm Date: Thu Oct 3 18:45:58 2019 New Revision: 373687 URL: http://llvm.org/viewvc/llvm-project?rev=373687&view=rev Log: Revert "Explicitly set entry point arch when it's thumb"
Backing out because SymbolFile/Breakpad/symtab.test is failing and it seems to be a legit issue. Will investigate. This reverts commit 72153f95ee4c1b52d2f4f483f0ea4f650ec863be. Removed: lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp Removed: lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s?rev=373686&view=auto ============================================================================== --- lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s (original) +++ lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s (removed) @@ -1,13 +0,0 @@ -# REQUIRES: lld, arm - -# RUN: llvm-mc -triple=thumbv7-eabi %s -filetype=obj -o %t.o -# RUN: ld.lld %t.o -o %t --section-start=.text=0x8074 -e 0x8075 -s -# RUN: %lldb -x -b -o 'dis -s 0x8074 -e 0x8080' -- %t | FileCheck %s -# CHECK: {{.*}}[0x8074] <+0>: movs r0, #0x2a -# CHECK-NEXT: {{.*}}[0x8076] <+2>: movs r7, #0x1 -# CHECK-NEXT: {{.*}}[0x8078] <+4>: svc #0x0 - -_start: - movs r0, #0x2a - movs r7, #0x1 - svc #0x0 \ No newline at end of file Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=373687&r1=373686&r2=373687&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Thu Oct 3 18:45:58 2019 @@ -2703,46 +2703,6 @@ Symtab *ObjectFileELF::GetSymtab() { if (m_symtab_up == nullptr) m_symtab_up.reset(new Symtab(this)); - // In the event that there's no symbol entry for the entry point we'll - // artifically create one. We delegate to the symtab object the figuring - // out of the proper size, this will usually make it span til the next - // symbol it finds in the section. This means that if there are missing - // symbols the entry point might span beyond its function definition. - // We're fine with this as it doesn't make it worse than not having a - // symbol entry at all. - ArchSpec arch = GetArchitecture(); - auto entry_point_addr = GetEntryPointAddress().GetFileAddress(); - if (entry_point_addr != LLDB_INVALID_ADDRESS) { - if (!m_symtab_up->FindSymbolContainingFileAddress(entry_point_addr)) { - uint64_t symbol_id = m_symtab_up->GetNumSymbols(); - SectionSP section_sp = - GetSectionList()->FindSectionContainingFileAddress(entry_point_addr); - Symbol symbol( - symbol_id, - GetNextSyntheticSymbolName().GetCString(), // Symbol name. - false, // Is the symbol name mangled? - eSymbolTypeCode, // Type of this symbol. - true, // Is this globally visible? - false, // Is this symbol debug info? - false, // Is this symbol a trampoline? - true, // Is this symbol artificial? - section_sp, // Section in which this symbol is defined or null. - 0, // Offset in section or symbol value. - 0, // Size. - false, // Size is valid. - false, // Contains linker annotations? - 0); // Symbol flags. - m_symtab_up->AddSymbol(symbol); - // When the entry point is arm thumb we need to explicitly set its - // class address to reflect that. This is important because expression - // evaluation relies on correctly setting a breakpoint at this address. - if (arch.GetMachine() == llvm::Triple::arm && (entry_point_addr & 1)) - m_address_class_map[entry_point_addr ^ 1] = AddressClass::eCodeAlternateISA; - else - m_address_class_map[entry_point_addr] = AddressClass::eCode; - } - } - m_symtab_up->CalculateSymbolSizes(); } Modified: lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp?rev=373687&r1=373686&r2=373687&view=diff ============================================================================== --- lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp (original) +++ lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp Thu Oct 3 18:45:58 2019 @@ -172,129 +172,3 @@ TEST_F(ObjectFileELFTest, GetModuleSpeci Uuid.SetFromStringRef("1b8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9", 20); EXPECT_EQ(Spec.GetUUID(), Uuid); } - -TEST_F(ObjectFileELFTest, GetSymtab_NoSymEntryPointArmThumbAddressClass) { - /* - // nosym-entrypoint-arm-thumb.s - .thumb_func - _start: - mov r0, #42 - mov r7, #1 - svc #0 - // arm-linux-androideabi-as nosym-entrypoint-arm-thumb.s - // -o nosym-entrypoint-arm-thumb.o - // arm-linux-androideabi-ld nosym-entrypoint-arm-thumb.o - // -o nosym-entrypoint-arm-thumb -e 0x8075 -s - */ - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_ARM - Flags: [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ] - Entry: 0x0000000000008075 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000008074 - AddressAlign: 0x0000000000000002 - Content: 2A20012700DF - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - Content: '' - - Name: .bss - Type: SHT_NOBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - - Name: .note.gnu.gold-version - Type: SHT_NOTE - AddressAlign: 0x0000000000000004 - Content: 040000000900000004000000474E5500676F6C6420312E3131000000 - - Name: .ARM.attributes - Type: SHT_ARM_ATTRIBUTES - AddressAlign: 0x0000000000000001 - Content: '4113000000616561626900010900000006020901' -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - ModuleSpec spec{FileSpec(ExpectedFile->name())}; - spec.GetSymbolFileSpec().SetFile(ExpectedFile->name(), - FileSpec::Style::native); - auto module_sp = std::make_shared<Module>(spec); - - auto entry_point_addr = module_sp->GetObjectFile()->GetEntryPointAddress(); - ASSERT_TRUE(entry_point_addr.GetOffset() & 1); - // Decrease the offsite by 1 to make it into a breakable address since this - // is Thumb. - entry_point_addr.SetOffset(entry_point_addr.GetOffset() - 1); - ASSERT_EQ(entry_point_addr.GetAddressClass(), - AddressClass::eCodeAlternateISA); -} - -TEST_F(ObjectFileELFTest, GetSymtab_NoSymEntryPointArmAddressClass) { - /* - // nosym-entrypoint-arm.s - _start: - movs r0, #42 - movs r7, #1 - svc #0 - // arm-linux-androideabi-as nosym-entrypoint-arm.s - // -o nosym-entrypoint-arm.o - // arm-linux-androideabi-ld nosym-entrypoint-arm.o - // -o nosym-entrypoint-arm -e 0x8074 -s - */ - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_ARM - Flags: [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ] - Entry: 0x0000000000008074 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000008074 - AddressAlign: 0x0000000000000004 - Content: 2A00A0E30170A0E3000000EF - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - Content: '' - - Name: .bss - Type: SHT_NOBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - - Name: .note.gnu.gold-version - Type: SHT_NOTE - AddressAlign: 0x0000000000000004 - Content: 040000000900000004000000474E5500676F6C6420312E3131000000 - - Name: .ARM.attributes - Type: SHT_ARM_ATTRIBUTES - AddressAlign: 0x0000000000000001 - Content: '4113000000616561626900010900000006010801' -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - ModuleSpec spec{FileSpec(ExpectedFile->name())}; - spec.GetSymbolFileSpec().SetFile(ExpectedFile->name(), - FileSpec::Style::native); - auto module_sp = std::make_shared<Module>(spec); - - auto entry_point_addr = module_sp->GetObjectFile()->GetEntryPointAddress(); - ASSERT_EQ(entry_point_addr.GetAddressClass(), AddressClass::eCode); -} \ No newline at end of file _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits