aboutsummaryrefslogtreecommitdiff
path: root/tests/tcctest.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcctest.c')
-rw-r--r--tests/tcctest.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/tcctest.c b/tests/tcctest.c
index 14ad1e6..8c2b2a2 100644
--- a/tests/tcctest.c
+++ b/tests/tcctest.c
@@ -82,6 +82,7 @@ void local_label_test(void);
void statement_expr_test(void);
void asm_test(void);
void builtin_test(void);
+void weak_test(void);
int fib(int n);
void num(int n);
@@ -537,6 +538,7 @@ int main(int argc, char **argv)
local_label_test();
asm_test();
builtin_test();
+ weak_test();
return 0;
}
@@ -2227,6 +2229,22 @@ void builtin_test(void)
}
+extern int __attribute__((weak)) weak_f1(void);
+extern int __attribute__((weak)) weak_f2(void);
+extern int __attribute__((weak)) weak_v1;
+extern int __attribute__((weak)) weak_v2;
+
+void __attribute__((weak)) weak_test(void)
+{
+ printf("weak_f1=%d\n", weak_f1 ? weak_f1() : 123);
+ printf("weak_f2=%d\n", weak_f2 ? weak_f2() : 123);
+ printf("weak_v1=%d\n",&weak_v1 ? weak_v1 : 123);
+ printf("weak_v2=%d\n",&weak_v2 ? weak_v2 : 123);
+}
+
+int __attribute__((weak)) weak_f2() { return 222; }
+int __attribute__((weak)) weak_v2 = 222;
+
void const_func(const int a)
{
}