@Override
	public Address evaluateElfSymbol(ElfLoadHelper elfLoadHelper, ElfSymbol elfSymbol,
			Address address, boolean isExternal) {

		if (isExternal) {
			return address;
		}

		Program program = elfLoadHelper.getProgram();

		String symName = elfSymbol.getNameAsString();
		if (StringUtils.isBlank(symName)) {
			return address;
		}

		try {
			Register tmodeRegister = program.getRegister("TMode");

			// ELF ARM - tags ARM code with $a and Thumb code with $t
			//
			if (tmodeRegister == null) {
				// Thumb Mode not supported by language
			}
			else if ("$t".equals(symName) || symName.startsWith("$t.")) {
				// is thumb mode
				program.getProgramContext().setValue(tmodeRegister, address, address,
					BigInteger.valueOf(1));
				elfLoadHelper.markAsCode(address);

				// do not retain $t symbols in program due to potential function/thunk naming interference
				elfLoadHelper.setElfSymbolAddress(elfSymbol, address);
				return null;
			}
			else if ("$a".equals(symName) || symName.startsWith("$a.")) {
				// is arm mode
				program.getProgramContext().setValue(tmodeRegister, address, address,
					BigInteger.valueOf(0));
				elfLoadHelper.markAsCode(address);

				// do not retain $a symbols in program due to potential function/thunk naming interference
				elfLoadHelper.setElfSymbolAddress(elfSymbol, address);
				return null;
			}
			else if ("$b".equals(symName)) {
				// don't do anything this is data
			}
			else if ("$d".equals(symName) || symName.startsWith("$d.")) {
				// is data, need to protect as data
				elfLoadHelper.createUndefinedData(address, (int) elfSymbol.getSize());

				// do not retain $d symbols in program due to excessive duplicate symbols
				elfLoadHelper.setElfSymbolAddress(elfSymbol, address);
				return null;
			}
			if (elfSymbol.getType() == ElfSymbol.STT_FUNC) {
				long symVal = address.getOffset();
				if ((symVal & 1) != 0 && tmodeRegister != null) {
					address = address.previous();
					program.getProgramContext().setValue(tmodeRegister, address, address,
						BigInteger.valueOf(1));
				}
			}
		}
		catch (ContextChangeException e) {
			// ignore since should not be instructions at time of import
		}
		return address;
	}
ARM PC Bias option affecting all relative relocations.
If PC Bias is already accounted for within relocation addend this option should be specified
as false, otherwise true (default).
Ghidra/Processors/ARM/src/main/java/ghidra/app/util/bin/format/elf/extend/ARM_ElfExtension.java