summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2019-07-10 16:36:46 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2019-07-10 16:36:46 +0000
commit893f8d719c0e6d7ccdfbd0b7dff83709fffadd9b (patch)
tree6edaeae4ccd5e83206dd8e00c5f34ee4b8d862d7
parent5eb6ba060a2fdb34ef92ab833b81ad183b2cbbfe (diff)
downloadbcm5719-llvm-893f8d719c0e6d7ccdfbd0b7dff83709fffadd9b.tar.gz
bcm5719-llvm-893f8d719c0e6d7ccdfbd0b7dff83709fffadd9b.zip
MC: AArch64: Add support for pg_hi21_nc relocation specifier.
Differential Revision: https://reviews.llvm.org/D64455 llvm-svn: 365661
-rw-r--r--llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp2
-rw-r--r--llvm/test/MC/AArch64/adrp-relocation2.s7
2 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 0973d2bd960..f4c55d48d21 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -2502,6 +2502,7 @@ AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
} else if (DarwinRefKind != MCSymbolRefExpr::VK_PAGE &&
DarwinRefKind != MCSymbolRefExpr::VK_GOTPAGE &&
DarwinRefKind != MCSymbolRefExpr::VK_TLVPPAGE &&
+ ELFRefKind != AArch64MCExpr::VK_ABS_PAGE_NC &&
ELFRefKind != AArch64MCExpr::VK_GOT_PAGE &&
ELFRefKind != AArch64MCExpr::VK_GOTTPREL_PAGE &&
ELFRefKind != AArch64MCExpr::VK_TLSDESC_PAGE) {
@@ -3267,6 +3268,7 @@ bool AArch64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) {
.Case("dtprel_hi12", AArch64MCExpr::VK_DTPREL_HI12)
.Case("dtprel_lo12", AArch64MCExpr::VK_DTPREL_LO12)
.Case("dtprel_lo12_nc", AArch64MCExpr::VK_DTPREL_LO12_NC)
+ .Case("pg_hi21_nc", AArch64MCExpr::VK_ABS_PAGE_NC)
.Case("tprel_g2", AArch64MCExpr::VK_TPREL_G2)
.Case("tprel_g1", AArch64MCExpr::VK_TPREL_G1)
.Case("tprel_g1_nc", AArch64MCExpr::VK_TPREL_G1_NC)
diff --git a/llvm/test/MC/AArch64/adrp-relocation2.s b/llvm/test/MC/AArch64/adrp-relocation2.s
new file mode 100644
index 00000000000..8c8b3f05ef9
--- /dev/null
+++ b/llvm/test/MC/AArch64/adrp-relocation2.s
@@ -0,0 +1,7 @@
+// RUN: llvm-mc -triple=aarch64-linux-gnu -filetype=obj -o - %s | llvm-readobj -r - | FileCheck %s
+
+// CHECK: R_AARCH64_ADR_PREL_PG_HI21_NC sym
+adrp x0, :pg_hi21_nc:sym
+
+.globl sym
+sym:
OpenPOWER on IntegriCloud