Further harden glibc malloc metadata against 1-byte overflows.
[glibc.git] / conform / check-header-lists.sh
blobb89fcc93166c3f7c7adc68dd8df7e44eda998094
1 #!/bin/sh
2 # Check the set of headers with conformtest expectations for a given standard.
3 # Copyright (C) 2014-2017 Free Software Foundation, Inc.
4 # This file is part of the GNU C Library.
6 # The GNU C Library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Lesser General Public
8 # License as published by the Free Software Foundation; either
9 # version 2.1 of the License, or (at your option) any later version.
11 # The GNU C Library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Lesser General Public License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with the GNU C Library; if not, see
18 # <http://www.gnu.org/licenses/>.
20 set -e
22 std=$1
23 CC=$2
24 expected_list=$3
25 all_data_files=$4
27 new_list=
29 for f in $all_data_files; do
30 h=${f#data/}
31 h=${h%-data}
32 exp=$($CC -D$std -x c -E $f | sed -e '/^#/d' -e '/^[ ]*$/d')
33 if [ "$exp" ]; then
34 new_list="$new_list $h"
36 done
38 echo "Headers with expectations for $std: $new_list"
39 echo "Expected list: $expected_list"
41 rc=0
43 for h in $expected_list; do
44 case " $new_list " in
45 (*" $h "*)
47 (*)
48 echo "Missing expectations for $h."
49 rc=1
51 esac
52 done
54 for h in $new_list; do
55 case " $expected_list " in
56 (*" $h "*)
58 (*)
59 echo "Spurious expectations for $h."
60 rc=1
62 esac
63 done
65 exit $rc