title: How is the alignment of .data and .bss determined
body: <p>The alignment of .data and .bss is sometimes 4 bytes and sometimes it is 32 bytes.
  Example 1: As per the last column in below output the alignment of bss and data is 32 bytes </p>
  
  <pre><code>bash-3.00$ readelf --sections libmodel.so
  There are 39 section headers, starting at offset 0x1908a63c:
  
  Section Headers:
    [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  ...
    [25] .data             PROGBITS        01e221e0 1e211e0 26ca54 00  WA  0   0 32
    [26] .bss              NOBITS          0208ec40 208dc34 374178 00  WA  0   0 32
  ...
  </code></pre>
  
  <p>Example 2: As per the below output the alignment os .data and .bss is 4 bytes</p>
  
  <pre><code>bash-3.00$ readelf --sections ./a.out
  There are 28 section headers, starting at offset 0x78c:
  
  Section Headers:
    [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  ...
    [22] .data             PROGBITS        0804956c 00056c 000034 00  WA  0   0  4
    [23] .bss              NOBITS          080495a0 0005a0 000004 00  WA  0   0  4
  ...
  </code></pre>
  
  <p>what determines the alignment for .bss and .data? Why is it sometimes 4 bytes and at other times 32 bytes?</p>