Revision tags: llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
#
8a80aa76 |
| 04-Nov-2013 |
Zoran Jovanovic <zoran.jovanovic@imgtec.com> |
Support for microMIPS branch instructions.
llvm-svn: 193992
|
#
507e084a |
| 29-Oct-2013 |
Zoran Jovanovic <zoran.jovanovic@imgtec.com> |
Support for microMIPS jump instructions
llvm-svn: 193623
|
#
e7ae8af8 |
| 23-Oct-2013 |
Zoran Jovanovic <zoran.jovanovic@imgtec.com> |
Support for microMIPS relocations 1.
llvm-svn: 193247
|
Revision tags: llvmorg-3.3.1-rc1, llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
#
1bd90ff6 |
| 30-Jan-2013 |
Jack Carter <jcarter@mips.com> |
This patch reworks how llvm targets set and update ELF header e_flags.
Currently gathering information such as symbol, section and data is done by collecting it in an MCAssembler object. From MCA
This patch reworks how llvm targets set and update ELF header e_flags.
Currently gathering information such as symbol, section and data is done by collecting it in an MCAssembler object. From MCAssembler and MCAsmLayout objects ELFObjectWriter::WriteObject() forms and streams out the ELF object file.
This patch just adds a few members to the MCAssember class to store and access the e_flag settings. It allows for runtime additions to the e_flag by assembler directives. The standalone assembler can get to MCAssembler from getParser().getStreamer().getAssembler().
This patch is the generic infrastructure and will be followed by patches for ARM and Mips for their target specific use.
Contributer: Jack Carter llvm-svn: 173882
show more ...
|
#
f238510c |
| 15-Jan-2013 |
Jack Carter <jcarter@mips.com> |
This patch fixes a Mips specific bug where we need to generate a N64 compound relocation R_MIPS_GPREL_32/R_MIPS_64/R_MIPS_NONE.
The bug was exposed by the SingleSourcetest case DuffsDevice.c.
Con
This patch fixes a Mips specific bug where we need to generate a N64 compound relocation R_MIPS_GPREL_32/R_MIPS_64/R_MIPS_NONE.
The bug was exposed by the SingleSourcetest case DuffsDevice.c.
Contributer: Jack Carter llvm-svn: 172496
show more ...
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3, llvmorg-3.2.0-rc2 |
|
#
b05cb67b |
| 21-Nov-2012 |
Jack Carter <jcarter@mips.com> |
Mips direct object xgot support
This patch provides support for the MIPS relocations:
*) R_MIPS_GOT_HI16 *) R_MIPS_GOT_LO16 *) R_MIPS_CALL_HI16 *) R_MIPS_CALL_LO16
These are us
Mips direct object xgot support
This patch provides support for the MIPS relocations:
*) R_MIPS_GOT_HI16 *) R_MIPS_GOT_LO16 *) R_MIPS_CALL_HI16 *) R_MIPS_CALL_LO16
These are used for large GOT instruction sequences.
Contributer: Jack Carter llvm-svn: 168471
show more ...
|
Revision tags: llvmorg-3.2.0-rc1 |
|
#
77064c05 |
| 22-Aug-2012 |
Jack Carter <jcarter@mips.com> |
For mips64 switch statements in subroutines could generate within the codegen EK_GPRel64BlockAddress. This was not supported for direct object output and resulted in an assertion.
This change adds
For mips64 switch statements in subroutines could generate within the codegen EK_GPRel64BlockAddress. This was not supported for direct object output and resulted in an assertion.
This change adds support for EK_GPRel64BlockAddress for direct object.
One fallout from this is to turn on rela relocations for mips64 to match gas.
llvm-svn: 162334
show more ...
|
#
111174be |
| 17-Aug-2012 |
Akira Hatanaka <ahatanaka@mips.com> |
Correct MCJIT functionality for MIPS32 architecture.
No new tests are added. All tests in ExecutionEngine/MCJIT that have been failing pass after this patch is applied (when "make check" is done on
Correct MCJIT functionality for MIPS32 architecture.
No new tests are added. All tests in ExecutionEngine/MCJIT that have been failing pass after this patch is applied (when "make check" is done on a mips board).
Patch by Petar Jovanovic.
llvm-svn: 162135
show more ...
|
#
4c58381c |
| 07-Aug-2012 |
Jack Carter <jcarter@mips.com> |
Mips relocation R_MIPS_64 relocates a 64 bit double word.
I hit this in a very large program (spirit.cpp), but have not figured out how to make a small make check test for it.
llvm-svn: 161366
|
#
84491abb |
| 06-Aug-2012 |
Jack Carter <jcarter@mips.com> |
Mips relocations R_MIPS_HIGHER and R_MIPS_HIGHEST.
These 2 relocations gain access to the highest and the second highest 16 bits of a 64 bit object.
R_MIPS_HIGHER %higher(A+S) The %higher(x) funct
Mips relocations R_MIPS_HIGHER and R_MIPS_HIGHEST.
These 2 relocations gain access to the highest and the second highest 16 bits of a 64 bit object.
R_MIPS_HIGHER %higher(A+S) The %higher(x) function is [ (((long long) x + 0x80008000LL) >> 32) & 0xffff ].
R_MIPS_HIGHEST %highest(A+S) The %highest(x) function is [ (((long long) x + 0x800080008000LL) >> 48) & 0xffff ].
llvm-svn: 161348
show more ...
|
#
5ddcfda8 |
| 13-Jul-2012 |
Jack Carter <jcarter@mips.com> |
The Mips specific relocation R_MIPS_GOT_DISP is used in cases where global symbols are directly represented in the GOT and we use an offset into the global offset table.
This patch adds direct ob
The Mips specific relocation R_MIPS_GOT_DISP is used in cases where global symbols are directly represented in the GOT and we use an offset into the global offset table.
This patch adds direct object support for R_MIPS_GOT_DISP.
llvm-svn: 160183
show more ...
|
#
b9f9de93 |
| 27-Jun-2012 |
Jack Carter <jcarter@mips.com> |
This allows hello world to be compiled for Mips 64 direct object.
It takes advantage of r159299 which introduces relocation support for N64. elf-dump needed to be upgraded to support N64 relocation
This allows hello world to be compiled for Mips 64 direct object.
It takes advantage of r159299 which introduces relocation support for N64. elf-dump needed to be upgraded to support N64 relocations as well.
This passes make check.
Jack
llvm-svn: 159301
show more ...
|
#
8ad0c272 |
| 27-Jun-2012 |
Jack Carter <jcarter@mips.com> |
The ELF relocation record format is different for N64 which many Mips 64 ABIs use than for O64 which many if not all other target ABIs use.
Most architectures have the following 64 bit relocation
The ELF relocation record format is different for N64 which many Mips 64 ABIs use than for O64 which many if not all other target ABIs use.
Most architectures have the following 64 bit relocation record format:
typedef struct { Elf64_Addr r_offset; /* Address of reference */ Elf64_Xword r_info; /* Symbol index and type of relocation */ } Elf64_Rel;
typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela;
Whereas N64 has the following format:
typedef struct { Elf64_Addr r_offset;/* Address of reference */ Elf64_Word r_sym; /* Symbol index */ Elf64_Byte r_ssym; /* Special symbol */ Elf64_Byte r_type3; /* Relocation type */ Elf64_Byte r_type2; /* Relocation type */ Elf64_Byte r_type; /* Relocation type */ } Elf64_Rel;
typedef struct { Elf64_Addr r_offset;/* Address of reference */ Elf64_Word r_sym; /* Symbol index */ Elf64_Byte r_ssym; /* Special symbol */ Elf64_Byte r_type3; /* Relocation type */ Elf64_Byte r_type2; /* Relocation type */ Elf64_Byte r_type; /* Relocation type */ Elf64_Sxword r_addend; } Elf64_Rela;
The structure is the same size, but the r_info data element is now 5 separate elements. Besides the content aspects, endian byte reordering will be different for the area with each element being endianized separately.
I treat this as generic and continue to pass r_type as an integer masking and unmasking the byte sized N64 values for N64 mode. I've implemented this and it causes no affect on other current targets.
This passes make check.
Jack
llvm-svn: 159299
show more ...
|
#
5fd22485 |
| 14-Jun-2012 |
Akira Hatanaka <ahatanaka@mips.com> |
Fix coding style violations. Remove white spaces and tabs.
llvm-svn: 158471
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1 |
|
#
b1f68f96 |
| 02-Apr-2012 |
Akira Hatanaka <ahatanaka@mips.com> |
Initial 64 bit direct object support.
This patch allows llvm to recognize that a 64 bit object file is being produced and that the subsequently generated ELF header has the correct information.
The
Initial 64 bit direct object support.
This patch allows llvm to recognize that a 64 bit object file is being produced and that the subsequently generated ELF header has the correct information.
The test case checks for both big and little endian flavors.
Patch by Jack Carter.
llvm-svn: 153889
show more ...
|
#
5ba593f5 |
| 28-Mar-2012 |
Akira Hatanaka <ahatanaka@mips.com> |
Sort relocation entries before they are written out to a file. MIPS ABI imposes a constraint that GOT16 referring to a local symbol or HI16 has to be followed immediately by a matching LO16 relocatio
Sort relocation entries before they are written out to a file. MIPS ABI imposes a constraint that GOT16 referring to a local symbol or HI16 has to be followed immediately by a matching LO16 relocation.
llvm-svn: 153553
show more ...
|
#
1ee768db |
| 01-Mar-2012 |
Akira Hatanaka <ahatanaka@mips.com> |
Pass endian information to constructors. Define separate functions to create objects for big endian and little endian targets.
Patch by Jack Carter.
llvm-svn: 151788
|
#
9f610119 |
| 17-Feb-2012 |
Jia Liu <proljc@gmail.com> |
remove Emacs-tag form .cpp files in Mips Backend, and fix some typo.
llvm-svn: 150805
|
#
dd6c1cd4 |
| 17-Feb-2012 |
Jia Liu <proljc@gmail.com> |
add Emacs tag and fix some comment error in file headers
llvm-svn: 150775
|
#
b47489d4 |
| 28-Jan-2012 |
James Molloy <james.molloy@arm.com> |
Ensure .AliasedSymbol() is called on all uses of getSymbol(). Affects ARM and MIPS ELF backends.
Fixes PR11877
llvm-svn: 149180
|
#
1dc45d8d |
| 22-Dec-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Move the Mips only bits of the ELF writer to lib/Target/Mips.
llvm-svn: 147133
|