Tested-by: Andrew Fish I tested the XCODE builds of the emulator and made sure that source level debugging worked probably for builds that generate symbols. Thanks, Andrew Fish > On Aug 16, 2019, at 8:09 AM, Michael D Kinney wrote: > > Jordan, > > It is not a typo. > > Andrew generated the XCODE specific changes, so they have > been tested by him. I have also reviewed and tested the XCODE > changes and verified that all 6 combinations build and boot > to shell (IA32/X64 for RELEASE/DEBUG/NOOPT). Since they are > all related to making EmulatorPkg work, we decided to fold > them into the same patch set that was already being reviewed. > > I also verified build and boot to shell for 6 combinations > on GCC5 (IA32/X64 for RELEASE/DEBUG/NOOPT) and the 12 > combinations of VS2015/VS2017, IA323/X64, RELEASE/DEBUG/NOOPT. > > I have been working on some CI experiments using Azure Pipelines. > Here is a pointer to the build logs for all the combinations > listed above. > > https://dev.azure.com/mikekinney/edk2-ci/_build/results?buildId=312 > > Mike > >> -----Original Message----- >> From: Justen, Jordan L >> Sent: Friday, August 16, 2019 12:41 AM >> To: Kinney, Michael D ; >> devel@edk2.groups.io >> Cc: Ni, Ray ; Andrew Fish >> >> Subject: Re: [Patch V4 06/10] EmulatorPkg: Fix XCODE5 >> lldb issues >> >> On 2019-08-15 19:14:33, Michael D Kinney wrote: >>> Fix scripts to support lldb symbolic debugging when >> using XCODE5 tool >>> chain. >>> >>> Cc: Jordan Justen >>> Cc: Ray Ni >>> Cc: Michael D Kinney >>> Signed-off-by: Andrew Fish >> >> Is this a Cc/Signed-off-by typo? (See also, patches 7- >> 10). >> >> This makes me wonder if you are taking advantage of the >> git commit -s switch to add your Signed-off-by. >> >> Also, I'm wondering if you are taking advantage of git- >> send-email automatically Cc'ing the addresses you >> listed in the commit message. >> (I thought it Cc'd for the author and Cc tags, but I >> wasn't sure about the Signed-off-by tag, and yet I see >> Andrew was Cc'd.) >> >> There's a couple long lines below. You could use \ at >> the end of the line to split the .sh line. I think the >> cd can be a separate command in a shell script. (Not in >> make) >> >> I hope someone that uses the XCODE toolchain could >> review/check the XCODE patches. >> >> -Jordan >> >>> --- >>> EmulatorPkg/Unix/lldbefi.py | 8 +++++--- >>> EmulatorPkg/build.sh | 17 ++--------------- >>> 2 files changed, 7 insertions(+), 18 deletions(-) >>> >>> diff --git a/EmulatorPkg/Unix/lldbefi.py >> b/EmulatorPkg/Unix/lldbefi.py >>> index 218326b8cb..099192d8b5 100755 >>> --- a/EmulatorPkg/Unix/lldbefi.py >>> +++ b/EmulatorPkg/Unix/lldbefi.py >>> @@ -346,6 +346,7 @@ def TypePrintFormating(debugger): >>> debugger.HandleCommand("type summary add CHAR8 - >> -python-function lldbefi.CHAR8_TypeSummary") >>> debugger.HandleCommand('type summary add --regex >> "CHAR8 >>> \[[0-9]+\]" --python-function >> lldbefi.CHAR8_TypeSummary') >>> >>> + debugger.HandleCommand('setting set frame-format >> "frame >>> + #${frame.index}: ${frame.pc}{ >>> + >> ${module.file.basename}{:${function.name}()${function.p >> c-offset}}}{ >>> + at ${line.file.fullpath}:${line.number}}\n"') >>> >>> gEmulatorBreakWorkaroundNeeded = True >>> >>> @@ -381,15 +382,16 @@ def >> LoadEmulatorEfiSymbols(frame, bp_loc , internal_dict): >>> Error = lldb.SBError() >>> FileNamePtr = frame.FindVariable >> ("FileName").GetValueAsUnsigned() >>> FileNameLen = frame.FindVariable >>> ("FileNameLength").GetValueAsUnsigned() >>> + >>> FileName = >> frame.thread.process.ReadCStringFromMemory >> (FileNamePtr, FileNameLen, Error) >>> if not Error.Success(): >>> print "!ReadCStringFromMemory() did not find >> a %d byte C string at %x" % (FileNameLen, FileNamePtr) >>> # make breakpoint command contiue >>> - frame.GetThread().GetProcess().Continue() >>> + return False >>> >>> debugger = frame.thread.process.target.debugger >>> if frame.FindVariable >> ("AddSymbolFlag").GetValueAsUnsigned() == 1: >>> - LoadAddress = frame.FindVariable >> ("LoadAddress").GetValueAsUnsigned() >>> + LoadAddress = frame.FindVariable >>> + ("LoadAddress").GetValueAsUnsigned() - 0x240 >>> >>> debugger.HandleCommand ("target modules add >> %s" % FileName) >>> print "target modules load --slid 0x%x %s" % >> (LoadAddress, >>> FileName) @@ -405,7 +407,7 @@ def >> LoadEmulatorEfiSymbols(frame, bp_loc , internal_dict): >>> print "!lldb.target.RemoveModule >> (%s) FAILED" % >>> SBModule >>> >>> # make breakpoint command contiue >>> - frame.thread.process.Continue() >>> + return False >>> >>> def GuidToCStructStr (guid, Name=False): >>> # >>> diff --git a/EmulatorPkg/build.sh >> b/EmulatorPkg/build.sh index >>> 60056e1b6c..35912a7775 100755 >>> --- a/EmulatorPkg/build.sh >>> +++ b/EmulatorPkg/build.sh >>> @@ -209,21 +209,8 @@ fi >>> if [[ "$RUN_EMULATOR" == "yes" ]]; then >>> case `uname` in >>> Darwin*) >>> - # >>> - # On Darwin we can't use dlopen, so we have to >> load the real PE/COFF images. >>> - # This .gdbinit script sets a breakpoint that >> loads symbols for the PE/COFFEE >>> - # images that get loaded in Host >>> - # >>> - if [[ "$CLANG_VER" == *-ccc-host-triple* ]] >>> - then >>> - # only older versions of Xcode support -ccc- >> host-tripe, for newer versions >>> - # it is -target >>> - cp $WORKSPACE/EmulatorPkg/Unix/lldbefi.py >> "$BUILD_OUTPUT_DIR/${BUILDTARGET}_$TARGET_TOOLS/$PROCES >> SOR" >>> - cd $BUILD_ROOT_ARCH; /usr/bin/lldb --source >> $WORKSPACE/EmulatorPkg/Unix/lldbinit Host >>> - exit $? >>> - else >>> - cp $WORKSPACE/EmulatorPkg/Unix/.gdbinit >> "$BUILD_OUTPUT_DIR/${BUILDTARGET}_$TARGET_TOOLS/$PROCES >> SOR" >>> - fi >>> + cd $BUILD_ROOT_ARCH; /usr/bin/lldb -o "command >> script import $WORKSPACE/EmulatorPkg/Unix/lldbefi.py" - >> o 'script lldb.debugger.SetAsync(True)' -o "run" ./Host >>> + exit $? >>> ;; >>> esac >>> >>> -- >>> 2.21.0.windows.1 >>> > > >