summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Roth <martinroth@chromium.org>2020-09-01 10:54:11 -0600
committerAaron Durbin <adurbin@chromium.org>2020-09-03 16:25:40 +0000
commiteca423b44f23a801cb741c27c6700b42d7e8d528 (patch)
tree0b60a5ea84e0e38189c3c65d5cfc6765b3326b9a
parent5ae96aa17160d9469783540af1e326ba01b82c3e (diff)
util/amdfwtool: Fix warning taking address of packed struct member
GCC9 introduced a new warning [-Waddress-of-packed-member]. This is giving the following warning when building amdfwtool: warning: taking address of packed member of ‘struct _bios_directory_entry’ may result in an unaligned pointer value. Looking at the definition of the struct, it looks like this is probably true. Since the function being called doesn't read from the values, zeroing them out in the beginning of the function, the code just passes pointers to the temporary variables without initializing them. BUG=None TEST=Build & use AMD firmware table. BRANCH=Zork Signed-off-by: Martin Roth <martinroth@chromium.org> Change-Id: I2f1e0aede8563e39ab0f2ec6daed91d6431eac43 Reviewed-on: https://review.coreboot.org/c/coreboot/+/44986 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Eric Peers <epeers@google.com>
-rw-r--r--util/amdfwtool/amdfwtool.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c
index 499a1bd29c..299ed0cd97 100644
--- a/util/amdfwtool/amdfwtool.c
+++ b/util/amdfwtool/amdfwtool.c
@@ -888,6 +888,8 @@ static void integrate_bios_firmwares(context *ctx,
unsigned int i, count;
int level;
int apob_idx;
+ uint32_t size;
+ uint64_t source;
/* This function can create a primary table, a secondary table, or a
* flattened table which contains all applicable types. These if-else
@@ -996,10 +998,11 @@ static void integrate_bios_firmwares(context *ctx,
break;
case AMD_BIOS_BIN:
/* Don't make a 2nd copy, point to the same one */
- if (level == BDT_LVL1 && locate_bdt2_bios(biosdir2,
- &biosdir->entries[count].source,
- &biosdir->entries[count].size))
+ if (level == BDT_LVL1 && locate_bdt2_bios(biosdir2, &source, &size)) {
+ biosdir->entries[count].source = source;
+ biosdir->entries[count].size = size;
break;
+ }
/* level 2, or level 1 and no copy found in level 2 */
biosdir->entries[count].source = fw_table[i].src;