diff options
| author | Adriaan de Groot <adridg@FreeBSD.org> | 2020-06-01 23:20:08 +0000 |
|---|---|---|
| committer | Adriaan de Groot <adridg@FreeBSD.org> | 2020-06-01 23:20:08 +0000 |
| commit | 367e6bacf4910738d17ceb2172c92d16ac3f3523 (patch) | |
| tree | 010f55ec846aa22c2021a0c7d902a8d16c327525 | |
| parent | Connect the new lang/gcc10 port which branched off lang/gcc10-devel. (diff) | |
devel/heaptrack Try to fix 32-bit build
I don't see that this can ever have built on 32-bit FreeBSD (i386
in particular) because the code uses Sxword, which our elf32.h
doesn't define. The Linux elf.h (which hanbles both sizes) does
define a 64-bit Sxword.
The patch throws in a using (typedef, but C++-style) that mimics
the 64-bit integers used in the Linux headers; this 64-bit value
doesn't match the size of Elf32_Dyn fields in either OS, but
I'll take a warning over non-stop build failures any day.
| -rw-r--r-- | devel/heaptrack/Makefile | 1 | ||||
| -rw-r--r-- | devel/heaptrack/files/patch-src_track_heaptrack__inject.cpp | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/devel/heaptrack/Makefile b/devel/heaptrack/Makefile index 0b80dde382cc..8a9363cb16c7 100644 --- a/devel/heaptrack/Makefile +++ b/devel/heaptrack/Makefile @@ -4,6 +4,7 @@ PORTNAME= heaptrack DISTVERSIONPREFIX= v DISTVERSION= 1.1.0-179 DISTVERSIONSUFFIX= -gb0f8f2d +PORTREVISION= 1 CATEGORIES= devel kde MAINTAINER= kde@FreeBSD.org diff --git a/devel/heaptrack/files/patch-src_track_heaptrack__inject.cpp b/devel/heaptrack/files/patch-src_track_heaptrack__inject.cpp new file mode 100644 index 000000000000..8178f21beffb --- /dev/null +++ b/devel/heaptrack/files/patch-src_track_heaptrack__inject.cpp @@ -0,0 +1,21 @@ +--- src/track/heaptrack_inject.cpp.orig 2020-06-01 22:47:27 UTC ++++ src/track/heaptrack_inject.cpp +@@ -66,8 +66,18 @@ using Dyn = ElfW(Dyn); + using Rel = ElfW(Rel); + using Rela = ElfW(Rela); + using Sym = ElfW(Sym); ++#if __WORDSIZE == 64 + using Sxword = ElfW(Sxword); + using Xword = ElfW(Xword); ++#else ++// FreeBSD elf32.h doesn't define Elf32_Sxword or _Xword. This is used in struct ++// elftable, where it's used as a tag value. Our Elf32_Dyn uses Elf32_Sword there, ++// as does the Linux definition (and the standard); the El64_Dyn uses Sxword. ++// ++// Linux elf.h defines Elf32_Sxword as a 64-bit quantity, so let's do that ++using Sxword = int64_t; ++using Xword = uint64_t; ++#endif + } + + void overwrite_symbols() noexcept; |
