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