aboutsummaryrefslogtreecommitdiff
path: root/ld/emulparams
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2020-07-19 06:08:07 +0200
committerHans-Peter Nilsson <hp@bitrange.com>2020-07-19 06:08:07 +0200
commit4609ada49f559880e85aecc2f37f377e5bff8696 (patch)
treeba1f1bf3860b622dc0388ec9264be13775c31c32 /ld/emulparams
parente10a07b32dc1faed25b5bbcbbc47d68e2ff537b9 (diff)
downloadgdb-4609ada49f559880e85aecc2f37f377e5bff8696.zip
gdb-4609ada49f559880e85aecc2f37f377e5bff8696.tar.gz
gdb-4609ada49f559880e85aecc2f37f377e5bff8696.tar.bz2
ld: optionally emit _etext last, before .data
So, here's my suggestion for making _init .. __etext cover .text + .rodata (including things like the read-only exception tables) for elf64mmix. A quick web search gives that __etext (and friends) isn't well defined, so each target can interpret the "end of text segment" to their own liking. It seems likely this change is also a better fit than the default for other ports, at least those with .rodata after .text in the same segment. The presence of a separate rodata-segment is optional (and not true for elf64mmix). This is reflected in the name as SEPARATE_TEXT / SEPARATE_CODE isn't considered, to keep it simple; each target has to make sure their settings of variables make sense. ld: * scripttempl/elf.sc (ETEXT_LAST_IN_RODATA_SEGMENT): New variable. * emulparams/elf64mmix.sh (ETEXT_LAST_IN_RODATA_SEGMENT): Define. * testsuite/ld-mmix/sec-1.d: Adjust.
Diffstat (limited to 'ld/emulparams')
-rw-r--r--ld/emulparams/elf64mmix.sh4
1 files changed, 4 insertions, 0 deletions
diff --git a/ld/emulparams/elf64mmix.sh b/ld/emulparams/elf64mmix.sh
index dffc6cc..75e24be 100644
--- a/ld/emulparams/elf64mmix.sh
+++ b/ld/emulparams/elf64mmix.sh
@@ -44,6 +44,10 @@ ${RELOCATING+
PROVIDE (Main = DEFINED (Main) ? Main : (DEFINED (_start) ? _start : _start.));
}"
+# We need a symbol at the end of the read-only data, which is
+# colocated with the code. We make __etext fit.
+ETEXT_LAST_IN_RODATA_SEGMENT=" "
+
OTHER_SECTIONS='
.MMIX.reg_contents :
{