libs/libc/machine/arm/armv7-m/arch_elf.c: Appease nxstyle
The following errors are intentionally left. They are a part of tables which are not trivial to fix. libs/libc/machine/arm/armv7-m/arch_elf.c:230:94: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:232:89: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:240:94: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:242:89: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:403:94: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:405:91: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:413:94: error: Long line found libs/libc/machine/arm/armv7-m/arch_elf.c:415:91: error: Long line found
This commit is contained in:
parent
34cd44f8d7
commit
04f2542cc2
@ -80,7 +80,8 @@ bool up_checkarch(FAR const Elf32_Ehdr *ehdr)
|
||||
|
||||
if (ehdr->e_ident[EI_CLASS] != ELFCLASS32)
|
||||
{
|
||||
berr("ERROR: Need 32-bit objects: e_ident[EI_CLASS]=%02x\n", ehdr->e_ident[EI_CLASS]);
|
||||
berr("ERROR: Need 32-bit objects: e_ident[EI_CLASS]=%02x\n",
|
||||
ehdr->e_ident[EI_CLASS]);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -92,11 +93,13 @@ bool up_checkarch(FAR const Elf32_Ehdr *ehdr)
|
||||
if (ehdr->e_ident[EI_DATA] != ELFDATA2LSB)
|
||||
#endif
|
||||
{
|
||||
berr("ERROR: Wrong endian-ness: e_ident[EI_DATA]=%02x\n", ehdr->e_ident[EI_DATA]);
|
||||
berr("ERROR: Wrong endian-ness: e_ident[EI_DATA]=%02x\n",
|
||||
ehdr->e_ident[EI_DATA]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* TODO: Check ABI here. */
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -154,8 +157,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
case R_ARM_CALL:
|
||||
case R_ARM_JUMP24:
|
||||
{
|
||||
binfo("Performing PC24 [%d] link at addr %08lx [%08lx] to sym '%p' st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr, (long)(*(uint32_t *)addr),
|
||||
binfo("Performing PC24 [%d] link at "
|
||||
"addr %08lx [%08lx] to sym '%p' st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr,
|
||||
(long)(*(uint32_t *)addr),
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
offset = (*(uint32_t *)addr & 0x00ffffff) << 2;
|
||||
@ -165,9 +170,11 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
}
|
||||
|
||||
offset += sym->st_value - addr;
|
||||
if (offset & 3 || offset < (int32_t) 0xfe000000 || offset >= (int32_t) 0x02000000)
|
||||
if (offset & 3 || offset < (int32_t) 0xfe000000 ||
|
||||
offset >= (int32_t) 0x02000000)
|
||||
{
|
||||
berr("ERROR: ERROR: PC24 [%d] relocation out of range, offset=%08lx\n",
|
||||
berr("ERROR: ERROR: PC24 [%d] "
|
||||
"relocation out of range, offset=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), offset);
|
||||
|
||||
return -EINVAL;
|
||||
@ -183,8 +190,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
case R_ARM_ABS32:
|
||||
case R_ARM_TARGET1: /* New ABI: TARGET1 always treated as ABS32 */
|
||||
{
|
||||
binfo("Performing ABS32 link at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr), sym, (long)sym->st_value);
|
||||
binfo("Performing ABS32 link "
|
||||
"at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr),
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
*(uint32_t *)addr += sym->st_value;
|
||||
}
|
||||
@ -194,8 +203,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
case R_ARM_TARGET2: /* TARGET2 is a platform-specific relocation: gcc-arm-none-eabi
|
||||
* performs a self relocation */
|
||||
{
|
||||
binfo("Performing TARGET2 link at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr), sym, (long)sym->st_value);
|
||||
binfo("Performing TARGET2 link "
|
||||
"at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr),
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
*(uint32_t *)addr += sym->st_value - addr;
|
||||
}
|
||||
@ -243,8 +254,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
upper_insn = (uint32_t)(*(uint16_t *)addr);
|
||||
lower_insn = (uint32_t)(*(uint16_t *)(addr + 2));
|
||||
|
||||
binfo("Performing THM_JUMP24 [%d] link at addr=%08lx [%04x %04x] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr, (int)upper_insn, (int)lower_insn,
|
||||
binfo("Performing THM_JUMP24 [%d] link "
|
||||
"at addr=%08lx [%04x %04x] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr,
|
||||
(int)upper_insn, (int)lower_insn,
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
/* Extract the 25-bit offset from the 32-bit instruction:
|
||||
@ -288,7 +301,8 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
|
||||
if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC && (offset & 1) == 0)
|
||||
{
|
||||
berr("ERROR: ERROR: JUMP24 [%d] requires odd offset, offset=%08lx\n",
|
||||
berr("ERROR: ERROR: JUMP24 [%d] "
|
||||
"requires odd offset, offset=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), offset);
|
||||
|
||||
return -EINVAL;
|
||||
@ -298,7 +312,8 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
|
||||
if (offset < (int32_t)0xff000000 || offset >= (int32_t)0x01000000)
|
||||
{
|
||||
berr("ERROR: ERROR: JUMP24 [%d] relocation out of range, branch target=%08lx\n",
|
||||
berr("ERROR: ERROR: JUMP24 [%d] "
|
||||
"relocation out of range, branch target=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), offset);
|
||||
|
||||
return -EINVAL;
|
||||
@ -312,10 +327,12 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
J1 = S ^ (~(offset >> 23) & 1);
|
||||
J2 = S ^ (~(offset >> 22) & 1);
|
||||
|
||||
upper_insn = ((upper_insn & 0xf800) | (S << 10) | ((offset >> 12) & 0x03ff));
|
||||
upper_insn = ((upper_insn & 0xf800) | (S << 10) |
|
||||
((offset >> 12) & 0x03ff));
|
||||
*(uint16_t *)addr = (uint16_t)upper_insn;
|
||||
|
||||
lower_insn = ((lower_insn & 0xd000) | (J1 << 13) | (J2 << 11) | ((offset >> 1) & 0x07ff));
|
||||
lower_insn = ((lower_insn & 0xd000) | (J1 << 13) | (J2 << 11) |
|
||||
((offset >> 1) & 0x07ff));
|
||||
*(uint16_t *)(addr + 2) = (uint16_t)lower_insn;
|
||||
|
||||
binfo(" S=%d J1=%d J2=%d insn [%04x %04x]\n",
|
||||
@ -340,8 +357,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
|
||||
case R_ARM_PREL31:
|
||||
{
|
||||
binfo("Performing PREL31 link at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr), sym, (long)sym->st_value);
|
||||
binfo("Performing PREL31 link "
|
||||
"at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
(long)addr, (long)(*(uint32_t *)addr),
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
offset = *(uint32_t *)addr + sym->st_value - addr;
|
||||
*(uint32_t *)addr = offset & 0x7fffffff;
|
||||
@ -351,8 +370,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
case R_ARM_MOVW_ABS_NC:
|
||||
case R_ARM_MOVT_ABS:
|
||||
{
|
||||
binfo("Performing MOVx_ABS [%d] link at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr, (long)(*(uint32_t *)addr),
|
||||
binfo("Performing MOVx_ABS [%d] link "
|
||||
"at addr=%08lx [%08lx] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr,
|
||||
(long)(*(uint32_t *)addr),
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
offset = *(uint32_t *)addr;
|
||||
@ -405,8 +426,10 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
upper_insn = (uint32_t)(*(uint16_t *)addr);
|
||||
lower_insn = (uint32_t)(*(uint16_t *)(addr + 2));
|
||||
|
||||
binfo("Performing THM_MOVx [%d] link at addr=%08lx [%04x %04x] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr, (int)upper_insn, (int)lower_insn,
|
||||
binfo("Performing THM_MOVx [%d] link "
|
||||
"at addr=%08lx [%04x %04x] to sym=%p st_value=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), (long)addr,
|
||||
(int)upper_insn, (int)lower_insn,
|
||||
sym, (long)sym->st_value);
|
||||
|
||||
/* Extract the 16-bit offset from the 32-bit instruction */
|
||||
@ -423,8 +446,9 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
|
||||
offset += sym->st_value;
|
||||
|
||||
/* Update the immediate value in the instruction. For MOVW we want the bottom
|
||||
* 16-bits; for MOVT we want the top 16-bits.
|
||||
/* Update the immediate value in the instruction.
|
||||
* For MOVW we want the bottom 16-bits; for MOVT we want
|
||||
* the top 16-bits.
|
||||
*/
|
||||
|
||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_ABS)
|
||||
@ -467,7 +491,8 @@ int up_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
|
||||
|
||||
if (offset < (int32_t)0xfffff800 || offset >= (int32_t)0x0800)
|
||||
{
|
||||
berr("ERROR: JUMP11 [%d] relocation out of range, branch taget=%08lx\n",
|
||||
berr("ERROR: JUMP11 [%d] "
|
||||
"relocation out of range, branch taget=%08lx\n",
|
||||
ELF32_R_TYPE(rel->r_info), offset);
|
||||
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user