[Scummvm-cvs-logs] SF.net SVN: scummvm:[54060] scummvm/trunk

bluddy at users.sourceforge.net bluddy at users.sourceforge.net
Thu Nov 4 07:28:35 CET 2010


Revision: 54060
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54060&view=rev
Author:   bluddy
Date:     2010-11-04 06:28:34 +0000 (Thu, 04 Nov 2010)

Log Message:
-----------
PSP: cleaning up some stuff from plugin merge

Modified Paths:
--------------
    scummvm/trunk/backends/platform/psp/Makefile
    scummvm/trunk/backends/plugins/elf/elf32.h
    scummvm/trunk/configure

Added Paths:
-----------
    scummvm/trunk/backends/plugins/psp/main_prog.ld

Removed Paths:
-------------
    scummvm/trunk/backends/platform/psp/elf32.h
    scummvm/trunk/backends/platform/psp/main_prog.ld

Modified: scummvm/trunk/backends/platform/psp/Makefile
===================================================================
--- scummvm/trunk/backends/platform/psp/Makefile	2010-11-04 06:22:24 UTC (rev 54059)
+++ scummvm/trunk/backends/platform/psp/Makefile	2010-11-04 06:28:34 UTC (rev 54060)
@@ -170,7 +170,7 @@
 PSP_EBOOT_SND0 = NULL
 PSP_EBOOT_PSAR = NULL
 
-LDFLAGS += -Wl,-Tmain_prog.ld
+LDFLAGS += -Wl,-T../../plugins/psp/main_prog.ld
 
 all: $(PSP_EBOOT)
 

