[lld] r290239 - [ELF] - Do not call fatal() in Target.cpp, call error() instead.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 21 00:48:59 PST 2016


On Wed, Dec 21, 2016 at 2:21 AM, George Rimar via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: grimar
> Date: Wed Dec 21 02:21:34 2016
> New Revision: 290239
>
> URL: http://llvm.org/viewvc/llvm-project?rev=290239&view=rev
> Log:
> [ELF] - Do not call fatal() in Target.cpp, call error() instead.
>
> We probably would want to avoid fatal() if we can in context of
> librarification,
> but for me reason of that patch is to help D27900 go.
>
> D27900 changes errors reporting to something like
> error: text1
> note: text2
> note: text3
>
> where hint used to provide additional information about location. In that
> case
> I can't just call fatal() because user will not see notes after that what
> adds additional complication to handle.
> So It is good to switch fatal() to error() where it is possible.
>
> Also it adds testcase with broken relocation number.
> Previously we did not have any, It checks that error() instead of fatal()
> works fine.
>
> Differential revision: https://reviews.llvm.org/D27973
>
> Added:
>     lld/trunk/test/ELF/invalid/Inputs/invalid-relocation-x64.elf   (with
> props)
>     lld/trunk/test/ELF/invalid/invalid-relocation-x64.s
> Modified:
>     lld/trunk/ELF/Target.cpp
>
> Modified: lld/trunk/ELF/Target.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.
> cpp?rev=290239&r1=290238&r2=290239&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/Target.cpp (original)
> +++ lld/trunk/ELF/Target.cpp Wed Dec 21 02:21:34 2016
> @@ -870,7 +870,7 @@ void X86_64TargetInfo<ELFT>::relocateOne
>      write64le(Loc, Val);
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -1039,7 +1039,7 @@ void PPCTargetInfo::relocateOne(uint8_t
>      or32be(Loc, Val & 0x3FFFFFC);
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -1217,7 +1217,7 @@ void PPC64TargetInfo::relocateOne(uint8_
>      break;
>    }
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -1468,7 +1468,7 @@ void AArch64TargetInfo::relocateOne(uint
>      or32AArch64Imm(Loc, Val);
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -1578,7 +1578,7 @@ void AMDGPUTargetInfo::relocateOne(uint8
>      write32le(Loc, Val >> 32);
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -1888,7 +1888,7 @@ void ARMTargetInfo::relocateOne(uint8_t
>                    (Val & 0x00ff));           // imm8
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
> @@ -2336,7 +2336,7 @@ void MipsTargetInfo<ELFT>::relocateOne(u
>      applyMipsPcReloc<E, 32, 0>(Loc, Type, Val);
>      break;
>    default:
> -    fatal(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
> +    error(getErrorLocation(Loc) + "unrecognized reloc " + Twine(Type));
>    }
>  }
>
>
> Added: lld/trunk/test/ELF/invalid/Inputs/invalid-relocation-x64.elf
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> invalid/Inputs/invalid-relocation-x64.elf?rev=290239&view=auto
> ============================================================
> ==================
> Binary file - no diff available.
>
> Propchange: lld/trunk/test/ELF/invalid/Inputs/invalid-relocation-x64.elf
> ------------------------------------------------------------
> ------------------
>     svn:mime-type = application/octet-stream
>
> Added: lld/trunk/test/ELF/invalid/invalid-relocation-x64.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> invalid/invalid-relocation-x64.s?rev=290239&view=auto
> ============================================================
> ==================
> --- lld/trunk/test/ELF/invalid/invalid-relocation-x64.s (added)
> +++ lld/trunk/test/ELF/invalid/invalid-relocation-x64.s Wed Dec 21
> 02:21:34 2016
> @@ -0,0 +1,31 @@
> +## invalid-relocation-x64.elf contains relocations with invalid
> relocation number.
> +## Next yaml code was used to create initial binary. After that it
> +## was modified with hex-editor to replace known relocations with fake
> ones,
> +## that have 0x98 and 0x98 numbers.
> +!ELF
> +FileHeader:
> +  Class:           ELFCLASS64
> +  Data:            ELFDATA2LSB
> +  OSABI:           ELFOSABI_FREEBSD
> +  Type:            ET_REL
> +  Machine:         EM_X86_64
> +Sections:
> +  - Name:            .text
> +    Type:            SHT_PROGBITS
> +    Flags:           [ SHF_ALLOC ]
> +  - Name:            .rela.text
> +    Type:            SHT_RELA
> +    Link:            .symtab
> +    Info:            .text
> +    Relocations:
> +      - Offset:          0x0000000000000000
> +        Symbol:          ''
> +        Type:            R_X86_64_NONE
> +      - Offset:          0x0000000000000000
> +        Symbol:          ''
> +        Type:            R_X86_64_NONE
> +
> +
>

This line contains trailing whitespace.


> +# RUN: not ld.lld %p/Inputs/invalid-relocation-x64.elf -o %t2 2>&1 |
> FileCheck %s
> +# CHECK: unrecognized reloc 152
> +# CHECK: unrecognized reloc 153
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161221/89caaf29/attachment.html>


More information about the llvm-commits mailing list