old-cross-binutils/ld/testsuite/ld-elf
Alan Modra c2aaac080c Discard zero address range eh_frame FDEs
These are useless because they can't match any address.  In fact,
worse than useless because the .eh_frame_hdr lookup table matching
addresses to FDEs does not contain information about the FDE range.
The table is sorted by address;  Range is inferred by the address
delta from one entry to the next.  So if a zero address range FDE is
followed by a normal non-zero range FDE for the same address,
everything is good.  However, the qsort could just as easily sort the
FDEs in the other order, in which case the normal FDE would
effectively be seen to have a zero range.

bfd/
	PR 17447
	* elf-bfd.h (struct eh_cie_fde): Comment re NULL u.fde.cie_inf.
	* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Mark zero address
	range FDEs for discarding.
	(vma_compare): Sort on range after address.
	(_bfd_elf_gc_mark_fdes): Test for NULL u.fde.cie_inf.
	(_bfd_elf_discard_section_eh_frame): Likewise.  Write "FDE" in
	error message rather than "fde".
	(_bfd_elf_write_section_eh_frame_hdr): Write "PC" and "FDE" in
	error message.
ld/testsuite/
	* ld-elf/eh1.s: Don't create FDEs with zero address ranges.
	* ld-elf/eh3.s: Likewise.
	* ld-elf/eh1.d, * ld-elf/eh2.d, * ld-elf/eh3.d: Adjust.
	* ld-mips-elf/eh-frame1-n32.d: Warning match update.
	* ld-mips-elf/eh-frame1-n64.d: Likewise.
	* ld-mips-elf/eh-frame2-n32.d: Likewise.
	* ld-mips-elf/eh-frame2-n64.d: Likewise.
