buildroot/package/rpm/0002-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch
Thomas Petazzoni 0018d7d6ba rpm: add patches to fix bfd.h related build issues
This commit adds two patches to the rpm package to fix two separate but
related build issues:

 - The first patch fixes a build that occurs when rpm is built after
   elfutils, but without binutils. In this case, dwarf.h is present, so
   rpm enables the build of a number of additional tools. But one of
   them uses bfd.h, provided by binutils, without checking for its
   existence. So the first patch fixes that by checking for bfd.h
   existence before enabling the tool.

   Fixes:

     http://autobuild.buildroot.net/results/810/810e24cab65f67d143da29c78c0f89d37a851cd7/build-end.log

 - The second patch fixes a build issue that occurs when rpm is built
   after both dwarf and binutils. In this case, bfd.h complains because
   config.h is not included. That's a weird and silly issue in bfd.h
   that the binutils developers don't want to fix, and you have to
   define PACKAGE or PACKAGE_VERSION before including bfd.h to use it
   outside of binutils.

   Fixes:

     http://autobuild.buildroot.net/results/362/362502f89631c9ba1d71906527674657ccff01ed/build-end.log

Thanks a lot to James Knight <james.knight@rockwellcollins.com> for the
initial investigation about the first issue.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-12-09 00:04:36 +01:00

44 lines
1.5 KiB
Diff

From 65afab91444d4996a8e61d1e2d27d52e18417ef5 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Thu, 8 Dec 2016 23:45:55 +0100
Subject: [PATCH 2/2] tools/sepdebugcrcfix.c: fix build with recent binutils
Moderately recent binutils versions install a <bfd.h> header that
checks if config.h is included. While this makes sense in binutils
itself, it does not outside. So the binutils developers have added a
check: if PACKAGE or PACKAGE_VERSION are defined, they assume you're
re-using bfd.h outside of binutils, and therefore including it without
including config.h is legit.
So we take the same approch as numerous users of bfd.h: fake a PACKAGE
definition. See for example tools/perf/util/srcline.c in the Linux
kernel source tree.
This fixes the following build error:
In file included from tools/sepdebugcrcfix.c:31:0:
/home/test/autobuild/run/instance-0/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/bfd.h:35:2: error: #error config.h must be included before this header
#error config.h must be included before this header
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
tools/sepdebugcrcfix.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
index cd7fa02..e7b480f 100644
--- a/tools/sepdebugcrcfix.c
+++ b/tools/sepdebugcrcfix.c
@@ -28,6 +28,8 @@
#include <error.h>
#include <libelf.h>
#include <gelf.h>
+/* Needed to please <bfd.h> */
+#define PACKAGE "rpm"
#include <bfd.h>
#define _(x) x
--
2.7.4