Index: wp-admin/menu-header.php
===================================================================
--- wp-admin/menu-header.php	(revision 20399)
+++ wp-admin/menu-header.php	(working copy)
@@ -66,15 +66,17 @@
 			$class[] = $item[4];
 
 		$class = $class ? ' class="' . join( ' ', $class ) . '"' : '';
-		$id = ! empty( $item[5] ) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : '';
+		$id = ! empty( $item[5] ) ? preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) : 'wp-menu-' . $key;
+		$link_id = $id . '-link';
+
 		$img = '';
 		if ( ! empty( $item[6] ) )
 			$img = ( 'div' === $item[6] ) ? '<br />' : '<img src="' . $item[6] . '" alt="" />';
+
 		$arrow = '<div class="wp-menu-arrow"><div></div></div>';
-
 		$title = wptexturize( $item[0] );
 
-		echo "\n\t<li$class$id>";
+		echo "\n\t<li$class id='$id'>";
 
 		if ( false !== strpos( $class, 'wp-menu-separator' ) ) {
 			echo '<div class="separator"></div>';
@@ -86,9 +88,9 @@
 				$menu_file = substr( $menu_file, 0, $pos );
 			if ( ! empty( $menu_hook ) || ( ('index.php' != $submenu_items[0][2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
 				$admin_is_parent = true;
-				echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+				echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu_items[0][2]}' aria-labelledby='$link_id'>$img</a></div>$arrow<a href='admin.php?page={$submenu_items[0][2]}'$class $aria_attributes id='$link_id'>$title</a>";
 			} else {
-				echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>";
+				echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' aria-labelledby='$link_id'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes id='$link_id'>$title</a>";
 			}
 		} elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) {
 			$menu_hook = get_plugin_page_hook( $item[2], 'admin.php' );
@@ -97,9 +99,9 @@
 				$menu_file = substr( $menu_file, 0, $pos );
 			if ( ! empty( $menu_hook ) || ( ('index.php' != $item[2]) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) ) ) {
 				$admin_is_parent = true;
-				echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+				echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}' aria-labelledby='$link_id'>$img</a></div>$arrow<a href='admin.php?page={$item[2]}'$class $aria_attributes id='$link_id'>{$item[0]}</a>";
 			} else {
-				echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes>{$item[0]}</a>";
+				echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}' aria-labelledby='$link_id'>$img</a></div>$arrow<a href='{$item[2]}'$class $aria_attributes id='$link_id'>{$item[0]}</a>";
 			}
 		}
 
