David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 1 | Consider compiling test.c, with this content: |
| 2 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV |
| 3 | #include "test.h" |
| 4 | |
| 5 | int |
| 6 | main (int argc, char **argv) |
| 7 | { |
| 8 | int a = PLUS (1,2); |
| 9 | int b = PLUS (3,4); |
| 10 | return 0; |
| 11 | } |
| 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 13 | |
| 14 | ...where test.h has this content: |
| 15 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV |
| 16 | extern int foo (); |
| 17 | |
| 18 | #define PLUS(A, B) A + B |
| 19 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 20 | |
| 21 | |
| 22 | The undocumented -fdump-internal-locations option outputs this information |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 23 | to stderr, showing what each location_t value means. Source code |
| 24 | lines are quoted, showing both per-line location_t values and |
| 25 | per-line&column location_t values (written vertically under the |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 26 | corresponding character of source code). |
| 27 | |
| 28 | VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV |
| 29 | RESERVED LOCATIONS |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 30 | location_t interval: 0 <= loc < 2 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 31 | |
| 32 | ORDINARY MAP: 0 |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 33 | location_t interval: 32 <= loc < 64 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 34 | file: test.c |
| 35 | starting at line: 1 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 36 | column and range bits: 12 |
| 37 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 38 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 39 | reason: 0 (LC_ENTER) |
| 40 | included from location: 0 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 41 | test.c: 1|loc: 32|#include "test.h" |
| 42 | |69269258258148147 |
| 43 | |46802468024680246 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 44 | |
| 45 | ORDINARY MAP: 1 |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 46 | location_t interval: 64 <= loc < 96 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 47 | file: <built-in> |
| 48 | starting at line: 0 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 49 | column and range bits: 0 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 50 | column bits: 0 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 51 | range bits: 0 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 52 | reason: 2 (LC_RENAME) |
| 53 | included from location: 0 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 54 | |
| 55 | ORDINARY MAP: 2 |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 56 | location_t interval: 96 <= loc < 128 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 57 | file: <command-line> |
| 58 | starting at line: 0 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 59 | column and range bits: 0 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 60 | column bits: 0 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 61 | range bits: 0 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 62 | reason: 2 (LC_RENAME) |
| 63 | included from location: 0 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 64 | |
| 65 | ORDINARY MAP: 3 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 66 | location_t interval: 128 <= loc < 250240 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 67 | file: /usr/include/stdc-predef.h |
| 68 | starting at line: 1 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 69 | column and range bits: 12 |
| 70 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 71 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 72 | reason: 0 (LC_ENTER) |
| 73 | included from location: 127 (in ordinary map 2) |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 74 | (contents of /usr/include/stdc-predef.h snipped for brevity) |
| 75 | |
| 76 | ORDINARY MAP: 4 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 77 | location_t interval: 250240 <= loc < 250272 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 78 | file: <command-line> |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 79 | starting at line: 32 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 80 | column and range bits: 12 |
| 81 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 82 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 83 | reason: 1 (LC_LEAVE) |
| 84 | included from location: 0 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 85 | |
| 86 | ORDINARY MAP: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 87 | location_t interval: 250272 <= loc < 254368 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 88 | file: test.c |
| 89 | starting at line: 1 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 90 | column and range bits: 12 |
| 91 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 92 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 93 | reason: 2 (LC_RENAME) |
| 94 | included from location: 0 |
| 95 | test.c: 1|loc:250272|#include "test.h" |
| 96 | |00000000000000000 |
| 97 | |33344445556667778 |
| 98 | |03603692692582581 |
| 99 | |46802468024680246 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 100 | |
| 101 | ORDINARY MAP: 6 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 102 | location_t interval: 254368 <= loc < 266720 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 103 | file: test.h |
| 104 | starting at line: 1 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 105 | column and range bits: 12 |
| 106 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 107 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 108 | reason: 0 (LC_ENTER) |
| 109 | included from location: 250272 (in ordinary map 5) |
| 110 | test.h: 1|loc:254368|extern int foo (); |
| 111 | |444444444444444444 |
| 112 | |444455566677788899 |
| 113 | |036926925825814814 |
| 114 | |024680246802468024 |
| 115 | test.h: 2|loc:258464| |
| 116 | | |
| 117 | | |
| 118 | | |
| 119 | | |
| 120 | test.h: 3|loc:262560|#define PLUS(A, B) A + B |
| 121 | |222222222222233333333333 |
| 122 | |566677788899900011122223 |
| 123 | |925825814814704703603692 |
| 124 | |246802468024680246802468 |
| 125 | test.h: 4|loc:266656| |
| 126 | | |
| 127 | | |
| 128 | | |
| 129 | | |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 130 | |
| 131 | ORDINARY MAP: 7 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 132 | location_t interval: 266720 <= loc < 299520 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 133 | file: test.c |
| 134 | starting at line: 2 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 135 | column and range bits: 12 |
| 136 | column bits: 7 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 137 | range bits: 5 |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 138 | reason: 1 (LC_LEAVE) |
| 139 | included from location: 0 |
| 140 | test.c: 2|loc:266720| |
| 141 | | |
| 142 | | |
| 143 | | |
| 144 | | |
| 145 | test.c: 3|loc:270816|int |
| 146 | |000 |
| 147 | |889 |
| 148 | |481 |
| 149 | |802 |
| 150 | test.c: 4|loc:274912|main (int argc, char **argv) |
| 151 | |4455555555555555555555555555 |
| 152 | |9900011122223334445556667778 |
| 153 | |4704703603692692582581481470 |
| 154 | |4680246802468024680246802468 |
| 155 | test.c: 5|loc:279008|{ |
| 156 | |9 |
| 157 | |0 |
| 158 | |4 |
| 159 | |0 |
| 160 | test.c: 6|loc:283104| int a = PLUS (1,2); |
| 161 | |333333333333333333333 |
| 162 | |112222333444555666777 |
| 163 | |360369269258258148147 |
| 164 | |680246802468024680246 |
| 165 | test.c: 7|loc:287200| int b = PLUS (3,4); |
| 166 | |777777777777777777777 |
| 167 | |222333444555666777888 |
| 168 | |369269258258148147047 |
| 169 | |246802468024680246802 |
| 170 | test.c: 8|loc:291296| return 0; |
| 171 | |11111111111 |
| 172 | |33344455566 |
| 173 | |26925825814 |
| 174 | |80246802468 |
| 175 | test.c: 9|loc:295392|} |
| 176 | |5 |
| 177 | |4 |
| 178 | |2 |
| 179 | |4 |
| 180 | test.c: 10|loc:299488| |
| 181 | | |
| 182 | | |
| 183 | | |
| 184 | | |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 185 | |
| 186 | UNALLOCATED LOCATIONS |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 187 | location_t interval: 299520 <= loc < 2147483632 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 188 | |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 189 | MACRO 3: PLUS (7 tokens) |
| 190 | location_t interval: 2147483632 <= loc < 2147483639 |
| 191 | test.c:7:11: note: expansion point is location 287555 |
| 192 | 7 | int b = PLUS (3,4); |
| 193 | | ^~~~ |
| 194 | map->start_location: 2147483632 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 195 | macro_locations: |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 196 | 0: 287744, 263200 |
| 197 | test.c:7:17: note: token 0 has x-location == 287744 |
| 198 | 7 | int b = PLUS (3,4); |
| 199 | | ^ |
| 200 | test.c:7:17: note: token 0 has y-location == 263200 |
| 201 | 1: 263264, 263264 |
| 202 | In file included from test.c:1: |
| 203 | test.h:3:22: note: token 1 has x-location == y-location == 263264 |
| 204 | 3 | #define PLUS(A, B) A + B |
| 205 | | ^ |
| 206 | 2: 287808, 263328 |
| 207 | test.c:7:19: note: token 2 has x-location == 287808 |
| 208 | 7 | int b = PLUS (3,4); |
| 209 | | ^ |
| 210 | test.c:7:19: note: token 2 has y-location == 263328 |
| 211 | 3: 0, 0 |
| 212 | cc1: note: token 3 has x-location == y-location == 0 |
| 213 | 4: 0, 0 |
| 214 | cc1: note: token 4 has x-location == y-location == 0 |
| 215 | 5: 0, 0 |
| 216 | cc1: note: token 5 has x-location == y-location == 0 |
| 217 | 6: 0, 0 |
| 218 | cc1: note: token 6 has x-location == y-location == 0 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 219 | |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 220 | MACRO 2: PLUS (7 tokens) |
| 221 | location_t interval: 2147483639 <= loc < 2147483646 |
| 222 | test.c:6:11: note: expansion point is location 283459 |
| 223 | 6 | int a = PLUS (1,2); |
| 224 | | ^~~~ |
| 225 | map->start_location: 2147483639 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 226 | macro_locations: |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 227 | 0: 283648, 263200 |
| 228 | test.c:6:17: note: token 0 has x-location == 283648 |
| 229 | 6 | int a = PLUS (1,2); |
| 230 | | ^ |
| 231 | test.c:6:17: note: token 0 has y-location == 263200 |
| 232 | 1: 263264, 263264 |
| 233 | In file included from test.c:1: |
| 234 | test.h:3:22: note: token 1 has x-location == y-location == 263264 |
| 235 | 3 | #define PLUS(A, B) A + B |
| 236 | | ^ |
| 237 | 2: 283712, 263328 |
| 238 | test.c:6:19: note: token 2 has x-location == 283712 |
| 239 | 6 | int a = PLUS (1,2); |
| 240 | | ^ |
| 241 | test.c:6:19: note: token 2 has y-location == 263328 |
| 242 | 3: 0, 0 |
| 243 | cc1: note: token 3 has x-location == y-location == 0 |
| 244 | 4: 0, 0 |
| 245 | cc1: note: token 4 has x-location == y-location == 0 |
| 246 | 5: 0, 0 |
| 247 | cc1: note: token 5 has x-location == y-location == 0 |
| 248 | 6: 0, 0 |
| 249 | cc1: note: token 6 has x-location == y-location == 0 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 250 | |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 251 | MACRO 1: __GCC_IEC_559_COMPLEX (1 tokens) |
| 252 | location_t interval: 2147483646 <= loc < 2147483647 |
| 253 | In file included from <command-line>:31: |
| 254 | /usr/include/stdc-predef.h:45:6: note: expansion point is location 180564 |
| 255 | 45 | # if __GCC_IEC_559_COMPLEX > 0 |
| 256 | | ^~~~~~~~~~~~~~~~~~~~~ |
| 257 | map->start_location: 2147483646 |
| 258 | macro_locations: |
| 259 | 0: 1, 1 |
| 260 | <built-in>: note: token 0 has x-location == y-location == 1 |
David Malcolm | ebedc9a | 2015-11-13 16:29:59 +0000 | [diff] [blame] | 261 | |
Mike Gulick | bc65bad | 2018-11-27 16:04:31 +0000 | [diff] [blame] | 262 | MACRO 0: __GCC_IEC_559 (1 tokens) |
| 263 | location_t interval: 2147483647 <= loc < 2147483648 |
| 264 | /usr/include/stdc-predef.h:37:6: note: expansion point is location 147788 |
| 265 | 37 | # if __GCC_IEC_559 > 0 |
| 266 | | ^~~~~~~~~~~~~ |
| 267 | map->start_location: 2147483647 |
| 268 | macro_locations: |
| 269 | 0: 1, 1 |
| 270 | <built-in>: note: token 0 has x-location == y-location == 1 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 271 | |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 272 | MAX_LOCATION_T |
| 273 | location_t interval: 2147483647 <= loc < 2147483648 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 274 | |
| 275 | AD-HOC LOCATIONS |
David Malcolm | 620e594 | 2018-11-13 20:05:03 +0000 | [diff] [blame] | 276 | location_t interval: 2147483648 <= loc < 4294967295 |
David Malcolm | ba4ad40 | 2015-05-13 13:58:18 +0000 | [diff] [blame] | 277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |