[PATCH] D144999: [Clang][MC][MachO]Only emits compact-unwind format for "canonical" personality symbols. For the rest, use DWARFs.

Michael Buch via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 13 08:31:24 PDT 2023


Michael137 added a comment.

In D144999#4417731 <https://reviews.llvm.org/D144999#4417731>, @oontvoo wrote:

> In D144999#4415419 <https://reviews.llvm.org/D144999#4415419>, @oontvoo wrote:
>
>> In D144999#4415137 <https://reviews.llvm.org/D144999#4415137>, @jasonmolenda wrote:
>>
>>> Michael and I looked into this.  This simple c++ file is resulting in eh_frame unwind info on aarch64 darwin instead of compact unwind info.
>
> P.S: still no luck reproducing this with TOT clang.  Would you mind verifying my test case below (this was on M1 <https://reviews.llvm.org/M1> mac):
>
>   ### clang is built with commit up to 5b1c62c0f2e9a739707429f650cb897c067f86c2
>   vyng-macbookpro3 /Users/vyng/repo/llvm-project/build_all$ ./bin/clang++  ../cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp -g -O0 -c -o test_tot.o
>   
>   vyng-macbookpro3 /Users/vyng/repo/llvm-project/build_all$ objdump --macho --unwind-info --dwarf=frames  test_tot.o
>   Contents of __compact_unwind section:
>     Entry at offset 0x0:
>       start:                0x0 ltmp0
>       length:               0x70
>       compact encoding:     0x44000000
>       personality function: 0x0 ___gxx_personality_v0
>       LSDA:                 0x238 ltmp1
>     Entry at offset 0x20:
>       start:                0x70 __ZN12_GLOBAL__N_11AC1Ev
>       length:               0x2c
>       compact encoding:     0x04000000
>     Entry at offset 0x40:
>       start:                0x9c __ZN12_GLOBAL__N_11A7getDataEv
>       length:               0x78
>       compact encoding:     0x04000000
>     Entry at offset 0x60:
>       start:                0x114 __ZN12_GLOBAL__N_11AD1Ev
>       length:               0x2c
>       compact encoding:     0x04000000
>     Entry at offset 0x80:
>       start:                0x140 __ZN12_GLOBAL__N_11AC2Ev
>       length:               0x2c
>       compact encoding:     0x02001000
>     Entry at offset 0xa0:
>       start:                0x16c __ZN12_GLOBAL__N_11A12setOtherDataEv
>       length:               0x74
>       compact encoding:     0x04000000
>     Entry at offset 0xc0:
>       start:                0x1e0 __ZN12_GLOBAL__N_11A12getOtherDataEv
>       length:               0x18
>       compact encoding:     0x02001000
>     Entry at offset 0xe0:
>       start:                0x1f8 __ZN12_GLOBAL__N_11AD2Ev
>       length:               0x40
>       compact encoding:     0x04000000
>   
>   .debug_frame contents:
>   
>   
>   .eh_frame contents:
>   <<<< nothing in eh_frame section, which is expected and matches what produced by base clang

Sorry for the back-and-forth
Looks like D152540 <https://reviews.llvm.org/D152540> did indeed resolve this. The bots apparently didn't pick that change up until today. And locally I must've been producing the binary without that commit

It's all good now, thanks!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144999/new/

https://reviews.llvm.org/D144999



More information about the llvm-commits mailing list