XFree86 produces error reports very much like the kernel output.  For
example, this is a sample XFree86 report.

eip: 080b3cdc   eflags: 00013286
eax: 082e4268   ebx: caaee805   ecx: 000000ed   edx: 0828ffd8
esi: 082e41b0   edi: 082ae628   ebp: bffffa4c   esp: bffffa14
Stack: 08348794 082e41b0 bffffa4c 0809c4be 082ae628 02400014 c0000001 00000002
       08348794 082e41b0 082ae628 05bf64a0 08348794 02000000 bffffa7c 080b43bc
       082e41b0 000000ed 000000ed 00000004 082ae628 00000000 bffffa94 00000000
       00000000 082906a8 bffffcac 080968d3 082ae628 00000020 bffffcac 0809695b

Call Trace: 0809c4be 080b43bc 080968d3 0809695b 080783b1 0806f7a5 080ba1e7
       080a53bd 080a5628 080a5314 0815f734 08096848 080a51e2 080a51fb 081b844c
       0806b1b0 0806b1d1 080a4d58 081b844c 0806b1b0

Code: 39 4b 04 75 ef 85 db 74 76 85 d2 75 1a 8b 56 78 8b 03 89 42

All you need is a small adjustment to the EIP line (ksymoops expects
kernel format with a bracketed address) plus something that looks like
a System.map but is actually generated from the failing program and you
can use ksymoops on XFree86 programs.

Generate the map by

objdump -T /usr/X11R6/bin/failing_program | \
	fgrep -v '*UND*' | \
	awk '{print $1, $2, $NF}' > map

Feed the oops with an adjusted EIP plus the map to ksymoops and send
the decoded result to the person responsible for the failing program.

sed -e 's/\(eip: *\)\([^ ]*\)/\1[<\2>]/' < oops | ksymoops -VKLO -m map
