All of lore.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 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.