mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-24 16:27:42 +01:00
Generate debug symbol with Xcode8
Quick patch to make DumpEfiCalls works with OpenCore.
This commit is contained in:
parent
f4b3445135
commit
e7fe794c4d
@ -425,7 +425,7 @@
|
||||
@"$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff
|
||||
@"echo" [MTOC] $(MODULE_NAME)
|
||||
# create symbol file for GDB debug
|
||||
#@-$(DSYMUTIL) ${src}
|
||||
@-$(DSYMUTIL) ${src}
|
||||
@"$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)
|
||||
@$(CP) ${dst} $(DEBUG_DIR)
|
||||
@$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
|
||||
|
@ -2503,13 +2503,13 @@ RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64
|
||||
*_XCODE5_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
|
||||
|
||||
|
||||
DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS
|
||||
DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS
|
||||
# -mno-implicit-float
|
||||
# -Wno-varargs
|
||||
# -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang
|
||||
# $(PLATFORM_FLAGS)
|
||||
|
||||
NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS
|
||||
NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS
|
||||
# -mno-implicit-float
|
||||
# -Wno-varargs
|
||||
# -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang
|
||||
@ -2577,7 +2577,7 @@ RELEASE_XCODE8_X64_ASM_FLAGS = -c -x assembler -arch x86_64
|
||||
*_XCODE8_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_XCODE8_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
|
||||
|
||||
DEBUG_XCODE8_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare "-DNO_MSABI_VA_FUNCS" -mno-red-zone
|
||||
DEBUG_XCODE8_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare "-DNO_MSABI_VA_FUNCS" -mno-red-zone
|
||||
# -Wno-varargs
|
||||
# -mno-implicit-float
|
||||
RELEASE_XCODE8_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare "-DNO_MSABI_VA_FUNCS" -mno-red-zone
|
||||
|
@ -13,6 +13,8 @@
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/PeCoffLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
|
||||
#include <Protocol/LoadedImage.h>
|
||||
//#include <Protocol/Runtime.h>
|
||||
@ -136,6 +138,27 @@ DumpUefiCallsEntrypoint (
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
|
||||
#ifdef JIEF_DEBUG
|
||||
{
|
||||
EFI_LOADED_IMAGE* LoadedImage;
|
||||
EFI_STATUS Status = gBS->HandleProtocol(ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &LoadedImage);
|
||||
|
||||
if ( !EFI_ERROR(Status) ) {
|
||||
CHAR8 buf[50];
|
||||
AsciiSPrint(buf, sizeof(buf)-1, "DumpEfiCalls : Image base = 0x%X\n", (UINTN)LoadedImage->ImageBase); // do not change, it's used by grep to feed the debugger
|
||||
SerialPortWrite((UINT8*)buf, AsciiStrLen(buf));
|
||||
AsciiSPrint(buf, sizeof(buf)-1, "LoadedImage.DeviceHandle = 0x%X\n", (UINTN)LoadedImage->DeviceHandle); // do not change, it's used by grep to feed the debugger
|
||||
SerialPortWrite((UINT8*)buf, AsciiStrLen(buf));
|
||||
}
|
||||
// if ( !EFI_ERROR(Status) ) DBG("DumpEfiCalls : Image base = 0x%llX\n", (uintptr_t)LoadedImage->ImageBase); // do not change, it's used by grep to feed the debugger
|
||||
|
||||
gBS->Stall(3500000); // to give time to gdb to connect
|
||||
// gBS->Stall(0500000); // to give time to gdb to connect
|
||||
// PauseForKey(L"press\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// Override StartImage
|
||||
// other overrides will be done from there when boot loader is started
|
||||
|
@ -41,6 +41,8 @@
|
||||
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||
UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
|
||||
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
|
||||
|
||||
[Components]
|
||||
Protocols/DumpUefiCalls/DumpUefiCalls.inf
|
||||
|
@ -81,6 +81,13 @@ FsGetSelfFileSystem(VOID)
|
||||
if (gLoadedImage == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if( gLoadedImage->DeviceHandle != NULL ) return FsGetFileSystem(gLoadedImage->DeviceHandle);
|
||||
|
||||
EFI_STATUS Status = gBS->HandleProtocol(gLoadedImage->ParentHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &gLoadedImage);
|
||||
if (Status != EFI_SUCCESS) {
|
||||
Print(L"FsGetLoadedImage: HandleProtocol(gEfiLoadedImageProtocolGuid) = %r\n", Status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return FsGetFileSystem(gLoadedImage->DeviceHandle);
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ case `uname` in
|
||||
echo DumpUefiCalls requires Snow Leopard or later OS
|
||||
exit 1
|
||||
else
|
||||
TARGET_TOOLS=XCODE5
|
||||
TARGET_TOOLS=XCODE8
|
||||
fi
|
||||
;;
|
||||
Linux*)
|
||||
@ -80,12 +80,12 @@ do
|
||||
|
||||
if [[ $arg == cleanall ]]; then
|
||||
make -C $WORKSPACE/BaseTools clean
|
||||
build -p $WORKSPACE/Clover/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
|
||||
build -p $WORKSPACE/Protocols/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [[ $arg == clean ]]; then
|
||||
build -p $WORKSPACE/Clover/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
|
||||
build -p $WORKSPACE/Protocols/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
|
||||
exit $?
|
||||
fi
|
||||
done
|
||||
@ -95,6 +95,6 @@ done
|
||||
# Build the edk2 ShellPkg
|
||||
#
|
||||
echo Running edk2 build for DumpUefiCalls
|
||||
build -p $WORKSPACE/Clover/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3
|
||||
build -p $WORKSPACE/Protocols/DumpUefiCalls/DumpUefiCalls.dsc -a $PROCESSOR -t $TARGET_TOOLS -b DEBUG -n 3
|
||||
exit $?
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user