diff --git a/src/cmd/ksh93/include/jobs.h b/src/cmd/ksh93/include/jobs.h index af5ea5cd1..84d48dae7 100644 --- a/src/cmd/ksh93/include/jobs.h +++ b/src/cmd/ksh93/include/jobs.h @@ -149,32 +149,6 @@ extern struct jobs job; #define vmbusy() 0 #endif -/* - * Job locking and unlocking macros - */ -#if defined(__sync_fetch_and_add) && defined(__sync_fetch_and_sub) -/* - * This version may prevent segfaults due to a GCC optimizer bug. - * See: https://bugzilla.redhat.com/show_bug.cgi?id=1112306 - * https://bugs.launchpad.net/ubuntu/+source/ksh/+bug/1697501 - */ -#define asoincint(p) __sync_fetch_and_add(p,1) -#define asodecint(p) __sync_fetch_and_sub(p,1) -#define job_lock() asoincint(&job.in_critical) -#define job_unlock() \ - do { \ - int sig; \ - if (asodecint(&job.in_critical)==1 && (sig = job.savesig)) \ - { \ - if (!asoincint(&job.in_critical) && !vmbusy()) \ - job_reap(sig); \ - asodecint(&job.in_critical); \ - } \ - } while(0) -#else -/* - * Original ksh93 version. - */ #define job_lock() (job.in_critical++) #define job_unlock() \ do { \ @@ -186,7 +160,6 @@ extern struct jobs job; job.in_critical--; \ } \ } while(0) -#endif /* defined(__sync_fetch_and_add) && defined(__sync_fetch_and_sub) */ extern const char e_jobusage[]; extern const char e_done[];