	* disk.h (grub_disk): Add macro NESTED_FUNC_ATTR.

	* file.h (grub_file): Likewise.

	* fshelp.h (grub_fshelp_read_file): Likewise.

	* util/i386/pc/grub-setup.c (setup): Likewise.
	(save_first_sector): Likewise.
	(save_blocklists): Likewise.
	
	* fs/affs.c (grub_affs_read_file): Likewise.

	* fs/ext2.c (grub_ext2_read_file): Likewise.

	* fs/fat.c (grub_fat_read_data): Likewise.

	* fs/fshelp.c (grub_fshelp_read_file): Likewise.

	* fs/hfs.c (grub_hfs_read_file): Likewise.

	* fs/hfsplus.c (grub_hfsplus_read_file): Likewise.

	* fs/jfs.c (grub_jfs_read_file): Likewise.

	* fs/minix.c (grub_minix_read_file): Likewise.

	* fs/sfs.c (grub_sfs_read_file): Likewise.

	* fs/ufs.c (grub_ufs_read_file): Likewise.
	
	* fs/xfs.c (grub_xfs_read_file): Likewise.

	* command/blocklist.c (read_blocklist): Likewise.
	(print_blocklist): Likewise.

Index: include/grub/disk.h
===================================================================
RCS file: /sources/grub/grub2/include/grub/disk.h,v
retrieving revision 1.13
diff -u -p -r1.13 disk.h
--- include/grub/disk.h	21 Jul 2007 23:32:21 -0000	1.13
+++ include/grub/disk.h	31 Jul 2007 13:26:11 -0000
@@ -94,7 +94,7 @@ struct grub_disk
 
   /* Called when a sector was read. OFFSET is between 0 and
      the sector size minus 1, and LENGTH is between 0 and the sector size.  */
-  void (*read_hook) (grub_disk_addr_t sector,
+  void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 		     unsigned offset, unsigned length);
 
   /* Device-specific data.  */
Index: include/grub/file.h
===================================================================
RCS file: /sources/grub/grub2/include/grub/file.h,v
retrieving revision 1.5
diff -u -p -r1.5 file.h
--- include/grub/file.h	21 Jul 2007 23:32:21 -0000	1.5
+++ include/grub/file.h	31 Jul 2007 13:26:12 -0000
@@ -43,7 +43,7 @@ struct grub_file
   void *data;
 
   /* This is called when a sector is read. Used only for a disk device.  */
-  void (*read_hook) (grub_disk_addr_t sector,
+  void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 		     unsigned offset, unsigned length);
 };
 typedef struct grub_file *grub_file_t;
Index: include/grub/fshelp.h
===================================================================
RCS file: /sources/grub/grub2/include/grub/fshelp.h,v
retrieving revision 1.4
diff -u -p -r1.4 fshelp.h
--- include/grub/fshelp.h	21 Jul 2007 23:32:21 -0000	1.4
+++ include/grub/fshelp.h	31 Jul 2007 13:26:12 -0000
@@ -63,7 +63,7 @@ EXPORT_FUNC(grub_fshelp_find_file) (cons
    blocks have a size of LOG2BLOCKSIZE (in log2).  */
 grub_ssize_t
 EXPORT_FUNC(grub_fshelp_read_file) (grub_disk_t disk, grub_fshelp_node_t node,
-				    void (*read_hook) (grub_disk_addr_t sector,
+				    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 						       unsigned offset,
 						       unsigned length),
 				    int pos, grub_size_t len, char *buf,
Index: util/i386/pc/grub-setup.c
===================================================================
RCS file: /sources/grub/grub2/util/i386/pc/grub-setup.c,v
retrieving revision 1.27
diff -u -p -r1.27 grub-setup.c
--- util/i386/pc/grub-setup.c	22 Jul 2007 19:17:27 -0000	1.27
+++ util/i386/pc/grub-setup.c	31 Jul 2007 13:26:17 -0000
@@ -109,9 +109,9 @@ setup (const char *prefix, const char *d
   unsigned long first_start = ~0UL;
   int able_to_embed = 1;
   
-  auto void save_first_sector (grub_disk_addr_t sector, unsigned offset,
+  auto void NESTED_FUNC_ATTR save_first_sector (grub_disk_addr_t sector, unsigned offset,
 			       unsigned length);
-  auto void save_blocklists (grub_disk_addr_t sector, unsigned offset,
+  auto void NESTED_FUNC_ATTR save_blocklists (grub_disk_addr_t sector, unsigned offset,
 			     unsigned length);
 
   auto int find_first_partition_start (grub_disk_t disk,
@@ -130,7 +130,7 @@ setup (const char *prefix, const char *d
       return 0;
     }
   
-  void save_first_sector (grub_disk_addr_t sector, unsigned offset,
+  void NESTED_FUNC_ATTR save_first_sector (grub_disk_addr_t sector, unsigned offset,
 			  unsigned length)
     {
       grub_util_info ("the first sector is <%llu,%u,%u>",
@@ -142,7 +142,7 @@ setup (const char *prefix, const char *d
       first_sector = sector;
     }
 
-  void save_blocklists (grub_disk_addr_t sector, unsigned offset,
+  void NESTED_FUNC_ATTR save_blocklists (grub_disk_addr_t sector, unsigned offset,
 			unsigned length)
     {
       struct boot_blocklist *prev = block + 1;
Index: fs/affs.c
===================================================================
RCS file: /sources/grub/grub2/fs/affs.c,v
retrieving revision 1.5
diff -u -p -r1.5 affs.c
--- fs/affs.c	21 Jul 2007 23:32:20 -0000	1.5
+++ fs/affs.c	31 Jul 2007 13:26:18 -0000
@@ -149,7 +149,7 @@ grub_affs_read_block (grub_fshelp_node_t
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_affs_read_file (grub_fshelp_node_t node,
-		     void (*read_hook) (grub_disk_addr_t sector,
+		     void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					unsigned offset, unsigned length),
 		     int pos, grub_size_t len, char *buf)
 {
Index: fs/ext2.c
===================================================================
RCS file: /sources/grub/grub2/fs/ext2.c,v
retrieving revision 1.16
diff -u -p -r1.16 ext2.c
--- fs/ext2.c	21 Jul 2007 23:32:20 -0000	1.16
+++ fs/ext2.c	31 Jul 2007 13:26:19 -0000
@@ -267,7 +267,7 @@ grub_ext2_read_block (grub_fshelp_node_t
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_ext2_read_file (grub_fshelp_node_t node,
-		     void (*read_hook) (grub_disk_addr_t sector,
+		     void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					unsigned offset, unsigned length),
 		     int pos, grub_size_t len, char *buf)
 {
Index: fs/fat.c
===================================================================
RCS file: /sources/grub/grub2/fs/fat.c,v
retrieving revision 1.17
diff -u -p -r1.17 fat.c
--- fs/fat.c	21 Jul 2007 23:32:20 -0000	1.17
+++ fs/fat.c	31 Jul 2007 13:26:26 -0000
@@ -309,7 +309,7 @@ grub_fat_mount (grub_disk_t disk)
 
 static grub_ssize_t
 grub_fat_read_data (grub_disk_t disk, struct grub_fat_data *data,
-		    void (*read_hook) (grub_disk_addr_t sector,
+		    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 				       unsigned offset, unsigned length),
 		    grub_off_t offset, grub_size_t len, char *buf)
 {
Index: fs/fshelp.c
===================================================================
RCS file: /sources/grub/grub2/fs/fshelp.c,v
retrieving revision 1.8
diff -u -p -r1.8 fshelp.c
--- fs/fshelp.c	21 Jul 2007 23:32:20 -0000	1.8
+++ fs/fshelp.c	31 Jul 2007 13:26:27 -0000
@@ -222,7 +222,7 @@ grub_fshelp_find_file (const char *path,
    blocks have a size of LOG2BLOCKSIZE (in log2).  */
 grub_ssize_t
 grub_fshelp_read_file (grub_disk_t disk, grub_fshelp_node_t node,
-		       void (*read_hook) (grub_disk_addr_t sector,
+		       void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					  unsigned offset, unsigned length),
 		       int pos, grub_size_t len, char *buf,
 		       int (*get_block) (grub_fshelp_node_t node, int block),
Index: fs/hfs.c
===================================================================
RCS file: /sources/grub/grub2/fs/hfs.c,v
retrieving revision 1.8
diff -u -p -r1.8 hfs.c
--- fs/hfs.c	21 Jul 2007 23:32:20 -0000	1.8
+++ fs/hfs.c	31 Jul 2007 13:26:28 -0000
@@ -228,7 +228,7 @@ grub_hfs_block (struct grub_hfs_data *da
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_hfs_read_file (struct grub_hfs_data *data,
-		    void (*read_hook) (grub_disk_addr_t sector,
+		    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 				       unsigned offset, unsigned length),
 		     int pos, grub_size_t len, char *buf)
 {
Index: fs/hfsplus.c
===================================================================
RCS file: /sources/grub/grub2/fs/hfsplus.c,v
retrieving revision 1.9
diff -u -p -r1.9 hfsplus.c
--- fs/hfsplus.c	21 Jul 2007 23:32:20 -0000	1.9
+++ fs/hfsplus.c	31 Jul 2007 13:26:29 -0000
@@ -356,7 +356,7 @@ grub_hfsplus_read_block (grub_fshelp_nod
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_hfsplus_read_file (grub_fshelp_node_t node,
-			void (*read_hook) (grub_disk_addr_t sector,
+			void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					   unsigned offset, unsigned length),
 			int pos, grub_size_t len, char *buf)
 {
Index: fs/jfs.c
===================================================================
RCS file: /sources/grub/grub2/fs/jfs.c,v
retrieving revision 1.7
diff -u -p -r1.7 jfs.c
--- fs/jfs.c	21 Jul 2007 23:32:21 -0000	1.7
+++ fs/jfs.c	31 Jul 2007 13:26:30 -0000
@@ -539,7 +539,7 @@ grub_jfs_getent (struct grub_jfs_diropen
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_jfs_read_file (struct grub_jfs_data *data,
-		    void (*read_hook) (grub_disk_addr_t sector,
+		    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 				       unsigned offset, unsigned length),
 		    int pos, grub_size_t len, char *buf)
 {
Index: fs/minix.c
===================================================================
RCS file: /sources/grub/grub2/fs/minix.c,v
retrieving revision 1.6
diff -u -p -r1.6 minix.c
--- fs/minix.c	21 Jul 2007 23:32:21 -0000	1.6
+++ fs/minix.c	31 Jul 2007 13:26:31 -0000
@@ -186,7 +186,7 @@ grub_minix_get_file_block (struct grub_m
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_minix_read_file (struct grub_minix_data *data,
-		      void (*read_hook) (grub_disk_addr_t sector,
+		      void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					 unsigned offset, unsigned length),
 		      int pos, grub_disk_addr_t len, char *buf)
 {
Index: fs/sfs.c
===================================================================
RCS file: /sources/grub/grub2/fs/sfs.c,v
retrieving revision 1.6
diff -u -p -r1.6 sfs.c
--- fs/sfs.c	21 Jul 2007 23:32:21 -0000	1.6
+++ fs/sfs.c	31 Jul 2007 13:26:32 -0000
@@ -258,7 +258,7 @@ grub_sfs_read_block (grub_fshelp_node_t 
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_sfs_read_file (grub_fshelp_node_t node,
-		    void (*read_hook) (grub_disk_addr_t sector,
+		    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 				       unsigned offset, unsigned length),
 		    int pos, grub_size_t len, char *buf)
 {
Index: fs/ufs.c
===================================================================
RCS file: /sources/grub/grub2/fs/ufs.c,v
retrieving revision 1.7
diff -u -p -r1.7 ufs.c
--- fs/ufs.c	21 Jul 2007 23:32:21 -0000	1.7
+++ fs/ufs.c	31 Jul 2007 13:26:32 -0000
@@ -240,7 +240,7 @@ grub_ufs_get_file_block (struct grub_ufs
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_ufs_read_file (struct grub_ufs_data *data,
-		    void (*read_hook) (grub_disk_addr_t sector,
+		    void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 				       unsigned offset, unsigned length),
 		    int pos, grub_size_t len, char *buf)
 {
Index: fs/xfs.c
===================================================================
RCS file: /sources/grub/grub2/fs/xfs.c,v
retrieving revision 1.9
diff -u -p -r1.9 xfs.c
--- fs/xfs.c	21 Jul 2007 23:32:21 -0000	1.9
+++ fs/xfs.c	31 Jul 2007 13:26:33 -0000
@@ -236,7 +236,7 @@ grub_xfs_read_block (grub_fshelp_node_t 
    POS.  Return the amount of read bytes in READ.  */
 static grub_ssize_t
 grub_xfs_read_file (grub_fshelp_node_t node,
-		     void (*read_hook) (grub_disk_addr_t sector,
+		     void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
 					unsigned offset, unsigned length),
 		     int pos, grub_size_t len, char *buf)
 {
Index: commands/blocklist.c
===================================================================
RCS file: /sources/grub/grub2/commands/blocklist.c,v
retrieving revision 1.3
diff -u -p -r1.3 blocklist.c
--- commands/blocklist.c	21 Jul 2007 23:32:18 -0000	1.3
+++ commands/blocklist.c	31 Jul 2007 13:29:17 -0000
@@ -36,12 +36,12 @@ grub_cmd_blocklist (struct grub_arg_list
   unsigned num_sectors = 0;
   int num_entries = 0;
   grub_disk_addr_t part_start = 0;
-  auto void read_blocklist (grub_disk_addr_t sector, unsigned offset,
+  auto void NESTED_FUNC_ATTR read_blocklist (grub_disk_addr_t sector, unsigned offset,
 			    unsigned length);
-  auto void print_blocklist (grub_disk_addr_t sector, unsigned num,
+  auto void NESTED_FUNC_ATTR print_blocklist (grub_disk_addr_t sector, unsigned num,
 			     unsigned offset, unsigned length);
   
-  void read_blocklist (grub_disk_addr_t sector, unsigned offset,
+  void NESTED_FUNC_ATTR read_blocklist (grub_disk_addr_t sector, unsigned offset,
 		       unsigned length)
     {
       if (num_sectors > 0)
@@ -66,7 +66,7 @@ grub_cmd_blocklist (struct grub_arg_list
 	print_blocklist (sector, 0, offset, length);
     }
   
-  void print_blocklist (grub_disk_addr_t sector, unsigned num,
+  void NESTED_FUNC_ATTR print_blocklist (grub_disk_addr_t sector, unsigned num,
 			unsigned offset, unsigned length)
     {
       if (num_entries++)
