[PATCH] Fix .altinstructions linking failures

Andi Kleen (ak@muc.de)
Tue, 6 May 2003 08:30:55 +0200


Some configs didn't link anymore because they got references from
.altinstructions to __exit functions. Fixing it at the linker level
is not easily possible. This patch just discards .text.exit at runtime
instead of link time to avoid this.

Idea from Andrew Morton.

It will also fix a related problem with .eh_frame in modern gcc (so far
only observed on x86-64, but could happen on i386 too)

Index: linux/arch/i386/vmlinux.lds.S
===================================================================
RCS file: /home/cvs/linux-2.5/arch/i386/vmlinux.lds.S,v
retrieving revision 1.18
diff -u -u -r1.18 vmlinux.lds.S
--- linux/arch/i386/vmlinux.lds.S 30 Apr 2003 14:32:05 -0000 1.18
+++ linux/arch/i386/vmlinux.lds.S 6 May 2003 05:28:28 -0000
@@ -85,7 +85,10 @@
__alt_instructions = .;
.altinstructions : { *(.altinstructions) }
__alt_instructions_end = .;
- .altinstr_replacement : { *(.altinstr_replacement) }
+ .altinstr_replacement : { *(.altinstr_replacement) }
+ /* .exit.text is discard at runtime, not link time, to deal with references
+ from .altinstructions and .eh_frame */
+ .exit.text : { *(.exit.text) }
. = ALIGN(4096);
__initramfs_start = .;
.init.ramfs : { *(.init.ramfs) }
@@ -106,7 +109,6 @@

/* Sections to be discarded */
/DISCARD/ : {
- *(.exit.text)
*(.exit.data)
*(.exitcall.exit)
}

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