[patch i386 pe]: Allow multilib version gas for i386 pe-coff

H.J. Lu hjl.tools@gmail.com
Tue May 19 21:47:00 GMT 2009


On Tue, May 19, 2009 at 1:31 PM, Kai Tietz <ktietz70@googlemail.com> wrote:
> 2009/5/19 H.J. Lu <hjl.tools@gmail.com>:
>> On Tue, May 19, 2009 at 1:12 PM, Kai Tietz <ktietz70@googlemail.com> wrote:
>>> 2009/5/19 H.J. Lu <hjl.tools@gmail.com>:
>>>> On Tue, May 19, 2009 at 12:24 PM, Dave Korn
>>>> <dave.korn.cygwin@googlemail.com> wrote:
>>>>> H.J. Lu wrote:
>>>>>> On Tue, May 19, 2009 at 11:57 AM, Dave Korn
>>>>>> <dave.korn.cygwin@googlemail.com> wrote:
>>>>>>> H.J. Lu wrote:
>>>>>>>> On Tue, May 19, 2009 at 11:19 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
>>>>>>>>> Well, I tried this and I found that in gas/output-file.c obj-coff.h is
>>>>>>>>> included, but the tc-i386.h isn't. So if I move code into tc-i386.h I
>>>>>>>>> get build failures for PE(+) x86/x64
>>>>>>>>>
>>>>>>>>> So, how to continue here?
>>>>>>>>>
>>>>>>>> How does Linux/x86-64 deal with this issue?
>>>>>>>  HJ, perhaps you can explain the motivation for your change request a bit
>>>>>>> clearer.  ISTM that ELF does things one way, COFF another.  All the other COFF
>>>>>>> targets define TARGET_FORMAT in cpu-specific chunks of obj-coff.h, ELF and
>>>>>>> AOUT targets define TARGET_FORMAT in cpu-specific header files.  This is
>>>>>>> probably just a historical accident, but I'm not sure why that means we should
>>>>>>> try and fix it now for just one single target?
>>>>>>>
>>>>>>
>>>>>> Those x86 32/64bit processing is handled in tc-i386.[ch] so far. I'd like
>>>>>> to keep this way so that any future changes to x86 won't break x86 32/64bit
>>>>>> processing.
>>>>>
>>>>>  Hmm, I see what you mean, it's a cpu-thing rather than an object format
>>>>> thing.  (BTW, did you mean to send this off-list?)
>>>>>
>>>>
>>>> Oops. I didn't mean it.
>>>>
>>>>>  I guess the next question is "Why doesn't putting them into tc-i386.h work,
>>>>> considering that obj-coff.h begins with a #include of targ-cpu.h"?
>>>>>
>>>>
>>>> That was my question too.
>>>
>>> Well, the answer isn't that hard here. The generated header file
>>> targ-env.h is the reason. For pe(p) it simply includes te-pe(p).h, but
>>> for linux the tc-i386.h file is included by it, too. I didn't
>>> investigate into the reason for this, but this is the answer, why it
>>> didn't break on linux 32/64 target.
>>>
>>
>> Then you should include tc-i386.h in targ-env.h if you want to
>> support --32/--64 on x86.
>>
>>
>>
>> --
>> H.J.
>>
>

Both obj-elf.h and obj-coff.h  include "targ-cpu.h", which has

#include "tc-i386.h"

Why didn't it work for you?


-- 
H.J.



More information about the Binutils mailing list