This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F2.8377万D:编译器未生成正确的DWARF调用帧信息

Guru**** 2609955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/640045/compiler-tms320f28377d-compiler-not-generating-correct-dwarf-call-frame-information

部件号:TMS320F2.8377万D

工具/软件:TI C/C++编译器

我编译以下代码

float dotp_F32_F32_F32 (const float * a,const float * b,int num)

int i;

浮点结果= 0.0f;

_nassert( num >1);

对于(i = 0;i < num;I++)

结果+=*a++**b++;

}

返回结果;

}

 

我使用以下命令行进行编译(通过CCS)

 

****项目temp的配置版本****

"C:\\ti\\ccsv6\\utils\\bin\\gmake "-k temp.obj

'建筑文件:../temp.c'

'调用:C2000编译器'

"C:/ti/ccsv6/tools/compiler/ti-CGT-C2000_C2000_v28<xmt-block0>2000 17.9 -ml -mt --CLA_support=cla1 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -O2 --include_path="c_diag_support=fu32 --t_updip_support=fu/temp_upper-scdip_error=-scdip_形式-cru_scdip_cru/cru_-crueldip_-cru_-cruilence.dip_-cru_-cruel_-cruilence.dip_-cruel_-cru_-cru_-cruilenciag_-cruel_dip_-cruel_ 17.9

'完工建筑:../temp.c'

''

****构建已完成****

这将生成以下装配体文件

;*******************************************************

;* TMS320C2000 C/C++ Codegen PC v 17.9 .0.STS *

;*创建日期/时间:2017年11月15日星期三14:58:05 *

;*******************************************************

compiler_opts --abi=coffabi --cla_support=cla1 --diag_wrap=off --float_support=fpu32 --hll_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silic_version=28 --symdebug:dumf=dumpt-mem_support=3

ASGXAR2,FP

$C$DW$CU .dwtag DW_tag_compile单元

.dwattr $C$DW$CU,DW_AT_NAME ("./temp.c")

.dwattr $C$DW$CU,DW_AT_Producer (“TI TMS320C2000 C/C++ Codegen PC v 17.9 .0.STS版权所有(c) 1996-2017德州2017德州仪器(TI) Incorporated”)

.dwattr $C$DW$CU,DW_AT_TI_VERSION (0x01)

.dwattr $C$DW$CU,DW_at_comp_dir ("C:\Users\rist-1\CcsWorkspace\temp\Release")

$C$DW1美元 .dwtag DW_tag_듎 벶 랽 낸 ꆣ

.dwattr $C$DW1美元,DW_at_name("_nassert")

.dwattr $C$DW1美元,DW_AT_TI_SYMBOL_NAME("__nAssert")

.dwattr $C$DW1美元,DW_AT_declaration

.dwattr $C$DW1美元,DW_AT_external

$C$DW2美元 .dwtag DW_Tag_formal_parameter

.dwattr $C$DW2美元,DW_AT_TYPE(*$C$DW$T10美元)

.dwendtag $C$DW 1

; C:\\Users\\rist-1\\Local\\Temp\\{4F90EC8F-0DF8-485A-87B1-867.6861万BCB4445}<xmt-block0>4445 17.9 C:\\Users\\Local\\Temp\\\{4F90EC8F-0DF8-485A-87B1-867.6861万B4445} C:\\Users\\\Server\5FE\8FB-8A03B5A3E\\\8A331\4445 C:\\Users\\\Server\5FE\8FB-8A03B5A3E\\\8A331\ opt2000.exe

; 17.9 C:\\ccsv6\tools\compiler\ti-CGT-C2000_EA.0.STS\bin\ac2000.exe -2000. -@C:\\Users\\rist-1\\AppData\\Local\\Temp\\{A641DD8E-03A8-4DEB-C8EB-C8EAC4B5830}

.sect ".text"

单击

.global _dotp_F32_F32_F32

$C$DW3美元 .dwtag DW_tag_듎 벶 랽 낸 ꆣ

.dwattr $C$DW3美元,DW_at_name ("dotp_F32_F32_F32")

.dwattr $C$DW3美元,DW_at_low_PC (_dotp_F32_F32_F32)

.dwattr $C$DW3美元,DW_AT_HIGH _PC (0x00)

.dwattr $C$DW3美元,DW_AT_TI_SYMBOL_NAME("_dotp_F32_F32_F32")

.dwattr $C$DW3美元,DW_AT_external

.dwattr $C$DW3美元,DW_AT_TYPE(*$C$DW$T16美元)

.dwattr $C$DW3美元,DW_AT_TI_BEGIN_FILE("./temp.c")

.dwattr $C$DW3美元,DW_AT_TI_BEGIN_LINE (0x01)

.dwattr $C$DW3美元,DW_AT_TI_BEGIN_COLUMN(0x07)

.dwattr $C$DW3美元,DW_AT_TI_max_frame_size (-6)

.dwpsn文件"./temp.c",第2行,第1列,is_stmt,地址_dotp_F32_F32_F32,ISA 0

.dwfde $C$DW$CIE,_dotp_F32_F32_F32

$C$DW4美元 .dwtag DW_Tag_formal_parameter

.dwattr $C$DW4美元,DW_AT_NAME ("A")

.dwattr $C$DW4美元,DW_AT_TI_SYMBOL_NAME("_A")

.dwattr $C$DW4美元,DW_AT_TYPE(*$C$DW$T23美元)

.dwattr $C$DW4美元,DW_AT_location[DW_OP_reg12]

$C$DW5美元 .dwtag DW_tag_formal_parameter

.dwattr $C$DW5美元,DW_AT_NAME ("b")

.dwattr$C$DW5美元, DW_AT_TI_SYMBOL_NAME("_b")

.dwattr $C$DW5美元,DW_AT_TYPE(*$C$DW$T23美元)

.dwattr $C$DW5美元,DW_AT_location[DW_OP_reg14]

$C$DW6美元 .dwtag DW_Tag_formal_parameter

.dwattr $C$DW6美元,DW_AT_NAME ("num")

.dwattr $C$DW6美元,DW_AT_TI_SYMBOL_NAME("_num")

.dwattr $C$DW6美元,DW_AT_TYPE(*$C$DW$T10美元)

.dwattr $C$DW6美元,DW_AT_location[DW_OP_reg0]

;*******************************************************

;* FNAME:_dotp_F32_F32_F32 FR大小:4 *

;**

;*函数环境*

;**

;*函数属性*

;* 0参数,0自动,4 SOE *

;*******************************************************

_dotp_F32_F32_F32:

;* R2H分配给$O$T1

$C$DW7美元 .dwtag DW_tag_variable

.dwattr $C$DW7美元,DW_AT_NAME ("O$T1")

.dwattr $C$DW7美元,DW_AT_TI_SYMBOL_NAME ("$O$T1")

.dwattr $C$DW7美元,DW_AT_TYPE(*$C$DW$T16美元)

.dwattr $C$DW7美元,DW_at_location[DW_OP_regx 0x33]

;* AR5分配给$O$L1

$C$DW8美元 .dwtag DW_tag_variable

.dwattr $C$DW8美元,DW_AT_NAME ("O$L1")

.dwattr $C$DW8美元,DW_AT_TI_SYMBOL_NAME ("$O$L1")

.dwattr $C$DW8美元,DW_AT_TYPE(*$C$DW$T10美元)

.dwattr $C$DW8美元,DW_AT_location[DW_OP_reg14]

;* AR4分配给_A

$C$DW9美元 .dwtag DW_tag_variable

.dwattr $C$DW9美元,DW_AT_NAME ("A")

.dwattr $C$DW9美元,DW_AT_TI_SYMBOL_NAME("_A")

.dwattr $C$DW9美元,DW_AT_TYPE(*$C$DW$T23美元)

.dwattr $C$DW9美元,DW_AT_location[DW_OP_reg12]

;* AR7分配给_b

$C$DW10美元 .dwtag DW_tag_variable

.dwattr $C$DW10美元,DW_AT_NAME ("b")

.dwattr $C$DW10美元,DW_AT_TI_SYMBOL_NAME("_b")

