Re: [PATCH 0/6] m68k: merge and clean up files in m68k/lib

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Geert,

On 07/04/11 05:36, Geert Uytterhoeven wrote:
On Wed, Mar 30, 2011 at 20:41, Geert Uytterhoeven<geert@xxxxxxxxxxxxxx>  wrote:
Hi Greg,

On Wed, Mar 30, 2011 at 09:58, Greg Ungerer<gerg@xxxxxxxxxxx>  wrote:
The following set of patches cleans up and merges individual files in
the arch/m68k/lib directory. Mostly strait forward stuff,

I have build and run tested on ARAnyM/Atari and ColdFire (non-mmu)
targets.

Anyway, I did a thorough review, so consider it
Acked-by: Geert Uytterhoeven<geert@xxxxxxxxxxxxxx>

Upon actually trying it, I get:

arch/m68k/kernel/setup_mm.c:488: undefined reference to `strcpy'
arch/m68k/q40/config.c:149: undefined reference to `strcpy'
arch/m68k/atari/config.c:582: undefined reference to `strcpy'
arch/m68k/atari/config.c:588: undefined reference to `strcpy'
arch/m68k/atari/config.c:604: undefined reference to `strcpy'
arch/m68k/mac/built-in.o:arch/m68k/mac/config.c:916: more undefined
references to `strcpy' follow

Some of these are sprintf() or strcat() calls, "optimized" into strcpy() by gcc
(4.1.2 20061115 (prerelease) (Ubuntu 4.1.1-21)). Should have thought about
that, cfr. commit f9b07897c6288d7e5fc1fd004fccb0c5f1a0e570
("m68k: Uninline strchr()").
But not all of them: some are real strcpy() calls. Why are they the
inline version?

That does seem odd. One way or another strcpy is defined in
arch/m68k/include/asm/string.h. I would expect no real calls to
strcpy() after that. (And for me on my hand built gcc-4.5.1 I
don't end up with any).

At a guess the section for __GNUC__ > 4 must end up still trying
to use a real strcpy (presumably the __builtom_strcpy call) on
some versions of gcc.

#if __GNUC__ >= 4
#define strcpy(d, s)    (__builtin_constant_p(s) &&     \
                         __builtin_strlen(s) <= 32 ?    \
                         __builtin_strcpy(d, s) :       \
                         __kernel_strcpy(d, s))
#else
#define strcpy(d, s)    __kernel_strcpy(d, s)
#endif

Is there any reason we don't just drop the __GNUC__ >= 4 bit
and always just use __kernel_strcpy()?  After all kernel_strcpy
is a pretty tight optimized loop for m68k anyway.


Reverting 7a2dc626ba38595bf04c663d834c394e7c0aa1f7 ("m68k: remove no
longer used arch/m68k/lib/string.c") fixes this.

So we need to keep at least the out-of-line strcpy().

Interestingly we haven't had a real strcpy defined on m68knommu
for quite a long time.

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     gerg@xxxxxxxxxxxx
SnapGear Group, McAfee                      PHONE:       +61 7 3435 2888
8 Gardner Close                             FAX:         +61 7 3217 5323
Milton, QLD, 4064, Australia                WEB: http://www.SnapGear.com
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux