Ah, sorry I was afraid the RegisterContext_x86.h change might get lost so I 
checked that in.


Yeah, we'll need to do something about this for llgs.  We could add an ifdef to 
RegisterContext_x86.h but that would mean mac-to-linux or linux-to-mac 
debugging wouldn't work right.

eh_frame is used infrequently on Mac OS X at this point, and 32-bit 
development/debugging is uncommon outside of iOS simulator debugging.  We have 
an in-house "compact unwind info" format that the exception unwinder uses 
almost all of the time.  eh_frame still exists for unwind that can't be 
expressed in the compact unwind format -- this is almost entirely just 
hand-written eh_frame instructions.  e.g. sigtramp.  libobjc might have a few 
too.  But that's about it.

lldb doesn't have a compact unwind info reader yet but it's one of my 
free-weekend-TODOs in the back of my head.  We use the UnwindAssembly_x86 
instruction profiling almost all the time right now.

We'll still need to do the right thing for i386 darwin but if it's a mess to 
hack in, it won't be the biggest regression around.


> On Aug 12, 2014, at 5:52 PM, Todd Fiala <tfi...@google.com> wrote:
> 
> Hah ok I see I misread the comment check-in as the fix.
> 
> So - I am going to test and check in this:
> 
> Index: RegisterContext_x86.h
> ===================================================================
> --- RegisterContext_x86.h       (revision 215178)
> +++ RegisterContext_x86.h       (working copy)
> @@ -34,8 +34,8 @@
> 
>      gcc_ecx_i386,
>      gcc_edx_i386,
>      gcc_ebx_i386,
> 
> -    gcc_ebp_i386, // Warning: these are switched from dwarf values
> -    gcc_esp_i386, //
> +    gcc_esp_i386,  // on Darwin esp & ebp are reversed in the eh_frame 
> section for i386.
> +    gcc_ebp_i386,  // lldb will get those darwin-specific reg mappings from 
> debugserver instead of here.
> 
>      gcc_esi_i386,
>      gcc_edi_i386,
>      gcc_eip_i386,
> 
> (from Jason).
> 
> Jason - when we get MacOSX on lldb-gdbserver, we’ll just need to make sure we 
> don’t undo this fix for APPLE code. Is there anything else we might want to 
> do about this now while we’re thinking about it for migration purposes? (Like 
> - we could #ifdef it now correctly for APPLE and have it default to the linux 
> style just to be safe?)
> 
> -Todd
> 
> ​
> 
> 
> On Tue, Aug 12, 2014 at 5:41 PM, Todd Fiala <tfi...@google.com> wrote:
> Ok - see you already did it.  Thanks!
> 
> 
> On Tue, Aug 12, 2014 at 5:41 PM, Todd Fiala <tfi...@google.com> wrote:
> Ok - so Jason, your patch is fine to submit?
> 
> 
> On Tue, Aug 12, 2014 at 5:22 PM, Tong Shen <endlessr...@google.com> wrote:
> Sorry just saw this.. Agree.
> 
> 
> On Tue, Aug 12, 2014 at 5:08 PM, Jason Molenda <jmole...@apple.com> wrote:
> I believe the correct patch looks closer to
> 
> Index: RegisterContext_x86.h
> ===================================================================
> --- RegisterContext_x86.h       (revision 215178)
> +++ RegisterContext_x86.h       (working copy)
> @@ -34,8 +34,8 @@
>      gcc_ecx_i386,
>      gcc_edx_i386,
>      gcc_ebx_i386,
> -    gcc_ebp_i386, // Warning: these are switched from dwarf values
> -    gcc_esp_i386, //
> +    gcc_esp_i386,  // on Darwin esp & ebp are reversed in the eh_frame 
> section for i386.
> +    gcc_ebp_i386,  // lldb will get those darwin-specific reg mappings from 
> debugserver instead of here.
>      gcc_esi_i386,
>      gcc_edi_i386,
>      gcc_eip_i386,
> 
> 
> 
> > On Aug 12, 2014, at 5:05 PM, Todd Fiala <tfi...@google.com> wrote:
> >
> > Yep, will do later tonight.
> >
> > -Todd
> >
> > On Aug 12, 2014, at 4:32 PM, Tong Shen <endlessr...@google.com> wrote:
> >
> >> Got it. So much magic going on there.
> >>
> >> +Todd Can you check this in? Thanks!
> >>
> >>
> >> On Tue, Aug 12, 2014 at 4:23 PM, Jason Molenda <jmole...@apple.com> wrote:
> >>
> >> > On Aug 12, 2014, at 4:20 PM, Tong Shen <endlessr...@google.com> wrote:
> >> >
> >> > There's this line in your dwarfdump output:
> >> > DW_CFA_def_cfa (5 (esp), 4)
> >> > DW_CFA_offset (8 (eip), -4)
> >> >
> >> > On Ubuntu 14.04, objdump -W outputs this:
> >> > DW_CFA_def_cfa: r4 (esp) ofs 4
> >> > DW_CFA_offset: r8 (eip) at cfa-4
> >> >
> >> > I believe this is the cause. On OSX, esp=5; on linux, esp=4
> >>
> >>
> >> Yeah, I was starting to get that impression too.  I thought the old 
> >> esp/ebp mixup was across all the gcc platforms - but who knows.  Feel free 
> >> to fix the RegisterContext_x86 enum definitions for esp/ebp - on Mac OS X 
> >> we'll still be using the debugserver-provided register definitions.  (and 
> >> we don't use eh_frame very often on Mac OS X - we primarily use a local 
> >> compact unwind format that I haven't written an importer for yet)
> >>
> >> Normally this kind of thing would be defined in the processor ABI document 
> >> -- but I've never been able to find a document like that for IA-32.
> >>
> >>
> >>
> >> --
> >> Best Regards, Tong Shen
> >> <1.patch>
> 
> 
> 
> 
> -- 
> Best Regards, Tong Shen
> 
> 
> 
> -- 
> Todd Fiala |   Software Engineer |     tfi...@google.com |     650-943-3180
> 
> 
> 
> 
> -- 
> Todd Fiala |   Software Engineer |     tfi...@google.com |     650-943-3180
> 
> 
> 
> 
> -- 
> Todd Fiala |   Software Engineer |     tfi...@google.com |     650-943-3180
> 


_______________________________________________
lldb-commits mailing list
lldb-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to