On 2016-07-26 00:19:20, Ard Biesheuvel wrote:
> On 25 July 2016 at 22:56, Jordan Justen <jordan.l.jus...@intel.com> wrote:
> > I think you should make the build_rule changes in one patch, and the
> > tools_def changes in the second. GCCLD, in this patch, will not work
> > for using GCC as the linker.
> >
> 
> Not sure I understand what you mean. After his patch, GCC and GCCLD
> are 100% equivalent, and any toolchains could use either and get the
> exact same result, The gcc vs ld binary changes are in the next
> patch(es)

I meant that I don't think we need to make GCCLD equivalent at first.

Instead, I suggest we add GCCLD with the -Wl changes, but don't set
any toolchain to use it.

Then we update the tools_def in a separate patch to make some
toolchains use GCCLD, and at the same time change their linker flags
to add -Wl.

Basically, pull the build_rule changes into this patch from the next
patch, and push the tools_def changes from this patch into the next
patch.

-Jordan

> 
> -- 
> Ard.
> 
> > On 2016-07-23 02:03:18, Ard Biesheuvel wrote:
> >> Before we can make non-backward compatible changes to the GCC build rules
> >> regarding the use of the 'gcc' binary as the linker, clone the existing
> >> GCC build rules into a 'GCCLD' build rule family, and move the legacy
> >> toolchains UNIXGCC, CYGGCC, CYGGCCxASL and ELFGCC over to it.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.0
> >> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> >> ---
> >>  BaseTools/Conf/build_rule.template | 28 ++++++++++----------
> >>  BaseTools/Conf/tools_def.template  |  4 +++
> >>  2 files changed, 18 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/BaseTools/Conf/build_rule.template 
> >> b/BaseTools/Conf/build_rule.template
> >> index 91bcc1828cb5..3fea4f456118 100644
> >> --- a/BaseTools/Conf/build_rule.template
> >> +++ b/BaseTools/Conf/build_rule.template
> >> @@ -130,7 +130,7 @@
> >>      <Command.MSFT, Command.INTEL>
> >>          "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
> >>
> >> -    <Command.GCC, Command.RVCT>
> >> +    <Command.GCC, Command.GCCLD, Command.RVCT>
> >>          # For RVCTCYGWIN CC_FLAGS must be first to work around pathing 
> >> issues
> >>          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
> >>
> >> @@ -156,7 +156,7 @@
> >>      <Command.MSFT, Command.INTEL>
> >>          "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
> >>
> >> -    <Command.GCC, Command.RVCT>
> >> +    <Command.GCC, Command.GCCLD, Command.RVCT>
> >>          # For RVCTCYGWIN CC_FLAGS must be first to work around pathing 
> >> issues
> >>          "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
> >>          "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
> >> @@ -171,7 +171,7 @@
> >>      <OutputFile>
> >>          $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -o ${dst} $(INC) ${src}
> >>
> >>  [C-Header-File]
> >> @@ -187,7 +187,7 @@
> >>      <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>
> >>          ?.asm, ?.Asm, ?.ASM
> >>
> >> -    <InputFile.GCC>
> >> +    <InputFile.GCC, InputFile.GCCLD>
> >>          ?.S, ?.s
> >>
> >>      <ExtraDependency>
> >> @@ -201,7 +201,7 @@
> >>          Trim --source-code --convert-hex --trim-long -o 
> >> ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
> >>          "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) 
> >> ${d_path}(+)${s_base}.iii
> >>
> >> -    <Command.GCC, Command.RVCT>
> >> +    <Command.GCC, Command.GCCLD, Command.RVCT>
> >>          "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
> >>          Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii 
> >> ${d_path}(+)${s_base}.i
> >>          # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing 
> >> issues
> >> @@ -265,7 +265,7 @@
> >>      <Command.MSFT, Command.INTEL>
> >>          "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)
> >>
> >>      <Command.RVCT>
> >> @@ -291,7 +291,7 @@
> >>      <Command.MSFT, Command.INTEL>
> >>          "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) 
> >> @$(STATIC_LIBRARY_FILES_LIST)
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) 
> >> @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
> >>          "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
> >>
> >> @@ -319,7 +319,7 @@
> >>      <Command.MSFT, Command.INTEL>
> >>          "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) 
> >> @$(STATIC_LIBRARY_FILES_LIST)
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(DLINK)" $(DLINK_FLAGS) --start-group $(DLINK_SPATH) 
> >> @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
> >>
> >>      <Command.RVCT>
> >> @@ -346,7 +346,7 @@
> >>          $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
> >>          -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
> >>          -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR)
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug
> >>          $(OBJCOPY) --strip-unneeded -R .eh_frame ${src}
> >>
> >> @@ -402,7 +402,7 @@
> >>          Trim --source-code -l -o 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
> >>          "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i 
> >> $(INC_LIST) ${src}
> >>          "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
> >>          Trim --source-code -l -o 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
> >> @@ -423,7 +423,7 @@
> >>          "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> >>          "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(GENFW_FLAGS)
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj 
> >> $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
> >>          "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> >>          "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(GENFW_FLAGS)
> >> @@ -443,7 +443,7 @@
> >>          "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> >>          "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(GENFW_FLAGS)
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj 
> >> $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
> >>          "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
> >>          "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll 
> >> $(GENFW_FLAGS)
> >> @@ -472,7 +472,7 @@
> >>          "$(ASM16)" /nologo /c /omf $(INC) 
> >> /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii
> >>          "$(ASMLINK)" $(ASMLINK_FLAGS) 
> >> $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
> >>        Trim --source-code -o ${d_path}(+)${s_base}.iii 
> >> ${d_path}(+)${s_base}.i
> >>        "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) 
> >> $(INC) ${d_path}(+)${s_base}.iii
> >> @@ -596,7 +596,7 @@
> >>          "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g 
> >> $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
> >>          "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
> >>
> >> -    <Command.GCC>
> >> +    <Command.GCC, Command.GCCLD>
> >>          "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g 
> >> $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
> >>          "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}
> >>
> >> diff --git a/BaseTools/Conf/tools_def.template 
> >> b/BaseTools/Conf/tools_def.template
> >> index b36a19314215..8a04e38e1288 100644
> >> --- a/BaseTools/Conf/tools_def.template
> >> +++ b/BaseTools/Conf/tools_def.template
> >> @@ -4460,6 +4460,7 @@ DEFINE GCC49_AARCH64_ASLDLINK_FLAGS  = 
> >> DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
> >>  #   UNIXGCC         - UNIX GCC
> >>  #   ASL             - Intel Linux ACPI Source Language Compiler (iasl)
> >>  *_UNIXGCC_*_*_FAMILY               = GCC
> >> +*_UNIXGCC_*_*_BUILDRULEFAMILY      = GCCLD
> >>
> >>  *_UNIXGCC_*_MAKE_PATH                    = make
> >>  *_UNIXGCC_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
> >> @@ -5268,6 +5269,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = 
> >> DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS)
> >>  #   CYGGCC        - CygWin GCC
> >>  #   ASL           - Intel ACPI Source Language Compiler (iasl.exe)
> >>  *_CYGGCC_*_*_FAMILY              = GCC
> >> +*_CYGGCC_*_*_BUILDRULEFAMILY     = GCCLD
> >>
> >>  *_CYGGCC_*_*_DLL                 = DEF(CYGWIN_BIN)
> >>  *_CYGGCC_*_MAKE_PATH             = DEF(MS_VS_BIN)\nmake.exe
> >> @@ -5375,6 +5377,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = 
> >> DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS)
> >>  #   CYGGCCxASL        - CygWin GCC
> >>  #   ASL           - Microsoft ACPI Source Language Compiler (asl.exe)
> >>  *_CYGGCCxASL_*_*_FAMILY              = GCC
> >> +*_CYGGCCxASL_*_*_BUILDRULEFAMILY     = GCCLD
> >>
> >>  *_CYGGCCxASL_*_*_DLL                 = DEF(CYGWIN_BIN)
> >>  *_CYGGCCxASL_*_MAKE_PATH             = DEF(MS_VS_BIN)\nmake.exe
> >> @@ -5478,6 +5481,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = 
> >> DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS)
> >>  
> >> ####################################################################################
> >>  #   ELFGCC           - Linux ELF GCC
> >>  *_ELFGCC_*_*_FAMILY                 = GCC
> >> +*_ELFGCC_*_*_BUILDRULEFAMILY        = GCCLD
> >>  *_ELFGCC_*_MAKE_PATH                = make
> >>
> >>  *_ELFGCC_*_PP_FLAGS                     = -E -x assembler-with-cpp 
> >> -include AutoGen.h
> >> --
> >> 2.7.4
> >>
> >> _______________________________________________
> >> edk2-devel mailing list
> >> edk2-devel@lists.01.org
> >> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to