From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
To: sparclinux@vger.kernel.org
Subject: Re: [Ltt-dev] Linux Kernel Markers : sparc build issue
Date: Wed, 07 Feb 2007 18:46:39 +0000 [thread overview]
Message-ID: <20070207184639.GA14299@Krystal> (raw)
In-Reply-To: <20070207171912.GA5992@Krystal>
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@polymtl.ca) 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@polymtl.ca) wrote:
> > * Frank Ch. Eigler (fche@redhat.com) 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@listserv.shafik.org
> > 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@listserv.shafik.org
> 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
next prev parent reply other threads:[~2007-02-07 18:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-07 17:19 [Ltt-dev] Linux Kernel Markers : sparc build issue Mathieu Desnoyers
2007-02-07 18:46 ` Mathieu Desnoyers [this message]
2007-02-07 19:30 ` Frank Ch. Eigler
2007-02-07 20:03 ` Mathieu Desnoyers
2007-02-07 20:21 ` Mathieu Desnoyers
2007-02-07 20:32 ` Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070207184639.GA14299@Krystal \
--to=compudj@krystal.dyndns.org \
--cc=sparclinux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.