All of lore.kernel.org
 help / color / mirror / Atom feed
* Build failure in -next due to 'sh: thin archives fix linking'
@ 2017-06-28 12:38 Guenter Roeck
  2017-06-28 12:58 ` Nicholas Piggin
  0 siblings, 1 reply; 5+ messages in thread
From: Guenter Roeck @ 2017-06-28 12:38 UTC (permalink / raw)
  To: Nicholas Piggin, Masahiro Yamada, linux-kernel

Hi,

I see the following build error in -next when building sh:rts7751r2dplus_defconfig.

sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: compiled for a big endian system and target is little endian
sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: uses instructions which are incompatible with instructions used in previous modules
sh4-linux-ld: failed to merge target specific data of file arch/sh/kernel/vsyscall/vsyscall-dummy.o
make[2]: *** [arch/sh/kernel/vsyscall/vsyscall-syms.o] Error 1

Bisect points to 'sh: thin archives fix linking' as the culprit. Bisect log is attached.
I tried with gcc 4.8.3 and 6.3.0, both built with buildroot for sh4eb.

After reverting the offending patch, I get the following error.

arch/sh/kernel/signal_32.o: In function `do_signal':
signal_32.c:(.text+0x5c4): undefined reference to `__kernel_sigreturn'
signal_32.c:(.text+0x724): undefined reference to `__kernel_rt_sigreturn'
Makefile:989: recipe for target 'vmlinux' failed

Guenter

---
# bad: [89a39f3c7086301342175c461c4db43c68d34cc7] Add linux-next specific files for 20170627
# good: [c0bc126f97fb929b3ae02c1c62322645d70eb408] Linux 4.12-rc7
git bisect start 'HEAD' 'v4.12-rc7'
# bad: [32e240e33387e1c3dcf302518d4420e7f19d51e2] Merge remote-tracking branch 'crypto/master'
git bisect bad 32e240e33387e1c3dcf302518d4420e7f19d51e2
# bad: [5fa6b60a63a80c0d1adc4a7d2478fc7d22593493] Merge remote-tracking branch 'printk/for-next'
git bisect bad 5fa6b60a63a80c0d1adc4a7d2478fc7d22593493
# bad: [99f4c8ff2a80c7c39dfd5558bda9f125313fc7ef] Merge remote-tracking branch 'arm-soc/for-next'
git bisect bad 99f4c8ff2a80c7c39dfd5558bda9f125313fc7ef
# good: [fff3affce6cd166063a56528e42eaf16c6a901b8] Merge branch 'next/dt' into for-next
git bisect good fff3affce6cd166063a56528e42eaf16c6a901b8
# good: [88ad71aab1a7931ac3d35c3acaa431c3dc05afd9] [media] vimc: sen: Support several image formats
git bisect good 88ad71aab1a7931ac3d35c3acaa431c3dc05afd9
# bad: [2bbc45806045b005f6a0f6db22a341f52622aca8] Merge remote-tracking branch 'asm-generic/master'
git bisect bad 2bbc45806045b005f6a0f6db22a341f52622aca8
# bad: [fd47ada97a68d8be20dbdc115343f9d51bdf3714] Merge remote-tracking branch 'kbuild/for-next'
git bisect bad fd47ada97a68d8be20dbdc115343f9d51bdf3714
# good: [1887a40b8699a8bde4a0b2883a1381c0a6e119e6] Merge remote-tracking branch 'net/master'
git bisect good 1887a40b8699a8bde4a0b2883a1381c0a6e119e6
# bad: [39be5eac380dabc761c47358cdf8036bb5090f6b] Merge branches 'misc', 'kbuild' and 'thin-ar' into for-next
git bisect bad 39be5eac380dabc761c47358cdf8036bb5090f6b
# bad: [e7238f4fac14967bba823ef4b4b77ee928a4860a] kbuild: thin archives make default for all archs
git bisect bad e7238f4fac14967bba823ef4b4b77ee928a4860a
# good: [9fc5b7bc3c905ad207f21e8478659f4b935407c4] kbuild: handle libs-y archives separately from built-in.o archives
git bisect good 9fc5b7bc3c905ad207f21e8478659f4b935407c4
# bad: [11690a748f62365890a9a9f9abf56ada9b7d5c40] ia64: thin archives fix linking
git bisect bad 11690a748f62365890a9a9f9abf56ada9b7d5c40
# bad: [e2c99c9125c39eb43960da79f5691126b55d4b6c] sh: thin archives fix linking
git bisect bad e2c99c9125c39eb43960da79f5691126b55d4b6c
# first bad commit: [e2c99c9125c39eb43960da79f5691126b55d4b6c] sh: thin archives fix linking

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Build failure in -next due to 'sh: thin archives fix linking'
  2017-06-28 12:38 Build failure in -next due to 'sh: thin archives fix linking' Guenter Roeck
