mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Richard B. Johnson" <root@chaos.analogic.com>
To: Andy Winton <andreww@bemac.com>
Cc: Linux kernel <linux-kernel@vger.kernel.org>
Subject: Re: Multiple symbols same address in vmlinux map file? huh?
Date: Wed, 6 Aug 2003 10:32:06 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.53.0308061000280.9051@chaos> (raw)
In-Reply-To: <1060177192.2866.11.camel@pussy.bemac.com>

On Wed, 6 Aug 2003, Andy Winton wrote:

> hi there,
>
>   When doing a 'nm' on the vmlinux I see that some different
>   symbols are at the same address.  This seems very strange
>   to me.  Can anyone explain this?
>
>   What I typed (to see the duplicates only)...
>
> nm vmlinux-2.4.18-14  | awk 'BEGIN{oldval=01;} { if ($1==oldval) {
> if(plast) { print "\n"; print oldrow;} print $0; plast=0} else plast=1;
> oldrow=$0; oldval=$1}' - | more
>
>   What I saw....
>
>   [stuff removed...]
> c0305a78 d emergency_lock
> c0305a78 d emergency_pages
>
> c0303100 d i8259A_irq_type
> c0303100 D i8259A_lock
>
> c0386628 B jiffies
> c0386628 B jiffies_64
>   [stuff removed...]
>
>   Any idea?
>
>   Thanks again,
>
> andy winton
>

They are aliases. GCC uses 'weak aliases' so objects may be accessed
at the same location with different names. This seems strange for
'C', but perfectly normal for assembly. For instance...

a:
b:
c:	.long	0
.global	a
.global	b
.global	c

All 4 objects refer to the same memory location. "a" may actually
be a char[4], "b" may actually be a short[2] and "c" a long. So
we have the equivalent of a 'C' union. Some spin-locks and
other aggregate types end up being represented this way.

That said, there seems to be a problem.
  "i8259A_lock" is a spin-lock in i8259.c, line 133 (version 2.4.20)
  "i8259A_irq_type" is a structure in i8259.c, line 151.

It is static, therefore can not be visible outside the file, plus
it can't exist at the same address as the spin-lock.  So, some
tool is broken. Look at System.map. On my system I see:

c01fd9c0 D i8259A_lock
c01fd9e0 d i8259A_irq_type

These are (correctly) at different addresses, but the static
structure is still visible, which must not happen! So, you
have certainly discovered something that's not right. Perhaps
the 'd' stuff is "really" not visible? If so, what 'th..???

Cheers,
Dick Johnson
Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips).
            Note 96.31% of all statistics are fiction.


  parent reply	other threads:[~2003-08-06 14:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-06 13:39 Andy Winton
2003-08-06 13:51 ` Kai Germaschewski
2003-08-06 14:32 ` Richard B. Johnson [this message]
2003-08-06 21:09   ` Michael Driscoll

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=Pine.LNX.4.53.0308061000280.9051@chaos \
    --to=root@chaos.analogic.com \
    --cc=andreww@bemac.com \
    --cc=linux-kernel@vger.kernel.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®