From 58dd684c4e86944301959a140dbed9746df35779 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 5 Dec 2023 00:03:04 +0100 Subject: Second commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- testutil/get-datatype-description.c | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 testutil/get-datatype-description.c (limited to 'testutil/get-datatype-description.c') 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 +#include +#include +#include + + +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; +} -- cgit v1.2.3-70-g09d2