Add getopt implementation to abuild
[coreboot.git] / util / cbfstool / cbfs-mkpayload.c
index baa92ff2375629256959330773e43397067fa0af..e4ef5c835110f6a3823263e0cf971459fde41586 100644 (file)
@@ -152,18 +152,21 @@ int parse_elf_to_payload(unsigned char *input, unsigned char **output,
                if (phdr[i].p_filesz == 0) {
                        segs[segments].type = PAYLOAD_SEGMENT_BSS;
                        segs[segments].load_addr =
-                           (unsigned long long)htonl(phdr[i].p_paddr);
+                           (uint64_t)htonll(phdr[i].p_paddr);
                        segs[segments].mem_len =
-                           (unsigned int)htonl(phdr[i].p_memsz);
+                           (uint32_t)htonl(phdr[i].p_memsz);
                        segs[segments].offset = htonl(doffset);
 
                        segments++;
                        continue;
                }
 
-               segs[segments].type = PAYLOAD_SEGMENT_DATA;
-               segs[segments].load_addr = (unsigned int)htonl(phdr[i].p_paddr);
-               segs[segments].mem_len = (unsigned int)htonl(phdr[i].p_memsz);
+               if (phdr[i].p_flags & PF_X)
+                       segs[segments].type = PAYLOAD_SEGMENT_CODE;
+               else
+                       segs[segments].type = PAYLOAD_SEGMENT_DATA;
+               segs[segments].load_addr = (uint64_t)htonll(phdr[i].p_paddr);
+               segs[segments].mem_len = (uint32_t)htonl(phdr[i].p_memsz);
                segs[segments].compression = htonl(algo);
                segs[segments].offset = htonl(doffset);
 
@@ -190,7 +193,7 @@ int parse_elf_to_payload(unsigned char *input, unsigned char **output,
        }
 
        segs[segments].type = PAYLOAD_SEGMENT_ENTRY;
-       segs[segments++].load_addr = (unsigned long long)htonl(ehdr->e_entry);
+       segs[segments++].load_addr = (uint64_t)htonll(ehdr->e_entry);
 
        *output = sptr;