[GIT PULL] x86 - additional relocation fixes

From: H. Peter Anvin
Date: Thu May 24 2012 - 16:32:25 EST


Hi Linus,

These are additional symbols that have been found to either be
absolute or look like they might end up being absolute on one version
of GNU ld or another. Unfortunately we have since that a different
GNU ld version, 2.21, can generate bogus absolute symbols; again, this
would have caused a malfunctioning kernel on x86-32 if relocated.

The relocs.c changes changed silent corruption to a build time error.

It is worth noting that if the various barrier symbols we use were
more consistent in the namespace used this probably could be reduced
to a single regexp; if nothing else it looks like there is migration
toward a common __(start|stop)___.* namespace.

Greg: these builds are tagged for stable v3.4, but if the relocs.c
changes are backported then you will need these patches for the
backports as well.

The following changes since commit b2d668da9307c4c163dd603d2bb3cadb10f9fd37:

x86, relocs: Build clean fix (2012-05-21 12:19:37 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-for-linus

The head of this tree is ea17e7414bc62e8d3bde8d08e3df1d921c518c17.

H. Peter Anvin (2):
x86-32, relocs: Whitelist more symbols for ld bug workaround
x86, relocs: Add jiffies and jiffies_64 to the relative whitelist

arch/x86/tools/relocs.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)

arch/x86/tools/relocs.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index b43cfcd..b685296 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -60,6 +60,18 @@ static const char * const sym_regex_kernel[S_NSYMTYPES] = {
"__x86_cpu_dev_(start|end)|"
"(__parainstructions|__alt_instructions)(|_end)|"
"(__iommu_table|__apicdrivers|__smp_locks)(|_end)|"
+ "__(start|end)_pci_.*|"
+ "__(start|end)_builtin_fw|"
+ "__(start|stop)___ksymtab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
+ "__(start|stop)___kcrctab(|_gpl|_unused|_unused_gpl|_gpl_future)|"
+ "__(start|stop)___param|"
+ "__(start|stop)___modver|"
+ "__(start|stop)___bug_table|"
+ "__tracedata_(start|end)|"
+ "__(start|stop)_notes|"
+ "__end_rodata|"
+ "__initramfs_start|"
+ "(jiffies|jiffies_64)|"
"_end)$"
};

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/