~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/headers_install.sh

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0
  3 
  4 if [ $# -ne 2 ]
  5 then
  6         echo "Usage: headers_install.sh INFILE OUTFILE"
  7         echo
  8         echo "Prepares kernel header files for use by user space, by removing"
  9         echo "all compiler.h definitions and #includes, removing any"
 10         echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
 11         echo "asm/inline/volatile keywords."
 12         echo
 13         echo "INFILE: header file to operate on"
 14         echo "OUTFILE: output file which the processed header is written to"
 15 
 16         exit 1
 17 fi
 18 
 19 # Grab arguments
 20 INFILE=$1
 21 OUTFILE=$2
 22 TMPFILE=$OUTFILE.tmp
 23 
 24 trap 'rm -f $OUTFILE $TMPFILE' EXIT
 25 
 26 # SPDX-License-Identifier with GPL variants must have "WITH Linux-syscall-note"
 27 if [ -n "$(sed -n -e "/SPDX-License-Identifier:.*GPL-/{/WITH Linux-syscall-note/!p}" $INFILE)" ]; then
 28         echo "error: $INFILE: missing \"WITH Linux-syscall-note\" for SPDX-License-Identifier" >&2
 29         exit 1
 30 fi
 31 
 32 sed -E -e '
 33         s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
 34         s/__attribute_const__([[:space:]]|$)/\1/g
 35         s@^#include <linux/compiler(|_types).h>@@
 36         s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
 37         s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
 38         s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
 39 ' $INFILE > $TMPFILE || exit 1
 40 
 41 scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE
 42 [ $? -gt 1 ] && exit 1
 43 
 44 # Remove /* ... */ style comments, and find CONFIG_ references in code
 45 configs=$(sed -e '
 46 :comment
 47         s:/\*[^*][^*]*:/*:
 48         s:/\*\*\**\([^/]\):/*\1:
 49         t comment
 50         s:/\*\*/: :
 51         t comment
 52         /\/\*/! b check
 53         N
 54         b comment
 55 :print
 56         P
 57         D
 58 :check
 59         s:^\(CONFIG_[[:alnum:]_]*\):\1\n:
 60         t print
 61         s:^[[:alnum:]_][[:alnum:]_]*::
 62         s:^[^[:alnum:]_][^[:alnum:]_]*::
 63         t check
 64         d
 65 ' $OUTFILE)
 66 
 67 # The entries in the following list do not result in an error.
 68 # Please do not add a new entry. This list is only for existing ones.
 69 # The list will be reduced gradually, and deleted eventually. (hopefully)
 70 #
 71 # The format is <file-name>:<CONFIG-option> in each line.
 72 config_leak_ignores="
 73 arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_16K
 74 arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
 75 arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
 76 arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
 77 arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
 78 arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT
 79 arch/x86/include/uapi/asm/auxvec.h:CONFIG_IA32_EMULATION
 80 arch/x86/include/uapi/asm/auxvec.h:CONFIG_X86_64
 81 "
 82 
 83 for c in $configs
 84 do
 85         leak_error=1
 86 
 87         for ignore in $config_leak_ignores
 88         do
 89                 if echo "$INFILE:$c" | grep -q "$ignore$"; then
 90                         leak_error=
 91                         break
 92                 fi
 93         done
 94 
 95         if [ "$leak_error" = 1 ]; then
 96                 echo "error: $INFILE: leak $c to user-space" >&2
 97                 exit 1
 98         fi
 99 done
100 
101 rm -f $TMPFILE
102 trap - EXIT

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php