On Thursday, 4 January 2018 18:32:03 CET Josh Poimboeuf wrote: > On Thu, Jan 04, 2018 at 05:56:30PM +0100, Markus wrote: > > On Thursday, 4 January 2018 16:46:13 CET Josh Poimboeuf wrote: > > > I don't see anything unusual there. Are there any Gentoo patches > > > against either the kernel or GCC which would strip unused symbols? > > > > The kernel is the vanilla kernel. (4.14.11 and also 4.15-rc6) > > Its not a gentoo specific gcc patch. (Then every gentoo user would be > > affected?) > > > > But I enabled ld.gold as default linker like 5 years ago. Never had a > > problem with this. > > > > Is ld.gold supposed to fail here? > > > > I switched back to ld.bfd and it seems to work. > > Ah, that explains it. With CONFIG_MODVERSIONS, the linker does some > work after gcc, but before objtool. Can you try this patch? (Note this > isn't the final patch, as this breaks the CONFIG_MODVERSIONS=n case.) > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > index cb8997ed0149..3cf3cc6077ea 100644 > --- a/scripts/Makefile.build > +++ b/scripts/Makefile.build > @@ -270,7 +270,7 @@ endif > # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a > file cmd_objtool = $(if $(patsubst y%,, \ > $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$ (OBJECT_FILES_NON_STANDARD)n) > , \ - $(__objtool_obj) $(objtool_args) "$(@)";) > + $(__objtool_obj) $(objtool_args) "$(@D)/.tmp_$(@F)";) > objtool_obj = $(if $(patsubst y%,, \ > $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$ (OBJECT_FILES_NON_STANDARD)n) > , \ $(__objtool_obj)) > @@ -286,16 +286,16 @@ objtool_dep = $(objtool_obj) > \ > define rule_cc_o_c > $(call echo-cmd,checksrc) $(cmd_checksrc) \ > $(call cmd_and_fixdep,cc_o_c) \ > + $(call echo-cmd,objtool) $(cmd_objtool) \ > $(cmd_modversions_c) \ > $(cmd_checkdoc) \ > - $(call echo-cmd,objtool) $(cmd_objtool) \ > $(call echo-cmd,record_mcount) $(cmd_record_mcount) > endef > > define rule_as_o_S > $(call cmd_and_fixdep,as_o_S) \ > - $(cmd_modversions_S) \ > - $(call echo-cmd,objtool) $(cmd_objtool) > + $(call echo-cmd,objtool) $(cmd_objtool) \ > + $(cmd_modversions_S) > endef > > # List module undefined symbols (or empty line if not enabled)
With that patch the kernel is building with ld.gold. BR, Markus

