If the width is not what is expected, then it can't be a regular pointer. The Linux kernel verifier checks this but PREVAIL wasn't checking this case, which could cause a machine crash.
do_load_ctx() is special since it uses 32-bit offsets for packet data, data_end, and meta. In an actual program these are 64-bit pointers, but at verification time we just use the offset values as a proxy, like we use map_fd's as a proxy for maps which at runtime are actually 64-bit memory pointers.
Add YAML tests for such cases.
Added comment explaining why PTR_MAX isn't int64_t max for now.
Half the places (asm_parse.cpp line 55, split_dbm.cpp line 1055) used "map_fd_program" and half (asm_ostream.cpp lines 24 and 106, asm_parse.cpp line 284), used "map_fd_programs" for the string name of that type. Use the latter everywhere for consistency.
coverage: 89.79% (+0.04%) from 89.754%
when pulling df1f98fb86095b467e58d05b7d6ab2a9dafba694 on dthaler:validate-ctx-ptr
into f3964ef83f5cabf031f0647333a06551372af627 on vbpf:main.
Addresses issue #560