Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1482039 > unrolled thread
| Started by | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| First post | 2016-09-13 00:30 +0200 |
| Last post | 2016-09-22 14:40 +0200 |
| Articles | 8 — 3 participants |
Back to article view | Back to linux.kernel
Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Guenter Roeck <linux@roeck-us.net> - 2016-09-13 00:30 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Nicholas Piggin <npiggin@gmail.com> - 2016-09-13 04:10 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Guenter Roeck <linux@roeck-us.net> - 2016-09-13 05:20 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Nicholas Piggin <npiggin@gmail.com> - 2016-09-13 06:00 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Guenter Roeck <linux@roeck-us.net> - 2016-09-13 22:30 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Nicholas Piggin <npiggin@gmail.com> - 2016-09-14 04:40 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Guenter Roeck <linux@roeck-us.net> - 2016-09-14 21:50 +0200
Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' Michal Marek <mmarek@suse.com> - 2016-09-22 14:40 +0200
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-09-13 00:30 +0200 |
| Subject | Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' |
| Message-ID | <sgHTI-1ge-31@gated-at.bofh.it> |
Hi, your commit 'kbuild: allow archs to select link dead code/data elimination' is causing the following build failure in -next when building score:defconfig. arch/score/kernel/built-in.o: In function `work_resched': arch/score/kernel/entry.o:(.text+0xe84): relocation truncated to fit: R_SCORE_PC19 against `schedule' Reverting the commit fixes the problem. Please let me know if I can help tracking down the problem. In case you need a score toochain, you can find the one I use at http://server.roeck-us.net/toolchains/score.tgz. Thanks, Guenter
[toc] | [next] | [standalone]
| From | Nicholas Piggin <npiggin@gmail.com> |
|---|---|
| Date | 2016-09-13 04:10 +0200 |
| Subject | Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' |
| Message-ID | <sgLkB-3AQ-5@gated-at.bofh.it> |
| In reply to | #1482039 |
On Mon, 12 Sep 2016 15:24:43 -0700 Guenter Roeck <linux@roeck-us.net> wrote: > Hi, > > your commit 'kbuild: allow archs to select link dead code/data elimination' > is causing the following build failure in -next when building score:defconfig. > > arch/score/kernel/built-in.o: In function `work_resched': > arch/score/kernel/entry.o:(.text+0xe84): > relocation truncated to fit: R_SCORE_PC19 against `schedule' > > Reverting the commit fixes the problem. > > Please let me know if I can help tracking down the problem. > In case you need a score toochain, you can find the one I use at > http://server.roeck-us.net/toolchains/score.tgz. > > Thanks, > Guenter It's not supposed to have any real effect unless the option is selected, but there are a few changes to linker script which must be causing it. There are two changes to vmlinux.lds.h. One is to KEEP a few input sections, that *should* be kept anyway. The other is to bring in additional sections into their correct output section. Could you try reverting those lines of vmlinux.lds.h that change the latter, i.e.: - *(.text.hot .text .text.fixup .text.unlikely) \ + *(.text.hot .text .text.fixup .text.unlikely .text.*) \ - *(.bss) \ + *(.bss .bss.[0-9a-zA-Z_]*) \ etc? Thanks, Nick
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-09-13 05:20 +0200 |
| Message-ID | <sgMql-4me-1@gated-at.bofh.it> |
| In reply to | #1482086 |
Hi Nicholas, On 09/12/2016 07:00 PM, Nicholas Piggin wrote: > On Mon, 12 Sep 2016 15:24:43 -0700 > Guenter Roeck <linux@roeck-us.net> wrote: > >> Hi, >> >> your commit 'kbuild: allow archs to select link dead code/data elimination' >> is causing the following build failure in -next when building score:defconfig. >> >> arch/score/kernel/built-in.o: In function `work_resched': >> arch/score/kernel/entry.o:(.text+0xe84): >> relocation truncated to fit: R_SCORE_PC19 against `schedule' >> >> Reverting the commit fixes the problem. >> >> Please let me know if I can help tracking down the problem. >> In case you need a score toochain, you can find the one I use at >> http://server.roeck-us.net/toolchains/score.tgz. >> >> Thanks, >> Guenter > > It's not supposed to have any real effect unless the > option is selected, but there are a few changes to linker > script which must be causing it. > > There are two changes to vmlinux.lds.h. One is to KEEP a > few input sections, that *should* be kept anyway. The other > is to bring in additional sections into their correct output > section. > > Could you try reverting those lines of vmlinux.lds.h that > change the latter, i.e.: > > - *(.text.hot .text .text.fixup .text.unlikely) \ > + *(.text.hot .text .text.fixup .text.unlikely .text.*) \ This is the culprit. After removing " .text.*" it builds fine. Guenter
[toc] | [prev] | [next] | [standalone]
| From | Nicholas Piggin <npiggin@gmail.com> |
|---|---|
| Date | 2016-09-13 06:00 +0200 |
| Subject | Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' |
| Message-ID | <sgN33-4zX-1@gated-at.bofh.it> |
| In reply to | #1482119 |
On Mon, 12 Sep 2016 20:17:30 -0700 Guenter Roeck <linux@roeck-us.net> wrote: > Hi Nicholas, > > On 09/12/2016 07:00 PM, Nicholas Piggin wrote: > > On Mon, 12 Sep 2016 15:24:43 -0700 > > Guenter Roeck <linux@roeck-us.net> wrote: > > > >> Hi, > >> > >> your commit 'kbuild: allow archs to select link dead code/data elimination' > >> is causing the following build failure in -next when building score:defconfig. > >> > >> arch/score/kernel/built-in.o: In function `work_resched': > >> arch/score/kernel/entry.o:(.text+0xe84): > >> relocation truncated to fit: R_SCORE_PC19 against `schedule' > >> > >> Reverting the commit fixes the problem. > >> > >> Please let me know if I can help tracking down the problem. > >> In case you need a score toochain, you can find the one I use at > >> http://server.roeck-us.net/toolchains/score.tgz. > >> > >> Thanks, > >> Guenter > > > > It's not supposed to have any real effect unless the > > option is selected, but there are a few changes to linker > > script which must be causing it. > > > > There are two changes to vmlinux.lds.h. One is to KEEP a > > few input sections, that *should* be kept anyway. The other > > is to bring in additional sections into their correct output > > section. > > > > Could you try reverting those lines of vmlinux.lds.h that > > change the latter, i.e.: > > > > - *(.text.hot .text .text.fixup .text.unlikely) \ > > + *(.text.hot .text .text.fixup .text.unlikely .text.*) \ > > This is the culprit. After removing " .text.*" it builds fine. Thanks for testing it. Some architectures have .text.x sections not included here, I should have seen that. We should possibly just revert that line and require implementing archs to do the right thing. [ Convention is to use '.' to avoid C identifiers, so we should use .text..x for these things. But that's not done completely throughout the kernel, and a little invasive to do with this series. I'll revisit this and clean things up subsequently after this round gets merged. ] Thanks, Nick
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-09-13 22:30 +0200 |
| Message-ID | <sh2v8-6Mr-13@gated-at.bofh.it> |
| In reply to | #1482129 |
On 09/12/2016 08:51 PM, Nicholas Piggin wrote: > On Mon, 12 Sep 2016 20:17:30 -0700 > Guenter Roeck <linux@roeck-us.net> wrote: > >> Hi Nicholas, >> >> On 09/12/2016 07:00 PM, Nicholas Piggin wrote: >>> On Mon, 12 Sep 2016 15:24:43 -0700 >>> Guenter Roeck <linux@roeck-us.net> wrote: >>> >>>> Hi, >>>> >>>> your commit 'kbuild: allow archs to select link dead code/data elimination' >>>> is causing the following build failure in -next when building score:defconfig. >>>> >>>> arch/score/kernel/built-in.o: In function `work_resched': >>>> arch/score/kernel/entry.o:(.text+0xe84): >>>> relocation truncated to fit: R_SCORE_PC19 against `schedule' >>>> >>>> Reverting the commit fixes the problem. >>>> >>>> Please let me know if I can help tracking down the problem. >>>> In case you need a score toochain, you can find the one I use at >>>> http://server.roeck-us.net/toolchains/score.tgz. >>>> >>>> Thanks, >>>> Guenter >>> >>> It's not supposed to have any real effect unless the >>> option is selected, but there are a few changes to linker >>> script which must be causing it. >>> >>> There are two changes to vmlinux.lds.h. One is to KEEP a >>> few input sections, that *should* be kept anyway. The other >>> is to bring in additional sections into their correct output >>> section. >>> >>> Could you try reverting those lines of vmlinux.lds.h that >>> change the latter, i.e.: >>> >>> - *(.text.hot .text .text.fixup .text.unlikely) \ >>> + *(.text.hot .text .text.fixup .text.unlikely .text.*) \ >> >> This is the culprit. After removing " .text.*" it builds fine. > > Thanks for testing it. Some architectures have .text.x sections > not included here, I should have seen that. We should possibly > just revert that line and require implementing archs to do the > right thing. > I would call the build failure a regression, so it should either be reverted, or we'll need some other solution to fix the build failure. Thanks, Guenter > [ Convention is to use '.' to avoid C identifiers, so we should > use .text..x for these things. But that's not done completely > throughout the kernel, and a little invasive to do with this > series. I'll revisit this and clean things up subsequently after > this round gets merged. ] > > Thanks, > Nick >
[toc] | [prev] | [next] | [standalone]
| From | Nicholas Piggin <npiggin@gmail.com> |
|---|---|
| Date | 2016-09-14 04:40 +0200 |
| Subject | Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' |
| Message-ID | <sh8hb-2jA-5@gated-at.bofh.it> |
| In reply to | #1482753 |
On Tue, 13 Sep 2016 13:25:22 -0700
Guenter Roeck <linux@roeck-us.net> wrote:
> On 09/12/2016 08:51 PM, Nicholas Piggin wrote:
> > On Mon, 12 Sep 2016 20:17:30 -0700
> > Guenter Roeck <linux@roeck-us.net> wrote:
> >
> >> Hi Nicholas,
> >>
> >> On 09/12/2016 07:00 PM, Nicholas Piggin wrote:
> >>> On Mon, 12 Sep 2016 15:24:43 -0700
> >>> Guenter Roeck <linux@roeck-us.net> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> your commit 'kbuild: allow archs to select link dead code/data elimination'
> >>>> is causing the following build failure in -next when building score:defconfig.
> >>>>
> >>>> arch/score/kernel/built-in.o: In function `work_resched':
> >>>> arch/score/kernel/entry.o:(.text+0xe84):
> >>>> relocation truncated to fit: R_SCORE_PC19 against `schedule'
> >>>>
> >>>> Reverting the commit fixes the problem.
> >>>>
> >>>> Please let me know if I can help tracking down the problem.
> >>>> In case you need a score toochain, you can find the one I use at
> >>>> http://server.roeck-us.net/toolchains/score.tgz.
> >>>>
> >>>> Thanks,
> >>>> Guenter
> >>>
> >>> It's not supposed to have any real effect unless the
> >>> option is selected, but there are a few changes to linker
> >>> script which must be causing it.
> >>>
> >>> There are two changes to vmlinux.lds.h. One is to KEEP a
> >>> few input sections, that *should* be kept anyway. The other
> >>> is to bring in additional sections into their correct output
> >>> section.
> >>>
> >>> Could you try reverting those lines of vmlinux.lds.h that
> >>> change the latter, i.e.:
> >>>
> >>> - *(.text.hot .text .text.fixup .text.unlikely) \
> >>> + *(.text.hot .text .text.fixup .text.unlikely .text.*) \
> >>
> >> This is the culprit. After removing " .text.*" it builds fine.
> >
> > Thanks for testing it. Some architectures have .text.x sections
> > not included here, I should have seen that. We should possibly
> > just revert that line and require implementing archs to do the
> > right thing.
> >
> I would call the build failure a regression, so it should either be
> reverted, or we'll need some other solution to fix the build failure.
Yes it's definitely a regression and that part should be reverted.
To confirm, the following patch fixes your build?
Thanks,
Nick
commit 0ae28be83b4d6cd03ef5b481487d042f2b91954e
Author: Nicholas Piggin <npiggin@gmail.com>
Date: Wed Sep 14 12:24:03 2016 +1000
kbuild: -ffunction-sections fix for archs with conflicting sections
Enabling -ffunction-sections modified the generic linker script to
pull .text.* sections into regular TEXT_TEXT section, conflicting
with some architectures. Revert that change and require archs that
enable the option to ensure they have no conflicting section names,
and do the appropriate merging.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
diff --git a/arch/Kconfig b/arch/Kconfig
index 6d5b631..8248037 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -487,7 +487,9 @@ config LD_DEAD_CODE_DATA_ELIMINATION
This requires that the arch annotates or otherwise protects
its external entry points from being discarded. Linker scripts
must also merge .text.*, .data.*, and .bss.* correctly into
- output sections.
+ output sections. Care must be taken not to pull in unrelated
+ sections (e.g., '.text.init'). Typically '.' in section names
+ is used to distinguish them from label names / C identifiers.
config HAVE_CONTEXT_TRACKING
bool
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index ad9d8f9..48dd44f 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -198,9 +198,9 @@
/*
* .data section
- * -fdata-sections generates .data.identifier which needs to be pulled in
- * with .data, but don't want to pull in .data..stuff which has its own
- * requirements. Same for bss.
+ * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections generates
+ * .data.identifier which needs to be pulled in with .data, but don't want to
+ * pull in .data..stuff which has its own requirements. Same for bss.
*/
#define DATA_DATA \
*(.data .data.[0-9a-zA-Z_]*) \
@@ -434,10 +434,15 @@
}
/* .text section. Map to function alignment to avoid address changes
- * during second ld run in second ld pass when generating System.map */
+ * during second ld run in second ld pass when generating System.map
+ * LD_DEAD_CODE_DATA_ELIMINATION option enables -ffunction-sections generates
+ * .text.identifier which needs to be pulled in with .text , but some
+ * architectures define .text.foo which is not intended to be pulled in here.
+ * Those enabling LD_DEAD_CODE_DATA_ELIMINATION must ensure they don't have
+ * conflicting section names, and must pull in .text.[0-9a-zA-Z_]* */
#define TEXT_TEXT \
ALIGN_FUNCTION(); \
- *(.text.hot .text .text.fixup .text.unlikely .text.*) \
+ *(.text.hot .text .text.fixup .text.unlikely) \
*(.ref.text) \
MEM_KEEP(init.text) \
MEM_KEEP(exit.text) \
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-09-14 21:50 +0200 |
| Subject | Re: Build failure in -next due to 'kbuild: allow archs to select link dead code/data elimination' |
| Message-ID | <sholX-538-3@gated-at.bofh.it> |
| In reply to | #1482885 |
On Wed, Sep 14, 2016 at 12:30:04PM +1000, Nicholas Piggin wrote: > On Tue, 13 Sep 2016 13:25:22 -0700 > Guenter Roeck <linux@roeck-us.net> wrote: > > > On 09/12/2016 08:51 PM, Nicholas Piggin wrote: > > > On Mon, 12 Sep 2016 20:17:30 -0700 > > > Guenter Roeck <linux@roeck-us.net> wrote: > > > > > >> Hi Nicholas, > > >> > > >> On 09/12/2016 07:00 PM, Nicholas Piggin wrote: > > >>> On Mon, 12 Sep 2016 15:24:43 -0700 > > >>> Guenter Roeck <linux@roeck-us.net> wrote: > > >>> > > >>>> Hi, > > >>>> > > >>>> your commit 'kbuild: allow archs to select link dead code/data elimination' > > >>>> is causing the following build failure in -next when building score:defconfig. > > >>>> > > >>>> arch/score/kernel/built-in.o: In function `work_resched': > > >>>> arch/score/kernel/entry.o:(.text+0xe84): > > >>>> relocation truncated to fit: R_SCORE_PC19 against `schedule' > > >>>> > > >>>> Reverting the commit fixes the problem. > > >>>> > > >>>> Please let me know if I can help tracking down the problem. > > >>>> In case you need a score toochain, you can find the one I use at > > >>>> http://server.roeck-us.net/toolchains/score.tgz. > > >>>> > > >>>> Thanks, > > >>>> Guenter > > >>> > > >>> It's not supposed to have any real effect unless the > > >>> option is selected, but there are a few changes to linker > > >>> script which must be causing it. > > >>> > > >>> There are two changes to vmlinux.lds.h. One is to KEEP a > > >>> few input sections, that *should* be kept anyway. The other > > >>> is to bring in additional sections into their correct output > > >>> section. > > >>> > > >>> Could you try reverting those lines of vmlinux.lds.h that > > >>> change the latter, i.e.: > > >>> > > >>> - *(.text.hot .text .text.fixup .text.unlikely) \ > > >>> + *(.text.hot .text .text.fixup .text.unlikely .text.*) \ > > >> > > >> This is the culprit. After removing " .text.*" it builds fine. > > > > > > Thanks for testing it. Some architectures have .text.x sections > > > not included here, I should have seen that. We should possibly > > > just revert that line and require implementing archs to do the > > > right thing. > > > > > I would call the build failure a regression, so it should either be > > reverted, or we'll need some other solution to fix the build failure. > > Yes it's definitely a regression and that part should be reverted. > To confirm, the following patch fixes your build? > > Thanks, > Nick > > commit 0ae28be83b4d6cd03ef5b481487d042f2b91954e > Author: Nicholas Piggin <npiggin@gmail.com> > Date: Wed Sep 14 12:24:03 2016 +1000 > > kbuild: -ffunction-sections fix for archs with conflicting sections > > Enabling -ffunction-sections modified the generic linker script to > pull .text.* sections into regular TEXT_TEXT section, conflicting > with some architectures. Revert that change and require archs that > enable the option to ensure they have no conflicting section names, > and do the appropriate merging. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > Tested-by: Guenter Roeck <linux@roeck-us.net> > diff --git a/arch/Kconfig b/arch/Kconfig > index 6d5b631..8248037 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -487,7 +487,9 @@ config LD_DEAD_CODE_DATA_ELIMINATION > This requires that the arch annotates or otherwise protects > its external entry points from being discarded. Linker scripts > must also merge .text.*, .data.*, and .bss.* correctly into > - output sections. > + output sections. Care must be taken not to pull in unrelated > + sections (e.g., '.text.init'). Typically '.' in section names > + is used to distinguish them from label names / C identifiers. > > config HAVE_CONTEXT_TRACKING > bool > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > index ad9d8f9..48dd44f 100644 > --- a/include/asm-generic/vmlinux.lds.h > +++ b/include/asm-generic/vmlinux.lds.h > @@ -198,9 +198,9 @@ > > /* > * .data section > - * -fdata-sections generates .data.identifier which needs to be pulled in > - * with .data, but don't want to pull in .data..stuff which has its own > - * requirements. Same for bss. > + * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections generates > + * .data.identifier which needs to be pulled in with .data, but don't want to > + * pull in .data..stuff which has its own requirements. Same for bss. > */ > #define DATA_DATA \ > *(.data .data.[0-9a-zA-Z_]*) \ > @@ -434,10 +434,15 @@ > } > > /* .text section. Map to function alignment to avoid address changes > - * during second ld run in second ld pass when generating System.map */ > + * during second ld run in second ld pass when generating System.map > + * LD_DEAD_CODE_DATA_ELIMINATION option enables -ffunction-sections generates > + * .text.identifier which needs to be pulled in with .text , but some > + * architectures define .text.foo which is not intended to be pulled in here. > + * Those enabling LD_DEAD_CODE_DATA_ELIMINATION must ensure they don't have > + * conflicting section names, and must pull in .text.[0-9a-zA-Z_]* */ > #define TEXT_TEXT \ > ALIGN_FUNCTION(); \ > - *(.text.hot .text .text.fixup .text.unlikely .text.*) \ > + *(.text.hot .text .text.fixup .text.unlikely) \ > *(.ref.text) \ > MEM_KEEP(init.text) \ > MEM_KEEP(exit.text) \
[toc] | [prev] | [next] | [standalone]
| From | Michal Marek <mmarek@suse.com> |
|---|---|
| Date | 2016-09-22 14:40 +0200 |
| Message-ID | <skbsd-6le-3@gated-at.bofh.it> |
| In reply to | #1483590 |
On 2016-09-14 21:48, Guenter Roeck wrote: > On Wed, Sep 14, 2016 at 12:30:04PM +1000, Nicholas Piggin wrote: >> commit 0ae28be83b4d6cd03ef5b481487d042f2b91954e >> Author: Nicholas Piggin <npiggin@gmail.com> >> Date: Wed Sep 14 12:24:03 2016 +1000 >> >> kbuild: -ffunction-sections fix for archs with conflicting sections >> >> Enabling -ffunction-sections modified the generic linker script to >> pull .text.* sections into regular TEXT_TEXT section, conflicting >> with some architectures. Revert that change and require archs that >> enable the option to ensure they have no conflicting section names, >> and do the appropriate merging. >> >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >> > Tested-by: Guenter Roeck <linux@roeck-us.net> Applied to kbuild.git#kbuild. Thanks, Michal
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web