Skip to content
  • Bill Wendling's avatar
    Add an option that allows one to "decode" the LSDA. · e303114b
    Bill Wendling authored
    The LSDA is a bit difficult for the non-initiated to read. Even with comments,
    it's not always clear what's going on. This wraps the ASM streamer in a class
    that retains the LSDA and then emits a human-readable description of what's
    going on in it.
    
    So instead of having to make sense of:
    
    Lexception1:
            .byte   255
            .byte   155
            .byte   168
            .space  1
            .byte   3
            .byte   26
    Lset0 = Ltmp7-Leh_func_begin1
          .long     Lset0
    Lset1 = Ltmp812-Ltmp7
          .long     Lset1
    Lset2 = Ltmp913-Leh_func_begin1
          .long     Lset2
          .byte     3
    Lset3 = Ltmp812-Leh_func_begin1
          .long     Lset3
    Lset4 = Leh_func_end1-Ltmp812
          .long     Lset4
          .long     0
          .byte     0
          .byte     1
          .byte     0
          .byte     2
          .byte     125
          .long     __ZTIi@GOTPCREL+4
          .long     __ZTIPKc@GOTPCREL+4
    
    you can read this instead:
    
    ## Exception Handling Table: Lexception1
    ##  @LPStart Encoding: omit
    ##    @TType Encoding: indirect pcrel sdata4
    ##        @TType Base: 40 bytes
    ## @CallSite Encoding: udata4
    ## @Action Table Size: 26 bytes
    
    ## Action 1:
    ##   A throw between Ltmp7 and Ltmp812 jumps to Ltmp913 on an exception.
    ##     For type(s):  __ZTIi@GOTPCREL+4 __ZTIPKc@GOTPCREL+4
    ## Action 2:
    ##   A throw between Ltmp812 and Leh_func_end1 does not have a landing pad.
    
    llvm-svn: 133286
    e303114b
Loading