Re: Testers needed for LTTng 0.6.0pre1
"Christopher Yeoh" <[email protected]>
| Newsgroups | gmane.linux.kernel.tracing |
|---|---|
| Message-ID | <[email protected]> |
At 2006/9/27 15:54-0400 Mathieu Desnoyers writes:
>
> I would like you to test it on various architectures (and check for warnings) to
> see if I broke something when porting the LTTng instrumentation to markers.
The marker mechanism doesn't compile on ppc64. Neither the asm-powerpc
or asm-generic version of marker.h work.
The problem appears to be in the macro:
asm volatile( ".section .markers, \"a\";\n\t" \
".long %1, 0f, %2, %3;\n\t" \
".previous;\n\t" \
".align 32;\n\t" \
"0:\n\t" \
"li $0,%0;\n\t" \
: "=r" (condition) : \
"m" (*(#name)), \
"m" (__mark_call_##name), \
"m" (*format)); \
For the .long part, gcc ends up outputting something like:
long 0(9), 0f, 0(11), 0(3);
ie register relative addresses which the assembler barfs on.
Would something like the following be ok? (based on asm-generic version
- I did try to do get something working based on the asm-powerpc
version working, but so far without success):
#define MARK(name, format, args...) \
do { \
static marker_probe_func *__mark_call_##name = \
__mark_empty_function; \
volatile static char __marker_enable_##name = 0; \
static struct _mark_marker_local { \
const char *local_name; \
volatile char *enable; \
marker_probe_func **call; \
const char *local_format; \
} __attribute__((packed)) i __attribute__ ((section(".markers"))) \
__attribute__((__used__)) = \
{ #name, &__marker_enable_##name, &__mark_call_##name, format }; \
if (unlikely(__marker_enable_##name)) { \
preempt_disable(); \
(*__mark_call_##name)(format, ## args); \
preempt_enable_no_resched(); \
} \
} while(0)
There also seems to be a problem with fs/compat.c (~1514) with lttng_name
not being declared.
Chris
--
[email protected]
IBM OzLabs Linux Development Group, ADL
Canberra, Australia