This is the mail archive of the binutils@sources.redhat.com 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]

Fix readelf segment map


A fix for a minor readelf wart.  When printing program headers, readelf
compares section and segment addresses to decide whether a section is in
a particular segment.  This fails on .tbss, which is a rather unusual
section.

binutils/
	* readelf.c (process_program_headers): Don't include .tbss in non-TLS
	segments.

ld/testsuite/
	* ld-i386/tlsbin.rd: Update for changed segment map.
	* ld-i386/tlsnopic.rd: Likewise.
	* ld-i386/tlspic.rd: Likewise.
	* ld-powerpc/tlsexe.r: Likewise.
	* ld-powerpc/tlsexe32.r: Likewise.
	* ld-powerpc/tlsexetoc.r: Likewise.
	* ld-powerpc/tlsso.r: Likewise.
	* ld-powerpc/tlsso32.r: Likewise.
	* ld-powerpc/tlstocso.r: Likewise.
	* ld-s390/tlsbin.rd: Likewise.
	* ld-s390/tlsbin_64.rd: Likewise.
	* ld-s390/tlspic.rd: Likewise.
	* ld-s390/tlspic_64.rd: Likewise.
	* ld-sh/tlsbin-2.d: Likewise.
	* ld-sh/tlspic-2.d: Likewise.
	* ld-x86-64/tlsbin.rd: Likewise.
	* ld-x86-64/tlspic.rd: Likewise.

Index: binutils/readelf.c
===================================================================
RCS file: /cvs/src/src/binutils/readelf.c,v
retrieving revision 1.252
diff -u -p -r1.252 readelf.c
--- binutils/readelf.c	12 Sep 2004 05:52:44 -0000	1.252
+++ binutils/readelf.c	22 Sep 2004 06:47:08 -0000
@@ -3302,7 +3302,12 @@ process_program_headers (FILE *file)
 			 <= segment->p_vaddr + segment->p_memsz)
 		      : ((bfd_vma) section->sh_offset >= segment->p_offset
 			 && (section->sh_offset + section->sh_size
-			     <= segment->p_offset + segment->p_filesz))))
+			     <= segment->p_offset + segment->p_filesz)))
+		  /* .tbss is special.  It doesn't contribute memory space
+		     to normal segments.  */
+		  && (!((section->sh_flags & SHF_TLS) != 0
+			&& section->sh_type == SHT_NOBITS)
+		      || segment->p_type == PT_TLS))
 		printf ("%s ", SECTION_NAME (section));
 	    }
 
Index: ld/testsuite/ld-i386/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsbin.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsbin.rd
--- ld/testsuite/ld-i386/tlsbin.rd	11 May 2004 17:08:36 -0000	1.2
+++ ld/testsuite/ld-i386/tlsbin.rd	22 Sep 2004 06:47:26 -0000
@@ -52,8 +52,8 @@ Program Headers:
    00 +
    01 +.interp *
    02 +.interp .hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
-   03 +.tdata .tbss .dynamic .got .got.plt *
-   04 +.tbss .dynamic *
+   03 +.tdata .dynamic .got .got.plt *
+   04 +.dynamic *
    05 +.tdata .tbss *
 
 Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
Index: ld/testsuite/ld-i386/tlsnopic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsnopic.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsnopic.rd
--- ld/testsuite/ld-i386/tlsnopic.rd	11 May 2004 17:08:36 -0000	1.3
+++ ld/testsuite/ld-i386/tlsnopic.rd	22 Sep 2004 06:47:26 -0000
@@ -44,8 +44,8 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections...
    00 +.hash .dynsym .dynstr .rel.dyn .text *
-   01 +.tbss .dynamic .got .got.plt *
-   02 +.tbss .dynamic *
+   01 +.dynamic .got .got.plt *
+   02 +.dynamic *
    03 +.tbss *
 
 Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
Index: ld/testsuite/ld-i386/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlspic.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlspic.rd
--- ld/testsuite/ld-i386/tlspic.rd	11 May 2004 17:08:36 -0000	1.2
+++ ld/testsuite/ld-i386/tlspic.rd	22 Sep 2004 06:47:26 -0000
@@ -46,8 +46,8 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections...
    00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
-   01 +.tdata .tbss .dynamic .got .got.plt *
-   02 +.tbss .dynamic *
+   01 +.tdata .dynamic .got .got.plt *
+   02 +.dynamic *
    03 +.tdata .tbss *
 
 Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
Index: ld/testsuite/ld-powerpc/tlsexe.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe.r,v
retrieving revision 1.8
diff -u -p -r1.8 tlsexe.r
--- ld/testsuite/ld-powerpc/tlsexe.r	11 May 2004 17:08:36 -0000	1.8
+++ ld/testsuite/ld-powerpc/tlsexe.r	22 Sep 2004 06:47:27 -0000
@@ -50,8 +50,8 @@ Program Headers:
  +0+ +
  +01 +\.interp 
  +02 +\.interp \.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +03 +\.tdata \.tbss \.dynamic \.got \.plt 
