Summary: Use the equality class information in the symbolic state to resolve callees of indirect calls. Reviewed By: jvillard Differential Revision: D25146160 fbshipit-source-id: a1c39bbe1master
parent
5c5126474e
commit
4605f505ce
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
typedef struct _ {
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int c;
|
||||||
|
} S;
|
||||||
|
|
||||||
|
typedef int* (*F)(S*);
|
||||||
|
|
||||||
|
int* g(S* x) { return &(x->b); }
|
||||||
|
|
||||||
|
int* h(S* x) { return &(x->c); }
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
S t;
|
||||||
|
void* x;
|
||||||
|
int* y;
|
||||||
|
F f;
|
||||||
|
|
||||||
|
f = &g;
|
||||||
|
x = &(t.a);
|
||||||
|
y = (*f)(x);
|
||||||
|
assert(x != y);
|
||||||
|
|
||||||
|
f = &h;
|
||||||
|
x = &(t.a);
|
||||||
|
y = (*f)(x);
|
||||||
|
assert(x != y);
|
||||||
|
}
|
Loading…
Reference in new issue