.dwattr $C$DW10美元,DW_AT_TYPE(*$C$DW$T23美元)

.dwattr $C$DW10美元,DW_AT_location[DW_OP_reg18]

;* AR5分配给_num

$C$DW11美元 .dwtag DW_tag_variable

.dwattr $C$DW11美元,DW_AT_NAME ("num")

.dwattr$C$DW11美元, DW_AT_TI_SYMBOL_NAME("_num")

.dwattr $C$DW11美元,DW_AT_TYPE(*$C$DW$T20美元)

.dwattr $C$DW11美元,DW_AT_location[DW_OP_reg14]

;* R3H分配给_result

$C$DW12美元 .dwtag DW_tag_variable

.dwattr $C$DW12美元,DW_AT_NAME ("结果")

.dwattr $C$DW12美元,DW_AT_TI_SYMBOL_NAME("_result")

.dwattr $C$DW12美元,DW_AT_TYPE(*$C$DW$T16美元)

.dwattr $C$DW12美元,DW_AT_location[DW_OP_regx 0x37]

.dwcfi CFA_offset,-2

.dwcfi save_reg_to_mem,26,0

;***--------------- l1美元 = num-1;

;***4 --------------------------- 结果= T1美元 = 0.0F;

;***--------------- #pragma must迭代(232767,1)

;***--------------- #pragma loop_flags (4096u)

;***--------------- 第2代:

;***9 --------------------------- __parallal_bumped_add_F32 (*a++,*b++,&(结果),&(T1美元));

;***7------------------ 如果(--L1美元)!=(-1))转到G2;

;***12--------------- 结果+= T1美元;

;***12--------------- 返回结果;

MOVL XAR7,XAR5;[CPU_ALU]|2|

MOV32 *SP++,R6H;[CPU_FPU]

.dwpsn文件"../temp.c",第4行,第18列,is_stmt,ISA 0

R2H;[CPU_FPU]|4|

.dwpsn文件"../temp.c",第2行,第1列,is_stmt,ISA 0

MOVZ AR5,AL;[CPU_ALU]|2|

.dwpsn文件"../temp.c",第9行,第9列,is_stmt,ISA 0

R6H;[CPU_FPU]|9|

MOV32 *SP++,R7H;[CPU_FPU]

.dwpsn文件"../temp.c",第4行,第18列,is_stmt,ISA 0

MOV32 R3H,R2H;[CPU_FPU]|4|

.dwpsn文件"../temp.c",第9行,第9列,is_stmt,ISA 0

归零R7H;[CPU_FPU]|9|

SubB XAR5,#1;[CPU_ARAU]

RPT AR5

|| MACF32 R7H,R3H,*XAR4++,*XAR7++,[CPU_FPU]|9|

ADDF32 R3H,R3H,R2H;[CPU_FPU]|9|

ADDF32 R2H,R7H,R6H;[CPU_FPU]|9|

.dwpsn文件"../temp.c",第12行,第5列,is_stmt,ISA 0

MOV32 R7H,*--SP;[CPU_FPU]|12|

MOV32 R6H,*--SP;[CPU_FPU]|12|

|| ADDF32 R0H,R2H,R3H;[CPU_FPU]|12|

$C$DW13美元 .dwtag DW_TI_BRANCH

.dwattr $C$DW13美元,DW_AT_low_PC (0x00)

.dwattr $C$DW13美元,DW_AT_TI_RETURN

LRETR;[CPU_ALU]

;出现返回;[]

.dwattr $C$DW3美元,DW_AT_TI_END_FILE("./temp.c")

.dwattr $C$DW3美元,DW_AT_TI_END_LINE (0x0d)

.dwattr $C$DW3美元,DW_AT_TI_END_COLUMN(0x01)

.dwendentry

.dwendtag $C$DW 3

;*******************************************************

;*键入信息*

;*******************************************************

$C$DW$T2美元 .dwtag DW_Tag_unspecified _type

.dwattr $C$DW $T2美元,DW_AT_NAME ("void")

$C$DW$T4美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T4美元,DW_at_encoding (DW_at_boolean)

