diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-09-01 11:56:16 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-09-01 11:56:16 -0700 |
commit | c1a6d53ea95c104ca454c7690d2210b1731f54a4 (patch) | |
tree | 75ccb2b69d9db16a4bdbe3fda0caeebed56358f7 | |
parent | 298c56987ad09a3a973291c08cd377e22e55ea34 (diff) |
fix structure metadata parsing
-rw-r--r-- | src/modules.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/modules.js b/src/modules.js index 9765fa8d..cc056314 100644 --- a/src/modules.js +++ b/src/modules.js @@ -37,7 +37,7 @@ var Debugging = { var form4 = new RegExp(/^!llvm.dbg.[\w\.]+ = .*$/); var form5 = new RegExp(/^!(\d+) = metadata !{.*$/); var form6 = new RegExp(/^ (tail )?call void \@llvm.dbg.\w+\(metadata .*$/); - var formStruct = /^!(\d+) = metadata !\{i32 \d+, metadata !\d+, metadata !"([^"]+)", metadata !\d+, i32 \d+, i64 \d+, [^,]*, [^,]*, [^,]*, [^,]*, metadata !(\d+), .*} ; \[ DW_TAG_(?:structure|class)_type \]$/; + var formStruct = /^!(\d+) = metadata !\{i32 \d+, (metadata !\d+|null), metadata !"([^"]+)", metadata !\d+, i32 \d+, i64 \d+, [^,]*, [^,]*, [^,]*, [^,]*, metadata !(\d+), .*} ; \[ DW_TAG_(?:structure|class)_type \]$/; var formStructMembers = /^!(\d+) = metadata !\{(.*)\}$/; var formMember = /^!(\d+) = metadata !\{i32 \d+, metadata !\d+, metadata !"([^"]+)", metadata !\d+, i32 \d+, i64 \d+, i64 \d+, i64 \d+, .+?, metadata !(\d+)} ; \[ DW_TAG_member \]$/; @@ -55,10 +55,10 @@ var Debugging = { return line.replace(', !dbg !' + calc[1], ''); } calc = formStruct.exec(line); - if (calc && !(calc[2] in structToMemberMeta)) { - structMetaToStruct[calc[1]] = calc[2]; - structToMemberMeta[calc[2]] = calc[3]; - memberMetaToStruct[calc[3]] = calc[1]; + if (calc && !(calc[3] in structToMemberMeta)) { + structMetaToStruct[calc[1]] = calc[3]; + structToMemberMeta[calc[3]] = calc[4]; + memberMetaToStruct[calc[4]] = calc[1]; skipLine = true; } calc = formStructMembers.exec(line); |