Skip to content

Commit bb94c45

Browse files
committed
OSX: Refine code
1 parent f9ea8a1 commit bb94c45

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

tools/porting/porting.c

+8-4
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ void print_jmpbuf()
8888
} jmp_buf[1];
8989
*/
9090
jmp_buf ctx = {0};
91-
if (!setjmp(ctx)) {
91+
int r0 = setjmp(ctx);
92+
if (!r0) {
9293
longjmp(ctx, 1);
9394
}
9495

@@ -118,11 +119,14 @@ void print_jmpbuf()
118119
__asm__ __volatile__ ("movq %%r15,%0": "=r"(r15): /* No input */);
119120
__asm__ __volatile__ ("movq %%rsp,%0": "=r"(rsp): /* No input */);
120121

121-
printf("rbx=%p, rbp=%p,%p, r12=%p, r13=%p, r14=%p, r15=%p, rsp=%p\n",
122-
rbx, rbp, rbp2, r12, r13, r14, r15, rsp);
122+
printf("rbx=%p, rbp=%p, r12=%p, r13=%p, r14=%p, r15=%p, rsp=%p\n",
123+
rbx, rbp, r12, r13, r14, r15, rsp);
123124

124125
jmp_buf ctx = {0};
125-
setjmp(ctx);
126+
int r0 = setjmp(ctx);
127+
if (!r0) {
128+
longjmp(ctx, 1);
129+
}
126130

127131
int nn_jb = sizeof(ctx);
128132
printf("sizeof(jmp_buf)=%d (unsigned long long [%d])\n", nn_jb, nn_jb/8);

tools/verify/verify.c

+6-3
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,14 @@ void verify_jmpbuf()
6565
__asm__ __volatile__ ("movq %%r15,%0": "=r"(r15): /* No input */);
6666
__asm__ __volatile__ ("movq %%rsp,%0": "=r"(rsp): /* No input */);
6767

68-
printf("rbx=%p, rbp=%p,%p, r12=%p, r13=%p, r14=%p, r15=%p, rsp=%p\n",
69-
rbx, rbp, rbp2, r12, r13, r14, r15, rsp);
68+
printf("rbx=%p, rbp=%p, r12=%p, r13=%p, r14=%p, r15=%p, rsp=%p\n",
69+
rbx, rbp, r12, r13, r14, r15, rsp);
7070

7171
jmp_buf ctx = {0};
72-
_st_md_cxt_save(ctx);
72+
int r0 = _st_md_cxt_save(ctx);
73+
if (!r0) {
74+
_st_md_cxt_restore(ctx, 1); // Restore/Jump to previous line, set r0 to 1.
75+
}
7376

7477
int nn_jb = sizeof(ctx);
7578
printf("sizeof(jmp_buf)=%d (unsigned long long [%d])\n", nn_jb, nn_jb/8);

0 commit comments

Comments
 (0)