diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-11-03 07:29:37 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2006-11-03 07:29:37 +0000 |
commit | 9b8ae42e78e6c3e3bc67c31673233568c27d9e71 (patch) | |
tree | 1f493a79ef0bfe683893d9c8cff4f546a67dab24 /gas/testsuite | |
parent | ae424f8246a09295cca8da6922c8ee781dec4fb1 (diff) | |
download | fsf-binutils-gdb-9b8ae42e78e6c3e3bc67c31673233568c27d9e71.zip fsf-binutils-gdb-9b8ae42e78e6c3e3bc67c31673233568c27d9e71.tar.gz fsf-binutils-gdb-9b8ae42e78e6c3e3bc67c31673233568c27d9e71.tar.bz2 |
* dw2gencfi.c (struct fde_entry): Add per_encoding, lsda_encoding,
personality and lsda.
(struct cie_entry): Add per_encoding, lsda_encoding and personality.
(alloc_fde_entry): Initialize per_encoding and lsda_encoding.
(cfi_pseudo_table): Handle .cfi_personality and .cfi_lsda.
(dot_cfi_personality, dot_cfi_lsda, encoding_size): New functions.
(output_cie): Output personality including its encoding and LSDA encoding.
(output_fde): Output LSDA.
(select_cie_for_fde): Don't share CIE if personality, its encoding or
LSDA encoding are different. Copy the 3 fields from fde_entry to
cie_entry.
* doc/as.texinfo (.cfi_personality, .cfi_lsda): Document.
* gas/cfi/cfi-common-6.d: New test.
* gas/cfi/cfi-common-6.s: New.
* gas/cfi/cfi.exp: Add cfi-common-6 test.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/cfi/cfi-common-6.d | 73 | ||||
-rw-r--r-- | gas/testsuite/gas/cfi/cfi-common-6.s | 40 | ||||
-rw-r--r-- | gas/testsuite/gas/cfi/cfi.exp | 1 |
4 files changed, 118 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 0034982..30c77b3 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2006-11-03 Jakub Jelinek <jakub@redhat.com> + * gas/cfi/cfi-common-6.d: New test. + * gas/cfi/cfi-common-6.s: New. + * gas/cfi/cfi.exp: Add cfi-common-6 test. + * gas/cfi/cfi-common-5.d: New test. * gas/cfi/cfi-common-5.s: New. * gas/cfi/cfi.exp: Add cfi-common-5 test. diff --git a/gas/testsuite/gas/cfi/cfi-common-6.d b/gas/testsuite/gas/cfi/cfi-common-6.d new file mode 100644 index 0000000..dcc7b79 --- /dev/null +++ b/gas/testsuite/gas/cfi/cfi-common-6.d @@ -0,0 +1,73 @@ +#readelf: -wf +#name: CFI common 6 +The section .eh_frame contains: + +00000000 00000018 00000000 CIE + Version: 1 + Augmentation: "zPLR" + Code alignment factor: .* + Data alignment factor: .* + Return address column: .* + Augmentation data: 03 .. .. .. .. 0c 1b + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +0000001c 00000018 00000020 FDE cie=00000000 pc=00000000..00000004 + Augmentation data: (00 00 00 00 de ad be ef|ef be ad de 00 00 00 00) + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +00000038 00000010 00000000 CIE + Version: 1 + Augmentation: "zLR" + Code alignment factor: .* + Data alignment factor: .* + Return address column: .* + Augmentation data: 0c 1b + + DW_CFA_nop + +0000004c 00000018 00000018 FDE cie=00000038 pc=00000004..00000008 + Augmentation data: (00 00 00 00 de ad be ef|ef be ad de 00 00 00 00) + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +00000068 00000018 0000006c FDE cie=00000000 pc=00000008..0000000c + Augmentation data: (00 00 00 00 be ef de ad|ad de ef be 00 00 00 00) + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +00000084 00000018 00000000 CIE + Version: 1 + Augmentation: "zPLR" + Code alignment factor: .* + Data alignment factor: .* + Return address column: .* + Augmentation data: 1b .. .. .. .. 1b 1b + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +000000a0 00000014 00000020 FDE cie=00000084 pc=0000000c..00000010 + Augmentation data: .. .. .. .. + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + +000000b8 00000014 00000038 FDE cie=00000084 pc=00000010..00000014 + Augmentation data: .. .. .. .. + + DW_CFA_nop + DW_CFA_nop + DW_CFA_nop + diff --git a/gas/testsuite/gas/cfi/cfi-common-6.s b/gas/testsuite/gas/cfi/cfi-common-6.s new file mode 100644 index 0000000..6fa52a5 --- /dev/null +++ b/gas/testsuite/gas/cfi/cfi-common-6.s @@ -0,0 +1,40 @@ + .text + .cfi_startproc simple + .cfi_personality 3, my_personality_v0 + .cfi_lsda 12, 0xdeadbeef + .long 0 + .cfi_endproc + + .cfi_startproc simple + .cfi_personality 3, my_personality_v0 + .cfi_lsda 12, 0xdeadbeef + .cfi_personality 0xff + .long 0 + .cfi_endproc + + .cfi_startproc simple + .cfi_personality 3, my_personality_v0 + .cfi_lsda 12, 0xbeefdead + .long 0 + .cfi_endproc + + .cfi_startproc simple + .cfi_personality (0x10 | 11), my_personality_v1 + .cfi_lsda 27, 1f + .long 0 + .cfi_endproc + + .cfi_startproc simple + .cfi_personality (0x10 | 11), my_personality_v1 + .cfi_lsda 27, 2f + .long 0 + .cfi_endproc + +my_personality_v0: + .long 0 +my_personality_v1: + .long 0 +1: + .long 0 +2: + .long 0 diff --git a/gas/testsuite/gas/cfi/cfi.exp b/gas/testsuite/gas/cfi/cfi.exp index 60b7952..da9ef26 100644 --- a/gas/testsuite/gas/cfi/cfi.exp +++ b/gas/testsuite/gas/cfi/cfi.exp @@ -73,3 +73,4 @@ run_dump_test "cfi-common-2" run_dump_test "cfi-common-3" run_dump_test "cfi-common-4" run_dump_test "cfi-common-5" +run_dump_test "cfi-common-6" |