[asterisk-bugs] [JIRA] (ASTERISK-25289) Build System does not respect CFLAGS and CXXFLAGS when building menuselect

abelbeck (JIRA) noreply at issues.asterisk.org
Mon Sep 5 08:52:01 CDT 2016


    [ https://issues.asterisk.org/jira/browse/ASTERISK-25289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=232146#comment-232146 ] 

abelbeck commented on ASTERISK-25289:
-------------------------------------

The resulting fix for this issue does not take into account for "cross-compiling".
http://git.asterisk.org/gitweb/?p=asterisk/asterisk.git;a=commit;h=3be6fa1e4b920fe1ccec67e4a78e101354a767d9

Our project has cross-compiled Asterisk for many years, we pass CFLAGS and the resulting AST_NATIVE_ARCH was undefined, it worked.

Then with Asterisk 13.11.0 the resulting binary crashed with illegal operand at startup, shortly after reading "/etc/localtime".

After much head-scratching and hair-pulling I discovered this change and -march=native was being defined behind our back.

Adding: {noformat}menuselect/menuselect --disable BUILD_NATIVE menuselect.makeopts{noformat} solves the problem, but it would seem less fragile and better to add the condition {noformat}if test "${cross_compiling}" = "no";{noformat} to whether AST_NATIVE_ARCH=1 is set.

> Build System does not respect CFLAGS and CXXFLAGS when building menuselect
> --------------------------------------------------------------------------
>
>                 Key: ASTERISK-25289
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-25289
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Core/BuildSystem
>    Affects Versions: 11.22.0, 13.9.1
>         Environment: Fedora 22, x86_64; but any distro with a compiler with sanitizers will do (excpet maybe Clang, since it reject's the use of trampolines that Asterisk uses).
>            Reporter: Jeffrey Walton
>            Assignee: Alexander Traud
>      Target Release: 13.11.0, 14.0.0
>
>         Attachments: cflag_alternative_A.patch, cflag_alternative_B.patch, config.log
>
>
> GCC added sanitizers at 4.8. I'm attempting to build Asterisk with the UBsan (undefined behavior) and Asan (address) sanitizers enabled. UBsan is enabled with `-fsanitize=undefined`, and Asan is enabled with `-fsanitize=address`. (UBasan and Asan are mutually exclusive, so we repeat the steps below twice).
> localhost asterisk-13.4.0]$ export CFLAGS=-fsanitize=undefined
> localhost asterisk-13.4.0]$ export CXXFLAGS=-fsanitize=undefined
> localhost asterisk-13.4.0]$ ./configure
> ...
> Looking at the config.log, it appears the CFLAGS and CXXFLAGS were tested and accepted. Then:
> configure: Package configured for: 
> configure: OS type  : linux-gnu
> configure: Host CPU : x86_64
> configure: build-cpu:vendor:os: x86_64 : unknown : linux-gnu :
> configure: host-cpu:vendor:os: x86_64 : unknown : linux-gnu :
> localhost asterisk-13.4.0]$ make
> CC="cc" CXX="g++" LD="" AR="" RANLIB="" CFLAGS="" LDFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" makeopts
> make[1]: Entering directory '/home/jwalton/Desktop/asterisk-13.4.0/menuselect'
> make[1]: 'makeopts' is up to date.
> make[1]: Leaving directory '/home/jwalton/Desktop/asterisk-13.4.0/menuselect'
> CC="cc" CXX="g++" LD="" AR="" RANLIB="" CFLAGS="" LDFLAGS="" make -C menuselect CONFIGURE_SILENT="--silent" menuselect
> make[1]: Entering directory '/home/jwalton/Desktop/asterisk-13.4.0/menuselect'
> gcc  -g -D_GNU_SOURCE -Wall -I/usr/include/libxml2   -c -o menuselect.o menuselect.c
> gcc  -g -D_GNU_SOURCE -Wall   -c -o strcompat.o strcompat.c
> gcc  -g -D_GNU_SOURCE -Wall   -c -o menuselect_stub.o menuselect_stub.c
> gcc  -o menuselect menuselect.o strcompat.o menuselect_stub.o -lxml2 -lz -lm -ldl
> make[1]: Leaving directory '/home/jwalton/Desktop/asterisk-13.4.0/menuselect'
> Generating input for menuselect ...
> menuselect/menuselect --check-deps menuselect.makeopts
> Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH
> ***********************************************************
>   The existing menuselect.makeopts file did not specify    
>   that 'BUILD_NATIVE' should not be included.  However, either some  
>   dependencies for this module were not found or a         
>   conflict exists.                                         
>                                                            
>   Either run 'make menuselect' or remove the existing      
>   menuselect.makeopts file to resolve this issue.          
> ***********************************************************
> Makefile:344: recipe for target 'menuselect.makeopts' failed
> make: *** [menuselect.makeopts] Error 255



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list