This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Rebase Status


Since I'm around half way done, I decided to post a status report to let
people know that I'm still working on this...

I have implemented the following:

    main ()
    {
      for dll in dlls
        rebase (dll)
    }
  
    rebase (dll)
    {
      sz = image_size (dll)
      find slot of size sz in free_list and remove slot from free_list
      add slot to used_list
      rebase_image (dll)
    }

The free and used lists are persisted in a file called rebase.conf which will
be ultimately stored in /etc/setup.  Attached is a sample.

I will be implementing the un-rebase and re-rebase functionality next:

    unrebase (dll)
    {
      find dll in used_list and remove from used_list
      add slot to free_list
    }

    rerebase (dll)
    {
      find dll in used_list
      if (old image size == new image size)
        rebase_image (dll)
      else
        unrebase (dll)
        rebase (dll)
    }

Note that I have skipped executables (even though suggested by Rob),
because AFAICT that are *not* rebase-able.  I have also skipped DLL
dependency checking too.  You have to crawl, before you can walk, before
you can run...

I have decided to develop using a stand-alone Mingw (i.e., -mno-cygwin) app
instead of integrating directly into setup.exe for the following reasons:

    o speed development
    o prevent whacking my Cygwin installation
    ? possibly this stand-alone rebase could be used as a one-shot to
      rebase existing Cygwin installations
    ? possibly this stand-alone rebase should be the "real" rebase tool that
      is part of the standard Cygwin distribution (as opposed to my previous
      versions)
    ? possibly setup.exe should call rebase.exe to minimize impact on size
      (although the current stripped size is ~31K)

Any comments on the items above marked by "?" would be appreciated.

BTW, the attached (untried) "patch" demonstrates how one could integrate
this new rebase functionality into setup.exe.

I can post the source if anyone is interested in checking it out.
Otherwise, I will post it when full functionality is achieved.

Thanks,
Jason

Attachment: rebase.conf
Description: Text document

Attachment: rebase.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]