[rfa] Add bfd_runtime
Andrew Cagney
ac131313@redhat.com
Mon Sep 20 23:14:00 GMT 2004
[back to this thread, sorry]
> Andrew Cagney <ac131313@redhat.com> writes:
>
>
>>>>>> >>> The contents are organized differently. It's the in-memory runtime
>>>>>> >>> image so things are organized acccording to their load address and not
>>>>>> >>> their on-disk file offset.
>>>
>>>> > Sure. But it is still essentially an object-file/executable. At
>>>> > least, I thought that was the idea of the in-memory image: that it
>>>> > would look like an object-file/executable, it would have symbols and
>>>> > sections and segments, etc.
>>
>>>
>>> It has symbols and sections and segments but is laid out very
>>> differently. Things are accessed according to their in-memory rather
>>> than on-disk offset. (however the current code doesn't do this, it
>>> reverse engineers things back into what is kind of sort of an on disk
>>> image).
>
>
> I understand that it is laid out differently. Since I don't think
> that is at all relevant, we are clearly failing to communicate.
>
> There are many different kinds of object files, ELF and otherwise.
> They are all laid out differently. They all have the same sorts of
> information. From BFD's perspective, anything with that sort of
> information is properly categorized as bfd_object.
>
> The information which you are describing has the sort of information
> which an object file has. From BFD's perspective, it seems to me that
> it should be bfd_object.
>
> If the layout is sufficiently different, then perhaps the problem is
> that is should use a different target vector--it should be
> "elfmem32-i386" rather than "elf32-i386". But I can not understand
> why a different layout would suggest not using bfd_object.
>
> Let me put it another way: can you explain what the difference is
> between bfd_object and bfd_runtime, in terms of the difference between
> bfd_object and bfd_archive and bfd_core.
In terms of the relationships between various so called "format"s, I
view things along the lines of:
objfile is-a object is-a bfd
runtime is-a object is-a bfd
corefile is-a object is-a bfd
yet:
bfd_archive is-a bfd
bfd_archive has-a 1:N <object-file>
so BFD's currrent structure doesn't show real consistency :-/
(Relationships such as bfd_core is-a bfd_runtime don't hold.)
When it comes to how it should fit in, I think it can be viewed as:
elf-target has-a runtime-object
elf-target has-a corefile-object
elf-target has-a objfile-object
and:
elf32-i386 is-a elf-target
Hence, I think runtime fits better into the "format" vector as that
makes that relationship possible. Yes, it is also possible to
brute-force this using "elfmem32-i386" et.al. targets.
Andrew
>
>>>>>>>> >>>> > Thinking in terms of adding support for a new object file format to
>>>>>>>> >>>> > BFD, what would the entries for bfd_runtime be? How can you recognize
>>>>>>>> >>>> > a file as bfd_runtime rather than bfd_object? The concept of
>>>>>>>> >>>> > bfd_runtime seems to me to be orthogonal to the concept of bfd_format.
>>>>
>>>>> >>
>>>>
>>>>>> >>> Do you need to differentiate between the two?
>>>
>>>> > I don't understand this question.
>>
>>>
>>> Creating a new bfd is a two step process:
>>> - open the raw file
>>> - check the format creating a bfd from the raw file
>>> The second step, using bfd_check_format, typically includes an
>>> explicit format specifier.
>>>
>>> For this "runtime", the code needs to know that it is manipulating a
>>> loaded, rather than on-disk image. Without that it won't know that
>>> the load rather than file offsets need to be used.
>>>
>>> So given that the code needs to be explicitly told that it is a
>>> runtime, why do you see the need to recognize a bfd_runtime rather
>>> than bfd_object?
>
>
> I don't. My point was that even talking about the question doesn't
> make any sense. My implied conclusion was that bfd_runtime is not a
> proper format type.
>
> Ian
More information about the Binutils
mailing list