// SDB-CGEN V2.6.2
#include <ctype.h>
#include <stdio.h>
#include <string.h>

struct kv { const char *name; const char *value; };
static const struct kv kvs[] = {
// gcc -DMAIN=1 types_linux.c ; ./a.out > types_linux.h
	{"_Exit", "func"},
	{"__stack_chk_fail", "func"},
	{"_exit", "func"},
	{"abort", "func"},
	{"access", "func"},
	{"assert_fail", "func"},
	{"atexit", "func"},
	{"ctype_b_loc", "func"},
	{"ctype_tolower_loc", "func"},
	{"ctype_toupper_loc", "func"},
	{"cxa_finalize", "func"},
	{"errno_location", "func"},
	{"exit", "func"},
	{"fdelt_chk", "func"},
	{"fgets_chk", "func"},
	{"fopen64", "func"},
	{"fprintf_chk", "func"},
	{"fread_chk", "func"},
	{"fseeko64", "func"},
	{"fstat64", "func"},
	{"ftello64", "func"},
	{"ftruncate64", "func"},
	{"func._Exit.arg.0", "int,status"},
	{"func._Exit.args", "1"},
	{"func._Exit.noreturn", "true"},
	{"func._Exit.ret", "void"},
	{"func.__stack_chk_fail.args", "0"},
	{"func.__stack_chk_fail.noreturn", "true"},
	{"func.__stack_chk_fail.ret", "void"},
	{"func._exit.arg.0", "int,status"},
	{"func._exit.args", "1"},
	{"func._exit.noreturn", "true"},
	{"func._exit.ret", "void"},
	{"func.abort.args", "0"},
	{"func.abort.noreturn", "true"},
	{"func.abort.ret", "void"},
	{"func.access.arg.0", "const char *,path"},
	{"func.access.arg.1", "int,mode"},
	{"func.access.args", "2"},
	{"func.access.ret", "int"},
	{"func.assert_fail.arg.0", "const char *,assertion"},
	{"func.assert_fail.arg.1", "const char *,file"},
	{"func.assert_fail.arg.2", "unsigned int,line"},
	{"func.assert_fail.arg.3", "const char *,function"},
	{"func.assert_fail.args", "4"},
	{"func.assert_fail.noreturn", "true"},
	{"func.assert_fail.ret", "void"},
	{"func.atexit.arg.0", "func,function"},
	{"func.atexit.args", "1"},
	{"func.atexit.ret", "int"},
	{"func.ctype_b_loc.args", "0"},
	{"func.ctype_b_loc.ret", "const unsigned short **"},
	{"func.ctype_tolower_loc.args", "0"},
	{"func.ctype_tolower_loc.ret", "const int **"},
	{"func.ctype_toupper_loc.args", "0"},
	{"func.ctype_toupper_loc.ret", "const int **"},
	{"func.cxa_finalize.arg.0", "void *,dso_handle"},
	{"func.cxa_finalize.args", "1"},
	{"func.cxa_finalize.ret", "void"},
	{"func.errno_location.args", "0"},
	{"func.errno_location.ret", "int *"},
	{"func.exit.arg.0", "int,status"},
	{"func.exit.args", "1"},
	{"func.exit.noreturn", "true"},
	{"func.exit.ret", "void"},
	{"func.fdelt_chk.arg.0", "long,d"},
	{"func.fdelt_chk.args", "1"},
	{"func.fdelt_chk.ret", "long"},
	{"func.fgets_chk.arg.0", "char *,s"},
	{"func.fgets_chk.arg.1", "size_t,size"},
	{"func.fgets_chk.arg.2", "int,n"},
	{"func.fgets_chk.arg.3", "FILE *,stream"},
	{"func.fgets_chk.args", "4"},
	{"func.fgets_chk.ret", "char *"},
	{"func.fopen64.arg.0", "const char *,filename"},
	{"func.fopen64.arg.1", "const char *,mode"},
	{"func.fopen64.args", "2"},
	{"func.fopen64.ret", "file*"},
	{"func.fprintf_chk.arg.0", "FILE *,stream"},
	{"func.fprintf_chk.arg.1", "int,flag"},
	{"func.fprintf_chk.arg.2", "const char *,format"},
	{"func.fprintf_chk.arg.3", ",..."},
	{"func.fprintf_chk.args", "4"},
	{"func.fprintf_chk.ret", "int"},
	{"func.fread_chk.arg.0", "void *,ptr"},
	{"func.fread_chk.arg.1", "size_t,ptrlen"},
	{"func.fread_chk.arg.2", "size_t,size"},
	{"func.fread_chk.arg.3", "size_t,n"},
	{"func.fread_chk.arg.4", "FILE *,stream"},
	{"func.fread_chk.args", "5"},
	{"func.fread_chk.ret", "size_t"},
	{"func.fseeko64.arg.0", "FILE *,stream"},
	{"func.fseeko64.arg.1", "off64_t,offset"},
	{"func.fseeko64.arg.2", "int,whence"},
	{"func.fseeko64.args", "3"},
	{"func.fseeko64.ret", "int"},
	{"func.fstat64.arg.0", "int,fildes"},
	{"func.fstat64.arg.1", "void *,buf"},
	{"func.fstat64.args", "2"},
	{"func.fstat64.ret", "int"},
	{"func.ftello64.arg.0", "FILE *,stream"},
	{"func.ftello64.args", "1"},
	{"func.ftello64.ret", "off64_t"},
	{"func.ftruncate64.arg.0", "int,fd"},
	{"func.ftruncate64.arg.1", "off64_t,length"},
	{"func.ftruncate64.args", "2"},
	{"func.ftruncate64.ret", "int"},
	{"func.getsockname.arg.0", "int,sockfd"},
	{"func.getsockname.arg.1", "struct sockaddr *,addr"},
	{"func.getsockname.arg.2", "socklen_t *,addrlen"},
	{"func.getsockname.args", "3"},
	{"func.getsockname.ret", "int"},
	{"func.getsockopt.arg.0", "int,sockfd"},
	{"func.getsockopt.arg.1", "int,level"},
	{"func.getsockopt.arg.2", "int,optname"},
	{"func.getsockopt.arg.3", "void *,optval"},
	{"func.getsockopt.arg.4", "socklen_t *,optlen"},
	{"func.getsockopt.args", "5"},
	{"func.getsockopt.ret", "int"},
	{"func.libc_init.arg.0", "int,argc"},
	{"func.libc_init.arg.1", "char **,argv"},
	{"func.libc_init.arg.2", "char **,envp"},
	{"func.libc_init.args", "3"},
	{"func.libc_init.noreturn", "true"},
	{"func.libc_init.ret", "void"},
	{"func.libc_init_array.args", "0"},
	{"func.libc_init_array.ret", "void"},
	{"func.libc_start_main.arg.0", "func,main"},
	{"func.libc_start_main.arg.1", "int,argc"},
	{"func.libc_start_main.arg.2", "char **,ubp_av"},
	{"func.libc_start_main.arg.3", "func,init"},
	{"func.libc_start_main.arg.4", "func,fini"},
	{"func.libc_start_main.arg.5", "func,rtld_fini"},
	{"func.libc_start_main.arg.6", "void *,stack_end"},
	{"func.libc_start_main.args", "7"},
	{"func.libc_start_main.noreturn", "true"},
	{"func.libc_start_main.ret", "int"},
	{"func.longjmp_chk.arg.0", "void *,env"},
	{"func.longjmp_chk.arg.1", "int,val"},
	{"func.longjmp_chk.args", "2"},
	{"func.longjmp_chk.noreturn", "true"},
	{"func.longjmp_chk.ret", "void"},
	{"func.lseek64.arg.0", "int,fd"},
	{"func.lseek64.arg.1", "off64_t,offset"},
	{"func.lseek64.arg.2", "int,whence"},
	{"func.lseek64.args", "3"},
	{"func.lseek64.ret", "off64_t"},
	{"func.lstat64.arg.0", "const char *,path"},
	{"func.lstat64.arg.1", "void *,buf"},
	{"func.lstat64.args", "2"},
	{"func.lstat64.ret", "int"},
	{"func.mmap64.arg.0", "void *,addr"},
	{"func.mmap64.arg.1", "size_t,length"},
	{"func.mmap64.arg.2", "int,prot"},
	{"func.mmap64.arg.3", "int,flags"},
	{"func.mmap64.arg.4", "int,fd"},
	{"func.mmap64.arg.5", "off64_t,offset"},
	{"func.mmap64.args", "6"},
	{"func.mmap64.ret", "void *"},
	{"func.nanosleep.arg.0", "const struct timespec *,req"},
	{"func.nanosleep.arg.1", "struct timespec *,rem"},
	{"func.nanosleep.args", "2"},
	{"func.nanosleep.ret", "int"},
	{"func.open64.arg.0", "const char *,path"},
	{"func.open64.arg.1", "int,oflag"},
	{"func.open64.args", "2"},
	{"func.open64.ret", "int"},
	{"func.prctl.arg.0", "int,option"},
	{"func.prctl.arg.1", "unsigned long,v2"},
	{"func.prctl.arg.2", "unsigned long,v3"},
	{"func.prctl.arg.3", "unsigned long,v4"},
	{"func.prctl.arg.4", "unsigned long,v5"},
	{"func.prctl.args", "5"},
	{"func.prctl.ret", "int"},
	{"func.pread64.arg.0", "int,fd"},
	{"func.pread64.arg.1", "void *,buf"},
	{"func.pread64.arg.2", "size_t,nbytes"},
	{"func.pread64.arg.3", "off64_t,offset"},
	{"func.pread64.args", "4"},
	{"func.pread64.ret", "ssize_t"},
	{"func.printf_chk.arg.0", "int,flag"},
	{"func.printf_chk.arg.1", "const char *,format"},
	{"func.printf_chk.arg.2", ",..."},
	{"func.printf_chk.args", "3"},
	{"func.printf_chk.ret", "int"},
	{"func.pwrite64.arg.0", "int,fd"},
	{"func.pwrite64.arg.1", "const void *,buf"},
	{"func.pwrite64.arg.2", "size_t,nbytes"},
	{"func.pwrite64.arg.3", "off64_t,offset"},
	{"func.pwrite64.args", "4"},
	{"func.pwrite64.ret", "ssize_t"},
	{"func.read_chk.arg.0", "int,fd"},
	{"func.read_chk.arg.1", "void *,buf"},
	{"func.read_chk.arg.2", "size_t,nbytes"},
	{"func.read_chk.arg.3", "size_t,buflen"},
	{"func.read_chk.args", "4"},
	{"func.read_chk.ret", "ssize_t"},
	{"func.realpath_chk.arg.0", "const char *,name"},
	{"func.realpath_chk.arg.1", "char *,resolved"},
	{"func.realpath_chk.arg.2", "size_t,resolvedlen"},
	{"func.realpath_chk.args", "3"},
	{"func.realpath_chk.ret", "char *"},
	{"func.select.arg.0", "int,nfds"},
	{"func.select.arg.1", "fd_set *,readfds"},
	{"func.select.arg.2", "fd_set *,writefds"},
	{"func.select.arg.3", "fd_set *,exceptfds"},
	{"func.select.arg.4", "struct timeval *,timeout"},
	{"func.select.args", "5"},
	{"func.select.ret", "int"},
	{"func.setsockopt.arg.0", "int,sockfd"},
	{"func.setsockopt.arg.1", "int,level"},
	{"func.setsockopt.arg.2", "int,optname"},
	{"func.setsockopt.arg.3", "void *,optval"},
	{"func.setsockopt.arg.4", "socklen_t,optlen"},
	{"func.setsockopt.args", "5"},
	{"func.setsockopt.ret", "int"},
	{"func.sigaction.arg.0", "int,signum"},
	{"func.sigaction.arg.1", "const struct sigaction *,act"},
	{"func.sigaction.arg.2", "struct sigaction *,oldact"},
	{"func.sigaction.args", "3"},
	{"func.sigaction.ret", "int"},
	{"func.stat64.arg.0", "const char *,path"},
	{"func.stat64.arg.1", "void *,buf"},
	{"func.stat64.args", "2"},
	{"func.stat64.ret", "int"},
	{"func.truncate64.arg.0", "const char *,path"},
	{"func.truncate64.arg.1", "off64_t,length"},
	{"func.truncate64.args", "2"},
	{"func.truncate64.ret", "int"},
	{"func.uClibc_main.arg.0", "func,main"},
	{"func.uClibc_main.arg.1", "int,argc"},
	{"func.uClibc_main.arg.2", "char **,argv"},
	{"func.uClibc_main.arg.3", "func,app_init"},
	{"func.uClibc_main.arg.4", "func,app_fini"},
	{"func.uClibc_main.arg.5", "func,rtld_fini"},
	{"func.uClibc_main.arg.6", "void *,stack_end"},
	{"func.uClibc_main.args", "7"},
	{"func.uClibc_main.noreturn", "true"},
	{"func.uClibc_main.ret", "int"},
	{"func.vfprintf_chk.arg.0", "FILE *,stream"},
	{"func.vfprintf_chk.arg.1", "int,flag"},
	{"func.vfprintf_chk.arg.2", "const char *,format"},
	{"func.vfprintf_chk.arg.3", "va_list,ap"},
	{"func.vfprintf_chk.args", "4"},
	{"func.vfprintf_chk.ret", "int"},
	{"func.vprintf_chk.arg.0", "int,flag"},
	{"func.vprintf_chk.arg.1", "const char *,format"},
	{"func.vprintf_chk.arg.2", "va_list,ap"},
	{"func.vprintf_chk.args", "3"},
	{"func.vprintf_chk.ret", "int"},
	{"func.wait.arg.0", "int *,wstatus"},
	{"func.wait.args", "1"},
	{"func.wait.ret", "pid_t"},
	{"func.waitid.arg.0", "idtype_t,idtype"},
	{"func.waitid.arg.1", "id_t,id"},
	{"func.waitid.arg.2", "siginfo_t *,infop"},
	{"func.waitid.arg.3", "int,options"},
	{"func.waitid.args", "4"},
	{"func.waitid.ret", "int"},
	{"func.waitpid.arg.0", "pid_t,pid"},
	{"func.waitpid.arg.1", "int *,wstatus"},
	{"func.waitpid.arg.2", "int,options"},
	{"func.waitpid.args", "3"},
	{"func.waitpid.ret", "pid_t"},
	{"func.xalloc_die.args", "0"},
	{"func.xalloc_die.noreturn", "true"},
	{"func.xalloc_die.ret", "void"},
	{"getsockname", "func"},
	{"getsockopt", "func"},
	{"libc_init", "func"},
	{"libc_init_array", "func"},
	{"libc_start_main", "func"},
	{"longjmp_chk", "func"},
	{"lseek64", "func"},
	{"lstat64", "func"},
	{"mmap64", "func"},
	{"nanosleep", "func"},
	{"off64_t", "typedef"},
	{"open64", "func"},
	{"prctl", "func"},
	{"pread64", "func"},
	{"printf_chk", "func"},
	{"pwrite64", "func"},
	{"read_chk", "func"},
	{"realpath_chk", "func"},
	{"select", "func"},
	{"setsockopt", "func"},
	{"sigaction", "func"},
	{"stat64", "func"},
	{"truncate64", "func"},
	{"typedef.off64_t", "int64_t"},
	{"uClibc_main", "func"},
	{"vfprintf_chk", "func"},
	{"vprintf_chk", "func"},
	{"wait", "func"},
	{"waitid", "func"},
	{"waitpid", "func"},
	{"xalloc_die", "func"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_types_linux_foreach(GperfForeachCallback cb, void *user) {
  int i = 0; while (kvs[i].name) {
  cb (user, kvs[i].name, kvs[i].value);
  i++;}
  return 0;
}
const char *gperf_types_linux_get(const char *s) {
  int i = 0; while (kvs[i].name) {
  if (!strcmp (s, kvs[i].name)) return kvs[i].value;
  i++;}
  return NULL;
}
#define sdb_hash_c_types_linux(x,y) gperf_types_linux_hash(x)
const unsigned int gperf_types_linux_hash(const char *s) {
  int sum = strlen (s);
  while (*s) { sum += *s; s++; }
  return sum;
}
struct {const char *name;void *get;void *hash;void *foreach;} gperf_types_linux = {
  .name = "types-linux",
  .get = &gperf_types_linux_get,
  .hash = &gperf_types_linux_hash,
  .foreach = &gperf_types_linux_foreach
};

#if MAIN
int main () {
	const char *s = ((char*(*)(char*))gperf_types_linux.get)("foo");
	printf ("%s\n", s);
}
#endif
