12
12
#include <stdio.h>
13
13
#include <stdlib.h>
14
14
#include <string.h>
15
- #include <signal.h>
16
15
#ifdef _MSC_VER
17
16
/* For _alloca. */
18
17
#include <malloc.h>
@@ -63,7 +62,6 @@ static const char *getPNSStr(ProfileNameSpecifier PNS) {
63
62
}
64
63
65
64
#define MAX_PID_SIZE 16
66
- #define MAX_SIGNAL_HANDLERS 16
67
65
/* Data structure holding the result of parsed filename pattern. */
68
66
typedef struct lprofFilename {
69
67
/* File name string possibly with %p or %h specifiers. */
@@ -85,14 +83,11 @@ typedef struct lprofFilename {
85
83
* 2 profile data files. %1m is equivalent to %m. Also %m specifier
86
84
* can only appear once at the end of the name pattern. */
87
85
unsigned MergePoolSize ;
88
- char ExitOnSignals [MAX_SIGNAL_HANDLERS ];
89
- unsigned NumExitSignals ;
90
86
ProfileNameSpecifier PNS ;
91
87
} lprofFilename ;
92
88
93
89
COMPILER_RT_WEAK lprofFilename lprofCurFilename = {0 , 0 , 0 , 0 , {0 },
94
- {0 }, 0 , 0 , 0 , {0 }, 0 ,
95
- PNS_unknown };
90
+ {0 }, 0 , 0 , 0 , PNS_unknown };
96
91
97
92
static int getCurFilenameLength ();
98
93
static const char * getCurFilename (char * FilenameBuf , int ForceUseBuf );
@@ -291,19 +286,6 @@ static void truncateCurrentFile(void) {
291
286
fclose (File );
292
287
}
293
288
294
- static void exitSignalHandler (int sig ) {
295
- (void )sig ;
296
- exit (0 );
297
- }
298
-
299
- static void installExitSignalHandlers (void ) {
300
- unsigned I ;
301
- for (I = 0 ; I < lprofCurFilename .NumExitSignals ; ++ I ) {
302
- lprofInstallSignalHandler (lprofCurFilename .ExitOnSignals [I ],
303
- exitSignalHandler );
304
- }
305
- }
306
-
307
289
static const char * DefaultProfileName = "default.profraw" ;
308
290
static void resetFilenameToDefault (void ) {
309
291
if (lprofCurFilename .FilenamePat && lprofCurFilename .OwnsFilenamePat ) {
@@ -314,25 +296,14 @@ static void resetFilenameToDefault(void) {
314
296
lprofCurFilename .PNS = PNS_default ;
315
297
}
316
298
317
- static int isDigit (char C ) { return C >= '0' && C <= '9' ; }
318
-
319
- static int isNonZeroDigit (char C ) { return C >= '1' && C <= '9' ; }
320
-
321
299
static int containsMergeSpecifier (const char * FilenamePat , int I ) {
322
300
return (FilenamePat [I ] == 'm' ||
323
- (isNonZeroDigit ( FilenamePat [I ]) &&
301
+ (FilenamePat [I ] >= '1' && FilenamePat [ I ] <= '9' &&
324
302
/* If FilenamePat[I] is not '\0', the next byte is guaranteed
325
303
* to be in-bound as the string is null terminated. */
326
304
FilenamePat [I + 1 ] == 'm' ));
327
305
}
328
306
329
- static int containsExitOnSignalSpecifier (const char * FilenamePat , int I ) {
330
- if (!isNonZeroDigit (FilenamePat [I ]))
331
- return 0 ;
332
- return (FilenamePat [I + 1 ] == 'x' ) ||
333
- (isDigit (FilenamePat [I + 1 ]) && FilenamePat [I + 2 ] == 'x' );
334
- }
335
-
336
307
/* Parses the pattern string \p FilenamePat and stores the result to
337
308
* lprofcurFilename structure. */
338
309
static int parseFilenamePattern (const char * FilenamePat ,
@@ -341,7 +312,6 @@ static int parseFilenamePattern(const char *FilenamePat,
341
312
char * PidChars = & lprofCurFilename .PidChars [0 ];
342
313
char * Hostname = & lprofCurFilename .Hostname [0 ];
343
314
int MergingEnabled = 0 ;
344
- char SignalNo ;
345
315
346
316
/* Clean up cached prefix and filename. */
347
317
if (lprofCurFilename .ProfilePathPrefix )
@@ -394,22 +364,6 @@ static int parseFilenamePattern(const char *FilenamePat,
394
364
lprofCurFilename .MergePoolSize = FilenamePat [I ] - '0' ;
395
365
I ++ ; /* advance to 'm' */
396
366
}
397
- } else if (containsExitOnSignalSpecifier (FilenamePat , I )) {
398
- if (lprofCurFilename .NumExitSignals == MAX_SIGNAL_HANDLERS ) {
399
- PROF_WARN ("%%x specifier has been specified too many times in %s.\n" ,
400
- FilenamePat );
401
- return -1 ;
402
- }
403
- /* Grab the signal number. */
404
- SignalNo = FilenamePat [I ] - '0' ;
405
- I ++ ; /* advance to either another digit, or 'x' */
406
- if (FilenamePat [I ] != 'x' ) {
407
- SignalNo = (SignalNo * 10 ) + (FilenamePat [I ] - '0' );
408
- I ++ ; /* advance to 'x' */
409
- }
410
- lprofCurFilename .ExitOnSignals [lprofCurFilename .NumExitSignals ] =
411
- SignalNo ;
412
- ++ lprofCurFilename .NumExitSignals ;
413
367
}
414
368
}
415
369
@@ -453,7 +407,6 @@ static void parseAndSetFilename(const char *FilenamePat,
453
407
}
454
408
455
409
truncateCurrentFile ();
456
- installExitSignalHandlers ();
457
410
}
458
411
459
412
/* Return buffer length that is required to store the current profile
@@ -462,24 +415,18 @@ static void parseAndSetFilename(const char *FilenamePat,
462
415
#define SIGLEN 24
463
416
static int getCurFilenameLength () {
464
417
int Len ;
465
- unsigned I ;
466
418
if (!lprofCurFilename .FilenamePat || !lprofCurFilename .FilenamePat [0 ])
467
419
return 0 ;
468
420
469
421
if (!(lprofCurFilename .NumPids || lprofCurFilename .NumHosts ||
470
- lprofCurFilename .MergePoolSize || lprofCurFilename . NumExitSignals ))
422
+ lprofCurFilename .MergePoolSize ))
471
423
return strlen (lprofCurFilename .FilenamePat );
472
424
473
425
Len = strlen (lprofCurFilename .FilenamePat ) +
474
426
lprofCurFilename .NumPids * (strlen (lprofCurFilename .PidChars ) - 2 ) +
475
427
lprofCurFilename .NumHosts * (strlen (lprofCurFilename .Hostname ) - 2 );
476
428
if (lprofCurFilename .MergePoolSize )
477
429
Len += SIGLEN ;
478
- for (I = 0 ; I < lprofCurFilename .NumExitSignals ; ++ I ) {
479
- Len -= 3 ; /* Drop the '%', signal number, and the 'x'. */
480
- if (lprofCurFilename .ExitOnSignals [I ] >= 10 )
481
- -- Len ; /* Drop the second digit of the signal number. */
482
- }
483
430
return Len ;
484
431
}
485
432
@@ -496,7 +443,7 @@ static const char *getCurFilename(char *FilenameBuf, int ForceUseBuf) {
496
443
return 0 ;
497
444
498
445
if (!(lprofCurFilename .NumPids || lprofCurFilename .NumHosts ||
499
- lprofCurFilename .MergePoolSize || lprofCurFilename . NumExitSignals )) {
446
+ lprofCurFilename .MergePoolSize )) {
500
447
if (!ForceUseBuf )
501
448
return lprofCurFilename .FilenamePat ;
502
449
@@ -529,9 +476,6 @@ static const char *getCurFilename(char *FilenameBuf, int ForceUseBuf) {
529
476
J += S ;
530
477
if (FilenamePat [I ] != 'm' )
531
478
I ++ ;
532
- } else if (containsExitOnSignalSpecifier (FilenamePat , I )) {
533
- while (FilenamePat [I ] != 'x' )
534
- ++ I ;
535
479
}
536
480
/* Drop any unknown substitutions. */
537
481
} else
0 commit comments