1#!/bin/bash 2# Copyright (C) 2005-2022 Free Software Foundation, Inc. 3# This file is part of the GNU C Library. 4 5# The GNU C Library is free software; you can redistribute it and/or 6# modify it under the terms of the GNU Lesser General Public 7# License as published by the Free Software Foundation; either 8# version 2.1 of the License, or (at your option) any later version. 9 10# The GNU C Library is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# Lesser General Public License for more details. 14 15# You should have received a copy of the GNU Lesser General Public 16# License along with the GNU C Library; if not, see 17# <https://www.gnu.org/licenses/>. 18# 19includedir="$1" 20objpfx="$2" 21 22# To avoid long paths. 23cd "$objpfx" 24 25# OK if *.os is missing. 26shopt -s nullglob 27 28# Search all dependency files for file names in the include directory. 29# There are a few system headers we are known to use. 30# These include Linux kernel headers (asm*, arch, and linux), 31# and Mach kernel headers (mach). 32exec ${AWK} -v includedir="$includedir" ' 33BEGIN { 34 status = 0 35 exclude = "^" includedir \ 36 "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|mach_debug/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h|version\\.h)|gd|nss3/|nspr4?/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h)" 37} 38/^[^ ]/ && $1 ~ /.*:/ { obj = $1 } 39{ 40 for (i = 1; i <= NF; ++i) { 41 if ($i ~ ("^" includedir) && $i !~ exclude) { 42 print "***", obj, "uses", $i 43 status = 1 44 } 45 } 46} 47END { exit status }' */*.{o,os,oS}.d 48