Lines Matching refs:elf

17 #include <elf.h>
74 // The map is empty, but this should still create an invalid elf object.
75 Elf* elf = info.GetElf(process_memory_, false);
76 ASSERT_TRUE(elf != nullptr);
77 ASSERT_FALSE(elf->valid());
87 Elf* elf = info.GetElf(process_memory_, false);
88 ASSERT_TRUE(elf != nullptr);
89 ASSERT_TRUE(elf->valid());
90 EXPECT_EQ(static_cast<uint32_t>(EM_ARM), elf->machine_type());
91 EXPECT_EQ(ELFCLASS32, elf->class_type());
101 Elf* elf = info.GetElf(process_memory_, false);
102 ASSERT_TRUE(elf != nullptr);
103 ASSERT_TRUE(elf->valid());
104 EXPECT_EQ(static_cast<uint32_t>(EM_AARCH64), elf->machine_type());
105 EXPECT_EQ(ELFCLASS64, elf->class_type());
116 Elf* elf = info.GetElf(process_memory_, false);
117 ASSERT_TRUE(elf != nullptr);
118 ASSERT_TRUE(elf->valid());
119 EXPECT_EQ(static_cast<uint32_t>(EM_ARM), elf->machine_type());
120 EXPECT_EQ(ELFCLASS32, elf->class_type());
121 EXPECT_TRUE(elf->gnu_debugdata_interface() == nullptr);
132 Elf* elf = info.GetElf(process_memory_, false);
133 ASSERT_TRUE(elf != nullptr);
134 ASSERT_TRUE(elf->valid());
135 EXPECT_EQ(static_cast<uint32_t>(EM_AARCH64), elf->machine_type());
136 EXPECT_EQ(ELFCLASS64, elf->class_type());
137 EXPECT_TRUE(elf->gnu_debugdata_interface() == nullptr);
148 Elf* elf = info.GetElf(process_memory_, true);
149 ASSERT_TRUE(elf != nullptr);
150 ASSERT_TRUE(elf->valid());
151 EXPECT_EQ(static_cast<uint32_t>(EM_ARM), elf->machine_type());
152 EXPECT_EQ(ELFCLASS32, elf->class_type());
153 EXPECT_TRUE(elf->gnu_debugdata_interface() != nullptr);
164 Elf* elf = info.GetElf(process_memory_, true);
165 ASSERT_TRUE(elf != nullptr);
166 ASSERT_TRUE(elf->valid());
167 EXPECT_EQ(static_cast<uint32_t>(EM_AARCH64), elf->machine_type());
168 EXPECT_EQ(ELFCLASS64, elf->class_type());
169 EXPECT_TRUE(elf->gnu_debugdata_interface() != nullptr);
179 Elf* elf = info.GetElf(process_memory_, false);
180 ASSERT_TRUE(elf != nullptr);
181 ASSERT_FALSE(elf->valid());
183 info.elf.reset();
185 elf = info.GetElf(process_memory_, false);
186 ASSERT_TRUE(elf != nullptr);
187 ASSERT_FALSE(elf->valid());
190 info.elf.reset();
192 elf = info.GetElf(process_memory_, false);
193 ASSERT_TRUE(elf != nullptr);
194 ASSERT_TRUE(elf->valid());
197 // Verify that if the offset is non-zero but there is no elf at the offset,
209 Elf* elf = info.GetElf(process_memory_, false);
210 ASSERT_TRUE(elf != nullptr);
211 ASSERT_TRUE(elf->valid());
212 ASSERT_TRUE(elf->memory() != nullptr);
217 ASSERT_TRUE(elf->memory()->ReadFully(0, buffer.data(), buffer.size()));
223 ASSERT_FALSE(elf->memory()->ReadFully(buffer.size(), buffer.data(), 1));
226 // Verify that if the offset is non-zero and there is an elf at that
238 Elf* elf = info.GetElf(process_memory_, false);
239 ASSERT_TRUE(elf != nullptr);
240 ASSERT_TRUE(elf->valid());
241 ASSERT_TRUE(elf->memory() != nullptr);
245 ASSERT_TRUE(elf->memory()->ReadFully(0, buffer.data(), 0x1000));
251 ASSERT_FALSE(elf->memory()->ReadFully(0x1000, buffer.data(), 1));
254 // Verify that if the offset is non-zero and there is an elf at that
256 // embedded elf is bigger than the initial map, the new object is larger
257 // than the original map size. Do this for a 32 bit elf and a 64 bit elf.
271 Elf* elf = info.GetElf(process_memory_, false);
272 ASSERT_TRUE(elf != nullptr);
273 ASSERT_TRUE(elf->valid());
274 ASSERT_TRUE(elf->memory() != nullptr);
277 // Verify the memory is a valid elf.
279 ASSERT_TRUE(elf->memory()->ReadFully(0, buffer.data(), 0x1000));
283 ASSERT_TRUE(elf->memory()->ReadFully(0x1000, buffer.data(), 1));
299 Elf* elf = info.GetElf(process_memory_, false);
300 ASSERT_TRUE(elf != nullptr);
301 ASSERT_TRUE(elf->valid());
302 ASSERT_TRUE(elf->memory() != nullptr);
305 // Verify the memory is a valid elf.
307 ASSERT_TRUE(elf->memory()->ReadFully(0, buffer.data(), 0x1000));
311 ASSERT_TRUE(elf->memory()->ReadFully(0x1000, buffer.data(), 1));
317 // Create valid elf data in process memory only.
325 Elf* elf = info.GetElf(process_memory_, false);
326 ASSERT_TRUE(elf != nullptr);
327 ASSERT_FALSE(elf->valid());
329 info.elf.reset();
331 elf = info.GetElf(process_memory_, false);
332 ASSERT_TRUE(elf->valid());
338 // Create valid elf data in process memory for this to verify that only
339 // the name is causing invalid elf data.
347 Elf* elf = info.GetElf(process_memory_, false);
348 ASSERT_TRUE(elf != nullptr);
349 ASSERT_FALSE(elf->valid());
352 info.elf.reset();
354 elf = info.GetElf(process_memory_, false);
355 ASSERT_FALSE(elf->valid());
357 // Change the flags and verify the elf is valid now.
358 info.elf.reset();
360 elf = info.GetElf(process_memory_, false);
361 ASSERT_TRUE(elf->valid());
386 Elf* elf = info.GetElf(process_memory_, false);
387 elf_in_threads[i] = elf;
391 ASSERT_TRUE(info.elf == nullptr);
400 // Now verify that all of the elf files are exactly the same and valid.
401 Elf* elf = info.elf.get();
402 ASSERT_TRUE(elf != nullptr);
403 EXPECT_TRUE(elf->valid());
405 EXPECT_EQ(elf, elf_in_threads[i]) << "Thread " << i << " mismatched.";