diff options
author | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:34:07 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:34:07 +0000 |
commit | 071ea11e85eb9d529cc5eb3d35f6247466a21b99 (patch) | |
tree | 5deda65b8d7b04d1f4cbc534c3206d328e1267ec /gdb/testsuite/gdb.base/call-rt-st.c | |
parent | 1730ec6b1848f0f32154277f788fb29f88d8475b (diff) | |
download | gdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.zip gdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.gz gdb-071ea11e85eb9d529cc5eb3d35f6247466a21b99.tar.bz2 |
Initial creation of sourceware repository
Diffstat (limited to 'gdb/testsuite/gdb.base/call-rt-st.c')
-rw-r--r-- | gdb/testsuite/gdb.base/call-rt-st.c | 530 |
1 files changed, 0 insertions, 530 deletions
diff --git a/gdb/testsuite/gdb.base/call-rt-st.c b/gdb/testsuite/gdb.base/call-rt-st.c deleted file mode 100644 index c89cb11..0000000 --- a/gdb/testsuite/gdb.base/call-rt-st.c +++ /dev/null @@ -1,530 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <strings.h> - -/************************************************************************** - * TESTS : - * function returning large structures, which go on the stack - * functions returning varied sized structs which go on in the registers. - ***************************************************************************/ - - -/* A large structure (> 64 bits) used to test passing large structures as - * parameters - */ - -struct array_rep_info_t { - int next_index[10]; - int values[10]; - int head; -}; - -/***************************************************************************** - * Small structures ( <= 64 bits). These are used to test passing small - * structures as parameters and test argument size promotion. - *****************************************************************************/ - - /* 64 bits - */ -struct small_rep_info_t { - int value; - int head; -}; - -/* 6 bits : really fits in 8 bits and is promoted to 32 bits - */ -struct bit_flags_t { - unsigned alpha :1; - unsigned beta :1; - unsigned gamma :1; - unsigned delta :1; - unsigned epsilon :1; - unsigned omega :1; -}; - -/* 22 bits : really fits in 40 bits and is promoted to 64 bits - */ -struct bit_flags_combo_t { - unsigned alpha :1; - unsigned beta :1; - char ch1; - unsigned gamma :1; - unsigned delta :1; - char ch2; - unsigned epsilon :1; - unsigned omega :1; -}; - -/* 64 bits - */ -struct one_double_t { - double double1; -}; - -/* 64 bits - */ -struct two_floats_t { - float float1; - float float2; -}; - - -/* 24 bits : promoted to 32 bits - */ -struct three_char_t { - char ch1; - char ch2; - char ch3; -}; - -/* 40 bits : promoted to 64 bits - */ -struct five_char_t { - char ch1; - char ch2; - char ch3; - char ch4; - char ch5; -}; - -/* 40 bits : promoted to 64 bits - */ -struct int_char_combo_t { - int int1; - char ch1; -}; - - -/***************************************************************** - * LOOP_COUNT : - * A do nothing function. Used to provide a point at which calls can be made. - *****************************************************************/ -void loop_count () { - - int index; - - for (index=0; index<4; index++); -} - -/***************************************************************** - * INIT_BIT_FLAGS : - * Initializes a bit_flags_t structure. Can call this function see - * the call command behavior when integer arguments do not fit into - * registers and must be placed on the stack. - * OUT struct bit_flags_t *bit_flags -- structure to be filled - * IN unsigned a -- 0 or 1 - * IN unsigned b -- 0 or 1 - * IN unsigned g -- 0 or 1 - * IN unsigned d -- 0 or 1 - * IN unsigned e -- 0 or 1 - * IN unsigned o -- 0 or 1 - *****************************************************************/ -void init_bit_flags (bit_flags,a,b,g,d,e,o) -struct bit_flags_t *bit_flags; -unsigned a; -unsigned b; -unsigned g; -unsigned d; -unsigned e; -unsigned o; -{ - - bit_flags->alpha = a; - bit_flags->beta = b; - bit_flags->gamma = g; - bit_flags->delta = d; - bit_flags->epsilon = e; - bit_flags->omega = o; -} - -/***************************************************************** - * INIT_BIT_FLAGS_COMBO : - * Initializes a bit_flags_combo_t structure. Can call this function - * to see the call command behavior when integer and character arguments - * do not fit into registers and must be placed on the stack. - * OUT struct bit_flags_combo_t *bit_flags_combo -- structure to fill - * IN unsigned a -- 0 or 1 - * IN unsigned b -- 0 or 1 - * IN char ch1 - * IN unsigned g -- 0 or 1 - * IN unsigned d -- 0 or 1 - * IN char ch2 - * IN unsigned e -- 0 or 1 - * IN unsigned o -- 0 or 1 - *****************************************************************/ -void init_bit_flags_combo (bit_flags_combo, a, b, ch1, g, d, ch2, e, o) -struct bit_flags_combo_t *bit_flags_combo; -unsigned a; -unsigned b; -char ch1; -unsigned g; -unsigned d; -char ch2; -unsigned e; -unsigned o; -{ - - bit_flags_combo->alpha = a; - bit_flags_combo->beta = b; - bit_flags_combo->ch1 = ch1; - bit_flags_combo->gamma = g; - bit_flags_combo->delta = d; - bit_flags_combo->ch2 = ch2; - bit_flags_combo->epsilon = e; - bit_flags_combo->omega = o; -} - - -/***************************************************************** - * INIT_ONE_DOUBLE : - * OUT struct one_double_t *one_double -- structure to fill - * IN double init_val - *****************************************************************/ -void init_one_double (one_double, init_val) -struct one_double_t *one_double; -double init_val; -{ - - one_double->double1 = init_val; -} - -/***************************************************************** - * INIT_TWO_FLOATS : - * OUT struct two_floats_t *two_floats -- structure to be filled - * IN float init_val1 - * IN float init_val2 - *****************************************************************/ -void init_two_floats (two_floats, init_val1, init_val2) -struct two_floats_t *two_floats; -float init_val1; -float init_val2; -{ - - two_floats->float1 = init_val1; - two_floats->float2 = init_val2; -} - -/***************************************************************** - * INIT_THREE_CHARS : - * OUT struct three_char_t *three_char -- structure to be filled - * IN char init_val1 - * IN char init_val2 - * IN char init_val3 - *****************************************************************/ -void init_three_chars ( three_char, init_val1, init_val2, init_val3) -struct three_char_t *three_char; -char init_val1; -char init_val2; -char init_val3; -{ - - three_char->ch1 = init_val1; - three_char->ch2 = init_val2; - three_char->ch3 = init_val3; -} - -/***************************************************************** - * INIT_FIVE_CHARS : - * OUT struct five_char_t *five_char -- structure to be filled - * IN char init_val1 - * IN char init_val2 - * IN char init_val3 - * IN char init_val4 - * IN char init_val5 - *****************************************************************/ -void init_five_chars ( five_char, init_val1, init_val2, init_val3, init_val4, init_val5) -struct five_char_t *five_char; -char init_val1; -char init_val2; -char init_val3; -char init_val4; -char init_val5; -{ - - five_char->ch1 = init_val1; - five_char->ch2 = init_val2; - five_char->ch3 = init_val3; - five_char->ch4 = init_val4; - five_char->ch5 = init_val5; -} - -/***************************************************************** - * INIT_INT_CHAR_COMBO : - * OUT struct int_char_combo_t *combo -- structure to be filled - * IN int init_val1 - * IN char init_val2 - *****************************************************************/ -void init_int_char_combo ( combo, init_val1, init_val2) -struct int_char_combo_t *combo; -int init_val1; -char init_val2; -{ - - combo->int1 = init_val1; - combo->ch1 = init_val2; -} - -/***************************************************************** - * INIT_STRUCT_REP : - * OUT struct small_rep_into_t *small_struct -- structure to be filled - * IN int seed - *****************************************************************/ -void init_struct_rep( small_struct, seed) -struct small_rep_info_t *small_struct; -int seed; - -{ - - small_struct->value = 2 + (seed*2); - small_struct->head = 0; -} - -/***************************************************************** - * PRINT_BIT_FLAGS : - * IN struct bit_flags_t bit_flags - ****************************************************************/ -struct bit_flags_t print_bit_flags ( bit_flags) -struct bit_flags_t bit_flags; -{ - - if (bit_flags.alpha) printf("alpha\n"); - if (bit_flags.beta) printf("beta\n"); - if (bit_flags.gamma) printf("gamma\n"); - if (bit_flags.delta) printf("delta\n"); - if (bit_flags.epsilon) printf("epsilon\n"); - if (bit_flags.omega) printf("omega\n"); - return bit_flags; - -} - -/***************************************************************** - * PRINT_BIT_FLAGS_COMBO : - * IN struct bit_flags_combo_t bit_flags_combo - ****************************************************************/ -struct bit_flags_combo_t print_bit_flags_combo ( bit_flags_combo ) -struct bit_flags_combo_t bit_flags_combo; -{ - - if (bit_flags_combo.alpha) printf("alpha\n"); - if (bit_flags_combo.beta) printf("beta\n"); - if (bit_flags_combo.gamma) printf("gamma\n"); - if (bit_flags_combo.delta) printf("delta\n"); - if (bit_flags_combo.epsilon) printf("epsilon\n"); - if (bit_flags_combo.omega) printf("omega\n"); - printf("ch1: %c\tch2: %c\n", bit_flags_combo.ch1, bit_flags_combo.ch2); - return bit_flags_combo; - -} - -/***************************************************************** - * PRINT_ONE_DOUBLE : - * IN struct one_double_t one_double - ****************************************************************/ -struct one_double_t print_one_double ( one_double ) -struct one_double_t one_double; -{ - - printf("Contents of one_double_t: \n\n"); - printf("%f\n", one_double.double1); - return one_double; - -} - -/***************************************************************** - * PRINT_TWO_FLOATS : - * IN struct two_floats_t two_floats - ****************************************************************/ -struct two_floats_t print_two_floats ( two_floats ) -struct two_floats_t two_floats; -{ - - printf("Contents of two_floats_t: \n\n"); - printf("%f\t%f\n", two_floats.float1, two_floats.float2); - return two_floats; - -} - -/***************************************************************** - * PRINT_THREE_CHARS : - * IN struct three_char_t three_char - ****************************************************************/ -struct three_char_t print_three_chars ( three_char ) -struct three_char_t three_char; -{ - - printf("Contents of three_char_t: \n\n"); - printf("%c\t%c\t%c\n", three_char.ch1, three_char.ch2, three_char.ch3); - return three_char; - -} - -/***************************************************************** - * PRINT_FIVE_CHARS : - * IN struct five_char_t five_char - ****************************************************************/ -struct five_char_t print_five_chars ( five_char ) -struct five_char_t five_char; -{ - - printf("Contents of five_char_t: \n\n"); - printf("%c\t%c\t%c\t%c\t%c\n", five_char.ch1, five_char.ch2, - five_char.ch3, five_char.ch4, - five_char.ch5); - return five_char; - -} - -/***************************************************************** - * PRINT_INT_CHAR_COMBO : - * IN struct int_char_combo_t int_char_combo - ****************************************************************/ -struct int_char_combo_t print_int_char_combo ( int_char_combo ) -struct int_char_combo_t int_char_combo; -{ - - printf("Contents of int_char_combo_t: \n\n"); - printf("%d\t%c\n", int_char_combo.int1, int_char_combo.ch1); - return int_char_combo; - -} - -/***************************************************************** - * PRINT_STRUCT_REP : - ****************************************************************/ -struct small_rep_info_t print_struct_rep( struct1 ) -struct small_rep_info_t struct1; - -{ - - printf("Contents of struct1: \n\n"); - printf("%10d%10d\n", struct1.value, struct1.head); - struct1.value =+5; - - return struct1; - - -} - - -struct array_rep_info_t print_one_large_struct( linked_list1 ) -struct array_rep_info_t linked_list1; -{ - - - printf("%10d%10d\n", linked_list1.values[0], - linked_list1.next_index[0]); - - return linked_list1; - -} - -/***************************************************************** - * INIT_ARRAY_REP : - * IN struct array_rep_info_t *linked_list - * IN int seed - ****************************************************************/ -void init_array_rep( linked_list, seed ) -struct array_rep_info_t *linked_list; -int seed; - -{ - - int index; - - for (index = 0; index < 10; index++) { - - linked_list->values[index] = (2*index) + (seed*2); - linked_list->next_index[index] = index + 1; - } - linked_list->head = 0; -} - - -int main () { - - /* variables for large structure testing - */ - int number = 10; - struct array_rep_info_t *list1; - - /* variables for testing a small structures and a very long argument list - */ - struct small_rep_info_t *struct1; - struct bit_flags_t *flags; - struct bit_flags_combo_t *flags_combo; - struct three_char_t *three_char; - struct five_char_t *five_char; - struct int_char_combo_t *int_char_combo; - struct one_double_t *d1; - struct two_floats_t *f3; - - - /* Allocate space for large structures - */ - list1 = (struct array_rep_info_t *)malloc(sizeof(struct array_rep_info_t)); - - /* Initialize large structures - */ - init_array_rep(list1, 2); - - /* Print large structures - */ - print_one_large_struct(*list1); - - /* Allocate space for small structures - */ - struct1 = (struct small_rep_info_t *)malloc(sizeof(struct small_rep_info_t)); - flags = (struct bit_flags_t *)malloc(sizeof(struct bit_flags_t)); - flags_combo = (struct bit_flags_combo_t *)malloc(sizeof(struct bit_flags_combo_t)); - three_char = (struct three_char_t *)malloc(sizeof(struct three_char_t)); - five_char = (struct five_char_t *)malloc(sizeof(struct five_char_t)); - int_char_combo = (struct int_char_combo_t *)malloc(sizeof(struct int_char_combo_t)); - - d1 = (struct one_double_t *)malloc(sizeof(struct one_double_t)); - f3 = (struct two_floats_t *)malloc(sizeof(struct two_floats_t)); - - /* Initialize small structures - */ - init_one_double ( d1, 1.11111); - init_two_floats ( f3, -2.345, 1.0); - init_bit_flags(flags, (unsigned)1, (unsigned)0, (unsigned)1, - (unsigned)0, (unsigned)1, (unsigned)0 ); - init_bit_flags_combo(flags_combo, (unsigned)1, (unsigned)0, 'y', - (unsigned)1, (unsigned)0, 'n', - (unsigned)1, (unsigned)0 ); - init_three_chars(three_char, 'x', 'y', 'z'); - init_five_chars(five_char, 'h', 'e', 'l', 'l', 'o'); - init_int_char_combo(int_char_combo, 13, '!'); - init_struct_rep(struct1, 10); - - - /* Print small structures - */ - print_one_double(*d1); - print_two_floats(*f3); - print_bit_flags(*flags); - print_bit_flags_combo(*flags_combo); - print_three_chars(*three_char); - print_five_chars(*five_char); - print_int_char_combo(*int_char_combo); - print_struct_rep(*struct1); - - loop_count(); - - return 0; -} - - - - - - - - - - - - - - - |