Fix warnings in coreboot utilities.
- Fix some poor programming practice (breaks of strict aliasing as well
as not checking the return value of read)
- Use PRIx64 instead of %llx to prevent compilation warnings with both
32bit and 64bit compilers
- Use same compiler command options when linking inteltool and when
detecting libpci for inteltool
Change-Id: I08b2e8d1bbc908f6b1f26d25cb3a4b03d818e124
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/752
Tested-by: build bot (Jenkins)
Reviewed-by: Mathias Krause <minipli@googlemail.com>
diff --git a/util/inteltool/Makefile b/util/inteltool/Makefile
index 6a01173..d754005 100644
--- a/util/inteltool/Makefile
+++ b/util/inteltool/Makefile
@@ -42,7 +42,7 @@
all: pciutils dep $(PROGRAM)
$(PROGRAM): $(OBJS)
- $(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
clean:
rm -f $(PROGRAM) *.o *~
@@ -59,7 +59,7 @@
printf "struct pci_access *pacc;\n"; \
printf "int main(int argc, char **argv)\n"; \
printf "{ pacc = pci_alloc(); return 0; }\n"; ) > .test.c )
- @$(CC) $(CFLAGS) $(LDFLAGS) .test.c -o .test &>/dev/null && \
+ @$(CC) $(CFLAGS) .test.c -o .test $(LDFLAGS) &>/dev/null && \
printf "found.\n" || ( printf "not found.\n\n"; \
printf "Please install pciutils-devel and zlib-devel.\n"; \
printf "See README for more information.\n\n"; \
diff --git a/util/inteltool/cpu.c b/util/inteltool/cpu.c
index 20748bd..f018381 100644
--- a/util/inteltool/cpu.c
+++ b/util/inteltool/cpu.c
@@ -57,7 +57,7 @@
msr_t rdmsr(int addr)
{
- uint8_t buf[8];
+ uint32_t buf[2];
msr_t msr = { 0xffffffff, 0xffffffff };
if (lseek(fd_msr, (off_t) addr, SEEK_SET) == -1) {
@@ -67,9 +67,8 @@
}
if (read(fd_msr, buf, 8) == 8) {
- msr.lo = *(uint32_t *)buf;
- msr.hi = *(uint32_t *)(buf + 4);
-
+ msr.lo = buf[0];
+ msr.hi = buf[1];
return msr;
}
diff --git a/util/inteltool/inteltool.c b/util/inteltool/inteltool.c
index 6b99605..e5c2b86 100644
--- a/util/inteltool/inteltool.c
+++ b/util/inteltool/inteltool.c
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <inttypes.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/mman.h>
@@ -99,7 +100,8 @@
fd_mem, (off_t) phys_addr);
if (virt_addr == MAP_FAILED) {
- printf("Error mapping physical memory 0x%08lx[0x%zx]\n", phys_addr, len);
+ printf("Error mapping physical memory 0x%08" PRIx64 "[0x%zx]\n",
+ phys_addr, len);
return NULL;
}
diff --git a/util/inteltool/memory.c b/util/inteltool/memory.c
index 9230419..18300ac 100644
--- a/util/inteltool/memory.c
+++ b/util/inteltool/memory.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <inttypes.h>
#include "inteltool.h"
/*
@@ -130,9 +131,9 @@
}
if (nb->device_id == PCI_DEVICE_ID_INTEL_82865)
- printf("BAR6 = 0x%08llx (MEM)\n\n", mchbar_phys);
+ printf("BAR6 = 0x%08" PRIx64 " (MEM)\n\n", mchbar_phys);
else
- printf("MCHBAR = 0x%08llx (MEM)\n\n", mchbar_phys);
+ printf("MCHBAR = 0x%08" PRIx64 " (MEM)\n\n", mchbar_phys);
for (i = 0; i < size; i += 4) {
if (*(uint32_t *)(mchbar + i))
diff --git a/util/inteltool/pcie.c b/util/inteltool/pcie.c
index 4913150..ea23835 100644
--- a/util/inteltool/pcie.c
+++ b/util/inteltool/pcie.c
@@ -19,6 +19,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <inttypes.h>
#include "inteltool.h"
/*
@@ -72,7 +73,7 @@
exit(1);
}
- printf("EPBAR = 0x%08llx (MEM)\n\n", epbar_phys);
+ printf("EPBAR = 0x%08" PRIx64 " (MEM)\n\n", epbar_phys);
for (i = 0; i < size; i += 4) {
if (*(uint32_t *)(epbar + i))
printf("0x%04x: 0x%08x\n", i, *(uint32_t *)(epbar+i));
@@ -135,7 +136,7 @@
exit(1);
}
- printf("DMIBAR = 0x%08llx (MEM)\n\n", dmibar_phys);
+ printf("DMIBAR = 0x%08" PRIx64 " (MEM)\n\n", dmibar_phys);
for (i = 0; i < size; i += 4) {
if (*(uint32_t *)(dmibar + i))
printf("0x%04x: 0x%08x\n", i, *(uint32_t *)(dmibar+i));
@@ -213,7 +214,7 @@
return 1;
}
- printf("PCIEXBAR: 0x%08llx\n", pciexbar_phys);
+ printf("PCIEXBAR: 0x%08" PRIx64 "\n", pciexbar_phys);
pciexbar = map_physical(pciexbar_phys, (max_busses * 1024 * 1024));