diff options
author | Mattias Andrée <maandree@kth.se> | 2023-12-05 00:03:04 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2023-12-05 00:03:04 +0100 |
commit | 58dd684c4e86944301959a140dbed9746df35779 (patch) | |
tree | a2702ea4f66b2a58711ee22eb7449c74b1ecf0d1 /testutil/get-datatype-description.c | |
parent | First commit (diff) | |
download | libsyscalls-58dd684c4e86944301959a140dbed9746df35779.tar.gz libsyscalls-58dd684c4e86944301959a140dbed9746df35779.tar.bz2 libsyscalls-58dd684c4e86944301959a140dbed9746df35779.tar.xz |
Second commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r-- | testutil/get-datatype-description.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/testutil/get-datatype-description.c b/testutil/get-datatype-description.c new file mode 100644 index 0000000..0bec618 --- /dev/null +++ b/testutil/get-datatype-description.c @@ -0,0 +1,52 @@ +/* See LICENSE file for copyright and license details. */ +#include "../libsyscalls.h" + +#include <limits.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> + + +int +main(int argc, char *argv[]) +{ + enum libsyscalls_os os = (enum libsyscalls_os)atoi(argv[1]); + enum libsyscalls_arch arch = (enum libsyscalls_arch)atoi(argv[2]); + enum libsyscalls_datatype type = (enum libsyscalls_datatype)atoi(argv[3]); + struct libsyscalls_datatype_description desc; + enum libsyscalls_error err; + size_t i; + + err = libsyscalls_get_datatype_description(os, arch, type, &desc); + if (err) { + fprintf(stderr, "libsyscalls_get_datatype_description %s %s %s: ", argv[4], argv[5], argv[6]); + libsyscalls_perror(NULL, err); + return 1; + } + + printf("width_in_bits = %u\n", desc.width_in_bits); + printf("array_size = %u\n", desc.array_size); + printf("relative_position_of_array_size = %i\n", desc.relative_position_of_array_size); + printf("absolute_position_of_array_size = %i\n", desc.absolute_position_of_array_size); + printf("fill_is_known = %u\n", desc.fill_is_known); + printf("is_signed = %u\n", desc.is_signed); + printf("is_unsigned = %u\n", desc.is_unsigned); + printf("min_is_minus_max = %u\n", desc.min_is_minus_max); + printf("sign_representation = %lli\n", (long long int)desc.sign_representation); + printf("annotation = %lli\n", (long long int)desc.annotation); + printf("section = %lli\n", (long long int)desc.section); + printf("byteorder ="); + for (i = 0; i < sizeof(desc.byteorder) / sizeof(*desc.byteorder); i++) { + if (LIBSYSCALLS_IS_BYTEORDER_END(desc.byteorder[i])) + goto end_of_byteorder; + printf(" %u", desc.byteorder[i]); + } +end_of_byteorder: + printf("\n"); + + if (fflush(stdout) || fclose(stdout)) { + perror(NULL); + return 1; + } + return 0; +} |