[GCC 3.0]: exception frame info confuse OpenBSD as
Marc Espie
espie@schutzenberger.liafa.jussieu.fr
Fri Jul 6 06:03:00 GMT 2001
In gcc 3.0, the frame info confuses 'as' badly on some OpenBSD platforms.
Namely, constructs such as
.lcomm _dwarf_reg_size_table,32
#APP
.data
.align 2,0x90
.globl __GLOBAL__F__Unwind_GetLanguageSpecificData
__GLOBAL__F__Unwind_GetLanguageSpecificData:
___FRAME_BEGIN__:
.long LECIE1-LSCIE1 ;# Length of Common Information Entry
LSCIE1:
.long 0x0 ;# CIE Identifier Tag
.byte 0x1 ;# CIE Version
.ascii "zR\0" ;# CIE Augmentation
.byte 0x1 ;# uleb128 0x1; CIE Code Alignment Factor
.byte 0x7c ;# sleb128 -4; CIE Data Alignment Factor
.byte 0x8 ;# CIE RA Column
.byte 0x1 ;# uleb128 0x1; Augmentation size
.byte 0x10 ;# FDE Encoding (pcrel)
.byte 0xc ;# DW_CFA_def_cfa
.byte 0x5 ;# uleb128 0x5
.byte 0x4 ;# uleb128 0x4
.byte 0x88 ;# DW_CFA_offset, column 0x8
.byte 0x1 ;# uleb128 0x1
.align 2,0x90
LECIE1:
LSFDE1:
.long LEFDE1-LASFDE1 ;# FDE Length
LASFDE1:
.long LASFDE1-___FRAME_BEGIN__ ;# FDE CIE offset
.long LFB1-. ;# FDE initial location
don't work at all in pic mode.
The
.long LFB1-. ;# FDE initial location
tries to create a relocation between a text label and a data position.
Our gas barfs on that.
First hand, by looking at dwarf2out.c, it seems that EH_FRAME_SECTION()
is the knob to tweak to fix that.
But this does not work, because EH_FRAME_SECTION triggers quite a few other
things... !
In fact, what is needed is a knob to disable force_data_section () in
pic_mode.
Am I missing something ? how to call such a knob ?
So far, I'm calling it EH_FORCE_DATA_SECTION, but that's probably a poor
name...
More information about the Gcc-bugs
mailing list