Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <sched.h> 4 : : #include <stdio.h> 5 : : #include <string.h> 6 : : 7 : : #define __STDC_WANT_IEC_60559_TYPES_EXT__ 8 : : #include <float.h> 9 : : 10 : : #include "time-util.h" 11 : : 12 : : /* Print information about various types. Useful when diagnosing 13 : : * gcc diagnostics on an unfamiliar architecture. */ 14 : : 15 : : #pragma GCC diagnostic ignored "-Wtype-limits" 16 : : 17 : : #define info(t) \ 18 : : printf("%s → %zu bits%s, %zu byte alignment\n", STRINGIFY(t), \ 19 : : sizeof(t)*CHAR_BIT, \ 20 : : strstr(STRINGIFY(t), "signed") ? "" : \ 21 : : (t)-1 < (t)0 ? ", signed" : ", unsigned", \ 22 : : __alignof__(t)) 23 : : 24 : : enum Enum { 25 : : enum_value, 26 : : }; 27 : : 28 : : enum BigEnum { 29 : : big_enum_value = UINT64_C(1), 30 : : }; 31 : : 32 : : enum BigEnum2 { 33 : : big_enum2_pos = UINT64_C(1), 34 : : big_enum2_neg = UINT64_C(-1), 35 : : }; 36 : : 37 : 4 : int main(void) { 38 : 4 : info(char); 39 : 4 : info(signed char); 40 : 4 : info(unsigned char); 41 : 4 : info(short unsigned); 42 : 4 : info(unsigned); 43 : 4 : info(long unsigned); 44 : 4 : info(long long unsigned); 45 : 4 : info(__syscall_ulong_t); 46 : 4 : info(__syscall_slong_t); 47 : : 48 : 4 : info(float); 49 : 4 : info(double); 50 : 4 : info(long double); 51 : : 52 : : #ifdef FLT128_MAX 53 : 4 : info(_Float128); 54 : 4 : info(_Float64); 55 : 4 : info(_Float64x); 56 : 4 : info(_Float32); 57 : 4 : info(_Float32x); 58 : : #endif 59 : : 60 : 4 : info(size_t); 61 : 4 : info(ssize_t); 62 : 4 : info(time_t); 63 : 4 : info(usec_t); 64 : 4 : info(__time_t); 65 : 4 : info(pid_t); 66 : 4 : info(uid_t); 67 : 4 : info(gid_t); 68 : : 69 : 4 : info(__cpu_mask); 70 : : 71 : 4 : info(enum Enum); 72 : 4 : info(enum BigEnum); 73 : 4 : info(enum BigEnum2); 74 : : assert_cc(sizeof(enum BigEnum2) == 8); 75 : 4 : printf("big_enum2_pos → %zu\n", sizeof(big_enum2_pos)); 76 : 4 : printf("big_enum2_neg → %zu\n", sizeof(big_enum2_neg)); 77 : : 78 : 4 : return 0; 79 : : }