Removed obsolete development macro case.
This commit is contained in:
parent
ef444fb29c
commit
ebb5937568
@ -486,9 +486,6 @@ cannot_read:;
|
|||||||
*/
|
*/
|
||||||
static int make_mipsel_boot_block(Ecma119Image *t, uint8_t *buf, int flag)
|
static int make_mipsel_boot_block(Ecma119Image *t, uint8_t *buf, int flag)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifndef NIX
|
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
uint32_t seg_size, seg_start;
|
uint32_t seg_size, seg_start;
|
||||||
IsoNode *iso_node;
|
IsoNode *iso_node;
|
||||||
@ -527,121 +524,6 @@ static int make_mipsel_boot_block(Ecma119Image *t, uint8_t *buf, int flag)
|
|||||||
iso_lsb(buf + 28, seg_start, 4);
|
iso_lsb(buf + 28, seg_start, 4);
|
||||||
|
|
||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
uint32_t load_adr, exec_adr, p_offset, p_filesz, phdr_adr;
|
|
||||||
uint8_t elf_buf[32];
|
|
||||||
char *path = NULL;
|
|
||||||
IsoNode *iso_node;
|
|
||||||
Ecma119Node *ecma_node;
|
|
||||||
IsoStream *stream;
|
|
||||||
FILE *fp = NULL;
|
|
||||||
off_t image_size;
|
|
||||||
int ret;
|
|
||||||
uint32_t seg_size, seg_start;
|
|
||||||
|
|
||||||
/* Bytes 512 to 32767 may come from image or external file */
|
|
||||||
memset(buf, 0, 512);
|
|
||||||
|
|
||||||
if (t->image->num_mips_boot_files <= 0)
|
|
||||||
return ISO_SUCCESS;
|
|
||||||
|
|
||||||
/* <<< Unused. No partition table or such ? */
|
|
||||||
image_size = t->curblock * 2048;
|
|
||||||
|
|
||||||
ret = boot_nodes_from_iso_path(t, t->image->mips_boot_file_paths[0],
|
|
||||||
&iso_node, &ecma_node, "MIPS boot file", 0);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
stream = iso_file_get_stream((IsoFile *) iso_node);
|
|
||||||
|
|
||||||
/* <<< This does not work for boot file in old session */
|
|
||||||
/* >>> Replace by iso_stream_open(), iso_stream_read() which has to be
|
|
||||||
done earlier, or system area production must happen before
|
|
||||||
iso_image_create_burn_source() ends.
|
|
||||||
*/
|
|
||||||
path= iso_stream_get_source_path(stream, 0);
|
|
||||||
if (path == NULL) {
|
|
||||||
iso_msg_submit(t->image->id, ISO_ASSERT_FAILURE, 0,
|
|
||||||
"Cannot determine disk path of designated MIPS boot file: '%s'",
|
|
||||||
t->image->mips_boot_file_paths[0]);
|
|
||||||
return ISO_ASSERT_FAILURE;
|
|
||||||
}
|
|
||||||
fp = fopen(path, "r");
|
|
||||||
if (fp == NULL) {
|
|
||||||
cannot_read:;
|
|
||||||
iso_msg_submit(t->image->id, ISO_FILE_ERROR, 0,
|
|
||||||
"Cannot open designated MIPS boot file: '%s'",
|
|
||||||
path[0]);
|
|
||||||
if (fp != NULL)
|
|
||||||
fclose(fp);
|
|
||||||
free(path);
|
|
||||||
return ISO_FILE_ERROR;
|
|
||||||
}
|
|
||||||
free(path);
|
|
||||||
path = NULL;
|
|
||||||
|
|
||||||
/* Read necessary ELF info */
|
|
||||||
ret = fread(elf_buf, 32, 1, fp);
|
|
||||||
if (ret != 1)
|
|
||||||
goto cannot_read;
|
|
||||||
|
|
||||||
|
|
||||||
/* 24 - 27 | e_entry | Entry point virtual address */
|
|
||||||
exec_adr = iso_read_lsb(elf_buf + 24, 4);
|
|
||||||
|
|
||||||
/* 28 - 31 | e_phoff | Program header table file offset */
|
|
||||||
phdr_adr = iso_read_lsb(elf_buf + 28, 4);
|
|
||||||
|
|
||||||
/* <<< This does not work for boot file in old session */
|
|
||||||
/* >>> replace by skip-reading of stream data */
|
|
||||||
ret = fseek(fp, (long) phdr_adr, SEEK_SET);
|
|
||||||
if (ret != 1)
|
|
||||||
goto cannot_read;
|
|
||||||
ret = fread(elf_buf, 20, 1, fp);
|
|
||||||
if (ret != 1)
|
|
||||||
goto cannot_read;
|
|
||||||
|
|
||||||
/* 4 - 7 | p_offset | Segment file offset */
|
|
||||||
p_offset = iso_read_lsb(elf_buf + 4, 4);
|
|
||||||
|
|
||||||
/* 8 - 11 | p_vaddr | Segment virtual address */
|
|
||||||
load_adr = iso_read_lsb(elf_buf + 8, 4);
|
|
||||||
|
|
||||||
/* 16 - 19 | p_filesz | Segment size in file */
|
|
||||||
p_filesz = iso_read_lsb(elf_buf + 16, 4);
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
fp = NULL;
|
|
||||||
|
|
||||||
/* Write DEC Bootblock */
|
|
||||||
|
|
||||||
/* 8 - 11 | 0x0002757a | Magic number */
|
|
||||||
iso_lsb(buf + 8, 0x0002757a, 4);
|
|
||||||
|
|
||||||
/* 12 - 15 | 1 | Mode 1: Multi extent boot */
|
|
||||||
iso_lsb(buf + 12, 1, 4);
|
|
||||||
|
|
||||||
/* 16 - 19 | load_adr | Load address */
|
|
||||||
iso_lsb(buf + 16, load_adr, 4);
|
|
||||||
|
|
||||||
/* 20 - 23 | exec_adr | Execution address */
|
|
||||||
iso_lsb(buf + 20, exec_adr, 4);
|
|
||||||
|
|
||||||
/* 24 - 27 | seg_size | Segment size in file. */
|
|
||||||
seg_size = (p_filesz + 511) / 512;
|
|
||||||
iso_lsb(buf + 24, seg_size, 4);
|
|
||||||
|
|
||||||
/* 28 - 31 | seg_start | Segment file offset */
|
|
||||||
seg_start = ecma_node->info.file->sections[0].block * 4
|
|
||||||
+ (p_offset + 511) / 512;
|
|
||||||
iso_lsb(buf + 28, seg_start, 4);
|
|
||||||
|
|
||||||
return ISO_SUCCESS;
|
|
||||||
|
|
||||||
#endif /* NIX */
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user