mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-11 09:56:23 +08:00
Provide virtual target "cfi" for targets supporting CFI.
* ld-elf/eh-frame-hdr.d: Replace target and xfail statements by single `target: cfi'. * ld-elf/eh-group.exp: Call check_as_cfi instead of is_elf_format. * ld-elf/eh-group1.s, elf/eh-group2.s: Use more compatible section flags prefix '%'. * ld-elf/eh5.d: Replace target statement by `target: cfi' with an Alpha exception. Relax the `Code alignment factor' matching. * lib/ld-lib.exp: Rename istarget as istarget_ld. (istarget, check_as_cfi): New procedure. (run_dump_test): New comment for the virtual target `cfi'.
This commit is contained in:
@ -1,3 +1,17 @@
|
|||||||
|
2008-09-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
Provide virtual target "cfi" for targets supporting CFI.
|
||||||
|
* ld-elf/eh-frame-hdr.d: Replace target and xfail statements by single
|
||||||
|
`target: cfi'.
|
||||||
|
* ld-elf/eh-group.exp: Call check_as_cfi instead of is_elf_format.
|
||||||
|
* ld-elf/eh-group1.s, elf/eh-group2.s: Use more compatible section
|
||||||
|
flags prefix '%'.
|
||||||
|
* ld-elf/eh5.d: Replace target statement by `target: cfi' with an Alpha
|
||||||
|
exception. Relax the `Code alignment factor' matching.
|
||||||
|
* lib/ld-lib.exp: Rename istarget as istarget_ld.
|
||||||
|
(istarget, check_as_cfi): New procedure.
|
||||||
|
(run_dump_test): New comment for the virtual target `cfi'.
|
||||||
|
|
||||||
2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
* ld-elf/eh-group.exp, ld-elf/eh-group1.s, ld-elf/eh-group2.s: New test.
|
* ld-elf/eh-group.exp, ld-elf/eh-group1.s, ld-elf/eh-group2.s: New test.
|
||||||
|
@ -1,17 +1,7 @@
|
|||||||
#source: eh-frame-hdr.s
|
#source: eh-frame-hdr.s
|
||||||
#ld: -e _start --eh-frame-hdr
|
#ld: -e _start --eh-frame-hdr
|
||||||
#objdump: -hw
|
#objdump: -hw
|
||||||
#target: alpha*-*-*
|
#target: cfi
|
||||||
#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] .*
|
[0-9] .eh_frame_hdr 0*[12][048c] .*
|
||||||
#pass
|
#pass
|
||||||
|
@ -29,9 +29,9 @@
|
|||||||
# executable trying to create .eh_frame_hdr. It needs a separate .exp file due
|
# executable trying to create .eh_frame_hdr. It needs a separate .exp file due
|
||||||
# to the requirement of two `ld' runs.
|
# to the requirement of two `ld' runs.
|
||||||
|
|
||||||
# Exclude non-ELF targets.
|
# Exclude non-CFI (such as ia64) targets.
|
||||||
|
|
||||||
if ![is_elf_format] {
|
if {![check_as_cfi]} {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.section sect, "axG", @progbits, sectgroup, comdat
|
.section sect, "axG", %progbits, sectgroup, comdat
|
||||||
.global _start
|
.global _start
|
||||||
_start:
|
_start:
|
||||||
.cfi_startproc
|
.cfi_startproc
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.section sect, "axG", @progbits, sectgroup, comdat
|
.section sect, "axG", %progbits, sectgroup, comdat
|
||||||
.cfi_startproc
|
.cfi_startproc
|
||||||
.skip 16
|
.skip 16
|
||||||
.cfi_endproc
|
.cfi_endproc
|
||||||
|
@ -3,14 +3,15 @@
|
|||||||
#source: eh5b.s
|
#source: eh5b.s
|
||||||
#ld:
|
#ld:
|
||||||
#readelf: -wf
|
#readelf: -wf
|
||||||
#target: x86_64-*-* i?86-*-*
|
#target: cfi
|
||||||
|
#notarget: alpha*
|
||||||
|
|
||||||
The section .eh_frame contains:
|
The section .eh_frame contains:
|
||||||
|
|
||||||
00000000 0000001[04] 00000000 CIE
|
00000000 0000001[04] 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zR"
|
Augmentation: "zR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 1b
|
Augmentation data: 1b
|
||||||
@ -29,7 +30,7 @@ The section .eh_frame contains:
|
|||||||
000000(2c|30) 00000014 00000000 CIE
|
000000(2c|30) 00000014 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zPR"
|
Augmentation: "zPR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 03 .. .. .. .. 1b
|
Augmentation data: 03 .. .. .. .. 1b
|
||||||
@ -53,7 +54,7 @@ The section .eh_frame contains:
|
|||||||
0000007[48] 0000001[8c] 00000000 CIE
|
0000007[48] 0000001[8c] 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zPLR"
|
Augmentation: "zPLR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 03 .. .. .. .. 0c 1b
|
Augmentation data: 03 .. .. .. .. 0c 1b
|
||||||
@ -74,7 +75,7 @@ The section .eh_frame contains:
|
|||||||
000000b[08] 0000001[04] 00000000 CIE
|
000000b[08] 0000001[04] 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zR"
|
Augmentation: "zR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 1b
|
Augmentation data: 1b
|
||||||
@ -89,7 +90,7 @@ The section .eh_frame contains:
|
|||||||
000000[de]8 00000014 00000000 CIE
|
000000[de]8 00000014 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zPR"
|
Augmentation: "zPR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 03 .. .. .. .. 1b
|
Augmentation data: 03 .. .. .. .. 1b
|
||||||
@ -111,7 +112,7 @@ The section .eh_frame contains:
|
|||||||
000001(1c|30) 0000001[8c] 00000000 CIE
|
000001(1c|30) 0000001[8c] 00000000 CIE
|
||||||
Version: 1
|
Version: 1
|
||||||
Augmentation: "zPLR"
|
Augmentation: "zPLR"
|
||||||
Code alignment factor: 1
|
Code alignment factor: .*
|
||||||
Data alignment factor: .*
|
Data alignment factor: .*
|
||||||
Return address column: .*
|
Return address column: .*
|
||||||
Augmentation data: 03 .. .. .. .. 0c 1b
|
Augmentation data: 03 .. .. .. .. 0c 1b
|
||||||
|
@ -598,7 +598,8 @@ proc simple_diff { file_1 file_2 } {
|
|||||||
#
|
#
|
||||||
# target: TARGET
|
# target: TARGET
|
||||||
# Only run the test for TARGET. This may occur more than once; the
|
# Only run the test for TARGET. This may occur more than once; the
|
||||||
# target being tested must match at least one.
|
# target being tested must match at least one. You may provide target
|
||||||
|
# name "cfi" for any target supporting the CFI statements.
|
||||||
#
|
#
|
||||||
# notarget: TARGET
|
# notarget: TARGET
|
||||||
# Do not run the test for TARGET. This may occur more than once;
|
# Do not run the test for TARGET. This may occur more than once;
|
||||||
@ -1569,3 +1570,39 @@ proc check_gc_sections_available { } {
|
|||||||
}
|
}
|
||||||
return $gc_sections_available_saved
|
return $gc_sections_available_saved
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check if the assembler supports CFI statements.
|
||||||
|
|
||||||
|
proc check_as_cfi { } {
|
||||||
|
global check_as_cfi_result
|
||||||
|
global as
|
||||||
|
if [info exists check_as_cfi_result] {
|
||||||
|
return $check_as_cfi_result
|
||||||
|
}
|
||||||
|
set as_file "tmpdir/check_as_cfi.s"
|
||||||
|
set as_fh [open $as_file w 0666]
|
||||||
|
puts $as_fh "# Generated file. DO NOT EDIT"
|
||||||
|
puts $as_fh "\t.cfi_startproc"
|
||||||
|
puts $as_fh "\t.cfi_endproc"
|
||||||
|
close $as_fh
|
||||||
|
remote_download host $as_file
|
||||||
|
verbose -log "Checking CFI support:"
|
||||||
|
rename "perror" "check_as_cfi_perror"
|
||||||
|
proc perror { args } { }
|
||||||
|
set success [ld_assemble $as $as_file "/dev/null"]
|
||||||
|
rename "perror" ""
|
||||||
|
rename "check_as_cfi_perror" "perror"
|
||||||
|
#remote_file host delete $as_file
|
||||||
|
set check_as_cfi_result $success
|
||||||
|
return $success
|
||||||
|
}
|
||||||
|
|
||||||
|
# Provide virtual target "cfi" for targets supporting CFI.
|
||||||
|
|
||||||
|
rename "istarget" "istarget_ld"
|
||||||
|
proc istarget { target } {
|
||||||
|
if {$target == "cfi"} {
|
||||||
|
return [check_as_cfi]
|
||||||
|
}
|
||||||
|
return [istarget_ld $target]
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user