diff --git a/appveyor.yml b/appveyor.yml index 4e175514b..4ca454ca9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -55,7 +55,7 @@ for: echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> NO WARNINGS" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" - src\engine\b2.exe --debug-configuration b2 warnings-as-errors=on toolset=%TEST_TOOLSET% + src\engine\b2.exe --debug-configuration b2 warnings-as-errors=on variant=debug,release address-model=32,64 toolset=%TEST_TOOLSET% - cmd: | echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> BOOTSTRAP" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a520147ef..0452dda6f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -164,14 +164,8 @@ stages: set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam - ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} + ./src/engine/b2 b2 warnings-as-errors=on variant=debug,release address-model=32,64 toolset=${TEST_TOOLSET} displayName: "No Warnings" - - bash: | - set -e - CXX_PATH=`which ${CXX}` - echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam - ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} address-model=64 - displayName: "No-Warn 64bit" - bash: | set -e CXX_PATH=`which ${CXX}` @@ -216,14 +210,8 @@ stages: $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH $env:path += ';' + $env:CXX_PATH echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam - ./src/engine/b2.exe --debug-configuration b2 warnings-as-errors=on toolset=$env:TEST_TOOLSET + ./src/engine/b2.exe --debug-configuration b2 warnings-as-errors=on variant=debug,release toolset=$env:TEST_TOOLSET displayName: "No Warnings" - - powershell: | - $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH - $env:path += ';' + $env:CXX_PATH - echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam - ./src/engine/b2.exe --debug-configuration b2 warnings-as-errors=on toolset=$env:TEST_TOOLSET address-model=64 - displayName: "No-Warn 64bit" - powershell: | $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH $env:path += ';' + $env:CXX_PATH @@ -323,14 +311,8 @@ stages: set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam - ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} + ./src/engine/b2 b2 warnings-as-errors=on variant=debug,release address-model,32,64 toolset=${TEST_TOOLSET} displayName: "No Warnings" - - bash: | - set -e - CXX_PATH=`which ${CXX}` - echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam - ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} address-model=64 - displayName: "No-Warn 64bit" - bash: | set -e CXX_PATH=`which ${CXX}` diff --git a/src/engine/debugger.cpp b/src/engine/debugger.cpp index 3486c60c0..97eeb6f06 100644 --- a/src/engine/debugger.cpp +++ b/src/engine/debugger.cpp @@ -160,11 +160,10 @@ static LIST * debug_list_read( FILE * in ) { int len; int i; - int ch; LIST * result = L0; fscanf( in, "%d", &len ); - ch = fgetc( in ); - assert( ch == '\n' ); + int ch = fgetc( in ); + if (ch > 0) assert( ch == '\n' ); for ( i = 0; i < len; ++i ) { result = list_push_back( result, debug_object_read( in ) ); diff --git a/src/engine/execcmd.cpp b/src/engine/execcmd.cpp index b6c715171..dfbd5a7f8 100644 --- a/src/engine/execcmd.cpp +++ b/src/engine/execcmd.cpp @@ -41,9 +41,9 @@ static int intr; */ void argv_from_shell( char const * * argv, LIST * shell, char const * command, - int const slot ) + int32_t const slot ) { - static char jobno[ 4 ]; + static char jobno[ 12 ]; int i; int gotpercent = 0; diff --git a/src/engine/execcmd.h b/src/engine/execcmd.h index 206fb7788..fa24e432d 100644 --- a/src/engine/execcmd.h +++ b/src/engine/execcmd.h @@ -91,7 +91,7 @@ void exec_wait(); * given shell list. */ void argv_from_shell( char const * * argv, LIST * shell, char const * command, - int const slot ); + int32_t const slot ); /* Interrupt routine bumping the internal interrupt counter. Needs to be * registered by platform specific exec*.c modules. diff --git a/src/engine/function.cpp b/src/engine/function.cpp index d8971471c..357f331c3 100644 --- a/src/engine/function.cpp +++ b/src/engine/function.cpp @@ -3193,7 +3193,7 @@ void argument_list_push( struct arg_list * formal, int32_t formal_count, for ( j = 0; j < formal[ i ].size; ++j ) { struct argument * formal_arg = &formal[ i ].args[ j ]; - LIST * value; + LIST * value = L0; switch ( formal_arg->flags ) { @@ -3871,7 +3871,9 @@ LIST * function_run( FUNCTION * function_, FRAME * frame, STACK * s ) LIST * l; LIST * r; LIST * result = L0; +#ifndef NDEBUG void * saved_stack = s->data; +#endif PROFILE_ENTER_LOCAL(function_run); @@ -4250,8 +4252,8 @@ LIST * function_run( FUNCTION * function_, FRAME * frame, STACK * s ) backtrace( frame ); assert( saved_stack == s->data ); } -#endif assert( saved_stack == s->data ); +#endif debug_on_exit_function( function->base.rulename ); PROFILE_EXIT_LOCAL(function_run_INSTR_RETURN); PROFILE_EXIT_LOCAL(function_run); diff --git a/src/engine/jam_strings.cpp b/src/engine/jam_strings.cpp index b8511dd89..bee8e0bbf 100644 --- a/src/engine/jam_strings.cpp +++ b/src/engine/jam_strings.cpp @@ -26,7 +26,7 @@ static void assert_invariants( string * self ) } assert( self->size < self->capacity ); - assert( ( self->capacity <= sizeof( self->opt ) ) == ( self->value == self->opt ) ); + assert( ( self->capacity <= int32_t(sizeof( self->opt )) ) == ( self->value == self->opt ) ); assert( self->value[ self->size ] == 0 ); /* String objects modified manually after construction to contain embedded * '\0' characters are considered structurally valid. @@ -198,7 +198,7 @@ void string_unit_test() for ( i = 0; i < limit; ++i ) { string_push_back( s, (char)( i + 1 ) ); - assert( s->size == i + 1 ); + assert( s->size == int32_t(i + 1) ); } assert( s->size == limit ); assert( s->value != s->opt ); diff --git a/src/engine/lists.cpp b/src/engine/lists.cpp index 36b1ca950..d646c6e22 100644 --- a/src/engine/lists.cpp +++ b/src/engine/lists.cpp @@ -365,7 +365,7 @@ LIST * list_unique( LIST * sorted_list ) void list_done() { - for ( int32_t i = 0; i < sizeof( freelist ) / sizeof( freelist[ 0 ] ); ++i ) + for ( int32_t i = 0; i < int32_t(sizeof( freelist ) / sizeof( freelist[ 0 ] )); ++i ) { LIST * l = freelist[ i ]; while ( l ) diff --git a/src/engine/make1.cpp b/src/engine/make1.cpp index 1e200d9ed..0e6e49e6d 100644 --- a/src/engine/make1.cpp +++ b/src/engine/make1.cpp @@ -1065,11 +1065,11 @@ static void swap_settings static CMD * make1cmds( TARGET * t ) { CMD * cmds = 0; - CMD * last_cmd; + CMD * last_cmd = 0; LIST * shell = L0; module_t * settings_module = 0; TARGET * settings_target = 0; - ACTIONS * a0; + ACTIONS * a0 = 0; int32_t const running_flag = globs.noexec ? A_RUNNING_NOEXEC : A_RUNNING; /* Step through actions. diff --git a/src/engine/object.cpp b/src/engine/object.cpp index 332b45751..069bc215e 100644 --- a/src/engine/object.cpp +++ b/src/engine/object.cpp @@ -229,20 +229,6 @@ static char const * string_set_insert( string_set * set, char const * string, } -static struct hash_item * object_get_item( OBJECT * obj ) -{ - return (struct hash_item *)( (char *)obj - offsetof( struct hash_item, data - ) ); -} - - -static void object_validate( OBJECT * obj ) -{ - assert( obj ); - assert( object_get_item( obj )->header.magic == OBJECT_MAGIC ); -} - - /* * object_new_range() - create an object from a string of given length */ @@ -283,6 +269,20 @@ OBJECT * object_new( char const * const string ) #ifndef object_copy +static struct hash_item * object_get_item( OBJECT * obj ) +{ + return (struct hash_item *)( (char *)obj - offsetof( struct hash_item, data + ) ); +} + + +static void object_validate( OBJECT * obj ) +{ + assert( obj ); + assert( object_get_item( obj )->header.magic == OBJECT_MAGIC ); +} + + /* * object_copy() - return a copy of an object */