public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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