@@ -30,23 +30,24 @@ pub fn build(
3030 metadata_hash : Option < [ u8 ; revive_common:: BYTE_LENGTH_WORD ] > ,
3131 debug_config : & DebugConfig ,
3232) -> anyhow:: Result < Build > {
33- let program_blob = ProgramBlob :: parse ( bytecode. into ( ) )
34- . map_err ( anyhow:: Error :: msg)
35- . with_context ( || format ! ( "Failed to parse program blob for contract: {contract_path}" ) ) ?;
33+ // let program_blob = ProgramBlob::parse(bytecode.into())
34+ // .map_err(anyhow::Error::msg)
35+ // .with_context(|| format!("Failed to parse program blob for contract: {contract_path}"))?;
3636
37- let mut disassembler = Disassembler :: new ( & program_blob, DisassemblyFormat :: Guest )
38- . map_err ( anyhow:: Error :: msg)
39- . with_context ( || format ! ( "Failed to create disassembler for contract: {contract_path}" ) ) ?;
40- disassembler. display_gas ( ) ?;
37+ // let mut disassembler = Disassembler::new(&program_blob, DisassemblyFormat::Guest)
38+ // .map_err(anyhow::Error::msg)
39+ // .with_context(|| format!("Failed to create disassembler for contract: {contract_path}"))?;
40+ // disassembler.display_gas()?;
4141
42- let mut disassembled_code = Vec :: new ( ) ;
43- disassembler
44- . disassemble_into ( & mut disassembled_code)
45- . with_context ( || format ! ( "Failed to disassemble contract: {contract_path}" ) ) ?;
42+ // let mut disassembled_code = Vec::new();
43+ // disassembler
44+ // .disassemble_into(&mut disassembled_code)
45+ // .with_context(|| format!("Failed to disassemble contract: {contract_path}"))?;
4646
47- let assembly_text = String :: from_utf8 ( disassembled_code) . with_context ( || {
48- format ! ( "Failed to convert disassembled code to string for contract: {contract_path}" )
49- } ) ?;
47+ //let assembly_text = String::from_utf8(disassembled_code).with_context(|| {
48+ // format!("Failed to convert disassembled code to string for contract: {contract_path}")
49+ //})?;
50+ let assembly_text = "" ;
5051
5152 debug_config. dump_assembly ( contract_path, & assembly_text) ?;
5253
@@ -79,8 +80,11 @@ pub fn link(
7980 Ok ( value @ ObjectFormat :: PVM ) => Ok ( ( bytecode, value) ) ,
8081 Ok ( ObjectFormat :: ELF ) => {
8182 let symbols = build_symbols ( linker_symbols, factory_dependencies) ?;
82- let bytecode_linked = revive_linker:: Linker :: setup ( false ) ?
83+ let mut bytecode_linked = revive_linker:: Linker :: setup ( true ) ?
8384 . link ( bytecode. as_slice ( ) , Some ( symbols. as_slice ( ) ) ) ?;
85+ if let Ok ( pvm) = revive_linker:: polkavm_linker ( & bytecode_linked, true ) {
86+ bytecode_linked = pvm;
87+ }
8488 Ok ( (
8589 MemoryBuffer :: create_from_memory_range ( & bytecode_linked, "bytecode_linked" ) ,
8690 ObjectFormat :: try_from ( bytecode_linked. as_slice ( ) )
@@ -102,6 +106,7 @@ pub fn build_symbols(
102106
103107 for ( name, value) in linker_symbols {
104108 let global_value = module. add_global ( address_type, Default :: default ( ) , name) ;
109+ global_value. set_linkage ( inkwell:: module:: Linkage :: External ) ;
105110 global_value. set_initializer (
106111 & address_type
107112 . const_int_from_string (
@@ -114,6 +119,7 @@ pub fn build_symbols(
114119
115120 for ( name, value) in factory_dependencies {
116121 let global_value = module. add_global ( word_type, Default :: default ( ) , name) ;
122+ global_value. set_linkage ( inkwell:: module:: Linkage :: External ) ;
117123 global_value. set_initializer (
118124 & word_type
119125 . const_int_from_string (
0 commit comments