Messages in this thread Patch in this message |  | | From | Rusty Russell <> | Subject | Re: [PATCH] Fix RELOC_HIDE miscompilation | Date | Mon, 02 Sep 2002 12:11:28 +1000 |
| |
In message <20020901114242.21242@colin.muc.de> you write: > > [resend due to mailer problems] > > RELOC_HIDE got miscompiled on gcc3.1/x86-64 in the access to softirq.c's per > cpu variables. This patch fixes the problem. > > Clearly to hide the relocation the addition needs to be done after the > value obfuscation, not before. > > I don't know if it triggers on other architectures (x86-64 is especially > stressf here because it has negative kernel addresses), but seems like the > right thing to do.
Yes, agreed. Linus, please apply.
--- linux/include/linux/compiler.h-o Sun Apr 14 21:18:44 2002 +++ linux/include/linux/compiler.h Sun Sep 1 02:52:31 2002 @@ -16,7 +16,7 @@ /* This macro obfuscates arithmetic on a variable address so that gcc shouldn't recognize the original var, and make assumptions about it */ #define RELOC_HIDE(ptr, off) \ - ({ __typeof__(ptr) __ptr; \ - __asm__ ("" : "=g"(__ptr) : "0"((void *)(ptr) + (off))); \ - __ptr; }) + ({ unsigned long __ptr; \ + __asm__ ("" : "=g"(__ptr) : "0"(ptr)); \ + (typeof(ptr)) (__ptr + (off)); }) #endif /* __LINUX_COMPILER_H */ -- Anyone who quotes me in their sig is an idiot. -- Rusty Russell. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |