1. 29 1月, 2008 1 次提交
  2. 18 10月, 2007 1 次提交
    • T
      kbuild: modpost problem when symbols move from one module to another · 4b21960f
      Trent Piepho 提交于
      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: NTrent Piepho <xyzzy@speakeasy.org>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      4b21960f
  3. 13 10月, 2007 1 次提交
    • P
      kbuild: fix segfault in modpost · a83710e5
      Petr Stetiar 提交于
      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: NPetr Stetiar <ynezz@true.cz>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      a83710e5
  4. 11 10月, 2007 1 次提交
    • P
      [NETNS]: Move some code into __init section when CONFIG_NET_NS=n · 4665079c
      Pavel Emelyanov 提交于
      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: NPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4665079c
  5. 01 8月, 2007 1 次提交
  6. 26 7月, 2007 4 次提交
  7. 20 7月, 2007 1 次提交
  8. 17 7月, 2007 14 次提交
  9. 12 6月, 2007 1 次提交
    • S
      kbuild: fix sh64 section mismatch problems · 2648a53a
      Sam Ravnborg 提交于
      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: NPaul Mundt <lethal@linux-sh.org>
      Cc: Kaz Kojima <kkojima@rr.iij4u.or.jp>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      2648a53a
  10. 22 5月, 2007 1 次提交
  11. 19 5月, 2007 6 次提交
    • S
      mm: fix section mismatch warnings · 577a32f6
      Sam Ravnborg 提交于
      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: NSam Ravnborg <sam@ravnborg.org>
      577a32f6
    • S
      init/main: use __init_refok to fix section mismatch · 92080309
      Sam Ravnborg 提交于
      Kill a special case in modpost by introducing the
      __init_refok marker.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      92080309
    • S
      kbuild: introduce __init_refok/__initdata_refok to supress section mismatch warnings · 0e0d314e
      Sam Ravnborg 提交于
      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: NSam Ravnborg <sam@ravnborg.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      0e0d314e
    • L
      kbuild: add "Section mismatch" warning whitelist for powerpc · cd547791
      Li Yang 提交于
      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: NLi Yang <leoli@freescale.com>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      cd547791
    • A
      kbuild: make better section mismatch reports on i386, arm and mips · f892b7d4
      Atsushi Nemoto 提交于
      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: NAtsushi Nemoto <anemo@mba.ocn.ne.jp>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      f892b7d4
    • R
      kbuild: make modpost section warnings clearer · 25601209
      Russell King 提交于
      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: NRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: NAcked-by: David S. Miller <davem@davemloft.net>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      25601209
  12. 10 5月, 2007 1 次提交
  13. 09 5月, 2007 1 次提交
    • Y
      Add white list into modpost.c for memory hotplug code and ia64's machvec section · 72280ede
      Yasunori Goto 提交于
      This patch is add white list into modpost.c for some functions and
      ia64's section to fix section mismatchs.
      
        sparse_index_alloc() and zone_wait_table_init() calls bootmem allocator
        at boot time, and kmalloc/vmalloc at hotplug time. If config
        memory hotplug is on, there are references of bootmem allocater(init text)
        from them (normal text). This is cause of section mismatch.
      
        Bootmem is called by many functions and it must be
        used only at boot time. I think __init of them should keep for
        section mismatch check. So, I would like to register sparse_index_alloc()
        and zone_wait_table_init() into white list.
      
        In addition, ia64's .machvec section is function table of some platform
        dependent code. It is mixture of .init.text and normal text. These
        reference of __init functions are valid too.
      Signed-off-by: NYasunori Goto <y-goto@jp.fujitsu.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      72280ede
  14. 03 5月, 2007 6 次提交