private static LEB128Info readLEB128Info(Program program, Address addr, boolean isSigned)
			throws MemoryAccessException {
		try (MemoryByteProvider mbp =
			new MemoryByteProvider(program.getMemory(), addr.getAddressSpace())) {
			BinaryReader br = new BinaryReader(mbp, !program.getMemory().isBigEndian());
			br.setPointerIndex(addr.getOffset());

			return LEB128Info.readValue(br, isSigned);
		}
		catch (IOException e) {
			throw new MemoryAccessException("Error reading LEB128 value at " + addr.toString(), e);
		}
	}
Reads an signed little endian base 128 integer from memory.

@param program the program with memory to be read.
@param addr the address in memory to begin reading the signed LEB128.
@return {@link LEB128Info} (value + metadata)
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/GccAnalysisUtils.java