Andarwinux wrote:

> > > * Add an unwind v3 pass to chain unwind info if there are too many 
> > > epilogs in a function and raise a fatal error if there are too many 
> > > instructions in a prolog or epilog.
> > 
> > 
> > Is this expected limitation of unwindv3, or is it some workaround?
> > I encountered this problem when trying unwindv3 in an actual codebase:
> > ```
> > ld.lld: error: <unknown>:0: value of 308819 is too large for field of 2 
> > bytes
> > 
> > 
> > ld.lld: error: undefined symbol: typeinfo for MediaInfoLib::File_Adm
> > >>> referenced by mediainfo.exe.lto.obj:(vtable for MediaInfoLib::File_Adm)
> > ```
> 
> This is a fundamental limitation on unwind v3 - the encoding limits only 
> provides so many bits to store counts and offsets.
> 
> Do you happen to have a reliable repro for that?
> 
> That error happens to be a generic "too big for a fixup" error:
> 
> https://github.com/llvm/llvm-project/blob/652915c8bb58dc5e8370fe417f64949207c0f593/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp#L710-L717
> 
> We need to know which of the various offsets is too large. Given the size of 
> that, I wonder if it is because we're using the offset from the beginning of 
> the function to the first epilog and should switch to using the offset from 
> the end of the function to the last instead.

https://github.com/Andarwinux/_/releases/download/unwindv3/test.zip

This is a lld reproduce, you can run `lld-link @response.txt` to reproduce it.

https://github.com/llvm/llvm-project/pull/200249
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to