LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: =?big5?B?rn2w6qWt?=<kuoping@s...>
    Date: Wed May 18 08:59:57 CEST 2005
    Subject: [openrisc] gcc 3.4.2 problem
    Top
    Dear All,

    I had a problem about the GCC 3.4.2 for the OpenRISC. For the following C program, why does the GCC generate the 'var1' in the '.data' section and 'var2' in the '.bss' section. I test the C program on the Linux, both of two variables are put in the '.data' section. Does it a bug on the GCC 3.4.2 of OpenRISC?

    <<compiler version>>: gcc 3.4.2
    <<compiling option>>: or32-elf-gcc -O3 -o test test.c -Ttext=0x300 -nostdlib

    ===== test.c ======================================================
    int test(int k) {
    static int var1 = 3;
    static int var2 = 0;

    return k+var1+var2;
    }

    ===== test.s ======================================================
    .file "test.c"
    .section .data
    .align 4
    .type var1.0, @object
    .size var1.0, 4
    var1.0:
    .long 3
    .local var2.1
    .comm var2.1,4,4
    .section .text
    .align 4
    .proc _test
    .global _test
    .type _test, @function
    _test:

    # gpr_save_area 0 vars 0 current_function_outgoing_args_size 0
    l.addi r1,r1,-4
    l.sw 0(r1),r2
    l.addi r2,r1,4
    l.movhi r6,hi(var1.0) # move immediate (high)
    l.ori r6,r6,lo(var1.0) # move immediate (low)
    l.movhi r5,hi(var2.1) # move immediate (high)
    l.ori r5,r5,lo(var2.1) # move immediate (low)
    l.lwz r11,0(r6) # SI load
    l.lwz r4,0(r5) # SI load
    l.add r3,r3,r11
    l.add r11,r3,r4
    l.lwz r2,0(r1)
    l.jr r9
    l.addi r1,r1,4
    .size _test, .-_test
    .ident "GCC: (GNU) 3.4.2"

    ===== symbol table ======================================================
    ELF Header:
    Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
    Class: ELF32
    Data: 2's complement, big endian
    Version: 1 (current)
    OS/ABI: UNIX - System V
    ABI Version: 0
    Type: EXEC (Executable file)
    Machine: OpenRISC
    Version: 0x1
    Entry point address: 0x300
    Start of program headers: 52 (bytes into file)
    Start of section headers: 912 (bytes into file)
    Flags: 0x0
    Size of this header: 52 (bytes)
    Size of program headers: 32 (bytes)
    Number of program headers: 2
    Size of section headers: 40 (bytes)
    Number of section headers: 10
    Section header string table index: 7

    Section Headers:
    [Nr] Name Type Addr Off Size ES Flg Lk Inf Al
    [ 0] NULL 00000000 000000 000000 00 0 0 0
    [ 1] .text PROGBITS 00000300 000300 000038 00 AX 0 0 4
    [ 2] .rel.text REL 00000000 000624 000000 08 8 1 4
    [ 3] .data PROGBITS 00002338 000338 000004 00 WA 0 0 4
    [ 4] .sbss PROGBITS 0000233c 00033c 000000 00 W 0 0 1
    [ 5] .bss NOBITS 0000233c 00033c 000004 00 WA 0 0 4
    [ 6] .comment PROGBITS 00000000 00033c 000012 00 0 0 1
    [ 7] .shstrtab STRTAB 00000000 00034e 00003f 00 0 0 1
    [ 8] .symtab SYMTAB 00000000 000520 0000d0 10 9 9 4
    [ 9] .strtab STRTAB 00000000 0005f0 000034 00 0 0 1
    Key to Flags:
    W (write), A (alloc), X (execute), M (merge), S (strings)
    I (info), L (link order), G (group), x (unknown)
    O (extra OS processing required) o (OS specific), p (processor specific)

    Program Headers:
    Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
    LOAD 0x000000 0x00000000 0x00000000 0x00338 0x00338 R E 0x2000
    LOAD 0x000338 0x00002338 0x00002338 0x00004 0x00008 RW 0x2000

    Section to Segment mapping:
    Segment Sections...
    00 .text
    01 .data .bss

    There is no dynamic segment in this file.
    There are no relocations in this file. There are no unwind sections in this file. Symbol table '.symtab' contains 13 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FILE LOCAL DEFAULT ABS test.c 2: 00000300 0 SECTION LOCAL DEFAULT 1 3: 00002338 0 SECTION LOCAL DEFAULT 3 4: 0000233c 0 SECTION LOCAL DEFAULT 5 5: 00002338 4 OBJECT LOCAL DEFAULT 3 var1.0 6: 0000233c 4 OBJECT LOCAL DEFAULT 5 var2.1 7: 00000000 0 SECTION LOCAL DEFAULT 6 8: 0000233c 0 SECTION LOCAL DEFAULT 4 9: 00000300 56 FUNC GLOBAL DEFAULT 1 _test 10: 0000233c 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 11: 0000233c 0 NOTYPE GLOBAL DEFAULT ABS _edata 12: 00002340 0 NOTYPE GLOBAL DEFAULT ABS _end No version information found in this file. -------------- next part -------------- An HTML attachment was scrubbed... URL: openrisc/attachments/20050518/ac2adc2dattachment.htm

    Follow upAuthor
    [openrisc] gcc 3.4.2 problemRobert Cragie

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.