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>
24 GRUB_MOD_LICENSE ("GPLv3+");
27 grub_aout_get_type (union grub_aout_header
*header
)
31 magic
= AOUT_GETMAGIC (header
->aout32
);
32 if ((magic
== AOUT32_OMAGIC
) || (magic
== AOUT32_NMAGIC
) ||
33 (magic
== AOUT32_ZMAGIC
) || (magic
== AOUT32_QMAGIC
))
34 return AOUT_TYPE_AOUT32
;
35 else if ((magic
== AOUT64_OMAGIC
) || (magic
== AOUT64_NMAGIC
) ||
36 (magic
== AOUT64_ZMAGIC
))
37 return AOUT_TYPE_AOUT64
;
39 return AOUT_TYPE_NONE
;
43 grub_aout_load (grub_file_t file
, int offset
,
45 int load_size
, grub_size_t bss_size
)
47 if ((grub_file_seek (file
, offset
)) == (grub_off_t
) - 1)
51 load_size
= file
->size
- offset
;
53 grub_file_read (file
, load_addr
, load_size
);
59 grub_memset ((char *) load_addr
+ load_size
, 0, bss_size
);