[Object][ELF] Fix incorrect size of members for the 64 version of Elf_Phdr_Impl.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Sun, 6 Jan 2013 03:57:11 +0000 (03:57 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Sun, 6 Jan 2013 03:57:11 +0000 (03:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171650 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELF.h
test/Object/Inputs/program-headers.elf-x86-64 [new file with mode: 0644]
test/Object/objdump-private-headers.test

index 37cefd8478c817f5bbfae0983af93c52d8311481..46b62de19e310785a629c64bd30489326c1ff4e1 100644 (file)
@@ -464,9 +464,9 @@ struct Elf_Phdr_Impl<target_endianness, max_alignment, true> {
   Elf_Off  p_offset; // FileOffset where segment is located, in bytes
   Elf_Addr p_vaddr;  // Virtual Address of beginning of segment
   Elf_Addr p_paddr;  // Physical address of beginning of segment (OS-specific)
-  Elf_Word p_filesz; // Num. of bytes in file image of segment (may be zero)
-  Elf_Word p_memsz;  // Num. of bytes in mem image of segment (may be zero)
-  Elf_Word p_align;  // Segment alignment constraint
+  Elf_Xword p_filesz; // Num. of bytes in file image of segment (may be zero)
+  Elf_Xword p_memsz;  // Num. of bytes in mem image of segment (may be zero)
+  Elf_Xword p_align;  // Segment alignment constraint
 };
 
 template<endianness target_endianness, std::size_t max_alignment, bool is64Bits>
diff --git a/test/Object/Inputs/program-headers.elf-x86-64 b/test/Object/Inputs/program-headers.elf-x86-64
new file mode 100644 (file)
index 0000000..037bf14
Binary files /dev/null and b/test/Object/Inputs/program-headers.elf-x86-64 differ
index e54d3eba5d608db2c2a07abd9b40fc4ed5d0a81d..c562044b3c4e664121e2e50bcd46e6bde2140d59 100644 (file)
@@ -1,8 +1,18 @@
 RUN: llvm-objdump -p %p/Inputs/program-headers.elf-i386 \
 RUN:              | FileCheck %s -check-prefix ELF-i386
+RUN: llvm-objdump -p %p/Inputs/program-headers.elf-x86-64 \
+RUN:              | FileCheck %s -check-prefix ELF-x86-64
 
 ELF-i386: Program Header:
 ELF-i386:     LOAD off    0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12
 ELF-i386:          filesz 0x00000134 memsz 0x00000134 flags r-x
 ELF-i386:    STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
 ELF-i386:          filesz 0x00000000 memsz 0x00000000 flags rw-
+
+ELF-x86-64: Program Header:
+ELF-x86-64:     LOAD off    0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21
+ELF-x86-64:          filesz 0x0000000000000138 memsz 0x0000000000000138 flags r-x
+ELF-x86-64: EH_FRAME off    0x00000000000000f4 vaddr 0x00000000004000f4 paddr 0x00000000004000f4 align 2**2
+ELF-x86-64:          filesz 0x0000000000000014 memsz 0x0000000000000014 flags r--
+ELF-x86-64:    STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**3
+ELF-x86-64:          filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-