[parisc-linux] test6 merge

David Huggins-Daines dhd@linuxcare.com
21 Aug 2000 13:01:12 -0400


Richard Hirst <rhirst@linuxcare.com> writes:

> Those two files have a number of function names in common; they are
> declared static, so it shouldn't matter.  ncr_chip_reset() is one
> example.  In practice, the code in ncr53c8xx.c tries to call its local
> ncr_chip_reset(), but ends up in the ncr_chip_reset() function in
> sym53c8xx.c.
> 
> It appeared to work fine with 2.3.99pre8, and I havn't changed my
> cross compiler.

I'm not seeing this problem here, at least, not based on an
examination of the kernel's object code.

In mine I have:

sym53c8xx: ncr_chip_reset = c01cdec0 (a4)
           ncr_attach     = c02a37e4 (934)
ncr53c8xx: ncr_chip_reset = c01cdf80 (e8)
           ncr_attach     = c02a6ff0 (5d8)

Where ncr_attach calls ncr_chip_reset, it looks like:

    1d34:	0e b3 12 80 	stw  r19,0(sr0,r21)
    1d38:	08 03 02 5a 	copy r3,r26
    1d3c:	e8 40 00 00 	b,l 1d44 <ncr_attach+0x354>,rp
			1d3c: R_PARISC_PCREL17F	ncr_chip_reset

And in the object file, we have:

c02a7334:       0e b3 12 80     stw  r19,0(sr0,r21)
c02a7338:       08 03 02 5a     copy r3,r26
c02a733c:       e8 58 12 fd     b,l c0298cc0 <__init_begin+0xcc0>,rp

Pointing at this stub:

c0298cc0:       20 26 f8 03     ldil -3fe32800,r1
c0298cc4:       e0 20 2f 02     be,n 780(sr4,r1)

0x780 - 0x3fe32800 = 0xc01cdf80, which is the right one.

This is with today's binutils.

-- 
dhd@linuxcare.com, http://www.linuxcare.com/
Linuxcare. Support for the revolution.