* elf-eh-frame.c (skip_cfa_op, skip_non_nops): New functions.

(_bfd_elf_discard_section_eh_frame): Use them to interpret the CFA
	instructions.  If the amount of padding is known, reduce the size
	of the CIE or FDE by that amount.
This commit is contained in:
Richard Sandiford
2005-01-17 17:44:41 +00:00
parent 2c42be6506
commit dcf507a6ee
6 changed files with 799 additions and 4 deletions

@ -1,3 +1,10 @@
2005-01-17 Richard Sandiford <rsandifo@redhat.com>
* elf-eh-frame.c (skip_cfa_op, skip_non_nops): New functions.
(_bfd_elf_discard_section_eh_frame): Use them to interpret the CFA
instructions. If the amount of padding is known, reduce the size
of the CIE or FDE by that amount.
2005-01-17 Richard Sandiford <rsandifo@redhat.com> 2005-01-17 Richard Sandiford <rsandifo@redhat.com>
* elf-bfd.h (struct cie): Use bfd_vmas for code_align, ra_column and * elf-bfd.h (struct cie): Use bfd_vmas for code_align, ra_column and

@ -260,6 +260,102 @@ size_of_output_cie_fde (struct eh_cie_fde *entry, unsigned int alignment)
+ alignment - 1) & -alignment; + alignment - 1) & -alignment;
} }
/* Assume that the bytes between *ITER and END are CFA instructions.
Try to move *ITER past the first instruction and return true on
success. ENCODED_PTR_WIDTH gives the width of pointer entries. */
static bfd_boolean
skip_cfa_op (bfd_byte **iter, bfd_byte *end, unsigned int encoded_ptr_width)
{
bfd_byte op;
bfd_vma length;
if (!read_byte (iter, end, &op))
return FALSE;
switch (op & 0x80 ? op & 0xc0 : op)
{
case DW_CFA_nop:
case DW_CFA_advance_loc:
case DW_CFA_restore:
/* No arguments. */
return TRUE;
case DW_CFA_offset:
case DW_CFA_restore_extended:
case DW_CFA_undefined:
case DW_CFA_same_value:
case DW_CFA_def_cfa_register:
case DW_CFA_def_cfa_offset:
case DW_CFA_def_cfa_offset_sf:
case DW_CFA_GNU_args_size:
/* One leb128 argument. */
return skip_leb128 (iter, end);
case DW_CFA_offset_extended:
case DW_CFA_register:
case DW_CFA_def_cfa:
case DW_CFA_offset_extended_sf:
case DW_CFA_GNU_negative_offset_extended:
case DW_CFA_def_cfa_sf:
/* Two leb128 arguments. */
return (skip_leb128 (iter, end)
&& skip_leb128 (iter, end));
case DW_CFA_def_cfa_expression:
/* A variable-length argument. */
return (read_uleb128 (iter, end, &length)
&& skip_bytes (iter, end, length));
case DW_CFA_expression:
/* A leb128 followed by a variable-length argument. */
return (skip_leb128 (iter, end)
&& read_uleb128 (iter, end, &length)
&& skip_bytes (iter, end, length));
case DW_CFA_set_loc:
return skip_bytes (iter, end, encoded_ptr_width);
case DW_CFA_advance_loc1:
return skip_bytes (iter, end, 1);
case DW_CFA_advance_loc2:
return skip_bytes (iter, end, 2);
case DW_CFA_advance_loc4:
return skip_bytes (iter, end, 4);
case DW_CFA_MIPS_advance_loc8:
return skip_bytes (iter, end, 8);
default:
return FALSE;
}
}
/* Try to interpret the bytes between BUF and END as CFA instructions.
If every byte makes sense, return a pointer to the first DW_CFA_nop
padding byte, or END if there is no padding. Return null otherwise.
ENCODED_PTR_WIDTH is as for skip_cfa_op. */
static bfd_byte *
skip_non_nops (bfd_byte *buf, bfd_byte *end, unsigned int encoded_ptr_width)
{
bfd_byte *last;
last = buf;
while (buf < end)
if (*buf == DW_CFA_nop)
buf++;
else
{
if (!skip_cfa_op (&buf, end, encoded_ptr_width))
return 0;
last = buf;
}
return last;
}
/* This function is called for each input file before the .eh_frame /* This function is called for each input file before the .eh_frame
section is relocated. It discards duplicate CIEs and FDEs for discarded section is relocated. It discards duplicate CIEs and FDEs for discarded
functions. The function returns TRUE iff any entries have been functions. The function returns TRUE iff any entries have been
@ -356,7 +452,7 @@ _bfd_elf_discard_section_eh_frame
for (;;) for (;;)
{ {
unsigned char *aug; unsigned char *aug;
bfd_byte *start, *end; bfd_byte *start, *end, *insns;
bfd_size_type length; bfd_size_type length;
if (sec_info->count == sec_info->alloced) if (sec_info->count == sec_info->alloced)
@ -602,12 +698,13 @@ _bfd_elf_discard_section_eh_frame
if (cie.fde_encoding == DW_EH_PE_omit) if (cie.fde_encoding == DW_EH_PE_omit)
cie.fde_encoding = DW_EH_PE_absptr; cie.fde_encoding = DW_EH_PE_absptr;
initial_insn_length = cie.hdr.length - (buf - last_fde - 4); initial_insn_length = end - buf;
if (initial_insn_length <= 50) if (initial_insn_length <= 50)
{ {
cie.initial_insn_length = initial_insn_length; cie.initial_insn_length = initial_insn_length;
memcpy (cie.initial_instructions, buf, initial_insn_length); memcpy (cie.initial_instructions, buf, initial_insn_length);
} }
insns = buf;
buf += initial_insn_length; buf += initial_insn_length;
ENSURE_NO_RELOCS (buf); ENSURE_NO_RELOCS (buf);
last_cie = last_fde; last_cie = last_fde;
@ -648,18 +745,38 @@ _bfd_elf_discard_section_eh_frame
/* Skip the augmentation size, if present. */ /* Skip the augmentation size, if present. */
if (cie.augmentation[0] == 'z') if (cie.augmentation[0] == 'z')
REQUIRE (skip_leb128 (&buf, end)); REQUIRE (read_uleb128 (&buf, end, &length));
else
length = 0;
/* Of the supported augmentation characters above, only 'L' /* Of the supported augmentation characters above, only 'L'
adds augmentation data to the FDE. This code would need to adds augmentation data to the FDE. This code would need to
be adjusted if any future augmentations do the same thing. */ be adjusted if any future augmentations do the same thing. */
if (cie.lsda_encoding != DW_EH_PE_omit) if (cie.lsda_encoding != DW_EH_PE_omit)
this_inf->lsda_offset = buf - start; {
this_inf->lsda_offset = buf - start;
/* If there's no 'z' augmentation, we don't know where the
CFA insns begin. Assume no padding. */
if (cie.augmentation[0] != 'z')
length = end - buf;
}
/* Skip over the augmentation data. */
REQUIRE (skip_bytes (&buf, end, length));
insns = buf;
buf = last_fde + 4 + hdr.length; buf = last_fde + 4 + hdr.length;
SKIP_RELOCS (buf); SKIP_RELOCS (buf);
} }
/* Try to interpret the CFA instructions and find the first
padding nop. Shrink this_inf's size so that it doesn't
including the padding. */
length = get_DW_EH_PE_width (cie.fde_encoding, ptr_size);
insns = skip_non_nops (insns, end, length);
if (insns != 0)
this_inf->size -= end - insns;
this_inf->fde_encoding = cie.fde_encoding; this_inf->fde_encoding = cie.fde_encoding;
this_inf->lsda_encoding = cie.lsda_encoding; this_inf->lsda_encoding = cie.lsda_encoding;
sec_info->count++; sec_info->count++;

