#!/usr/bin/awk -f
# This file is part of ltrace.
# Copyright (C) 2008 Juan Cespedes
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA

# hack expression to generate arch_syscallent.h from <asm/unistd.h>
# It reads from stdin and writes to stdout
# Currently (linux-2.6.16), it works OK on arm
# It is untested in other architectures

BEGIN {
	max=0;
	FS="[ \t\n()+]+";
}

{
#      printf("/%s/%s/%s/%s/\n", $1, $2, $3, $4);
	if (($1 ~ /^#define$/) && ($2 ~ /^__[A-Z]+_NR_/)) {
		sub(/^__[A-Z]+_NR_/,"",$2);
		if (($3>=0) && ($3<=1000)) {
			SYSCALL[$3]=$2;
			if ($3 > max) {
				max=$3;
			}
		} else if (($3 ~ /^__[A-Z]+_NR_BASE$/) && ($4>=0) && ($4<=1000)) {
			SYSCALL[$4]=$2;
			if ($4 > max) {
				max=$4;
			}
		}
	}
}

END {
	for(i=0; i<=max; i++) {
		if (!SYSCALL[i]) {
			SYSCALL[i] = i;
		}
		pad = 32 - length(SYSCALL[i]);
		if (pad<1) {
			pad=1;
		}
		printf("\t\"%s\",%*s/* %d */\n", SYSCALL[i], pad, "", i);
	}
}
