@@ -1648,8 +1648,25 @@ void jl_dump_native_impl(void *native_code,
16481648 has_veccall = !!dataM.getModuleFlag (" julia.mv.veccall" );
16491649 });
16501650
1651+ auto cleanup = [](sem_t * s) {
1652+ #if defined(_OS_LINUX_) || defined(_OS_DARWIN_)
1653+ if (s != SEM_FAILED) {
1654+ sem_post (s);
1655+ sem_close (s);
1656+ }
1657+ #endif
1658+ };
1659+
16511660 #if defined(_OS_LINUX_) || defined(_OS_DARWIN_)
1652- sem_t *sem = sem_open (" /jl_aotcompile_sem" , O_CREAT, 0644 , 3 );
1661+ sem_t *sem = SEM_FAILED;
1662+ const char *sem_name = getenv (" RAI_CC_SEM_NAME" );
1663+ if (sem_name != NULL ) {
1664+ sem = sem_open (sem_name, O_CREAT, 0644 , 4 );
1665+ } else {
1666+ // Use default name for debugging purposes
1667+ sem = sem_open (" /jl_aotcompile_sem" , O_CREAT, 0644 , 4 );
1668+ }
1669+ std::unique_ptr<sem_t , decltype (cleanup)> sem_guard (sem, cleanup);
16531670 if (sem == SEM_FAILED) {
16541671 jl_printf (JL_STDERR, " Failed to create semaphore: %s\n " , strerror (errno));
16551672 } else {
@@ -1780,12 +1797,6 @@ void jl_dump_native_impl(void *native_code,
17801797 WRITE_ARCHIVE (obj_fname, obj, " " , " .o" );
17811798 WRITE_ARCHIVE (asm_fname, asm_, " " , " .s" );
17821799
1783- #if defined(_OS_LINUX_) || defined(_OS_DARWIN_)
1784- if (sem != SEM_FAILED) {
1785- sem_post (sem);
1786- sem_close (sem);
1787- }
1788- #endif
17891800}
17901801
17911802void addTargetPasses (legacy::PassManagerBase *PM, const Triple &triple, TargetIRAnalysis analysis)
0 commit comments