Fix build WITH_LIBBFD and libbfd 2.34+

Closes: https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/368
Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
pull/372/head
Alexander Golubev 4 days ago committed by Fat-Zer
parent 1256297108
commit 0a9401e9c5

@ -1102,6 +1102,16 @@ if( WITH_LIBBFD )
endif( NOT HAVE_LIBBFD )
set( LIBBFD_LIBRARIES bfd )
check_include_file( "demangle.h" HAVE_DEMANGLE_H )
tde_save_and_set( CMAKE_REQUIRED_LIBRARIES "${LIBBFD_LIBRARIES}" )
check_c_source_compiles("
#define PACKAGE tdelibs
#define PACKAGE_VERSION \"${TDE_VERSION}\"
#include <bfd.h>
int main() {bfd_section_flags((asection *)0); return 0;} "
HAVE_LIBBFD_2_34_API
)
tde_restore( CMAKE_REQUIRED_LIBRARIES )
endif( WITH_LIBBFD )

@ -108,6 +108,10 @@
/* Define to 1 if libbfd provides demangle.h header */
#cmakedefine HAVE_DEMANGLE_H 1
/* Define to 1 if libbfd have API of version 2.34+ (i.e.
* bfd_section_flags() has only one paremater) */
#cmakedefine HAVE_LIBBFD_2_34_API 1
/* Define if getaddrinfo is broken and should be replaced */
#cmakedefine HAVE_BROKEN_GETADDRINFO 1

@ -693,10 +693,15 @@ void bfdFillAdditionalFunctionsInfo(BacktraceFunctionInfo &func) {
// found source file and line for given address
for (asection *sect = abfd->sections; sect != NULL; sect = sect->next) {
#ifdef HAVE_LIBBFD_2_34_API
if (bfd_section_flags(sect) & SEC_ALLOC) {
bfd_vma sectStart = bfd_section_vma(sect);
bfd_vma sectEnd = sectStart + bfd_section_size(sect);
#else // HAVE_LIBBFD_2_34_API
if (bfd_get_section_flags(abfd, sect) & SEC_ALLOC) {
bfd_vma sectStart = bfd_get_section_vma(abfd, sect);
bfd_vma sectEnd = sectStart + bfd_section_size(abfd, sect);
#endif // HAVE_LIBBFD_2_34_API
if (sectStart <= func.offset && func.offset < sectEnd) {
bfd_vma sectOffset = func.offset - sectStart;
const char* functionName;

Loading…
Cancel
Save