9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 075ceccf9dfb3115abe0ef4ae6e61012651ada0b
parent 9711d37395d68c8db326c3460c9b5001210fc6ac
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Wed, 21 Nov 2018 13:56:21 +0000

Merge changes from topic 'rv/dlang'

* changes:
  Add noreturn instead of _Noreturn
  Add rule for generation of map files
  [script/rules.mk] Add rule to generate dump files

Diffstat:
Mconfig/rmode-rcode.mk | 1+
Minclude/rcode.h | 45++++++++++++++++++++++-----------------------
Mscripts/rules.mk | 16++++++++++++----
3 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/config/rmode-rcode.mk b/config/rmode-rcode.mk @@ -7,3 +7,4 @@ COMP = gcc ASM = as LINKER = ld OBJCOPY = objcopy +OBJDUMP = objdump diff --git a/include/rcode.h b/include/rcode.h @@ -4,26 +4,25 @@ #include <stdint.h> #if __GNUC__ || __clang__ -#define KPRINTFMT __attribute__ ((format (printf, 1, 2))) -#define KSNPRINTFMT __attribute__ ((format (printf, 3, 4))) + #define KPRINTFMT __attribute__ ((format (printf, 1, 2))) + #define KSNPRINTFMT __attribute__ ((format (printf, 3, 4))) + #define noreturn __attribute__((__noreturn__)) #else -#define KPRINTFMT -#define KSNPRINTFMT -#endif - -#if __STDC_VERSION__ >= 201112L -#elif defined(__GNUC__) -#define _Noreturn __attribute__((__noreturn__)) -#else -#define _Noreturn + #if __STDC_VERSION__ >= 201112L + #define noreturn _Noreturn + #else + #define noreturn + #endif + #define KPRINTFMT + #define KSNPRINTFMT #endif #ifndef NDEBUG -#define dbg kprint -#define NR_EC_STR NR_EC_VALS + #define dbg kprint + #define NR_EC_STR NR_EC_VALS #else -#define dbg -#define NR_EC_STR 0 + #define dbg + #define NR_EC_STR 0 #endif #define PAGESIZE 4096 @@ -174,11 +173,11 @@ struct tree { int flags; }; -extern _Noreturn void halt(void); -extern _Noreturn void panic(const char *msg); -extern _Noreturn void swtch(struct trapframe *fp); -extern _Noreturn void trap(struct trapframe *fp); -extern _Noreturn void badcmd(int error); +extern noreturn void halt(void); +extern noreturn void panic(const char *msg); +extern noreturn void swtch(struct trapframe *fp); +extern noreturn void trap(struct trapframe *fp); +extern noreturn void badcmd(int error); extern void rmc(Rmucmd *cmd); extern int debug(void); extern void initfs(const struct tree *tree); @@ -202,9 +201,9 @@ extern int kputs(const char *s); extern int kvprint(const char *fmt, va_list va); /* architectural functions */ -extern _Noreturn void dohalt(void); -extern _Noreturn void dopanic(void); -extern _Noreturn void doswtch(struct trapframe *fp); +extern noreturn void dohalt(void); +extern noreturn void dopanic(void); +extern noreturn void doswtch(struct trapframe *fp); extern void enaint(void); extern uint8_t inm8(void *addr); extern uint16_t inm16(void *addr); diff --git a/scripts/rules.mk b/scripts/rules.mk @@ -40,9 +40,10 @@ CC = $(CROSS_COMPILE)$(COMP) AS = $(CROSS_COMPILE)$(ASM) LD = $(CROSS_COMPILE)$(LINKER) OC = $(CROSS_COMPILE)$(OBJCOPY) +OD = $(CROSS_COMPILE)$(OBJDUMP) HOSTCC=$(COMP) -.SUFFIXES: .elf .bin .i +.SUFFIXES: .map .dump .elf .bin .i .c.o: $(CC) $(RCODE_CFLAGS) -o $@ -c $< @@ -59,6 +60,16 @@ HOSTCC=$(COMP) .s.o: $(AS) $(RCODE_ASFLAGS) -o $@ $< +.elf.bin: + $(OC) -O binary $< $@ + +.elf.dump: + $(OD) -D $< > $@ + +.elf.map: + $(LD) -Map=$@ $< -o /dev/null + + FORALL= +@set -e ;\ pwd=$$PWD; \ for i in $(DIRS); \ @@ -72,9 +83,6 @@ all: FORCE: -.elf.bin: - $(OC) -O binary $< $@ - cbmc: all FORCE cbmc $(INCLUDES) $(CBMC_FLAGS) $(CBMC_PATHS)