.dwattr $C$DW $T4美元,DW_AT_NAME ("Bool")

.dwattr $C$DW$T4美元,DW_AT_BYTE_SIZE (0x01)

$C$DW$T5美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T5美元,DW_AT_encoding (DW_at_signed_char)

.dwattr $C$DW $T5美元,DW_AT_NAME ("签名字符")

.dwattr $C$DW$T5美元,DW_AT_BYTE_SIZE (0x01)

$C$DW$T6美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T6美元,DW_AT_encoding (DW_at_unsigned_char)

.dwattr $C$DW$T6美元,DW_AT_NAME ("无符号字符")

.dwattr $C$DW$T6美元,DW_AT_Byte_Size (0x01)

$C$DW$T7美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T7美元,DW_AT_encoding (DW_at_signed_char)

.dwattr $C$DW $T7美元,DW_AT_NAME ("wchar_t")

.dwattr $C$DW$T7美元,DW_AT_Byte_Size (0x01)

$C$DW$T8美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T8美元,DW_AT_encoding (DW_AT_signed)

.dwattr $C$DW $T8美元,DW_AT_NAME ("短")

.dwattr $C$DW$T8美元,DW_AT_Byte_Size (0x01)

$C$DW$T9美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T9美元,DW_AT_encoding (DW_at_unsigned)

.dwattr $C$DW$T9美元,DW_AT_NAME ("未签名的短语")

.dwattr $C$DW$T9美元,DW_AT_Byte_Size (0x01)

$C$DW$T10美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T10美元,DW_AT_encoding (DW_AT_signed)

.dwattr $C$DW $T10美元,DW_AT_NAME ("int")

.dwattr $C$DW$T10美元,DW_AT_Byte_Size (0x01)

$C$DW14美元 .dwtag DW_tag_TI_FAR类型

.dwattr $C$DW14美元,DW_AT_TYPE(*$C$DW$T10美元)

$C$DW$T20美元 .dwtag DW_tag_const_type

.dwattr $C$DW$T20美元,DW_AT_TYPE(*$C$DW14美元)

$C$DW$T11美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T11美元,DW_AT_encoding (DW_at_unsigned)

.dwattr $C$DW$T11美元,DW_AT_NAME ("未签名int")

.dwattr $C$DW$T11美元,DW_AT_Byte_Size (0x01)

$C$DW$T12美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T12美元,DW_AT_encoding (DW_AT_signed)

.dwattr $C$DW $T12美元,DW_AT_NAME ("长")

.dwattr $C$DW$T12美元,DW_AT_BYTE_SIZE (0x02)

$C$DW$T13美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T13美元,DW_AT_encoding (DW_at_unsigned)

.dwattr $C$DW$T13美元,DW_AT_NAME ("无符号长")

.dwattr $C$DW$T13美元,DW_AT_BYTE_SIZE (0x02)

$C$DW$T14美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T14美元,DW_AT_encoding (DW_AT_signed)

.dwattr $C$DW $T14美元,DW_AT_NAME ("长")

.dwattr $C$DW$T14美元,DW_at_Byte_size (0x04)

$C$DW$T15美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T15美元,DW_AT_encoding (DW_at_unsigned)

.dwattr $C$DW$T15美元,DW_AT_NAME ("无符号长整型")

.dwattr $C$DW$T15美元,DW_at_Byte_size (0x04)

$C$DW$T16美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T16美元,DW_AT_encoding (DW_at_float)

.dwattr $C$DW $T16美元,DW_AT_NAME ("浮动")

.dwattr $C$DW$T16美元,DW_AT_BYTE_SIZE (0x02)

$C$DW15美元 .dwtag DW_tag_TI_FAR类型

.dwattr $C$DW15美元,DW_AT_TYPE(*$C$DW$T16美元)

$C$DW$T22美元 .dwtag DW_tag_const_type

.dwattr $C$DW$T22美元,DW_AT_TYPE(*$C$DW15美元)

$C$DW$T23美元 .dwtag DW_tag_pointer_type

.dwattr $C$DW$T23美元,DW_AT_TYPE(*$C$DW$T22美元)

.dwattr $C$DW$T23美元,DW_AT_address_class (0x20)

$C$DW$T17美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T17美元,DW_AT_encoding (DW_at_float)

.dwattr $C$DW $T17美元,DW_AT_NAME ("双")

.dwattr $C$DW$T17美元,DW_AT_BYTE_SIZE (0x02)

$C$DW$T18美元 .dwtag DW_TAG_BACK_TYPE

.dwattr $C$DW$T18美元,DW_AT_encoding (DW_at_float)

.dwattr $C$DW $T18美元,DW_AT_NAME ("长双精度")

.dwattr $C$DW$T18美元,DW_at_Byte_size (0x04)

.dwattr $C$DW$CU,DW_AT_language (DW_LANG_EN_C)

;*******************************************************

;* DWARF CIE条目*

;*******************************************************

$C$DW$CIE .dwcie 26.

.dwcfi CFA_REGISTER,20

.dwcfi CFA_offset,0

.dwcfi same值,28

.dwcfi same值,6.

.dwcfi same值,7

.dwcfi same值,8

.dwcfi same值,9.

.dwcfi same值,10

.dwcfi same值,11.

.dwcfi same值,59

.dwcfi same值,60

.dwcfi same值,63

.dwcfi same值,64

.dwcfi same值,67

.dwcfi same值,68

.dwcfi same值,71

.dwcfi same值,72

.dwendentry

;*******************************************************

;* dwarf寄存器地图*

;*******************************************************

$C$DW16美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW16美元,DW_AT_NAME ("AL")

.dwattr $C$DW16美元,DW_AT_location[DW_OP_reg0]

$C$DW17美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW17美元,DW_AT_NAME ("AH")

.dwattr $C$DW17美元,DW_AT_location[DW_OP_reg1]

$C$DW18美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW18美元,DW_AT_NAME ("PL")

.dwattr $C$DW18美元,DW_AT_location[DW_OP_reg2]

$C$DW19美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW19美元,DW_AT_NAME ("PH")

.dwattr $C$DW19美元,DW_AT_location[DW_OP_reg3]

$C$DW20美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW20美元,DW_AT_NAME ("SP")

.dwattr $C$DW20美元,DW_AT_location[DW_OP_reg20]

$C$DW21美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW21美元,DW_AT_NAME ("XT")

.dwattr $C$DW21美元,DW_AT_location[DW_OP_reg21]

$C$DW22美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW22美元,DW_AT_NAME ("T")

.dwattr $C$DW22美元,DW_AT_location[DW_OP_reg22]

$C$DW23美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW23美元,DW_AT_NAME ("st0")

.dwattr $C$DW23美元,DW_AT_location[DW_OP_reg23]

$C$DW24美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW24美元,DW_AT_NAME ("ST1")

.dwattr $C$DW24美元,DW_AT_location[DW_OP_reg24]

$C$DW25美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW25美元,DW_AT_NAME ("PC")

.dwattr $C$DW25美元,DW_at_location[DW_OP_reg25]

$C$DW26美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW26美元,DW_at_name ("rpc")

.dwattr $C$DW26美元,DW_AT_location[DW_OP_reg26]

$C$DW27美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW27美元,DW_AT_NAME ("FP")

.dwattr $C$DW27美元,DW_AT_location[DW_OP_reg28]

$C$DW28美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW28美元,DW_AT_NAME ("DP")

.dwattr $C$DW28美元,DW_AT_location[DW_OP_reg29]

$C$DW29美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW29美元,DW_AT_NAME ("SXM")

.dwattr $C$DW29美元,DW_AT_location[DW_OP_reg30]

$C$DW30美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW30美元,DW_AT_NAME ("PM")

.dwattr $C$DW30美元,DW_AT_location[DW_OP_reg31]

$C$DW31美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW31美元,DW_AT_NAME ("OVM")

.dwattr $C$DW31美元,DW_AT_location[DW_OP_regx 0x20]

$C$DW32美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW32美元,DW_AT_NAME ("PAGE0")

.dwattr $C$DW32美元,DW_at_location[DW_OP_regx 0x21]

$C$DW33美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW33美元,DW_AT_NAME ("AMODE")

.dwattr $C$DW33美元,DW_at_location[DW_OP_regx 0x22]

$C$DW34美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW34美元,DW_AT_NAME ("INTM")

.dwattr $C$DW34美元,DW_AT_location[DW_OP_regx 0x23]

$C$DW35美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW35美元,DW_AT_NAME ("IFR")

.dwattr $C$DW35美元,DW_AT_location[DW_OP_regx 0x24]

$C$DW36美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW36美元,DW_AT_NAME ("IER")

.dwattr $C$DW36美元,DW_AT_location[DW_OP_regx 0x25]

$C$DW37美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW37美元,DW_AT_NAME ("V")

.dwattr $C$DW37美元,DW_AT_location[DW_OP_regx 0x26]

$C$DW38美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW38美元,DW_AT_NAME ("PSEUDOH")

.dwattr $C$DW38美元,DW_at_location[DW_OP_regx 0x4c]

$C$DW39美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW39美元,DW_AT_NAME ("VOL")

.dwattr $C$DW39美元,DW_at_location[DW_OP_regx 0x4d]

$C$DW40美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW40美元,DW_AT_NAME ("AR0")

.dwattr $C$DW40美元,DW_AT_location[DW_OP_reg4]

$C$DW41美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW41美元,DW_AT_NAME ("XAR0")

.dwattr $C$DW41美元,DW_at_location[DW_OP_reg5]

$C$DW42美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW42美元,DW_AT_NAME ("AR1")

.dwattr $C$DW42美元,DW_AT_location[DW_OP_reg6]

$C$DW43美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW43美元,DW_AT_NAME ("XAR1")

.dwattr $C$DW43美元,DW_AT_location[DW_OP_reg7]

$C$DW44美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW44美元,DW_AT_NAME ("AR2")

.dwattr $C$DW44美元,DW_AT_location[DW_OP_reg8]

$C$DW45美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW45美元,DW_AT_NAME ("XAR2")

.dwattr $C$DW45美元,DW_AT_location[DW_OP_reg9]

$C$DW46美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW46美元,DW_AT_NAME ("AR3")

.dwattr $C$DW46美元,DW_AT_location[DW_OP_reg10]

$C$DW47美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW47美元,DW_AT_NAME ("XAR3")

.dwattr $C$DW47美元,DW_AT_location[DW_OP_reg11]

$C$DW48美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW48美元,DW_AT_NAME ("AR4")

.dwattr $C$DW48美元,DW_AT_location[DW_OP_reg12]

$C$DW49美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW49美元,DW_AT_NAME ("XAR4")

.dwattr $C$DW49美元,DW_AT_location[DW_OP_reg13]

$C$DW50美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW50美元,DW_AT_NAME ("AR5")

.dwattr $C$DW50美元,DW_AT_location[DW_OP_reg14]

$C$DW51美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW51美元,DW_AT_NAME ("XAR5")

.dwattr $C$DW51美元,DW_AT_location[DW_OP_reg15]

$C$DW52美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW52美元,DW_AT_NAME ("AR6")

.dwattr $C$DW52美元,DW_AT_location[DW_OP_reg16]

$C$DW53美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW53美元,DW_AT_NAME ("XAR6")

.dwattr $C$DW53美元,DW_AT_location[DW_OP_reg17]

$C$DW54美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW54美元,DW_AT_NAME ("AR7")

.dwattr $C$DW54美元,DW_AT_location[DW_OP_reg18]

$C$DW55美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 55,DW_AT_NAME ("XAR7")

.dwattr $C$DW55美元,DW_AT_location[DW_OP_reg19]

$C$DW56美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW56美元,DW_AT_NAME ("R0H")

.dwattr $C$DW56美元,DW_at_location[DW_OP_regx 0x2b]

$C$DW57美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 57,DW_AT_NAME ("R0HH")

.dwattr $C$DW57美元,DW_at_location[DW_OP_regx 0x2C]

$C$DW58美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 58,DW_AT_NAME ("R1H")

.dwattr $C$DW58美元,DW_at_location[DW_OP_regx 0x2F]

