xref: /aosp_15_r20/external/crosvm/jail/seccomp/detect_duplication.py (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*bb4ee6a4SAndroid Build Coastguard Worker# -*- coding: utf-8 -*-
3*bb4ee6a4SAndroid Build Coastguard Worker#
4*bb4ee6a4SAndroid Build Coastguard Worker# Copyright (C) 2023 The Android Open Source Project
5*bb4ee6a4SAndroid Build Coastguard Worker#
6*bb4ee6a4SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
7*bb4ee6a4SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
8*bb4ee6a4SAndroid Build Coastguard Worker# You may obtain a copy of the License at
9*bb4ee6a4SAndroid Build Coastguard Worker#
10*bb4ee6a4SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
11*bb4ee6a4SAndroid Build Coastguard Worker#
12*bb4ee6a4SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
13*bb4ee6a4SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
14*bb4ee6a4SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*bb4ee6a4SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
16*bb4ee6a4SAndroid Build Coastguard Worker# limitations under the License.
17*bb4ee6a4SAndroid Build Coastguard Worker
18*bb4ee6a4SAndroid Build Coastguard Workerimport sys
19*bb4ee6a4SAndroid Build Coastguard Worker
20*bb4ee6a4SAndroid Build Coastguard Workerdata = list(map(str.strip, sys.stdin.readlines()))
21*bb4ee6a4SAndroid Build Coastguard Worker
22*bb4ee6a4SAndroid Build Coastguard Workerlast_seen = dict()
23*bb4ee6a4SAndroid Build Coastguard Worker
24*bb4ee6a4SAndroid Build Coastguard Workerfor i, l in enumerate(data):
25*bb4ee6a4SAndroid Build Coastguard Worker    if not l.startswith("#") and ":" in l:
26*bb4ee6a4SAndroid Build Coastguard Worker        syscall = l.split()[0]
27*bb4ee6a4SAndroid Build Coastguard Worker        if syscall in last_seen:
28*bb4ee6a4SAndroid Build Coastguard Worker            sys.exit("syscall %s redefined in L%d(previous definition in L%d)" % (syscall, i, last_seen[syscall]))
29*bb4ee6a4SAndroid Build Coastguard Worker        last_seen[syscall] = i
30*bb4ee6a4SAndroid Build Coastguard Worker    print(l)