Lines Matching full:elf
17 #include <elf.h>
29 #include <unwindstack/Elf.h>
115 Elf elf(elf_memory_); in TEST_F() local
117 ASSERT_FALSE(elf.Init()); in TEST_F()
118 ASSERT_FALSE(elf.valid()); in TEST_F()
122 Elf elf(elf_memory_); in TEST_F() local
126 // Corrupt the ELF signature. in TEST_F()
129 ASSERT_FALSE(elf.Init()); in TEST_F()
130 ASSERT_FALSE(elf.valid()); in TEST_F()
131 ASSERT_TRUE(elf.interface() == nullptr); in TEST_F()
133 ASSERT_EQ("", elf.GetSoname()); in TEST_F()
137 ASSERT_FALSE(elf.GetFunctionName(0, &name, &func_offset)); in TEST_F()
139 ASSERT_FALSE(elf.StepIfSignalHandler(0, nullptr, nullptr)); in TEST_F()
140 EXPECT_EQ(ERROR_INVALID_ELF, elf.GetLastErrorCode()); in TEST_F()
144 ASSERT_FALSE(elf.Step(0, nullptr, nullptr, &finished, &is_signal_frame)); in TEST_F()
145 EXPECT_EQ(ERROR_INVALID_ELF, elf.GetLastErrorCode()); in TEST_F()
149 ElfFake elf(elf_memory_); in TEST_F() local
150 elf.FakeSetValid(false); in TEST_F()
152 EXPECT_EQ(ERROR_INVALID_ELF, elf.GetLastErrorCode()); in TEST_F()
153 EXPECT_EQ(0U, elf.GetLastErrorAddress()); in TEST_F()
156 elf.GetLastError(&error); in TEST_F()
162 elf.GetLastError(&error); in TEST_F()
168 Elf elf(elf_memory_); in TEST_F() local
173 ASSERT_FALSE(elf.Init()); in TEST_F()
180 Elf elf(elf_memory_); in TEST_F() local
185 ASSERT_FALSE(elf.Init()); in TEST_F()
192 Elf elf(elf_memory_); in TEST_F() local
196 ASSERT_TRUE(elf.Init()); in TEST_F()
197 ASSERT_TRUE(elf.valid()); in TEST_F()
198 ASSERT_EQ(static_cast<uint32_t>(EM_ARM), elf.machine_type()); in TEST_F()
199 ASSERT_EQ(ELFCLASS32, elf.class_type()); in TEST_F()
200 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
204 Elf elf(elf_memory_); in TEST_F() local
208 ASSERT_TRUE(elf.Init()); in TEST_F()
209 ASSERT_TRUE(elf.valid()); in TEST_F()
210 ASSERT_EQ(static_cast<uint32_t>(EM_386), elf.machine_type()); in TEST_F()
211 ASSERT_EQ(ELFCLASS32, elf.class_type()); in TEST_F()
212 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
216 Elf elf(elf_memory_); in TEST_F() local
220 ASSERT_TRUE(elf.Init()); in TEST_F()
221 ASSERT_TRUE(elf.valid()); in TEST_F()
222 ASSERT_EQ(static_cast<uint32_t>(EM_AARCH64), elf.machine_type()); in TEST_F()
223 ASSERT_EQ(ELFCLASS64, elf.class_type()); in TEST_F()
224 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
228 Elf elf(elf_memory_); in TEST_F() local
232 ASSERT_TRUE(elf.Init()); in TEST_F()
233 ASSERT_TRUE(elf.valid()); in TEST_F()
234 ASSERT_EQ(static_cast<uint32_t>(EM_RISCV), elf.machine_type()); in TEST_F()
235 ASSERT_EQ(ELFCLASS64, elf.class_type()); in TEST_F()
236 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
240 Elf elf(elf_memory_); in TEST_F() local
244 ASSERT_TRUE(elf.Init()); in TEST_F()
245 ASSERT_TRUE(elf.valid()); in TEST_F()
246 ASSERT_EQ(static_cast<uint32_t>(EM_X86_64), elf.machine_type()); in TEST_F()
247 ASSERT_EQ(ELFCLASS64, elf.class_type()); in TEST_F()
248 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
257 Elf elf(elf_memory_); in TEST_F() local
258 ASSERT_TRUE(elf.Init()); in TEST_F()
259 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
260 ASSERT_TRUE(elf.gnu_debugdata_interface() != nullptr); in TEST_F()
261 EXPECT_EQ(0x1acU, elf.interface()->gnu_debugdata_offset()); in TEST_F()
262 EXPECT_EQ(0x8cU, elf.interface()->gnu_debugdata_size()); in TEST_F()
271 Elf elf(elf_memory_); in TEST_F() local
272 ASSERT_TRUE(elf.Init()); in TEST_F()
273 ASSERT_TRUE(elf.interface() != nullptr); in TEST_F()
274 ASSERT_TRUE(elf.gnu_debugdata_interface() != nullptr); in TEST_F()
275 EXPECT_EQ(0x200U, elf.interface()->gnu_debugdata_offset()); in TEST_F()
276 EXPECT_EQ(0x90U, elf.interface()->gnu_debugdata_size()); in TEST_F()
280 ElfFake elf(elf_memory_); in TEST_F() local
283 elf.FakeSetInterface(interface); in TEST_F()
285 elf.FakeSetValid(true); in TEST_F()
288 ASSERT_EQ(0x101U, elf.GetRelPc(0x1101, map_info.get())); in TEST_F()
290 elf.FakeSetValid(false); in TEST_F()
291 ASSERT_EQ(0x101U, elf.GetRelPc(0x1101, map_info.get())); in TEST_F()
295 ElfFake elf(elf_memory_); in VerifyStepIfSignalHandler() local
302 elf.FakeSetInterface(interface); in VerifyStepIfSignalHandler()
303 elf.FakeSetLoadBias(load_bias); in VerifyStepIfSignalHandler()
312 elf.FakeSetValid(true); in VerifyStepIfSignalHandler()
313 ASSERT_TRUE(elf.StepIfSignalHandler(0x3000 + load_bias, ®s, &process_memory)); in VerifyStepIfSignalHandler()
314 EXPECT_EQ(ERROR_NONE, elf.GetLastErrorCode()); in VerifyStepIfSignalHandler()
352 ElfFake elf(elf_memory_); in TEST_F() local
353 elf.FakeSetValid(true); in TEST_F()
358 elf.FakeSetInterface(interface); in TEST_F()
366 ASSERT_TRUE(elf.Step(0x1000, ®s, &process_memory, &finished, &is_signal_frame)); in TEST_F()
370 ElfFake elf(elf_memory_); in TEST_F() local
371 elf.FakeSetValid(false); in TEST_F()
375 ASSERT_FALSE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
379 ElfFake elf(elf_memory_); in TEST_F() local
380 elf.FakeSetValid(true); in TEST_F()
383 elf.FakeSetInterface(interface); in TEST_F()
390 ASSERT_FALSE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
394 ElfFake elf(elf_memory_); in TEST_F() local
395 elf.FakeSetValid(true); in TEST_F()
398 elf.FakeSetInterface(interface); in TEST_F()
405 ASSERT_FALSE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
409 ElfFake elf(elf_memory_); in TEST_F() local
410 elf.FakeSetValid(true); in TEST_F()
413 elf.FakeSetInterface(interface); in TEST_F()
423 ASSERT_TRUE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
428 ElfFake elf(elf_memory_); in TEST_F() local
429 elf.FakeSetValid(true); in TEST_F()
432 elf.FakeSetInterface(interface); in TEST_F()
446 ASSERT_TRUE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
451 ElfFake elf(elf_memory_); in TEST_F() local
452 elf.FakeSetValid(true); in TEST_F()
453 elf.FakeSetArch(ARCH_ARM64); in TEST_F()
456 elf.FakeSetInterface(interface); in TEST_F()
467 ASSERT_TRUE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
472 ElfFake elf(elf_memory_); in TEST_F() local
473 elf.FakeSetValid(true); in TEST_F()
474 elf.FakeSetArch(ARCH_X86_64); in TEST_F()
477 elf.FakeSetInterface(interface); in TEST_F()
488 ASSERT_TRUE(elf.GetGlobalVariableOffset(global, &offset)); in TEST_F()
493 ElfFake elf(elf_memory_); in TEST_F() local
494 elf.FakeSetValid(false); in TEST_F()
496 EXPECT_FALSE(elf.IsValidPc(0x100)); in TEST_F()
497 EXPECT_FALSE(elf.IsValidPc(0x200)); in TEST_F()
501 ElfFake elf(elf_memory_); in TEST_F() local
502 elf.FakeSetValid(true); in TEST_F()
505 elf.FakeSetInterface(interface); in TEST_F()
509 EXPECT_TRUE(elf.IsValidPc(0x1500)); in TEST_F()
513 ElfFake elf(elf_memory_); in TEST_F() local
514 elf.FakeSetValid(true); in TEST_F()
517 elf.FakeSetInterface(interface); in TEST_F()
519 elf.FakeSetGnuDebugdataInterface(gnu_interface); in TEST_F()
524 EXPECT_TRUE(elf.IsValidPc(0x1500)); in TEST_F()
528 ElfFake elf(elf_memory_); in TEST_F() local
529 elf.FakeSetValid(true); in TEST_F()
531 elf.FakeSetInterface(interface); in TEST_F()
536 elf.GetLastError(&error); in TEST_F()
539 EXPECT_EQ(ERROR_MEMORY_INVALID, elf.GetLastErrorCode()); in TEST_F()
540 EXPECT_EQ(0x1000U, elf.GetLastErrorAddress()); in TEST_F()
545 ASSERT_EQ("", Elf::GetPrintableBuildID(empty)); in TEST()
550 ASSERT_EQ("ff45400f", Elf::GetPrintableBuildID(empty)); in TEST()