aboutsummaryrefslogtreecommitdiff
path: root/config/boards/aarch64-qemu.exp
blob: 835e6dbcda31d626525cb06b55581c45bc91a258 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#
#   Copyright (C) 2014 Linaro, Inc
#
# This program is free software; you can redistribute it and/or modify
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# DejaGnu is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DejaGnu; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

# Load the generic configuration for this board. This will define a basic
# set of routines used to communicate with the board.
load_generic_config "sim"

# No multilib flags needed by default.
process_multilib_options ""

if { [board_info $board obj_format] == "pe" } {
    set additional_options "-Wl,-oformat,pe-aarch64-little,--image-base,0"
    #    set_board_info uses_underscores 1
} else {
    set additional_options ""
}

# basic-sim.exp is a basic description for the standard Cygnus simulator.
load_base_board_description "basic-sim"

# The name of the directory in the build tree where the simulator lives.
setup_sim aarch64

# When testing GCC in tree, the libgloss spec files aren't in a known location,
# so we have to find them in the sysroot. FIXME: this may change in the near 
# future, but for now it works.
set compiler 	"[find_gcc]"
set ret [local_exec "$compiler --print-sysroot" "" "" $timeout]
if { [lindex $ret 0] == 0 } {
    set sysroot "[lindex $ret 1]"
    # Strip the CR or LF off the end of the line as returned by GCC
    regsub -all "\[\n\r\]+" $sysroot "" sysroot
}
set specdir "$sysroot/usr/lib"

# set library path environment variable for qemu
set env(QEMU_LD_PREFIX) $sysroot

# The basic set of flags needed to build "hello world" for this
# board. This board uses libgloss and newlib.

# For bare metal we use libgloss, but for linux hosts this is wrong.
if { [ istarget "aarch64*-none-*"] } {
    set_board_info cflags  "-specs=$specdir/rdimon.specs"
    set_board_info ldflags 	"[libgloss_link_flags] [newlib_link_flags] $additional_options"
} else {
    set_board_info ldflags "-lpthread -ldl"
}

# This board doesn't use a linker script.
set_board_info ldscript ""

# The simulator doesn't return exit statuses and we need to indicate this.
#set_board_info needs_status_wrapper  1

# Used by a few gcc.c-torture testcases to delimit how large the stack can
# be.
#set_board_info gcc,stack_size  16384

# No support for signals.
set_board_info gdb,nosignals 1

# More time is needed to compile PlumHall tests
set_board_info gcc,timeout 800

# Make this variable go away, we don't need it.
unset additional_options