OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [compat/] [struct-layout-1.exp] - Blame information for rev 823

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

Line No. Rev Author Line
1 149 jeremybenn
# Copyright (C) 2002, 2003, 2004, 2005, 2007 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 GCC; see the file COPYING3.  If not see
15
# .
16
#
17
# This file was written by Jakub Jelinek, 
18
# Based on compat.exp writte by Janis Johnson, 
19
 
20
 
21
# Test interoperability of two compilers that follow the same ABI.
22
#
23
# Break simple tests into two pieces and see that they work when linked
24
# together.  If an alternate compiler is specified then the two main
25
# pieces of each test are compiled with different compilers.  The
26
# alternate compiler must be installed, and is specified by defining
27
# ALT_CXX_UNDER_TEST in the environment.
28
#
29
# struct-layout-1 are generated structure layout interoperability tests,
30
# so a generator first needs to be compiled on host, run there and the
31
# generated tests then compiled on build and executed on target.
32
 
33
if $tracelevel then {
34
    strace $tracelevel
35
}
36
 
37
global GXX_UNDER_TEST
38
global ld_library_path
39
 
40
# Load procedures from common libraries.
41
load_lib standard.exp
42
load_lib g++.exp
43
load_lib target-libpath.exp
44
 
45
#
46
# compat-use-alt-compiler -- make the alternate compiler the default
47
#
48
proc compat-use-alt-compiler { } {
49
    global GXX_UNDER_TEST ALT_CXX_UNDER_TEST
50
    global CXXFLAGS
51
    global ALWAYS_CXXFLAGS
52
    global ld_library_path alt_ld_library_path
53
    global same_alt
54
 
55
    # We don't need to do this if the alternate compiler is actually
56
    # the same as the compiler under test.
57
    if { $same_alt == 0 } then {
58
        set GXX_UNDER_TEST $ALT_CXX_UNDER_TEST
59
        set CXXFLAGS ""
60
        set ALWAYS_CXXFLAGS ""
61
        set ld_library_path $alt_ld_library_path
62
        set_ld_library_path_env_vars
63
    }
64
}
65
 
66
#
67
# compat-use-tst-compiler -- make compiler under test the default
68
#
69
proc compat-use-tst-compiler { } {
70
    global GXX_UNDER_TEST save_gxx_under_test
71
    global CXXFLAGS save_cxxflags
72
    global ALWAYS_CXXFLAGS save_always_cxxflags
73
    global ld_library_path save_ld_library_path
74
    global same_alt
75
 
76
    # We don't need to do this if the alternate compiler is actually
77
    # the same as the compiler under test.
78
 
79
    if { $same_alt == 0 } then {
80
        set GXX_UNDER_TEST $save_gxx_under_test
81
        set CXXFLAGS $save_cxxflags
82
        set ALWAYS_CXXFLAGS $save_always_cxxflags
83
        set ld_library_path $save_ld_library_path
84
        set_ld_library_path_env_vars
85
    }
86
}
87
 
88
# Load the language-independent compabibility support procedures.
89
# This must be done after the compat-use-*-compiler definitions.
90
load_lib compat.exp
91
 
92
g++_init
93
 
94
# Save variables for the C++ compiler under test, which each test will
95
# change a couple of times.  This must be done after calling g++-init.
96
set save_gxx_under_test $GXX_UNDER_TEST
97
set save_cxxflags $CXXFLAGS
98
set save_always_cxxflags $ALWAYS_CXXFLAGS
99
set save_ld_library_path $ld_library_path
100
 
101
# Define an identifier for use with this suite to avoid name conflicts
102
# with other compat tests running at the same time.
103
set sid "cp_compat"
104
 
105
# Find out whether there is an alternate compiler to test.  If the
106
# variable is defined but is set to "same", that means we use the same
107
# compiler twice, which is meaningful if the two parts of COMPAT_OPTIONS
108
# are different.
109
set use_alt 0
110
set same_alt 0
111
set alt_ld_library_path "."
112
if [info exists ALT_CXX_UNDER_TEST] then {
113
    set use_alt 1
114
    if [string match "same" $ALT_CXX_UNDER_TEST] then {
115
        set same_alt 1
116
    } else {
117
        if [info exists ALT_LD_LIBRARY_PATH] then {
118
            append alt_ld_library_path ":${ALT_LD_LIBRARY_PATH}"
119
        }
120
    }
121
}
122
 
123
set tstobjdir "$tmpdir/g++.dg-struct-layout-1"
124
set generator "$tmpdir/g++.dg-struct-layout-1_generate"
125
 
126
set generator_src "$srcdir/$subdir/struct-layout-1_generate.c"
127
set generator_src "$generator_src $srcdir/$subdir/../../gcc.dg/compat/generate-random.c"
128
set generator_src "$generator_src $srcdir/$subdir/../../gcc.dg/compat/generate-random_r.c"
129
set generator_cmd "-o $generator $generator_src"
130
 
131
set status [remote_exec host "$HOSTCC $HOSTCFLAGS $generator_cmd"]
132
set status [lindex $status 0]
133
if { $status == 0 } then {
134
    file delete -force $tstobjdir
135
    file mkdir $tstobjdir
136
    set generator_args "-s $srcdir/$subdir -d $tstobjdir"
137
    if [info exists env(RUN_ALL_COMPAT_TESTS) ] then {
138
        set generator_args "$generator_args -n 15000"
139
    }
140
    if [check_effective_target_short_enums] then {
141
        set generator_args "-e $generator_args"
142
    }
143
    set status [remote_exec host "$generator $generator_args"]
144
    set status [lindex $status 0]
145
    if { $status == 0 } then {
146
        foreach src [lsort [find $tstobjdir *_main.C]] {
147
            # If we're only testing specific files and this isn't one
148
            # of them, skip it.
149
            if ![runtest_file_p $runtests $src] then {
150
                continue
151
            }
152
 
153
            compat-execute $src $sid $use_alt
154
        }
155
    } else {
156
        warning "Could not execute g++.dg/compat/struct-layout-1 generator"
157
    }
158
} else {
159
    warning "Could not compile g++.dg/compat/struct-layout-1 generator"
160
}
161
 
162
# Restore the original compiler under test.
163
compat-use-tst-compiler

powered by: WebSVN 2.1.0

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