xref: /aosp_15_r20/external/selinux/libselinux/src/exception.sh (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker#!/bin/bash
2*2d543d20SAndroid Build Coastguard Worker
3*2d543d20SAndroid Build Coastguard Workerfunction except() {
4*2d543d20SAndroid Build Coastguard Workercase $1 in
5*2d543d20SAndroid Build Coastguard Worker    selinux_file_context_cmp) # ignore
6*2d543d20SAndroid Build Coastguard Worker    ;;
7*2d543d20SAndroid Build Coastguard Worker    *)
8*2d543d20SAndroid Build Coastguard Workerecho "
9*2d543d20SAndroid Build Coastguard Worker%exception $1 {
10*2d543d20SAndroid Build Coastguard Worker  \$action
11*2d543d20SAndroid Build Coastguard Worker  if (result < 0) {
12*2d543d20SAndroid Build Coastguard Worker     PyErr_SetFromErrno(PyExc_OSError);
13*2d543d20SAndroid Build Coastguard Worker     SWIG_fail;
14*2d543d20SAndroid Build Coastguard Worker  }
15*2d543d20SAndroid Build Coastguard Worker}"
16*2d543d20SAndroid Build Coastguard Worker;;
17*2d543d20SAndroid Build Coastguard Workeresac
18*2d543d20SAndroid Build Coastguard Worker}
19*2d543d20SAndroid Build Coastguard Worker
20*2d543d20SAndroid Build Coastguard Worker# Make sure that selinux.h is included first in order not to depend on the order
21*2d543d20SAndroid Build Coastguard Worker# in which "#include <selinux/selinux.h>" appears in other files.
22*2d543d20SAndroid Build Coastguard WorkerFILE_LIST=(
23*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/selinux.h
24*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/avc.h
25*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/context.h
26*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/get_context_list.h
27*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/get_default_type.h
28*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/label.h
29*2d543d20SAndroid Build Coastguard Worker    ../include/selinux/restorecon.h
30*2d543d20SAndroid Build Coastguard Worker)
31*2d543d20SAndroid Build Coastguard Workerif ! cat "${FILE_LIST[@]}" | ${CC:-gcc} -x c -c -I../include -o temp.o - -aux-info temp.aux
32*2d543d20SAndroid Build Coastguard Workerthen
33*2d543d20SAndroid Build Coastguard Worker    # clang does not support -aux-info so fall back to gcc
34*2d543d20SAndroid Build Coastguard Worker    cat "${FILE_LIST[@]}" | gcc -x c -c -I../include -o temp.o - -aux-info temp.aux
35*2d543d20SAndroid Build Coastguard Workerfi
36*2d543d20SAndroid Build Coastguard Workerfor i in `awk '/<stdin>.*extern int/ { print $6 }' temp.aux`; do except $i ; done
37*2d543d20SAndroid Build Coastguard Workerrm -f -- temp.aux temp.o
38