aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04.exp
blob: 0a9895022837e9d7a432c65bd46f2c569cdcbd1b (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
# Test reading debug information from in object files.

if { [skip_hp_tests] } { continue }

if { ![istarget "hppa*-*-hpux*"] } {
    verbose "HPUX test ignored for non-hppa targets."
    return 0
}

set testfile "test"
set srcsubdir ${srcdir}/${subdir}/objdbg04
set objdbgdir ${objdir}/${subdir}/objdbg04
set binfile ${objdbgdir}/${testfile}
set toolssubdir ${srcdir}/${subdir}/tools
set symaddrfile ${toolssubdir}/symaddr

# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
    return -1
}

if {!$hp_aCC_compiler && !$hp_cc_compiler} {
  return 0
}

if { [gdb_compile "${toolssubdir}/test-objdbg.cc" "${objdbgdir}/test-objdbg.o" object "debug c++ {additional_flags=-I${toolssubdir} +objdebug}"] != "" } {
    untested objdbg04.exp
    return -1
}

if { [gdb_compile "${srcsubdir}/x1.cc" "${objdbgdir}/x1.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
    perror "Couldn't compile x1.cc"
    return -1
}

if { [gdb_compile "${srcsubdir}/x2.cc" "${objdbgdir}/x2.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
    perror "Couldn't compile x2.cc"
    return -1
}

if { [gdb_compile "${objdbgdir}/x1.o ${objdbgdir}/x2.o" "${binfile}0" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
    perror "Couldn't compile x1.cc"
    return -1
}

if { [gdb_compile "${objdbgdir}/x2.o ${objdbgdir}/x1.o" "${binfile}1" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
    perror "Couldn't compile x1.cc"
    return -1
}

# Test two executables. The first has x1.cc linked first, the second
# has x2.cc linked first.  The difference is which COMDAT section was
# picked.

for {set filenum 0} {$filenum < 2} {incr filenum 1} {
  gdb_exit
  gdb_start
  gdb_reinitialize_dir ${srcsubdir}
  gdb_load ${binfile}${filenum}

  gdb_test "ptype Adder" "type = template <class T> (class |)Adder {..*T val.*;.*}(.*template instantiations:.*Adder<int>|)"
  gdb_test "ptype Adder<int>" "type = (class |)Adder<int> {.*private:.*int val;.*public:.*void set( |)\\(int\\);.*int get( |)\\(void\\);.*int add( |)\\(int\\);.*}"
  gdb_test "ptype Adder" "type = template <class T> (class |)Adder {..*T val.*;.*}(.*template instantiations:.*Adder<int>|)"

}