aboutsummaryrefslogtreecommitdiff
path: root/sim
AgeCommit message (Collapse)AuthorFilesLines
2021-06-22sim: callback: add missing cb_target_to_host_signalMike Frysinger2-0/+17
There's been a prototype for this forever, but the implementation was missing. Probably because there weren't any callers, but we'll start using it to implement the kill function.
2021-06-22sim: callback: generate signal mapMike Frysinger3-0/+36
We've been generating the syscall/errno/open maps, but not the signal map, even though we've been including them in the source constants.
2021-06-22sim: callback: add a getpid interfaceMike Frysinger3-1/+21
Rather than hit the OS interface directly, use the existing callback layer so the instantiator can decide behavior.
2021-06-22sim: rx: merge with common configure scriptMike Frysinger9-2947/+76
Move the unique configure flag to acinclude.m4 so the common code can include it, then delete the rx configure logic entirely.
2021-06-22sim: drop configure scripts for simple portsMike Frysinger104-49374/+809
These ports only use the pieces that have been unified, so we can merge them into the common configure script and get rid of their unique one entirely. We still compile & link separate run programs, and have dedicated subdir Makefiles, but the configure script portion is merged.
2021-06-21sim: unify hardware settingsMike Frysinger103-1627/+230
Move these options up to the common dir so we only test & export them once across all ports.
2021-06-21sim: hw: rework configure option & device selectionMike Frysinger82-1324/+1052
The sim-hardware configure option allows builders to select a set of device models to enable. But this seems like unnecessary overkill: the existence of individual device models doesn't affect performance at all as they are only enabled at runtime if the config uses them, and individually these are all <5KB a piece. Stripping off a total of ~50KB from a ~1MB binary doesn't seem useful, and it's extremely unlikely anyone will ever bother. So let's simplify the configure/make logic by turning sim-hardware into a boolean option like many of the other sim options. Any ports that have unique device models will declare them in their Makefile instead of at configure time. This will allow us to (eventually) unify the setting into the common dir.
2021-06-20sim: cris: clean up printf & abort usage a bitMike Frysinger2-40/+43
Inline the stats printf calls to avoid compiler warnings about non-literal format strings. This in turn highlights bad type sizes being passed in, so fix the strings to use the right size type. This in turn highlights the rest of the func using casts rather than the right type directly, so adjust all of those. Finally, replace a few abort+sim_engine_halt calls with the common sim_engine_abort. This provides good output while still aborting as we want.
2021-06-20sim: rx: scope the unique configure flagMike Frysinger4-22/+34
This will make it possible to merge into the common configure by making sure we never collide with other arches.
2021-06-20sim: delete SIM_AC_COMMON macroMike Frysinger127-188/+160
Now that we've moved all content out to the common file, this is empty and can be deleted it entirely.
2021-06-20sim: unify general maintainer settingsMike Frysinger77-3849/+64
Move these options up to the common dir so we only test & export them once across all ports. This takes a page from the cgen maint logic to make $(MAINT) work for non-automake Makefiles which will allow us to merge it together.
2021-06-20sim: unify cgen maintainer settingsMike Frysinger43-318/+104
Move these options up to the common dir so we only test & export them once across all ports. It makes it available to targets that aren't cgen-based, but those will just ignore the settings, so it shouldn't be an issue.
2021-06-20sim: m68hc11: fix unused function warnings with -O0Mike Frysinger2-22/+26
Mark these functions as unused in case they don't get inlined when building with -O0.
2021-06-20sim: move sim-inline to the common codeMike Frysinger108-1207/+230
This will allow us to build the common code with the same inline settings as the arch subdirs, and only do the test once.
2021-06-19sim: move UNUSED before TYPE in SIM_ENDIAN_INLINE's definitionSimon Marchi2-27/+31
I get this when building with gcc 11: CC common/common_libcommon_a-sim-load.o In file included from /home/simark/src/binutils-gdb/sim/common/sim-n-bits.h:27, from /home/simark/src/binutils-gdb/sim/common/sim-bits.c:259, from /home/simark/src/binutils-gdb/sim/common/sim-bits.h:599, from /home/simark/src/binutils-gdb/sim/common/sim-basics.h:122, from /home/simark/src/binutils-gdb/sim/common/sim-load.c:30: /home/simark/src/binutils-gdb/sim/common/sim-n-endian.h:39:27: error: 'offset_16' defined but not used [-Werror=unused-function] 39 | #define offset_N XCONCAT2(offset_,N) | ^~~~~~~ /home/simark/src/binutils-gdb/sim/../include/symcat.h:23:26: note: in definition of macro 'CONCAT2' 23 | #define CONCAT2(a,b) a##b | ^ /home/simark/src/binutils-gdb/sim/common/sim-n-endian.h:39:18: note: in expansion of macro 'XCONCAT2' 39 | #define offset_N XCONCAT2(offset_,N) | ^~~~~~~~ /home/simark/src/binutils-gdb/sim/common/sim-n-endian.h:138:1: note: in expansion of macro 'offset_N' 138 | offset_N (unsigned_N *x, | ^~~~~~~~ offset_N uses INLINE_SIM_ENDIAN, which uses UNUSED to put the "unused" attribute. However, it appears after the function's return type, which seems to make it not apply to the function. Moving it to before the return type fixes the error. Change all instances found in that file. sim/common/ChangeLog: * sim-inline.h: Move UNUSED before TYPE. Change-Id: Ide20106683ed7a9ebf35d484dabf70b309cb1ba6
2021-06-19sim: unify dtc tool checksMike Frysinger9-100/+112
Only one arch uses this currently, but others could too. By moving it up to the common checks, it'll also let us simplify the moxie code significantly.
2021-06-19sim: ppc: rename inline defines to match common codeMike Frysinger6-52/+64
Use the same basic names as the common sim inline logic so we can merge the two. We don't do that here, just prepare for it. The common code seems to be based on the ppc version but with slightly different names as it was cleaned up & generalized. I *think* these concepts are the same, so binding them together is OK, but maybe I'm misreading them. If so, can always tweak them later. REVEAL_MODULE -> H_REVEALS_MODULE INLINE_MODULE -> C_REVEALS_MODULE
2021-06-19sim: drop old BUILT_SRC_FROM_COMMON refMike Frysinger2-3/+4
The code that set & used this variable was deleted long ago, but the clean target was missed. Clean that up now.
2021-06-19sim: unify gettext/intl probing logicMike Frysinger77-2744/+132
Move these options up to the common dir so we only test & export them once across all ports.
2021-06-19sim: unify toolchain dependency logicMike Frysinger69-33282/+814
The common dir is already probing this info since it's using automake, so pass it down to the subdirs so they don't have to probe it at all.
2021-06-19sim: unify toolchain probing logicMike Frysinger71-42429/+1131
Move these options up to the common dir so we only test & export them once across all ports.
2021-06-19sim: unify bfd library dependency testing logicMike Frysinger109-238842/+8112
Move these options up to the common dir so we only test & export them once across all ports.
2021-06-19sim: mips: drop unused AC_PATH_X callMike Frysinger3-210/+8
We don't use anything from X, so no sense in probing the env.
2021-06-19sim: unify various library testing logicMike Frysinger72-4428/+397
Move these options up to the common dir so we only test & export them once across all ports.
2021-06-18sim: unify -Werror build settingsMike Frysinger107-3524/+324
Move these options up to the common dir so we only test & export them once across all ports. It also enables -Werror usage on the common files we've been pulling out of arch subdirs.
2021-06-18sim: move -Werror disabling to MakefileMike Frysinger84-810/+971
For the ports that still don't build with -Werror, rather than disable the flag at configure time, do it at make time. This will allow us to unify these tests in the common sim configure script.
2021-06-18sim: create a makefile fragment to pass common settings downMike Frysinger9-3/+44
As we merge settings from subdirs into the common configure, we sometimes need to keep the settings working in both dirs. Create a makefile fragment to pass them down so we don't have to run the checks twice. For now, the file is empty, but we'll start moving logic in shortly.
2021-06-18sim: split sim-signal.h include outMike Frysinger78-6/+169
The sim-basics.h is too big and includes too many things. This leads to some arch's sim-main.h having circular loop issues with defs, and makes it hard to separate out common objects from arch-specific defs. By splitting up sim-basics.h and killing off sim-main.h, it'll make it easier to separate out the two.
2021-06-18sim: drop core libiberty.h includeMike Frysinger2-2/+4
This doesn't need to be included for every sim file, so drop it. Every C file that needs it seems to already include it.
2021-06-17sim: overhaul & unify endian settings managementMike Frysinger151-1721/+348
The m4 macro has 2 args: the "wire" settings (which represents the hardwired port behavior), and the default settings (which are used if nothing else is specified). If none are specified, the arch is expected to support both, and the value will be probed based on the user runtime options or the input program. Only two arches today set the default value (bpf & mips). We can probably let this go as it only shows up in one scenario: the sim is invoked, but with no inputs, and no user endian selection. This means bpf will not behave like the other arches: an error is shown and forces the user to make a choice. If an input program is used though, we'll still switch the default to that. This allows us to remove the WITH_DEFAULT_TARGET_BYTE_ORDER setting. For the ports that set a "wire" endian, move it to the runtime init of the respective sim_open calls. This allows us to change the WITH_TARGET_BYTE_ORDER to purely a user-selected configure setting if they want to force a specific endianness. With all the endian logic moved to runtime selection, we can move the configure call up to the common dir so we only process it once across all ports. The ppc arch was picking the wire endian based on the target used, but since we weren't doing that for other biendian arches, we can let this go too. We'll rely on the input selecting the endian, or make the user decide.
2021-06-17sim: ppc: avoid "PAGE_SIZE" nameMike Frysinger3-4/+9
This define is used for a particular target and depends on the simulated CPU hardware. It has no relation to the host CPU that the sim is running on. So rename the common "PAGE_SIZE" here to better reflect its usage and avoid conflicts with system headers.
2021-06-17sim: mn10300: tweak static inlinesMike Frysinger2-2/+6
Use INLINE2 instead of INLINE to fix builds when -O0 are used -- the latter define is omitted at -O0 levels while the former is always set to inline. These helper funcs are used by defines in here but the defines aren't always called.
2021-06-17sim: split sim/callback.h include outMike Frysinger19-2/+38
The sim-basics.h is too big and includes too many things. This leads to some arch's sim-main.h having circular loop issues with defs, and makes it hard to separate out common objects from arch-specific defs. By splitting up sim-basics.h and killing off sim-main.h, it'll make it easier to separate out the two. Start with splitting out sim/callback.h.
2021-06-16sim: make some rules silent by default in Make-common.inSimon Marchi2-6/+13
Use GDB's silent-rules.mk to make some rules silent by default. These rules cover most of what is built in sim/. gdb/ChangeLog: * silent-rules.mk (ECHO_CCLD, ECHO_AR, ECHO_RANLIB): New. sim/ChangeLog: * common/Make-common.in (COMPILE, libsim.a, run$(EXEEXT), gentmap.o, gentmap): Make rules silent. Change-Id: Idf9ba5beaee10c7c614859ace5fbdcd1de0287db
2021-06-16sim: mips: add printf attribute to trace funcMike Frysinger3-2/+7
This helps catch format errors in code, although they're all clean at this point already.
2021-06-16sim: mips: rework dynamic printf logic to avoid compiler warningsMike Frysinger2-8/+38
The compiler doesn't like passing non-constant strings to printf functions, so tweak the code to always pass one in. This code is a little more verbose, but it's probably the same performance. The macro usage is a bit ugly, but maybe less than copying & pasting the extended conditional format logic.
2021-06-16sim: mips: tweak buffer signMike Frysinger2-1/+6
This model uses unsigned char buffers, but this temporary pointer is declared as signed. Switch it to unsigned since it's just a temporary variable to hold the new pointer.
2021-06-16sim: mips: fix uninitialized register useMike Frysinger2-1/+6
In the default case, this code will read from this variable before it is initialized as a dummy access. Set it to 0 to fix the compiler warning.
2021-06-16sim: drop obsolete AC_EXEEXT callMike Frysinger67-70/+133
The current autoconf 2.69 defines this to nothing because the logic in AC_PROG_CC takes care of it all the time now. Delete the call.
2021-06-16sim: ppc: use common sim-assert settingMike Frysinger4-38/+5
The common sim code already sets this up for us, so no need to duplicate the logic.
2021-06-16sim: ppc: convert to bfd_endianMike Frysinger11-59/+75
Rather than re-invent endian defines, as well as maintain our own list of OS & arch-specific includes, punt all that logic in favor of the bfd ones already set up and maintained elsewhere. We already rely on the bfd library, so leveraging the endian aspect should be fine. This was done for all the other ports years ago, so catch ppc up.
2021-06-16sim: ppc: replace local __attribute__ fallbackMike Frysinger3-15/+7
The common ansidecl.h provides fallbacks for these so we don't need to.
2021-06-16sim: ppc: use common ATTRIBUTE_PRINTF macrosMike Frysinger6-5/+23
Use the common ansidecl.h macros to replace our ad-hoc printf attributes.
2021-06-16sim: ppc: use common ATTRIBUTE_PACKED macroMike Frysinger3-6/+12
Drop local packed attribute with the common ansidecl.h define.
2021-06-16sim: ppc: replace local NORETURN macros with common oneMike Frysinger4-6/+12
Drop local NORETURN macro with the common ansidecl.h ATTRIBUTE_NORETURN define.
2021-06-16sim: ppc: replace local UNUSED macros with common oneMike Frysinger5-96/+97
Drop local UNUSED macro with the common ansidecl.h ATTRIBUTE_UNUSED define.
2021-06-16sim: ppc: replace local CONCAT macros with common onesMike Frysinger6-16/+12
Drop local copies of CONCAT macros that the common ansidecl.h provides.
2021-06-16sim: ppc: change bool variable name to booleanMike Frysinger2-1/+5
This is a reserved type with stdbool.h.
2021-06-16sim: ppc: drop host endian configure optionMike Frysinger12-928/+474
The --enable-sim-hostendian flag was purely so people had an escape route for when cross-compiling. This is because historically, AC_C_BIGENDIAN did not work in those cases. That was fixed a while ago though, so we can require that macro everywhere now and simplify a good bit of code. This was done for all the other ports years ago, so catch ppc up.
2021-06-16sim: mips: fix format warnings when setting up memoryMike Frysinger2-18/+22
The majority of these inputs are not long's, so don't use %lx. This fixes compiler warnings about type mismatches.