binutils221: revisit start/stop label generation
authorJohn Marino <draco@marino.st>
Thu, 7 Apr 2011 06:28:22 +0000 (08:28 +0200)
committerJohn Marino <draco@marino.st>
Thu, 7 Apr 2011 06:32:27 +0000 (08:32 +0200)
commitf070647cc5317c4924be4dd60563fc39c18094cf
tree0230229db8df5b0844db933d97e1f83505e1af8e
parentd6843a62223fe0a95f6a180cb19de19a0e879236
binutils221: revisit start/stop label generation

In commit b133d3fde203bbf8e2c359d2be9f09c20ce732b5 (3 April), ld's
lang_insert_orphan function was modified to include all symbols, which
matches the behavior of binutils 2.17 and allowed kernel modules
utilizing previously unreferenced __start_* and __stop_* sections to
load properly.

For at least 4 years, the ld developed by binutils has the policy to
discard all unreference symbols, considering them "clutter".  This
commit will revert back ld back to its default behavior unless the
options -shared or -Bshareable are passed in the command line.  In those
cases, the linked file will include all symbols, referenced or not.

In the future, we may consider modifying an .em file to define a flag
that will revert to 2.17 on a per-target basis rather than forcing all
shared objects to carry extraneous symbols.  I'd have to identify all
kernel modules requiring this flag before implementing that change.
contrib/binutils-2.21/README.DRAGONFLY
contrib/binutils-2.21/ld/ldlang.c