<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">It seems that $packrecord does not work at all.  I did some research and found this document:</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default"><font face="monospace, monospace"><a href="http://www.freepascal.org/docs-html/ref/refsu19.html">http://www.freepascal.org/docs-html/ref/refsu19.html</a></font><br></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">compiled and ran the example on that page, I got:</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default" style="font-family:monospace,monospace">​​Size Trec1 : 4 Offset B : 2</div><div class="gmail_default"><font face="monospace, monospace"><div class="gmail_default">Size Trec2 : 3 Offset B : 1</div><div class="gmail_default">Size Trec3 : 2 Offset B : 1</div><div class="gmail_default">Size Trec4 : 2 Offset B : 1</div><div class="gmail_default">Size Trec5 : 5 Offset B : 1 Offset C : 4</div><div class="gmail_default">Size Trec6 : 5 Offset B : 1 Offset C : 4</div><div class="gmail_default">Size Trec7 : 9 Offset B : 1 Offset C : 8</div><div class="gmail_default">Size Trec8 : 9 Offset B : 1 Offset C : 8</div><div><br></div><div>While the expected output, as stated in the document above, should be:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec1 : 4 Offset B : 2  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec2 : 3 Offset B : 1  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec3 : 2 Offset B : 1  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec4 : 2 Offset B : 1  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec5 : 8 Offset B : 4 Offset C : 7  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec6 : 8 Offset B : 4 Offset C : 7  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec7 : 12 Offset B : 4 Offset C : 11  </span><br style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap"><span style="color:rgb(0,0,0);font-family:monospace;white-space:nowrap">Size Trec8 : 16 Offset B : 8 Offset C : 15</span><br></div></font></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><img src="https://docs.google.com/uc?export=download&id=0B3cr36sBDhsCbjdsUFlJQTFIRlk&revid=0B3cr36sBDhsCT3k0STNYRXJ6UlZQd2w2WSt6Z0MyNzNJVlpjPQ" width="96" height="95"><br></div></div></div>
<br><div class="gmail_quote">2015-08-07 10:48 GMT+08:00 Xiangrong Fang <span dir="ltr"><<a href="mailto:xrfang@gmail.com" target="_blank">xrfang@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:monospace,monospace">Hi All,</div><div style="font-family:monospace,monospace"><br></div><div style="font-family:monospace,monospace">I try to port a program from C to Pascal, see the following example:</div><div style="font-family:monospace,monospace"><br></div><div><div style="font-family:monospace,monospace">#include <stdio.h></div><div style="font-family:monospace,monospace">#include <sys/socket.h></div><div style="font-family:monospace,monospace">#include <linux/if.h></div><div style="font-family:monospace,monospace">void main() {</div><div style="font-family:monospace,monospace">    printf("ifmap=%ld\n", sizeof(struct ifmap));</div><div style="font-family:monospace,monospace">}</div><div style="font-family:monospace,monospace"><br></div><div style="font-family:monospace,monospace">I converted it to:</div><div style="font-family:monospace,monospace"><br></div><div><div><font face="monospace, monospace">est.c  test.pas                                                                                                                                                X</font></div><div><font face="monospace, monospace">program test;</font></div><div><font face="monospace, monospace">{$mode objfpc}{$PACKRECORDS C}</font></div><div><font face="monospace, monospace">type</font></div><div><font face="monospace, monospace">  ifmap = record</font></div><div><font face="monospace, monospace">    mem_start: dword;</font></div><div><font face="monospace, monospace">    mem_end: dword;</font></div><div><font face="monospace, monospace">    base_addr: word;</font></div><div><font face="monospace, monospace">    irq: byte;</font></div><div><font face="monospace, monospace">    dma: byte;</font></div><div><font face="monospace, monospace">    port: byte;</font></div><div><font face="monospace, monospace">  end;</font></div><div><font face="monospace, monospace">begin</font></div><div><font face="monospace, monospace">  WriteLn('ifmap=', SizeOf(ifmap));</font></div><div><font face="monospace, monospace">end.</font></div><div><br></div></div><div>The C struct's size is 24, but pascal record is 16.    The ifmap struct is defined as:</div><div><br></div><div><div>struct ifmap {</div><div>    unsigned long mem_start;</div><div>    unsigned long mem_end;</div><div>    unsigned short base_addr;</div><div>    unsigned char irq;</div><div>    unsigned char dma;</div><div>    unsigned char port;</div><div>    /* 3 bytes spare */</div><div>};</div></div><div><br></div><div>How can I instruct FPC to align records exactly same as GCC?</div><div><br></div><div>Thanks!</div><div><br></div><div><br></div><div style="font-family:monospace,monospace"><br></div></div><div><div><div dir="ltr"><img src="https://docs.google.com/uc?export=download&id=0B3cr36sBDhsCbjdsUFlJQTFIRlk&revid=0B3cr36sBDhsCT3k0STNYRXJ6UlZQd2w2WSt6Z0MyNzNJVlpjPQ" width="96" height="95"><br></div></div></div>
</div>
</blockquote></div><br></div></div>