This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

gas symbol debug problem




    Hi all,


I'm currently porting the whole GCC, binutils and gdb stuff for our
target
and I have a problem with the debug symbol in gas.

I'm using a 2.10.1 gas version with a bfd coff format.

The address of the symbol debug are badly offseted. gas seems to add
the address of the previous function to the current address.

This "addition" occurs after the "md_apply_fix" function.


I have searched where it occurs but I didn't find anything.
Does anybody know why it occurs or can suggest any hints to solve the
problem?.


Here is a dump "objdump -g" of a small C module.
The sentence beginning with a => show/explain the problem.


static void conv_int (long int a /* 0xfffffff0 */, long int x /*
0xffffffec */, long int y /* 0xffffffe8 */)

=> ADDRESS OF THE FIRST FUNCTION:

{ /* 0x33 */

  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 16
addr 0x33 */
  [...]
  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 24
addr 0x71 */
  { /* 0x87 */
    char *ptr /* 0xffffffd0 */;
    char buffer[20] /* 0xffffffd4 */;
    /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line
25 addr 0x99 */
    [..]
    /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line
32 addr 0x13c */
  } /* 0x16f */
} /* 0x186 */
void fct1 (char *format /* 0xfffffff0 */, long int p1 /* 0xffffffec */,
long int p2 /* 0xffffffe8 */, long int p3 /* 0xffffffe4 */, long int p4
/* 0xffffffe0
*/, long int p5 /* 0xffffffdc */, long int p6 /* 0xffffffd8 */, long int
p7 /* 0xffffffd4 */, long int p8 /* 0xffffffd0 */, long int p9 /*
0xffffffcc */, long int p10 /* 0x0 */, long int p11 /* 0x4 */, long int
p12 /* 0x8 */, long int p13 /* 0xc */, long int p14 /* 0x10 */)

=> ADDRESS OF THE SECOND FUNCTION:
=> THIS ADDRESS IS THE GOOD ONE
{ /* 0x186 */  
 
=>NOT THIS ONE:
  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 38
addr 0x1b9 */ 
=>THAT'S SHOULD NOT BE AT ADDRESS 0X1B9 BUT AT 0X186 (0X1B9 - 0X33)
THE ADDRESS OF THE PREVIOUS FUNCTION (0X33) IS ADDED TO EACH ADRESS
   
    [...]

  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 77
addr 0x2f3 */
  { /* 0x349 */
    va_list ap /* 0xffffff90 */;
    long int extendedFormatKey /* 0xffffff94 */;

    [...]

    long int val0 /* 0xffffffc8 */;
  } /* 0x446 */
} /* 0x2e1 */

int main (int argc /* 0xfffffff0 */, char **argv /* 0xffffffec */)

=> ADDRESS OF THE THIRD FUNCTION:
=> THIS ADDRESS IS THE GOOD ONE
{ /* 0x2e1 */

=> THIS IS IDENTICAL BUT WITH A 0X186 OFFSET (ADDRESS OF THE PREVIOUS
FUNCTION)

  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 83
addr 0x467 */
=> SHOULD BE 0X2E1 INSTEAD OF 0X467 (0x2E1 + 0x186)

  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 84
addr 0x484 */
  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 85
addr 0x48f */
  /* file /home/ogarbil/palmware/compilers/tests/misc/c/vararg.c line 87
addr 0x513 */
} /* 0xffffffff
*/                                                                                                                                            


Mayday !!!


Thanks for your help.
Olivier Garbil
ogarbil@palmware.fr


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]