[PATCH] Explicitly get .dynamic section for "readelf -d"

Nick Clifton nickc@redhat.com
Fri Jun 18 17:20:00 GMT 2004


Hi Jie,

> Here is it. But I'm afraid it is not good enough yet.

Thanks this is much better.


> The -d option of readelf is for displaying the contents of the file's 
> dynamic section as stated in the document. However, almost all relevant 
> code say dynamic *segment* rather than dynamic *section*. For most 
> targets dynamic segment contains only .dynamic section and they are 
> equivalent, but for SGI's MIPS this is not true. Is it worth changing 
> all "dynamic segment" to "dynamic section", e.g. process_dynamic_segment 
> to process_dynamic_section and dynamic_segment to dynamic_section?

Yes it is.  It is better to be accurate and consistent.  Especially with 
segments and sections because it is so easy to confuse the two.  I have 
added this to the patch and checked it in with this ChangeLog entry:

binutils/ChangeLog
2004-06-18  Jie Zhang  <zhangjie@magima.com.cn>

	* readelf.c (process_program_headers): When locating the dynamic
	section use the section table if it is present.
	(dynamic_segment): Renamed to dynamic_section.
	Replace references to dynamic segment with references to dynamic
	section, except where appropriate.
	(dynamic_segment_mips_val): Rename to dynamic_section_mips_val.
	(dynamic_segment_parisc_val): Rename to dynamic_section_parisc_val.
	(dynamic_segment_ia64_val): Rename to dynamic_section_ia64_val.
	(get_32bit_dynamic_segment): Rename to get_32bit_dynamic_section.
	Remove tag counting code as it is no longer needed.
	(get_64bit_dynamic_segment): Rename to get_64bit_dynamic_section.
	Remove tag counting code as it is no longer needed.
	(process_dynamic_segment): Rename to process_dynamic_section.
	

> The .dynamic section, I think now, should be the first section in the 
> dynamic segment. Since section header table is optional in executable 
> file, we cannot always rely on it to relocate .dynamic section. If a 
> script does not make it come first in the segment, it's the script's 
> fault not others. So I think that it would better to make ld warn (or 
> error) if the .dynamic section is not the first section in the dynamic 
> segment. Is this reasonable?

Yes I think so.

> Is there any target other than MIPS that 
> has more than one section in dynamic segment? If it is the only target, 
> I'm going to add check in _bfd_mips_elf_modify_segment_map (). 
> Otherwise, I'm going to add check in map_sections_to_segments (). Are 
> they the right places?

As far as I know it is only the MIPS port that does this at the moment, 
but there is no guarantee that other ports will not do so in the future. 
  Thus I would suggest adding the check to map_sections_to_segments().

Cheers
   Nick



More information about the Binutils mailing list