[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