This issue is "fixed" by disabling KALLSYMS when building the kernel. I added the following information in the menus : config MARKERS bool "Activate markers" select MODULES default n help Place an empty function call at each marker site. Can be dynamically changed for a probe function. Note that on sparc32, m68k and RS/6000, you may have to disable kallsyms (under Configure standard kernel features (for small systems), "Load all symbols for debugging/ksymoops") because of a GOT size limit of respectively : 8k, 32k and 32k. It can otherwise cause linking errors when too much markers appear in the code. Mathieu * Mathieu Desnoyers (mathieu.desnoyers@xxxxxxxxxx) wrote: > It seems like I bust the 8k limit for the sparc GOT : > > The kallsyms_addresses is 8614 lines long (for a 33.6kB total) in the .S, > and, according to > http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Code-Gen-Options.html : > > "If the GOT size for the linked executable exceeds a machine-specific > maximum size, you get an error message from the linker indicating that > -fpic does not work; in that case, recompile with -fPIC instead. (These > maximums are 8k on the SPARC and 32k on the m68k and RS/6000. The 386 > has no such limit.)" > > Mathieu > > > * Mathieu Desnoyers (mathieu.desnoyers@xxxxxxxxxx) wrote: > > * Frank Ch. Eigler (fche@xxxxxxxxxx) wrote: > > > > > > Perhaps you could post excerpts of "objdump -dr <file.o>", to see the > > > disassembly / relocations in question. > > > > > > - FChE > > > > Hi Frank, > > > > (this message follow up on > > http://listserv.shafik.org/pipermail/ltt-dev/2007-February/002212.html) > > > > compudj@amd64:~/obj/sparc$ PATH=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/bin sparc-unknown-linux-gnu-objdump -dr .tmp_kallsyms3.o > > > > .tmp_kallsyms3.o: file format elf32-sparc > > > > (that's all) > > > > By looking at what follows in more depth, it looks like the symbols I > > keep are relative to the beginning of the _text section and sparc would > > have a limit regarding this (maximum offset ? number of offsets relative > > to a symbol ?) > > > > Any insights are welcome, > > > > Mathieu > > > > > > link error : > > > > opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-ld -m elf32_sparc -T arch/sparc/kernel/vmlinux.lds arch/sparc/kernel/head.o arch/sparc/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/sparc/kernel/built-in.o arch/sparc/mm/built-in.o arch/sparc/math-emu/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a arch/sparc/prom/lib.a arch/sparc/lib/lib.a lib/built-in.o arch/sparc/prom/built-in.o arch/sparc/lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o --end-group .tmp_kallsyms3.o arch/sparc/boot/btfix.o -o arch/sparc/boot/image > > .tmp_kallsyms3.o: In function `kallsyms_addresses': > > .tmp_kallsyms3.S:(.rodata+0x0): relocation truncated to fit: R_SPARC_32 against symbol `_text' defined in .text section in arch/sparc/boot/image > > .tmp_kallsyms3.S:(.rodata+0x8): relocation truncated to fit: R_SPARC_32 against symbol `_text' defined in .text section in arch/sparc/boot/image > > ... > > .tmp_kallsyms3.S:(.rodata+0x2c): additional relocation overflows omitted > > from the output > > make[2]: *** [arch/sparc/boot/image] Error 1 > > > > > > arch/sparc/kernel/vmlinux.lds > > ... > > OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") > > OUTPUT_ARCH(sparc) > > ENTRY(_start) > > jiffies = jiffies_64 + 4; > > SECTIONS > > { > > . = 0x10000 + SIZEOF_HEADERS; > > .text 0xf0004000 : > > { > > _text = .; > > *(.text) > > . = ALIGN(8); __sched_text_start = .; *(.sched.text) __sched_text_end = .; > > . = ALIGN(8); __lock_text_start = .; *(.spinlock.text) __lock_text_end = .; > > *(.gnu.warning) > > } =0 > > _etext = .; > > ... > > > > > > A look at .tmp_kallsyms3.S, symbol kallsyms_addresses which seems to cause > > linking error on sparc : > > > > > > #include <asm/types.h> > > #if BITS_PER_LONG == 64 > > #define PTR .quad > > #define ALGN .align 8 > > #else > > #define PTR .long > > #define ALGN .align 4 > > #endif > > .section .rodata, "a" > > .globl kallsyms_addresses > > ALGN > > kallsyms_addresses: > > PTR _text - 0xeffd7000 > > PTR 0x2d000 > > PTR _text - 0xeffd6fb8 > > PTR _text - 0xeffd6f50 > > PTR _text - 0xeffd6ed0 > > PTR _text - 0xeffd6eac > > PTR _text - 0xeffd6b84 > > PTR _text - 0xeffd6860 > > PTR _text - 0xeffd6830 > > PTR _text - 0xeffd6814 > > PTR _text - 0xeffd6794 > > PTR _text - 0xeffd6788 > > PTR _text - 0xeffd6778 > > PTR _text - 0xeffd6764 > > PTR _text - 0xeffd673c > > PTR _text - 0xeffd6714 > > PTR _text - 0xeffd66e4 > > PTR _text - 0xeffd66b4 > > PTR _text - 0xeffd66ac > > PTR _text - 0xeffd6698 > > PTR _text - 0xeffd6674 > > PTR _text - 0xeffd6650 > > PTR _text - 0xeffd63dc > > PTR _text - 0xeffd637c > > PTR _text - 0xeffd6304 > > PTR _text - 0xeffd6060 > > PTR _text - 0xeffd6034 > > PTR _text - 0xeffd6008 > > PTR _text - 0xeffd5ff8 > > ..... > > > > PTR _text - 0xeffbc7a0 > > PTR _text - 0xeffbc730 > > PTR 0x47930 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0 > > PTR _text + 0x10 > > PTR _text + 0x20 > > PTR _text + 0x30 > > PTR _text + 0x40 > > PTR _text + 0x50 > > PTR _text + 0x60 > > PTR _text + 0x70 > > PTR _text + 0x80 > > PTR _text + 0x90 > > PTR _text + 0xa0 > > PTR _text + 0xb0 > > PTR _text + 0xc0 > > PTR _text + 0x110 > > PTR _text + 0x120 > > PTR _text + 0x130 > > PTR _text + 0x140 > > PTR _text + 0x150 > > .... > > > > > > PTR _text + 0x1b67c4 > > PTR _text + 0x1b67d8 > > PTR 0xf01ba890 > > > > > > And by the way, I also add my own section to > > include/asm-generic/vmlinux.lds.h in RODATA : > > adds at line 124, kernel 2.6.20 : > > /* Kernel markers : pointers */ \ > > .markers : AT(ADDR(.markers) - LOAD_OFFSET) { \ > > VMLINUX_SYMBOL(__start___markers) = .; \ > > *(.markers) \ > > VMLINUX_SYMBOL(__stop___markers) = .; \ > > } \ > > > > > > > > -- > > Mathieu Desnoyers > > Computer Engineering Graduate Student, École Polytechnique de Montréal > > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > > _______________________________________________ > > Ltt-dev mailing list > > Ltt-dev@xxxxxxxxxxxxxxxxxxx > > http://listserv.shafik.org/mailman/listinfo/ltt-dev > > > > -- > Mathieu Desnoyers > Computer Engineering Graduate Student, École Polytechnique de Montréal > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 > _______________________________________________ > Ltt-dev mailing list > Ltt-dev@xxxxxxxxxxxxxxxxxxx > http://listserv.shafik.org/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers Computer Engineering Graduate Student, École Polytechnique de Montréal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html