@ -1,3 +1,8 @@
2005-01-17 Richard Sandiford <rsandifo@redhat.com>
* ld-mips-elf/eh-frame2-{n32,n64}.d: New tests.
* ld-mips-elf/mips-elf.exp: Run them.
2005-01-17 Andrew Stubbs <andrew.stubbs@st.com> 2005-01-17 Andrew Stubbs <andrew.stubbs@st.com>
* ld-sh/arch/arch.exp: Correct the email address. * ld-sh/arch/arch.exp: Correct the email address.

@ -0,0 +1,255 @@
#name: MIPS eh-frame 2, n32
#source: eh-frame1.s
#source: eh-frame1.s
#as: -EB -n32 --defsym alignment=2 --defsym fill=0
#readelf: --relocs -wf
#ld: -shared -melf32btsmipn32 -Teh-frame1.ld
Relocation section '\.rel\.dyn' .*:
*Offset .*
00000000 00000000 R_MIPS_NONE *
# Initial PCs for the FDEs attached to CIE 0xb8
000300d8 00000003 R_MIPS_REL32 *
000300ec 00000003 R_MIPS_REL32 *
# Likewise CIE 0x218
00030238 00000003 R_MIPS_REL32 *
0003024c 00000003 R_MIPS_REL32 *
0003008b 00000503 R_MIPS_REL32 00000000 foo
000300cc 00000503 R_MIPS_REL32 00000000 foo
0003010a 00000503 R_MIPS_REL32 00000000 foo
000301eb 00000503 R_MIPS_REL32 00000000 foo
0003022c 00000503 R_MIPS_REL32 00000000 foo
0003026a 00000503 R_MIPS_REL32 00000000 foo
#...
The section \.eh_frame contains:
00000000 00000010 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000014 00000010 00000018 FDE cie=00000000 pc=00020000..00020010
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000028 00000010 0000002c FDE cie=00000000 pc=00020010..00020030
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic2 removed
0000003c 00000010 00000040 FDE cie=00000000 pc=00020030..00020060
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic3 removed
00000050 00000010 00000054 FDE cie=00000000 pc=00020060..000200a0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic4 removed
00000064 00000010 00000068 FDE cie=00000000 pc=000200a0..000200f0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000078 00000014 00000000 CIE
Version: 1
Augmentation: "zRP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10 00 00 00 00 00
DW_CFA_nop
00000090 00000010 0000001c FDE cie=00000078 pc=000200f0..00020100
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000a4 00000010 00000030 FDE cie=00000078 pc=00020100..00020120
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000b8 00000014 00000000 CIE
Version: 1
Augmentation: "zP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 50 00 00 00 00 00 00 00
000000d0 00000010 0000001c FDE cie=000000b8 pc=00020120..00020130
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000e4 00000010 00000030 FDE cie=000000b8 pc=00020130..00020150
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000f8 00000014 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 00 00 00 00 00 10
DW_CFA_nop
00000110 00000010 0000001c FDE cie=000000f8 pc=00020150..00020160
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# FDE for .discard removed
# zPR2 removed
00000124 00000010 00000030 FDE cie=000000f8 pc=00020160..00020190
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000138 00000010 00000044 FDE cie=000000f8 pc=00020190..000201d0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
0000014c 00000010 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000160 00000010 00000018 FDE cie=0000014c pc=000201d0..000201e0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic1 removed, followed by repeat of above
00000174 00000010 0000002c FDE cie=0000014c pc=000201e0..000201f0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000188 00000010 00000040 FDE cie=0000014c pc=000201f0..00020210
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
0000019c 00000010 00000054 FDE cie=0000014c pc=00020210..00020240
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000001b0 00000010 00000068 FDE cie=0000014c pc=00020240..00020280
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000001c4 00000010 0000007c FDE cie=0000014c pc=00020280..000202d0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000001d8 00000014 00000000 CIE
Version: 1
Augmentation: "zRP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10 00 00 00 00 00
DW_CFA_nop
000001f0 00000010 0000001c FDE cie=000001d8 pc=000202d0..000202e0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000204 00000010 00000030 FDE cie=000001d8 pc=000202e0..00020300
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000218 00000014 00000000 CIE
Version: 1
Augmentation: "zP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 50 00 00 00 00 00 00 00
00000230 00000010 0000001c FDE cie=00000218 pc=00020300..00020310
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000244 00000010 00000030 FDE cie=00000218 pc=00020310..00020330
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000258 00000014 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 00 00 00 00 00 10
DW_CFA_nop
00000270 00000010 0000001c FDE cie=00000258 pc=00020330..00020340
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000284 00000010 00000030 FDE cie=00000258 pc=00020340..00020370
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000298 00000010 00000044 FDE cie=00000258 pc=00020370..000203b0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000002ac 00000010 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000002c0 00000010 00000018 FDE cie=000002ac pc=000203b0..000203c0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop

