OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.cell/] [sizeof.exp] - Blame information for rev 326

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
# Copyright 2009 Free Software Foundation, Inc.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 3 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program.  If not, see .
15
#
16
# Contributed by Markus Deuling .
17
#
18
# Testsuite for Cell Broadband Engine combined debugger
19
# Check size of data types both on PPU and SPU.
20
 
21
load_lib cell.exp
22
 
23
set ppu_file "size"
24
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
25
set ppu_bin ${objdir}/${subdir}/${ppu_file}
26
set spu_file "size-spu"
27
set spu_src ${srcdir}/${subdir}/${spu_file}.c
28
set spu_bin ${objdir}/${subdir}/${spu_file}
29
 
30
if {[skip_cell_tests]} {
31
    return 0
32
}
33
 
34
# Compile SPU binary.
35
if { [gdb_compile_cell_spu $spu_src $spu_bin executable {debug}]  != "" } {
36
  unsupported "Compiling spu binary failed."
37
  return -1
38
}
39
# Compile PPU binary.
40
if { [gdb_cell_embedspu $spu_bin $spu_bin-embed.o {debug}]  != "" } {
41
  unsupported "Embedding spu binary failed."
42
  return -1
43
}
44
if { [gdb_compile_cell_ppu [list $ppu_src $spu_bin-embed.o] $ppu_bin executable {debug}] != "" } {
45
  unsupported "Compiling ppu binary failed."
46
  return -1
47
}
48
 
49
if [get_compiler_info ${ppu_bin}] {
50
  return -1
51
}
52
 
53
 
54
# Ask GDB about the sizes of data types.  This has
55
# to be done in PPU thread and SPU thread.
56
proc get_gdb_size { type } {
57
  global gdb_prompt
58
 
59
  set val "0"
60
  gdb_test_multiple "print/d sizeof(${type})" "get sizeof(${type})" {
61
    -re "\\$\[0-9\]* = (\[-\]*\[0-9\]*).*$gdb_prompt $" {
62
        set val $expect_out(1,string)
63
        pass "get sizeof ($type) = $val"
64
    }
65
  }
66
  return ${val}
67
}
68
 
69
# Compare sizes from GDB and sizeof().
70
proc size_compare { type gdb_size } {
71
  set expr [string_to_regexp "sizeof(${type})=${gdb_size}"]
72
  gdb_test "next" \
73
           ".*" \
74
           "next"
75
  # Checks against string_to_regexp fails in remote testing.
76
  if ![is_remote target] {
77
    gdb_test "next" \
78
             "${expr}.*" \
79
             "check sizeof \"$type\" \"$gdb_size\" "
80
  } else {
81
    gdb_test "next" ".*" "check sizeof deactivate in remote testing"
82
  }
83
}
84
 
85
gdb_exit
86
gdb_start
87
gdb_reinitialize_dir $srcdir/$subdir
88
gdb_load ${ppu_bin}
89
 
90
if ![runto_main] then {
91
  fail "Can't run to main"
92
  return 0
93
}
94
 
95
# Compare sizes.
96
size_compare "char" [get_gdb_size "char"]
97
size_compare "short" [get_gdb_size "short"]
98
size_compare "int" [get_gdb_size "int"]
99
size_compare "long" [get_gdb_size "long"]
100
size_compare "long long" [get_gdb_size "long long"]
101
size_compare "float" [get_gdb_size "float"]
102
size_compare "double" [get_gdb_size "double"]
103
size_compare "long double" [get_gdb_size "long double"]
104
 
105
# Continue to SPU thread.
106
cont_spu_main
107
check_spu_arch ""
108
 
109
# Compare sizes in SPU thread.
110
size_compare "char" [get_gdb_size "char"]
111
size_compare "short" [get_gdb_size "short"]
112
size_compare "int" [get_gdb_size "int"]
113
size_compare "long" [get_gdb_size "long"]
114
size_compare "long long" [get_gdb_size "long long"]
115
size_compare "float" [get_gdb_size "float"]
116
size_compare "double" [get_gdb_size "double"]
117
size_compare "long double" [get_gdb_size "long double"]
118
 
119
gdb_exit
120
return 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.