I found indications that perhaps both problems are in fact caused by ld
no longer including undefined symbols in the output.

Here is a section from the working module built with old binutils:

  0012980: 0047 4343 3a20 2844 6562 6961 6e20 342e  .GCC: (Debian 4.
  0012990: 392e 322d 3130 2920 342e 392e 3200 0047  9.2-10) 4.9.2..G
  00129a0: 4343 3a20 2844 6562 6961 6e20 342e 392e  CC: (Debian 4.9.
  00129b0: 322d 3130 2920 342e 392e 3200 0047 4343  2-10) 4.9.2..GCC
  00129c0: 3a20 2844 6562 6961 6e20 342e 392e 322d  : (Debian 4.9.2-
  00129d0: 3130 2920 342e 392e 3200 0047 4343 3a20  10) 4.9.2..GCC: 
  00129e0: 2844 6562 6961 6e20 342e 392e 322d 3130  (Debian 4.9.2-10
  00129f0: 2920 342e 392e 3200 0047 4343 3a20 2844  ) 4.9.2..GCC: (D
  0012a00: 6562 6961 6e20 342e 392e 322d 3130 2920  ebian 4.9.2-10) 
  0012a10: 342e 392e 3200 0047 4343 3a20 2844 6562  4.9.2..GCC: (Deb
  0012a20: 6961 6e20 342e 392e 322d 3130 2920 342e  ian 4.9.2-10) 4.
  0012a30: 392e 3200 0047 4343 3a20 2844 6562 6961  9.2..GCC: (Debia
  0012a40: 6e20 342e 392e 322d 3130 2920 342e 392e  n 4.9.2-10) 4.9.
  0012a50: 3200 0047 4343 3a20 2844 6562 6961 6e20  2..GCC: (Debian 
  0012a60: 342e 392e 322d 3130 2920 342e 392e 3200  4.9.2-10) 4.9.2.
  0012a70: 002e 7379 6d74 6162 002e 7374 7274 6162  ..symtab..strtab
  0012a80: 002e 7368 7374 7274 6162 002e 6e6f 7465  ..shstrtab..note
  0012a90: 2e67 6e75 2e62 7569 6c64 2d69 6400 2e72  .gnu.build-id..r
  0012aa0: 656c 612e 7465 7874 002e 7265 6c61 2e69  ela.text..rela.i
  0012ab0: 6e69 742e 7465 7874 002e 7265 6c61 2e66  nit.text..rela.f
  0012ac0: 6978 7570 002e 7265 6c61 2e65 7869 742e  ixup..rela.exit.
  0012ad0: 7465 7874 002e 7265 6c61 2e74 6578 742e  text..rela.text.
  0012ae0: 756e 6c69 6b65 6c79 002e 7265 6c61 5f5f  unlikely..rela__
  0012af0: 6b73 796d 7461 625f 6770 6c00 2e72 656c  ksymtab_gpl..rel
  0012b00: 612e 726f 6461 7461 002e 7265 6c61 5f5f  a.rodata..rela__
  0012b10: 6275 675f 7461 626c 6500 2e72 6f64 6174  bug_table..rodat
  0012b20: 612e 7374 7231 2e38 002e 7265 6c61 5f5f  a.str1.8..rela__
  0012b30: 6d63 6f75 6e74 5f6c 6f63 002e 7265 6c61  mcount_loc..rela
  0012b40: 5f5f 6578 5f74 6162 6c65 005f 5f6b 7379  __ex_table.__ksy
  0012b50: 6d74 6162 5f73 7472 696e 6773 002e 6d6f  mtab_strings..mo
  0012b60: 6469 6e66 6f00 5f5f 7665 7273 696f 6e73  dinfo.__versions
  0012b70: 002e 7265 6c61 5f5f 6b63 7263 7461 625f  ..rela__kcrctab_
  0012b80: 6770 6c00 2e72 656c 612e 6461 7461 002e  gpl..rela.data..
  0012b90: 7265 6c61 2e64 6174 612e 7265 6c2e 726f  rela.data.rel.ro
  0012ba0: 002e 7265 6c61 2e6f 7064 002e 7265 6c61  ..rela.opd..rela
  0012bb0: 2e74 6f63 002e 7265 6c61 2e67 6e75 2e6c  .toc..rela.gnu.l
  0012bc0: 696e 6b6f 6e63 652e 7468 6973 5f6d 6f64  inkonce.this_mod
  0012bd0: 756c 6500 2e62 7373 002e 7374 7562 7300  ule..bss..stubs.
  0012be0: 2e66 7472 6163 652e 7472 616d 7000 2e63  .ftrace.tramp..c
  0012bf0: 6f6d 6d65 6e74 0000 0000 0000 0000 0000  omment..........

And the same section from the new binutils build (the disassenmbled
module is totally identical as far as code is concerned):

  0012980: 0047 4343 3a20 2844 6562 6961 6e20 342e  .GCC: (Debian 4.
  0012990: 392e 322d 3130 2920 342e 392e 3200 0047  9.2-10) 4.9.2..G
  00129a0: 4343 3a20 2844 6562 6961 6e20 342e 392e  CC: (Debian 4.9.
  00129b0: 322d 3130 2920 342e 392e 3200 0047 4343  2-10) 4.9.2..GCC
  00129c0: 3a20 2844 6562 6961 6e20 342e 392e 322d  : (Debian 4.9.2-
  00129d0: 3130 2920 342e 392e 3200 0047 4343 3a20  10) 4.9.2..GCC: 
  00129e0: 2844 6562 6961 6e20 342e 392e 322d 3130  (Debian 4.9.2-10
  00129f0: 2920 342e 392e 3200 0047 4343 3a20 2844  ) 4.9.2..GCC: (D
  0012a00: 6562 6961 6e20 342e 392e 322d 3130 2920  ebian 4.9.2-10) 
  0012a10: 342e 392e 3200 0047 4343 3a20 2844 6562  4.9.2..GCC: (Deb
  0012a20: 6961 6e20 342e 392e 322d 3130 2920 342e  ian 4.9.2-10) 4.
  0012a30: 392e 3200 0047 4343 3a20 2844 6562 6961  9.2..GCC: (Debia
  0012a40: 6e20 342e 392e 322d 3130 2920 342e 392e  n 4.9.2-10) 4.9.
  0012a50: 3200 0047 4343 3a20 2844 6562 6961 6e20  2..GCC: (Debian 
  0012a60: 342e 392e 322d 3130 2920 342e 392e 3200  4.9.2-10) 4.9.2.
  0012a70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
  0012a80: 0000 0000 0000 0000 0000 0000 0300 0001  ................
  0012a90: 0000 0000 0000 0000 0000 0000 0000 0000  ................

So some stuff was dropped by the new binutils, just like it was from
vmlinux on ppc64el, and that could very well be what the module loading
code was looking for.

I can't find any way to undo this change to ld about dropping undefined
symbols from the output.

-- 
Len Sorensen

Reply via email to