Bug 209100

Summary: sysutils/afflib: Fix build with libc++ 3.8.0
Product: Ports & Packages Reporter: Dimitry Andric <dim>
Component: Individual Port(s)Assignee: Antoine Brodin <antoine>
Status: Closed FIXED    
Severity: Affects Some People Flags: bugzilla: maintainer-feedback? (antoine)
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 208158    
Attachments:
Description Flags
Use bswap macros/functions from sys/endian.h none

Description Dimitry Andric freebsd_committer 2016-04-27 16:53:01 UTC
Created attachment 169761 [details]
Use bswap macros/functions from sys/endian.h

During the exp-run in bug 208158, it was found that sysutils/afflib gives errors with libc++ 3.8.0 [1]:

In file included from vnode_qemu.cpp:18:
In file included from ./qemu/qemu-common.h:62:
./qemu/bswap.h:46:24: error: C++ requires a type specifier for all declarations
static inline uint16_t bswap16(uint16_t x)
                       ^
/usr/include/sys/endian.h:59:20: note: expanded from macro 'bswap16'
#define bswap16(x)      __bswap16(x)
                        ^

And similar errors for bswap32() and bswap64().  This is because afflib attempts to define its own versions of these functions, but newer versions of libc++ include <sys/endian.h>, which already defines them.  Use the versions from <sys/endian.h> instead.

[1] http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-03-22_18h30m05s/logs/errors/afflib-3.7.6.log
Comment 1 commit-hook freebsd_committer 2016-04-28 16:30:26 UTC
A commit references this bug:

Author: antoine
Date: Thu Apr 28 16:30:04 UTC 2016
New revision: 414183
URL: https://svnweb.freebsd.org/changeset/ports/414183

Log:
  Use bswap* from sys/endian.h instead of defining own versions
  This fixes build with libc++ 3.8.0

  PR:		209100
  Submitted by:	dim@

Changes:
  head/sysutils/afflib/files/
  head/sysutils/afflib/files/patch-lib_qemu_bswap.h