This is the mail archive of the
mailing list for the binutils project.
Re: [PATCH] Xbox PE subsystem support
- From: Christopher Faylor <me at cgf dot cx>
- To: Myria <asterisk at graces dot dricas dot com>, binutils at sources dot redhat dot com
- Date: Thu, 25 Nov 2004 20:55:45 -0500
- Subject: Re: [PATCH] Xbox PE subsystem support
- References: <052001c4d344$48c56770$0300a8c0@missy>
- Reply-to: binutils at sources dot redhat dot com
On Thu, Nov 25, 2004 at 03:12:50PM -0800, Myria wrote:
>This simple patch adds support for --subsystem:xbox to the ix86-pe
>emulation of ld.
>The OpenXDK project ( http://www.openxdk.org/ ) is a project to make an
>open-source development kit for the Microsoft Xbox native OS. Among the
>things needed, of course, is a compiler and linker. Due to the
>similarities between Xbox and Win32, the PE build tools would work well,
>with few changes.
>This patch adds --subsystem:xbox, value 14, officially and publicly defined
>as IMAGE_SUBSYSTEM_XBOX in Microsoft's winnt.h header file. It is known
>that Microsoft's own Xbox Development Kit (XDK) compiles developers' games
>into standard PE format, with subsystem 14. The resulting PE file is later
>converted to the PE-like "XBE" format. We would like to continue with this
>tradition; in fact, the current OpenXDK does the same already.
>In addition, this patch adds support for arbitrary subsystem numbers,
>like --subsystem=123. This is for future use so hopefully others in
>unforeseen projects will not have to modify binutils to use a different
>subsystem. When an arbitrary number is used that ld does not recognize, it
>assumes the entry point is mainCRTStartup. If, however, the number is
>known by ld, as in the user typing --subsystem:2 ("windows"), the entry
>point will be set to the proper default. The subsystem number is handled
>as a "0" base to strtoul, meaning it is decimal by default, and octal and
>hex can be used by prepending 0 or 0x.
>Finally, "xbox" is recognized as a target, being equivalent to
>i686-pc-mingw32, whose settings are acceptable for OpenXDK. This gives the
>rather convenient --target=xbox setting as well as executable names
>xbox-ld, xbox-as, etc.
>Full list of changes:
>- /config.sub now recognizes "xbox" as an alias for i686-pc-mingw32
>- ld now recognizes --subsystem:xbox as 14 with mainCRTStartup
>- ld now allows numeric subsystem numbers like --subsystem:1234
>- ld manpage and texinfo updated to note new --subsystem usages
>- removed weird #if in pe.em that selected between 2 identical fragments
>I'm new to this patch thing and binutils so I probably made a mistake
>somewhere... Also, some of you might not like this patch. Any comments
>would be appreciated. Thanks!
FWIW, I like the patch. One minor thing is that you submitted the
ChangeLog as a diff. ChangeLogs change enough that you can be sure that
your patch will never install correctly by the time it is accepted. So,
the convention is to provide ChangeLog changes as just the clause that
you want to go into the ChangeLog
Other than that very minor point, as the recent proud owner of an Xbox
I'd like to see this in binutils, even if the Xbox is eventually
destined to be running linux.
I don't know if you'd need an assigment with the FSF for this change but
I suspect that it is large enough that you probably would.