This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix the execution of the MSP430 simulator testsuite.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=296ebfbb91bc9453134c467b4bfe8363582674f7

commit 296ebfbb91bc9453134c467b4bfe8363582674f7
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Jan 5 16:43:58 2016 +0000

    Fix the execution of the MSP430 simulator testsuite.
    
    ld	* emulparams/msp430elf.sh (RAM_START): Move to 0x500 - above the
    	MSP430 hardware multiply address range.
    	* scripttempl/elf32msp430.sc (__romdatastart): Define.
    	(__romdatacopysize): Define.
    	* scripttempl/elf32msp430_3.sc: Likewise.
    
    tests	* testutils.inc (__pass): Use the LMA addresses of the _passmsg
    	symbol.
    	(__fail): Likewise.

Diff:
---
 ld/ChangeLog                           |  8 ++++++++
 ld/emulparams/msp430elf.sh             |  2 +-
 ld/scripttempl/elf32msp430.sc          |  3 +++
 ld/scripttempl/elf32msp430_3.sc        |  3 +++
 sim/testsuite/sim/msp430/ChangeLog     |  6 ++++++
 sim/testsuite/sim/msp430/testutils.inc | 34 ++++++++++++++++++++++++++++++++--
 6 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3aa46ed..528cc6e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,11 @@
+2016-01-05  Nick Clifton  <nickc@redhat.com>
+
+	* emulparams/msp430elf.sh (RAM_START): Move to 0x500 - above the
+	MSP430 hardware multiply address range.
+	* scripttempl/elf32msp430.sc (__romdatastart): Define.
+	(__romdatacopysize): Define.
+	* scripttempl/elf32msp430_3.sc: Likewise.
+
 2016-01-04  Maciej W. Rozycki  <macro@imgtec.com>
 
 	* emultempl/mipself.em (PARSE_AND_LIST_PROLOGUE): Convert
diff --git a/ld/emulparams/msp430elf.sh b/ld/emulparams/msp430elf.sh
index a76e9ee..e9d0237 100644
--- a/ld/emulparams/msp430elf.sh
+++ b/ld/emulparams/msp430elf.sh
@@ -13,6 +13,6 @@ EMBEDDED=yes
 ARCH=msp:14
 ROM_START=0x8000
 ROM_SIZE=0x7fe0
-RAM_START=0x0200
+RAM_START=0x0500
 RAM_SIZE=1K
 STACK=0x600
diff --git a/ld/scripttempl/elf32msp430.sc b/ld/scripttempl/elf32msp430.sc
index 78c7c12..50b7ddb 100644
--- a/ld/scripttempl/elf32msp430.sc
+++ b/ld/scripttempl/elf32msp430.sc
@@ -269,6 +269,9 @@ SECTIONS
     ${RELOCATING+ _edata = . ; }
   } ${RELOCATING+ > data ${RELOCATING+AT> text}}
 
+  __romdatastart = LOADADDR(.data);
+  __romdatacopysize = SIZEOF(.data);
+  
   .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
   {
     ${RELOCATING+. = ALIGN(2);}
diff --git a/ld/scripttempl/elf32msp430_3.sc b/ld/scripttempl/elf32msp430_3.sc
index 7a13081..7ad04e1 100644
--- a/ld/scripttempl/elf32msp430_3.sc
+++ b/ld/scripttempl/elf32msp430_3.sc
@@ -147,6 +147,9 @@ SECTIONS
     ${RELOCATING+ _edata = . ; }
   } ${RELOCATING+ > data ${RELOCATING+AT> text}}
   
+  __romdatastart = LOADADDR(.data);
+  __romdatacopysize = SIZEOF(.data);
+  
   .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
   {
     ${RELOCATING+. = ALIGN(2);}
diff --git a/sim/testsuite/sim/msp430/ChangeLog b/sim/testsuite/sim/msp430/ChangeLog
index d26efad..458ee21 100644
--- a/sim/testsuite/sim/msp430/ChangeLog
+++ b/sim/testsuite/sim/msp430/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-05  Nick Clifton  <nickc@redhat.com>
+
+	* testutils.inc (__pass): Use the LMA addresses of the _passmsg
+	symbol.
+	(__fail): Likewise.
+
 2014-03-10  Mike Frysinger  <vapier@gentoo.org>
 
 	* add.s, allinsn.exp, testutils.inc: New files.
diff --git a/sim/testsuite/sim/msp430/testutils.inc b/sim/testsuite/sim/msp430/testutils.inc
index 6c540b1..1ddef23 100644
--- a/sim/testsuite/sim/msp430/testutils.inc
+++ b/sim/testsuite/sim/msp430/testutils.inc
@@ -9,13 +9,43 @@
 	.global __pass
 	.type __pass, function
 __pass:
-	write 1, _passmsg, 5
+	# Note - we cannot just invoke:
+	#
+	#  write 1, _passmsg, 5
+	#
+	# here because _passmsg contains the run-time (VMA) address of
+	# the pass string (probably 0x500) not the load-time (LMA)
+	# address (probably 0x804c).  Normally using the VMA address
+	# would be the correct thing to do - *if* there was some start
+	# up code which copied data from LMA to VMA.  But we have no
+	# start up code, so the data still resides at the LMA
+	# address.  Hence we use __romdatastart instead.
+	#
+	# Note - we are cheating because the address that we pass to
+	# "write" should actually be:
+	#
+	#    __romdatastart + (_passmsg - __datastart)
+	#
+	# but the assembler cannot cope with this expression.  So we
+	# cheat and use the fact that we know that _passmsg is the
+	# first string in the .data section and so (_passmsg -
+	# __datastart) evaluates to zero.
+
+	write 1, __romdatastart, 5
 	exit 0
 
 	.global __fail
 	.type __fail, function
 __fail:
-	write 1, _failmsg, 5
+	# Note - see above.
+	#
+	#   write 1, _failmsg, 5
+	#
+	# This time we use the fact that _passmsg is aligned to a
+	# 16 byte boundary to work out that (_failmsg - __datastart)
+	# evaluates to 0x10.
+
+	write 1, __romdatastart + 0x10, 5
 	exit 1
 
 	.data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]