$C$DW59美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 59,DW_AT_NAME ("R1HHH")

.dwattr $C$DW59美元,DW_AT_location[DW_OP_regx 0x30]

$C$DW60美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW60美元,DW_AT_NAME ("R2H")

.dwattr $C$DW60美元,DW_AT_location[DW_OP_regx 0x33]

$C$DW61美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 61,DW_AT_NAME ("R2HHH")

.dwattr $C$DW61美元,DW_AT_location[DW_OP_regx 0x34]

$C$DW62美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW62美元,DW_AT_NAME ("R3H")

.dwattr $C$DW62美元,DW_AT_location[DW_OP_regx 0x37]

$C$DW63美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 63,DW_AT_NAME ("R3HHH")

.dwattr $C$DW63美元,DW_AT_location[DW_OP_regx 0x38]

$C$DW64美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW64美元,DW_AT_NAME ("R4H")

.dwattr $C$DW64美元,DW_AT_location[DW_OP_regx 0x3b]

$C$DW65美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 65,DW_AT_NAME ("R4HHH")

.dwattr $C$DW65美元,DW_AT_location[DW_OP_regx 0x3c]

$C$DW66美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 66,DW_AT_NAME ("R5H")

.dwattr $C$DW66美元,DW_at_location[DW_OP_regx 0x3f]

$C$DW67美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 67,DW_AT_NAME ("R5HHH")

.dwattr $C$DW67美元,DW_AT_location[DW_OP_regx 0x40]

$C$DW68美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW68美元,DW_AT_NAME ("R6H")

.dwattr $C$DW68美元,DW_AT_location[DW_OP_regx 0x43]

$C$DW69美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW69美元,DW_AT_NAME ("R6HHH")

.dwattr $C$DW69美元,DW_AT_location[DW_OP_regx 0x44]

$C$DW70美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW70美元,DW_AT_NAME ("R7H")

.dwattr $C$DW70美元,DW_AT_location[DW_OP_regx 0x47]

$C$DW71美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 71,DW_AT_NAME ("R7HHH")

.dwattr $C$DW71美元,DW_AT_location[DW_OP_regx 0x48]

$C$DW72美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW72美元,DW_AT_NAME ("RBL")

.dwattr $C$DW72美元,DW_AT_location[DW_OP_regx 0x49]

$C$DW73美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 73,DW_AT_NAME ("RB")

.dwattr $C$DW73美元,DW_at_location[DW_OP_regx 0x4a]

$C$DW74美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW74美元,DW_AT_NAME ("STFL")

.dwattr $C$DW74美元,DW_AT_location[DW_OP_regx 0x27]

$C$DW75美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW 75,DW_AT_NAME ("STF")

.dwattr $C$DW75美元,DW_AT_location[DW_OP_regx 0x28]

$C$DW76美元 .dwtag DW_tag_TI_assign_register

.dwattr $C$DW76美元,DW_AT_NAME ("FPUHAZ")

.dwattr $C$DW76美元,DW_AT_location[DW_OP_reg27]

.dwendtag:$C$DW$CU

我的问题是,注释指出堆栈框架 是4个字,浮点寄存器被推入并弹出堆栈,但函数中没有任何地方会发出预期的'.dwcfi CFA_offset,-2' dwarf标记。 为什么会出现这种情况? 我无法使用dwarf信息来解压调用栈,因为这些dwarf标记丢失。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚在另一个编译器生成的汇编文件中找到了以下内容,同时跟踪了一个错误。

    .dwcfi CFA_offset,-10
    MOV32. R5H,*--SP ;[CPU_FPU]
    MOV32. R4H,*--SP ;[CPU_FPU]
    MOVL XAR2,*--SP ;[CPU_ALU]
    .dwcfi CFA_offset,-4
    .dwcfi restore_reg,9.
    MOVL XAR1,*--SP ;[CPU_ALU]
    .dwcfi CFA_offset,-2
    .dwcfi restore_reg,7.


    编译器似乎没有为FPU寄存器生成正确的调用帧信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣;这看起来像一个虫子。 我已提交CodeGen-3923以跟踪此问题。