I think there's an error in the Position Independence section:
start:
auipc a0, 3
addi a0, a0, 4
The text says that this should result in 0x3004; was this example intended to be start:
lui a0, 3
addi a0, a0, 4