summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/s390/boot/vmlinux.lds.S11
-rw-r--r--arch/s390/kernel/vmlinux.lds.S11
2 files changed, 16 insertions, 6 deletions
diff --git a/arch/s390/boot/vmlinux.lds.S b/arch/s390/boot/vmlinux.lds.S
index e3208893ba6b..3d7ea585ab99 100644
--- a/arch/s390/boot/vmlinux.lds.S
+++ b/arch/s390/boot/vmlinux.lds.S
@@ -144,13 +144,18 @@ SECTIONS
ELF_DETAILS
/*
- * Sections that should stay zero sized, which is safer to
- * explicitly check instead of blindly discarding.
+ * Make sure that the .got.plt is either completely empty or it
+ * contains only the three reserved double words.
*/
.got.plt : {
*(.got.plt)
}
- ASSERT(SIZEOF(.got.plt) == 0, "Unexpected GOT/PLT entries detected!")
+ ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
+
+ /*
+ * Sections that should stay zero sized, which is safer to
+ * explicitly check instead of blindly discarding.
+ */
.plt : {
*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
}
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 404883b1b023..9c59715d1745 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -266,13 +266,18 @@ SECTIONS
ELF_DETAILS
/*
- * Sections that should stay zero sized, which is safer to
- * explicitly check instead of blindly discarding.
+ * Make sure that the .got.plt is either completely empty or it
+ * contains only the three reserved double words.
*/
.got.plt : {
*(.got.plt)
}
- ASSERT(SIZEOF(.got.plt) == 0, "Unexpected GOT/PLT entries detected!")
+ ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
+
+ /*
+ * Sections that should stay zero sized, which is safer to
+ * explicitly check instead of blindly discarding.
+ */
.plt : {
*(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
}