This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

Re: [patch]: dump of PE+ x64 pdata section


2009/4/6 H.J. Lu <hjl.tools@gmail.com>:
> On Mon, Apr 6, 2009 at 10:31 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
>> 2009/4/6 H.J. Lu <hjl.tools@gmail.com>:
>>> On Mon, Apr 6, 2009 at 12:23 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
>>>> 2009/4/6 Dave Korn <dave.korn.cygwin@googlemail.com>:
>>>>> Jan Kratochvil wrote:
>>>>>> Hi Kai,
>>>>>>
>>>>>> getting now on Fedora 10 x86_64:
>>>>>>
>>>>>> $ ./configure; make
>>>>>
>>>>> ?You didn't use --enable-targets=all, but you're still getting a PE backend
>>>>> in your BFD? ?That's odd.
>>>>>
>>>>>> ../bfd/.libs/libbfd.a(pex64igen.o): In function `_bfd_pep_print_x64_pdata':
>>>>>> .../binutils-cvs/bfd/pex64igen.c:1901: multiple definition of `_bfd_pep_print_x64_pdata'
>>>>>> ../bfd/.libs/libbfd.a(peigen.o):.../binutils-cvs/bfd/peigen.c:1901: first defined here
>>>>>
>>>>> ?Argh. ?Try changing the definition in peXXigen.c from
>>>>>
>>>>> _bfd_pep_print_x64_pdata
>>>>>
>>>>> to
>>>>>
>>>>> _bfd_XX_print_x64_pdata.
>>>>>
>>>>> ?It might also need wrapping in a #ifdef so that it only gets compiled for
>>>>> x64 targets.
>>>>>
>>>>> ?Sorry, can't help more right away; I just broke my world after a bad system
>>>>> update and am still scrambling to be able to build anything right now :-(
>>>>>
>>>>> ? ?cheers,
>>>>> ? ? ?DaveK
>>>>>
>>>>>
>>>>
>>>> Sorry, for this breakage. I want to use the 'ifdef COFF_WITH_pex64'
>>>> guard for this. So we prevent to generate useless functions for other
>>>> targets (as sadly the arm variant does).
>>>>
>>>> I tested the patch with all and it fixes my breakage.
>>>>
>>>
>>> Binutils won't build with --enable-targets=all on Linux/x86-64:
>>>
>>> libtool: compile: ?gcc -DHAVE_CONFIG_H -I.
>>> -I/export/gnu/import/svn/binutils/src/bfd -I. -I.
>>> -I/export/gnu/import/svn/binutils/src/bfd
>>> -I/export/gnu/import/svn/binutils/src/bfd/../include -W -Wall
>>> -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -c
>>> /export/gnu/import/svn/binutils/src/bfd/pei-x86_64.c -o pei-x86_64.o
>>> In file included from
>>> /export/gnu/import/svn/binutils/src/bfd/coff-x86_64.c:718:/export/gnu/import/svn/binutils/src/bfd/coffcode.h:5414:
>>> error: ‘_bfd_pep_print_x64_pdata’ undeclared here (not in a function)
>>> cc1: warnings being treated as errors
>>> /export/gnu/import/svn/binutils/src/bfd/coffcode.h:5415: error:
>>> missing initializer
>>> /export/gnu/import/svn/binutils/src/bfd/coffcode.h:5415: error: (near
>>> initialization for ‘bfd_coff_std_swap_table._bfd_coff_print_pdata’)
>>> make[6]: *** [coff-x86_64.lo] Error 1
>>>
>>>
>>> --
>>> H.J.
>>>
>>
>> Even by applying that #ifdef clause I sent the patch?
>
> Yes.
>
>> But I agree that this part (as the arm part, too) would be better
>> placed withing the coff-x86-64.c file. There it could be even static.
>>
>
> Then, we will have 4 copies of the same functions:
>
> [hjl@gnu-6 bfd]$ grep coff-x86_64.c *.c
> efi-app-x86_64.c:#include "coff-x86_64.c"
> efi-bsdrv-x86_64.c:#include "coff-x86_64.c"
> efi-rtdrv-x86_64.c:#include "coff-x86_64.c"
> pei-x86_64.c:#include "coff-x86_64.c"
> pe-x86_64.c:#include "coff-x86_64.c"
>
> --
> H.J.
>

Well, but if we use the XXX in peXXigen.c we get even more, isn't it?
So what we need here is a .c file which is compiled once and contains
this function for pe x86-64 case. I have already an extension for this
on my pile, which dumps the referenced .xdata (the UnwindData rva
points on it).

What are you suggesting to solve such kind of issue in a more general way?

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination


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