PowerPC kernels are fully position independent, just like kernel modules.
The same fixups that are done for modules therefore need to be done to the
kernel, else symbol resolution in, e.g., DTrace, cannot resolve the kernel
symbols, so only addresses in the kernel are printed, while kernel module
symbols are printed.
Details
Details
Run lockstat on powerpc64. Note symbols are resolved for kernel and
modules.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
sys/dev/ksyms/ksyms.c | ||
---|---|---|
222 ↗ | (On Diff #57560) | I think this is somewhat obscure. Can you write it as something like bool fixup = lf->id > 1 || fixup_kernel; and define fixup_kernel as true on powerpc, false otherwise? |
sys/dev/ksyms/ksyms.c | ||
---|---|---|
222 ↗ | (On Diff #57560) | Sure. That makes more sense, even if it wasn't necessary on powerpc. |
sys/dev/ksyms/ksyms.c | ||
---|---|---|
210 ↗ | (On Diff #57561) | I guess it's still overcomplicated. You can just write: #ifdef __powerpc__ fixup = true; #else fixup = lf->id > 1; #endif |
sys/dev/ksyms/ksyms.c | ||
---|---|---|
206 ↗ | (On Diff #57566) | Should be true instead of 1. |
sys/dev/ksyms/ksyms.c | ||
---|---|---|
206 ↗ | (On Diff #57566) | Of course. Maybe I should stop creating reviews between flights. |