The DIEExpr is used in debug information entries for either TLS variables or call sites. For now the last case is unsupported for targets with delay slots, for MIPS in particular.
The DIEExpr::EmitValue method calls a virtual EmitDebugValue routine which, in case of MIPS, always emits either .dtprelword or .dtpreldword directives. That is okay for "main" code, but in unit tests DIEExpr instances can be created not for TLS variables only even on MIPS hosts. That is a reason of the TestDWARF32Version5Addr8AllForms failure because handling of the R_MIPS_TLS_DTPREL relocation writes incorrect value into dwarf structures. And anyway unconditional emitting of .dtprelword directives will be incorrect when/if debug information entries for call sites become supported on MIPS.
The patch solves the problem by wrapping expression created in the MipsTargetObjectFile::getDebugThreadLocalSymbol method in to the MipsMCExpr expression with a new MEK_DTPREL tag. This tag is recognized in the MipsAsmPrinter::EmitDebugValue method and .dtprelword directives created in this case only. In other cases the expression saved as a regular data.