This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[ARM-FDPIC 07/12] [ARM] FDPIC: Add stack segment
- From: Christophe Lyon <christophe dot lyon at st dot com>
- To: <binutils at sourceware dot org>
- Date: Thu, 22 Mar 2018 15:38:25 +0100
- Subject: [ARM-FDPIC 07/12] [ARM] FDPIC: Add stack segment
- References: <20180322143850.1766-1-christophe.lyon@st.com>
The size of the stack segment defaults to 32KB, and can be overridden
by defining the __stacksize symbol.
2018-XX-XX Christophe Lyon <christophe.lyon@st.com>
Mickaël Guêné <mickael.guene@st.com>
bfd/
* elf32-arm.c (DEFAULT_STACK_SIZE): New.
(elf32_arm_always_size_sections): Create stack segment.
---
bfd/elf32-arm.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 0e03c77..6ba4ee4 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -2251,6 +2251,9 @@ typedef unsigned short int insn16;
section. */
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
+/* FDPIC default stack size. */
+#define DEFAULT_STACK_SIZE 0x8000
+
static const unsigned long tls_trampoline [] =
{
0xe08e0000, /* add r0, lr, r0 */
@@ -16488,6 +16491,7 @@ maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
/* Not an error, just cut short the traversal. */
return FALSE;
}
+
return TRUE;
}
@@ -16958,6 +16962,9 @@ elf32_arm_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
asection *tls_sec;
+ struct elf32_arm_link_hash_table *htab;
+
+ htab = elf32_arm_hash_table (info);
if (bfd_link_relocatable (info))
return TRUE;
@@ -16990,6 +16997,12 @@ elf32_arm_always_size_sections (bfd *output_bfd,
(*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE);
}
}
+
+ if (htab->fdpic_p && !bfd_link_relocatable (info)
+ && !bfd_elf_stack_segment_size (output_bfd, info,
+ "__stacksize", DEFAULT_STACK_SIZE))
+ return FALSE;
+
return TRUE;
}
--
2.6.3