Index: third_party/android_platform/bionic/tools/relocation_packer/src/packer_unittest.cc |
diff --git a/third_party/android_platform/bionic/tools/relocation_packer/src/packer_unittest.cc b/third_party/android_platform/bionic/tools/relocation_packer/src/packer_unittest.cc |
index 8dddd8b412a0583c7095774d7e2d14f5199ff1d7..424b92cd067c146e093394eaccdb5e281ac8b168 100644 |
--- a/third_party/android_platform/bionic/tools/relocation_packer/src/packer_unittest.cc |
+++ b/third_party/android_platform/bionic/tools/relocation_packer/src/packer_unittest.cc |
@@ -39,6 +39,7 @@ template <typename ELF> |
static void DoPackNoAddend() { |
std::vector<typename ELF::Rela> relocations; |
std::vector<uint8_t> packed; |
+ bool is_32 = sizeof(typename ELF::Addr) == 4; |
// Initial relocation. |
AddRelocation<ELF>(0xd1ce0000, 0x11, 0, &relocations); |
// Two more relocations, 4 byte deltas. |
@@ -59,16 +60,16 @@ static void DoPackNoAddend() { |
size_t ndx = 0; |
EXPECT_EQ('A', packed[ndx++]); |
EXPECT_EQ('P', packed[ndx++]); |
- EXPECT_EQ('U', packed[ndx++]); |
+ EXPECT_EQ('S', packed[ndx++]); |
EXPECT_EQ('2', packed[ndx++]); |
// relocation count |
EXPECT_EQ(6, packed[ndx++]); |
- // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d |
+ // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 7d/0d (32/64bit) |
EXPECT_EQ(0xfc, packed[ndx++]); |
EXPECT_EQ(0xff, packed[ndx++]); |
EXPECT_EQ(0xb7, packed[ndx++]); |
EXPECT_EQ(0x8e, packed[ndx++]); |
- EXPECT_EQ(0x0d, packed[ndx++]); |
+ EXPECT_EQ(is_32 ? 0x7d : 0x0d, packed[ndx++]); |
// first group |
EXPECT_EQ(3, packed[ndx++]); // size |
EXPECT_EQ(3, packed[ndx++]); // flags |
@@ -83,8 +84,11 @@ static void DoPackNoAddend() { |
EXPECT_EQ(ndx, packed.size()); |
} |
-TEST(Packer, PackNoAddend) { |
+TEST(Packer, PackNoAddend32) { |
DoPackNoAddend<ELF32_traits>(); |
+} |
+ |
+TEST(Packer, PackNoAddend64) { |
DoPackNoAddend<ELF64_traits>(); |
} |
@@ -92,18 +96,19 @@ template <typename ELF> |
static void DoUnpackNoAddend() { |
std::vector<typename ELF::Rela> relocations; |
std::vector<uint8_t> packed; |
+ bool is_32 = sizeof(typename ELF::Addr) == 4; |
packed.push_back('A'); |
packed.push_back('P'); |
- packed.push_back('U'); |
+ packed.push_back('S'); |
packed.push_back('2'); |
// relocation count |
packed.push_back(6); |
- // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 0d |
+ // base relocation = 0xd1cdfffc -> fc, ff, b7, 8e, 7d/0d (32/64bit) |
packed.push_back(0xfc); |
packed.push_back(0xff); |
packed.push_back(0xb7); |
packed.push_back(0x8e); |
- packed.push_back(0x0d); |
+ packed.push_back(is_32 ? 0x7d : 0x0d); |
// first group |
packed.push_back(3); // size |
packed.push_back(3); // flags |
@@ -131,8 +136,11 @@ static void DoUnpackNoAddend() { |
EXPECT_EQ(ndx, relocations.size()); |
} |
-TEST(Packer, UnpackNoAddend) { |
+TEST(Packer, UnpackNoAddend32) { |
DoUnpackNoAddend<ELF32_traits>(); |
+} |
+ |
+TEST(Packer, UnpackNoAddend64) { |
DoUnpackNoAddend<ELF64_traits>(); |
} |