Adhemerval Zanella
65a6211f4d
[AArch64] Improve strncmp for mutually misaligned inputs
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. The mutually misaligned inputs on aarch64 are
compared with a simple byte copy, which is not very efficient.
This patch enhances the comparison similar to strcmp by loading a
double-word at a time.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A54 (using the
new proposed memcmp input data from test_strncmp.xml):
- No noticeable change on aligned inputs or with same alignment.
- Large improvements on unaligned inputs from sizes larger than
16 bytes.
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_strncmp/1/0/0 -0.0954 -0.0954 19 17 19 17
BM_string_strncmp/2/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/3/0/0 +0.1768 +0.1768 15 18 15 18
BM_string_strncmp/4/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/5/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/6/0/0 +0.1589 +0.1589 15 18 15 18
BM_string_strncmp/7/0/0 -0.0344 -0.0344 19 18 19 18
BM_string_strncmp/8/0/0 -0.0998 -0.0998 19 17 19 17
BM_string_strncmp/9/0/0 -0.0277 -0.0277 23 22 23 22
BM_string_strncmp/10/0/0 -0.0270 -0.0270 23 22 23 22
BM_string_strncmp/11/0/0 -0.0331 -0.0331 23 22 23 22
BM_string_strncmp/12/0/0 -0.0270 -0.0270 23 22 23 22
BM_string_strncmp/13/0/0 -0.0284 -0.0284 23 22 23 22
BM_string_strncmp/14/0/0 +0.1042 +0.1042 20 22 20 22
BM_string_strncmp/15/0/0 -0.0277 -0.0277 23 22 23 22
BM_string_strncmp/16/0/0 +0.0214 +0.0215 22 22 22 22
BM_string_strncmp/24/0/0 -0.1291 -0.1291 24 21 24 21
BM_string_strncmp/32/0/0 -0.0470 -0.0470 27 26 27 26
BM_string_strncmp/40/0/0 -0.0433 -0.0433 29 28 29 28
BM_string_strncmp/48/0/0 -0.0301 -0.0301 31 30 31 30
BM_string_strncmp/56/0/0 -0.0800 -0.0800 33 31 33 31
BM_string_strncmp/64/0/0 +0.0188 +0.0188 34 34 34 34
BM_string_strncmp/72/0/0 -0.0334 -0.0334 38 37 38 37
BM_string_strncmp/80/0/0 -0.0000 -0.0000 40 40 40 40
BM_string_strncmp/88/0/0 +0.0413 +0.0413 61 64 61 64
BM_string_strncmp/96/0/0 -0.0215 -0.0216 69 67 69 67
BM_string_strncmp/104/0/0 -0.0208 -0.0208 72 70 72 70
BM_string_strncmp/112/0/0 -0.0173 -0.0173 75 74 75 74
BM_string_strncmp/120/0/0 -0.0166 -0.0166 78 77 78 77
BM_string_strncmp/128/0/0 -0.0158 -0.0158 81 80 81 80
BM_string_strncmp/136/0/0 -0.0149 -0.0149 84 83 84 83
BM_string_strncmp/144/0/0 -0.0201 -0.0201 88 86 88 86
BM_string_strncmp/160/0/0 -0.0136 -0.0136 94 93 94 93
BM_string_strncmp/176/0/0 +0.0224 +0.0224 96 98 96 98
BM_string_strncmp/192/0/0 +0.0289 +0.0289 102 105 102 105
BM_string_strncmp/208/0/0 +0.0101 +0.0101 111 112 111 112
BM_string_strncmp/224/0/0 -0.0107 -0.0107 119 118 119 118
BM_string_strncmp/240/0/0 -0.0088 -0.0088 126 125 126 125
BM_string_strncmp/256/0/0 -0.0101 -0.0101 132 131 132 131
BM_string_strncmp/512/0/0 -0.0056 -0.0056 235 233 235 233
BM_string_strncmp/1024/0/0 -0.0030 -0.0030 439 437 439 437
BM_string_strncmp/8192/0/0 -0.0431 -0.0431 3799 3635 3799 3635
BM_string_strncmp/16384/0/0 -0.0069 -0.0069 6778 6732 6779 6732
BM_string_strncmp/32768/0/0 -0.0001 -0.0002 13405 13403 13405 13403
BM_string_strncmp/65536/0/0 +0.0005 +0.0005 26968 26981 26968 26981
BM_string_strncmp/131072/0/0 -0.0057 -0.0057 53959 53650 53958 53650
BM_string_strncmp/1/4/0 -0.1352 -0.1352 12 10 12 10
BM_string_strncmp/2/4/0 +0.0020 +0.0020 15 15 15 15
BM_string_strncmp/3/4/0 -0.1560 -0.1560 20 17 20 17
BM_string_strncmp/4/4/0 +0.0296 +0.0296 22 22 22 22
BM_string_strncmp/5/4/0 +0.0573 +0.0573 22 23 22 23
BM_string_strncmp/6/4/0 -0.0340 -0.0340 25 24 25 24
BM_string_strncmp/7/4/0 +0.0185 +0.0185 26 26 26 26
BM_string_strncmp/8/4/0 -0.0050 -0.0050 27 27 27 27
BM_string_strncmp/9/4/0 -0.1294 -0.1294 28 24 28 24
BM_string_strncmp/10/4/0 +0.0109 +0.0109 29 29 29 29
BM_string_strncmp/11/4/0 -0.0000 -0.0001 30 30 30 30
BM_string_strncmp/12/4/0 +0.0055 +0.0055 50 50 50 50
BM_string_strncmp/13/4/0 -0.0249 -0.0249 51 50 51 50
BM_string_strncmp/14/4/0 -0.0289 -0.0289 53 52 53 52
BM_string_strncmp/15/4/0 -0.0205 -0.0205 55 54 55 54
BM_string_strncmp/16/4/0 -0.4616 -0.4616 57 31 57 31
BM_string_strncmp/24/4/0 -0.4871 -0.4871 72 37 72 37
BM_string_strncmp/32/4/0 -0.5549 -0.5549 87 39 87 39
BM_string_strncmp/40/4/0 -0.5964 -0.5964 103 42 103 42
BM_string_strncmp/48/4/0 -0.6647 -0.6647 118 40 118 40
BM_string_strncmp/56/4/0 -0.6551 -0.6551 134 46 134 46
BM_string_strncmp/64/4/0 -0.6609 -0.6609 145 49 145 49
BM_string_strncmp/72/4/0 -0.5709 -0.5710 164 70 164 70
BM_string_strncmp/80/4/0 -0.5929 -0.5929 180 73 180 73
BM_string_strncmp/88/4/0 -0.6051 -0.6051 195 77 195 77
BM_string_strncmp/96/4/0 -0.6160 -0.6160 210 81 210 81
BM_string_strncmp/104/4/0 -0.6199 -0.6199 223 85 223 85
BM_string_strncmp/112/4/0 -0.6293 -0.6293 240 89 240 89
BM_string_strncmp/120/4/0 -0.6439 -0.6439 255 91 255 91
BM_string_strncmp/128/4/0 -0.6493 -0.6493 271 95 271 95
BM_string_strncmp/136/4/0 -0.6704 -0.6704 287 95 287 95
BM_string_strncmp/144/4/0 -0.6744 -0.6744 302 98 302 98
BM_string_strncmp/160/4/0 -0.6700 -0.6700 333 110 333 110
BM_string_strncmp/176/4/0 -0.6821 -0.6821 364 116 364 116
BM_string_strncmp/192/4/0 -0.6887 -0.6887 394 123 394 123
BM_string_strncmp/208/4/0 -0.6949 -0.6949 425 130 425 130
BM_string_strncmp/224/4/0 -0.7069 -0.7069 456 134 456 134
BM_string_strncmp/240/4/0 -0.7042 -0.7042 486 144 486 144
BM_string_strncmp/256/4/0 -0.7043 -0.7043 514 152 514 152
BM_string_strncmp/1/0/4 +0.0227 +0.0227 14 14 14 14
BM_string_strncmp/2/0/4 +0.0442 +0.0442 15 16 15 16
BM_string_strncmp/3/0/4 +0.5829 +0.5829 17 27 17 27
BM_string_strncmp/4/0/4 -0.1593 -0.1593 22 19 22 19
BM_string_strncmp/5/0/4 -0.0516 -0.0516 23 22 23 22
BM_string_strncmp/6/0/4 -0.1684 -0.1684 25 20 25 20
BM_string_strncmp/7/0/4 +0.0170 +0.0170 26 26 26 26
BM_string_strncmp/8/0/4 +0.0006 +0.0006 27 27 27 27
BM_string_strncmp/9/0/4 +0.1272 +0.1272 25 28 25 28
BM_string_strncmp/10/0/4 +0.0108 +0.0108 29 29 29 29
BM_string_strncmp/11/0/4 -0.0001 -0.0001 30 30 30 30
BM_string_strncmp/12/0/4 -0.3557 -0.3557 50 32 50 32
BM_string_strncmp/13/0/4 -0.3370 -0.3370 51 34 51 34
BM_string_strncmp/14/0/4 -0.3444 -0.3444 53 35 53 35
BM_string_strncmp/15/0/4 +0.0946 +0.0946 51 56 51 56
BM_string_strncmp/16/0/4 -0.5203 -0.5203 53 25 53 25
BM_string_strncmp/24/0/4 -0.6109 -0.6109 72 28 72 28
BM_string_strncmp/32/0/4 -0.6934 -0.6934 88 27 88 27
BM_string_strncmp/40/0/4 -0.6833 -0.6833 103 33 103 33
BM_string_strncmp/48/0/4 -0.6973 -0.6973 118 36 118 36
BM_string_strncmp/56/0/4 -0.7116 -0.7116 134 39 134 39
BM_string_strncmp/64/0/4 -0.6017 -0.6018 149 59 149 59
BM_string_strncmp/72/0/4 -0.6268 -0.6268 164 61 164 61
BM_string_strncmp/80/0/4 -0.6409 -0.6409 179 64 179 64
BM_string_strncmp/88/0/4 -0.6465 -0.6465 195 69 195 69
BM_string_strncmp/96/0/4 -0.6551 -0.6551 210 72 210 72
BM_string_strncmp/104/0/4 -0.6662 -0.6662 227 76 227 76
BM_string_strncmp/112/0/4 -0.6700 -0.6700 240 79 240 79
BM_string_strncmp/120/0/4 -0.6740 -0.6740 256 83 256 83
BM_string_strncmp/128/0/4 -0.6862 -0.6862 271 85 271 85
BM_string_strncmp/136/0/4 -0.6883 -0.6883 287 89 287 89
BM_string_strncmp/144/0/4 -0.7031 -0.7031 297 88 297 88
BM_string_strncmp/160/0/4 -0.6985 -0.6985 333 100 333 100
BM_string_strncmp/176/0/4 -0.7082 -0.7082 364 106 364 106
BM_string_strncmp/192/0/4 -0.7223 -0.7223 396 110 396 110
BM_string_strncmp/208/0/4 -0.7135 -0.7135 421 121 421 121
BM_string_strncmp/224/0/4 -0.7194 -0.7194 455 128 455 128
BM_string_strncmp/240/0/4 -0.7233 -0.7233 487 135 487 135
BM_string_strncmp/256/0/4 -0.7239 -0.7239 516 143 516 143
BM_string_strncmp/1/4/4 +0.0224 +0.0225 21 22 21 22
BM_string_strncmp/2/4/4 -0.0001 -0.0001 22 22 22 22
BM_string_strncmp/3/4/4 -0.0001 -0.0001 22 22 22 22
BM_string_strncmp/4/4/4 -0.0435 -0.0435 22 21 22 21
BM_string_strncmp/5/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/6/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/7/4/4 -0.0117 -0.0117 27 27 27 27
BM_string_strncmp/8/4/4 -0.0118 -0.0118 27 27 27 27
BM_string_strncmp/9/4/4 -0.0117 -0.0117 27 27 27 27
BM_string_strncmp/10/4/4 +0.1447 +0.1447 23 27 23 27
BM_string_strncmp/11/4/4 -0.0062 -0.0062 27 27 27 27
BM_string_strncmp/12/4/4 -0.0454 -0.0454 28 27 28 27
BM_string_strncmp/13/4/4 -0.1507 -0.1507 29 24 29 24
BM_string_strncmp/14/4/4 -0.0003 -0.0003 29 29 29 29
BM_string_strncmp/15/4/4 -0.0002 -0.0003 29 29 29 29
BM_string_strncmp/16/4/4 +0.0047 +0.0047 29 29 29 29
BM_string_strncmp/24/4/4 -0.0104 -0.0104 31 30 31 30
BM_string_strncmp/32/4/4 -0.0290 -0.0290 33 32 33 32
BM_string_strncmp/40/4/4 -0.0189 -0.0189 34 33 34 33
BM_string_strncmp/48/4/4 -0.0059 -0.0059 36 36 36 36
BM_string_strncmp/56/4/4 +0.0000 +0.0000 39 39 39 39
BM_string_strncmp/64/4/4 +0.0000 +0.0000 42 42 42 42
BM_string_strncmp/72/4/4 +0.0000 +0.0000 45 45 45 45
BM_string_strncmp/80/4/4 +0.0391 +0.0392 65 68 65 68
BM_string_strncmp/88/4/4 -0.0090 -0.0090 71 70 71 70
BM_string_strncmp/96/4/4 -0.0034 -0.0034 74 74 74 74
BM_string_strncmp/104/4/4 -0.0482 -0.0482 77 73 77 73
BM_string_strncmp/112/4/4 +0.0387 +0.0387 77 80 77 80
BM_string_strncmp/120/4/4 -0.0072 -0.0073 84 83 84 83
BM_string_strncmp/128/4/4 -0.0071 -0.0071 87 86 87 86
BM_string_strncmp/136/4/4 +0.0366 +0.0366 86 89 86 89
BM_string_strncmp/144/4/4 -0.0068 -0.0068 93 93 93 93
BM_string_strncmp/160/4/4 -0.0064 -0.0064 100 99 100 99
BM_string_strncmp/176/4/4 -0.0063 -0.0063 106 105 106 105
BM_string_strncmp/192/4/4 -0.0012 -0.0012 112 112 112 112
BM_string_strncmp/208/4/4 -0.0098 -0.0098 119 118 119 118
BM_string_strncmp/224/4/4 -0.0050 -0.0050 125 125 125 125
BM_string_strncmp/240/4/4 -0.0060 -0.0060 132 131 132 131
BM_string_strncmp/256/4/4 -0.0046 -0.0046 138 137 138 137
[1] Commit id: 26cc4faec37a55529e5d0a39949f7b6ec81008f9
Test: bionic tests and benchmarks on aarch64.
Change-Id: Ied579d2044b4092fc95fad486af6541d1eb71dc3
2018-08-21 19:50:09 +00:00
Treehugger Robot
2019f96247
Merge "HWASan support in bionic."
2018-08-21 19:42:36 +00:00
Adhemerval Zanella
b42ff1b5c3
[AArch64] Improve strcmp performance for misaligned strings
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. Replace the simple byte-wise compare in the
misaligned case with a dword compare with page boundary checks in
place. For simplicity its uses a 4K page boundary so that it does not
have to query the actual page size on the system.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A64 (using the
new proposed memcmp input data from test_strcmp.xml):
- Small improvement for aligned arguments with sizes up to 56 bytes
(from 10% to 20%).
- Large improvements for unaligned arguments for small sizes (from
3 to 256 bytes).
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------
BM_string_strcmp/1/0/0 +0.0034 +0.0034 11 11 11 11
BM_string_strcmp/2/0/0 +0.0000 +0.0000 11 11 11 11
BM_string_strcmp/3/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/4/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/5/0/0 -0.1726 -0.1726 11 9 11 9
BM_string_strcmp/6/0/0 -0.1719 -0.1719 11 9 11 9
BM_string_strcmp/7/0/0 -0.1724 -0.1724 11 9 11 9
BM_string_strcmp/8/0/0 -0.1718 -0.1718 11 9 11 9
BM_string_strcmp/9/0/0 -0.2008 -0.2008 16 13 16 13
BM_string_strcmp/10/0/0 -0.2008 -0.2008 16 13 16 13
BM_string_strcmp/11/0/0 -0.2040 -0.2040 16 13 16 13
BM_string_strcmp/12/0/0 -0.1991 -0.1991 16 13 16 13
BM_string_strcmp/13/0/0 -0.1997 -0.1997 16 13 16 13
BM_string_strcmp/14/0/0 -0.1988 -0.1989 16 13 16 13
BM_string_strcmp/15/0/0 -0.2006 -0.2006 16 13 16 13
BM_string_strcmp/16/0/0 -0.2043 -0.2043 16 13 16 13
BM_string_strcmp/24/0/0 -0.1927 -0.1927 18 15 18 15
BM_string_strcmp/32/0/0 -0.1743 -0.1743 20 17 20 17
BM_string_strcmp/40/0/0 -0.1427 -0.1427 22 19 22 19
BM_string_strcmp/48/0/0 -0.1053 -0.1053 24 22 24 22
BM_string_strcmp/56/0/0 -0.0805 -0.0805 26 24 26 24
BM_string_strcmp/64/0/0 -0.0454 -0.0454 28 27 28 27
BM_string_strcmp/72/0/0 -0.0303 -0.0303 30 29 30 29
BM_string_strcmp/80/0/0 -0.0111 -0.0111 32 32 32 32
BM_string_strcmp/88/0/0 -0.0004 -0.0004 34 34 34 34
BM_string_strcmp/96/0/0 -0.0058 -0.0058 37 37 37 37
BM_string_strcmp/104/0/0 +0.0000 +0.0000 40 40 40 40
BM_string_strcmp/112/0/0 -0.0457 -0.0457 61 58 61 58
BM_string_strcmp/120/0/0 -0.0486 -0.0487 61 58 61 58
BM_string_strcmp/128/0/0 -0.0499 -0.0499 64 61 64 61
BM_string_strcmp/136/0/0 -0.0529 -0.0529 66 63 66 63
BM_string_strcmp/144/0/0 -0.0492 -0.0492 69 66 69 66
BM_string_strcmp/160/0/0 -0.0459 -0.0459 74 71 74 71
BM_string_strcmp/176/0/0 -0.0400 -0.0401 79 76 79 76
BM_string_strcmp/192/0/0 -0.0378 -0.0378 85 81 85 81
BM_string_strcmp/208/0/0 -0.0009 -0.0009 89 89 89 89
BM_string_strcmp/224/0/0 -0.0003 -0.0003 95 95 95 95
BM_string_strcmp/240/0/0 -0.0320 -0.0320 100 96 100 96
BM_string_strcmp/256/0/0 -0.0303 -0.0304 105 102 105 102
BM_string_strcmp/512/0/0 -0.0171 -0.0171 187 183 187 183
BM_string_strcmp/1024/0/0 -0.0091 -0.0091 350 347 350 347
BM_string_strcmp/8192/0/0 -0.0030 -0.0031 2668 2660 2668 2660
BM_string_strcmp/16384/0/0 +0.0007 +0.0007 5449 5452 5448 5452
BM_string_strcmp/32768/0/0 +0.0635 +0.0635 10868 11558 10867 11557
BM_string_strcmp/65536/0/0 -0.0017 -0.0017 21824 21786 21822 21784
BM_string_strcmp/131072/0/0 +0.0012 +0.0012 43485 43536 43480 43532
BM_string_strcmp/1/4/0 +0.7630 +0.7630 7 12 7 12
BM_string_strcmp/2/4/0 +0.9265 +0.9265 12 23 12 23
BM_string_strcmp/3/4/0 -0.0000 -0.0000 14 14 14 14
BM_string_strcmp/4/4/0 +0.0372 +0.0372 19 19 19 19
BM_string_strcmp/6/4/0 -0.0921 -0.0921 20 19 20 19
BM_string_strcmp/7/4/0 -0.0291 -0.0291 19 19 19 19
BM_string_strcmp/8/4/0 +0.0648 +0.0648 20 22 20 22
BM_string_strcmp/9/4/0 +0.0001 -0.0055 22 22 22 22
BM_string_strcmp/10/4/0 -0.1924 -0.1924 23 19 23 19
BM_string_strcmp/11/4/0 -0.2347 -0.2347 24 19 24 19
BM_string_strcmp/12/4/0 -0.2738 -0.2739 26 19 26 19
BM_string_strcmp/13/4/0 -0.3804 -0.3804 42 26 42 26
BM_string_strcmp/14/4/0 -0.3581 -0.3582 41 26 41 26
BM_string_strcmp/15/4/0 -0.3905 -0.3905 43 26 43 26
BM_string_strcmp/16/4/0 -0.4068 -0.4068 44 26 44 26
BM_string_strcmp/24/4/0 -0.4917 -0.4917 57 29 57 29
BM_string_strcmp/32/4/0 -0.5607 -0.5607 70 31 70 31
BM_string_strcmp/40/4/0 -0.5940 -0.5940 82 33 82 33
BM_string_strcmp/48/4/0 -0.5303 -0.5302 95 45 95 45
BM_string_strcmp/56/4/0 -0.4975 -0.4975 108 54 108 54
BM_string_strcmp/64/4/0 -0.5167 -0.5167 121 58 121 58
BM_string_strcmp/72/4/0 -0.5325 -0.5325 133 62 133 62
BM_string_strcmp/80/4/0 -0.5523 -0.5523 146 65 146 65
BM_string_strcmp/88/4/0 -0.5686 -0.5686 159 69 159 69
BM_string_strcmp/96/4/0 -0.5815 -0.5815 172 72 172 72
BM_string_strcmp/104/4/0 -0.5931 -0.5931 185 75 185 75
BM_string_strcmp/112/4/0 -0.6046 -0.6046 197 78 197 78
BM_string_strcmp/120/4/0 -0.6113 -0.6113 210 82 210 82
BM_string_strcmp/128/4/0 -0.6186 -0.6186 223 85 223 85
BM_string_strcmp/136/4/0 -0.6278 -0.6278 237 88 237 88
BM_string_strcmp/144/4/0 -0.6410 -0.6410 253 91 253 91
BM_string_strcmp/160/4/0 -0.6506 -0.6506 280 98 280 98
BM_string_strcmp/176/4/0 -0.6593 -0.6593 304 104 304 104
BM_string_strcmp/192/4/0 -0.6647 -0.6647 330 111 330 111
BM_string_strcmp/208/4/0 -0.6741 -0.6741 357 116 357 116
BM_string_strcmp/224/4/0 -0.6761 -0.6761 381 123 381 123
BM_string_strcmp/240/4/0 -0.6824 -0.6824 406 129 406 129
BM_string_strcmp/256/4/0 -0.6846 -0.6846 432 136 432 136
BM_string_strcmp/1/0/4 +1.0024 +1.0024 7 14 7 14
BM_string_strcmp/2/0/4 +0.1591 +0.1591 12 14 12 14
BM_string_strcmp/3/0/4 -0.0015 -0.0015 14 14 14 14
BM_string_strcmp/4/0/4 -0.0809 -0.0809 15 14 15 14
BM_string_strcmp/5/0/4 -0.1535 -0.1536 17 14 17 14
BM_string_strcmp/6/0/4 -0.2111 -0.2111 18 14 18 14
BM_string_strcmp/7/0/4 -0.2650 -0.2650 19 14 19 14
BM_string_strcmp/8/0/4 -0.3118 -0.3118 20 14 20 14
BM_string_strcmp/9/0/4 -0.1741 -0.1740 22 18 22 18
BM_string_strcmp/10/0/4 -0.2201 -0.2201 23 18 23 18
BM_string_strcmp/11/0/4 -0.2610 -0.2610 24 18 24 18
BM_string_strcmp/12/0/4 -0.2987 -0.2987 26 18 26 18
BM_string_strcmp/13/0/4 -0.5748 -0.5748 42 18 42 18
BM_string_strcmp/14/0/4 -0.5796 -0.5796 43 18 43 18
BM_string_strcmp/15/0/4 -0.6167 -0.6167 47 18 47 18
BM_string_strcmp/16/0/4 -0.6303 -0.6303 49 18 49 18
BM_string_strcmp/24/0/4 -0.6557 -0.6557 61 21 61 21
BM_string_strcmp/32/0/4 -0.6612 -0.6612 70 24 70 24
BM_string_strcmp/40/0/4 -0.6812 -0.6813 82 26 82 26
BM_string_strcmp/48/0/4 -0.6974 -0.6974 95 29 95 29
BM_string_strcmp/56/0/4 -0.7151 -0.7151 108 31 108 31
BM_string_strcmp/64/0/4 -0.5717 -0.5717 121 52 121 52
BM_string_strcmp/72/0/4 -0.5927 -0.5927 134 54 134 54
BM_string_strcmp/80/0/4 -0.6004 -0.6004 146 58 146 58
BM_string_strcmp/88/0/4 -0.6145 -0.6145 159 61 159 61
BM_string_strcmp/96/0/4 -0.6287 -0.6287 172 64 172 64
BM_string_strcmp/104/0/4 -0.6351 -0.6351 185 67 185 67
BM_string_strcmp/112/0/4 -0.6423 -0.6423 197 71 197 71
BM_string_strcmp/120/0/4 -0.6489 -0.6489 210 74 210 74
BM_string_strcmp/128/0/4 -0.6578 -0.6578 223 76 223 76
BM_string_strcmp/136/0/4 -0.6597 -0.6597 236 80 236 80
BM_string_strcmp/144/0/4 -0.6674 -0.6674 250 83 250 83
BM_string_strcmp/160/0/4 -0.6751 -0.6751 274 89 274 89
BM_string_strcmp/176/0/4 -0.6798 -0.6798 300 96 300 96
BM_string_strcmp/192/0/4 -0.6873 -0.6855 327 102 325 102
BM_string_strcmp/208/0/4 -0.6903 -0.6903 351 109 351 109
BM_string_strcmp/224/0/4 -0.6907 -0.6907 376 116 376 116
BM_string_strcmp/240/0/4 -0.6897 -0.6897 402 125 402 125
BM_string_strcmp/256/0/4 -0.6937 -0.6937 427 131 427 131
BM_string_strcmp/1/4/4 +0.0009 +0.0009 14 14 14 14
BM_string_strcmp/2/4/4 -0.2229 -0.2229 14 11 14 11
BM_string_strcmp/3/4/4 -0.2256 -0.2256 14 11 14 11
BM_string_strcmp/4/4/4 -0.2241 -0.2240 14 11 14 11
BM_string_strcmp/5/4/4 -0.2220 -0.2220 20 15 20 15
BM_string_strcmp/6/4/4 -0.2267 -0.2267 20 15 20 15
BM_string_strcmp/7/4/4 -0.2228 -0.2227 20 15 20 15
BM_string_strcmp/8/4/4 -0.2219 -0.2219 20 15 20 15
BM_string_strcmp/9/4/4 -0.2220 -0.2220 20 15 20 15
BM_string_strcmp/10/4/4 -0.2227 -0.2227 20 15 20 15
BM_string_strcmp/11/4/4 -0.2210 -0.2210 20 15 20 15
BM_string_strcmp/12/4/4 -0.2224 -0.2224 20 15 20 15
BM_string_strcmp/13/4/4 -0.1778 -0.1778 21 17 21 17
BM_string_strcmp/14/4/4 -0.1863 -0.1863 21 17 21 17
BM_string_strcmp/15/4/4 -0.1780 -0.1780 21 17 21 17
BM_string_strcmp/16/4/4 +0.0031 +0.0031 21 21 21 21
BM_string_strcmp/24/4/4 +0.0041 +0.0041 24 24 24 24
BM_string_strcmp/32/4/4 -0.0001 -0.0000 25 25 25 25
BM_string_strcmp/40/4/4 +0.0016 +0.0016 26 26 26 26
BM_string_strcmp/48/4/4 +0.0001 +0.0001 28 28 28 28
BM_string_strcmp/56/4/4 -0.0001 -0.0001 30 30 30 30
BM_string_strcmp/64/4/4 -0.0342 -0.0342 32 31 32 31
BM_string_strcmp/72/4/4 -0.0186 -0.0186 34 34 34 34
BM_string_strcmp/80/4/4 +0.0004 +0.0004 36 36 36 36
BM_string_strcmp/88/4/4 -0.0000 -0.0000 39 39 39 39
BM_string_strcmp/96/4/4 -0.0510 -0.0510 62 59 62 59
BM_string_strcmp/104/4/4 -0.0502 -0.0502 63 60 63 60
BM_string_strcmp/112/4/4 -0.0490 -0.0490 65 62 65 62
BM_string_strcmp/120/4/4 -0.0387 -0.0387 67 65 67 65
BM_string_strcmp/128/4/4 -0.0426 -0.0426 70 67 70 67
BM_string_strcmp/136/4/4 -0.0408 -0.0408 73 70 73 70
BM_string_strcmp/144/4/4 -0.0194 -0.0194 75 74 75 74
BM_string_strcmp/160/4/4 -0.0035 -0.0035 81 81 81 81
BM_string_strcmp/176/4/4 -0.0001 -0.0001 86 86 86 86
BM_string_strcmp/192/4/4 -0.0002 -0.0002 91 91 91 91
BM_string_strcmp/208/4/4 -0.0335 -0.0335 96 93 96 93
BM_string_strcmp/224/4/4 -0.0314 -0.0314 101 98 101 98
BM_string_strcmp/240/4/4 -0.0303 -0.0303 106 103 106 103
BM_string_strcmp/256/4/4 -0.0288 -0.0288 111 108 111 108
[1] Commit id: f98f2a6780d686ca3d44f8011c7823d42d9b083a
Test: bionic tests and benchmarks on aarch64.
Change-Id: I75f8948782b8bd459d21f15e75e1d420905f5e5a
2018-08-21 17:48:52 +00:00
Adhemerval Zanella
4ab56af82d
[AArch64] Optimize memcmp for medium to large sizes
...
This patch was originally written by Siddhesh Poyarekar and pushed on
cortex-strings [1]. This improved memcmp provides a fast path for
compares up to 16 bytes and then compares 16 bytes at a time, thus
optimizing loads from both sources.
Comparison on the default bionic and proposed optimized routines
shows the following performance improvements on A72 (using the
new proposed memcmp input data from test_memcmp.xml):
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_memcmp/1/0/0 -0.2074 -0.2074 15 12 15 12
BM_string_memcmp/2/0/0 -0.5193 -0.5193 31 15 31 15
BM_string_memcmp/3/0/0 -0.1291 -0.1291 19 17 19 17
BM_string_memcmp/4/0/0 -0.2889 -0.2889 17 12 17 12
BM_string_memcmp/5/0/0 -0.2606 -0.2606 15 11 15 11
BM_string_memcmp/6/0/0 -0.1656 -0.1655 17 14 17 14
BM_string_memcmp/7/0/0 -0.1721 -0.1721 19 15 19 15
BM_string_memcmp/8/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/9/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/10/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/11/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/12/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/13/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/14/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/15/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/16/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/24/0/0 -0.1209 -0.1209 15 13 15 13
BM_string_memcmp/32/0/0 -0.3228 -0.3228 20 13 20 13
BM_string_memcmp/40/0/0 -0.2937 -0.2937 22 15 22 15
BM_string_memcmp/48/0/0 -0.3299 -0.3299 23 15 23 15
BM_string_memcmp/56/0/0 -0.1845 -0.1845 24 20 24 20
BM_string_memcmp/64/0/0 -0.2247 -0.2247 26 20 26 20
BM_string_memcmp/72/0/0 -0.1947 -0.1947 27 22 27 22
BM_string_memcmp/80/0/0 -0.2275 -0.2275 28 22 28 22
BM_string_memcmp/88/0/0 -0.2360 -0.2360 29 22 29 22
BM_string_memcmp/96/0/0 -0.2675 -0.2675 31 22 31 22
BM_string_memcmp/104/0/0 -0.2559 -0.2559 32 24 32 24
BM_string_memcmp/112/0/0 -0.2787 -0.2786 33 24 33 24
BM_string_memcmp/120/0/0 -0.2599 -0.2599 34 25 34 25
BM_string_memcmp/128/0/0 -0.2860 -0.2860 35 25 35 25
BM_string_memcmp/136/0/0 -0.4708 -0.4708 53 28 53 28
BM_string_memcmp/144/0/0 -0.4719 -0.4719 53 28 53 28
BM_string_memcmp/160/0/0 -0.4680 -0.4680 56 30 56 30
BM_string_memcmp/176/0/0 -0.4645 -0.4645 60 32 60 32
BM_string_memcmp/192/0/0 -0.4641 -0.4641 63 34 63 34
BM_string_memcmp/208/0/0 -0.4555 -0.4555 66 36 66 36
BM_string_memcmp/224/0/0 -0.4558 -0.4557 69 38 69 38
BM_string_memcmp/240/0/0 -0.4534 -0.4534 72 40 72 40
BM_string_memcmp/256/0/0 -0.4463 -0.4463 75 42 75 42
BM_string_memcmp/512/0/0 -0.3077 -0.3077 126 88 126 88
BM_string_memcmp/1024/0/0 -0.3493 -0.3493 229 149 229 149
BM_string_memcmp/8192/0/0 -0.4173 -0.4173 1729 1007 1729 1007
BM_string_memcmp/16384/0/0 -0.3855 -0.3855 3377 2076 3377 2075
BM_string_memcmp/32768/0/0 -0.2968 -0.2968 6847 4815 6847 4814
BM_string_memcmp/65536/0/0 -0.2496 -0.2496 13715 10292 13714 10291
BM_string_memcmp/131072/0/0 -0.2676 -0.2676 27354 20033 27351 20031
BM_string_memcmp/262144/0/0 -0.2319 -0.2319 54604 41943 54598 41939
BM_string_memcmp/524288/0/0 -0.2359 -0.2359 109225 83460 109212 83449
BM_string_memcmp/1048576/0/0 -0.0439 -0.0439 423367 404791 423251 404686
BM_string_memcmp/2097152/0/0 -0.0023 -0.0024 762470 760701 761956 760122
BM_string_memcmp/512/4/4 -0.2853 -0.2853 125 89 125 89
BM_string_memcmp/1024/4/4 -0.3377 -0.3377 228 151 227 151
BM_string_memcmp/8192/4/4 -0.4083 -0.4083 1706 1009 1706 1009
BM_string_memcmp/16384/4/4 -0.3853 -0.3853 3376 2075 3376 2075
BM_string_memcmp/32768/4/4 -0.2974 -0.2974 6846 4810 6845 4810
BM_string_memcmp/65536/4/4 -0.2485 -0.2485 13619 10235 13618 10234
BM_string_memcmp/131072/4/4 -0.2387 -0.2387 27056 20597 27054 20595
BM_string_memcmp/512/4/0 -0.2898 -0.2898 123 88 123 88
BM_string_memcmp/1024/4/0 -0.3401 -0.3401 225 149 225 149
BM_string_memcmp/8192/4/0 -0.4167 -0.4167 1727 1007 1727 1007
BM_string_memcmp/16384/4/0 -0.3820 -0.3820 3384 2092 3384 2091
BM_string_memcmp/32768/4/0 -0.2535 -0.2535 6886 5141 6886 5140
BM_string_memcmp/65536/4/0 -0.1897 -0.1897 13850 11223 13849 11223
BM_string_memcmp/131072/4/0 -0.1972 -0.1972 27536 22106 27533 22104
BM_string_memcmp/512/0/4 -0.2854 -0.2854 125 89 125 89
BM_string_memcmp/1024/0/4 -0.3332 -0.3333 226 151 226 151
BM_string_memcmp/8192/0/4 -0.4199 -0.4199 1740 1009 1740 1009
BM_string_memcmp/16384/0/4 -0.3811 -0.3811 3383 2094 3383 2094
BM_string_memcmp/32768/0/4 -0.2409 -0.2409 6900 5238 6899 5237
BM_string_memcmp/65536/0/4 -0.1920 -0.1920 13922 11250 13921 11248
BM_string_memcmp/131072/0/4 -0.2029 -0.2029 27699 22079 27697 22077
I see similar improvements on A54 as well:
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------
BM_string_memcmp/1/0/0 -0.2074 -0.2074 15 12 15 12
BM_string_memcmp/2/0/0 -0.5193 -0.5193 31 15 31 15
BM_string_memcmp/3/0/0 -0.1291 -0.1291 19 17 19 17
BM_string_memcmp/4/0/0 -0.2889 -0.2889 17 12 17 12
BM_string_memcmp/5/0/0 -0.2606 -0.2606 15 11 15 11
BM_string_memcmp/6/0/0 -0.1656 -0.1655 17 14 17 14
BM_string_memcmp/7/0/0 -0.1721 -0.1721 19 15 19 15
BM_string_memcmp/8/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/9/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/10/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/11/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/12/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/13/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/14/0/0 -0.3048 -0.3048 15 10 15 10
BM_string_memcmp/15/0/0 -0.3040 -0.3040 15 10 15 10
BM_string_memcmp/16/0/0 -0.3041 -0.3041 15 10 15 10
BM_string_memcmp/24/0/0 -0.1209 -0.1209 15 13 15 13
BM_string_memcmp/32/0/0 -0.3228 -0.3228 20 13 20 13
BM_string_memcmp/40/0/0 -0.2937 -0.2937 22 15 22 15
BM_string_memcmp/48/0/0 -0.3299 -0.3299 23 15 23 15
BM_string_memcmp/56/0/0 -0.1845 -0.1845 24 20 24 20
BM_string_memcmp/64/0/0 -0.2247 -0.2247 26 20 26 20
BM_string_memcmp/72/0/0 -0.1947 -0.1947 27 22 27 22
BM_string_memcmp/80/0/0 -0.2275 -0.2275 28 22 28 22
BM_string_memcmp/88/0/0 -0.2360 -0.2360 29 22 29 22
BM_string_memcmp/96/0/0 -0.2675 -0.2675 31 22 31 22
BM_string_memcmp/104/0/0 -0.2559 -0.2559 32 24 32 24
BM_string_memcmp/112/0/0 -0.2787 -0.2786 33 24 33 24
BM_string_memcmp/120/0/0 -0.2599 -0.2599 34 25 34 25
BM_string_memcmp/128/0/0 -0.2860 -0.2860 35 25 35 25
BM_string_memcmp/136/0/0 -0.4708 -0.4708 53 28 53 28
BM_string_memcmp/144/0/0 -0.4719 -0.4719 53 28 53 28
BM_string_memcmp/160/0/0 -0.4680 -0.4680 56 30 56 30
BM_string_memcmp/176/0/0 -0.4645 -0.4645 60 32 60 32
BM_string_memcmp/192/0/0 -0.4641 -0.4641 63 34 63 34
BM_string_memcmp/208/0/0 -0.4555 -0.4555 66 36 66 36
BM_string_memcmp/224/0/0 -0.4558 -0.4557 69 38 69 38
BM_string_memcmp/240/0/0 -0.4534 -0.4534 72 40 72 40
BM_string_memcmp/256/0/0 -0.4463 -0.4463 75 42 75 42
BM_string_memcmp/512/0/0 -0.3077 -0.3077 126 88 126 88
BM_string_memcmp/1024/0/0 -0.3493 -0.3493 229 149 229 149
BM_string_memcmp/8192/0/0 -0.4173 -0.4173 1729 1007 1729 1007
BM_string_memcmp/16384/0/0 -0.3855 -0.3855 3377 2076 3377 2075
BM_string_memcmp/32768/0/0 -0.2968 -0.2968 6847 4815 6847 4814
BM_string_memcmp/65536/0/0 -0.2496 -0.2496 13715 10292 13714 10291
BM_string_memcmp/131072/0/0 -0.2676 -0.2676 27354 20033 27351 20031
BM_string_memcmp/262144/0/0 -0.2319 -0.2319 54604 41943 54598 41939
BM_string_memcmp/524288/0/0 -0.2359 -0.2359 109225 83460 109212 83449
BM_string_memcmp/1048576/0/0 -0.0439 -0.0439 423367 404791 423251 404686
BM_string_memcmp/2097152/0/0 -0.0023 -0.0024 762470 760701 761956 760122
BM_string_memcmp/512/4/4 -0.2853 -0.2853 125 89 125 89
BM_string_memcmp/1024/4/4 -0.3377 -0.3377 228 151 227 151
BM_string_memcmp/8192/4/4 -0.4083 -0.4083 1706 1009 1706 1009
BM_string_memcmp/16384/4/4 -0.3853 -0.3853 3376 2075 3376 2075
BM_string_memcmp/32768/4/4 -0.2974 -0.2974 6846 4810 6845 4810
BM_string_memcmp/65536/4/4 -0.2485 -0.2485 13619 10235 13618 10234
BM_string_memcmp/131072/4/4 -0.2387 -0.2387 27056 20597 27054 20595
BM_string_memcmp/512/4/0 -0.2898 -0.2898 123 88 123 88
BM_string_memcmp/1024/4/0 -0.3401 -0.3401 225 149 225 149
BM_string_memcmp/8192/4/0 -0.4167 -0.4167 1727 1007 1727 1007
BM_string_memcmp/16384/4/0 -0.3820 -0.3820 3384 2092 3384 2091
BM_string_memcmp/32768/4/0 -0.2535 -0.2535 6886 5141 6886 5140
BM_string_memcmp/65536/4/0 -0.1897 -0.1897 13850 11223 13849 11223
BM_string_memcmp/131072/4/0 -0.1972 -0.1972 27536 22106 27533 22104
BM_string_memcmp/512/0/4 -0.2854 -0.2854 125 89 125 89
BM_string_memcmp/1024/0/4 -0.3332 -0.3333 226 151 226 151
BM_string_memcmp/8192/0/4 -0.4199 -0.4199 1740 1009 1740 1009
BM_string_memcmp/16384/0/4 -0.3811 -0.3811 3383 2094 3383 2094
BM_string_memcmp/32768/0/4 -0.2409 -0.2409 6900 5238 6899 5237
BM_string_memcmp/65536/0/4 -0.1920 -0.1920 13922 11250 13921 11248
BM_string_memcmp/131072/0/4 -0.2029 -0.2029 27699 22079 27697 22077
[1] Commit id: f77e4c932b4fd65177b57dd5e220bd17fb4037d6
Test: bionic tests and benchmarks on aarch64.
Change-Id: I2791e2b20d1c0ad429e8e5a41d3e47b1ac02c921
2018-08-21 17:48:12 +00:00
Evgenii Stepanov
be551f596f
HWASan support in bionic.
...
* Allow sanitization of libc (excluding existing global sanitizers)
and disallow sanitization of linker. The latter has not been
necessary before because HWASan is the first sanitizer to support
static binaries (with the exception of CFI, which is not used
globally).
* Static binary startup: initialize HWASan shadow very early so that
almost entire libc can be sanitized. The rest of initialization is
done in a global constructor; until that is done sanitized code can
run but can't report errors (will simply crash with SIGTRAP).
* Switch malloc_common from je_* to __sanitizer_*.
* Call hwasan functions when entering and leaving threads. We can not
intercept pthread_create when libc depends on libclang_rt.hwasan.
An alternative to this would be a callback interface like requested
here:
https://sourceware.org/glibc/wiki/ThreadPropertiesAPI
All of the above is behind a compile-time check
__has_feature(hwaddress_sanitizer). This means that HWASan actually
requires libc to be instrumented, and would not work otherwise. It's
an implementation choice that greatly reduces complexity of the tool.
Instrumented libc also guarantees that hwasan is present and
initialized in every process, which allows piecemeal sanitization
(i.e. library w/o main executable, or even individual static
libraries), unlike ASan.
Change-Id: If44c46b79b15049d1745ba46ec910ae4f355d19c
2018-08-21 00:15:47 +00:00
Christopher Ferris
ad935c8139
Add more descriptive text around app starting.
...
Test: NA
Change-Id: If3bcf060b11ec08835863236b0a1408aebe43355
2018-08-16 17:57:23 -07:00
Christopher Ferris
841c9c1ce2
Merge "Add new malloc benchmarks."
2018-08-16 01:09:17 +00:00
George Burgess IV
fa5410fdb7
libc: enable -Wimplicit-fallthrough
...
libc had some -Wimplicit-fallthrough warnings. They all seem to be
benign. We're trying to enable this flag globally, so we need to
annotate these breaks here.
Bug: 112564944
Test: Builds
Change-Id: I5afae694cc4cf26ad1a61e2c8ae91f00cda7c733
2018-08-15 10:11:08 -07:00
Christopher Ferris
0dc784431b
Add new malloc benchmarks.
...
This runs through the trace of the allocations in a sql benchmark app
executed in the benchmark thread.
Add one benchmark with decay time set to 0 and another with decay time
set to 1.
Include a script that can generate a header file that can be used to
regenerate the data.
Bug: 112317428
Test: Builds, ran unit tests, ran benchmarks.
Change-Id: I62e287cc06b74b74bcc5a4bbee71b0fac0a196fd
2018-08-14 16:01:58 -07:00
Bernie Innocenti
817f578bf4
Merge "Clear the resolver timeout when setting default __res_params"
2018-08-10 02:15:20 +00:00
Treehugger Robot
fce5dae8a3
Merge "Make the resolver retry timeout configurable via __res_params"
2018-08-10 01:55:09 +00:00
Treehugger Robot
a2650eaf1c
Merge "seccomp: Allow read(2) and getdents(2) in x86_64 for UBSan's sake"
2018-08-09 23:47:14 +00:00
Luis Hector Chavez
ea82982b87
seccomp: Allow read(2) and getdents(2) in x86_64 for UBSan's sake
...
This change allows the use of read(2) and getdents(2) so that UBSan can
work correctly on x86_64.
Bug: 111999822
Test: CtsWrapWrapDebugTestCases
Change-Id: I44aac17fffdffc5c3f5d87fb3d876af28c8044b2
2018-08-09 12:32:01 -07:00
Bernie Innocenti
96c619f7db
Clear the resolver timeout when setting default __res_params
...
This is currently a non-functional change, because base_timeout_msec is
never set to a non-default value (other than in unit tests).
Test: netd_unit_test --gtest_filter='ResolverTest.*'
Change-Id: I21989bab5cc9f55ee1392e30965eb405d720a28e
2018-08-09 17:58:35 +09:00
Elliott Hughes
b7b2884a21
Merge "Reland "Retire GCC FORTIFY.""
2018-08-08 15:26:37 +00:00
Bernie Innocenti
58d13622a5
Make the resolver retry timeout configurable via __res_params
...
The primary motivation is speeding up tests for non-responsive
nameservers. It's also base infrastructure for future work to compute
retry timeouts dynamically.
Using default timeouts (RES_TIMEOUT = 5 seconds):
ResolverTest.GetAddrInfoV6_nonresponsive (45141 ms)
With base_timeout_msec=100:
ResolverTest.GetAddrInfoV6_nonresponsive (1264 ms)
Test: executed unsubmitted test from aosp/713993
Change-Id: Id902089ca69ca8d28032180ba51e8937262ef490
2018-08-08 15:45:19 +09:00
Treehugger Robot
f2fb3b11c6
Merge "seccomp: Generate the policy files at compile time"
2018-08-07 13:17:42 +00:00
Josh Gao
e16082f717
fdsan: expose the address of the table to the platform.
...
Let the debuggerd handler get the address of the fdsan table so that
crash_dump can parse it and print it out in tombstones.
Test: debuggerd `pidof adbd`
Change-Id: I2297200cae52d0ff24479dba55d1ab4938583501
2018-08-06 18:48:52 -07:00
Josh Gao
e6dab7b55f
fdsan: minor refactoring.
...
Make it easier for other code to parse the fdsan table themselves by
making it so that they can include the bionic_fdsan.h header to get a
struct definition with the layout without bringing in other
dependencies.
Test: treehugger
Change-Id: I3583ef113991234aa83cd193a4eb139ad06737c7
2018-08-06 18:47:29 -07:00
Josh Gao
4b7c1cc13f
fdsan: enable by default.
...
Test: adb shell crasher fdsan_file
Change-Id: I6be0f7372ddb9d622a0bd8d1eeb80a4f747c99e3
2018-08-06 15:11:08 -07:00
Elliott Hughes
f80e3f4413
Merge "Make all popen(3) file descriptors O_CLOEXEC."
2018-08-06 18:43:40 +00:00
Luis Hector Chavez
fa09b3c754
seccomp: Generate the policy files at compile time
...
This change avoids having to run the genseccomp.py script every time a
policy file is edited, and instead generates these files at
compile-time.
Bug: None
Test: m
Test: find out/soong/ -name x86_64_global_policy.cpp # Shows files
Test: generated policies are equivalent to original policies
Change-Id: I12461fe0c5fb02c008c1b2503fbb994b8aa2f56b
2018-08-06 11:10:25 -07:00
Treehugger Robot
ea6aff66fa
Merge "genseccomp.py: Add a way to better find the clang prebuilt"
2018-08-04 02:54:36 +00:00
Elliott Hughes
9b6fefd89b
Make all popen(3) file descriptors O_CLOEXEC.
...
POSIX says "The popen() function shall ensure that any streams from
previous popen() calls that remain open in the parent process are closed
in the new child process". It doesn't appear to disallow all popen(3) file
descriptors from being O_CLOEXEC, and it's not obvious why anyone would want
them inherited. Let's see if we can make the stricter guarantee...
Bug: N/A
Test: ran tests
Change-Id: I2c85170d730b211637afb8ba10df150ca3237262
2018-08-03 15:54:18 -07:00
Josh Gao
08b7a4008f
fdsan: improve errors some more.
...
Add handling for all 4 cases of failure of exchange_owner_tag. Also,
mask off and sign extend the type byte of the owner tag, and add a
test for that.
Test: bionic_unit_tests
Change-Id: Ic7c49f0ee5498623f05c49b5b4cd055db48a4b9f
2018-08-03 15:03:41 -07:00
Yi Kong
35bb46188c
Merge "Modernize codebase by replacing NULL with nullptr"
2018-08-03 20:07:44 +00:00
Luis Hector Chavez
fd3f6d7126
genseccomp.py: Add a way to better find the clang prebuilt
...
This change makes it possible to invoke this tool without having to
fiddle with the path.
Bug: None
Test: ./bionic/libc/tools/genseccomp.py # Succeeded
Change-Id: Ib24d70abc973fe774cda4209e46a5b66ae7617be
2018-08-03 12:57:21 -07:00
Luis Hector Chavez
ef1a34c85d
seccomp: Allow readlink(2) in x86_64 for UBSan's sake
...
This change allows the use of readlink(2) so that UBSan can work
correctly on x86_64.
Bug: 111999822
Test: CtsWrapWrapDebugTestCases
Change-Id: I7f3013c712e3e41567a0d8e1bbb9d378c04b4433
2018-08-03 10:36:02 -07:00
Yi Kong
32bc0fcf69
Modernize codebase by replacing NULL with nullptr
...
Fixes -Wzero-as-null-pointer-constant warning.
Test: m
Bug: 68236239
Change-Id: I5b4123bc6709641315120a191e36cc57541349b2
2018-08-02 18:09:44 -07:00
Ryan Prichard
6fdfd92e56
Use LIBC_Q for LIBC_PRIVATE / LIBC_PLATFORM
...
Bug: none
Test: run bionic unit tests
Change-Id: I59794597db9cbd23c917498e5e82296a379c8fb5
2018-07-31 00:17:02 -07:00
Ryan Prichard
c1c8a188b2
Fix arm32/64 dynamic TLS relocations
...
arm32: Add a relocation for TLS descriptors (e.g. gcc's
-mtls-dialect=gnu2).
arm64: Add all the dynamic TLS relocations.
Two of the relocations here are obsolete:
- ARM documents R_ARM_SWI24 as an obsolete static relocation without
saying what it did. It's been replaced by R_ARM_TLS_DESC, a dynamic
relocation. We could probably remove it, but I left it because arm32
is old, and I see the macro in other libc's. It's probably analogous
to R_ARM_THM_SWI8, which is also an obsolete relocation reserved for
a future dynamic relocation.
- I couldn't find any ARM documentation at all for
R_AARCH64_TLS_DTPREL32. It seems to have been part of three
relocations:
- R_AARCH64_TLS_DTPREL32 1031
- R_AARCH64_TLS_DTPMOD32 1032
- R_AARCH64_TLS_TPREL32 1033
Bug: b/78026329
Test: run bionic unit tests
Change-Id: I5e7432f6e3e906152dc489be5e812fd8defcbafd
2018-07-30 23:49:19 -07:00
Treehugger Robot
3bf897e12d
Merge "Update to FreeBSD libm r336665."
2018-07-25 20:11:28 +00:00
Treehugger Robot
3e98d88823
Merge "fdsan: improve diagnostics."
2018-07-25 00:40:29 +00:00
Treehugger Robot
439bb1d048
Merge "Fixup an out of date comment."
2018-07-24 23:09:57 +00:00
Tom Cherry
576f525302
Merge "Add recovery_available: true to libseccomp_policy"
2018-07-24 23:04:21 +00:00
Tom Cherry
a06c49c37f
Add recovery_available: true to libseccomp_policy
...
Init needs this in order to be built in Android.bp
Test: build
Change-Id: I0ce67a3c84cf476b28be039b9c9b345bc381de7b
2018-07-24 13:36:59 -07:00
Tom Cherry
0fe2203309
Fixup an out of date comment.
...
Test: n/a
Change-Id: Ieb5d18d479becb8c92cbf71a8bb7cd67f7c27dba
2018-07-24 13:34:34 -07:00
Elliott Hughes
7763ab4bcb
Use the FreeBSD __CONCAT.
...
We had the NetBSD __CONCAT macro, despite the fact that our only callers
are FreeBSD code. The FreeBSD libm changes in FreeBSD r336665 require
the FreeBSD implementation rather than the NetBSD one.
Unfortunately for me, that libm code is built in the NDK build too,
where it's built against the NDK's <sys/cdefs.h>. So I need to update
__CONCAT first before I can update the libm code.
Bug: http://b/111710419
Test: ran tests
Change-Id: I70e76e4caab2929c939bfb7009df9fe79d26806a
2018-07-24 12:45:58 -07:00
Elliott Hughes
0d1a8a5b0b
Reland "Retire GCC FORTIFY."
...
This reverts commit 4dbe8fc22f
.
The angler/bullhead builds are now dead, so this can go in.
Bug: https://issuetracker.google.com/74404306
Change-Id: I130cdcd6375b6125cb8a1e63a4a540b0dbe41ceb
2018-07-24 19:36:51 +00:00
Elliott Hughes
4dbe8fc22f
Revert "Retire GCC FORTIFY."
...
This reverts commit 067bdc9546
.
The angler/bullhead builds still use GCC, so I'll wait until they're turned down.
Bug: https://issuetracker.google.com/74404306
Change-Id: I777b08dd6ab5250d532b4b5cc56e9a790c13db20
2018-07-24 18:54:16 +00:00
Elliott Hughes
ab52807685
Update to FreeBSD libm r336665.
...
This reverts commit 253a830631
and moves
us forward to a revision that contains fixes for the problem with the
previous attempt.
This also makes sincos(3)/sincosf(3)/sincosl(3) available to `_BSD_SOURCE`
as well as `_GNU_SOURCE`.
The new FreeBSD libm code requires the FreeBSD `__CONCAT` macro, and all
our existing callers are FreeBSD too, so update that.
There's also an assumption that <complex.h> drags in <math.h> which isn't
true for us, so work around that with `-include` in the makefile. This
then causes clang to recognize a bug -- returning from a void function --
in our fake (LP32) sincosl(3), so fix that too.
Bug: http://b/111710419
Change-Id: I84703ad844f8afde6ec6b11604ab3c096ccb62c3
Test: ran tests
2018-07-24 10:36:00 -07:00
Josh Gao
fe380887c8
fdsan: improve diagnostics.
...
Generate a tombstone instead of just a log message when warning. Also,
don't use async_safe_fatal_va_list when we're not calling abort, as
this will permanently set the abort message.
Test: bionic_unit_tests
Test: setprop debug.fdsan warn; crasher fdsan_file
Change-Id: I2fe271da9004c8fd1f50ad3d8280be254eeaf656
2018-07-23 18:36:16 -07:00
Elliott Hughes
067bdc9546
Retire GCC FORTIFY.
...
NDK r18 (which removes GCC) is about to ship. We don't need this any more.
The immediate motivation for removing this right now is that the test
fails whenever we add Clang-only flags to the build system.
While we're here, clean up <stdatomic.h> too.
Bug: https://issuetracker.google.com/74404306
Test: ran tests
Change-Id: Iaad5d634d1ba76f0b6f19ad32cc27b2533771a4a
2018-07-23 17:22:58 -07:00
Andreas Gampe
253a830631
Revert "Update to FreeBSD libm r336523."
...
This reverts commit f86ee10278
.
Incorrect result for fmodf(3.0f, 0f) = 1.0f breaks ART tests.
Bug: 111710419
Test: art/test/testrunner/testrunner.py -b -t 436-rem-float --target
Change-Id: I7eae68fb92740db33415d16418447bcbbd98ecba
2018-07-21 12:23:03 -07:00
Josh Gao
e899e798b8
Mark fdsan functions as __attribute__((weak)).
...
Make it so that users can check for availability of fdsan at runtime.
Bug: http://b/110100358
Test: treehugger
Test: make libjnitest
Change-Id: Ief3054161f3e255d048370975f7dd90cf7ad3687
2018-07-20 13:51:28 -07:00
Treehugger Robot
170540398a
Merge "Update to FreeBSD libm r336523."
2018-07-20 20:21:33 +00:00
Treehugger Robot
402ca1130b
Merge "Introduce api to track fd ownership in libc."
2018-07-19 23:43:37 +00:00
Elliott Hughes
f86ee10278
Update to FreeBSD libm r336523.
...
This includes an ld128 powl, plus the clog* and cpow* families.
Also teach the NOTICE generator to strip SPDX-License-Identifier lines.
Bug: N/A
Test: ran tests
Change-Id: Ic8289d1253666a19468a4088884cf7540f1ec66d
2018-07-19 16:17:06 -07:00
Josh Gao
f6e5b58260
Introduce api to track fd ownership in libc.
...
Add two functions to allow objects that own a file descriptor to
enforce that only they can close their file descriptor.
Use them in FILE* and DIR*.
Bug: http://b/110100358
Test: bionic_unit_tests
Test: aosp/master boots without errors
Test: treehugger
Change-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45
2018-07-19 14:28:54 -07:00
Florian Mayer
24ded2df58
Merge "Fix malloc_hooks for hooks_write_malloc_leak_info."
2018-07-19 09:10:56 +00:00