mirror of
git://sourceware.org/git/libabigail.git
synced 2025-03-10 16:47:52 +00:00
If the subrange's upper_bound is lower than its lower_bound, that means the subrange has a length of zero. This is Ada lingo. You can learn more about this at https://en.wikibooks.org/wiki/Ada_Programming/Types/array#Array_Attributes, for instance. This patch teaches the DWARF reader about this. * src/abg-dwarf-reader.cc (build_subrange_type): Be aware that the upper_bound can be lower than lower_bound.. This most likely means the length of the subrange is zero. * src/abg-ir.cc (array_type_def::subrange_type::get_length): If lower_bound > upper_bound, then length is zero. This is Ada lingo. * src/abg-writer.cc (write_array_subrange_type): Always emit lower_bound and upper_bound. Acknowledge that if lower_bound > upper_bound, it means length is zero. * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-annotate/test7.so.abi: Likewise. * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Likewise. * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: Likewise. * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise. * tests/data/test-read-btf/test0.o.abi: Likewise. * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. * tests/data/test-read-ctf/test-array-mdimension.abi: Likewise. * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. * tests/data/test-read-ctf/test-array-size.abi: Likewise. * tests/data/test-read-ctf/test-const-array.abi: Likewise. * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. * tests/data/test-read-ctf/test0.abi: Likewise. * tests/data/test-read-ctf/test0.hash.abi: Likewise. * tests/data/test-read-ctf/test9.o.abi: Likewise. * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. * tests/data/test-read-dwarf/test7.so.abi: Likewise. * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. * tests/data/test-read-write/test25.xml: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
91 lines
5.2 KiB
Plaintext
91 lines
5.2 KiB
Plaintext
<abi-corpus version='2.2' path='data/test-read-btf/test0.o'>
|
|
<elf-function-symbols>
|
|
<elf-symbol name='fn0' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
|
</elf-function-symbols>
|
|
<elf-variable-symbols>
|
|
<elf-symbol name='foos' size='160' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
|
</elf-variable-symbols>
|
|
<abi-instr address-size='64'>
|
|
<type-decl name='char' size-in-bits='8' id='type-id-1'/>
|
|
<enum-decl name='ANOTHER_ENUM_TYPE' linkage-name='ANOTHER_ENUM_TYPE' id='type-id-2'>
|
|
<underlying-type type-id='type-id-3'/>
|
|
<enumerator name='E0_ANOTHER_ENUM_TYPE' value='0'/>
|
|
<enumerator name='E1_ANOTHER_ENUM_TYPE' value='1'/>
|
|
</enum-decl>
|
|
<enum-decl name='ENUM_TYPE' linkage-name='ENUM_TYPE' id='type-id-4'>
|
|
<underlying-type type-id='type-id-5'/>
|
|
<enumerator name='E0_ENUM_TYPE' value='0'/>
|
|
<enumerator name='E1_ENUM_TYPE' value='1'/>
|
|
</enum-decl>
|
|
<type-decl name='enum-ANOTHER_ENUM_TYPE-underlying-type-32' size-in-bits='32' alignment-in-bits='32' id='type-id-3'/>
|
|
<type-decl name='enum-ENUM_TYPE-underlying-type-32' size-in-bits='32' alignment-in-bits='32' id='type-id-5'/>
|
|
<type-decl name='float' size-in-bits='32' id='type-id-6'/>
|
|
<array-type-def dimensions='1' type-id='type-id-6' size-in-bits='320' id='type-id-7'>
|
|
<subrange length='10' lower-bound='0' upper-bound='9' id='type-id-8'/>
|
|
</array-type-def>
|
|
<array-type-def dimensions='1' type-id='type-id-9' size-in-bits='1280' id='type-id-10'>
|
|
<subrange length='2' lower-bound='0' upper-bound='1' id='type-id-11'/>
|
|
</array-type-def>
|
|
<type-decl name='int' size-in-bits='32' id='type-id-12'/>
|
|
<class-decl name='foo_type' size-in-bits='640' is-struct='yes' visibility='default' id='type-id-9'>
|
|
<data-member access='public' layout-offset-in-bits='0'>
|
|
<var-decl name='m0' type-id='type-id-13' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public' layout-offset-in-bits='64'>
|
|
<var-decl name='m1' type-id='type-id-14' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public' layout-offset-in-bits='128'>
|
|
<var-decl name='m2' type-id='type-id-15' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public' layout-offset-in-bits='192'>
|
|
<var-decl name='m3' type-id='type-id-16' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public' layout-offset-in-bits='256'>
|
|
<var-decl name='m4' type-id='type-id-7' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public' layout-offset-in-bits='576'>
|
|
<var-decl name='m5' type-id='type-id-17' visibility='default'/>
|
|
</data-member>
|
|
</class-decl>
|
|
<typedef-decl name='ANOTHER_ENUM_TYPE' type-id='type-id-2' id='type-id-18'/>
|
|
<typedef-decl name='ENUM_TYPE' type-id='type-id-4' id='type-id-19'/>
|
|
<typedef-decl name='foo_type' type-id='type-id-9' id='type-id-20'/>
|
|
<typedef-decl name='u_type' type-id='type-id-21' id='type-id-22'/>
|
|
<union-decl name='u_type' size-in-bits='64' visibility='default' id='type-id-21'>
|
|
<data-member access='public'>
|
|
<var-decl name='m0' type-id='type-id-23' visibility='default'/>
|
|
</data-member>
|
|
<data-member access='public'>
|
|
<var-decl name='m1' type-id='type-id-24' visibility='default'/>
|
|
</data-member>
|
|
</union-decl>
|
|
<type-decl name='unsigned char' size-in-bits='8' id='type-id-25'/>
|
|
<type-decl name='unsigned int' size-in-bits='32' id='type-id-26'/>
|
|
<pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-24'/>
|
|
<pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-23'/>
|
|
<qualified-type-def type-id='type-id-20' const='yes' id='type-id-27'/>
|
|
<pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-28'/>
|
|
<qualified-type-def type-id='type-id-12' const='yes' id='type-id-29'/>
|
|
<pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-13'/>
|
|
<qualified-type-def type-id='type-id-22' const='yes' id='type-id-30'/>
|
|
<qualified-type-def type-id='type-id-25' const='yes' id='type-id-31'/>
|
|
<pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-15'/>
|
|
<qualified-type-def type-id='type-id-1' volatile='yes' id='type-id-32'/>
|
|
<pointer-type-def type-id='type-id-32' size-in-bits='64' id='type-id-14'/>
|
|
<qualified-type-def type-id='type-id-30' volatile='yes' id='type-id-33'/>
|
|
<pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-17'/>
|
|
<qualified-type-def type-id='type-id-31' volatile='yes' id='type-id-34'/>
|
|
<pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-16'/>
|
|
<var-decl name='foos' type-id='type-id-10' mangled-name='foos' visibility='default' elf-symbol-id='foos'/>
|
|
<function-decl name='fn0' mangled-name='fn0' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fn0'>
|
|
<parameter type-id='type-id-28' name='p'/>
|
|
<return type-id='type-id-35'/>
|
|
</function-decl>
|
|
<type-decl name='void' id='type-id-35'/>
|
|
<function-type size-in-bits='64' id='type-id-36'>
|
|
<parameter type-id='type-id-28' name='p'/>
|
|
<return type-id='type-id-35'/>
|
|
</function-type>
|
|
</abi-instr>
|
|
</abi-corpus>
|