mailing list of musl libc
 help / color / mirror / code / Atom feed
* tool: musl-alltypes
@ 2013-04-19  3:37 Zvi Gilboa
  0 siblings, 0 replies; only message in thread
From: Zvi Gilboa @ 2013-04-19  3:37 UTC (permalink / raw)
  To: musl


[-- Attachment #1.1: Type: text/plain, Size: 539 bytes --]

Greetings,

/*musl-alltypes*/ displays for each of the types and structures from 
/include/bits/alltypes.h the following information:

--name
--size
--signed/unsigned


The tool was created with two objectives in mind:

--> verify for each of the types and structures the size _/in effect/_ 
on a given platform.
--> compare the results from two different platforms (i.e. i386 and 
nt32, x86_64 and nt64) and check for consistency.


In addition to the source files, attached are also the tool's x86_64 
test results.


Best regards,
Zvi


[-- Attachment #1.2: Type: text/html, Size: 906 bytes --]

[-- Attachment #2: musl-alltypes.c --]
[-- Type: text/x-csrc, Size: 9582 bytes --]

/**
 *  musl-alltypes: display for each of the types and structures from /include/bits/alltypes.h the following information:
 *  --name
 *  --size
 *  --signed/unsigned
 *
 *  this tool was created by Zvi Gilboa;
 *  copyright (and left) deferred.
 *
 **/

#include "musl-alltypes.h"
#include <bits/alltypes.h>
#include <stdio.h>
#include <signal.h>

#define ISSIGNED(ntype) (((ntype)-1) < 0) ? "signed" : "unsigned"
#define ISSIGNED_MEMBER(member) (member=-1 < 0) ? "signed" : "unsigned"

#define DUMMY_STRUCT_SIZE "", sizeof(dummy), ""
#define SIZE_AND_SIGNED(ntype) "", sizeof(ntype), ISSIGNED(ntype)
#define MEMBER_SIZE_AND_SIGNED(member) sizeof(dummy.member), ISSIGNED_MEMBER(dummy.member)
#define PTR_MEMBER_SIZE_AND_SIGNED(member) sizeof(dummy.member), ISSIGNED(dummy.member)

void print_header(void)
{
    printf("%24s%-12s\t%8s\t%12s\n","name","","size","signed");
    printf("%24s%-12s\t%8s\t%12s\n","====","","====","======");

}

void print_typedef_meta(const char * sz_name, const char * sz_member, size_t size, const char * sz_signed)
{
        printf("%24s%-12s\t%8ld\t%12s\n",sz_name,sz_member,size,sz_signed);
}

void print_alltypes_meta(void)
{
    print_typedef_meta("wchar_t", SIZE_AND_SIGNED(wchar_t));

    #ifdef __NT__
    print_typedef_meta("wchar_16t", SIZE_AND_SIGNED(wchar_16t));
    print_typedef_meta("wchar_32t", SIZE_AND_SIGNED(wchar_32t));
    #endif

    printf("\n");

    print_typedef_meta("size_t", SIZE_AND_SIGNED(size_t));
    print_typedef_meta("ssize_t", SIZE_AND_SIGNED(ssize_t));
    print_typedef_meta("ptrdiff_t", SIZE_AND_SIGNED(ptrdiff_t));


    printf("\n");

    print_typedef_meta("wint_t", SIZE_AND_SIGNED(wint_t));
    print_typedef_meta("wctrans_t", SIZE_AND_SIGNED(wctrans_t));
    print_typedef_meta("wctype_t", SIZE_AND_SIGNED(wctype_t));

    printf("\n");

    print_typedef_meta("int8_t", SIZE_AND_SIGNED(int8_t));
    print_typedef_meta("int16_t", SIZE_AND_SIGNED(int16_t));
    print_typedef_meta("int32_t", SIZE_AND_SIGNED(int32_t));
    print_typedef_meta("int64_t", SIZE_AND_SIGNED(int64_t));

    printf("\n");

    print_typedef_meta("uint8_t", SIZE_AND_SIGNED(uint8_t));
    print_typedef_meta("uint16_t", SIZE_AND_SIGNED(uint16_t));
    print_typedef_meta("uint32_t", SIZE_AND_SIGNED(uint32_t));
    print_typedef_meta("uint64_t", SIZE_AND_SIGNED(uint64_t));

    printf("\n");

    print_typedef_meta("__uint16_t", SIZE_AND_SIGNED(__uint16_t));
    print_typedef_meta("__uint32_t", SIZE_AND_SIGNED(__uint32_t));
    print_typedef_meta("__uint64_t", SIZE_AND_SIGNED(__uint64_t));

    printf("\n");

    print_typedef_meta("int_fast8_t", SIZE_AND_SIGNED(int_fast8_t));
    print_typedef_meta("int_fast16_t", SIZE_AND_SIGNED(int_fast16_t));
    print_typedef_meta("int_fast32_t", SIZE_AND_SIGNED(int_fast32_t));
    print_typedef_meta("int_fast64_t", SIZE_AND_SIGNED(int_fast64_t));

    printf("\n");

    print_typedef_meta("uint_fast8_t", SIZE_AND_SIGNED(uint_fast8_t));
    print_typedef_meta("uint_fast16_t", SIZE_AND_SIGNED(uint_fast16_t));
    print_typedef_meta("uint_fast32_t", SIZE_AND_SIGNED(uint_fast32_t));
    print_typedef_meta("uint_fast64_t", SIZE_AND_SIGNED(uint_fast64_t));

    printf("\n");

    print_typedef_meta("intptr_t", SIZE_AND_SIGNED(intptr_t));
    print_typedef_meta("uintptr_t", SIZE_AND_SIGNED(uintptr_t));

    printf("\n");

    print_typedef_meta("intmax_t", SIZE_AND_SIGNED(intmax_t));
    print_typedef_meta("uintmax_t", SIZE_AND_SIGNED(uintmax_t));

    printf("\n");

    print_typedef_meta("float_t", SIZE_AND_SIGNED(float_t));
    print_typedef_meta("double_t", SIZE_AND_SIGNED(double_t));

    printf("\n");

    print_typedef_meta("time_t", SIZE_AND_SIGNED(time_t));
    print_typedef_meta("useconds_t", SIZE_AND_SIGNED(useconds_t));
    print_typedef_meta("suseconds_t", SIZE_AND_SIGNED(suseconds_t));

    printf("\n");

    {
        va_list dummy;
        print_typedef_meta("va_list", DUMMY_STRUCT_SIZE);
        printf("\n");
    }

    {
        struct timeval dummy;
        print_typedef_meta("timeval", DUMMY_STRUCT_SIZE);
        print_typedef_meta("timeval", ".tv_sec", MEMBER_SIZE_AND_SIGNED(tv_sec));
        print_typedef_meta("timeval", ".tv_usec", MEMBER_SIZE_AND_SIGNED(tv_usec));
        printf("\n");
    }

    {
        struct timespec dummy;
        print_typedef_meta("timespec", DUMMY_STRUCT_SIZE);
        print_typedef_meta("timespec", ".tv_sec", MEMBER_SIZE_AND_SIGNED(tv_sec));
        print_typedef_meta("timespec", ".tv_nsec", MEMBER_SIZE_AND_SIGNED(tv_nsec));
        printf("\n");
    }

    print_typedef_meta("pid_t", SIZE_AND_SIGNED(pid_t));
    print_typedef_meta("id_t", SIZE_AND_SIGNED(id_t));
    print_typedef_meta("uid_t", SIZE_AND_SIGNED(uid_t));
    print_typedef_meta("gid_t", SIZE_AND_SIGNED(gid_t));
    print_typedef_meta("key_t", SIZE_AND_SIGNED(key_t));

    printf("\n");

    {
        pthread_t dummy;
        print_typedef_meta("pthread_t", DUMMY_STRUCT_SIZE);
        printf("\n");
    }

    print_typedef_meta("pthread_once_t", SIZE_AND_SIGNED(pthread_once_t));
    print_typedef_meta("pthread_key_t", SIZE_AND_SIGNED(pthread_key_t));
    print_typedef_meta("pthread_spinlock_t", SIZE_AND_SIGNED(pthread_spinlock_t));

    printf("\n");


    {
        pthread_attr_t dummy;
        print_typedef_meta("pthread_attr_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_attr_t", ".__u.__i[0]", MEMBER_SIZE_AND_SIGNED(__u.__i[0]));
        print_typedef_meta("pthread_attr_t", ".__u.__s[0]", MEMBER_SIZE_AND_SIGNED(__u.__s[0]));
        printf("\n");
    }

    print_typedef_meta("pthread_mutexattr_t", SIZE_AND_SIGNED(pthread_mutexattr_t));
    print_typedef_meta("pthread_condattr_t", SIZE_AND_SIGNED(pthread_condattr_t));
    print_typedef_meta("pthread_barrierattr_t", SIZE_AND_SIGNED(pthread_barrierattr_t));

    printf("\n");

    {
        pthread_rwlockattr_t dummy;
        print_typedef_meta("pthread_rwlockattr_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_rwlockattr_t", ".__attr[0]", MEMBER_SIZE_AND_SIGNED(__attr[0]));
        printf("\n");
    }

    {
        pthread_mutex_t dummy;
        print_typedef_meta("pthread_mutex_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_mutex_t", ".__u.__i[0]", MEMBER_SIZE_AND_SIGNED(__u.__i[0]));
        print_typedef_meta("pthread_mutex_t", ".__u.__p[0]", PTR_MEMBER_SIZE_AND_SIGNED(__u.__p[0]));
        printf("\n");
    }

    {
        pthread_cond_t dummy;
        print_typedef_meta("pthread_cond_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_cond_t", ".__u.__i[0]", MEMBER_SIZE_AND_SIGNED(__u.__i[0]));
        print_typedef_meta("pthread_cond_t", ".__u.__p[0]", PTR_MEMBER_SIZE_AND_SIGNED(__u.__p[0]));
        printf("\n");
    }

    {
        pthread_barrier_t dummy;
        print_typedef_meta("pthread_barrier_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_barrier_t", ".__u.__i[0]", MEMBER_SIZE_AND_SIGNED(__u.__i[0]));
        print_typedef_meta("pthread_barrier_t", ".__u.__p[0]", PTR_MEMBER_SIZE_AND_SIGNED(__u.__p[0]));
        printf("\n");
    }

    {
        pthread_rwlock_t dummy;
        print_typedef_meta("pthread_rwlock_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("pthread_rwlock_t", ".__u.__i[0]", MEMBER_SIZE_AND_SIGNED(__u.__i[0]));
        print_typedef_meta("pthread_rwlock_t", ".__u.__p[0]", PTR_MEMBER_SIZE_AND_SIGNED(__u.__p[0]));
        printf("\n");
    }

    print_typedef_meta("off_t", SIZE_AND_SIGNED(off_t));
    print_typedef_meta("mode_t", SIZE_AND_SIGNED(mode_t));
    print_typedef_meta("nlink_t", SIZE_AND_SIGNED(nlink_t));
    print_typedef_meta("ino_t", SIZE_AND_SIGNED(ino_t));
    print_typedef_meta("dev_t", SIZE_AND_SIGNED(dev_t));
    print_typedef_meta("blksize_t", SIZE_AND_SIGNED(blksize_t));
    print_typedef_meta("blkcnt_t", SIZE_AND_SIGNED(blkcnt_t));
    print_typedef_meta("fsblkcnt_t", SIZE_AND_SIGNED(fsblkcnt_t));
    print_typedef_meta("fsfilcnt_t", SIZE_AND_SIGNED(fsfilcnt_t));

    printf("\n");

    print_typedef_meta("timer_t", SIZE_AND_SIGNED(timer_t));
    print_typedef_meta("clockid_t", SIZE_AND_SIGNED(clockid_t));
    print_typedef_meta("clock_t", SIZE_AND_SIGNED(clock_t));

    printf("\n");

    {
        sigset_t dummy;
        print_typedef_meta("sigset_t", DUMMY_STRUCT_SIZE);
        print_typedef_meta("sigset_t", ".__bits:", 128/sizeof(long), "array-size");
        print_typedef_meta("sigset_t", ".__bits[0]", MEMBER_SIZE_AND_SIGNED(__bits[0]));
        printf("\n");
    }

    {
        siginfo_t dummy;
        print_typedef_meta("siginfo_t", DUMMY_STRUCT_SIZE);
        printf("\n");
    }

    print_typedef_meta("socklen_t", SIZE_AND_SIGNED(socklen_t));
    print_typedef_meta("sa_family_t", SIZE_AND_SIGNED(sa_family_t));
    print_typedef_meta("in_port_t", SIZE_AND_SIGNED(in_port_t));
    print_typedef_meta("in_addr_t", SIZE_AND_SIGNED(in_addr_t));

    printf("\n");

    {
        struct in_addr { in_addr_t s_addr; } dummy;
        print_typedef_meta("in_addr", DUMMY_STRUCT_SIZE);
        print_typedef_meta("in_addr", ".s_addr", MEMBER_SIZE_AND_SIGNED(s_addr));
        printf("\n");
    }

    print_typedef_meta("nl_item", SIZE_AND_SIGNED(nl_item));

    printf("\n");

    {
        struct iovec { void *iov_base; size_t iov_len; } dummy;
        print_typedef_meta("iovec", DUMMY_STRUCT_SIZE);
        print_typedef_meta("iovec", ".iov_base", PTR_MEMBER_SIZE_AND_SIGNED(iov_base));
        print_typedef_meta("iovec", ".iov_len", MEMBER_SIZE_AND_SIGNED(iov_len));
        printf("\n");
    }
}


int main(void)
{
    print_header();
    print_alltypes_meta();

    return 0;
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: musl-alltypes.h --]
[-- Type: text/x-chdr; name="musl-alltypes.h", Size: 2286 bytes --]

#ifndef _MUSL_ALLTYPES_H_INCLUDED_
#define _MUSL_ALLTYPES_H_INCLUDED_

#define __NEED_wchar_t

#define __NEED_size_t
#define __NEED_ssize_t
#define __NEED_ptrdiff_t

#define __NEED_wint_t
#define __NEED_wctrans_t
#define __NEED_wctype_t

#define __NEED_int8_t
#define __NEED_int16_t
#define __NEED_int32_t
#define __NEED_int64_t

#define __NEED_uint8_t
#define __NEED_uint16_t
#define __NEED_uint32_t
#define __NEED_uint64_t

#define __NEED___uint16_t
#define __NEED___uint32_t
#define __NEED___uint64_t

#define __NEED_int_fast8_t
#define __NEED_int_fast16_t
#define __NEED_int_fast32_t
#define __NEED_int_fast64_t

#define __NEED_uint_fast8_t
#define __NEED_uint_fast16_t
#define __NEED_uint_fast32_t
#define __NEED_uint_fast64_t

#define __NEED_intptr_t
#define __NEED_uintptr_t

#define __NEED_intmax_t
#define __NEED_uintmax_t

#define __NEED_float_t
#define __NEED_double_t

#define __NEED_time_t
#define __NEED_useconds_t
#define __NEED_suseconds_t

#define __NEED_va_list

#define __NEED_struct_timeval
#define __NEED_struct_timespec

#define __NEED_pid_t
#define __NEED_id_t
#define __NEED_uid_t
#define __NEED_gid_t
#define __NEED_key_t

#define __NEED_pthread_t
#define __NEED_pthread_once_t
#define __NEED_pthread_key_t
#define __NEED_pthread_spinlock_t

#define __NEED_pthread_attr_t
#define __NEED_pthread_mutexattr_t
#define __NEED_pthread_condattr_t
#define __NEED_pthread_barrierattr_t
#define __NEED_pthread_rwlockattr_t

#define __NEED_pthread_mutex_t
#define __NEED_pthread_cond_t
#define __NEED_pthread_barrier_t
#define __NEED_pthread_rwlock_t

#define __NEED_off_t
#define __NEED_mode_t
#define __NEED_nlink_t
#define __NEED_ino_t
#define __NEED_dev_t
#define __NEED_blksize_t
#define __NEED_blkcnt_t
#define __NEED_fsblkcnt_t
#define __NEED_fsfilcnt_t

#define __NEED_timer_t
#define __NEED_clockid_t
#define __NEED_clock_t

#define __NEED_sigset_t
#define __NEED_siginfo_t

#define __NEED_socklen_t
#define __NEED_sa_family_t
#define __NEED_in_port_t
#define __NEED_in_addr_t
#define __NEED_in_addr

#define __NEED_FILE         /* no output: depends on /src/internal/stdio_impl.h */
#define __NEED_nl_item
#define __NEED_locale_t     /* no output: depends on /src/internal/locale_impl.h */

#define __NEED_struct_iovec

#endif // _MUSL_ALLTYPES_H_INCLUDED_

[-- Attachment #4: musl-alltypes.x86_64 --]
[-- Type: text/plain, Size: 5874 bytes --]

                    name            	    size	      signed
                    ====            	    ====	      ======
                 wchar_t            	       4	      signed

                  size_t            	       8	    unsigned
                 ssize_t            	       8	      signed
               ptrdiff_t            	       8	      signed

                  wint_t            	       4	      signed
               wctrans_t            	       8	    unsigned
                wctype_t            	       8	    unsigned

                  int8_t            	       1	      signed
                 int16_t            	       2	      signed
                 int32_t            	       4	      signed
                 int64_t            	       8	      signed

                 uint8_t            	       1	    unsigned
                uint16_t            	       2	    unsigned
                uint32_t            	       4	    unsigned
                uint64_t            	       8	    unsigned

              __uint16_t            	       2	    unsigned
              __uint32_t            	       4	    unsigned
              __uint64_t            	       8	    unsigned

             int_fast8_t            	       1	      signed
            int_fast16_t            	       4	      signed
            int_fast32_t            	       4	      signed
            int_fast64_t            	       8	      signed

            uint_fast8_t            	       1	    unsigned
           uint_fast16_t            	       4	    unsigned
           uint_fast32_t            	       4	    unsigned
           uint_fast64_t            	       8	    unsigned

                intptr_t            	       8	      signed
               uintptr_t            	       8	    unsigned

                intmax_t            	       8	      signed
               uintmax_t            	       8	    unsigned

                 float_t            	       4	      signed
                double_t            	       8	      signed

                  time_t            	       8	      signed
              useconds_t            	       4	    unsigned
             suseconds_t            	       8	      signed

                 va_list            	      24	            

                 timeval            	      16	            
                 timeval.tv_sec     	       8	      signed
                 timeval.tv_usec    	       8	      signed

                timespec            	      16	            
                timespec.tv_sec     	       8	      signed
                timespec.tv_nsec    	       8	      signed

                   pid_t            	       4	      signed
                    id_t            	       4	      signed
                   uid_t            	       4	    unsigned
                   gid_t            	       4	    unsigned
                   key_t            	       4	      signed

               pthread_t            	       8	            

          pthread_once_t            	       4	      signed
           pthread_key_t            	       4	      signed
      pthread_spinlock_t            	       4	      signed

          pthread_attr_t            	      56	            
          pthread_attr_t.__u.__i[0] 	       4	      signed
          pthread_attr_t.__u.__s[0] 	       8	      signed

     pthread_mutexattr_t            	       4	    unsigned
      pthread_condattr_t            	       4	    unsigned
   pthread_barrierattr_t            	       4	    unsigned

    pthread_rwlockattr_t            	       8	            
    pthread_rwlockattr_t.__attr[0]  	       4	      signed

         pthread_mutex_t            	      40	            
         pthread_mutex_t.__u.__i[0] 	       4	      signed
         pthread_mutex_t.__u.__p[0] 	       8	    unsigned

          pthread_cond_t            	      48	            
          pthread_cond_t.__u.__i[0] 	       4	      signed
          pthread_cond_t.__u.__p[0] 	       8	    unsigned

       pthread_barrier_t            	      32	            
       pthread_barrier_t.__u.__i[0] 	       4	      signed
       pthread_barrier_t.__u.__p[0] 	       8	    unsigned

        pthread_rwlock_t            	      56	            
        pthread_rwlock_t.__u.__i[0] 	       4	      signed
        pthread_rwlock_t.__u.__p[0] 	       8	    unsigned

                   off_t            	       8	      signed
                  mode_t            	       4	    unsigned
                 nlink_t            	       8	    unsigned
                   ino_t            	       8	    unsigned
                   dev_t            	       8	    unsigned
               blksize_t            	       8	      signed
                blkcnt_t            	       8	      signed
              fsblkcnt_t            	       8	    unsigned
              fsfilcnt_t            	       8	    unsigned

                 timer_t            	       8	    unsigned
               clockid_t            	       4	      signed
                 clock_t            	       8	      signed

                sigset_t            	     128	            
                sigset_t.__bits:    	      16	  array-size
                sigset_t.__bits[0]  	       8	      signed

               siginfo_t            	     128	            

               socklen_t            	       4	    unsigned
             sa_family_t            	       2	    unsigned
               in_port_t            	       2	    unsigned
               in_addr_t            	       4	    unsigned

                 in_addr            	       4	            
                 in_addr.s_addr     	       4	      signed

                 nl_item            	       4	      signed

                   iovec            	      16	            
                   iovec.iov_base   	       8	    unsigned
                   iovec.iov_len    	       8	      signed


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-04-19  3:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-19  3:37 tool: musl-alltypes Zvi Gilboa

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).