Deleted: scummvm/trunk/backends/platform/psp/elf32.h
===================================================================
--- scummvm/trunk/backends/platform/psp/elf32.h	2010-11-04 06:22:24 UTC (rev 54059)
+++ scummvm/trunk/backends/platform/psp/elf32.h	2010-11-04 06:28:34 UTC (rev 54060)
@@ -1,209 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#ifndef BACKENDS_ELF_H
-#define BACKENDS_ELF_H
-
-/* ELF stuff */
-
-typedef unsigned short Elf32_Half, Elf32_Section;
-typedef unsigned int Elf32_Word, Elf32_Addr, Elf32_Off;
-typedef signed int  Elf32_Sword;
-typedef Elf32_Half Elf32_Versym;
-
-#define EI_NIDENT (16)
-#define SELFMAG         6
-
-/* ELF File format structures. Look up ELF structure for more details */
-
-// ELF header (contains info about the file)
-typedef struct {
-	unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */
-	Elf32_Half    e_type;                 /* Object file type */
-	Elf32_Half    e_machine;              /* Architecture */
-	Elf32_Word    e_version;              /* Object file version */
-	Elf32_Addr    e_entry;                /* Entry point virtual address */
-	Elf32_Off     e_phoff;                /* Program header table file offset */
-	Elf32_Off     e_shoff;                /* Section header table file offset */
-	Elf32_Word    e_flags;                /* Processor-specific flags */
-	Elf32_Half    e_ehsize;               /* ELF header size in bytes */
-	Elf32_Half    e_phentsize;            /* Program header table entry size */
-	Elf32_Half    e_phnum;                /* Program header table entry count */
-	Elf32_Half    e_shentsize;            /* Section header table entry size */
-	Elf32_Half    e_shnum;                /* Section header table entry count */
-	Elf32_Half    e_shstrndx;             /* Section header string table index */
-} Elf32_Ehdr;
-
-// Should be in e_ident
-#define ELFMAG          "\177ELF\1\1"	/* ELF Magic number */
-
-// e_type values
-#define ET_NONE		0	/* no file type */
-#define ET_REL		1	/* relocatable */
-#define ET_EXEC		2	/* executable */
-#define ET_DYN		3	/* shared object */
-#define ET_CORE		4	/* core file */
-
-// e_machine values
-#define EM_MIPS		8
-
-
-// Program header (contains info about segment)
-typedef struct {
-	Elf32_Word    p_type;                 /* Segment type */
-	Elf32_Off     p_offset;               /* Segment file offset */
-	Elf32_Addr    p_vaddr;                /* Segment virtual address */
-	Elf32_Addr    p_paddr;                /* Segment physical address */
-	Elf32_Word    p_filesz;               /* Segment size in file */
-	Elf32_Word    p_memsz;                /* Segment size in memory */
-	Elf32_Word    p_flags;                /* Segment flags */
-	Elf32_Word    p_align;                /* Segment alignment */
-} Elf32_Phdr;
-
-// p_type values
-#define PT_NULL 		0	/* ignored */
-#define PT_LOAD			1	/* loadable segment */
-#define PT_DYNAMIC		2	/* dynamic linking info */
-#define PT_INTERP		3	/* info about interpreter */
-#define PT_NOTE			4	/* note segment */
-#define PT_SHLIB		5	/* reserved */
-#define PT_PHDR			6	/* Program header table */
-#define PT_MIPS_REGINFO 0x70000000	/* register usage info */
-
-// p_flags value
-#define PF_X	1	/* execute */
-#define PF_W	2	/* write */
-#define PF_R	4	/* read */
-
-// Section header (contains info about section)
-typedef struct {
-	Elf32_Word    sh_name;                /* Section name (string tbl index) */
-	Elf32_Word    sh_type;                /* Section type */
-	Elf32_Word    sh_flags;               /* Section flags */
-	Elf32_Addr    sh_addr;                /* Section virtual addr at execution */
-	Elf32_Off     sh_offset;              /* Section file offset */
-	Elf32_Word    sh_size;                /* Section size in bytes */
-	Elf32_Word    sh_link;                /* Link to another section */
-	Elf32_Word    sh_info;                /* Additional section information */
-	Elf32_Word    sh_addralign;           /* Section alignment */
-	Elf32_Word    sh_entsize;             /* Entry size if section holds table */
-} Elf32_Shdr;
-
-// sh_type values
-#define SHT_NULL			0	/* Inactive section */
-#define SHT_PROGBITS		1	/* Proprietary */
-#define SHT_SYMTAB			2	/* Symbol table */
-#define SHT_STRTAB			3	/* String table */
-#define SHT_RELA			4	/* Relocation entries with addend */
-#define SHT_HASH			5	/* Symbol hash table */
-#define SHT_DYNAMIC			6	/* Info for dynamic linking */
-#define SHT_NOTE			7	/* Note section */
-#define SHT_NOBITS			8	/* Occupies no space */
-#define SHT_REL				9	/* Relocation entries without addend */
-#define SHT_SHLIB			10	/* Reserved */
-#define SHT_DYNSYM			11	/* Minimal set of dynamic linking symbols */
-#define SHT_MIPS_LIBLSIT	0x70000000	/* Info about dynamic shared object libs */
-#define SHT_MIPS_CONFLICT	0x70000002	/* Conflicts btw executables and shared objects */
-#define SHT_MIPS_GPTAB		0x70000003	/* Global pointer table */
-
-// sh_flags values
-#define SHF_WRITE		0	/* writable section */
-#define SHF_ALLOC		2	/* section occupies memory */
-#define SHF_EXECINSTR	4	/* machine instructions */
-#define SHF_MIPS_GPREL	0x10000000	/* Must be made part of global data area */
-
-
-// Symbol entry (contain info about a symbol)
-typedef struct {
-	Elf32_Word    st_name;                /* Symbol name (string tbl index) */
-	Elf32_Addr    st_value;               /* Symbol value */
-	Elf32_Word    st_size;                /* Symbol size */
-	unsigned char st_info;                /* Symbol type and binding */
-	unsigned char st_other;               /* Symbol visibility */
-	Elf32_Section st_shndx;               /* Section index */
-} Elf32_Sym;
-
-// Extract from the st_info
-#define SYM_TYPE(x)		((x)&0xF)
-#define SYM_BIND(x)		((x)>>4)
-
-
-// Symbol binding values from st_info
-#define STB_LOCAL 	0	/* Symbol not visible outside object */
-#define STB_GLOBAL 	1	/* Symbol visible to all object files */
-#define STB_WEAK	2	/* Similar to STB_GLOBAL */
-
-// Symbol type values from st_info
-#define STT_NOTYPE	0	/* Not specified */
-#define STT_OBJECT	1	/* Data object e.g. variable */
-#define STT_FUNC	2	/* Function */
-#define STT_SECTION	3	/* Section */
-#define STT_FILE	4	/* Source file associated with object file */
-
-// Special section header index values from st_shndex
-#define SHN_UNDEF  		0
-#define SHN_LOPROC 		0xFF00	/* Extended values */
-#define SHN_ABS	   		0xFFF1	/* Absolute value: don't relocate */
-#define SHN_COMMON 		0xFFF2	/* Common block. Not allocated yet */
-#define SHN_HIPROC 		0xFF1F
-#define SHN_HIRESERVE 	0xFFFF
-
-// Relocation entry (info about how to relocate)
-typedef struct {
-	Elf32_Addr    r_offset;               /* Address */
-	Elf32_Word    r_info;                 /* Relocation type and symbol index */
-} Elf32_Rel;
-
-// Access macros for the relocation info
-#define REL_TYPE(x)		((x)&0xFF)			/* Extract relocation type */
-#define REL_INDEX(x)	((x)>>8)			/* Extract relocation index into symbol table */
-
-// MIPS relocation types
-#define R_MIPS_NONE		0
-#define R_MIPS_16		1
-#define R_MIPS_32		2
-#define R_MIPS_REL32	3
-#define R_MIPS_26		4
-#define R_MIPS_HI16		5
-#define R_MIPS_LO16		6
-#define R_MIPS_GPREL16	7
-#define R_MIPS_LITERAL	8
-#define R_MIPS_GOT16	9
-#define R_MIPS_PC16		10
-#define R_MIPS_CALL16	11
-#define R_MIPS_GPREL32	12
-#define R_MIPS_GOTHI16	13
-#define R_MIPS_GOTLO16	14
-#define R_MIPS_CALLHI16	15
-#define R_MIPS_CALLLO16	16
-
-// Mock function to get value of global pointer
-#define getGP()	({	\
-	unsigned int __valgp;	\
-	__asm__ ("add %0, $gp, $0" : "=r"(__valgp) : ); \
-	__valgp; \
-})
-
-#endif /* BACKENDS_ELF_H */

