MSP430: Add input section rules for .upper sections to default linker script
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Thu, 16 Jan 2020 11:32:23 +0000 (11:32 +0000)
committerJozef Lawrynowicz <jozef.l@mittosystems.com>
Thu, 16 Jan 2020 13:22:31 +0000 (13:22 +0000)
ld/ChangeLog:

2020-01-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* scripttempl/elf32msp430.sc: Add input section rules for
.upper.{text,data,rodata,bss}.
* testsuite/ld-msp430-elf/msp430-elf.exp: Run new test.
* testsuite/ld-msp430-elf/upper-input-sections.s: New test.

ld/ChangeLog
ld/scripttempl/elf32msp430.sc
ld/testsuite/ld-msp430-elf/msp430-elf.exp
ld/testsuite/ld-msp430-elf/upper-input-sections.s [new file with mode: 0644]

index 5208f62cfe4f1799928884f9f62cece64694bf80..7799d7d9fe2587e509408ae0ca9fd4beaeaa782c 100644 (file)
@@ -1,3 +1,10 @@
+2020-01-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+       * scripttempl/elf32msp430.sc: Add input section rules for
+       .upper.{text,data,rodata,bss}.
+       * testsuite/ld-msp430-elf/msp430-elf.exp: Run new test.
+       * testsuite/ld-msp430-elf/upper-input-sections.s: New test.
+
 2020-01-15  Lars Brinkhoff  <lars@nocrew.org>
 
        PR 20694
index 6f716c75e65d90680a15d25585a388b77cc86308..f9ee9ff65be38f7e7f88cd58448704332403bbf7 100644 (file)
@@ -171,6 +171,8 @@ SECTIONS
 
     *(.either.text.* .either.text)
 
+    *(.upper.text.* .upper.text)
+
     . = ALIGN(2);
     *(SORT_NONE(.fini9))
     *(SORT_NONE(.fini8))
@@ -198,6 +200,9 @@ SECTIONS
     ${RELOCATING+*(.rodata1)
 
     *(.either.rodata.*) *(.either.rodata)
+
+    *(.upper.rodata.* .upper.rodata)
+
     *(.eh_frame_hdr)
     KEEP (*(.eh_frame))
 
@@ -267,6 +272,8 @@ SECTIONS
 
     *(.either.data.* .either.data)
 
+    *(.upper.data.* .upper.data)
+
     *(.got.plt) *(.got)
     . = ALIGN(2);
     *(.sdata .sdata.* .gnu.linkonce.s.*)
@@ -286,6 +293,7 @@ SECTIONS
     . = ALIGN(2);}
     *(.bss)
     ${RELOCATING+*(.either.bss.* .either.bss)
+    *(.upper.bss.* .upper.bss)
     *(COMMON)
     PROVIDE (__bss_end = .);}
   } ${RELOCATING+ > data}
index 777b358a745724660c8b5847fc331957d1f1e8a2..e9a0fdc6292973f959f040716205c498507e9bc5 100644 (file)
@@ -176,6 +176,8 @@ run_ld_link_tests $msp430warntests
 run_dump_test valid-map
 run_ld_link_tests {{ "Check no reloc overflow with #lo and data in the upper region"
         "-m msp430X" "" "" {reloc-lo-430x.s} {} "reloc-lo-430x"}}
+run_ld_link_tests {{ "Check .upper prefixed input sections can be placed"
+        "-m msp430X" "" "" {upper-input-sections.s} {} "upper-input-sections"}}
 
 # Don't run data region tests if a data region is specified
 if {[string match "*-mdata-region*" [board_info [target_info name] multilib_flags]]} {
diff --git a/ld/testsuite/ld-msp430-elf/upper-input-sections.s b/ld/testsuite/ld-msp430-elf/upper-input-sections.s
new file mode 100644 (file)
index 0000000..c816f30
--- /dev/null
@@ -0,0 +1,33 @@
+.text
+       .balign 2
+  .section .upper.text,"ax",@progbits
+       .global foo
+       .type   foo, @function
+foo:
+  MOV.W        #42, R8
+       RETA
+       .size   foo, .-foo
+
+       .balign 2
+       .global main
+       .type   main, @function
+main:
+       CALLA   #foo
+.L4:
+       BRA     #.L4
+       .size   main, .-main
+       .section        .upper.bss,"aw",@nobits
+       .balign 2
+       .global P
+P:
+       .zero 4
+       .section        .upper.data,"aw",@progbits
+       .balign 2
+       .global Q
+Q:
+       .long 4
+       .section        .upper.rodata,"aw",@progbits
+       .balign 2
+       .global R
+R:
+       .word 8