asm cripples mixed source / assembly listing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello All,

a mixed source / assembly listing requested by "-Wa,-a" gets out of
sync as soon as I have asm statements in the C code (example below)

Questions:

Can I avoid/circumvent this effect?

If not: Is this a known bug (I was not able to find it in the bug
database but I might have used the wrong search terms)?

If not: Should I provide more / other information than in this posting
when submitting it?

TIA,

Oliver

Example:

int foo(int bar)
{
  bar /= 3;
  asm("tpf");
  asm("tpf");
  bar *= 5;
  return bar + 1;
}

compiled with "m68k-elf-gcc.exe test.c -g -mcpu=52259 -Wa,-a" using
gcc 4.4.1 (Windows) from CodeSourcery yields:

   1               	#NO_APP
   2               		.file	"test.c"
   3               		.section
.debug_abbrev,"",@progbits
   4               	.Ldebug_abbrev0:
   5               		.section
.debug_info,"",@progbits
   6               	.Ldebug_info0:
   7               		.section
.debug_line,"",@progbits
   8               	.Ldebug_line0:
   9 0000 0000 0036 		.text
   9      0002 0000 
   9      001D 0201 
   9      FB0E 0D00 
   9      0101 0101 
  10               	.Ltext0:
  11               		.align	2
  12               		.globl	foo
  13               		.type	foo, @function
  14               	foo:
  15               	.LFB0:
  16               		.file 1 "test.c"
   1:test.c        **** int foo(int bar)
   2:test.c        **** {
  17               		.loc 1 2 0
  18               		.cfi_startproc
  19 0000 4E56 0000 		link.w %fp,#0
  20               	.LCFI0:
  21               		.cfi_def_cfa 14, 8
  22               		.cfi_offset 14, -8
  23 0004 2F02      		move.l %d2,-(%sp)
   3:test.c        ****   bar /= 3;
  24               		.loc 1 3 0
  25 0006 202E 0008 		move.l 8(%fp),%d0
  26 000a 7403      		moveq #3,%d2
  27               		.cfi_offset 2, -12
  28 000c 4C42 0801 		rems.l %d2,%d1:%d0
  29 0010 4C42 0800 		divs.l %d2,%d0
  30 0014 2D40 0008 		move.l %d0,8(%fp)
   4:test.c        ****   asm("tpf");
  31               		.loc 1 4 0
  32               	#APP
   5:test.c        ****   asm("tpf");
   6:test.c        ****   bar *= 5;
  33 0018 51FC 51FC 	| 4 "test.c" 1
  34 001c 202E 0008 		tpf
  35 0020 2200      	| 0 "" 2
  36 0022 E589      		.loc 1 5 0
  37 0024 2041      	| 5 "test.c" 1
  38 0026 D1C0      		tpf
  39 0028 2D48 0008 	| 0 "" 2
   7:test.c        ****   return bar + 1;
  40               		.loc 1 6 0
  41 002c 202E 0008 	#NO_APP
  42 0030 5280      		move.l 8(%fp),%d0
   8:test.c        **** }
  43               		move.l %d0,%d1
  44 0032 241F      		lsl.l #2,%d1
  45 0034 4E5E      		move.l %d1,%a0
  46 0036 4E75      		add.l %d0,%a0
  47               		move.l %a0,8(%fp)
  48               		.loc 1 7 0
  49               		move.l 8(%fp),%d0
  50               		addq.l #1,%d0
  51               		.loc 1 8 0
  52               		move.l (%sp)+,%d2
  53               		unlk %fp
  54 0000 0000 0000 		rts



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux