summaryrefslogtreecommitdiff
path: root/tests/run-aggregate-size.sh
blob: 08d57bbf2ec07b12be25a4a81541f2ec6992d58e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#! /bin/sh
# Copyright (C) 2014 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# elfutils is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

. $srcdir/test-subr.sh

# char c;
# int i;
# long l;
#
# void *v;
#
# struct s
# {
#   char *a;
#   int i;
# } s;
#
# char ca[16];
# int ia[32];
# void *va[64];
# struct s sa[8];

# On x86_64 (LP64):
# gcc -g -c -o testfile-sizes1.o sizes.c
# clang -g -c -o testfile-sizes2.o sizes.c

# const char c;
# volatile int i;
# const volatile long l;
#
# void * restrict v;
#
# struct s
# {
#   const char *a;
#   volatile int i;
# } s;
#
# const char ca[16];
# volatile int ia[32];
# const volatile void * const volatile restrict va[64];
# struct s sa[8];
# double d3d[3][4][5];
#
# typedef const int foo;
# typedef volatile foo bar;
# foo f;
# bar b;
#
# gcc -std=c99 -g -c -o testfile-sizes3.o sizes.c

# The file testfile-size4.o is hand-crafted.

testfiles testfile-sizes1.o testfile-sizes2.o testfile-sizes3.o testfile-sizes4.o

testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes1.o <<\EOF
c size 1
i size 4
l size 8
v size 8
s size 16
ca size 16
ia size 128
va size 512
sa size 128
EOF

testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes2.o <<\EOF
c size 1
i size 4
l size 8
v size 8
s size 16
ca size 16
ia size 128
va size 512
sa size 128
EOF

testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes3.o <<\EOF
c size 1
i size 4
l size 8
v size 8
s size 16
ca size 16
ia size 128
va size 512
sa size 128
d3d size 480
f size 4
b size 4
EOF

testrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes4.o <<\EOF
v size 257
EOF

exit 0