- +04 +\.tbss \.dynamic 
+ +03 +\.tdata \.dynamic \.got \.plt 
+ +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset .* contains 3 entries:
Index: ld/testsuite/ld-powerpc/tlsexe32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.r,v
retrieving revision 1.3
diff -u -p -r1.3 tlsexe32.r
--- ld/testsuite/ld-powerpc/tlsexe32.r	11 May 2004 17:08:36 -0000	1.3
+++ ld/testsuite/ld-powerpc/tlsexe32.r	22 Sep 2004 06:47:27 -0000
@@ -51,8 +51,8 @@ Program Headers:
  +00 +
  +01 +\.interp 
  +02 +\.interp \.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +03 +\.tdata \.tbss \.dynamic \.got \.plt 
- +04 +\.tbss \.dynamic 
+ +03 +\.tdata \.dynamic \.got \.plt 
+ +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset 0x268 contains 2 entries:
Index: ld/testsuite/ld-powerpc/tlsexetoc.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexetoc.r,v
retrieving revision 1.8
diff -u -p -r1.8 tlsexetoc.r
--- ld/testsuite/ld-powerpc/tlsexetoc.r	11 May 2004 17:08:36 -0000	1.8
+++ ld/testsuite/ld-powerpc/tlsexetoc.r	22 Sep 2004 06:47:27 -0000
@@ -50,8 +50,8 @@ Program Headers:
  +0+ +
  +01 +\.interp 
  +02 +\.interp \.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +03 +\.tdata \.tbss \.dynamic \.got \.plt 
- +04 +\.tbss \.dynamic 
+ +03 +\.tdata \.dynamic \.got \.plt 
+ +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
Index: ld/testsuite/ld-powerpc/tlsso.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso.r,v
retrieving revision 1.7
diff -u -p -r1.7 tlsso.r
--- ld/testsuite/ld-powerpc/tlsso.r	11 May 2004 17:08:36 -0000	1.7
+++ ld/testsuite/ld-powerpc/tlsso.r	22 Sep 2004 06:47:27 -0000
@@ -43,8 +43,8 @@ Program Headers:
  Section to Segment mapping:
  +Segment Sections\.\.\.
  +0+ +\.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +01 +\.tdata \.tbss \.dynamic \.got \.plt 
- +02 +\.tbss \.dynamic 
+ +01 +\.tdata \.dynamic \.got \.plt 
+ +02 +\.dynamic 
  +03 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset .* contains 16 entries:
Index: ld/testsuite/ld-powerpc/tlsso32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.r,v
retrieving revision 1.4
diff -u -p -r1.4 tlsso32.r
--- ld/testsuite/ld-powerpc/tlsso32.r	11 May 2004 17:08:36 -0000	1.4
+++ ld/testsuite/ld-powerpc/tlsso32.r	22 Sep 2004 06:47:27 -0000
@@ -44,8 +44,8 @@ Program Headers:
  Section to Segment mapping:
  +Segment Sections\.\.\.
  +0+ +\.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +01 +\.tdata \.tbss \.dynamic \.got \.plt 
- +02 +\.tbss \.dynamic 
+ +01 +\.tdata \.dynamic \.got \.plt 
+ +02 +\.dynamic 
  +03 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
Index: ld/testsuite/ld-powerpc/tlstocso.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlstocso.r,v
retrieving revision 1.8
diff -u -p -r1.8 tlstocso.r
--- ld/testsuite/ld-powerpc/tlstocso.r	11 May 2004 17:08:36 -0000	1.8
+++ ld/testsuite/ld-powerpc/tlstocso.r	22 Sep 2004 06:47:27 -0000
@@ -43,8 +43,8 @@ Program Headers:
  Section to Segment mapping:
  +Segment Sections\.\.\.
  +0+ +\.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.text 
- +01 +\.tdata \.tbss \.dynamic \.got \.plt 
- +02 +\.tbss \.dynamic 
+ +01 +\.tdata \.dynamic \.got \.plt 
+ +02 +\.dynamic 
  +03 +\.tdata \.tbss 
 
 Relocation section '\.rela\.dyn' at offset .* contains 11 entries:
Index: ld/testsuite/ld-s390/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlsbin.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsbin.rd
--- ld/testsuite/ld-s390/tlsbin.rd	11 May 2004 17:08:35 -0000	1.2
+++ ld/testsuite/ld-s390/tlsbin.rd	22 Sep 2004 06:47:27 -0000
@@ -51,8 +51,8 @@ Program Headers:
    00 *
    01 +.interp *
    02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-   03 +.tdata .tbss .dynamic .got *
-   04 +.tbss .dynamic *
+   03 +.tdata .dynamic .got *
+   04 +.dynamic *
    05 +.tdata .tbss *
 
 Relocation section '.rela.dyn' at offset 0x268 contains 4 entries:
