public inbox for gas2@sourceware.org
 help / color / mirror / Atom feed
* PE patches available
@ 1999-04-08 12:16 Donn Terry
  1999-04-12 13:40 ` Mumit Khan
  0 siblings, 1 reply; 4+ messages in thread
From: Donn Terry @ 1999-04-08 12:16 UTC (permalink / raw)
  To: gas2, bfd

Everyone, but DJ and Ian in particular:

I have made ftp.interix.com:~ftp/pub/up/binutils.patch.tgz available for
anonymous FTP access, with the intent that it be applied to the
current greater binutils.  (No, you don't want it in the mailing list!)

It is a tarball containing a coherent set of patches which have two
effects:

1) Add Interix support.
2) Significantly improves the overall support of the MS PE/PEI format
   (a COFF variant).

The effects of the former are obvious.

The effects of the latter include:
  - support for LIB.EXE-generated DLL libraries (and in general
    compatability with all DLL libraries).
  - support for COMDAT (although more support may be needed),
  - a plethora of "little" fixes for various "issues" w.r.t. PE/PEI format,
  - a rearrangement of the bfd sources so that fewer copies of the PE/PEI
    functions are needed.  (Moving things from coffcode.h, coffswap.h as
    makes sense.)
  - nearly complete pass of all ld, gas, and binutils regressions.
    (And more queued up for later.)  (Details with the individual patches.)
  - some POSIX-ification of binutils commands.
  - Complete support of intermixed MSVC and gcc-generated objects.
    (Given the right gdb, there is even limited (line numbers only)
    support for debugging with MSVC-generated (but ld-linked) object files.)
  - Improvements to the testsuites.

I'm not set up to test this on Cygwin, which is the platform most
likely to be affected by these changes (other than Interix, of course).
It is possible that I broke something.  Thus, I'd ask for testing
of these changes by those interested.

The patches are all applied with patch -p 5 except toplevel, which is
applied with -p 1.  (It's identical to a patch applied to egcs.
That's generally true of libiberty, as well.)

Each patch file contains detailed comments and a ChangeLog entry.
The naming convention should be obvious.  The leading numbers
in the filenames are for my housekeeping and can be ignored (and
in general will be sparse).  In some cases, it was easier (for
various reasons) to generate more than one patch file for the same
directory; each has its own comments and ChangeLog; all should be
applied.  In all cases, the 40.* file is a patch for the testsuite.
I have tested the patches against the 0404 tarball.  A few line
numbers are off slightly, but all patches apply correctly.

Coming attractions:

With this set of patches applied, it becomes possible to put together
another (fairly large) patch that brings the 32-bit (NT) Alpha up to
the same level.

I also have withheld for the moment some additional patches that are
not central to the basic goal of complete PE support.  I'll submit
those as followups after this batch has stabilized.


Ian: yes, I recognize that this is a BIG chunk to chew at once.  I've
trimmed it quite significantly already.  Please be kind in your
requests to break it up further.  A lot of these patches interact, and
breaking them up and still keeping a working set of tools will be very
difficult.  If there are specific patches that you really need separated
I can do that, but I'd request that you make as few such requests
as possible, in part because that will delay getting on to the "good stuff"
that's queued up behind this.

Known compatability (possible) issues:

1)  PE is more sensitive to section flag (Characteristics) bits than the
    current gnu tools (which look at the section name).  I've reworked
    both gas and bfd (the ld part) to make it generate and honor the
    bits.  There may (or may not) be a compatability problem with existing
    Cygwin binaries.  (There should not be any compatability issues w.r.t.
    existing MSVC binaries.)  In testing, look particularly for that
    (it may reach out an bite you, and it may be subtle, and it may not
    be a problem at all).  If it is a problem, I'll fix it, but I'll
    need details (and probably a sample file).

2)  The meaning of COFF (not stabs) line numbers is subtly different on
    PE than "pure" COFF; this also affects the .bf, .ef, and .lf pseudo-
    symbols.  My understanding is that I'm the only one who cares about
    such things in the PE world, and my intent was that regular COFF is
    unaffected.

3)  bfd/04.constructors discusses some interactions between constructors/
    destructors and ld -r that should be checked in the Cygwin context.

4)  As discussed earlier on this list, theres an issue with MOE and related
    COFF debug symbols.  At the moment, that's left unchanged.

-- 

===================================================
Donn Terry                  mailto:donn@interix.com
Softway Systems, Inc.        http://www.interix.com
2850 McClelland Dr, Ste. 1800   Ft.Collins CO 80525
Tel: +1-970-204-9900           Fax: +1-970-204-9951
===================================================

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PE patches available
  1999-04-08 12:16 PE patches available Donn Terry
@ 1999-04-12 13:40 ` Mumit Khan
  1999-04-13  8:39   ` Donn Terry
  1999-04-13 18:20   ` Ian Lance Taylor
  0 siblings, 2 replies; 4+ messages in thread
