Browse Source

Use reverse_byte to write constant sets in cross-endian configuration

Pierre Muller 1 year ago
parent
commit
11b0b9dc57
1 changed files with 5 additions and 1 deletions
  1. 5 1
      compiler/dbgdwarf.pas

+ 5 - 1
compiler/dbgdwarf.pas

@@ -2664,6 +2664,7 @@ implementation
         i,
         size: aint;
         usedef: tdef;
+	b : byte;
       begin
         { These are default values of parameters. These should be encoded
           via DW_AT_default_value, not as a separate sym. Moreover, their
@@ -2744,7 +2745,10 @@ implementation
               size:=sym.constdef.size;
               while (i<size) do
                 begin
-                  current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit((pbyte(sym.value.valueptr+i)^)));
+                  b:=pbyte(sym.value.valueptr+i)^;
+                  if (target_info.endian<>source_info.endian) then
+                    b:=reverse_byte(b);
+		  current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(b));
                   inc(i);
                 end;
             end;