Index: ld/testsuite/ld-s390/tlsbin_64.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlsbin_64.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsbin_64.rd
--- ld/testsuite/ld-s390/tlsbin_64.rd	11 May 2004 17:08:35 -0000	1.2
+++ ld/testsuite/ld-s390/tlsbin_64.rd	22 Sep 2004 06:47:27 -0000
@@ -51,8 +51,8 @@ Program Headers:
    00 *
    01 +.interp *
    02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-   03 +.tdata .tbss .dynamic .got *
-   04 +.tbss .dynamic *
+   03 +.tdata .dynamic .got *
+   04 +.dynamic *
    05 +.tdata .tbss *
 
 Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
Index: ld/testsuite/ld-s390/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlspic.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlspic.rd
--- ld/testsuite/ld-s390/tlspic.rd	11 May 2004 17:08:35 -0000	1.2
+++ ld/testsuite/ld-s390/tlspic.rd	22 Sep 2004 06:47:27 -0000
@@ -45,8 +45,8 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections...
  +00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text 
- +01 +.tdata .tbss .dynamic .got 
- +02 +.tbss .dynamic 
+ +01 +.tdata .dynamic .got 
+ +02 +.dynamic 
  +03 +.tdata .tbss 
 
 Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
Index: ld/testsuite/ld-s390/tlspic_64.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlspic_64.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlspic_64.rd
--- ld/testsuite/ld-s390/tlspic_64.rd	11 May 2004 17:08:35 -0000	1.2
+++ ld/testsuite/ld-s390/tlspic_64.rd	22 Sep 2004 06:47:27 -0000
@@ -45,8 +45,8 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections...
    00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-   01 +.tdata .tbss .dynamic .got *
-   02 +.tbss .dynamic *
+   01 +.tdata .dynamic .got *
+   02 +.dynamic *
    03 +.tdata .tbss *
 
 Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
Index: ld/testsuite/ld-sh/tlsbin-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sh/tlsbin-2.d,v
retrieving revision 1.6
diff -u -p -r1.6 tlsbin-2.d
--- ld/testsuite/ld-sh/tlsbin-2.d	2 Jul 2004 11:25:54 -0000	1.6
+++ ld/testsuite/ld-sh/tlsbin-2.d	22 Sep 2004 06:47:27 -0000
@@ -52,8 +52,8 @@ Program Headers:
    00 +
    01 +\.interp *
    02 +\.interp \.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.plt \.text *
-   03 +\.tdata \.tbss \.dynamic \.got *
-   04 +\.tbss \.dynamic *
+   03 +\.tdata \.dynamic \.got *
+   04 +\.dynamic *
    05 +\.tdata \.tbss *
 
 Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
Index: ld/testsuite/ld-sh/tlspic-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sh/tlspic-2.d,v
retrieving revision 1.5
diff -u -p -r1.5 tlspic-2.d
--- ld/testsuite/ld-sh/tlspic-2.d	2 Jul 2004 11:25:54 -0000	1.5
+++ ld/testsuite/ld-sh/tlspic-2.d	22 Sep 2004 06:47:27 -0000
@@ -46,8 +46,8 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections\.\.\.
    00 +\.hash \.dynsym \.dynstr \.rela\.dyn \.rela\.plt \.plt \.text *
-   01 +\.tdata \.tbss \.dynamic \.got *
-   02 +\.tbss \.dynamic *
+   01 +\.tdata \.dynamic \.got *
+   02 +\.dynamic *
    03 +\.tdata \.tbss *
 
 Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries:
Index: ld/testsuite/ld-x86-64/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlsbin.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsbin.rd
--- ld/testsuite/ld-x86-64/tlsbin.rd	11 May 2004 17:08:36 -0000	1.2
+++ ld/testsuite/ld-x86-64/tlsbin.rd	22 Sep 2004 06:47:27 -0000
@@ -52,7 +52,7 @@ Program Headers:
    00 *
    01 +.interp *
    02 +.interp .hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-   03 +.tdata .tbss .dynamic .got .got.plt *
+   03 +.tdata .dynamic .got .got.plt *
    04 +.dynamic *
    05 +.tdata .tbss *
 
Index: ld/testsuite/ld-x86-64/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlspic.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlspic.rd
--- ld/testsuite/ld-x86-64/tlspic.rd	11 May 2004 17:08:36 -0000	1.2
+++ ld/testsuite/ld-x86-64/tlspic.rd	22 Sep 2004 06:47:27 -0000
@@ -46,7 +46,7 @@ Program Headers:
  Section to Segment mapping:
   Segment Sections...
    00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-   01 +.tdata .tbss .dynamic .got .got.plt *
+   01 +.tdata .dynamic .got .got.plt *
    02 +.dynamic *
    03 +.tdata .tbss *
 

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


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