From: Mumit Khan @ 1999-04-12 13:40 UTC (permalink / raw)
  To: Donn Terry; +Cc: gas2, bfd

Hi Donn,

Ran into a few nits when building for Cygwin --

1. you mention that you've *put back* the .bss handling, but it's missing
 from the post-patched ld/scripttempl/pe.sc. I just put it in my hand.

2. bfd/Makefile.in needs peigen.lo as target. Trivial obviously. 

3. the $ENTRY in pe.sc expands to __mainCRTStartup, but Cygwin provides
  _mainCRTStartup. Trivial to fix/make consistent of course.

The final executable doesn't work yet, but that I did expect. I'll do
some digging to see why it's not loading correctly (under Cygwin or
Mingw which uses MS runtime).

btw, I always thought that the Makefiles were setup to do the `make
headers' automatically in bfd. Guess not.

Regards,
Mumit



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PE patches available
  1999-04-12 13:40 ` Mumit Khan
@ 1999-04-13  8:39   ` Donn Terry
  1999-04-13 18:20   ` Ian Lance Taylor
  1 sibling, 0 replies; 4+ messages in thread
From: Donn Terry @ 1999-04-13  8:39 UTC (permalink / raw)
  To: Mumit Khan; +Cc: gas2, bfd

I've been working with DJ on creating an updated patch.
I'm convinced that Menehunes got to at least one copy,
because there's no way that some of the problems that are
inarguably there could have gotten there without a time warp :-).

Anyway, expect a new tarball (over the old one) with these
and a number of other problems fixed in a few days.
(Everythings fairly straightforward except for another go-around
on %^&#$%^^&*()&*(%^&^%*& .idata.)

(Mumit: I believe #2 is fixed in what you have, but only in
the base files; in this case automake needs to be run to move
the change up from Makefile.am to Makefile.in.)

I'll send email when it's done.

Donn


Mumit Khan wrote:
> 
> Hi Donn,
> 
> Ran into a few nits when building for Cygwin --
> 
> 1. you mention that you've *put back* the .bss handling, but it's missing
>  from the post-patched ld/scripttempl/pe.sc. I just put it in my hand.
> 
> 2. bfd/Makefile.in needs peigen.lo as target. Trivial obviously.
> 
> 3. the $ENTRY in pe.sc expands to __mainCRTStartup, but Cygwin provides
>   _mainCRTStartup. Trivial to fix/make consistent of course.
> 
> The final executable doesn't work yet, but that I did expect. I'll do
> some digging to see why it's not loading correctly (under Cygwin or
> Mingw which uses MS runtime).
> 
> btw, I always thought that the Makefiles were setup to do the `make
> headers' automatically in bfd. Guess not.
> 
> Regards,
> Mumit

-- 

===================================================
Donn Terry                  mailto:donn@interix.com
Softway Systems, Inc.        http://www.interix.com
2850 McClelland Dr, Ste. 1800   Ft.Collins CO 80525
Tel: +1-970-204-9900           Fax: +1-970-204-9951
===================================================

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: PE patches available
  1999-04-12 13:40 ` Mumit Khan
  1999-04-13  8:39   ` Donn Terry
@ 1999-04-13 18:20   ` Ian Lance Taylor
  1 sibling, 0 replies; 4+ messages in thread
From: Ian Lance Taylor @ 1999-04-13 18:20 UTC (permalink / raw)
  To: khan; +Cc: donn, gas2, bfd

   Date: Mon, 12 Apr 1999 15:30:54 -0500 (CDT)
   From: Mumit Khan <khan@xraylith.wisc.edu>

   btw, I always thought that the Makefiles were setup to do the `make
   headers' automatically in bfd. Guess not.

No, you only get an automatic `make headers' if you configure with
--enable-maintainer-mode.  If you do that, you must also make sure you
have correct versions of autoconf, automake, and gettext in your PATH.

Ian

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1999-04-13 18:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-04-08 12:16 PE patches available Donn Terry
1999-04-12 13:40 ` Mumit Khan
1999-04-13  8:39   ` Donn Terry
1999-04-13 18:20   ` Ian Lance Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).