This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Fix readelf segment map
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: binutils at sources dot redhat dot com
- Date: Wed, 22 Sep 2004 16:52:11 +0930
- Subject: 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