aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2013-07-04 15:23:06 +0200
committerBjörn-Egil Dahlberg <[email protected]>2013-07-11 18:41:43 +0200
commit14c0a18a9970f2287bbb09c46bee0c33358e3fc9 (patch)
tree1628c69b00844228b811d7d65bf02d95707fe2fa /erts/emulator/beam
parent193639fde33e135cc390f1df13076e5632fdd43c (diff)
downloadotp-14c0a18a9970f2287bbb09c46bee0c33358e3fc9.tar.gz
otp-14c0a18a9970f2287bbb09c46bee0c33358e3fc9.tar.bz2
otp-14c0a18a9970f2287bbb09c46bee0c33358e3fc9.zip
erts: Add cflags, ldflags and config.h into executable
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/atom.names3
-rwxr-xr-xerts/emulator/beam/erl_bif_info.c21
-rwxr-xr-xerts/emulator/beam/global.h2
-rw-r--r--erts/emulator/beam/utils.c2
4 files changed, 26 insertions, 2 deletions
diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names
index eba1d0fa23..c2f32ba089 100644
--- a/erts/emulator/beam/atom.names
+++ b/erts/emulator/beam/atom.names
@@ -139,6 +139,7 @@ atom caseless
atom catchlevel
atom cd
atom cdr
+atom cflags
atom characters_to_binary_int
atom characters_to_list_int
atom clear
@@ -150,6 +151,7 @@ atom compact
atom compat_rel
atom compile
atom compressed
+atom config_h
atom connect
atom connected
atom connection_closed
@@ -301,6 +303,7 @@ atom label
atom large_heap
atom last_calls
atom latin1
+atom ldflags
atom Le='=<'
atom lf
atom line
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index e4fbd21c0e..a43eee6420 100755
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -30,6 +30,7 @@
#include "bif.h"
#include "big.h"
#include "erl_version.h"
+#include "erl_compile_flags.h"
#include "erl_db_util.h"
#include "erl_message.h"
#include "erl_binary.h"
@@ -2610,6 +2611,26 @@ BIF_RETTYPE system_info_1(BIF_ALIST_1)
BIF_RET(am_true);
}
#endif
+ else if (ERTS_IS_ATOM_STR("compile_info",BIF_ARG_1)) {
+ Eterm *hp = HAlloc(BIF_P, 3*3+3*2); /* three two tuples +
+ three list elems */
+ Eterm res = NIL;
+ Eterm *lhp = HAlloc(BIF_P, 2*(strlen(erts_build_flags_CONFIG_H)+
+ strlen(erts_build_flags_CFLAGS)+
+ strlen(erts_build_flags_LDFLAGS)));
+
+ res = CONS(hp+9,TUPLE2(hp, am_config_h,
+ buf_to_intlist(&lhp, erts_build_flags_CONFIG_H,
+ strlen(erts_build_flags_CONFIG_H), NIL)),res);
+ res = CONS(hp+11,TUPLE2(hp+3, am_cflags,
+ buf_to_intlist(&lhp, erts_build_flags_CFLAGS,
+ strlen(erts_build_flags_CFLAGS), NIL)),res);
+ res = CONS(hp+13,TUPLE2(hp+6, am_ldflags,
+ buf_to_intlist(&lhp, erts_build_flags_LDFLAGS,
+ strlen(erts_build_flags_LDFLAGS), NIL)),res);
+
+ BIF_RET(res);
+ }
BIF_ERROR(BIF_P, BADARG);
}
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h
index e5807b5ce6..56f8f2b3ea 100755
--- a/erts/emulator/beam/global.h
+++ b/erts/emulator/beam/global.h
@@ -937,7 +937,7 @@ char* Sint_to_buf(Sint, struct Sint_buf*);
#define ERTS_IOLIST_OVERFLOW 1
#define ERTS_IOLIST_TYPE 2
-Eterm buf_to_intlist(Eterm**, char*, size_t, Eterm); /* most callers pass plain char*'s */
+Eterm buf_to_intlist(Eterm**, const char*, size_t, Eterm); /* most callers pass plain char*'s */
#define ERTS_IOLIST_TO_BUF_OVERFLOW (~((ErlDrvSizeT) 0))
#define ERTS_IOLIST_TO_BUF_TYPE_ERROR (~((ErlDrvSizeT) 1))
diff --git a/erts/emulator/beam/utils.c b/erts/emulator/beam/utils.c
index 84deaecb87..bd2be7afca 100644
--- a/erts/emulator/beam/utils.c
+++ b/erts/emulator/beam/utils.c
@@ -2983,7 +2983,7 @@ char* Sint_to_buf(Sint n, struct Sint_buf *buf)
*/
Eterm
-buf_to_intlist(Eterm** hpp, char *buf, size_t len, Eterm tail)
+buf_to_intlist(Eterm** hpp, const char *buf, size_t len, Eterm tail)
{
Eterm* hp = *hpp;
size_t i = len;