Subject: Another problem with compiling Linux kernel

From: Jonathan Day <[email-masked]>
Date: Tue, 15 Nov 2005 13:30:05 -0800 (PST)

Hi again,

Using GCC 4.0.0 on the Broadcom SB1 MIPS64 board, the
compilation crashes at the final link phase with the
following errors:

`.exit.text' referenced in section `.pdr.78' of
arch/mips/kernel/built-in.o: defined in discarded
section `.exit.text' of arch/mips/kernel/built-in.o
`.exit.text' referenced in section `.pdr.37' of
fs/built-in.o: defined in discarded section
`.exit.text' of fs/built-in.o
`.exit.text' referenced in section `.pdr.17' of
crypto/built-in.o: defined in discarded section
`.exit.text' of crypto/built-in.o
`.exit.text' referenced in section `.pdr.17' of
block/built-in.o: defined in discarded section
`.exit.text' of block/built-in.o
`.exit.text' referenced in section `.pdr.10' of
drivers/built-in.o: defined in discarded section
`.exit.text' of drivers/built-in.o
`.exit.data' referenced in section `.exit.text.403' of
net/built-in.o: defined in discarded section
`.exit.data' of net/built-in.o
`.exit.data' referenced in section `.exit.text.403' of
net/built-in.o: defined in discarded section
`.exit.data' of net/built-in.o
`.exit.data' referenced in section `.exit.text.403' of
net/built-in.o: defined in discarded section
`.exit.data' of net/built-in.o
`.exit.data' referenced in section `.exit.text.403' of
net/built-in.o: defined in discarded section
`.exit.data' of net/built-in.o
`.exit.text' referenced in section `.pdr.20' of
net/built-in.o: defined in discarded section
`.exit.text' of net/built-in.o

My first thought was "ah, might be because I'm using
an old GCC, so I'll try something more recent and see
what happens". When trying GCC 4.1.0 (snapshot from
20051017), I get the following error:

In file included from include/linux/nfs_fs.h:15,
                 from init/do_mounts.c:12:
include/linux/pagemap.h: In function
'fault_in_pages_readable':
include/linux/pagemap.h:237: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:237: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:237: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:237: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:243: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:243: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:243: error: read-only variable
'__gu_val' used as 'asm' output
include/linux/pagemap.h:243: error: read-only variable
'__gu_val' used as 'asm' output
make[1]: *** [init/do_mounts.o] Error 1
make: *** [init] Error 2

This one may be a compiler bug (experimental GCCs are,
well, experimental!) but it makes it somewhat harder
to know if the later issue is resolved by using a
different toolchain.

Any suggestions on how to fix either/both problems?

Thanks,

Jonathan Day

__________________________________ 
Start your day with Yahoo! - Make it your home page! 
http://www.yahoo.com/r/hs

---

From: David Daney <[email-masked]>
Date: Tue, 15 Nov 2005 13:37:21 -0800

> compilation crashes at the final link phase with the
.
.
> `.exit.text' of net/built-in.o

I know nothing about this one.

> to know if the later issue is resolved by using a

This is not a GCC bug, but a change in GCC behavior.  One patch was 
posted here:

http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=Pine.LNX.4.61.0511022057140.3511%40trantor.stuart.netsweng.com

I don't know if the change made it into the linux-mips git repository or 
not.

---

From: Thiemo Seufer <[email-masked]>
Date: Wed, 16 Nov 2005 12:15:13 +0100

Jonathan Day wrote:
> Hi again,
> 
> Using GCC 4.0.0 on the Broadcom SB1 MIPS64 board,

Try 4.0.2 or 4.0.3 instead, it has some bugfixes which may help.

Thiemo

---

From: Ralf Baechle <[email-masked]>
Date: Wed, 16 Nov 2005 15:19:56 +0000

> I don't know if the change made it into the linux-mips git repository or 

That patch has a few shortcomings, so I didn't apply it yet.  Unfortunately
a proper solution turns out to be a pretty hard nut.

  Ralf