tests/c/variables1.c
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 07 Feb 2019 15:18:41 +0000
changeset 175 a04e1a36e888
parent 110 727d8a9e6d5d
permissions -rw-r--r--
Fix for multi-location breakpoints created initially as pending If the breakpoint has been created as pending breakpoint it is unknown whether it is a multi-location breakpoint or not so it has no locations. If, once the object is loaded abd breakpoint can be installed, it turns out there are multiple locations, we get an an =breakpoint-modified event listing all locations. Therefore, we have to update existing breakpoint and add locations.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
#include <stdio.h>
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
typedef struct _data {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
    int i;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
    char c[20];
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
    union {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
        struct {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
            int a;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
            int b;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
        } as_i;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
        struct {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
            float f;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
            float g;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
        } as_f;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    };
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
} data;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    18
void set_data_i(data *d, int i) {
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    19
    d->i = i;
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    20
}
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    21
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    22
void set_data_f(data *d, float f) {
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    23
    d->as_f.f = f;
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    24
}
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    25
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    26
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
int main(int argc, char **argv) {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
    data d = {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
        1,
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
        "Hello World!",
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
        {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
            {
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
                (int)10,
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
                (int)20
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
            }
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
        }
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
    };
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    38
    set_data_i(&d, 12);
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    39
    set_data_f(&d, 0.1);
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    40
    set_data_i(&d, 24);
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    return d.i;
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
}