correctly mark code segments as code in SELF
authorStefan Reinauer <reinauer@chromium.org>
Wed, 11 Jan 2012 20:40:14 +0000 (12:40 -0800)
committerPatrick Georgi <patrick@georgi-clan.de>
Wed, 7 Mar 2012 13:20:09 +0000 (14:20 +0100)
In bios_log, find that the first segment of the payload is shown
as code rather than data.

Sample:
       Got a payload
       Loading segment from rom address 0xfff29378
         code (compression=1)
       ...

Change-Id: I82eaad23f08c02f4ed75744affa8835255cf5c17
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/767
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
util/cbfstool/cbfs-mkpayload.c

index ff6479dc660e82f2455eabd3523573e3bd6b4b86..e4ef5c835110f6a3823263e0cf971459fde41586 100644 (file)
@@ -161,7 +161,10 @@ int parse_elf_to_payload(unsigned char *input, unsigned char **output,
                        continue;
                }
 
-               segs[segments].type = PAYLOAD_SEGMENT_DATA;
+               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);