@ 2017-06-28 12:58 ` Nicholas Piggin
  2017-06-28 14:02   ` Guenter Roeck
  0 siblings, 1 reply; 5+ messages in thread
From: Nicholas Piggin @ 2017-06-28 12:58 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Masahiro Yamada, linux-kernel

On Wed, 28 Jun 2017 05:38:50 -0700
Guenter Roeck <linux@roeck-us.net> wrote:

> Hi,
> 
> I see the following build error in -next when building sh:rts7751r2dplus_defconfig.
> 
> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: compiled for a big endian system and target is little endian
> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: uses instructions which are incompatible with instructions used in previous modules
> sh4-linux-ld: failed to merge target specific data of file arch/sh/kernel/vsyscall/vsyscall-dummy.o
> make[2]: *** [arch/sh/kernel/vsyscall/vsyscall-syms.o] Error 1
> 
> Bisect points to 'sh: thin archives fix linking' as the culprit. Bisect log is attached.
> I tried with gcc 4.8.3 and 6.3.0, both built with buildroot for sh4eb.

Thanks for the report. In arch/sh/kernel/vsyscall/Makefile, the line:

 cmd_syscall_syms = $(LD) -r -o $@ -R $<

Can you try adding $(LDFLAGS), e.g. change it to:

 cmd_syscall_syms = $(LD) $(LDFLAGS) -r -o $@ -R $<

Thanks,
Nick

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Build failure in -next due to 'sh: thin archives fix linking'
  2017-06-28 12:58 ` Nicholas Piggin
@ 2017-06-28 14:02   ` Guenter Roeck
  2017-06-29 15:36     ` Masahiro Yamada
  0 siblings, 1 reply; 5+ messages in thread
From: Guenter Roeck @ 2017-06-28 14:02 UTC (permalink / raw)
  To: Nicholas Piggin; +Cc: Masahiro Yamada, linux-kernel

On 06/28/2017 05:58 AM, Nicholas Piggin wrote:
> On Wed, 28 Jun 2017 05:38:50 -0700
> Guenter Roeck <linux@roeck-us.net> wrote:
> 
>> Hi,
>>
>> I see the following build error in -next when building sh:rts7751r2dplus_defconfig.
>>
>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: compiled for a big endian system and target is little endian
>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: uses instructions which are incompatible with instructions used in previous modules
>> sh4-linux-ld: failed to merge target specific data of file arch/sh/kernel/vsyscall/vsyscall-dummy.o
>> make[2]: *** [arch/sh/kernel/vsyscall/vsyscall-syms.o] Error 1
>>
>> Bisect points to 'sh: thin archives fix linking' as the culprit. Bisect log is attached.
>> I tried with gcc 4.8.3 and 6.3.0, both built with buildroot for sh4eb.
> 
> Thanks for the report. In arch/sh/kernel/vsyscall/Makefile, the line:
> 
>   cmd_syscall_syms = $(LD) -r -o $@ -R $<
> 
> Can you try adding $(LDFLAGS), e.g. change it to:
> 
>   cmd_syscall_syms = $(LD) $(LDFLAGS) -r -o $@ -R $<
> 

That fixes the problem (including the missing symbols seen after reverting the offending patch).

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Build failure in -next due to 'sh: thin archives fix linking'
  2017-06-28 14:02   ` Guenter Roeck
@ 2017-06-29 15:36     ` Masahiro Yamada
  2017-06-29 16:58       ` Nicholas Piggin
  0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2017-06-29 15:36 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Nicholas Piggin, linux-kernel

Hi.

