mirror of
https://github.com/mikpe/pdp10-tools.git
synced 2026-04-19 17:13:05 +00:00
readelf: implement read_uint36/1 ourselves, do not abuse libelf for that
This commit is contained in:
@@ -30,7 +30,6 @@
|
||||
, read_ShTab/4
|
||||
, read_SymTab/2
|
||||
, read_SymTab/4
|
||||
, read_uint36/1
|
||||
, make_Ehdr/0
|
||||
, write_Ehdr/2
|
||||
, write_Phdr/2
|
||||
|
||||
@@ -692,7 +692,7 @@ disassemble_unit(FileOffset, Size, VAddr, FP, Labels) ->
|
||||
end.
|
||||
|
||||
disassemble_insns(Offset, Size, VAddr, FP, Labels) when Offset < Size ->
|
||||
case libelf:read_uint36(FP) of
|
||||
case read_uint36(FP) of
|
||||
{ok, InsnWord} ->
|
||||
RestLabels = print_labels(Labels, Offset),
|
||||
io:format(" 0~12.8.0b:\t0~12.8.0b\t", [VAddr + Offset, InsnWord]),
|
||||
@@ -702,6 +702,15 @@ disassemble_insns(Offset, Size, VAddr, FP, Labels) when Offset < Size ->
|
||||
end;
|
||||
disassemble_insns(_Offset, _Size, _VAddr, _FP, _Labels) -> ok.
|
||||
|
||||
%% TODO: for ELF-64 read 4 nonets from 8 octets and combine
|
||||
read_uint36(FP) ->
|
||||
case pdp10_stdio:fread(1, 4, FP) of
|
||||
{ok, [B0, B1, B2, B3]} ->
|
||||
{ok, (((((B0 bsl 9) bor B1) bsl 9) bor B2) bsl 9) bor B3};
|
||||
eof -> {error, eof};
|
||||
{error, _Reason} = Error -> Error
|
||||
end.
|
||||
|
||||
disassemble_insn(InsnWord) ->
|
||||
Models = ?PDP10_KL10_271up,
|
||||
High13 = InsnWord bsr (36 - 13),
|
||||
|
||||
Reference in New Issue
Block a user