diff options
author | Jan Beulich <jbeulich@novell.com> | 2006-12-04 08:57:09 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2006-12-04 08:57:09 +0000 |
commit | eb3d5f3b94495740ddeedc7282baaa2b79de99cd (patch) | |
tree | 98d6cc69095979c67955ffdec6505554845b25d4 /ld | |
parent | d807a492c6640cad84bfba13c2266747b407b521 (diff) | |
download | gdb-eb3d5f3b94495740ddeedc7282baaa2b79de99cd.zip gdb-eb3d5f3b94495740ddeedc7282baaa2b79de99cd.tar.gz gdb-eb3d5f3b94495740ddeedc7282baaa2b79de99cd.tar.bz2 |
bfd/
2006-12-04 Jan Beulich <jbeulich@novell.com>
* elflink.c (_bfd_elf_link_create_dynamic_sections): Don't create
.eh_frame_hdr section from here anymore.
(bfd_elf_size_dynamic_sections): Call _bfd_elf_maybe_strip_eh_frame_hdr
a little earlier.
ld/
2006-12-04 Jan Beulich <jbeulich@novell.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Create
.eh_frame_hdr section here.
ld/testsuite/
2006-12-04 Jan Beulich <jbeulich@novell.com>
* ld-elf/eh-frame-hdr.d: New.
* ld-elf/eh-frame-hdr.s: New.
* ld-ia64/tlsbin.dd, ld-ia64/tlsbin.sd: Don't depend on exact linkage
table layout.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/emultempl/elf32.em | 36 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/eh-frame-hdr.d | 17 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/eh-frame-hdr.s | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-ia64/tlsbin.dd | 16 | ||||
-rw-r--r-- | ld/testsuite/ld-ia64/tlsbin.sd | 4 |
7 files changed, 81 insertions, 10 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 209e8d9..df00020 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2006-12-04 Jan Beulich <jbeulich@novell.com> + + * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Create + .eh_frame_hdr section here. + 2006-11-27 Ian Lance Taylor <ian@airs.com> * Makefile.am (EXTRA_DIST): Put spu_ovl.o in the emultempl diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index 03d9d8d..2888008 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -865,6 +865,42 @@ gld${EMULATION_NAME}_after_open (void) { struct bfd_link_needed_list *needed, *l; + if (link_info.eh_frame_hdr + && ! link_info.traditional_format + && ! link_info.relocatable) + { + struct elf_link_hash_table *htab; + + htab = elf_hash_table (&link_info); + if (is_elf_hash_table (htab)) + { + bfd *abfd; + asection *s; + + for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next) + { + s = bfd_get_section_by_name (abfd, ".eh_frame"); + if (s && s->size > 8 && !bfd_is_abs_section (s->output_section)) + break; + } + if (abfd) + { + const struct elf_backend_data *bed; + + bed = get_elf_backend_data (abfd); + s = bfd_make_section_with_flags (abfd, ".eh_frame_hdr", + bed->dynamic_sec_flags + | SEC_READONLY); + if (s != NULL + && bfd_set_section_alignment (abfd, s, 2)) + htab->eh_info.hdr_sec = s; + else + einfo ("%P: warning: Cannot create .eh_frame_hdr section," + " --eh-frame-hdr ignored.\n"); + } + } + } + /* We only need to worry about this when doing a final link. */ if (link_info.relocatable || !link_info.executable) return; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index cce90f9..b578008 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-12-04 Jan Beulich <jbeulich@novell.com> + + * ld-elf/eh-frame-hdr.d: New. + * ld-elf/eh-frame-hdr.s: New. + * ld-ia64/tlsbin.dd, ld-ia64/tlsbin.sd: Don't depend on exact linkage + table layout. + 2006-11-23 Thiemo Seufer <ths@mips.com> * ld-elf/warn2.d: Match regex also for the second segment. diff --git a/ld/testsuite/ld-elf/eh-frame-hdr.d b/ld/testsuite/ld-elf/eh-frame-hdr.d new file mode 100644 index 0000000..b465e5d --- /dev/null +++ b/ld/testsuite/ld-elf/eh-frame-hdr.d @@ -0,0 +1,17 @@ +#source: eh-frame-hdr.s +#ld: -e _start --eh-frame-hdr +#objdump: -hw +#target: alpha*-*-* +#target: arm*-*-* +#target: i?86-*-* +#target: m68k-*-* +#target: mips*-*-* +#target: powerpc*-*-* +#target: s390*-*-* +#target: sh*-*-* +#xfail: sh*l*-*-* +#target: sparc*-*-* +#target: x86_64-*-* +#... + [0-9] .eh_frame_hdr 0*[12][048c] .* +#pass diff --git a/ld/testsuite/ld-elf/eh-frame-hdr.s b/ld/testsuite/ld-elf/eh-frame-hdr.s new file mode 100644 index 0000000..e5d3318 --- /dev/null +++ b/ld/testsuite/ld-elf/eh-frame-hdr.s @@ -0,0 +1,6 @@ + .text + .global _start +_start: + .cfi_startproc + .skip 16 + .cfi_endproc diff --git a/ld/testsuite/ld-ia64/tlsbin.dd b/ld/testsuite/ld-ia64/tlsbin.dd index d581579..1c5bc2f 100644 --- a/ld/testsuite/ld-ia64/tlsbin.dd +++ b/ld/testsuite/ld-ia64/tlsbin.dd @@ -13,25 +13,25 @@ Disassembly of section .text: 40+1000: 10 10 15 06 80 05[ ]+\[MIB\][ ]+alloc r34=ar.pfs,5,3,0 40+1006: 10 02 00 62 00 00[ ]+mov r33=b0 40+100c: 00 00 00 20[ ]+nop.b 0x0 -40+1010: 0d 70 80 02 00 24[ ]+\[MFI\][ ]+addl r14=32,r1 +40+1010: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 40+1016: 00 00 00 02 00 e0[ ]+nop.f 0x0 -40+101c: 81 0a 00 90[ ]+addl r15=40,r1;; +40+101c: .1 0. 00 90[ ]+addl r15=(24|32|40|48|56|64),r1;; 40+1020: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] 40+1026: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] 40+102c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; -40+1030: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 +40+1030: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 40+1036: 00 00 00 02 00 e0[ ]+nop.f 0x0 -40+103c: 01 0c 00 90[ ]+addl r15=64,r1;; +40+103c: .1 0. 00 90[ ]+addl r15=(24|32|40|48|56|64),r1;; 40+1040: 19 18 01 1c 18 10[ ]+\[MMB\][ ]+ld8 r35=\[r14\] 40+1046: 40 02 3c 30 20 00[ ]+ld8 r36=\[r15\] 40+104c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; -40+1050: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 +40+1050: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 40+1056: 00 00 00 02 00 80[ ]+nop.f 0x0 40+105c: 14 02 00 90[ ]+mov r36=33;; 40+1060: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] 40+1066: 00 00 00 02 00 00[ ]+nop.f 0x0 40+106c: [0-9a-f ]+br.call.sptk.many b0=[0-9a-f]+ <.*>;; -40+1070: 0d 70 c0 02 00 24[ ]+\[MFI\][ ]+addl r14=48,r1 +40+1070: 0d 70 .0 0. 00 24[ ]+\[MFI\][ ]+addl r14=(24|32|40|48|56|64),r1 40+1076: 00 00 00 02 00 80[ ]+nop.f 0x0 40+107c: 04 00 00 84[ ]+mov r36=r0;; 40+1080: 1d 18 01 1c 18 10[ ]+\[MFB\][ ]+ld8 r35=\[r14\] @@ -51,11 +51,11 @@ Disassembly of section .text: 40+10cc: 08 00 84 00[ ]+br.ret.sptk.many b0;; 40+10d0 <_start>: -40+10d0: 0b 70 60 02 00 24[ ]+\[MMI\][ ]+addl r14=24,r1;; +40+10d0: 0b 70 .0 0. 00 24[ ]+\[MMI\][ ]+addl r14=(24|32|40|48|56|64),r1;; 40+10d6: e0 00 38 30 20 00[ ]+ld8 r14=\[r14\] 40+10dc: 00 00 04 00[ ]+nop.i 0x0;; 40+10e0: 0b 70 38 1a 00 20[ ]+\[MMI\][ ]+add r14=r14,r13;; -40+10e6: e0 c0 05 00 48 00[ ]+addl r14=56,r1 +40+10e6: e0 .0 0. 00 48 00[ ]+addl r14=(24|32|40|48|56|64),r1 40+10ec: 00 00 04 00[ ]+nop.i 0x0;; 40+10f0: 0b 70 00 1c 18 10[ ]+\[MMI\][ ]+ld8 r14=\[r14\];; 40+10f6: e0 70 34 00 40 00[ ]+add r14=r14,r13 diff --git a/ld/testsuite/ld-ia64/tlsbin.sd b/ld/testsuite/ld-ia64/tlsbin.sd index 5d8ab65..411eedb 100644 --- a/ld/testsuite/ld-ia64/tlsbin.sd +++ b/ld/testsuite/ld-ia64/tlsbin.sd @@ -11,5 +11,5 @@ Contents of section .got: (60+)?1318 0+ 0+ 0+ 0+ .* (60+)?1328 0+ 0+ 0+ 0+ .* (60+)?1338 0+ 0+ 0+ 0+ .* - (60+)?1348 01000000 0+ 90000000 0+ .* - (60+)?1358 24000000 0+ .* + (60+)?1348 (00|01|24|90)000000 0+ (00|01|24|90)000000 0+ .* + (60+)?1358 (00|01|24|90)000000 0+ .* |