2017-06-28 23:02 GMT+09:00 Guenter Roeck <linux@roeck-us.net>:
> On 06/28/2017 05:58 AM, Nicholas Piggin wrote:
>>
>> On Wed, 28 Jun 2017 05:38:50 -0700
>> Guenter Roeck <linux@roeck-us.net> wrote:
>>
>>> Hi,
>>>
>>> I see the following build error in -next when building
>>> sh:rts7751r2dplus_defconfig.
>>>
>>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: compiled for a
>>> big endian system and target is little endian
>>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: uses instructions
>>> which are incompatible with instructions used in previous modules
>>> sh4-linux-ld: failed to merge target specific data of file
>>> arch/sh/kernel/vsyscall/vsyscall-dummy.o
>>> make[2]: *** [arch/sh/kernel/vsyscall/vsyscall-syms.o] Error 1
>>>
>>> Bisect points to 'sh: thin archives fix linking' as the culprit. Bisect
>>> log is attached.
>>> I tried with gcc 4.8.3 and 6.3.0, both built with buildroot for sh4eb.
>>
>>
>> Thanks for the report. In arch/sh/kernel/vsyscall/Makefile, the line:
>>
>>   cmd_syscall_syms = $(LD) -r -o $@ -R $<
>>
>> Can you try adding $(LDFLAGS), e.g. change it to:
>>
>>   cmd_syscall_syms = $(LD) $(LDFLAGS) -r -o $@ -R $<
>>
>
> That fixes the problem (including the missing symbols seen after reverting
> the offending patch).


Thanks!

Instead of adding $(LDFLAGS), how about using cmd_ld?


Please see line 260 of scripts/Makefile.lib

quiet_cmd_ld = LD      $@
cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \
               $(filter-out FORCE,$^) -o $@

We can reuse it and $(LDFLAGS) is already there.



I also noticed redundant "targets += gate-syms.o"
I see "obj-y += gate-syms.o" and $(obj-y) is automatically
added to "targets".


The following diff is my proposal.
If it is OK, I will squash it and update the thin-ar branch.


diff --git a/arch/ia64/kernel/Makefile.gate b/arch/ia64/kernel/Makefile.gate
index 8cd125a..263ab51 100644
--- a/arch/ia64/kernel/Makefile.gate
+++ b/arch/ia64/kernel/Makefile.gate
@@ -1,6 +1,6 @@
 # The gate DSO image is built using a special linker script.

-targets += gate.so gate-syms.o gate-dummy.o
+targets += gate.so gate-dummy.o

 obj-y += gate-syms.o

