* 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).