Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
------------------------------------------------------------------------ r344264 | mstorsjo | 2018-10-11 10:45:51 -0700 (Thu, 11 Oct 2018) | 8 lines [COFF] Set proper pointer size alignment for LocalImportChunk When these are accessed with load/store instructions on ARM64, it becomes strictly necessary to have them properly aligned. This fixes PR39228. Differential Revision: https://reviews.llvm.org/D53128 ------------------------------------------------------------------------ llvm-svn: 344920
- Loading branch information
Showing
2 changed files
with
27 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
// REQUIRES: aarch64 | ||
// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %s -o %t.obj | ||
// RUN: lld-link -entry:main -subsystem:console %t.obj -out:%t.exe | ||
// Don't check the output, just make sure it links fine and doesn't | ||
// error out due to a misaligned load. | ||
.text | ||
.globl main | ||
.globl myfunc | ||
main: | ||
adrp x8, __imp_myfunc | ||
ldr x0, [x8, :lo12:__imp_myfunc] | ||
br x0 | ||
ret | ||
myfunc: | ||
ret | ||
|
||
.section .rdata, "dr" | ||
// Start the .rdata section with a 4 byte chunk, to expose the alignment | ||
// of the next chunk in the section. | ||
mydata: | ||
.byte 42 | ||
// The synthesized LocalImportChunk gets stored here in the .rdata | ||
// section, but needs to get proper 8 byte alignment since it is a | ||
// pointer, just like regular LookupChunks in the IAT. |