diff options
author | Giuliano Procida <gprocida@google.com> | 2023-11-17 09:27:11 +0000 |
---|---|---|
committer | Giuliano Procida <gprocida@google.com> | 2023-11-20 12:59:20 +0000 |
commit | 1a6b9013517601f0ec82ab1b0dbb8c657608cf96 (patch) | |
tree | 87b071d055c791c9e50818f7d12afbf26fdc4195 | |
parent | 432e1bd794260e7fe1e40bb9ec4895f2435b6d88 (diff) | |
download | stg-1a6b9013517601f0ec82ab1b0dbb8c657608cf96.tar.gz |
test cases: simplify namespace/simple tests
These test cases were (and probably still are) doing to much.
* remove the `help` structure that pulled in various other kinds of type
* name the typed entities sequentially (and remove `decl` abbreviation)
* remove diff-related bits from the info test
PiperOrigin-RevId: 583303930
Change-Id: I3eb0f1979c04dd5de71df29c10c0b195fa6b12f8
10 files changed, 284 insertions, 527 deletions
diff --git a/test_cases/abigail_reader/namespace/expected/simple_cc.abi_stg b/test_cases/abigail_reader/namespace/expected/simple_cc.abi_stg index cca6c7b..55a5cda 100644 --- a/test_cases/abigail_reader/namespace/expected/simple_cc.abi_stg +++ b/test_cases/abigail_reader/namespace/expected/simple_cc.abi_stg @@ -1,29 +1,14 @@ version: 0x00000002 root_id: 0x84ea5130 -pointer_reference { - id: 0x3593bec8 - kind: POINTER - pointee_type_id: 0xfc0e1dbd -} -pointer_reference { - id: 0x45530328 - kind: RVALUE_REFERENCE - pointee_type_id: 0xfc0e1dbd -} -pointer_reference { - id: 0xf893a81f - kind: LVALUE_REFERENCE - pointee_type_id: 0xfc0e1dbd -} typedef { - id: 0xc800e9c0 - name: "foo::typedef_decl" - referred_type_id: 0xfc0e1dbd + id: 0xbc115339 + name: "foo::type_definition" + referred_type_id: 0x6720d32f } qualified { - id: 0xe3126acd + id: 0xc5d9d969 qualifier: CONST - qualified_type_id: 0xfc0e1dbd + qualified_type_id: 0x6720d32f } primitive { id: 0x398ea63b @@ -35,77 +20,37 @@ primitive { name: "int" bytesize: 0x00000004 } -primitive { - id: 0xfc0e1dbd - name: "long" - bytesize: 0x00000008 -} array { - id: 0xd6ffa9de + id: 0xf0341a7a number_of_elements: 5 - element_type_id: 0xfc0e1dbd -} -member { - id: 0x06b55c66 - name: "lref_decl" - type_id: 0xf893a81f - offset: 64 + element_type_id: 0x6720d32f } member { - id: 0xa628c4ea - name: "ptr_decl" - type_id: 0x3593bec8 -} -member { - id: 0xec533626 - name: "rref_decl" - type_id: 0x45530328 - offset: 128 -} -member { - id: 0xab77db89 - name: "t" - type_id: 0xc800e9c0 - offset: 192 -} -member { - id: 0xa04e65cb + id: 0xa0d54b05 name: "x" - type_id: 0xfc0e1dbd + type_id: 0x6720d32f } struct_union { - id: 0x1d623957 + id: 0x3ba6625d kind: STRUCT - name: "foo::StructDecl" + name: "foo::S" definition { - bytesize: 8 - member_id: 0xa04e65cb + bytesize: 4 + member_id: 0xa0d54b05 } } struct_union { - id: 0x11ae430b + id: 0xf05bf1c2 kind: UNION - name: "foo::UnionDecl" + name: "foo::U" definition { - bytesize: 8 - member_id: 0xa04e65cb - } -} -struct_union { - id: 0xb0fcc680 - kind: STRUCT - name: "foo::help" - definition { - bytesize: 32 - member_id: 0xa628c4ea - member_id: 0x06b55c66 - member_id: 0xec533626 - member_id: 0xab77db89 + bytesize: 4 + member_id: 0xa0d54b05 } } enumeration { - id: 0x6106a0e4 - name: "foo::EnumDecl" + id: 0x249cfa0e + name: "foo::E" definition { underlying_type_id: 0x398ea63b enumerator { @@ -115,98 +60,84 @@ enumeration { name: "Y" value: 1 } - enumerator { - name: "Z" - value: 2 - } } } function { - id: 0x8b1f0a39 - return_type_id: 0xfc0e1dbd - parameter_id: 0xb0fcc680 + id: 0x9d80e32f + return_type_id: 0x6720d32f } elf_symbol { - id: 0xb29e1d18 - name: "_ZN11unchanged_n3varE" + id: 0x582117f7 + name: "_ZN3foo2x1E" is_defined: true symbol_type: OBJECT type_id: 0x6720d32f - full_name: "unchanged_n::var" + full_name: "foo::x1" } elf_symbol { - id: 0x8002d067 - name: "_ZN3foo10array_declE" + id: 0x717ce2f2 + name: "_ZN3foo2x2E" is_defined: true symbol_type: OBJECT - type_id: 0xd6ffa9de - full_name: "foo::array_decl" + type_id: 0xf0341a7a + full_name: "foo::x2" } elf_symbol { - id: 0x06614d1f - name: "_ZN3foo10union_declE" + id: 0x4a892240 + name: "_ZN3foo2x3E" is_defined: true symbol_type: OBJECT - type_id: 0x11ae430b - full_name: "foo::union_decl" + type_id: 0xc5d9d969 + full_name: "foo::x3" } elf_symbol { - id: 0xcc7b4c14 - name: "_ZN3foo11qualif_declE" + id: 0x4ec44cf8 + name: "_ZN3foo2x4E" is_defined: true symbol_type: OBJECT - type_id: 0xe3126acd - full_name: "foo::qualif_decl" + type_id: 0xbc115339 + full_name: "foo::x4" } elf_symbol { - id: 0x0d128cae - name: "_ZN3foo11struct_declE" + id: 0x4d2c388b + name: "_ZN3foo2x5Ev" is_defined: true - symbol_type: OBJECT - type_id: 0x1d623957 - full_name: "foo::struct_decl" + symbol_type: FUNCTION + type_id: 0x9d80e32f + full_name: "foo::x5" } elf_symbol { - id: 0xdda2add0 - name: "_ZN3foo8var_declE" + id: 0x4e82b74d + name: "_ZN3foo2x6E" is_defined: true symbol_type: OBJECT - type_id: 0xfc0e1dbd - full_name: "foo::var_decl" + type_id: 0x3ba6625d + full_name: "foo::x6" } elf_symbol { - id: 0x8565a081 - name: "_ZN3foo9enum_declE" + id: 0x60294099 + name: "_ZN3foo2x7E" is_defined: true symbol_type: OBJECT - type_id: 0x6106a0e4 - full_name: "foo::enum_decl" + type_id: 0xf05bf1c2 + full_name: "foo::x7" } elf_symbol { - id: 0x1ba73e64 - name: "_ZN3foo9func_declENS_4helpE" - is_defined: true - symbol_type: FUNCTION - type_id: 0x8b1f0a39 - full_name: "foo::func_decl" -} -elf_symbol { - id: 0xf7cf66a4 - name: "_ZN7added_n3varE" + id: 0x59b8d44f + name: "_ZN3foo2x8E" is_defined: true symbol_type: OBJECT - type_id: 0x6720d32f - full_name: "added_n::var" + type_id: 0x249cfa0e + full_name: "foo::x8" } interface { id: 0x84ea5130 - symbol_id: 0xb29e1d18 - symbol_id: 0x8002d067 - symbol_id: 0x06614d1f - symbol_id: 0xcc7b4c14 - symbol_id: 0x0d128cae - symbol_id: 0xdda2add0 - symbol_id: 0x8565a081 - symbol_id: 0x1ba73e64 - symbol_id: 0xf7cf66a4 + symbol_id: 0x582117f7 + symbol_id: 0x717ce2f2 + symbol_id: 0x4a892240 + symbol_id: 0x4ec44cf8 + symbol_id: 0x4d2c388b + symbol_id: 0x4e82b74d + symbol_id: 0x60294099 + symbol_id: 0x59b8d44f } diff --git a/test_cases/abigail_reader/namespace/simple.cc.xml b/test_cases/abigail_reader/namespace/simple.cc.xml index 4365c00..8cecf42 100644 --- a/test_cases/abigail_reader/namespace/simple.cc.xml +++ b/test_cases/abigail_reader/namespace/simple.cc.xml @@ -1,77 +1,51 @@ <abi-corpus version='2.1'> <elf-function-symbols> - <elf-symbol name='_ZN3foo9func_declENS_4helpE' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x5Ev' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <elf-variable-symbols> - <elf-symbol name='_ZN11unchanged_n3varE' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo10array_declE' size='40' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo10union_declE' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo11qualif_declE' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo11struct_declE' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo8var_declE' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN3foo9enum_declE' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='_ZN7added_n3varE' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x1E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x2E' size='20' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x3E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x4E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x6E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x7E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='_ZN3foo2x8E' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-variable-symbols> <abi-instr address-size='64' path='simple.cc' language='LANG_C_plus_plus_14'> <type-decl name='__ARRAY_SIZE_TYPE__' size-in-bits='64' id='7ff19f0f'/> <type-decl name='int' size-in-bits='32' id='95e97e5e'/> - <type-decl name='long' size-in-bits='64' id='c2ecdf53'/> - <array-type-def dimensions='1' type-id='c2ecdf53' size-in-bits='320' id='ddbb80be'> + <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='160' id='e41e1db9'> <subrange length='5' type-id='7ff19f0f' id='53010e10'/> </array-type-def> <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='9cac1fee'/> - <qualified-type-def type-id='c2ecdf53' const='yes' id='ca9c583a'/> - <reference-type-def kind='lvalue' type-id='c2ecdf53' size-in-bits='64' id='4fe3c52f'/> - <reference-type-def kind='rvalue' type-id='c2ecdf53' size-in-bits='64' id='cc8f2d2b'/> - <pointer-type-def type-id='c2ecdf53' size-in-bits='64' id='53e3cb7b'/> - <namespace-decl name='added_n'> - <var-decl name='var' type-id='95e97e5e' mangled-name='_ZN7added_n3varE' visibility='default' elf-symbol-id='_ZN7added_n3varE'/> - </namespace-decl> + <qualified-type-def type-id='95e97e5e' const='yes' id='2448a865'/> <namespace-decl name='foo'> - <typedef-decl name='typedef_decl' type-id='c2ecdf53' id='26f1da2c'/> - <class-decl name='help' size-in-bits='256' is-struct='yes' visibility='default' id='83e11edc'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ptr_decl' type-id='53e3cb7b' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='lref_decl' type-id='4fe3c52f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rref_decl' type-id='cc8f2d2b' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='t' type-id='26f1da2c' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='StructDecl' size-in-bits='64' is-struct='yes' visibility='default' id='14022c9e'> + <typedef-decl name='type_definition' type-id='95e97e5e' id='2f43e790'/> + <class-decl name='S' size-in-bits='32' is-struct='yes' visibility='default' id='6a22df54'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='x' type-id='c2ecdf53' visibility='default'/> + <var-decl name='x' type-id='95e97e5e' visibility='default'/> </data-member> </class-decl> - <union-decl name='UnionDecl' size-in-bits='64' visibility='default' id='8ffdc44b'> + <union-decl name='U' size-in-bits='32' visibility='default' id='acb7a25f'> <data-member access='public'> - <var-decl name='x' type-id='c2ecdf53' visibility='default'/> + <var-decl name='x' type-id='95e97e5e' visibility='default'/> </data-member> </union-decl> - <enum-decl name='EnumDecl' id='08fb50b1'> + <enum-decl name='E' id='cff58263'> <underlying-type type-id='9cac1fee'/> <enumerator name='X' value='0'/> <enumerator name='Y' value='1'/> - <enumerator name='Z' value='2'/> </enum-decl> - <var-decl name='var_decl' type-id='c2ecdf53' mangled-name='_ZN3foo8var_declE' visibility='default' elf-symbol-id='_ZN3foo8var_declE'/> - <var-decl name='array_decl' type-id='ddbb80be' mangled-name='_ZN3foo10array_declE' visibility='default' elf-symbol-id='_ZN3foo10array_declE'/> - <var-decl name='qualif_decl' type-id='ca9c583a' mangled-name='_ZN3foo11qualif_declE' visibility='default' elf-symbol-id='_ZN3foo11qualif_declE'/> - <function-decl name='func_decl' mangled-name='_ZN3foo9func_declENS_4helpE' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3foo9func_declENS_4helpE'> - <parameter type-id='83e11edc' name='a'/> - <return type-id='c2ecdf53'/> + <var-decl name='x1' type-id='95e97e5e' mangled-name='_ZN3foo2x1E' visibility='default' elf-symbol-id='_ZN3foo2x1E'/> + <var-decl name='x2' type-id='e41e1db9' mangled-name='_ZN3foo2x2E' visibility='default' elf-symbol-id='_ZN3foo2x2E'/> + <var-decl name='x3' type-id='2448a865' mangled-name='_ZN3foo2x3E' visibility='default' elf-symbol-id='_ZN3foo2x3E'/> + <var-decl name='x4' type-id='2f43e790' mangled-name='_ZN3foo2x4E' visibility='default' elf-symbol-id='_ZN3foo2x4E'/> + <function-decl name='x5' mangled-name='_ZN3foo2x5Ev' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3foo2x5Ev'> + <return type-id='95e97e5e'/> </function-decl> - <var-decl name='struct_decl' type-id='14022c9e' mangled-name='_ZN3foo11struct_declE' visibility='default' elf-symbol-id='_ZN3foo11struct_declE'/> - <var-decl name='union_decl' type-id='8ffdc44b' mangled-name='_ZN3foo10union_declE' visibility='default' elf-symbol-id='_ZN3foo10union_declE'/> - <var-decl name='enum_decl' type-id='08fb50b1' mangled-name='_ZN3foo9enum_declE' visibility='default' elf-symbol-id='_ZN3foo9enum_declE'/> - </namespace-decl> - <namespace-decl name='unchanged_n'> - <var-decl name='var' type-id='95e97e5e' mangled-name='_ZN11unchanged_n3varE' visibility='default' elf-symbol-id='_ZN11unchanged_n3varE'/> + <var-decl name='x6' type-id='6a22df54' mangled-name='_ZN3foo2x6E' visibility='default' elf-symbol-id='_ZN3foo2x6E'/> + <var-decl name='x7' type-id='acb7a25f' mangled-name='_ZN3foo2x7E' visibility='default' elf-symbol-id='_ZN3foo2x7E'/> + <var-decl name='x8' type-id='cff58263' mangled-name='_ZN3foo2x8E' visibility='default' elf-symbol-id='_ZN3foo2x8E'/> </namespace-decl> </abi-instr> </abi-corpus> diff --git a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_flat b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_flat index 9c467cd..9cc1bec 100644 --- a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_flat +++ b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_flat @@ -2,58 +2,47 @@ variable symbol 'int removed_n::var' {_ZN9removed_n3varE} was removed variable symbol 'int added_n::var' {_ZN7added_n3varE} was added -variable symbol changed from 'int foo::array_decl[5]' {_ZN3foo10array_declE} to 'long foo::array_decl[5]' {_ZN3foo10array_declE} +variable symbol changed from 'int foo::x1' {_ZN3foo2x1E} to 'long foo::x1' {_ZN3foo2x1E} + type changed from 'int' to 'long' + +variable symbol changed from 'int foo::x2[5]' {_ZN3foo2x2E} to 'long foo::x2[5]' {_ZN3foo2x2E} type changed from 'int[5]' to 'long[5]' element type changed from 'int' to 'long' -variable symbol 'union foo::UnionDecl foo::union_decl' {_ZN3foo10union_declE} changed - type 'union foo::UnionDecl' changed - -variable symbol changed from 'const int foo::qualif_decl' {_ZN3foo11qualif_declE} to 'const long foo::qualif_decl' {_ZN3foo11qualif_declE} +variable symbol changed from 'const int foo::x3' {_ZN3foo2x3E} to 'const long foo::x3' {_ZN3foo2x3E} type changed from 'const int' to 'const long' underlying type changed from 'int' to 'long' -variable symbol 'struct foo::StructDecl foo::struct_decl' {_ZN3foo11struct_declE} changed - type 'struct foo::StructDecl' changed +variable symbol 'foo::type_definition foo::x4' {_ZN3foo2x4E} changed + type changed from 'foo::type_definition' = 'int' to 'foo::type_definition' = 'long' -variable symbol changed from 'int foo::var_decl' {_ZN3foo8var_declE} to 'long foo::var_decl' {_ZN3foo8var_declE} - type changed from 'int' to 'long' +function symbol changed from 'int foo::x5()' {_ZN3foo2x5Ev} to 'long foo::x5()' {_ZN3foo2x5Ev} + type changed from 'int()' to 'long()' + return type changed from 'int' to 'long' -variable symbol 'enum foo::EnumDecl foo::enum_decl' {_ZN3foo9enum_declE} changed - type 'enum foo::EnumDecl' changed +variable symbol 'struct foo::S foo::x6' {_ZN3foo2x6E} changed + type 'struct foo::S' changed -function symbol changed from 'int foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} to 'long foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} - type changed from 'int(struct foo::help)' to 'long(struct foo::help)' - return type changed from 'int' to 'long' - parameter 1 type 'struct foo::help' changed +variable symbol 'union foo::U foo::x7' {_ZN3foo2x7E} changed + type 'union foo::U' changed -type 'union foo::UnionDecl' changed +variable symbol 'enum foo::E foo::x8' {_ZN3foo2x8E} changed + type 'enum foo::E' changed + +type changed from 'foo::type_definition' = 'int' to 'foo::type_definition' = 'long' + resolved type changed from 'int' to 'long' + +type 'struct foo::S' changed byte size changed from 4 to 8 member changed from 'int x' to 'long x' type changed from 'int' to 'long' -type 'struct foo::StructDecl' changed +type 'union foo::U' changed byte size changed from 4 to 8 member changed from 'int x' to 'long x' type changed from 'int' to 'long' -type 'enum foo::EnumDecl' changed +type 'enum foo::E' changed enumerator 'Z' (2) was added -type 'struct foo::help' changed - member changed from 'int* ptr_decl' to 'long* ptr_decl' - type changed from 'int*' to 'long*' - pointed-to type changed from 'int' to 'long' - member changed from 'int& lref_decl' to 'long& lref_decl' - type changed from 'int&' to 'long&' - referred-to type changed from 'int' to 'long' - member changed from 'int&& rref_decl' to 'long&& rref_decl' - type changed from 'int&&' to 'long&&' - referred-to type changed from 'int' to 'long' - member 'foo::typedef_decl t' changed - type changed from 'foo::typedef_decl' = 'int' to 'foo::typedef_decl' = 'long' - -type changed from 'foo::typedef_decl' = 'int' to 'foo::typedef_decl' = 'long' - resolved type changed from 'int' to 'long' - exit code 4 diff --git a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_plain b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_plain index 35134dc..90fa7de 100644 --- a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_plain +++ b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_plain @@ -2,48 +2,39 @@ variable symbol 'int removed_n::var' {_ZN9removed_n3varE} was removed variable symbol 'int added_n::var' {_ZN7added_n3varE} was added -variable symbol changed from 'int foo::array_decl[5]' {_ZN3foo10array_declE} to 'long foo::array_decl[5]' {_ZN3foo10array_declE} +variable symbol changed from 'int foo::x1' {_ZN3foo2x1E} to 'long foo::x1' {_ZN3foo2x1E} + type changed from 'int' to 'long' + +variable symbol changed from 'int foo::x2[5]' {_ZN3foo2x2E} to 'long foo::x2[5]' {_ZN3foo2x2E} type changed from 'int[5]' to 'long[5]' element type changed from 'int' to 'long' -variable symbol 'union foo::UnionDecl foo::union_decl' {_ZN3foo10union_declE} changed - type 'union foo::UnionDecl' changed - byte size changed from 4 to 8 - member changed from 'int x' to 'long x' - type changed from 'int' to 'long' - -variable symbol changed from 'const int foo::qualif_decl' {_ZN3foo11qualif_declE} to 'const long foo::qualif_decl' {_ZN3foo11qualif_declE} +variable symbol changed from 'const int foo::x3' {_ZN3foo2x3E} to 'const long foo::x3' {_ZN3foo2x3E} type changed from 'const int' to 'const long' underlying type changed from 'int' to 'long' -variable symbol 'struct foo::StructDecl foo::struct_decl' {_ZN3foo11struct_declE} changed - type 'struct foo::StructDecl' changed +variable symbol 'foo::type_definition foo::x4' {_ZN3foo2x4E} changed + type changed from 'foo::type_definition' = 'int' to 'foo::type_definition' = 'long' + resolved type changed from 'int' to 'long' + +function symbol changed from 'int foo::x5()' {_ZN3foo2x5Ev} to 'long foo::x5()' {_ZN3foo2x5Ev} + type changed from 'int()' to 'long()' + return type changed from 'int' to 'long' + +variable symbol 'struct foo::S foo::x6' {_ZN3foo2x6E} changed + type 'struct foo::S' changed byte size changed from 4 to 8 member changed from 'int x' to 'long x' type changed from 'int' to 'long' -variable symbol changed from 'int foo::var_decl' {_ZN3foo8var_declE} to 'long foo::var_decl' {_ZN3foo8var_declE} - type changed from 'int' to 'long' +variable symbol 'union foo::U foo::x7' {_ZN3foo2x7E} changed + type 'union foo::U' changed + byte size changed from 4 to 8 + member changed from 'int x' to 'long x' + type changed from 'int' to 'long' -variable symbol 'enum foo::EnumDecl foo::enum_decl' {_ZN3foo9enum_declE} changed - type 'enum foo::EnumDecl' changed +variable symbol 'enum foo::E foo::x8' {_ZN3foo2x8E} changed + type 'enum foo::E' changed enumerator 'Z' (2) was added -function symbol changed from 'int foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} to 'long foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} - type changed from 'int(struct foo::help)' to 'long(struct foo::help)' - return type changed from 'int' to 'long' - parameter 1 type 'struct foo::help' changed - member changed from 'int* ptr_decl' to 'long* ptr_decl' - type changed from 'int*' to 'long*' - pointed-to type changed from 'int' to 'long' - member changed from 'int& lref_decl' to 'long& lref_decl' - type changed from 'int&' to 'long&' - referred-to type changed from 'int' to 'long' - member changed from 'int&& rref_decl' to 'long&& rref_decl' - type changed from 'int&&' to 'long&&' - referred-to type changed from 'int' to 'long' - member 'foo::typedef_decl t' changed - type changed from 'foo::typedef_decl' = 'int' to 'foo::typedef_decl' = 'long' - resolved type changed from 'int' to 'long' - exit code 4 diff --git a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_small b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_small index bbc7bea..7bc532e 100644 --- a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_small +++ b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_small @@ -2,46 +2,35 @@ variable symbol 'int removed_n::var' {_ZN9removed_n3varE} was removed variable symbol 'int added_n::var' {_ZN7added_n3varE} was added -variable symbol changed from 'int foo::array_decl[5]' {_ZN3foo10array_declE} to 'long foo::array_decl[5]' {_ZN3foo10array_declE} +variable symbol changed from 'int foo::x1' {_ZN3foo2x1E} to 'long foo::x1' {_ZN3foo2x1E} + type changed from 'int' to 'long' + +variable symbol changed from 'int foo::x2[5]' {_ZN3foo2x2E} to 'long foo::x2[5]' {_ZN3foo2x2E} type changed from 'int[5]' to 'long[5]' element type changed from 'int' to 'long' -variable symbol changed from 'const int foo::qualif_decl' {_ZN3foo11qualif_declE} to 'const long foo::qualif_decl' {_ZN3foo11qualif_declE} +variable symbol changed from 'const int foo::x3' {_ZN3foo2x3E} to 'const long foo::x3' {_ZN3foo2x3E} type changed from 'const int' to 'const long' underlying type changed from 'int' to 'long' -variable symbol changed from 'int foo::var_decl' {_ZN3foo8var_declE} to 'long foo::var_decl' {_ZN3foo8var_declE} - type changed from 'int' to 'long' - -function symbol changed from 'int foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} to 'long foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} - type changed from 'int(struct foo::help)' to 'long(struct foo::help)' +function symbol changed from 'int foo::x5()' {_ZN3foo2x5Ev} to 'long foo::x5()' {_ZN3foo2x5Ev} + type changed from 'int()' to 'long()' return type changed from 'int' to 'long' -type 'union foo::UnionDecl' changed +type changed from 'foo::type_definition' = 'int' to 'foo::type_definition' = 'long' + resolved type changed from 'int' to 'long' + +type 'struct foo::S' changed byte size changed from 4 to 8 member changed from 'int x' to 'long x' type changed from 'int' to 'long' -type 'struct foo::StructDecl' changed +type 'union foo::U' changed byte size changed from 4 to 8 member changed from 'int x' to 'long x' type changed from 'int' to 'long' -type 'enum foo::EnumDecl' changed +type 'enum foo::E' changed enumerator 'Z' (2) was added -type 'struct foo::help' changed - member changed from 'int* ptr_decl' to 'long* ptr_decl' - type changed from 'int*' to 'long*' - pointed-to type changed from 'int' to 'long' - member changed from 'int& lref_decl' to 'long& lref_decl' - type changed from 'int&' to 'long&' - referred-to type changed from 'int' to 'long' - member changed from 'int&& rref_decl' to 'long&& rref_decl' - type changed from 'int&&' to 'long&&' - referred-to type changed from 'int' to 'long' - -type changed from 'foo::typedef_decl' = 'int' to 'foo::typedef_decl' = 'long' - resolved type changed from 'int' to 'long' - exit code 4 diff --git a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_viz b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_viz index 3716a8d..4fac8d1 100644 --- a/test_cases/diff_tests/namespace/expected/simple_cc.o_o_viz +++ b/test_cases/diff_tests/namespace/expected/simple_cc.o_o_viz @@ -4,69 +4,52 @@ digraph "ABI diff" { "0" -> "1" [label=""] "2" [color=red, label="added(int added_n::var {_ZN7added_n3varE})"] "0" -> "2" [label=""] - "3" [label="'int foo::array_decl[5]' {_ZN3foo10array_declE} -> 'long foo::array_decl[5]' {_ZN3foo10array_declE}"] - "4" [label="'int[5]' -> 'long[5]'"] - "5" [color=red, label="'int' -> 'long'"] - "4" -> "5" [label="element"] + "3" [label="'int foo::x1' {_ZN3foo2x1E} -> 'long foo::x1' {_ZN3foo2x1E}"] + "4" [color=red, label="'int' -> 'long'"] "3" -> "4" [label=""] "0" -> "3" [label=""] - "6" [label="'union foo::UnionDecl foo::union_decl' {_ZN3foo10union_declE}"] - "7" [color=red, shape=rectangle, label="'union foo::UnionDecl'"] - "7" -> "7:0" - "7:0" [color=red, label="byte size changed from 4 to 8"] - "8" [label="'int x' -> 'long x'"] - "8" -> "5" [label=""] + "5" [label="'int foo::x2[5]' {_ZN3foo2x2E} -> 'long foo::x2[5]' {_ZN3foo2x2E}"] + "6" [label="'int[5]' -> 'long[5]'"] + "6" -> "4" [label="element"] + "5" -> "6" [label=""] + "0" -> "5" [label=""] + "7" [label="'const int foo::x3' {_ZN3foo2x3E} -> 'const long foo::x3' {_ZN3foo2x3E}"] + "8" [label="'const int' -> 'const long'"] + "8" -> "4" [label="underlying"] "7" -> "8" [label=""] - "6" -> "7" [label=""] - "0" -> "6" [label=""] - "9" [label="'const int foo::qualif_decl' {_ZN3foo11qualif_declE} -> 'const long foo::qualif_decl' {_ZN3foo11qualif_declE}"] - "10" [label="'const int' -> 'const long'"] - "10" -> "5" [label="underlying"] + "0" -> "7" [label=""] + "9" [label="'foo::type_definition foo::x4' {_ZN3foo2x4E}"] + "10" [shape=rectangle, label="'foo::type_definition' = 'int' -> 'foo::type_definition' = 'long'"] + "10" -> "4" [label="resolved"] "9" -> "10" [label=""] "0" -> "9" [label=""] - "11" [label="'struct foo::StructDecl foo::struct_decl' {_ZN3foo11struct_declE}"] - "12" [color=red, shape=rectangle, label="'struct foo::StructDecl'"] - "12" -> "12:0" - "12:0" [color=red, label="byte size changed from 4 to 8"] - "13" [label="'int x' -> 'long x'"] - "13" -> "5" [label=""] - "12" -> "13" [label=""] + "11" [label="'int foo::x5()' {_ZN3foo2x5Ev} -> 'long foo::x5()' {_ZN3foo2x5Ev}"] + "12" [label="'int()' -> 'long()'"] + "12" -> "4" [label="return"] "11" -> "12" [label=""] "0" -> "11" [label=""] - "14" [label="'int foo::var_decl' {_ZN3foo8var_declE} -> 'long foo::var_decl' {_ZN3foo8var_declE}"] - "14" -> "5" [label=""] - "0" -> "14" [label=""] - "15" [label="'enum foo::EnumDecl foo::enum_decl' {_ZN3foo9enum_declE}"] - "16" [color=red, shape=rectangle, label="'enum foo::EnumDecl'"] - "16" -> "16:0" - "16:0" [color=red, label="enumerator 'Z' (2) was added"] - "15" -> "16" [label=""] - "0" -> "15" [label=""] - "17" [label="'int foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE} -> 'long foo::func_decl(struct foo::help)' {_ZN3foo9func_declENS_4helpE}"] - "18" [label="'int(struct foo::help)' -> 'long(struct foo::help)'"] - "18" -> "5" [label="return"] - "19" [shape=rectangle, label="'struct foo::help'"] - "20" [label="'int* ptr_decl' -> 'long* ptr_decl'"] - "21" [label="'int*' -> 'long*'"] - "21" -> "5" [label="pointed-to"] - "20" -> "21" [label=""] - "19" -> "20" [label=""] - "22" [label="'int& lref_decl' -> 'long& lref_decl'"] - "23" [label="'int&' -> 'long&'"] - "23" -> "5" [label="referred-to"] - "22" -> "23" [label=""] - "19" -> "22" [label=""] - "24" [label="'int&& rref_decl' -> 'long&& rref_decl'"] - "25" [label="'int&&' -> 'long&&'"] - "25" -> "5" [label="referred-to"] - "24" -> "25" [label=""] - "19" -> "24" [label=""] - "26" [label="'foo::typedef_decl t'"] - "27" [shape=rectangle, label="'foo::typedef_decl' = 'int' -> 'foo::typedef_decl' = 'long'"] - "27" -> "5" [label="resolved"] - "26" -> "27" [label=""] - "19" -> "26" [label=""] - "18" -> "19" [label="parameter 1"] + "13" [label="'struct foo::S foo::x6' {_ZN3foo2x6E}"] + "14" [color=red, shape=rectangle, label="'struct foo::S'"] + "14" -> "14:0" + "14:0" [color=red, label="byte size changed from 4 to 8"] + "15" [label="'int x' -> 'long x'"] + "15" -> "4" [label=""] + "14" -> "15" [label=""] + "13" -> "14" [label=""] + "0" -> "13" [label=""] + "16" [label="'union foo::U foo::x7' {_ZN3foo2x7E}"] + "17" [color=red, shape=rectangle, label="'union foo::U'"] + "17" -> "17:0" + "17:0" [color=red, label="byte size changed from 4 to 8"] + "18" [label="'int x' -> 'long x'"] + "18" -> "4" [label=""] "17" -> "18" [label=""] - "0" -> "17" [label=""] + "16" -> "17" [label=""] + "0" -> "16" [label=""] + "19" [label="'enum foo::E foo::x8' {_ZN3foo2x8E}"] + "20" [color=red, shape=rectangle, label="'enum foo::E'"] + "20" -> "20:0" + "20:0" [color=red, label="enumerator 'Z' (2) was added"] + "19" -> "20" [label=""] + "0" -> "19" [label=""] } diff --git a/test_cases/diff_tests/namespace/simple.0.cc b/test_cases/diff_tests/namespace/simple.0.cc index bc94081..7c8751d 100644 --- a/test_cases/diff_tests/namespace/simple.0.cc +++ b/test_cases/diff_tests/namespace/simple.0.cc @@ -1,40 +1,33 @@ namespace unchanged_n { int var; -} +} // namespace unchanged_n namespace removed_n { int var; -} +} // namespace removed_n namespace foo { -int var_decl; - -int array_decl[5]; +int x1; -extern const int qualif_decl = 5; +int x2[5]; -typedef int typedef_decl; +extern const int x3 = 5; -struct help { - int* ptr_decl; - int& lref_decl; - int&& rref_decl; - typedef_decl t; -}; +typedef int type_definition; +type_definition x4; -int func_decl(help a) { - (void)a; +int x5() { return 0; } -struct StructDecl { +struct S { int x; -} struct_decl; +} x6; -union UnionDecl { +union U { int x; -} union_decl; +} x7; -enum class EnumDecl { X, Y } enum_decl; +enum class E { X, Y } x8; } // namespace foo diff --git a/test_cases/diff_tests/namespace/simple.1.cc b/test_cases/diff_tests/namespace/simple.1.cc index a1075b3..bda04d8 100644 --- a/test_cases/diff_tests/namespace/simple.1.cc +++ b/test_cases/diff_tests/namespace/simple.1.cc @@ -1,41 +1,34 @@ namespace unchanged_n { int var; -} +} // namespace unchanged_n namespace added_n { int var; -} +} // namespace removed_n // Difference: every int below changed to long namespace foo { -long var_decl; - -long array_decl[5]; +long x1; -extern const long qualif_decl = 5; +long x2[5]; -typedef long typedef_decl; +extern const long x3 = 5; -struct help { - long* ptr_decl; - long& lref_decl; - long&& rref_decl; - typedef_decl t; -}; +typedef long type_definition; +type_definition x4; -long func_decl(help a) { - (void)a; +long x5() { return 0; } -struct StructDecl { +struct S { long x; -} struct_decl; +} x6; -union UnionDecl { +union U { long x; -} union_decl; +} x7; -enum class EnumDecl { X, Y, Z } enum_decl; +enum class E { X, Y, Z } x8; } // namespace foo diff --git a/test_cases/info_tests/namespace/expected/simple_cc.elf_stg b/test_cases/info_tests/namespace/expected/simple_cc.elf_stg index 05f9880..bfc9d49 100644 --- a/test_cases/info_tests/namespace/expected/simple_cc.elf_stg +++ b/test_cases/info_tests/namespace/expected/simple_cc.elf_stg @@ -1,29 +1,14 @@ version: 0x00000002 root_id: 0x84ea5130 -pointer_reference { - id: 0x3593bec8 - kind: POINTER - pointee_type_id: 0xfc0e1dbd -} -pointer_reference { - id: 0x45530328 - kind: RVALUE_REFERENCE - pointee_type_id: 0xfc0e1dbd -} -pointer_reference { - id: 0xf893a81f - kind: LVALUE_REFERENCE - pointee_type_id: 0xfc0e1dbd -} typedef { - id: 0xc800e9c0 - name: "foo::typedef_decl" - referred_type_id: 0xfc0e1dbd + id: 0xbc115339 + name: "foo::type_definition" + referred_type_id: 0x6720d32f } qualified { - id: 0xe3126acd + id: 0xc5d9d969 qualifier: CONST - qualified_type_id: 0xfc0e1dbd + qualified_type_id: 0x6720d32f } primitive { id: 0x6720d32f @@ -31,78 +16,37 @@ primitive { encoding: SIGNED_INTEGER bytesize: 0x00000004 } -primitive { - id: 0xfc0e1dbd - name: "long" - encoding: SIGNED_INTEGER - bytesize: 0x00000008 -} array { - id: 0xd6ffa9de + id: 0xf0341a7a number_of_elements: 5 - element_type_id: 0xfc0e1dbd -} -member { - id: 0x06b55c66 - name: "lref_decl" - type_id: 0xf893a81f - offset: 64 + element_type_id: 0x6720d32f } member { - id: 0xa628c4ea - name: "ptr_decl" - type_id: 0x3593bec8 -} -member { - id: 0xec533626 - name: "rref_decl" - type_id: 0x45530328 - offset: 128 -} -member { - id: 0xab77db89 - name: "t" - type_id: 0xc800e9c0 - offset: 192 -} -member { - id: 0xa04e65cb + id: 0xa0d54b05 name: "x" - type_id: 0xfc0e1dbd + type_id: 0x6720d32f } struct_union { - id: 0x1d623957 + id: 0x3ba6625d kind: STRUCT - name: "foo::StructDecl" + name: "foo::S" definition { - bytesize: 8 - member_id: 0xa04e65cb + bytesize: 4 + member_id: 0xa0d54b05 } } struct_union { - id: 0x11ae430b + id: 0xf05bf1c2 kind: UNION - name: "foo::UnionDecl" + name: "foo::U" definition { - bytesize: 8 - member_id: 0xa04e65cb - } -} -struct_union { - id: 0xb0fcc680 - kind: STRUCT - name: "foo::help" - definition { - bytesize: 32 - member_id: 0xa628c4ea - member_id: 0x06b55c66 - member_id: 0xec533626 - member_id: 0xab77db89 + bytesize: 4 + member_id: 0xa0d54b05 } } enumeration { - id: 0x6106a0e4 - name: "foo::EnumDecl" + id: 0x249cfa0e + name: "foo::E" definition { underlying_type_id: 0x6720d32f enumerator { @@ -112,98 +56,84 @@ enumeration { name: "Y" value: 1 } - enumerator { - name: "Z" - value: 2 - } } } function { - id: 0x8b1f0a39 - return_type_id: 0xfc0e1dbd - parameter_id: 0xb0fcc680 + id: 0x9d80e32f + return_type_id: 0x6720d32f } elf_symbol { - id: 0xb29e1d18 - name: "_ZN11unchanged_n3varE" + id: 0x582117f7 + name: "_ZN3foo2x1E" is_defined: true symbol_type: OBJECT type_id: 0x6720d32f - full_name: "unchanged_n::var" + full_name: "foo::x1" } elf_symbol { - id: 0x8002d067 - name: "_ZN3foo10array_declE" + id: 0x717ce2f2 + name: "_ZN3foo2x2E" is_defined: true symbol_type: OBJECT - type_id: 0xd6ffa9de - full_name: "foo::array_decl" + type_id: 0xf0341a7a + full_name: "foo::x2" } elf_symbol { - id: 0x06614d1f - name: "_ZN3foo10union_declE" + id: 0x4a892240 + name: "_ZN3foo2x3E" is_defined: true symbol_type: OBJECT - type_id: 0x11ae430b - full_name: "foo::union_decl" + type_id: 0xc5d9d969 + full_name: "foo::x3" } elf_symbol { - id: 0xcc7b4c14 - name: "_ZN3foo11qualif_declE" + id: 0x4ec44cf8 + name: "_ZN3foo2x4E" is_defined: true symbol_type: OBJECT - type_id: 0xe3126acd - full_name: "foo::qualif_decl" + type_id: 0xbc115339 + full_name: "foo::x4" } elf_symbol { - id: 0x0d128cae - name: "_ZN3foo11struct_declE" + id: 0x4d2c388b + name: "_ZN3foo2x5Ev" is_defined: true - symbol_type: OBJECT - type_id: 0x1d623957 - full_name: "foo::struct_decl" + symbol_type: FUNCTION + type_id: 0x9d80e32f + full_name: "foo::x5" } elf_symbol { - id: 0xdda2add0 - name: "_ZN3foo8var_declE" + id: 0x4e82b74d + name: "_ZN3foo2x6E" is_defined: true symbol_type: OBJECT - type_id: 0xfc0e1dbd - full_name: "foo::var_decl" + type_id: 0x3ba6625d + full_name: "foo::x6" } elf_symbol { - id: 0x8565a081 - name: "_ZN3foo9enum_declE" + id: 0x60294099 + name: "_ZN3foo2x7E" is_defined: true symbol_type: OBJECT - type_id: 0x6106a0e4 - full_name: "foo::enum_decl" + type_id: 0xf05bf1c2 + full_name: "foo::x7" } elf_symbol { - id: 0x1ba73e64 - name: "_ZN3foo9func_declENS_4helpE" - is_defined: true - symbol_type: FUNCTION - type_id: 0x8b1f0a39 - full_name: "foo::func_decl" -} -elf_symbol { - id: 0xf7cf66a4 - name: "_ZN7added_n3varE" + id: 0x59b8d44f + name: "_ZN3foo2x8E" is_defined: true symbol_type: OBJECT - type_id: 0x6720d32f - full_name: "added_n::var" + type_id: 0x249cfa0e + full_name: "foo::x8" } interface { id: 0x84ea5130 - symbol_id: 0xb29e1d18 - symbol_id: 0x8002d067 - symbol_id: 0x06614d1f - symbol_id: 0xcc7b4c14 - symbol_id: 0x0d128cae - symbol_id: 0xdda2add0 - symbol_id: 0x8565a081 - symbol_id: 0x1ba73e64 - symbol_id: 0xf7cf66a4 + symbol_id: 0x582117f7 + symbol_id: 0x717ce2f2 + symbol_id: 0x4a892240 + symbol_id: 0x4ec44cf8 + symbol_id: 0x4d2c388b + symbol_id: 0x4e82b74d + symbol_id: 0x60294099 + symbol_id: 0x59b8d44f } diff --git a/test_cases/info_tests/namespace/simple.cc b/test_cases/info_tests/namespace/simple.cc index a1075b3..44f901d 100644 --- a/test_cases/info_tests/namespace/simple.cc +++ b/test_cases/info_tests/namespace/simple.cc @@ -1,41 +1,25 @@ -namespace unchanged_n { -int var; -} - -namespace added_n { -int var; -} - -// Difference: every int below changed to long namespace foo { -long var_decl; - -long array_decl[5]; +int x1; -extern const long qualif_decl = 5; +int x2[5]; -typedef long typedef_decl; +extern const int x3 = 5; -struct help { - long* ptr_decl; - long& lref_decl; - long&& rref_decl; - typedef_decl t; -}; +typedef int type_definition; +type_definition x4; -long func_decl(help a) { - (void)a; +int x5() { return 0; } -struct StructDecl { - long x; -} struct_decl; +struct S { + int x; +} x6; -union UnionDecl { - long x; -} union_decl; +union U { + int x; +} x7; -enum class EnumDecl { X, Y, Z } enum_decl; +enum class E { X, Y } x8; } // namespace foo |