On Saturday 09 July 2005 12:40, Blaisorblade wrote: > On Friday 08 July 2005 12:29, antoine wrote: > > > > Don't know if you're interested in this report but it does not build for > > x86_64: > > SYMLINK arch/um/sys-x86_64/semaphore.c > > CC arch/um/sys-x86_64/semaphore.o > > CC arch/um/sys-x86_64/sigcontext.o > > CC arch/um/sys-x86_64/signal.o > > arch/um/sys-x86_64/signal.c: In function ‘setup_signal_stack_si’: > > arch/um/sys-x86_64/signal.c:171: error: invalid lvalue in assignment > > make[1]: *** [arch/um/sys-x86_64/signal.o] Error 1 > > make: *** [arch/um/sys-x86_64] Error 2 > > I remember this report, only I just suggested the fix and didn't post it > (was busy at that time). It's SKAS0 - unrelated I think (I may be wrong, > but the whole patchset does not include it) but triggered by GCC4. Please keep remembering I *am* stupid, as just noted by Russell King (ARM maintainer) :-(.
The attached patch makes more sense... however it seems that the affected code is anyway buggy, so I hope Jeff will help fixing this (unless I get to understand this magically). -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade
This is refused by GCC 4, so here's the fix. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]> --- vanilla-linux-2.6.12-paolo/arch/um/sys-x86_64/signal.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/um/sys-x86_64/signal.c~uml-fix-for-gcc4-lvalue arch/um/sys-x86_64/signal.c --- vanilla-linux-2.6.12/arch/um/sys-x86_64/signal.c~uml-fix-for-gcc4-lvalue 2005-07-11 23:23:27.000000000 +0200 +++ vanilla-linux-2.6.12-paolo/arch/um/sys-x86_64/signal.c 2005-07-11 23:23:41.000000000 +0200 @@ -168,7 +168,7 @@ int setup_signal_stack_si(unsigned long frame = (struct rt_sigframe __user *) round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8; - ((unsigned char *) frame) -= 128; + frame -= 128 / sizeof(*frame); if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate))) goto out; _
