aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2009-01-21 02:27:13 +0000
committerAlan Modra <amodra@gmail.com>2009-01-21 02:27:13 +0000
commitfb266b8bce71ad8f875c81a00978578e5ac3874c (patch)
treeaedee562bf6190cb1d0a2dab35b02f4d3a493bcc /ld
parentf6a96b83ac540c203c92a19e90bfbe61e3a57cc1 (diff)
downloadfsf-binutils-gdb-fb266b8bce71ad8f875c81a00978578e5ac3874c.zip
fsf-binutils-gdb-fb266b8bce71ad8f875c81a00978578e5ac3874c.tar.gz
fsf-binutils-gdb-fb266b8bce71ad8f875c81a00978578e5ac3874c.tar.bz2
bfd/
* elf32-spu.h (struct spu_elf_params): Add non_ia_text. * elf32-spu.c (mark_overlay_section): Only include .text.ia.* sections in soft-icache lines unless non_ia_text. Don't add rodata if doing so would exceed line size. ld/ * emultempl/spuelf.em (params): Init new field. (OPTION_SPU_NON_IA_TEXT): Define. (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add --non-ia-text. (PARSE_AND_LIST_ARGS_CASES): Handle OPTION_SPU_NON_IA_TEXT.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog7
-rw-r--r--ld/emultempl/spuelf.em11
2 files changed, 16 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index a73efc5..b45626a 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2009-01-21 Alan Modra <amodra@bigpond.net.au>
+
+ * emultempl/spuelf.em (params): Init new field.
+ (OPTION_SPU_NON_IA_TEXT): Define.
+ (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add --non-ia-text.
+ (PARSE_AND_LIST_ARGS_CASES): Handle OPTION_SPU_NON_IA_TEXT.
+
2009-01-16 H.J. Lu <hongjiu.lu@intel.com>
* lexsup.c (option_values): Add OPTION_TTEXT_SEGMENT.
diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
index f72690d..7c98f71 100644
--- a/ld/emultempl/spuelf.em
+++ b/ld/emultempl/spuelf.em
@@ -37,7 +37,7 @@ static struct spu_elf_params params =
&spu_elf_load_ovl_mgr,
&spu_elf_open_overlay_script,
&spu_elf_relink,
- 0, ovly_normal, 0, 0, 0, 0, 0,
+ 0, ovly_normal, 0, 0, 0, 0, 0, 0,
0, 0x3ffff,
1, 0, 16, 0, 0, 2000
};
@@ -594,7 +594,8 @@ PARSE_AND_LIST_PROLOGUE='
#define OPTION_SPU_LINE_SIZE (OPTION_SPU_SOFT_ICACHE + 1)
#define OPTION_SPU_NUM_LINES (OPTION_SPU_LINE_SIZE + 1)
#define OPTION_SPU_LRLIVE (OPTION_SPU_NUM_LINES + 1)
-#define OPTION_SPU_FIXED_SPACE (OPTION_SPU_LRLIVE + 1)
+#define OPTION_SPU_NON_IA_TEXT (OPTION_SPU_LRLIVE + 1)
+#define OPTION_SPU_FIXED_SPACE (OPTION_SPU_NON_IA_TEXT + 1)
#define OPTION_SPU_RESERVED_SPACE (OPTION_SPU_FIXED_SPACE + 1)
#define OPTION_SPU_EXTRA_STACK (OPTION_SPU_RESERVED_SPACE + 1)
#define OPTION_SPU_NO_AUTO_OVERLAY (OPTION_SPU_EXTRA_STACK + 1)
@@ -606,6 +607,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "lrlive-analysis", no_argument, NULL, OPTION_SPU_LRLIVE },
{ "num-lines", required_argument, NULL, OPTION_SPU_NUM_LINES },
{ "line-size", required_argument, NULL, OPTION_SPU_LINE_SIZE },
+ { "non-ia-text", no_argument, NULL, OPTION_SPU_NON_IA_TEXT },
{ "no-overlays", no_argument, NULL, OPTION_SPU_NO_OVERLAYS },
{ "emit-stub-syms", no_argument, NULL, OPTION_SPU_STUB_SYMS },
{ "extra-overlay-stubs", no_argument, NULL, OPTION_SPU_NON_OVERLAY_STUBS },
@@ -647,6 +649,7 @@ PARSE_AND_LIST_OPTIONS='
--soft-icache Generate software icache overlays.\n\
--num-lines Number of soft-icache lines (default 32).\n\
--line-size Size of soft-icache lines (default 1k).\n\
+ --non-ia-text Allow non-icache code in icache lines.\n\
--lrlive-analysis Scan function prologue for lr liveness.\n"
));
'
@@ -725,6 +728,10 @@ PARSE_AND_LIST_ARGS_CASES='
params.lrlive_analysis = 1;
break;
+ case OPTION_SPU_NON_IA_TEXT:
+ params.non_ia_text = 1;
+ break;
+
case OPTION_SPU_NUM_LINES:
{
char *end;