diff options
| author | Jake Ehrlich <jakehehrlich@google.com> | 2018-01-22 19:27:30 +0000 |
|---|---|---|
| committer | Jake Ehrlich <jakehehrlich@google.com> | 2018-01-22 19:27:30 +0000 |
| commit | 46814bee63480b7bd891a66821f9946575832aed (patch) | |
| tree | 160625192f621e1211da1bf12b81d28f04c77e28 /llvm/test/tools/llvm-objcopy/binary-no-paddr.test | |
| parent | 98bb420559f76d53d5daffd948e561e75dd29fe9 (diff) | |
| download | bcm5719-llvm-46814bee63480b7bd891a66821f9946575832aed.tar.gz bcm5719-llvm-46814bee63480b7bd891a66821f9946575832aed.zip | |
[llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary
For sections with different virtual and physical addresses, alignment and
placement in the output binary should be based on the physical address.
Ran into this problem with a bare metal ARM project where llvm-objcopy added a
lot of zero-padding before the .data section that had differing addresses. GNU
objcopy did not add the padding, and after this fix, neither does llvm-objcopy.
Update a test case so a section has different physical and virtual addresses.
Fixes B35708
Authored By: Owen Shaw (owenpshaw)
Differential Revision: https://reviews.llvm.org/D41619
llvm-svn: 323144
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/binary-no-paddr.test')
| -rw-r--r-- | llvm/test/tools/llvm-objcopy/binary-no-paddr.test | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/binary-no-paddr.test b/llvm/test/tools/llvm-objcopy/binary-no-paddr.test new file mode 100644 index 00000000000..4d2fba889c9 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/binary-no-paddr.test @@ -0,0 +1,42 @@ +# RUN: yaml2obj %s -o %t +# RUN: llvm-objcopy -O binary %t %t2 +# RUN: od -t x2 -v %t2 | FileCheck %s +# RUN: wc -c < %t2 | FileCheck %s --check-prefix=SIZE + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x1000 + AddressAlign: 0x0000000000001000 + Content: "c3c3c3c3" + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x1004 + AddressAlign: 0x0000000000000004 + Content: "3232" +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_X, PF_R ] + VAddr: 0x1000 + PAddr: 0x0000 + Align: 0x1000 + Sections: + - Section: .text + - Type: PT_LOAD + Flags: [ PF_R, PF_W ] + VAddr: 0x1004 + PAddr: 0x0000 + Align: 0x1000 + Sections: + - Section: .data + +# CHECK: 0000000 c3c3 c3c3 3232 +# SIZE: 6 |

