aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Savoye <rob@welcomehome.org>2002-03-07 05:12:59 +0000
committerRob Savoye <rob@welcomehome.org>2002-03-07 05:12:59 +0000
commit167ba105e840dedcd795b9527bb7bac4318fd277 (patch)
treee8d1b3bc2b80c0c2d75c4fdaa443b9eda936f480
parent8bd9e0e9da1fadb663b268cb061ea7540935b18c (diff)
New baseboard support file, fix indenting in remote.exp.
-rw-r--r--baseboards/mmixware-sim.exp60
-rw-r--r--lib/remote.exp20
2 files changed, 70 insertions, 10 deletions
diff --git a/baseboards/mmixware-sim.exp b/baseboards/mmixware-sim.exp
new file mode 100644
index 0000000..0c51502
--- /dev/null
+++ b/baseboards/mmixware-sim.exp
@@ -0,0 +1,60 @@
+# This is a list of toolchains that are supported on this board.
+set_board_info target_install {mmix-knuth-mmixware}
+
+# Load the generic configuration for this board. This will define any
+# routines needed to communicate with the board.
+load_generic_config "sim"
+
+# Unset the slow_simulator flag; this simulator isn't slow. (I haven't
+# found documentation as to what constitutes a "slow" simulator and
+# there's no reference to that variable in the GCC test-suite, but all
+# tests I've found work.)
+unset_board_info slow_simulator
+
+# We don't use basic-sim.exp and setup_sim because the simulator, called
+# "mmix", is external to the build tree. If nobody set the simulator
+# name, we set it to "mmix", so the rest of the framework works. Let $SIM
+# override.
+if ![board_info $board exists sim] {
+ if [info exists SIM] {
+ set_board_info sim $SIM
+ } else {
+ # Has to exist in the users path.
+ set_board_info sim mmix
+ }
+}
+
+# No default multilib options are needed for this board.
+process_multilib_options ""
+
+set_board_info is_simulator 1
+
+# It isn't visible in the target triple, so we set it explicitly. The
+# *linked* format is currently mmo, but those cases where this matters we
+# can deal with separately.
+set_board_info obj_format "elf"
+
+# The compiler used to build for this board. This has *nothing* to do
+# with what compiler is tested if we're testing gcc.
+set_board_info compiler "[find_gcc]"
+
+# We only support newlib on this target. We assume that all multilib
+# options have been specified before we get here.
+set_board_info cflags "[newlib_include_flags]"
+
+# We put the stack in the code segment, so trampolines work; the mmix
+# simulator does not allow code to be executed in the "normal" documented
+# data and stack segments. Use a somewhat magic number, so stack addresses
+# are easily recognized when debugging.
+set_board_info ldflags "[newlib_link_flags] -Wl,--defsym,__Stack_start=0x1680a00000000000"
+
+# No linker script needed - the simulator is the main environment for this
+# target.
+set_board_info ldscript ""
+
+# Return codes aren't supported by the simulator.
+set_board_info needs_status_wrapper 1
+
+# FIXME: Some gdb board variables are usually here. I currently have
+# no clue what to set them to, so I won't.
+
diff --git a/lib/remote.exp b/lib/remote.exp
index a209930..518bf26 100644
--- a/lib/remote.exp
+++ b/lib/remote.exp
@@ -1067,16 +1067,16 @@ proc standard_wait { dest timeout } {
proc check_for_board_status { variable } {
upvar $variable output;
-
- # If all programs of this board have a wrapper that always outputs a
- # status message, then the absence of it means that the program
- # crashed, regardless of status found elsewhere (e.g. simulator exit
- # code).
- if { [target_info needs_status_wrapper] != "" } then {
+
+ # If all programs of this board have a wrapper that always outputs a
+ # status message, then the absence of it means that the program
+ # crashed, regardless of status found elsewhere (e.g. simulator exit
+ # code).
+ if { [target_info needs_status_wrapper] != "" } then {
set nomatch_return 2
- } else {
+ } else {
set nomatch_return -1
- }
+ }
if [regexp "(^|\[\r\n\])\\*\\*\\* EXIT code" $output] {
regsub "^.*\\*\\*\\* EXIT code " $output "" result;
@@ -1087,9 +1087,9 @@ proc check_for_board_status { variable } {
verbose "got board status $result" 3
verbose "output is $output" 3
if { $result == "" } {
- return $nomatch_return;
+ return $nomatch_return
} else {
- return [expr $result];
+ return [expr $result]
}
} else {
return $nomatch_return;