ELF octets_per_byte
Dan
dgisselq@verizon.net
Thu Feb 25 02:41:00 GMT 2016
More information about the Binutils mailing list
Thu Feb 25 02:41:00 GMT 2016
- Previous message (by thread): ELF octets_per_byte
- Next message (by thread): ELF octets_per_byte
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Maciej, > Please also note that the ELF gABI[1] is very explicit about a byte being > 8-bits wide: > > "As described here, the object file format supports various processors > with 8-bit bytes and either 32-bit or 64-bit architectures. > Nevertheless, it is intended to be extensible to larger (or smaller) > architectures. Object files therefore represent some control data with a > machine-independent format, making it possible to identify object files > and interpret their contents in a common way. Remaining data in an object > file use the encoding of the target processor, regardless of the machine > on which the file was created." > > so whenever it refers to a "byte" I think it really means an octet, > although I do see an ambiguity here as sometimes it uses the term to mean > a target byte. > Sigh. You don't need to convince me that "bytes" versus "octets" make for a rather confusing nomenclature. They wouldn't be my first choice of terms. I am all open to a better choice. In my own experience, as in the above citation, "byte" is used to mean 8-bits. It just appears to be the term used within binutils, and gas in particular, to reference the minimum addressable unit. > > I also propose that the following values are in units of target address > > space "bytes": > > > > ELF header "entry" address > > section header address > > symbol value > > symbol size > > relocation offset > > relocation addend > > These express target addresses or are directly related to them (e.g. > offsets) and therefore I'm sure they're best expressed in whatever format > your target uses. These IMHO certainly qualify as "remaining data" > referred to in the gABI citation included above. > > So with the entry point for example I'd expect whatever representation a > function pointer stored in memory would have on your target if the > function pointed was the intended entry point. Likewise with VMAs and > LMAs used in program headers, section headers, symbol tables, etc. > > These do not necessarily have to be "proper" memory addresses even, for > example the MIPS processor encodes the execution mode in bit #0 of code > addresses, so in certain cases the entry point in MIPS ELF binaries will > have bit #0 set even though the memory location referred will have this > bit clear. So it's really up to you to decide whatever encoding is the > most appropriate for your architecture. > > As to the symbol size I think it needs to be set to whatever the > C-language's `sizeof' operator would return for a unit of storage of the > same size. > As I mentioned earlier this evening, the Zip CPU features: sizeof(char)=sizeof(short)=sizeof(int)=sizeof(void *)=1 // 32-bits It's a ... unique architectural feature. :) Dan > References: > > [1] "System V Application Binary Interface" - DRAFT - 10 June 2013, > Section "Data Representation" > <http://www.sco.com/developers/gabi/latest/ch4.intro.html#data_representation> > > HTH, > > Maciej
- Previous message (by thread): ELF octets_per_byte
- Next message (by thread): ELF octets_per_byte
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list