llvm-gcc's sjlj-eh support

Hi,
    many people suggest that if we want llvm to support sjlj-eh, we
should modify the llvm-gcc to generate sjlj-style IR.
yeah, I'm digging into the llvm-gcc now. there are some functions,
at the llvm-gcc
e.g
TreeToLLVM::CreateExceptionValues() ,
BasicBlock *TreeToLLVM::getPostPad(unsigned RegionNo),
void TreeToLLVM::EmitLandingPads(),
void TreeToLLVM::EmitPostPads() ,
void TreeToLLVM::EmitUnwindBlock()

the above functions are relative for llvm-gcc generate the
exception-IR, but for dwarf-style! so we should change these above
functions to generate sjlj-style exception-IR, base on the
different semantics between dwarf-eh and sjlj-eh.
my problem is : what 's different semantics between dwarf-eh and sjlj-eh ?

best regards
zhangzw