@ -0,0 +1,409 @@
#name: MIPS eh-frame 2, n64
#source: eh-frame1.s
#source: eh-frame1.s
#as: -EB -64 --defsym alignment=3 --defsym fill=0
#readelf: --relocs -wf
#ld: -shared -melf64btsmip -Teh-frame1.ld
Relocation section '\.rel\.dyn' .*:
*Offset .*
000000000000 000000000000 R_MIPS_NONE *
*Type2: R_MIPS_NONE *
*Type3: R_MIPS_NONE *
# Initial PCs for the FDEs attached to CIE 0x118
000000030140 000000001203 R_MIPS_REL32 *
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
000000030160 000000001203 R_MIPS_REL32 *
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
# Likewise CIE 0x330
000000030358 000000001203 R_MIPS_REL32 *
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
000000030378 000000001203 R_MIPS_REL32 *
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
0000000300cb 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
000000030130 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
00000003018a 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
0000000302e3 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
000000030348 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
0000000303a2 000500001203 R_MIPS_REL32 0000000000000000 foo
*Type2: R_MIPS_64 *
*Type3: R_MIPS_NONE *
#...
The section \.eh_frame contains:
00000000 00000014 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000018 0000001c 0000001c FDE cie=00000000 pc=00020000..00020010
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000038 0000001c 0000003c FDE cie=00000000 pc=00020010..00020030
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic2 removed
00000058 0000001c 0000005c FDE cie=00000000 pc=00020030..00020060
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic3 removed
00000078 0000001c 0000007c FDE cie=00000000 pc=00020060..000200a0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic4 removed
00000098 0000001c 0000009c FDE cie=00000000 pc=000200a0..000200f0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000b8 0000001c 00000000 CIE
Version: 1
Augmentation: "zRP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10 00 00 00 00 00 00 00 00 00
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000d8 0000001c 00000024 FDE cie=000000b8 pc=000200f0..00020100
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000000f8 0000001c 00000044 FDE cie=000000b8 pc=00020100..00020120
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000118 0000001c 00000000 CIE
Version: 1
Augmentation: "zP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000138 0000001c 00000024 FDE cie=00000118 pc=00020120..00020130
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000158 0000001c 00000044 FDE cie=00000118 pc=00020130..00020150
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000178 0000001c 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 00 00 00 00 00 00 00 00 00 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000198 0000001c 00000024 FDE cie=00000178 pc=00020150..00020160
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# FDE for .discard removed
# zPR2 removed
000001b8 0000001c 00000044 FDE cie=00000178 pc=00020160..00020190
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000001d8 0000001c 00000064 FDE cie=00000178 pc=00020190..000201d0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000001f8 00000014 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000210 0000001c 0000001c FDE cie=000001f8 pc=000201d0..000201e0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
# basic1 removed, followed by repeat of above
00000230 0000001c 0000003c FDE cie=000001f8 pc=000201e0..000201f0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000250 0000001c 0000005c FDE cie=000001f8 pc=000201f0..00020210
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000270 0000001c 0000007c FDE cie=000001f8 pc=00020210..00020240
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000290 0000001c 0000009c FDE cie=000001f8 pc=00020240..00020280
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000002b0 0000001c 000000bc FDE cie=000001f8 pc=00020280..000202d0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000002d0 0000001c 00000000 CIE
Version: 1
Augmentation: "zRP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10 00 00 00 00 00 00 00 00 00
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000002f0 0000001c 00000024 FDE cie=000002d0 pc=000202d0..000202e0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000310 0000001c 00000044 FDE cie=000002d0 pc=000202e0..00020300
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000330 0000001c 00000000 CIE
Version: 1
Augmentation: "zP"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000350 0000001c 00000024 FDE cie=00000330 pc=00020300..00020310
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000370 0000001c 00000044 FDE cie=00000330 pc=00020310..00020330
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000390 0000001c 00000000 CIE
Version: 1
Augmentation: "zPR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 00 00 00 00 00 00 00 00 00 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000003b0 0000001c 00000024 FDE cie=00000390 pc=00020330..00020340
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000003d0 0000001c 00000044 FDE cie=00000390 pc=00020340..00020370
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
000003f0 0000001c 00000064 FDE cie=00000390 pc=00020370..000203b0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000410 00000014 00000000 CIE
Version: 1
Augmentation: "zR"
Code alignment factor: 1
Data alignment factor: 4
Return address column: 31
Augmentation data: 10
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
00000428 0000001c 0000001c FDE cie=00000410 pc=000203b0..000203c0
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop

@ -78,6 +78,8 @@ run_dump_test "reloc-merge-lo16"
if {$has_newabi && $linux_gnu} { if {$has_newabi && $linux_gnu} {
run_dump_test "eh-frame1-n32" run_dump_test "eh-frame1-n32"
run_dump_test "eh-frame1-n64" run_dump_test "eh-frame1-n64"
run_dump_test "eh-frame2-n32"
run_dump_test "eh-frame2-n64"
} }
run_dump_test "jaloverflow" run_dump_test "jaloverflow"