We are having issues with  R_PPC_ADDR32 relocations being
generated against  offsets that are not 32-bit aligned.

This happens with something as simple as:

void
main(void)
{
}

gcc -g -gdwarf-2 -c test.c

generated a test.o that has the following relocations:

 dump -rv test.o

test.o:

    **** RELOCATION INFORMATION ****

.rela.debug_info:
Offset      Symndx                Type              Addend

0x6         5                     1                   0
0xc         7                     1                   0
0x10        2                     1                   28
0x14        2                     1                   0
0x55        2                     1                   0
0x59        2                     1                   28

.rela.debug_line:
Offset      Symndx                Type              Addend

0x27        2                     1                   0
0x2f        2                     1                   12
0x37        2                     1                   28

.rela.debug_frame:
Offset      Symndx                Type              Addend

0x14        8                     1                   0
0x18        2                     1                   0

.rela.debug_pubnames:
Offset      Symndx                Type              Addend

0x6         6                     1                   0

.rela.debug_aranges:
Offset      Symndx                Type              Addend

0x6         6                     1                   0
0x10        2                     1                   0

or
elfdump -r test.o | more

Relocation Section:  .rela.debug_info
    type                       offset     addend  section        symbol
  0x1                             0x6          0  .rela.debug_in .debug_abbre (s
ection)
  0x1                             0xc          0  .rela.debug_in .debug_line (se
ction)
  0x1                            0x10       0x1c  .rela.debug_in .text (section)
  0x1                            0x14          0  .rela.debug_in .text (section)
  0x1                            0x55          0  .rela.debug_in .text (section)
  0x1                            0x59       0x1c  .rela.debug_in .text (section)

Relocation Section:  .rela.debug_line
    type                       offset     addend  section        symbol
  0x1                            0x27          0  .rela.debug_li .text (section)
  0x1                            0x2f        0xc  .rela.debug_li .text (section)
  0x1                            0x37       0x1c  .rela.debug_li .text (section)

Relocation Section:  .rela.debug_frame
    type                       offset     addend  section        symbol
  0x1                            0x14          0  .rela.debug_fr .debug_frame (s
ection)
  0x1                            0x18          0  .rela.debug_fr .text (section)

Relocation Section:  .rela.debug_pubnames
    type                       offset     addend  section        symbol
  0x1                             0x6          0  .rela.debug_pu .debug_info (se
ction)

Relocation Section:  .rela.debug_aranges
    type                       offset     addend  section        symbol
  0x1                             0x6          0  .rela.debug_ar .debug_info (se
ction)
  0x1                            0x10          0  .rela.debug_ar .text (section)

You can see that there are relocations of type 1 (R_PPC_ADDR32) that
are against addresses that are 2 byte or even 1 byte aligned.
It seems to me that either the relocation addresses are wrong (which I
think is not the case) or that the relocation type is wrong and it
should be R_PPC_UADDR32 (type 24).

When our gas was built, it was configure with no special options
(just --prefix and --target).  Is there something we ought to be doing
to get gas to generate proper relocations?

Thanks in advance,
[EMAIL PROTECTED]
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to