2014-10-04 22:49:32 +09:30
..
audit.exp
audit.rd
begin.c
beginwarn.c
binutils.exp
comm-data.exp
comm-data1.s
comm-data1.sd
comm-data2.ld
comm-data2.rd
comm-data2.s
comm-data2.sd
comm-data2.xd
comm-data2r.rd
comm-data2r.sd
comm-data2r.xd
comm-data3.sd
comm-data3a.s
comm-data3b.s
comm-data4.d
comm-data4.s
comm-data5.d
comm-data5.s
comm1.c
commonpage1.d
commonpage2.d
compress.exp
compress1.s
compress1a.d
compress1b.d
compress1c.d
data1.c
data1.h
data2.c
del.cc
depaudit.rd
depaudit2.rd
discard.ld
discard1.d
discard1.s
discard2.d
discard2.s
discard3.d
dl1.c
dl1.list
dl1.out
dl1main.c
dl2.c
dl2.list
dl2a.list
dl2a.out
dl2b.out
dl2main.c
dl2xxx.c
dl2xxx.list
dl3.cc
dl3.list
dl3a.out
dl3b.out
dl3header.h
dl3main.cc
dl4.c
dl4.list
dl4a.out
dl4b.out
dl4main.c
dl4xxx.c
dl4xxx.list
dl5.cc
dl5.out
dl6.c
dl6a.out
dl6amain.c
dl6b.out
dl6bmain.c
dl6cmain.c
dl6dmain.c
dummy.c
dwarf.exp
dwarf1.c
dwarf1.h
dwarf1.out
dwarf1main.c
dynamic-1.c
dynamic-1.rd
dynamic-1.syms
dynamic1.d
dynamic1.ld
dynamic1.s
dynbss1.c
dynsym1.d
eh-frame-hdr.d
eh-frame-hdr.s
eh-group.exp
eh-group1.s
eh-group2.s
eh1.d
eh1.s
eh1a.s
eh2.d
eh2a.s
eh3.d
eh3.s
eh3a.s
eh4.d
eh4.s
eh4a.s
eh5.d
eh5.s
eh5a.s
eh5b.s
eh6.d
eh6.s
ehdr_start-missing.d
ehdr_start-missing.t
ehdr_start-shared.d
ehdr_start-strongref.s
ehdr_start-userdef.d
ehdr_start-userdef.t
ehdr_start-weak.d
ehdr_start.d
ehdr_start.s
elf.exp
empty.d
empty.s
empty2.d
empty2.s
end.c
endhidden.c
endprotected.c
exclude.exp
exclude1.s
exclude2.s
exclude3.s
exclude3a.d
exclude3b.d
exclude3c.d
export-class-def.s
export-class-dep.s
export-class-lib.s
export-class-lib.ver
export-class-ref.s
export-class.exp
export-class.sd
export-class.vd
expr1.d
expr1.s
expr1.t
extract-symbol-1.ld
extract-symbol-1.s
extract-symbol-1sec.d
extract-symbol-1sym.d
fini.c
fini.out
fini0.s
fini1.s
fini2.s
fini3.s
finin.s
flags1.d
flags1.ld
flags1.s
foo.c
foo.map
foo0.s
foo1.s
foo2.s
foo3.s
foon.s
frame.exp
frame.s
func1.c
global1.d
group.ld
group1.d
group1a.s
group1b.s
group2.d
group3a.d
group3a.s
group3b.d
group3b.s
group4.d
group5.d
group6.d
group7.d
group8.s
group8a.d
group8b.d
group9.s
group9a.d
group9b.d
group10.d
group10.s
hash.d
header.d
header.s
header.t
hidden.out
indirect.exp
indirect1a.c
indirect1b.c
indirect1c.c
indirect2.c
indirect3.out
indirect3a.c
indirect3b.c
indirect3c.c
indirect4.out
indirect4a.c
indirect4b.c
indirect4c.c
init-fini-arrays.d
init-fini-arrays.s
init-mixed.c
init-mixed.out
init.c
init.out
init0.s
init1.s
init2.s
init3.s
initn.s
libbarw.rd
linkinfo1.s
linkinfo1a.d
linkinfo1b.d
linkonce1.d
linkonce1a.s
linkonce1b.s
linkonce2.d
linkoncerdiff.d
linkoncerdiff1.s
linkoncerdiff2.s
lma.lnk
lma.s
loadaddr.s
loadaddr.t
loadaddr1.d
loadaddr1.t
loadaddr2.d
loadaddr2.t
loadaddr3.t
loadaddr3a.d
loadaddr3b.d
local1.d
local1.map
local1.s
main.c
maxpage1.d
maxpage1.s
maxpage2.d
maxpage3.t
maxpage3a.d
maxpage3b.d
maxpage3c.d
maxpage4.d
maxpage4.t
maxpage5.d
maxpage5.s
maxpage5.t
merge.d
merge.ld
merge.s
merge2.d
merge2.s
multibss1.d
multibss1.s
needed1.out
needed1a.c
needed1b.c
needed1c.c
needed2.ver
needed2a.c
needed2b.c
needed2c.c
needed3.c
new.cc
nobits-1.d
nobits-1.s
nobits-1.t
noload-1.d
noload-1.s
noload-1.t
noload-2.d
noload-3.d
noload-3.s
noload-3.t
normal.out
note-1.d
note-1.s
note-1.t
note-2.d
note-2.s
note-2.t
note-3.l
note-3.s
note-3.t
now-1.d
now-2.d
now-3.d
now-4.d
orphan-region.d
orphan-region.ld
orphan-region.s
orphan.d
orphan.ld
orphan.s
orphan2.d
orphan2.s
orphan3.d
orphan3a.s
orphan3b.s
orphan3c.s
orphan3d.s
orphan3e.s
orphan3f.s
orphan4.d
orphan4.ld
orphan4.s
overlay.d
overlay.s
overlay.t
pass.out
pr349-1.s
pr349-2.s
pr349.d
pr2404.out
pr2404a.c
pr2404b.c
pr9676-1.c
pr9676-2.c
pr9676-3.c
pr9676-4.c
pr9676.rd
pr9679-1.c
pr9679-2.c
pr9679.rd
pr11138-1.c
pr11138-1.map
pr11138-2.c
pr11138-2.map
pr11138.out
pr11304.d
pr11304a.s
pr11304b.s
pr12851.d
pr12851.s
pr12975.d
pr12975.s
pr12975.t
pr13177.d
pr13177.s
pr13195.c
pr13195.d
pr13195.s
pr13195.t
pr13250-1.c
pr13250-2.c
pr13250-3.c
pr13839.d
pr13839.s
pr13839.t
pr14052.d
pr14052.t
pr14156a.d
pr14156b.d
pr14156c.d
pr14156c.t
pr14170a.s
pr14170b.s
pr14170c.s
pr14323-1.c
pr14323-2.c
pr14525.c
pr14525.out
pr14862-1.c
pr14862-2.c
pr14862.map
pr14862.out
pr14926.d
pr14926.s
pr16322.d
pr16322.s
pr16498a.d
pr16498a.s
pr16498a.t
pr16498b.d
pr16498b.t
pr17068.s
pr17068a.s
pr17068b.s
pr17068c.s
pr17068d.s
pr17068e.s
pr17068ez.s
preinit.c
preinit.out
provide-hidden-1.ld
provide-hidden-1.s
provide-hidden-2.ld
provide-hidden-2.s
provide-hidden-3.s
provide-hidden-4.s
provide-hidden-abs.nd
provide-hidden-def.nd
provide-hidden-dyn.nd
provide-hidden-dynabs.nd
provide-hidden-dynsec.nd
provide-hidden-s.ld
provide-hidden-s.nd
provide-hidden-sec.nd
provide-hidden.exp
rdynamic-1.c
rdynamic-1.rd
rel.c
relmain.c
relmain.out
relocatable.d
relocatable.t
relro1.s
relro2.s
rpath-1.d
rpath-2.d
runpath-1.d
runpath-2.d
sec-to-seg-script-adjoining-pages.t
sec-to-seg-script-disjoint-pages.t
sec-to-seg-script-same-page.t
sec-to-seg.exp
sec-to-seg1.s
sec-to-seg2.s
sec64k.exp
seg.d
seg.s
seg.t
shared.exp
simple.s
stab.d
stack-exec.rd
stack-size.rd
stack.s
start.s
symbol1ref.s
symbol1w.s
symbol2ref.s
symbol2w.s
symbol3.s
symbol3w.s
table.s
tbss.s
tbss1.s
tbss2.s
tbss3.s
tdata1.s
tdata2.s
tdata3.s
textaddr1.d
textaddr2.d
textaddr3.d
textaddr4.d
textaddr5.d
textaddr6.d
textaddr7.d
tls_common.exp
tls_common.s
tls_gc.s
unknown.d
unknown2.d
unknown2.s
var1.d
var1.s
var1.t
warn.out
warn1.d
warn2.d
warn3.d
weak-dyn-1.ld
weak-dyn-1.rd
weak-dyn-1a.s
weak-dyn-1b.s
weakdef1.c
wrap.exp
wrap1.c
wrap1.out
wrap1a.c
wrap1b.c