| #! /bin/bash |
| # Copyright (C) 2003-2014 Free Software Foundation, Inc. |
| # This file is part of the GNU C Library. |
| |
| # The GNU C Library is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; either |
| # version 2.1 of the License, or (at your option) any later version. |
| |
| # The GNU C Library 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 |
| # Lesser General Public License for more details. |
| |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with the GNU C Library; if not, see |
| # <http://www.gnu.org/licenses/>. |
| # |
| # The list of data types has been created with |
| # cat <<EOF | |
| # #include <sys/types.h> |
| # #include <unistd.h> |
| # #include <sys/resource.h> |
| # #include <sys/stat.h> |
| # EOF |
| # gcc -D_GNU_SOURCE -E - | |
| # egrep '^typedef.*;$' | |
| # sed 's/^typedef[[:space:]]*//;s/\([[:space:]]\{1,\}__attribute__.*\);/;/;s/.*[[:space:]]\([*]\|\)\(.*\);/\2/' | |
| # egrep -v '^_' | |
| # LC_ALL=C sort -u |
| # |
| data=$1 |
| shift |
| cxx=$(echo $* | sed 's/-fgnu89-inline//') |
| while read t; do |
| echo -n "$t:" |
| $cxx -S -xc++ -o - -D_GNU_SOURCE <(cat <<EOF |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <sys/resource.h> |
| #include <unistd.h> |
| void foo ($t) { } |
| EOF |
| ) | |
| sed 's/[[:space:]]*[.]globa\?l[[:space:]]*_Z3foo\([_[:alnum:]]*\).*/\1/p;d' |
| done <<EOF | |
| blkcnt64_t |
| blkcnt_t |
| blksize_t |
| caddr_t |
| clockid_t |
| clock_t |
| daddr_t |
| dev_t |
| fd_mask |
| fsblkcnt64_t |
| fsblkcnt_t |
| fsfilcnt64_t |
| fsfilcnt_t |
| fsid_t |
| gid_t |
| id_t |
| ino64_t |
| ino_t |
| int16_t |
| int32_t |
| int64_t |
| int8_t |
| intptr_t |
| key_t |
| loff_t |
| mode_t |
| nlink_t |
| off64_t |
| off_t |
| pid_t |
| pthread_attr_t |
| pthread_barrier_t |
| pthread_barrierattr_t |
| pthread_cond_t |
| pthread_condattr_t |
| pthread_key_t |
| pthread_mutex_t |
| pthread_mutexattr_t |
| pthread_once_t |
| pthread_rwlock_t |
| pthread_rwlockattr_t |
| pthread_spinlock_t |
| pthread_t |
| quad_t |
| register_t |
| rlim64_t |
| rlim_t |
| sigset_t |
| size_t |
| socklen_t |
| ssize_t |
| suseconds_t |
| time_t |
| u_char |
| uid_t |
| uint |
| u_int |
| u_int16_t |
| u_int32_t |
| u_int64_t |
| u_int8_t |
| ulong |
| u_long |
| u_quad_t |
| useconds_t |
| ushort |
| u_short |
| EOF |
| diff -N -U0 $data - |