1 if { ! [istarget tic6x
-*-*] } {
5 foreach test
[lsort
[glob
-nocomplain $srcdir
/$subdir
/*.d
]] {
6 if { [runtest_file_p $runtests $test
] } {
7 run_dump_test
[file rootname $test
]
12 {"C6X shared library without --dsbt-index"
13 "-shared -Tdsbt.ld --dsbt-size=3"
14 "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s}
15 {{readelf
-WSsrld shlib
-noindex.rd
}
16 {objdump
"-drj.plt -j.text" shlib-noindex.dd}
17 {objdump
-sj.got shlib
-noindex.sd
}}
19 {"C6X shared library, LE, RELA"
20 "-shared -Tdsbt.ld --dsbt-index=2 --dsbt-size=3"
21 "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s}
22 {{readelf
-WSsrld shlib
-1.rd
}
23 {objdump
"-drj.plt -j.text" shlib-1.dd}
24 {objdump
-sj.got shlib
-1.sd
}}
26 {"C6X nonstatic app using shared library, LE, RELA"
27 "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtest.so"
28 "-mdsbt -mpic -mpid=near" {shlib-app-1.s}
29 {{readelf
-WSsrld shlib
-app
-1.rd
}
30 {objdump
"-drj.plt -j.text" shlib-app-1.dd}
31 {objdump
-sj.got shlib
-app
-1.sd
}
32 {objdump
-R shlib
-app
-1.od
}}
34 {"C6X shared library, LE, REL"
35 "-shared -Tdsbt.ld --dsbt-index=2 --dsbt-size=3"
36 "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-1.s shlib-2.s}
37 {{readelf
-WSsrld shlib
-1r.rd
}
38 {objdump
"-drj.plt -j.text" shlib-1r.dd}
39 {objdump
-sj.got shlib
-1r.sd
}}
41 {"C6X nonstatic app using shared library, LE, REL"
42 "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestr.so"
43 "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-app-1r.s}
44 {{readelf
-WSsrld shlib
-app
-1r.rd
}
45 {objdump
"-drj.plt -j.text" shlib-app-1r.dd}
46 {objdump
-sj.got shlib
-app
-1r.sd
}
47 {objdump
-R shlib
-app
-1r.od
}}
49 {"C6X shared library, BE, RELA"
50 "-shared -Tdsbt-be.ld --dsbt-index=2 --dsbt-size=3"
51 "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-1.s shlib-2.s}
52 {{readelf
-WSsrld shlib
-1b.rd
}
53 {objdump
"-drj.plt -j.text" shlib-1b.dd}
54 {objdump
-sj.got shlib
-1b.sd
}}
56 {"C6X nonstatic app using shared library, BE, RELA"
57 "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestb.so"
58 "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-app-1.s}
59 {{readelf
-WSsrld shlib
-app
-1b.rd
}
60 {objdump
"-drj.plt -j.text" shlib-app-1b.dd}
61 {objdump
-sj.got shlib
-app
-1b.sd
}
62 {objdump
-R shlib
-app
-1b.od
}}
64 {"C6X shared library, BE, REL"
65 "-shared -Tdsbt-be.ld --dsbt-index=2 --dsbt-size=3"
66 "-mdsbt -mpic -mpid=near -mgenerate-rel -mbig-endian" {shlib-1.s shlib-2.s}
67 {{readelf
-WSsrld shlib
-1rb.rd
}
68 {objdump
"-drj.plt -j.text" shlib-1rb.dd}
69 {objdump
-sj.got shlib
-1rb.sd
}}
71 {"C6X nonstatic app using shared library, BE, REL"
72 "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestrb.so"
73 "-mdsbt -mpic -mpid=near -mgenerate-rel -mbig-endian" {shlib-app-1r.s}
74 {{readelf
-WSsrld shlib
-app
-1rb.rd
}
75 {objdump
"-drj.plt -j.text" shlib-app-1rb.dd}
76 {objdump
-sj.got shlib
-app
-1rb.sd
}
77 {objdump
-R shlib
-app
-1rb.od
}}
80 {"C6X static app, LE, RELA"
81 "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3"
82 "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s shlib-app-1.s}
83 {{readelf
-WSsrld static
-app
-1.rd
}
84 {objdump
"-drj.plt -j.text" static-app-1.dd}
85 {objdump
-sj.got static
-app
-1.sd
}
86 {objdump
-R static
-app
-1.od
}}
88 {"C6X static app, LE, REL"
89 "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3"
90 "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-1.s shlib-2.s shlib-app-1r.s}
91 {{readelf
-WSsrld static
-app
-1r.rd
}
92 {objdump
"-drj.plt -j.text" static-app-1r.dd}
93 {objdump
-sj.got static
-app
-1r.sd
}
94 {objdump
-R static
-app
-1r.od
}}
96 {"C6X static app, BE, RELA"
97 "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3"
98 "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-1.s shlib-2.s shlib-app-1.s}
99 {{readelf
-WSsrld static
-app
-1b.rd
}
100 {objdump
"-drj.plt -j.text" static-app-1b.dd}
101 {objdump
-sj.got static
-app
-1b.sd
}
102 {objdump
-R static
-app
-1b.od
}}
104 {"C6X static app, BE, REL"
105 "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3"
106 "-mdsbt -mpic -mpid=near -mbig-endian -mgenerate-rel" {shlib-1.s shlib-2.s shlib-app-1r.s}
107 {{readelf
-WSsrld static
-app
-1rb.rd
}
108 {objdump
"-drj.plt -j.text" static-app-1rb.dd}
109 {objdump
-sj.got static
-app
-1rb.sd
}
110 {objdump
-R static
-app
-1rb.od
}}
114 run_ld_link_tests $shlibtests
116 if { [istarget tic6x
-*-elf
] } {
117 set expected_osabi
"Bare-metal C6000"
118 } elseif
{ [istarget tic6x
-*-uclinux
] } {
119 set expected_osabi
"Linux C6000"
124 if { ![ld_assemble_flags $as
"-mpic -mpid=near" $srcdir/$subdir/shlib-1.s tmpdir/shlib-1.o]
125 ||
![ld_assemble_flags $as
"-mpic -mpid=near" $srcdir/$subdir/shlib-2.s tmpdir/shlib-2.o]
126 ||
![ld_assemble $as $srcdir
/$subdir
/shlib
-app
-1.s tmpdir
/shlib
-app
-1.o
]
127 ||
![ld_assemble_flags $as
"-mpic -mpid=near -mbig-endian" $srcdir/$subdir/shlib-1.s tmpdir/shlib-1b.o]
128 ||
![ld_assemble_flags $as
"-mpic -mpid=near -mbig-endian" $srcdir/$subdir/shlib-2.s tmpdir/shlib-2b.o]
129 ||
![ld_assemble_flags $as
-mbig
-endian $srcdir
/$subdir
/shlib
-app
-1.s tmpdir
/shlib
-app
-1b.o
]
130 ||
![ld_simple_link $
ld tmpdir
/libtest.so
"-shared tmpdir/shlib-1.o tmpdir/shlib-2.o"]
131 ||
![ld_simple_link $
ld tmpdir
/libtestb.so
"-shared -EB tmpdir/shlib-1b.o tmpdir/shlib-2b.o"]
132 ||
![ld_simple_link $
ld tmpdir
/shlib.o
"-r tmpdir/shlib-1.o tmpdir/shlib-2.o"]
133 ||
![ld_simple_link $
ld tmpdir
/shlibb.o
"-r -EB tmpdir/shlib-1b.o tmpdir/shlib-2b.o"]
134 ||
![ld_simple_link $
ld tmpdir
/dynapp
-1 "tmpdir/libtest.so tmpdir/shlib-app-1.o"]
135 ||
![ld_simple_link $
ld tmpdir
/dynapp
-1b
"-EB tmpdir/libtestb.so tmpdir/shlib-app-1b.o"] } {
136 unresolved
"TIC6X OSABI tests"
140 # A procedure to check the OS
/ABI field in the ELF header of a binary file.
141 proc check_osabi_tic6x
{ test_name binary_file
} {
144 global expected_osabi
146 set cmd
"$READELF $READELFFLAGS --file-header $binary_file"
148 set got
[remote_exec host
[concat sh
-c
[list
"$cmd >dump.out"]] "" "/dev/null"]
150 if { [lindex $got
0] != 0 ||
![string match
"" [lindex $got 1]] } then {
152 unresolved
"$test_name"
153 remote_file build
delete "dump.out"
156 remote_upload host
"dump.out"
158 if { ![regexp
"\n\[ \]*OS/ABI:\[ \]*(.+)\n\[ \]*ABI" \
159 [file_contents dump.out
] nil osabi
] } {
160 verbose
"proc check_osabi_tic6x: Readelf failed to extract an ELF header from $binary_file"
161 unresolved
"$test_name"
162 } elseif
{ $osabi
== $expected_osabi
} {
165 verbose
"Expected OSABI: $expected_osabi, Obtained osabi: $osabi"
168 remote_file build
delete "dump.out"
169 remote_file host
delete "dump.out"
172 check_osabi_tic6x
"C6X shared library OSABI, LE" tmpdir/libtest.so
173 check_osabi_tic6x
"C6X shared library OSABI, BE" tmpdir/libtestb.so
174 check_osabi_tic6x
"C6X dynamic app OSABI, LE" tmpdir/dynapp-1
175 check_osabi_tic6x
"C6X dynamic app OSABI, BE" tmpdir/dynapp-1b
177 set expected_osabi
"UNIX - System V"
179 check_osabi_tic6x
"C6X relocatable link OSABI, LE" tmpdir/shlib.o
180 check_osabi_tic6x
"C6X relocatable link OSABI, BE" tmpdir/shlibb.o