summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/coreinfo/Kconfig16
-rw-r--r--payloads/coreinfo/coreinfo.c6
-rw-r--r--payloads/libpayload/include/libpayload.h12
-rw-r--r--src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h4
-rw-r--r--util/cbfstool/cbfs-mkpayload.c57
-rw-r--r--util/cbfstool/cbfs_image.c10
6 files changed, 14 insertions, 91 deletions
diff --git a/payloads/coreinfo/Kconfig b/payloads/coreinfo/Kconfig
index 2c1f91c874..c0e314e08d 100644
--- a/payloads/coreinfo/Kconfig
+++ b/payloads/coreinfo/Kconfig
@@ -18,25 +18,13 @@ config SHOW_DATE_TIME
This option will increase the ELF file size by ca. 250 bytes.
-config PAYLOAD_INFO_NAME
+config COREINFO_NAME
string "Payload name"
default "coreinfo"
help
The name of this payload for use in (e.g.) Bayou.
-config PAYLOAD_INFO_LISTNAME
- string "Payload menu entry name"
- default "System Information"
- help
- The name of this payload's menu entry for use in (e.g.) Bayou.
-
-config PAYLOAD_INFO_DESC
- string "Payload description"
- default "Display information about the system"
- help
- The description of this payload for use in (e.g.) Bayou.
-
-config PAYLOAD_INFO_VERSION
+config COREINFO_VERSION
string "Payload version"
default "0.1"
help
diff --git a/payloads/coreinfo/coreinfo.c b/payloads/coreinfo/coreinfo.c
index b357f97988..b01dfebd88 100644
--- a/payloads/coreinfo/coreinfo.c
+++ b/payloads/coreinfo/coreinfo.c
@@ -229,7 +229,7 @@ static void loop(void)
{
int key;
- center(0, CONFIG_PAYLOAD_INFO_NAME " " CONFIG_PAYLOAD_INFO_VERSION);
+ center(0, CONFIG_COREINFO_NAME " " CONFIG_COREINFO_VERSION);
print_no_modules_selected();
refresh();
@@ -319,7 +319,3 @@ int main(int argc, char **argv)
halt();
return 0;
}
-
-PAYLOAD_INFO(name, CONFIG_PAYLOAD_INFO_NAME);
-PAYLOAD_INFO(listname, CONFIG_PAYLOAD_INFO_LISTNAME);
-PAYLOAD_INFO(desc, CONFIG_PAYLOAD_INFO_DESC);
diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h
index 61dbd274b3..05164e5da9 100644
--- a/payloads/libpayload/include/libpayload.h
+++ b/payloads/libpayload/include/libpayload.h
@@ -84,18 +84,6 @@ static inline u32 div_round_up(u32 n, u32 d) { return (n + d - 1) / d; }
#define MAX_ARGC_COUNT 32
-/*
- * Payload information parameters - these are used to pass information
- * to the entity loading the payload.
- * Usage: PAYLOAD_INFO(key, value)
- * Example: PAYLOAD_INFO(name, "CoreInfo!")
- */
-#define _pstruct(key) __pinfo_ ##key
-#define PAYLOAD_INFO(key, value) \
-static const char _pstruct(key)[] \
- __attribute__((__used__)) \
- __attribute__((section(".note.pinfo"),unused)) = #key "=" value
-
/**
* @defgroup nvram NVRAM and RTC functions
* @{
diff --git a/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h
index cebaf8395e..b6a7baa20e 100644
--- a/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h
+++ b/src/commonlib/bsd/include/commonlib/bsd/cbfs_serialized.h
@@ -198,8 +198,10 @@ enum cbfs_payload_segment_type {
PAYLOAD_SEGMENT_CODE = 0x434F4445, /* BE: 'CODE' */
PAYLOAD_SEGMENT_DATA = 0x44415441, /* BE: 'DATA' */
PAYLOAD_SEGMENT_BSS = 0x42535320, /* BE: 'BSS ' */
- PAYLOAD_SEGMENT_PARAMS = 0x50415241, /* BE: 'PARA' */
PAYLOAD_SEGMENT_ENTRY = 0x454E5452, /* BE: 'ENTR' */
+
+ /* PARAMS for PAYLOAD_INFO feature. Broken since 2012, removed 2024. */
+ PAYLOAD_SEGMENT_DEPRECATED_PARAMS = 0x50415241, /* BE: 'PARA' */
};
struct cbfs_optionrom {
diff --git a/util/cbfstool/cbfs-mkpayload.c b/util/cbfstool/cbfs-mkpayload.c
index e9bcfbaceb..9a356e8b3f 100644
--- a/util/cbfstool/cbfs-mkpayload.c
+++ b/util/cbfstool/cbfs-mkpayload.c
@@ -55,9 +55,7 @@ int parse_elf_to_payload(const struct buffer *input, struct buffer *output,
{
Elf64_Phdr *phdr;
Elf64_Ehdr ehdr;
- Elf64_Shdr *shdr;
char *header;
- char *strtab;
int headers;
int segments = 1;
int isize = 0, osize = 0;
@@ -70,39 +68,15 @@ int parse_elf_to_payload(const struct buffer *input, struct buffer *output,
if (!compress)
return -1;
- if (elf_headers(input, &ehdr, &phdr, &shdr) < 0)
+ if (elf_headers(input, &ehdr, &phdr, NULL) < 0)
return -1;
DEBUG("start: parse_elf_to_payload\n");
headers = ehdr.e_phnum;
header = input->data;
- strtab = &header[shdr[ehdr.e_shstrndx].sh_offset];
-
- /* Count the number of headers - look for the .notes.pinfo
- * section */
-
- for (i = 0; i < ehdr.e_shnum; i++) {
- char *name;
-
- if (i == ehdr.e_shstrndx)
- continue;
-
- if (shdr[i].sh_size == 0)
- continue;
-
- name = (char *)(strtab + shdr[i].sh_name);
-
- if (!strcmp(name, ".note.pinfo")) {
- segments++;
- isize += (unsigned int)shdr[i].sh_size;
- }
- }
-
- /* Now, regular headers - we only care about PT_LOAD headers,
- * because that's what we're actually going to load
- */
-
+ /* Count the number of segment headers - we only care about PT_LOAD
+ headers, because that's what we're actually going to load */
for (i = 0; i < headers; i++) {
if (phdr[i].p_type != PT_LOAD)
continue;
@@ -144,30 +118,6 @@ int parse_elf_to_payload(const struct buffer *input, struct buffer *output,
*/
segments = 0;
- for (i = 0; i < ehdr.e_shnum; i++) {
- char *name;
- if (i == ehdr.e_shstrndx)
- continue;
-
- if (shdr[i].sh_size == 0)
- continue;
- name = (char *)(strtab + shdr[i].sh_name);
- if (!strcmp(name, ".note.pinfo")) {
- segs[segments].type = PAYLOAD_SEGMENT_PARAMS;
- segs[segments].load_addr = 0;
- segs[segments].len = (unsigned int)shdr[i].sh_size;
- segs[segments].offset = doffset;
-
- memcpy((unsigned long *)(output->data + doffset),
- &header[shdr[i].sh_offset], shdr[i].sh_size);
-
- doffset += segs[segments].len;
- osize += segs[segments].len;
-
- segments++;
- }
- }
-
for (i = 0; i < headers; i++) {
if (phdr[i].p_type != PT_LOAD)
continue;
@@ -223,7 +173,6 @@ int parse_elf_to_payload(const struct buffer *input, struct buffer *output,
out:
if (segs) free(segs);
- if (shdr) free(shdr);
if (phdr) free(phdr);
return ret;
}
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 1fde8cdfad..740a3b2a1e 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -864,7 +864,7 @@ static int cbfs_payload_decompress(struct cbfs_payload_segment *segments,
if (segments[i].type == PAYLOAD_SEGMENT_BSS ||
segments[i].type == PAYLOAD_SEGMENT_ENTRY) {
continue;
- } else if (segments[i].type == PAYLOAD_SEGMENT_PARAMS) {
+ } else if (segments[i].type == PAYLOAD_SEGMENT_DEPRECATED_PARAMS) {
memcpy(out_ptr, in_ptr, segments[i].len);
segments[i].offset = new_offset;
new_offset += segments[i].len;
@@ -1090,7 +1090,7 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch,
segments++;
} else if (payload_type == PAYLOAD_SEGMENT_BSS) {
segments++;
- } else if (payload_type == PAYLOAD_SEGMENT_PARAMS) {
+ } else if (payload_type == PAYLOAD_SEGMENT_DEPRECATED_PARAMS) {
segments++;
} else if (payload_type == PAYLOAD_SEGMENT_ENTRY) {
/* The last segment in a payload is always ENTRY as
@@ -1162,7 +1162,7 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch,
shdr.sh_size = segs[i].len;
name = strdup(".bss");
buffer_splice(&tbuff, buff, 0, 0);
- } else if (segs[i].type == PAYLOAD_SEGMENT_PARAMS) {
+ } else if (segs[i].type == PAYLOAD_SEGMENT_DEPRECATED_PARAMS) {
shdr.sh_type = SHT_NOTE;
shdr.sh_flags = 0;
shdr.sh_size = segs[i].len;
@@ -1398,8 +1398,8 @@ static int cbfs_print_decoded_payload_segment_info(
seg->load_addr, seg->len);
break;
- case PAYLOAD_SEGMENT_PARAMS:
- fprintf(fp, " parameters\n");
+ case PAYLOAD_SEGMENT_DEPRECATED_PARAMS:
+ fprintf(fp, " parameters (deprecated)\n");
break;
default: