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:
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)