Deleted: scummvm/trunk/backends/platform/psp/main_prog.ld
===================================================================
--- scummvm/trunk/backends/platform/psp/main_prog.ld	2010-11-04 06:22:24 UTC (rev 54059)
+++ scummvm/trunk/backends/platform/psp/main_prog.ld	2010-11-04 06:28:34 UTC (rev 54060)
@@ -1,253 +0,0 @@
-OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
-	      "elf32-littlemips")
-OUTPUT_ARCH(mips:allegrex)
-ENTRY(_start)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  PROVIDE (__executable_start = 0x08900000); . = 0x08900000;
-  .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
-  .dynamic        : { *(.dynamic) }
-  .hash           : { *(.hash) }
-  .dynsym         : { *(.dynsym) }
-  .dynstr         : { *(.dynstr) }
-  .gnu.version    : { *(.gnu.version) }
-  .gnu.version_d  : { *(.gnu.version_d) }
-  .gnu.version_r  : { *(.gnu.version_r) }
-  .rel.init       : { *(.rel.init) }
-  .rela.init      : { *(.rela.init) }
-  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
-  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
-  .rel.fini       : { *(.rel.fini) }
-  .rela.fini      : { *(.rela.fini) }
-  /* PSP-specific relocations. */
-  .rel.sceStub.text   : { *(.rel.sceStub.text) *(SORT(.rel.sceStub.text.*)) }
-  .rel.lib.ent.top    : { *(.rel.lib.ent.top) }
-  .rel.lib.ent        : { *(.rel.lib.ent) }
-  .rel.lib.ent.btm    : { *(.rel.lib.ent.btm) }
-  .rel.lib.stub.top   : { *(.rel.lib.stub.top) }
-  .rel.lib.stub       : { *(.rel.lib.stub) }
-  .rel.lib.stub.btm   : { *(.rel.lib.stub.btm) }
-  .rel.rodata.sceModuleInfo   : { *(.rel.rodata.sceModuleInfo) }
-  .rel.rodata.sceResident     : { *(.rel.rodata.sceResident) }
-  .rel.rodata.sceNid          : { *(.rel.rodata.sceNid) }
-  .rel.rodata.sceVstub        : { *(.rel.rodata.sceVstub) *(SORT(.rel.rodata.sceVstub.*)) }
-  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
-  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro*) }
-  .rela.data.rel.ro   : { *(.rel.data.rel.ro*) }
-  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
-  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
-  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
-  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
-  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
-  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
-  .rel.ctors      : { *(.rel.ctors) }
-  .rela.ctors     : { *(.rela.ctors) }
-  .rel.dtors      : { *(.rel.dtors) }
-  .rela.dtors     : { *(.rela.dtors) }
-  .rel.got        : { *(.rel.got) }
-  .rela.got       : { *(.rela.got) }
-  .rel.sdata      : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
-  .rela.sdata     : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
-  .rel.sbss       : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
-  .rela.sbss      : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
-  .rel.sdata2     : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
-  .rela.sdata2    : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
-  .rel.sbss2      : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
-  .rela.sbss2     : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
-  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
-  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
-  .rel.plt        : { *(.rel.plt) }
-  .rela.plt       : { *(.rela.plt) }
-  .init           :
-  {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .text           :
-  {
-    _ftext = . ;
-    *(.text .stub .text.* .gnu.linkonce.t.*)
-    KEEP (*(.text.*personality*))
-    /* .gnu.warning sections are handled specially by elf32.em.  */
-    *(.gnu.warning)
-    *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
-  .fini           :
-  {
-    KEEP (*(.fini))
-  } =0
-  /* PSP library stub functions. */
-  .sceStub.text     : { *(.sceStub.text) *(SORT(.sceStub.text.*)) }
-  PROVIDE (__etext = .);
-  PROVIDE (_etext = .);
-  PROVIDE (etext = .);
-  /* PSP library entry table and library stub table. */
-  .lib.ent.top    : { *(.lib.ent.top) }
-  .lib.ent        : { *(.lib.ent) }
-  .lib.ent.btm    : { *(.lib.ent.btm) }
-  .lib.stub.top   : { *(.lib.stub.top) }
-  .lib.stub       : { *(.lib.stub) }
-  .lib.stub.btm   : { *(.lib.stub.btm) }
-  /* PSP read-only data for module info, NIDs, and Vstubs.  The
-     .rodata.sceModuleInfo section must appear before the .rodata section
-     otherwise it would get absorbed into .rodata and the PSP bootloader
-     would be unable to locate the module info structure. */
-  .rodata.sceModuleInfo    : { *(.rodata.sceModuleInfo) }
-  .rodata.sceResident      : { *(.rodata.sceResident) }
-  .rodata.sceNid           : { *(.rodata.sceNid) }
-  .rodata.sceVstub         : { *(.rodata.sceVstub) *(SORT(.rodata.sceVstub.*)) }
-  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
-  .rodata1        : { *(.rodata1) }
-  .sdata2         : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
-  .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
-  .eh_frame_hdr : { *(.eh_frame_hdr) }
-  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
-  .gcc_except_table   : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
-  . = ALIGN(256) + (. & (256 - 1));
-  /* Exception handling  */
-  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
-  .gcc_except_table   : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
-  /* Thread Local Storage sections  */
-  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
-  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
-  /* Ensure the __preinit_array_start label is properly aligned.  We
-     could instead move the label definition inside the section, but
-     the linker would then create the section even if it turns out to
-     be empty, which isn't pretty.  */
-  . = ALIGN(32 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { KEEP (*(.preinit_array)) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { KEEP (*(.init_array)) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { KEEP (*(.fini_array)) }
-  PROVIDE (__fini_array_end = .);
-  .ctors          :
-  {
-    /* gcc uses crtbegin.o to find the start of
-       the constructors, so we make sure it is
-       first.  Because this is a wildcard, it
-       doesn't matter if the user does not
-       actually link against crtbegin.o; the
-       linker won't look for a file to match a
-       wildcard.  The wildcard also means that it
-       doesn't matter which directory crtbegin.o
-       is in.  */
-    KEEP (*crtbegin*.o(.ctors))
-    /* We don't want to include the .ctor section from
-       from the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last */
-    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors))
-  }
-  .dtors          :
-  {
-    KEEP (*crtbegin*.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors))
-  }
-  .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
-  .data           :
-  {
-    _fdata = . ;
-    *(.data .data.* .gnu.linkonce.d.*)
-    KEEP (*(.gnu.linkonce.d.*personality*))
-    SORT(CONSTRUCTORS)
-  }
-  .data1          : { *(.data1) }
-  . = .;
-  _gp = ALIGN(16) + 0x7ff0;
-  .got            : { *(.got.plt) *(.got) }
-  /* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata          :
-  {
-    *(.sdata .sdata.* .gnu.linkonce.s.*)
-  }
-  .lit8           : { *(.lit8) }
-  .lit4           : { *(.lit4) }
-  _edata = .;
-  PROVIDE (edata = .);
-  __bss_start = .;
-  _fbss = .;
-  .sbss           :
-  {
-    PROVIDE (__sbss_start = .);
-    PROVIDE (___sbss_start = .);
-    *(.dynsbss)
-    *(.sbss .sbss.* .gnu.linkonce.sb.*)
-    *(.scommon)
-    PROVIDE (__sbss_end = .);
-    PROVIDE (___sbss_end = .);
-  }
-  /* make a gap to put the plugins' short data here */
-  __plugin_hole_start = .;
-  . = _gp + 0x7ff0;
-  __plugin_hole_end = .;
-  COMMON          :
-  {
-   *(COMMON)
-  }
-  . = ALIGN(32 / 8);
-  .bss            :
-  {
-   *(.dynbss)
-   *(.bss .bss.* .gnu.linkonce.b.*)
-   /* Align here to ensure that the .bss section occupies space up to
-      _end.  Align after .bss to ensure correct alignment even if the
-      .bss section disappears because there are no input sections.  */
-   . = ALIGN(32 / 8);
-  }
-  . = ALIGN(32 / 8);
-  _end = .;
-  PROVIDE (end = .);
-  /* Stabs debugging sections.  */
-  .stab          0 : { *(.stab) }
-  .stabstr       0 : { *(.stabstr) }
-  .stab.excl     0 : { *(.stab.excl) }
-  .stab.exclstr  0 : { *(.stab.exclstr) }
-  .stab.index    0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment       0 : { *(.comment) }
-  /* DWARF debug sections.
-     Symbols in the DWARF debugging sections are relative to the beginning
-     of the section so we begin them at 0.  */
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-  /DISCARD/ : { *(.comment) *(.pdr) }
-  /DISCARD/ : { *(.note.GNU-stack) }
-}

Modified: scummvm/trunk/backends/plugins/elf/elf32.h
===================================================================
--- scummvm/trunk/backends/plugins/elf/elf32.h	2010-11-04 06:22:24 UTC (rev 54059)
+++ scummvm/trunk/backends/plugins/elf/elf32.h	2010-11-04 06:28:34 UTC (rev 54060)
@@ -245,13 +245,6 @@
 #define R_PPC_REL24			10
 #define R_PPC_REL32			26
 
-// Mock function to get value of global pointer for MIPS
-#define getGP() { \
-	uint32 __valgp; \
-	__asm__ ("add %0, $gp, $0" : "=r"(__valgp) : ); \
-	__valgp; \
-}
-
 #endif // defined(DYNAMIC_MODULES) && defined(USE_ELF_LOADER)
 
 #endif /* BACKENDS_ELF_H */

