xref: /aosp_15_r20/external/dtc/tests/run_tests.sh (revision cd60bc56d4bea3af4ec04523e4d71c2b272c8aff)
1*cd60bc56SAndroid Build Coastguard Worker#! /bin/sh
2*cd60bc56SAndroid Build Coastguard Worker
3*cd60bc56SAndroid Build Coastguard WorkerSRCDIR=`dirname "$0"`
4*cd60bc56SAndroid Build Coastguard Worker. "$SRCDIR/testutils.sh"
5*cd60bc56SAndroid Build Coastguard Worker
6*cd60bc56SAndroid Build Coastguard Workerif [ -z "$CC" ]; then
7*cd60bc56SAndroid Build Coastguard Worker    CC=cc
8*cd60bc56SAndroid Build Coastguard Workerfi
9*cd60bc56SAndroid Build Coastguard Worker
10*cd60bc56SAndroid Build Coastguard Workerif [ -z "$PYTHON" ]; then
11*cd60bc56SAndroid Build Coastguard Worker    PYTHON=python3
12*cd60bc56SAndroid Build Coastguard Workerfi
13*cd60bc56SAndroid Build Coastguard Worker
14*cd60bc56SAndroid Build Coastguard Workerif [ -n "$NO_PYTHON" ]; then
15*cd60bc56SAndroid Build Coastguard Worker    if [ "$NO_PYTHON" != "0" ]; then
16*cd60bc56SAndroid Build Coastguard Worker        no_python=true
17*cd60bc56SAndroid Build Coastguard Worker    else
18*cd60bc56SAndroid Build Coastguard Worker        no_python=false
19*cd60bc56SAndroid Build Coastguard Worker    fi
20*cd60bc56SAndroid Build Coastguard Workerelse
21*cd60bc56SAndroid Build Coastguard Worker    if [ -f ../pylibfdt/_libfdt.so ] || [ -f ../pylibfdt/_libfdt.cpython-3*.so ]; then
22*cd60bc56SAndroid Build Coastguard Worker        no_python=false
23*cd60bc56SAndroid Build Coastguard Worker    else
24*cd60bc56SAndroid Build Coastguard Worker        no_python=true
25*cd60bc56SAndroid Build Coastguard Worker    fi
26*cd60bc56SAndroid Build Coastguard Workerfi
27*cd60bc56SAndroid Build Coastguard Worker
28*cd60bc56SAndroid Build Coastguard Workerif [ -n "$NO_YAML" ]; then
29*cd60bc56SAndroid Build Coastguard Worker    if [ "$NO_YAML" != "0" ]; then
30*cd60bc56SAndroid Build Coastguard Worker        no_yaml=true
31*cd60bc56SAndroid Build Coastguard Worker    else
32*cd60bc56SAndroid Build Coastguard Worker        no_yaml=false
33*cd60bc56SAndroid Build Coastguard Worker    fi
34*cd60bc56SAndroid Build Coastguard Workerelse
35*cd60bc56SAndroid Build Coastguard Worker    if pkg-config --exists yaml-0.1; then
36*cd60bc56SAndroid Build Coastguard Worker        no_yaml=false
37*cd60bc56SAndroid Build Coastguard Worker    else
38*cd60bc56SAndroid Build Coastguard Worker        no_yaml=true
39*cd60bc56SAndroid Build Coastguard Worker    fi
40*cd60bc56SAndroid Build Coastguard Workerfi
41*cd60bc56SAndroid Build Coastguard Worker
42*cd60bc56SAndroid Build Coastguard Worker# stat differs between platforms
43*cd60bc56SAndroid Build Coastguard Workerif [ -z "$STATSZ" ]; then
44*cd60bc56SAndroid Build Coastguard Worker	stat --version 2>/dev/null | grep -q 'GNU'
45*cd60bc56SAndroid Build Coastguard Worker	GNUSTAT=$?
46*cd60bc56SAndroid Build Coastguard Worker	if [ "$GNUSTAT" -ne 0 ]; then
47*cd60bc56SAndroid Build Coastguard Worker		# Assume BSD stat if we can't detect as GNU stat
48*cd60bc56SAndroid Build Coastguard Worker		STATSZ="stat -f %Uz"
49*cd60bc56SAndroid Build Coastguard Worker	else
50*cd60bc56SAndroid Build Coastguard Worker		STATSZ="stat -c %s"
51*cd60bc56SAndroid Build Coastguard Worker	fi
52*cd60bc56SAndroid Build Coastguard Workerfi
53*cd60bc56SAndroid Build Coastguard Worker
54*cd60bc56SAndroid Build Coastguard Worker# Help things find the libfdt shared object
55*cd60bc56SAndroid Build Coastguard Workerif [ -z "$TEST_LIBDIR" ]; then
56*cd60bc56SAndroid Build Coastguard Worker    TEST_LIBDIR=../libfdt
57*cd60bc56SAndroid Build Coastguard Workerfi
58*cd60bc56SAndroid Build Coastguard Workerexport LD_LIBRARY_PATH="$TEST_LIBDIR"
59*cd60bc56SAndroid Build Coastguard Worker
60*cd60bc56SAndroid Build Coastguard Workerexport QUIET_TEST=1
61*cd60bc56SAndroid Build Coastguard WorkerSTOP_ON_FAIL=0
62*cd60bc56SAndroid Build Coastguard Worker
63*cd60bc56SAndroid Build Coastguard Workerexport VALGRIND=
64*cd60bc56SAndroid Build Coastguard WorkerVGCODE=126
65*cd60bc56SAndroid Build Coastguard Worker
66*cd60bc56SAndroid Build Coastguard Workertot_tests=0
67*cd60bc56SAndroid Build Coastguard Workertot_pass=0
68*cd60bc56SAndroid Build Coastguard Workertot_fail=0
69*cd60bc56SAndroid Build Coastguard Workertot_config=0
70*cd60bc56SAndroid Build Coastguard Workertot_vg=0
71*cd60bc56SAndroid Build Coastguard Workertot_strange=0
72*cd60bc56SAndroid Build Coastguard Worker
73*cd60bc56SAndroid Build Coastguard Workerbase_run_test() {
74*cd60bc56SAndroid Build Coastguard Worker    tot_tests=$((tot_tests + 1))
75*cd60bc56SAndroid Build Coastguard Worker    if VALGRIND="$VALGRIND" "$@"; then
76*cd60bc56SAndroid Build Coastguard Worker	tot_pass=$((tot_pass + 1))
77*cd60bc56SAndroid Build Coastguard Worker    else
78*cd60bc56SAndroid Build Coastguard Worker	ret="$?"
79*cd60bc56SAndroid Build Coastguard Worker	if [ "$STOP_ON_FAIL" -eq 1 ]; then
80*cd60bc56SAndroid Build Coastguard Worker	    exit 1
81*cd60bc56SAndroid Build Coastguard Worker	fi
82*cd60bc56SAndroid Build Coastguard Worker	if [ "$ret" -eq 1 ]; then
83*cd60bc56SAndroid Build Coastguard Worker	    tot_config=$((tot_config + 1))
84*cd60bc56SAndroid Build Coastguard Worker	elif [ "$ret" -eq 2 ]; then
85*cd60bc56SAndroid Build Coastguard Worker	    tot_fail=$((tot_fail + 1))
86*cd60bc56SAndroid Build Coastguard Worker	elif [ "$ret" -eq $VGCODE ]; then
87*cd60bc56SAndroid Build Coastguard Worker	    tot_vg=$((tot_vg + 1))
88*cd60bc56SAndroid Build Coastguard Worker	else
89*cd60bc56SAndroid Build Coastguard Worker	    tot_strange=$((tot_strange + 1))
90*cd60bc56SAndroid Build Coastguard Worker	fi
91*cd60bc56SAndroid Build Coastguard Worker    fi
92*cd60bc56SAndroid Build Coastguard Worker}
93*cd60bc56SAndroid Build Coastguard Worker
94*cd60bc56SAndroid Build Coastguard Workershorten_echo () {
95*cd60bc56SAndroid Build Coastguard Worker    limit=32
96*cd60bc56SAndroid Build Coastguard Worker    printf "$1"
97*cd60bc56SAndroid Build Coastguard Worker    shift
98*cd60bc56SAndroid Build Coastguard Worker    for x; do
99*cd60bc56SAndroid Build Coastguard Worker	if [ ${#x} -le $limit ]; then
100*cd60bc56SAndroid Build Coastguard Worker	    printf " $x"
101*cd60bc56SAndroid Build Coastguard Worker	else
102*cd60bc56SAndroid Build Coastguard Worker	    short=$(echo "$x" | head -c$limit)
103*cd60bc56SAndroid Build Coastguard Worker	    printf " \"$short\"...<${#x} bytes>"
104*cd60bc56SAndroid Build Coastguard Worker	fi
105*cd60bc56SAndroid Build Coastguard Worker    done
106*cd60bc56SAndroid Build Coastguard Worker}
107*cd60bc56SAndroid Build Coastguard Worker
108*cd60bc56SAndroid Build Coastguard Workerrun_test () {
109*cd60bc56SAndroid Build Coastguard Worker    printf "$*:	"
110*cd60bc56SAndroid Build Coastguard Worker    if [ -n "$VALGRIND" -a -f $1.supp ]; then
111*cd60bc56SAndroid Build Coastguard Worker	VGSUPP="--suppressions=$1.supp"
112*cd60bc56SAndroid Build Coastguard Worker    fi
113*cd60bc56SAndroid Build Coastguard Worker    base_run_test $VALGRIND $VGSUPP "./$@"
114*cd60bc56SAndroid Build Coastguard Worker}
115*cd60bc56SAndroid Build Coastguard Worker
116*cd60bc56SAndroid Build Coastguard Workerrun_sh_test () {
117*cd60bc56SAndroid Build Coastguard Worker    printf "$*:	"
118*cd60bc56SAndroid Build Coastguard Worker    base_run_test sh "$@"
119*cd60bc56SAndroid Build Coastguard Worker}
120*cd60bc56SAndroid Build Coastguard Worker
121*cd60bc56SAndroid Build Coastguard Workerwrap_test () {
122*cd60bc56SAndroid Build Coastguard Worker    (
123*cd60bc56SAndroid Build Coastguard Worker	if verbose_run "$@"; then
124*cd60bc56SAndroid Build Coastguard Worker	    PASS
125*cd60bc56SAndroid Build Coastguard Worker	else
126*cd60bc56SAndroid Build Coastguard Worker	    ret="$?"
127*cd60bc56SAndroid Build Coastguard Worker	    if [ "$ret" -gt 127 ]; then
128*cd60bc56SAndroid Build Coastguard Worker		signame=$(kill -l $((ret - 128)))
129*cd60bc56SAndroid Build Coastguard Worker		FAIL "Killed by SIG$signame"
130*cd60bc56SAndroid Build Coastguard Worker	    elif [ "$ret" -eq $VGCODE ]; then
131*cd60bc56SAndroid Build Coastguard Worker		echo "VALGRIND ERROR"
132*cd60bc56SAndroid Build Coastguard Worker		exit $VGCODE
133*cd60bc56SAndroid Build Coastguard Worker	    else
134*cd60bc56SAndroid Build Coastguard Worker		FAIL "Returned error code $ret"
135*cd60bc56SAndroid Build Coastguard Worker	    fi
136*cd60bc56SAndroid Build Coastguard Worker	fi
137*cd60bc56SAndroid Build Coastguard Worker    )
138*cd60bc56SAndroid Build Coastguard Worker}
139*cd60bc56SAndroid Build Coastguard Worker
140*cd60bc56SAndroid Build Coastguard Workerrun_wrap_test () {
141*cd60bc56SAndroid Build Coastguard Worker    shorten_echo "$@:	"
142*cd60bc56SAndroid Build Coastguard Worker    base_run_test wrap_test "$@"
143*cd60bc56SAndroid Build Coastguard Worker}
144*cd60bc56SAndroid Build Coastguard Worker
145*cd60bc56SAndroid Build Coastguard Workerwrap_error () {
146*cd60bc56SAndroid Build Coastguard Worker    (
147*cd60bc56SAndroid Build Coastguard Worker	if verbose_run "$@"; then
148*cd60bc56SAndroid Build Coastguard Worker	    FAIL "Expected non-zero return code"
149*cd60bc56SAndroid Build Coastguard Worker	else
150*cd60bc56SAndroid Build Coastguard Worker	    ret="$?"
151*cd60bc56SAndroid Build Coastguard Worker	    if [ "$ret" -gt 127 ]; then
152*cd60bc56SAndroid Build Coastguard Worker		signame=$(kill -l $((ret - 128)))
153*cd60bc56SAndroid Build Coastguard Worker		FAIL "Killed by SIG$signame"
154*cd60bc56SAndroid Build Coastguard Worker	    else
155*cd60bc56SAndroid Build Coastguard Worker		PASS
156*cd60bc56SAndroid Build Coastguard Worker	    fi
157*cd60bc56SAndroid Build Coastguard Worker	fi
158*cd60bc56SAndroid Build Coastguard Worker    )
159*cd60bc56SAndroid Build Coastguard Worker}
160*cd60bc56SAndroid Build Coastguard Worker
161*cd60bc56SAndroid Build Coastguard Workerrun_wrap_error_test () {
162*cd60bc56SAndroid Build Coastguard Worker    shorten_echo "$@"
163*cd60bc56SAndroid Build Coastguard Worker    printf " {!= 0}:	"
164*cd60bc56SAndroid Build Coastguard Worker    base_run_test wrap_error "$@"
165*cd60bc56SAndroid Build Coastguard Worker}
166*cd60bc56SAndroid Build Coastguard Worker
167*cd60bc56SAndroid Build Coastguard Worker# $1: dtb file
168*cd60bc56SAndroid Build Coastguard Worker# $2: align base
169*cd60bc56SAndroid Build Coastguard Workercheck_align () {
170*cd60bc56SAndroid Build Coastguard Worker    shorten_echo "check_align $@:	"
171*cd60bc56SAndroid Build Coastguard Worker    local size=$($STATSZ "$1")
172*cd60bc56SAndroid Build Coastguard Worker    local align="$2"
173*cd60bc56SAndroid Build Coastguard Worker    (
174*cd60bc56SAndroid Build Coastguard Worker	if [ $(($size % $align)) -eq 0 ] ;then
175*cd60bc56SAndroid Build Coastguard Worker	    PASS
176*cd60bc56SAndroid Build Coastguard Worker	else
177*cd60bc56SAndroid Build Coastguard Worker	    FAIL "Output size $size is not $align-byte aligned"
178*cd60bc56SAndroid Build Coastguard Worker	fi
179*cd60bc56SAndroid Build Coastguard Worker    )
180*cd60bc56SAndroid Build Coastguard Worker}
181*cd60bc56SAndroid Build Coastguard Worker
182*cd60bc56SAndroid Build Coastguard Workerrun_dtc_test () {
183*cd60bc56SAndroid Build Coastguard Worker    printf "dtc $*:	"
184*cd60bc56SAndroid Build Coastguard Worker    base_run_test wrap_test $VALGRIND $DTC "$@"
185*cd60bc56SAndroid Build Coastguard Worker}
186*cd60bc56SAndroid Build Coastguard Worker
187*cd60bc56SAndroid Build Coastguard Workerasm_to_so () {
188*cd60bc56SAndroid Build Coastguard Worker    $CC -shared -o $1.test.so "$SRCDIR/data.S" $1.test.s
189*cd60bc56SAndroid Build Coastguard Worker}
190*cd60bc56SAndroid Build Coastguard Worker
191*cd60bc56SAndroid Build Coastguard Workerasm_to_so_test () {
192*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test asm_to_so "$@"
193*cd60bc56SAndroid Build Coastguard Worker}
194*cd60bc56SAndroid Build Coastguard Worker
195*cd60bc56SAndroid Build Coastguard Workerrun_fdtget_test () {
196*cd60bc56SAndroid Build Coastguard Worker    expect="$1"
197*cd60bc56SAndroid Build Coastguard Worker    shift
198*cd60bc56SAndroid Build Coastguard Worker    printf "fdtget-runtest.sh \"%s\" $*:	" "$expect"
199*cd60bc56SAndroid Build Coastguard Worker    base_run_test sh "$SRCDIR/fdtget-runtest.sh" "$expect" "$@"
200*cd60bc56SAndroid Build Coastguard Worker}
201*cd60bc56SAndroid Build Coastguard Worker
202*cd60bc56SAndroid Build Coastguard Workerrun_fdtput_test () {
203*cd60bc56SAndroid Build Coastguard Worker    expect="$1"
204*cd60bc56SAndroid Build Coastguard Worker    shift
205*cd60bc56SAndroid Build Coastguard Worker    shorten_echo fdtput-runtest.sh "$expect" "$@"
206*cd60bc56SAndroid Build Coastguard Worker    printf ":	"
207*cd60bc56SAndroid Build Coastguard Worker    base_run_test sh "$SRCDIR/fdtput-runtest.sh" "$expect" "$@"
208*cd60bc56SAndroid Build Coastguard Worker}
209*cd60bc56SAndroid Build Coastguard Worker
210*cd60bc56SAndroid Build Coastguard Workerrun_fdtdump_test() {
211*cd60bc56SAndroid Build Coastguard Worker    file="$1"
212*cd60bc56SAndroid Build Coastguard Worker    shorten_echo fdtdump-runtest.sh "$file"
213*cd60bc56SAndroid Build Coastguard Worker    printf ":	"
214*cd60bc56SAndroid Build Coastguard Worker    base_run_test sh "$SRCDIR/fdtdump-runtest.sh" "$file" 2>/dev/null
215*cd60bc56SAndroid Build Coastguard Worker}
216*cd60bc56SAndroid Build Coastguard Worker
217*cd60bc56SAndroid Build Coastguard Workerrun_fdtoverlay_test() {
218*cd60bc56SAndroid Build Coastguard Worker    expect="$1"
219*cd60bc56SAndroid Build Coastguard Worker    shift
220*cd60bc56SAndroid Build Coastguard Worker    shorten_echo fdtoverlay-runtest.sh "$expect" "$@"
221*cd60bc56SAndroid Build Coastguard Worker    printf ":	"
222*cd60bc56SAndroid Build Coastguard Worker    base_run_test sh "$SRCDIR/fdtoverlay-runtest.sh" "$expect" "$@"
223*cd60bc56SAndroid Build Coastguard Worker}
224*cd60bc56SAndroid Build Coastguard Worker
225*cd60bc56SAndroid Build Coastguard WorkerBAD_FIXUP_TREES="bad_index \
226*cd60bc56SAndroid Build Coastguard Worker		empty \
227*cd60bc56SAndroid Build Coastguard Worker		empty_index \
228*cd60bc56SAndroid Build Coastguard Worker		index_trailing \
229*cd60bc56SAndroid Build Coastguard Worker		path_empty_prop \
230*cd60bc56SAndroid Build Coastguard Worker		path_only \
231*cd60bc56SAndroid Build Coastguard Worker		path_only_sep \
232*cd60bc56SAndroid Build Coastguard Worker		path_prop"
233*cd60bc56SAndroid Build Coastguard Worker
234*cd60bc56SAndroid Build Coastguard Worker# Test to exercise libfdt overlay application without dtc's overlay support
235*cd60bc56SAndroid Build Coastguard Workerlibfdt_overlay_tests () {
236*cd60bc56SAndroid Build Coastguard Worker    # First test a doctored overlay which requires only local fixups
237*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_base_no_symbols.test.dtb "$SRCDIR/overlay_base.dts"
238*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_no_symbols.test.dtb not-exists "/__symbols__"
239*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_no_symbols.test.dtb not-exists "/__fixups__"
240*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_no_symbols.test.dtb not-exists "/__local_fixups__"
241*cd60bc56SAndroid Build Coastguard Worker
242*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_no_fixups.test.dtb "$SRCDIR/overlay_overlay_no_fixups.dts"
243*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_no_fixups.test.dtb not-exists "/__symbols__"
244*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_no_fixups.test.dtb not-exists "/__fixups__"
245*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_no_fixups.test.dtb exists "/__local_fixups__"
246*cd60bc56SAndroid Build Coastguard Worker
247*cd60bc56SAndroid Build Coastguard Worker    run_test overlay overlay_base_no_symbols.test.dtb overlay_overlay_no_fixups.test.dtb
248*cd60bc56SAndroid Build Coastguard Worker
249*cd60bc56SAndroid Build Coastguard Worker    # Then test with manually constructed fixups
250*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_base_manual_symbols.test.dtb "$SRCDIR/overlay_base_manual_symbols.dts"
251*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_manual_symbols.test.dtb exists "/__symbols__"
252*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_manual_symbols.test.dtb not-exists "/__fixups__"
253*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_manual_symbols.test.dtb not-exists "/__local_fixups__"
254*cd60bc56SAndroid Build Coastguard Worker
255*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_manual_fixups.test.dtb "$SRCDIR/overlay_overlay_manual_fixups.dts"
256*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_manual_fixups.test.dtb not-exists "/__symbols__"
257*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_manual_fixups.test.dtb exists "/__fixups__"
258*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_manual_fixups.test.dtb exists "/__local_fixups__"
259*cd60bc56SAndroid Build Coastguard Worker
260*cd60bc56SAndroid Build Coastguard Worker    run_test overlay overlay_base_manual_symbols.test.dtb overlay_overlay_manual_fixups.test.dtb
261*cd60bc56SAndroid Build Coastguard Worker
262*cd60bc56SAndroid Build Coastguard Worker    # test simplified plugin syntax
263*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o overlay_overlay_simple.dtb "$SRCDIR/overlay_overlay_simple.dts"
264*cd60bc56SAndroid Build Coastguard Worker
265*cd60bc56SAndroid Build Coastguard Worker    # verify non-generation of local fixups
266*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_simple.dtb not-exists "/__local_fixups__"
267*cd60bc56SAndroid Build Coastguard Worker
268*cd60bc56SAndroid Build Coastguard Worker    # Bad fixup tests
269*cd60bc56SAndroid Build Coastguard Worker    for test in $BAD_FIXUP_TREES; do
270*cd60bc56SAndroid Build Coastguard Worker	tree="overlay_bad_fixup_$test"
271*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dts -O dtb -o $tree.test.dtb "$SRCDIR/$tree.dts"
272*cd60bc56SAndroid Build Coastguard Worker	run_test overlay_bad_fixup overlay_base_no_symbols.test.dtb $tree.test.dtb
273*cd60bc56SAndroid Build Coastguard Worker    done
274*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fatal.sh" -I dts -O dtb -o /dev/null fixup-ref-to-path.dts
275*cd60bc56SAndroid Build Coastguard Worker}
276*cd60bc56SAndroid Build Coastguard Worker
277*cd60bc56SAndroid Build Coastguard Worker# Tests to exercise dtc's overlay generation support
278*cd60bc56SAndroid Build Coastguard Workerdtc_overlay_tests () {
279*cd60bc56SAndroid Build Coastguard Worker    # Overlay tests for dtc
280*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o overlay_base.test.dtb "$SRCDIR/overlay_base.dts"
281*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base.test.dtb exists "/__symbols__"
282*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base.test.dtb not-exists "/__fixups__"
283*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base.test.dtb not-exists "/__local_fixups__"
284*cd60bc56SAndroid Build Coastguard Worker
285*cd60bc56SAndroid Build Coastguard Worker    # With syntactic sugar
286*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay.test.dtb "$SRCDIR/overlay_overlay.dts"
287*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay.test.dtb not-exists "/__symbols__"
288*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay.test.dtb exists "/__fixups__"
289*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay.test.dtb exists "/__local_fixups__"
290*cd60bc56SAndroid Build Coastguard Worker
291*cd60bc56SAndroid Build Coastguard Worker    # Without syntactic sugar
292*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_nosugar.test.dtb "$SRCDIR/overlay_overlay_nosugar.dts"
293*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_nosugar.test.dtb not-exists "/__symbols__"
294*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_nosugar.test.dtb exists "/__fixups__"
295*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_nosugar.test.dtb exists "/__local_fixups__"
296*cd60bc56SAndroid Build Coastguard Worker
297*cd60bc56SAndroid Build Coastguard Worker    # Using target-path
298*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_bypath.test.dtb "$SRCDIR/overlay_overlay_bypath.dts"
299*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_bypath.test.dtb not-exists "/__symbols__"
300*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_bypath.test.dtb not-exists "/__fixups__"
301*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_bypath.test.dtb exists "/__local_fixups__"
302*cd60bc56SAndroid Build Coastguard Worker
303*cd60bc56SAndroid Build Coastguard Worker    # Make sure local target references are resolved and nodes are merged and that path references are not
304*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_local_merge.test.dtb "$SRCDIR/overlay_overlay_local_merge.dts"
305*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_local_merge.test.dtb exists "/fragment@0/__overlay__/new-node/new-merged-node"
306*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_overlay_local_merge.test.dtb exists "/fragment@1/__overlay__/new-root-node"
307*cd60bc56SAndroid Build Coastguard Worker
308*cd60bc56SAndroid Build Coastguard Worker    # Check building works the same as manual constructions
309*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered overlay_overlay.test.dtb overlay_overlay_nosugar.test.dtb
310*cd60bc56SAndroid Build Coastguard Worker
311*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_manual_fixups.test.dtb "$SRCDIR/overlay_overlay_manual_fixups.dts"
312*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered overlay_overlay.test.dtb overlay_overlay_manual_fixups.test.dtb
313*cd60bc56SAndroid Build Coastguard Worker
314*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_no_fixups.test.dtb "$SRCDIR/overlay_overlay_no_fixups.dts"
315*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered overlay_overlay_bypath.test.dtb overlay_overlay_no_fixups.test.dtb
316*cd60bc56SAndroid Build Coastguard Worker
317*cd60bc56SAndroid Build Coastguard Worker    # Check we can actually apply the result
318*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_base_no_symbols.test.dtb "$SRCDIR/overlay_base.dts"
319*cd60bc56SAndroid Build Coastguard Worker    run_test overlay overlay_base.test.dtb overlay_overlay.test.dtb
320*cd60bc56SAndroid Build Coastguard Worker    run_test overlay overlay_base_no_symbols.test.dtb overlay_overlay_bypath.test.dtb
321*cd60bc56SAndroid Build Coastguard Worker
322*cd60bc56SAndroid Build Coastguard Worker    # test plugin source to dtb and back
323*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dts -o overlay_overlay_decompile.test.dts overlay_overlay.test.dtb
324*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o overlay_overlay_decompile.test.dtb overlay_overlay_decompile.test.dts
325*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered overlay_overlay.test.dtb overlay_overlay_decompile.test.dtb
326*cd60bc56SAndroid Build Coastguard Worker
327*cd60bc56SAndroid Build Coastguard Worker    # Test generation of aliases instead of symbols
328*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -A -I dts -O dtb -o overlay_base_with_aliases.dtb "$SRCDIR/overlay_base.dts"
329*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_with_aliases.dtb exists "/aliases"
330*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_with_aliases.dtb not-exists "/__symbols__"
331*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_with_aliases.dtb not-exists "/__fixups__"
332*cd60bc56SAndroid Build Coastguard Worker    run_test check_path overlay_base_with_aliases.dtb not-exists "/__local_fixups__"
333*cd60bc56SAndroid Build Coastguard Worker}
334*cd60bc56SAndroid Build Coastguard Worker
335*cd60bc56SAndroid Build Coastguard Workertree1_tests () {
336*cd60bc56SAndroid Build Coastguard Worker    TREE=$1
337*cd60bc56SAndroid Build Coastguard Worker
338*cd60bc56SAndroid Build Coastguard Worker    # Read-only tests
339*cd60bc56SAndroid Build Coastguard Worker    run_test get_mem_rsv $TREE
340*cd60bc56SAndroid Build Coastguard Worker    run_test root_node $TREE
341*cd60bc56SAndroid Build Coastguard Worker    run_test find_property $TREE
342*cd60bc56SAndroid Build Coastguard Worker    run_test subnode_offset $TREE
343*cd60bc56SAndroid Build Coastguard Worker    run_test path_offset $TREE
344*cd60bc56SAndroid Build Coastguard Worker    run_test get_name $TREE
345*cd60bc56SAndroid Build Coastguard Worker    run_test getprop $TREE
346*cd60bc56SAndroid Build Coastguard Worker    run_test get_prop_offset $TREE
347*cd60bc56SAndroid Build Coastguard Worker    run_test get_phandle $TREE
348*cd60bc56SAndroid Build Coastguard Worker    run_test get_path $TREE
349*cd60bc56SAndroid Build Coastguard Worker    run_test supernode_atdepth_offset $TREE
350*cd60bc56SAndroid Build Coastguard Worker    run_test parent_offset $TREE
351*cd60bc56SAndroid Build Coastguard Worker    run_test node_offset_by_prop_value $TREE
352*cd60bc56SAndroid Build Coastguard Worker    run_test node_offset_by_phandle $TREE
353*cd60bc56SAndroid Build Coastguard Worker    run_test node_check_compatible $TREE
354*cd60bc56SAndroid Build Coastguard Worker    run_test node_offset_by_compatible $TREE
355*cd60bc56SAndroid Build Coastguard Worker    run_test notfound $TREE
356*cd60bc56SAndroid Build Coastguard Worker
357*cd60bc56SAndroid Build Coastguard Worker    # Write-in-place tests
358*cd60bc56SAndroid Build Coastguard Worker    run_test setprop_inplace $TREE
359*cd60bc56SAndroid Build Coastguard Worker    run_test nop_property $TREE
360*cd60bc56SAndroid Build Coastguard Worker    run_test nop_node $TREE
361*cd60bc56SAndroid Build Coastguard Worker}
362*cd60bc56SAndroid Build Coastguard Worker
363*cd60bc56SAndroid Build Coastguard Workertree1_tests_rw () {
364*cd60bc56SAndroid Build Coastguard Worker    TREE=$1
365*cd60bc56SAndroid Build Coastguard Worker
366*cd60bc56SAndroid Build Coastguard Worker    # Read-write tests
367*cd60bc56SAndroid Build Coastguard Worker    run_test set_name $TREE
368*cd60bc56SAndroid Build Coastguard Worker    run_test setprop $TREE
369*cd60bc56SAndroid Build Coastguard Worker    run_test del_property $TREE
370*cd60bc56SAndroid Build Coastguard Worker    run_test del_node $TREE
371*cd60bc56SAndroid Build Coastguard Worker}
372*cd60bc56SAndroid Build Coastguard Worker
373*cd60bc56SAndroid Build Coastguard Workercheck_tests () {
374*cd60bc56SAndroid Build Coastguard Worker    tree="$1"
375*cd60bc56SAndroid Build Coastguard Worker    shift
376*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" "$@" -- -I dts -O dtb $tree
377*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o $tree.test.dtb -f $tree
378*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" "$@" -- -I dtb -O dtb $tree.test.dtb
379*cd60bc56SAndroid Build Coastguard Worker}
380*cd60bc56SAndroid Build Coastguard Worker
381*cd60bc56SAndroid Build Coastguard WorkerALL_LAYOUTS="mts mst tms tsm smt stm"
382*cd60bc56SAndroid Build Coastguard Worker
383*cd60bc56SAndroid Build Coastguard Workerlibfdt_tests () {
384*cd60bc56SAndroid Build Coastguard Worker    tree1_tests test_tree1.dtb
385*cd60bc56SAndroid Build Coastguard Worker
386*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o addresses.test.dtb "$SRCDIR/addresses.dts"
387*cd60bc56SAndroid Build Coastguard Worker    run_test addr_size_cells addresses.test.dtb
388*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o addresses2.test.dtb "$SRCDIR/empty.dts"
389*cd60bc56SAndroid Build Coastguard Worker    run_test addr_size_cells2 addresses2.test.dtb
390*cd60bc56SAndroid Build Coastguard Worker
391*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o stringlist.test.dtb "$SRCDIR/stringlist.dts"
392*cd60bc56SAndroid Build Coastguard Worker    run_test stringlist stringlist.test.dtb
393*cd60bc56SAndroid Build Coastguard Worker
394*cd60bc56SAndroid Build Coastguard Worker    for flags in default no_name_dedup; do
395*cd60bc56SAndroid Build Coastguard Worker        # Sequential write tests
396*cd60bc56SAndroid Build Coastguard Worker        run_test sw_tree1 fixed $flags
397*cd60bc56SAndroid Build Coastguard Worker        tree1_tests sw_tree1.test.dtb
398*cd60bc56SAndroid Build Coastguard Worker        tree1_tests unfinished_tree1.test.dtb
399*cd60bc56SAndroid Build Coastguard Worker        run_test dtbs_equal_ordered test_tree1.dtb sw_tree1.test.dtb
400*cd60bc56SAndroid Build Coastguard Worker        run_test sw_states
401*cd60bc56SAndroid Build Coastguard Worker
402*cd60bc56SAndroid Build Coastguard Worker        # Resizing tests
403*cd60bc56SAndroid Build Coastguard Worker        for mode in resize realloc newalloc; do
404*cd60bc56SAndroid Build Coastguard Worker            run_test sw_tree1 $mode $flags
405*cd60bc56SAndroid Build Coastguard Worker            tree1_tests sw_tree1.test.dtb
406*cd60bc56SAndroid Build Coastguard Worker            tree1_tests unfinished_tree1.test.dtb
407*cd60bc56SAndroid Build Coastguard Worker            run_test dtbs_equal_ordered test_tree1.dtb sw_tree1.test.dtb
408*cd60bc56SAndroid Build Coastguard Worker        done
409*cd60bc56SAndroid Build Coastguard Worker    done
410*cd60bc56SAndroid Build Coastguard Worker
411*cd60bc56SAndroid Build Coastguard Worker    # fdt_move tests
412*cd60bc56SAndroid Build Coastguard Worker    for tree in test_tree1.dtb sw_tree1.test.dtb unfinished_tree1.test.dtb; do
413*cd60bc56SAndroid Build Coastguard Worker	rm -f moved.$tree shunted.$tree deshunted.$tree
414*cd60bc56SAndroid Build Coastguard Worker	run_test move_and_save $tree
415*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered $tree moved.$tree
416*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered $tree shunted.$tree
417*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered $tree deshunted.$tree
418*cd60bc56SAndroid Build Coastguard Worker    done
419*cd60bc56SAndroid Build Coastguard Worker
420*cd60bc56SAndroid Build Coastguard Worker    # v16 and alternate layout tests
421*cd60bc56SAndroid Build Coastguard Worker    for tree in test_tree1.dtb; do
422*cd60bc56SAndroid Build Coastguard Worker	for version in 17 16; do
423*cd60bc56SAndroid Build Coastguard Worker	    for layout in $ALL_LAYOUTS; do
424*cd60bc56SAndroid Build Coastguard Worker		run_test mangle-layout $tree $version $layout
425*cd60bc56SAndroid Build Coastguard Worker		tree1_tests v$version.$layout.$tree
426*cd60bc56SAndroid Build Coastguard Worker		run_test dtbs_equal_ordered $tree v$version.$layout.$tree
427*cd60bc56SAndroid Build Coastguard Worker	    done
428*cd60bc56SAndroid Build Coastguard Worker	done
429*cd60bc56SAndroid Build Coastguard Worker    done
430*cd60bc56SAndroid Build Coastguard Worker
431*cd60bc56SAndroid Build Coastguard Worker    # Read-write tests
432*cd60bc56SAndroid Build Coastguard Worker    for basetree in test_tree1.dtb; do
433*cd60bc56SAndroid Build Coastguard Worker	for version in 17 16; do
434*cd60bc56SAndroid Build Coastguard Worker	    for layout in $ALL_LAYOUTS; do
435*cd60bc56SAndroid Build Coastguard Worker		tree=v$version.$layout.$basetree
436*cd60bc56SAndroid Build Coastguard Worker		rm -f opened.$tree repacked.$tree
437*cd60bc56SAndroid Build Coastguard Worker		run_test open_pack $tree
438*cd60bc56SAndroid Build Coastguard Worker		tree1_tests opened.$tree
439*cd60bc56SAndroid Build Coastguard Worker		tree1_tests repacked.$tree
440*cd60bc56SAndroid Build Coastguard Worker
441*cd60bc56SAndroid Build Coastguard Worker		tree1_tests_rw $tree
442*cd60bc56SAndroid Build Coastguard Worker		tree1_tests_rw opened.$tree
443*cd60bc56SAndroid Build Coastguard Worker		tree1_tests_rw repacked.$tree
444*cd60bc56SAndroid Build Coastguard Worker	    done
445*cd60bc56SAndroid Build Coastguard Worker	done
446*cd60bc56SAndroid Build Coastguard Worker    done
447*cd60bc56SAndroid Build Coastguard Worker    run_test rw_tree1
448*cd60bc56SAndroid Build Coastguard Worker    tree1_tests rw_tree1.test.dtb
449*cd60bc56SAndroid Build Coastguard Worker    tree1_tests_rw rw_tree1.test.dtb
450*cd60bc56SAndroid Build Coastguard Worker    run_test appendprop1
451*cd60bc56SAndroid Build Coastguard Worker    run_test appendprop2 appendprop1.test.dtb
452*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o appendprop.test.dtb "$SRCDIR/appendprop.dts"
453*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered appendprop2.test.dtb appendprop.test.dtb
454*cd60bc56SAndroid Build Coastguard Worker    libfdt_overlay_tests
455*cd60bc56SAndroid Build Coastguard Worker
456*cd60bc56SAndroid Build Coastguard Worker    for basetree in test_tree1.dtb sw_tree1.test.dtb rw_tree1.test.dtb; do
457*cd60bc56SAndroid Build Coastguard Worker	run_test nopulate $basetree
458*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered $basetree noppy.$basetree
459*cd60bc56SAndroid Build Coastguard Worker	tree1_tests noppy.$basetree
460*cd60bc56SAndroid Build Coastguard Worker	tree1_tests_rw noppy.$basetree
461*cd60bc56SAndroid Build Coastguard Worker    done
462*cd60bc56SAndroid Build Coastguard Worker
463*cd60bc56SAndroid Build Coastguard Worker    run_test rw_oom
464*cd60bc56SAndroid Build Coastguard Worker
465*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o subnode_iterate.dtb "$SRCDIR/subnode_iterate.dts"
466*cd60bc56SAndroid Build Coastguard Worker    run_test subnode_iterate subnode_iterate.dtb
467*cd60bc56SAndroid Build Coastguard Worker
468*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o property_iterate.dtb "$SRCDIR/property_iterate.dts"
469*cd60bc56SAndroid Build Coastguard Worker    run_test property_iterate property_iterate.dtb
470*cd60bc56SAndroid Build Coastguard Worker
471*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o unit-addr-without-reg.dtb "$SRCDIR/unit-addr-without-reg.dts"
472*cd60bc56SAndroid Build Coastguard Worker    run_test appendprop_addrrange unit-addr-without-reg.dtb 1 1 1
473*cd60bc56SAndroid Build Coastguard Worker    run_test appendprop_addrrange unit-addr-without-reg.dtb 2 2 2
474*cd60bc56SAndroid Build Coastguard Worker    run_test appendprop_addrrange unit-addr-without-reg.dtb 2 1 3
475*cd60bc56SAndroid Build Coastguard Worker
476*cd60bc56SAndroid Build Coastguard Worker    # Tests for behaviour on various sorts of corrupted trees
477*cd60bc56SAndroid Build Coastguard Worker    run_test truncated_property
478*cd60bc56SAndroid Build Coastguard Worker    run_test truncated_string
479*cd60bc56SAndroid Build Coastguard Worker    run_test truncated_memrsv
480*cd60bc56SAndroid Build Coastguard Worker
481*cd60bc56SAndroid Build Coastguard Worker    # Check aliases support in fdt_path_offset
482*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o aliases.dtb "$SRCDIR/aliases.dts"
483*cd60bc56SAndroid Build Coastguard Worker    run_test get_alias aliases.dtb
484*cd60bc56SAndroid Build Coastguard Worker    run_test path_offset_aliases aliases.dtb
485*cd60bc56SAndroid Build Coastguard Worker
486*cd60bc56SAndroid Build Coastguard Worker    # Specific bug tests
487*cd60bc56SAndroid Build Coastguard Worker    run_test add_subnode_with_nops
488*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dts -o sourceoutput.test.dts "$SRCDIR/sourceoutput.dts"
489*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o sourceoutput.test.dtb "$SRCDIR/sourceoutput.dts"
490*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o sourceoutput.test.dts.test.dtb sourceoutput.test.dts
491*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered sourceoutput.test.dtb sourceoutput.test.dts.test.dtb
492*cd60bc56SAndroid Build Coastguard Worker
493*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o embedded_nul.test.dtb "$SRCDIR/embedded_nul.dts"
494*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o embedded_nul_equiv.test.dtb "$SRCDIR/embedded_nul_equiv.dts"
495*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered embedded_nul.test.dtb embedded_nul_equiv.test.dtb
496*cd60bc56SAndroid Build Coastguard Worker
497*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb "$SRCDIR/bad-size-cells.dts"
498*cd60bc56SAndroid Build Coastguard Worker
499*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC division-by-zero.dts
500*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC bad-octal-literal.dts
501*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb "$SRCDIR/nul-in-escape.dts"
502*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC nul-in-line-info1.dts
503*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC nul-in-line-info2.dts
504*cd60bc56SAndroid Build Coastguard Worker
505*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC -I dtb -O dts -o /dev/null ovf_size_strings.dtb
506*cd60bc56SAndroid Build Coastguard Worker
507*cd60bc56SAndroid Build Coastguard Worker    run_test check_header test_tree1.dtb
508*cd60bc56SAndroid Build Coastguard Worker
509*cd60bc56SAndroid Build Coastguard Worker    FSBASE=fs
510*cd60bc56SAndroid Build Coastguard Worker    rm -rf $FSBASE
511*cd60bc56SAndroid Build Coastguard Worker    mkdir -p $FSBASE
512*cd60bc56SAndroid Build Coastguard Worker    run_test fs_tree1 $FSBASE/test_tree1
513*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I fs -O dts -o fs.test_tree1.test.dts $FSBASE/test_tree1
514*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I fs -O dtb -o fs.test_tree1.test.dtb $FSBASE/test_tree1
515*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered -m fs.test_tree1.test.dtb test_tree1.dtb
516*cd60bc56SAndroid Build Coastguard Worker    run_test get_next_tag_invalid_prop_len
517*cd60bc56SAndroid Build Coastguard Worker
518*cd60bc56SAndroid Build Coastguard Worker    ## https://github.com/dgibson/dtc/issues/64
519*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/phandle-args-overflow.dts" clocks_property
520*cd60bc56SAndroid Build Coastguard Worker
521*cd60bc56SAndroid Build Coastguard Worker    ## https://github.com/dgibson/dtc/issues/74
522*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o cell-overflow-results.test.dtb cell-overflow-results.dts
523*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o cell-overflow.test.dtb cell-overflow.dts
524*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered cell-overflow.test.dtb cell-overflow-results.test.dtb
525*cd60bc56SAndroid Build Coastguard Worker
526*cd60bc56SAndroid Build Coastguard Worker    # check full tests
527*cd60bc56SAndroid Build Coastguard Worker    for good in test_tree1.dtb; do
528*cd60bc56SAndroid Build Coastguard Worker	run_test check_full $good
529*cd60bc56SAndroid Build Coastguard Worker    done
530*cd60bc56SAndroid Build Coastguard Worker    for bad in truncated_property.dtb truncated_string.dtb \
531*cd60bc56SAndroid Build Coastguard Worker		truncated_memrsv.dtb two_roots.dtb named_root.dtb; do
532*cd60bc56SAndroid Build Coastguard Worker	run_test check_full -n $bad
533*cd60bc56SAndroid Build Coastguard Worker    done
534*cd60bc56SAndroid Build Coastguard Worker}
535*cd60bc56SAndroid Build Coastguard Worker
536*cd60bc56SAndroid Build Coastguard Workerdtc_tests () {
537*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1.test.dtb "$SRCDIR/test_tree1.dts"
538*cd60bc56SAndroid Build Coastguard Worker    tree1_tests dtc_tree1.test.dtb
539*cd60bc56SAndroid Build Coastguard Worker    tree1_tests_rw dtc_tree1.test.dtb
540*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered dtc_tree1.test.dtb test_tree1.dtb
541*cd60bc56SAndroid Build Coastguard Worker
542*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_escapes.test.dtb "$SRCDIR/propname_escapes.dts"
543*cd60bc56SAndroid Build Coastguard Worker    run_test propname_escapes dtc_escapes.test.dtb
544*cd60bc56SAndroid Build Coastguard Worker
545*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o line_directives.test.dtb "$SRCDIR/line_directives.dts"
546*cd60bc56SAndroid Build Coastguard Worker
547*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_escapes.test.dtb "$SRCDIR/escapes.dts"
548*cd60bc56SAndroid Build Coastguard Worker    run_test string_escapes dtc_escapes.test.dtb
549*cd60bc56SAndroid Build Coastguard Worker
550*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_char_literal.test.dtb "$SRCDIR/char_literal.dts"
551*cd60bc56SAndroid Build Coastguard Worker    run_test char_literal dtc_char_literal.test.dtb
552*cd60bc56SAndroid Build Coastguard Worker
553*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_sized_cells.test.dtb "$SRCDIR/sized_cells.dts"
554*cd60bc56SAndroid Build Coastguard Worker    run_test sized_cells dtc_sized_cells.test.dtb
555*cd60bc56SAndroid Build Coastguard Worker
556*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_extra-terminating-null.test.dtb "$SRCDIR/extra-terminating-null.dts"
557*cd60bc56SAndroid Build Coastguard Worker    run_test extra-terminating-null dtc_extra-terminating-null.test.dtb
558*cd60bc56SAndroid Build Coastguard Worker
559*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_references.test.dtb "$SRCDIR/references.dts"
560*cd60bc56SAndroid Build Coastguard Worker    run_test references dtc_references.test.dtb
561*cd60bc56SAndroid Build Coastguard Worker
562*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_path-references.test.dtb "$SRCDIR/path-references.dts"
563*cd60bc56SAndroid Build Coastguard Worker    run_test path-references dtc_path-references.test.dtb
564*cd60bc56SAndroid Build Coastguard Worker
565*cd60bc56SAndroid Build Coastguard Worker    run_test phandle_format dtc_references.test.dtb epapr
566*cd60bc56SAndroid Build Coastguard Worker    for f in legacy epapr both; do
567*cd60bc56SAndroid Build Coastguard Worker	    run_dtc_test -I dts -O dtb -H $f -o dtc_references.test.$f.dtb "$SRCDIR/references.dts"
568*cd60bc56SAndroid Build Coastguard Worker	run_test phandle_format dtc_references.test.$f.dtb $f
569*cd60bc56SAndroid Build Coastguard Worker    done
570*cd60bc56SAndroid Build Coastguard Worker
571*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o multilabel.test.dtb "$SRCDIR/multilabel.dts"
572*cd60bc56SAndroid Build Coastguard Worker    run_test references multilabel.test.dtb
573*cd60bc56SAndroid Build Coastguard Worker
574*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o label_repeated.test.dtb "$SRCDIR/label_repeated.dts"
575*cd60bc56SAndroid Build Coastguard Worker
576*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_comments.test.dtb "$SRCDIR/comments.dts"
577*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_comments-cmp.test.dtb "$SRCDIR/comments-cmp.dts"
578*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered dtc_comments.test.dtb dtc_comments-cmp.test.dtb
579*cd60bc56SAndroid Build Coastguard Worker
580*cd60bc56SAndroid Build Coastguard Worker    # Check /include/ directive
581*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o includes.test.dtb "$SRCDIR/include0.dts"
582*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered includes.test.dtb test_tree1.dtb
583*cd60bc56SAndroid Build Coastguard Worker
584*cd60bc56SAndroid Build Coastguard Worker    # Check /incbin/ directive
585*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o incbin.test.dtb "$SRCDIR/incbin.dts"
586*cd60bc56SAndroid Build Coastguard Worker    run_test incbin "$SRCDIR/incbin.bin" incbin.test.dtb
587*cd60bc56SAndroid Build Coastguard Worker
588*cd60bc56SAndroid Build Coastguard Worker    # Check boot_cpuid_phys handling
589*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o boot_cpuid.test.dtb "$SRCDIR/boot-cpuid.dts"
590*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid boot_cpuid.test.dtb 16
591*cd60bc56SAndroid Build Coastguard Worker
592*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -b 17 -o boot_cpuid_17.test.dtb "$SRCDIR/boot-cpuid.dts"
593*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid boot_cpuid_17.test.dtb 17
594*cd60bc56SAndroid Build Coastguard Worker
595*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -o preserve_boot_cpuid.test.dtb boot_cpuid.test.dtb
596*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid preserve_boot_cpuid.test.dtb 16
597*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered preserve_boot_cpuid.test.dtb boot_cpuid.test.dtb
598*cd60bc56SAndroid Build Coastguard Worker
599*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -o preserve_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
600*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid preserve_boot_cpuid_17.test.dtb 17
601*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered preserve_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
602*cd60bc56SAndroid Build Coastguard Worker
603*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -b17 -o override17_boot_cpuid.test.dtb boot_cpuid.test.dtb
604*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid override17_boot_cpuid.test.dtb 17
605*cd60bc56SAndroid Build Coastguard Worker
606*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -b0 -o override0_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
607*cd60bc56SAndroid Build Coastguard Worker    run_test boot-cpuid override0_boot_cpuid_17.test.dtb 0
608*cd60bc56SAndroid Build Coastguard Worker
609*cd60bc56SAndroid Build Coastguard Worker
610*cd60bc56SAndroid Build Coastguard Worker    # Check -Oasm mode
611*cd60bc56SAndroid Build Coastguard Worker    for tree in test_tree1.dts escapes.dts references.dts path-references.dts \
612*cd60bc56SAndroid Build Coastguard Worker	comments.dts aliases.dts include0.dts incbin.dts \
613*cd60bc56SAndroid Build Coastguard Worker	value-labels.dts ; do
614*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dts -O asm -o oasm_$tree.test.s "$SRCDIR/$tree"
615*cd60bc56SAndroid Build Coastguard Worker	asm_to_so_test oasm_$tree
616*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dts -O dtb -o $tree.test.dtb "$SRCDIR/$tree"
617*cd60bc56SAndroid Build Coastguard Worker	if [ -x ./asm_tree_dump ]; then
618*cd60bc56SAndroid Build Coastguard Worker	    run_test asm_tree_dump ./oasm_$tree.test.so oasm_$tree.test.dtb
619*cd60bc56SAndroid Build Coastguard Worker	    run_wrap_test cmp oasm_$tree.test.dtb $tree.test.dtb
620*cd60bc56SAndroid Build Coastguard Worker	fi
621*cd60bc56SAndroid Build Coastguard Worker    done
622*cd60bc56SAndroid Build Coastguard Worker
623*cd60bc56SAndroid Build Coastguard Worker    if [ -x ./value-labels ]; then
624*cd60bc56SAndroid Build Coastguard Worker	run_test value-labels ./oasm_value-labels.dts.test.so
625*cd60bc56SAndroid Build Coastguard Worker    fi
626*cd60bc56SAndroid Build Coastguard Worker
627*cd60bc56SAndroid Build Coastguard Worker    # Check -Odts mode preserve all dtb information
628*cd60bc56SAndroid Build Coastguard Worker    for tree in test_tree1.dtb dtc_tree1.test.dtb dtc_escapes.test.dtb \
629*cd60bc56SAndroid Build Coastguard Worker	dtc_extra-terminating-null.test.dtb dtc_references.test.dtb; do
630*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dtb -O dts -o odts_$tree.test.dts $tree
631*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dts -O dtb -o odts_$tree.test.dtb odts_$tree.test.dts
632*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered $tree odts_$tree.test.dtb
633*cd60bc56SAndroid Build Coastguard Worker    done
634*cd60bc56SAndroid Build Coastguard Worker
635*cd60bc56SAndroid Build Coastguard Worker    # Check -Odts preserving type information
636*cd60bc56SAndroid Build Coastguard Worker    for tree in type-preservation.dts; do
637*cd60bc56SAndroid Build Coastguard Worker        run_dtc_test -I dts -O dts -o $tree.test.dts "$SRCDIR/$tree"
638*cd60bc56SAndroid Build Coastguard Worker        run_dtc_test -I dts -O dts $tree.test.dts
639*cd60bc56SAndroid Build Coastguard Worker        run_wrap_test cmp "$SRCDIR/$tree" $tree.test.dts
640*cd60bc56SAndroid Build Coastguard Worker    done
641*cd60bc56SAndroid Build Coastguard Worker    for tree in path-references; do
642*cd60bc56SAndroid Build Coastguard Worker        run_dtc_test -I dts -O dtb -o $tree.test.dtb "$SRCDIR/$tree.dts"
643*cd60bc56SAndroid Build Coastguard Worker        run_dtc_test -I dts -O dts -o $tree.test.dts "$SRCDIR/$tree.dts"
644*cd60bc56SAndroid Build Coastguard Worker        run_dtc_test -I dts -O dtb -o $tree.test.dts.test.dtb $tree.test.dts
645*cd60bc56SAndroid Build Coastguard Worker        run_test dtbs_equal_ordered $tree.test.dtb $tree.test.dts.test.dtb
646*cd60bc56SAndroid Build Coastguard Worker    done
647*cd60bc56SAndroid Build Coastguard Worker
648*cd60bc56SAndroid Build Coastguard Worker    # Check -Oyaml output
649*cd60bc56SAndroid Build Coastguard Worker    if ! $no_yaml; then
650*cd60bc56SAndroid Build Coastguard Worker            for tree in type-preservation; do
651*cd60bc56SAndroid Build Coastguard Worker                run_dtc_test -I dts -O yaml -o $tree.test.dt.yaml "$SRCDIR/$tree.dts"
652*cd60bc56SAndroid Build Coastguard Worker                run_wrap_test cmp "$SRCDIR/$tree.dt.yaml" $tree.test.dt.yaml
653*cd60bc56SAndroid Build Coastguard Worker            done
654*cd60bc56SAndroid Build Coastguard Worker    fi
655*cd60bc56SAndroid Build Coastguard Worker
656*cd60bc56SAndroid Build Coastguard Worker    # Check version conversions
657*cd60bc56SAndroid Build Coastguard Worker    for tree in test_tree1.dtb ; do
658*cd60bc56SAndroid Build Coastguard Worker	 for aver in 1 2 3 16 17; do
659*cd60bc56SAndroid Build Coastguard Worker	     atree="ov${aver}_$tree.test.dtb"
660*cd60bc56SAndroid Build Coastguard Worker	     run_dtc_test -I dtb -O dtb -V$aver -o $atree $tree
661*cd60bc56SAndroid Build Coastguard Worker	     for bver in 16 17; do
662*cd60bc56SAndroid Build Coastguard Worker		 btree="ov${bver}_$atree"
663*cd60bc56SAndroid Build Coastguard Worker		 run_dtc_test -I dtb -O dtb -V$bver -o $btree $atree
664*cd60bc56SAndroid Build Coastguard Worker		 run_test dtbs_equal_ordered $btree $tree
665*cd60bc56SAndroid Build Coastguard Worker	     done
666*cd60bc56SAndroid Build Coastguard Worker	 done
667*cd60bc56SAndroid Build Coastguard Worker    done
668*cd60bc56SAndroid Build Coastguard Worker
669*cd60bc56SAndroid Build Coastguard Worker    # Check merge/overlay functionality
670*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1_merge.test.dtb "$SRCDIR/test_tree1_merge.dts"
671*cd60bc56SAndroid Build Coastguard Worker    tree1_tests dtc_tree1_merge.test.dtb test_tree1.dtb
672*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1_merge_labelled.test.dtb "$SRCDIR/test_tree1_merge_labelled.dts"
673*cd60bc56SAndroid Build Coastguard Worker    tree1_tests dtc_tree1_merge_labelled.test.dtb test_tree1.dtb
674*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1_label_noderef.test.dtb "$SRCDIR/test_tree1_label_noderef.dts"
675*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered dtc_tree1_label_noderef.test.dtb test_tree1.dtb
676*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o multilabel_merge.test.dtb "$SRCDIR/multilabel_merge.dts"
677*cd60bc56SAndroid Build Coastguard Worker    run_test references multilabel.test.dtb
678*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered multilabel.test.dtb multilabel_merge.test.dtb
679*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1_merge_path.test.dtb "$SRCDIR/test_tree1_merge_path.dts"
680*cd60bc56SAndroid Build Coastguard Worker    tree1_tests dtc_tree1_merge_path.test.dtb test_tree1.dtb
681*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC -I dts -O dtb -o /dev/null "$SRCDIR/test_label_ref.dts"
682*cd60bc56SAndroid Build Coastguard Worker
683*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_relref_merge.test.dtb "$SRCDIR/relref_merge.dts"
684*cd60bc56SAndroid Build Coastguard Worker    run_test relref_merge dtc_relref_merge.test.dtb
685*cd60bc56SAndroid Build Coastguard Worker
686*cd60bc56SAndroid Build Coastguard Worker    # Check prop/node delete functionality
687*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dtc_tree1_delete.test.dtb "$SRCDIR/test_tree1_delete.dts"
688*cd60bc56SAndroid Build Coastguard Worker    tree1_tests dtc_tree1_delete.test.dtb
689*cd60bc56SAndroid Build Coastguard Worker
690*cd60bc56SAndroid Build Coastguard Worker    # Check omit-if-no-ref functionality
691*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o omit-no-ref.test.dtb "$SRCDIR/omit-no-ref.dts"
692*cd60bc56SAndroid Build Coastguard Worker    run_test check_path omit-no-ref.test.dtb not-exists "/node1"
693*cd60bc56SAndroid Build Coastguard Worker    run_test check_path omit-no-ref.test.dtb not-exists "/node2"
694*cd60bc56SAndroid Build Coastguard Worker    run_test check_path omit-no-ref.test.dtb exists "/node3"
695*cd60bc56SAndroid Build Coastguard Worker    run_test check_path omit-no-ref.test.dtb exists "/node4"
696*cd60bc56SAndroid Build Coastguard Worker
697*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dts -o delete_reinstate_multilabel.dts.test.dts "$SRCDIR/delete_reinstate_multilabel.dts"
698*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test cmp delete_reinstate_multilabel.dts.test.dts "$SRCDIR/delete_reinstate_multilabel_ref.dts"
699*cd60bc56SAndroid Build Coastguard Worker
700*cd60bc56SAndroid Build Coastguard Worker    # Check some checks
701*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/dup-nodename.dts" duplicate_node_names
702*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/dup-propname.dts" duplicate_property_names
703*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/dup-phandle.dts" explicit_phandles
704*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/zero-phandle.dts" explicit_phandles
705*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/minusone-phandle.dts" explicit_phandles
706*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" phandle_references -- -I dts -O dtb "$SRCDIR/nonexist-node-ref.dts"
707*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" phandle_references -- -I dts -O dtb "$SRCDIR/nonexist-label-ref.dts"
708*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fatal.sh" -I dts -O dtb "$SRCDIR/nonexist-node-ref2.dts"
709*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-name-property.dts" name_properties
710*cd60bc56SAndroid Build Coastguard Worker
711*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-ncells.dts" address_cells_is_cell size_cells_is_cell interrupts_extended_is_cell
712*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-string-props.dts" device_type_is_string model_is_string status_is_string label_is_string compatible_is_string_list names_is_string_list
713*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-chosen.dts" chosen_node_is_root
714*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-chosen.dts" chosen_node_bootargs
715*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-chosen.dts" chosen_node_stdout_path
716*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-reg-ranges.dts" reg_format ranges_format
717*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-empty-ranges.dts" ranges_format
718*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/reg-ranges-root.dts" reg_format ranges_format
719*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-dma-ranges.dts" dma_ranges_format
720*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/default-addr-size.dts" avoid_default_addr_size
721*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/obsolete-chosen-interrupt-controller.dts" obsolete_chosen_interrupt_controller
722*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/reg-without-unit-addr.dts" unit_address_vs_reg
723*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-without-reg.dts" unit_address_vs_reg
724*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-leading-0x.dts" unit_address_format
725*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-leading-0s.dts" unit_address_format
726*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-unique.dts" unique_unit_address
727*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-phandle-cells.dts" interrupts_extended_property
728*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-gpio.dts" gpios_property
729*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/good-gpio.dts" -n gpios_property
730*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-graph.dts" graph_child_address
731*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-graph.dts" graph_port
732*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-graph.dts" graph_endpoint
733*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" deprecated_gpio_property -- -Wdeprecated_gpio_property -I dts -O dtb "$SRCDIR/bad-gpio.dts"
734*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" -n deprecated_gpio_property -- -Wdeprecated_gpio_property -I dts -O dtb "$SRCDIR/good-gpio.dts"
735*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-interrupt-cells.dts" interrupts_property
736*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-interrupt-controller.dts" interrupt_provider
737*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-interrupt-map.dts" interrupt_map
738*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-interrupt-map-parent.dts" interrupt_map
739*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/bad-interrupt-map-mask.dts" interrupt_map
740*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" node_name_chars -- -I dtb -O dtb bad_node_char.dtb
741*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" node_name_format -- -I dtb -O dtb bad_node_format.dtb
742*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" property_name_chars -- -I dtb -O dtb bad_prop_char.dtb
743*cd60bc56SAndroid Build Coastguard Worker
744*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label1.dts"
745*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label2.dts"
746*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label3.dts"
747*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label4.dts"
748*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label5.dts"
749*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" duplicate_label -- -I dts -O dtb "$SRCDIR/reuse-label6.dts"
750*cd60bc56SAndroid Build Coastguard Worker
751*cd60bc56SAndroid Build Coastguard Worker    run_test check_path test_tree1.dtb exists "/subnode@1"
752*cd60bc56SAndroid Build Coastguard Worker    run_test check_path test_tree1.dtb not-exists "/subnode@10"
753*cd60bc56SAndroid Build Coastguard Worker
754*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/pci-bridge-ok.dts" -n pci_bridge
755*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/pci-bridge-bad1.dts" pci_bridge
756*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/pci-bridge-bad2.dts" pci_bridge
757*cd60bc56SAndroid Build Coastguard Worker
758*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-simple-bus-reg-mismatch.dts" simple_bus_reg
759*cd60bc56SAndroid Build Coastguard Worker    check_tests "$SRCDIR/unit-addr-simple-bus-compatible.dts" simple_bus_reg
760*cd60bc56SAndroid Build Coastguard Worker
761*cd60bc56SAndroid Build Coastguard Worker
762*cd60bc56SAndroid Build Coastguard Worker    # Check warning options
763*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" address_cells_is_cell interrupts_extended_is_cell -n size_cells_is_cell -- -Wno_size_cells_is_cell -I dts -O dtb "$SRCDIR/bad-ncells.dts"
764*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" -n test-warn-output.test.dtb -I dts -O dtb "$SRCDIR/bad-ncells.dts"
765*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" test-error-output.test.dtb -I dts -O dtb bad-ncells.dts -Esize_cells_is_cell
766*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" always_fail -- -Walways_fail -I dts -O dtb "$SRCDIR/test_tree1.dts"
767*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" -n always_fail -- -Walways_fail -Wno_always_fail -I dts -O dtb "$SRCDIR/test_tree1.dts"
768*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" test-negation-1.test.dtb -Ealways_fail -I dts -O dtb "$SRCDIR/test_tree1.dts"
769*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" -n test-negation-2.test.dtb -Ealways_fail -Eno_always_fail -I dts -O dtb "$SRCDIR/test_tree1.dts"
770*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" test-negation-3.test.dtb -Ealways_fail -Wno_always_fail -I dts -O dtb "$SRCDIR/test_tree1.dts"
771*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fails.sh" -n test-negation-4.test.dtb -Esize_cells_is_cell -Eno_size_cells_is_cell -I dts -O dtb "$SRCDIR/bad-ncells.dts"
772*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-checkfails.sh" size_cells_is_cell -- -Esize_cells_is_cell -Eno_size_cells_is_cell -I dts -O dtb "$SRCDIR/bad-ncells.dts"
773*cd60bc56SAndroid Build Coastguard Worker
774*cd60bc56SAndroid Build Coastguard Worker    # Check for proper behaviour reading from stdin
775*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o stdin_dtc_tree1.test.dtb - < "$SRCDIR/test_tree1.dts"
776*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test cmp stdin_dtc_tree1.test.dtb dtc_tree1.test.dtb
777*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dts -o stdin_odts_test_tree1.dtb.test.dts - < test_tree1.dtb
778*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test cmp stdin_odts_test_tree1.dtb.test.dts odts_test_tree1.dtb.test.dts
779*cd60bc56SAndroid Build Coastguard Worker
780*cd60bc56SAndroid Build Coastguard Worker    # Check integer expresisons
781*cd60bc56SAndroid Build Coastguard Worker    run_test integer-expressions -g integer-expressions.test.dts
782*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o integer-expressions.test.dtb integer-expressions.test.dts
783*cd60bc56SAndroid Build Coastguard Worker    run_test integer-expressions integer-expressions.test.dtb
784*cd60bc56SAndroid Build Coastguard Worker
785*cd60bc56SAndroid Build Coastguard Worker    # Check for graceful failure in some error conditions
786*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fatal.sh" -I dts -O dtb nosuchfile.dts
787*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fatal.sh" -I dtb -O dtb nosuchfile.dtb
788*cd60bc56SAndroid Build Coastguard Worker    run_sh_test "$SRCDIR/dtc-fatal.sh" -I fs -O dtb nosuchfile
789*cd60bc56SAndroid Build Coastguard Worker
790*cd60bc56SAndroid Build Coastguard Worker    # Dependencies
791*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o dependencies.test.dtb -d dependencies.test.d "$SRCDIR/dependencies.dts"
792*cd60bc56SAndroid Build Coastguard Worker    sed -i.bak "s,$SRCDIR/,,g" dependencies.test.d
793*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test cmp dependencies.test.d "$SRCDIR/dependencies.cmp"
794*cd60bc56SAndroid Build Coastguard Worker
795*cd60bc56SAndroid Build Coastguard Worker    # Search paths
796*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC -I dts -O dtb -o search_paths.dtb "$SRCDIR/search_paths.dts"
797*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -i "$SRCDIR/search_dir" -I dts -O dtb -o search_paths.dtb \
798*cd60bc56SAndroid Build Coastguard Worker	"$SRCDIR/search_paths.dts"
799*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTC -i "$SRCDIR/search_dir_b" -I dts -O dtb \
800*cd60bc56SAndroid Build Coastguard Worker	-o search_paths_b.dtb "$SRCDIR/search_paths_b.dts"
801*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -i "$SRCDIR/search_dir_b" -i "$SRCDIR/search_dir" -I dts -O dtb \
802*cd60bc56SAndroid Build Coastguard Worker	-o search_paths_b.dtb "$SRCDIR/search_paths_b.dts"
803*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o search_paths_subdir.dtb \
804*cd60bc56SAndroid Build Coastguard Worker	"$SRCDIR/search_dir_b/search_paths_subdir.dts"
805*cd60bc56SAndroid Build Coastguard Worker
806*cd60bc56SAndroid Build Coastguard Worker    # Check -a option
807*cd60bc56SAndroid Build Coastguard Worker    for align in 2 4 8 16 32 64; do
808*cd60bc56SAndroid Build Coastguard Worker	# -p -a
809*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -O dtb -p 1000 -a $align -o align0.dtb "$SRCDIR/subnode_iterate.dts"
810*cd60bc56SAndroid Build Coastguard Worker	base_run_test check_align align0.dtb $align
811*cd60bc56SAndroid Build Coastguard Worker	# -S -a
812*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -O dtb -S 1999 -a $align -o align1.dtb "$SRCDIR/subnode_iterate.dts"
813*cd60bc56SAndroid Build Coastguard Worker	base_run_test check_align align1.dtb $align
814*cd60bc56SAndroid Build Coastguard Worker    done
815*cd60bc56SAndroid Build Coastguard Worker
816*cd60bc56SAndroid Build Coastguard Worker    # Tests for overlay/plugin generation
817*cd60bc56SAndroid Build Coastguard Worker    dtc_overlay_tests
818*cd60bc56SAndroid Build Coastguard Worker}
819*cd60bc56SAndroid Build Coastguard Worker
820*cd60bc56SAndroid Build Coastguard Workercmp_tests () {
821*cd60bc56SAndroid Build Coastguard Worker    basetree="$1"
822*cd60bc56SAndroid Build Coastguard Worker    shift
823*cd60bc56SAndroid Build Coastguard Worker    wrongtrees="$@"
824*cd60bc56SAndroid Build Coastguard Worker
825*cd60bc56SAndroid Build Coastguard Worker    run_test dtb_reverse $basetree
826*cd60bc56SAndroid Build Coastguard Worker
827*cd60bc56SAndroid Build Coastguard Worker    # First dtbs_equal_ordered
828*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered $basetree $basetree
829*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered -n $basetree $basetree.reversed.test.dtb
830*cd60bc56SAndroid Build Coastguard Worker    for tree in $wrongtrees; do
831*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_ordered -n $basetree $tree
832*cd60bc56SAndroid Build Coastguard Worker    done
833*cd60bc56SAndroid Build Coastguard Worker
834*cd60bc56SAndroid Build Coastguard Worker    # now unordered
835*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered $basetree $basetree
836*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered $basetree $basetree.reversed.test.dtb
837*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered $basetree.reversed.test.dtb $basetree
838*cd60bc56SAndroid Build Coastguard Worker    for tree in $wrongtrees; do
839*cd60bc56SAndroid Build Coastguard Worker	run_test dtbs_equal_unordered -n $basetree $tree
840*cd60bc56SAndroid Build Coastguard Worker    done
841*cd60bc56SAndroid Build Coastguard Worker
842*cd60bc56SAndroid Build Coastguard Worker    # now dtc --sort
843*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -s -o $basetree.sorted.test.dtb $basetree
844*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered $basetree $basetree.sorted.test.dtb
845*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dtb -O dtb -s -o $basetree.reversed.sorted.test.dtb $basetree.reversed.test.dtb
846*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_unordered $basetree.reversed.test.dtb $basetree.reversed.sorted.test.dtb
847*cd60bc56SAndroid Build Coastguard Worker    run_test dtbs_equal_ordered $basetree.sorted.test.dtb $basetree.reversed.sorted.test.dtb
848*cd60bc56SAndroid Build Coastguard Worker}
849*cd60bc56SAndroid Build Coastguard Worker
850*cd60bc56SAndroid Build Coastguard Workerdtbs_equal_tests () {
851*cd60bc56SAndroid Build Coastguard Worker    WRONG_TREE1=""
852*cd60bc56SAndroid Build Coastguard Worker    for x in 1 2 3 4 5 6 7 8 9; do
853*cd60bc56SAndroid Build Coastguard Worker	run_dtc_test -I dts -O dtb -o test_tree1_wrong$x.test.dtb "$SRCDIR/test_tree1_wrong$x.dts"
854*cd60bc56SAndroid Build Coastguard Worker	WRONG_TREE1="$WRONG_TREE1 test_tree1_wrong$x.test.dtb"
855*cd60bc56SAndroid Build Coastguard Worker    done
856*cd60bc56SAndroid Build Coastguard Worker    cmp_tests test_tree1.dtb $WRONG_TREE1
857*cd60bc56SAndroid Build Coastguard Worker}
858*cd60bc56SAndroid Build Coastguard Worker
859*cd60bc56SAndroid Build Coastguard Workerfdtget_tests () {
860*cd60bc56SAndroid Build Coastguard Worker    dts=label01.dts
861*cd60bc56SAndroid Build Coastguard Worker    dtb=$dts.fdtget.test.dtb
862*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -O dtb -o $dtb "$SRCDIR/$dts"
863*cd60bc56SAndroid Build Coastguard Worker
864*cd60bc56SAndroid Build Coastguard Worker    # run_fdtget_test <expected-result> [<flags>] <file> <node> <property>
865*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "MyBoardName" $dtb / model
866*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "MyBoardName MyBoardFamilyName" $dtb / compatible
867*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "77 121 66 111 \
868*cd60bc56SAndroid Build Coastguard Worker97 114 100 78 97 109 101 0 77 121 66 111 97 114 100 70 97 109 105 \
869*cd60bc56SAndroid Build Coastguard Worker108 121 78 97 109 101 0" -t bu $dtb / compatible
870*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "MyBoardName MyBoardFamilyName" -t s $dtb / compatible
871*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test 32768 $dtb /cpus/PowerPC,970@1 d-cache-size
872*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test 8000 -tx $dtb /cpus/PowerPC,970@1 d-cache-size
873*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "61 62 63 0" -tbx $dtb /randomnode tricky1
874*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "a b c d de ea ad be ef" -tbx $dtb /randomnode blob
875*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "MyBoardName\0MyBoardFamilyName\0" -tr $dtb / compatible
876*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "\012\013\014\015\336\352\255\276\357" -tr $dtb /randomnode blob
877*cd60bc56SAndroid Build Coastguard Worker
878*cd60bc56SAndroid Build Coastguard Worker    # Here the property size is not a multiple of 4 bytes, so it should fail
879*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTGET -tlx $dtb /randomnode mixed
880*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "6162 6300 1234 0 a 0 b 0 c" -thx $dtb /randomnode mixed
881*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "61 62 63 0 12 34 0 0 0 a 0 0 0 b 0 0 0 c" \
882*cd60bc56SAndroid Build Coastguard Worker	-thhx $dtb /randomnode mixed
883*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTGET -ts $dtb /randomnode doctor-who
884*cd60bc56SAndroid Build Coastguard Worker
885*cd60bc56SAndroid Build Coastguard Worker    # Test multiple arguments
886*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "MyBoardName\nmemory" -ts $dtb / model /memory device_type
887*cd60bc56SAndroid Build Coastguard Worker
888*cd60bc56SAndroid Build Coastguard Worker    # Test defaults
889*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTGET -tx $dtb /randomnode doctor-who
890*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "<the dead silence>" -tx \
891*cd60bc56SAndroid Build Coastguard Worker	-d "<the dead silence>" $dtb /randomnode doctor-who
892*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "<blink>" -tx -d "<blink>" $dtb /memory doctor-who
893*cd60bc56SAndroid Build Coastguard Worker}
894*cd60bc56SAndroid Build Coastguard Worker
895*cd60bc56SAndroid Build Coastguard Workerfdtput_tests () {
896*cd60bc56SAndroid Build Coastguard Worker    dts=label01.dts
897*cd60bc56SAndroid Build Coastguard Worker    dtb=$dts.fdtput.test.dtb
898*cd60bc56SAndroid Build Coastguard Worker    text="$SRCDIR/lorem.txt"
899*cd60bc56SAndroid Build Coastguard Worker
900*cd60bc56SAndroid Build Coastguard Worker    # Allow just enough space for $text
901*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -O dtb -p $($STATSZ $text) -o $dtb "$SRCDIR/$dts"
902*cd60bc56SAndroid Build Coastguard Worker
903*cd60bc56SAndroid Build Coastguard Worker    # run_fdtput_test <expected-result> <file> <node> <property> <flags> <value>
904*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "a_model" $dtb / model -ts "a_model"
905*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "board1 board2" $dtb / compatible -ts board1 board2
906*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "board1 board2" $dtb / compatible -ts "board1 board2"
907*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "32768" $dtb /cpus/PowerPC,970@1 d-cache-size "" "32768"
908*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "8001" $dtb /cpus/PowerPC,970@1 d-cache-size -tx 0x8001
909*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "2 3 12" $dtb /randomnode tricky1 -tbi "02 003 12"
910*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "a b c ea ad be ef" $dtb /randomnode blob \
911*cd60bc56SAndroid Build Coastguard Worker	-tbx "a b c ea ad be ef"
912*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "a0b0c0d deeaae ef000000" $dtb /randomnode blob \
913*cd60bc56SAndroid Build Coastguard Worker	-tx "a0b0c0d deeaae ef000000"
914*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "$(cat $text)" $dtb /randomnode blob -ts "$(cat $text)"
915*cd60bc56SAndroid Build Coastguard Worker
916*cd60bc56SAndroid Build Coastguard Worker    # Test expansion of the blob when insufficient room for property
917*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "$(cat $text $text)" $dtb /randomnode blob -ts "$(cat $text $text)"
918*cd60bc56SAndroid Build Coastguard Worker
919*cd60bc56SAndroid Build Coastguard Worker    # Start again with a fresh dtb
920*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -O dtb -p $($STATSZ $text) -o $dtb "$SRCDIR/$dts"
921*cd60bc56SAndroid Build Coastguard Worker
922*cd60bc56SAndroid Build Coastguard Worker    # Node creation
923*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTPUT $dtb -c /baldrick sod
924*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -c /chosen/son /chosen/daughter
925*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "eva" $dtb /chosen/daughter name "" -ts "eva"
926*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "adam" $dtb /chosen/son name "" -ts "adam"
927*cd60bc56SAndroid Build Coastguard Worker
928*cd60bc56SAndroid Build Coastguard Worker    # Not allowed to create an existing node
929*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTPUT $dtb -c /chosen
930*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTPUT $dtb -c /chosen/son
931*cd60bc56SAndroid Build Coastguard Worker
932*cd60bc56SAndroid Build Coastguard Worker    # Automatic node creation
933*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -cp /blackadder/the-second/turnip \
934*cd60bc56SAndroid Build Coastguard Worker	/blackadder/the-second/potato
935*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test 1000 $dtb /blackadder/the-second/turnip cost "" 1000
936*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "fine wine" $dtb /blackadder/the-second/potato drink \
937*cd60bc56SAndroid Build Coastguard Worker	"-ts" "fine wine"
938*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -p /you/are/drunk/sir/winston slurp -ts twice
939*cd60bc56SAndroid Build Coastguard Worker
940*cd60bc56SAndroid Build Coastguard Worker    # Test expansion of the blob when insufficient room for a new node
941*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -cp "$(cat $text $text)/longish"
942*cd60bc56SAndroid Build Coastguard Worker
943*cd60bc56SAndroid Build Coastguard Worker    # Allowed to create an existing node with -p
944*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -cp /chosen
945*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -cp /chosen/son
946*cd60bc56SAndroid Build Coastguard Worker
947*cd60bc56SAndroid Build Coastguard Worker    # Start again with a fresh dtb
948*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -O dtb -p $($STATSZ $text) -o $dtb "$SRCDIR/$dts"
949*cd60bc56SAndroid Build Coastguard Worker
950*cd60bc56SAndroid Build Coastguard Worker    # Node delete
951*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -c /chosen/node1 /chosen/node2 /chosen/node3
952*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "node3\nnode2\nnode1" $dtb -l  /chosen
953*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -r /chosen/node1 /chosen/node2
954*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "node3" $dtb -l  /chosen
955*cd60bc56SAndroid Build Coastguard Worker
956*cd60bc56SAndroid Build Coastguard Worker    # Delete the non-existent node
957*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTPUT $dtb -r /non-existent/node
958*cd60bc56SAndroid Build Coastguard Worker
959*cd60bc56SAndroid Build Coastguard Worker    # Property delete
960*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "eva" $dtb /chosen/ name "" -ts "eva"
961*cd60bc56SAndroid Build Coastguard Worker    run_fdtput_test "016" $dtb /chosen/ age  "" -ts "016"
962*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "age\nname\nbootargs\nlinux,platform" $dtb -p  /chosen
963*cd60bc56SAndroid Build Coastguard Worker    run_wrap_test $DTPUT $dtb -d /chosen/ name age
964*cd60bc56SAndroid Build Coastguard Worker    run_fdtget_test "bootargs\nlinux,platform" $dtb -p  /chosen
965*cd60bc56SAndroid Build Coastguard Worker
966*cd60bc56SAndroid Build Coastguard Worker    # Delete the non-existent property
967*cd60bc56SAndroid Build Coastguard Worker    run_wrap_error_test $DTPUT $dtb -d /chosen   non-existent-prop
968*cd60bc56SAndroid Build Coastguard Worker
969*cd60bc56SAndroid Build Coastguard Worker    # TODO: Add tests for verbose mode?
970*cd60bc56SAndroid Build Coastguard Worker}
971*cd60bc56SAndroid Build Coastguard Worker
972*cd60bc56SAndroid Build Coastguard Workerutilfdt_tests () {
973*cd60bc56SAndroid Build Coastguard Worker    run_test utilfdt_test
974*cd60bc56SAndroid Build Coastguard Worker}
975*cd60bc56SAndroid Build Coastguard Worker
976*cd60bc56SAndroid Build Coastguard Workerfdtdump_tests () {
977*cd60bc56SAndroid Build Coastguard Worker    run_fdtdump_test "$SRCDIR/fdtdump.dts"
978*cd60bc56SAndroid Build Coastguard Worker}
979*cd60bc56SAndroid Build Coastguard Worker
980*cd60bc56SAndroid Build Coastguard Workerfdtoverlay_tests() {
981*cd60bc56SAndroid Build Coastguard Worker    base="$SRCDIR/overlay_base.dts"
982*cd60bc56SAndroid Build Coastguard Worker    basedtb=overlay_base.fdoverlay.test.dtb
983*cd60bc56SAndroid Build Coastguard Worker    overlay="$SRCDIR/overlay_overlay_manual_fixups.dts"
984*cd60bc56SAndroid Build Coastguard Worker    overlaydtb=overlay_overlay_manual_fixups.fdoverlay.test.dtb
985*cd60bc56SAndroid Build Coastguard Worker    targetdtb=target.fdoverlay.test.dtb
986*cd60bc56SAndroid Build Coastguard Worker
987*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $basedtb $base
988*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $overlaydtb $overlay
989*cd60bc56SAndroid Build Coastguard Worker
990*cd60bc56SAndroid Build Coastguard Worker    # test that the new property is installed
991*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test foobar "/test-node" "test-str-property" "-ts" ${basedtb} ${targetdtb} ${overlaydtb}
992*cd60bc56SAndroid Build Coastguard Worker
993*cd60bc56SAndroid Build Coastguard Worker    stacked_base="$SRCDIR/stacked_overlay_base.dts"
994*cd60bc56SAndroid Build Coastguard Worker    stacked_basedtb=stacked_overlay_base.fdtoverlay.test.dtb
995*cd60bc56SAndroid Build Coastguard Worker    stacked_bar="$SRCDIR/stacked_overlay_bar.dts"
996*cd60bc56SAndroid Build Coastguard Worker    stacked_bardtb=stacked_overlay_bar.fdtoverlay.test.dtb
997*cd60bc56SAndroid Build Coastguard Worker    stacked_baz="$SRCDIR/stacked_overlay_baz.dts"
998*cd60bc56SAndroid Build Coastguard Worker    stacked_bazdtb=stacked_overlay_baz.fdtoverlay.test.dtb
999*cd60bc56SAndroid Build Coastguard Worker    stacked_targetdtb=stacked_overlay_target.fdtoverlay.test.dtb
1000*cd60bc56SAndroid Build Coastguard Worker
1001*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $stacked_basedtb $stacked_base
1002*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $stacked_bardtb $stacked_bar
1003*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $stacked_bazdtb $stacked_baz
1004*cd60bc56SAndroid Build Coastguard Worker
1005*cd60bc56SAndroid Build Coastguard Worker    # test that baz correctly inserted the property
1006*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test baz "/foonode/barnode/baznode" "baz-property" "-ts" ${stacked_basedtb} ${stacked_targetdtb} ${stacked_bardtb} ${stacked_bazdtb}
1007*cd60bc56SAndroid Build Coastguard Worker
1008*cd60bc56SAndroid Build Coastguard Worker    # test that bar and baz are correctly appended to __symbols__
1009*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test "/foonode/barnode" "/__symbols__"  "bar" "-ts" ${stacked_basedtb} ${stacked_targetdtb} ${stacked_bardtb}
1010*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test "/foonode/barnode/baznode" "/__symbols__"  "baz" "-ts" ${stacked_basedtb} ${stacked_targetdtb} ${stacked_bardtb} ${stacked_bazdtb}
1011*cd60bc56SAndroid Build Coastguard Worker
1012*cd60bc56SAndroid Build Coastguard Worker    overlay_long_path="$SRCDIR/overlay_overlay_long_path.dts"
1013*cd60bc56SAndroid Build Coastguard Worker    overlay_long_pathdtb=overlay_overlay_long_path.fdoverlay.test.dtb
1014*cd60bc56SAndroid Build Coastguard Worker    target_long_pathdtb=overlay_overlay_long_path_target.fdoverlay.test.dtb
1015*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $overlay_long_pathdtb $overlay_long_path
1016*cd60bc56SAndroid Build Coastguard Worker
1017*cd60bc56SAndroid Build Coastguard Worker    # test that fdtoverlay manages to apply overlays with long target path
1018*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test lpath "/test-node/sub-test-node/sub-test-node-with-very-long-target-path/test-0" "prop" "-ts" ${basedtb} ${target_long_pathdtb} ${overlay_long_pathdtb}
1019*cd60bc56SAndroid Build Coastguard Worker
1020*cd60bc56SAndroid Build Coastguard Worker    # test adding a label to the root of a fragment
1021*cd60bc56SAndroid Build Coastguard Worker    stacked_base_nolabel="$SRCDIR/stacked_overlay_base_nolabel.dts"
1022*cd60bc56SAndroid Build Coastguard Worker    stacked_base_nolabeldtb=stacked_overlay_base_nolabel.test.dtb
1023*cd60bc56SAndroid Build Coastguard Worker    stacked_addlabel="$SRCDIR/stacked_overlay_addlabel.dts"
1024*cd60bc56SAndroid Build Coastguard Worker    stacked_addlabeldtb=stacked_overlay_addlabel.test.dtb
1025*cd60bc56SAndroid Build Coastguard Worker    stacked_addlabel_targetdtb=stacked_overlay_target_nolabel.fdtoverlay.test.dtb
1026*cd60bc56SAndroid Build Coastguard Worker
1027*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $stacked_base_nolabeldtb $stacked_base_nolabel
1028*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -@ -I dts -O dtb -o $stacked_addlabeldtb $stacked_addlabel
1029*cd60bc56SAndroid Build Coastguard Worker
1030*cd60bc56SAndroid Build Coastguard Worker    run_fdtoverlay_test baz "/foonode/barnode/baznode" "baz-property" "-ts" ${stacked_base_nolabeldtb} ${stacked_addlabel_targetdtb} ${stacked_addlabeldtb} ${stacked_bardtb} ${stacked_bazdtb}
1031*cd60bc56SAndroid Build Coastguard Worker}
1032*cd60bc56SAndroid Build Coastguard Worker
1033*cd60bc56SAndroid Build Coastguard Workerpylibfdt_tests () {
1034*cd60bc56SAndroid Build Coastguard Worker    run_dtc_test -I dts -O dtb -o test_props.dtb "$SRCDIR/test_props.dts"
1035*cd60bc56SAndroid Build Coastguard Worker    TMP=/tmp/tests.stderr.$$
1036*cd60bc56SAndroid Build Coastguard Worker    $PYTHON "$SRCDIR/pylibfdt_tests.py" -v 2> $TMP
1037*cd60bc56SAndroid Build Coastguard Worker
1038*cd60bc56SAndroid Build Coastguard Worker    # Use the 'ok' message meaning the test passed, 'ERROR' meaning it failed
1039*cd60bc56SAndroid Build Coastguard Worker    # and the summary line for total tests (e.g. 'Ran 17 tests in 0.002s').
1040*cd60bc56SAndroid Build Coastguard Worker    # We could add pass + fail to get total tests, but this provides a useful
1041*cd60bc56SAndroid Build Coastguard Worker    # sanity check.
1042*cd60bc56SAndroid Build Coastguard Worker    pass_count=$(grep "ok$" $TMP | wc -l)
1043*cd60bc56SAndroid Build Coastguard Worker    fail_count=$(grep "^ERROR: " $TMP | wc -l)
1044*cd60bc56SAndroid Build Coastguard Worker    total_tests=$(sed -n 's/^Ran \([0-9]*\) tests.*$/\1/p' $TMP)
1045*cd60bc56SAndroid Build Coastguard Worker    cat $TMP
1046*cd60bc56SAndroid Build Coastguard Worker    rm $TMP
1047*cd60bc56SAndroid Build Coastguard Worker
1048*cd60bc56SAndroid Build Coastguard Worker    # Extract the test results and add them to our totals
1049*cd60bc56SAndroid Build Coastguard Worker    tot_fail=$((tot_fail + $fail_count))
1050*cd60bc56SAndroid Build Coastguard Worker    tot_pass=$((tot_pass + $pass_count))
1051*cd60bc56SAndroid Build Coastguard Worker    tot_tests=$((tot_tests + $total_tests))
1052*cd60bc56SAndroid Build Coastguard Worker}
1053*cd60bc56SAndroid Build Coastguard Worker
1054*cd60bc56SAndroid Build Coastguard Workerwhile getopts "vt:me" ARG ; do
1055*cd60bc56SAndroid Build Coastguard Worker    case $ARG in
1056*cd60bc56SAndroid Build Coastguard Worker	"v")
1057*cd60bc56SAndroid Build Coastguard Worker	    unset QUIET_TEST
1058*cd60bc56SAndroid Build Coastguard Worker	    ;;
1059*cd60bc56SAndroid Build Coastguard Worker	"t")
1060*cd60bc56SAndroid Build Coastguard Worker	    TESTSETS=$OPTARG
1061*cd60bc56SAndroid Build Coastguard Worker	    ;;
1062*cd60bc56SAndroid Build Coastguard Worker	"m")
1063*cd60bc56SAndroid Build Coastguard Worker	    VALGRIND="valgrind --tool=memcheck -q --error-exitcode=$VGCODE"
1064*cd60bc56SAndroid Build Coastguard Worker	    ;;
1065*cd60bc56SAndroid Build Coastguard Worker	"e")
1066*cd60bc56SAndroid Build Coastguard Worker	    STOP_ON_FAIL=1
1067*cd60bc56SAndroid Build Coastguard Worker	    ;;
1068*cd60bc56SAndroid Build Coastguard Worker    esac
1069*cd60bc56SAndroid Build Coastguard Workerdone
1070*cd60bc56SAndroid Build Coastguard Worker
1071*cd60bc56SAndroid Build Coastguard Workerif [ -z "$TESTSETS" ]; then
1072*cd60bc56SAndroid Build Coastguard Worker    TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget fdtput fdtdump fdtoverlay"
1073*cd60bc56SAndroid Build Coastguard Worker
1074*cd60bc56SAndroid Build Coastguard Worker    # Test pylibfdt if the libfdt Python module is available.
1075*cd60bc56SAndroid Build Coastguard Worker    if ! $no_python; then
1076*cd60bc56SAndroid Build Coastguard Worker        TESTSETS="$TESTSETS pylibfdt"
1077*cd60bc56SAndroid Build Coastguard Worker    fi
1078*cd60bc56SAndroid Build Coastguard Workerfi
1079*cd60bc56SAndroid Build Coastguard Worker
1080*cd60bc56SAndroid Build Coastguard Worker# Make sure we don't have stale blobs lying around
1081*cd60bc56SAndroid Build Coastguard Workerrm -f *.test.dtb *.test.dts
1082*cd60bc56SAndroid Build Coastguard Worker
1083*cd60bc56SAndroid Build Coastguard Workerfor set in $TESTSETS; do
1084*cd60bc56SAndroid Build Coastguard Worker    case $set in
1085*cd60bc56SAndroid Build Coastguard Worker	"libfdt")
1086*cd60bc56SAndroid Build Coastguard Worker	    libfdt_tests
1087*cd60bc56SAndroid Build Coastguard Worker	    ;;
1088*cd60bc56SAndroid Build Coastguard Worker	"utilfdt")
1089*cd60bc56SAndroid Build Coastguard Worker	    utilfdt_tests
1090*cd60bc56SAndroid Build Coastguard Worker	    ;;
1091*cd60bc56SAndroid Build Coastguard Worker	"dtc")
1092*cd60bc56SAndroid Build Coastguard Worker	    dtc_tests
1093*cd60bc56SAndroid Build Coastguard Worker	    ;;
1094*cd60bc56SAndroid Build Coastguard Worker	"dtbs_equal")
1095*cd60bc56SAndroid Build Coastguard Worker	    dtbs_equal_tests
1096*cd60bc56SAndroid Build Coastguard Worker	    ;;
1097*cd60bc56SAndroid Build Coastguard Worker	"fdtget")
1098*cd60bc56SAndroid Build Coastguard Worker	    fdtget_tests
1099*cd60bc56SAndroid Build Coastguard Worker	    ;;
1100*cd60bc56SAndroid Build Coastguard Worker	"fdtput")
1101*cd60bc56SAndroid Build Coastguard Worker	    fdtput_tests
1102*cd60bc56SAndroid Build Coastguard Worker	    ;;
1103*cd60bc56SAndroid Build Coastguard Worker	"fdtdump")
1104*cd60bc56SAndroid Build Coastguard Worker	    fdtdump_tests
1105*cd60bc56SAndroid Build Coastguard Worker	    ;;
1106*cd60bc56SAndroid Build Coastguard Worker	"pylibfdt")
1107*cd60bc56SAndroid Build Coastguard Worker	    pylibfdt_tests
1108*cd60bc56SAndroid Build Coastguard Worker	    ;;
1109*cd60bc56SAndroid Build Coastguard Worker        "fdtoverlay")
1110*cd60bc56SAndroid Build Coastguard Worker	    fdtoverlay_tests
1111*cd60bc56SAndroid Build Coastguard Worker	    ;;
1112*cd60bc56SAndroid Build Coastguard Worker    esac
1113*cd60bc56SAndroid Build Coastguard Workerdone
1114*cd60bc56SAndroid Build Coastguard Worker
1115*cd60bc56SAndroid Build Coastguard Workerecho "********** TEST SUMMARY"
1116*cd60bc56SAndroid Build Coastguard Workerecho "*     Total testcases:	$tot_tests"
1117*cd60bc56SAndroid Build Coastguard Workerecho "*                PASS:	$tot_pass"
1118*cd60bc56SAndroid Build Coastguard Workerecho "*                FAIL:	$tot_fail"
1119*cd60bc56SAndroid Build Coastguard Workerecho "*   Bad configuration:	$tot_config"
1120*cd60bc56SAndroid Build Coastguard Workerif [ -n "$VALGRIND" ]; then
1121*cd60bc56SAndroid Build Coastguard Worker    echo "*    valgrind errors:	$tot_vg"
1122*cd60bc56SAndroid Build Coastguard Workerfi
1123*cd60bc56SAndroid Build Coastguard Workerecho "* Strange test result:	$tot_strange"
1124*cd60bc56SAndroid Build Coastguard Workerecho "**********"
1125*cd60bc56SAndroid Build Coastguard Worker
1126*cd60bc56SAndroid Build Coastguard Worker[ "$tot_tests" -eq "$tot_pass" ] || exit 1
1127