Subject: -finline creates undefined reference errors on arm-linux

From: Chris Butler <[email-masked]>
Date: Sat, 6 Mar 1999 18:00:58 +0000 (GMT)

Hi,

When compiling an ARMLinux kernel with egcs, many files threw up
errors along the lines of "undefined reference to `.Lxxx'". AIUI,
these are internal labels created by the compiler.

After a bit of investigation (I chose `drivers/char/vt.c' for my
tests) I found that the `-finline' flag provoked these errors. It
would appear that egcs creates a reference to a label at the same time
that it removes the label from another part of the code.

The following files may be of use:

http://www.sandy.force9.co.uk/vt.tar.gz
http://www.sandy.force9.co.uk/vt-no-inline.tar.gz

Both contain `vt.i', `vt.s' and `vt-compile.out'. The first file is
simply with -O2, the second with -O2 -fno-inline.

In the first set of files, the labels .L829 and .L846 are
undefined. They are however, present in the second set.

My system is an `i686-pc-linux-gnu', using a cross compiler configured
for an `arm-linux' target. Using egcs-2.93.09 and binutils 2.9.1.0.21

Please e-mail me if you require further details. I rarely have time to
read the lists at the moment.

-- 
Chris Butler
unsubscribe: body of `unsubscribe linux-arm' to [email-masked]

---

From: Richard Earnshaw <[email-masked]>
Date: Mon, 08 Mar 1999 21:01:40 +0000

> these are internal labels created by the compiler. 

This was a bug in the new flow analysis code that rth and myself fixed 
over the weekend.

Richard.