103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes#! /bin/sh 203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# Copyright (C) 2014 Red Hat, Inc. 303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# This file is part of elfutils. 403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# This file is free software; you can redistribute it and/or modify 603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# it under the terms of the GNU General Public License as published by 703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# the Free Software Foundation; either version 3 of the License, or 803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# (at your option) any later version. 903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 1003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# elfutils is distributed in the hope that it will be useful, but 1103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# WITHOUT ANY WARRANTY; without even the implied warranty of 1203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# GNU General Public License for more details. 1403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 1503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# You should have received a copy of the GNU General Public License 1603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# along with this program. If not, see <http://www.gnu.org/licenses/>. 1703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 1803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes. $srcdir/test-subr.sh 1903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 2003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# char c; 2103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# int i; 2203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# long l; 2303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 2403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# void *v; 2503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 2603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# struct s 2703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# { 2803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# char *a; 2903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# int i; 3003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# } s; 3103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 3203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# char ca[16]; 3303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# int ia[32]; 3403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# void *va[64]; 3503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# struct s sa[8]; 3603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 3703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# On x86_64 (LP64): 3803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# gcc -g -c -o testfile-sizes1.o sizes.c 3903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# clang -g -c -o testfile-sizes2.o sizes.c 4003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 4103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# const char c; 4203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# volatile int i; 4303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# const volatile long l; 4403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 4503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# void * restrict v; 4603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 4703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# struct s 4803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# { 4903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# const char *a; 5003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# volatile int i; 5103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# } s; 5203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 5303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# const char ca[16]; 5403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# volatile int ia[32]; 5503333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# const volatile void * const volatile restrict va[64]; 5603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# struct s sa[8]; 5703333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 5803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# typedef const int foo; 5903333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# typedef volatile foo bar; 6003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# foo f; 6103333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# bar b; 6203333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# 6303333823c75a1c1887e923828113a1b0fd12020cElliott Hughes# gcc -std=c99 -g -c -o testfile-sizes3.o sizes.c 6403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 6503333823c75a1c1887e923828113a1b0fd12020cElliott Hughestestfiles testfile-sizes1.o testfile-sizes2.o testfile-sizes3.o 6603333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 6703333823c75a1c1887e923828113a1b0fd12020cElliott Hughestestrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes1.o <<\EOF 6803333823c75a1c1887e923828113a1b0fd12020cElliott Hughesc size 1 6903333823c75a1c1887e923828113a1b0fd12020cElliott Hughesi size 4 7003333823c75a1c1887e923828113a1b0fd12020cElliott Hughesl size 8 7103333823c75a1c1887e923828113a1b0fd12020cElliott Hughesv size 8 7203333823c75a1c1887e923828113a1b0fd12020cElliott Hughess size 16 7303333823c75a1c1887e923828113a1b0fd12020cElliott Hughesca size 16 7403333823c75a1c1887e923828113a1b0fd12020cElliott Hughesia size 128 7503333823c75a1c1887e923828113a1b0fd12020cElliott Hughesva size 512 7603333823c75a1c1887e923828113a1b0fd12020cElliott Hughessa size 128 7703333823c75a1c1887e923828113a1b0fd12020cElliott HughesEOF 7803333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 7903333823c75a1c1887e923828113a1b0fd12020cElliott Hughestestrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes2.o <<\EOF 8003333823c75a1c1887e923828113a1b0fd12020cElliott Hughesc size 1 8103333823c75a1c1887e923828113a1b0fd12020cElliott Hughesi size 4 8203333823c75a1c1887e923828113a1b0fd12020cElliott Hughesl size 8 8303333823c75a1c1887e923828113a1b0fd12020cElliott Hughesv size 8 8403333823c75a1c1887e923828113a1b0fd12020cElliott Hughess size 16 8503333823c75a1c1887e923828113a1b0fd12020cElliott Hughesca size 16 8603333823c75a1c1887e923828113a1b0fd12020cElliott Hughesia size 128 8703333823c75a1c1887e923828113a1b0fd12020cElliott Hughesva size 512 8803333823c75a1c1887e923828113a1b0fd12020cElliott Hughessa size 128 8903333823c75a1c1887e923828113a1b0fd12020cElliott HughesEOF 9003333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 9103333823c75a1c1887e923828113a1b0fd12020cElliott Hughestestrun_compare ${abs_builddir}/aggregate_size -e testfile-sizes3.o <<\EOF 9203333823c75a1c1887e923828113a1b0fd12020cElliott Hughesc size 1 9303333823c75a1c1887e923828113a1b0fd12020cElliott Hughesi size 4 9403333823c75a1c1887e923828113a1b0fd12020cElliott Hughesl size 8 9503333823c75a1c1887e923828113a1b0fd12020cElliott Hughesv size 8 9603333823c75a1c1887e923828113a1b0fd12020cElliott Hughess size 16 9703333823c75a1c1887e923828113a1b0fd12020cElliott Hughesca size 16 9803333823c75a1c1887e923828113a1b0fd12020cElliott Hughesia size 128 9903333823c75a1c1887e923828113a1b0fd12020cElliott Hughesva size 512 10003333823c75a1c1887e923828113a1b0fd12020cElliott Hughessa size 128 10103333823c75a1c1887e923828113a1b0fd12020cElliott Hughesf size 4 10203333823c75a1c1887e923828113a1b0fd12020cElliott Hughesb size 4 10303333823c75a1c1887e923828113a1b0fd12020cElliott HughesEOF 10403333823c75a1c1887e923828113a1b0fd12020cElliott Hughes 10503333823c75a1c1887e923828113a1b0fd12020cElliott Hughesexit 0 106