From: Sam Ravnborg <sam@ravnborg.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>,
Sam Ravnborg <sam@ravnborg.org>,
"Christian T. Steigies" <cts@debian.org>,
Linux/m68k <linux-m68k@lists.linux-m68k.org>,
Linux Kernel Development <linux-kernel@vger.kernel.org>
Subject: Re: kernel-image-2.6.7
Date: Thu, 26 Aug 2004 21:56:43 +0200 [thread overview]
Message-ID: <20040826195643.GI9539@mars.ravnborg.org> (raw)
In-Reply-To: <Pine.GSO.4.58.0408252214080.28854@waterleaf.sonytel.be>
On Wed, Aug 25, 2004 at 10:50:36PM +0200, Geert Uytterhoeven wrote:
> Indeed, in arch/m68k/kernel/setup.o .bss and .init.data become zero-sized,
> while all other sections have the same size.
Not good.. Se below.
>
> If I do `make V=1 arch/m68k/kernel/setup.o', I get:
>
> | anakin$ make V=1 arch/m68k/kernel/setup.o
> | make -C /home/geert/linux/testing/linux-m68k-2.6.9-rc1 O=/home/geert/linux/testing/linux-m68k-2.6.x-amiga-mod arch/m68k/kernel/setup.o
> | make -C /home/geert/linux/testing/linux-m68k-2.6.x-amiga-mod \
> | KBUILD_SRC=/home/geert/linux/testing/linux-m68k-2.6.9-rc1 KBUILD_VERBOSE=1 \
> | KBUILD_CHECK= KBUILD_EXTMOD="" \
> | -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/Makefile arch/m68k/kernel/setup.o
> | make -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/scripts/Makefile.build obj=scripts/basic
> | make -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/scripts/Makefile.build obj=scripts
> | make -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/scripts/Makefile.build obj=scripts/genksyms
> | make -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/scripts/Makefile.build obj=scripts/mod
> | make -f /home/geert/linux/testing/linux-m68k-2.6.9-rc1/scripts/Makefile.build obj=arch/m68k/kernel arch/m68k/kernel/setup.o
> | m68k-linux-gcc -Wp,-MD,arch/m68k/kernel/.setup.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude -Iinclude2 -I/home/geert/linux/testing/linux-m68k-2.6.9-rc1/include -I/home/geert/linux/testing/linux-m68k-2.6.9-rc1/arch/m68k/kernel -Iarch/m68k/kernel -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -fno-strength-reduce -ffixed-a2 -m68040 -O2 -fomit-frame-pointer -DKBUILD_BASENAME=setup -DKBUILD_MODNAME=setup -c -o arch/m68k/kernel/.tmp_setup.o /home/geert/linux/testing/linux-m68k-2.6.9-rc1/arch/m68k/kernel/setup.c
> | anakin$
>
> Note that according to the last line, m68k-linux-gcc will store its output in
> arch/m68k/kernel/.tmp_setup.o instead of arch/m68k/kernel/setup.o! But
> afterwards there is no arch/m68k/kernel/.tmp_setup.o, only
> arch/m68k/kernel/setup.o?
>
> If I execute the m68k-linux-gcc command by hand, it does create
> arch/m68k/kernel/.tmp_setup.o, and ... surprise! The sizes of the .bss and .init.data sections in that file are correct:
>
> | anakin$ m68k-linux-objdump -h arch/m68k/kernel/.tmp_setup.o
> |
> | arch/m68k/kernel/.tmp_setup.o: file format elf32-m68k
> |
> | Sections:
> | Idx Name Size VMA LMA File off Algn
> | 0 .text 0000024a 00000000 00000000 00000034 2**2
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
> | 1 .data 0000001a 00000000 00000000 00000280 2**2
> | CONTENTS, ALLOC, LOAD, RELOC, DATA
> | 2 .bss 00000188 00000000 00000000 0000029c 2**2
> ^^^^^^^^
> | ALLOC
> | 3 .note 00000014 00000000 00000000 0000029c 2**0
> | CONTENTS, READONLY
> | 4 .init.data 00000008 00000000 00000000 000002b0 2**1
> ^^^^^^^^
> | CONTENTS, ALLOC, LOAD, DATA
> | 5 __kcrctab 00000004 00000000 00000000 000002b8 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
> | 6 __ksymtab_strings 0000000f 00000000 00000000 000002bc 2**0
> | CONTENTS, ALLOC, LOAD, READONLY, DATA
> | 7 __ksymtab 00000008 00000000 00000000 000002cc 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
> | 8 .rodata 00000256 00000000 00000000 000002d4 2**0
> | CONTENTS, ALLOC, LOAD, READONLY, DATA
> | 9 .init.text 00000396 00000000 00000000 0000052a 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
> | 10 .comment 0000002f 00000000 00000000 000008c0 2**0
> | CONTENTS, READONLY
> | anakin$
>
> while .bss and .init.data are of size zero in arch/m68k/kernel/setup.o:
>
> | anakin$ m68k-linux-objdump -h arch/m68k/kernel/setup.o
> |
> | arch/m68k/kernel/setup.o: file format elf32-m68k
> |
> | Sections:
> | Idx Name Size VMA LMA File off Algn
> | 0 .text 0000024a 00000000 00000000 00000034 2**2
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
> | 1 __kcrctab 00000004 00000000 00000000 0000027e 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
> | 2 __ksymtab_strings 0000000f 00000000 00000000 00000282 2**0
> | CONTENTS, ALLOC, LOAD, READONLY, DATA
> | 3 __ksymtab 00000008 00000000 00000000 00000292 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
> | 4 .rodata 00000256 00000000 00000000 0000029a 2**0
> | CONTENTS, ALLOC, LOAD, READONLY, DATA
> | 5 .init.text 00000396 00000000 00000000 000004f0 2**1
> | CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
> | 6 .data 0000001a 00000000 00000000 00000888 2**2
> | CONTENTS, ALLOC, LOAD, RELOC, DATA
> | 7 .bss 00000000 00000000 00000000 000008a4 2**2
> ^^^^^^^^
> | ALLOC
> | 8 .init.data 00000000 00000000 00000000 000008a4 2**1
> ^^^^^^^^
> | CONTENTS, ALLOC, LOAD, DATA
> | 9 .note 00000014 00000000 00000000 000008a4 2**0
> | CONTENTS, READONLY
> | 10 .comment 0000002f 00000000 00000000 000008b8 2**0
> | CONTENTS, READONLY
> | anakin$
>
> Now the remaining questions are:
> 1. Why does kbuild create arch/m68k/kernel/.tmp_setup.o?
> 2. How does kbuild create setup.o from .tmp_setup.o, destroying .bss and
> .init.data?
> 3. Why doesn't the above step show up with `make V=1'?
>
> [ digging into scripts/Makefile.build ]
>
> Aha, kbuild does this only if CONFIG_MODVERSIONS=y.
>
> So it goes wrong during this step:
>
> | m68k-linux-ld -r -o x.o arch/m68k/kernel/.tmp_setup.o -T \
> | arch/m68k/kernel/.tmp_setup.ver
>
> | anakin$ cat arch/m68k/kernel/.tmp_setup.ver
> | __crc_mach_heartbeat = 0x39638af7 ;
> | anakin$
A bit code from Makefile.build:
cmd_modversions = \
if ! $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
mv $(@D)/.tmp_$(@F) $@; \
else \
$(CPP) -D__GENKSYMS__ $(c_flags) $< \
| $(GENKSYMS) \
> $(@D)/.tmp_$(@F:.o=.ver); \
\
$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
-T $(@D)/.tmp_$(@F:.o=.ver); \
rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \
fi;
First part checks if there is any exported symbols - which we have in this case.
The $(CPP) and $(GENKSYMS) part finds exported symbols and creates the .ver file.
Your .ver file looked fine - so this step has succeded..
Then we do the linking.
Could you try to stuff in an echo line here - something like:
echo $(LD) $(LDFLAGS) \
$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
-T $(@D)/.tmp_$(@F:.o=.ver); \
Just to be confirmed that there is no LDFLAGS that fouls us here.
Otherwise I have no good suggestions.
Sam
next prev parent reply other threads:[~2004-08-26 20:03 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040809073126.GA4669@skeeve>
[not found] ` <Pine.LNX.4.58.0408221129590.25793@anakin>
[not found] ` <Pine.LNX.4.58.0408221145090.25793@anakin>
[not found] ` <20040822101914.GA7480@skeeve>
[not found] ` <Pine.GSO.4.58.0408221224310.12638@waterleaf.sonytel.be>
[not found] ` <Pine.LNX.4.58.0408221333460.13834@anakin>
[not found] ` <4128C3F4.6070507@linux-m68k.org>
[not found] ` <Pine.GSO.4.58.0408230947190.29370@waterleaf.sonytel.be>
2004-08-25 20:50 ` kernel-image-2.6.7 Geert Uytterhoeven
2004-08-25 22:17 ` kernel-image-2.6.7 Andreas Schwab
2004-08-26 19:56 ` Sam Ravnborg [this message]
2004-08-29 11:38 ` kernel-image-2.6.7 Geert Uytterhoeven
2004-08-29 12:11 ` kernel-image-2.6.7 Sam Ravnborg
2004-08-30 8:53 ` kernel-image-2.6.7 Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040826195643.GI9539@mars.ravnborg.org \
--to=sam@ravnborg.org \
--cc=cts@debian.org \
--cc=geert@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=zippel@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®