search for: mipsasmbackend

Displaying 12 results from an estimated 12 matches for "mipsasmbackend".

2011 Oct 10
2
[LLVMdev] Adding fixups and relocations late in code generation
....bitcastToAPInt().getHiBits(32).getLimitedValue()); } else if (MO.isExpr()) { const MCExpr *p_expr = MO.getExpr(); Fixups.push_back(MCFixup::Create(0, p_expr, MCFixupKind(Mips::fixup_Mips_Branch_PCRel))); } return 0; } ############################################ Later in MipsAsmBackend.cpp:ApplyFixup() I find the value is the offset of the target value from the beginning of the section and not the delta from the branch address. I also get a relocation request even though the label should be resolved. So, I must not be telling the compiler what to do when setting up the relocati...
2011 Oct 10
1
[LLVMdev] Adding fixups and relocations late in code generation
...he gentle user can be as perverse as they want with expressions, resulting with possibly multiple relocations and an immediate for a given instruction operand. Is expression layering described in the documentation anywhere? Cheers, Jack ________________________________________ > > Later in MipsAsmBackend.cpp:ApplyFixup() I find the value is the offset > of the target value from the beginning of the section and not the delta > from the branch address. > I'm not sure I follow. Wouldn't that still require a relocation from the start of the section? > I also get a relocation reque...
2011 Oct 10
0
[LLVMdev] Adding fixups and relocations late in code generation
...alue()); > } else if (MO.isExpr()) { > const MCExpr *p_expr = MO.getExpr(); > Fixups.push_back(MCFixup::Create(0, p_expr, > MCFixupKind(Mips::fixup_Mips_Branch_PCRel))); > } > return 0; > } > > ############################################ > > Later in MipsAsmBackend.cpp:ApplyFixup() I find the value is the offset > of the target value from the beginning of the section and not the delta > from the branch address. > I'm not sure I follow. Wouldn't that still require a relocation from the start of the section? > I also get a relocation requ...
2012 Dec 17
0
[LLVMdev] [MC] [llvm-mc] Getting target specific information to <target>ELFObjectWriter
...ressing issue is the need to post the relocation model such as PIC, CPIC or non-shared. The object method that allows me to update the e_flags at the target level, <target>ELFObjectWriter::getEFlags(), had no access to any target specific information . MipsELFObjectWriter is created during MipsAsmBackend construction which is create during an invocation of createMipsAsmBackend(). create<target>AsmBackend is called by: the codegen (integrated assembler) llvm-mc (standalone assembler) clang (cc1as_main.cpp) My solution for getting access of target specific data to <target>ELFObjec...
2012 Dec 15
2
[LLVMdev] [MC] [llvm-mc] Getting target specific information to <target>ELFObjectWriter
On Fri, Dec 14, 2012 at 1:03 PM, Carter, Jack <jcarter at mips.com> wrote: > Eli, > > This is the kind of feedback I want. I believe I have to add to the base class so it should be generally useful. I can see string being better for the value. I still am enamoured with an enumeration for the tab though: int->string. How would that be a limitation? > I guess that's fine,
2015 Sep 23
2
The Trouble with Triples
...ckend(..., Triple, ...) * Call createMCAsmStreamer() * If emitting objects: * Call createMCCodeEmitter() * Call createMCAsmBackend(..., Triple, ...) * createMCObjectStreamer() * This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). * Call createMCAsmParser() * Call a different createMCAsmPar...
2015 Sep 23
2
The Trouble with Triples
...ckend(..., Triple, ...) * Call createMCAsmStreamer() * If emitting objects: * Call createMCCodeEmitter() * Call createMCAsmBackend(..., Triple, ...) * createMCObjectStreamer() * This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). * Call createMCAsmParser() * Call a different createMCAsmPar...
2015 Sep 23
4
The Trouble with Triples
...ckend(..., Triple, ...) * Call createMCAsmStreamer() * If emitting objects: * Call createMCCodeEmitter() * Call createMCAsmBackend(..., Triple, ...) * createMCObjectStreamer() * This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). * Call createMCAsmParser() * Call a different createMCAsmPar...
2015 Sep 23
4
The Trouble with Triples
...rinter() · createMCCodeEmitter() · createMCAsmBackend() · If emitting assembly, createMCAsmStreamer() · if emitting object, createMCObjectStreamer() o This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). · If assembling createMCAsmParser · If dis...
2015 Sep 24
3
The Trouble with Triples
...ckend(..., Triple, ...) * Call createMCAsmStreamer() * If emitting objects: * Call createMCCodeEmitter() * Call createMCAsmBackend(..., Triple, ...) * createMCObjectStreamer() * This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). * Call createMCAsmParser() * Call a different createMCAsmPar...
2015 Sep 23
3
The Trouble with Triples
...rinter() • createMCCodeEmitter() • createMCAsmBackend() • If emitting assembly, createMCAsmStreamer() • if emitting object, createMCObjectStreamer() o This in turn calls createObjectWriter() and tells it to emit ELF32/ELF64 objects. This information comes from MipsAsmBackend and ultimately comes from Triple::mips/mipsel vs Triple::mips64/mips64el. This is incorrect for N32 (which should be ELF32 but has Triple::mips64/mips64el) and for mips-linux-gnu –mips64 (which should be ELF32 since it should target O32). • If assembling createMCAsmParser • If dis...
2015 Sep 22
2
The Trouble with Triples
>> Here's the line of thought that I'd like people to start with: >> * Triples don't describe the target. They look like they should, but they >> don't. They're really just arbitrary strings. > >Triples are used as a starting point, but no more. I disagree with this but for now let's assume it's true. The starting point is incorrect because