about the error:unable to restore file position to 0x00000ab0 for section __DWARF.__debug_info

I have this error occur when I link a new lib with my app.

I found a topic talking about this problem at http://comments.gmane.org/gmane.comp.debugging.lldb.devel/528
But I did not find a solution for solving this problem.

I use dwarfdump -R MyApp.dSYM before linking with a new lib, and I see that the __debug_info section has the size of 1.98G.
__debug_info __DWARF 0ec2d66b 7ed7c72d 0345c66b 00000000 00000000 00000000 00000000 00000000 00000000 1.98G 87.62%

So I guess when I link my new lib, it exceeds the maximum size. Is it 2.26G (= 1.98/.8762?)?

Is there some way that I can reduce __debug_info section?

Yingfang, Du

If you are compiling with clang the the following option is not on by default in older builds of the compiler. This issue has been resolved recently, but try adding:



Greg Clayton

Hi, Greg
Thanks very much for your time.
The flag -flimit-debug-info does not solve my problem.
I checked the .o files for my project that every .o file is very large (among 3.5MB to 6MB). I think this is the cause for my problem. I included too many header files in the precompile headers. There seems no way to let me strip the dup symbols when generate .dSYM files. The only option I find is -feliminate-dwarf2-dups which works only for dwarf2.
The concern to me is that even I switch to clang, can this problem be solved?

This is the problems that are caused by the "one definition rule" where in every .o file you will get an inline copy of every type duplicated in your DWARF. We do know about this issue and are actively working on a solution.

Greg Clayton

thanks for your information:).