Revision f1b33cb1c25ac476cbf22783f9ca2016f99648ed authored by Johannes Berg on 05 February 2009, 23:27:32 UTC, committed by John W. Linville on 11 February 2009, 16:27:17 UTC
We try to find the correct outgoing interface for injected frames
based on the TA, but since this is a hack for hostapd 11w, restrict
the heuristic to AP mode interfaces. At some point we'll add the
ability to give an interface index in radiotap or so and just
remove this heuristic again.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: stable@kernel.org [2.6.28.x]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1 parent fcf6b1b
Raw File
gate.lds.S
/*
 * Linker script for gate DSO.  The gate pages are an ELF shared object
 * prelinked to its virtual address, with only one read-only segment and
 * one execute-only segment (both fit in one page).  This script controls
 * its layout.
 */


#include <asm/system.h>

SECTIONS
{
	. = GATE_ADDR + SIZEOF_HEADERS;

	.hash			: { *(.hash) }		:readable
	.gnu.hash		: { *(.gnu.hash) }
	.dynsym			: { *(.dynsym) }
	.dynstr			: { *(.dynstr) }
	.gnu.version		: { *(.gnu.version) }
	.gnu.version_d		: { *(.gnu.version_d) }
	.gnu.version_r		: { *(.gnu.version_r) }

	.note			: { *(.note*) }		:readable	:note

	.dynamic		: { *(.dynamic) }	:readable	:dynamic

	/*
	 * This linker script is used both with -r and with -shared.  For
	 * the layouts to match, we need to skip more than enough space for
	 * the dynamic symbol table et al.  If this amount is insufficient,
	 * ld -shared will barf.  Just increase it here.
	 */
	. = GATE_ADDR + 0x600;

	.data.patch		: {
		__start_gate_mckinley_e9_patchlist = .;
		*(.data.patch.mckinley_e9)
		__end_gate_mckinley_e9_patchlist = .;

		__start_gate_vtop_patchlist = .;
		*(.data.patch.vtop)
		__end_gate_vtop_patchlist = .;

		__start_gate_fsyscall_patchlist = .;
		*(.data.patch.fsyscall_table)
		__end_gate_fsyscall_patchlist = .;

		__start_gate_brl_fsys_bubble_down_patchlist = .;
		*(.data.patch.brl_fsys_bubble_down)
		__end_gate_brl_fsys_bubble_down_patchlist = .;
	}						:readable

	.IA_64.unwind_info	: { *(.IA_64.unwind_info*) }
	.IA_64.unwind		: { *(.IA_64.unwind*) }	:readable	:unwind
#ifdef HAVE_BUGGY_SEGREL
	.text (GATE_ADDR + PAGE_SIZE) : { *(.text) *(.text.*) }	:readable
#else
	. = ALIGN(PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1));
	.text			: { *(.text) *(.text.*) }	:epc
#endif

	/DISCARD/		: {
		*(.got.plt) *(.got)
		*(.data .data.* .gnu.linkonce.d.*)
		*(.dynbss)
		*(.bss .bss.* .gnu.linkonce.b.*)
		*(__ex_table)
		*(__mca_table)
	}
}

/*
 * ld does not recognize this name token; use the constant.
 */
#define	PT_IA_64_UNWIND	0x70000001

/*
 * We must supply the ELF program headers explicitly to get just one
 * PT_LOAD segment, and set the flags explicitly to make segments read-only.
 */
PHDRS
{
	readable	PT_LOAD	FILEHDR	PHDRS	FLAGS(4);	/* PF_R */
#ifndef HAVE_BUGGY_SEGREL
	epc		PT_LOAD	FILEHDR PHDRS	FLAGS(1);	/* PF_X */
#endif
	dynamic		PT_DYNAMIC		FLAGS(4);	/* PF_R */
	note		PT_NOTE			FLAGS(4);	/* PF_R */
	unwind		PT_IA_64_UNWIND;
}

/*
 * This controls what symbols we export from the DSO.
 */
VERSION
{
	LINUX_2.5 {
	global:
		__kernel_syscall_via_break;
		__kernel_syscall_via_epc;
		__kernel_sigtramp;

	local: *;
	};
}

/* The ELF entry point can be used to set the AT_SYSINFO value.  */
ENTRY(__kernel_syscall_via_epc)
back to top