Copied: scummvm/trunk/backends/plugins/psp/main_prog.ld (from rev 54058, scummvm/trunk/backends/platform/psp/main_prog.ld)
===================================================================
--- scummvm/trunk/backends/plugins/psp/main_prog.ld	                        (rev 0)
+++ scummvm/trunk/backends/plugins/psp/main_prog.ld	2010-11-04 06:28:34 UTC (rev 54060)
@@ -0,0 +1,253 @@
+OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
+	      "elf32-littlemips")
+OUTPUT_ARCH(mips:allegrex)
+ENTRY(_start)
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  PROVIDE (__executable_start = 0x08900000); . = 0x08900000;
+  .interp         : { *(.interp) }
+  .reginfo        : { *(.reginfo) }
+  .dynamic        : { *(.dynamic) }
+  .hash           : { *(.hash) }
+  .dynsym         : { *(.dynsym) }
+  .dynstr         : { *(.dynstr) }
+  .gnu.version    : { *(.gnu.version) }
+  .gnu.version_d  : { *(.gnu.version_d) }
+  .gnu.version_r  : { *(.gnu.version_r) }
+  .rel.init       : { *(.rel.init) }
+  .rela.init      : { *(.rela.init) }
+  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
+  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
+  .rel.fini       : { *(.rel.fini) }
+  .rela.fini      : { *(.rela.fini) }
+  /* PSP-specific relocations. */
+  .rel.sceStub.text   : { *(.rel.sceStub.text) *(SORT(.rel.sceStub.text.*)) }
+  .rel.lib.ent.top    : { *(.rel.lib.ent.top) }
+  .rel.lib.ent        : { *(.rel.lib.ent) }
+  .rel.lib.ent.btm    : { *(.rel.lib.ent.btm) }
+  .rel.lib.stub.top   : { *(.rel.lib.stub.top) }
+  .rel.lib.stub       : { *(.rel.lib.stub) }
+  .rel.lib.stub.btm   : { *(.rel.lib.stub.btm) }
+  .rel.rodata.sceModuleInfo   : { *(.rel.rodata.sceModuleInfo) }
+  .rel.rodata.sceResident     : { *(.rel.rodata.sceResident) }
+  .rel.rodata.sceNid          : { *(.rel.rodata.sceNid) }
+  .rel.rodata.sceVstub        : { *(.rel.rodata.sceVstub) *(SORT(.rel.rodata.sceVstub.*)) }
+  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
+  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro*) }
+  .rela.data.rel.ro   : { *(.rel.data.rel.ro*) }
+  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
+  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
+  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
+  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
+  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
+  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+  .rel.ctors      : { *(.rel.ctors) }
+  .rela.ctors     : { *(.rela.ctors) }
+  .rel.dtors      : { *(.rel.dtors) }
+  .rela.dtors     : { *(.rela.dtors) }
+  .rel.got        : { *(.rel.got) }
+  .rela.got       : { *(.rela.got) }
+  .rel.sdata      : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
+  .rela.sdata     : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
+  .rel.sbss       : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
+  .rela.sbss      : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
+  .rel.sdata2     : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
+  .rela.sdata2    : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
+  .rel.sbss2      : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
+  .rela.sbss2     : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
+  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
+  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
+  .rel.plt        : { *(.rel.plt) }
+  .rela.plt       : { *(.rela.plt) }
+  .init           :
+  {
+    KEEP (*(.init))
+  } =0
+  .plt            : { *(.plt) }
+  .text           :
+  {
+    _ftext = . ;
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    KEEP (*(.text.*personality*))
+    /* .gnu.warning sections are handled specially by elf32.em.  */
+    *(.gnu.warning)
+    *(.mips16.fn.*) *(.mips16.call.*)
+  } =0
+  .fini           :
+  {
+    KEEP (*(.fini))
+  } =0
+  /* PSP library stub functions. */
+  .sceStub.text     : { *(.sceStub.text) *(SORT(.sceStub.text.*)) }
+  PROVIDE (__etext = .);
+  PROVIDE (_etext = .);
+  PROVIDE (etext = .);
+  /* PSP library entry table and library stub table. */
+  .lib.ent.top    : { *(.lib.ent.top) }
+  .lib.ent        : { *(.lib.ent) }
+  .lib.ent.btm    : { *(.lib.ent.btm) }
+  .lib.stub.top   : { *(.lib.stub.top) }
+  .lib.stub       : { *(.lib.stub) }
+  .lib.stub.btm   : { *(.lib.stub.btm) }
+  /* PSP read-only data for module info, NIDs, and Vstubs.  The
+     .rodata.sceModuleInfo section must appear before the .rodata section
+     otherwise it would get absorbed into .rodata and the PSP bootloader
+     would be unable to locate the module info structure. */
+  .rodata.sceModuleInfo    : { *(.rodata.sceModuleInfo) }
+  .rodata.sceResident      : { *(.rodata.sceResident) }
+  .rodata.sceNid           : { *(.rodata.sceNid) }
+  .rodata.sceVstub         : { *(.rodata.sceVstub) *(SORT(.rodata.sceVstub.*)) }
+  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
+  .rodata1        : { *(.rodata1) }
+  .sdata2         : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
+  .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
+  .eh_frame_hdr : { *(.eh_frame_hdr) }
+  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
+  /* Adjust the address for the data segment.  We want to adjust up to
+     the same address within the page on the next page up.  */
+  . = ALIGN(256) + (. & (256 - 1));
+  /* Exception handling  */
+  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
+  /* Thread Local Storage sections  */
+  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
+  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+  /* Ensure the __preinit_array_start label is properly aligned.  We
+     could instead move the label definition inside the section, but
+     the linker would then create the section even if it turns out to
+     be empty, which isn't pretty.  */
+  . = ALIGN(32 / 8);
+  PROVIDE (__preinit_array_start = .);
+  .preinit_array     : { KEEP (*(.preinit_array)) }
+  PROVIDE (__preinit_array_end = .);
+  PROVIDE (__init_array_start = .);
+  .init_array     : { KEEP (*(.init_array)) }
+  PROVIDE (__init_array_end = .);
+  PROVIDE (__fini_array_start = .);
+  .fini_array     : { KEEP (*(.fini_array)) }
+  PROVIDE (__fini_array_end = .);
+  .ctors          :
+  {
+    /* gcc uses crtbegin.o to find the start of
+       the constructors, so we make sure it is
+       first.  Because this is a wildcard, it
+       doesn't matter if the user does not
+       actually link against crtbegin.o; the
+       linker won't look for a file to match a
+       wildcard.  The wildcard also means that it
+       doesn't matter which directory crtbegin.o
+       is in.  */
+    KEEP (*crtbegin*.o(.ctors))
+    /* We don't want to include the .ctor section from
+       from the crtend.o file until after the sorted ctors.
+       The .ctor section from the crtend file contains the
+       end of ctors marker and it must be last */
+    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+    KEEP (*(SORT(.ctors.*)))
+    KEEP (*(.ctors))
+  }
+  .dtors          :
+  {
+    KEEP (*crtbegin*.o(.dtors))
+    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+    KEEP (*(SORT(.dtors.*)))
+    KEEP (*(.dtors))
+  }
+  .jcr            : { KEEP (*(.jcr)) }
+  .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
+  .data           :
+  {
+    _fdata = . ;
+    *(.data .data.* .gnu.linkonce.d.*)
+    KEEP (*(.gnu.linkonce.d.*personality*))
+    SORT(CONSTRUCTORS)
+  }
+  .data1          : { *(.data1) }
+  . = .;
+  _gp = ALIGN(16) + 0x7ff0;
+  .got            : { *(.got.plt) *(.got) }
+  /* We want the small data sections together, so single-instruction offsets
+     can access them all, and initialized data all before uninitialized, so
+     we can shorten the on-disk segment size.  */
+  .sdata          :
+  {
+    *(.sdata .sdata.* .gnu.linkonce.s.*)
+  }
+  .lit8           : { *(.lit8) }
+  .lit4           : { *(.lit4) }
+  _edata = .;
+  PROVIDE (edata = .);
+  __bss_start = .;
+  _fbss = .;
+  .sbss           :
+  {
+    PROVIDE (__sbss_start = .);
+    PROVIDE (___sbss_start = .);
+    *(.dynsbss)
+    *(.sbss .sbss.* .gnu.linkonce.sb.*)
+    *(.scommon)
+    PROVIDE (__sbss_end = .);
+    PROVIDE (___sbss_end = .);
+  }
+  /* make a gap to put the plugins' short data here */
+  __plugin_hole_start = .;
+  . = _gp + 0x7ff0;
+  __plugin_hole_end = .;
+  COMMON          :
+  {
+   *(COMMON)
+  }
+  . = ALIGN(32 / 8);
+  .bss            :
+  {
+   *(.dynbss)
+   *(.bss .bss.* .gnu.linkonce.b.*)
+   /* Align here to ensure that the .bss section occupies space up to
+      _end.  Align after .bss to ensure correct alignment even if the
+      .bss section disappears because there are no input sections.  */
+   . = ALIGN(32 / 8);
+  }
+  . = ALIGN(32 / 8);
+  _end = .;
+  PROVIDE (end = .);
+  /* Stabs debugging sections.  */
+  .stab          0 : { *(.stab) }
+  .stabstr       0 : { *(.stabstr) }
+  .stab.excl     0 : { *(.stab.excl) }
+  .stab.exclstr  0 : { *(.stab.exclstr) }
+  .stab.index    0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment       0 : { *(.comment) }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section so we begin them at 0.  */
+  /* DWARF 1 */
+  .debug          0 : { *(.debug) }
+  .line           0 : { *(.line) }
+  /* GNU DWARF 1 extensions */
+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
+  .debug_sfnames  0 : { *(.debug_sfnames) }
+  /* DWARF 1.1 and DWARF 2 */
+  .debug_aranges  0 : { *(.debug_aranges) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  /* DWARF 2 */
+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+  .debug_abbrev   0 : { *(.debug_abbrev) }
+  .debug_line     0 : { *(.debug_line) }
+  .debug_frame    0 : { *(.debug_frame) }
+  .debug_str      0 : { *(.debug_str) }
+  .debug_loc      0 : { *(.debug_loc) }
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+  /* SGI/MIPS DWARF 2 extensions */
+  .debug_weaknames 0 : { *(.debug_weaknames) }
+  .debug_funcnames 0 : { *(.debug_funcnames) }
+  .debug_typenames 0 : { *(.debug_typenames) }
+  .debug_varnames  0 : { *(.debug_varnames) }
+  /DISCARD/ : { *(.comment) *(.pdr) }
+  /DISCARD/ : { *(.note.GNU-stack) }
+}

Modified: scummvm/trunk/configure
===================================================================
--- scummvm/trunk/configure	2010-11-04 06:22:24 UTC (rev 54059)
+++ scummvm/trunk/configure	2010-11-04 06:28:34 UTC (rev 54060)
@@ -2226,7 +2226,7 @@
 		_elf_loader=yes
 		DEFINES="$DEFINES -DMIPS_TARGET"
 _mak_plugins='
-LDFLAGS				+= -Wl,-T$(srcdir)/backends/platform/psp/main_prog.ld
+LDFLAGS				+= -Wl,-T$(srcdir)/backends/plugins/psp/main_prog.ld
 PLUGIN_LDFLAGS		+= -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lstdc++ -lc
 '
 		;;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list