summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/call-rt-st.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1999-04-16 01:34:07 +0000
committerStan Shebs <shebs@codesourcery.com>1999-04-16 01:34:07 +0000
commit071ea11e85eb9d529cc5eb3d35f6247466a21b99 (patch)
tree5deda65b8d7b04d1f4cbc534c3206d328e1267ec /gdb/testsuite/gdb.base/call-rt-st.c
parent1730ec6b1848f0f32154277f788fb29f88d8475b (diff)
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.c530
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 c89cb11f51..0000000000
--- 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;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-