BUG_ON and gcc don't mix
Alan Modra
amodra at gmail.com
Tue Aug 20 14:32:11 EST 2013
On Tue, Aug 20, 2013 at 12:37:50PM +1000, Anton Blanchard wrote:
> address of the trap instruction for our bug exception table. Maybe
> we need a gcc builtin in which we can get a label on the trap
> instruction. Would that be possible?
Not your actual _EMIT_BUG_ENTRY, but something like this ought to work.
The only trick here is not putting anything after __builtin_trap()..
#define BUG_ON(x) do { \
if (x) { \
__asm__ __volatile__ ("\n1:" \
"\t.section __bug_table,\"a\"" \
"\n\t.long 1b" \
"\n\t.previous"); \
__builtin_trap(); \
} \
} while (0)
int foo(unsigned int *bar)
{
unsigned int holder_cpu;
holder_cpu = *bar & 0xffff;
BUG_ON(holder_cpu >= 32);
return 1;
}
--
Alan Modra
Australia Development Lab, IBM
--
Alan Modra
Australia Development Lab, IBM
More information about the Linuxppc-dev
mailing list