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:
parent
d5026a7d6d
commit
33aa234e0c
@ -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>
|
||||
|
||||
* 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
|
||||
#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-*-*
|
||||
#target: cfi
|
||||
#...
|
||||
[0-9] .eh_frame_hdr 0*[12][048c] .*
|
||||
#pass
|
||||
|
@ -29,9 +29,9 @@
|
||||
# executable trying to create .eh_frame_hdr. It needs a separate .exp file due
|
||||
# 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
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
.section sect, "axG", @progbits, sectgroup, comdat
|
||||
.section sect, "axG", %progbits, sectgroup, comdat
|
||||
.global _start
|
||||
_start:
|
||||
.cfi_startproc
|
||||
|
@ -1,4 +1,4 @@
|
||||
.section sect, "axG", @progbits, sectgroup, comdat
|
||||
.section sect, "axG", %progbits, sectgroup, comdat
|
||||
.cfi_startproc
|
||||
.skip 16
|
||||
.cfi_endproc
|
||||
|
@ -3,14 +3,15 @@
|
||||
#source: eh5b.s
|
||||
#ld:
|
||||
#readelf: -wf
|
||||
#target: x86_64-*-* i?86-*-*
|
||||
#target: cfi
|
||||
#notarget: alpha*
|
||||
|
||||
The section .eh_frame contains:
|
||||
|
||||
00000000 0000001[04] 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 1b
|
||||
@ -29,7 +30,7 @@ The section .eh_frame contains:
|
||||
000000(2c|30) 00000014 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zPR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 03 .. .. .. .. 1b
|
||||
@ -53,7 +54,7 @@ The section .eh_frame contains:
|
||||
0000007[48] 0000001[8c] 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zPLR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 03 .. .. .. .. 0c 1b
|
||||
@ -74,7 +75,7 @@ The section .eh_frame contains:
|
||||
000000b[08] 0000001[04] 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 1b
|
||||
@ -89,7 +90,7 @@ The section .eh_frame contains:
|
||||
000000[de]8 00000014 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zPR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 03 .. .. .. .. 1b
|
||||
@ -111,7 +112,7 @@ The section .eh_frame contains:
|
||||
000001(1c|30) 0000001[8c] 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zPLR"
|
||||
Code alignment factor: 1
|
||||
Code alignment factor: .*
|
||||
Data alignment factor: .*
|
||||
Return address column: .*
|
||||
Augmentation data: 03 .. .. .. .. 0c 1b
|
||||
|
@ -598,7 +598,8 @@ proc simple_diff { file_1 file_2 } {
|
||||
#
|
||||
# target: TARGET
|
||||
# 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
|
||||
# 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
|
||||
}
|
||||
|
||||
# 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]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user