[BUG] ppc64 relocatable vmlinux builds even with undefined symbols

Milton Miller miltonm at bga.com
Wed Nov 19 18:14:49 EST 2008


With the additon of -pie to build CONFIG_RELOCATABLE
CONFIG_PPC64 kernels, even
if a function is undefined we still get a vmlinux,
System.map, and other files
with no error message.
 
This is with binutils 2.17 as built by debian
 
with 2.6.28-rc5, CONFIG_EMBEDDED=y CONFIG_HOTPLUG=n
CONFIG_PCI=y, CONFIG_RELOCATABLE=n
 
arch/powerpc/kernel/built-in.o: In function
`.pcibios_remove_root_bus':
(.text+0x12dc4): undefined reference to
`.pcibios_unmap_io_space'
make[1]: *** [.tmp_vmlinux1] Error 1
make: *** [sub-make] Error 2
 
 
with CONFIG_RELOCATABLE=y
  LD      init/built-in.o
  LD      .tmp_vmlinux1
  KSYM    .tmp_kallsyms1.S
  AS      .tmp_kallsyms1.o
  LD      .tmp_vmlinux2
  KSYM    .tmp_kallsyms2.S
  AS      .tmp_kallsyms2.o
  LD      vmlinux
  SYSMAP  System.map
  SYSMAP  .tmp_System.map

Note that we set -pie for this combination.  I tried adding
seperately both
--no-undefined and --no-allow-shlib-undefined to
LDFLAGS_vmilnux,
but the link still did not error out.

I note that nm -u will detect the U symbol:

$ nm -u /tmp/p-test/vmlinux                  w mach_cell
                 w mach_iseries
                 w mach_powermac
                 U pcibios_unmap_io_space

but that would either require duplicating cmd_vmlinux and
adding an additonal
check or modifing rule_vmlinux. 

milton 



More information about the Linuxppc-dev mailing list