linux-mips
[Top] [All Lists]

me vs gas mips64 relocation

To: binutils@sources.redhat.com, linux-mips@oss.sgi.com
Subject: me vs gas mips64 relocation
From: d p chang <weasel@meer.net>
Date: 01 Feb 2002 05:45:19 -0800
Reply-to: weasel@cs.stanford.edu
Sender: owner-linux-mips@oss.sgi.com
User-agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7
Hi there, I'm trying to figure out if i've just misconfigured
something here or if there is a real problem in gas. I did some
grovelling through the mailing list archives, but really am still
catching up.

Anyway, here at home i grabbed the current cvs binutils and configured
(i thought successfully since I only checked the assembly before the
final link and hadn't been looking at the reloc bits) it to cross
compile from macos x to mips64-linux. It appeared to be successful but
it wasn't until i had written the rest of my chipset startup logic
that I noticed a problem.

My test case looks like this:

    .text
    .comm   my_test_global, 8, 8

    LEAF(reloc_hi_test)

    ld      t0, my_test_global      ; my problem

    lui     t0, %hi(my_test_global) ; works
    addiu   t0, %lo(my_test_global)

    END(reloc_hi_test)

    .end

i compile this w/ (i only just added all the verbosity flags).

    mips64-linux-gcc  -I /Volumes/Homey/dpc/Devel/linux-2.4.17/include/asm/gcc 
-D__KERNEL__ -I/Volumes/Homey/dpc/Devel/linux-2.4.17/include -Wall 
-Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer 
-fno-strict-aliasing -fno-common -G 0 -mno-abicalls -fno-pic -Wa,--trap -pipe 
-mips4 -mmad -Wa,-march=r5231 -mlong64 -mgp64 -mfp64 -ffreestanding -mabi=n32 
reloc.S -c -o reloc.o -Wa,-acdhls -v -Wa,-v -Wa,-O0 

and I get this from objdump:

    reloc.o:     file format elf32-tradbigmips

    Disassembly of section .text:

    00000000 <reloc_hi_test>:
       0:   3c0c0000        lui     t0,0x0
       4:   258c0000        addiu   t0,t0,0
                            4: R_MIPS_LO16  my_test_global
       8:   3c0c0000        lui     t0,0x0
                            8: R_MIPS_HI16  my_test_global
       c:   258c0000        addiu   t0,t0,0
                            c: R_MIPS_LO16  my_test_global

Anyway, the missing R_MIPS_HI16 relocation at offset 0 is my
problem. I had expected the two to generate the same code. am i
mistaken, did i screw something up configuring, is this a bug, or
something else?

\p


<Prev in Thread] Current Thread [Next in Thread>