2 * Copyright (C) 2008 Free Software Foundation, Inc.
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include <grub/file.h>
21 #include <grub/misc.h>
22 #include <grub/aout.h>
25 grub_aout_get_type (union grub_aout_header
*header
)
29 magic
= AOUT_GETMAGIC (header
->aout32
);
30 if ((magic
== AOUT32_OMAGIC
) || (magic
== AOUT32_NMAGIC
) ||
31 (magic
== AOUT32_ZMAGIC
) || (magic
== AOUT32_QMAGIC
))
32 return AOUT_TYPE_AOUT32
;
33 else if ((magic
== AOUT64_OMAGIC
) || (magic
== AOUT64_NMAGIC
) ||
34 (magic
== AOUT64_ZMAGIC
))
35 return AOUT_TYPE_AOUT64
;
37 return AOUT_TYPE_NONE
;
41 grub_aout_load (grub_file_t file
, int offset
,
42 grub_addr_t load_addr
,
44 grub_addr_t bss_end_addr
)
46 if ((grub_file_seek (file
, offset
)) == (grub_off_t
) - 1)
50 load_size
= file
->size
- offset
;
52 grub_file_read (file
, (char *) load_addr
, load_size
);
58 grub_memset (load_addr
+ load_size
, 0,
59 bss_end_addr
- load_addr
- load_size
);