fix compilation with gcc 4.2

gcc-4.2 is a lot more picky about its symbol handling. EXPORT_SYMBOL no
longer works on symbols that are undefined or defined with static scope.

For example, with CONFIG_PROFILE off, I see:

kernel/profile.c:206: error: __ksymtab_profile_event_unregister causes a section type conflict
kernel/profile.c:205: error: __ksymtab_profile_event_register causes a section type conflict

This patch moves the EXPORTs inside the #ifdef CONFIG_PROFILE, so we
only try to export symbols that are defined.

Also, in kernel/kprobes.c there's an EXPORT_SYMBOL_GPL() for
jprobes_return, which if CONFIG_JPROBES is undefined is a static
inline and gives the same error.

And in drivers/acpi/resources/rsxface.c, there's an
ACPI_EXPORT_SYMBOPL() for a static symbol. If it's static, it's not
accessible from outside the compilation unit, so should bot be exported.

These three changes allow building a zx1_defconfig kernel with gcc 4.2
on IA64.

[akpm@linux-foundation.org: export jpobe_return properly]
Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au>
Cc: Prasanna S Panchamukhi <prasanna@in.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Peter Chubb and committed by Linus Torvalds cd5bfea2 6ddfca95

+7 -4
-2
drivers/acpi/resources/rsxface.c
··· 474 return (AE_CTRL_TERMINATE); 475 } 476 477 - ACPI_EXPORT_SYMBOL(acpi_rs_match_vendor_resource) 478 - 479 /******************************************************************************* 480 * 481 * FUNCTION: acpi_walk_resources
··· 474 return (AE_CTRL_TERMINATE); 475 } 476 477 /******************************************************************************* 478 * 479 * FUNCTION: acpi_walk_resources
+5
kernel/kprobes.c
··· 1063 EXPORT_SYMBOL_GPL(unregister_kprobe); 1064 EXPORT_SYMBOL_GPL(register_jprobe); 1065 EXPORT_SYMBOL_GPL(unregister_jprobe); 1066 EXPORT_SYMBOL_GPL(jprobe_return); 1067 EXPORT_SYMBOL_GPL(register_kretprobe); 1068 EXPORT_SYMBOL_GPL(unregister_kretprobe);
··· 1063 EXPORT_SYMBOL_GPL(unregister_kprobe); 1064 EXPORT_SYMBOL_GPL(register_jprobe); 1065 EXPORT_SYMBOL_GPL(unregister_jprobe); 1066 + #ifdef CONFIG_KPROBES 1067 EXPORT_SYMBOL_GPL(jprobe_return); 1068 + #endif 1069 + 1070 + #ifdef CONFIG_KPROBES 1071 EXPORT_SYMBOL_GPL(register_kretprobe); 1072 EXPORT_SYMBOL_GPL(unregister_kretprobe); 1073 + #endif
+2 -2
kernel/profile.c
··· 199 EXPORT_SYMBOL_GPL(unregister_timer_hook); 200 EXPORT_SYMBOL_GPL(task_handoff_register); 201 EXPORT_SYMBOL_GPL(task_handoff_unregister); 202 203 #endif /* CONFIG_PROFILING */ 204 205 - EXPORT_SYMBOL_GPL(profile_event_register); 206 - EXPORT_SYMBOL_GPL(profile_event_unregister); 207 208 #ifdef CONFIG_SMP 209 /*
··· 199 EXPORT_SYMBOL_GPL(unregister_timer_hook); 200 EXPORT_SYMBOL_GPL(task_handoff_register); 201 EXPORT_SYMBOL_GPL(task_handoff_unregister); 202 + EXPORT_SYMBOL_GPL(profile_event_register); 203 + EXPORT_SYMBOL_GPL(profile_event_unregister); 204 205 #endif /* CONFIG_PROFILING */ 206 207 208 #ifdef CONFIG_SMP 209 /*