Prior to this change, the "Symbol" field of a relocation would always be assumed to be a symbol name, and if no such symbol existed, the relocation would reference index 0. This confused me when I tried to use a literal symbol index in the field: since "0x1" was not a known symbol name, the symbol index was set as 0. This change fallsback to treating unknown symbol names as integers, and emits an error if the name is not found and the string is not an integer.
Note that the Symbol field is optional, so if a relocation doesn't reference a symbol, it shouldn't be specified. The new error required a number of test updates.
This change relies on D58508 landing first with LLD test changes (I haven't got a monorepo checkout sorted out yet).