[Openmp-commits] [openmp] r233915 - Replace some unsafe API calls with safe alternatives on Windows, prepare code for similar actions on other platforms - wrap unsafe API calls into macros.
Andrey Churbanov
Andrey.Churbanov at intel.com
Thu Apr 2 06:27:08 PDT 2015
Author: achurbanov
Date: Thu Apr 2 08:27:08 2015
New Revision: 233915
URL: http://llvm.org/viewvc/llvm-project?rev=233915&view=rev
Log:
Replace some unsafe API calls with safe alternatives on Windows, prepare code for similar actions on other platforms - wrap unsafe API calls into macros.
Added:
openmp/trunk/runtime/src/kmp_safe_c_api.h (with props)
Modified:
openmp/trunk/runtime/src/extractExternal.cpp
openmp/trunk/runtime/src/kmp_affinity.cpp
openmp/trunk/runtime/src/kmp_alloc.c
openmp/trunk/runtime/src/kmp_csupport.c
openmp/trunk/runtime/src/kmp_environment.c
openmp/trunk/runtime/src/kmp_ftn_entry.h
openmp/trunk/runtime/src/kmp_gsupport.c
openmp/trunk/runtime/src/kmp_i18n.c
openmp/trunk/runtime/src/kmp_io.c
openmp/trunk/runtime/src/kmp_lock.cpp
openmp/trunk/runtime/src/kmp_os.h
openmp/trunk/runtime/src/kmp_runtime.c
openmp/trunk/runtime/src/kmp_settings.c
openmp/trunk/runtime/src/kmp_stats_timing.cpp
openmp/trunk/runtime/src/kmp_str.c
openmp/trunk/runtime/src/kmp_str.h
openmp/trunk/runtime/src/kmp_tasking.c
openmp/trunk/runtime/src/kmp_threadprivate.c
openmp/trunk/runtime/src/kmp_utility.c
openmp/trunk/runtime/src/z_Linux_util.c
openmp/trunk/runtime/src/z_Windows_NT_util.c
Modified: openmp/trunk/runtime/src/extractExternal.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/extractExternal.cpp?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/extractExternal.cpp (original)
+++ openmp/trunk/runtime/src/extractExternal.cpp Thu Apr 2 08:27:08 2015
@@ -139,8 +139,8 @@ private:
data = new char[length = _length];
}
*(unsigned*)data = length;
- memcpy(data + sizeof(unsigned), _data + sizeof(unsigned),
- length - sizeof(unsigned));
+ KMP_MEMCPY(data + sizeof(unsigned), _data + sizeof(unsigned),
+ length - sizeof(unsigned));
makeDirectory();
}
public:
@@ -192,7 +192,7 @@ public:
size_t l = str.size();
if(l > 8) {
directory.insert(make_pair(str, p - data));
- memcpy(p, str.c_str(), l);
+ KMP_MEMCPY(p, str.c_str(), l);
p[l] = 0;
p += l + 1;
}
@@ -211,7 +211,7 @@ public:
if(str.size() <= 8) {
// encoded directly
((char*)&r)[7] = 0;
- strncpy((char*)&r, str.c_str(), 8);
+ KMP_STRNCPY_S((char*)&r, sizeof(r), str.c_str(), 8);
return r;
} else {
// represented as index into table
Modified: openmp/trunk/runtime/src/kmp_affinity.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_affinity.cpp?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_affinity.cpp (original)
+++ openmp/trunk/runtime/src/kmp_affinity.cpp Thu Apr 2 08:27:08 2015
@@ -41,13 +41,13 @@ __kmp_affinity_print_mask(char *buf, int
}
}
if (i == KMP_CPU_SETSIZE) {
- sprintf(scan, "{<empty>}");
+ KMP_SNPRINTF(scan, buf_len, "{<empty>}");
while (*scan != '\0') scan++;
KMP_ASSERT(scan <= end);
return buf;
}
- sprintf(scan, "{%ld", (long)i);
+ KMP_SNPRINTF(scan, buf_len, "{%ld", (long)i);
while (*scan != '\0') scan++;
i++;
for (; i < KMP_CPU_SETSIZE; i++) {
@@ -64,14 +64,14 @@ __kmp_affinity_print_mask(char *buf, int
if (end - scan < 15) {
break;
}
- sprintf(scan, ",%-ld", (long)i);
+ KMP_SNPRINTF(scan, buf_len, ",%-ld", (long)i);
while (*scan != '\0') scan++;
}
if (i < KMP_CPU_SETSIZE) {
- sprintf(scan, ",...");
+ KMP_SNPRINTF(scan, buf_len, ",...");
while (*scan != '\0') scan++;
}
- sprintf(scan, "}");
+ KMP_SNPRINTF(scan, buf_len, "}");
while (*scan != '\0') scan++;
KMP_ASSERT(scan <= end);
return buf;
@@ -1849,7 +1849,7 @@ __kmp_affinity_create_cpuinfo_map(AddrUn
// FIXME - this will match "node_<n> <garbage>"
//
unsigned level;
- if (sscanf(buf, "node_%d id", &level) == 1) {
+ if (KMP_SSCANF(buf, "node_%d id", &level) == 1) {
if (nodeIdIndex + level >= maxIndex) {
maxIndex = nodeIdIndex + level;
}
@@ -1968,17 +1968,17 @@ __kmp_affinity_create_cpuinfo_map(AddrUn
CHECK_LINE;
char *p = strchr(buf + sizeof(s1) - 1, ':');
unsigned val;
- if ((p == NULL) || (sscanf(p + 1, "%u\n", &val) != 1)) goto no_val;
+ if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1)) goto no_val;
if (threadInfo[num_avail][osIdIndex] != UINT_MAX) goto dup_field;
threadInfo[num_avail][osIdIndex] = val;
#if KMP_OS_LINUX && USE_SYSFS_INFO
char path[256];
- snprintf(path, sizeof(path),
+ KMP_SNPRINTF(path, sizeof(path),
"/sys/devices/system/cpu/cpu%u/topology/physical_package_id",
threadInfo[num_avail][osIdIndex]);
__kmp_read_from_file(path, "%u", &threadInfo[num_avail][pkgIdIndex]);
- snprintf(path, sizeof(path),
+ KMP_SNPRINTF(path, sizeof(path),
"/sys/devices/system/cpu/cpu%u/topology/core_id",
threadInfo[num_avail][osIdIndex]);
__kmp_read_from_file(path, "%u", &threadInfo[num_avail][coreIdIndex]);
@@ -1990,7 +1990,7 @@ __kmp_affinity_create_cpuinfo_map(AddrUn
CHECK_LINE;
char *p = strchr(buf + sizeof(s2) - 1, ':');
unsigned val;
- if ((p == NULL) || (sscanf(p + 1, "%u\n", &val) != 1)) goto no_val;
+ if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1)) goto no_val;
if (threadInfo[num_avail][pkgIdIndex] != UINT_MAX) goto dup_field;
threadInfo[num_avail][pkgIdIndex] = val;
continue;
@@ -2000,7 +2000,7 @@ __kmp_affinity_create_cpuinfo_map(AddrUn
CHECK_LINE;
char *p = strchr(buf + sizeof(s3) - 1, ':');
unsigned val;
- if ((p == NULL) || (sscanf(p + 1, "%u\n", &val) != 1)) goto no_val;
+ if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1)) goto no_val;
if (threadInfo[num_avail][coreIdIndex] != UINT_MAX) goto dup_field;
threadInfo[num_avail][coreIdIndex] = val;
continue;
@@ -2011,17 +2011,17 @@ __kmp_affinity_create_cpuinfo_map(AddrUn
CHECK_LINE;
char *p = strchr(buf + sizeof(s4) - 1, ':');
unsigned val;
- if ((p == NULL) || (sscanf(p + 1, "%u\n", &val) != 1)) goto no_val;
+ if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1)) goto no_val;
if (threadInfo[num_avail][threadIdIndex] != UINT_MAX) goto dup_field;
threadInfo[num_avail][threadIdIndex] = val;
continue;
}
unsigned level;
- if (sscanf(buf, "node_%d id", &level) == 1) {
+ if (KMP_SSCANF(buf, "node_%d id", &level) == 1) {
CHECK_LINE;
char *p = strchr(buf + sizeof(s4) - 1, ':');
unsigned val;
- if ((p == NULL) || (sscanf(p + 1, "%u\n", &val) != 1)) goto no_val;
+ if ((p == NULL) || (KMP_SSCANF(p + 1, "%u\n", &val) != 1)) goto no_val;
KMP_ASSERT(nodeIdIndex + level <= maxIndex);
if (threadInfo[num_avail][nodeIdIndex + level] != UINT_MAX) goto dup_field;
threadInfo[num_avail][nodeIdIndex + level] = val;
@@ -2591,7 +2591,7 @@ __kmp_create_masks(unsigned *maxIndex, u
unsigned leader = 0;
Address *leaderAddr = &(address2os[0].first);
kmp_affin_mask_t *sum
- = (kmp_affin_mask_t *)alloca(__kmp_affin_mask_size);
+ = (kmp_affin_mask_t *)KMP_ALLOCA(__kmp_affin_mask_size);
KMP_CPU_ZERO(sum);
KMP_CPU_SET(address2os[0].second, sum);
for (i = 1; i < numAddrs; i++) {
@@ -2913,7 +2913,7 @@ __kmp_affinity_process_proclist(kmp_affi
}
*out_masks
= (kmp_affin_mask_t *)__kmp_allocate(nextNewMask * __kmp_affin_mask_size);
- memcpy(*out_masks, newMasks, nextNewMask * __kmp_affin_mask_size);
+ KMP_MEMCPY(*out_masks, newMasks, nextNewMask * __kmp_affin_mask_size);
__kmp_free(sumMask);
KMP_INTERNAL_FREE(newMasks);
}
@@ -3319,7 +3319,7 @@ __kmp_affinity_process_placelist(kmp_aff
}
*out_masks
= (kmp_affin_mask_t *)__kmp_allocate(nextNewMask * __kmp_affin_mask_size);
- memcpy(*out_masks, newMasks, nextNewMask * __kmp_affin_mask_size);
+ KMP_MEMCPY(*out_masks, newMasks, nextNewMask * __kmp_affin_mask_size);
__kmp_free(tempMask);
KMP_INTERNAL_FREE(newMasks);
}
@@ -4398,7 +4398,7 @@ void __kmp_balanced_affinity( int tid, i
KMP_DEBUG_ASSERT2(KMP_AFFINITY_CAPABLE(),
"Illegal set affinity operation when not capable");
- kmp_affin_mask_t *mask = (kmp_affin_mask_t *)alloca(__kmp_affin_mask_size);
+ kmp_affin_mask_t *mask = (kmp_affin_mask_t *)KMP_ALLOCA(__kmp_affin_mask_size);
KMP_CPU_ZERO(mask);
// Granularity == thread
@@ -4421,7 +4421,7 @@ void __kmp_balanced_affinity( int tid, i
__kmp_set_system_affinity( mask, TRUE );
} else { // Non-uniform topology
- kmp_affin_mask_t *mask = (kmp_affin_mask_t *)alloca(__kmp_affin_mask_size);
+ kmp_affin_mask_t *mask = (kmp_affin_mask_t *)KMP_ALLOCA(__kmp_affin_mask_size);
KMP_CPU_ZERO(mask);
// Number of hyper threads per core in HT machine
Modified: openmp/trunk/runtime/src/kmp_alloc.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_alloc.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_alloc.c (original)
+++ openmp/trunk/runtime/src/kmp_alloc.c Thu Apr 2 08:27:08 2015
@@ -785,7 +785,7 @@ bgetr( kmp_info_t *th, void *buf, bufsi
KMP_DEBUG_ASSERT(osize > 0);
- (void) memcpy((char *) nbuf, (char *) buf, /* Copy the data */
+ (void) KMP_MEMCPY((char *) nbuf, (char *) buf, /* Copy the data */
(size_t) ((size < osize) ? size : osize));
brel( th, buf );
@@ -1178,7 +1178,7 @@ bufdump( kmp_info_t *th, void *buf )
}
for (i = 0; i < l; i++) {
- (void) sprintf(bhex + i * 3, "%02X ", bdump[i]);
+ (void) KMP_SNPRINTF(bhex + i * 3, sizeof(bhex), "%02X ", bdump[i]);
if (bdump[i] > 0x20 && bdump[i] < 0x7F)
bascii[ i ] = bdump[ i ];
else
Modified: openmp/trunk/runtime/src/kmp_csupport.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_csupport.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_csupport.c (original)
+++ openmp/trunk/runtime/src/kmp_csupport.c Thu Apr 2 08:27:08 2015
@@ -199,7 +199,7 @@ __kmpc_ok_to_fork(ident_t *loc)
return __kmp_par_range < 0;
}
}
- if (sscanf(semi3 + 1, "%d", &line_no) == 1) {
+ if (KMP_SSCANF(semi3 + 1, "%d", &line_no) == 1) {
if ((line_no >= __kmp_par_range_lb) && (line_no <= __kmp_par_range_ub)) {
return __kmp_par_range > 0;
}
@@ -1396,7 +1396,7 @@ void
kmpc_set_defaults( char const * str )
{
// __kmp_aux_set_defaults initializes the library if needed
- __kmp_aux_set_defaults( str, strlen( str ) );
+ __kmp_aux_set_defaults( str, KMP_STRLEN( str ) );
}
int
Modified: openmp/trunk/runtime/src/kmp_environment.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_environment.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_environment.c (original)
+++ openmp/trunk/runtime/src/kmp_environment.c Thu Apr 2 08:27:08 2015
@@ -102,12 +102,12 @@ __kmp_env_get( char const * name ) {
#if KMP_OS_UNIX
char const * value = getenv( name );
if ( value != NULL ) {
- size_t len = strlen( value ) + 1;
+ size_t len = KMP_STRLEN( value ) + 1;
result = (char *) KMP_INTERNAL_MALLOC( len );
if ( result == NULL ) {
KMP_FATAL( MemoryAllocFailed );
}; // if
- strncpy( result, value, len );
+ KMP_STRNCPY_S( result, len, value, len );
}; // if
#elif KMP_OS_WINDOWS
/*
@@ -393,19 +393,19 @@ ___kmp_env_blk_parse_windows(
int len; // Length of variable.
count = 0;
var = env; // The first variable starts and beginning of environment block.
- len = strlen( var );
+ len = KMP_STRLEN( var );
while ( len != 0 ) {
++ count;
size = size + len + 1;
var = var + len + 1; // Move pointer to the beginning of the next variable.
- len = strlen( var );
+ len = KMP_STRLEN( var );
}; // while
size = size + 1; // Total size of env block, including terminating zero byte.
}
// Copy original block to bulk, we will modify bulk, not original block.
bulk = (char *) allocate( size );
- memcpy( bulk, env, size );
+ KMP_MEMCPY_S( bulk, size, env, size );
// Allocate vars array.
vars = (kmp_env_var_t *) allocate( count * sizeof( kmp_env_var_t ) );
@@ -415,7 +415,7 @@ ___kmp_env_blk_parse_windows(
int len; // Length of variable.
count = 0;
var = bulk;
- len = strlen( var );
+ len = KMP_STRLEN( var );
while ( len != 0 ) {
// Save variable in vars array.
__kmp_str_split( var, '=', & name, & value );
@@ -424,7 +424,7 @@ ___kmp_env_blk_parse_windows(
++ count;
// Get the next var.
var = var + len + 1;
- len = strlen( var );
+ len = KMP_STRLEN( var );
}; // while
}
@@ -462,7 +462,7 @@ ___kmp_env_blk_parse_unix(
count = 0;
size = 0;
while ( env[ count ] != NULL ) {
- size += strlen( env[ count ] ) + 1;
+ size += KMP_STRLEN( env[ count ] ) + 1;
++ count;
}; // while
}
@@ -481,8 +481,8 @@ ___kmp_env_blk_parse_unix(
var = bulk;
for ( i = 0; i < count; ++ i ) {
// Copy variable to bulk.
- len = strlen( env[ i ] );
- memcpy( var, env[ i ], len + 1 );
+ len = KMP_STRLEN( env[ i ] );
+ KMP_MEMCPY_S( var, size, env[ i ], len + 1 );
// Save found variable in vars array.
__kmp_str_split( var, '=', & name, & value );
vars[ i ].name = name;
Modified: openmp/trunk/runtime/src/kmp_ftn_entry.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_ftn_entry.h?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_ftn_entry.h (original)
+++ openmp/trunk/runtime/src/kmp_ftn_entry.h Thu Apr 2 08:27:08 2015
@@ -1046,7 +1046,7 @@ FTN_SET_DEFAULTS( char const * str
{
#ifndef KMP_STUB
#ifdef PASS_ARGS_BY_VALUE
- int len = (int)strlen( str );
+ int len = (int)KMP_STRLEN( str );
#endif
__kmp_aux_set_defaults( str, len );
#endif
Modified: openmp/trunk/runtime/src/kmp_gsupport.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_gsupport.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_gsupport.c (original)
+++ openmp/trunk/runtime/src/kmp_gsupport.c Thu Apr 2 08:27:08 2015
@@ -699,7 +699,7 @@ xexpand(KMP_API_NAME_GOMP_TASK)(void (*f
(*copy_func)(task->shareds, data);
}
else {
- memcpy(task->shareds, data, arg_size);
+ KMP_MEMCPY(task->shareds, data, arg_size);
}
}
Modified: openmp/trunk/runtime/src/kmp_i18n.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_i18n.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_i18n.c (original)
+++ openmp/trunk/runtime/src/kmp_i18n.c Thu Apr 2 08:27:08 2015
@@ -864,7 +864,7 @@ __kmp_msg_error_code(
msg.type = kmp_mt_syserr;
msg.num = code;
msg.str = sys_error( code );
- msg.len = strlen( msg.str );
+ msg.len = KMP_STRLEN( msg.str );
return msg;
} // __kmp_msg_error_code
@@ -880,7 +880,7 @@ __kmp_msg_error_mesg(
msg.type = kmp_mt_syserr;
msg.num = 0;
msg.str = __kmp_str_format( "%s", mesg );
- msg.len = strlen( msg.str );
+ msg.len = KMP_STRLEN( msg.str );
return msg;
} // __kmp_msg_error_mesg
Modified: openmp/trunk/runtime/src/kmp_io.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_io.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_io.c (original)
+++ openmp/trunk/runtime/src/kmp_io.c Thu Apr 2 08:27:08 2015
@@ -1,5 +1,5 @@
/*
- * kmp_io.c -- RTL IO
+ * KMP_IO.c -- RTL IO
*/
@@ -169,9 +169,9 @@ __kmp_vprintf( enum kmp_io __kmp_io, cha
int chars = 0;
#ifdef KMP_DEBUG_PIDS
- chars = sprintf( db, "pid=%d: ", (kmp_int32)getpid() );
+ chars = KMP_SNPRINTF( db, __kmp_debug_buf_chars, "pid=%d: ", (kmp_int32)getpid() );
#endif
- chars += vsprintf( db, format, ap );
+ chars += KMP_VSNPRINTF( db, __kmp_debug_buf_chars, format, ap );
if ( chars + 1 > __kmp_debug_buf_chars ) {
if ( chars + 1 > __kmp_debug_buf_warn_chars ) {
Modified: openmp/trunk/runtime/src/kmp_lock.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_lock.cpp?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_lock.cpp (original)
+++ openmp/trunk/runtime/src/kmp_lock.cpp Thu Apr 2 08:27:08 2015
@@ -1130,9 +1130,9 @@ __kmp_set_ticket_lock_flags( kmp_ticket_
#define TRACE_BUF_ELE 1024
static char traces[TRACE_BUF_ELE][128] = { 0 }
static int tc = 0;
-#define TRACE_LOCK(X,Y) sprintf( traces[tc++ % TRACE_BUF_ELE], "t%d at %s\n", X, Y );
-#define TRACE_LOCK_T(X,Y,Z) sprintf( traces[tc++ % TRACE_BUF_ELE], "t%d at %s%d\n", X,Y,Z );
-#define TRACE_LOCK_HT(X,Y,Z,Q) sprintf( traces[tc++ % TRACE_BUF_ELE], "t%d at %s %d,%d\n", X, Y, Z, Q );
+#define TRACE_LOCK(X,Y) KMP_SNPRINTF( traces[tc++ % TRACE_BUF_ELE], 128, "t%d at %s\n", X, Y );
+#define TRACE_LOCK_T(X,Y,Z) KMP_SNPRINTF( traces[tc++ % TRACE_BUF_ELE], 128, "t%d at %s%d\n", X,Y,Z );
+#define TRACE_LOCK_HT(X,Y,Z,Q) KMP_SNPRINTF( traces[tc++ % TRACE_BUF_ELE], 128, "t%d at %s %d,%d\n", X, Y, Z, Q );
static void
__kmp_dump_queuing_lock( kmp_info_t *this_thr, kmp_int32 gtid,
@@ -2035,9 +2035,9 @@ FILE * __kmp_open_stats_file()
if (strcmp (__kmp_speculative_statsfile, "-") == 0)
return stdout;
- size_t buffLen = strlen( __kmp_speculative_statsfile ) + 20;
+ size_t buffLen = KMP_STRLEN( __kmp_speculative_statsfile ) + 20;
char buffer[buffLen];
- snprintf (&buffer[0], buffLen, __kmp_speculative_statsfile,
+ KMP_SNPRINTF (&buffer[0], buffLen, __kmp_speculative_statsfile,
(kmp_int32)getpid());
FILE * result = fopen(&buffer[0], "w");
@@ -3147,7 +3147,7 @@ __kmp_insert_indirect_lock(kmp_indirect_
kmp_lock_index_t size = __kmp_indirect_lock_table_size;
kmp_indirect_lock_t **old_table = __kmp_indirect_lock_table;
__kmp_indirect_lock_table = (kmp_indirect_lock_t **)__kmp_allocate(2*next*sizeof(kmp_indirect_lock_t *));
- memcpy(__kmp_indirect_lock_table, old_table, next*sizeof(kmp_indirect_lock_t *));
+ KMP_MEMCPY(__kmp_indirect_lock_table, old_table, next*sizeof(kmp_indirect_lock_t *));
__kmp_free(old_table);
__kmp_indirect_lock_table_size = 2*next;
}
@@ -3826,7 +3826,7 @@ __kmp_lock_table_insert( kmp_user_lock_p
size = __kmp_user_lock_table.allocated * 2;
}
table = (kmp_user_lock_p *)__kmp_allocate( sizeof( kmp_user_lock_p ) * size );
- memcpy( table + 1, __kmp_user_lock_table.table + 1, sizeof( kmp_user_lock_p ) * ( __kmp_user_lock_table.used - 1 ) );
+ KMP_MEMCPY( table + 1, __kmp_user_lock_table.table + 1, sizeof( kmp_user_lock_p ) * ( __kmp_user_lock_table.used - 1 ) );
table[ 0 ] = (kmp_user_lock_p)__kmp_user_lock_table.table;
// We cannot free the previos table now, sinse it may be in use by other
// threads. So save the pointer to the previous table in in the first element of the
Modified: openmp/trunk/runtime/src/kmp_os.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_os.h?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_os.h (original)
+++ openmp/trunk/runtime/src/kmp_os.h Thu Apr 2 08:27:08 2015
@@ -850,3 +850,6 @@ enum kmp_warnings_level {
#endif // __cplusplus
#endif /* KMP_OS_H */
+// Safe C API
+#include "kmp_safe_c_api.h"
+
Modified: openmp/trunk/runtime/src/kmp_runtime.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_runtime.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_runtime.c (original)
+++ openmp/trunk/runtime/src/kmp_runtime.c Thu Apr 2 08:27:08 2015
@@ -325,7 +325,7 @@ __kmp_print_storage_map_gtid( int gtid,
va_list ap;
va_start( ap, format);
- sprintf( buffer, "OMP storage map: %p %p%8lu %s\n", p1, p2, (unsigned long) size, format );
+ KMP_SNPRINTF( buffer, sizeof(buffer), "OMP storage map: %p %p%8lu %s\n", p1, p2, (unsigned long) size, format );
__kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
__kmp_vprintf( kmp_err, buffer, ap );
#if KMP_PRINT_DATA_PLACEMENT
@@ -387,7 +387,7 @@ __kmp_warn( char const * format, ... )
va_start( ap, format );
- snprintf( buffer, sizeof(buffer) , "OMP warning: %s\n", format );
+ KMP_SNPRINTF( buffer, sizeof(buffer) , "OMP warning: %s\n", format );
__kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
__kmp_vprintf( kmp_err, buffer, ap );
__kmp_release_bootstrap_lock( & __kmp_stdio_lock );
@@ -1458,7 +1458,7 @@ __kmp_fork_call(
if ( __kmp_stkpadding > 0 && __kmp_root[gtid] != NULL ) {
/* Some systems prefer the stack for the root thread(s) to start with */
/* some gap from the parent stack to prevent false sharing. */
- void *dummy = alloca(__kmp_stkpadding);
+ void *dummy = KMP_ALLOCA(__kmp_stkpadding);
/* These 2 lines below are so this does not get optimized out */
if ( __kmp_stkpadding > KMP_MAX_STKPADDING )
__kmp_stkpadding += (short)((kmp_int64)dummy);
@@ -1604,7 +1604,7 @@ __kmp_fork_call(
#if KMP_OS_LINUX && ( KMP_ARCH_X86 || KMP_ARCH_X86_64 || KMP_ARCH_ARM || KMP_ARCH_AARCH64)
void * args[ argc ];
#else
- void * * args = (void**) alloca( argc * sizeof( void * ) );
+ void * * args = (void**) KMP_ALLOCA( argc * sizeof( void * ) );
#endif /* KMP_OS_LINUX && ( KMP_ARCH_X86 || KMP_ARCH_X86_64 || KMP_ARCH_ARM || KMP_ARCH_AARCH64) */
__kmp_release_bootstrap_lock( &__kmp_forkjoin_lock );
@@ -2745,7 +2745,7 @@ __kmp_reallocate_team_arrays(kmp_team_t
#endif
__kmp_allocate_team_arrays(team, max_nth);
- memcpy(team->t.t_threads, oldThreads, team->t.t_nproc * sizeof (kmp_info_t*));
+ KMP_MEMCPY(team->t.t_threads, oldThreads, team->t.t_nproc * sizeof (kmp_info_t*));
__kmp_free(oldThreads);
}
@@ -3257,8 +3257,8 @@ __kmp_expand_threads(int nWish, int nNee
} while(newCapacity < minimumRequiredCapacity);
newThreads = (kmp_info_t**) __kmp_allocate((sizeof(kmp_info_t*) + sizeof(kmp_root_t*)) * newCapacity + CACHE_LINE);
newRoot = (kmp_root_t**) ((char*)newThreads + sizeof(kmp_info_t*) * newCapacity );
- memcpy(newThreads, __kmp_threads, __kmp_threads_capacity * sizeof(kmp_info_t*));
- memcpy(newRoot, __kmp_root, __kmp_threads_capacity * sizeof(kmp_root_t*));
+ KMP_MEMCPY(newThreads, __kmp_threads, __kmp_threads_capacity * sizeof(kmp_info_t*));
+ KMP_MEMCPY(newRoot, __kmp_root, __kmp_threads_capacity * sizeof(kmp_root_t*));
memset(newThreads + __kmp_threads_capacity, 0,
(newCapacity - __kmp_threads_capacity) * sizeof(kmp_info_t*));
memset(newRoot + __kmp_threads_capacity, 0,
@@ -5783,8 +5783,8 @@ __kmp_register_library_startup(
if ( tail != NULL ) {
long * flag_addr = 0;
long flag_val = 0;
- sscanf( flag_addr_str, "%p", & flag_addr );
- sscanf( flag_val_str, "%lx", & flag_val );
+ KMP_SSCANF( flag_addr_str, "%p", & flag_addr );
+ KMP_SSCANF( flag_val_str, "%lx", & flag_val );
if ( flag_addr != 0 && flag_val != 0 && strcmp( file_name, "" ) != 0 ) {
// First, check whether environment-encoded address is mapped into addr space.
// If so, dereference it to see if it still has the right value.
Added: openmp/trunk/runtime/src/kmp_safe_c_api.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_safe_c_api.h?rev=233915&view=auto
==============================================================================
--- openmp/trunk/runtime/src/kmp_safe_c_api.h (added)
+++ openmp/trunk/runtime/src/kmp_safe_c_api.h Thu Apr 2 08:27:08 2015
@@ -0,0 +1,64 @@
+
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.txt for details.
+//
+//===----------------------------------------------------------------------===//
+
+
+#ifndef KMP_SAFE_C_API_H
+#define KMP_SAFE_C_API_H
+
+//
+// Replacement for banned C API
+//
+
+// Not every unsafe call listed here is handled now, but keeping everything
+// in one place should be handy for future maintenance.
+#if KMP_OS_WINDOWS
+
+# define RSIZE_MAX_STR ( 4UL << 10 ) // 4KB
+
+// _malloca was suggested, but it is not a drop-in replacement for _alloca
+// TODO: test performance and replace with _alloca (as below)
+# define KMP_ALLOCA alloca
+//# define KMP_ALLOCA _alloca
+
+# define KMP_MEMCPY_S memcpy_s
+# define KMP_SNPRINTF sprintf_s
+# define KMP_SSCANF sscanf_s
+# define KMP_STRCPY_S strcpy_s
+# define KMP_STRNCPY_S strncpy_s
+
+// Use this only when buffer size is unknown
+# define KMP_MEMCPY(dst, src, cnt) memcpy_s(dst, cnt, src, cnt)
+
+# define KMP_STRLEN(str) strnlen_s(str, RSIZE_MAX_STR)
+
+// Use this only when buffer size is unknown
+# define KMP_STRNCPY(dst, src, cnt) strncpy_s(dst, cnt, src, cnt)
+
+// _TRUNCATE insures buffer size > max string to print.
+# define KMP_VSNPRINTF(dst, cnt, fmt, arg) vsnprintf_s(dst, cnt, _TRUNCATE, fmt, arg)
+
+#else // KMP_OS_WINDOWS
+
+// For now, these macros use the existing API.
+
+# define KMP_ALLOCA alloca
+# define KMP_MEMCPY_S(dst, bsz, src, cnt) memcpy(dst, src, cnt)
+# define KMP_SNPRINTF snprintf
+# define KMP_SSCANF sscanf
+# define KMP_STRCPY_S(dst, bsz, src) strcpy(dst, src)
+# define KMP_STRNCPY_S(dst, bsz, src, cnt) strncpy(dst, src, cnt)
+# define KMP_VSNPRINTF vsnprintf
+# define KMP_STRNCPY strncpy
+# define KMP_STRLEN strlen
+# define KMP_MEMCPY memcpy
+
+#endif // KMP_OS_WINDOWS
+
+#endif // KMP_SAFE_C_API_H
Propchange: openmp/trunk/runtime/src/kmp_safe_c_api.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: openmp/trunk/runtime/src/kmp_safe_c_api.h
------------------------------------------------------------------------------
svn:keywords = Author Date Id Rev URL
Propchange: openmp/trunk/runtime/src/kmp_safe_c_api.h
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: openmp/trunk/runtime/src/kmp_settings.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_settings.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_settings.c (original)
+++ openmp/trunk/runtime/src/kmp_settings.c Thu Apr 2 08:27:08 2015
@@ -37,7 +37,7 @@ __kmp_convert_to_double( char const * s
{
double result;
- if ( sscanf( s, "%lf", &result ) < 1 ) {
+ if ( KMP_SSCANF( s, "%lf", &result ) < 1 ) {
result = 0.0;
}
@@ -171,7 +171,7 @@ __kmp_convert_to_seconds( char const * d
if (data == NULL) return (0);
value = 0;
mult = '\0';
- nvalues = sscanf (data, "%d%c%c", &value, &mult, &extra);
+ nvalues = KMP_SSCANF (data, "%d%c%c", &value, &mult, &extra);
if (nvalues < 1) return (0);
if (nvalues == 1) mult = '\0';
if (nvalues == 3) return (-1);
@@ -221,7 +221,7 @@ __kmp_convert_to_milliseconds( char cons
if ( __kmp_str_match( "infinit", -1, data)) return (INT_MAX);
value = (double) 0.0;
mult = '\0';
- nvalues = sscanf (data, "%lf%c%c", &value, &mult, &extra);
+ nvalues = KMP_SSCANF (data, "%lf%c%c", &value, &mult, &extra);
if (nvalues < 1) return (-1);
if (nvalues == 1) mult = '\0';
if (nvalues == 3) return (-1);
@@ -272,7 +272,7 @@ __kmp_convert_to_nanoseconds( //
if ( str == NULL || str[ 0 ] == 0 ) { // No string or empty string.
return 0; // Default value.
}; // if
- rc = sscanf( str, "%lf%c%c", &value, &unit, &extra );
+ rc = KMP_SSCANF( str, "%lf%c%c", &value, &unit, &extra );
switch ( rc ) {
case 0: { // Value is not parsed.
return ~ 0;
@@ -545,9 +545,9 @@ __kmp_stg_parse_par_range(
int * out_lb,
int * out_ub
) {
- size_t len = strlen( value + 1 );
+ size_t len = KMP_STRLEN( value + 1 );
par_range_to_print = (char *) KMP_INTERNAL_MALLOC( len +1 );
- strncpy( par_range_to_print, value, len + 1);
+ KMP_STRNCPY_S( par_range_to_print, len + 1, value, len + 1);
__kmp_par_range = +1;
__kmp_par_range_lb = 0;
__kmp_par_range_ub = INT_MAX;
@@ -585,7 +585,7 @@ __kmp_stg_parse_par_range(
if (( ! __kmp_strcasecmp_with_sentinel( "range", value, '=' ))
|| ( ! __kmp_strcasecmp_with_sentinel( "incl_range", value, '=' ))) {
value = strchr( value, '=' ) + 1;
- if ( sscanf( value, "%d:%d", out_lb, out_ub ) != 2 ) {
+ if ( KMP_SSCANF( value, "%d:%d", out_lb, out_ub ) != 2 ) {
goto par_range_error;
}
*out_range = +1;
@@ -597,7 +597,7 @@ __kmp_stg_parse_par_range(
}
if ( ! __kmp_strcasecmp_with_sentinel( "excl_range", value, '=' )) {
value = strchr( value, '=' ) + 1;
- if ( sscanf( value, "%d:%d", out_lb, out_ub) != 2 ) {
+ if ( KMP_SSCANF( value, "%d:%d", out_lb, out_ub) != 2 ) {
goto par_range_error;
}
*out_range = -1;
@@ -1972,7 +1972,7 @@ __kmp_parse_affinity_proc_id_list( const
{
int len = next - env;
char *retlist = (char *)__kmp_allocate((len + 1) * sizeof(char));
- memcpy(retlist, env, len * sizeof(char));
+ KMP_MEMCPY_S(retlist, (len+1)*sizeof(char), env, len * sizeof(char));
retlist[len] = '\0';
*proclist = retlist;
}
@@ -2833,7 +2833,7 @@ __kmp_parse_place_list( const char *var,
{
int len = scan - env;
char *retlist = (char *)__kmp_allocate((len + 1) * sizeof(char));
- memcpy(retlist, env, len * sizeof(char));
+ KMP_MEMCPY_S(retlist, (len+1)*sizeof(char), env, len * sizeof(char));
retlist[len] = '\0';
*place_list = retlist;
}
@@ -3507,7 +3507,7 @@ static void
__kmp_stg_parse_schedule( char const * name, char const * value, void * data ) {
if ( value != NULL ) {
- size_t length = strlen( value );
+ size_t length = KMP_STRLEN( value );
if ( length > INT_MAX ) {
KMP_WARNING( LongValue, name );
} else {
@@ -3581,7 +3581,7 @@ __kmp_stg_parse_omp_schedule( char const
{
size_t length;
if( value ) {
- length = strlen( value );
+ length = KMP_STRLEN( value );
if( length ) {
char *comma = (char *) strchr( value, ',' );
if( value[ length - 1 ] == '"' || value[ length -1 ] == '\'')
@@ -5315,7 +5315,7 @@ __kmp_env_print() {
char const * name = block.vars[ i ].name;
char const * value = block.vars[ i ].value;
if (
- ( strlen( name ) > 4 && strncmp( name, "KMP_", 4 ) == 0 )
+ ( KMP_STRLEN( name ) > 4 && strncmp( name, "KMP_", 4 ) == 0 )
|| strncmp( name, "OMP_", 4 ) == 0
#ifdef KMP_GOMP_COMPAT
|| strncmp( name, "GOMP_", 5 ) == 0
Modified: openmp/trunk/runtime/src/kmp_stats_timing.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_stats_timing.cpp?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_stats_timing.cpp (original)
+++ openmp/trunk/runtime/src/kmp_stats_timing.cpp Thu Apr 2 08:27:08 2015
@@ -54,7 +54,7 @@ double tsc_tick_count::tick_time()
for (;*start == ' '; start++)
;
- char * end = brand + strlen(brand) - 3;
+ char * end = brand + KMP_STRLEN(brand) - 3;
uint64_t multiplier;
if (*end == 'M') multiplier = 1000LL*1000LL;
Modified: openmp/trunk/runtime/src/kmp_str.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_str.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_str.c (original)
+++ openmp/trunk/runtime/src/kmp_str.c Thu Apr 2 08:27:08 2015
@@ -112,7 +112,7 @@ __kmp_str_buf_reserve(
if ( buffer->str == NULL ) {
KMP_FATAL( MemoryAllocFailed );
}; // if
- memcpy( buffer->str, buffer->bulk, buffer->used + 1 );
+ KMP_MEMCPY_S( buffer->str, buffer->size, buffer->bulk, buffer->used + 1 );
} else {
buffer->str = (char *) KMP_INTERNAL_REALLOC( buffer->str, buffer->size );
if ( buffer->str == NULL ) {
@@ -142,7 +142,7 @@ __kmp_str_buf_detach(
if ( buffer->str == NULL ) {
KMP_FATAL( MemoryAllocFailed );
}; // if
- memcpy( buffer->str, buffer->bulk, buffer->used + 1 );
+ KMP_MEMCPY_S( buffer->str, buffer->size, buffer->bulk, buffer->used + 1 );
}; // if
} // __kmp_str_buf_detach
@@ -173,7 +173,7 @@ __kmp_str_buf_cat(
KMP_DEBUG_ASSERT( str != NULL );
KMP_DEBUG_ASSERT( len >= 0 );
__kmp_str_buf_reserve( buffer, buffer->used + len + 1 );
- memcpy( buffer->str + buffer->used, str, len );
+ KMP_MEMCPY( buffer->str + buffer->used, str, len );
buffer->str[ buffer->used + len ] = 0;
buffer->used += len;
KMP_STR_BUF_INVARIANT( buffer );
@@ -211,7 +211,7 @@ __kmp_str_buf_vprint(
__va_copy( _args, args ); // Make copy of args.
#define args _args // Substitute args with its copy, _args.
#endif // KMP_OS_WINDOWS
- rc = vsnprintf( buffer->str + buffer->used, free, format, args );
+ rc = KMP_VSNPRINTF( buffer->str + buffer->used, free, format, args );
#if ! KMP_OS_WINDOWS
#undef args // Remove substitution.
va_end( _args );
@@ -502,7 +502,7 @@ __kmp_str_format( // Allocated
// Try to format string.
va_start( args, format );
- rc = vsnprintf( buffer, size, format, args );
+ rc = KMP_VSNPRINTF( buffer, size, format, args );
va_end( args );
// No errors, string has been formatted.
Modified: openmp/trunk/runtime/src/kmp_str.h
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_str.h?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_str.h (original)
+++ openmp/trunk/runtime/src/kmp_str.h Thu Apr 2 08:27:08 2015
@@ -27,7 +27,6 @@
#if KMP_OS_WINDOWS
# define strdup _strdup
-# define snprintf _snprintf
#endif
/* some macros to replace ctype.h functions */
Modified: openmp/trunk/runtime/src/kmp_tasking.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_tasking.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_tasking.c (original)
+++ openmp/trunk/runtime/src/kmp_tasking.c Thu Apr 2 08:27:08 2015
@@ -1978,8 +1978,9 @@ __kmp_realloc_task_threads_data( kmp_inf
new_data = (kmp_thread_data_t *)
__kmp_allocate( nthreads * sizeof(kmp_thread_data_t) );
// copy old data to new data
- memcpy( (void *) new_data, (void *) old_data,
- maxthreads * sizeof(kmp_taskdata_t *) );
+ KMP_MEMCPY_S( (void *) new_data, nthreads * sizeof(kmp_thread_data_t),
+ (void *) old_data,
+ maxthreads * sizeof(kmp_taskdata_t *) );
#ifdef BUILD_TIED_TASK_STACK
// GEH: Figure out if this is the right thing to do
Modified: openmp/trunk/runtime/src/kmp_threadprivate.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_threadprivate.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_threadprivate.c (original)
+++ openmp/trunk/runtime/src/kmp_threadprivate.c Thu Apr 2 08:27:08 2015
@@ -114,7 +114,7 @@ __kmp_init_common_data( void *pc_addr, s
for (i = pc_size; i > 0; --i) {
if (*p++ != '\0') {
d->data = __kmp_allocate( pc_size );
- memcpy( d->data, pc_addr, pc_size );
+ KMP_MEMCPY( d->data, pc_addr, pc_size );
break;
}
}
@@ -137,7 +137,7 @@ __kmp_copy_common_data( void *pc_addr, s
if (d->data == 0)
memset( & addr[ offset ], '\0', d->size );
else
- memcpy( & addr[ offset ], d->data, d->size );
+ KMP_MEMCPY( & addr[ offset ], d->data, d->size );
offset += d->size;
}
}
Modified: openmp/trunk/runtime/src/kmp_utility.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_utility.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_utility.c (original)
+++ openmp/trunk/runtime/src/kmp_utility.c Thu Apr 2 08:27:08 2015
@@ -314,12 +314,12 @@ __kmp_expand_host_name( char *buffer, si
DWORD s = size;
if (! GetComputerNameA( buffer, & s ))
- strcpy( buffer, unknown );
+ KMP_STRCPY_S( buffer, size, unknown );
}
#else
buffer[size - 2] = 0;
if (gethostname( buffer, size ) || buffer[size - 2] != 0)
- strcpy( buffer, unknown );
+ KMP_STRCPY_S( buffer, size, unknown );
#endif
}
@@ -374,7 +374,7 @@ __kmp_expand_file_name( char *result, si
case 'h':
{
__kmp_expand_host_name( buffer, sizeof( buffer ) );
- strncpy( pos, buffer, end - pos + 1);
+ KMP_STRNCPY( pos, buffer, end - pos + 1);
if(*end == 0) {
while ( *pos )
++pos;
@@ -386,7 +386,7 @@ __kmp_expand_file_name( char *result, si
case 'P':
case 'p':
{
- snp_result = snprintf( pos, end - pos + 1, "%0*d", cpu_width, __kmp_dflt_team_nth );
+ snp_result = KMP_SNPRINTF( pos, end - pos + 1, "%0*d", cpu_width, __kmp_dflt_team_nth );
if(snp_result >= 0 && snp_result <= end - pos) {
while ( *pos )
++pos;
@@ -399,7 +399,7 @@ __kmp_expand_file_name( char *result, si
case 'i':
{
pid_t id = getpid();
- snp_result = snprintf( pos, end - pos + 1, "%0*d", width, id );
+ snp_result = KMP_SNPRINTF( pos, end - pos + 1, "%0*d", width, id );
if(snp_result >= 0 && snp_result <= end - pos) {
while ( *pos )
++pos;
Modified: openmp/trunk/runtime/src/z_Linux_util.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/z_Linux_util.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/z_Linux_util.c (original)
+++ openmp/trunk/runtime/src/z_Linux_util.c Thu Apr 2 08:27:08 2015
@@ -101,7 +101,7 @@ static kmp_mutex_align_t __kmp_wait_mx
static void
__kmp_print_cond( char *buffer, kmp_cond_align_t *cond )
{
- sprintf( buffer, "(cond (lock (%ld, %d)), (descr (%p)))",
+ KMP_SNPRINTF( buffer, 128, "(cond (lock (%ld, %d)), (descr (%p)))",
cond->c_cond.__c_lock.__status, cond->c_cond.__c_lock.__spinlock,
cond->c_cond.__c_waiting );
}
@@ -227,7 +227,7 @@ __kmp_affinity_bind_thread( int which )
KMP_ASSERT2(KMP_AFFINITY_CAPABLE(),
"Illegal set affinity operation when not capable");
- kmp_affin_mask_t *mask = (kmp_affin_mask_t *)alloca(__kmp_affin_mask_size);
+ kmp_affin_mask_t *mask = (kmp_affin_mask_t *)KMP_ALLOCA(__kmp_affin_mask_size);
KMP_CPU_ZERO(mask);
KMP_CPU_SET(which, mask);
__kmp_set_system_affinity(mask, TRUE);
@@ -732,7 +732,7 @@ __kmp_launch_worker( void *thr )
#if KMP_OS_LINUX || KMP_OS_FREEBSD
if ( __kmp_stkoffset > 0 && gtid > 0 ) {
- padding = alloca( gtid * __kmp_stkoffset );
+ padding = KMP_ALLOCA( gtid * __kmp_stkoffset );
}
#endif
@@ -2300,7 +2300,7 @@ __kmp_is_address_mapped( void * addr ) {
if ( rc == EOF ) {
break;
}; // if
- KMP_ASSERT( rc == 3 && strlen( perms ) == 4 ); // Make sure all fields are read.
+ KMP_ASSERT( rc == 3 && KMP_STRLEN( perms ) == 4 ); // Make sure all fields are read.
// Ending address is not included in the region, but beginning is.
if ( ( addr >= beginning ) && ( addr < ending ) ) {
@@ -2475,7 +2475,7 @@ __kmp_get_load_balance( int max )
// Construct task_path.
task_path.used = task_path_fixed_len; // Reset task_path to "/proc/".
- __kmp_str_buf_cat( & task_path, proc_entry->d_name, strlen( proc_entry->d_name ) );
+ __kmp_str_buf_cat( & task_path, proc_entry->d_name, KMP_STRLEN( proc_entry->d_name ) );
__kmp_str_buf_cat( & task_path, "/task", 5 );
task_dir = opendir( task_path.str );
@@ -2510,7 +2510,7 @@ __kmp_get_load_balance( int max )
// __kmp_str_buf_print( & stat_path, "%s/%s/stat", task_path.str, task_entry->d_name );
// but seriae of __kmp_str_buf_cat works a bit faster.
stat_path.used = stat_path_fixed_len; // Reset stat path to its fixed part.
- __kmp_str_buf_cat( & stat_path, task_entry->d_name, strlen( task_entry->d_name ) );
+ __kmp_str_buf_cat( & stat_path, task_entry->d_name, KMP_STRLEN( task_entry->d_name ) );
__kmp_str_buf_cat( & stat_path, "/stat", 5 );
// Note: Low-level API (open/read/close) is used. High-level API
Modified: openmp/trunk/runtime/src/z_Windows_NT_util.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/z_Windows_NT_util.c?rev=233915&r1=233914&r2=233915&view=diff
==============================================================================
--- openmp/trunk/runtime/src/z_Windows_NT_util.c (original)
+++ openmp/trunk/runtime/src/z_Windows_NT_util.c Thu Apr 2 08:27:08 2015
@@ -1190,7 +1190,7 @@ __kmp_launch_worker( void *arg )
#endif /* KMP_ARCH_X86 || KMP_ARCH_X86_64 */
if ( __kmp_stkoffset > 0 && gtid > 0 ) {
- padding = _alloca( gtid * __kmp_stkoffset );
+ padding = KMP_ALLOCA( gtid * __kmp_stkoffset );
}
KMP_FSYNC_RELEASING( &this_thr -> th.th_info.ds.ds_alive );
More information about the Openmp-commits
mailing list