Re: [PATCH v2] elf.5: Add description for ELF extension

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Daisuke, Petr

On Thu, May 13, 2010 at 7:55 AM, Daisuke HATAYAMA
<d.hatayama@xxxxxxxxxxxxxx> wrote:
> Hi. Petr.
>
> Thank you for your comments.
>
> I reflected your comments to the previous patch.
> Could you check it?
>
> #   What a strange interface, the other two hold the max value while
> # e_shnum holds zero in case of overflow.
>
> I considered one answer to the question based on the difference of
> compatibility policy for each object format.
>
> For core object format, it is better for ordinary tools to understand
> as many program headers as possible, even if it is incomplete. On the
> other hand, for relocatable object format, it is meaningless if it is
> incomplete. This is why e_phnum is set to PN_XNUM(0xffff) and e_shnum
> is set to 0, respectively: in the latter case, any ordinary linker
> cannot recognize the relocatable object correctly.
>
> But I don't know why e_shstrndx is set to 0xffff. We could choose it
> from the reserved range of section header table indices, i.e. 0 and
> [0xff00, ..., 0xffff].
>
> At any rate, to see accurately why it's so, we need to look at the
> discussion when the ELF extension was specified. I will post it here
> if I can find it.
>
> Thanks
> HATAYAMA, Daisuke
> ---
> linux-2.6.34-rc1 added an ELF core extension, which user-land tools,
> such as gdb and binutils, have already supported. Therefore, elf.5
> needs to be modified accordingly.
>
> You can follow information on the ELF extension via the LKML post:
> http://lkml.org/lkml/2010/1/3/103
>
> Signed-off-by: Daisuke HATAYAMA <d.hatayama@xxxxxxxxxxxxxx>

Daisuke, thanks for your patch.

Petr, thanks for the review comments.

I made some small language and formatting fixes, but otherwise applied
the patch as you gave it. Thanks for supplying this.

Cheers,

Michael

> ---
>  man5/elf.5 |   62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 60 insertions(+), 2 deletions(-)
>
> diff --git a/man5/elf.5 b/man5/elf.5
> index 20ed3d8..e5270e7 100644
> --- a/man5/elf.5
> +++ b/man5/elf.5
> @@ -30,7 +30,7 @@
>  .\" 2007-10-11, Mike Frysinger <vapier@xxxxxxxxxx>, various fixes
>  .\" 2007-12-08, mtk, Converted from mdoc to man macros
>  .\"
> -.TH ELF 5 2007-12-28 "Linux" "Linux Programmer's Manual"
> +.TH ELF 5 2010-05-13 "Linux" "Linux Programmer's Manual"
>  .SH NAME
>  elf \- format of Executable and Linking Format (ELF) files
>  .SH SYNOPSIS
> @@ -543,6 +543,28 @@ in bytes.
>  If a file has no program header,
>  .IR e_phnum
>  holds the value zero.
> +.IP
> +If the number of entries in the program header table is larger than or equal to
> +.BR PN_XNUM
> +(0xffff), this member holds
> +.BR PN_XNUM
> +(0xffff) and the real number of entries in the program header table is held in
> +.IR sh_info
> +member of the initial entry in section header table. Otherwise, the
> +.IR sh_info
> +member of the initial entry contains the value zero.
> +.\" .Bl -tag -width "PN_XNUM"
> +.RS 12
> +.TP 9
> +.BR PN_XNUM
> +This is defined as 0xffff, the largest number
> +.IR e_phnum
> +can have, specifying where the actual number of program headers is
> +assigned.
> +.PD
> +.RE
> +.\" .El
> +.IP
>  .TP
>  .IR e_shentsize
>  This member holds a sections header's size in bytes.
> @@ -561,6 +583,17 @@ If a file has no section
>  header table,
>  .IR e_shnum
>  holds the value of zero.
> +.IP
> +If the number of entries in the section header table is larger than or equal to
> +.BR SHN_LORESERVE
> +(0xff00),
> +.IR e_shnum
> +holds the value zero and the real number of entries in the section header
> +table is held in
> +.IR sh_size
> +of the initial entry in section header table. Otherwise, the
> +.IR sh_size
> +of the initial entry in section header table holds the value zero.
>  .TP
>  .IR e_shstrndx
>  This member holds the section header table index of the entry associated
> @@ -568,6 +601,17 @@ with the section name string table.
>  If the file has no section name string
>  table, this member holds the value
>  .BR SHN_UNDEF .
> +.IP
> +If the index of section name string table section is larger than or equal to
> +.BR SHN_LORESERVE
> +(0xff00), this member holds
> +.BR SHN_XINDEX
> +(0xffff) and the real index of the section name string table section
> +is held in the
> +.IR sh_link
> +member of the initial entry in section header table. Otherwise, the
> +.IR sh_link
> +member of the initial entry in section header table contains the value zero.
>  .RS 12
>  .\" .Bl -tag -width "SHN_LORESERVE"
>  .TP 14
> @@ -841,7 +885,10 @@ holds the size in bytes of each entry.
>  .PP
>  A section header table index is a subscript into this array.
>  Some section
> -header table indices are reserved.
> +header table indices are reserved:
> +the initial entry and the indices between SHN_LORESERVE and SHN_HIRESERVE.
> +The initial entry is used in ELF extensions for e_phnum, e_shnum and e_strndx;
> +in other cases, each field in the initial entry is set to zero.
>  An object file does not have sections for
>  these special indices:
>  .\" .Bl -tag -width "SHN_LORESERVE"
> @@ -1851,6 +1898,10 @@ This is automatically populated by the linker.
>  ELF first appeared in
>  System V.
>  The ELF format is an adopted standard.
> +.PP
> +The extensions for e_phnum, e_shnum and e_strndx respectively are
> +Linux extensions. Sun, BSD and AMD64 also support them, whose
> +specifications are listed in SEE ALSO.
>  .\" .SH AUTHORS
>  .\" The original version of this manual page was written by
>  .\" .An Jeroen Ruigrok van der Werven
> @@ -1876,3 +1927,10 @@ Santa Cruz Operation,
>  Unix System Laboratories,
>  "Object Files",
>  .IR "Executable and Linking Format (ELF)" .
> +.PP
> +Sun microsystems,
> +.IR "Linker and Libraries Guide" .
> +.PP
> +AMD64 ABI Draft,
> +.IR "System V Application Binary Interface AMD64 Architecture Processor Supplement" .
> +.PP
> --
> 1.6.5.1
> --
> To unsubscribe from this list: send the line "unsubscribe linux-man" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface" http://blog.man7.org/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux