aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod/modpost.c
Commit message (Collapse)AuthorAge
* kbuild: do not warn about __*init/__*exit symbols being exportedSam Ravnborg2008-02-03
| | | | | | | | | | We have several legitimate uses where we export symbols annotated with one of: __devinit, __cpuinit, __meminit and their exit counterpart. So let's stop warning about those being exported in favour of adding all sorts of workaround to silence the warning. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: print only total number of section mismatces foundSam Ravnborg2008-02-03
| | | | | | | | | | | We have too many section mismatches detected at the moment. So silence modpost and prevent the option from being set in a typical allyesconfig build. Tell the user how to see all the deteils in the summary message from modpost. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: warn about ld added unique sectionsSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | If there is a mixture of specifying sections for code in gcc and assembler then if the assembler code do not add the "ax" flags the linker will see this as two different sections and generate unique sections for each. ld does so by adding a dot and a number. Teach modpost to warn if a section shows up that match this pattern - but do this only for non-debug sections. It will result in warnings like this: WARNING: vmlinux.o (.sched.text.1): unexpected section name. The (.[number]+) following section name are ld generated and not expected. Did you forget to use "ax"/"aw" in a .S file? Note that for example <linux/init.h> contains section definitions for use in .S files. All warnings seen with a defconfig build for: x86 (32+64bit) and sparc64 has been fixed (via respective maintainers). arm, powerpc (64 bit), s390 (32 bit), ia64, alpha, sh4 checked - no warnings seen with a defconfig build. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: add verbose option to Section mismatch reporting in modpostSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the config option CONFIG_SECTION_MISMATCH is not set and we see a Section mismatch present the following to the user: modpost: Found 1 section mismatch(es). To see additional details select "Enable full Section mismatch analysis" in the Kernel Hacking menu (CONFIG_SECTION_MISMATCH). If the option CONFIG_SECTION_MISMATCH is selected then be verbose in the Section mismatch reporting from mdopost. Sample outputs: WARNING: o-x86_64/vmlinux.o(.text+0x7396): Section mismatch in reference from the function discover_ebda() to the variable .init.data:ebda_addr The function discover_ebda() references the variable __initdata ebda_addr. This is often because discover_ebda lacks a __initdata annotation or the annotation of ebda_addr is wrong. WARNING: o-x86_64/vmlinux.o(.data+0x74d58): Section mismatch in reference from the variable pci_serial_quirks to the function .devexit.text:pci_plx9050_exit() The variable pci_serial_quirks references the function __devexit pci_plx9050_exit() If the reference is valid then annotate the variable with __exit* (see linux/init.h) or name the variable: *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, WARNING: o-x86_64/vmlinux.o(__ksymtab+0x630): Section mismatch in reference from the variable __ksymtab_arch_register_cpu to the function .cpuinit.text:arch_register_cpu() The symbol arch_register_cpu is exported and annotated __cpuinit Fix this by removing the __cpuinit annotation of arch_register_cpu or drop the export. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* remove __attribute_used__Adrian Bunk2008-01-28
| | | | | | | | | Remove the deprecated __attribute_used__. [Introduce __section in a few places to silence checkpatch /sam] Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: simplified warning report in modpostSam Ravnborg2008-01-28
| | | | | | | | | Refactor code so the warning report function does nothing else than reporting warnings. As a side effect some other code paths were cleaned up by this. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: introduce a few helpers in modpostSam Ravnborg2008-01-28
| | | | | | | Introducing helpers to retreive symbol and section names cleaned up the code a bit. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: use simpler section mismatch warnings in modpostSam Ravnborg2008-01-28
| | | | | | | | | The typical layout is now: WARNING: vmlinux.o(.text+0x372ec): Section mismatch: reference to .devinit.text:pci_scan_one_pbm in 'psycho_scan_bus' This is first step towards more readable warnings. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Use separate sections for __dev/__cpu/__mem code/dataSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | | | | | | Introducing separate sections for __dev* (HOTPLUG), __cpu* (HOTPLUG_CPU) and __mem* (MEMORY_HOTPLUG) allows us to do a much more reliable Section mismatch check in modpost. We are no longer dependent on the actual configuration of for example HOTPLUG. This has the effect that all users see much more Section mismatch warnings than before because they were almost all hidden when HOTPLUG was enabled. The advantage of this is that when building a piece of code then it is much more likely that the Section mismatch errors are spotted and the warnings will be felt less random of nature. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Greg KH <greg@kroah.com> Cc: Randy Dunlap <randy.dunlap@oracle.com> Cc: Adrian Bunk <bunk@kernel.org>
* kbuild: check section names consistently in modpostSam Ravnborg2008-01-28
| | | | | | | Now that match() is introduced use it consistently so we can share the section name definitions. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: introduce blacklisting in modpostSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | | | | | | | Change the logic in modpost so we identify all the bad combinations of sections that refer to other sections. Compared to the previous approach we are much less dependent on knowledge of what additional sections the tool chain uses and thus we can keep the false positives low. The implmentation is changed to use a table based lookup and we now check all combinations in first pass so we no longer need separate passes for init and exit sections. Tested that the same warnings are generated for an allyesconfig build without CONFIG_HOTPLUG. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Randy Dunlap <randy.dunlap@oracle.com> Cc: Adrian Bunk <bunk@kernel.org>
* kbuild: code refactoring in modpostSam Ravnborg2008-01-28
| | | | | | | | | | | Split a too long function up in smaller bits to make prgram logic easier to follow. A few related changes done due to parameter changes. No functional changes. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: try harder to find symbol names in modpostSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | The relocation record sometimes contained an address which was not an exactly match for a symbol. Implment some simple logic such that if there is a symbol within 20 bytes of the address contained in the relocation record then print the name of this symbol. With this change modpost could find symbol names for the remaining .init.text symbols in my allyesconfig build for x86_64. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix so modpost can now check any .o fileSam Ravnborg2008-01-28
| | | | | | | | | | | It is very convinient to say: scripts/mod/modpost mm/built-in.o to check if any section mismatch errors occured in mm/ (as an example). Fix it so this is possible again. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: clean up modpost.cSam Ravnborg2008-01-28
| | | | | | | | | | | | | | | | | | | | | akpm complained about overly long lines in modpost.c and when started additional style issues were fixed: o Updated my copyright o Removed unneeded {} o Drop assignments in if () o Spaces around operators o Break long lines o locate * near variable not type o Fix a format specifier for sizeof() o Corrected placement of '{' and '}' o spaces to tabs (but use tabs only for indention) modpost.c is not checkpatch clean. Readability were favoured on top of checkpatch compliance. But checkpatch were used to find additional stuff to clean up. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix a buffer overflow in modpostAndi Kleen2008-01-28
| | | | | | | When passing an file name > 1k the stack could be overflowed. Not really a security issue, but still better plugged. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix format string warnings in modpostAndi Kleen2008-01-28
| | | | | | | Fix wrong format strings in modpost exposed by the previous patch. Including one missing argument -- some random data was printed instead. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: declare the modpost error functions as printf likeAndi Kleen2008-01-28
| | | | | | This way gcc can warn for wrong format strings Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: modpost problem when symbols move from one module to anotherTrent Piepho2007-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | When part of build an external module tree, modpost first reads in the kernel's and then the external tree's Module.symvers files. From these files it establishes a symbol => module mapping. When it later reads in each module built and processes the symbols it finds, it discovers the symbol=>module mapping from Module.symvers and leaves it as it is. The problem comes with a module has been re-named or a symbol has moved from one module to another, since the Module.symvers file was generated. modpost does not update the symbol=>module mapping when it finds the new location of the symbol when scanning the newly built modules. This results in the module containing incorrect dependency information and the new Module.symvers file written by modpost will also contain the incorrect mappings, perpetuating the problem to the next build, and so on. When building the out of kernel development tree for kernel subsystem, like v4l-dvb or ALSA, deleting the external Module.symvers file before building (which the kernel build system doesn't do and shouldn't be necessary anyway), won't fix the problem. modpost still reads the kernel's Module.symvers, and since we a building a kernel subsystem, it will define the same symbols as the external modules. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix segfault in modpostPetr Stetiar2007-10-12
| | | | | | | | | | | | | | | | | | | | Fix modpost segfault. Before: ------- ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o Segmentation fault After: ------ ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o FATAL: section header offset=815726848 in file 'ath_pci.o' is bigger then filesize=153968 Sam: This seems to warn for a binutils issue. Anyway modpost should not segfault. Signed-off-by: Petr Stetiar <ynezz@true.cz> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* [NETNS]: Move some code into __init section when CONFIG_NET_NS=nPavel Emelyanov2007-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | With the net namespaces many code leaved the __init section, thus making the kernel occupy more memory than it did before. Since we have a config option that prohibits the namespace creation, the functions that initialize/finalize some netns stuff are simply not needed and can be freed after the boot. Currently, this is almost not noticeable, since few calls are no longer in __init, but when the namespaces will be merged it will be possible to free more code. I propose to use the __net_init, __net_exit and __net_initdata "attributes" for functions/variables that are not used if the CONFIG_NET_NS is not set to save more space in memory. The exiting functions cannot just reside in the __exit section, as noticed by David, since the init section will have references on it and the compilation will fail due to modpost checks. These references can exist, since the init namespace never dies and the exit callbacks are never called. So I introduce the __exit_refok attribute just like it is already done with the __init_refok. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
* kbuild: whitelist references from __dbe_table to .initRalf Baechle2007-07-31
| | | | | | | | | | | | | | | | | This is needed on MIPS where the same mechanism as get_user() is used to intercept bus error exceptions for some hardware probes. Without this patch modpost will throw spurious warnings: LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map MODPOST vmlinux WARNING: arch/mips/sgi-ip22/built-in.o(__dbe_table+0x0): Section mismatch: reference to .init.text: Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* kbuild: fix modpost warnings for xtensaSam Ravnborg2007-07-25
| | | | | | | | | | | | | | | | | | | The Xtensa architecture places literal pools in sections separate from the instructions. The corresponsing text sections, therefore, reference the .literal section, and we have to suppress those warnings. The naming convention defines the name for a literal section as .SECTION.literal, unless .SECTION is .text. In that case the name is only .literal. Using strncmp() instead of strcmp() to compare the from-section with .SECTION.init.refok in pattern 0 should not cause any regressions for other architectures. We also need to suppress warnings for two informational sections (.xt.lit and .xt.prop) used by the Xtensa architecture. Signed-off-by: Chris Zankel <chris@zankel.net> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: be more foregiving on init section namingSam Ravnborg2007-07-25
| | | | | | | | | | | | | In the whitelist function of modpost now use the same check to identify init_section as in other places of modpost. This has the effect that we now recognize sections named .init.text.19 as init sections and we no longer warn when we see these. At the same time make surrounding code readable by dropping use of temporary flags. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: rearrange a few function in modpostSam Ravnborg2007-07-25
| | | | | | | This is a preparational patch that just move two functions and add one (for now unused) function. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: do not do section mismatch checks on vmlinux in 2nd passSam Ravnborg2007-07-25
| | | | | | | | We already check and warn about section mismatches from vmlinux (build as vmlinux.o) during first pass so skip the checks during the 2nd pass where we process modules. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* m68k: teach modpost about .m68_fixupAl Viro2007-07-20
| | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Whitelist references from __dbe_table to .initRalf Baechle2007-07-17
| | | | | | | | | | | | | | | This is needed on MIPS where the same mechanism as get_user() is used to intercept bus error exceptions for some hardware probes. Without this patch modpost will throw spurious warnings: LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map MODPOST vmlinux WARNING: arch/mips/sgi-ip22/built-in.o(__dbe_table+0x0): Section mismatch: reference to .init.text: Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* modpost white list pattern adjustmentJan Beulich2007-07-17
| | | | | | | | | | gcc puts data into .data.rel or .data.rel.* on some architectures (e.g. ia64) or under certain conditions, so whatever is legal relative to .data should also be legal for those other sections. Fixes a few modpost warnings on ia64. Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: do section mismatch check on full vmlinuxSam Ravnborg2007-07-17
| | | | | | | | | | | | | | | Previously we did do the check on the .o files used to link vmlinux but that failed to find questionable references across the .o files. Create a dedicated vmlinux.o file used only for section mismatch checks that uses the defualt linker script so section does not get renamed. The vmlinux.o may later be used as part of the the final link of vmlinux but for now it is used fo section mismatch only. For a defconfig build this is instant but for an allyesconfig this add two minutes to a full build (that anyways takes ~2 hours). Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: whitelist references from variables named _timer to .init.textSam Ravnborg2007-07-16
| | | | | | | | | arm uses a lot of ops structures named *_timer that has legitimite references to .init.text. So let's add this variable to the list of variables that may reference .init.text without causing any warning. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: remove hardcoded _logo names from modpostSam Ravnborg2007-07-16
| | | | | | | | | | Replaced this with a __init_refok marker in front of fb_find_logo(). I think that the __initdata marker for the logo's are wrong but I have not justified this so I did not remove it. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: remove hardcoded apic_es7000 from modpostSam Ravnborg2007-07-16
| | | | | | | Replace the hardcoded variable name apic_es7000 in modpost with a __initdata_refok marker. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: warn about references from .init.text to .exit.textSam Ravnborg2007-07-16
| | | | | | | The .exit.text section may be discarded either at build or at runtime. So let modpost warn if this situation is detected. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: consolidate section checksSam Ravnborg2007-07-16
| | | | | | | | | Move more checks from whitelist to the section check functions. Remove the redundent pci_fixup check. Renumber the patterns. No functional changes. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: refactor code in modpost to improve maintainabilitySam Ravnborg2007-07-16
| | | | | | | | | There were a great deal of overlap between the two functions that check which sections may reference .init.text and .exit.text. Factor out common check to a separate function and sort entries in the original functions. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: ignore section mismatch warnings originating from .note sectionSam Ravnborg2007-07-16
| | | | | | | | | | | .note* sections are ELF notes, which are typically used by external tools to examine the kernel image. Since this is removed from any runtime consideration, it's OK to reference any section from a .note* section. Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: .paravirtprobe section is obsolete, so modpost doesn't need to handle itJeremy Fitzhardinge2007-07-16
| | | | | | | | The .paravirtprobe section is obsolete, so modpost doesn't need to handle it. Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: suppress modpost warnings for references from the .toc section as ↵Stephen Rothwell2007-07-16
| | | | | | | | | | used by powerpc We should do better here by effetively "dereferencing" references to the .toc (or the .got2) section, but that is much harder. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: make better section mismatch reports on armSam Ravnborg2007-07-16
| | | | | | | With this change we can find more symbols hereby improving the readability of the warnings. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: make better section mismatch reports on i386 and mipsAtsushi Nemoto2007-07-16
| | | | | | | | | | On i386 and MIPS, warn_sec_mismatch() sometimes fails to show usefull symbol name. This is because empty 'refsym' due to 0 r_addend value. This patch is to adjust r_addend value, consulting with apply_relocate() routine in kernel code. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: fix sh64 section mismatch problemsSam Ravnborg2007-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a special .cranges section that is almost always generated, with data being moved to the appropriate section by the linker at a later stage. To give a bit of background, sh64 has both a native SHmedia instruction set (32-bit instructions) and SHcompact (which is compatability with normal SH -- 16-bit, a massively reduced register set, etc.). code ranges are emitted when we're using the 32-bit ABI, but not the 64-bit one. It is a special staging section used solely by binutils where code with different flags get placed (more specifically differing flags for input and output sections), before being lazily merged by the linker. The closest I've been able to find to documentation is: http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/ld/emultempl/sh64elf.em?rev=1.10&content-type=text/x-cvsweb-markup&cvsroot=src It's an array of 8-byte Elf32_CRange structure given in http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/bfd/elf32-sh64.h?rev=1.4&content-type=text/x-cvsweb-markup&cvsroot=src that describes for which ISA a range is used. Silence the warnings by allowing references from .init.text to .cranges. The following warnings are fixed: WARNING: init/built-in.o(.cranges+0x0): Section mismatch: reference to .init.text: WARNING: init/built-in.o(.cranges+0xa): Section mismatch: reference to .init.text: WARNING: init/built-in.o(.cranges+0x14): Section mismatch: reference to .init.text: WARNING: init/built-in.o(.cranges+0x1e): Section mismatch: reference to .init.text: WARNING: init/built-in.o(.cranges+0x28): Section mismatch: reference to .init.text: WARNING: init/built-in.o(.cranges+0x32): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x50): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x5a): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x64): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0xfa): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x104): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x10e): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x14a): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x154): Section mismatch: reference to .init.text: WARNING: kernel/built-in.o(.cranges+0x15e): Section mismatch: reference to .init.text: WARNING: mm/built-in.o(.cranges+0x6e): Section mismatch: reference to .init.text: WARNING: mm/built-in.o(.cranges+0x78): Section mismatch: reference to .init.text: WARNING: mm/built-in.o(.cranges+0x82): Section mismatch: reference to .init.text: WARNING: mm/built-in.o(.cranges+0xaa): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x136): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x140): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x14a): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x168): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x1f4): Section mismatch: reference to .init.text: WARNING: fs/built-in.o(.cranges+0x1fe): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x302): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x30c): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x316): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x3a2): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x3ac): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x4ce): Section mismatch: reference to .init.text: WARNING: net/built-in.o(.cranges+0x4d8): Section mismatch: reference to .init.text: Signed-off-by: Paul Mundt <lethal@linux-sh.org> Cc: Kaz Kojima <kkojima@rr.iij4u.or.jp> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Revert "kbuild: make better section mismatch reports on i386, arm and mips"Linus Torvalds2007-05-21
| | | | | | | | | | | This reverts commit f892b7d480eec809a5dfbd6e65742b3f3155e50e, which totally broke the build on x86 with CONFIG_RELOCATABLE (which, as far as I can tell, is the only case where it should even matter!) due to a SIGSEGV in modpost. Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* mm: fix section mismatch warningsSam Ravnborg2007-05-19
| | | | | | | | | | | | | modpost had two cases hardcoded for mm/ Shift over to __init_refok and kill the hardcoded function names in modpost. This has the drawback that the functions will always be kept no matter configuration. With previous code the function were placed in init section if configuration allowed it. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* init/main: use __init_refok to fix section mismatchSam Ravnborg2007-05-19
| | | | | | | Kill a special case in modpost by introducing the __init_refok marker. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: introduce __init_refok/__initdata_refok to supress section mismatch ↵Sam Ravnborg2007-05-19
| | | | | | | | | | | | | | | | | warnings Throughout the kernel there are a few legitimite references to init or exit sections. Most of these are covered by the patterns included in modpost but a few nees special attention. To avoid hardcoding a lot of function names in modpost introduce a marker so relevant function/data can be marked. When modpost see a reference to a init/exit function from a function/data marked no warning will be issued. Idea from: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Andrew Morton <akpm@linux-foundation.org>
* kbuild: add "Section mismatch" warning whitelist for powerpcLi Yang2007-05-19
| | | | | | | | | | | | This patch fixes the following class of "Section mismatch" warnings when building powerpc platforms. WARNING: arch/powerpc/kernel/built-in.o - Section mismatch: reference to .init.data:.got2 from prom_entry (offset 0x0) WARNING: arch/powerpc/platforms/built-in.o - Section mismatch: reference to .init.text:mpc8313_rdb_probe from .machine.desc after 'mach_mpc8313_rdb' (at offset 0x4) .... Signed-off-by: Li Yang <leoli@freescale.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: make better section mismatch reports on i386, arm and mipsAtsushi Nemoto2007-05-19
| | | | | | | | | | | | | | | | | | | | | | | | On i386, ARM and MIPS, warn_sec_mismatch() sometimes fails to show usefull symbol name. This is because empty 'refsym' due to 0 r_addend value. This patch is to adjust r_addend value, consulting with apply_relocate() routine in kernel code. Without this patch: MODPOST vmlinux WARNING: init/built-in.o - Section mismatch: reference to .init.text: from .text between 'rest_init' (at offset 0xf4) and 'try_name' WARNING: mm/built-in.o - Section mismatch: reference to .init.text: from .text between 'kmem_cache_create' (at offset 0x18a39) and 'cache_reap' WARNING: mm/built-in.o - Section mismatch: reference to .init.text: from .text between 'kmem_cache_create' (at offset 0x18a6b) and 'cache_reap' With this patch: MODPOST vmlinux WARNING: mm/built-in.o - Section mismatch: reference to .init.text:set_up_list3s from .text between 'kmem_cache_create' (at offset 0x18a39) and 'cache_reap' WARNING: mm/built-in.o - Section mismatch: reference to .init.text:set_up_list3s from .text between 'kmem_cache_create' (at offset 0x18a6b) and 'cache_reap' Now modpost can detect "kernel_init" name (and whitelist it) and show "set_up_list3s" name. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* kbuild: make modpost section warnings clearerRussell King2007-05-19
| | | | | | | | | | | | | Change modpost section mismatch warnings to be less confusing; model them on the binutils linker warnings which we all know how to interpret. Also, fix the wrong ordering of arguments for the final case - fromsec and refsymname were reversed. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
* Allow arch to initialize arch field of the module structureRoman Zippel2007-05-09
| | | | | | | | | | This will later allow an arch to add module specific information via linker generated tables instead of poking directly in the module object structure. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>