Lines Matching refs:elf

17 #include <elf.h>
111 Elf elf(memory_);
113 ASSERT_FALSE(elf.Init(false));
114 ASSERT_FALSE(elf.valid());
118 Elf elf(memory_);
125 ASSERT_FALSE(elf.Init(false));
126 ASSERT_FALSE(elf.valid());
127 ASSERT_TRUE(elf.interface() == nullptr);
130 ASSERT_FALSE(elf.GetSoname(&name));
133 ASSERT_FALSE(elf.GetFunctionName(0, &name, &func_offset));
136 ASSERT_FALSE(elf.Step(0, 0, nullptr, nullptr, &finished));
140 Elf elf(memory_);
145 ASSERT_FALSE(elf.Init(false));
148 ASSERT_EQ("4 unwind 32 bit elf that is neither arm nor x86 nor mips: e_machine = 20\n\n",
153 Elf elf(memory_);
158 ASSERT_FALSE(elf.Init(false));
161 ASSERT_EQ("4 unwind 64 bit elf that is neither aarch64 nor x86_64 nor mips64: e_machine = 21\n\n",
166 Elf elf(memory_);
170 ASSERT_TRUE(elf.Init(false));
171 ASSERT_TRUE(elf.valid());
172 ASSERT_EQ(static_cast<uint32_t>(EM_ARM), elf.machine_type());
173 ASSERT_EQ(ELFCLASS32, elf.class_type());
174 ASSERT_TRUE(elf.interface() != nullptr);
178 Elf elf(memory_);
182 ASSERT_TRUE(elf.Init(false));
183 ASSERT_TRUE(elf.valid());
184 ASSERT_EQ(static_cast<uint32_t>(EM_MIPS), elf.machine_type());
185 ASSERT_EQ(ELFCLASS32, elf.class_type());
186 ASSERT_TRUE(elf.interface() != nullptr);
190 Elf elf(memory_);
194 ASSERT_TRUE(elf.Init(false));
195 ASSERT_TRUE(elf.valid());
196 ASSERT_EQ(static_cast<uint32_t>(EM_386), elf.machine_type());
197 ASSERT_EQ(ELFCLASS32, elf.class_type());
198 ASSERT_TRUE(elf.interface() != nullptr);
202 Elf elf(memory_);
206 ASSERT_TRUE(elf.Init(false));
207 ASSERT_TRUE(elf.valid());
208 ASSERT_EQ(static_cast<uint32_t>(EM_AARCH64), elf.machine_type());
209 ASSERT_EQ(ELFCLASS64, elf.class_type());
210 ASSERT_TRUE(elf.interface() != nullptr);
214 Elf elf(memory_);
218 ASSERT_TRUE(elf.Init(false));
219 ASSERT_TRUE(elf.valid());
220 ASSERT_EQ(static_cast<uint32_t>(EM_X86_64), elf.machine_type());
221 ASSERT_EQ(ELFCLASS64, elf.class_type());
222 ASSERT_TRUE(elf.interface() != nullptr);
226 Elf elf(memory_);
230 ASSERT_TRUE(elf.Init(false));
231 ASSERT_TRUE(elf.valid());
232 ASSERT_EQ(static_cast<uint32_t>(EM_MIPS), elf.machine_type());
233 ASSERT_EQ(ELFCLASS64, elf.class_type());
234 ASSERT_TRUE(elf.interface() != nullptr);
243 Elf elf(memory_);
244 ASSERT_TRUE(elf.Init(false));
245 ASSERT_TRUE(elf.interface() != nullptr);
246 ASSERT_TRUE(elf.gnu_debugdata_interface() == nullptr);
247 EXPECT_EQ(0x1acU, elf.interface()->gnu_debugdata_offset());
248 EXPECT_EQ(0x100U, elf.interface()->gnu_debugdata_size());
257 Elf elf(memory_);
258 ASSERT_TRUE(elf.Init(false));
259 ASSERT_TRUE(elf.interface() != nullptr);
260 ASSERT_TRUE(elf.gnu_debugdata_interface() == nullptr);
261 EXPECT_EQ(0x200U, elf.interface()->gnu_debugdata_offset());
262 EXPECT_EQ(0x100U, elf.interface()->gnu_debugdata_size());
271 Elf elf(memory_);
272 ASSERT_TRUE(elf.Init(true));
273 ASSERT_TRUE(elf.interface() != nullptr);
274 ASSERT_TRUE(elf.gnu_debugdata_interface() != nullptr);
275 EXPECT_EQ(0x1acU, elf.interface()->gnu_debugdata_offset());
276 EXPECT_EQ(0x8cU, elf.interface()->gnu_debugdata_size());
285 Elf elf(memory_);
286 ASSERT_TRUE(elf.Init(true));
287 ASSERT_TRUE(elf.interface() != nullptr);
288 ASSERT_TRUE(elf.gnu_debugdata_interface() != nullptr);
289 EXPECT_EQ(0x200U, elf.interface()->gnu_debugdata_offset());
290 EXPECT_EQ(0x90U, elf.interface()->gnu_debugdata_size());
294 ElfFake elf(memory_);
297 elf.FakeSetInterface(interface);
299 elf.FakeSetValid(true);
300 elf.FakeSetLoadBias(0);
303 ASSERT_EQ(0x101U, elf.GetRelPc(0x1101, &map_info));
305 elf.FakeSetLoadBias(0x3000);
306 ASSERT_EQ(0x3101U, elf.GetRelPc(0x1101, &map_info));
308 elf.FakeSetValid(false);
309 elf.FakeSetLoadBias(0);
310 ASSERT_EQ(0x101U, elf.GetRelPc(0x1101, &map_info));
314 ElfFake elf(memory_);
321 elf.FakeSetInterface(interface);
330 elf.FakeSetValid(true);
331 elf.FakeSetLoadBias(0);
333 ASSERT_TRUE(elf.Step(0x3000, 0x1000, &regs, &process_memory, &finished));
359 ElfFake elf(memory_);
360 elf.FakeSetValid(true);
361 elf.FakeSetLoadBias(0);
366 elf.FakeSetInterface(interface);
373 ASSERT_TRUE(elf.Step(0x1004, 0x1000, &regs, &process_memory, &finished));
377 ElfFake elf(memory_);
378 elf.FakeSetValid(true);
379 elf.FakeSetLoadBias(0x4000);
384 elf.FakeSetInterface(interface);
391 ASSERT_TRUE(elf.Step(0x7304, 0x7300, &regs, &process_memory, &finished));
395 ElfFake elf(memory_);
396 elf.FakeSetValid(false);
400 ASSERT_FALSE(elf.GetGlobalVariable(global, &offset));
404 ElfFake elf(memory_);
405 elf.FakeSetValid(true);
406 elf.FakeSetLoadBias(0);
409 elf.FakeSetInterface(interface);
415 ASSERT_FALSE(elf.GetGlobalVariable(global, &offset));
419 ElfFake elf(memory_);
420 elf.FakeSetValid(true);
421 elf.FakeSetLoadBias(0x1000);
424 elf.FakeSetInterface(interface);
431 ASSERT_FALSE(elf.GetGlobalVariable(global, &offset));
435 ElfFake elf(memory_);
436 elf.FakeSetValid(true);
437 elf.FakeSetLoadBias(0);
440 elf.FakeSetInterface(interface);
443 elf.FakeSetGnuDebugdataInterface(gnu_interface);
452 ASSERT_TRUE(elf.GetGlobalVariable(global, &offset));
457 ElfFake elf(memory_);
458 elf.FakeSetValid(true);
459 elf.FakeSetLoadBias(0);
462 elf.FakeSetInterface(interface);
469 ASSERT_TRUE(elf.GetGlobalVariable(global, &offset));
474 ElfFake elf(memory_);
475 elf.FakeSetValid(true);
476 elf.FakeSetLoadBias(0x100);
479 elf.FakeSetInterface(interface);
486 ASSERT_TRUE(elf.GetGlobalVariable(global, &offset));
491 ElfFake elf(memory_);
492 elf.FakeSetValid(true);
493 elf.FakeSetLoadBias(0);
499 elf.FakeSetInterface(interface);
506 ASSERT_TRUE(elf.GetGlobalVariable(global, &offset));
511 ElfFake elf(memory_);
512 elf.FakeSetValid(true);
513 elf.FakeSetLoadBias(0);
519 elf.FakeSetInterface(interface);
526 ASSERT_TRUE(elf.GetGlobalVariable(global, &offset));
531 ElfFake elf(memory_);
532 elf.FakeSetValid(false);
533 elf.FakeSetLoadBias(0);
535 EXPECT_FALSE(elf.IsValidPc(0x100));
536 EXPECT_FALSE(elf.IsValidPc(0x200));
540 ElfFake elf(memory_);
541 elf.FakeSetValid(true);
542 elf.FakeSetLoadBias(0);
545 elf.FakeSetInterface(interface);
549 EXPECT_TRUE(elf.IsValidPc(0x1500));
553 ElfFake elf(memory_);
554 elf.FakeSetValid(true);
555 elf.FakeSetLoadBias(0x1000);
558 elf.FakeSetInterface(interface);
562 EXPECT_FALSE(elf.IsValidPc(0x100));
563 EXPECT_FALSE(elf.IsValidPc(0x200));
564 EXPECT_TRUE(elf.IsValidPc(0x1500));
568 ElfFake elf(memory_);
569 elf.FakeSetValid(true);
570 elf.FakeSetLoadBias(0);
573 elf.FakeSetInterface(interface);
575 elf.FakeSetGnuDebugdataInterface(gnu_interface);
580 EXPECT_TRUE(elf.IsValidPc(0x1500));
584 ElfFake elf(memory_);
585 elf.FakeSetValid(false);
588 elf.GetLastError(&error);
594 ElfFake elf(memory_);
595 elf.FakeSetValid(true);
597 elf.FakeSetInterface(interface);
602 elf.GetLastError(&error);
605 EXPECT_EQ(ERROR_MEMORY_INVALID, elf.GetLastErrorCode());
606 EXPECT_EQ(0x1000U, elf.GetLastErrorAddress());