~ubuntu-branches/ubuntu/wily/grub2/wily

« back to all changes in this revision

Viewing changes to grub-core/loader/xnu.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2011-01-11 17:11:44 UTC
  • mto: (17.3.26 experimental)
  • mto: This revision was merged to the branch mainline in revision 60.
  • Revision ID: james.westby@ubuntu.com-20110111171144-o2h6luxzei5fivmf
Tags: upstream-1.99~20110111
ImportĀ upstreamĀ versionĀ 1.99~20110111

Show diffs side-by-side

added added

removed removed

Lines of Context:
342
342
  grub_macho_t macho;
343
343
  grub_uint32_t startcode, endcode;
344
344
  int i;
345
 
  char *ptr, *loadaddr;
 
345
  char *ptr;
 
346
  void *loadaddr;
346
347
  grub_addr_t loadaddr_target;
347
348
 
348
349
  if (argc < 1)
375
376
  if (!grub_xnu_relocator)
376
377
    return grub_errno;
377
378
  grub_xnu_heap_target_start = startcode;
378
 
  err = grub_xnu_heap_malloc (endcode - startcode, (void **) &loadaddr,
 
379
  err = grub_xnu_heap_malloc (endcode - startcode, &loadaddr,
379
380
                              &loadaddr_target);
380
381
 
381
382
  if (err)
386
387
    }
387
388
 
388
389
  /* Load kernel. */
389
 
  err = grub_macho_load32 (macho, loadaddr - startcode, GRUB_MACHO_NOBSS);
 
390
  err = grub_macho_load32 (macho, (char *) loadaddr - startcode,
 
391
                           GRUB_MACHO_NOBSS);
390
392
  if (err)
391
393
    {
392
394
      grub_macho_close (macho);
450
452
  grub_macho_t macho;
451
453
  grub_uint64_t startcode, endcode;
452
454
  int i;
453
 
  char *ptr, *loadaddr;
 
455
  char *ptr;
 
456
  void *loadaddr;
454
457
  grub_addr_t loadaddr_target;
455
458
 
456
459
  if (argc < 1)
486
489
  if (!grub_xnu_relocator)
487
490
    return grub_errno;
488
491
  grub_xnu_heap_target_start = startcode;
489
 
  err = grub_xnu_heap_malloc (endcode - startcode, (void **) &loadaddr,
 
492
  err = grub_xnu_heap_malloc (endcode - startcode, &loadaddr,
490
493
                              &loadaddr_target);
491
494
 
492
495
  if (err)
497
500
    }
498
501
 
499
502
  /* Load kernel. */
500
 
  err = grub_macho_load64 (macho, loadaddr - startcode, GRUB_MACHO_NOBSS);
 
503
  err = grub_macho_load64 (macho, (char *) loadaddr - startcode,
 
504
                           GRUB_MACHO_NOBSS);
501
505
  if (err)
502
506
    {
503
507
      grub_macho_close (macho);
636
640
  grub_file_t infoplist;
637
641
  struct grub_xnu_extheader *exthead;
638
642
  int neededspace = sizeof (*exthead);
639
 
  grub_uint8_t *buf, *buf0;
 
643
  grub_uint8_t *buf;
 
644
  void *buf0;
640
645
  grub_addr_t buf_target;
641
646
  grub_size_t infoplistsize = 0, machosize = 0;
642
647
  char *name, *nameend;
692
697
  err = grub_xnu_align_heap (GRUB_XNU_PAGESIZE);
693
698
  if (err)
694
699
    return err;
695
 
  err = grub_xnu_heap_malloc (neededspace, (void **) &buf0, &buf_target);
 
700
  err = grub_xnu_heap_malloc (neededspace, &buf0, &buf_target);
696
701
  if (err)
697
702
    return err;
698
703
  buf = buf0;
704
709
  /* Load the binary. */
705
710
  if (macho)
706
711
    {
707
 
      exthead->binaryaddr = buf_target + (buf - buf0);
 
712
      exthead->binaryaddr = buf_target + (buf - (grub_uint8_t *) buf0);
708
713
      exthead->binarysize = machosize;
709
714
      if (grub_xnu_is_64bit)
710
715
        err = grub_macho_readfile64 (macho, buf);
723
728
  /* Load the plist. */
724
729
  if (infoplist)
725
730
    {
726
 
      exthead->infoplistaddr = buf_target + (buf - buf0);
 
731
      exthead->infoplistaddr = buf_target + (buf - (grub_uint8_t *) buf0);
727
732
      exthead->infoplistsize = infoplistsize + 1;
728
733
      if (grub_file_read (infoplist, buf, infoplistsize)
729
734
          != (grub_ssize_t) (infoplistsize))
739
744
    }
740
745
  grub_errno = GRUB_ERR_NONE;
741
746
 
742
 
  exthead->nameaddr = (buf - buf0) + buf_target;
 
747
  exthead->nameaddr = (buf - (grub_uint8_t *) buf0) + buf_target;
743
748
  exthead->namesize = namelen + 1;
744
749
  grub_memcpy (buf, name, namelen);
745
750
  buf[namelen] = 0;