aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/arm/hipe_arm_assemble.erl
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2015-08-31 16:56:02 +0200
committerSverker Eriksson <[email protected]>2015-08-31 16:56:02 +0200
commit6e3a0870ebd992ed410298e859066894134be9f6 (patch)
treecbf491004dc00c90dbc4a7aa5d757cfd1444d9bc /lib/hipe/arm/hipe_arm_assemble.erl
parentb5eba8b61ce3ea0058ba37df288738586c68d6ac (diff)
downloadotp-6e3a0870ebd992ed410298e859066894134be9f6.tar.gz
otp-6e3a0870ebd992ed410298e859066894134be9f6.tar.bz2
otp-6e3a0870ebd992ed410298e859066894134be9f6.zip
erts,hipe,dialyzer: Fix hipe checkum of target runtime system
Main problem: A faulty HIPE_LITERAL_CRC was not detected by the loader. Strangeness #1: Dialyzer should ask the hipe compiler about the target checksum, not an internal bif. Strangeness #2: The HIPE_SYSTEM_CRC checksum was based on the HIPE_LITERALS_CRC checksum. Solution: New HIPE_ERTS_CHECKSUM which is an bxor of the two (now independent) HIPE_LITERALS_CRC and HIPE_SYSTEM_CRC. HIPE_LITERALS_CRC represents values that are assumed to stay constant for different VM configurations of the same arch, and are therefor hard coded into the hipe compiler. HIPE_SYSTEM_CRC represents values that may differ between VM variants. By default the hipe compiler asks the running VM for this checksum, in order to create beam files for the same running VM. The hipe compiler can be configured (with "make XCOMP=yes ...") to create beam files for another VM variant, in which case HIPE_SYSTEM_CRC is also hard coded. ToDo: Treat all erts properties the same. Either ask the running VM or hard coded into hipe (if XCOMP=yes). This will simplify and reduce the risk of dangerous mismatches. One concern might be the added overhead from more frequent calls to hipe_bifs:get_rts_param.
Diffstat (limited to 'lib/hipe/arm/hipe_arm_assemble.erl')
-rw-r--r--lib/hipe/arm/hipe_arm_assemble.erl2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/hipe/arm/hipe_arm_assemble.erl b/lib/hipe/arm/hipe_arm_assemble.erl
index 7859e2d4a8..5f98c6593e 100644
--- a/lib/hipe/arm/hipe_arm_assemble.erl
+++ b/lib/hipe/arm/hipe_arm_assemble.erl
@@ -48,7 +48,7 @@ assemble(CompiledCode, Closures, Exports, Options) ->
DataRelocs = hipe_pack_constants:mk_data_relocs(RefsFromConsts, LabelMap),
SSE = hipe_pack_constants:slim_sorted_exportmap(ExportMap,Closures,Exports),
SlimRefs = hipe_pack_constants:slim_refs(AccRefs),
- Bin = term_to_binary([{?VERSION_STRING(),?HIPE_SYSTEM_CRC},
+ Bin = term_to_binary([{?VERSION_STRING(),?HIPE_ERTS_CHECKSUM},
ConstAlign, ConstSize,
SC,
DataRelocs, % nee LM, LabelMap