diff options
author | kaiw <kaiw@FreeBSD.org> | 2014-01-20 01:35:14 +0000 |
---|---|---|
committer | kaiw <kaiw@FreeBSD.org> | 2014-01-20 01:35:14 +0000 |
commit | cb3a8568bd4e3f2bf20a1c342c6957d1a568a5df (patch) | |
tree | 0161ffedd29f7d6a703f7ef5caf630097481c8fc /contrib/libc++/src | |
parent | 9ccc946cdb76c29bc6ec126ee139bdc025baf0a3 (diff) | |
download | FreeBSD-src-cb3a8568bd4e3f2bf20a1c342c6957d1a568a5df.zip FreeBSD-src-cb3a8568bd4e3f2bf20a1c342c6957d1a568a5df.tar.gz |
Clang 3.4 will sometimes emit DIE for struct/union member before
emitting the DIE for the type of that member. ctfconvert can not
handle this properly and will calculate a wrong member bit offset.
Same struct/union type from different .o file will be treated as
different types when their member bit offsets are different, and
gets added/merged multiple times. This will in turn cause many other
structs/pointers/typedefs that refer to the duplicated struct/union
gets added/merged multiple times and eventually causes numerous
duplicated CTF types in the kernel.debug file.
The simple workaround here is to make use of DW_AT_byte_size attribute
of the member DIE to calculate the bits occupied by the member's type,
without actually resolving the type.
Diffstat (limited to 'contrib/libc++/src')
0 files changed, 0 insertions, 0 deletions