Re: [build failure] hp-plus.c: (.text+0xd7c1a): undefinedreference to `ei_close'

From: Ingo Molnar
Date: Tue Jul 22 2008 - 03:24:28 EST



* Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:

> On Mon, 21 Jul 2008 21:15:19 +0200
> Ingo Molnar <mingo@xxxxxxx> wrote:
>
> >
> > * Atsushi Nemoto <anemo@xxxxxxxxxxxxx> wrote:
> >
> > > Since commit 055e5110ae0c0c1176a75b78d789294f2ff2f7af ("8390: Split
> > > 8390 support into a pausing and a non pausing driver core"), ne.c
> > > cause this build failure:
> > >
> > > drivers/built-in.o: In function `ne_probe1':
> > > ne.c:(.init.text+0x2464): undefined reference to `NS8390_init'
> > > drivers/built-in.o: In function `ne_block_output':
> > > ne.c:(.text.ne_block_output+0x1b0): undefined reference to `NS8390_init'
> >
> > i just triggered a similar build failure, but in a different
> > ne2000-derived file:
>
> I'll take a look. Various odd things happened with the Makefile for
> this patch and the follow up fixes. If the followup didn't get applied
> then that might explain the breakage.

ok. I also got:

drivers/built-in.o: In function `hp_probe1':
hp.c:(.init.text+0xa280): undefined reference to `NS8390_init'

so i suspect most of the 8390p.o library using ne2000 drivers are
affected?

i think instead of a manual review i think this is better to fix all the
problems:

cd drivers/net/; sed -i 's/NS8390_/NS8390p_/g' \
$(grep -l NS8390_ $(grep 8390p.o Makefile | cut -d' ' -f3 | \
sed 's/.o$/.c/g'))

find the full tested patch below. It solves the build failures i
triggered so far.

Ingo

------------->
commit 79f2b8594df44a4f3f11085df656883525b74abd
Author: Ingo Molnar <mingo@xxxxxxx>
Date: Tue Jul 22 09:19:31 2008 +0200

net 8390p: fix interface usage

various drivers were using the wrong APIs:

drivers/built-in.o: In function `hp_probe1':
hp.c:(.init.text+0xa280): undefined reference to `NS8390_init'

fixed via:

cd drivers/net/; sed -i 's/NS8390_/NS8390p_/g' \
$(grep -l NS8390_ $(grep 8390p.o Makefile | cut -d' ' -f3 | \
sed 's/.o$/.c/g'))

Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
---
drivers/net/hp-plus.c | 2 +-
drivers/net/hp.c | 2 +-
drivers/net/ne.c | 2 +-
drivers/net/ne2.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
index c2c4f49..8239939 100644
--- a/drivers/net/hp-plus.c
+++ b/drivers/net/hp-plus.c
@@ -262,7 +262,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
}

outw(Perf_Page, ioaddr + HP_PAGING);
- NS8390_init(dev, 0);
+ NS8390p_init(dev, 0);
/* Leave the 8390 and HP chip reset. */
outw(inw(ioaddr + HPP_OPTION) & ~EnableIRQ, ioaddr + HPP_OPTION);

diff --git a/drivers/net/hp.c b/drivers/net/hp.c
index 8281209..0a8c649 100644
--- a/drivers/net/hp.c
+++ b/drivers/net/hp.c
@@ -389,7 +389,7 @@ static void __init
hp_init_card(struct net_device *dev)
{
int irq = dev->irq;
- NS8390_init(dev, 0);
+ NS8390p_init(dev, 0);
outb_p(irqmap[irq&0x0f] | HP_RUN,
dev->base_addr - NIC_OFFSET + HP_CONFIGURE);
return;
diff --git a/drivers/net/ne.c b/drivers/net/ne.c
index 3df231d..4a8a4b1 100644
--- a/drivers/net/ne.c
+++ b/drivers/net/ne.c
@@ -355,7 +355,7 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
}

/* Read the 16 bytes of station address PROM.
- We must first initialize registers, similar to NS8390_init(eifdev, 0).
+ We must first initialize registers, similar to NS8390p_init(eifdev, 0).
We can't reliably read the SAPROM address without this.
(I learned the hard way!). */
{
diff --git a/drivers/net/ne2.c b/drivers/net/ne2.c
index 8f72563..332df75 100644
--- a/drivers/net/ne2.c
+++ b/drivers/net/ne2.c
@@ -404,7 +404,7 @@ static int __init ne2_probe1(struct net_device *dev, int slot)

/* Read the 16 bytes of station address PROM.
We must first initialize registers, similar to
- NS8390_init(eifdev, 0).
+ NS8390p_init(eifdev, 0).
We can't reliably read the SAPROM address without this.
(I learned the hard way!). */
{
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/