File tree 3 files changed +24
-3
lines changed
3 files changed +24
-3
lines changed Original file line number Diff line number Diff line change 41
41
42
42
clean :
43
43
rm -f src/* .o tests/* .o
44
- rm -f bin/* tmp
44
+ rm -f bin/*
45
+ rm -rf tmp
45
46
46
47
DEBUG = # -DDEBUG_DUMP
47
48
Original file line number Diff line number Diff line change 72
72
#define STACKMAN_SP_ALIGN_UP (a ) (((intptr_t)((a)+STACKMAN_STACK_ALIGN-1) & ~(STACKMAN_STACK_ALIGN-1)))
73
73
74
74
#if STACKMAN_STACK_DIR == 0
75
- #define STACKMAN_SP_FURTHEST ((void*) ^ (intptr_t)-1 )
75
+ #define STACKMAN_SP_FURTHEST ((void*) (intptr_t) -STACKMAN_STACK_ALIGN )
76
76
#define STACKMAN_SP_NEAREST ((void*) 0)
77
77
#define STACKMAN_SP_LS (a , b ) ((void*)(a) < (void*)(b)) /* to compare stack position */
78
78
#define STACKMAN_SP_LE (a , b ) ((void*)(a) <= (void*)(b)) /* to compare stack position */
82
82
#else
83
83
/* upwards growing stacks */
84
84
#define STACKMAN_SP_FURTHEST ((void*) 0)
85
- #define STACKMAN_SP_NEAREST ((void*) ^ (intptr_t)-1 )
85
+ #define STACKMAN_SP_NEAREST ((void*) (intptr_t) -STACKMAN_STACK_ALIGN )
86
86
#define STACKMAN_SP_LS (a , b ) ((void*)(a) > (void*)(b)) /* to compare stack position */
87
87
#define STACKMAN_SP_LE (a , b ) ((void*)(a) >= (void*)(b)) /* to compare stack position */
88
88
#define STACKMAN_SP_ADD (a , b ) ((a) - (b)) /* to add offset to stack pointer */
Original file line number Diff line number Diff line change @@ -254,6 +254,24 @@ void test_04(void)
254
254
255
255
#endif
256
256
257
+ /* Test our various macros */
258
+ void test_05 ()
259
+ {
260
+
261
+ int local = 0 ;
262
+ void * away = STACKMAN_SP_FURTHEST ;
263
+ void * close = STACKMAN_SP_NEAREST ;
264
+ assert (STACKMAN_SP_LE (& local , away ));
265
+ assert (STACKMAN_SP_LS (& local , away ));
266
+ assert (STACKMAN_SP_LE (close , & local ));
267
+ assert (STACKMAN_SP_LS (close , & local ));
268
+
269
+ assert (STACKMAN_SP_LE (& local , & local ));
270
+ assert (!STACKMAN_SP_LS (& local , & local ));
271
+
272
+ assert ((void * )STACKMAN_SP_ALIGN (away ) == away );
273
+
274
+ }
257
275
258
276
int main (int argc , char * argv [])
259
277
{
@@ -269,5 +287,7 @@ int main(int argc, char*argv[])
269
287
test_04 ();
270
288
printf ("test_04 ok\n" );
271
289
#endif
290
+ test_05 ();
291
+ printf ("test_05 ok\n" );
272
292
return 0 ;
273
293
}
You can’t perform that action at this time.
0 commit comments