@@ -16,16 +16,13 @@ GATECFLAGS_gate.so = -shared -s
-Wl,-soname=linux-gate.so.1 \
 $(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE
        $(call if_changed,gate)

-# create an object file to resolve gate symbols
-quiet_cmd_gate_syms = GATESYM $@
-      cmd_gate_syms = $(LD) -r -o $@ -R $<
-
 GATECFLAGS_gate-dummy.o = -r
 $(obj)/gate-dummy.o: $(obj)/gate.lds $(obj)/gate.o FORCE
        $(call if_changed,gate)

+LDFLAGS_gate-syms.o := -r -R
 $(obj)/gate-syms.o: $(obj)/gate-dummy.o FORCE
-       $(call if_changed,gate_syms)
+       $(call if_changed,ld)

 # gate-data.o contains the gate DSO image as data in section .data..gate.
 # We must build gate.so before we can assemble it.
diff --git a/arch/sh/kernel/vsyscall/Makefile b/arch/sh/kernel/vsyscall/Makefile
index 99685e5..6ab108f 100644
--- a/arch/sh/kernel/vsyscall/Makefile
+++ b/arch/sh/kernel/vsyscall/Makefile
@@ -31,8 +31,6 @@ $(obj)/vsyscall-dummy.o: $(src)/vsyscall.lds \
                        $(obj)/vsyscall-trapa.o $(obj)/vsyscall-note.o FORCE
        $(call if_changed,syscall)

-quiet_cmd_syscall_syms = SYSCALL $@
-      cmd_syscall_syms = $(LD) -r -o $@ -R $<
-
+LDFLAGS_vsyscall-syms.o := -r -R
 $(obj)/vsyscall-syms.o: $(obj)/vsyscall-dummy.o FORCE
-       $(call if_changed,syscall_syms)
+       $(call if_changed,ld)
diff --git a/arch/tile/kernel/vdso/Makefile b/arch/tile/kernel/vdso/Makefile
index c615ec0..0603ce6 100644
--- a/arch/tile/kernel/vdso/Makefile
+++ b/arch/tile/kernel/vdso/Makefile
@@ -55,11 +55,9 @@ SYSCFLAGS_vdso_dummy.o = -r
 $(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/vrt_sigreturn.o FORCE
        $(call if_changed,vdsold)

-quiet_cmd_vdso_sym = VDSOSYM $@
-      cmd_vdso_sym = $(LD) -r -o $@ -R $<
-
+LDFLAGS_vdso-syms.o := -r -R
 $(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE
-       $(call if_changed,vdso_sym)
+       $(call if_changed,ld)

 # strip rule for the .so file
 $(obj)/%.so: OBJCOPYFLAGS := -S








-- 
Best Regards
Masahiro Yamada

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: Build failure in -next due to 'sh: thin archives fix linking'
  2017-06-29 15:36     ` Masahiro Yamada
@ 2017-06-29 16:58       ` Nicholas Piggin
  0 siblings, 0 replies; 5+ messages in thread
From: Nicholas Piggin @ 2017-06-29 16:58 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Guenter Roeck, linux-kernel

On Fri, 30 Jun 2017 00:36:42 +0900
Masahiro Yamada <yamada.masahiro@socionext.com> wrote:

> Hi.
> 
> 2017-06-28 23:02 GMT+09:00 Guenter Roeck <linux@roeck-us.net>:
> > On 06/28/2017 05:58 AM, Nicholas Piggin wrote:  
> >>
> >> On Wed, 28 Jun 2017 05:38:50 -0700
> >> Guenter Roeck <linux@roeck-us.net> wrote:
> >>  
> >>> Hi,
> >>>
> >>> I see the following build error in -next when building
> >>> sh:rts7751r2dplus_defconfig.
> >>>
> >>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: compiled for a
> >>> big endian system and target is little endian
> >>> sh4-linux-ld: arch/sh/kernel/vsyscall/vsyscall-dummy.o: uses instructions
> >>> which are incompatible with instructions used in previous modules
> >>> sh4-linux-ld: failed to merge target specific data of file
> >>> arch/sh/kernel/vsyscall/vsyscall-dummy.o
> >>> make[2]: *** [arch/sh/kernel/vsyscall/vsyscall-syms.o] Error 1
> >>>
> >>> Bisect points to 'sh: thin archives fix linking' as the culprit. Bisect
> >>> log is attached.
> >>> I tried with gcc 4.8.3 and 6.3.0, both built with buildroot for sh4eb.  
> >>
> >>
> >> Thanks for the report. In arch/sh/kernel/vsyscall/Makefile, the line:
> >>
> >>   cmd_syscall_syms = $(LD) -r -o $@ -R $<
> >>
> >> Can you try adding $(LDFLAGS), e.g. change it to:
> >>
> >>   cmd_syscall_syms = $(LD) $(LDFLAGS) -r -o $@ -R $<
> >>  
> >
> > That fixes the problem (including the missing symbols seen after reverting
> > the offending patch).  
> 
> 
> Thanks!
> 
> Instead of adding $(LDFLAGS), how about using cmd_ld?
> 
> 
> Please see line 260 of scripts/Makefile.lib
> 
> quiet_cmd_ld = LD      $@
> cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \
>                $(filter-out FORCE,$^) -o $@
> 
> We can reuse it and $(LDFLAGS) is already there.
> 
> 
> 
> I also noticed redundant "targets += gate-syms.o"
> I see "obj-y += gate-syms.o" and $(obj-y) is automatically
> added to "targets".
> 
> 
> The following diff is my proposal.
> If it is OK, I will squash it and update the thin-ar branch.

Yes, I think this is much better. Thank you! Please squash it in.

Thanks,
Nick

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-06-29 16:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-28 12:38 Build failure in -next due to 'sh: thin archives fix linking' Guenter Roeck
2017-06-28 12:58 ` Nicholas Piggin
2017-06-28 14:02   ` Guenter Roeck
2017-06-29 15:36     ` Masahiro Yamada
2017-06-29 16:58       ` Nicholas Piggin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.