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

Intermixing source code with disassembly



Thanks, Chris.  I tried the following.  The line number gets inserted
(That is a positive step. :) ) but the disassembled code is still not
intermixed with the application source.

sparc-rtems4.8-objdump -D --line-numbers --source --demangle app.exe 

There is some differences between code disassembled for the RTEMS OS and
the application.  I extracted part of it out for illustration.

Disassembled code intermixed with RTEMS source
=====================================
0200ddec <bsp_start>:
bsp_start():
C:/Msys/1.0/home/PhilipTeng/rtems-4.8/rtems-4.8.0/c/src/lib/libbsp/sparc
/shared/bspstart.c:119
 *
 *  This routine does the bulk of the system initialization.
 */
void bsp_start( void )
{
 200ddec:	9d e3 bf 98 	save  %sp, -104, %sp
C:/Msys/1.0/home/PhilipTeng/rtems-4.8/rtems-4.8.0/c/src/lib/libbsp/sparc
/shared/bspstart.c:137
   *  This should be enough interrupt stack.
   */

  Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY;

  work_space_start =
 200ddf0:	03 00 80 01 	sethi  %hi(0x2000400), %g1
 200ddf4:	23 00 8b 41 	sethi  %hi(0x22d0400), %l1
 200ddf8:	da 00 63 c0 	ld  [ %g1 + 0x3c0 ], %o5
 200ddfc:	82 14 63 dc 	or  %l1, 0x3dc, %g1
 200de00:	c8 00 60 04 	ld  [ %g1 + 4 ], %g4
C:/Msys/1.0/home/PhilipTeng/rtems-4.8/rtems-4.8.0/c/src/lib/libbsp/sparc
/shared/bspstart.c:128
   * Set up our hooks
   * Make sure libc_init is done before drivers initialized so that
   * they can use atexit()
   */

  Cpu_table.pretasking_hook = bsp_pretasking_hook;    /* init libc, etc.
*/
 200de04:	03 00 80 37 	sethi  %hi(0x200dc00), %g1
 200de08:	82 10 62 64 	or  %g1, 0x264, %g1	! 200de64
<bsp_pretasking_hook>
 200de0c:	07 00 8b 41 	sethi  %hi(0x22d0400), %g3

Disassembled code intermixed with line number but not source
==============================================
c:\msys\1.0\home\PhilipTeng\app/app.c:188
 20013e4:	40 00 1b 78 	call  20081c4 <canMastInit>
 20013e8:	90 10 20 04 	mov  4, %o0
 20013ec:	80 a2 20 01 	cmp  %o0, 1
 20013f0:	22 80 00 8b 	be,a   200161c <Init+0x43c>
 20013f4:	11 00 80 8f 	sethi  %hi(0x2023c00), %o0
c:\msys\1.0\home\PhilipTeng\app/app.c:194
 20013f8:	11 00 80 8f 	sethi  %hi(0x2023c00), %o0
 20013fc:	40 00 6f 15 	call  201d050 <puts>
 2001400:	90 12 23 d0 	or  %o0, 0x3d0, %o0	! 2023fd0
<__DTOR_END__+0x300>
c:\msys\1.0\home\PhilipTeng\app/app.c:198
 2001404:	40 00 18 8f 	call  2007640
<ccsds_initialisePacketLayer>
 2001408:	90 10 20 01 	mov  1, %o0
 200140c:	80 a2 20 01 	cmp  %o0, 1
 2001410:	22 80 00 8b 	be,a   200163c <Init+0x45c>
 2001414:	11 00 80 8f 	sethi  %hi(0x2023c00), %o0


-----Original Message-----
From: Chris Johns [mailto:chrisj at rtems.org] 
Sent: Sunday, April 06, 2008 6:01 AM
To: Teng Chee Wan Philip
Cc: rtems-users at rtems.com
Subject: Re: Intermixing source code with disassembly

Teng Chee Wan Philip wrote:
> 
> I was trying to disassemble my executable and intermix source code
with 
> the disassembly, but objdump did not managed to find the source code.

> Does anyone have any suggestions why this could be so?  Are there any 
> limitations on objdump or specific way that objdump uses to search for

> the source code?
> 
> $ sparc-rtems4.8-objdump -d -S app.exe
> 

You might want to check the Debugging Hints page in the Wiki:

http://www.rtems.org/wiki/index.php/DebuggingHints#Symbolic_Debug_Inform
ation
http://www.rtems.org/wiki/index.php/DebuggingHints#GDB_Cannot_Find_My_So
urce_Files

Let us know if this does not help.

Regards
Chris