cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

checkdeclares.pl (1123B)


      1#!/usr/bin/env perl
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# checkdeclares: find struct declared more than once
      5#
      6# Copyright 2021 Wan Jiabing<wanjiabing@vivo.com>
      7# Inspired by checkincludes.pl
      8#
      9# This script checks for duplicate struct declares.
     10# Note that this will not take into consideration macros so
     11# you should run this only if you know you do have real dups
     12# and do not have them under #ifdef's.
     13# You could also just review the results.
     14
     15use strict;
     16
     17sub usage {
     18	print "Usage: checkdeclares.pl file1.h ...\n";
     19	print "Warns of struct declaration duplicates\n";
     20	exit 1;
     21}
     22
     23if ($#ARGV < 0) {
     24	usage();
     25}
     26
     27my $dup_counter = 0;
     28
     29foreach my $file (@ARGV) {
     30	open(my $f, '<', $file)
     31	    or die "Cannot open $file: $!.\n";
     32
     33	my %declaredstructs = ();
     34
     35	while (<$f>) {
     36		if (m/^\s*struct\s*(\w*);$/o) {
     37			++$declaredstructs{$1};
     38		}
     39	}
     40
     41	close($f);
     42
     43	foreach my $structname (keys %declaredstructs) {
     44		if ($declaredstructs{$structname} > 1) {
     45			print "$file: struct $structname is declared more than once.\n";
     46			++$dup_counter;
     47		}
     48	}
     49}
     50
     51if ($dup_counter == 0) {
     52	print "No duplicate struct declares found.\n";
     53}