gas with PIC and mips3

H.Saito saito@densan.co.jp
Sun Jun 4 20:30:00 GMT 2000


To  : bug-gcc@gnu.org
From: saito@densan.co.jp (Hideo Saito)
Title: Help me

Hello. My name is H.Saito.
I have a question, if possible, please show me a answer.
My OS is 4.3BSD UNIX.

I want to use gcc with PIC code, mips3  and big endian.
I assembled ttt.s program, and disassembled.
Why did gas use "ld" instruction at 40001c, 400030 and 400040?
If "ld" instruction is correct,
"_GLOBAL_OFFSET_TABLE_" should be made long word(64bits) data array.

% cat ttt.s
        .abicalls
        .globl _start
_start:
        nop
test1:
        jal     xxx
test2:
        lw      $0,xxx
test3:
        sw      $0,yyy
xxx:
        nop
yyy:
        nop
% gas -o ttt.o ttt.s
ttt.s: Assembler messages:
ttt.s:6: Warning: No .cprestore pseudo-op used in PIC code
% gld -o ttt ttt.o
% objdump -D ttt

ttt:     file format elf32-bigmips

Disassembly of section .text:

0000000000400018 <_ftext>:
  400018:       00000000        nop

000000000040001c <test1>:
  40001c:       df998018        ld      $t9,-32744($gp)
  400020:       00000000        nop
  400024:       67390050        daddiu  $t9,$t9,80
  400028:       0320f809        jalr    $t9
  40002c:       00000000        nop

0000000000400030 <test2>:
  400030:       df818018        ld      $at,-32744($gp)
  400034:       00000000        nop
  400038:       64210050        daddiu  $at,$at,80
  40003c:       8c200000        lw      $zero,0($at)

0000000000400040 <test3>:
  400040:       df818018        ld      $at,-32744($gp)
  400044:       00000000        nop
  400048:       64210054        daddiu  $at,$at,84
  40004c:       ac200000        sw      $zero,0($at)

0000000000400050 <xxx>:
  400050:       00000000        nop

0000000000400054 <yyy>:
  400054:       00000000        nop
Disassembly of section .data:
Disassembly of section .got:

0000000000440060 <_GLOBAL_OFFSET_TABLE_>:
  440060:       00000000        nop
  440064:       80000000        lb      $zero,0($zero)
  440068:       00400000        0x400000
        ...
% gas --version
GNU assembler 2.9.1
Copyright 1997 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.
This assembler was configured for a target of `mips64-elf'.
% 

Thank you. Good bye.


More information about the Gcc-bugs mailing list