From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Linux Kernel List <linux-kernel@vger.kernel.org>,
Sam Ravnborg <sam@ravnborg.org>,
Linus Torvalds <torvalds@osdl.org>
Subject: Re: ARM undefined symbols. Again.
Date: Sun, 13 Feb 2005 17:29:40 +0000 [thread overview]
Message-ID: <20050213172940.A12469@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20050209104053.A31869@flint.arm.linux.org.uk>; from rmk+lkml@arm.linux.org.uk on Wed, Feb 09, 2005 at 10:40:53AM +0000
On Wed, Feb 09, 2005 at 10:40:53AM +0000, Russell King wrote:
> On Tue, Feb 08, 2005 at 08:05:01PM +0000, Russell King wrote:
> > On Tue, Feb 08, 2005 at 08:42:43PM +0100, Sam Ravnborg wrote:
> > > On Mon, Feb 07, 2005 at 11:43:59AM +0000, Russell King wrote:
> > > >
> > > > Maybe we need an architecture hook or something for post-processing
> > > > vmlinux?
> > > Makes sense.
> > > For now arm can provide an arm specific cmd_vmlinux__ like um does.
> > >
> > > The ?= used in Makefile snippet below allows an ARCH to override the
> > > definition of quiet_cmd_vmlinux__ and cmd_vmlinux__
> >
> > Great - I'll merge your previous idea with this one and throw a patch
> > here.
>
> Well, this was a great idea until you find that this is also used for
> linking the intermediate vmlinux objects for kallsyms, and kallsyms
> uses weak (== undefined) symbols:
>
> LD .tmp_vmlinux1
> .tmp_vmlinux1: error: undefined symbol(s) found:
> w kallsyms_addresses
> w kallsyms_markers
> w kallsyms_names
> w kallsyms_num_syms
> w kallsyms_token_index
> w kallsyms_token_table
>
> Maybe kallsyms needs to provide an empty object with these symbols
> defined for the first linker pass, instead of using weak symbols?
So, what's the answer? Maybe this patch? With this, we can drop the
__attribute__((weak)) from the kallsyms symbols since they're always
provided.
diff -up -x BitKeeper -x ChangeSet -x SCCS -x _xlk -x *.orig -x *.rej orig/Makefile linux/Makefile
--- orig/Makefile Sun Feb 13 17:26:38 2005
+++ linux/Makefile Sun Feb 13 17:24:17 2005
@@ -702,14 +702,20 @@ quiet_cmd_kallsyms = KSYM $@
cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \
$(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@
-.tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
+.tmp_kallsyms0.o .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE
$(call if_changed_dep,as_o_S)
+.tmp_kallsyms0.S: FORCE
+ @( echo ".data"; \
+ for sym in addresses markers names num_syms token_index token_table; \
+ do echo -e ".globl kallsyms_$$sym\nkallsyms_$$sym:\n"; done; \
+ echo ".word 0"; ) > $@
+
.tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS)
$(call cmd,kallsyms)
# .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version
-.tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE
+.tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms0.o FORCE
$(call if_changed_rule,ksym_ld)
.tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE
diff -up -x BitKeeper -x ChangeSet -x SCCS -x _xlk -x *.orig -x *.rej orig/arch/arm/Makefile linux/arch/arm/Makefile
--- orig/arch/arm/Makefile Mon Nov 15 09:15:02 2004
+++ linux/arch/arm/Makefile Wed Feb 9 10:09:36 2005
@@ -156,6 +156,17 @@ else
all: zImage
endif
+# Override the default command for generating vmlinux, so we can check for
+# the assembler bug with undefined symbols.
+cmd_vmlinux__ = $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \
+ -T $(vmlinux-lds) $(vmlinux-init) \
+ --start-group $(vmlinux-main) --end-group \
+ $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) FORCE ,$^); \
+ if [ "`$(NM) -u $@`" != "" ]; then \
+ echo "$@: error: undefined symbol(s) found:"; \
+ $(NM) -u $@; exit 1; \
+ fi
+
boot := arch/arm/boot
# Update machine arch and proc symlinks if something which affects
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core
next prev parent reply other threads:[~2005-02-13 17:30 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-24 15:43 ARM undefined symbols. Again Russell King
2005-01-31 16:17 ` Sam Ravnborg
2005-02-07 11:43 ` Russell King
2005-02-08 19:42 ` Sam Ravnborg
2005-02-08 20:05 ` Russell King
2005-02-09 10:40 ` Russell King
2005-02-13 17:29 ` Russell King [this message]
2005-02-14 13:10 ` Paulo Marques
2005-02-25 19:48 ` Russell King
2005-02-25 19:59 ` Linus Torvalds
2005-02-25 20:23 ` Russell King
2005-02-25 20:31 ` Linus Torvalds
2005-02-25 20:54 ` Paulo Marques
[not found] ` <20050225210254.GB15773@mars>
2005-02-25 21:18 ` Paulo Marques
[not found] ` <20050225222720.D27842@flint.arm.linux.org.uk>
2005-02-25 22:49 ` Linus Torvalds
2005-02-25 22:52 ` Linus Torvalds
2005-02-26 11:17 ` Russell King
2005-02-26 11:29 ` Russell King
2005-02-25 22:03 ` Daniel Jacobowitz
2005-02-08 20:09 ` Alex Muradin
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=20050213172940.A12469@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.org \
--cc=torvalds@osdl.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