[v2,2/2] sim/common: Fix warnings: "warning: implicit declaration of function..."

Message ID 20190316214018.9398-3-shorne@gmail.com
State New
Headers show
Series
  • Fix build failure with sim-arange inlining
Related show

Commit Message

Stafford Horne March 16, 2019, 9:40 p.m.
During building of several cgen simulator's I notices the below
warnings.  Adding includes fixes these.

Including config.h allows stdio.h to properly configure itself to expose
asprintf().

The other warnings for abort, free, memset, strlen are trivial.

Warnings:

../../../binutils-gdb/sim/or1k/../common/sim-watch.c: In function ‘sim_watchpoint_install’:
../../../binutils-gdb/sim/or1k/../common/sim-watch.c:415:10: warning: implicit declaration of function ‘asprintf’; did you mean ‘vasprintf’? [-Wimplicit-function-declaration]
      if (asprintf (&name, "watch-%s-%s",
          ^~~~~~~~
          vasprintf

../../../binutils-gdb/sim/lm32/../common/hw-device.c: In function ‘hw_strdup’:
../../../binutils-gdb/sim/lm32/../common/hw-device.c:59:34: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
       char *dup = hw_zalloc (me, strlen (str) + 1);
                                  ^~~~~~

../../../binutils-gdb/sim/lm32/../common/hw-events.c: In function ‘hw_event_queue_schedule’:
../../../binutils-gdb/sim/lm32/../common/hw-events.c:92:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]
   memset (&dummy, 0, sizeof dummy);
   ^~~~~~

../../../binutils-gdb/sim/lm32/../common/hw-handles.c: In function ‘hw_handle_remove_ihandle’:
../../../binutils-gdb/sim/lm32/../common/hw-handles.c:211:4: warning: implicit declaration of function ‘free’ [-Wimplicit-function-declaration]
    free (delete);
    ^~~~

../../../binutils-gdb/sim/lm32/../common/sim-fpu.c: In function ‘pack_fpu’:
../../../binutils-gdb/sim/lm32/../common/sim-fpu.c:292:7: warning: implicit declaration of function ‘abort’ [-Wimplicit-function-declaration]
       abort ();
       ^~~~~

sim/common/ChangeLog:

	* sim-options.c: Include "config.h".
	Include <stdio.h>.
	* sim-watch.c: Include "config.h".
	Include <stdio.h>.
	* hw-device.c: Include <string.h>.
	* hw-events.c: Include <string.h>.
	* hw-handles.c: Include <stdlib.h>.
	* sim-fpu.c: Include <stdlib.h>.
---
 sim/common/hw-device.c   | 4 ++++
 sim/common/hw-events.c   | 3 +++
 sim/common/hw-handles.c  | 3 +++
 sim/common/sim-fpu.c     | 3 +++
 sim/common/sim-options.c | 2 ++
 sim/common/sim-watch.c   | 2 ++
 6 files changed, 17 insertions(+)

-- 
2.19.1

Comments

Andrew Burgess March 21, 2019, 10:14 p.m. | #1
* Stafford Horne <shorne@gmail.com> [2019-03-17 06:40:18 +0900]:

> During building of several cgen simulator's I notices the below

> warnings.  Adding includes fixes these.

> 

> Including config.h allows stdio.h to properly configure itself to expose

> asprintf().

> 

> The other warnings for abort, free, memset, strlen are trivial.

> 

> Warnings:

> 

> ../../../binutils-gdb/sim/or1k/../common/sim-watch.c: In function ‘sim_watchpoint_install’:

> ../../../binutils-gdb/sim/or1k/../common/sim-watch.c:415:10: warning: implicit declaration of function ‘asprintf’; did you mean ‘vasprintf’? [-Wimplicit-function-declaration]

>       if (asprintf (&name, "watch-%s-%s",

>           ^~~~~~~~

>           vasprintf

> 

> ../../../binutils-gdb/sim/lm32/../common/hw-device.c: In function ‘hw_strdup’:

> ../../../binutils-gdb/sim/lm32/../common/hw-device.c:59:34: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]

>        char *dup = hw_zalloc (me, strlen (str) + 1);

>                                   ^~~~~~

> 

> ../../../binutils-gdb/sim/lm32/../common/hw-events.c: In function ‘hw_event_queue_schedule’:

> ../../../binutils-gdb/sim/lm32/../common/hw-events.c:92:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]

>    memset (&dummy, 0, sizeof dummy);

>    ^~~~~~

> 

> ../../../binutils-gdb/sim/lm32/../common/hw-handles.c: In function ‘hw_handle_remove_ihandle’:

> ../../../binutils-gdb/sim/lm32/../common/hw-handles.c:211:4: warning: implicit declaration of function ‘free’ [-Wimplicit-function-declaration]

>     free (delete);

>     ^~~~

> 

> ../../../binutils-gdb/sim/lm32/../common/sim-fpu.c: In function ‘pack_fpu’:

> ../../../binutils-gdb/sim/lm32/../common/sim-fpu.c:292:7: warning: implicit declaration of function ‘abort’ [-Wimplicit-function-declaration]

>        abort ();

>        ^~~~~

> 

> sim/common/ChangeLog:

> 

> 	* sim-options.c: Include "config.h".

> 	Include <stdio.h>.

> 	* sim-watch.c: Include "config.h".

> 	Include <stdio.h>.

> 	* hw-device.c: Include <string.h>.

> 	* hw-events.c: Include <string.h>.

> 	* hw-handles.c: Include <stdlib.h>.

> 	* sim-fpu.c: Include <stdlib.h>.


This all looks good.

Thanks,
Andrew


> ---

>  sim/common/hw-device.c   | 4 ++++

>  sim/common/hw-events.c   | 3 +++

>  sim/common/hw-handles.c  | 3 +++

>  sim/common/sim-fpu.c     | 3 +++

>  sim/common/sim-options.c | 2 ++

>  sim/common/sim-watch.c   | 2 ++

>  6 files changed, 17 insertions(+)

> 

> diff --git a/sim/common/hw-device.c b/sim/common/hw-device.c

> index ee1bfad893..458ee22caa 100644

> --- a/sim/common/hw-device.c

> +++ b/sim/common/hw-device.c

> @@ -27,6 +27,10 @@

>  #include <stdlib.h>

>  #endif

>  

> +#if HAVE_STRING_H

> +#include <string.h>

> +#endif

> +

>  /* Address methods */

>  

>  const hw_unit *

> diff --git a/sim/common/hw-events.c b/sim/common/hw-events.c

> index e6523365bd..f78be2aa46 100644

> --- a/sim/common/hw-events.c

> +++ b/sim/common/hw-events.c

> @@ -23,6 +23,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>  

>  #include "sim-events.h"

>  

> +#if HAVE_STRING_H

> +#include <string.h>

> +#endif

>  

>  /* The hw-events object is implemented using sim-events */

>  

> diff --git a/sim/common/hw-handles.c b/sim/common/hw-handles.c

> index 2848b9bcb5..d05656235d 100644

> --- a/sim/common/hw-handles.c

> +++ b/sim/common/hw-handles.c

> @@ -23,6 +23,9 @@

>  #include "hw-main.h"

>  #include "hw-base.h"

>  

> +#if HAVE_STDLIB_H

> +#include <stdlib.h>

> +#endif

>  

>  struct hw_handle_mapping

>  {

> diff --git a/sim/common/sim-fpu.c b/sim/common/sim-fpu.c

> index 81cdbf5061..74f5fd488c 100644

> --- a/sim/common/sim-fpu.c

> +++ b/sim/common/sim-fpu.c

> @@ -41,6 +41,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>  #include "sim-io.h"

>  #include "sim-assert.h"

>  

> +#ifdef HAVE_STDLIB_H

> +#include <stdlib.h>

> +#endif

>  

>  /* Debugging support.

>     If digits is -1, then print all digits.  */

> diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c

> index 69aebfe3d0..dc4a71203a 100644

> --- a/sim/common/sim-options.c

> +++ b/sim/common/sim-options.c

> @@ -17,6 +17,7 @@ GNU General Public License for more details.

>  You should have received a copy of the GNU General Public License

>  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>  

> +#include "config.h"

>  #include "sim-main.h"

>  #ifdef HAVE_STRING_H

>  #include <string.h>

> @@ -29,6 +30,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>  #include <stdlib.h>

>  #endif

>  #include <ctype.h>

> +#include <stdio.h>

>  #include "libiberty.h"

>  #include "sim-options.h"

>  #include "sim-io.h"

> diff --git a/sim/common/sim-watch.c b/sim/common/sim-watch.c

> index 6c357f8267..174336b377 100644

> --- a/sim/common/sim-watch.c

> +++ b/sim/common/sim-watch.c

> @@ -17,12 +17,14 @@ GNU General Public License for more details.

>  You should have received a copy of the GNU General Public License

>  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>  

> +#include "config.h"

>  #include "sim-main.h"

>  #include "sim-options.h"

>  

>  #include "sim-assert.h"

>  

>  #include <ctype.h>

> +#include <stdio.h>

>  

>  #ifdef HAVE_STRING_H

>  #include <string.h>

> -- 

> 2.19.1

>
Alan Hayward March 28, 2019, 11:56 a.m. | #2
> On 21 Mar 2019, at 22:14, Andrew Burgess <andrew.burgess@embecosm.com> wrote:

> 

> * Stafford Horne <shorne@gmail.com> [2019-03-17 06:40:18 +0900]:

> 

>> During building of several cgen simulator's I notices the below

>> warnings.  Adding includes fixes these.

>> 

>> Including config.h allows stdio.h to properly configure itself to expose

>> asprintf().


Stafford, it looks like this breaks AArch64 on both Ubuntu 16.04 and 18.04: 


libsim.a(interp.o): In function `sim_open':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/interp.c:328: undefined reference to `SIM_ASSERT'
libsim.a(cpustate.o): In function `aarch64_get_vec_u64':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:438: undefined reference to `ARRAY_SIZE'
libsim.a(cpustate.o): In function `aarch64_get_vec_u32':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:444: undefined reference to `ARRAY_SIZE'
libsim.a(cpustate.o): In function `aarch64_get_vec_u16':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:450: undefined reference to `ARRAY_SIZE'
libsim.a(cpustate.o): In function `aarch64_get_vec_u8':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:456: undefined reference to `ARRAY_SIZE'
libsim.a(cpustate.o): In function `aarch64_get_vec_s64':
/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/Makefile:271: recipe for target 'run' failed
make[3]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64'
Makefile:129: recipe for target 'all' failed
make[2]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim'
Makefile:8878: recipe for target 'all-sim' failed
binutils-gdb/sim/aarch64/cpustate.c:462: undefined reference to `ARRAY_SIZE'
libsim.a(cpustate.o):/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:468: more undefined references to `ARRAY_SIZE' follow
collect2: error: ld returned 1 exit status


I suspect the AArch64 buildbot will be failing once it catches up
https://gdb-build.sergiodj.net/waterfall?tag=aarch64


Alan.


>> 

>> The other warnings for abort, free, memset, strlen are trivial.

>> 

>> Warnings:

>> 

>> ../../../binutils-gdb/sim/or1k/../common/sim-watch.c: In function ‘sim_watchpoint_install’:

>> ../../../binutils-gdb/sim/or1k/../common/sim-watch.c:415:10: warning: implicit declaration of function ‘asprintf’; did you mean ‘vasprintf’? [-Wimplicit-function-declaration]

>>      if (asprintf (&name, "watch-%s-%s",

>>          ^~~~~~~~

>>          vasprintf

>> 

>> ../../../binutils-gdb/sim/lm32/../common/hw-device.c: In function ‘hw_strdup’:

>> ../../../binutils-gdb/sim/lm32/../common/hw-device.c:59:34: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]

>>       char *dup = hw_zalloc (me, strlen (str) + 1);

>>                                  ^~~~~~

>> 

>> ../../../binutils-gdb/sim/lm32/../common/hw-events.c: In function ‘hw_event_queue_schedule’:

>> ../../../binutils-gdb/sim/lm32/../common/hw-events.c:92:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]

>>   memset (&dummy, 0, sizeof dummy);

>>   ^~~~~~

>> 

>> ../../../binutils-gdb/sim/lm32/../common/hw-handles.c: In function ‘hw_handle_remove_ihandle’:

>> ../../../binutils-gdb/sim/lm32/../common/hw-handles.c:211:4: warning: implicit declaration of function ‘free’ [-Wimplicit-function-declaration]

>>    free (delete);

>>    ^~~~

>> 

>> ../../../binutils-gdb/sim/lm32/../common/sim-fpu.c: In function ‘pack_fpu’:

>> ../../../binutils-gdb/sim/lm32/../common/sim-fpu.c:292:7: warning: implicit declaration of function ‘abort’ [-Wimplicit-function-declaration]

>>       abort ();

>>       ^~~~~

>> 

>> sim/common/ChangeLog:

>> 

>> 	* sim-options.c: Include "config.h".

>> 	Include <stdio.h>.

>> 	* sim-watch.c: Include "config.h".

>> 	Include <stdio.h>.

>> 	* hw-device.c: Include <string.h>.

>> 	* hw-events.c: Include <string.h>.

>> 	* hw-handles.c: Include <stdlib.h>.

>> 	* sim-fpu.c: Include <stdlib.h>.

> 

> This all looks good.

> 

> Thanks,

> Andrew

> 

> 

>> ---

>> sim/common/hw-device.c   | 4 ++++

>> sim/common/hw-events.c   | 3 +++

>> sim/common/hw-handles.c  | 3 +++

>> sim/common/sim-fpu.c     | 3 +++

>> sim/common/sim-options.c | 2 ++

>> sim/common/sim-watch.c   | 2 ++

>> 6 files changed, 17 insertions(+)

>> 

>> diff --git a/sim/common/hw-device.c b/sim/common/hw-device.c

>> index ee1bfad893..458ee22caa 100644

>> --- a/sim/common/hw-device.c

>> +++ b/sim/common/hw-device.c

>> @@ -27,6 +27,10 @@

>> #include <stdlib.h>

>> #endif

>> 

>> +#if HAVE_STRING_H

>> +#include <string.h>

>> +#endif

>> +

>> /* Address methods */

>> 

>> const hw_unit *

>> diff --git a/sim/common/hw-events.c b/sim/common/hw-events.c

>> index e6523365bd..f78be2aa46 100644

>> --- a/sim/common/hw-events.c

>> +++ b/sim/common/hw-events.c

>> @@ -23,6 +23,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>> 

>> #include "sim-events.h"

>> 

>> +#if HAVE_STRING_H

>> +#include <string.h>

>> +#endif

>> 

>> /* The hw-events object is implemented using sim-events */

>> 

>> diff --git a/sim/common/hw-handles.c b/sim/common/hw-handles.c

>> index 2848b9bcb5..d05656235d 100644

>> --- a/sim/common/hw-handles.c

>> +++ b/sim/common/hw-handles.c

>> @@ -23,6 +23,9 @@

>> #include "hw-main.h"

>> #include "hw-base.h"

>> 

>> +#if HAVE_STDLIB_H

>> +#include <stdlib.h>

>> +#endif

>> 

>> struct hw_handle_mapping

>> {

>> diff --git a/sim/common/sim-fpu.c b/sim/common/sim-fpu.c

>> index 81cdbf5061..74f5fd488c 100644

>> --- a/sim/common/sim-fpu.c

>> +++ b/sim/common/sim-fpu.c

>> @@ -41,6 +41,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>> #include "sim-io.h"

>> #include "sim-assert.h"

>> 

>> +#ifdef HAVE_STDLIB_H

>> +#include <stdlib.h>

>> +#endif

>> 

>> /* Debugging support.

>>    If digits is -1, then print all digits.  */

>> diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c

>> index 69aebfe3d0..dc4a71203a 100644

>> --- a/sim/common/sim-options.c

>> +++ b/sim/common/sim-options.c

>> @@ -17,6 +17,7 @@ GNU General Public License for more details.

>> You should have received a copy of the GNU General Public License

>> along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>> 

>> +#include "config.h"

>> #include "sim-main.h"

>> #ifdef HAVE_STRING_H

>> #include <string.h>

>> @@ -29,6 +30,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>> #include <stdlib.h>

>> #endif

>> #include <ctype.h>

>> +#include <stdio.h>

>> #include "libiberty.h"

>> #include "sim-options.h"

>> #include "sim-io.h"

>> diff --git a/sim/common/sim-watch.c b/sim/common/sim-watch.c

>> index 6c357f8267..174336b377 100644

>> --- a/sim/common/sim-watch.c

>> +++ b/sim/common/sim-watch.c

>> @@ -17,12 +17,14 @@ GNU General Public License for more details.

>> You should have received a copy of the GNU General Public License

>> along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

>> 

>> +#include "config.h"

>> #include "sim-main.h"

>> #include "sim-options.h"

>> 

>> #include "sim-assert.h"

>> 

>> #include <ctype.h>

>> +#include <stdio.h>

>> 

>> #ifdef HAVE_STRING_H

>> #include <string.h>

>> -- 

>> 2.19.1

>>
Andrew Burgess March 28, 2019, 1:49 p.m. | #3
* Alan Hayward <Alan.Hayward@arm.com> [2019-03-28 11:56:59 +0000]:

> 

> 

> > On 21 Mar 2019, at 22:14, Andrew Burgess <andrew.burgess@embecosm.com> wrote:

> > 

> > * Stafford Horne <shorne@gmail.com> [2019-03-17 06:40:18 +0900]:

> > 

> >> During building of several cgen simulator's I notices the below

> >> warnings.  Adding includes fixes these.

> >> 

> >> Including config.h allows stdio.h to properly configure itself to expose

> >> asprintf().

> 

> Stafford, it looks like this breaks AArch64 on both Ubuntu 16.04 and 18.04: 

> 

> 

> libsim.a(interp.o): In function `sim_open':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/interp.c:328: undefined reference to `SIM_ASSERT'

> libsim.a(cpustate.o): In function `aarch64_get_vec_u64':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:438: undefined reference to `ARRAY_SIZE'

> libsim.a(cpustate.o): In function `aarch64_get_vec_u32':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:444: undefined reference to `ARRAY_SIZE'

> libsim.a(cpustate.o): In function `aarch64_get_vec_u16':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:450: undefined reference to `ARRAY_SIZE'

> libsim.a(cpustate.o): In function `aarch64_get_vec_u8':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:456: undefined reference to `ARRAY_SIZE'

> libsim.a(cpustate.o): In function `aarch64_get_vec_s64':

> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/Makefile:271: recipe for target 'run' failed

> make[3]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64'

> Makefile:129: recipe for target 'all' failed

> make[2]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim'

> Makefile:8878: recipe for target 'all-sim' failed

> binutils-gdb/sim/aarch64/cpustate.c:462: undefined reference to `ARRAY_SIZE'

> libsim.a(cpustate.o):/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:468: more undefined references to `ARRAY_SIZE' follow

> collect2: error: ld returned 1 exit status

> 

> 

> I suspect the AArch64 buildbot will be failing once it catches up

> https://gdb-build.sergiodj.net/waterfall?tag=aarch64


I pushed the patch below to fix this issue.

Thanks,
Andrew

--

[PATCH] sim: fix aarch64 sim build

This commit:

  commit ef9866970ce6683d40465fb7c3168f87a1dcd1b7
  Date:   Thu Mar 28 06:40:30 2019 +0900

      sim/common: convert sim-arange to use sim-inline

Broke the simulator build for aarch64 - some required macros are no
longer included where needed, fixed in this commit.

sim/aarch64/ChangeLog:

	* cpustate.c: Add 'libiberty.h' include.
	* interp.c: Add 'sim-assert.h' include.
---
 sim/aarch64/ChangeLog  | 5 +++++
 sim/aarch64/cpustate.c | 1 +
 sim/aarch64/interp.c   | 1 +
 3 files changed, 7 insertions(+)

diff --git a/sim/aarch64/cpustate.c b/sim/aarch64/cpustate.c
index 6f5121a76fa..f90b7ad321a 100644
--- a/sim/aarch64/cpustate.c
+++ b/sim/aarch64/cpustate.c
@@ -25,6 +25,7 @@
 #include "sim-main.h"
 #include "cpustate.h"
 #include "simulator.h"
+#include "libiberty.h"
 
 /* Some operands are allowed to access the stack pointer (reg 31).
    For others a read from r31 always returns 0, and a write to r31 is ignored.  */
diff --git a/sim/aarch64/interp.c b/sim/aarch64/interp.c
index c8a3c28c494..c5cfc4a88e4 100644
--- a/sim/aarch64/interp.c
+++ b/sim/aarch64/interp.c
@@ -38,6 +38,7 @@
 #include "sim-options.h"
 #include "memory.h"
 #include "simulator.h"
+#include "sim-assert.h"
 
 /* Filter out (in place) symbols that are useless for disassembly.
    COUNT is the number of elements in SYMBOLS.
-- 
2.14.5
Alan Hayward March 28, 2019, 3:25 p.m. | #4
> On 28 Mar 2019, at 13:49, Andrew Burgess <andrew.burgess@embecosm.com> wrote:

> 

> * Alan Hayward <Alan.Hayward@arm.com> [2019-03-28 11:56:59 +0000]:

> 

>> 

>> 

>>> On 21 Mar 2019, at 22:14, Andrew Burgess <andrew.burgess@embecosm.com> wrote:

>>> 

>>> * Stafford Horne <shorne@gmail.com> [2019-03-17 06:40:18 +0900]:

>>> 

>>>> During building of several cgen simulator's I notices the below

>>>> warnings.  Adding includes fixes these.

>>>> 

>>>> Including config.h allows stdio.h to properly configure itself to expose

>>>> asprintf().

>> 

>> Stafford, it looks like this breaks AArch64 on both Ubuntu 16.04 and 18.04: 

>> 

>> 

>> libsim.a(interp.o): In function `sim_open':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/interp.c:328: undefined reference to `SIM_ASSERT'

>> libsim.a(cpustate.o): In function `aarch64_get_vec_u64':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:438: undefined reference to `ARRAY_SIZE'

>> libsim.a(cpustate.o): In function `aarch64_get_vec_u32':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:444: undefined reference to `ARRAY_SIZE'

>> libsim.a(cpustate.o): In function `aarch64_get_vec_u16':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:450: undefined reference to `ARRAY_SIZE'

>> libsim.a(cpustate.o): In function `aarch64_get_vec_u8':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:456: undefined reference to `ARRAY_SIZE'

>> libsim.a(cpustate.o): In function `aarch64_get_vec_s64':

>> /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/Makefile:271: recipe for target 'run' failed

>> make[3]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64'

>> Makefile:129: recipe for target 'all' failed

>> make[2]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim'

>> Makefile:8878: recipe for target 'all-sim' failed

>> binutils-gdb/sim/aarch64/cpustate.c:462: undefined reference to `ARRAY_SIZE'

>> libsim.a(cpustate.o):/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:468: more undefined references to `ARRAY_SIZE' follow

>> collect2: error: ld returned 1 exit status

>> 

>> 

>> I suspect the AArch64 buildbot will be failing once it catches up

>> https://gdb-build.sergiodj.net/waterfall?tag=aarch64

> 

> I pushed the patch below to fix this issue.



Works again for me now. Thanks for fixing!


Alan.



> 

> Thanks,

> Andrew

> 

> --

> 

> [PATCH] sim: fix aarch64 sim build

> 

> This commit:

> 

>  commit ef9866970ce6683d40465fb7c3168f87a1dcd1b7

>  Date:   Thu Mar 28 06:40:30 2019 +0900

> 

>      sim/common: convert sim-arange to use sim-inline

> 

> Broke the simulator build for aarch64 - some required macros are no

> longer included where needed, fixed in this commit.

> 

> sim/aarch64/ChangeLog:

> 

> 	* cpustate.c: Add 'libiberty.h' include.

> 	* interp.c: Add 'sim-assert.h' include.

> ---

> sim/aarch64/ChangeLog  | 5 +++++

> sim/aarch64/cpustate.c | 1 +

> sim/aarch64/interp.c   | 1 +

> 3 files changed, 7 insertions(+)

> 

> diff --git a/sim/aarch64/cpustate.c b/sim/aarch64/cpustate.c

> index 6f5121a76fa..f90b7ad321a 100644

> --- a/sim/aarch64/cpustate.c

> +++ b/sim/aarch64/cpustate.c

> @@ -25,6 +25,7 @@

> #include "sim-main.h"

> #include "cpustate.h"

> #include "simulator.h"

> +#include "libiberty.h"

> 

> /* Some operands are allowed to access the stack pointer (reg 31).

>    For others a read from r31 always returns 0, and a write to r31 is ignored.  */

> diff --git a/sim/aarch64/interp.c b/sim/aarch64/interp.c

> index c8a3c28c494..c5cfc4a88e4 100644

> --- a/sim/aarch64/interp.c

> +++ b/sim/aarch64/interp.c

> @@ -38,6 +38,7 @@

> #include "sim-options.h"

> #include "memory.h"

> #include "simulator.h"

> +#include "sim-assert.h"

> 

> /* Filter out (in place) symbols that are useless for disassembly.

>    COUNT is the number of elements in SYMBOLS.

> -- 

> 2.14.5
Stafford Horne March 28, 2019, 9:31 p.m. | #5
On Thu, Mar 28, 2019 at 01:49:01PM +0000, Andrew Burgess wrote:
> * Alan Hayward <Alan.Hayward@arm.com> [2019-03-28 11:56:59 +0000]:

> 

> > 

> > 

> > > On 21 Mar 2019, at 22:14, Andrew Burgess <andrew.burgess@embecosm.com> wrote:

> > > 

> > > * Stafford Horne <shorne@gmail.com> [2019-03-17 06:40:18 +0900]:

> > > 

> > >> During building of several cgen simulator's I notices the below

> > >> warnings.  Adding includes fixes these.

> > >> 

> > >> Including config.h allows stdio.h to properly configure itself to expose

> > >> asprintf().

> > 

> > Stafford, it looks like this breaks AArch64 on both Ubuntu 16.04 and 18.04: 

> > 

> > 

> > libsim.a(interp.o): In function `sim_open':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/interp.c:328: undefined reference to `SIM_ASSERT'

> > libsim.a(cpustate.o): In function `aarch64_get_vec_u64':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:438: undefined reference to `ARRAY_SIZE'

> > libsim.a(cpustate.o): In function `aarch64_get_vec_u32':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:444: undefined reference to `ARRAY_SIZE'

> > libsim.a(cpustate.o): In function `aarch64_get_vec_u16':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:450: undefined reference to `ARRAY_SIZE'

> > libsim.a(cpustate.o): In function `aarch64_get_vec_u8':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:456: undefined reference to `ARRAY_SIZE'

> > libsim.a(cpustate.o): In function `aarch64_get_vec_s64':

> > /work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/Makefile:271: recipe for target 'run' failed

> > make[3]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64'

> > Makefile:129: recipe for target 'all' failed

> > make[2]: Leaving directory '/work/alahay01/gdb-HEAD/build-aarch64/sim'

> > Makefile:8878: recipe for target 'all-sim' failed

> > binutils-gdb/sim/aarch64/cpustate.c:462: undefined reference to `ARRAY_SIZE'

> > libsim.a(cpustate.o):/work/alahay01/gdb-HEAD/build-aarch64/sim/aarch64/../../../src/binutils-gdb/sim/aarch64/cpustate.c:468: more undefined references to `ARRAY_SIZE' follow

> > collect2: error: ld returned 1 exit status

> > 

> > 

> > I suspect the AArch64 buildbot will be failing once it catches up

> > https://gdb-build.sergiodj.net/waterfall?tag=aarch64

> 

> I pushed the patch below to fix this issue.


Thanks for covering on this.  I did test on several target but not all.

The breaking change was removing (unused) sim-assert.h from sim-arange.h in the
previous patch; that also brings in libiberty.h.

Sorry for the trouble.

-Stafford

> Thanks,

> Andrew

> 

> --

> 

> [PATCH] sim: fix aarch64 sim build

> 

> This commit:

> 

>   commit ef9866970ce6683d40465fb7c3168f87a1dcd1b7

>   Date:   Thu Mar 28 06:40:30 2019 +0900

> 

>       sim/common: convert sim-arange to use sim-inline

> 

> Broke the simulator build for aarch64 - some required macros are no

> longer included where needed, fixed in this commit.

> 

> sim/aarch64/ChangeLog:

> 

> 	* cpustate.c: Add 'libiberty.h' include.

> 	* interp.c: Add 'sim-assert.h' include.

> ---

>  sim/aarch64/ChangeLog  | 5 +++++

>  sim/aarch64/cpustate.c | 1 +

>  sim/aarch64/interp.c   | 1 +

>  3 files changed, 7 insertions(+)

> 

> diff --git a/sim/aarch64/cpustate.c b/sim/aarch64/cpustate.c

> index 6f5121a76fa..f90b7ad321a 100644

> --- a/sim/aarch64/cpustate.c

> +++ b/sim/aarch64/cpustate.c

> @@ -25,6 +25,7 @@

>  #include "sim-main.h"

>  #include "cpustate.h"

>  #include "simulator.h"

> +#include "libiberty.h"

>  

>  /* Some operands are allowed to access the stack pointer (reg 31).

>     For others a read from r31 always returns 0, and a write to r31 is ignored.  */

> diff --git a/sim/aarch64/interp.c b/sim/aarch64/interp.c

> index c8a3c28c494..c5cfc4a88e4 100644

> --- a/sim/aarch64/interp.c

> +++ b/sim/aarch64/interp.c

> @@ -38,6 +38,7 @@

>  #include "sim-options.h"

>  #include "memory.h"

>  #include "simulator.h"

> +#include "sim-assert.h"

>  

>  /* Filter out (in place) symbols that are useless for disassembly.

>     COUNT is the number of elements in SYMBOLS.

> -- 

> 2.14.5

> 

> 

>

Patch

diff --git a/sim/common/hw-device.c b/sim/common/hw-device.c
index ee1bfad893..458ee22caa 100644
--- a/sim/common/hw-device.c
+++ b/sim/common/hw-device.c
@@ -27,6 +27,10 @@ 
 #include <stdlib.h>
 #endif
 
+#if HAVE_STRING_H
+#include <string.h>
+#endif
+
 /* Address methods */
 
 const hw_unit *
diff --git a/sim/common/hw-events.c b/sim/common/hw-events.c
index e6523365bd..f78be2aa46 100644
--- a/sim/common/hw-events.c
+++ b/sim/common/hw-events.c
@@ -23,6 +23,9 @@  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "sim-events.h"
 
+#if HAVE_STRING_H
+#include <string.h>
+#endif
 
 /* The hw-events object is implemented using sim-events */
 
diff --git a/sim/common/hw-handles.c b/sim/common/hw-handles.c
index 2848b9bcb5..d05656235d 100644
--- a/sim/common/hw-handles.c
+++ b/sim/common/hw-handles.c
@@ -23,6 +23,9 @@ 
 #include "hw-main.h"
 #include "hw-base.h"
 
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 
 struct hw_handle_mapping
 {
diff --git a/sim/common/sim-fpu.c b/sim/common/sim-fpu.c
index 81cdbf5061..74f5fd488c 100644
--- a/sim/common/sim-fpu.c
+++ b/sim/common/sim-fpu.c
@@ -41,6 +41,9 @@  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "sim-io.h"
 #include "sim-assert.h"
 
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 
 /* Debugging support.
    If digits is -1, then print all digits.  */
diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c
index 69aebfe3d0..dc4a71203a 100644
--- a/sim/common/sim-options.c
+++ b/sim/common/sim-options.c
@@ -17,6 +17,7 @@  GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include "config.h"
 #include "sim-main.h"
 #ifdef HAVE_STRING_H
 #include <string.h>
@@ -29,6 +30,7 @@  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <stdlib.h>
 #endif
 #include <ctype.h>
+#include <stdio.h>
 #include "libiberty.h"
 #include "sim-options.h"
 #include "sim-io.h"
diff --git a/sim/common/sim-watch.c b/sim/common/sim-watch.c
index 6c357f8267..174336b377 100644
--- a/sim/common/sim-watch.c
+++ b/sim/common/sim-watch.c
@@ -17,12 +17,14 @@  GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include "config.h"
 #include "sim-main.h"
 #include "sim-options.h"
 
 #include "sim-assert.h"
 
 #include <ctype.h>
+#include <stdio.h>
 
 #ifdef HAVE_STRING_H
 #include <string.h>